2023-12-09 21:48:22 +01:00
|
|
|
%import textio
|
|
|
|
%import string
|
|
|
|
%zeropage basicsafe
|
|
|
|
|
2023-10-15 22:44:34 +02:00
|
|
|
main {
|
2023-11-12 20:40:17 +01:00
|
|
|
sub start() {
|
2023-12-09 21:48:22 +01:00
|
|
|
cx16.set_chrin_keyhandler(0, &keystroke_handler)
|
|
|
|
cbm.CHRIN()
|
|
|
|
}
|
|
|
|
|
|
|
|
sub keystroke_handler() -> ubyte {
|
|
|
|
%asm {{
|
|
|
|
sta cx16.r0L
|
|
|
|
}}
|
|
|
|
uword cmdxx = grab_cmdline()
|
|
|
|
if_cs {
|
|
|
|
; first entry, decide if we want to override
|
|
|
|
if cx16.r0L==9 {
|
|
|
|
; intercept TAB
|
|
|
|
sys.clear_carry()
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
sys.set_carry()
|
|
|
|
return 0
|
|
|
|
} else {
|
|
|
|
if cx16.r0L==9 {
|
|
|
|
%asm {{
|
|
|
|
brk ; BOOM
|
|
|
|
}}
|
|
|
|
uword cmd = grab_cmdline()
|
|
|
|
if cmd and cmd[0] {
|
|
|
|
;cx16.r5++
|
|
|
|
}
|
|
|
|
return '!'
|
|
|
|
}
|
|
|
|
return 0 ; eat all other characters
|
|
|
|
}
|
|
|
|
|
|
|
|
sub grab_cmdline() -> uword {
|
|
|
|
cx16.r9++
|
|
|
|
return $5000
|
|
|
|
}
|
2023-11-14 18:23:37 +01:00
|
|
|
}
|
2023-10-03 22:54:28 +02:00
|
|
|
}
|