From bde89423b21bc01cf4e92dbd1bfa92099c110979 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Thu, 30 Jun 2022 09:53:43 -0700 Subject: [PATCH] Housekeeping --- src/manifest.tal | 274 ++++++++++++++++++----------------------------- src/nasu.tal | 2 +- 2 files changed, 105 insertions(+), 171 deletions(-) diff --git a/src/manifest.tal b/src/manifest.tal index 7582a5e..6cbdfad 100644 --- a/src/manifest.tal +++ b/src/manifest.tal @@ -156,6 +156,101 @@ JMP2r BRK +@get-cat ( cat -- cat* ) + + STH + #00 ,&id STR + ;manifest/menu + &cat + [ LIT &id 00 ] STHkr EQU ,&end JCN + ;skip-sub JSR2 + ,&id LDR INC ,&id STR + LDAk ,&cat JCN + POP2 + #0000 + &end + POPr + +JMP2r + +@get-sub ( sub -- sub* ) + + STH + ;draw-menu/sel LDA ;get-cat JSR2 + LDAk STH INC2 ;skip-str JSR2 + STHr #00 + &subcat + DUP STHkr EQU ,&end JCN + SWP2 #0004 ADD2 ;skip-str JSR2 SWP2 + INC GTHk ,&subcat JCN + POP2 POP2 + ( TODO: merge tails ) + POPr + #0000 + JMP2r + &end + POP2 + INC2 INC2 LDA2 + POPr + +JMP2r + +@get-anchor ( cat -- x* ) + + LIT2r 0000 + ,&target STR + #00 ,&id STR + ;manifest/menu + &cat + [ LIT &id 00 ] [ LIT &target $1 ] EQU ,&end JCN + INC2k ;slen JSR2 INC2 STH2 ADD2r + ;skip-sub JSR2 + ,&id LDR INC ,&id STR + LDAk ,&cat JCN + POP2 + &end + STH2r + INC2 INC2 #30 SFT2 + +JMP2r + +@find-modkey ( mod key -- fn* ) + + ,&mk STR2 + ;manifest/menu + &cat + LDAk STH INC2 ,skip-str JSR + STHr #00 + &subcat + OVR2 LDA2 [ LIT2 &mk $2 ] NEQ2 ,&continue JCN + POP2 INC2 INC2 LDA2 JMP2r + &continue + SWP2 #0004 ADD2 ,skip-str JSR SWP2 + INC GTHk ,&subcat JCN + POP2 + LDAk ,&cat JCN + POP2 + #0000 + +JMP2r + +@skip-sub ( sub* -- sub* ) + + LDAk STH INC2 ;skip-str JSR2 + STHr #00 + &subcat + SWP2 #0004 ADD2 ,skip-str JSR SWP2 + INC GTHk ,&subcat JCN + POP2 + +JMP2r + +@skip-str ( str* -- str* ) + + &skip INC2 LDAk ,&skip JCN INC2 + +JMP2r + @draw-menu ( -- ) #0010 .Screen/x DEO2 @@ -229,16 +324,6 @@ JMP2r JMP2r -@buttons-icns - 387c fefe fe7c 3800 - 3844 8282 8244 3800 - 1038 7cfe 7c38 1000 - 1028 4482 4428 1000 - 1038 7cfe 1010 1000 - 1010 10fe 7c38 1000 - 1030 70fe 7030 1000 - 1018 1cfe 1c18 1000 - @draw-key ( mod key -- ) ( key ) @@ -259,75 +344,6 @@ JMP2r &spc "spc $1 &esc "esc $1 -@get-cat ( cat -- cat* ) - - STH - #00 ,&id STR - ;manifest/menu - &cat - [ LIT &id 00 ] STHkr EQU ,&end JCN - ;skip-sub JSR2 - ,&id LDR INC ,&id STR - LDAk ,&cat JCN - POP2 - #0000 - &end - POPr - -JMP2r - -@get-sub ( sub -- sub* ) - - STH - ;draw-menu/sel LDA ;get-cat JSR2 - LDAk STH INC2 ;skip-str JSR2 - STHr #00 - &subcat - DUP STHkr EQU ,&end JCN - SWP2 #0004 ADD2 ;skip-str JSR2 SWP2 - INC GTHk ,&subcat JCN - POP2 POP2 - ( TODO: merge tails ) - POPr - #0000 - JMP2r - &end - POP2 - INC2 INC2 LDA2 - POPr - -JMP2r - -@skip-sub ( sub* -- sub* ) - - LDAk STH INC2 ;skip-str JSR2 - STHr #00 - &subcat - SWP2 #0004 ADD2 ;skip-str JSR2 SWP2 - INC GTHk ,&subcat JCN - POP2 - -JMP2r - -@get-anchor ( cat -- x* ) - - LIT2r 0000 - ,&target STR - #00 ,&id STR - ;manifest/menu - &cat - [ LIT &id 00 ] [ LIT &target $1 ] EQU ,&end JCN - INC2k ;slen JSR2 INC2 STH2 ADD2r - ;skip-sub JSR2 - ,&id LDR INC ,&id STR - LDAk ,&cat JCN - POP2 - &end - STH2r - INC2 INC2 #30 SFT2 - -JMP2r - @draw-str ( str* -- str* ) &while @@ -344,95 +360,13 @@ JMP2r JMP2r -@print-manifest ( -- ) - - ;manifest/name ;print-str JSR2 - LIT '( #18 DEO ;print-str JSR2 POP2 LIT ') #18 DEO - #0a18 DEOk DEO - ( menu ) - ;manifest/menu - &cat - LDAk STH INC2 ;print-str JSR2 #0a18 DEO - STHr #00 - &subcat - SWP2 - ( modkey ) #0918 DEO ;print-mod JSR2 ;print-key JSR2 - ( spacer ) #2018 DEOk LIT ': #18 DEO DEO - ( name ) INC2 INC2 ;print-str JSR2 #0a18 DEO - SWP2 - INC GTHk ,&subcat JCN - POP2 - LDAk ,&cat JCN - POP2 - -JMP2r - -@print-mod ( addr* -- addr* ) - - LDAk STH - #0800 - &loop - STHkr OVR SFT #01 AND #00 EQU ,&no-button JCN - #00 OVR ;&buttons ADD2 LDA #18 DEO - &no-button - INC GTHk ,&loop JCN - POP2 - POPr - INC2 - -JMP2r - &buttons - "ABsSUDLR $1 - -@print-key ( addr* -- addr* ) - - LDAk - DUP #08 NEQ ,&no-del JCN ;&del ,&inv JMP &no-del - DUP #09 NEQ ,&no-tab JCN ;&tab ,&inv JMP &no-tab - DUP #20 NEQ ,&no-spc JCN ;&spc ,&inv JMP &no-spc - DUP #1b NEQ ,&no-esc JCN ;&esc ,&inv JMP &no-esc - #18 DEO - INC2 - -JMP2r - &inv ROT POP ;print-str JSR2 POP2 INC2 JMP2r - &del "del $1 - &tab "tab $1 - &spc "spc $1 - &esc "esc $1 - -@print-str ( addr* -- addr* ) - - &while - LDAk #18 DEO - INC2 LDAk ,&while JCN - INC2 - -JMP2r - -@find-modkey ( mod key -- fn* ) - - ,&mk STR2 - ;manifest/menu - &cat - LDAk STH INC2 ,skip-str JSR - STHr #00 - &subcat - OVR2 LDA2 [ LIT2 &mk $2 ] NEQ2 ,&continue JCN - POP2 INC2 INC2 LDA2 JMP2r - &continue - SWP2 #0004 ADD2 ,skip-str JSR SWP2 - INC GTHk ,&subcat JCN - POP2 - LDAk ,&cat JCN - POP2 - #0000 - -JMP2r - -@skip-str ( str* -- str* ) - - &skip INC2 LDAk ,&skip JCN INC2 - -JMP2r +@buttons-icns + 387c fefe fe7c 3800 + 3844 8282 8244 3800 + 1038 7cfe 7c38 1000 + 1028 4482 4428 1000 + 1038 7cfe 1010 1000 + 1010 10fe 7c38 1000 + 1030 70fe 7030 1000 + 1018 1cfe 1c18 1000 diff --git a/src/nasu.tal b/src/nasu.tal index 9cc3c5a..c6a8516 100644 --- a/src/nasu.tal +++ b/src/nasu.tal @@ -44,7 +44,7 @@ #05cf .System/g DEO2 #0caf .System/b DEO2 ( size ) - #0120 .Screen/width DEO2 + #0122 .Screen/width DEO2 #0100 .Screen/height DEO2 ( vectors ) ;on-console .Console/vector DEO2