Home |
BIOS-Funktionsübersicht |
Zurück zur Assemblerauswahlseite |
Dieser Abschnitt enthält eine Sammlung von Makos zum Aufrufen der BIOS-Funktionen.
Laut Duden ist die deutsche Schreibweise „Makro“. Im Assemblercode wird jedoch „MACRO“ geschrieben. |
| Übersicht der mit diesen Makros unterstützten Funktionen |
|---|
| Funktionen für den RS232-Port: IRS232 initialisiert den RS232-Port. IRS232A initialisiert den RS232-Port. Dabei können Initialiserungsparameter mitgegeben werden. SENDCHR sendet ein Zeichen über den RS232-Anschluss. RECVCHR empfängt ein Zeichen über den RS232-Anschluss. COMSTAT liest den Statur des RS232-Ports. |
Funktionen für die Tastatur: GETKBCHAR liest eine Tatstaureingabe. TSTKBCHAR prüft, ob eine Taste an der Tastatur betätigt wurde. GETKBSHIFT liest den "Shift"-Status der Tastatur. |
Funktionen für den Disketten-Controller: DSKRESET initialisiert den Disketten-Controller. GETDSKSTAT liest den Rückmeldestatus des letzten ausgeführten Diskettenkommandos. DSKREAD liest von der Diskette. DSKWRITE schreibt auf die Diskette. DSKVERFY verifiziert die Diskette. DSKFORMAT formatiert die Diskette. |
Funktionen für den Drucker: PRNTCHAR schickt ein Zeichen zum Drucker. INIPRNTR initialisiert den Drucker. PRNTSTAT liest den Druckerstatus. |
Funktionen für den Video-Controller: SETCRTMODE stellt den Video-Mous ein. Der Modus wird als Ziffer angegeben. SCRTMODE stellt den Video-Mous ein. Der Modus kann symbolisch angegeben werden. SETCURTYPE stellt den Cursotyp ein. SETCURPOS positioniert den Cursor. GETCURPOS ermittelt die Position des Cursors. GETPENPOS ermittelt die Position des Lichtstiftes (light pen). SCROLLUP schiebt die Bildschirmseite aufwärts. SCROLLDOWN schiebt die Bildschirmseite abwärts. READATRCHR liest Attribut und Zeichen an der aktuellen Cursoposition. WRITEATRCHR schreibt Attribut und Zeichen an der aktuellen Cursoposition. WRITECHAR schreibe Anzahl Zeichen ab der aktuellen Cursorposition. SETPALETTE setzt die Farbpalette. WRITEDOT schreibt einen Pixel (Dot) auf den Bildschirm. READDOT liest eine Pixel (Dot) vom Bildchirm. TELEWRITE schreibt im Fernschreibmodus. VIDIOSTATE liest den Videostatus. |
Funktionen zur Systemausstattung: GETMEMSIZE ermittelt die Speichergröße in 1K-Schritten. EQUIPMENT ermittelt die am System angeschlossenen Geräte (Devices). Makros:
;Diese Makros unterstuetzen Aufrufe von einigen BIOS-Funktionen.
:Sie bilden dabei die vollstaendige Schnittstelle zur jeweiligen BIOS-Funktion
;LDREG ist ein interner Makro, der von den anderen MAkros benutzt wird.
;Er erlaut die Angabe eines Registers oder Literals als Makroparameter.
;Falls beide angebenen Parameter identisch sind, wird kein Code generiert.
ldreg macro destreg,source
ifdif <destreg>,<source>
mov destreg,source
endif
;TSTNSET vergleicht die Werte der ersten beiden Felder. Sind sie gleich, wird
;der dritte Parameter in das AL-Register geodert. Siehe Makro IRS232A
tstnset macro src1,src2,orval
ifidn <src1>,<src2>
or al,orval
endif
endm
;IRS232 generiert eine Initialisierungsaufruf für den RS232-Port
irs232 macro initparms,linenum
ldreg dx,linenum
ldreg al,initparms
mov ah,0
int 14h
endm
;IRS232A generiert eine Initialisierungsaufruf für den RS232-Port.
;Beachte die mitgebbaren Parameter!
irs232a macro baudrate,parity,stopbits,datalen,linenum
ldreg dx,linenum
sub ax,ax
; tstnset baudrate,110,00000000b
tstnset baudrate,150,00100000b
tstnset baudrate,300,01000000b
tstnset baudrate,600,01100000b
tstnset baudrate,1200,10000000b
tstnset baudrate,2400,10100000b
tstnset baudrate,4800,11000000b
tstnset baudrate,9600,11100000b
; tstnset parity,none,00000000b
tstnset parity,odd,00001000b
tstnset parity,even,00011000b
; tstnset stopbits,1,00000000b
tstnset stopbits,2,00000100b
tstnset datalen,7,00000010b
tstnset datalen,8,00000011b
int 14h
endm
;SENDCHR sendet ein Zeichen ueber den RS232-Anschluss
sendchr macro char,linenum
ldreg dx,linenum
ldreg al,char
mov ah,1
int 14h
endm
;RECVCHR empfängt ein Zeichen ueber den RS232-Anschluss
recvchr macro linenum
ldreg dx,linenum
mov ah,2
int 14h
endm
;COMSTAT liest den Status des RS232-Ports
comstat macro linenum
ldreg dx,linenum
mov ah,3
int 14h
endm
;GETKBCHAR liest eine Zeichen von der Tatstaur ein
getkbchar macro
mov ah,0
int 16h
endm
;TSTKBCHAR prüft, ob ein Zeichen von der Tastatur zum Lesen ansteht
tstkbchar macro
mov ah,1
int 16h
endm
;GETKBSHIFT liest den Shift-Status der Tastatur
getkbshift macro
mov ah,2
int 16h
endm
;DSKRESET initialisiert den Diskettencontroller
dskreset macro
mov ah,0
int 13h
endm
;GETDSKSTAT liest den Rückmeldestatus des letzten ausgeführten Diskettenkommandos
getdskstat macro
mov ah,1
int 13h
endm
;DSKREAD liest von der Diskette
dskread macro drive,head,track,sector,numsecs,buffoff
ldreg dl,drive
ldreg dh,head
ldreg ch,track
ldreg cl,sector
ldreg al,numsecs
ldreg bx,buffoff
mov ah,2
int 13h
endm
;DSKWRITE schreibt auf die Diskette
dskwrite macro drive,head,track,sector,numsecs,buffoff
ldreg dl,drive
ldreg dh,head
ldreg ch,track
ldreg cl,sector
ldreg al,numsecs
ldreg bx,buffoff
mov ah,3
int 13h
endm
;DSKVERFY verifiziert die Diskette
dskverfy macro drive,head,track,sector,numsecs,buffoff
ldreg dl,drive
ldreg dh,head
ldreg ch,track
ldreg cl,sector
ldreg al,numsecs
ldreg bx,buffoff
mov ah,4
int 13h
endm
;DSKFORMAT formatiert die Diskette
dskformat macro drive,head,track,sector,numsecs,buffoff
ldreg dl,drive
ldreg dh,head
ldreg ch,track
ldreg cl,sector
ldreg al,numsecs
ldreg bx,buffoff
mov ah,5
int 13h
endm
;PRNTCHAR schickt ein Zeichen zum Drucker
prntchar macro char,printer
ldreg al,char
ldreg dx,printer
mov ah,0
int 17h
endm
;INIPRNTR initialisiert den Drucker
iniprntr macro printer
ldreg dx,printer
mov ah,1
int 17h
endm
;PRNTSTAT liest den Druckerstatus
prntstat macro printer
ldreg dx,printer
mov ah,2
int 17h
endm
;SETCRTMODE stellt den Video-Mous ein. Der Modus wird durch eine Ziffer
;angegeben, vergl. im nächsten Macro
setcrtmode macro modeval
ldreg al,modeval
mov ah,0
int 10h
endm
;SCRTMODE stellt den Video-Mous ein.
;Der Modus kann symbolisch angegeben werden
scrtmode macro modeval
sub al,al
; tstnset modeval,bw40x25,0
tstnset modeval,color40x25,1
tstnset modeval,bw80x25,2
tstnset modeval,color80x25,3
tstnset modeval,color320x200,4
tstnset modeval,bw320x200,5
tstnset modeval,bw640x200,6
mov ah,0
int 10h
endm
;SETCURTYPE stellt den Cursotyp ein
setcurtype macro start,end
ldreg ch,start
ldreg cl,end
mov ah,1
int 10h
endm
;SETCURPOS positioniert den Cursor
setcurpos macro row,col,crtpage
ldreg dh,row
ldreg dl,col
ldreg bh,crtpage
mov ah,2
int 10h
endm
;GETCURPOS ermittelt die Position des Cursors
getcurpos macro crtpage
ldreg bh,crtpage
mov ah,3
int 10h
endm
;GETPENPOS ermittelt die Position des Lichtstiftes (light pen)
getpenpos macro
mov ah,4
int 10h
endm
;SETPAGE setzt die Anzeigeseite
setpage macro crtpage
ldreg al,crtpage
mov ah,5
int 10h
endm
;SCROLLUP schiebt die Bildschirmseite aufwärts
scrollup macro lines,ulcrow,ulccol,lrcrow,lrccol,attr
ldreg al,lines
ldreg ch,ulcrow
ldreg cl,ulccol
ldreg dh,lrcrow
ldreg dl,lrccol
ldreg bh,attr
mov ah,6
int 10h
endm
;SCROLLDOWN schiebt die Bildschirmseite abwärts
scrolldown macro lines,ulcrow,ulccol,lrcrow,lrccol,attr
ldreg al,lines
ldreg ch,ulcrow
ldreg cl,ulccol
ldreg dh,lrcrow
ldreg dl,lrccol
ldreg bh,attr
mov ah,7
int 10h
endm
;READATRCHR liest Attribut und Zeichen an der aktuellen Cursoposition
readatrchr macro page
ldreg bh,page
mov ah,8
int 10h
endm
;WRITEATRCHR schreibt Attribut und Zeichen an der aktuellen Cursoposition
writeatrchr macro char,attr,count,page
ldreg al,char
ldreg bl,attr
ldreg cx,count
ldreg bh,page
mov ah,9
int 10h
endm
;WRITECHAR schreibe Anzahl Zeichen ab der aktuellen Cursorposition
writechar macro char,count,page
ldreg al,char
ldreg cx,count
ldreg bh,page
mov ah,10
int 10h
endm
;SETPALETTE setzt die Farbpalette
setpalette macro colorid,colorval
ldreg bh,colorid
ldreg bl,colorval
mov ah,11
int 10h
endm
;WRITEDOT schreibt einen Pixel (Dot) auf den Bildschirm
writedot macro row,col,color
ldreg dx,row
ldreg cx,col
ldreg al,color
mov ah,12
int 10h
endm
;READDOT liest eine Pixel (Dot) vom Bildchirm
readdot macro row,col
ldreg dx,row
ldreg cx,col
mov ah,13
int 10h
endm
;TELEWRITE schreibt im Fernschreibmodus
;Carriage Return, Linefeed, Backspace und Klingel werden als
;Kommandos betrachtet
telewrite macro char,color,page
ldreg al,char
ldreg bl,color
ldreg bh,page
mov ah,14
int 10h
endm
;VIDIOSTATE liest den Videostatus
vidiostate macro
mov ah,15
int 10h
endm
;GETMEMSIZE ermittelt die Speichergröße in 1K-Schritten
getmemsize macro
int 12h
endm
;EQUIPMENT ermittelt die am System angeschlossenen Geräte (Devices)
equipment macro
int 11h
endm
|