TO DO: Hans Lunsings QBASIC.EXE-Routine einfügen!!
Microsoft hat bei QuickBASIC einen recht umfangreichen Befehlssatz verpasst, welcher aber noch lange nicht jede Möglichkeit des MS-DOS-Betriebssystems und des BIOS voll ausschöpft. Einige Beispiele:
PALETTE
die Farben setzen, aber falls Sie sie für eine Bildschirmausdruck-Routine oder
Bildspeicherroutine wie die BMP-Bibliothek auslesen
wollen, müssen Sie ebenfalls auf CALL INTERRUPT
zurückgreifen, da Microsoft eine PALETTE()
-Funktion
vergessen hatFILES
all ihren BASIC-Versionen
spendiert, aber als Programmierer brauchen Sie häufig etwas der Art
' Verarbeitungsschleife DIM Verzeichnis$(1 TO 1000) FILES "C:\EIGENE~1\*.DOC" TO Verzeichnis$, Anzahl% FOR i%=1 TO Anzahl% OPEN Verzeichnis$(i%) FOR INPUT AS 1 WHILE NOT EOF(1) ' Verarbeitung WEND CLOSE 1 NEXT i%In diesem Fall müssen Sie ebenfalls auf
CALL INTERRUPT
zurückgreifen, um sich eine Prozedur der Art
DECLARE SUB LiesVerzeichnis(Pfad$, Muster$, Dateien$(), DatumZeit&(), Attribute%(), Anzahl%)schreiben zu können
IF MausVorhanden%() THEN ' Mausoberfläche ELSE ' Tastaturoberfläche END IFzu ermöglichen
' Film-Abspieler DECLARE SUB KopiereNachEMS(srcAddrSeg%, srcAddrOffs%, targetPage%) DECLARE SUB KopiereAusEMS(srcPage%, targetAddrSeg%, targetAddrOffs%) SCREEN 13 OPEN "FILM.MOV" FOR BINARY AS 1 FOR i% = 1 TO 1000 Image$ = INPUT$(32000, 1) KopiereNachEMS VARSEG(Image$), VARPTR(Image$), target(i%) NEXT i% ' Film abspielen CLS DIM Img%(32001) Img%(0) = 320 * 8 Img%(1) = 200 t! = TIMER FOR i%=1 TO 1000 KopieAusEMS target(i%), VARSEG(Img%(2)), VARPTR(Img%(2)) PUT(0, 0), Img%, PSET t! = t! + .02 ' 50 Bilder/Sek. WHILE TIMER < t! WEND NEXT i%
DOS-Interrupts sind beim normalen Interpreter-QBASIC nach wie vor nicht oder nur sehr umständlich über die Assemblerprogrammierung möglich. Dagegen stellt Microsoft bei der Compiler-Version in den beiden Dateien QB.QLB und QB.BI die nötige Unterstützung in einer recht handlichen Form als Bibliotheksmodul bereit.
Für GW-BASIC-Programmierer möchte ich auf die beiden Bücher
verweisen, wo Sie eine solche Maschinensprache-Routine vorfinden. Das Buch von Tischer stellt in diesem Zusammenhang eine wahre Fundgrube dar, als kleinen Auszug daraus finden Sie hier die DOS-Interrupt-Maschinenspracheroutine für GW-BASIC vor. Im weiteren möchte ich Ihnen Ralf Browns Interrupt-Liste sehr empfehlen, einem sehr umfangreichen Nachschlagewerk, wo Sie nebst dem BIOS und MS-DOS-Betriebssystem so ziemlich über jedes TSR-Treiberprogramm das API (Application Programming Interface) beschrieben finden. Unter anderem ist das Entstehen von TCP/IP mit QuickBASIC dieser Seite zu verdanken, denn sie lieferte mir den Hinweis auf DOSISODE.