From 6b6c7e7a70d38941d0487c1550b89a5191c8252f Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 21 May 2018 23:01:23 -0400 Subject: [PATCH] v0.71: disassembler on 6502, VIC20 workaround - Added `disass` to VIC20, C64, Apple II builds. - Workaround for broken getln() call on VIC20. --- 8ball20.prg | Bin 25448 -> 25448 bytes 8ball64.prg | Bin 25574 -> 25574 bytes 8ballvm20.prg | Bin 9874 -> 9838 bytes 8ballvm64.prg | Bin 9922 -> 9922 bytes Makefile | 65 ++++++++++++++++++++++++++++++++++++++++++++--- disass | Bin 17584 -> 17564 bytes disass.c | 16 ++++++++---- disass.system | Bin 0 -> 4486 bytes disass20.prg | Bin 0 -> 4330 bytes disass64.prg | Bin 0 -> 4414 bytes ebvm.system | Bin 9973 -> 9973 bytes eightball | Bin 68852 -> 68868 bytes eightball.system | Bin 26095 -> 26095 bytes eightballutils.h | 4 +-- eightballvm | Bin 28124 -> 28096 bytes eightballvm.c | 5 ++++ test.d64 | Bin 174848 -> 174848 bytes test.dsk | Bin 143360 -> 143360 bytes 18 files changed, 78 insertions(+), 12 deletions(-) create mode 100644 disass.system create mode 100644 disass20.prg create mode 100644 disass64.prg diff --git a/8ball20.prg b/8ball20.prg index beb50dfe77a0172004a9e775981e7f9bd7218a31..addaf0a677ae3a001e662ea8c382df822e19f1b9 100644 GIT binary patch delta 211 zcmaEHjPb=W#tjbzIaM-Nec)fju#$PQqLAq12W}jj*@fiU7#$|7ORQvEvH7CJM=Kz8 zI5>*2{$S1mhK)=oxfU@@;MvHufJ;FnYk{MWMLLjepztJX5rfa$EQRYiD^(Oa(-tsp zWby(6O@0OGbSNLjR)NvQwy#26Ki&XW9bBjZB*S3ShQ^eYS#89*nnu0V*@OCRCCSq8Ki;I5d^%Y5HWY zFa?!^IUtoMxfU@@;MvHufJ;FnYk{MWLI#j+pztJX5rfa$tj(HX&K!&en{(rSvj70; CT015H diff --git a/8ball64.prg b/8ball64.prg index 8145304785c9534300baffa7e1f1b859a705f626..bc3ea7a61897afcf71a64e9bde3b2bdc1e77c070 100644 GIT binary patch delta 173 zcmaEMoblOl#tmx)nWW-2uNQP?V>FxmS$rkqyv=hZq^*I}&fqA9gVAvF^f-T30DikSy#N3J delta 171 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 literal 9874 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 DZmW7* diff --git a/8ballvm64.prg b/8ballvm64.prg index d3aff7bf96e7c04a9101c4cbacbe2624a0e361dd..7b26aa3b7469429f4e6392a670b3a7148f0b8149 100644 GIT binary patch delta 234 zcmX@)d&qY}oM64u%9KUA3OR~vPwB2Zt*cd>EH)Zj+eG zSU+8J0mDY7lU$1!Ch%-zTEL~SQDuRnkC_sXZJ;ngeG!AtOm&5|nk!Wl+7%ZtZe;QT z0!@AeNhK&B##XqauArd}>2I8jhMVP7moNeVpvp&8 delta 206 zcmX@)d&qY}oM4pF%9KUA3OR~vPwB2Zt*aopF~3cWQF8M)F(*dG#>tivK8%f<+a#tk zCa%?7siM%XxPWmZlNS(Z@+&YZL-{ba!X0%54Q&{20mDWn7~5xsy25m*0YG6C17OM~ zFO*7UdaN{=Ls~&)x+X~XNv=f<6L>Z2I8j L2AkznmoNeVV(&bx diff --git a/Makefile b/Makefile index 484bc54..cd8203b 100644 --- a/Makefile +++ b/Makefile @@ -10,10 +10,14 @@ CC65BINDIR = $(CC65DIR)/bin CC65LIBDIR = $(CC65DIR)/lib APPLECMDR = ~/Desktop/Apple2/AppleCommander-1.3.5.jar -all: eightball eightballvm disass 8ball20.prg 8ballvm20.prg 8ball64.prg 8ballvm64.prg eightball.system ebvm.system test.d64 test.dsk +all: eightball eightballvm disass 8ball20.prg 8ballvm20.prg disass20.prg 8ball64.prg 8ballvm64.prg disass64.prg eightball.system ebvm.system disass.system test.d64 test.dsk clean: - rm -f eightball eightballvm *.o 8ball20.* 8ball64.* eightball*.s eightball.system test.d64 *.map *.vice + rm -f eightball eightballvm disass *.o 8ball20.* 8ball64.* eightball*.s eightball.system test.d64 *.map *.vice + +# +# Linux target +# eightball.o: eightball.c eightballutils.h eightballvm.h # 32 bit so sizeof(int*) = sizeof(int) [I am lazy] @@ -43,6 +47,10 @@ 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 +# +# VIC20 target +# + 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 @@ -51,6 +59,10 @@ eightballvm_20.o: eightballvm.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t vic20 -D VIC20 -o eightballvm_20.s eightballvm.c $(CC65BINDIR)/ca65 -t vic20 eightballvm_20.s +disass_20.o: disass.c eightballutils.h eightballvm.h + $(CC65BINDIR)/cc65 -Or -t vic20 -D VIC20 -o disass_20.s disass.c + $(CC65BINDIR)/ca65 -t vic20 disass_20.s + eightballutils_20.o: eightballutils.c eightballutils.h $(CC65BINDIR)/cc65 -Or -t vic20 -D VIC20 -o eightballutils_20.s eightballutils.c $(CC65BINDIR)/ca65 -t vic20 eightballutils_20.s @@ -61,6 +73,13 @@ eightballutils_20.o: eightballutils.c eightballutils.h 8ballvm20.prg: eightballvm_20.o eightballutils_20.o $(CC65BINDIR)/ld65 -m 8ballvm20.map -o 8ballvm20.prg -Ln 8ballvm20.vice -C vic20-32k.cfg eightballvm_20.o eightballutils_20.o $(CC65LIBDIR)/vic20.lib +disass20.prg: disass_20.o eightballutils_20.o + $(CC65BINDIR)/ld65 -m disass20.map -o disass20.prg -Ln disass20.vice -C vic20-32k.cfg disass_20.o eightballutils_20.o $(CC65LIBDIR)/vic20.lib + +# +# C64 target +# + eightball_64.o: eightball.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t c64 -D C64 -o eightball_64.s eightball.c $(CC65BINDIR)/ca65 -t c64 eightball_64.s @@ -69,6 +88,10 @@ eightballvm_64.o: eightballvm.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t c64 -D C64 -o eightballvm_64.s eightballvm.c $(CC65BINDIR)/ca65 -t c64 eightballvm_64.s +disass_64.o: disass.c eightballutils.h eightballvm.h + $(CC65BINDIR)/cc65 -Or -t c64 -D C64 -o disass_64.s disass.c + $(CC65BINDIR)/ca65 -t c64 disass_64.s + eightballutils_64.o: eightballutils.c eightballutils.h $(CC65BINDIR)/cc65 -Or -t c64 -D C64 -o eightballutils_64.s eightballutils.c $(CC65BINDIR)/ca65 -t c64 eightballutils_64.s @@ -79,6 +102,13 @@ eightballutils_64.o: eightballutils.c eightballutils.h 8ballvm64.prg: eightballvm_64.o eightballutils_64.o $(CC65BINDIR)/ld65 -m 8ballvm64.map -o 8ballvm64.prg -Ln 8ballvm64.vice -C c64.cfg eightballvm_64.o eightballutils_64.o $(CC54LIBDIR)/c64.lib +disass64.prg: disass_64.o eightballutils_64.o + $(CC65BINDIR)/ld65 -m disass64.map -o disass64.prg -Ln disass64.vice -C c64.cfg disass_64.o eightballutils_64.o $(CC65LIBDIR)/c64.lib + +# +# Apple II target +# + eightball_a2e.o: eightball.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t apple2enh -D A2E -o eightball_a2e.s eightball.c $(CC65BINDIR)/ca65 -t apple2enh eightball_a2e.s @@ -87,6 +117,10 @@ eightballvm_a2e.o: eightballvm.c eightballutils.h eightballvm.h $(CC65BINDIR)/cc65 -Or -t apple2enh -D A2E -o eightballvm_a2e.s eightballvm.c $(CC65BINDIR)/ca65 -t apple2enh eightballvm_a2e.s +disass_a2e.o: disass.c eightballutils.h eightballvm.h + $(CC65BINDIR)/cc65 -Or -t apple2enh -D A2E -o disass_a2e.s disass.c + $(CC65BINDIR)/ca65 -t apple2enh disass_a2e.s + eightballutils_a2e.o: eightballutils.c eightballutils.h $(CC65BINDIR)/cc65 -Or -t apple2enh -D A2E -o eightballutils_a2e.s eightballutils.c $(CC65BINDIR)/ca65 -t apple2enh eightballutils_a2e.s @@ -97,33 +131,54 @@ eightball.system: eightball_a2e.o eightballutils_a2e.o 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 +# +disass.system: disass_a2e.o eightballutils_a2e.o + $(CC65BINDIR)/ld65 -m disassa2e.map -o disass.system -C apple2enh-system.cfg disass_a2e.o eightballutils_a2e.o apple2enh-iobuf-0800.o $(CC65LIBDIR)/apple2enh.lib + + +# +# EightBall scripts +# + unittest.8bp: unittest.8b tr {} [] unittest.8bp # ASCII -> PETSCII sieve4.8bp: sieve4.8b tr {} [] sieve4.8bp # ASCII -> PETSCII -test.d64: 8ball20.prg 8ballvm20.prg 8ball64.prg 8ballvm64.prg unittest.8bp sieve4.8bp +# +# Diskette images +# + +test.d64: 8ball20.prg 8ballvm20.prg disass20.prg 8ball64.prg 8ballvm64.prg disass64.prg unittest.8bp sieve4.8bp c1541 -format eb,00 d64 test.d64 c1541 -attach test.d64 -write 8ball20.prg c1541 -attach test.d64 -write 8ballvm20.prg + c1541 -attach test.d64 -write disass20.prg c1541 -attach test.d64 -write 8ball64.prg c1541 -attach test.d64 -write 8ballvm64.prg + c1541 -attach test.d64 -write disass64.prg c1541 -attach test.d64 -write unittest.8bp unit.8b,s c1541 -attach test.d64 -write sieve4.8bp sieve4.8b,s -test.dsk: eightball.system ebvm.system sieve4.8b tetris.8b bytecode +test.dsk: eightball.system ebvm.system disass.system sieve4.8b tetris.8b bytecode java -jar $(APPLECMDR) -d test.dsk e8ball.system java -jar $(APPLECMDR) -d test.dsk ebvm.system + java -jar $(APPLECMDR) -d test.dsk disass.system java -jar $(APPLECMDR) -d test.dsk sieve4.8b java -jar $(APPLECMDR) -d test.dsk tetris.8b java -jar $(APPLECMDR) -d test.dsk bytecode java -jar $(APPLECMDR) -p test.dsk e8ball.system sys uF4L+)fxWm~LbCdOEmceUnX9Ah%X`Nwg`OVT4g&)?8K)w{KGeu=Qtce832 z)$<^)_tz?#l|svHQFQq{Yy4}}PCjgJAI3aq4f<1!o{lJ2;F2nIdn7ODxuut-cmE%8 zfZBw#M0ZF;fY0;#ADA#OqIcv`57lbSG)bdXj8)MEje|bW=y(bFG@1MYo!4Zjv*q{# zQb(rhl9h5k%u{R)xF{#m8Qc9r@_C$c=o#7*=^WA)5f1fvCd&HCka91X!y{EPS(ax- z(6@aPsk^VfpW~%5Gi9eSq_n5eWsODXU3C(b_8n=wtB@14uaf5~l*4Q2RNsjMX7zev zWY2urlO58e$|D2C{t@lfpHfJjruU@kBT(%He+dg^x#_;$kY4oZWcRtS- zt#hRW^TLwg^L!}{k>VnIL=joN*wjryrr%m3iemdRlqHr01J9qx&h2@f`lE8eJ{Mo+ zC8>1%(MJ7|shu=S>x`Wk3ae-=-QGKJ5FOBFtgMH=x#?G1?-ta{WiG*Bd70Rh?`37? zOUeyd$$m+>FDtKxltB8ws7TsRc1K!LLa%&>rs-a>JLG(GLixlpA@I&)xqeTF5^EKT zd7y$Sb!M{_5tW6)_QD`M#oSjIoLS7hO@RVBsWb6T`dPPwFQG;HG(L)U>W}eFG|Avr z|K2UFMo&i#7JiSe8K$Ov)}OIssDKqURVoKI70#Jm5SSxJZG#78R+bD*@%fc_q=Dfy zKRRFi@E>UoyT2j&u7ao2o;X)|YnLb<#vG-8i{dY^ryq)92W)as6b;z1<&Q*h1Z)lL zTv#O*DQ$HXYy<3h*sHKTu#aIYu%RZrfPUBv*pjCh2YVg%J=iJFM6m{TA?yhSqvghQ zo#ao$2tEROPqXvPkMW8frc0_VYH@DsQWegm!G9_R!? z&;vxEieW4g7(g5_fh1r9$zTW=3PyrVkOiDzGME;_Vpst>bHO~Y5GEdI!NF@HIFNPJuI^8TxkeZHiw5sg z@U{M@L$bKR-c~Kxx<3`h3$|;5O(>)MwB5YOe><(X53LyS1~rVhm0pcfr53^TvaNe@ zANoN^pHQhqu#m&;KRxm*u6UL}>qbxG7wPn9OY|FW@GckzwKc zX>G=9(cvsH$kK#}8FUD022#A;JB~}wm%1{tcs-?$na+pOW?bv&%9t!$co(Jl|3X}9 zZ;deu9aG|4QBLWZS^ONW&5Y%4e?_K6&2wpgjzuMe(c9pcOI_g3%^q;_-Ygf6A zco+ORxhpwuqk|Ldd<$Kf;868RWo$M*pI}$b!`YikgPeB0ohCaSsAjFxVbYFgY#i1Q HZsG2KRL0cl delta 2379 zcmZ9O3s6*57{|}K?7F+SFCGhP0=u}_Qi|jg!V-bq!5-EstYn5F2qEAr(X1@Yg&B5m z75b*JMx1JD8f&6*wo#_EaL|-ebJCftv^3FH#in#MKE|E&dAprgbfj0Q%~rCQCRz3Te?2~= z3)-xddPNC`fN%CWBn;(5B6s`fE!`-Zr85XK)YPYQ(n~rcUrzyD9zRTnbh#Rj>_3k* zvEz;RsO0&Or_LTKp@LXf!q9D1z*j1}9-!A^UE?msL|p^EGFiV|(OkTn!y;8OUsjjJ z&=(_9=*CFX=zH&osg#XYMRPfej_PdM$g1tsIC84xk|0lTdAXdcT6TYfJ|9^;rYvHK zmo3X>OOc|JDvu2zP3CpC4+fz8oCtV;=d<_^tn*{33^(FS~^$4s~@NMVwjnlpA<#$ zat+E7*MvjEL$a~eea*C6E;!)fHGYyxH|_2*#q64Wjpi6!2`B5 zgZ|~-@6#ijzDF))38Lk7qTC;3&D=XQmt@V%J2b%r$xpQO&M|xrAiIr8f|Fxpu8yGfXahm9S?0(6zy&0xB3uu zzQi|>7}|tGQ>P-T&8uzohT&bu1K#l5I_~ccdHxsS8?c5JNC5+O#tyo}W+!7`y05Y} zx0d>i&+)~y(3Hg|(?kZ`T)gHo`U_E{Xl-&g5^Wegupx+KTg@mOI!CSnCfZHrK7P`i9FF;)CPuU@6P z59)rfn&u=;#*3pR$-#f7_i(*JN0My(3A%!74H=Scf;dPMlGFI3G&|YBx6!I(8{ZP_ zNVaLHCoP4)6Fi+Zn)Bl{WOFw4#4)xX90Etcac~m+1kQnr;5QHkLqG(oc*bIZ30S~g zzz#A%CddL4!89-(%mi-mFnAo4g85)!JQG+I?X)M4T94rd&+YkW%#_lxQomR+)f)~07Vn-&)sjo|^tDwqL z{F%`u1>{r&m)^5o;Lij#xbW#x#iL^66feshw)zV_S>2!hP_TQOK*_KkM zSFf|+Z4}HZtmpg(dcDZO*V5i1r+RoCUTU"); - getln((char*)memory, 15); - if (strlen((char*)memory) == 0) { - strcpy((char*)memory, "bytecode"); + getln(p, 15); +#else + *p = 0; +#endif + if (strlen(p) == 0) { + strcpy(p, "bytecode"); } print("Loading '"); - print((char*)memory); + print(p); print("'\n"); - fp = fopen((char*)memory, "r"); + fp = fopen(p, "r"); } while (!fp); while (!feof(fp)) { ch = fgetc(fp); diff --git a/disass.system b/disass.system new file mode 100644 index 0000000000000000000000000000000000000000..1b34bb94bc49409ed007de6aa65d6db745ba7198 GIT binary patch literal 4486 zcmbVQ4{#LK8Gn0!a+l*@z*>S@^N1mrOOCx4tQxic$>l;WVS(!^(@foi&c-otNkA zeV%L)#_~RsGh4ZJgfe_^!6}ULlv?)hi`3NYT*0U{&y0VFh1uzu+EqX}3r5M5l|_^p zy$sCC%#u8VGKw42jL zZ9&?sv1yA|n$FdV(^Is<^fc}I^bGA9u=xAwTeVr~+qLQGJ2YFmN;PusLhjYVZ@}f;;3;#4I!ivfUrEU4Pb@ zAKf4$Wft~hd?&^wFbMI0jKV-tN@l#6HsD5+6CZPOdmK;&^rdU?M-B=gf)On2qywB& zBHNWbDvf|ovQTLqgvXtdF(wQNnn_{$gkeFOE*WJsBuE6y4(ipHtgirsI*uT$*zjXc ziJ?Ql1z=To4hsMTp>7?awhRktn~b7Uh6TxnFW9AK!2~4LDx<7XN)gr13|&#W==fss zqQSn-d2w`EQOi0@#s5p)0~^3?-CyW&d6{G!67r>-b%HmPS|?<)jDplsM)N=ilNL8> z!HyxZPe@y}9Pr`^HJ46RyvGPR5|bZaC&Yvl0Ok~RoQ#Kr!9vQAFPXknJ)zf0dK}U= z^+|zAQVv=}C==8pFd*2Ypgxg;l~Xc+MzfH0C@2}dY9Mb^Vqy>tNdV{ouRRVLUf!SPN;wWKrfVR*A_*XyK9+;y0A^++ftN{j;5CdB?89;{1hR(!4$G=Q1mBSb;r zHwiDJ{B}WNydj8WenMz71cj(!yrY#*dGq4|;o@k(OLo`lU$i>1dl4lh6L(7yeyL>e zd&G=SmJZq!^vp(rkCZBiTW05eUo06kixP#B%n?3v))@ZSSepocV&pLz2{gGN4F;Jp zzT!PYwlmVMD_U_nN{Q`)YS`bgU*HpvFGete;rDm&lUXG?7&TXiLdhg~h589FLUecA zsa;4m;Xl!o1)Sp!M$3UVM>ETrkkA06RhtIw`B*#!;Kzl^;W(55#cYNuLI}nom4nZ;a({N{Mb$cJv)Oj+*+?`) zKCf6RvbI;^HBM@4+NIq-uysVed4P1x=6!6EQm}%ni+=*hz)D_JSL}@mULy*Qh zcWw<2M@i%u zN%T4LwE41i?@qGqIDy-vGAdgDvHh^U5p;$=;v3pv`91 zlfy!=vlZ$Vgh<#fXqNo~jWryI{Q`7=1oF~j0w)*JqeEh#G_*p7KnyOMh8O|bR4@hW zJU(7F=uhqeZy3!RB4%lf`zL@3RU)`47*2%Dy;>3WVz?|jo=8tqt%^-TU7@aCP#}(r z5ci((P0)rDoA!mGNBYC>_C{66bBNLlo4rHAmd&lO(FNpVA6)I*XqyE$;E|izIqZKNYnGds>F7Lfb3eKvuww1X0AAI$I)F>6{CL&ccDypMs(It;4URiebz4j826yx7 z)!5UvzIpxnz?$W&1MT=>!roGDLtNX6z=JCSEAhq$SHf(Kk7I2%w6Hx8!1ZfaZFr=) zJ;2&f$qI*i?egVqPP~AWSJ+T#X)VW9*Hm()rHEVGyt3`V7Hmf>%MyYyM)2wnT0UtT z;ynJQTIBP4tCvyQP3iguKY~}EUtC{9X_&8XsMJ?I)m3Pb+f(HQemVm*w}h?&Kg>|6 zr9L4@1}M&>D%i&qPlv2Epq#-YSEJFA9JW~u}|N!3AvXnZ9wkIB_8Bn276GG5LfR- zet3b4%1~j%HB^HE^{58=CDk=(@lp>Mc@J9L$f5d1H>&h_Q0LS6G$34p>=2^{bQ^$Lh#aULnUMZ4(@d6m2K$r}Q<>3ay4&J5S6MtvHM5YZ$@N-m zt#vaOSr$)UV)R-3rurF;=6fs?rFXc>T@m(P_77|=JHa-xzhiG6+%MbmhA0 zT#V}#c8op6cCg3TlkBaozp+Qz57>{`PuW-5&)I$K1$LA*yY67GVt>mPuw`r&yOaed zd|6MRWe~$419NFSNtBZLgb+Fi|Aa*DCE;cgSx&?~nN0YBYp8vub=T7hk`4zqcWuF2U#I_x44@IHsZ$3s iBk88pyDMIi@{t$Vz{Gsyu%Kro77P655 literal 0 HcmV?d00001 diff --git a/disass20.prg b/disass20.prg new file mode 100644 index 0000000000000000000000000000000000000000..f2b8c467aa2fa62ccd783ee64b009c12a58130e6 GIT binary patch literal 4330 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 D6I(aj literal 0 HcmV?d00001 diff --git a/disass64.prg b/disass64.prg new file mode 100644 index 0000000000000000000000000000000000000000..f4526b6e5694c5fd94f9103b4693b977e83453ec GIT binary patch literal 4414 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 C6)<%G literal 0 HcmV?d00001 diff --git a/ebvm.system b/ebvm.system index 5a0d27a3fb77731963a3b5538e8edba1e8573a1b..50bdeeceaa58c7863c3357b6d40b868075df2a4d 100644 GIT binary patch delta 165 zcmezB`_*^CbioN$E1eg)Ds)(`?QmV!>8cR8aYdpSW8h>i@t=$_lUXD@7&lM$1(BPl zNz7uLTq~^<-R-ziMPae!0>+IEUO=G9ub^)Q<-^zt4fYC8onX984KS9EkG(=EMEfQb Y%}^ziyQMyDo-ZB4$!NIwkIGL*0QikKIRF3v delta 151 zcmezB`_*^Cbiq8UmClP?6*?@}cDSzVbXCybxFS)EQGYU*_)kWw$t)5cj1wpOg2>I& zBxW&A4w4e`tg%*DY`K7OV}mBY0+_APV6X7h3C7z57x(e8S15H{sRC5Kslf{f(3DJG YEA?rzft1qb`O-0*j0T(ksQhFE0MoWKEC2ui diff --git a/eightball b/eightball index 7328ff8589e625598ba49085527f22837a42a8eb..71209880268d19814c81f5f1a9c28227f1389ff5 100644 GIT binary patch delta 5065 zcmZu#33OD|8NT<;dvE65Oqe7ukWBW;&LV-Z3n2lKU3LWnXb8zMKqMFtsTKz;B2b`? zm%|zrgtBS~1Y`{eiqcA5uobkmP1U2N$PyPsq0sNYZxZS`<#68o`||zw-uH69U#Blx zuRov0_w5Nh!DE}+ynJN9%`a~Kd}zY6Cx(R{T){S8t$&qIoXx~OI%7LLT)HuB<{YMZ3~oZ_aTmZu zFGozR#{-C^SCh-~CqZhuVZuh=Z-HJ>##oRUx~Z=s6`Wm+xrz3;^)C2nm3IqIs{kI1 zTZ@p2X;vhHG2Id~(I&%$zbn!o0JQ!pt2BGTytGRnXh^NrIDGETlMNptTk0=75mS~Uug?JUF5uy>LdPNt| zk>VVltwcXOeIg%jQDPY^qs2ye#fT{gXN$?u#)<}bwH5{nY$HBI+7>B|e8` zwzz<2jwnEyTyYVJ+lqmZv=e(#VtX-DrfrSu{5>Lf65HX`SyZ8jeDMR~cM)SD??S@zgzjP-GWHPrWX0Bu(yu}H6$g>AP>e^kBC!QU_YjMr>&t7D@rka>|Mmf z@G5AE>;Y)sYQsB#8DKY}H!F_!12fQ`LmA@vN>~rF{{)eh#9sn4*xpS6viL&ChTD16 z-d%h-m~nP@VmcBNWE1QH;_{Sgl0AT!PKqh9hY^#{EhI0qB{5x8aTWF?irtNG!A~XA zcLGP@rj;BUBIwrpVj%Ha8=ryRyPGQ9L?rV*L_uCz0$TT8gsGgny?4<_5K$jt(O89i zA5>9G$)m`jseh}VqNA_EFycA#j_!ydL@ZI{CfT$-tMCSN-o#kUBW^Pc_y#&s4A+*u z5Uhlh*EoXTli&@M$6s^=TS-ta@86Nehsn7+0{j!X7IaV^!n0m}x+87idMqry^Ae&M zuA+LF-vT21)hv}Emjo}M9R8Xk_<#ahl%duUq>)9UE{k>!y1Na9I!fo9;TrrSB1RA&URU zOh+;&<1KTX%6OJ+Z<{nPkCPDZ0a$sF@De3tgucs7w0{w`Vz>uFZ@A7Qu&L)#{r)Lb zl^IraMUVc|RFyj{VN_LrLeCSH6k(|(p8;0RYlHW7Z$lh$4iY9N(pnQuz(Qlmzs674 zXsGYsWON*%nW!M3#pm8(^mdt#8M?#_XmwExwIRNP#1vy;>1K&OFkU{vmx>ac_8;`o z5y$M&H2h*8ja0W6N?&bqY**@KhO#wW8?k0mk~LXW8>?x$e4sX;pOH&zv-nqXckMmn zzae+irrBztN|xD;ih4VS!d;lf7`$rY1nT*G6icr8>GsG@xL#W?vZ0%u4&BFv(kbP5}# z${B$VqQAq7*Th8P&GtFvcQjgPQb2``35SK_E*Vwl=c8r2y5!_BH1xmuoE#I%AOp6HgHc{zE;lKL2)tQVolw#jb^h2PV^+ z8Xjgx1)@zkac@Gwc=8z;_PHm$lJQZIv_-YhguocuVWT6RZYBk=I&eTJQ&;GCkfq#^ zd-vu=seQP@>tvlA2+F3tiF~$w??Eg=mb#nJ{w_ie zVeF=Y;IC0Y`crwhK81fKKdH|Rs<3M#oUk*p{FJ;gVip`&>c_;)i#TyFV^1jW`=j9< zjU^4KQ!Yy@rxf!dobl@{^Bc`20*1xXZ(zi3-+}xRyDk* zTnG;Z`uoBGy&`=YPFmq)D+~At><`1H#ST_y!|a2BjgTqKu`^qeW3|{kj*vp5Vc25^MmX4!UZ~*?=sVrf{eZ z2bsfCbFnS>bgOTR*T@#H>CIk_)AavwB7{mU7o2*lRF9LB3SD}~s)UAEY@P1eY_-7- zHk%c3&23g%1+e~at$5>dZAzkq}W1o~Wt!y3{I%Cq)&JxDWtjEEwNrllu zr2$pUw_!F6<#!%&2TR%NKyvUF9VCsOue&v4HkI-!%o;sm%$&X&!=V6K8m+POo*gYt zYg?So|I+FF9jC#R=>yLkIN?7!JO-x`PV5ivnB@>=r#*!&W?xcl)y(M@t9BPC*jCTO zT^Vas!Qxuuto@a|ejsUhYZ~Yao>i#+U8T!BLnr%6Hv!z#9spDMHQ&L*0eGd`0eHBR z=6CLAP=glI(|o2ZIhYu&a1Oa0*rU?ix?Fy+d){U$VYLdXg&uO&=9(}&IY6JWd~KM0 zn5CYOO$P_@BeK__40|*UxSM-?TYTI)1->V%4*8?iv}41?ur%hD>kd86*GS*tE(6ce zg4?J*Cg?SCmXdE$-yih;x$7#aSDKGyGghubE{j8V>JV8OcEVBfj$Cqh8V=)c59h}} zP96bsTqa|5i1C_v@$g7BWS=9w_!T+#NCvNw>yH%1eNLZc?;8u#8C$IkQ~WTzBCj54 zKYk{4dBErk-91V-KRLPtmL@jUlk0@$s6=%7V^?N+Y~J@xJrOOGo43Vm4&OsQ2g4JIWZh zENCF*0}XBY2)Upknct8vHDpGWQ(aqK&Ksg6@P$0v&>{K&s^&Xg;Vl<1-O_g~DOs(* z*IZPB78;ZF3RN{oe=-StW*0g5*r-QrYI?k~C}`6R)u}|Zqdqkp4b3X$FSNo7T?EHj ztic(ot<>kpKi@SKk}4(P2<}WUU)d6rnQP_kWB!W4)P6#XG+U>L1sYY?(Z?8l^zoW! z;2&5?mW3MSLhe8{VO|twO9HC0eqpvO@GKek53?1l(?q%8cu#&=9y&fE_#|zicexLH zYpE))Q!>hnq^rKyixoOWS*F&~Qmf-VA(^WrmE`*(0bQqT)hE<+ z0${%43qambmaEAUWp*W%(*@SC`f94?*U|R9%Iqka?Wdtsw*>5bO&)$@taC#&1$EL5 z(Mh~v-$&lOdp{qmxy`ASH?8-*Bjo1&#_i$LpoHJ)aF zx=wLrDw?iST=}$UO}b8T^-v^Tr?`3(>Fz;r*7pNBAJ3oH3I+4v+ z$@r5Qe1hzQXSFOjnZp;!B`4E6MAC6Eh#a-hjL0z*W-tu_z(#H&Ziu6s&OC$V$0q~4 zSN-*qGZXUiDykkW&nvAeEuEG(s=Ru3)yyfCc>~JlmRDBIdbE7zoV@PcI_2k;PkW?d zPU)1&%KGxpZkhE9zl=2MpTBTEo$pvP&C4_R@--{GJV*21T=Tk@XY(i4eCFkG{{@LE Bk!An@ delta 5047 zcmZu#33L=i8m{W;?wPJkm?RTOLayl{7iS>cawOpfkxK;R5<`#xK`a1|kX}0Xf4disB-oh`J)^b5~hK1Uz^P%6@1nfj-3&$}99n&!5=cpo6F+M^Z&Et-SiQbXu z&Z7`Z??o=l9|WoC#;1_$uUVj_k;C;Q}2k zHsIMv#Nz1_0l3A8u|O(TtbkXX7>aOy(Hh!#@ie>|i&JH&r}^s?)>_K%Fj{LJ<%ZXxA3yC@v@t!mXKDhBO&s3Fu5w1IsM2 z3(ss3jWju84^lQ4O(1C@)}zFhqNfa0Cbatok=u$@@M-4&5BNe?kOsfF<}68yWkEDn#hZd~+ds z-ug8kdT)0qtlwxn%)1P3)-{@??p+B}>pIaMZ@j!vnUGzG1lA3b#QTS#bc=Cf68*m* zr^OYM;_oV3Zb(WQffg)7iE{jFVP%<$Y30A-l9M(hhH5Chms8#@{*wUCicw5={{mEH z#qn9t6!`m~eX9v?1*VVxIOR#;g<$&mizq`PUjgg>{(nGZrSNrN2KYl1Ad^1=*Mty$)8M29=DLZ*gu(=_NurNe=CaJkyqeV z%Jc_;qj1woj=!6rTkHDV(7guQH8G%$-HeS$g4|1>)t&um2)?CD@X?s^BVP@ z&$mGpGmkt99Gd#K3KboD0ESUZ$U8O#Lx@_c$Y%wVSXI#@i#J6h8z+sLOJ|RM{t4yeohvf9YKIBesIZx*Zbe{Zvepe(m7|i2K)}W zjRnB#96`Z02nx^$-&Y4a!AI>fB6%ALlP1U?HU&f52&Bfw4du(WL++v0Mwt!>)nxgd z0m(SiDRvu4ULxQoM{KU6|D=CWgKD(Heq8-n?VQ@uYa z?`FDRfpbxr(Rn`|<|*r_s>>$PNxS8iHxfcw1mUmdVZ01i3U%}WEsx(Kl21@o@)Fb; z!~ZaYNakex(;TTXzDl+?Oq!R+Nr>+Nth`8gff6!8-{mGcX(Y94xcfnGxIRN*Q_l&3 zNoq$`nGrcw3@|1V4<

