more progress
This commit is contained in:
parent
927aece263
commit
9189fb270b
105
term.tal
105
term.tal
|
@ -1,3 +1,24 @@
|
||||||
|
( ANSI sequences )
|
||||||
|
( )
|
||||||
|
( set attributes: ESC [ x ; ... m -> 0:reset 1:bright 2:dim 7:reverse )
|
||||||
|
( get cursor position: ESC [ 6 n -> ESC [ $row ; $col R )
|
||||||
|
( enable line wrap: ESC [ 7 h )
|
||||||
|
( disable line wrap: ESC [ 7 l )
|
||||||
|
( )
|
||||||
|
( move cursor home: ESC [ H )
|
||||||
|
( move cursor: ESC [ $row ; $col H )
|
||||||
|
( move up: ESC [ $n A )
|
||||||
|
( move down: ESC [ $n B )
|
||||||
|
( move forward: ESC [ $n C )
|
||||||
|
( move back: ESC [ $n D )
|
||||||
|
( )
|
||||||
|
( erase from cursor to end of line: ESC [ K )
|
||||||
|
( erase from start of line to cursor: ESC [ 1 K )
|
||||||
|
( erase line: ESC [ 2 K )
|
||||||
|
( erase from current line to bottom: ESC [ J )
|
||||||
|
( erase from current line to top: ESC [ 1 J )
|
||||||
|
( erase screen: ESC [ 2 J )
|
||||||
|
|
||||||
|00 @System [ &vect $2 &pad $6 &r $2 &g $2 &b $2 ]
|
|00 @System [ &vect $2 &pad $6 &r $2 &g $2 &b $2 ]
|
||||||
|10 @Console [ &vect $2 &r $1 &pad $5 &w $1 ]
|
|10 @Console [ &vect $2 &r $1 &pad $5 &w $1 ]
|
||||||
|20 @Screen [ &vect $2 &w $2 &h $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|
|20 @Screen [ &vect $2 &w $2 &h $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|
||||||
|
@ -6,17 +27,26 @@
|
||||||
|0000
|
|0000
|
||||||
@tint $1 ( draw mode. 01=regular, 04=inverted )
|
@tint $1 ( draw mode. 01=regular, 04=inverted )
|
||||||
@dirty? $1 ( screen needs redraw? )
|
@dirty? $1 ( screen needs redraw? )
|
||||||
|
|
||||||
@rows $2 ( height in characters )
|
@rows $2 ( height in characters )
|
||||||
@cols $2 ( width in characters )
|
@cols $2 ( width in characters )
|
||||||
@cur-x $2 ( cursor x: 0 <= cur-x < cols )
|
@cur-x $2 ( cursor x: 0 <= cur-x < cols )
|
||||||
@cur-y $2 ( cursor y: 0 <= cur-y < rows )
|
@cur-y $2 ( cursor y: 0 <= cur-y < rows )
|
||||||
|
@max-x $2 ( cols-1 )
|
||||||
|
@max-y $2 ( rows-1 )
|
||||||
|
|
||||||
|0100
|
|0100
|
||||||
( 80 cols x 24 rows )
|
( 80 cols x 24 rows )
|
||||||
#0028 .rows STZ2
|
#0028 .rows STZ2
|
||||||
#0050 .cols STZ2
|
#0050 .cols STZ2
|
||||||
|
|
||||||
|
( set max row/col )
|
||||||
|
.rows LDZ2 #0001 SUB2 .max-y STZ2
|
||||||
|
.cols LDZ2 #0001 SUB2 .max-x STZ2
|
||||||
|
|
||||||
|
( set initial cursor )
|
||||||
|
#0000 .cur-x STZ2
|
||||||
|
#0000 .cur-y STZ2
|
||||||
|
|
||||||
( set screen height/width based on rows/cols )
|
( set screen height/width based on rows/cols )
|
||||||
.rows LDZ2 #30 SFT2 .Screen/h DEO2
|
.rows LDZ2 #30 SFT2 .Screen/h DEO2
|
||||||
.cols LDZ2 #30 SFT2 .Screen/w DEO2
|
.cols LDZ2 #30 SFT2 .Screen/w DEO2
|
||||||
|
@ -32,11 +62,17 @@
|
||||||
( set up interrupts )
|
( set up interrupts )
|
||||||
;redraw .Screen/vect DEO2 ( set up screen )
|
;redraw .Screen/vect DEO2 ( set up screen )
|
||||||
;on-key .Controller/vect DEO2 ( set up keyboard )
|
;on-key .Controller/vect DEO2 ( set up keyboard )
|
||||||
;on-input .Console/vect DEO2 ( set up stdin )
|
;on-read .Console/vect DEO2 ( set up stdin )
|
||||||
|
|
||||||
( return )
|
( return )
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
@min ( x* y* -> min* )
|
||||||
|
LTH2k JMP SWP2 POP2 JMP2r
|
||||||
|
|
||||||
|
( @max ( x* y* -> max* )
|
||||||
|
LTH2k JMP SWP2 NIP2 JMP2r )
|
||||||
|
|
||||||
@clear-screen
|
@clear-screen
|
||||||
#01 .dirty? STZ
|
#01 .dirty? STZ
|
||||||
;screen STH2
|
;screen STH2
|
||||||
|
@ -116,21 +152,24 @@
|
||||||
&c1 LIT "@ SUB
|
&c1 LIT "@ SUB
|
||||||
&done .Console/w DEO BRK
|
&done .Console/w DEO BRK
|
||||||
|
|
||||||
@on-input
|
@on-read
|
||||||
.Console/r DEI
|
.Console/r DEI
|
||||||
DUP ,&ok JCN POP BRK
|
DUP ,&ok JCN POP BRK
|
||||||
&ok #41 .tint STZ
|
&ok #41 .tint STZ
|
||||||
;read JSR2 BRK
|
;read JSR2 BRK
|
||||||
|
|
||||||
@read ( byte^ -> )
|
@read ( c^ -> )
|
||||||
DUP #07 EQU ;read-bel JCN2
|
DUP #20 LTH ;read-ctrl JCN2
|
||||||
|
DUP #7f EQU ;read-del JCN2
|
||||||
|
;read-printable JMP2
|
||||||
|
|
||||||
|
@read-ctrl ( c^ -> )
|
||||||
|
DUP #07 EQU ;read-bel JCN2 ( TODO: flash )
|
||||||
DUP #08 EQU ;read-bs JCN2
|
DUP #08 EQU ;read-bs JCN2
|
||||||
DUP #09 EQU ;read-tab JCN2
|
DUP #09 EQU ;read-tab JCN2
|
||||||
DUP #0a EQU ;read-nl JCN2
|
DUP #0a EQU ;read-nl JCN2
|
||||||
DUP #0d EQU ;read-cr JCN2
|
DUP #0d EQU ;read-cr JCN2
|
||||||
DUP #1b EQU ;read-esc JCN2
|
DUP #1b EQU ;read-esc JCN2
|
||||||
DUP #7f EQU ;read-del JCN2
|
|
||||||
;read-printable JMP2
|
|
||||||
|
|
||||||
( TODO: we need line-editing! )
|
( TODO: we need line-editing! )
|
||||||
@read-bel POP JMP2r
|
@read-bel POP JMP2r
|
||||||
|
@ -152,33 +191,53 @@
|
||||||
@read-cr ( 0d -> )
|
@read-cr ( 0d -> )
|
||||||
POP ;hide-cursor JSR2 #0000 .cur-x STZ2 JMP2r
|
POP ;hide-cursor JSR2 #0000 .cur-x STZ2 JMP2r
|
||||||
|
|
||||||
|
@at-max-y ( -> true? )
|
||||||
|
.cur-y LDZ2 .max-y LDZ2 EQU2 JMP2r
|
||||||
|
|
||||||
@read-nl ( 0a -> )
|
@read-nl ( 0a -> )
|
||||||
POP ;hide-cursor JSR2 ;down JMP2
|
POP ;hide-cursor JSR2
|
||||||
|
,at-max-y JSR ;scroll JCN2 ;down JMP2
|
||||||
|
|
||||||
@read-printable ( c -> )
|
@read-printable ( c -> )
|
||||||
DUP ;cursor-addr JSR2 STA
|
DUP ;cursor-addr JSR2 STA
|
||||||
;draw-tile JSR2
|
;draw-tile JSR2
|
||||||
;forward JMP2
|
;forward JMP2
|
||||||
|
|
||||||
@forward ( -> )
|
@forward-n ( n* -> )
|
||||||
.cur-x LDZ2 INC2 DUP2 .cols LDZ2 LTH2 ,&ok JCN
|
;hide-cursor JSR2
|
||||||
POP2 #0000 .cur-x STZ2 ;down JMP2
|
.cur-x LDZ2 ADD2 .max-x LDZ2 ;min JSR2 .cur-x STZ2
|
||||||
&ok .cur-x STZ2
|
|
||||||
;show-cursor JMP2
|
;show-cursor JMP2
|
||||||
|
|
||||||
@back ( -> )
|
@forward ( -> )
|
||||||
.cur-x LDZ2 #0000 GTH2 ,&continue JCN
|
#0001 ,forward-n JMP
|
||||||
POP2 POP JMP2r
|
|
||||||
&continue ( addr^ value* )
|
@back-n ( n* -> )
|
||||||
;hide-cursor JSR2
|
;hide-cursor JSR2
|
||||||
.cur-x LDZ2 #0001 SUB2 .cur-x STZ2
|
.cur-x LDZ2 GTH2k ,&zero JCN
|
||||||
|
SWP2 SUB2 ,&done JMP
|
||||||
|
&zero POP2 POP2 #0000
|
||||||
|
&done .cur-x STZ2 ;show-cursor JMP2
|
||||||
|
|
||||||
|
@back ( -> )
|
||||||
|
#0001 ,back-n JMP
|
||||||
|
|
||||||
|
@up-n ( n* -> )
|
||||||
|
;hide-cursor JSR2
|
||||||
|
.cur-y LDZ2 GTH2k ,&zero JCN
|
||||||
|
SWP2 SUB2 ,&done JMP
|
||||||
|
&zero POP2 POP2 #0000
|
||||||
|
&done .cur-y STZ2 ;show-cursor JMP2
|
||||||
|
|
||||||
|
@up ( -> )
|
||||||
|
#0001 ,up-n JMP
|
||||||
|
|
||||||
|
@down-n ( n* -> )
|
||||||
|
;hide-cursor JSR2
|
||||||
|
.cur-y LDZ2 ADD2 .max-y LDZ2 ;min JSR2 .cur-y STZ2
|
||||||
;show-cursor JMP2
|
;show-cursor JMP2
|
||||||
|
|
||||||
@down ( -> )
|
@down ( -> )
|
||||||
.cur-y LDZ2 INC2 DUP2 .rows LDZ2 LTH2 ,&ok JCN
|
#0001 ,down-n JMP
|
||||||
POP2 ;scroll JMP2
|
|
||||||
&ok .cur-y STZ2
|
|
||||||
;show-cursor JMP2
|
|
||||||
|
|
||||||
@scroll
|
@scroll
|
||||||
;end-screen STH2
|
;end-screen STH2
|
||||||
|
@ -228,6 +287,6 @@
|
||||||
@screen $0c80 ( 80 x 40 )
|
@screen $0c80 ( 80 x 40 )
|
||||||
@end-screen
|
@end-screen
|
||||||
|
|
||||||
( store attributes for redraw, etc. )
|
( ( store attributes for redraw, etc. )
|
||||||
@attrs $0c80 ( 80 x 40 )
|
@attrs $0c80 ( 80 x 40 )
|
||||||
@end-attrs
|
@end-attrs )
|
||||||
|
|
Loading…
Reference in New Issue