more optimizations from neauoire
This commit is contained in:
parent
675af45ff3
commit
b7c014bb01
34
term.tal
34
term.tal
|
@ -284,7 +284,7 @@
|
|||
.flash LDZk #01 SUB SWP STZ ( ; flash<-flash-1 )
|
||||
#0000 DUP2 .lit-click-x STZ2 .lit-click-y STZ2
|
||||
.max-x LDZ2 .lit-drag-x STZ2 .max-y LDZ2 .lit-drag-y STZ2
|
||||
redraw-selection clear-selection JMP2r
|
||||
redraw-selection !clear-selection
|
||||
|
||||
@screen-to-cell ( row* col* -> )
|
||||
#30 SFT2 ( width ) #0008 ( border ) ADD2 .Screen/x DEO2
|
||||
|
@ -362,7 +362,7 @@
|
|||
|
||||
@redraw-selection ( -> )
|
||||
lit-first-y .cols LDZ2 MUL2 ( y0*cols* )
|
||||
lit-first-x ADD2 #0002 MUL2 ( 2(y0*cols+x0)* )
|
||||
lit-first-x ADD2 #10 SFT2 ( 2(y0*cols+x0)* )
|
||||
;cells ADD2 STH2 ( [addr*] )
|
||||
lit-last-y INC2 lit-first-y ( yn* y0* [addr*] )
|
||||
DUP2 lit-first-x STH2k ( yn* y0* x0* [addr* x0*] )
|
||||
|
@ -385,7 +385,7 @@
|
|||
|
||||
@point-to-coord ( x* y* -> row* col* )
|
||||
DUP2 #0008 SUB2 min #000c DIV2 .max-y LDZ2 min SWP2 ( row=(y-8)/12* x* )
|
||||
DUP2 #0008 SUB2 min #0008 DIV2 .max-x LDZ2 min JMP2r ( row* col=(x-8)/8* )
|
||||
DUP2 #0008 SUB2 min #03 SFT2 .max-x LDZ2 !min ( row* col=(x-8)/8* )
|
||||
|
||||
@start-selection ( -> )
|
||||
#01 .is-lit STZ ( )
|
||||
|
@ -402,8 +402,8 @@
|
|||
|
||||
@find-natural-end ( y* -> xend* )
|
||||
DUP2 .cols LDZ2 MUL2 ( y* y*cols* )
|
||||
#0002 MUL2 ;cells ADD2 INC2 ( y* edge* )
|
||||
DUP2 .max-x LDZ2 #0002 MUL2 ADD2 ( y* edge* start=edge+2cols* )
|
||||
#10 SFT2 ;cells ADD2 INC2 ( y* edge* )
|
||||
DUP2 .max-x LDZ2 #10 SFT2 ADD2 ( y* edge* start=edge+2cols* )
|
||||
&loop ( y* edge* addr* )
|
||||
LDAk ?&done ( y* edge* addr* )
|
||||
#0002 SUB2 LTH2k ?&loop ( y* edge* addr-2* )
|
||||
|
@ -415,7 +415,7 @@
|
|||
STH2 STH2 DUP2 find-natural-end ( y* xend* [x0* x1*] )
|
||||
STH2r min ( y* xlim=min(xend,x1)* [x0*] )
|
||||
OVR2 .cols LDZ2 MUL2 ( y* xlim* y*cols* [x0*] )
|
||||
STH2kr ADD2 #0002 MUL2 ;cells ADD2 ( y* xlim* addr* [x0*] )
|
||||
STH2kr ADD2 #10 SFT2 ;cells ADD2 ( y* xlim* addr* [x0*] )
|
||||
INC2 STH2 SWP2r STH2r ( y* xlim* x0* [addr+1*] )
|
||||
SUB2 INC2 #0000 SWP2 SUB2 ( y* -count* [addr+1*] )
|
||||
&loop ( y* -i* [pos*] )
|
||||
|
@ -449,8 +449,8 @@
|
|||
JMP2r ( )
|
||||
|
||||
@handle-selection ( -> )
|
||||
selection-is-empty ?&skip copy-selection &skip !clear-selection
|
||||
|
||||
selection-is-empty ?&skip copy-selection
|
||||
&skip ( fall through to clear-selection )
|
||||
@clear-selection ( -> )
|
||||
#00 .is-lit STZ
|
||||
#00 .is-lit-flip STZ
|
||||
|
@ -511,8 +511,7 @@
|
|||
.Mouse/x DEI2 .Mouse/y DEI2 ( x* y* )
|
||||
.lastmouse-y STZ2 .lastmouse-x STZ2 ( )
|
||||
draw-pointer
|
||||
screen-to-cursor ( )
|
||||
JMP2r ( )
|
||||
!screen-to-cursor ( )
|
||||
|
||||
@on-mouse ( -> BRK )
|
||||
.lastmouse-st LDZ ( last )
|
||||
|
@ -848,12 +847,12 @@
|
|||
.Console/r DEI
|
||||
DUP debug-read
|
||||
DUP ?&ok POP BRK
|
||||
&ok !read
|
||||
|
||||
@read ( c^ -> BRK )
|
||||
&ok
|
||||
DUP #20 LTH ?read-ctrl
|
||||
DUP #7f EQU ?read-del
|
||||
!read-printable
|
||||
( read printable )
|
||||
.tint LDZ SWP DUP2 insert-cell
|
||||
draw-cell forward BRK
|
||||
|
||||
@read-ctrl ( c^ -> BRK )
|
||||
DUP #07 EQU ?read-bel
|
||||
|
@ -902,9 +901,6 @@
|
|||
@read-nl ( 0a -> BRK )
|
||||
POP clear-cursor at-max-y ?scroll down BRK
|
||||
|
||||
@read-printable ( c^ -> BRK )
|
||||
.tint LDZ SWP DUP2 insert-cell draw-cell forward BRK
|
||||
|
||||
@goto ( y* x* -> )
|
||||
clear-cursor
|
||||
.max-x LDZ2 min .cur-x STZ2
|
||||
|
@ -953,7 +949,7 @@
|
|||
cur-addr STA2 JMP2r ( )
|
||||
|
||||
@forward-n-tabs ( n* -> )
|
||||
dec-floor #0008 MUL2 ( i=(n-1)8* )
|
||||
dec-floor #30 SFT2 ( i=(n-1)8* )
|
||||
#0008 .cur-x LDZ2 #0007 AND2 SUB2 ( i* 8-cur%8* )
|
||||
ADD2 !forward-n ( )
|
||||
|
||||
|
@ -1107,7 +1103,7 @@
|
|||
LITr 00 ( n [0] )
|
||||
&read ( n [k] )
|
||||
#000a DIV2k STH2k MUL2 SUB2 STH2r INCr ( n%10 n/10 [k+1] )
|
||||
DUP2 ORA ,&read JCN
|
||||
ORAk ,&read JCN
|
||||
POP2 ( top element was 0000 )
|
||||
&write ( n0 n1 ... nk [k+1] )
|
||||
NIP #30 ADD .Console/w DEO LITr 01 SUBr ( n0 ... n{k-1} [k] )
|
||||
|
|
Loading…
Reference in New Issue