~rabbits/nasu

bde89423b21bc01cf4e92dbd1bfa92099c110979 — Devine Lu Linvega 8 months ago 8c2ab7c
Housekeeping
2 files changed, 105 insertions(+), 171 deletions(-)

M src/manifest.tal
M src/nasu.tal
M src/manifest.tal => src/manifest.tal +104 -170
@@ 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


M src/nasu.tal => src/nasu.tal +1 -1
@@ 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