From 6dbf45c39c9650eb69c55a70aa4bdcf80353ddcb Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 21 May 2018 13:58:41 -0400 Subject: [PATCH] v0.70: disassembler, immediate mode VM ops - VM now prompts for filename to load bytecode from - Added new EightBall disassembler (`disass`), removed disassembly printout from compiler - Fixes to interpreter / compiler error reporting. Should no longer report completely incorrect line numbers! - Added new immediate mode VM instructions for load (`LDAWI`, `LDABI`, `LDRWI`, `LDRBI`), store (`STAWI`, `STABI`, `STRWI`, `STRBI`), and flow control (`JSRI`, `JMPI`, `BRCI`). Modified compiler to use these new instructions. This significantly improves code density and VM execution speed. --- 8ball20.prg | Bin 25731 -> 25448 bytes 8ball64.prg | Bin 25857 -> 25574 bytes 8ballvm20.prg | Bin 9379 -> 9874 bytes 8ballvm64.prg | Bin 9427 -> 9922 bytes Makefile | 12 +- disass | Bin 0 -> 17584 bytes disass.c | 282 +++++++++++++++++++++++++++++++++++++++++++++++ ebvm.system | Bin 9460 -> 9973 bytes eightball | Bin 68448 -> 68852 bytes eightball.c | 177 ++++++++++++++++++++--------- eightball.system | Bin 26396 -> 26095 bytes eightballutils.h | 2 +- eightballvm | Bin 23732 -> 28124 bytes eightballvm.c | 229 +++++++++++++++++++++++++++++--------- eightballvm.h | 74 ++----------- test.d64 | Bin 174848 -> 174848 bytes test.dsk | Bin 143360 -> 143360 bytes 17 files changed, 605 insertions(+), 171 deletions(-) create mode 100644 disass create mode 100644 disass.c diff --git a/8ball20.prg b/8ball20.prg index 719cda95a8c005b82f129b57b31285297e529323..beb50dfe77a0172004a9e775981e7f9bd7218a31 100644 GIT binary patch literal 25448 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
@(McK7k%2cY3FHNIS_ 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 diff --git a/8ball64.prg b/8ball64.prg index aa16f0586f31d1b09ee4767ae5dbafbd1433a100..8145304785c9534300baffa7e1f1b859a705f626 100644 GIT binary patch literal 25574 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 Gmj4BiCQFV0 literal 25857 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 v{J%+H#27W=4!4#LrBKF)Tj7gPJEdnj+}v(e$d diff --git a/8ballvm20.prg b/8ballvm20.prg index ddc45af0c57b6246799c5a958c9be15fb559ce43..0ca0e9346c92fd54369aa6908364e0bfc103b057 100644 GIT binary patch literal 9874 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 DZmW7* literal 9379 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 diff --git a/Makefile b/Makefile index d48f74d..484bc54 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ CC65BINDIR = $(CC65DIR)/bin CC65LIBDIR = $(CC65DIR)/lib APPLECMDR = ~/Desktop/Apple2/AppleCommander-1.3.5.jar -all: eightball eightballvm 8ball20.prg 8ballvm20.prg 8ball64.prg 8ballvm64.prg eightball.system ebvm.system test.d64 test.dsk +all: eightball eightballvm disass 8ball20.prg 8ballvm20.prg 8ball64.prg 8ballvm64.prg eightball.system ebvm.system test.d64 test.dsk clean: rm -f eightball eightballvm *.o 8ball20.* 8ball64.* eightball*.s eightball.system test.d64 *.map *.vice @@ -23,6 +23,10 @@ eightballvm.o: eightballvm.c eightballutils.h eightballvm.h # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] gcc -m32 -Wall -Wextra -g -c -o eightballvm.o eightballvm.c -lm +disass.o: disass.c eightballutils.h eightballvm.h + # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] + gcc -m32 -Wall -Wextra -g -c -o disass.o disass.c -lm + eightballutils.o: eightballutils.c eightballutils.h # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] gcc -m32 -Wall -Wextra -g -c -o eightballutils.o eightballutils.c -lm @@ -35,6 +39,10 @@ eightballvm: eightballvm.o eightballutils.o # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] gcc -m32 -Wall -Wextra -g -o eightballvm eightballvm.o eightballutils.o -lm +disass: disass.o eightballutils.o + # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] + gcc -m32 -Wall -Wextra -g -o disass disass.o eightballutils.o -lm + eightball_20.o: eightball.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t vic20 -D VIC20 -o eightball_20.s eightball.c $(CC65BINDIR)/ca65 -t vic20 eightball_20.s @@ -90,7 +98,7 @@ ebvm.system: eightballvm_a2e.o eightballutils_a2e.o $(CC65BINDIR)/ld65 -m 8ballvma2e.map -o ebvm.system -C apple2enh-system.cfg eightballvm_a2e.o eightballutils_a2e.o apple2enh-iobuf-0800.o $(CC65LIBDIR)/apple2enh.lib unittest.8bp: unittest.8b - tr {} [] unittest.8bp # ASCII -> PETSCII + tr {} [] unittest.8bp # ASCII -> PETSCII sieve4.8bp: sieve4.8b tr {} [] sieve4.8bp # ASCII -> PETSCII diff --git a/disass b/disass new file mode 100644 index 0000000000000000000000000000000000000000..549501f03d72d8a7bdb36ab0e32605a3917cd420 GIT binary patch literal 17584 zcmeHveR!1BnfH0-nIuCpB!M7=kLrLyK7>gK2#5&z1fmIyNf1$Sm}F*>fyqod9~i7| zgTV?LvyIkm-7RlRYu9&oFWt3kSG%qD3I-Kgx@Fa^Zne9#qB~UD*D4}a>b$?-Ip>)? z0lVGzy52wD_qsgfKKHrrbD#U1bDz)WoHKmBv3Z?g7{YR69yz5de&kXiM!X989Ka4k z=F51H;t1l8Af9jzG=b%^%FvCBENB3qV8!{~Oa)(`B7_A85J#}$Z$LcAiyZYMd(nz` zd--aR7lG+nzshK&qcR#?9F4@%ecoi;Tdm@lmhtO1ZicVy#JbQiEs7*<$M_#^Uj3cV z4qxePSpH`xC$IX^k#9fz(R#{G1W<>xl}C6Gl)T5Te`ADUyF<1)HyNROa+Ht>SJ-IA zud&f{5dMaZ_8?5K9ObXH2w>7J7tsC-=ouH#b1$GDx6vMiivUkgQnr~y%fqgnwC8f+ zZ`$Nfrh<`}Kb;H(ML6CYiivP29v0!QP^wcTQ;8@ziBJHMozZwQB>eu)zJNa*i3OsO zJ4jL+lmrqfe@`G16SpTKsgPLT+*DWZul6qSE*%T!LRHAQy~Q64B|=@1WGa+sZ>f*Q zW1;pyN0d6ddg3vy)2~E7QBd_^Q?|MT{h9wvfNEOWoYJ^Y<2yC(*LbhS`!v2!<6(^-)c7Hd4`_T)<8NvF z*BU>n@#7kQN8|5m{Itd+8Xwm9h{ne>KCbc08o#RX>l&ZX_@u@ejZbU*j>cy+KBw_{ zjl~k(o*KI}c57U!@f3~AHJ+uhN8<{O=WD!3<0_4pX?z;}Cm)^j9b!yWXNdEJI8W>r z;uvrNI_z;`O#UwuW3qge80*OE#ORPGh|!Zz5*G@QA;utY8#wLCm{721bm;;i1_!vX z+%uBO%RGX>z+u-dqrl2#pWsZHeVF~5F8eSFAi5bmbs`J*a4Bgl+&AC%WOr>=RUw`8*Vy8Jtxy8XmU(ji`W^8(>~Z}=x+K~A4z>?@a{#3gPqDY?|*aP^pqR2#|I9V9vvMXN?jq|8y$KQu_E&= znf|qTLTt7xSa4+jn{9{AIrfhZoOT|1`!eIze>s<$GWfu1s(dk3h$ivfkbMyf2e+L+ zI=cVt(9=)>B}kUpf^zQ}y%!85?*D#23MA6=1_x*glxNbwX?OOC1`wH_f1J%iN9HP| zcz%F_#zp$JouaKaDs>Dzd`qBuhQu3tJVU?*CRX`z-Xon}WW}N(x&j|1TlFng#%5(K4_b$T7I&{J@ zxVQXHWM;gYJ)z6u~ne7(GH8k)&axBq;59MIqj|t_jGoobg z%^2Kohf&UK`b_4--^s{*jqiO@bC*2X@}3&w``nI_rv}xqKNK0+(~n`EDGeXW6zqTY z&@WvJp51?B!SV1tBk75>u{SfpDvivgLFIzkbf3<5j^gApMN8Ap;r*pKORDx6YOZi% z1pdqYL$BQ-}O>7k69i;P~`xJN+?Sfzd0CdN6{65Bmq>@k~|Tt>CF z*70Ir$cfohdB@9iC>g7o<(X5kY~CH0S!=Z_{%R$~HQBaszoEH$BAhlRWR?5Sc!~GX zp-@|u8MX!$nb*&bJtx`%Iv$h`HwOt-J`gZ{>|Xy*?^ zY8J|Jc2(oaWElfPzN}19@}yW@nErvC^}GKLvAQFjwP zvYOjAh*rRLEj~h%sB5h!G>PllS_w_ayiNF8nX|8TL*q^G>o>qd<>0rptryqVHGl)Z zd81h65grdUUvTSE2lcby$wM7JI^xXvj0azSR?sCp^JWIFOE}7OWA?@c@o&x;*p5yh4!>jghYI zR9zq%^)y71fn+k&gF}>rXIGVXMOC4g-?^YJ-q8_R1Aia*W#C@}p9Aj07NHz#%_G1o zf&JLm+ys0KnCF#iu^&1B+y?wKa1i)7@L}Lt7`*%{r8Dkm6~>(|W2W2b+y}iL@c2bq zj`9uzi(=QhV)u0=MJZ>WSUcmIh1C^vO2MuH?1c=&bRIxE;2G2}1T1QcUH3TZCgwE^ zn2v4FjY7SY=|j}Vkg4SaVv{kiHl>gUY@UVA#FTawuw5oPTKk-(X9Q7;AhQ!?w#%5E zhSbAP!IOX_>^TH18r+6hUz+Dgi-r<2-Irf#I?{JK`VN6z3%&JF?15N0^c_PQc{XV) zUtCo|)?qbd{sS`A)N7O3p=D^l?U4C3WCrarj(cVK8Q+iio6yGG(d2aOkkQiq2N54e z{6E>_9sih1KZ5uy;(Nx$M{@Q#f%s}&Udw~ZW`rncC9uUT7M`UPig@sxqQjm4fwaYb$M{D$I14aHS0#h&%W zQ))+xOKYDmcGtd8?5cgP7z(L>FLWJ*E}&1{rxy6s0-svoQww}*f&Z^8(C-qW3V`KS z0zcUH;s6&HWa3+sgqRM@`>>h7Tt|5a$$K%m{v!PT$JzL!NQ@I(@hBETBo)U%a|8K9 z0Pi5VR$c<2^Gv9pGJ{v7L-x2l~J3c>is==aK(U0dE1$0`d#6zXeVw2G9t&4zLN(4%iB~4bTbb21Eh9fE1t)a3`Q2uotioFbMb}-~qsw0e=bjI^bcz zBY?jJ{5{|az;^-901g430~`hXGvGzQD}dJkCjch_zXH4icpvZ)z(9i*0M^&nuky^_ z+>wr@(w-IGrQWK=OO~f4xpaYI$Ueq?qIw=q#n2I6Vn@@Ceb6BegQIqM+lz(xiAo?P zMshJuV-G~!+rfAX0(M1?AEEmcIA3F@T1Vep$v$dc3t7Y54BufsONRL)@SWz@Ad+YP z1N?lm7k+_xCt_V@EA&n<6Obu1gYb*YtHE)bA0j-_WcM#Ne~NI4*@jf5<^*V-WV%qS z$>w43%gm?YPchFy@)C0$VyBwZ;7>D$;g_5L3$fG9lkjJle+SJo&1pzG%M3%?XUzXZ z_)?RnbeEaegX1wzfHT`%0{J-rAuc!fLr;a7MtH8d5#cM$KY`>tvlNo^O@5p$Fy|q5 zp;-d|O7m;*7n%Qv)Qiop!S~8r^-6Ooa<4M~3b9Mf7ZI*D3*j#{Ux&ZU{2BCIWiE&Q zsrV=Cn3rIGB z;lkMnJ?MP@7eGbRSctP{;EST?DEQGP`bB?A|2)I4qGu@cdxqUbF&M}BF~g-r?~!mr_d*g=jR_zc+>cP(G-Dcwb?&RE zpxmf}w)O7qR4~h^0kOed&opz5I`Ep^KCqmNjTR8??kyy|lDNrz8;MFu-0BXIsFK8X zca%i6@k{6lx?@zmRFelWPOWx(dPUH zgQ92#m3)&mcNSeo(MMQumvA}X1Lbm3M={%!H7H?+BKI`nB$pR_k~>e7oa_#@Ey`(^Myk*;6{%T#<1 zxQ75`V#1S5unC1Im`P4CJH;;$kVR<}Q(i>aSo$yU^Gpv`p<)LFOmv1zSc7a)FL<&3pzJB#sOD3;*ER$x)i56l5q)&J^?SSz@%2k z{i5(1DZ+G)`)@6Z2;*KAju-7fGpcY*xbA2A)HTr5BQ;%3P115HB@-2{AF~MEcVjN+ z8H{mYTTZ5XuGEi#@*B$B#`?BHj+3czfD^3Jb(_+a60T|%tMMq-SDptM2VTm_G-_QF z=Tc<7O0jd|3sk&8#YHF9F|J9)?GUa<8M)>w&{i$Ay-#iEmTOoLwt6vlg2oCqG0(A# z1IkJ(w3Wb_WXvrtD>92`7EdxJ=a*vl=x`cl@tUHdqNcJ{Mb{K@pJC1yX7McSK%Et$ zsAvtu(XLa$qd*e`@--j5ub>1X81h7nns9|6DlCK6q9RLU(ZpQpm5_F8GOwwOrwx*FT*Nz0TDBw9P2jLDjTd=;Z?HYz>E&UKVyNJ~vH-BiT5 zR29}vXUsIOSUX+T3OZ?zn({B#L2T%TAfR%*idautHq?aX2p zjjyuXuEv%D6-^u~4O14|MQwHvybpJXS7-v`qvDD14RH7oWmKk<3HgY%tFyDRZ{>3T z@@48V>*B6hx^hKjB-R;C2SY;2X`-?tl1g68sZ8ze4UOkxO_ay|-cDqPmzqIb5O^{9 zVslSf1Tkmgab_g0g6o=^8xg{^#}}VuViHd7PWnTML==xOl~jnA2_3jh*wq7uba{>; zj12Q3!*K0#%q?@wDT}&hySBP!J1#FfYEE>lG#rb|jsn18ppgN3H%o?VcBNzSB-ib( zvZGZ<_jO0*6xS6$go?^7u9iDo6%T-U?NL`Z5dS^)^-5Qn>x^Sw*{Ey&E3V21Bd+^( z)SR1L^S5qw6vDzK~xyl!^78jZ_3{p$MuM` zA!Z8)=OA;rfr7lU)79m=e&_q?mRGu(yIeQF;+oyn^}|}%)~*NAOV1odx%FQ~S*`2l zqsn0B#MQ1{n47SLg=e~5j}kX?w#pB~cMRvdD&I7xh0W32cI{Kn_3ak+0Dnc;PAdLiKn=b@+Z6FiBv~AOuo9PLx6X8lIA@fU;I}4m+;ju z+MSPUH~Epk-x0vuUP$pm5r{XOTcH?1b+hO1O<+Ua9qQv-5wdx|2*mqCyxi^bNRNAN zFy(zEWpJB{!Zx+E*ksbNWTY#G3nvP*|HV)cffvPiX&h(jhSp6!sRb96w&KRqDHJyx z4Rj@Qr4Ge{utYk6){3TkVldZd(}5r@5swCGx@1TeNZy@7H7{dzwd4&ZS-$p7xM!7- zxzd8-jVh43(L_Mqe)fcV;)&gi;LR{pv2GksvMG2)EE@+#<(p|`Ra%VKc}#`-S@?BL z?X(*!$5H9;jiyzd9bpD|y`2Di#`<4J=z4cXl>gB3?=HBAT^~;+~MH z)IBW%x>c#wAB}hJ)aI-f{vMVO^?;G>HpjzoNy^I5*icf}x)C?MEPFDrE0pUvytme- zl@c-&%MQ9ms5ft)sidi$*Uy#R@t#m+2k$2|~LeJ`rC++hbDk~$Bl;!ok?xACp$e9&` zETK)!-s(@s_)fl>DdoMoe^-hx)@?nFx9y0z3t}KYI*h_yj;3 zP&c5KY1>jOmGFL_s_{0U7D=LkWD2`@44*!fj73)3GnL)PyLc5>I}xSxMyiKyi__Cy0$BX5gX|Q8AxLlhZewmB_a80i00N#`I`l* zQ&pGqpsg%S!-p0?e5k>;>g*16?re(TR||=BZz>cNa%z-a1q+9q%>1F)t_UhGf|%2K zlmO;Vf%ph)o9ocl5`;Kx+pDDx`icZp!vg1$+J4^RM4M;XDt@X8R9Q4nv{BwA7R}A_m^0EhDSs*V zFgfQGzs=HO2eo}1un#SC!bZ;q&9i?x#`9Z?<)t1&l#6x1JnN@3@Da;z&3>EwZqSy! z4A|=-3Tnsvzk%>SsAfc{So{_I2UW96`fuQWC|{Z&fcVFVv}5`U>+=J|xwRP$-ClP2 zV<4>Z^7w>%MXS9GwAWjpt@1Mdcc88QfbTNlMut{<8e*!L1NtDk3A^}Yl&>1J_0>w6 z?670<{Z|k^#`o9dCr#gJo zF$wbD0=7;M82`7RSL*&%iuiAXwj9f|2(&dGCSyE|g0{Z%nf@oB_v`j#`QEgppM&%~ z(6!DOC~tt?j!wjWLb`wj*Y#okQ%Gy)0lplxyc?4k*n1-4t@(rLp90PKg6+lM z%l+Vj^gjVTX76(G8fbnYg>?R>KwC#<)b|_EmC#2=`#LfAS?4i~p9tDI3M0+aOzW(S z^xY^b&*-2=wm%Q^tuq+LuL5nI$dTsRr&T`M`+Crp^C0jSP{g}Ey2-qm>rAAQsdPAu zZ=tbYSCpzOjz0nZXKktfaWcP_e{GDLL zA4ntuyRjsuuyYP4u>AXj>7Jh5NMfU~=tolHL~~2Dw|S}XHZKD#zj*2N``5MBwls3r z=f`Gsyc&ERG;G~i+tO4&K1Tjr5iD$S{EZv5h7Ap^!oR+GQ(bMdf77~kZH?`Id<9{9 z4ng@N$IfJ0R>-#Cb7NdnWBu6ikNvC>X8>L-;QroDf2unj+v)A-v$k;;Z7RlZm(;TF z4+R6Mfc_=sShh=qegEM1UzAO-4^^=LY}1w&zt2?r1T-L&t6yD0eEd%^{lR41-yMhr z`SVQfD{Vg-#m_~@^i^TI$KQ!-aeO-M6bB zs*dr|1pba>(yGR|uU56yyVyK|zOfyeZR0r2rq{!Wa6@mc|+ZLaCQfw z!lG1CHA+RJ&{h7h&|McCJK z!VkVfRv0!?Gu403=lcZC?3^pP$0gt}FXtFXcR7GtAj)xlCU_9G9Or&IE+dv4_r!z> z8KXQ)t^p*TamJ~Sdu4(LVYNF}YYAmH0=N~T+%d=yP9V(b7(uz_lmg!f;Iu9E!Q=j# z?0sOCRgN zt-=6+a&-Xi-3c`aQ;s`eOYS~|Sytx5HHUCH!j_{P-Ms)yj(dH=u#8b2Z9>@x0G3=0 z8iv3)%du>PuL3MNuI+@@+#Yi*%{Odv+#?b6rvYMAp2YtXKz+0e_XdR7u#M%cdi*^Y zmK^t#gaeikuqF45O^)9lgomhHJ4@~b(A=*xEACnO|0P&)6lIw35`bSil;hs_@E?%- z55&W?QjU9K{{Ii>G!IDXqW!)MU_E5M__i6rFGXrVTh7Wi1BN9h_kbSkJ;>0`qw#Nm zsh9frZLxAT^^FO7z^8i;KyDQYILcM1p!69>IIpo}!n+l6H5LI(8M-0_tT5>Vkoy_> zg5|6@-r8GX#_d{wzG`a^D{k%uavxraH}9Vy$L%H4SoOF8w!V&r*N$-(*piC_%Y^Vi p&VzUaWqYuHbF9&JmU|j^WFZ@ay6Dg?$H~oJgU1zCB;u^#{{}=+kzxP< literal 0 HcmV?d00001 diff --git a/disass.c b/disass.c new file mode 100644 index 0000000..b0c9652 --- /dev/null +++ b/disass.c @@ -0,0 +1,282 @@ +/**************************************************************************/ +/* EightBall Disassembler */ +/* */ +/* The Eight Bit Algorithmic Language */ +/* For Apple IIe/c/gs (64K), Commodore 64, VIC-20 +32K RAM expansion */ +/* (also builds for Linux as 32 bit executable (gcc -m32) only) */ +/* */ +/* Compiles with cc65 v2.15 for VIC-20, C64, Apple II */ +/* and gcc 7.3 for Linux */ +/* */ +/* cc65: Define symbol VIC20 to build for Commodore VIC-20 + 32K. */ +/* Define symbol C64 to build for Commodore 64. */ +/* Define symbol A2E to build for Apple //e. */ +/* */ +/* Copyright Bobbi Webber-Manners 2018 */ +/* EightBall VM disassembler */ +/* */ +/* Formatted with indent -kr -nut */ +/**************************************************************************/ + +/**************************************************************************/ +/* GNU PUBLIC LICENCE v3 OR LATER */ +/* */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 3 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. If not, see . */ +/* */ +/**************************************************************************/ + +#include "eightballvm.h" +#include "eightballutils.h" + +#include +#include +#include + +#ifdef A2E +#include +#endif + +/* Order must match enum bytecode */ +char *bytecodenames[] = { + "END", + "LDI", + "LDAW", + "LDAWI", + "LDAB", + "LDABI", + "STAW", + "STAWI", + "STAB", + "STABI", + "LDRW", + "LDRWI", + "LDRB", + "LDRBI", + "STRW", + "STRWI", + "STRB", + "STRBI", + "SWP", + "DUP", + "DUP2", + "DRP", + "OVER", + "PICK", + "POPW", + "POPB", + "PSHW", + "PSHB", + "DISC", + "SPFP", + "FPSP", + "ATOR", + "RTOA", + "INC", + "DEC", + "ADD", + "SUB", + "MUL", + "DIV", + "MOD", + "NEG", + "GT", + "GTE", + "LT", + "LTE", + "EQL", + "NEQL", + "AND", + "OR", + "NOT", + "BAND", + "BOR", + "BXOR", + "BNOT", + "LSH", + "RSH", + "JMP", + "JMPI", + "BRC", + "BRCI", + "JSR", + "JSRI", + "RTS", + "PRDEC", + "PRHEX", + "PRCH", + "PRSTR", + "PRMSG", + "KBDCH", + "KBDLN" +}; + +/* + * Call stack grows down from top of memory. + * If it hits CALLSTACKLIM then VM will quit with error + */ +#ifdef __GNUC__ +#define MEMORYSZ (64 * 1024) +#else + /* Has to be 64K minus a byte otherwise winds up being zero! */ +#define MEMORYSZ (64 * 1024) - 1 +#endif + +#ifdef __GNUC__ +unsigned char memory[MEMORYSZ]; +#else +unsigned char *memory = 0; +#endif + +#ifdef __GNUC__ +#define UINT16 unsigned short +#else +#define UINT16 unsigned int +#endif + +UINT16 pc = RTPCSTART; /* Program counter */ +UINT16 lastpc; + +/* + * Print a value as hex + */ +void _printhexbyte(unsigned char val) { + + printchar(hexval2char((val>>4) & 0x0f)); + printchar(hexval2char(val & 0x0f)); +} + +/* + * Fetch, decode and disassemble a VM instruction, then advance the program counter. + */ +void disassemble_instruction() +{ + printhex(pc); + print(": "); + _printhexbyte(memory[pc]); + printchar(' '); + switch(memory[pc++]) { + case VM_LDIMM: + case VM_LDAWORDIMM: + case VM_LDABYTEIMM: + case VM_LDRWORDIMM: + case VM_LDRBYTEIMM: + case VM_STAWORDIMM: + case VM_STABYTEIMM: + case VM_STRWORDIMM: + case VM_STRBYTEIMM: + case VM_JMPIMM: + case VM_BRNCHIMM: + case VM_JSRIMM: + _printhexbyte(memory[pc++]); + printchar(' '); + _printhexbyte(memory[pc++]); + print(" "); + print(bytecodenames[memory[pc-3]]); + printchar(' '); + printhex(memory[pc-2] + (memory[pc-1] << 8)); + print(" ("); + printdec(memory[pc-2] + (memory[pc-1] << 8)); + print(")"); + break; + case VM_PRMSG: + print("...00 "); + print(bytecodenames[memory[pc-1]]); + print(" \""); + while(memory[pc]) { + printchar(memory[pc++]); + } + ++pc; + printchar('"'); + break; + default: + print(" "); + if (memory[pc-1] <= VM_KBDLN) { + print(bytecodenames[memory[pc-1]]); + } else { + print("**ILLEGAL**"); + } + } +#ifdef A2E + printchar('\r'); +#else + printchar('\n'); +#endif +}; + +/* + * Disassemble the program! + */ +void disassemble() +{ + while (pc < lastpc) { + disassemble_instruction(); + } +} + +/* + * Load bytecode into memory[]. + */ +void load() +{ + FILE *fp; + char ch; + + pc = RTPCSTART; + do { + print("\nBytecode file (CR for default)>"); + getln((char*)memory, 15); + if (strlen((char*)memory) == 0) { + strcpy((char*)memory, "bytecode"); + } + print("Loading '"); + print((char*)memory); + print("'\n"); + fp = fopen((char*)memory, "r"); + } while (!fp); + while (!feof(fp)) { + ch = fgetc(fp); + memory[pc++] = ch; + /* Print dot for each page */ + if (pc%0xff == 0) { + printchar('.'); + } + } + fclose(fp); + lastpc = pc - 1; + pc = RTPCSTART; +#ifdef A2E + printchar(7); +#endif +} + +int main() +{ + print("EightBall Disassembler v" VERSIONSTR "\n"); + print("(c)Bobbi, 2018\n"); + print("Free Software.\n"); + print("Licenced under GPL.\n\n"); + + load(); +#ifdef __GNUC__ + print(" Done.\n\n"); +#endif +#ifdef A2E + videomode(VIDEOMODE_80COL); + clrscr(); +#elif defined(CBM) + printchar(147); /* Clear */ +#endif + disassemble(); + return 0; +} diff --git a/ebvm.system b/ebvm.system index f7e3d7911c09da43a32dd41444c41e3bc9cd3a60..5a0d27a3fb77731963a3b5538e8edba1e8573a1b 100644 GIT binary patch literal 9973 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

k^4_dl1KP(0tJ%A4W2 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 literal 68448 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 diff --git a/eightball.c b/eightball.c index 7080a53..3ce3333 100644 --- a/eightball.c +++ b/eightball.c @@ -1069,7 +1069,6 @@ unsigned char P() if (compile) { compiletimelookup = 1; if (getintvar(key, idx, &arg, &type, addressmode)) { - error(ERR_VAR); return 1; } @@ -1080,7 +1079,6 @@ unsigned char P() } if (getintvar(key, idx, &arg, &type, addressmode)) { - error(ERR_VAR); return 1; } @@ -1237,7 +1235,7 @@ unsigned char *heap2PtrBttm; /* Arena 2: bottom-up heap */ //#define HEAP2TOP (char*)0x97ff #define HEAP2TOP (char*)0xa7ff -#define HEAP2LIM (char*)0x8a00 +#define HEAP2LIM (char*)0x8900 /* HEAP2LIM HAS TO BE ADJUSTED TO NOT * TRASH THE CODE, WHICH LOADS FROM $2000 UP * USE THE MAPFILE! */ @@ -1258,7 +1256,7 @@ unsigned char *heap2PtrBttm; /* Arena 2: bottom-up heap */ #define HEAP1LIM (char*)0xa000 #define HEAP2TOP (char*)0x9fff - 0x0400 /* Leave $800 for the C stack */ -#define HEAP2LIM (char*)0x7100 +#define HEAP2LIM (char*)0x6f00 /* HEAP2LIM HAS TO BE ADJUSTED TO NOT * TRASH THE CODE, WHICH LOADS FROM $0800 UP * USE THE MAPFILE! */ @@ -1282,12 +1280,12 @@ unsigned char *heap2PtrBttm; /* Arena 2: bottom-up heap */ //#define HEAP1LIM (char*)0xa000 //#define HEAP2TOP (char*)0x7fff - 0x0400 /* Leave $400 for the C stack */ -//#define HEAP2LIM (char*)0x7c00 /* HEAP2LIM HAS TO BE ADJUSTED TO NOT +//#define HEAP2LIM (char*)0x7600 /* HEAP2LIM HAS TO BE ADJUSTED TO NOT // * TRASH THE CODE, WHICH LOADS FROM $1200 UP // * USE THE MAPFILE! */ // Everything in BLK5 for now -// BLK3 is totally full of code! +// BLK3 is almost totally full of code! // Man ... we really need more memory!! #define HEAP1TOP (char*)0xbfff #define HEAP1LIM (char*)0xb000 @@ -1458,28 +1456,53 @@ int getfreespace2() #endif /* - * Compiler: Emit bytecode (used for everything except VM_LDIMM) + * Compiler: Emit simple one byte code + * Used for everything except immediate mode opcodes * Stores using codeptr. */ void emit(enum bytecode code) { +/* unsigned char c = code; +*/ *codeptr = code; ++codeptr; +/* printhex(rtPC); print(": "); printhexbyte(c); print(" : "); print(bytecodenames[c]); printchar('\n'); +*/ ++rtPC; } +/* + * Compiler: Emit opcode and 16 bit word argument + * Stores using codeptr. + */ +void emit_imm(enum bytecode code, int word) +{ + unsigned char *p = (unsigned char *) &word; + + *codeptr = code; + ++codeptr; + *codeptr = *p; + ++codeptr; + ++p; + *codeptr = *p; + ++codeptr; + rtPC += 3; +} + + /* * Compiler: Emit word argument (VM_LDIMM opcode) * Stores using codeptr. + * TODO: Eventually we can remove this */ void emitldi(int word) { @@ -1494,6 +1517,7 @@ void emitldi(int word) *codeptr = *p; ++codeptr; +/* printhex(rtPC); print(": "); printhexbyte(c); @@ -1504,6 +1528,7 @@ void emitldi(int word) printchar(' '); printhex(word); printchar('\n'); +*/ rtPC += 3; } @@ -1517,18 +1542,23 @@ void emitprmsg(void) char *p = readbuf; emit(VM_PRMSG); ++rtPC; +/* printchar('"'); +*/ while (*p) { *codeptr = *p; ++rtPC; +/* printchar(*p); +*/ ++codeptr; ++p; } *codeptr = 0; ++codeptr; - +/* print("\"\n"); +*/ } /* @@ -1547,10 +1577,12 @@ void emit_fixup(int address, int word) ++p; *ptr = *p; +/* printhex(address); print(": "); printhex(word); print(" ; Fixup\n"); +*/ } /* @@ -1563,6 +1595,7 @@ void writebytecode() unsigned char *p; p = (unsigned char *) CODESTART; strcpy(readbuf, "bytecode"); + printchar('\n'); openfile(1); print("...\n"); while (p < end) { @@ -2019,8 +2052,7 @@ unsigned char createintvar(char *name, emit((type == TYPE_WORD) ? VM_PSHWORD : VM_PSHBYTE); emitldi(0); emit(VM_NEQL); - emitldi(rtPC - 10); - emit(VM_BRNCH); + emit_imm(VM_BRNCHIMM, rtPC - 10); emit(VM_DROP); /* @@ -2034,9 +2066,7 @@ unsigned char createintvar(char *name, for (i = 0; i < sz; ++i) { if (arrinitmode == STRG_INIT) { emitldi((*txtPtr == '"') ? 0 : *txtPtr); - ((type == - TYPE_WORD) ? civ_st_rel_word(i) : - civ_st_rel_byte(i)); + ((type == TYPE_WORD) ? civ_st_rel_word(i) : civ_st_rel_byte(i)); if (*txtPtr == '"') { break; } @@ -2228,6 +2258,22 @@ void siv_st_rel(unsigned char type) ((type == TYPE_WORD) ? emit(VM_STRWORD) : emit(VM_STRBYTE)); } +/* Factored out to save a few bytes + * Used by setintvar() only. + */ +void siv_st_abs_imm(unsigned int addr, unsigned char type) +{ + emit_imm(((type & 0x0f) == TYPE_WORD) ? VM_STAWORDIMM : VM_STABYTEIMM, addr); +} + +/* Factored out to save a few bytes + * Used by setintvar() only. + */ +void siv_st_rel_imm(unsigned int addr, unsigned char type) +{ + emit_imm(((type & 0x0f) == TYPE_WORD) ? VM_STRWORDIMM : VM_STRBYTEIMM, addr); +} + /* * Set existing integer variable * name is the variable name @@ -2277,11 +2323,10 @@ unsigned char setintvar(char *name, int idx, int value) * ABSOLUTE addressing, but locals are addressed RELATIVE * to the frame pointer. */ - emitldi(*getptrtoscalarword(ptr)); if (local && compilingsub) { - siv_st_rel(type); + siv_st_rel_imm(*getptrtoscalarword(ptr), type); } else { - siv_st_abs(type); + siv_st_abs_imm(*getptrtoscalarword(ptr), type); } } else { if (type == TYPE_WORD) { @@ -2299,8 +2344,7 @@ unsigned char setintvar(char *name, int idx, int value) error(ERR_SUBSCR); return 1; } - bodyptr = - (void *) *(int *) ((unsigned char *) ptr + sizeof(var_t)); + bodyptr = (void *) *(int *) ((unsigned char *) ptr + sizeof(var_t)); if (compile) { /* *** Index is on the stack (X) */ @@ -2360,6 +2404,22 @@ void giv_ld_rel(unsigned char type) (((type & 0x0f) == TYPE_WORD) ? emit(VM_LDRWORD) : emit(VM_LDRBYTE)); } +/* Factored out to save a few bytes + * Used by getintvar() only. + */ +void giv_ld_abs_imm(unsigned int addr, unsigned char type) +{ + emit_imm(((type & 0x0f) == TYPE_WORD) ? VM_LDAWORDIMM : VM_LDABYTEIMM, addr); +} + +/* Factored out to save a few bytes + * Used by getintvar() only. + */ +void giv_ld_rel_imm(unsigned int addr, unsigned char type) +{ + emit_imm(((type & 0x0f) == TYPE_WORD) ? VM_LDRWORDIMM : VM_LDRBYTEIMM, addr); +} + /* * Get existing integer variable * name is the variable name @@ -2423,11 +2483,10 @@ unsigned char getintvar(char *name, emit(VM_RTOA); } } else { - emitldi(*getptrtoscalarword(ptr)); if (local && compilingsub) { - giv_ld_rel(*type); + giv_ld_rel_imm(*getptrtoscalarword(ptr), *type); } else { - giv_ld_abs(*type); + giv_ld_abs_imm(*getptrtoscalarword(ptr), *type); } } } else { @@ -2565,8 +2624,7 @@ void doif(unsigned char arg) /* **** Value of IF expression is on the eval stack **** */ emit(VM_NOT); push_return(rtPC + 1); - emitldi(0xffff); /* To be filled in later */ - emit(VM_BRNCH); + emit_imm(VM_BRNCHIMM, 0xffff); /* To be filled in later */ push_return(0); } else { if (skipFlag) { @@ -2599,8 +2657,7 @@ unsigned char doelse() * Code to jump over ELSE block when IF condition is true */ return_stack[returnSP + 1] = rtPC; - emitldi(0xffff); /* To be filled in later */ - emit(VM_JMP); + emit_imm(VM_JMPIMM, 0xffff); /* To be filled in later */ /* * Fixup the dummy destination address initialized by @@ -2841,7 +2898,6 @@ unsigned char assignorcreate(unsigned char mode) compiletimelookup = 1; } if (getintvar(name, i, &j, &type, 1)) { - error(ERR_VAR); return RET_ERROR; } @@ -2933,27 +2989,27 @@ unsigned char doendfor() emit(VM_DUP); emit(VM_PSHWORD); - emitldi(return_stack[returnSP + 2]); /* Pointer to loop variable */ + //emitldi(return_stack[returnSP + 2]); /* Pointer to loop variable */ if (return_stack[returnSP + 4]) { /* Rel or abs */ - emit((type == TYPE_WORD) ? VM_LDRWORD : VM_LDRBYTE); + /* Pointer to loop var */ + emit_imm((type == TYPE_WORD) ? VM_LDRWORDIMM : VM_LDRBYTEIMM, return_stack[returnSP + 2]); } else { - emit((type == TYPE_WORD) ? VM_LDAWORD : VM_LDABYTE); + /* Pointer to loop var */ + emit_imm((type == TYPE_WORD) ? VM_LDAWORDIMM : VM_LDABYTEIMM, return_stack[returnSP + 2]); } /* Increment and store loop variable */ emit(VM_INC); emit(VM_DUP); - emitldi(return_stack[returnSP + 2]); if (return_stack[returnSP + 4]) { - emit((type == TYPE_WORD) ? VM_STRWORD : VM_STRBYTE); + emit_imm((type == TYPE_WORD) ? VM_STRWORDIMM : VM_STRBYTEIMM, return_stack[returnSP + 2]); } else { - emit((type == TYPE_WORD) ? VM_STAWORD : VM_STABYTE); + emit_imm((type == TYPE_WORD) ? VM_STAWORDIMM : VM_STABYTEIMM, return_stack[returnSP + 2]); } /* Compare with loop limit already on eval stack */ emit(VM_GTE); - emitldi(return_stack[returnSP + 3]); /* Branch destination */ - emit(VM_BRNCH); + emit_imm(VM_BRNCHIMM, return_stack[returnSP + 3]); /* Branch destination */ /* Drop loop limit from call stack */ emit(VM_POPWORD); @@ -3027,8 +3083,7 @@ void dowhile(char *startTxtPtr, unsigned char arg) /* **** Value of WHILE expression is on the eval stack **** */ emit(VM_NOT); push_return(rtPC + 1); /* Address of dummy 0xffff */ - emitldi(0xffff); - emit(VM_BRNCH); + emit_imm(VM_BRNCHIMM, 0xffff); push_return(0); /* Dummy */ } else { if (skipFlag) { @@ -3062,8 +3117,8 @@ unsigned char doendwhile() /* * Jump back and re-evaluate the WHILE argument. */ - emitldi(return_stack[returnSP + 3]); - emit(VM_JMP); + emit_imm(VM_JMPIMM, return_stack[returnSP + 3]); + /* * Fixup the dummy destination address initialized by * dowhile() to point to the ENDWHILE. @@ -3166,9 +3221,9 @@ unsigned char dosubr() compilingsub = 1; - print("\nsub "); + print("\n["); print(readbuf); - print("\n"); + print("]"); /* * Create entry in subroutine table @@ -3367,10 +3422,14 @@ unsigned char docall() strncpy(s->name, readbuf, SUBRNUMCHARS); } - counter = -1; + if (!compile) { + counter = -1; + } while (l) { p = l->line; - ++counter; + if (!compile) { + ++counter; + } skipFlag = 0; @@ -3408,6 +3467,7 @@ unsigned char docall() */ eatspace(); if (expect('(')) { + counter = origcounter; return RET_ERROR; } @@ -3512,10 +3572,12 @@ unsigned char docall() /* If end of line, error */ if (!(*txtPtr)) { + counter = origcounter; error(ERR_ARG); return RET_ERROR; } if (*txtPtr == ')') { + counter = origcounter; error(ERR_ARG); return RET_ERROR; } @@ -3529,6 +3591,7 @@ unsigned char docall() } if (eval(0, &arg)) { /* No expression found */ + counter = origcounter; error(ERR_ARG); return RET_ERROR; } @@ -3565,12 +3628,14 @@ unsigned char docall() varslocal = oldvarslocal; array = findintvar(name2, &local); if (!array) { + counter = origcounter; error(ERR_VAR); return RET_ERROR; } /* j holds number of dimensions */ j = (array->type & 0xf0) >> 4; if (((array->type & 0x0f) != type) || (j == 0)) { + counter = origcounter; error(ERR_TYPE); return RET_ERROR; } @@ -3585,6 +3650,7 @@ unsigned char docall() } else { if (eval(0, &arg)) { /* No expression found */ + counter = origcounter; error(ERR_ARG); return RET_ERROR; } @@ -3614,11 +3680,14 @@ unsigned char docall() eatspace(); if (expect(')')) { + counter = origcounter; return RET_ERROR; } if (compile) { - emitldi(0xffff); + + emit_imm(VM_JSRIMM, 0xffff); + /* * Create entry in call table */ @@ -3633,8 +3702,6 @@ unsigned char docall() callsbegin = s; } - emit(VM_JSR); - /* Caller must drop the arguments * pushed to call stack above */ if (argbytes) { @@ -3658,8 +3725,8 @@ unsigned char docall() } l = l->next; } - error(ERR_NOSUB); counter = origcounter; + error(ERR_NOSUB); return RET_ERROR; } @@ -4204,8 +4271,7 @@ unsigned char parseline() emitldi(0x8000); emit(VM_BITAND); emit(VM_NOT); - emitldi(rtPC + 9); /* Jump over printing of '-' */ - emit(VM_BRNCH); + emit_imm(VM_BRNCHIMM, rtPC + 9); /* Jump over printing of '-' */ emitldi('-'); emit(VM_PRCH); emit(VM_NEG); @@ -4315,13 +4381,15 @@ unsigned char parseline() callsbegin = callsend = NULL; CLEARRTCALLSTACK(); run(0); - emit(VM_END); - linksubs(); - writebytecode(); + if (compile) { + emit(VM_END); + linksubs(); + writebytecode(); + compile = 0; + } #ifndef __GNUC__ CLEARHEAP2TOP(); /* Clear the linkage table */ #endif - compile = 0; break; case TOK_NEW: new(); @@ -4810,6 +4878,9 @@ void run(unsigned char cont) current = program; } while (current && !status) { + if (compile) { + printchar('.'); + } txtPtr = current->line; status = parseline(); /* parseline() can set current to NULL when return is to @@ -4827,6 +4898,7 @@ void run(unsigned char cont) printchar('\n'); returnSP = (RETSTACKSZ - 1); skipFlag = 0; + compile = 0; break; case 3: print("\nBrk at "); @@ -4834,6 +4906,7 @@ void run(unsigned char cont) printchar('\n'); returnSP = (RETSTACKSZ - 1); skipFlag = 0; + compile = 0; break; } } diff --git a/eightball.system b/eightball.system index db056e04274eccd05ad956dfb9986e79a7443d64..1e5741823d0bd7367fb3c454d86b307fefc16f05 100644 GIT binary patch literal 26095 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 #include +#include #ifdef A2E #include @@ -84,7 +85,7 @@ #ifdef __GNUC__ #define UINT16 unsigned short #else -#define UINT16 unsigned int +#define UINT16 unsigned short #endif UINT16 pc = RTPCSTART; /* Program counter */ @@ -116,11 +117,11 @@ unsigned char *memory = 0; #define TREG evalstack[evalptr - 4] /* Only valid if evalptr >= 4 */ /* -* Error checks are called through macros to make it easy to -* disable them in production. We should not need these checks -* in production (assuming no bugs in the compiler!) ... but they -* are helpful for debugging! -*/ + * Error checks are called through macros to make it easy to + * disable them in production. We should not need these checks + * in production (assuming no bugs in the compiler!) ... but they + * are helpful for debugging! + */ #ifdef STACKCHECKS @@ -148,10 +149,11 @@ unsigned char *memory = 0; /* Handler for unsupported bytecode */ #define UNSUPPORTED() unsupported() +#ifdef STACKCHECKS /* -* Check for evaluation stack underflow. -* level - Number of 16 bit operands required on eval stack. -*/ + * Check for evaluation stack underflow. + * level - Number of 16 bit operands required on eval stack. + */ void checkunderflow(unsigned char level) { if (evalptr < level) { @@ -163,9 +165,9 @@ void checkunderflow(unsigned char level) } /* -* Check evaluation stack is not going to overflow. -* Assumes evalptr has already been advanced. -*/ + * Check evaluation stack is not going to overflow. + * Assumes evalptr has already been advanced. + */ void checkoverflow() { if (evalptr > EVALSTACKSZ - 1) { @@ -177,9 +179,9 @@ void checkoverflow() } /* -* Check call stack is not going to underflow. -* bytes - Number of bytes required on call stack. -*/ + * Check call stack is not going to underflow. + * bytes - Number of bytes required on call stack. + */ void checkstackunderflow(unsigned char bytes) { if ((MEMORYSZ - sp) < bytes) { @@ -191,9 +193,9 @@ void checkstackunderflow(unsigned char bytes) } /* -* Check call stack is not going to overflow. -* Assumes sp has already been advanced. -*/ + * Check call stack is not going to overflow. + * Assumes sp has already been advanced. + */ void checkstackoverflow() { if (sp < CALLSTACKLIM + 1) { @@ -203,10 +205,11 @@ void checkstackoverflow() while (1); } } +#endif /* -* Handler for unsupported bytecodes -*/ + * Handler for unsupported bytecodes + */ void unsupported() { print("Unsupported instruction "); @@ -218,19 +221,20 @@ void unsupported() } /* -* Fetch, decode and execute a VM instruction, then advance the program counter. -*/ + * Fetch, decode and execute a VM instruction, then advance the program counter. + */ void execute_instruction() { - unsigned int tempword; + unsigned short tempword; + unsigned short *wordptr; unsigned char *byteptr; #ifndef __GNUC__ - unsigned int delay; + unsigned short delay; #endif //print("--->PC "); printhex(pc); print(" eval stk: "); printhex(evalptr); print("\n"); #ifdef DEBUGREGS - unsigned int i; + unsigned short i; print("\n"); print("--->PC "); printhex(pc); @@ -266,9 +270,22 @@ void execute_instruction() printhex(pc); print(": "); print(bytecodenames[memory[pc]]); - if (memory[pc] == VM_LDIMM) { +/* TODO: Should encode immediate mode as one bit of opcode to make this more efficient */ + if ((memory[pc] == VM_LDIMM) || + (memory[pc] == VM_LDAWORDIMM) || + (memory[pc] == VM_LDABYTEIMM) || + (memory[pc] == VM_LDRWORDIMM) || + (memory[pc] == VM_LDRBYTEIMM) || + (memory[pc] == VM_STAWORDIMM) || + (memory[pc] == VM_STABYTEIMM) || + (memory[pc] == VM_STRWORDIMM) || + (memory[pc] == VM_STRBYTEIMM) || + (memory[pc] == VM_JMPIMM) || + (memory[pc] == VM_BRNCHIMM) || + (memory[pc] == VM_JSRIMM)) { printchar(' '); - printhex(memory[pc + 1] + 256 * memory[pc + 2]); + wordptr = (unsigned short *)&memory[pc + 1]; + printhex(*wordptr); printchar(' '); } else { print(" "); @@ -324,10 +341,9 @@ void execute_instruction() case VM_LDIMM: /* Pushes the following 16 bit word to the evaluation stack */ ++evalptr; CHECKOVERFLOW(); - /* Note: Word is stored in little endian format! */ - tempword = memory[++pc]; - tempword += memory[++pc] * 256; - XREG = tempword; + wordptr = (unsigned short *)&memory[++pc]; + ++pc; + XREG = *wordptr; break; /* * Absolute addressing: @@ -342,23 +358,56 @@ void execute_instruction() printchar('\n'); #endif - XREG = memory[XREG] + 256 * memory[XREG + 1]; + wordptr = (unsigned short *)&memory[XREG]; + XREG = *wordptr; + break; + case VM_LDAWORDIMM: /* Imm mode - push 16 bit value pointed to by addr after opcode */ + ++evalptr; + CHECKOVERFLOW(); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + wordptr = (unsigned short *)&memory[*wordptr]; /* Pointer to variable */ + ++pc; + XREG = *wordptr; break; case VM_LDABYTE: /* Replaces X with 8 bit value pointed to by X. */ CHECKUNDERFLOW(1); XREG = memory[XREG]; break; - case VM_STAWORD: /* Stores 16 bit value Y in addr pointed to by X. Drops X and Y. */ + case VM_LDABYTEIMM: /* Imm mode - push byte pointed to by addr after opcode */ + ++evalptr; + CHECKOVERFLOW(); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + byteptr = (unsigned char *)&memory[*wordptr]; /* Pointer to variable */ + ++pc; + XREG = *byteptr; + break; + case VM_STAWORD: /* Stores 16 bit value Y in addr pointed to by X. Drops X and Y.*/ CHECKUNDERFLOW(2); - memory[XREG] = YREG & 0x00ff; - memory[XREG + 1] = (YREG & 0xff00) >> 8; + wordptr = (unsigned short *)&memory[XREG]; + *wordptr = YREG; evalptr -= 2; break; + case VM_STAWORDIMM: /* Imm mode - store 16 bit value X in addr after opcode. Drop X.*/ + CHECKUNDERFLOW(1); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + wordptr = (unsigned short *)&memory[*wordptr]; /* Pointer to variable */ + ++pc; + *wordptr = XREG; + --evalptr; + break; case VM_STABYTE: /* Stores 8 bit value Y in addr pointed to by X. Drops X and Y. */ CHECKUNDERFLOW(2); memory[XREG] = YREG; evalptr -= 2; break; + case VM_STABYTEIMM: /* Imm mode - store 8 bit value X in addr after opcode. Drop X.*/ + CHECKUNDERFLOW(1); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + byteptr = (unsigned char *)&memory[*wordptr]; /* Pointer to variable */ + ++pc; + *byteptr = XREG; + --evalptr; + break; /* * Relative to Frame Pointer addressing: * XREG points to address in system memory relative to the frame pointer. @@ -376,9 +425,16 @@ void execute_instruction() printchar('\n'); #endif - XREG = - memory[(XREG + fp + 1) & 0xffff] + - 256 * memory[(XREG + fp + 2) & 0xffff]; + wordptr = (unsigned short *)&memory[(XREG + fp + 1) & 0xffff]; + XREG = *wordptr; + break; + case VM_LDRWORDIMM: /* Imm mode - push 16 bit value pointed to by addr after opcode */ + ++evalptr; + CHECKOVERFLOW(); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + wordptr = (unsigned short *)&memory[(*wordptr + fp + 1) & 0xffff]; /* Pointer to variable */ + ++pc; + XREG = *wordptr; break; case VM_LDRBYTE: /* Replaces X with 8 bit value pointed to by X. */ CHECKUNDERFLOW(1); @@ -395,17 +451,41 @@ void execute_instruction() XREG = memory[(XREG + fp + 1) & 0xffff]; break; + case VM_LDRBYTEIMM: /* Imm mode - push byte pointed to by addr after opcode */ + ++evalptr; + CHECKOVERFLOW(); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + byteptr = (unsigned char *)&memory[(*wordptr + fp + 1) & 0xffff]; /* Pointer to variable */ + ++pc; + XREG = *byteptr; + break; case VM_STRWORD: /* Stores 16 bit value Y in addr pointed to by X. Drops X and Y. */ CHECKUNDERFLOW(2); - memory[(XREG + fp + 1) & 0xffff] = YREG & 0x00ff; - memory[(XREG + fp + 2) & 0xffff] = (YREG & 0xff00) >> 8; + wordptr = (unsigned short *)&memory[(XREG + fp + 1) & 0xffff]; + *wordptr = YREG; evalptr -= 2; break; + case VM_STRWORDIMM: /* Imm mode - store 16 bit value X in addr after opcode. Drop X.*/ + CHECKUNDERFLOW(1); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + wordptr = (unsigned short *)&memory[(*wordptr + fp + 1) & 0xffff]; /* Pointer to variable */ + ++pc; + *wordptr = XREG; + --evalptr; + break; case VM_STRBYTE: /* Stores 8 bit value Y in addr pointed to by X. Drops X and Y. */ CHECKUNDERFLOW(2); memory[(XREG + fp + 1) & 0xffff] = YREG; evalptr -= 2; break; + case VM_STRBYTEIMM: /* Imm mode - store 8 bit value X in addr after opcode. Drop X.*/ + CHECKUNDERFLOW(1); + wordptr = (unsigned short *)&memory[++pc]; /* Pointer to operand */ + byteptr = (unsigned char *)&memory[(*wordptr + fp + 1) & 0xffff]; /* Pointer to variable */ + ++pc; + *byteptr = XREG; + --evalptr; + break; /* * Manipulate evaluation stack */ @@ -450,7 +530,8 @@ void execute_instruction() sp += 2; ++evalptr; CHECKOVERFLOW(); - XREG = memory[sp - 1] + 256 * memory[sp]; + wordptr = (unsigned short *)&memory[sp - 1]; + XREG = *wordptr; break; case VM_POPBYTE: /* Pop 8 bit value from call stack, push onto eval stack [X] */ CHECKSTACKUNDERFLOW(1); @@ -467,11 +548,11 @@ void execute_instruction() printhex(sp - 1); printchar('\n'); #endif - - memory[sp] = (XREG & 0xff00) >> 8; + byteptr = (unsigned char *)&XREG; + memory[sp] = *(byteptr + 1); --sp; CHECKSTACKOVERFLOW(); - memory[sp] = XREG & 0x00ff; + memory[sp] = *byteptr; --sp; CHECKSTACKOVERFLOW(); --evalptr; @@ -506,10 +587,11 @@ void execute_instruction() #endif /* Push old FP to stack */ - memory[sp] = (fp & 0xff00) >> 8; + byteptr = (unsigned char *)&fp; + memory[sp] = *(byteptr + 1); --sp; CHECKSTACKOVERFLOW(); - memory[sp] = fp & 0x00ff; + memory[sp] = *byteptr; --sp; CHECKSTACKOVERFLOW(); @@ -531,7 +613,8 @@ void execute_instruction() CHECKSTACKUNDERFLOW(2); sp += 2; CHECKOVERFLOW(); - fp = memory[sp - 1] + 256 * memory[sp]; + wordptr = (unsigned short *)&memory[sp - 1]; + fp = *wordptr; #ifdef DEBUGSTACK print(" Recovered FP "); @@ -676,6 +759,11 @@ void execute_instruction() pc = XREG; --evalptr; return; /* Do not advance program counter */ + case VM_JMPIMM: /* Imm mode - jump to 16 bit word following opcode */ + wordptr = (unsigned short *)&memory[++pc]; + ++pc; + pc = *wordptr; + return; case VM_BRNCH: /* If Y!= 0, jump to address X. Drop X, Y. */ CHECKUNDERFLOW(2); if (YREG) { @@ -685,22 +773,46 @@ void execute_instruction() } evalptr -= 2; return; /* Do not advance program counter */ + case VM_BRNCHIMM: /* Imm mode - if X!=0 branch to 16 bit word following opcode */ + wordptr = (unsigned short *)&memory[++pc]; + ++pc; + CHECKUNDERFLOW(1); + if (XREG) { + pc = *wordptr; + } else { + ++pc; + } + --evalptr; + return; /* Do not advance program counter */ case VM_JSR: /* Push PC to call stack. Jump to address X. Drop X. */ CHECKUNDERFLOW(1); byteptr = (unsigned char *) &pc; - memory[sp] = *byteptr; + memory[sp] = *(byteptr + 1); --sp; CHECKSTACKOVERFLOW(); - memory[sp] = *(byteptr + 1); + memory[sp] = *byteptr; --sp; CHECKSTACKOVERFLOW(); pc = XREG; --evalptr; return; /* Do not advance program counter */ + case VM_JSRIMM: /* Imm mode - push PC to calls stack, jump to 16 bit word */ + wordptr = (unsigned short *)&memory[++pc]; + ++pc; + byteptr = (unsigned char *) &pc; + memory[sp] = *(byteptr + 1); + --sp; + CHECKSTACKOVERFLOW(); + memory[sp] = *byteptr; + --sp; + CHECKSTACKOVERFLOW(); + pc = *wordptr; + return; /* Do not advance program counter */ case VM_RTS: /* Pop call stack, jump to the address popped. */ CHECKSTACKUNDERFLOW(2); ++sp; - pc = 256 * memory[sp] + memory[sp + 1]; + wordptr = (unsigned short *)&memory[sp]; + pc = *wordptr; ++sp; break; /* @@ -775,14 +887,25 @@ void execute() /* * Load bytecode into memory[]. - * TODO: This is POSIX-only at the moment. Need to add CBM support. */ void load() { FILE *fp; char ch; + char *p = (char*)&memory[RTPCSTART]; + pc = RTPCSTART; - fp = fopen("bytecode", "r"); + do { + print("\nBytecode file (CR for default)>"); + getln(p, 15); + if (strlen(p) == 0) { + strcpy(p, "bytecode"); + } + print("Loading '"); + print(p); + print("'\n"); + fp = fopen(p, "r"); + } while (!fp); while (!feof(fp)) { ch = fgetc(fp); memory[pc++] = ch; @@ -807,7 +930,7 @@ int main() print("(c)Bobbi, 2018\n"); print("Free Software.\n"); print("Licenced under GPL.\n\n"); - print("Loading bytecode: "); + load(); #ifdef __GNUC__ print(" Done.\n\n"); diff --git a/eightballvm.h b/eightballvm.h index 2cd31c6..1477c29 100644 --- a/eightballvm.h +++ b/eightballvm.h @@ -74,14 +74,22 @@ enum bytecode { VM_LDIMM, /* Pushes the following 16 bit word to the evaluation stack */ /* Absolute addressing: */ VM_LDAWORD, /* Replaces X with 16 bit value pointed to by X. */ + VM_LDAWORDIMM, /* Imm mode - push 16 bit value pointed to by addr after opcode */ VM_LDABYTE, /* Replaces X with 8 bit value pointed to by X. */ + VM_LDABYTEIMM, /* Imm mode - push byte pointed to by addr after opcode */ VM_STAWORD, /* Stores 16 bit value Y in addr pointed to by X. Drops X and Y.*/ + VM_STAWORDIMM, /* Imm mode - store 16 bit value X in addr after opcode. Drop X.*/ VM_STABYTE, /* Stores 8 bit value Y in addr pointed to by X. Drops X and Y. */ + VM_STABYTEIMM, /* Imm mode - store 8 bit value X in addr after opcode. Drop X. */ /* Relative to Frame Pointer addressing: */ VM_LDRWORD, /* Replaces X with 16 bit value pointed to by X. */ + VM_LDRWORDIMM, /* Imm mode - push 16 bit value pointed to by addr after opcode */ VM_LDRBYTE, /* Replaces X with 8 bit value pointed to by X. */ + VM_LDRBYTEIMM, /* Imm mode - push byte pointed to by addr after opcode */ VM_STRWORD, /* Stores 16 bit value Y in addr pointed to by X. Drops X and Y.*/ + VM_STRWORDIMM, /* Imm mode - store 16 bit value X in addr after opcode. Drop X.*/ VM_STRBYTE, /* Stores 8 bit value Y in addr pointed to by X. Drops X and Y. */ + VM_STRBYTEIMM, /* Imm mode - store 16 bit value X in addr after opcode. Drop X.*/ /**** Manipulate evaluation stack ***********************************************************/ VM_SWAP, /* Swaps X and Y */ VM_DUP, /* Duplicates X -> X, Y */ @@ -128,8 +136,11 @@ enum bytecode { VM_RSH, /* X = Y>>X. Y is dropped. */ /**** Flow control **************************************************************************/ VM_JMP, /* Jump to address X. Drop X. */ + VM_JMPIMM, /* Imm mode - jump to 16 bit word following opcode */ VM_BRNCH, /* If Y!= 0, jump to address X. Drop X, Y. */ + VM_BRNCHIMM, /* Imm mode - if X!=0 branch to 16 bit word following opcode */ VM_JSR, /* Push PC to call stack. Jump to address X. Drop X. */ + VM_JSRIMM, /* Imm mode - push PC to call stack, jump to 16 bit word */ VM_RTS, /* Pop call stack, jump to the address popped. */ /**** Input / Output ************************************************************************/ VM_PRDEC, /* Print 16 bit decimal in X. Drop X */ @@ -143,69 +154,6 @@ enum bytecode { /********************************************************************************************/ }; -/* Order must match enum bytecode */ -char *bytecodenames[] = { - "END", - "LDI", - "LDAW", - "LDAB", - "STAW", - "STAB", - "LDRW", - "LDRB", - "STRW", - "STRB", - "SWP", - "DUP", - "DUP2", - "DRP", - "OVER", - "PICK", - "POPW", - "POPB", - "PSHW", - "PSHB", - "DISC", - "SPFP", - "FPSP", - "ATOR", - "RTOA", - "INC", - "DEC", - "ADD", - "SUB", - "MUL", - "DIV", - "MOD", - "NEG", - "GT", - "GTE", - "LT", - "LTE", - "EQL", - "NEQL", - "AND", - "OR", - "NOT", - "BAND", - "BOR", - "BXOR", - "BNOT", - "LSH", - "RSH", - "JMP", - "BRC", - "JSR", - "RTS", - "PRDEC", - "PRHEX", - "PRCH", - "PRSTR", - "PRMSG", - "KBDCH", - "KBDLN" -}; - #ifdef A2E /* diff --git a/test.d64 b/test.d64 index e607c3a789ec21557c823d0ebedc8ee97a54238a..06ed87ebb47ae2d0b006a86e9616cab794b7d928 100644 GIT binary patch literal 174848 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 diff --git a/test.dsk b/test.dsk index 6c75c4a29628add8d0de0518467cc22065b9a633..b3637078f1465620de543376124339d65a0f2561 100644 GIT binary patch delta 41299 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

hW z(YaKZD6rPTcgmIt+)!$xL4hTZ@4jj@s4+4Dj|3Uk;d$ba{QTmSP3+ww>Ob9>P1c~n zC9^kSfJ6EN64H^d9g{H_kA~o-N@yPbM`9(J36I>gue$SLv3-poWPR0*y^%nWkQ_u$ zqaY9=1~fS|%HaE~ue;N}?uJo=i8|x+i~oBg9tW5Ffms#vi`9*o)w06hP%e>`sDO4F z^AHtux}(&fJDRh}t!8RaG@3nNZ#nlx&?kjiGYS|IjHIG2!Hj|NX}XfQy$VRtKq3?p zHBy-+xJeu`M54+J82{Zyw!8~+eSPQwIh>R+FZFyDb@`NdN= z7;wVVOgQO-HjRx*b+a@#P&d&}v>bv>#0#H97!EPJSa=7}hH+(M65(Wkv3BuuW`-qJ zjp5hmEz5+onU$^ZA}5%r>OBmdjXZn|Gu7{v*Pu~+w~CZZ=)jafvB=9WMpk6XViW~~ zB^Uy+>>{#d$|{*LFdG9*`R2(rWrvqAY5$Bzmao$}T{{kGiZLO3ay?)~`ixeC3^Fl< zVzD(fj0i(QijX0B6Vr|u_Dw>@dMpYf4>OE$c7T>KCr6A|A8JTgaN{EZ1W;dezboMkjHn9%+> MF0}F|PV>_L2TJ6tpa1{> delta 38729 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