diff --git a/cli/uxndis/src/uxndis.tal b/cli/uxndis/src/uxndis.tal index 88843fd..a2b9a29 100644 --- a/cli/uxndis/src/uxndis.tal +++ b/cli/uxndis/src/uxndis.tal @@ -14,16 +14,31 @@ BRK @await-src ( -> ) - [ LIT2 04 -Console/type ] DEI NEQ ?{ + [ LIT2 04 -Console/type ] DEI NEQ ?{ + ;src + [ LIT ". ] src/ + [ LIT "s ] src/ + [ LIT "y ] src/ + [ LIT "m ] src/ + ;src + ( | print result ) + ,/ptr LDR2 ;rom + &>l ( -- ) + + INC2 GTH2k ?&>l + POP2 POP2 #010e DEO #800f DEO BRK } - .Console/read DEI [ LIT &ptr -src ] INCk ,&ptr STR - STZ + .Console/read DEI src/ BRK -@ ( -- ) - ( | load ) - ;src .File/name DEO2 +@src/ ( char -- ) + [ LIT &ptr -src ] INCk ,&ptr STR + STZ + JMP2r + +@ ( src* -- ) + .File/name DEO2 #0001 .File/length DEO2 &>stream ( -- ) ;&b .File/read DEO2 @@ -31,15 +46,22 @@ [ LIT &b $1 ] [ LIT2 &ptr =rom ] INC2k ,&ptr STR2 STA !&>stream } - ( | print ) - ,&ptr LDR2 ;rom - &>l ( -- ) - - INC2 GTH2k ?&>l - POP2 POP2 JMP2r + JMP2r + +@ ( src* -- ) + .File/name DEO2 + #4000 .File/length DEO2 + ;sym .File/read DEO2 + JMP2r @ ( addr* -- addr* ) - DUP2 ;rom SUB2 + ( ) DUP2 ;rom SUB2 + ( ) DUP2 #0100 ADD2 find-sym DUP2 #ffff EQU2 ?{ + [ LIT2 "@ 18 ] DEO + DUP2 + #0a18 DEO } + POP2 + ( ) #0a18 DEO JMP2r @@ -115,6 +137,14 @@ INC GTHk ?&>l POP2 JMP2r +@find-sym ( addr* -- sym* ) + ,&t STR2 + ;sym + &>w ( -- ) + LDA2k [ LIT2 &t $2 ] NEQ2 ?{ INC2 INC2 JMP2r } + INC2 INC2 scap/ INC2 INC2k INC2 LDA ?&>w + POP2 #ffff JMP2r + ( @|stdlib ) @@ -148,6 +178,10 @@ INC2 LDAk ? POP2 JMP2r +@scap ( str* -: end* ) + INC2 & LDAk ?scap + JMP2r + ( @|assets ) @@ -171,5 +205,7 @@ @dict &usage "usage: 20 "uxndis.rom 20 "input.rom 0a $1 -@rom +@rom $8000 + +@sym