1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-12-27 17:08:06 +11:00
collapseos/blk/388
2020-06-16 18:57:31 -05:00

16 lines
559 B
Plaintext

: (rdlnc) ( -- c )
( buffer overflow? same as if we typed a newline )
IN> @ IN) = IF 0x0a ELSE KEY THEN ( c )
DUP 0x0a = IF DROP 0xd THEN ( lf? same as cr )
( backspace? handle and exit )
DUP BS? IF _bs EXIT THEN
( echo back )
DUP EMIT ( c )
( write and advance )
DUP ( keep as result ) ( c c )
( We take advantage of the fact that c's MSB is always zero and
thus ! automatically null-terminates our string )
IN> @ ! 1 IN> +! ( c )
( if newline, replace with zero to indicate EOL )
DUP 0xd = IF DROP 0 THEN ;