diff --git a/src/nasu.tal b/src/nasu.tal index 504aac2..c5c68d3 100644 --- a/src/nasu.tal +++ b/src/nasu.tal @@ -79,8 +79,9 @@ BRK 00 00 =file-save-mono "SaveMono $1 01 "p =save-theme "SaveTheme $1 01 "q =exit "Exit $1 - 04 "Edit $1 - 01 "c =edit-copy "Copy $1 + 05 "Edit $1 + 01 "c =edit-copy-chr "Copy $1 + 05 "C =edit-copy-icn "CopyMono $1 01 "v =edit-paste "Paste $1 01 "x =edit-cut "Cut $1 00 08 =edit-erase "Erase $1 @@ -1095,6 +1096,59 @@ JMP2r JMP2r +@draw-frame ( w h chr* -- ) + + STH2 ,&h STR ,&w STR + .Screen/x DEI2 DUP2 #0008 SUB2 .Screen/x DEO2 + .Screen/y DEI2 #0008 SUB2 DUP2 .Screen/y DEO2 + ( ul ) #00 STH2kr #05 ,&single JSR + ( uu ) [ LIT &w $1 ] #00 STH2kr #0010 ADD2 #01 ,&repeat JSR + ( ur ) #10 STH2kr #06 ,&single JSR + ( rr ) [ LIT &h $1 ] #00 STH2kr #0020 ADD2 #02 ,&repeat JSR + #0008 ADD2 .Screen/y DEO2 + #0008 SUB2 .Screen/x DEO2 + ( ll ) ,&h LDR #10 STH2kr #0020 ADD2 #02 ,&repeat JSR + ( dl ) #20 STH2kr #01 ,&single JSR + ( bb ) ,&w LDR #20 STH2kr #0010 ADD2 #01 ,&repeat JSR + ( dr ) #30 STH2r #00 ,&single ( .. ) + +JMP + &repeat ( times color addr* auto -- ) + .Screen/auto DEO + .Screen/addr DEO2 + STH + #00 &l STHkr ,&paint JSR INC GTHk ,&l JCN POP2 + POPr + JMP2r + &single ( color addr* auto -- ) + .Screen/auto DEO + .Screen/addr DEO2 + &paint ( mask -- ) + [ LIT &color 8a ] SWP ORA .Screen/sprite DEO + JMP2r + +@line-hor-dashed ( x* y* color -- ) + + STH .Screen/y DEO2 .Screen/x DEO2 + ;&sprite .Screen/addr DEO2 + #f2 .Screen/auto DEO + STHr .Screen/sprite DEO + #01 .Screen/auto DEO + +JMP2r + &sprite aa00 0000 0000 0000 + +@line-ver-dashed ( x* y* color -- ) + + STH .Screen/y DEO2 .Screen/x DEO2 + ;&sprite .Screen/addr DEO2 + #f1 .Screen/auto DEO + STHr .Screen/sprite DEO + #01 .Screen/auto DEO + +JMP2r + &sprite 8000 8000 8000 8000 + ( @|options ) @@ -1197,15 +1251,26 @@ JMP2r @snarf-txt ".snarf $1 +@edit-copy-icn ( -- ) + + #0008 ;edit-copy/mode STA2 + ,edit-copy ( .. ) + +JMP + +@edit-copy-chr ( -- ) + + #0010 ;edit-copy/mode STA2 + @edit-copy ( -- ) ;snarf-txt .File/name DEO2 - #0010 .File/length DEO2 + ,&mode LDR2 .File/length DEO2 .selection/y2 LDZ INC .selection/y1 LDZ &ver .selection/x2 LDZ INC .selection/x1 LDZ &hor - OVR2 NIP OVR SWP ;get-tile-addr JSR2 ;&buf #0010 ;mcpy JSR2 + OVR2 NIP OVR SWP ;get-tile-addr JSR2 ;&buf [ LIT2 &mode $2 ] ;mcpy JSR2 ;&buf .File/write DEO2 INC GTHk ,&hor JCN POP2 @@ -1313,59 +1378,6 @@ JMP2r JMP2r -@draw-frame ( w h chr* -- ) - - STH2 ,&h STR ,&w STR - .Screen/x DEI2 DUP2 #0008 SUB2 .Screen/x DEO2 - .Screen/y DEI2 #0008 SUB2 DUP2 .Screen/y DEO2 - ( ul ) #00 STH2kr #05 ,&single JSR - ( uu ) [ LIT &w $1 ] #00 STH2kr #0010 ADD2 #01 ,&repeat JSR - ( ur ) #10 STH2kr #06 ,&single JSR - ( rr ) [ LIT &h $1 ] #00 STH2kr #0020 ADD2 #02 ,&repeat JSR - #0008 ADD2 .Screen/y DEO2 - #0008 SUB2 .Screen/x DEO2 - ( ll ) ,&h LDR #10 STH2kr #0020 ADD2 #02 ,&repeat JSR - ( dl ) #20 STH2kr #01 ,&single JSR - ( bb ) ,&w LDR #20 STH2kr #0010 ADD2 #01 ,&repeat JSR - ( dr ) #30 STH2r #00 ,&single ( .. ) - -JMP - &repeat ( times color addr* auto -- ) - .Screen/auto DEO - .Screen/addr DEO2 - STH - #00 &l STHkr ,&paint JSR INC GTHk ,&l JCN POP2 - POPr - JMP2r - &single ( color addr* auto -- ) - .Screen/auto DEO - .Screen/addr DEO2 - &paint ( mask -- ) - [ LIT &color 8a ] SWP ORA .Screen/sprite DEO - JMP2r - -@line-hor-dashed ( x* y* color -- ) - - STH .Screen/y DEO2 .Screen/x DEO2 - ;&sprite .Screen/addr DEO2 - #f2 .Screen/auto DEO - STHr .Screen/sprite DEO - #01 .Screen/auto DEO - -JMP2r - &sprite aa00 0000 0000 0000 - -@line-ver-dashed ( x* y* color -- ) - - STH .Screen/y DEO2 .Screen/x DEO2 - ;&sprite .Screen/addr DEO2 - #f1 .Screen/auto DEO - STHr .Screen/sprite DEO - #01 .Screen/auto DEO - -JMP2r - &sprite 8000 8000 8000 8000 - ( @|stdlib )