From 3b34b2e549988cbd5b9e92b8c8e3f736ed306035 Mon Sep 17 00:00:00 2001 From: Dave Schmenk Date: Tue, 14 Nov 2017 11:58:42 -0800 Subject: [PATCH] SANE floating point package WIP --- src/libsrc/sane.pla | 146 ++++++++++++++++++++++++++++++++++ src/makefile | 7 +- sysfiles/A2.AELEM.CODE#060000 | Bin 0 -> 8192 bytes sysfiles/A2.AFP.CODE#060000 | Bin 0 -> 8704 bytes sysfiles/A3.AELEM.CODE#060000 | Bin 0 -> 8192 bytes sysfiles/A3.AFP.CODE#060000 | Bin 0 -> 8704 bytes sysfiles/ELEM6502.CODE#060000 | Bin 0 -> 8192 bytes sysfiles/FP6502.CODE#060000 | Bin 0 -> 8704 bytes 8 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 src/libsrc/sane.pla create mode 100644 sysfiles/A2.AELEM.CODE#060000 create mode 100644 sysfiles/A2.AFP.CODE#060000 create mode 100644 sysfiles/A3.AELEM.CODE#060000 create mode 100644 sysfiles/A3.AFP.CODE#060000 create mode 100644 sysfiles/ELEM6502.CODE#060000 create mode 100644 sysfiles/FP6502.CODE#060000 diff --git a/src/libsrc/sane.pla b/src/libsrc/sane.pla new file mode 100644 index 0000000..1db806c --- /dev/null +++ b/src/libsrc/sane.pla @@ -0,0 +1,146 @@ +include "inc/cmdsys.plh" +include "inc/fileio.plh" + +struc t_diskinfo + word codelen + word codeaddr +end +struc t_codefile + byte[16*t_diskinfo] diskinfo + byte[16*8] segname + word[16] segkind + word[16] textaddr + word[16] seginfo +end + +byte ref +word pcode, fp6502, preloc + +def prbyte(h)#0 + putc('$') + call($FDDA, h, 0, 0, 0) +end +def prword(h)#0 + putc('$') + call($F941, h >> 8, h, 0, 0) +end +def print(i)#0 + byte numstr[7] + byte place, sign + + place = 6 + if i < 0 + sign = 1 + i = -i + else + sign = 0 + fin + while i >= 10 + numstr[place] = i % 10 + '0' + i = i / 10 + place = place - 1 + loop + numstr[place] = i + '0' + place = place - 1 + if sign + numstr[place] = '-' + place = place - 1 + fin + numstr[place] = 6 - place + puts(@numstr[place]) +end +def putname(pchr)#0 + byte c + + for c = 0 to 7 + putc(pchr->[c]) + next +end +def putln#0 + putc('\n') +end +def dumpheader(phdr)#0 + byte i + + puts("Seg Info\n") + puts("--------\n") + for i = 0 to 15 + if (phdr + i * t_diskinfo)=>codelen + prword((phdr + i * t_diskinfo)=>codelen) + putc(':') + prword((phdr + i * t_diskinfo)=>codeaddr) + putc('=') + putname(phdr + i * 8 + segname) + putc(',') + prword((phdr + segkind)=>[i]) + putc(',') + prword((phdr + textaddr)=>[i]) + putc(',') + prword((phdr + seginfo)=>[i]) + putln + fin + next + putname(phdr + $01F4); putln +end +def dumpli(pli) + while ^pli + putname(pli); putc(':') + prword(pli=>8); putc(' ') + prword(pli=>10); putc(' ') + prword(pli=>12); putc(' ') + prword(pli=>14); putln + pli = pli + 16 + loop +end +def reloc(base, prel) + word listsz, list, len + + list = prel + while prel->1 == 1 + prel = prel - 2 + listsz = *prel + prword(listsz); putln + while listsz + prel = prel - 2 + if *prel + list = base + *prel - 6 + len = *list + list = list - 2 + while len + *(list - *list) = *(list - *list) + base + list = list - 2 + len-- + loop + fin + listsz-- + loop + loop + return list +end +def loadcode(codefile) + byte ref + word pcode. preloc + + pcode = 0 + ref = open(codefile, sysbuf) + if ref + pcode = heapmark + read(ref, pcode, 512) + dumpheader(pcode) + putname(pcode + segname + 8); putc('='); prword(pcode); putln + preloc = (pcode + t_diskinfo)=>codeaddr + read(ref, pcode, preloc) + dumpli(pcode + (((pcode + preloc | 511) + 1)) + preloc = pcode + preloc - 2 + close(ref) + puts("LinkInfo "); prword(preloc); putc(':'); putln + heaprelease(reloc(pcode, preloc)) // Set heap to beginning of relocation list + fin + return pcode +end +if !loadcode("FP6502.CODE") + puts("SANE library not found.\n") + return -1 +fin +return 0 +done diff --git a/src/makefile b/src/makefile index d1f53bb..f65ad41 100755 --- a/src/makefile +++ b/src/makefile @@ -18,6 +18,7 @@ FATPUT = FATPUT\#FE1000 FATWDSK = FATWRITEDSK\#FE1000 FATRDSK = FATREADDSK\#FE1000 FILEIO = FILEIO\#FE1000 +SANE = SANE\#FE1000 WIZNET = WIZNET\#FE1000 UTHERNET2= UTHERNET2\#FE1000 UTHERNET= UTHERNET\#FE1000 @@ -62,7 +63,7 @@ TXTTYPE = .TXT #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 -all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) $(TONE) $(DGR) $(DGRTEST) $(FILEIO) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) +all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) $(TONE) $(DGR) $(DGRTEST) $(FILEIO) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(SANE) clean: -rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) @@ -175,6 +176,10 @@ $(FILEIO): libsrc/fileio.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMO < libsrc/fileio.pla > libsrc/fileio.a acme --setpc 4094 -o $(FILEIO) libsrc/fileio.a +$(SANE): libsrc/sane.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMO < libsrc/sane.pla > libsrc/sane.a + acme --setpc 4094 -o $(SANE) libsrc/sane.a + $(TONE): libsrc/tone.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMO < libsrc/tone.pla > libsrc/tone.a acme --setpc 4094 -o $(TONE) libsrc/tone.a diff --git a/sysfiles/A2.AELEM.CODE#060000 b/sysfiles/A2.AELEM.CODE#060000 new file mode 100644 index 0000000000000000000000000000000000000000..ea11e6305f046b4d398b7282f9e11e71db3de1bc GIT binary patch literal 8192 zcmeG>d3;k<)-QQU-g`~nx%VxUN=pfdfXGr7Wm6iKV${GefC$JE5Sg-C^bd>NT zvnI{D8_H(;eUR;+hHW}zr;M2n8>YjyT$4W!vVB~(&r~QCaZ3vzkN&or^B;iKCVv=0 zbHRTYLi51?C4}aK{|JN@fd4B9M3ZC<+8pf>w#t9hT`+`!HB z&xIxadEm+8R-65MVKwjn0)oYj^Wc%hr)p9p@ZPFg$_Y{&-u9L0tih5cgTlr z4mLly-NEXN5mLC3)*YISZ5Fn}*uKPe1lw2G=EClBss${CoO3%LFc)$`&biR!>25;( zamB$_g1|s_E9#!KZp#ppd&^*x+uO|=`|P&uw&e=B!Z`7&)Wp8WK0rH8A690o6ZJ&U zO`cp_Y>a)jZIao&O*Ff=V7~=>)EMgCr@T)tkB> zJII1RKwo$YM#Bq`MV=u`$xiYksZKl4=V_2`qTA>$dXUb5S>T6L=nmY}-h0$1wMIAmPp4pxHkIJT3U3CElCjJ;mM~=>|16(hbfV8aNs0 zk+kkL0`=k~86+YH9EQry!8T7fTY}J0SOfisOEPvL6JZCyOxOup4R``WYXDE9^A;b+ zK(cx<{&gbG?&-L%!`L?%b-NMQjZ`du#N1>^#liu%WShq@O-yeo&>H6!Tw{uHg=x6^ z>1f#GJiJ0h~COngz z#3jdI*lNK&Vq(|CrHEQ#P81X+_oRqSo8tm5hJT2wq}-_zGGY2S3fmeEjb!|9RI7Ap za$LzCahG3#LPdWFp15F!~|u*U&}cz z3028PyJw@-F^q%vU`}FX-9jTXv6?4x9$6R>Z8m}(XGYA2`0#!_y?2Ck{9c?>0<(`Y zb|{K*eT>6q!>;b!(jr2Rb-nM%Thv) z)gVTpY{pd+RPaW{%amP>c;xHhQL*FqKVoba61?XD3FS}04bl7f%|?{Rlj_AfFFkgm ztT`#3ZFVLT(*VO5HQ+rMg3B!iFmj1ji>b*oym`aYsgGS20g!{1~i=jdTICX0&uXBg6LjY)?hqnyTx zveJ7zssnAvLKm4bMb6?huIE0aTWj$gVRW=kT#thojYa~u;5ldU%mO<`o>0$Hs3HKj z2n!f>f2}GzM}Z-@8nI(|U1tg0v%rBojTkjnRSaFm8jlTHBObY!n6ao|6EEs991MHx zckJdOMjE$U|5Zin6tHs9cKgdVcImREEc4RM!Ch-Nzq0UpX8wzvkMT1WpSYQ6t-0rk zE^St+pPVe@6 zY>7F?eZ=OPEPSx2$>8U&CAlj1sTgffjJU*Vabi>+m0eSZeto^gua@_snF+k|%ml2w z0(LtwDz1Q?F3-GwM|SPNalEc7M&+5WJ-Ri}r`K;G&h^�|&2Ff3~QCBEEsqO-@Xr zlPX5h=%i>gF`EU6(Vcz4@8D~H2iby?;!Q> zfba<>Sn=+V`~K0$Z7-5KYelS zE^ximqxyuj>0=J*h}oy4Y)whZ%SUc*e>S|S`OEo3zu{e3#UuOlb~Rp;RQ%Fx(j$B0 zBeQ8$p4%UnigWAo+Iv>lfzv~t==e_bpj7%^zG)Sa{M0$=<<%45rO9(Xk(xGY>~z>S6*(ho0*W*)n|Z_`oF__@3* zd(-9|-;b^4SY4Zc?fcfMkKfp5b@l!%;(2_T^%D!yRO*%i3uqnOtDR8HwAArK1V#ZZndyDI8BbRW>W+W_Ko^&ra-CfR{s{IbPYU9z^!WV`DMP zS10j`=|o0jL1OGP8f%iy#2f7B{8+(s7cYQW#lXsJFN0!+OkC$IyL$a4fRe zy-_N%S0Jq5V7EMC#^g-MQ-!ih1!%BHJS`xqk?Av#)ZkUcho$o$ z^CB9Jp*bq6UmC-2RB59)ggvXo6k<0lO=j+Am*E1Si7@g^)C`4iBcn)Ks@<`Q5_1?8 zxEil@@QDxK0vHg(-G8MnBARgr?0Uysrv$sPfJs#5o`E{98I(N|;-1V zC7$~NJt}?5!mYx%7&$Sc-MLAiS6pv2bo_~xy(wcp$2bp*C;{`g*EkKa;OT?w#^XUh z9K;`(*ukPwfI%1%dL6UC8vPADps&yz|x z`e=QyK1d&+_t*RCz4e}YXT81NPH(H%*X!zc>$UWBy{4X~r|KzsHC@vco$8=F^d#M+ zN44A9P3^jNO}nc7s{O2;*Uo6CwNu)c+F|XGc0k*w?ftu-5488RO!7vQ9@5%r zZM0TeBdwvi6n*>RI)SdRqNj zJ)|B~_pAHVJ?d`tGxbw-hq_(;P<>y0Pkl!%Qa7j}b-fx?*Ql?nE7WD`QgxAa*%tb&UEab&xtx?Wy)qyQ>}54ysFSqc&HYsZG_|s#8r@ z)6^QOsG3!idP}*flqpx0h;mu^Nx7h$SI#MCl{3m|rBpep98nG_2bHk0SJ|a}s_az$ zqHI^TDO;5-$_L8($|hxlvQAl}EK>@U1H7^lw9Q%Ws35$@`5r(8LkXb zo>aOiSxRT6lhR&kqqJ07D9x2-N`}%@X`(b%8Y%ZF^^{tQs>q66xk0bfU+87}J^hZJ zreD$n^mFO>U8!;7}Mz)j9 zq=>91uajk@fGi~WWC58^<`6%bNoJ5dGM!8#KJqe|NM0i2Ne&rBMv`G<2pLSgWDprh z29W-wFX=;`Aic@sq!;N)dXPVo?xZX6kcWwjv>~lYOVXG$!uQDa$UP*Tq>$=FCw3wc zk(dZaqEHUE;TBwn-{2aQ!Bw~dzrru@GeqDrT!ag77S6y?d?S4T_P|c~7~fBS0Pn&k zD1wc!0p5i55QKI3-g*Trg@uq0GrW~c8K*x97DkwmKfCKCxfd~Rv!3;O>9rzXb zviuXi4ZkQ~kk85|d7L~}&XJ#yhslFwuRKWZFFz^wlDo=o`C+-E{E+;he81d8zE`d% z*Or}fEjdlDE>oGvAWO0+TV=C+%W>0D=D7MV{N&n4+XvXY+8?ubuxHwv+H2W~J(_em z$s;``xuq0(VW zO{^wT(Jopx5OpN@0;uAj}c`!c4&@ zOvRsP{wz!oUKGX(BZQ{~uh3WMC3F?sLI=Smv=dqiO@#(RZJ~ys2_OgpC)~D`*)H48 z+s@cd+m6`|;!iv~Y};(_+BVtx@GEQdsZn&-;=A(h8gticDN|GWr?gB-PH9rzRQ=oJ zhRGeOHB=P5*CwZOoS8G3{!{+%(j9-aZT_e;_PA=|62IfxIg?R)C+4>JJcjQy@D+r0 yPikfJSm#;BS~^<#@U3~^zcueQmzj>6cH&nJV$cBwHNFX5rAttG`(^l)NU@8$qAuvi35((!1zg;5r-qU+d zd+xdC+;i`S?0oY*|Bv7Q^#z7u7#s6O9zOn|Pw?#L>Sc2-30*Y)_CNPz7{@x`wOwgW!6u2FM#u$nD$v-o|kkH@#9xNk!2aMAB<1q)1x4vkuG;*vK^KJ_cOwi%+k zpgsl7XVgW_qw1ot5v1(6Q>_rP2U|VCxj9MOq9n5@wFPDvVEG$f0@K-03l`syg!&q| z=OvKpAX*0vn_)&h)Yn5;o`UjO5kdLbmrckDU@1z^TaGfL4cCeY{^PRy(zDNpMa{@y zILSs|f}}lK3t>E_o<0nyuY+*hma2m)wk&1fcZC5J*oTu1IvJZdi2B+BLBm$0*>GSB zWS%qYpf;Rvv~GnBt>Ke18uFovKMrabM^=^5D4sM4HTfZ=cP%w!J1j+n@9?KpabkyitlRmAQs>mFQvo-o0Y@9ALhiddD?I$SS zZu3;kg%b<)e9FpU5_1}i7ISSP^vD{W&WT9|(`^o(n-zN=4+`;ks^w@8#vV)Nn|7o; zsUy$P-SC^;NL{oYqHPeoir`df5KLP*Yw8KE@))#kRiiIM>L^4lN^|rSgtWM=;V4*_ zrFMbo>akff&6z!RtH7LAXfXX}IquJJoSo>yiI&vES~%Hs#@ULafY?O@?mLS>4+2|2 zHuVkN*fX2~N$|HyFdS$&4(DjFAbJ#19n|Vmr$DwB{edr<&u`M(rL^y`UZXeb2)gbv z^ArVN*vKh*j78jRhl*yX*Z~zg0oiKVtj_2M`H=*(Mk{M{gr=G@K1_F+Jc6*?4&g>e zU$s^y50`35jmoG6e$xU)ue)lrID`Cs?5Nf(wv=>so1fH$&NFP$X4pi^tluY?zRqTi zsn+&tvB6R;y*rh0j0X)iq8Usi*H9u85Qca{4}-$6rx7T^tY%me^B{gQt>{ibTJXfO z1XHT@HD-@OVg_(8p|;&&eW{%_=V^vLLTWVAg&@~zv^g5WWL68z+6f)RJmJdCwhNc% z;v5H^)1;Zs4xDu=)dFUIYA2Yha4!e$B`0$WR!49mPH}W-=1@|z7AJG%dqUTCjhPEk zUacRg`*FcM9GEda`B$11jGrl3V7cO>3v(m6J#5U8oM8IUEGDEy^Z`g){46x zxN@kl`5m>m1(3Doch%yZfSej*E1BpHD%s{=t90OXHPefIaT~5n=7xfCW}Lq=Bx*og zmtY^=0ULHe+G&h+%O}s#9Y%;Pwozbg1^EJWA4tB~GiFYr(3?>-hxB}APND6f!6Gbh zf}GnkX8F*AqZml4nXYaIbV3+x>W@M5Ry9JJUsWUM(h6IfU_%?6!ISqOJU{MB?EyJJ z`>_Z6aWvB(TuUk&p+@K>F}|;qlp}f~d~h={80^zxQmJmK=wf>{bHsAjXy`G8?q0zh zsnIc*)uS!VNBXrU;U^gva4I&lulzxMp>7Vx{J14CYymXzH0dkVjgo4;FoDkW(Kbp! z%#N}ssvx+$z7Z^EMi7Nf!eDlzw1SLh`f7AU@L<-JP;)bLI&^agZM%!L>_rK-Xd@a- zGCy>c`Q?PI?@ir0-CauhI-B(MI@7D0gKKny`H&!AwKz%A#$8l0|Ez8@)Qszf?(d-c zhbjAM7L_IZN~_kM!T2;7Mj1-4g84{lFYM#f4-|0L{KKg1E@y1w5mMXTq)n^N?KX$Y zr%`lv%2||K1GQ+{T3z3RTKPiF94<2l5V)=mT!?J!1zNo}8ywxhyp1k?ugI_7B##t4a%H72vm<*L6=biO*W>Zhj>sg&nVP~ktNM# zG>Oq9qu6z3M^ZC)pjr`b6yKJ<(n(PeusyU7wjbh69N~k0~R@IV9=?(rJ+3 zS{4Zn{!9p_1;ZB6gWp1rnk3aaoY`Hs(f zuO>-?w8Z9R`&N^ReX&`9R)%a7qSq?smv=BXMz z=0RXk)zMdQvIq5==X$QJ4&_?v&ZM9bK>GT(@|vwzE%W6L!?O5Q|=Wkf{youQDVA!HEXl6U?D+rQI}yOj#X0dQL&)iS{cHaYA}`qeJc$I znCo7f!C-=k_f%pcu>&f1LS+k}G}q)JFc+gaMz=z#u*Th2*#yyT5Pb!Lb`Fb=)D|dk zSvdu)$q4AjXC*UD1De$I*aA!2Y#OwQT>vp54Vr7N02&@qs#M@X?njjUm(c@u7R$$yA! z8e)gq%pTl?!fOwNe7kn4-N+&CieY*OVEjUCw!Ek|vWrWq*l?y*uv#9V4MzduEY$!7 zh3I+f&JH@7Tp?%lr|B0T1V?T8C}w9%Yx8|x(WElV+;R+-5{&3iE|3%!O#66zsW zkdDE$Xj^HH?%&JI!6e`1LmOO+B?cvg zhG=wAG%MC{dh=#=pKeJtdIY^kU$x$=$40_b>>P#(I~EC`B96z3 z5i7W#a#kL5Q65}Y9XrSzLjmbB+Dvm3}-}&)#n&`s4(I!6MFu3;4L!` zhAH#+Q!{nc!;R}`)uhm~grdmJXT>{MUJP~yc>&`mv)E1BO_ zLLE2SHr5wLNm&(w0KYJ&sL|sL&N2BWy^2Lzhr=1`&9sNYc$tEy%6WK(8}BwS6s^hc zT%+UBDhe0NvfW_Lz}paF{;rwnVcIXE>FOP1%y?b+5}B`Mkb1UD_S- z_h>*CV!+ClmO)i5OyNooF2V~0Tp#@u(mpIFi?bcWP@L%tL7_1b zF9XnReG0N*OvKrE#-~{3k3jz^TGppNh5lh$*JA^z7{R+GBwz&M)B>>%u43ytu`z^= z=qQA~WI9ljH^gnYqH++ZnNLL#Wh&?i<^)8zI$kbgc>7|xoGpe^*#dYJWLI!LUv$zR z`~x4H$_6KTf^Ifj7Y9G^#BFPYvNi6cZe2Hw$|>NYrzsi=R->$uj=g#(I__sh|F-r9m3b`1C zIt)cq{HZ}G@YV)f0tv^`A-H!CFhjwBmm0sN2yP6-WgITjaYpOgbborQ@HQ>d5@PEC z+#IhI4&duayv;$AQ*}Y=NvTMfg&$2Wf0J;n-lwsUFyW;F|8;Yi~SuVb~BFhC` zK`-R~3ntIr*HP-|WnT8qg94Khh>ICaFe)+U7|$`vLRYlQ>3Qq0+-fIjZP&MH;*nr# zo9_g?q3Fbid8$+kFJ4`{>(1;@S$2p%u)aBjNnmcmX1<3>k}Mj(M1LNP6IhL&^Nb zV`*omfqDyLk-&FNvRua4LJaVjg^J1iyZA_cQeTN@FV~mncbiATJZE>>I7uR$-N6!3 zmn;2Zs3%`vMPX7y?t zYq!~08;c*io#j4tUBUmJ{}=IJ#5Q3kyOVv{eV#}4)Jdkai@jJHV`^KV@br~Zk-{{L9n9MAA<*FT%*F9Up zjIh-g>}m-zQ&%0&3oTx{^d-Qf{@XueW4PrIoP#PPz`&S#Mjcg$)dBTm)l!eCN7Rqh zUiFarf%?9BP<>DRqxz=Ws%{WskC3*`@4M8kEgSo$^cN8RZws&y^}AraY}wDp93Ec}gi)o>WSe zh;p~`Ps(!TF69Tx_m%G{cPfjOLgi9rj*_Ril#~9${)7HM`QP?;_+RqZ_@DQ0^grn@ z^?%2IyZ<)-m;C4XC-`&ynjieCKgTcoy?&2h@{4}n@A4n__50rSz2*C(?+?Ci-)p`- zzE)q0ugQlY%UAE)?5pz`z8YWL_q=bTZ-Z~0@8`ZMU(ENk?==sVA+`gotqcOvI6IY)Bpb2jI!$$28DB&RTESRRy*$sftR@&Wk``8oM9xkO$q zKP>;Vyi&eh{*SpHQ!h4tZJKkHoH+rx2UhbXeo$Hv_lXN6(v{H$2ySmU_P7S>(CWbFt?_&lHd5ad>Q=QR%caAf1$s zOZ`%x^pW(cv`5+{wMzBUW~ojxq)pO`QbKw`dQN&)ib+pPl~Poyke-qrmmZQHlpc`o zkyc4RkiIY7DTSpwr0+^MOIJ!)NS8}rmF7x?(rhUtT`0|vrb|<$d}*?DzLY0TlvK$t z=HY~SH)IwtN60mD5k|N zV!gOod_jzhYsE_O3Gp%U5%FR1R`Eh{miT3HqIjM-L1e{2_kjDTyUV@J-Q;d`uXk6v zqwaF|lkNxIKXiZ3eW&|I_cHf2?yKGN-Iuuw-IuyAcF%Ora8GwnbLYD+a0lJsR@`2< z=;quG_Zi_60dEzB{X&PZPpA_NAt9_4o)y*z_Xw+mZwfaER|*S+xk90EsW3;lM7UU( zDa;UDf>U6GF}{yK%pc?r@bB?&@%#BMzLVd_@8Y-foA~GXU+|CfkMSk^YW`pONBM{O zhxq&WAM*F`tN7daoB1308~E$_W&Cw~5&sQ-3BQ&Ah^IzdF;%D3>93~%(g`N>WO`MXo2y$k)kLdrjW@bNb<-;l1nrK zL?tqD6OOoulQ@W-u;dIk%30hA?g-b%eZ(E+KIA^&-scW-zvq6(b#kw9JGmWPBbVml z+A|CGD3 zKa*UCSQ;H($G_sUjLr7<=s){+`z1ja{x1L*?lJy%d^f(^|LUEN)6e){_A@X4|MkCK G0{;#ZaRw^@ literal 0 HcmV?d00001 diff --git a/sysfiles/A3.AELEM.CODE#060000 b/sysfiles/A3.AELEM.CODE#060000 new file mode 100644 index 0000000000000000000000000000000000000000..dfa3ebc076e9b5d0eb7f389f04061d385e7ccf95 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/sysfiles/A3.AFP.CODE#060000 b/sysfiles/A3.AFP.CODE#060000 new file mode 100644 index 0000000000000000000000000000000000000000..e965bfb09aeb85cea6e01326988ec95201407664 GIT binary patch literal 8704 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 QiC^|JFaQ7bzg_}=1uW?`qW}N^ literal 0 HcmV?d00001 diff --git a/sysfiles/ELEM6502.CODE#060000 b/sysfiles/ELEM6502.CODE#060000 new file mode 100644 index 0000000000000000000000000000000000000000..ea11e6305f046b4d398b7282f9e11e71db3de1bc GIT binary patch literal 8192 zcmeG>d3;k<)-QQU-g`~nx%VxUN=pfdfXGr7Wm6iKV${GefC$JE5Sg-C^bd>NT zvnI{D8_H(;eUR;+hHW}zr;M2n8>YjyT$4W!vVB~(&r~QCaZ3vzkN&or^B;iKCVv=0 zbHRTYLi51?C4}aK{|JN@fd4B9M3ZC<+8pf>w#t9hT`+`!HB z&xIxadEm+8R-65MVKwjn0)oYj^Wc%hr)p9p@ZPFg$_Y{&-u9L0tih5cgTlr z4mLly-NEXN5mLC3)*YISZ5Fn}*uKPe1lw2G=EClBss${CoO3%LFc)$`&biR!>25;( zamB$_g1|s_E9#!KZp#ppd&^*x+uO|=`|P&uw&e=B!Z`7&)Wp8WK0rH8A690o6ZJ&U zO`cp_Y>a)jZIao&O*Ff=V7~=>)EMgCr@T)tkB> zJII1RKwo$YM#Bq`MV=u`$xiYksZKl4=V_2`qTA>$dXUb5S>T6L=nmY}-h0$1wMIAmPp4pxHkIJT3U3CElCjJ;mM~=>|16(hbfV8aNs0 zk+kkL0`=k~86+YH9EQry!8T7fTY}J0SOfisOEPvL6JZCyOxOup4R``WYXDE9^A;b+ zK(cx<{&gbG?&-L%!`L?%b-NMQjZ`du#N1>^#liu%WShq@O-yeo&>H6!Tw{uHg=x6^ z>1f#GJiJ0h~COngz z#3jdI*lNK&Vq(|CrHEQ#P81X+_oRqSo8tm5hJT2wq}-_zGGY2S3fmeEjb!|9RI7Ap za$LzCahG3#LPdWFp15F!~|u*U&}cz z3028PyJw@-F^q%vU`}FX-9jTXv6?4x9$6R>Z8m}(XGYA2`0#!_y?2Ck{9c?>0<(`Y zb|{K*eT>6q!>;b!(jr2Rb-nM%Thv) z)gVTpY{pd+RPaW{%amP>c;xHhQL*FqKVoba61?XD3FS}04bl7f%|?{Rlj_AfFFkgm ztT`#3ZFVLT(*VO5HQ+rMg3B!iFmj1ji>b*oym`aYsgGS20g!{1~i=jdTICX0&uXBg6LjY)?hqnyTx zveJ7zssnAvLKm4bMb6?huIE0aTWj$gVRW=kT#thojYa~u;5ldU%mO<`o>0$Hs3HKj z2n!f>f2}GzM}Z-@8nI(|U1tg0v%rBojTkjnRSaFm8jlTHBObY!n6ao|6EEs991MHx zckJdOMjE$U|5Zin6tHs9cKgdVcImREEc4RM!Ch-Nzq0UpX8wzvkMT1WpSYQ6t-0rk zE^St+pPVe@6 zY>7F?eZ=OPEPSx2$>8U&CAlj1sTgffjJU*Vabi>+m0eSZeto^gua@_snF+k|%ml2w z0(LtwDz1Q?F3-GwM|SPNalEc7M&+5WJ-Ri}r`K;G&h^�|&2Ff3~QCBEEsqO-@Xr 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 G0{;#ZaRw^@ literal 0 HcmV?d00001