From 95cb8da0a93f0956fef37930fce55646355f325d Mon Sep 17 00:00:00 2001 From: d6 Date: Sun, 12 Mar 2023 18:41:31 -0400 Subject: [PATCH] configurable border pad; either 0000 or 0010 --- term.tal | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/term.tal b/term.tal index 48a7aeb..25eb3c8 100644 --- a/term.tal +++ b/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