From 1871c46614efa06eae207a82b1b1e712ae8a6139 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Thu, 11 Jun 2020 22:29:05 -0400 Subject: [PATCH] VE: add backspace support in replace mode --- blk/130 | 4 ++-- blk/378 | 2 ++ blk/387 | 6 +++--- blk/388 | 3 +-- emul/forth.bin | Bin 6187 -> 6189 bytes 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/blk/130 b/blk/130 index 1d18fc1..53f1914 100644 --- a/blk/130 +++ b/blk/130 @@ -4,7 +4,8 @@ SWAP _cpos FBUF ( len src dst ) ROT MOVE ; : $R ( replace mode ) mode! 'R' EMIT - BEGIN setpos KEY DUP 0x20 >= IF + BEGIN setpos KEY DUP BS? IF -1 EDPOS +! DROP 0 THEN + DUP 0x20 >= IF DUP EMIT EDPOS @ _cpos C! 1 EDPOS +! BLK!! 0 THEN UNTIL mode! SPC contents ; : $O EDPOS @ 0x3c0 ( 15 * 64 ) >= IF EXIT THEN @@ -13,4 +14,3 @@ : $D $H 64 icpy acc@ 0 DO 16 EDPOS @ 64 / DO i _mvln- LOOP LOOP BLK!! contents ; - diff --git a/blk/378 b/blk/378 index 5333eb6..9ade3d1 100644 --- a/blk/378 +++ b/blk/378 @@ -12,3 +12,5 @@ + + diff --git a/blk/387 b/blk/387 index a111a47..cd7491c 100644 --- a/blk/387 +++ b/blk/387 @@ -1,16 +1,16 @@ ( handle backspace: go back one char in IN>, if possible, then emit BS + SPC + BS ) -: (inbs) +: _bs ( already at IN( ? ) IN> @ IN( = IF EXIT THEN IN> @ 1- IN> ! BS SPC BS ; +( del is same as backspace ) +: BS? DUP 0x7f = SWAP 0x8 = OR ; : KEY 85 RAM+ @ ( (key) override ) ?DUP IF EXECUTE ELSE (key) THEN ; - - ( cont.: read one char into input buffer and returns whether we should continue, that is, whether CR was not met. ) diff --git a/blk/388 b/blk/388 index f915b88..8e25537 100644 --- a/blk/388 +++ b/blk/388 @@ -1,10 +1,9 @@ : (rdlnc) ( -- c ) ( buffer overflow? same as if we typed a newline ) IN> @ IN) = IF 0x0a ELSE KEY THEN ( c ) - DUP 0x7f = IF DROP 0x8 THEN ( del? same as backspace ) DUP 0x0a = IF DROP 0xd THEN ( lf? same as cr ) ( bacspace? handle and exit ) - DUP 0x8 = IF (inbs) EXIT THEN + DUP BS? IF _bs EXIT THEN ( echo back ) DUP EMIT ( c ) ( write and advance ) diff --git a/emul/forth.bin b/emul/forth.bin index 9b8f0873456c8da8d718b8cad786385863e1eb9e..437c3e6978b948a37801436499dde452438bdfa1 100644 GIT binary patch delta 425 zcmYjLJx>Br5Zrf<0|C9@9e1EWJj|&HDWYbXs zyYw#BQB+gUo7baoq!=)Ulbu z6LcwmHazMndyk;^`AbJb`~j6NX@Hu-AKFv~sriVX$Jb$wU$sUz2vQQWYLFDMss`Oz z^_7GiU2d%6m8y^)Hq`8tm1yughXGBRRBP0LIxTYimryC-h!!9XoYB?@!!s>UuJJ{S zhL~mwHOe5J$)y!IkqpRz;?hBYmRmr>mzrRj;$o0r*;vYGaLNT0F1QgR^oQ7z;aKY7 Qxz8kZeDuxo`sPb~0ooLb~jw3~YR#Svx1Q3!5-9PPPG(N|OtP zof$hPZxy~LY9#_P$CtI4c{_^&0~?t2Y4Qq@0GT)uCk7vXN0%T023Ed{EV@iP8SXIy zEfkazh?^`Tswl-I>crsape4b;%%{L$2h<7Tax*aT*-rKsm0^sUoFghD?=AX*QI`E4 zvov#tXamEm|6NQ@3>vwKnR%M(KzDtbyj;{*9pnZcu+1tAYng3Do0(M@7BWWxX(TrZ zhfkIklV)5z*<37u(P46jSSaJ9$@j#xfov{uX-0<0YT}Nn4r0PwP7I-bA)Y>B46S@B k4CxHQTnkvWm?09;LJW;SJA1@+8Rt*lC2j^JKZ@G`0F!B0&;S4c