From 33c258c553b395e0b6aaf043e03fd4bcf5e0c468 Mon Sep 17 00:00:00 2001 From: "J.B. Langston" Date: Fri, 3 Feb 2017 23:16:34 -0500 Subject: [PATCH] Cleanup --- build.py | 13 +- relocate.asm | 24 +- sprmon64.sda | Bin 21844 -> 0 bytes sprmon64_email.txt => sprmon64.txt | 0 supermon inst.prg | Bin 7216 -> 0 bytes supermon64 docs.seq | 1 - supermon64 docs.txt | 285 ------- supermon64.src.seq | 1 - supermon64.src.txt | 1104 ---------------------------- 9 files changed, 11 insertions(+), 1417 deletions(-) delete mode 100644 sprmon64.sda rename sprmon64_email.txt => sprmon64.txt (100%) delete mode 100644 supermon inst.prg delete mode 100644 supermon64 docs.seq delete mode 100644 supermon64 docs.txt delete mode 100644 supermon64.src.seq delete mode 100644 supermon64.src.txt diff --git a/build.py b/build.py index 5be8f99..9a42f43 100644 --- a/build.py +++ b/build.py @@ -40,23 +40,26 @@ if len(mon1) != len(mon2): print("input files are not the same length") sys.exit() -if len(mon1) > 38911: - print("input files too large") - sys.exit() +# get end of first program from header +end1 = struct.unpack('H', mon1[0:2])[0] + len(mon1) - 2 -origin = struct.unpack('H', mon1[0:2])[0] +# strip origin from both programs mon1 = mon1[2:] mon2 = mon2[2:] with open(sys.argv[4], 'wb') as out: + # prepend relocator stub out.write(stub) + # separate from supermon code with $36 twice out.write(b'\x36\x36') i = 0 while i < len(mon1): if len(mon1) > i+1 and mon1[i+1] != mon2[i+1]: addr = struct.unpack('H', mon1[i:i+2])[0] - offset = struct.pack('h', addr - origin - len(mon1)) + # calculate offset to address + offset = struct.pack('h', addr - end1) out.write(offset) + # mark address to be adjusted with $36 out.write(b'\x36') i += 2 else: diff --git a/relocate.asm b/relocate.asm index 58cba76..247ce3a 100644 --- a/relocate.asm +++ b/relocate.asm @@ -1,22 +1,5 @@ ; Relocatable code stub for Supermon 64 by Jim Butterfield - -; Jim Butterfield described the post-processing of Supermon 64 binaries -; in a posting to comp.sys.cbm on Dec 20, 2003: - -; I should note that, since Supermon+64 is relocatable code, the source -; does not assemble into the final binary file. It may seem crude, but -; I follow this procedure: (1) The source is carefully structured so -; that there are no "dispersed addresses" such as might be created with -; something like LDA #>VECTOR .. LDY #Kx+X9=`5zR zqcs2kGN24rsS~Oy&F5*`ctgoMM9zJ3w#4f|31p>R)Mzi4ka z0wA@JErGB97OUoXfi@V}7~T9vN-9_&V#)|=uoQp|v116;jPg&eA;0I+X7^-4oBb1} zw+k>ZyUs+M%9WsH_8m_hQuZfVr`e-Vs1gJ(O=Q1MWI<5+MZ%omSUA8t7LE*o zJ;S{@k=|;Nc*8z^f!+~>tHE$ouo}n3mIk)5x*KC)y{po(f|H0n8==eD zkc!l^3A(%$QlVubf3zK7D_g4015>fK)esZm!uwxjZ6F5B2LrdXHZPC?2UbDjq;E22 z834-M%0N)fPHlykpR4l&Y0&d&jOvq`oCLx3_&-hB^8PN$dSw1dSz%c|Q5IXaoFF5X z6%b{FvKWH&kKRtp!2C06)H(zR|BF)_>Ia$a|CD>SK>sbNE%9HR4BaIK^9Kq}i3Zi^ z|MUBX>rR8z3PH(!mt{a|?GO~mS&RZy{h234E!x^TV4@DVTnAjK11>35@4D2I+yRyC zgvxe7QWWe$OckrXrlzKr6+>eNawoL~S$C?T_PZhbJ&-*g606>IZsJ3m_CTA|pdFC? zPRM?j8u|*>#y?l}U&)0iyg%{+d4bn|yYPC_Ahk1oQIC8qbQV1pF^e3FQa$JGU4)kc zJ;l&OE~J{T9!Sp)NIkBeo$B;*&n|U(Mb`S9y1UOA@sOOqPb=rN7{nc(DRd z&8c%Wd7vqN5V%waUK#|h)`3?C)l&l}2Gz3zFAu6G2wveuM21`s<#=9-2#fOep7IQj z3ied0%bW=1f6IT|Eh^Yf?Ge3c&^Qw}n2TqsJDXFg-m8ng)_eX~ati5#8qY6ynZ3O| zz}ss?C^aF#W`sXh<0vT+B>b60|5=f$9uSP9^-io0fF*HVzAYB5Dh*ChUxLKs+ zvi#jSVB+;QNM&#ixcoW?QfZ$9uDsq3sW57-{YL;i69 z3-T985Koy>pl^Y)RH(+_1r`$Ff3#qw7968hwgxKO0G08ep4CvRAhwsmW8Jo+L<(-jfWK#s8t0 zW%jIs^2zEFW;S0B4kM|F+VrfoFslF5)WrX(P5-yH8d6=7IsNHh>rek`&i@&hdK9O$ zIP8FgSUQLU|2PE`FgcdpdHK+f#u`^FoxImLoGwKMBBdSlmDlo?>`N`Jt@!_UOvAkLCxYyB6KAI zQWpt{kP81c1tPA4de%W@iE4*QDXS!X*|0*@b|3KN9c&9tg!nM1^{X2ZaRNI6M8K0su#f976H~kzzQ!-Csbr=${#Dx=?U_ zJ_*_CTj9+XGxQh_i^^&K1!yxs#F0a=Rz8&+!)%Gn$JjV8G?4SggeKD}ya z&1(1ct6INrgtAp%r?2E?+1bs%1-IjTRgpgQr&w;Ee254bIit`dC(#wNqZRco;4A=?P8Lbln>dR?a)DktTct z(9u-f0I*@~Fz*Ggs$tH84H;%o!IIHoB#D*yj%dVsos&mklT`o`Nza8iKjh^AWj}l6 z1w=YY`hn0|<2 z`-b9@2$T9z=955}CV@T4#*q+Fh{%OzuG$gvGqQD8YLa3|E6J>snaw8&vr!etmvqhY zjJADNDdo!_R4qeXCA0PGwkHEB)2PtvS7~1E0Eb*PR~Sqt0AZNb7A6_Rf-;p$Iqwia z!sUpMJq1%<$PkU2BULmcVy22ULC>pV4O@FU@dNBW0&(Ngq{(3>)iXK*37=&{zKjuV zg44kK)yW6!O5c>BNob&4376nc+;mG*;fau{(LsqoH#&?Wm?I+^oVPaRPY5igr3RQ` z{jgFq!h+3AEJ``0%SsF6UO}W#w~x>Oci7MJIl$`cspc^OQ=Iz;KnE$EikQ1{n&=6^ zJ5Zj1+@qb>O&dU6o{P4Ta}lY`NPoYgK(TTC>2SdeD(N6t>Z$K$1TnWLEL^u4v})Gj|FI*#Nq1Y*b@@H6O^DLmK4{ zRlc4PmR)v1YlVhFY~T?%+ZkkNnIZ6JN;$2y!E0vTp$A&2VES{^uHuTqHFE5sjn>tu z>K}OFu~_RH7c@!9x*c{(-s0`Dz=gGeFEwZ41=lH~)&(yLsEzSR3}1nmNaw>&3VKJU z0;w;p44|>0h+1ysEjhs35)T05MeZJ<4Jl7*y}cP6!MVW>9Er~w8wk)#jW}=pK&m4Y z=b!fA@MCfSbl)sW;=loRK7jQP0$k%W#YcYX2nc<%_69pYV$wzN6JOsS4KLQ#3}Qu(H?>(sP3HmBd)q8S*}(9y z{yA}G5=T4ELaVVVD)QU)`mNm}&(C}*aqo@Y6$%Z^WE*zgDvib#3#foC@#IPb@fF84 z5gx*_tAGz8IF4#gn)Vp8CTOYp3pC+&`&$Em=rfYI%7kzCejsEXaHH~E;s+N`gRml7 zIRKI1#bXM-1<*&bS58+gp^u;$e1IJ|L>}=)&%=j;)-=E{JOwzVDZu;lAstYnWAu68 z-}GirY!zS297|I8^a;d2{U8gzb^{}kuk)^xtFbbJPuJdpB}s&2m_ypWGtTUN&P$|Q zM2w-X)G@Zr!NACz=u#=Tf|M4!Kj2}0-AVwLOJtsBzRokTK$swT4+;9f!qU!@khni< zvD5)$=nkCWMk6(S`3~_vA%0S~Pug>e5bryH%GoqepWkN#tU#>t8lY(8&JOE*e3bXI zFB4a4j?kd7wJI?h6nk*5A1nnKViXN>W3?oT)z6tgr*PAQf-kZ0AcgN}_Z)!OPQd)*?F-BO^wAL!6wTR$#$Uq@;!f{ALyXdJ36rF26C*|F zcN$iP-POc+9jEBqJ+;;c7SL@0!~J{|Mk3&)n6~JIN*-o#a-Oan&HSs8YkS9c zr3%0pd)4F8qpF1HSM&K|yT3O%i0@{;0X+wdaRpl|U01!miM(@fetgi0d2R`mCKD9t z%GR?h@$={87w-Mj+a+cG8;9;o^})|O3_N03BX47ub+3Ocx{dO$S!CrnWF2(EmB&XK zZ_JeL2f`C2on8;=2|+uqge8V8`weVK1(qvu;DOE*z>@N|%3VOao;8x5Z|> z^k?Hb^V;^e=Ja)5IB;o>3z7g(YbSsofk%8JuNlS8`FyryD*|RR&PL=Wkox$V)7GAs zeMWtvk2bBe1j2M}oDpw#OK}UIn=N*Mrw#OihdEtfalOlH<`#Y$X}^$c&B|90C>mv34>bLQ|}yLRldIrnT==Z}fP6Xz}m?$((XGyVP9MDuLM z9?brY-xw>k6A+}GyR>{22=Uya9|;S84zEnmNMofH;%X(O*wd~z;L=x zIpRoRTSY$hK;$hYDRe!+e5*WAF+Bf-0D(@>r|0RA_&g=wN12zb%wy3-G!oyCi7;Vu zY^S+PRiFty&ywy5rgL;iusdDgZYzM35g?fl0D{h00Ex~qB?;)v5$*t#=u)_Cu3#CG zorMHx0H7@vX^ryH01)rx<0NM5!(LpGx4)M+g#xm2c;+N7j06FIZ>i*((Kr-e4t)ke z2t^P`5K6+g1o#>f00RI-FOW#ev-g6W$y|Fc(4OR}F58n4Kq$g;QeY7YSdt(N9ojk} zVDTyh7JjTdz}B?^vbogsvWqx2qU5ny%DkOLSp?%mzq& zfC)gbuZ|v1M-TCTwmSd6M~#5i{lzo}bb(Of|6b?Ae!&ruf0p_Jwk870&p}qn!eRd+ z+wGa1+7jBbI;;gC7O+8BAN1M7W&$t-RqL->OqbqvWewm@fl zDy=B;tyh(?UWEu#0rCL!=SQNkN{axAars2#R3t5AFmveCeoUB!UjcTC4m1Ko5ohpY zVcC|E-R>#q?PkYq5=KRk37}$Q^b2ElV}!HUGLy{w#1r8tDczh1%0Y8h#l5p2AN#tkgcfL8_l|brJidu6+lg4z`BJ7P& zKr#P=G)G7+ks2_PT$0n*d93WN$RNS3r_6zAjLX`*@1-skZf1o!0(7&~S#~XICAz(A#{5Yas*^;U$^jQA(J>#cUXYh{2rOB(D+0uTl*wgY+*N@JI zmv2bX<7?WdNNIwuPfS4Y0GqEDMs7BRkw|?Tnx;-aiA})a(}y*HX!i6m1hVfIW=OC* zzm(Vav&Y`u-$PT78Fm+7vq*E@%zLgqlf|%^xU;x_;@R4qs2$Y+dnrlOlYZAE(Yl#lKYzj7_McJKzcghXX(u3K*C86ubcc>0A=`Ae$_g0< z#JfJynx<(Oz+sOvm!F#A_$0}i&>JXJ*}<2kmB9Dy0EgXt<;ZSL(Dw&HgE^;VmWXoj zRdC{CKpm5zeA*%t6rxbrIRApx$zOpRa#M23`~kKZ?2w3hdX&lRC3L-?oc7Y<7JO1_ z(AG>O6Lnf3$sEL+oLFGm#h#q=dfZ<_O)&D~ktKXU^7Vi>-Wb&Jb+9@kA1~1PSp_1a7$&`D1A1(fbylgH&Wfi z)MK+dV-v`90I=nQB))3^p+9Fdq15~+d4u#@a(d;C$j_+BUFSU&KsyF*-uc{mnz`Be z`2O7~X!NkpB1LftNKz z?>PNwV^vPxuG<<)2sq3KqXJ%yf2Q;wzGS*?2_L{!S9gV;w+yX2-+9Hx7h9LNeG=TR zjIZf$2JG*1{X&&+Dr zR;`$tPMfvT-D$buv$Q_%+|0ngq47(&U8oMnndUu z*ag-9!$%STo{5}ZA9H<~1LNl1AQZc~tFWm~fA~h-Cjc}~wXB|U&c7yjIsYHBMejGK zaE(c4g!8oOR(R8GD}svV=pq@-l^}@o687o-ZYIzN7pQ*;r*0n z0(7@P#F)b?J;gdGno6+uwevLYniLsjl1>0zP{zK|HBMi56y%a3({CT>^!0v~pD_v; zPjgP5`oXdGEkPT8_qnidp|c|DAZp(9P@mh48;$e5?u@p(*=BThl>K9RWm9I$GJFhR z$~~L~>lICqe$|avTq5dvZ9i|6ow|9H=%hUaYSrCbc;@WghpapMuX*ogTil5JY&mxFzv~pjqZNlxDiE}q-1O$K`P z0DnG-lrb2%E}A+X{RP(S(fH05>{!G>l2m}CPeQR^E0p>NP~~mno^C1vR{`+jVBV(e zm-jx^7cDq^JP)4fzGF+0zq`kvVH>$!96BoKR;aImQzZgH%J?Xns(gW6w}Bp3bWW=` zqv|mLEFxtbJ+=Dqxrw5PmX1L`k>G)p3h-S??@pZRT`wE1bHdl1ej)i{n|X~Cw?s$1 z?&W8mz^y(dsNOoU&ounV#TqXR3H-EyWc~TrgO>(?!Wc#r?`d+^XmVV6iOFak(u7*P)?^aT%+rkPEET!s_fU0E(F*HFh{T_zw}f@?T0)h>YFK}P3vi7Au#>bZI}1`tQ*%&!p|{L2sbJHv?n(-i)CysbSwxyy zxL&?~n6G`M>*V3&AVp3)UlF7P43Pk=2Ar@ zH;$e%z3|=Rf@0q);};Dxr_WLxyzn5vgBaa3=XDmgV^*=gVEFYmy*+Au0TId;k}rbs zy3P7)o)^N3x~Pyi(vcJ{4VnUg0g$nZ7RgFSo=7m(YcWD6xNj=3V;xR+3$?^@Fw)@& z?)LP4*9`0i#&YTgMhD{=PgslqJ|Y-DXpxp0qQ&iCDa7am6XgmwsSsqdmcE->K$Wo? z5e!Q5GH#{2GDiaj4Jl8gMX&fj`=H88dG0cs+*n$toJNAoZ$XQsf{fr5M(`8#7^Iy( z;t~ot%1Qd9G4p409-T9Brq8THzZpsees5=2Zng6J<{Ho|&Fl^1U3p>w@Rv#j>xtL( z4(nFP#v;}3N`#}WPVSo;1C z=H>RK2MdHLcjg(A^gNjQ=Ry&l5A)=qT`VVr8@Vd`QI)K+Dabx<)$Z*@UNrg_2zZTf zi`<{BEkdOLAlGQV<>Nx#hdA^N^&VHBS+!ILV)EDlu@^Da{W!D7n(%(ze!Xp+JebE` zo1dvquUY-D3L?qU7FGug>aEcR2)EE-WkQM^k;lk0;VHb-QB7`j)jPfYOaqY|>LV>b zvyZFKQ-sI~#DnP@%YN1ZCescnao=35_>SRD<-thA5T4d*F@{0WJD?pp|pe7H2W|yG8 zE+RKO+rFfA_8`f`xP|Kl20X+nU7$Qy8kFE;c;LG^r{%uEQ7icUXyh#Db#1D#1`dD7SuUUh3Ju;+)FMC!4U~~`G7X+k2-G#Bp)Z+tD(Ok_3mTYwnX zv*2uX;XyhIB#xq9D12NPUZTHJh&|`(Fx4uZIn43`oFxP%d;xq=zmPSv_*qq8%tJ5| z;mpLFjYB#SDY|liAP455^K7XE1A45cPNQWQcgIYys@uy6M^~!8f+n-%hiB||X& zLG~hmkDnesPupjx*FMfRT>5^maV=yI1IAYn6&B_+oNJbXw=|wVe;RSic;DL0jD{~) z)NeQJG-Avh2p4~em_1Q^nyWXBxWBV)dv1SB3Ivn__R5LnElomqXTOoldn^$4^ef9> zv1r~Wo^Tb5riD{GvxB$oNT`8+%D?MPb3lbAj)^dh1b?{rLYo3Ak3CO57YAMt;5RWG zd~ge%gQmx9myqHj0~5Hysq|w1j)|6L!9%#R$tX&=Xqxj6ww`sN(q-Agx&eXcGjB;G zVEVcnhTji{MSC4sT<1u9Bk!Q+3Po=L)5acYL7o$9f%)~O(qj|uFSW7JJiU<9>hPL} zd$)9PtH%WlYwDxE8NApely?T!Pyrr0d!*5=NGhMXrpYnv@w}5}x|q$!4vf?EQH7HX*kUgd^`pWqz^*O<`XKOL+5D9sN0uEOYtRG-O zD@d8v`8V|_OZo7Fv(bD^h;HZ&jmE%*V`T>8;H}-}pXBC_ z0XJ;U;gKlP5zt(VahMeVX-Yhe`w+nYuTd`q6n~~`9zX;lNdG&s&AB$;5i_5J%3*56SX2j+&w}KVdRb^dC z3n3B^*S*&3n1x7mwB^>;p>0Aq$*{SusM6dwpRSD*r9`)SNz#KERoBkH*TjPd=UxypHj#Oz+QAy+=p`hX-xY0;Q3kkC#=7mj1NzU{E-p8%ItpaBPnt>-Hw7Ol+pnrT~K zAg}_L-~yX{O}m=~a6f%c(oy>BT}{K&`daG_?9-Vd<1VFP^2*-b&Cl_vTW@!_=S2HU z)}pC*Ku$d{BHbEC%84^9UAs)x}!T!jHT>G&5@ksvvc4=Tc!fD(k)7Uu6ZR||9WhZ z{YkU3Ehw{2R{Xh|>uhhdnNa+K#gUICtDe~R%67aFPHgHw9lK`Wy9r5`<{CYfrWfwp z)hxOhu=ie*ZQ)G!PNmfKuEzh0J5hzCXNvjL>udUN#@@HTk@x)tj42jLu9*=KYi`@+``iB-@QVveNsB5Y%%EahYpIp#P zEoh|3Z5_s4Ds4kxTk}0~1zw}idLiBK;-gSLGfXkpUWIR)W@=v=(^ z?HY^20S4z4_gsrE_=lnOYW-K44(_emiORpcsv~2(pFAF1)3Cto#l4-2CvEV&wq05O zvaeg8zZ+MwVsH1ft@!A5)7KAM!;LS$LOdI4qD0k$Rb%><@dhKcqpjib{!u|__JBKG z|C0F97X4SAddH?M{~O*p-=rO8vleAw{drjdqD#Drj3*~O^;wvxiY$K79EAFLeW`{+ zG3K%j8MicnY*g!HA1xMB@&1^R@Vo-MnF0&(1?GjfJNlv%ibIMhu%a6 zc-m@h;)Xt;i8`~%zT8czi}3ZL3e)=+9khIEnh%VhW9(|hjyN_px4sVka(i4ks}d!C z*4y-vS`TED3+KoQ3!V`CTup@|Yj%fH6N^3Xt*9MhyFNZ_9@(^7e?T)+(vdQ=enH4S zzB0T%D?awyLu2Zv{(Yv?XM5wXn$qbzn3B*{SA#rqS*~Oo$#VazgQ>hPJD7}P=5ZSh zS1rEGvDJV7`kg2xo{5UI7>(&9$9gSsudlVLFzF@gZD=nJt1S<+tzM_sca;+#7dpcWORmq->wd{_IO1+d|r-BcJwz)L!zY3c*9So69qG7QHg;&sjNf z$a6o3xi0$h<*SqtS~Amfz}di@?>yTTu>|A8Y)8hEHULH46l~TG_^{E#iym9=WIdrL zt-a$une$}OQs?a#iH?Q-g(5W8Hcl_A{x~T6(zmDdXvK&HT}d@QK7)5>*HzsYatc#*ZAjt+Utc~UiVUsN|wCyTPg zGzUKKx&F=kk>SPPt%=!PoXmGyLYIuBUAc!G4(z*Q^`hh6&PPXMba1*C9qg08l(t>) z-?)=>aGuvw)O$Nl;_uplJ4))c`_Ns74Q;0n`R~h3iE^LD>|LI=&ri$G*YYs7H5@B8 zb*~>aXkHbu^ho&dc%I*N@#vzJC;iNc1gf$HOABqo$+ayKg%!u8jhWS7nlf)8IH9s6@TUR z5x(RVQ$Yvj^<)4P%tLlB%)^rI?BN^Kh9vBOkrlj$$?Ou{HYwgBwaA5P>aVd?s^ia_ zUd98pRY2ZnM~6X_=@RP$o!YLUJm}U}OZCnlLjea-u?h`~FUVXKvZRPF(%C@07GUgw z*8Rz|JmJ?nqstcx8taPS_#qa)0wHU{kn(A}MO)<9WcfRHCejG~;mpsG%+9RMq(?EZ zSseVGwm7!wwdkyskU>vh5ZuyP{&Ms42%GDW%e&SHosGUNl+K*pG4a6Hyw2$S zSZTnrL{au_kYM`Gi=0Q1XWB%GY`#vX&r-`65-rk))^5@K9pT=@l=N7XW`6nSJKYhka?DHmi=%ni$Kg-*fb5PaGr5sfHh!^fL)iLzE@a}xy;g4A#wp2zhM=AGKEtDjT0q<1 z3Ra*w!crl%X<1}zu8$uaE`Rl!b}%k9GK~^jtO$! zH>XSv*7=R6W9$0dTPdDLK{PUOwB|P=mDDJVeC|MG`fY+ zIb8{bk~Y6rf4JNqqB;NIpjo#!9+fsUNK9tdZ5y;4td}Zk}YLxP|o_1ekiN4XurZ}SR^!JrCSeX}h z>N$Im?FZkbx@r4A`l{2+7ln{fs}uZY5ktNUWpWkEd-Q zJ9g!pX=Kvz8G9-F`yVwKD;~91Q&TWa>*?(+jRL3oL}YGFgmt;?wa4~vPwNFXcYcAJ zg2uNRn%ihxM{Yl5-rE#o{rrfk#gG~gVa%-=C5D$G8$DDD?mqN#y;Ii!+O2VPQDp(W zRBC3jX{!1Ey)O;^zu<&`nr4_D>gY{`*8gjdXCD#nsovrZXwP}_v1xE5njX={uF{Ep zKND)MC_sVM6^YuUX8(MDmv~xH1y#o>Cloo!Y#y1>Vj_f*MGN>WO}7cnw1i4*Ec(@qz>^hI~=*KGHr`hI4HUFXXrz3Cepm%6cSSz*mVkRvo8AhUb=zAt;^87c_`zs5PQALuOs^2H)>vMx1q&e z3U@qbAO8Aot`3PSA1%SM#7&LHT(@T9hAZ*s_q&@Z>hlqdQ^^Hzx5BKH_WqG&A#7~w zdLVPtsg^EqoYPuB5sIIRk=L(Sb!^_Nl#;y#AhlHfTiGPpkc>8uruYvks}0Od&GOFZ zk5Mb~ELZr#+r|+dkJ3-BM6|*5V`tjxrS%MGr_Lw{*=2 zo!19@mDU9nH-fSS;cj-m&AY;t)cY%pd<^fu;eB#lN;WgWCsa8cC<7d5=^t+&>oqvP zHwTAq5*?dX1Q*kVvXA%9QeEL0;;>B0#|w*w$}F8y*m_Oikwl(}jD*br7lmz+Ijclbe}Pg!x78D&@Ahqn7?+dqR+LsbRI zk}36H%27+w{M}dH#gn?B#&9Pz+A(wG+-S2n6S{q z4bx2T-TpfFU*kz^$s6Hwzb3ZM#iy?fiOxttu!8%DYe&BLv9sLjzCFdUNH}%X5BwvdrSTxR#eRm ztpE|q0>#_hCjaK4>F<;qQ7hd(wC}avB$M7zX}%87yx3idUDSE&>h7Q|Gxw$$^j3rZ za?L*Xdu-$4Yi48hekMrW8s8Uf_qID9B__Tw+3~Q@RKC6-{96`Ecx+Vfo^w8&m{^&! zm8)BN>-h1vb#+?wuO8O%B~8oQYPQ`;970N2jlSukW=&O7>>g=v-%^ zJm}7WH>9bS5orMGI~!qXaZ!)qy#KPIZTb4g-&S36xLSXA%P5CXLsc5mi)`R9JA=J4$D`6D4fMD zS~>m-KVCG!56+_OHK1+uakPT$Mq=)Nz1nPgQ?E!rW$1S1%apyJN#(vjrfPr?cI5`G?{bCT=jo-dC z`P8YexMt_aFR12Q_P^h?(CsV9uo<`KgV8JTT5IfaV)Ch7CX(~c zQ7k)B_Yh5TT+nN9bmNr;{#MpWhw7;pH`%<+9drHo(Dd`66nT@XQDH;-)He}DCfj%~6vH{vb7eP$0_mhf33&D{*e17j@jZPwo>ZvAt3?T`A`d84sZ z=f<~$e+4(rMt8`#urho#8RplndcIxpX6x(=$)2aVdo%7wu=9-GxCU+wQazXJKkC<- zKi9Hv|HXTadlaRU=HJxtHq5BtKjbk zE;=CAV$Xc~Zlt|KKjcHl@9&G0%7VT8K-%b;(H4n`7)f5%zY8FzF-FrIQ!gpwr=vnD3 z%8K{ZD^icXyiu(&bvRe-nr?t630NcyV!j4yv*DiE@7RAGtKYl8*TOnOwwLHyoBmZu z?~gtB?yD6^Q16Js>pgbS%C}UCRz63`uSxCon(}ipqLKMU=bPO6V?-PP(|$TIX1mS( zJFTw@&iUcA2|Akc7j2=>kB7eMNjRLVEDopF9r$6h?~u)b;fC#_nuiDGkm5dT9U*>b zabFS2Dt~}24_I+*aa+K8AHZiBB`4BpFyA%yz})kal7OC1r|>Tx?Gn2>t#Ipxa%)&Cj3_1?p!e`a7H5zoDr}LtYuuEBjJ8#rW)FvzBNhDnJ4c$9GtFelP=o(IFWz; z_zHSu*5EP6OQ+4TA(1Qgq`lkmL$_~_Vatd28&(AvZ}fG(^$rA${f|* zm~iA-oxxj+l0A<%#aj?#v7AtED@2&?MmH3RXEki#63gf5yy^hX@Bb2Ozhl%WSm6J> zzOKgnj6qnrXKt*}9PzpTNb6URb%RA41%bt_+RE!K)KOlm0f7YiJy-c;BJvbg701gh z?+c83>!VXibX{N;FzV858iI5WBKHl!w)v@q&5=*iyQ&)i1r z=)1dkqvgYfWii>@^mNO%>UX2&2iyO$O@yzi0y0mfelq~yKIMLF-QwRGt?IYb{!j#5 zOK|5|ZB1AZA$6k*+OwaPB~LjxlB{+30_al}JMPvi^e2a39tR%cRh zr&hS3e0P|e)7+Klom74bb?gw(H2)62J?9DWK5iwTzh(u)PCpLgJGZSoUTgd*Za8rnJ*Pe&hz!T>#&~hd;Msk2ZOnG zp4)12Jhi4-yU*kw^r=r9oa9w!#`W40s&B+NYD8dD{4{9C{9lHl5n)xTz1YNy1#CEj$&-YGTnt~6?T%&eS{0qjWJ(EPd& zcRp2Xxr5hqe42%e=KY1p?~&ryuxtN&3W!6a!}=QFt>$KpC-}T?s&YO}b_3!(mhO7& zkoq_tZjr8i1Lz*eh&Fw(b#_q^IOmk7}r^Ax#rT`aiNwh z_i}qA#bu{A`L7G)wfSK&28Rtd=&lBzbZ|Zde|snTl+fXsYI^jfhnw3@^?Ky&WZ8z< z&6iWxdpxswb;4eDJK$@;Va;)2xm;W9i}rhL|H1&V{2}Jw!vCj{E02bKd!~Np zect!{{&>!rbD!_>xvuMTUEk05o;h8qJj~;CZMAo*KSLz@H-Ws$MIiz$VP$ zvV66?DzeC`^4_`fPt}ShZ_5^`#LwXcNL@hL{!ZsBD-%MTQ;*UehKk6!^Yvaqb=gVU z=E4?Hf)<-zVas}_sKmw9{OPo~sR@^D zyc_gXX^fWpn1UebMSj8S{K9Chvd!?SBj8IMj{M}lHJx~&%CynQpLBv&tQXso*(KZ` zhI+rM9g~=P^zrp4is=I1ldjd6V5+tu5pd;WsKEykt+2%oa>gG{uH`3ZWYg@L1Wm^N z+VM&htl^VZ5%#etJ}|sH_{?tI*zYA7TBKEOt{fm%y}UN`Y)ixAA83@E@{Nq{0#gm~ zr?Y;5e7+!1Xqi#y5}zKow;(cjvkiZ$Ki2O!*!t`|S}aK_m*(m4%5{WbA?^ z6a}{YRSY}st_%R4m{miUjn7ygC zk4hL>P1BSQxQ7;qAdk!$6Ko2@%4=ySoSzJc&oddEy*CJG61%<^zk2Bi zk+BmZB;lfLEi{49R`OEcfKiBJ@#_F_z!@tgl6O&dua8e0GYVOiSZQ9NISjwd+^rol z5M8BUd7no;?C8FolRbSo3oZCXbbq$?z!*YlB95bz&l%dRps$_05d#@0 zBHtrD=jV$|?ouFiRWu&C(fmksx9L+aBrW~HUpS9j0=Q>*x5;qXkUel9`+0|#j!J$C zb+>OgK2BF{J7wP{QEif~3}O3omY(pW^=H z?=A~=hc3M|s2&i82+&g|TIyw@8geH2^2;@4u*`X*~*UmKnr*rm18+|!)1 zEUZwGaE3JN@W>v>Xqr`dmZZ?-?`+5q5Qe{YemJAaOQSJsOGKQDU8Bvv#7!*=ht-?e zR8@bfxV3d#aT<@d1z@6IiaUnQQs+t@+U#nik{NTUTce0|(PJ3C zA24Zz`+#pP-LVjV+BVl&W5X?e zeGmGy=G+;TAn9>`k2)^N1cg)H1sfZF18VZ8mr_Cx)~p?}zaKFo`*+8zQKKKOt-5DC z<(dJZndn9i4PT^$D%gMjp%^ww2}^$7aBl!3k+6bAB`JJ1xtnkM_Rj5ce(|2bWEA$a#?LnDF!_mZ>K-lOtd4d$OVvk&NIKlilt@LC~Q z$3}QexPw=zW^NWvw+Sk6B0jI_oEFx5D`0+V{4_0DR5P&AdSdzLfQe1)!RU4T(SAvu znKdcj09pKHt4XnPPw8(zc|^PA8q^z+efQqZN^=S|FI}WJtO*%rkg=|NtAn-xXz+b2 z!>`aOj(pr-?M(;m_2FZjE1y@yhd3ea584R_gW8DWFCsLj;!%&b4&>bZu^{D4(Q!T2 zB^Yh~a=_6nh!|4Or@dNL%?-1-es^Z3_U1FG;-1=-_Nb9JN{)YaI}Kspl~7AZE=et} zx4zl${*+{=CoVZJrqg29&e7P4Jn6SM5fyyG`^C0aT+><7x{^r`=sM{8{h_#(pkNfEKb3YEc^&GvV)_hNpd}V0B+y@8s??0Xf!#@V6Sd1?c(knsV3mh>Vtldh zw)%294f)jq83wC_;3&~#!FpnDY`3eekw73mF=ZCj$RT??QGbo+#~;02R199@xER4l zy(&{aWXyNPQhtBKS!-Ct`CMtRVbpRNmU7&bQQ^7ixX-LC!B(!uYSO;J@xr%&m`ho! z^ZGfHGlpfJDY@EnwvnR{64OfUTlB4iSGjXJX~P#Bvy82oOax6pmcXICV`Z*>me6J=eRVIbM zx*A&@IjO(lVQQRy@d=SMYx5&jM^FFFni;e`Zzca+!nry9oEAUgU4Dz4KHmT&L8Ek0 zpv z%fI(-xg{JkKg7pk3TE=6V;caA&Ss!eNR zs8nJ0fP#mZi-YtAn#6Nb*rfULn+I(MO*#1{^Uu(emBiT)qDBc&xDkg(8a9Da>;kUP)9^knFs0bjtk|A zMZU>3@xggRpssgOX;=}4{xB5-{|a5z=I)`6ICLf>=ym90wnCX$2^JnEMNiTUOx0C$ zYtfM9I%bgne0r?ztBv^|J{PEbKiZ=S{eVX6;!X-^P*yh3|Oi~?ey+!UtuA=s++ z>Ie%nm#gLe+rw__zS0|52K0JUq7otrEl~+mPI{Dt_Z7|MfI;C*8*Vg&mno;zgcZnz zLBk+tL`5a{B>_zTH-hr}0hszpIZ-r3l_|)x1r-A?KrgUj%{MUeGXQD^$Re|1anilaH{je9*d98> zLY(z2W6}ymo*G2WLoh5`0(ee?FT;?h@~D}lLF!0>MlwJblMjPsYB0WlQvg(p)rDkg z?p%7z_VbSsmf?R~nc`N!3M}mh2@8YKvk$Nmhwfq1&eZT{f($P~ zGS`!o!B}9X>)*E7iSPMcIy^x4LWF=CfXIVtJOy?^^CSeFtUKlLf4qTZ0r{}B0pX&6 zFRX)EkHUEArgf~8{}B{`XRhA}ed@u|xdTf-6N{ijO|YIBta?I(D6G6D7RkC`Rp)7} z1)_j{Kn$oovM@`QkYG+09}K(A3&OI6Rq5nN)*x6q2zL;;9N=aFY}hbE79g8lQkE@- zT~F3vHF(n~T}67YQ=p)I3`l{$MpU+SmKD*13CGG~jF+|2*=t$3bGO zlCriZqTgnehc$@kN2OM@gFBSHHQ<0|LZ@cC1`I-HGso-bXpUUTnt5^GY&YokMmKM-L(TFs$8cOzBva`) zwbX0CbOjt09M2camS-*IO`+#Bd&%@f)^!TBwLS}&skwQ}bVJcR-ZK9Q_vf@m=<2y_O;bGJyw4)3^LF5c)9*^fV;XP!Y&mS0oENmRA-dlt-p$A zg%FX66vO{ne;w}~JbYe%Ge69vlk+KRZn%>lwlFL~r#I~5r!%C{c|^Wwvf+N(OT~uA zd6Hk2EiIreI?JXoSG7VBiey`tz&Ksg@C<-C4N`hLOk>URrGn{Nx-icxS<6};X7=d5 zh8KW^`E%GN)Fm?$51pr&FAFc{ta$Wl!z+vh8LTeBQ*2%(rY5Fi{5@PfH8UNf&l=tW z7Nd^t!#Y!2fMK0uM44&ojOjRS+4KQm0V(DkdMxD)=38qqBk3F0~SoPm)O|DvkF!oAzY5p=Z$wWV_;Pi zGpWQ}TI3CF-+0x*X-m_71~BKL>}&RgTWX$X7LX<~q%}QM-D)B+mq_qdVtgWq8UV^B_vwKFR;d=HX?C|A|&QL^Q-V51^1$lCf2 zQFJUxW1;0&rv`EBxBMaC1+h>O5hO18K2O)T{Fx`tNnl9K86uSsTT@~y-V@dD8N?4y zrxHx7C%-9@MTU!A|yk-Tb ziZC!88`&EBvhT}Cw&|wUJ|L4RMQCb%o5(x5=A&ouf(T~s2x6BGv};Q`_d4!L?e0P}VJL&5=-@LUHKywsV-Q4fAsqg*<)` z0@hN_k5i#7hiMfCyy_&re07@(Y{=^W^5q-au0KsxfVNw)u8Tw6T(v;n;WUkE8Kno? z?&2xVVypCe+r8>Rgt1YDM$l>*<%&S#W5%hj{Q*YGQ01(&VtF~d1A9oXT<*in=z_zG+CNuJMYJFcI1Z2>@jgD2Ow-lv z4R!1;Q(?CSMl#b;y1Ts-;~IxSLTK~o)gYxxtjQET)jkwXr$i(kw^8Kav*=DsIy(@( z-#!5Vt0pWR;tQIR_KrA^h+~&4w_+X%#t&!*k-?=W(~$-+Yq{{I8d5UDYhx8tw@~Xt6HMzdmVY8gLq?yl?{h&f*sU)PKvUJq9;3+0n<>a zK`RJE1T8PvsChcvaXz3(frX;)!NA~yaZ*h+OC9M_)YEw>&T_wW|$bG>jmqy%b#A&Rg?oc44+To;7E z{?6yHK>E3{=0$LgxeEQJ^Cis1zsOPE?|dViPKkMg(`GusSzDk!Claw$>g;+~Z7vgF zr~yuaRd-T{fQ7EV11en-LBjM^;@ptzERQbf`UFs!?P5TpWcf&%VJCqs5YjQ?bXynI zZ^&&iX3_P7Mv@J~IgIvqH3JCmShGL9)YXGAfij09lF~IFtb*=D*2)6TPxcah+O-)- z-b^pK9v@4%bg{lSn1VVYQ$QYPkip1R^?^ZBk?R1EIVsDHq3Y(MaG_RH;RX=8JifmSDpB|39rPz8t z@^wnnf^sMa%1$GZ171V--fxvNnb zIfoW%&B&RadwGJ{$$=d`u(1(*OmeBAT|Eydh!AqIpL22a2%3JW3SJeO`3F5u0L>f7 zk?=wwsLKdK*1IfW6?Rv8zULs|I5L4L<~_6>3K~iwrUkh z1#V~1ZdIE`FASN$2*bUvDz;A`S&CiQNZ}2BZ1ujQkV?QWkWH{u^v&MGKy%v_%I2Z} zFl}AlSp>NONy13MscC=j#{kPbxKTtF2prdlLQnU84s@`E3jaWsL%qvQfgxY-J-)f%abVde+0~c>4xLCX zOR#}9@XQH0Ph@I=HN2-|NfgFdGJ6(yzkJ|@koS;vX%xfdBk*`)9rJe&yaF(;GW>#eol+gAh18@DVd2P2#(n?Pbx4aGS7h`SHAu4P627M&4!R zRV1YhV4pHW*8s|wPpT7K!u74xj++Ldn%eOO%?n@CjX=+Ke% zYo$9P|5~o8!!~8=96q+T#7ks+vrw#1X1K96^a4+JHDAvOG%==_=|C zw!2_>gx5fRlykoSg-giNWx7$?GrWZ-W&N(6xq@wiGalfBaePg~zK}P4Ggfo*lVquP#0E?n zJ+dl`Zn$rTk|V2%8M*5?c**nS`&=bT3nLdQv3HF;(6%>vJ2IYp;VP@ZSKudlMd`MY zM*xmYRAP}C{BObk8I|yAa_s_}emwF7HI6q_M4?gIg zET3rXBY0*b?3&{Jx9N%KwbrA_{mDe;N7_W@I(m8R>~a2flQ!{aH2Sl7 z-1E_AW1W+Gqj!W+h$|aW5=DWZ;sjb_VPj$j|A^#CF$83n(zAz~PIQ$nEX^qlRfF%H PgB!6Z&5HEotwi)+T7mr_ diff --git a/supermon64 docs.seq b/supermon64 docs.seq deleted file mode 100644 index fec36f4..0000000 --- a/supermon64 docs.seq +++ /dev/null @@ -1 +0,0 @@ - Ó Õ Ð Å Ò Í Ï Î + 64 ÉN THE FOLLOWING DISCUSSION, KEYBOARD INPUT IN DESIGNATED BY BRACKETS. ÓÕÐÅÒÍÏÎ+ IS A NEW VERSION OF 'ÓÕÐÅÒÍÏÎ' THE REASON FOR THE NEW VERSION IS TO PROVIDE IDENTICAL COMMANDS TO THOSE OF THE BUILT-IN MONITOR OF THE COMMODORE 128. ÔHE MOST VISIBLE CHANGES FROM EARLIER VERSIONS OF ÓÕÐÅÒÍÏÎ ARE: --DECIMAL OR BINARY INPUT ALLOWED; --DISK STATUS AND COMMANDS (@); --LOOSER (EASIER) SYNTAX. ÎÕÍÂÅÒ ÃÏÎÖÅÒÓÉÏÎ <$2000> $2000 +8192 &20000 %10000000000000 ÉN THE ABOVE EXAMPLE THE USER HAS ASKED FOR THE NUMERIC EQUIVALENTS TO HEXADECIMAL 2000. ÔHE REPLY SHOWS THE VALUE IN HEX ($), IN DECIMAL (+), IN OCTAL (&) AND IN BINARY (%). ÔHE USER COULD ASK FOR A NUMBER TO BE CONVERTED FROM ANY OF THESE BASES BY GIVING THE APPROPRIATE PREFIX. ÉÍÐÏÒÔÁÎÔ ÎÏÔÅ -- ÁT ANY TIME IN THE FOLLOWING TEXT, YOU MAY ENTER ANY NUMBER IN ANY BASE AND CONVERSION WILL BE DONE FOR YOU. ÅXAMPLE: ×ILL CAUSE A MEMORY DISPLAY FROM DECIMAL ADDRESS 4096. ÉN THE DISPLAY, THE HEX ADDRESS ($1000) WILL BE SHOWN. ÓIMILARLY, <+2048 LDA#%10000000> ×ILL BE CONVERTED TO ASSEMBLE: "A $0400 LDA #$80" ÉF YOU DON'T GIVE A PREFIX, THE MONITOR WILL ASSUME HEXADECIMAL. ÒÅÇÉÓÔÅÒ ÄÉÓÐÌÁÙ PC SR AC XR YR SP ; 0000 01 02 03 04 05 ÄISPLAYS THE REGISTER VALUES SAVED WHEN ÓÕÐÅÒÍÏÎ+ WAS ENTERED. ÖALUES MAY BE CHANGED BY TYPING OVER THE DISPLAY FOLLOWED BY A RETURN CHARACTER. PC - PROGRAM COUNTER SR - STATUS REGISTER AC, XR, YR - A, X, AND Y REGISTERS SP - STACK POINTER >0200 4D 20 32 30 30 20 32 30: M 200 20 >0208 39 00 00 04 00 04 00 04: 9....... ÄISPLAY MEMORY FROM 0200 HEX TO 0209 HEX. ÄISPLAY IS IN LINES OF 8, SO ADDRESSES $200 TO $20F ARE SHOWN. ÉF ONLY ONE ADDRESS IS USED THEN 12 LINES (96 LOCATIONS) WILL BE SHOWN. ÉF NO ADDRESS IS GIVEN DISPLAY WILL GO FROM THE LAST ADDRESS. ÅQUIVALENT ÁÓÃÉÉ CHARACTERS ARE SHOWN IN REVERSE AT THE RIGHT. ÖALUES ARE CHANGED BY TYPING OVER THE DISPLAY FOLLOWED BY A RETURN CHARACTER. ÅØÉÔ ÔÏ ÂÁÓÉÃ ÒETURN TO ÂÁÓÉÃ ÒÅÁÄÙ MODE. ×HEN YOU WISH TO RETURN TO ÓÕÐÅÒÍÏÎ+, COMMAND "ÓÙÓ 8". ÓÉÍÐÌÅ ÁÓÓÅÍÂÌÅÒ (CHANGES TO:) A 2000 A9 12 LDA #$12 A 2002 ..NEXT INSTRUCTION ÉN THE ABOVE EXAMPLE THE USER STARTED ASSEMBLY AT 2000 HEX. ÔHE FIRST INSTRUCTION WAS LOAD A REGISTER WITH IMMEDIATE 18 DECIMAL. ÉN FOLLOWING LINES THE USER NEED NOT TYPE THE "A" AND ADDRESS. ÔHE SIMPLE ASSEMBLER PROMPTS WITH THE NEXT ADDRESS. ÔO EXIT THE ASSEMBLER TYPE A RETURN AFTER THE THE ADDRESS PROMPT. ÐREVIOUS LINES MAY BE CHANGED BY TYPING OVER THE RIGHT HAND PART. . 2000 A9 12 LDA #$12 . 2002 9D 00 80 STA $8000,X ÄISASSEMBLES INSTRUCTIONS FROM 2000 TO 2004 HEX. ÉF ONE ADDRESS IS GIVEN, 20 BYTES WILL BE DISASSEMBLED. ÉF NO ADDRESS, START FROM THE LAST USED ADDRESS. ÃODE MAY BE REASSEMBLED BY MOVING THE CURSOR BACK AND TYPING OVER THE RIGHT HAND PART. ÆÉÌÌ ÍÅÍÏÒÙ FILLS THE MEMORY FROM 1000 HEX TO 1100 HEX WITH THE BYTE FF HEX. ÇÏ (ÒÕÎ) ÇO TO ADDRESS 1000 HEX AND BEGIN RUNNING CODE. ÉF NO ADDRESS IS GIVEN, THE ADDRESS FROM THE REGISTER IS USED. ÊÕÍÐ (ÓÕÂÒÏÕÔÉÎÅ) ÃALL ADDRESS 1000 HEX AND BEGIN RUNNING CODE. ÒETURN TO THE MONITOR. ÈÕÎÔ ÍÅÍÏÒÙ ÈUNT THRU MEMORY FROM C000 HEX TO D000 HEX FOR THE ASCII STRING "READ" AND PRINT THE ADDRESS WHERE IT IS FOUND. Á MAXIMUM OF 32 CHARACTERS MAY BE USED. ÈUNT MEMORY FROM C000 HEX TO D000 HEX FOR THE SEQUENCE OF BYTES 20 D2 FF AND PRINT THE ADDRESS. Á MAXIMUM OF 32 BYTES MAY BE USED. ÆÉÌÅ ÈÁÎÄÌÉÎÇ ÌÏÁÄ ÌOAD ANY PROGRAM FROM CASSETTE #1. ÌOAD FROM CASSETTE #1 THE PROGRAM NAMED "RAM TEST". ÌOAD FROM DISK (DEVICE 8) THE PROGRAM NAMED "RAM TEST". ÔHIS COMMAND LEAVES BASIC POINTERS UNCHANGED. ÓÁÖÅ ÓAVE TO CASSETTE #1 MEMORY FROM 0800 HEX UP TO BUT NOT INCLUDING 0C80 HEX AND NAME IT "PROGRAM NAME". ÓAVE TO DISK DRIVE #0 MEMORY FROM 1200 HEX UP TO BUT NOT INCLUDING 1F50 HEX AND NAME IT "PROGRAM NAME". ÔÒÁÎÓÆÅÒ ÍÅÍÏÒÙ ÔRANSFER MEMORY IN THE RANGE 1000 HEX TO 1100 HEX AND START STORING IT AT ADDRESS 5000 HEX. ÃÏÍÐÁÒÅ ÍÅÍÏÒÙ ÃOMPARE MEMORY IN THE RANGE 1000 HEX TO 1100 HEX WITH MEMORY STARTING AT ADDRESS 5000 HEX. ÄÉÓË ÏÐÅÒÁÔÉÏÎÓ ÃÈÅÃË ÄÉÓË <@> ÇET DISK STATUS MESSAGE <@9> ÇET DISK UNIT 9 STATUS MESSAGE <@,$0> ÇET DRIVE 0 DIRECTORY <@,S0:TEMP> ÓCRATCH FILE 'TEMP' FROM DISK ÏÕÔÐÕÔ ÔÏ ÐÒÉÎÔÅÒ ÃALL ÓÕÐÅÒÍÏÎ+ FROM BASIC WITH: ÁLL COMMANDS WILL GO THE PRINTER. ×HEN COMPLETE, RETURN TO BASIC WITH "X" AND COMMAND: ÓÕÍÍÁÒÙ $ , + , & , % NUMBER CONVERSION G GO (RUN) J JUMP (SUBROUTINE) L LOAD FROM TAPE OR DISK M MEMORY DISPLAY R REGISTER DISPLAY S SAVE TO TAPE OR DISK X EXIT TO BASIC A SIMPLE ASSEMBLER D DISASSEMBLER F FILL MEMORY H HUNT MEMORY T TRANSFER MEMORY C COMPARE MEMORY @ DISK STATUS/COMMAND ÓUPERMON WILL LOAD ITSELF INTO THE TOP OF MEMORY...WHEREVER THAT HAPPENS TO BE ON YOUR MACHINE. ÂE SURE TO NOTE THE ÓÙÓ COMMAND WHICH LINKS ÓÕÐÅÒÍÏÎ TO THE ÃOMMODORE. ÉT MAY BE USED TO RECONNECT THE MONITOR IF IT IS ACCIDENTALLY DISCONNECTED BY USE OF THE RUN-STOP/RESTORE KEYS. \ No newline at end of file diff --git a/supermon64 docs.txt b/supermon64 docs.txt deleted file mode 100644 index 53e7609..0000000 --- a/supermon64 docs.txt +++ /dev/null @@ -1,285 +0,0 @@ - S U P E R M O N + 64 - -In the following discussion, keyboard -input in designated by brackets. - - - - -SUPERMON+ is a new version of -'SUPERMON' the reason for the new -version is to provide identical -commands to those of the built-in -monitor of the commodore 128. - - -The most visible changes from earlier -versions of SUPERMON are: - - --decimal or binary input allowed; - --disk status and commands (@); - --looser (easier) syntax. - - -NUMBER CONVERSION - -<$2000> - $2000 - +8192 - &20000 - %10000000000000 - - In the above example the user - has asked for the numeric - equivalents to hexadecimal 2000. - The reply shows the value in hex - ($), in decimal (+), in octal (&) - and in binary (%). - - The user could ask for a number - to be converted from any of these - bases by giving the appropriate - prefix. - - - IMPORTANT NOTE -- - At any time in the following text, - you may enter any number in any - base and conversion will be done - for you. - -Example: - - - Will cause a memory display from - decimal address 4096. In the - display, the hex address ($1000) - will be shown. Similarly, - -<+2048 lda#%10000000> - Will be converted to assemble: - "a $0400 lda #$80" - - If you don't give a prefix, the - monitor will assume hexadecimal. - - -REGISTER DISPLAY - - - - pc sr ac xr yr sp -; 0000 01 02 03 04 05 - - Displays the register values - saved when SUPERMON+ was entered. - Values may be changed by typing - over the display followed by a - return character. - - pc - program counter - sr - status register - ac, xr, yr - a, x, and y - registers - sp - stack pointer - - - - ->0200 4d 20 32 30 30 20 32 30: m 200 20 ->0208 39 00 00 04 00 04 00 04: 9....... - - Display memory from 0200 hex to - 0209 hex. Display is in lines of - 8, so addresses $200 to $20f are - shown. If only one address is - used then 12 lines (96 locations) - will be shown. If no address is - given display will go from the - last address. Equivalent ASCII - characters are shown in reverse - at the right. Values are changed - by typing over the display - followed by a return character. - - -EXIT TO BASIC - - - Return to BASIC READY mode. When - you wish to return to SUPERMON+, - command "SYS 8". - - -SIMPLE ASSEMBLER - - - - (changes to:) - a 2000 a9 12 lda #$12 - a 2002 ..next instruction - - In the above example the user - started assembly at 2000 hex. The - first instruction was load a - register with immediate 18 - decimal. In following lines the - user need not type the "a" and - address. The simple assembler - prompts with the next address. To - exit the assembler type a return - after the the address prompt. - - Previous lines may be changed by - typing over the right hand part. - - - - . 2000 a9 12 lda #$12 - . 2002 9d 00 80 sta $8000,x - - Disassembles instructions from - 2000 to 2004 hex. If one address - is given, 20 bytes will be - disassembled. If no address, - start from the last used address. - - Code may be reassembled by moving - the cursor back and typing over - the right hand part. - - -FILL MEMORY - - - fills the memory from 1000 hex to - 1100 hex with the byte ff hex. - -GO (RUN) - - - Go to address 1000 hex and begin - running code. If no address is - given, the address from the - register is used. - -JUMP (SUBROUTINE) - - - Call address 1000 hex and begin - running code. Return to the - monitor. - -HUNT MEMORY - - - Hunt thru memory from c000 hex to - d000 hex for the ascii string - "read" and print the address - where it is found. A maximum of - 32 characters may be used. - - Hunt memory from c000 hex to d000 - hex for the sequence of bytes - 20 d2 ff and print the address. A - maximum of 32 bytes may be used. - -FILE HANDLING - -LOAD - - - Load any program from cassette #1. - - - Load from cassette #1 the program - named "ram test". - - - Load from disk (device 8) the - program named "ram test". This - command leaves basic pointers - unchanged. - -SAVE - - - Save to cassette #1 memory from - 0800 hex up to but not including - 0c80 hex and name it - "program name". - - - Save to disk drive #0 memory from - 1200 hex up to but not including - 1f50 hex and name it - "program name". - -TRANSFER MEMORY - - - Transfer memory in the range 1000 - hex to 1100 hex and start storing - it at address 5000 hex. - -COMPARE MEMORY - - - Compare memory in the range 1000 - hex to 1100 hex with memory - starting at address 5000 hex. - -DISK OPERATIONS - -CHECK DISK - -<@> - Get disk status message - -<@9> - Get disk unit 9 status message - -<@,$0> - Get drive 0 directory - -<@,s0:temp> - Scratch file 'temp' from disk - - -OUTPUT TO PRINTER - Call SUPERMON+ from basic with: - - All commands will go the printer. - When complete, return to basic - with "x" and command: - - - - SUMMARY - - $ , + , & , % number conversion - g go (run) - j jump (subroutine) - l load from tape or disk - m memory display - r register display - s save to tape or disk - x exit to basic - a simple assembler - d disassembler - f fill memory - h hunt memory - t transfer memory - c compare memory - @ disk status/command - - - -Supermon will load itself into the top -of memory...wherever that happens to -be on your machine. Be sure to note -the SYS command which links SUPERMON -to the Commodore. It may be used to -reconnect the monitor if it is -accidentally disconnected by use of -the run-stop/restore keys. diff --git a/supermon64.src.seq b/supermon64.src.seq deleted file mode 100644 index 944b607..0000000 --- a/supermon64.src.seq +++ /dev/null @@ -1 +0,0 @@ -; ******************************** ; * SUPERMON+ 64 JIM BUTTERFIELD * ; * V1.2 AUGUST 20 1985 * ; ******************************** TMP0 =$C1 TMP2 =$C3 SATUS =$90 FNLEN =$B7 SADD =$B9 FA =$BA FNADR =$BB NDX =$C6 KEYD =$0277 BKVEC =$0316 *= $0100 ACMD *=*+1 LENGTH *=*+1 MNEMW *=*+3 SAVX *=*+1 OPCODE *=*+1 UPFLG *=*+1 DIGCNT *=*+1 INDIG *=*+1 NUMBIT *=*+1 STASH *=*+2 U0AA0 *=*+10 U0AAE =* STAGE *=*+30 ESTAGE =* *= $0200 INBUFF *=*+40 ENDIN =* PCH *=*+1 PCL *=*+1 SR *=*+1 ACC *=*+1 XR *=*+1 YR *=*+1 SP *=*+1 STORE *=*+2 CHRPNT *=*+1 SAVY *=*+1 U9F *=*+1 SETMSG =$FF90 SECOND =$FF93 TKSA =$FF96 LISTEN =$FFB1 TALK =$FFB4 SETLFS =$FFBA SETNAM =$FFBD ACPTR =$FFA5 CIOUT =$FFA8 UNTLK =$FFAB UNLSN =$FFAE CHKIN =$FFC6 CLRCHN =$FFCC INPUT =$FFCF CHROUT =$FFD2 LOAD =$FFD5 SAVE =$FFD8 STOP =$FFE1 GETIN =$FFE4 *=$9519 SUPER LDY #MSG4-MSGBAS:JSR SNDMSG LDA SUPAD:STA TMP0 LDA SUPAD+1:STA TMP0+1 JSR CVTDEC LDA #0:LDX #6:LDY #3 JSR NMPRNT:JSR CRLF LDA LINKAD:STA BKVEC LDA LINKAD+1:STA BKVEC+1 LDA #$80:JSR SETMSG BRK ; BREAK LDX #$05 BSTACK PLA ;Y,X,A,SR,PCL,PCH STA PCH,X DEX BPL BSTACK CLD TSX STX SP CLI ; [R] DSPLYR LDY #MSG2-MSGBAS:JSR SNDCLR LDA #$3B:JSR CHROUT:LDA #$20:JSR CHROUT LDA PCH:JSR WRTWO LDY #1 DISJ LDA PCH,Y JSR WRBYTE INY CPY #7 BCC DISJ ; STRT JSR CRLF LDX #0 STX CHRPNT SMOVE JSR INPUT STA INBUFF,X INX CPX #ENDIN-INBUFF BCS ERROR CMP #$0D BNE SMOVE LDA #0 STA INBUFF-1,X ST1 JSR GETCHR BEQ STRT CMP #$20 BEQ ST1 S0 LDX #KEYTOP-KEYW S1 CMP KEYW,X:BEQ S2 DEX:BPL S1 ; ERROR ERROR LDY #MSG3-MSGBAS:JSR SNDMSG JMP STRT S2 CPX #$13:BCS LSV CPX #$0F:BCS CNVLNK TXA:ASL A:TAX LDA KADDR+1,X:PHA LDA KADDR,X:PHA JMP GETPAR LSV STA SAVY JMP LD CNVLNK JMP CONVRT ; [X] EXIT JMP ($A002) ; [M] DSPLYM BCS DSPM11 JSR COPY12 JSR GETPAR BCC DSMNEW DSPM11 LDA #$0B STA TMP0 BNE DSPBYT DSMNEW JSR SUB12 BCC MERROR LDX #3 DSPM01 LSR TMP0+1 ROR TMP0 DEX BNE DSPM01 DSPBYT JSR STOP BEQ DSPMX JSR DISPMEM LDA #8 JSR BUMPAD2 JSR SUBA1 BCS DSPBYT DSPMX JMP STRT MERROR JMP ERROR ; [;] ALTR JSR COPY1P LDY #0 ALTR1 JSR GETPAR BCS ALTRX LDA TMP0 STA SR,Y INY CPY #$05 BCC ALTR1 ALTRX JMP STRT ; [>] ALTM BCS ALTMX JSR COPY12 LDY #0 ALTM1 JSR GETPAR BCS ALTMX LDA TMP0 STA (TMP2),Y INY CPY #8 BCC ALTM1 ALTMX LDA #$91:JSR CHROUT JSR DISPMEM JMP STRT ; [G] GOTO LDX SP:TXS GOTO2 JSR COPY1P SEI:LDA PCH:PHA LDA PCL:PHA LDA SR:PHA LDA ACC:LDX XR:LDY YR:RTI ; [J] JSUB LDX SP:TXS:JSR GOTO2 STY YR:STX XR:STA ACC PHP:PLA:STA SR JMP DSPLYR ; DISPLAY MEMORY DISPMEM JSR CRLF LDA #">" JSR CHROUT JSR SHOWAD LDY #0 BEQ DMEMGO DMEMLP JSR SPACE DMEMGO LDA (TMP2),Y JSR WRTWO INY CPY #8 BCC DMEMLP LDY #MSG5-MSGBAS:JSR SNDMSG LDY #0 DCHAR LDA (TMP2),Y TAX:AND #$BF:CMP #$22:BEQ DDOT:TXA AND #$7F CMP #$20 TXA BCS DCHROK DDOT LDA #$2E DCHROK JSR CHROUT INY CPY #8 BCC DCHAR RTS ; [C] COMPAR LDA #0 .BYTE $2C ; [T] TRANS LDA #$80 STA SAVY LDA #0 STA UPFLG JSR GETDIF BCS TERROR JSR GETPAR BCC TOKAY TERROR JMP ERROR TOKAY BIT SAVY BPL COMPAR1 ; COMPARE ADDS1,ADDS3 LDA TMP2 CMP TMP0 LDA TMP2+1 SBC TMP0+1 BCS COMPAR1 ; ADD ADDS2 TO ADDS1 LDA STORE ADC TMP0 STA TMP0 LDA STORE+1 ADC TMP0+1 STA TMP0+1 LDX #1 TDOWN LDA STASH,X STA TMP2,X DEX BPL TDOWN LDA #$80 STA UPFLG COMPAR1 JSR CRLF LDY #0 TCLOOP JSR STOP BEQ TEXIT LDA (TMP2),Y BIT SAVY BPL COMPAR2 STA (TMP0),Y COMPAR2 CMP (TMP0),Y BEQ TMVAD JSR SHOWAD TMVAD BIT UPFLG BMI TDECAD INC TMP0 BNE TINCOK INC TMP0+1 BNE TINCOK JMP ERROR TDECAD JSR SUBA1 JSR SUB21 JMP TMOR TINCOK JSR ADDA2 ; TMOR JSR SUB13 BCS TCLOOP TEXIT JMP STRT ; [H] HUNT JSR GETDIF BCS HERROR LDY #0 JSR GETCHR CMP #"'" BNE NOSTRH JSR GETCHR CMP #0 BEQ HERROR HPAR STA STAGE,Y INY JSR GETCHR BEQ HTGO CPY #ESTAGE-STAGE BNE HPAR BEQ HTGO NOSTRH JSR RDPAR HLP LDA TMP0 STA STAGE,Y INY JSR GETPAR BCS HTGO CPY #ESTAGE-STAGE BNE HLP HTGO STY SAVY JSR CRLF HSCAN LDY #0 HLP3 LDA (TMP2),Y CMP STAGE,Y BNE HNOFT INY CPY SAVY BNE HLP3 ; MATCH FOUND JSR SHOWAD HNOFT JSR STOP BEQ HEXIT JSR ADDA2 JSR SUB13 BCS HSCAN HEXIT JMP STRT HERROR JMP ERROR ; [LSV] LD LDY #1:STY FA:STY SADD DEY:STY FNLEN:STY SATUS LDA #>STAGE:STA FNADR+1 LDA #;" HIKEY .ASC "$+&%LSV" KEYTOP =* ; VECTORS KADDR .WORD ASSEM-1,COMPAR-1,DISASS-1,FILL-1 .WORD GOTO-1,HUNT-1,JSUB-1,DSPLYM-1 .WORD DSPLYR-1,TRANS-1,EXIT-1,DSTAT-1 .WORD ASSEM-1,ALTM-1,ALTR-1 ; MODULO NUMBER SYSTEMS MODTAB .BYTE $10,$0A,$08,02 ; BITS PER NUMBER SYSTEM LENTAB .BYTE $04,$03,$03,$01 LINKAD .WORD BREAK SUPAD .WORD SUPER \ No newline at end of file diff --git a/supermon64.src.txt b/supermon64.src.txt deleted file mode 100644 index 5b91137..0000000 --- a/supermon64.src.txt +++ /dev/null @@ -1,1104 +0,0 @@ -; ******************************** -; * supermon+ 64 jim butterfield * -; * v1.2 august 20 1985 * -; ******************************** -tmp0 =$c1 -tmp2 =$c3 -satus =$90 -fnlen =$b7 -sadd =$b9 -fa =$ba -fnadr =$bb -ndx =$c6 -keyd =$0277 -bkvec =$0316 -*= $0100 -acmd *=*+1 -length *=*+1 -mnemw *=*+3 -savx *=*+1 -opcode *=*+1 -upflg *=*+1 -digcnt *=*+1 -indig *=*+1 -numbit *=*+1 -stash *=*+2 -u0aa0 *=*+10 -u0aae =* -stage *=*+30 -estage =* -*= $0200 -inbuff *=*+40 -endin =* -pch *=*+1 -pcl *=*+1 -sr *=*+1 -acc *=*+1 -xr *=*+1 -yr *=*+1 -sp *=*+1 -store *=*+2 -chrpnt *=*+1 -savy *=*+1 -u9f *=*+1 -setmsg =$ff90 -second =$ff93 -tksa =$ff96 -listen =$ffb1 -talk =$ffb4 -setlfs =$ffba -setnam =$ffbd -acptr =$ffa5 -ciout =$ffa8 -untlk =$ffab -unlsn =$ffae -chkin =$ffc6 -clrchn =$ffcc -input =$ffcf -chrout =$ffd2 -load =$ffd5 -save =$ffd8 -stop =$ffe1 -getin =$ffe4 -*=$9519 -super ldy #msg4-msgbas:jsr sndmsg - lda supad:sta tmp0 - lda supad+1:sta tmp0+1 - jsr cvtdec - lda #0:ldx #6:ldy #3 - jsr nmprnt:jsr crlf - lda linkad:sta bkvec - lda linkad+1:sta bkvec+1 - lda #$80:jsr setmsg - brk -; -break ldx #$05 -bstack pla ;y,x,a,sr,pcl,pch - sta pch,x - dex - bpl bstack - cld - tsx - stx sp - cli -; [r] -dsplyr ldy #msg2-msgbas:jsr sndclr - lda #$3b:jsr chrout:lda #$20:jsr chrout - lda pch:jsr wrtwo - ldy #1 -disj lda pch,y - jsr wrbyte - iny - cpy #7 - bcc disj -; -strt jsr crlf - ldx #0 - stx chrpnt -smove jsr input - sta inbuff,x - inx - cpx #endin-inbuff - bcs error - cmp #$0d - bne smove - lda #0 - sta inbuff-1,x -st1 jsr getchr - beq strt - cmp #$20 - beq st1 -s0 ldx #keytop-keyw -s1 cmp keyw,x:beq s2 - dex:bpl s1 -; error -error ldy #msg3-msgbas:jsr sndmsg - jmp strt -s2 cpx #$13:bcs lsv - cpx #$0f:bcs cnvlnk - txa:asl a:tax - lda kaddr+1,x:pha - lda kaddr,x:pha - jmp getpar -lsv sta savy - jmp ld -cnvlnk jmp convrt -; [x] -exit jmp ($a002) -; [m] -dsplym bcs dspm11 - jsr copy12 - jsr getpar - bcc dsmnew -dspm11 lda #$0b - sta tmp0 - bne dspbyt -dsmnew jsr sub12 - bcc merror - ldx #3 -dspm01 lsr tmp0+1 - ror tmp0 - dex - bne dspm01 -dspbyt jsr stop - beq dspmx - jsr dispmem - lda #8 - jsr bumpad2 - jsr suba1 - bcs dspbyt -dspmx jmp strt -merror jmp error -; [;] -altr jsr copy1p - ldy #0 -altr1 jsr getpar - bcs altrx - lda tmp0 - sta sr,y - iny - cpy #$05 - bcc altr1 -altrx jmp strt -; [>] -altm bcs altmx - jsr copy12 - ldy #0 -altm1 jsr getpar - bcs altmx - lda tmp0 - sta (tmp2),y - iny - cpy #8 - bcc altm1 -altmx lda #$91:jsr chrout - jsr dispmem - jmp strt -; [g] -goto ldx sp:txs -goto2 jsr copy1p - sei:lda pch:pha - lda pcl:pha - lda sr:pha - lda acc:ldx xr:ldy yr:rti -; [j] -jsub ldx sp:txs:jsr goto2 - sty yr:stx xr:sta acc - php:pla:sta sr - jmp dsplyr -; display memory -dispmem jsr crlf - lda #">" - jsr chrout - jsr showad - ldy #0 - beq dmemgo -dmemlp jsr space -dmemgo lda (tmp2),y - jsr wrtwo - iny - cpy #8 - bcc dmemlp - ldy #msg5-msgbas:jsr sndmsg - ldy #0 -dchar lda (tmp2),y - tax:and #$bf:cmp #$22:beq ddot:txa - and #$7f - cmp #$20 - txa - bcs dchrok -ddot lda #$2e -dchrok jsr chrout - iny - cpy #8 - bcc dchar - rts -; [c] -compar lda #0 - .byte $2c -; [t] -trans lda #$80 - sta savy - lda #0 - sta upflg - jsr getdif - bcs terror - jsr getpar - bcc tokay -terror jmp error -tokay bit savy - bpl compar1 -; compare adds1,adds3 - lda tmp2 - cmp tmp0 - lda tmp2+1 - sbc tmp0+1 - bcs compar1 -; add adds2 to adds1 - lda store - adc tmp0 - sta tmp0 - lda store+1 - adc tmp0+1 - sta tmp0+1 - ldx #1 -tdown lda stash,x - sta tmp2,x - dex - bpl tdown - lda #$80 - sta upflg -compar1 jsr crlf - ldy #0 -tcloop jsr stop - beq texit - lda (tmp2),y - bit savy - bpl compar2 - sta (tmp0),y -compar2 cmp (tmp0),y - beq tmvad - jsr showad -tmvad bit upflg - bmi tdecad - inc tmp0 - bne tincok - inc tmp0+1 - bne tincok - jmp error -tdecad jsr suba1 - jsr sub21 - jmp tmor -tincok jsr adda2 -; -tmor jsr sub13 - bcs tcloop -texit jmp strt -; [h] -hunt jsr getdif - bcs herror - ldy #0 - jsr getchr - cmp #"'" - bne nostrh - jsr getchr - cmp #0 - beq herror -hpar sta stage,y - iny - jsr getchr - beq htgo - cpy #estage-stage - bne hpar - beq htgo -nostrh jsr rdpar -hlp lda tmp0 - sta stage,y - iny - jsr getpar - bcs htgo - cpy #estage-stage - bne hlp -htgo sty savy - jsr crlf -hscan ldy #0 -hlp3 lda (tmp2),y - cmp stage,y - bne hnoft - iny - cpy savy - bne hlp3 -; match found - jsr showad -hnoft jsr stop - beq hexit - jsr adda2 - jsr sub13 - bcs hscan -hexit jmp strt -herror jmp error -; [lsv] -ld ldy #1:sty fa:sty sadd - dey:sty fnlen:sty satus - lda #>stage:sta fnadr+1 - lda #;" -hikey .asc "$+&%lsv" -keytop =* -; vectors -kaddr .word assem-1,compar-1,disass-1,fill-1 -.word goto-1,hunt-1,jsub-1,dsplym-1 -.word dsplyr-1,trans-1,exit-1,dstat-1 -.word assem-1,altm-1,altr-1 -; modulo number systems -modtab .byte $10,$0a,$08,02 -; bits per number system -lentab .byte $04,$03,$03,$01 -linkad .word break -supad .word super