From dc1d1743e6b590a48a74658c168cd79b352801ba Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sat, 4 Jul 2020 23:29:11 +0200 Subject: [PATCH 01/10] Add binary cmp make target between old and new forth binaries. --- 6502/C64/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index 0fb31c6..0694782 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -28,6 +28,12 @@ test: test-c64.result test-c16.result test64: test-c64.result +# Temporary bincmp target while the old and the new binaries are still +# expected to be binary identical. +bincmp: + cmp cbmfiles/c64-vf-latest cbmfiles/c64-volksforth83 + cmp cbmfiles/c16-vf-latest cbmfiles/c16-volksforth83 + run-devenv: emulator/devenv.T64 emulator/run-in-vice.sh devenv From 50d3ba749967e2955daf9e2b3ad934e68deba162 Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sun, 5 Jul 2020 21:13:04 +0200 Subject: [PATCH 02/10] Rename mk-tcbase.fth to tc-base.fth, and add some comments. --- 6502/C64/Makefile | 2 +- 6502/C64/cbmfiles/tcbase | Bin 21616 -> 21614 bytes 6502/C64/emulator/build-tcbase.sh | 7 +++++-- 6502/C64/src/{mk-tcbase.fth => tc-base.fth} | 4 +++- 4 files changed, 9 insertions(+), 4 deletions(-) rename 6502/C64/src/{mk-tcbase.fth => tc-base.fth} (56%) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index 0694782..8217311 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -47,7 +47,7 @@ run-testbase16: emulator/testbase16.T64 # Targetcompiler targets cbmfiles/tcbase: emulator/c64-testbase.T64 emulator/build-tcbase.sh \ - disks/vforth4_2.d64 disks/tc38q.d64 cbmfiles/mk-tcbase.fth + disks/tc38q.d64 cbmfiles/tc-base.fth emulator/build-tcbase.sh cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-c64forth.sh \ diff --git a/6502/C64/cbmfiles/tcbase b/6502/C64/cbmfiles/tcbase index 0ff1c5720693c489ce62f2d5b2c02f5f3d559acd..cdbdb8d40b118936c50474d72dc83c235919c99f 100644 GIT binary patch delta 4335 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 delta 4366 zcmZ8l3vg5Cl|IsyKfDUTragk@s9^CJWvt4n9E7&g1_Z=p&Jc9ukIS@8Ug5s7h4sXbaLUf*4MnRoqP4Z zFDhi6=UQ8a>lm?5Jon5aX1THC1(bHB?!8xmpKW&wrw#rrTTdTZd{co$Cr(?HD!5{me*$$X75v#MLzSTd-nFVMG2A5YZ&3^W7Tm@(r(LR3 zn|is&ZfYywf34bdCY_U#nOL+Sh4~7B5$FK-oQV<49HTdLKh=(Dy9DSGmW5BDm_+Ru3lW&PbWuRogZKU$-+!F?!YZ z5`pj9nM@7=5cr;*$xorXHwm0XP(aJ!LkRvAedm)`Z8Dus4d?B6TS$v?oEqYGyd(sF zBybU3=W(CyM7w5Z0=Wz>Y9_Q|XL59e#|eB$zUQyno~c%-LG8fILh$By5Y!M@z+)5O z9e7f-{N%-IHLNFqmY4n+H|lYq0|bYUA`>fk}?m+{@8A<$LfL z2OZ?u>}2+k>w}IzBi2HzWd=7oMK^uS1;lCWD+kJW4skXa=KrCLml4NeVcuQF?<1Z={Jk<(^#zcS5A!2s zMNJPSzICIb2XN8<0Y8|$V+|TW9Cq=%~@P?hD!ofx)V)~VcPuhqW zE)qw|#B`asw@-1Y?C}lz0cYS|H%HL=v6}<9l&*%BrtP%LsXnGVh8_I{^&ZE7HL)&Y z_*r8w7cq=!b+FE=j^^`HYAPw^!u&UOP#4s}n|-^wsY8eP&gO38|J_lWGJLo3BmDPz zAKB~Q?^BfQH=38~MDDnumn&InLY=*iK&MNYj7~`yQ?IbuMHVA`)1^$LqSKPU1ztBo z(4{IAGMQxlXlwmQ{m3&rjPPR@D@qp<=|p<^XzTvb{i6}rDtN`k6vV8*WftWNE@dGu z2FlK&u)BHHdItTfo!5prHL}my_XOA8cEWI5^907K8h+|gPRBEOEELgX=Gq$m#S^Sj!B=!{ z?J-Wo(X00mE9OyN%H+h3FhA>|(OL~}dsNfKD24fu(pK$Nd1_4&L#=7qaNS)xgUGe& zXg;ro+aCFJTbL*3r;ODdvaO`t*e`E0hxzV)ku!5DkE1$>4d#45JyO+|5!1d!@QY$ z8#Of`ax4AR&qU5?aP!7Z<5kOd#OkgG#!{I%tb>26JW`26n48mXsJi0qG|W{>mB;X?bzt%- zN~N;sBG}_oMw3bEl1Ue(LmfDL@)+LoPTv)8+~D((>a#vsQKR(biW(C%KIM~lv`}kp zd4G+_?eiVcExIPTW*;pu!M8#u9o4(9c<*j&f|EX_l#Ax^Xc5DiB4^5{oJvO1vtjdZfi6iz+`h` z!=aTQ_*h(7PR~hBQOq%oXJQq-FNoyUPIB_ycrEmjCC`g4O4bQHTTz8ohvFLe(r%7I z`d}fR!{&j#oNj&q|3amXQmPJ)8xZJ@8_k1S8}kSYR21Wq4?n=wZQ^5|? z9!A*r`E2)MVHes;UjgE9Cn8e zxf=tAhLo06G>4hG=!&2bO>k_8wS1hKi!RVjVDD8HO)m{8x7?)@_52XKs<_T6S#(_W0_Pok;JN;#pX@dOO2zHefu|2_Kj(q zL(h3?Svpf=kA5O_#?!Q=3>ZDW^U4K9<6^}-UbTQdvKfvJD=q103jI>GP%o~BBUmD4 z?tDnm-xgRwZ>r>jrRKli2zvDmC!1ztsPTeLy!cJf;os@T^~k zkC1wQjZrz@vCdDcd5HLB_~eQkp7Rr$^2?@5`{2;|ycQkdT~{Fh<8G+I`?P57#M0J4Kz zPAWZd3W*GUTsuZBSmgoHw7I?8xYD+{y{BPw`~N(!xqTDG6Z5*Qq1$*e^rW{Xa94AZ z|BcIxPq_BtOe!VH-LNTryKrQO`5mTiBl)g1?J%7k8Pn4LB1q*29hL2GN8W5CW-I(* z diff --git a/6502/C64/emulator/build-tcbase.sh b/6502/C64/emulator/build-tcbase.sh index 01cac95..45bf1a6 100755 --- a/6502/C64/emulator/build-tcbase.sh +++ b/6502/C64/emulator/build-tcbase.sh @@ -1,4 +1,7 @@ #!/bin/bash +# build script for the resident part of the target compiler running +# on the C64. + set -e emulatordir="$(dirname "${BASH_SOURCE[0]}")" @@ -6,8 +9,8 @@ basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" rm -f "${basedir}/cbmfiles/tcbase" -keybuf="2 drive 4 load\ninclude mk-tcbase.fth\n\ +keybuf="2 drive 4 load\ninclude tc-base.fth\n\ savesystem tcbase\ndos s0:notdone\n" -DISK9=vforth4_2 DISK10=tc38q "${emulatordir}/run-in-vice.sh" \ +DISK10=tc38q "${emulatordir}/run-in-vice.sh" \ "c64-testbase" "${keybuf}" diff --git a/6502/C64/src/mk-tcbase.fth b/6502/C64/src/tc-base.fth similarity index 56% rename from 6502/C64/src/mk-tcbase.fth rename to 6502/C64/src/tc-base.fth index 54a605f..ba4e7e2 100644 --- a/6502/C64/src/mk-tcbase.fth +++ b/6502/C64/src/tc-base.fth @@ -1,5 +1,7 @@ -: edit list ; +\ loadfile for the resident part of the target compiler. + +' list alias edit : .blk ( -) blk @ ?dup IF ." Blk " u. ?cr THEN ; From fff44ffb9cf094aaa0283ff634ec08a47430929d Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sun, 5 Jul 2020 21:14:45 +0200 Subject: [PATCH 03/10] add testbase cbm binaries to .gitignore as these are now expected to be rather transient. --- 6502/C64/cbmfiles/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/6502/C64/cbmfiles/.gitignore b/6502/C64/cbmfiles/.gitignore index fbf7330..a36d65a 100644 --- a/6502/C64/cbmfiles/.gitignore +++ b/6502/C64/cbmfiles/.gitignore @@ -1,3 +1,5 @@ *.fth core.fr notdone +c64-testbase +c16-testbase From 67e498ccef0a2c1aa0c6ac4d3ecd1edf04d8a6f9 Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sun, 5 Jul 2020 21:24:39 +0200 Subject: [PATCH 04/10] Rename mk-c64forth.fth to vf-c64-main.fth. Add some comments --- 6502/C64/Makefile | 2 +- 6502/C64/emulator/build-c64forth.sh | 8 +++++++- 6502/C64/src/{mk-c64forth.fth => vf-c64-main.fth} | 0 3 files changed, 8 insertions(+), 2 deletions(-) rename 6502/C64/src/{mk-c64forth.fth => vf-c64-main.fth} (100%) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index 8217311..a323731 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -51,7 +51,7 @@ cbmfiles/tcbase: emulator/c64-testbase.T64 emulator/build-tcbase.sh \ emulator/build-tcbase.sh cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-c64forth.sh \ - disks/vforth4_2.d64 disks/tc38q.d64 cbmfiles/mk-c64forth.fth + disks/vforth4_2.d64 disks/tc38q.d64 cbmfiles/vf-c64-main.fth emulator/build-c64forth.sh # Temp stopgap to fit c16 into default use of VERSION=vf-latest diff --git a/6502/C64/emulator/build-c64forth.sh b/6502/C64/emulator/build-c64forth.sh index cc0a10a..bfbfd7e 100755 --- a/6502/C64/emulator/build-c64forth.sh +++ b/6502/C64/emulator/build-c64forth.sh @@ -1,4 +1,10 @@ #!/bin/bash + +# Script for target-compiling the C64 version of VolksForth. +# It uses the tcbase binary, i.e. the resident part of the target +# compiler, adds the transient part of the target compiler, and then +# loads the C64 VolksForth sources, and saves the target. + set -e emulatordir="$(dirname "${BASH_SOURCE[0]}")" @@ -6,7 +12,7 @@ basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" rm -f "${basedir}/cbmfiles/c64-vf-latest" -keybuf="include mk-c64forth.fth\n\ +keybuf="include vf-c64-main.fth\n\ save-target c64-vf-latest\ndos s0:notdone\n" DISK9=vforth4_2 DISK10=tc38q "${emulatordir}/run-in-vice.sh" \ diff --git a/6502/C64/src/mk-c64forth.fth b/6502/C64/src/vf-c64-main.fth similarity index 100% rename from 6502/C64/src/mk-c64forth.fth rename to 6502/C64/src/vf-c64-main.fth From 31781aeea733819065ebba70f4ab9e8953661b55 Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sun, 5 Jul 2020 22:46:37 +0200 Subject: [PATCH 05/10] Enhance the build to target-compile both C16 versions of VolksForth. --- 6502/C64/Makefile | 24 +++++++++------- 6502/C64/cbmfiles/c16-vf-latest | Bin 0 -> 14691 bytes 6502/C64/cbmfiles/c16p-vf-latest | Bin 0 -> 15239 bytes 6502/C64/emulator/build-c64forth.sh | 19 ------------ 6502/C64/emulator/build-vf.sh | 21 ++++++++++++++ 6502/C64/src/vf-c16-main.fth | 34 ++++++++++++++++++++++ 6502/C64/src/vf-c16p-main.fth | 43 ++++++++++++++++++++++++++++ 6502/C64/src/vf-c64-main.fth | 30 ++++++++++++++++++- 6502/C64/src/vf-main.fth | 24 ++++++++++++++++ 6502/C64/src/vf-pr-target.fth | 18 ++++++++++++ 10 files changed, 183 insertions(+), 30 deletions(-) create mode 100644 6502/C64/cbmfiles/c16-vf-latest create mode 100644 6502/C64/cbmfiles/c16p-vf-latest delete mode 100755 6502/C64/emulator/build-c64forth.sh create mode 100755 6502/C64/emulator/build-vf.sh create mode 100644 6502/C64/src/vf-c16-main.fth create mode 100644 6502/C64/src/vf-c16p-main.fth create mode 100644 6502/C64/src/vf-main.fth create mode 100644 6502/C64/src/vf-pr-target.fth diff --git a/6502/C64/Makefile b/6502/C64/Makefile index a323731..a5cc9bb 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -8,6 +8,8 @@ VERSION=vf-latest vf_blk_d64_files = $(wildcard disks/*.d64) vf_blk_fth_files = $(patsubst %.d64, %.fth, $(vf_blk_d64_files)) +vf_fth_files = $(wildcard src/vf-*.fth) +vf_fth_files_petscii = $(patsubst src/%, cbmfiles/%, $(vf_fth_files)) test_files = $(wildcard tests/*.f*) test_files_petscii = $(patsubst tests/%, cbmfiles/%, $(test_files)) @@ -32,7 +34,7 @@ test64: test-c64.result # expected to be binary identical. bincmp: cmp cbmfiles/c64-vf-latest cbmfiles/c64-volksforth83 - cmp cbmfiles/c16-vf-latest cbmfiles/c16-volksforth83 + cmp cbmfiles/c16p-vf-latest cbmfiles/c16-volksforth83 run-devenv: emulator/devenv.T64 emulator/run-in-vice.sh devenv @@ -50,16 +52,18 @@ cbmfiles/tcbase: emulator/c64-testbase.T64 emulator/build-tcbase.sh \ disks/tc38q.d64 cbmfiles/tc-base.fth emulator/build-tcbase.sh -cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-c64forth.sh \ - disks/vforth4_2.d64 disks/tc38q.d64 cbmfiles/vf-c64-main.fth - emulator/build-c64forth.sh +cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ + disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) + emulator/build-vf.sh vf-c64-main.fth c64-vf-latest + +cbmfiles/c16-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ + disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) + emulator/build-vf.sh vf-c16-main.fth c16-vf-latest + +cbmfiles/c16p-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ + disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) + emulator/build-vf.sh vf-c16p-main.fth c16p-vf-latest -# Temp stopgap to fit c16 into default use of VERSION=vf-latest -# until we have a proper c16 targetcompiler rule. -# Missing part: Moving the target machine definition from vforth4_2.d64 -# screen 9 to somewhere more flexible. Likely two .fth files. -cbmfiles/c16-vf-latest: cbmfiles/c16-volksforth83 - cp $< $@ # Core test targets diff --git a/6502/C64/cbmfiles/c16-vf-latest b/6502/C64/cbmfiles/c16-vf-latest new file mode 100644 index 0000000000000000000000000000000000000000..473cd3b61f618e2f3229a4e7849924c43054d396 GIT binary patch literal 14691 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 n3wt zyNx6wzcF@dXXkcv?EYvJV*rhFdEaDLQa;iMpBu$vkswwh?$JHZyl)~IXoTgaw0I(X zJQ_>k;&&q}pJE*tOrlVHVoSl?+<=XoW~1V~>TzYGf@Vq(9YP*QVdC=yBlfv)6bHkv zhvGTf1CuwmM~me=Hsg7wO`&ED3+*hv9r;GvNbNL8Fx1TtrDh9JaB~jgR@%FAbX@vD zLp{%Qa(6MSe&GtbZAi{ejBO|Z)><=X?c`_1R@9F%1O7X>7kvSWtS3=f&b6T#^utpKAh zGbuZPe`*#-q9GK6pP6Y+y$p5~+PTcW8Gd7y;)#Vx{HQwvyRUSfFh{Z6oJveb$&a5l z(^2qDsN$!?DCi;{9gQ(-PLEDbhC@+K-qdWJ)I#7DmNZNy(0-4hY^m7?3EBeXmW(ls zVH0Q?#*S^V^rekpVKIWg(m0#d0#{q4k$GP`#z{Aqt#EmwkuyDGxUUK3S#$MGs! z7HSjcyDaF(sjfw2+fj5{AYhRY2+#3V%cJrmD7+Ni@hMP9*=2dva!?u1f7L>)4x8^# z(kd5Kg9FQZg@MeyLbgBmPLV(Jz^+{Xaw`4iHXrE7!*qvC5^Z(9jb?BaykQB4V&Q4b zea-N8V{CYovy7 z89~}?M+~yY>svN%+NjGyL+6E;tkSUrW;%G-XLRH(7(EFC{WTkoD?&IGHLE*<^$JV? zTQ+R2_qKR+8|v3Lp3xmPH{sON^}n>zlzO!J5Wz{^feWg$GWs_yNGG+_Sx?|WQAwiR z`Z(@1Wv7hQyTrO4&RE4$<3X3N0R6HB13l~4Lw+pQ_{|a%=81>c5e(k3ifSV7hi;M* z_5cQmLcalvNydIdbCor}!@#$ER^7#n5koV2d4mrtJBF|&J{&NHt?|R&R%Qd-S|F+A z-If!hG74aF;Um>qh6HYV0q-ogtIn(16rI}Ba}=wS#Z$BSYtn z&>lzIq@&7}7$}I^0E|siI~ogN5VaoVaRXG@BzAs8;;zLr|AVCmcjSmcaQ{5#`&^x9 zx{eq`E|)7@=2NsnvrWbyO!a{6f;DKSQ~9j0Ng2hm9`*mgCcvKkHpaSGbWvqcxcG%%C$$Ia3q&1-nsL2 zi&l8YmUcXthz3U~slH(4L*O>ZE|jL`bvLA3gPSTMiN7O9S+*>-v9Z0ry|G@m?pm*x zx(*@&d5$))6pB;RRNN*;&ccHKdvLY`!<_?>4vf>d46+SwDa3$08k{B~lIPHs&0h+X z%coVy|GUMR+5E2jF#@Ho&jtQmUD0TQ0?a*43fwyPDQFPlBbziWOg3!+y9f>EScgmZTs4yQ` z=Ho`>Fl2CX&Iu%VuQ5FVlH1TuXSafmJ%lxUJ%|>` zBGZO73Fc(kxk9iLUZ!0_f#p0WI-^f(11#xB7G$|78)~zK%R04Z=g5z2f(pCDg2RV) z+OLG({U&R^-_i#ohQk=1`;Gey5mYO({RJ;tMoe#6 zhxgww(^j zA~(Y$j!?~z^vSh8(m9NVXeup_xtdPilx6a33LpL-n~ zc4T0Nhy{3z;F51T%8IXt(~dN}V;QG<>KDaI1pL#nY$|5wYQ59EeAvq*k^07FoZa;x zE>8c70Sd2!lqKP$7?>Psr#mICyMgDxdE;sNBKsU^~B}z5!Mi*WXCWRaVS6|L$08pk(z1c&%7~ z8&$)8cOH6)(`YJ1NyggiH#YkeTOeF4K^5R_Q4M>lm<%CVzh>Moe;(etCNm3J31P8_B6l>P77x0_HP0nd(=7O$6UU_5>!Y<5arT;!E>_ARXn$S#Q^fwW8FczT}zt7G>&eTpA` z-$^l9m}0W`Fec+_;@C(0ksBGc#`SHRZty8?f~ZqwrxY(W{YCLB*;@)IL8DpU1Wd^z z@zivLHi+tlRQ13rPYIv5-2~1Od@n&I7K&saP{j3BC2_8_fWbDF7W5_dVxQt>Xe*Im zDU|Ri9ucXpD>vRc91lQ9fr@#`2ieR&w)7TgFBS8M zH2ReM7sXpj32AHT5^~9*U?LQCpsT523$j3dmZ1{bEpT_K)EpeerzW)dx4<){60S91 zyWY~7{gYCE=^e=AR(P>gG(DEsQXqg^;kTv2#47TDw?d>;YT;gR4A}go;j%NjHjHiV z!;mA(wNNU^gwax}_t=$__?PE4UAo`G4Z|hY2T=_(VMczv<+5BaKdNZsG6G7-sV5Dt zz;1<%vhf8%w_aIBIr^>ODMMw$XCz!!Zs&ko;f6Bd=)|l|2V0@DES=uOMDb0@(fwtI zux5$&+eDRYqu)#gNJaOEDXP1;G=fDIZ2KkFlSkrDBnqN4y&O;sjgEKT`S80)C2O^DX#ZxhP~u$GctCtt!`K zmET)#R8^Pj@i(Z><;!nS zoMO#y!O3y~whfxMIf8TL!W7p{&D-GnJ0qn}p%M%R60E8>8 z5REzT5Up@KlvIc&9MiM59Q>}W5Kly>Q6)&Uju^z#4eh$oQi=`gJ-6q7UXI!mYS%sM zxlrz@7-G6KcKEcG979iDr^|`gId9-Z2_K7CTB^i|)KwL`89y$XPOuY~-T_xtVEqas z%5>;}pW%2hdM80q+@o@G$WpxFX~TSmGL2do2OW6D^ei>l0U1dVgBE18%NNvxK74$52@ZFmqI*4{L4L>2qiu0T4 ze70l2M9Oj%tmiJa988b46qd=WN&tWSrGx>h^@v5;za6VxH&^v&$^J^OYj4@qsJo`B zQ~N)2SZM&&R>r|-xW_Y;dWDpin5_&QC5>~W>IzRPXTFEJD8h1v5wo{6sxL=4##zW% zf(eU<<9lk3>SZYWmAv4{F~g$>maic7XwT1GR~f7bDYsP-)_N=jeS{2~lst2zVm;G@ zWiFb;b(OOfJSXBn_Vdcp>C%zLpdKo=^=Lnyb~3&F-A0Ew3Xk1U#^xeFqmBZ z;%cAbJ210aGEX_V`gaKFgukzrrsARb`p$zi!R@%ibXn60g6gHycqdsjFVq7z+KKkn zeEz%*&tw+&hSuB(dDY9plkw!Kuj3Ls!p^{*ID+{9_zJ(dS~5Pt#Sw+o*H`-#--Uas zC6=*R922CFa&q+#SCa}8{gJA>@LLRp)%=bhL<`Z&^y02(aC8T%Wq9ww-$@l#)3MX- z9hFY`8>-84icbw-#On*HjgnuGV`xQrjez+`^;9)yU$iXVV^LogRtlb~jxZ5Mz)(+N zH5HJ*3!~LyetHpRf*ZJ?M#>dfamI8VLZV9*+~yn#3B?;)^?JhF2{kp6iRffBiLZCg z?1XRCNXGHHoy$je!mgSnTvoksPWRTJOGc^fQg>9YXEL#X*-<&HzPIKMCH2rI(w2a# zN!e6MR&6IdP?Is92!|Il_;yW4WtW=n=IlUZ+mMK)j=t#vCk-W>uED8IVNa8?qmqUo zc0q1JS5A>|o~Yp{k>5W!DV{HekU;0-BS8nw^B|Tx_|ogE7RqU7Fka-3{uVs?8H{YY zu(VGwI-uRCw?+j~k^1D@GIQvN?07^}H2LEkK}**3;E~W_u4mTb_fqU#&!nLOexB2* zeI4(eI<^0W(-~WX&pH-vbJEa|-YNALpax(LWW%RH27e(Ymqn7oi{*jBa6zExJzLKb z{4(K}*_*aDUKFX=DbYZxiSJEFX`fkM0hD)Jk>e_n&nMe!D3el7B^))HKE zS>B1Jf%f20e1u2ai#`ZfVL|bsO+AAJHM&%$9tXpp*=|e+sesg}oth(|BF@1zlxpjc z%Be-&QxR1L);ao$oZ2St?E*R8k5p6}THMR0@4F#u&9br7bTT$sln9d&P{>G^YV~V> zuy)njx7Jc2v`gJ(p%UE?79L4z;Cm2UE8&W@R1yr~)KhB-!Ke5he7aUTO+WKl{OD-y^?15KYqOlkj_+N7I1t3!qSrn@4b(ym%-|2K+sw1r5)}@*0wj#)3o=#+j_ANc#Sn8gLBR3?DxXY>ZPc%*p;l;z5TanUtBn- z!zAe;h}KK61R9(Apg!;>+YxzU*<2ucC!AaI#L_wB`4GHYFQxwR@n!D8IRqjC!XE~q zTgs1x8BqP}6>rq{X#X|0#GR=3DINxmTeNBv1AiqVR^sZ#Pf`k1uylwYyvm z*ERgLVMoKhhG!dIZ@|*>+Q18&Cp@}|IVvKfas@pUo09Ti zBkrM4m17bQNQ_g&A{N8zX^4IifB zwf9)q+=%Bt=UF5@-jwH2&@{^C5zuRRf)z$&_$aJtq_`a)XC!ZF-1i)JhyfE(n{c3j zA)SVL$+YiTJkbNt-pI{6g^MB%Hz9`u@IWJ`k<+m_y^U0}7j^1x4*b6w(-1s15u^7T zYW6h2WIZv}d z)3DB|y{NcCvwj^ujG(#@9&o!y%`U&(*szYWOMDGM;nM9cYPPt^YtPOF*iKh~rA5x# zIs~(}^Z2t_NO8%_>&Ot$%K?=eAD_)IA`HD><$!W{c^y?S6z+UAn=MjPMPPWo=T)vp zPCYF340G*lYGc8H+{`c6QSp(!=z+jC;}Ao&n8$I3g`bt(iv<~)3kaToo$E62QZ+P< zZZU@X&Ml_9@yCX=Yn|23(!%1xdvu0%IZcLjanI`&_pN(CK^V&}HMd zYs5?I3|QXO)I{;&@}|d|X5?i}B7AzvUuyK^k=W2RtrRQxPlBo$|Cd^b9@_BbVLirX zeBsEc{baQR@34*cxfW_lL`p=jG)w97hNx&p^lH9M!P7gxqMyYO*r}x%(rjihp67U7 zmVa8SL#d=174hSzak^QC{|&Av9>Wyw1H?l?^`D&+ z`JrVC2<-ope~GwG@lfPwWPN7Jx<=RX)q|1PSSY(BUzcwy$+g+D{q`cOZtv7oe}X5i zZ)(bu%6b#-6M7O3iyoMoIye9DHww@t#RW$K*<&%EKlo5muh*mOP4K9C@AIg8g&vJ7 z4wP_Lk}MYVM@|G|>oeV+RJSM1n;I1krVXaLdaO$DB#B2Nk!T#K;I$-aBo;mz9+|YV zi7I$INjRFjIZLjB50Zp2EXAuJlq3v9H)qXNK@5Qh2S{_i*!;^|9$D{gJu-Y$sQP7SbNT5sLm9e<7vJT-n zIbvzxd4(tzt?(%h3K2^KzgIjNi|V6P{W(@ciYLlre^GdaG!-FEMbs_ZDeRYZ3SGU} zeNyp6to%Ei^Yxi_3wO%;g`KiqA=`o&IE)B~Vc;u;FjkSFoCQfx-9lUu13INA7KlZn ziAn~RD#gK5;jw0AHy(e#&@P5yq2>Tb4Ep%%w$`mzA<;Forxi++($=eyMaTli_`(&|h(iPz;D- z>;;^y0cV>GA7YRGAJ=*X&bWLc%GK zs1j7Z=|K&DEdZ@AvUk;RWLL8rk5suZYF39b73X7{rj4Lc1S$Yz7z&E_{qx$@oYh7^4>8ARbqXqhbH?9%~NcSWu@BX>1(e^J;M{GBng<4X7p* zFRSYm0o4lTnu377PbXUG(5sf@(dN-;6AGjHnu1z~u$6WfRO#@kTAYV_(PKri!@+d$ zrCMN>XxLD}_(4&zB_y)fwRKmf9xK9qROE7~Of9Q?&e%Z?gXixll58EQ+Ii2*$ zhK2B78ezaHVtR$Tk7+_|i;0_1O9ryGti`YsPq$yzf~SmASOni{gm$Z)=@qaWWrsz` zTBtB&_n~-ky_t+K&)SHzqGuLCJtNGw-p2HbqN8^)z2fMwo9UHCk1m3>jL@Fl#*}o+ z&I>wbXq=y+(TX&(UtrjdGX{8;5s$^jgOk>&DFf_hB!j-8QLF(Nz{@PmwjW>&@Eb;- z+lSwOU1?3>1l%+P^d^v+ zPC)(1gBG$!5i}U{ahzMm!qiethc+IZ`ZAW$Hz}QZ4V$TVD^0M073MDKWcy`_qTVTz zdfZ|Y?7`NhJuLCyr7xoAP0+>4#!rUFLgA73S?=Vz1l_Wrp%nf1ahCS<8du43U!1{ny@0SEvBL2siOK&4cm@m){Y4h(njtP(P)-8- z3F}sxp)gsPi`B!L=eTNBvM6^6*1hbD8tQIN7LIe!3CUEwD_O9#$J(axa=@FDMFCu& zRX1IKELj-9s!tm~+h|VL6e}1~Riujc;r9e8qfDqudD0w+kp5}Y ztWBYoAE!KJcFZ)LR}tB@Dc4ZD*;FFUgn~3%ChSa+4n$B-;>e&Dp-G~~*Hd=mr6n!cO7+tA1#c69WjI1>dLa4CiaRV3u&O{lZXaGdd4QmI`EgIM{6M&SQ6K zyQI-rHr%4!H4yWS_(KnA(LdanfVN})<^<1tufdamz}e8E-Rth&{85x!ugi+Ht^&Q$@YeS4%nG5dJ zz*s1VtlE$gV&YQ6T55bWH4sEi*JGt7r@j@T_o>3#0~|(2YH%Qk&To(P6K#xZ=}Qfs z428*Ai6MN9;pvyL-%pL9ee1DKY6B{&wI!3%c@`upQZIF{_OPHasBkmeZ*`sf&g$o-utIz0com3h#fCK?~kd^3&remus| zF4L}zgNf1%lgVT>89EqLnk^Zg476eGEhdktLwe4Ly4r9oI^jiI7V@H9;~f>RaVK$S zKD?GD9M0tBnuL_3?l7_r$vJJ*Va+wgizt1E(ynoRBl#)!G_KS&uB&OTbv54PRu;hG1=8{1oZ(2I4RJgcT#R{^ zM#d&1tq<40EyQCwn8a?%Eb$sYx4hvsd~QB0G-Y;(J%*=@rs;Jbi+z(1sMk{R<@Az`XC&kOFF2r5xHhRkCG)QAu?bt{T*&V)vVagm>Tqa3*juTG{>6WFN^P&-A}&3{YbV54C!K84xXmMfM@nMoInwjr3-S9Nz%6> z`xQY`x`=~tavoX{+>tKHoWc1P_m;k;lUJ=S*d%zHl8#E?LI7QcQ?lgs>e>-P6m*F~0%m(R(%Bx5bfhN z#rNq=sPLodZe`(gl6YZ*^{EDg38SJQyAtdWWAi1_7^UT#D~BhoaZcS&l`&dfjwM zinU|W|KaAk82WVLP%wrBP9~8Py%;{yiK0F{v9mf2>l7hVFNQC565r4ex#%a8?&W|4 zdO;R})TvMbpqgC_O1;p}HC0F`rZD>aFkO$WUW>(6AGJ(bZQxt=*5f1!UO9w z0m@*FUR=&q9?<{4PMVa#M!l#!Ji-t3fnGE)beu0A(~C!=zUht=dJ#^b$LiM8CX~Tv zddY|5!Pw~@>v?p(nrsyxVaKidI#oa~Vx#!yRxW{mA_cz>HSGj0u0xvwfWe?qNj^vd zY(c)v!M|4R*(nl{CBQBej~=JE=3l^(KmHwf-9lN;=vXW~a+J7aehP7kNV5se7uuZ4 zj>Pbzhv$ax>JVB!4&QoM829*wrLc9O%+u$*^2TW0307Cr+#K3^`qlN!mxGR&QIX))n60m)PdQzHwNA)BFC0@hDK|KX` z7mw;a#>4ZvWqSwp{j$AB^)An%F0t1jFe*iLOlZipNKelN_#=uB&cRp4Z>XowO6)T_ipki6OuH z7F}NGRyyIMMUtp5Mj|z#@GS};*y9U9y-#&bk-l(3LGD8U%Qq+Ex1NN-312P}kNAcW zVN1c;MI#HF@U*KyXON7JVK7F_Rt1HI8sDft9Ohwim=nsS1{>$d-H)tP1yu%N*1{gE zhF$p8BJxpkP=wZ_JXgWphNl){bkJkHrnshPS8vym$48E075vojgc*^ZGEil|!G~q1 z{#An;>($^jJZZLZz1ww4D>W@r=95qy$X-vyki!Pulu7*IrZeRTil4O+K%BO!=&;5B-fAXf?+B{QmLb@gdxN3P8xUCP1>uMm1j&ptdF8KBLSZ z89|GH`1I7$w~uZR3O+5?j-wL^>PJU0FS)1=g}hM9UIUl09D-AHvg#2D)4htjZF$hgV- za4T(X$vQ6lprH;hZOM)VW8w#xLLam*w#twkiNcW5t7<(U3t zq8^7y#PU6@+A;Jy>)=b1JY#we-{pR7s)NlLQoi0}-H~w~&p}lnaF9cSAv;D$_3%W7 zc*r+8Mk_$?D}#icntz!g4uu2A25)81oH`lo$g**feLcLFA;l9568lkiJa*scJed*3 zbn|#@G)#8hVPlPglI`o1r;nC3;lNoX0;o)E)%<-Fst&p0jd4XAup#f_KMJrsKXyjCnANMuJ zyo|=6O;e(~*-Uk!{D2wlIOVknZ4!gH1AVI z)88}`sY4m}s%Vw7vccZ@okDNIP9fW!dY{OXuxE3sXFjEVQ|tG%q+z&2Dv7o_-AXf9 z2Jf1KfkhZ6o76(y#Y{_wHWdQsSLZPN+;W)j z(?bl+i1#FxLxx4-z@-G}e3!!$7QsZ1b&th{Vt;_yW1-<)&|#6C^uRwz>g@w@{Gb5hV zTwyth2Sq7~X3Mj<(-fUD7S|lh3OH*Kj|}=8?o71HW_0u{KXmyqS>wr&m@rP<&-SD9 zj#*R_SwA$B6tH{IK@@rnm`pNu8|q6e=`9An=CQo|z(Foiv_?O<$@ZuW%)t z$dnL1o_9bcM@4%Ab(4-VS7IP1Y9%mMN%=q|fKJp3?6xwN z*{q9f%du}NmuW+O#k+<$XoOd-zB2NaDVTLDf0Iir-w4O8ax?=dlOrgr7xB=L*o|wC zE@6KvWxP|T^A?TpiB*2W7Yq9aD5$<@;a%V+NXn9qPs?sVwFEa+L>zx_vZ`R-`0ASG z%I2C%UF}+zi@Nq909lSEFlUL!M=7~YgzQK!Jp%(PhxCpWd?#M!iJnS1K zB;x15jm@766wAk9s4hd3ft)Aj#B&uqpCvpICDHidzf~}pB|}9Q3yyH=a}|7y^~lH= z=CyjP$Fuk#n+}j_E0}Mx+{#t(_bf3cTQSr>j>mzPsWjPEpgz%9Rq0&os%*YRw|Y%w z)pBmJ-ylGYIi7VdcWQ*I%odMDMse;mQR;9jo1rl~9&gWl18BC%>%M3q0inOMI$}>o zZ&%c*P++ObI^S_bR9QzN;YA= zksU`c9A=O8?d)GmHI!s4l zI^Sz_UA1*%fiACR34zy?CP5PI7lCA2ntw{-LVkC0u;xUiV$+T+!g8GHTc^xdu5oGY*BN=(g$@gqj zj`I9rE0BaLYwB@!H-k7g?m7Wv-W(E^n4NrJ(sXHP5a`^c@Jr>z9JC)*jVqcOTs6AJ zm9AUf&3R0@BZE95F?^r%uc(PokK4o}GWv@-JTwtiO!w?l-Ot|7wqD1+1s3L3-b%t% zkjvQrp0m_I!RjsWcCG+7s*L^dbn9hKqA3+6@i$klu6HZfLoio@BEajSGWK*XDMHeI z^|)W2G`w}k4b#GUIG-yrhmo;w1ob46Bqk^bIpmX*uUW=k#4@>?oY7p_xJFl9Q(M!_ zWlh&ZlHEx(9?A)*GVB#rJ|3b=55`WH9z+qfRgYDak7}$GmFS!`4R!Tvc-8W-oeq{v z)&b^W`z3S(R0Z>^8>-e|Mve3jso5ijIjh$+xLjNX{qb92on7kSJg+f(*W41X?6NrI zm0uP|R1t zce%exTAxV)8qNAPVDg@dj*o_DgD77}Sr5$eoM=aq!EI$p=~bHmEICMB9~UE^}M@(#F`Coz9GPLZoVuhnr)Z_8EYQ(Q%T zMfs8p>iaIYJpT@8&KL85H2R3*H@WNc31~z995TrPUn~&LK~q!4W+sB-978FzJ78PB zG{ZN5Pfcj^?|>KcC0wn?db7DT=@@Mo$JMAeHU?rm*hP+z=*NjQi_Rd0SKWM=xMH z(wKO5KVB+qgog_xnC7A!$d-b8P+4t+_Y0(43kqK!)1D$npP1(#yb92DqFT5MA_d}5 zWC%GA1KfgpRbLd?xCah*!9NOwOBP`;T<}E!vHD#wr%<>ES?YqCV7@4zP=cCM3&o@1 zqnH|_AdMW6>~9LFJ-<+Z=oEw>PB*GCum`+w;~{pFx0EZ=@PNyaE>5tq@QT`l8t`jm zo4esBg`$8B4eus(ySgwXvGCzSqk3_n9zQ{SKAFZoRX}-*yW#0VAp!1F88C15Tp>06 zrcg9aZIm$PTLue-0UI?uS4h6*-EgW^;a4dskZT9dI{UL+n0kD^ErYaKC&N2{83 z1Nr0|Y^uH|{o6v6oB$0gd}ehR20hw#s`t_NBR1SV#z=bwoF>(Vzf2p(+eRg3H?bLo!sz9 z@eNO?D}n77Qw|apGvy%r8j3yUzGcN8i|)SS=9I)6Tt_kl4L5Xad z$alGOOYVod5>YJY*;(pp~FPNvJ6&m7h5?@hc+MPDN6DH|2+8w0qPY9MbWkHFBy3V$z^jz9VF3 z1dHd6;+d$5(}}wt z&*AM^EW>*b{!S`uF&#VI-cjn5zoELOApg_=M!deD+$h-v1-e!g*9e#^>gN}8`bEp) zJr?yPVy58v#UUod2pHvk?4eF!#}&EcZznR9x$3{5g}ZJVa0cmv{bL`joBPf=^$k`6o) zI?NT!QY_EK-W7}-1@PPCR_!}@@6@XOIZnsF1fO-x+~&wpk=`fuWTFIM3}nTpK?YA2 z2AA2AtV@O7tYD@$`*Ul@94wizl;M&u^_qiOUd!j%hv#%>?KJdf;T=)hQg0Ss0A+iO zu8)`CbI~3vt%#3HX4c|ca!t{Ss)6?4X?%o7+lw{`S7Ao>p-nxD2{pP@rk)&zKeH_u z4pIWCRXZ|8OhuG^ODNRVA(mZ>vZp4jc+7KjW!trN+}i~*yjRqe8=BqAhwob;amhUY z_~=+=bbC-C)BnHf_EM}ug}DT}2lh-+A_TYbw4XQQie$@o%&QItz(Kq$s3V-1NmRRYE_ zaZSyQYig>{D*PprPl3rH-AbuJ64}&pLM|$oaH@j5Uc#fn%h)_DE#YE}HrP@wCcQ&* zqfS1DM+9gaN%HA9NQYiP^ZsrUzA6)tmWu{XBVN|xYBWndR%yiq-U5(gaDcnZ zZ-bF?yt;}|-dIsV?Gxn_nHZ(>TDbV=Fiv;vfpX-2q$Sc8Aa(vpa-a;Xa3W>~u6} zcZj#b7KaGmyVxDlt?-yb9Q7T=X8Bgw;}H4~Eq*J!kZ^n&X@b zDc)a20>N>bB~yVf!JJ{B*4b%7r9^cpnzh@IW4Wa1QI&~$+ z-hXHa;Uph{Rh9S)0B(*iOe4zE36MTNaO43(aMaHRwjp^=e)RChro7?%;QXAu zbElB<6Yxc)l==q;mCoKNY(xNTe-h+QDL-P5^-|?KMekO2X#Zy_$r-D3E1v|NQ?zIR z-G3DVF2%AxHff!Q(EqTpPIsA7OT&NlB(!q%kV# zvH3N{J&qg{$tPhgM~7#<9xFlip{Awh3S`{kL0X}!AVYRRO)<`s@Tyae8!!;TsQQY- z;(WJqqqEoPRz3y8PCS$m{okENAk_ngDmoGp^A&v0VPUV$b=m2G$|?!= zkV!&QZW8YE|4z*Vj!L7t{PN z(fnQBN)NosQA7=KtZG(56Ccl(T!;IUd4GrSyt#hQL42|7MrMFr@JDVm(n7*&{t+z% z43{+hCR`cK|N16{TyfPdN!2d+s)`(ZeAsik*|EIp?kcF>TJ?ODw<=VHm%-Ht?`odf z4d!YJc!rLnt0UeGE33&f%L&9zOj-}YZn&*lY{trZjFm8AucqWWdgX5AZg`+t5{PlP zk(;V>7ktiHqTR5oT3SA=v zS4nPVJB(C|Fu_7Yw!@if^oK{0$FI_abwjj^ly62kJXcL_EXf&Gu2hp(OKGvVm5rF! zTh~xk<5uqK@VrH6{e;%Lfr>9skqU27!P{|3;&!{{)ogeg{#Gr=SFLzw?hoEmgA9{d zGmG6^Q1dk0R3n=P=&_!w_7&ZQLp%)+*O1eXFFVHmvu4*T+|hVVgl)P$wAT=KWAN8a zyIw{{*aOeiaBCaKg%h=xk=h;z)nGh28i~>)OAUKTr}+?@VGn#%Bgc0CP=sEBXxKB< zaRm+L9=KA2p~d)UcqFCve-Hm#Zk0H^r;ldy5>;^m`?(3sua$6!{P=9GTlow$)QYi9 zzp0iNyEg~{pZPxnx7X6di2v}O0<#QrG1GTKc~33*+a!a}z*Y{mqPvzx@^Xmg)MsFS zEzO*>WiyxuYVF!f${Uz(*W%L)$~+-=Y^&C=^HGFc8`OqjZX3lCa1h? ztHaCE;wP;wf=TNI{97j^&nLc)lnlL1P&@H?+XN#*=RSdJR6u+kL|TQC3=Fe(b&gOw&z)#Vb(VV4`a%Q<^qDf5UY*H zYumsm8r}$M5pFRb*1T$vueC3>=V#?+ZPz_s`)J+cwO6X&DVnH#Oi2*)R@J^#_Z~Kp zSF;y>UN`4t3?Jan5HYH6ka1==ade2xm1++8!f{vj^X$c8 z|DPHSyXYRIHG#+fGbpQ%BY;~)S#sq40SnZ2;UjyVDfo>T=g6tr5rHrS-zRP9U; zsJ2wssV2B+ga9Ib1Lugi7Fm6QeJ=yB6d+&<`_*@%r#eVZG3S7l@?C)*BA1U?*_I^L5 zdumFzXR5EOVQ=zOUw6Y^^;F-%hP@S%-pBEyPdODQ-m4^WyLrP4@KyuaHX6~g41F0K z3P3RZ&$Day(|ewIw*5aKZJ8XQ2GR14HZ41-IF=jte$KL2ZWI7ND@E8Q0h^*dzsU3!Iz3y{25}|i}>=(%jBFti9fug zh8^Ht7Uvrs4GyD0j?o?Ij^)40-hqy(gsvuhlhy^PJ78#;lxn$HHDmS9%fwWjv|6!p zewi>9r60=dfUlMb$FV5JqF}jj6pJz}&Rs4HV=)1X%yI$#+R}ifh0Bq|7}AqsC2P6h z Date: Sun, 5 Jul 2020 22:56:12 +0200 Subject: [PATCH 06/10] Add C16 comments in makefile --- 6502/C64/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index a5cc9bb..b322042 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -56,10 +56,12 @@ cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) emulator/build-vf.sh vf-c64-main.fth c64-vf-latest +# C16 with 32 kB RAM - called (C16- in the sources. cbmfiles/c16-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) emulator/build-vf.sh vf-c16-main.fth c16-vf-latest +# C16 with 64 kB RAM or Plus4 - called (C16+ in the sources. cbmfiles/c16p-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) emulator/build-vf.sh vf-c16p-main.fth c16p-vf-latest From e84550c7f9158b6bd6d4f5f85b76b4f578643010 Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Sun, 5 Jul 2020 23:11:33 +0200 Subject: [PATCH 07/10] base target compiler on stable not latest forth --- 6502/C64/Makefile | 8 ++++---- 6502/C64/emulator/build-tcbase.sh | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index b322042..3d52595 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -48,8 +48,8 @@ run-testbase16: emulator/testbase16.T64 # Targetcompiler targets -cbmfiles/tcbase: emulator/c64-testbase.T64 emulator/build-tcbase.sh \ - disks/tc38q.d64 cbmfiles/tc-base.fth +cbmfiles/tcbase: emulator/c64-volksforth83.T64 emulator/build-tcbase.sh \ + disks/tc38q.d64 disks/file-words.d64 cbmfiles/tc-base.fth emulator/build-tcbase.sh cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ @@ -99,8 +99,8 @@ cbmfiles/c64-testbase: emulator/run-in-vice.sh emulator/build-testbase.sh \ emulator/build-testbase.sh c64 $(VERSION) cbmfiles/c16-testbase: emulator/run-in-vice.sh emulator/build-testbase.sh \ - emulator/c16-$(VERSION).T64 disks/file-words.d64 - VICE=xplus4 emulator/build-testbase.sh c16 $(VERSION) + emulator/c16p-$(VERSION).T64 disks/file-words.d64 + VICE=xplus4 emulator/build-testbase.sh c16p $(VERSION) # Generic T64 tape image rule diff --git a/6502/C64/emulator/build-tcbase.sh b/6502/C64/emulator/build-tcbase.sh index 45bf1a6..9bdc6f4 100755 --- a/6502/C64/emulator/build-tcbase.sh +++ b/6502/C64/emulator/build-tcbase.sh @@ -9,8 +9,9 @@ basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" rm -f "${basedir}/cbmfiles/tcbase" -keybuf="2 drive 4 load\ninclude tc-base.fth\n\ +keybuf="3 drive 20 load\n3 drive 10 load\nsave\n\ +2 drive 4 load\ninclude tc-base.fth\n\ savesystem tcbase\ndos s0:notdone\n" -DISK10=tc38q "${emulatordir}/run-in-vice.sh" \ - "c64-testbase" "${keybuf}" +DISK10=tc38q DISK11=file-words "${emulatordir}/run-in-vice.sh" \ + "c64-volksforth83" "${keybuf}" From 8d8731064fb9a3747cebb2075f66d35b9f12ecfb Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Mon, 6 Jul 2020 21:34:22 +0200 Subject: [PATCH 08/10] Rename c16p-* to c16-* as that (the 64k version) is what matches the original c16-volksforth83. --- 6502/C64/Makefile | 12 ++++++------ 6502/C64/cbmfiles/c16-vf-latest | Bin 14691 -> 15239 bytes 6502/C64/cbmfiles/c16p-vf-latest | Bin 15239 -> 0 bytes .../src/{vf-c16p-main.fth => vf-c16-32k.fth} | 17 ++++------------- 6502/C64/src/vf-c16-main.fth | 17 +++++++++++++---- 5 files changed, 23 insertions(+), 23 deletions(-) delete mode 100644 6502/C64/cbmfiles/c16p-vf-latest rename 6502/C64/src/{vf-c16p-main.fth => vf-c16-32k.fth} (60%) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index 3d52595..38a23fe 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -32,9 +32,9 @@ test64: test-c64.result # Temporary bincmp target while the old and the new binaries are still # expected to be binary identical. -bincmp: +bincmp: cbmfiles/c64-vf-latest cbmfiles/c16-vf-latest cmp cbmfiles/c64-vf-latest cbmfiles/c64-volksforth83 - cmp cbmfiles/c16p-vf-latest cbmfiles/c16-volksforth83 + cmp cbmfiles/c16-vf-latest cbmfiles/c16-volksforth83 run-devenv: emulator/devenv.T64 emulator/run-in-vice.sh devenv @@ -56,15 +56,15 @@ cbmfiles/c64-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) emulator/build-vf.sh vf-c64-main.fth c64-vf-latest -# C16 with 32 kB RAM - called (C16- in the sources. +# C16 with 64 kB RAM or Plus4 - called (C16+ in the sources. cbmfiles/c16-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) emulator/build-vf.sh vf-c16-main.fth c16-vf-latest -# C16 with 64 kB RAM or Plus4 - called (C16+ in the sources. -cbmfiles/c16p-vf-latest: emulator/tcbase.T64 emulator/build-vf.sh \ +# C16 with 32 kB RAM - called (C16- in the sources. +cbmfiles/c16-vf-32k: emulator/tcbase.T64 emulator/build-vf.sh \ disks/vforth4_2.d64 disks/tc38q.d64 $(vf_fth_files_petscii) - emulator/build-vf.sh vf-c16p-main.fth c16p-vf-latest + emulator/build-vf.sh vf-c16-32k.fth c16-vf-32k # Core test targets diff --git a/6502/C64/cbmfiles/c16-vf-latest b/6502/C64/cbmfiles/c16-vf-latest index 473cd3b61f618e2f3229a4e7849924c43054d396..0b385875f5c2db01673d1a5bfa7dd26f3bc051f0 100644 GIT binary patch delta 2347 zcmZuzeM}qY8Gp`SXOlpL&lm>?I4Pkf7e1W0l&)GFpU-Ff(Lm_hPF*@BEk%yBR%@e_ zY(a893M5dcPF=C2D+-{wo;T67qGeszb~Ck5{Ysk)3`H$fMAAMN!36o7@j!7S{Yc2}M?e;%qLstJ0W zC0@}IkB?uaS_yR7TyjE9O}GKtVX#h-O3uvxwhrLP?(vCD7uAKGY)92s5B#oL&bJ#s z8Go^6i6D-TA21ckiDTnGrVq*qcKk;D78!9p^xwv(Ws9!R0dp1cQRuk2RI}(Zme`DE zi$4mDm@WRmF46eu=K-sj7*5NgMz5*j1SD+A_-rPX{HHB^$?)uSpim4a4#J&vf%T$S z11I1wHWkiKO;Jo#L_t)5;wM4PsNzkQ%fftwUbam%eP9cg|643(GBzJ|5{!)ezR7H! z)}g}hB0HYR(}l40B)Aw2Lh(X8#S0PI&Uh<=N$xf9s46%KyL`G)t{0W{IOib9+eqy>ffsQMYREswv0v- zy#sp{lRoDD7#~7=^usTqz@er^uq6@cDebq zAY&!!Vc@Hm_3zf8)$jt}>@QAxHGbBswD-cQo#YeQ^h|8N-RiMFV+Zyn`)l^FecJA$ zI2HlC?P4F8Smk8HpR)+Rbj|) zSQ3R3$wV$f|GL;moq{AQPc)=(&r@)VRZY%jk?y|46B}pn_c%<90uu9WHs9ov&s*r&e;WSAs!dj2m`lWk z4hNFTHbfs_8wCB+w79I;5Ru(ZZPSJfiD|X$Ohf(n1pJY1yd1io(zjpE}ei z9-m2NC86EIi4_(jRvaokKq6VjeM|rMq&-ppo-sVnAa>CN=cEZXa7qceHh_WiQ3K%O z6eza2lUw^S{SpJbVeJ4s#o@`Y^dj`dvQuU2!CXE^b#QZKLfHg5fdP0)g6O+E>>^Yu$Q~Q@knNkhxNg79duZ+ z+sYi?7%b0=VZ-y*umP{1r=KPA^k32Eaan}sbp_5MRG|UAp@gYwqZT}+ay_prlA>BD za30p{4HQ$QHx$eDZ4|H5-pv$A87&UM!^ ziJb5a$<~s4G)!Ha#Di&8SP6X9F(~n2$G>5%*^X~(=A+KQEvFj&+ApsONP_>_p*P&u zfyfrn`JRD?TQs=fu9Bn*KuMh1*Fu^fu$VIq*CO=KbUF*Ur`5>0ypGP2PL`?Sb%$7I z=%MD#GOi`GueoN!3(lzXd32|K!MWsI&<=*qHkXjT79aI0bcM#6Ero?H)l?$M3)dqw zLM%0J@ngh-wxLvS*!olJf3*MFWkiRofZ!%9gf%GRA`{8Wb?H>@$!)8va#%tie0>dG zcdf&Bhq~;1HYZ&9#5MZm8%V@RYJqvznLoLru9oP{mJdIc6D?5~1@HJ*NVvO?pnTL7 z5XC4T_}VWTUlxu1;@Ge&uu&WvaRo}mu~AoGw=#MR{TZV~jUqr{-F|<62;O$#2Lx_e z>ozXBP%i-D?yIM_?{xpbE2mzEO>Q-+nnDkzY@2&jd#O?Laf5s4DW$jFjSxq{?zWqn zED`$t>LW&f*r2l%#A}U@xE_7fwZ~bnd)N@K#gbkWebiBS#?8cQBQ!S8Aegyn%|7o| zPo*-s>AL2fIM5AYwl6krsSzA1a zBZml8$l2~8uI1?pWIg0jW`!IkxvB34yGM}}uIKW!2Br3TRM+R%+_0@1HvZ6~N~hAf TYbo@U(RIUf9yxOJbX5C4fz!R_ delta 1821 zcmZuxeM}Q)7=PPBuZV#3+M^b=hXOKBK8m%Vad!7vNID>F(}kHu7BzK$7~{g+j9H_O z4?$hAi=S~KTdmA5Obu}{Syp<7R~uXzZ(E6#Dz-U({sK+y>KM%dh6E#Cr0me_P>Wg~H@-EXq_V z?)kS;n^lSe|Mw*el?uP-@3ME4HMFPEY*I9McA0b1YG_hVlbzWOo>OLvi@g0P)D>0s zkdC5xyFrLf4UWVj;a_O)4a3Ik`!kZ>&}J}^zJGSokp^~yyR;hR2L>{jo+Jce0mSzJ zC8G{nErZgSk9tV=S+CIU+^J+b6QiB@9$;iti~5HXlnxeF!1rJ*L1n;qmPremtQJuU zMnuU+z05e~xpOmtsB`D4L9^|>oI1SP^I>^`qSkY=ytMEzqk#hbkw8rR&9;cSLchg) z&N%Up!8Il&7zyW1FsCrm;h8F@Tz8mR(O4)P5A+X7w#6*O)vQ}_qusG!UNbPT7@SqQ z8H&?0nOy*wHOe&6z%@8J zVerh<@01x_f%tK@M@jxjoG$z#-#|_#9bUQ_bjoCbxa|t-#VRM1%~-E;K-1odRlMk)5l*}n*tt|O78-?%q`9&M_p|Lfgf?>O)&GK3#Qp3NU6b6f zol9{+Dw~f&n2Mme*G;J9AcsLX6b{9G)Y)t&-UfO&Rj4$AG~2*cPTfB;42>1z$f0DH zq8mVm2DpUPiFbo81q`Cx+KPnrWRA{~R#QuI{F-W(cj7JX<_qMdWY2oilO!)Bz3$0W zr_<%Q%dOuFu5p?on<$Njg3@9hdLYSpF~er~+1<*YHI5N(FEH}hvjQI#-~!eH$ha4* z;;|w$%t-ugzU7#_kKRJmT?m!D`DsY&bYaU;xT)=+o|gw7fvZ9c>mWnB3%Ga;F+`;> zGRGuIv>_aP%4;AT9EuFfrn!UgD2FmvJK$TQG!+75sTXbj{aA9c~#W}FSoxubZdFlv;HeelzE0Hc7qUf~7O zn}nw80ILKvBAf%QXr_l1%(;{Ji=I~nOq61=NDS_AJx3U_rg>Hnp=HXN2zRayY;f67 zT+KAib>}9MUc(lf*MOFppf)NJ)I)f$QTixRcSgvB6={Gl=owQTKAxi@MBOUy7L&dC`q${0|lSB|q$ya1Wjr=l(kp7$#jyS56mVp2dHmV)sJ zJk|2BZTyLR%^T*G=4DIEmVQ9y3v=!HLX_*X?hsr!s>qn;E%rAdbUw$4?*}XG>9=B` zxb&Q)K>vbMAGx3DA48R#-C5R;dR< zVNv?dM?r?V6$@WO4CC6;9Kukr!#1t`V>JnP`+56J>zyhr6do*&M&b=io;*>3$M8na agP^=R9UcAR;j!VkbaP#G_wUD`lm7t`7sI^( diff --git a/6502/C64/cbmfiles/c16p-vf-latest b/6502/C64/cbmfiles/c16p-vf-latest deleted file mode 100644 index 0b385875f5c2db01673d1a5bfa7dd26f3bc051f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15239 zcmd^md3=*)w(!ZG7AS4D_ifYC1d=pq+O+9j3Qe2t5NIijiW{iK=x9fNOaYboDQcji zjICY;z2nd_##+WIoyF_O=uDcVB+xc7ZCU2l5f%A_8621?q8GK_Iq%y-ojZSi|9$Xl z@+{|^XFL1zM36WyF&=(lF0kA4EP($mxYk!*aJ^9Jl5W#|Uj*Cm|D(H>1H?l?^`D&+ z`JrVC2<-ope~GwG@lfPwWPN7Jx<=RX)q|1PSSY(BUzcwy$+g+D{q`cOZtv7oe}X5i zZ)(bu%6b#-6M7O3iyoMoIye9DHww@t#RW$K*<&%EKlo5muh*mOP4K9C@AIg8g&vJ7 z4wP_Lk}MYVM@|G|>oeV+RJSM1n;I1krVXaLdaO$DB#B2Nk!T#K;I$-aBo;mz9+|YV zi7I$INjRFjIZLjB50Zp2EXAuJlq3v9H)qXNK@5Qh2S{_i*!;^|9$D{gJu-Y$sQP7SbNT5sLm9e<7vJT-n zIbvzxd4(tzt?(%h3K2^KzgIjNi|V6P{W(@ciYLlre^GdaG!-FEMbs_ZDeRYZ3SGU} zeNyp6to%Ei^Yxi_3wO%;g`KiqA=`o&IE)B~Vc;u;FjkSFoCQfx-9lUu13INA7KlZn ziAn~RD#gK5;jw0AHy(e#&@P5yq2>Tb4Ep%%w$`mzA<;Forxi++($=eyMaTli_`(&|h(iPz;D- z>;;^y0cV>GA7YRGAJ=*X&bWLc%GK zs1j7Z=|K&DEdZ@AvUk;RWLL8rk5suZYF39b73X7{rj4Lc1S$Yz7z&E_{qx$@oYh7^4>8ARbqXqhbH?9%~NcSWu@BX>1(e^J;M{GBng<4X7p* zFRSYm0o4lTnu377PbXUG(5sf@(dN-;6AGjHnu1z~u$6WfRO#@kTAYV_(PKri!@+d$ zrCMN>XxLD}_(4&zB_y)fwRKmf9xK9qROE7~Of9Q?&e%Z?gXixll58EQ+Ii2*$ zhK2B78ezaHVtR$Tk7+_|i;0_1O9ryGti`YsPq$yzf~SmASOni{gm$Z)=@qaWWrsz` zTBtB&_n~-ky_t+K&)SHzqGuLCJtNGw-p2HbqN8^)z2fMwo9UHCk1m3>jL@Fl#*}o+ z&I>wbXq=y+(TX&(UtrjdGX{8;5s$^jgOk>&DFf_hB!j-8QLF(Nz{@PmwjW>&@Eb;- z+lSwOU1?3>1l%+P^d^v+ zPC)(1gBG$!5i}U{ahzMm!qiethc+IZ`ZAW$Hz}QZ4V$TVD^0M073MDKWcy`_qTVTz zdfZ|Y?7`NhJuLCyr7xoAP0+>4#!rUFLgA73S?=Vz1l_Wrp%nf1ahCS<8du43U!1{ny@0SEvBL2siOK&4cm@m){Y4h(njtP(P)-8- z3F}sxp)gsPi`B!L=eTNBvM6^6*1hbD8tQIN7LIe!3CUEwD_O9#$J(axa=@FDMFCu& zRX1IKELj-9s!tm~+h|VL6e}1~Riujc;r9e8qfDqudD0w+kp5}Y ztWBYoAE!KJcFZ)LR}tB@Dc4ZD*;FFUgn~3%ChSa+4n$B-;>e&Dp-G~~*Hd=mr6n!cO7+tA1#c69WjI1>dLa4CiaRV3u&O{lZXaGdd4QmI`EgIM{6M&SQ6K zyQI-rHr%4!H4yWS_(KnA(LdanfVN})<^<1tufdamz}e8E-Rth&{85x!ugi+Ht^&Q$@YeS4%nG5dJ zz*s1VtlE$gV&YQ6T55bWH4sEi*JGt7r@j@T_o>3#0~|(2YH%Qk&To(P6K#xZ=}Qfs z428*Ai6MN9;pvyL-%pL9ee1DKY6B{&wI!3%c@`upQZIF{_OPHasBkmeZ*`sf&g$o-utIz0com3h#fCK?~kd^3&remus| zF4L}zgNf1%lgVT>89EqLnk^Zg476eGEhdktLwe4Ly4r9oI^jiI7V@H9;~f>RaVK$S zKD?GD9M0tBnuL_3?l7_r$vJJ*Va+wgizt1E(ynoRBl#)!G_KS&uB&OTbv54PRu;hG1=8{1oZ(2I4RJgcT#R{^ zM#d&1tq<40EyQCwn8a?%Eb$sYx4hvsd~QB0G-Y;(J%*=@rs;Jbi+z(1sMk{R<@Az`XC&kOFF2r5xHhRkCG)QAu?bt{T*&V)vVagm>Tqa3*juTG{>6WFN^P&-A}&3{YbV54C!K84xXmMfM@nMoInwjr3-S9Nz%6> z`xQY`x`=~tavoX{+>tKHoWc1P_m;k;lUJ=S*d%zHl8#E?LI7QcQ?lgs>e>-P6m*F~0%m(R(%Bx5bfhN z#rNq=sPLodZe`(gl6YZ*^{EDg38SJQyAtdWWAi1_7^UT#D~BhoaZcS&l`&dfjwM zinU|W|KaAk82WVLP%wrBP9~8Py%;{yiK0F{v9mf2>l7hVFNQC565r4ex#%a8?&W|4 zdO;R})TvMbpqgC_O1;p}HC0F`rZD>aFkO$WUW>(6AGJ(bZQxt=*5f1!UO9w z0m@*FUR=&q9?<{4PMVa#M!l#!Ji-t3fnGE)beu0A(~C!=zUht=dJ#^b$LiM8CX~Tv zddY|5!Pw~@>v?p(nrsyxVaKidI#oa~Vx#!yRxW{mA_cz>HSGj0u0xvwfWe?qNj^vd zY(c)v!M|4R*(nl{CBQBej~=JE=3l^(KmHwf-9lN;=vXW~a+J7aehP7kNV5se7uuZ4 zj>Pbzhv$ax>JVB!4&QoM829*wrLc9O%+u$*^2TW0307Cr+#K3^`qlN!mxGR&QIX))n60m)PdQzHwNA)BFC0@hDK|KX` z7mw;a#>4ZvWqSwp{j$AB^)An%F0t1jFe*iLOlZipNKelN_#=uB&cRp4Z>XowO6)T_ipki6OuH z7F}NGRyyIMMUtp5Mj|z#@GS};*y9U9y-#&bk-l(3LGD8U%Qq+Ex1NN-312P}kNAcW zVN1c;MI#HF@U*KyXON7JVK7F_Rt1HI8sDft9Ohwim=nsS1{>$d-H)tP1yu%N*1{gE zhF$p8BJxpkP=wZ_JXgWphNl){bkJkHrnshPS8vym$48E075vojgc*^ZGEil|!G~q1 z{#An;>($^jJZZLZz1ww4D>W@r=95qy$X-vyki!Pulu7*IrZeRTil4O+K%BO!=&;5B-fAXf?+B{QmLb@gdxN3P8xUCP1>uMm1j&ptdF8KBLSZ z89|GH`1I7$w~uZR3O+5?j-wL^>PJU0FS)1=g}hM9UIUl09D-AHvg#2D)4htjZF$hgV- za4T(X$vQ6lprH;hZOM)VW8w#xLLam*w#twkiNcW5t7<(U3t zq8^7y#PU6@+A;Jy>)=b1JY#we-{pR7s)NlLQoi0}-H~w~&p}lnaF9cSAv;D$_3%W7 zc*r+8Mk_$?D}#icntz!g4uu2A25)81oH`lo$g**feLcLFA;l9568lkiJa*scJed*3 zbn|#@G)#8hVPlPglI`o1r;nC3;lNoX0;o)E)%<-Fst&p0jd4XAup#f_KMJrsKXyjCnANMuJ zyo|=6O;e(~*-Uk!{D2wlIOVknZ4!gH1AVI z)88}`sY4m}s%Vw7vccZ@okDNIP9fW!dY{OXuxE3sXFjEVQ|tG%q+z&2Dv7o_-AXf9 z2Jf1KfkhZ6o76(y#Y{_wHWdQsSLZPN+;W)j z(?bl+i1#FxLxx4-z@-G}e3!!$7QsZ1b&th{Vt;_yW1-<)&|#6C^uRwz>g@w@{Gb5hV zTwyth2Sq7~X3Mj<(-fUD7S|lh3OH*Kj|}=8?o71HW_0u{KXmyqS>wr&m@rP<&-SD9 zj#*R_SwA$B6tH{IK@@rnm`pNu8|q6e=`9An=CQo|z(Foiv_?O<$@ZuW%)t z$dnL1o_9bcM@4%Ab(4-VS7IP1Y9%mMN%=q|fKJp3?6xwN z*{q9f%du}NmuW+O#k+<$XoOd-zB2NaDVTLDf0Iir-w4O8ax?=dlOrgr7xB=L*o|wC zE@6KvWxP|T^A?TpiB*2W7Yq9aD5$<@;a%V+NXn9qPs?sVwFEa+L>zx_vZ`R-`0ASG z%I2C%UF}+zi@Nq909lSEFlUL!M=7~YgzQK!Jp%(PhxCpWd?#M!iJnS1K zB;x15jm@766wAk9s4hd3ft)Aj#B&uqpCvpICDHidzf~}pB|}9Q3yyH=a}|7y^~lH= z=CyjP$Fuk#n+}j_E0}Mx+{#t(_bf3cTQSr>j>mzPsWjPEpgz%9Rq0&os%*YRw|Y%w z)pBmJ-ylGYIi7VdcWQ*I%odMDMse;mQR;9jo1rl~9&gWl18BC%>%M3q0inOMI$}>o zZ&%c*P++ObI^S_bR9QzN;YA= zksU`c9A=O8?d)GmHI!s4l zI^Sz_UA1*%fiACR34zy?CP5PI7lCA2ntw{-LVkC0u;xUiV$+T+!g8GHTc^xdu5oGY*BN=(g$@gqj zj`I9rE0BaLYwB@!H-k7g?m7Wv-W(E^n4NrJ(sXHP5a`^c@Jr>z9JC)*jVqcOTs6AJ zm9AUf&3R0@BZE95F?^r%uc(PokK4o}GWv@-JTwtiO!w?l-Ot|7wqD1+1s3L3-b%t% zkjvQrp0m_I!RjsWcCG+7s*L^dbn9hKqA3+6@i$klu6HZfLoio@BEajSGWK*XDMHeI z^|)W2G`w}k4b#GUIG-yrhmo;w1ob46Bqk^bIpmX*uUW=k#4@>?oY7p_xJFl9Q(M!_ zWlh&ZlHEx(9?A)*GVB#rJ|3b=55`WH9z+qfRgYDak7}$GmFS!`4R!Tvc-8W-oeq{v z)&b^W`z3S(R0Z>^8>-e|Mve3jso5ijIjh$+xLjNX{qb92on7kSJg+f(*W41X?6NrI zm0uP|R1t zce%exTAxV)8qNAPVDg@dj*o_DgD77}Sr5$eoM=aq!EI$p=~bHmEICMB9~UE^}M@(#F`Coz9GPLZoVuhnr)Z_8EYQ(Q%T zMfs8p>iaIYJpT@8&KL85H2R3*H@WNc31~z995TrPUn~&LK~q!4W+sB-978FzJ78PB zG{ZN5Pfcj^?|>KcC0wn?db7DT=@@Mo$JMAeHU?rm*hP+z=*NjQi_Rd0SKWM=xMH z(wKO5KVB+qgog_xnC7A!$d-b8P+4t+_Y0(43kqK!)1D$npP1(#yb92DqFT5MA_d}5 zWC%GA1KfgpRbLd?xCah*!9NOwOBP`;T<}E!vHD#wr%<>ES?YqCV7@4zP=cCM3&o@1 zqnH|_AdMW6>~9LFJ-<+Z=oEw>PB*GCum`+w;~{pFx0EZ=@PNyaE>5tq@QT`l8t`jm zo4esBg`$8B4eus(ySgwXvGCzSqk3_n9zQ{SKAFZoRX}-*yW#0VAp!1F88C15Tp>06 zrcg9aZIm$PTLue-0UI?uS4h6*-EgW^;a4dskZT9dI{UL+n0kD^ErYaKC&N2{83 z1Nr0|Y^uH|{o6v6oB$0gd}ehR20hw#s`t_NBR1SV#z=bwoF>(Vzf2p(+eRg3H?bLo!sz9 z@eNO?D}n77Qw|apGvy%r8j3yUzGcN8i|)SS=9I)6Tt_kl4L5Xad z$alGOOYVod5>YJY*;(pp~FPNvJ6&m7h5?@hc+MPDN6DH|2+8w0qPY9MbWkHFBy3V$z^jz9VF3 z1dHd6;+d$5(}}wt z&*AM^EW>*b{!S`uF&#VI-cjn5zoELOApg_=M!deD+$h-v1-e!g*9e#^>gN}8`bEp) zJr?yPVy58v#UUod2pHvk?4eF!#}&EcZznR9x$3{5g}ZJVa0cmv{bL`joBPf=^$k`6o) zI?NT!QY_EK-W7}-1@PPCR_!}@@6@XOIZnsF1fO-x+~&wpk=`fuWTFIM3}nTpK?YA2 z2AA2AtV@O7tYD@$`*Ul@94wizl;M&u^_qiOUd!j%hv#%>?KJdf;T=)hQg0Ss0A+iO zu8)`CbI~3vt%#3HX4c|ca!t{Ss)6?4X?%o7+lw{`S7Ao>p-nxD2{pP@rk)&zKeH_u z4pIWCRXZ|8OhuG^ODNRVA(mZ>vZp4jc+7KjW!trN+}i~*yjRqe8=BqAhwob;amhUY z_~=+=bbC-C)BnHf_EM}ug}DT}2lh-+A_TYbw4XQQie$@o%&QItz(Kq$s3V-1NmRRYE_ zaZSyQYig>{D*PprPl3rH-AbuJ64}&pLM|$oaH@j5Uc#fn%h)_DE#YE}HrP@wCcQ&* zqfS1DM+9gaN%HA9NQYiP^ZsrUzA6)tmWu{XBVN|xYBWndR%yiq-U5(gaDcnZ zZ-bF?yt;}|-dIsV?Gxn_nHZ(>TDbV=Fiv;vfpX-2q$Sc8Aa(vpa-a;Xa3W>~u6} zcZj#b7KaGmyVxDlt?-yb9Q7T=X8Bgw;}H4~Eq*J!kZ^n&X@b zDc)a20>N>bB~yVf!JJ{B*4b%7r9^cpnzh@IW4Wa1QI&~$+ z-hXHa;Uph{Rh9S)0B(*iOe4zE36MTNaO43(aMaHRwjp^=e)RChro7?%;QXAu zbElB<6Yxc)l==q;mCoKNY(xNTe-h+QDL-P5^-|?KMekO2X#Zy_$r-D3E1v|NQ?zIR z-G3DVF2%AxHff!Q(EqTpPIsA7OT&NlB(!q%kV# zvH3N{J&qg{$tPhgM~7#<9xFlip{Awh3S`{kL0X}!AVYRRO)<`s@Tyae8!!;TsQQY- z;(WJqqqEoPRz3y8PCS$m{okENAk_ngDmoGp^A&v0VPUV$b=m2G$|?!= zkV!&QZW8YE|4z*Vj!L7t{PN z(fnQBN)NosQA7=KtZG(56Ccl(T!;IUd4GrSyt#hQL42|7MrMFr@JDVm(n7*&{t+z% z43{+hCR`cK|N16{TyfPdN!2d+s)`(ZeAsik*|EIp?kcF>TJ?ODw<=VHm%-Ht?`odf z4d!YJc!rLnt0UeGE33&f%L&9zOj-}YZn&*lY{trZjFm8AucqWWdgX5AZg`+t5{PlP zk(;V>7ktiHqTR5oT3SA=v zS4nPVJB(C|Fu_7Yw!@if^oK{0$FI_abwjj^ly62kJXcL_EXf&Gu2hp(OKGvVm5rF! zTh~xk<5uqK@VrH6{e;%Lfr>9skqU27!P{|3;&!{{)ogeg{#Gr=SFLzw?hoEmgA9{d zGmG6^Q1dk0R3n=P=&_!w_7&ZQLp%)+*O1eXFFVHmvu4*T+|hVVgl)P$wAT=KWAN8a zyIw{{*aOeiaBCaKg%h=xk=h;z)nGh28i~>)OAUKTr}+?@VGn#%Bgc0CP=sEBXxKB< zaRm+L9=KA2p~d)UcqFCve-Hm#Zk0H^r;ldy5>;^m`?(3sua$6!{P=9GTlow$)QYi9 zzp0iNyEg~{pZPxnx7X6di2v}O0<#QrG1GTKc~33*+a!a}z*Y{mqPvzx@^Xmg)MsFS zEzO*>WiyxuYVF!f${Uz(*W%L)$~+-=Y^&C=^HGFc8`OqjZX3lCa1h? ztHaCE;wP;wf=TNI{97j^&nLc)lnlL1P&@H?+XN#*=RSdJR6u+kL|TQC3=Fe(b&gOw&z)#Vb(VV4`a%Q<^qDf5UY*H zYumsm8r}$M5pFRb*1T$vueC3>=V#?+ZPz_s`)J+cwO6X&DVnH#Oi2*)R@J^#_Z~Kp zSF;y>UN`4t3?Jan5HYH6ka1==ade2xm1++8!f{vj^X$c8 z|DPHSyXYRIHG#+fGbpQ%BY;~)S#sq40SnZ2;UjyVDfo>T=g6tr5rHrS-zRP9U; zsJ2wssV2B+ga9Ib1Lugi7Fm6QeJ=yB6d+&<`_*@%r#eVZG3S7l@?C)*BA1U?*_I^L5 zdumFzXR5EOVQ=zOUw6Y^^;F-%hP@S%-pBEyPdODQ-m4^WyLrP4@KyuaHX6~g41F0K z3P3RZ&$Day(|ewIw*5aKZJ8XQ2GR14HZ41-IF=jte$KL2ZWI7ND@E8Q0h^*dzsU3!Iz3y{25}|i}>=(%jBFti9fug zh8^Ht7Uvrs4GyD0j?o?Ij^)40-hqy(gsvuhlhy^PJ78#;lxn$HHDmS9%fwWjv|6!p zewi>9r60=dfUlMb$FV5JqF}jj6pJz}&Rs4HV=)1X%yI$#+R}ifh0Bq|7}AqsC2P6h z Date: Mon, 6 Jul 2020 21:50:38 +0200 Subject: [PATCH 09/10] Fix test make rule after c16p->c16 rename --- 6502/C64/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/6502/C64/Makefile b/6502/C64/Makefile index 38a23fe..7280c81 100644 --- a/6502/C64/Makefile +++ b/6502/C64/Makefile @@ -99,8 +99,8 @@ cbmfiles/c64-testbase: emulator/run-in-vice.sh emulator/build-testbase.sh \ emulator/build-testbase.sh c64 $(VERSION) cbmfiles/c16-testbase: emulator/run-in-vice.sh emulator/build-testbase.sh \ - emulator/c16p-$(VERSION).T64 disks/file-words.d64 - VICE=xplus4 emulator/build-testbase.sh c16p $(VERSION) + emulator/c16-$(VERSION).T64 disks/file-words.d64 + VICE=xplus4 emulator/build-testbase.sh c16 $(VERSION) # Generic T64 tape image rule From 2f1a5e1168a8aae8f594bcb3cd89117855454295 Mon Sep 17 00:00:00 2001 From: Philip Zembrod Date: Mon, 6 Jul 2020 22:27:21 +0200 Subject: [PATCH 10/10] Remove obsolete build-testbase16.sh script - superseeded by build-testbase.sh --- 6502/C64/emulator/build-testbase16.sh | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100755 6502/C64/emulator/build-testbase16.sh diff --git a/6502/C64/emulator/build-testbase16.sh b/6502/C64/emulator/build-testbase16.sh deleted file mode 100755 index bbf3660..0000000 --- a/6502/C64/emulator/build-testbase16.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -e - -emulatordir="$(dirname "${BASH_SOURCE[0]}")" -basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" - -rm -f "${basedir}/cbmfiles/testbase" - -# load savesystem w/o editor from file-words.d64 block 20. -# load include and dos from file-words.d64 block 10. -# savesystem and then scratch file notdone to exit emulator. -keybuf="3 drive 20 load\n3 drive 10 load\n\ -savesystem testbase16\ndos s0:notdone\n" - -VICE=xplus4 DISK11=file-words "${emulatordir}/run-in-vice.sh" \ - "c16-volksforth83" "${keybuf}"