;
; A sample function in CSM format. This is "getchar", out of the std
; library:
;
maclib <bds>
function getchar
lda ungetl ;any character pushed back?
ora a
mov l,a
jz gch2
xra a ;yes. return it and clear the pushback
sta ungetl ;byte in C.CCC.
mvi h,0
ret
gch2: push b
mvi c,conin
call bdos
pop b
cpi cntrlc ;control-C ?
jz base ;if so, reboot.
cpi 1ah ;control-Z ?
lxi h,-1 ;if so, return -1.
rz
mov l,a
cpi cr ;carriage return?
jnz gch3
push b
mvi c,conout ;if so, also echo linefeed
mvi e,lf
call bdos
pop b
mvi l,newlin ;and return newline (linefeed)..
gch3: mvi h,0
ret
endfunc getchar