Browse Source

Minor opt

main
Devine Lu Linvega 3 years ago
parent
commit
b76aa9c8df
  1. 216
      src/manifest.tal
  2. 2
      src/nasu.tal

216
src/manifest.tal

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

2
src/nasu.tal

@ -71,7 +71,7 @@ BRK
( name ) "Nasu 0a ( name ) "Nasu 0a
( details ) "A 20 "Sprite 20 "Editor 0a ( details ) "A 20 "Sprite 20 "Editor 0a
( author ) "By 20 "Hundred 20 "Rabbits 0a ( author ) "By 20 "Hundred 20 "Rabbits 0a
( date ) "May 20 "21, 20 "2023 00 ( date ) "June 20 "7, 20 "2023 00
02 02
( icon ) 83 =appicon ( icon ) 83 =appicon
( mask ) 41 1705 ( mask ) 41 1705

Loading…
Cancel
Save