diff --git a/src/manifest.tal b/src/manifest.tal index 7e0cb83..77d25bc 100644 --- a/src/manifest.tal +++ b/src/manifest.tal @@ -6,53 +6,53 @@ ;on-mouse-menu .Mouse/vector DEO2 ;on-control-menu .Controller/vector DEO2 - #40 ;draw-cursor JSR2 + #40 draw-cursor BRK @on-mouse-menu ( -> ) - #42 .Mouse/state DEI #00 NEQ ADD ;hand-icn ;update-cursor JSR2 + #42 .Mouse/state DEI #00 NEQ ADD ;hand-icn update-cursor ( when touch cat ) - .Mouse/state DEI #00 EQU ,&no-touch-cat JCN - .Mouse/y DEI2 #000c GTH2 ,&no-touch-cat JCN - .Mouse/x DEI2 ;get-xcat JSR2 ;menu-select JSR2 + .Mouse/state DEI #00 EQU ?&no-touch-cat + .Mouse/y DEI2 #000c GTH2 ?&no-touch-cat + .Mouse/x DEI2 get-xcat menu-select ( release ) #00 .Mouse/state DEO BRK &no-touch-cat ( when sub active ) - ;draw-menu/sel LDA #ff EQU ,&no-sub JCN + ;draw-menu/sel LDA #ff EQU ?&no-sub ( when sel changed ) .Mouse/y DEI2 #0004 SUB2 #03 SFT2 NIP #01 SUB - DUP ;draw-sub/sel LDA EQU ,&no-change JCN + DUP ;draw-sub/sel LDA EQU ?&no-change DUP ;draw-sub/sel STA - ;draw-menu/sel LDA #ff ;draw-sub JSR2 + ;draw-menu/sel LDA #ff draw-sub &no-change POP ( when touch sub ) - .Mouse/state DEI #00 EQU ,&no-touch-sub JCN - ;draw-sub/sel LDA ;menu-select-sub JSR2 + .Mouse/state DEI #00 EQU ?&no-touch-sub + ;draw-sub/sel LDA menu-select-sub ( release ) #00 .Mouse/state DEO &no-touch-sub BRK &no-sub ( do not leave if menu is active ) - ;draw-menu/sel LDA INC ,&no-leave JCN - .Mouse/y DEI2 #000c LTH2 ,&no-leave JCN - ,menu-close JSR + ;draw-menu/sel LDA INC ?&no-leave + .Mouse/y DEI2 #000c LTH2 ?&no-leave + menu-close &no-leave BRK @menu-close ( -- ) - ;untrap JSR2 + untrap ;draw-menu/sel LDA - DUP #ff EQU ,&no-clear JCN - DUP #00 ;draw-sub JSR2 + DUP #ff EQU ?&no-clear + DUP #00 draw-sub #ff ;draw-menu/sel STA - ;redraw-all JSR2 - ;draw-menu JSR2 + redraw-all + draw-menu &no-clear POP @@ -61,35 +61,34 @@ JMP2r @menu-select ( cat -- ) ( exists ) - DUP ;get-cat JSR2 ORA ,&exists JCN + DUP get-cat ORA ?&exists POP JMP2r &exists ( clear ) ;draw-menu/sel LDA - ( unchanged ) EQUk ,menu-deselect JCN - ( unselected ) DUP #ff EQU ,&no-clear JCN - DUP #00 ;draw-sub JSR2 + ( unchanged ) EQUk ?menu-deselect + ( unselected ) DUP #ff EQU ?&no-clear + DUP #00 draw-sub &no-clear POP ( draw ) - ;redraw-all JSR2 + redraw-all #ff ;draw-sub/sel STA DUP ;draw-menu/sel STA - #ff ;draw-sub JSR2 - ;draw-menu ( .. ) + #ff draw-sub -JMP2 +!draw-menu @menu-deselect ( cat cat -- ) - POP2 ;menu-close ( .. ) + POP2 -JMP2 +!menu-close @menu-select-sub ( sub -- ) - ;get-sub JSR2 - ;menu-close JSR2 + get-sub + menu-close ORAk ROT ROT JCN2 JMP2r @@ -106,10 +105,10 @@ BRK #00 ,&id STR ;draw-menu/manifest LDA2 &cat - [ LIT &id 00 ] STHkr EQU ,&end JCN - ;skip-sub JSR2 + [ LIT &id 00 ] STHkr EQU ?&end + skip-sub ,&id LDR INC ,&id STR - LDAk ,&cat JCN + LDAk ?&cat POP2 #0000 &end @@ -120,13 +119,13 @@ JMP2r @get-sub ( sub -- sub* ) STH - ;draw-menu/sel LDA ;get-cat JSR2 - LDAk STH INC2 ;skip-str JSR2 + ;draw-menu/sel LDA get-cat + LDAk STH INC2 skip-str STHr #00 &subcat - DUP STHkr EQU ,&end JCN - SWP2 #0004 ADD2 ;skip-str JSR2 SWP2 - INC GTHk ,&subcat JCN + DUP STHkr EQU ?&end + SWP2 #0004 ADD2 skip-str SWP2 + INC GTHk ?&subcat POP2 POP2 ( TODO: merge tails ) POPr @@ -146,11 +145,11 @@ JMP2r #00 ,&id STR ;draw-menu/manifest LDA2 &cat - [ LIT &id 00 ] [ LIT &target $1 ] EQU ,&end JCN - INC2k ;get-strw JSR2 #0008 ADD2 STH2 ADD2r - ;skip-sub JSR2 + [ LIT &id 00 ] [ LIT &target $1 ] EQU ?&end + INC2k get-strw #0008 ADD2 STH2 ADD2r + skip-sub ,&id LDR INC ,&id STR - LDAk ,&cat JCN + LDAk ?&cat POP2 &end STH2r @@ -166,14 +165,14 @@ JMP2r #00 ,&id STR ;draw-menu/manifest LDA2 &cat - INC2k ;get-strw JSR2 #0008 ADD2 STH2r ADD2 - DUP2 [ LIT2 &target $2 ] LTH2 ,&continue JCN + INC2k get-strw #0008 ADD2 STH2r ADD2 + DUP2 [ LIT2 &target $2 ] LTH2 ?&continue POP2 POP2 [ LIT &id 00 ] JMP2r &continue STH2 - ;skip-sub JSR2 + skip-sub ,&id LDR INC ,&id STR - LDAk ,&cat JCN + LDAk ?&cat POP2 POP2r #ff @@ -182,21 +181,21 @@ JMP2r @find-modkey ( mod key -- fn* ) - ORAk ,&no-null JCN JMP2r &no-null + ORAk ?&no-null JMP2r &no-null ( not null ) ,&mk STR2 ;draw-menu/manifest LDA2 &cat - LDAk STH INC2 ,skip-str JSR + LDAk STH INC2 skip-str STHr #00 &subcat - OVR2 LDA2 [ LIT2 &mk $2 ] NEQ2 ,&continue JCN + OVR2 LDA2 [ LIT2 &mk $2 ] NEQ2 ?&continue POP2 INC2 INC2 LDA2 JMP2r &continue - SWP2 #0004 ADD2 ,skip-str JSR SWP2 - INC GTHk ,&subcat JCN + SWP2 #0004 ADD2 skip-str SWP2 + INC GTHk ?&subcat POP2 - LDAk ,&cat JCN + LDAk ?&cat POP2 #0000 @@ -204,18 +203,18 @@ JMP2r @skip-sub ( sub* -- sub* ) - LDAk STH INC2 ;skip-str JSR2 + LDAk STH INC2 skip-str STHr #00 &subcat - SWP2 #0004 ADD2 ,skip-str JSR SWP2 - INC GTHk ,&subcat JCN + SWP2 #0004 ADD2 skip-str SWP2 + INC GTHk ?&subcat POP2 JMP2r @skip-str ( str* -- str* ) - &skip INC2 LDAk ,&skip JCN INC2 + &skip INC2 LDAk ?&skip INC2 JMP2r @@ -227,10 +226,10 @@ JMP2r [ LIT2 &manifest =manifest ] &cat ( theme ) #0b03 [ LIT &sel ff ] [ LIT &id $1 ] EQU [ JMP SWP POP ] ;draw-chr/color STA - INC2k ;draw-str JSR2 POP2 #20 ;draw-chr JSR2 - ;skip-sub JSR2 + INC2k draw-str POP2 #20 draw-chr + skip-sub ,&id LDR INC ,&id STR - LDAk ,&cat JCN + LDAk ?&cat POP2 JMP2r @@ -238,17 +237,17 @@ JMP2r @draw-sub ( cat mask -- ) ,&mask STR POP - ;draw-menu/sel LDA ;get-cat JSR2 - ORAk #00 EQU ,&skip JCN - ;draw-menu/sel LDA ;get-catx JSR2 ,&anchor STR2 - LDAk STH INC2 ;skip-str JSR2 + ;draw-menu/sel LDA get-cat + ORAk #00 EQU ?&skip + ;draw-menu/sel LDA get-catx ,&anchor STR2 + LDAk STH INC2 skip-str STHr #00 &subcat ( theme ) STHk #070b STHr [ LIT &sel ff ] EQU [ JMP SWP POP ] [ LIT &mask $1 ] AND ;draw-chr/color STA [ LIT2 &anchor $2 ] .Screen/x DEO2 #00 OVR INC #30 SFT2 #0004 ADD2 .Screen/y DEO2 - SWP2 ;draw-label JSR2 SWP2 - INC GTHk ,&subcat JCN + SWP2 draw-label SWP2 + INC GTHk ?&subcat POP2 POP2 &skip POP2 @@ -267,36 +266,36 @@ JMP2r .Screen/y DEO2 ( mod ) STH2k #0078 ADD2 .Screen/x DEO2 - LDA2k ;get-modkey-str JSR2 ;draw-str-right JSR2 POP2 + LDA2k get-modkey-str draw-str-right POP2 STH2r .Screen/x DEO2 - #0004 ADD2 ;draw-str ( .. ) + #0004 ADD2 -JMP2 +!draw-str @get-modkey-str ( mod key -- str* ) - ;&buf #0008 ;mclr JSR2 + ;&buf #0008 mclr ( mod ) SWP STH #0800 &loop - STHkr OVR SFT #01 AND #00 EQU ,&no-button JCN - #00 OVR ;&buttons ADD2 LDA ;&buf ;sput JSR2 + STHkr OVR SFT #01 AND #00 EQU ?&no-button + #00 OVR ;&buttons ADD2 LDA ;&buf sput &no-button - INC GTHk ,&loop JCN + INC GTHk ?&loop POP2 ( mix ) - DUP #00 NEQ STHr #00 NEQ #0101 NEQ2 ,&no-mod JCN - LIT "+ ;&buf ;sput JSR2 + DUP #00 NEQ STHr #00 NEQ #0101 NEQ2 ?&no-mod + LIT "+ ;&buf sput &no-mod ( key ) - DUP #08 NEQ ,&no-bsp JCN ;&bsp ,&cat JMP &no-bsp - DUP #09 NEQ ,&no-tab JCN ;&tab ,&cat JMP &no-tab - DUP #0d NEQ ,&no-ent JCN ;&ent ,&cat JMP &no-ent - DUP #20 NEQ ,&no-spc JCN ;&spc ,&cat JMP &no-spc - DUP #1b NEQ ,&no-esc JCN ;&esc ,&cat JMP &no-esc - DUP #7f NEQ ,&no-del JCN ;&del ,&cat JMP &no-del - DUP ;&buf ;sput JSR2 + DUP #08 NEQ ?&no-bsp ;&bsp !&cat &no-bsp + DUP #09 NEQ ?&no-tab ;&tab !&cat &no-tab + DUP #0d NEQ ?&no-ent ;&ent !&cat &no-ent + DUP #20 NEQ ?&no-spc ;&spc !&cat &no-spc + DUP #1b NEQ ?&no-esc ;&esc !&cat &no-esc + DUP #7f NEQ ?&no-del ;&del !&cat &no-del + DUP ;&buf sput &end POP ;&buf @@ -304,13 +303,13 @@ JMP2 JMP2r &buf $8 &buttons "ABsSUDLR $1 - &cat ;&buf ;scat JSR2 ,&end JMP + &cat ;&buf scat ,&end JMP &bsp "bsp $1 &tab "tab $1 &ent "ent $1 &spc "spc $1 &esc "esc $1 &del "del $1 @update-cursor ( color addr* -- ) #00 .Screen/auto DEO - #40 ,draw-cursor JSR + #40 draw-cursor .Mouse/x DEI2 DUP2 .cursor/x STZ2 .Screen/x DEO2 .Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2 .Screen/addr DEO2 @@ -331,39 +330,38 @@ JMP2r @about &on-mouse ( -> ) - .Mouse/state DEI ,&on-control JCN + .Mouse/state DEI ?&on-control BRK &on-control ( -> ) ,&hide JSR BRK &toggle ( -- ) - [ LIT &active 00 ] ,&hide JCN + [ LIT &active 00 ] ?&hide #01 ,&active STR - ;draw-about JSR2 + draw-about ;&on-mouse .Mouse/vector DEO2 ;&on-control .Controller/vector DEO2 JMP2r &hide ( -- ) #00 ,&active STR - ;clear-about JSR2 - ;untrap ( .. ) -JMP2 + clear-about +!untrap @draw-about ( -- ) ( frame ) .Screen/width DEI2 #01 SFT2 #0070 SUB2 STH2k .Screen/x DEO2 .Screen/height DEI2 #01 SFT2 #0010 SUB2 STH2k .Screen/y DEO2 - #1c06 ;frame1-chr ;draw-frame JSR2 + #1c06 ;frame1-chr draw-frame ( fill ) STH2r .Screen/y DEO2 STH2r .Screen/x DEO2 - #1c #0351 ;fill-icn ;draw-fill-fast JSR2 + #1c #0351 ;fill-icn draw-fill-fast .Screen/x DEI2k #00e0 SUB2 ROT DEO2 ( icon ) .Screen/x DEI2k #0008 ADD2 ROT DEO2 .Screen/y DEI2k #000c ADD2 ROT DEO2 - #03 #8526 ;appicon ;draw-fill-fast JSR2 + #03 #8526 ;appicon draw-fill-fast .Screen/x DEI2k #0020 ADD2 ROT DEO2 .Screen/y DEI2k #001c SUB2 ROT DEO2 #0a ;draw-chr/color STA @@ -374,14 +372,14 @@ JMP2 #01 .Screen/auto DEO .Screen/x DEI2 ,&anchor STR2 &w - LDAk #20 LTH ,&no-char JCN - LDAk ;draw-chr JSR2 + LDAk #20 LTH ?&no-char + LDAk draw-chr &no-char - LDAk #0a NEQ ,&no-lb JCN + LDAk #0a NEQ ?&no-lb [ LIT2 &anchor $2 ] .Screen/x DEO2 - ,draw-lb JSR + draw-lb &no-lb - INC2 LDAk ,&w JCN + INC2 LDAk ?&w POP2 JMP2r @@ -396,11 +394,9 @@ JMP2r .Screen/width DEI2 #01 SFT2 #0088 SUB2 .Screen/x DEO2 .Screen/height DEI2 #01 SFT2 #0028 SUB2 .Screen/y DEO2 - #22 #0091 ;draw-fill-fast/blank JSR2 - ;redraw-all JSR2 - ;draw-menu ( .. ) - -JMP2 + #22 #0091 draw-fill-fast/blank + redraw-all + !draw-menu ( @|theme ) @@ -412,7 +408,7 @@ JMP2 ;&r .File/read DEO2 ;&g .File/read DEO2 ;&b .File/read DEO2 - .File/success DEI2 ORA #01 JCN JMP2r + .File/success DEI2 ORA #01 [ JCN JMP2r ] LIT2 &r $2 .System/r DEO2 LIT2 &g $2 .System/g DEO2 LIT2 &b $2 .System/b DEO2 @@ -422,7 +418,7 @@ JMP2r ( stdlib ) -@scap ( str* -- end* ) LDAk #00 NEQ JMP JMP2r &w INC2 LDAk ,&w JCN JMP2r +@scap ( str* -- end* ) LDAk #00 NEQ JMP JMP2r &w INC2 LDAk ?&w JMP2r @spop ( str* -- ) LDAk ,&n JCN POP2 JMP2r &n ,scap JSR #0001 SUB2 #00 ROT ROT STA JMP2r @sput ( chr str* -- ) ,scap JSR INC2k #00 ROT ROT STA STA JMP2r @slen ( str* -- len* ) DUP2 ,scap JSR SWP2 SUB2 JMP2r @@ -432,8 +428,8 @@ JMP2r @phex ( short* -- ) - SWP ,&b JSR - &b ( byte -- ) DUP #04 SFT ,&c JSR + SWP phex/b + &b ( byte -- ) DUP #04 SFT phex/b &c ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r @@ -446,9 +442,9 @@ JMP2r ( assets ) -@hand-icn - 2020 20b8 7c7c 3838 -@blank-icn - 0000 0000 0000 0000 +@hand-icn [ + 2020 20b8 7c7c 3838 ] +@blank-icn [ + 0000 0000 0000 0000 ] ~src/assets.tal diff --git a/src/nasu.tal b/src/nasu.tal index 25c042e..0a2b991 100644 --- a/src/nasu.tal +++ b/src/nasu.tal @@ -71,7 +71,7 @@ BRK ( name ) "Nasu 0a ( details ) "A 20 "Sprite 20 "Editor 0a ( author ) "By 20 "Hundred 20 "Rabbits 0a - ( date ) "May 20 "21, 20 "2023 00 + ( date ) "June 20 "7, 20 "2023 00 02 ( icon ) 83 =appicon ( mask ) 41 1705