From c31f4588d2b2b89dd8b0f749efd9cc3c2fea48ed Mon Sep 17 00:00:00 2001 From: glenda Date: Sun, 9 Mar 2025 03:09:52 +0000 Subject: [PATCH] nanpa basics --- arvelie.rom | Bin 0 -> 71 bytes arvelie.rom.sym | Bin 0 -> 289 bytes mkfile | 3 +- nanpa.rom | Bin 0 -> 408 bytes nanpa.rom.sym | Bin 0 -> 657 bytes nanpa.tal | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 arvelie.rom create mode 100644 arvelie.rom.sym create mode 100644 nanpa.rom create mode 100644 nanpa.rom.sym create mode 100644 nanpa.tal diff --git a/arvelie.rom b/arvelie.rom new file mode 100644 index 0000000000000000000000000000000000000000..3737b8de49a416aeb2b165ec990713e9a73d9d7d GIT binary patch literal 71 zcmZoTV77q$r6qF$gFwRxvj)D|YzYiq1U-Tm2+e~AY+gxHOV8#;{Kti7GF21Y%{TLY2BS3_ z$2$U|5_>8=TVVW)ge9qfNyKKLX{63-AGT+a$=YH0xRIW=x(-p2q9+-mQ;bB-##g{O z8A|rRC1J&Fn7<~jwP}ZEx8yh~*@QaxX1|VekL| literal 0 HcmV?d00001 diff --git a/mkfile b/mkfile index 2ad56c9804975ae6d7cba8d6ce7b5831899957ec..384ba715c6b10b8832991e71bfe94ad20c8fb941 100644 --- a/mkfile +++ b/mkfile @@ -1,5 +1,6 @@ roms=\ - arvelie.rom + arvelie.rom\ + nanpa.rom all:VQ: $roms diff --git a/nanpa.rom b/nanpa.rom new file mode 100644 index 0000000000000000000000000000000000000000..63f9e225999c5651e13ce88c04ab43e06ae10fe6 GIT binary patch literal 408 zcmYL@u};H442GRc8%U}uK@6lQQcp;v0}Sm1bcw{q#4Fs9M)azXpfm#74tVSaBN7ri ziO1kE7Hz)Ok-*0&H`LcWEjg|NxNruYeg z0@gnv{wlz_7c9fsIs~VGj)rf!ShM-!{d8{)4AG6u3g=*t&Q>evMIkn$>drszaEZfi zv|`nX_3_Jc1Nyna!NiV_UBCL?4OWgFCqV^;A5&U# AYXATM literal 0 HcmV?d00001 diff --git a/nanpa.rom.sym b/nanpa.rom.sym new file mode 100644 index 0000000000000000000000000000000000000000..8638665c94d67980642ffc9114aacd87f434ee54 GIT binary patch literal 657 zcmY+AJx;_h5QU!y*c!17P}8C;|4TtdMT3x_q;V3nYm~Jk$IIUZKva7OP62nIMdBJ< zfJtH}P|dve&5W&w)l+LKTPPrQ$(_o)b--FciBmEMhEbNaT94}9Y0ujmQ7h-_Wn6k$ z`)y4srObs>H~Ik(4NA;>cJ)~D2z5GDyt&j$z5^_G{pnP)Ub!jc1Q=v?Zag19k2hkM zA%0rxZRe3X?L0p$k8_$~%x@qIS zc>eqtjUZnCx=CSe3Gv2g2jaa!?JvX^d%F)t4d91zJ<%RCWP2a9+1P28 z2YahYxdMeIDcfvm%<~7Jam$0f3p!)}kW28D$!xC81a!;bh)Z<%X5V*dQpICqP}Plv gSm}wuG3coW|MI05<`VSM^AI#Gn53XZPrOX=3w2c8Q~&?~ literal 0 HcmV?d00001 diff --git a/nanpa.tal b/nanpa.tal new file mode 100644 index 0000000000000000000000000000000000000000..7507a00ae8104761f22179ce8ff9403ecd8d71cf --- /dev/null +++ b/nanpa.tal @@ -0,0 +1,98 @@ +|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 + +|0 @State &seenPrefix $1 &numType $1 &number $1 &err $1 &errChar $1 + @flag $1 @count $1 + +|0 @NumType &decimal $1 &octal $1 &hexcadecimal $1 &binary + + +|100 +@on-reset ( -> ) + #ffff testnum + #efff testnum + #8fff testnum + #7fff testnum + #3fff testnum + #2710 testnum + #0fff testnum + #03e8 testnum + #01f4 testnum + #000b testnum + BRK + +@testnum ( num* -- ) + DUP2 printoctal + #09 .Console/write DEO + DUP2 printdecimal + #09 .Console/write DEO + SWP printhex printhex + #0a .Console/write DEO + JMP2r + +@printhex ( num -- ) + #10 DIVk DUP printhexdigit + MUL SUB printhexdigit + JMP2r + +@printdecimal ( num* -- ) + #01 .flag STZ + #00 STH ( return stack is loop counter ) + #2710 DIV2k DUP2 NIP DUP #00 EQU ?{ + DUP printbcddigit + #00 .flag STZ + } POP + MUL2 SUB2 + &loop + #03e8 DIV2k DUP2 NIP ( get 1000s place ) + DUP #00 EQU .flag LDZ AND ?{ ( if flag || s != 0 ) + DUP printbcddigit + #00 .flag STZ + } POP + MUL2 SUB2 #000a MUL2 ( DUP2 SWP printhex printhex ) + STHr #01 ADD DUP STH #04 NEQ + ( end ) ?&loop + POPr POP2 JMP2r + +@printoctal ( num* -- ) + #01 .flag STZ + #00 STH ( return stack is loop counter ) + DUP2 #0f SFT2 NIP #00 EQU ?{ + #31 .Console/write DEO + #00 .flag STZ + } + #10 SFT2 + &loop + DUP2 #0d SFT2 NIP ( get top 3 bits ) + DUP #00 EQU .flag LDZ AND ?{ ( if flag || s != 0 ) + DUP printbcddigit + #00 .flag STZ + } POP + #30 SFT2 + STHr #01 ADD DUP STH #05 NEQ + ( end ) ?&loop + POPr POP2 JMP2r + +@printhexdigit ( digit -- ) + #0f AND + DUP #0a LTH ?{ #27 ADD } ( take top part, if 10-15 move to a-f ) + #30 ADD .Console/write DEO + JMP2r +@printbcddigit ( digit -- ) + #0f AND + #30 ADD .Console/write DEO + JMP2r + + + +@errors + &prefix ={ "error 20 "at 20 "position 20 } + &prefix2 ={ 20 "with 20 "encoding 20 } + &encoding ={ "character 20 "not 20 "valid 20 "in 20 "encoding } + +@encodings + &decimal ={ "decimal } + &octal ={ "octal } + &hexcadecimal ={ "hexcadecimal } + &binary ={ "binary } + &tab =&decimal =&octal =&hexcadecimal =&binary +