diff --git a/src/left.tal b/src/left.tal index b608fae..26f1b06 100644 --- a/src/left.tal +++ b/src/left.tal @@ -375,20 +375,20 @@ @ ( c addr* -- ) DUP2 #0001 STA - #0001 !mod-length + #0001 ! @ ( addr* -- ) #0001 #ffff ( >> ) -@mod-length ( change* -- ) +@ ( change* -- ) .textarea/length LDZ2 ADD2 .textarea/length STZ2 reqdraw-textarea reqdraw-navbar #0a ! @erase-selection ( -- ) get-from get-length STH2k - update-nav #0000 STH2r SUB2 !mod-length + update-nav #0000 STH2r SUB2 ! @join-spaces ( addr* -- addr* ) [ LIT2r 0000 ] @@ -1052,19 +1052,8 @@ @file-open-binary ( path* -- ) .File/name DEO2 - #0001 .textarea/length STZ2 #0001 .File/length DEO2 - #0000 [ LIT2r =text ] - &s ( -- ) - ;&b feof? ?{ - [ LIT &b $1 ] STH2kr INC2r INC2r - INC2 - ( | format ) - DUP #01 AND ?&s - DUP #0f AND #00 NEQ #16 MUL #0a ADD STH2kr INC2r STA !&s } - POP2 - ( | set length ) - STH2r ;text SUB2 .textarea/length STZ2 + ;text inject-binary ;text SUB2 .textarea/length STZ2 ( | continue ) [ LIT2 01 -textarea/highlight ] STZ select-reset #01 @@ -1111,14 +1100,15 @@ ( | erase when selection length ) has-empty? ?{ erase-selection } ( push right ) get-from STH2kr - STH2kr mod-length get-from .File/read DEO2 + STH2kr + get-from .File/read DEO2 get-from STH2r ADD2 ! @file-inject-binary ( name* -- ) - DUP2 .File/name DEO2 - DUP2 file-size - #0a18 DEO - POP2 JMP2r + get-from STH2k OVR2 file-size DUP2 ADD2 DUP2 #02 SFT2 ADD2 + .File/name DEO2 + #0001 .File/length DEO2 + STH2r inject-binary DUP2 get-from SUB2 ! @file-detect ( -- ) file-is-dir? ?&dir @@ -1159,6 +1149,18 @@ .File/read DEO2 .File/success DEI2 #0000 EQU2 JMP2r +@inject-binary ( addr* -- addr* ) + STH2 + #0000 + &s ( -- ) + ;&b feof? ?{ + [ LIT &b $1 ] STH2kr INC2r INC2r + INC2 + ( | format ) + DUP #01 AND ?&s + DUP #0f AND #00 NEQ #16 MUL #0a ADD STH2kr INC2r STA !&s } + POP2 STH2r JMP2r + ( @|edit )