(notepad) Starting text-editing

This commit is contained in:
Devine Lu Linvega 2023-04-26 12:53:20 -07:00
parent 7d469ec9f1
commit e174a4b3c4
1 changed files with 98 additions and 14 deletions

View File

@ -8,7 +8,8 @@
|0000 |0000
@page $1 @page $1
@selection &from $2 &to $2 @selection &from $2 &to $2 &length $2
@textarea &length $2
|0100 |0100
@ -25,6 +26,8 @@
;on-frame .Screen/vector DEO2 ;on-frame .Screen/vector DEO2
;on-control .Controller/vector DEO2 ;on-control .Controller/vector DEO2
;mem/end ;mem SUB2 .textarea/length STZ2
;mem select-from ;mem select-from
draw-header draw-header
@ -35,20 +38,12 @@ BRK
@on-control ( -> ) @on-control ( -> )
.Controller/button DEI .Controller/button DEI
DUP #40 NEQ ?&no-l DUP #40 NEQ ?&no-l .selection/from LDZ2 #0001 SUB2 select-from &no-l
.selection/from LDZ2 #0001 SUB2 select-from DUP #80 NEQ ?&no-r .selection/from LDZ2 INC2 select-from &no-r
&no-l DUP #44 NEQ ?&no-sl .selection/to LDZ2 #0001 SUB2 select-to &no-sl
DUP #80 NEQ ?&no-r DUP #84 NEQ ?&no-sr .selection/to LDZ2 INC2 select-to &no-sr
.selection/from LDZ2 INC2 select-from
&no-r
DUP #44 NEQ ?&no-sl
.selection/to LDZ2 #0001 SUB2 select-to
&no-sl
DUP #84 NEQ ?&no-sr
.selection/to LDZ2 INC2 select-to
&no-sr
POP POP
.Controller/key DEI ;mem sput .Controller/key DEI insert
#00 ;on-frame/f STA #00 ;on-frame/f STA
redraw redraw
@ -144,6 +139,89 @@ BRK
BRK BRK
(
@|editor )
@erase-selection ( -- )
.selection/from LDZ2 get-eof .selection/length LDZ2 msfl
#0000 .selection/length LDZ2 SUB2
!mod-length
@insert ( char -- )
( move ) #fff0 get-eof SUB2 ORA ?&valid
POP JMP2r
&valid
( convert linebreaks )
DUP #0d EQU #03 MUL SUB
.selection/length LDZ2 #0001 EQU2 ?&no-block
erase-selection
&no-block
.selection/from LDZ2 STH2k #0001 SUB2 get-eof #0001 msfr
#0001 mod-length
STH2kr STA
STH2r INC2
!select-from
@erase ( -- )
.selection/length LDZ2 #0001 EQU2 ?&no-block
erase-selection
!reset-selection
&no-block
.selection/from LDZ2 ;mem NEQ2 [ JMP JMP2r ]
.selection/from LDZ2 #0001 SUB2
DUP2 cut-char
!select-from
@delete ( -- )
get-eof .selection/from LDZ2 SUB2 ORA #01 [ JCN JMP2r ]
.selection/length LDZ2 #0001 EQU2 ?&no-block
erase-selection
!reset-selection
&no-block
.selection/from LDZ2 cut-char
!redraw
@get-eof ( -- addr* )
#a000
JMP2r
@cut-char ( addr* -- )
get-eof #0001 msfl
#ffff
( >> )
@mod-length ( change* -- )
.textarea/length LDZ2 ADD2 .textarea/length STZ2
JMP2r
@reset-selection ( -- )
.selection/from LDZ2 select-from
redraw
JMP2r
( (
@|core ) @|core )
@ -222,6 +300,8 @@ JMP2r
DUP2 .selection/from STZ2 DUP2 .selection/from STZ2
.selection/to STZ2 .selection/to STZ2
.selection/to LDZ2 .selection/from LDZ2 SUB2 .selection/length STZ2
redraw redraw
JMP2r JMP2r
@ -369,6 +449,9 @@ JMP2r
JMP2r JMP2r
@msfl ( b* a* len* -- ) STH2 SWP2 EQU2k ?&e &l DUP2k STH2kr ADD2 LDA ROT ROT STA INC2 GTH2k ?&l POP2 POP2 &e POP2r JMP2r
@msfr ( b* a* len* -- ) STH2 EQU2k ?&e &l DUP2 LDAk ROT ROT STH2kr ADD2 STA #0001 SUB2 LTH2k ?&l POP2 POP2 &e POP2r JMP2r
@scap ( str* -- end* ) LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r @scap ( str* -- end* ) LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r
@sput ( chr str* -- ) scap INC2k #00 ROT ROT STA STA JMP2r @sput ( chr str* -- ) scap INC2k #00 ROT ROT STA STA JMP2r
@ -560,6 +643,7 @@ JMP2r
"Keep 20 "up 20 "to 20 "eight 20 "pages 20 "of 20 "notes 20 "in 20 "the 20 "Note 20 "Pad. 20 "Keep 20 "up 20 "to 20 "eight 20 "pages 20 "of 20 "notes 20 "in 20 "the 20 "Note 20 "Pad. 20
"Click 20 "on 20 "the 20 "dog-ear 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "following 20 "page. 20 "Click 20 "on 20 "the 20 "dog-ear 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "following 20 "page. 20
"Click 20 "in 20 "the 20 "lower 20 "left 20 "corner 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "previous 20 "page. "Click 20 "in 20 "the 20 "lower 20 "left 20 "corner 20 "to 20 "turn 20 "to 20 "the 20 "next 20 "previous 20 "page.
$1 &end
|a000 "The 20 "other 20 "page. |a000 "The 20 "other 20 "page.