improve cursor wrapping, etc

This commit is contained in:
~d6 2023-02-19 01:39:19 -05:00
parent a7610c8453
commit 6df71489cd
1 changed files with 10 additions and 14 deletions

View File

@ -1,7 +1,6 @@
( term.tal ) ( term.tal )
( TODO: ) ( TODO: )
( 1. fix bugs )
( 3. need to implement scrolling regions ) ( 3. need to implement scrolling regions )
( 5. need draw-line word, and need to use it more ) ( 5. need draw-line word, and need to use it more )
( a. on delete, CSI-P ) ( a. on delete, CSI-P )
@ -15,7 +14,7 @@
( 12. clean up super ugly selection code ) ( 12. clean up super ugly selection code )
( 13. hide cursor when not moving for awhile ) ( 13. hide cursor when not moving for awhile )
( 15. blinking text? ) ( 15. blinking text? )
( 16. status line in femto, etc. is weird ) ( 16. status line in femto, etc. is weird *** major bug )
( 17. determ.terminfo ) ( 17. determ.terminfo )
( ANSI sequences ) ( ANSI sequences )
@ -160,7 +159,7 @@
reset-terminal reset-terminal
( set to 01 to enable debug log ) ( set to 01 to enable debug log )
#00 .debug STZ #01 .debug STZ
.debug LDZ ?&continue BRK &continue .debug LDZ ?&continue BRK &continue
#99 #010e DEO #99 #010e DEO
@ -350,6 +349,7 @@
screen-to-cursor cur-addr LDA2 !draw-cell screen-to-cursor cur-addr LDA2 !draw-cell
@draw-cursor ( -> ) @draw-cursor ( -> )
at-max-x .cur-wrap STZ
screen-to-cursor cur-addr LDA2 screen-to-cursor cur-addr LDA2
.tcem LDZ #00 EQU ?&skip SWP reverse-tint SWP .tcem LDZ #00 EQU ?&skip SWP reverse-tint SWP
&skip !draw-cell &skip !draw-cell
@ -828,7 +828,7 @@
@exec-vpa POP ;vpa !exec1 @exec-vpa POP ;vpa !exec1
@exec-cha POP ;cha !exec1 @exec-cha POP ;cha !exec1
@exec-el POP ;el !exec0 @exec-el POP ;el !exec0
@exec-ed POP ;ed_ !exec0 @exec-ed POP ;edx !exec0
@exec-sm POP ;sm !exec1 @exec-sm POP ;sm !exec1
@exec-rm POP ;rm !exec1 @exec-rm POP ;rm !exec1
@exec-dsr POP ;dsr !exec1 @exec-dsr POP ;dsr !exec1
@ -878,7 +878,7 @@
&erase-to-end POP2 cur-addr eol-addr !erase &erase-to-end POP2 cur-addr eol-addr !erase
&erase-from-start POP2 bol-addr cur-addr !erase &erase-from-start POP2 bol-addr cur-addr !erase
@ed_ ( n* -> ) @edx ( n* -> )
DUP2 #0000 EQU2 ?&erase-to-end DUP2 #0000 EQU2 ?&erase-to-end
DUP2 #0001 EQU2 ?&erase-from-start DUP2 #0001 EQU2 ?&erase-from-start
DUP2 #0002 EQU2 ?&erase-full DUP2 #0002 EQU2 ?&erase-full
@ -896,7 +896,8 @@
goto BRK ( ) goto BRK ( )
@dec-floor ( x* -> x==0 ? 0* : x-1* ) @dec-floor ( x* -> x==0 ? 0* : x-1* )
ORAk ?&sub JMP2r &sub #0001 SUB2 JMP2r #0001 SUB2 JMP2r
( ORAk ?&sub JMP2r &sub #0001 SUB2 JMP2r )
@debug-esc ( c^ -> ) @debug-esc ( c^ -> )
.debug LDZ ?&continue POP JMP2r &continue .debug LDZ ?&continue POP JMP2r &continue
@ -965,12 +966,7 @@
DUP #20 LTH ?read-ctrl DUP #20 LTH ?read-ctrl
DUP #7f EQU ?read-del DUP #7f EQU ?read-del
.tint LDZ SWP DUP2 insert-cell draw-cell .tint LDZ SWP DUP2 insert-cell draw-cell
( TODO: all cursor movement should potentially set/unset this flag ) clear-cursor forward BRK
( so this should move into forward and everything else )
.cur-x LDZ2 .max-x LDZ2 EQU2 .cur-wrap STZ
clear-cursor
forward
BRK
@read-ctrl ( c^ -> BRK ) @read-ctrl ( c^ -> BRK )
DUP #07 EQU ?read-bel DUP #07 EQU ?read-bel
@ -1016,8 +1012,8 @@
@read-cr ( 0d -> BRK ) @read-cr ( 0d -> BRK )
POP .cur-wrap LDZ ?&skip cr &skip BRK POP .cur-wrap LDZ ?&skip cr &skip BRK
@at-max-y ( -> true? ) @at-max-x ( -> true? ) .cur-x LDZ2 .max-x LDZ2 EQU2 JMP2r
.cur-y LDZ2 .max-y LDZ2 EQU2 JMP2r @at-max-y ( -> true? ) .cur-y LDZ2 .max-y LDZ2 EQU2 JMP2r
@read-lf ( 0a -> BRK ) @read-lf ( 0a -> BRK )
POP lf BRK POP lf BRK