add pasting, start adding mouse
This commit is contained in:
parent
d4c7ca30ca
commit
2a4b56750d
61
term.tal
61
term.tal
|
@ -69,6 +69,9 @@
|
|||
@max-y $2 ( rows-1 )
|
||||
@col-bytes $2 ( 2*cols )
|
||||
@debug $1 ( use debug log? )
|
||||
@lastmouse-x $2 ( last mouse x )
|
||||
@lastmouse-y $2 ( last mouse y )
|
||||
@lastmouse-st $1 ( last mouse press )
|
||||
|
||||
( terminal settings )
|
||||
@irm $1 ( 01: insert and move right, 00: replace and overwrite )
|
||||
|
@ -128,6 +131,7 @@
|
|||
( set up interrupts )
|
||||
;redraw .Screen/vect DEO2 ( set up screen )
|
||||
;on-key .Controller/vect DEO2 ( set up keyboard )
|
||||
;on-mouse .Mouse/vect DEO2 ( set up mouse )
|
||||
;on-read .Console/vect DEO2 ( set up stdin )
|
||||
|
||||
( set to 01 to enable debug log )
|
||||
|
@ -236,6 +240,56 @@
|
|||
#1b STHkr DEO LIT "[ STHkr DEO STHr DEO
|
||||
JMP2r
|
||||
|
||||
@paste-from-buf ( size* -> )
|
||||
;paste-buf SWP2 OVR2 ADD2 SWP2 ( limit* start* )
|
||||
&loop ( limit* pos* )
|
||||
LDAk .Console/w DEO INC2 ( limit* pos+1* )
|
||||
GTH2k ?&loop POP2 POP2 JMP2r
|
||||
|
||||
@paste-snarf ( -> )
|
||||
;&path .File2/name DEO2 ( )
|
||||
#0100 .File2/len DEO2 ( )
|
||||
&loop ( )
|
||||
;paste-buf .File2/r DEO2 ( )
|
||||
.File2/ok DEI2 ( size* )
|
||||
DUP2 #0000 EQU2 ?&failed ( size* )
|
||||
DUP2 paste-from-buf ( size* )
|
||||
#0100 LTH2 ?&done ( )
|
||||
!&loop ( )
|
||||
&failed POP2
|
||||
&done JMP2r [ &path ".snarf 00 ]
|
||||
|
||||
@on-click-down ( click^ -> )
|
||||
#02 AND ?&middle-click !&done
|
||||
&middle-click paste-snarf
|
||||
&done JMP2r
|
||||
|
||||
@on-click-up ( unclick^ -> )
|
||||
POP JMP2r
|
||||
|
||||
@on-move
|
||||
.Mouse/x DEI2 .lastmouse-x LDZ2 NEQ2 ?&redraw
|
||||
.Mouse/y DEI2 .lastmouse-y LDZ2 NEQ2 ?&redraw
|
||||
JMP2r
|
||||
&redraw
|
||||
.Mouse/x DEI2 .Screen/x DEO2
|
||||
.Mouse/y DEI2 .Screen/y DEO2
|
||||
#02f0 ;ascii ADD2 .Screen/addr DEO2
|
||||
#43 .Screen/sprite DEO
|
||||
.Mouse/x DEI2 .lastmouse-x STZ2
|
||||
.Mouse/y DEI2 .lastmouse-y STZ2
|
||||
JMP2r
|
||||
|
||||
@on-mouse ( -> )
|
||||
.lastmouse-st LDZ ( last )
|
||||
.Mouse/state DEI ( last st )
|
||||
STHk OVR EOR STHkr AND ( last (last^st)&st [st] )
|
||||
on-click-down ( last [st] )
|
||||
DUP STHkr EOR AND ( last&(last^st) [st] )
|
||||
on-click-up ( [st] )
|
||||
STHr .lastmouse-st STZ ( )
|
||||
( on-move ) BRK ( )
|
||||
|
||||
@on-key ( -> )
|
||||
.Controller/key DEI ?&ok !on-button
|
||||
&ok alt ?on-alt-key
|
||||
|
@ -615,7 +669,7 @@
|
|||
@down ( -> )
|
||||
#0001 !down-n
|
||||
|
||||
( @insert ( c^ -> )
|
||||
@insert ( c^ -> )
|
||||
.attr LDZ SWP !insert-cell
|
||||
|
||||
@insert-cell ( cell* -> )
|
||||
|
@ -627,7 +681,7 @@
|
|||
INC2 LTH2k ?&loop ( cell* last pos+1* )
|
||||
POP2 POP2 ( cell* )
|
||||
&replace ( cell* )
|
||||
cur-addr STA2 JMP2r ( ) )
|
||||
cur-addr STA2 JMP2r ( )
|
||||
|
||||
@forward-n-tabs ( n* -> )
|
||||
#0001 SUB2 #0008 MUL2 ( i=(n-1)8* )
|
||||
|
@ -770,6 +824,9 @@
|
|||
( store up to 8 arguments for control sequences )
|
||||
@args $10 &pos $2
|
||||
|
||||
( paste buffer )
|
||||
@paste-buf $100
|
||||
|
||||
( 128 1-bit 8x8 tiles for ASCII 7-bit characters )
|
||||
@ascii
|
||||
~chr/ascii.tal
|
||||
|
|
Loading…
Reference in New Issue