1N4iX)p0HzI2q} zw120MjyUGGX*gqjG*aC^T>3Vr#_QC}3}tJ$)?>}2UEs1{bG&xaB}Z+}&5;S&3CV&99frJ2dp z@zuEB?}IwyVw4=XB`-#K42+mevRliiwxpJ{rg069qvEx2u|0wE-4^HMFR{x>J0!xQ zoXeCyMwK%JKZw497cY;C#+R*z@;e$WJl7&}NiYomhk{Jw!vi zg5fcCT|w~A7$ALA?ygPa$K>a=IUyBxO_URMM&@}+elBV@99ViK6*fQWU|+`ODepUC z;e7**Lh6*u0v##E{3vJqI?LEg`QH~5@N5BN-%#V_m&mc0!Z{iM6`aoa2SP5|)_AO{ z;ka@kJQV033J3I(;53}H!pT-_pQY#@MNG#!Se=ZpciOW_`*DOF$I`gGxUF$QER`@u zNgwZtpFwH|q-V?I?V0>JS-3rk&y?e~w{oC(!lH9n3y%z3B)2ClYD5bUb22ZDu#@f6 zbVNUCEmztSr;ue4ZBcOcoHE9jTh5v&X6g6PqA0T->WW`a@ZjZ5{QyKAbY+&a0a+-Z za43renZweXU|aC%R?h~np$%Ts>%APO={KFO5(Y(<3r^isst3qPg)X{jH3a7pA8Q@$ zQg8L5KU8lvw!ti87!CKLhcL+O#Mo=ZmbZzAr5e&jk2Ci1+0%;Wlc6&vJ@6`FT+ezO z>@KM=TDZto#axcC5h$;C#7!(^qaCTCAL$@D=lQNhd zqy@4j!rsNw!}8M3{`@J~byqXLO#|-e9^D*2Zk+j6Gh z`gXVPw}BvEuYOF>XXF4Se?|TNpzlxX1EgMI-j~JL6cut=0=iR&$cl&)j+)hS>F#Mb zj4$ubOYBP?wmC9`F*?L}`TRt9T-0UvJze=3Id@MpUMkn_$xo=EJ@}#VNRY8r$}lYn zhG*o@ds>d}NnP$RdP3J*>G~)g?ZX|0g*LS?V{Hadg!KmD*94Y1$}(dkt=?tEa&U)i z{FqnLF!{HTWqUjE7P4w@O3q4}RjDx$7BoIy{*$txQ=`;~tWSLJ-15TSM7WrBnQ`j- zIq0VH8&meEBju>N=DfRHRF{fVd0kybOh>A#(&c<1CfT*}WL>M+C8(Oe?uu+V`%_c; z_NAn%_4lTWO3=b1GRvr{{`!L{;4@ruz`kKqIW;|6S@dX957m)mw4;7%I2xK&+F@GZ z`7VOvB-Y>z)mHig@Un<%{8OPbABHjdCHkT}GG}MA%8Ts;n@=7Tb4_ajytl!rHc!i}rWn`{b_uLqdaS z3mxM=?5!tNd2Lfs-Zff=$JC!vR9;$Jim-=MA)BGPTUn+*OiQhrcY$QCl9ZC~Oai)E z*{YvVV+eqSithpPnzCF)mMF6Wshlpbj@7TGGJX|6_Elzk$?S0&N?Aj|cJIjD2X1$6 zh=!tUx*9?Q|gKkr_p!OJO zT`$Aa>_yipt_(%fb&4yG7OhFwDXz|nr0Wz{HzM7cbaK@ef?SB}CY*a1qo-6JKN!Tt z&ZUD{e6dVC)QtC&-SM0xCmqVhpF2wr1zTMs?D~_V7M>AZKw$>Z5CClSGsF#abkmuq zll=6M&8^z2hwg1!yXwpzW@>K9teI1Ci)IxSP0Q^w<^CCSX3fr>GHq(foT9r+OKYF| pwvkc0?)(=)zIyfFyu2BIX!T28o~>QKw)!0}&*D>8U-0sT{{h>2jfVgL diff --git a/eightball.system b/eightball.system index 1e5741823d0bd7367fb3c454d86b307fefc16f05..d8296c98862143ba6a1a140ef18c50c22c3eca9e 100644 GIT binary patch delta 136 zcmaEVn(_T<#tprKjFFrB1mCkVs!gsFZ(uZ>{9oLJv17A|M7Jf7IuPi}I5{Xp$%3b5 zrHVpD(E`Se4PHQ?$*;gt4CTYv3LTXSMYS;ArUo!;vTd+94_GNoAR+kE=8}*GZbrk+ JU*mtV0sztUF4_P9 delta 136 zcmaEVn(_T<#tprKjOLsB1mCkVvP`ZMZ(!t~{9oLJF>SMnM7Jf7IuPi}Xu(snQbnPn zXaVEK1}`AcGHbBX=8}*GZbpO6 JU*mtV0sz&mFZlof diff --git a/eightballutils.h b/eightballutils.h index 37215a3..61bc871 100644 --- a/eightballutils.h +++ b/eightballutils.h @@ -37,7 +37,7 @@ /* */ /**************************************************************************/ -#define VERSIONSTR "0.70" +#define VERSIONSTR "0.71" void print(char *str); @@ -45,9 +45,7 @@ void printchar(char c); void printdec(unsigned int val); -#ifdef __GNUC__ char hexval2char(unsigned char val); -#endif void printhex(unsigned int val); diff --git a/eightballvm b/eightballvm index 006762689a3f643cb45f66ac2839cc8a40957b13..2a7d8e25e658f846582c525932eede0e9c2cd84c 100644 GIT binary patch delta 200 zcmca}oAJPH#t90H1sfI18AbM-T(fxLzG-=;lkykukMFI$6dP=}c@3k3HlyL@w>l3b z7#D6n=jy=76v{kVz`cYqadNA>0%P9fW$yBf(UXt4D>2qhe(A2p*g9FjBcHK!a)XDG zYz7+x1Eaem0|Nuo#B5#-5YIyu%*)}OGVGM)9~QU nZQ-Xx8D~un%vENLm|U8x&L}Z?Zmzn7VLAhY4I@xH6u_7Ok<>mO delta 230 zcmX?boAJ(V#t90HJsTCv8AUi+9;)vSxxR9`hT-=d)oZen!GEJSuVHl1W;EFRR_B2P zYHXHqBLLESVgctIlXLxiME= Q!Z)3P!G;lNI26E`0KUpdiU0rr diff --git a/eightballvm.c b/eightballvm.c index 40e43a8..b5b3d71 100644 --- a/eightballvm.c +++ b/eightballvm.c @@ -896,8 +896,13 @@ void load() pc = RTPCSTART; do { +#ifndef VIC20 + /* TODO: Not sure why getln() is blowing up on VIC20 */ print("\nBytecode file (CR for default)>"); getln(p, 15); +#else + *p = 0; +#endif if (strlen(p) == 0) { strcpy(p, "bytecode"); } diff --git a/test.d64 b/test.d64 index 06ed87ebb47ae2d0b006a86e9616cab794b7d928..daf253ae52f336070bfb5d2c9df8f5c4cdadf781 100644 GIT binary patch delta 17481 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 WBh5i-u)26r(4 delta 9990 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 J*0kVV{|DM@)KmZf