home *** CD-ROM | disk | FTP | other *** search
- (* Beispielprogramm der externen DOS-Funktion "DOSXQQ" in MS-PASCAL 3.2 *)
- (* Autor: W. Wegener Literatur: MS-PASCAL USER'S GUIDE *)
- PROGRAM demo(Output);
-
- VAR ch: CHAR; dxreg: WORD;
-
- (* "public"-Variablen aus der Library. Wert aus "crcxqq" wird vor DOS-
- Call dem CX-Register zugewiesen, "crdxqq" enthaelt den Wert des
- DX-Registers nach dem DOS-Call: *)
-
- VAR [EXTERN] crcxqq, crdxqq: WORD;
-
- (* externe DOS-Funktion (INT 21H). "command" -> AH-Register, "parameter"
- -> DX-Register, AL-Register -> Funktionswert: *)
- FUNCTION DOSxqq (command, parameter: WORD): BYTE; EXTERN;
-
- (* liefert den Wert TRUE, wenn Zeichen im Tastaturpuffer: *)
- FUNCTION KeyPress: BOOLEAN;
- BEGIN KeyPress := DOSxqq(11,0) = 255; END;
-
- (* Zeicheneingabe mit Bildschirmecho und warten, Control-C aktiv: *)
- FUNCTION CharRead: CHAR;
- BEGIN CharRead := Chr(DOSxqq(1,0)); END;
-
- (* Zeicheneingabe ohne Bildschirmecho und ohne warten, Control-C aktiv: *)
- FUNCTION KbdRead: CHAR;
- BEGIN KbdRead := Chr(DOSxqq(6,255)); END;
-
- (* Zeicheneingabe ohne Echo, mit warten, Control-C nicht aktiv: *)
- FUNCTION ReadKbd: CHAR;
- BEGIN ReadKbd := Chr(DOSxqq(7,0)); END;
-
- (* Zeicheneingabe ohne Echo, mit warten, Control-C aktiv: *)
- FUNCTION ReadBreak: CHAR;
- BEGIN ReadBreak := Chr(DOSxqq(8,0)); END;
-
- (* MS-DOS Interrupt 21: *)
- FUNCTION MSDos (ah: BYTE; cx: WORD; VAR dx: WORD): BYTE;
- BEGIN
- crcxqq := cx; MSDos := DOSxqq(ah,dx); dx := crdxqq;
- END;
-
- BEGIN (* demo *)
- ch := CharRead;
- REPEAT UNTIL KeyPress;
- Write(KbdRead);
- REPEAT
- ch := KbdRead; WriteLn(ch, Ord(ch));
- UNTIL Ord(ch) > 0;
- Write(ReadKbd);
- Write(ReadBreak);
- dxreg := 1;
- Write(MSDos(14,0,dxreg)); (* select B: as default drive *)
- END.