home *** CD-ROM | disk | FTP | other *** search
- ; +++Date last modified: 05-Jul-1997
-
- page 55, 132
-
- ; FUNCTIONS: dosgetch/doswaitch
- ;
- ; Donated to the public domain 96-11-12 by Tom Torfs (2:292/516)
- ;
- ; dosgetch() attempts to read a character from stdin. Returns the
- ; character read or EOF (-1) if no character is available. Extended keys
- ; are returned in two parts: first a zero and then the actual code.
- ;
- ; doswaitch() works alike but waits if no character is available.
- ;
- ; Requires MASM 5.1 or later or equivalent
- ;
- ; Assemble with: MASM /Mx /z ...
- ; TASM /jMASM /mx /z ...
- ;
-
- % .MODEL memodel,C ;Add model support via
- ;command line macros, e.g.
- ;MASM /Dmemodel=LARGE
-
- .CODE
- ;
- ; int dosgetch(void) - comments see above
- ;
-
- PUBLIC dosgetch
-
- dosgetch PROC
-
- push dx
- mov ah, 6 ; direct console I/O
- mov dl, 255 ; read a character
- int 21h ; let DOS do the job
- pop dx
-
- jz nochar ; character ready ?
-
- xor ah,ah ; clear high byte ax
- ret ; return
-
- nochar:
-
- mov ax, -1 ; return EOF
- ret ; return
-
- dosgetch ENDP
-
- ;
- ; int doswaitch(void) - comments see above
- ;
-
- PUBLIC doswaitch
-
- doswaitch PROC
-
- waitloop:
-
- call dosgetch ; try to read character
-
- cmp ax, -1 ; available ?
- je waitloop ; no -> repeat
-
- ret ; return
-
- doswaitch ENDP
-
- end
-