configurable border pad; either 0000 or 0010
This commit is contained in:
parent
72ca5d76d1
commit
95cb8da0a9
32
term.tal
32
term.tal
|
@ -121,6 +121,7 @@
|
|||
|
||||
( user configuration )
|
||||
@visual-bell $1
|
||||
@border-pad $2 ( should be 0000 or 0010 )
|
||||
|
||||
|0100
|
||||
( metadata )
|
||||
|
@ -131,9 +132,12 @@
|
|||
#0018 .rows STZ2
|
||||
#0050 .cols STZ2
|
||||
|
||||
( #0010 .border-pad STZ2 )
|
||||
#0000 .border-pad STZ2
|
||||
|
||||
( start cursor at origin - including border )
|
||||
#0010 ( border ) .Screen/x DEO2
|
||||
#0010 ( border ) .Screen/y DEO2
|
||||
.border-pad LDZ2 .Screen/x DEO2
|
||||
.border-pad LDZ2 .Screen/y DEO2
|
||||
|
||||
( set colors )
|
||||
#07bf .System/r DEO2
|
||||
|
@ -194,7 +198,8 @@
|
|||
#01 .visual-bell STZ
|
||||
|
||||
( draw border )
|
||||
!draw-border
|
||||
.border-pad LDZ2 ORA ?draw-border
|
||||
JMP2r
|
||||
|
||||
@update-dimensions ( -> )
|
||||
( set col-bytes, frequently needed )
|
||||
|
@ -204,9 +209,10 @@
|
|||
.rows LDZ2 #0001 SUB2 .max-y STZ2
|
||||
.cols LDZ2 #0001 SUB2 .max-x STZ2
|
||||
|
||||
( set screen height/width based on rows/cols )
|
||||
.cols LDZ2 #30 SFT2 ( width ) #0020 ( 2xborder ) ADD2 .Screen/w DEO2
|
||||
.rows LDZ2 #000c MUL2 ( height ) #0020 ( 2xborder ) ADD2 .Screen/h DEO2
|
||||
( set screen height/width based on rows/cols + border padding )
|
||||
.border-pad LDZ2 DUP2 ADD2 DUP2
|
||||
.cols LDZ2 #30 SFT2 ADD2 .Screen/w DEO2
|
||||
.rows LDZ2 #000c MUL2 ADD2 .Screen/h DEO2
|
||||
JMP2r
|
||||
|
||||
@shell "bash 00 "-i 00 00
|
||||
|
@ -311,9 +317,9 @@
|
|||
&pointer-ok
|
||||
.dirty LDZ #00 EQU ?&done
|
||||
LIT2r =cells ( [addr*] )
|
||||
.rows LDZ2 #0000 DUP2 #0010 ( border ) ADD2 .Screen/y DEO2
|
||||
.rows LDZ2 #0000 DUP2 .border-pad LDZ2 ADD2 .Screen/y DEO2
|
||||
&yloop
|
||||
.cols LDZ2 #0000 DUP2 #0010 ( border ) ADD2 .Screen/x DEO2
|
||||
.cols LDZ2 #0000 DUP2 .border-pad LDZ2 ADD2 .Screen/x DEO2
|
||||
&xloop
|
||||
STH2kr LDA2 draw-cell erase-fg-cell
|
||||
.Screen/x DEI2k #0008 ( width ) ADD2 ROT DEO2
|
||||
|
@ -335,8 +341,8 @@
|
|||
redraw-selection !clear-selection
|
||||
|
||||
@screen-to-cell ( row* col* -> )
|
||||
#30 SFT2 ( width ) #0010 ( border ) ADD2 .Screen/x DEO2
|
||||
#000c MUL2 ( height ) #0010 ( border ) ADD2 .Screen/y DEO2
|
||||
#30 SFT2 ( width ) .border-pad LDZ2 ADD2 .Screen/x DEO2
|
||||
#000c MUL2 ( height ) .border-pad LDZ2 ADD2 .Screen/y DEO2
|
||||
JMP2r
|
||||
|
||||
@screen-to-cursor ( -> )
|
||||
|
@ -426,16 +432,16 @@
|
|||
GTH2k ?&xloop ( yn* y* xlim* x+1* [addr+2*] )
|
||||
POP2 POP2 ( yn* y* [addr+2*] )
|
||||
.Screen/y DEI2k #000c ADD2 ROT DEO2 ( yn* y* [addr+2*] )
|
||||
#0010 ( border ) .Screen/x DEO2 ( yn* y* [addr+2*] )
|
||||
.border-pad LDZ2 .Screen/x DEO2 ( yn* y* [addr+2*] )
|
||||
LIT2r 0000 INC2 GTH2k ?&yloop ( yn* y+1* [addr+2* 0*] )
|
||||
POP2 POP2 POP2r POP2r ( )
|
||||
JMP2r ( )
|
||||
|
||||
@y-point-to-row ( y* -> row* )
|
||||
#0010 LTH2k ?&y0 SUB2 #000c DIV2 .max-y LDZ2 !min &y0 POP2 POP2 #0000 JMP2r
|
||||
.border-pad LDZ2 LTH2k ?&y0 SUB2 #000c DIV2 .max-y LDZ2 !min &y0 POP2 POP2 #0000 JMP2r
|
||||
|
||||
@x-point-to-col ( x* -> col* )
|
||||
#0010 LTH2k ?&x0 SUB2 #03 SFT2 .max-x LDZ2 !min &x0 POP2 POP2 #0000 JMP2r
|
||||
#0004 ADD2 .border-pad LDZ2 LTH2k ?&x0 SUB2 #03 SFT2 .max-x LDZ2 !min &x0 POP2 POP2 #0000 JMP2r
|
||||
|
||||
@point-to-coord ( x* y* -> row* col* )
|
||||
y-point-to-row SWP2 !x-point-to-col
|
||||
|
|
Loading…
Reference in New Issue