From 8a8d27b234b8dc28a7f3ccfde863af1cbc900126 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 19 Feb 2020 17:37:15 +0100 Subject: [PATCH] random generator compatibility fix, updated binaries --- Makefile | 2 +- STATUS.md | 1 + bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_testing.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_testing.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes bin/mega65.rom | Bin 131072 -> 131072 bytes c64/basic/math/e097.interop | 3 +++ c64/basic/math/e097.rnd_FAC1.s | 20 ++++++++++++++++++++ c64/basic/math/e0be.rnd_generate.s | 8 ++++++-- 12 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 c64/basic/math/e097.interop create mode 100644 c64/basic/math/e097.rnd_FAC1.s diff --git a/Makefile b/Makefile index da8927c1..eecfb259 100644 --- a/Makefile +++ b/Makefile @@ -372,7 +372,7 @@ $(TARGET_X16_x): $(SEG_LIST_X16) build/chargen.rom dd if=/dev/zero bs=8192 count=8 of=build/x16_padding_64_KB cat $(DIR_X16)/basic.seg_0 > $(TARGET_X16_x) cat $(DIR_X16)/kernal.seg_0 >> $(TARGET_X16_x) - cat build/chargen.rom >> $(TARGET_X16_x) + cat build/chargen.rom >> $(TARGET_X16_x) cat $(DIR_X16)/basic.seg_1 >> $(TARGET_X16_x) cat $(DIR_X16)/kernal.seg_1 >> $(TARGET_X16_x) rm -f build/x16_padding_* diff --git a/STATUS.md b/STATUS.md index 5ee5f251..10c217d9 100644 --- a/STATUS.md +++ b/STATUS.md @@ -237,6 +237,7 @@ Floating point mathematical routines - not official, but well known and broadly | `$BFED` | `exp_FAC1` | NOT DONE | | | `$E043` | `poly1_FAC1` | NOT DONE | | | `$E059` | `poly2_FAC1` | NOT DONE | | +| `$E097` | `rnd_FAC1` | PARTIAL | requires `sgn_FAC1_A` | | `$E09A` | `rnd_A` | DONE | | | `$E0BE` | `rnd_generate` | DONE | | | `$E264` | `cos_FAC1` | NOT DONE | | diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index 7db8844e80da01eaa0643a6b6be8327928f7a332..f0f5b1e3c302402e648a49db7f60fbcf2e19139a 100644 GIT binary patch delta 634 zcmYk4PiPZC6vk&a$+k&LYZ9?ZHfbNRjYtJU5vkQ`M9?Y|P$*Q3&^e1BSWqZJBOxMc z(}X!xFS3TlWG&U~hN7fRn}dJ4htfrQDm@t6q6ZHPws`Qc&XS9B`QDp(-)|oCCJ{@- zO1JD>o!$|AG-?0MqWg|vez!o^91*TS_Z)-5rh?d_ok5Wrfu$cqY`sAIDozy%!!c+MJ&ro7h=;G{PkoOOW%Rlt5vZ7~1uA;)Wj#~n zkIoN{E`*4LayRkDA|lYCYR3#GYjz*PYCrK2qPSf=pGna3f`3Fp%7g~G0HTU(iiQk9 z8!&hu=_mPY)P{#=tpcbirHfWz#I(swo9j(=Tpg<3Rfm|1Fmem?MVQZqk8WF_O@*Fm zzQHq@X^!whovt+hag(Rp$=L__Kw+ow=#m$_WLzU#quqW&M}-qvu+t^~Ow)MX z8a|;)Q=bF(><~hy1J`J8u#No%%!?{LD_*c9DTaA=m>0o|2bb{VI~-M|E4j5A<2&Cu z_dDlKrKVD)mt|6PUXi;9DT-6dGxV{F_)-}qrr1^vtG)&JiJ`%yXe9z-I{uJ2uRe^- z&(+_=@x=Zx=mwO}xXe>o%H~Z=eAO3wplOw!Y{RXTo5}TrmTK?Y>DmQ5jTGHwtu7Z@ zqwc|$#P>GZS-vHrk>@FflaW!nR2CmZ{+wey&S$~PN=DbQLjDE*%_`{ZknN7Of+%sD zP1pzYn69VaNf*FSE&|Dh|DH6WSa2Ynr?DC(r$!;w-)S^Bg75mx?lPi$bnx%^Mvs2;zsya16F`|%6eV){=mQB zIQ!aPuPfdy9e@B(02x37qJl(0l?l}lR8#2(2ZpRoB>`Nw5`z04wOvsIQY zmU@`EY7St=Xv6HEsiM|O8}8qMy#Qh>JX%@oUl{P@g|Wqb1z_L$TAFPpo0IqCf=e4= znjhln#_YXs-^U&_*^5{BIa4$PdnW#>xFep#dmVQ?7j_Spy4P{a_v1kJ@mDMCEr->7 zR`;>%Qx5ydXPZrSwQ>olJMNvhMB3pw{<_0Vaa4;xd(6hV|MT;`>}n^|fcn#|ezxp; zy==1sT?D$$Z&Y-YL(x2B$AdMX=>5;$HYyfiv1;h7>SGJyQ|*mD{oTg&!dWw6-Lz&u zK36_c|xiIej5U;<{)gcFnP2u@=7&h*ofRpo?-~zr^?46myBAV((xW9}cG} zTRfV4q8+A_!@^3k0RVn@jc1Ddm~9-%KgB-T;$_SEE_oZ@q2uj7Psk(U#GN1h2TA;N AWdHyG diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index 04529177655d9a857df36dcc4f2987b70bcef3bd..86d713bdca8a2a0f7e237ec9137b9ea807ce5e97 100644 GIT binary patch delta 758 zcmXw1T}TvB6u$TFpS!xXJ7N1Xse|-`x|Q`{n`KyrZFJW#=phN52to+yF;c;enlepy z;=U-fuxySyYi8?AMD9=d&_h!Y69_>V6uD3kvJjCZXm?yXFCX`ubHDTRok(k>HND@A zx-#T|IfxeK$W^myyg19_3fot$TQ}i-8Sb7!K3YyxKgeJ~N&%rSg@k^JEyA(XhR}?W z45*Rn9V{vOZRCRWk-@ZXZATq4X}7f*Fk%as2I8+s#@67DgG3)UgEUUJavd@*BuUQA zHWiZTj{gx*Y|{qCEsp8@v>eK($6DM=jX!s0Mi;%2d zV_2xZw!g5{0KikWi+C{$cZ=P4hf*MJnE-Ie z^|vSPp`|NB3FOTqc;mDZLvZM=>sJr{IY+jXc>i`CSIARcDpF%pzCfuuvRxj?=8bzDdoHpTAg{+nNj?}B7|GgXPxmg#SVPGDh34m4@ zxZ;9%T$yEH450604Ai1J5*DAhptsizM>m7ytlfj|s-(xh8#Ss#w0pQ-b==DbQ-C*= zprem`yEQo=`IF1ZJG0S@lvNYkHcSj%aXI%X%h@MI6HZUzh)h&ZJE8)tdD`guNUQgq z0Z!j_(&azMmdI`zz&YoG(xF1bv=l4^I4bW4-*6L1v=}-9-SMV`h&I88%}c`AaG24B z`{QBDk`R^RVRlg%#V^0$UCTUAqW(^D(ppLW_Zx$O&*XEpdAL>DCl delta 1086 zcmYjQU1%d!6uvY0?WQs5f0}ICOWAd)jl1bnLzkAYg;4OKyRwT4V&_Q;i$CClm~=@+ zrv&%GiT7m}ErytxW|Fp7F~q_cv(DGsnzjPt5UZVT-mr6SUoPbn@Bq zD$nJ1gTF75o^mdiJJQZd-z^qS7+GmxzUU0;hOSq&5dxMi!{VcDQy1yoN% z(DRyc49rChgakoIcc-4VP65pXF>3f*4eK^;+o0nMjZvNa6_05fh&STqLUw~=_Hpuw zhQHpH2P_9^DssQ!4Z1W3xvq#Ua3|vp75$H-7{DJL&=pYotksX-x6J_l^x)T3#COPP zO@J5xEuvh!O9u&`+dr9qKok`zt%3kLSYB;At36gkz^0uAy!H_LqySd1JM4NI$RI$F z1@N_<(l1+xH}@>3niQqBOBz%WI26&!Op#xiEzaNpU6!m5KqI*%&x2X4?2<1PAcHd9 zy`rQ`8KT>4#Qr<^k@c*!3{TdDG+yToY`SrOgH-DVvfReB#Y4XYIUk2Imkxb!wXQw< zuRpTpVASqAQqiAp%QLo4MBead^B zZHnj}<2&`H>Wy%D?CB9M-+HCAB!|~-udQresx8%;#Xj573!#0`Dcn_(97Iz{szIAW zDZW~#cZcQxPm`gKneh+5NS8(v11~eF*uRyKr}ic)a$+xrVWmDBevOL5lMZtHHqD36 z(KGHL`d9cFmd4YOc;L=W%?t?)i4b{fhpt7i4{kF%BwK@FXqu5nIkuU{q7`P$=-`QJ w9rD>y*a(mPqghUi+j2(SIrzhNzzsv)^pBk5xGB0Y8l|_wgLynguZ@zw0oT0LI{*Lx diff --git a/bin/basic_ultimate64.rom b/bin/basic_ultimate64.rom index 98571e4ec991dc3f22561e552bd5b250ca8aabb1..74b9697ba4e6a1af6dd065d0022312010f6cd890 100644 GIT binary patch delta 632 zcmYk3&ubGw6vt;L$);(gHHq3Jo3@W?BT~UoL~6A)qG*)~C{(IJ===eKU_qe@t&|l} zn;*=fdXX3!lU1tS4Mj;C8}J9+gSbdfp$B6tig;MC#e;`+mR_98_c8OnpZA#WL~J59 z=Xc_o%62+02z7Q<46sS(Z(iMS4dHJE_R$p)3T(sG)t)I6Ij#Z(I+)$WUxd91R4k}kX$NUj;JXEHf5MgGEW&!! z7?~Apxky?SD6r?g;BZt^(0~287WlB`%%bW!a|gV#j28H`b@d40Wg-_T$8l&5-Hm!G z2*YRVhq1wl3VK@3QYc$|1t$5gXM9tocb?a-4uohHKM36L6Rdr;FdY_2{w3p^HQ3n~Cu^XVO&YiLgGp3KHn;V~1 zMzz7pHEoc)C?_{@UxfP{WZ#+%;&~lyxMasR-4MZIoh>!|@zVQilQXySp~8CM&Wltz zzfj8gEr*Yzo1m}&yO#L>?Or2sjol6&$$-a6`B?V16?nkmKqse_Vu6zaONa+E;AD%z zY4>Q|&XzLO-Qyx%>y)xo=sfEVH}j|omNYgXov>w6>csppFM*%*FOu<>B&uc4=FY(U YSCS}~YSN}4)JsNNQVIX@g&HbvO|B^42LKOE~e zQt48{1~cXSm=g*y^!DBqWH*moxR16i|8LgCd;Z@Q3$M4QSkbv`QiEV9v+_e zdEfKA=bemC#*5o!>X{-WkCB4?rrb_QL7Y}zrbo--Yh{oaVpAFDd%wa{MjlcVd73(l z@o?%$-b;;e&jdW8uQw(dQJZm1dKtf`fFSBt8uO zIm0^a&;6e&NnOVZx!3sj%b>GEmNV4wqr?L?Y8})gx}Lb0$U|1S3M3u)dpsM)f}uo? zMyiyY*;SmSB)t~6KhD1_q|@oPS~7EMJo`wCBS)%0&KxSvV(J#>_a>*s`Y9(>331vo z+uryW$iaJUvxM-?!dhS>3rj#;Wwj=|f8fnO%)awhYl?ec2Ot0xKnBo&s31{LWkNLs z6%{}s6bV#DimV~YuYyMWl&F#>OVp=orLLz*GBb&G>+G31oWUYnH!~6+syCnAzvY%O zky< z;qrX7 z+2u;S({_e40cWJRZ55~d1P){mf2+*ivsu++H4nQ!ZL?oJc4LFxEMEia47(?)7JMb$-ec zKSz7S+r2{)nl1hbGu(&XNI(8XJ05wCh=y diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index 6be4cf2be74e9216b5ac993b1efb67d4cc5ce02c..20ed1acecf21b817d464d6c950d1ce27be97b5ef 100644 GIT binary patch delta 567 zcmXAm&ubGw6oB8%Znm2sHflm!q%wpOtF594QpMC>0vj0o13V?^58_SnV5`Um?36{b z$(9_%LmI`-s8QQ!^5|9u3sz%;@NsL?WXKgPooS<5F<;?O~a)FbDSM)yD9%?1XyPg0tynhq zwE`Y)V6-&W$zh}$ZSP)!zI6=4@HBPnQzCz|FUi9VKucFTIZ=Dy{OCD->tjJ`Ak^|$ zhyDSY`sT?YM1MPN@Ao{^0NJjcrfmNaC-*t>et)OwviG6@2mk}f04g8_Bn*m-a7Y!@ zr2x1P76z7uBdfx4E1)7bMvA1$5*|=g(V-Vnve*%eiPxsPmFyzELwKBJ!m}(Lo?~Ws zo~6Pu_DKA%a34elcMH+%5h;*8FI`1W_Lg*Uq_UoeN=VzOgxGX~g`#x1Rv4vkO3~F= QJR6XoqDwEf<;%za1A$Q3^Z)<= delta 112 zcmZp0XmFS?eewn7Aap!Yz=}6Pq2iHG?NWuMk9__wpIpIIK9N<5t=W_R)}n;Tg3L;j z4Vmp3*H12FHj|9nwSZxxt;dOtwyky;J;$%gZC5+~qkFi)u F0{{eEEB^oh diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index cee5e14c90dda0e2a4fe67f2566f3bfc98b2ecc4..6628e7a2244a5bd8b141b8617e58ca36280a4ee7 100644 GIT binary patch delta 516 zcmY+BPiPZC6vijJX;BmsFja~K1}QmM&|Cx?spb-Kagg5Z&HQOaZ;H1RNe;dunB8p2 zp?VP3)!8~iVM`CSsVggD$a--RMDXMWq#}ZQ@aAEBOE2vl<~`oL@Au7{X_wn&b2Ue& z-vlI7+1-B7c2)NFJNq+QNgZpAcM5vJD0JOP-qE(8!*wkWIyba;VDPS%hVFT8+#Wz3 zkFP-kOLbV_`jmbe76pNuq78ST##){rPl-ZzCB4T*#>&vX6e(y51(t+_l0`O}=PhNLQ)QP%3G2*nYDDWq35wy3^;8n(+02N3 z+u;+j$~GOI3l3$+T$R0cppV_G@lud|3_C*ydo+vqb8(Jt$uL7d?UkMoW!PeCQ58K< zYmTvu$-R8(UbhL-+&R>{SCj2Bsw_E7(hCSfgKT1O#7~>Q zwuut{h|{7BraxvL7X%w@vOH@m%NOlgI^l6MeouGvlHKQ5aMW9`KC&+k((s-BJ$9Ne zmY64d^UCT8UWaa_0Y+s3^vWW1Dm8e7|JNH=pG`j4CI=Q<+p+WPgQ%|5>b+Cx=c$>^ ILArGEKa+s&t^fc4 delta 88 zcmZp0XmFS?ee(jY8pg>Nm;)!LFm;PBU|3|Uu!iX*!v(Gr5SmFM!6IQY8}mZRs9g*w ez-Q_1MY29eS0+rJ$dxo%iDfaP`Q~FRR?+}2Hyi2z diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index fc119cd3b0f04d34d984672bd69734fe51d519ec..d000620b6d21f619c20ddebea254de5da9761d50 100644 GIT binary patch delta 547 zcmXAm(Q8t16vxl+cdvI>iDsp2BNjho*w$7QL9EC%0^tfj`U84W=Z3u%J*|ih({h?e?v33>@)sSq@Xf<+HKw0@g!=X}oRdpK|s^ND%usfSG0 z+h9xdcCno(OZ4?u`m?u=PU%Y0Z~9aIba{*?LsgdKW@wz5JQaG&Qal}!S$dYI?(DFr z7~f(G0!3Mjn-k_awpaqTR7$YBEJF1Lxmgf>l{71sL}&VBWV7x2CDExqf55i+LslP< zVR3~*e4BKx`>jeR^)5MCU)>_c%kpuuvCX|A;_q`0+Y-xahuCw3?IFQx^nSPKDR^zU zFjJf^0r_;GYUJHseA05h=(utI4AuIp=T|O}%bYB|p^v!sL@Png@eGjR{u|GYv~|m? zHAW6Jrd3Ms~!2;>Hq%} B(Gmav delta 98 zcmZp0XmFS?eewn7Aap!Yz-n?fQ_DnFDYj-${#%O@CJQnvO*UkqHrlq@WwhER_(UyRBp(P|rQ_Fyx_KFGR;Z%ck2y63 z{4YAz1dD5VQBXKq-2^kWQWN}f4f+I#i-;sKC*zbc;Bz+Sfe3Hcel7jU`4kY(MlsCR zcmdR&z7R15(%&d^mNo!z6vSRbcXWW^X3f}BZRDl?1sz&9ZoxP`ntEP{*cQdGmmZ35 zITi)#lmSatXxC6dH9*yB^j5_d+>Pak(}V`4dH^h_sTb-_^`PMiKfLZ*ep2htPiXx- z3v>4MJg=SSnb4Q}_^|eW$-9 zU1aYtYnd)2A2j1jm1*gH`SHX`;-ed(tgPd-?}I-~ZP;zTOM)M}n@hxh#cjDuLUPn? zzvDhyA_4T(GCj2160z+uV_qfwJ9D_M?ZLS&@l`XOoV&tz>4)Y!1k+4(mOh=`PSwPI z3);DYF^y!u5bYX0pdYTAY2EP@#;|vuOBAlb(+l;c*Tc&d_}Bv1HWf#14FJ@aL!MdW z)S@rO2H;JGhO$)Fw~OEBXifitF6j>Xdu~}Mr%U;uAoQe6WB@L_LqiA3zhuy^GG*#sak5M|YEROc*(aRrswnurwcQ^>#j?-mTUYRee;$i= z@GtOaf6UyH2g1A0u&dy|nBU6u-t1OBLDtl8BfwyFVLHzGsFzvj4K~p-D8bGObmdTU zC2CUp`h9BOwJ|=Ww7W7astJ0zvaMk#9&1In6dVyosAJ`Gp=Y|dk}0kTz4m_r%Cpj~ delta 862 zcmYjPZ)j6j6u<91Ev^3=irTQw_FAn4?Pe;2*0@MFsdjQ<16$N$=|y1_W_7L3Zmy+) zt|Krg2}h~3h#^bzUIO;z<)LYl7g|9>pR^i^pZub|Nvp^{WK3~mu(zAm54&H^J?Ea^ z@BGd=*X=HKyGvv3LFf$chml~F5Q5vmM)AUCSPXWFmJE%dRzZbSBggIGIEmZ~7m0Y`%J}KMmb_wo!_Ko_c7a`F-?Bc|&&Cti5|`Lz z_8q&z=2P>=0Q;UrHMkjn=d*3mA4I0s*HFq;1UM8WgO_Gb^ts2-1J!|bs4d5^!ItJ~HVSZ7Zo;fF)9Tj+hx?<%}ps^+biur7T< z{akQ)-3W1Z=X3;(CU|>ZiA;x!#cEfZ2wfdbg?=10)*|I5;sZLS5T>mp$h-!Jmp&3J z!!nNGo7(bb9_?!x#oSOH;&ypPFr}^;w1)j{L;ep1)PcB zL89r%cHa?-<`n7E;Y+3JWQP(#|H}@Pfi9C;q6oQzWj zkjGJ$Mj~FcUS;2Kz6c5@{S+rHE&%Q;S1RZ)xsl*t=mR+~|2#RQ4ysi54E-V1tW5!X zE&TONanT#`cn)u$;c{bP(yzd0FYG>B!#c{};Ge{i;;(9%Y7~1UxHNTxd-~?-dOe=*|AT;USGtE0S+k#L^ z`9Arf(8pZhX6s>+_1hN=yf24a4N{TwOPZ_Aqq(9zoC%t9U1Dbv#&bJM+k=4}bB6yx^?*4}j8|OaK4? diff --git a/c64/basic/math/e097.interop b/c64/basic/math/e097.interop new file mode 100644 index 00000000..6b2f206f --- /dev/null +++ b/c64/basic/math/e097.interop @@ -0,0 +1,3 @@ +This is an important floating point math routine, referenced by ACME SDK, see here: + +- https://sourceforge.net/p/acme-crossass/code-0/38/tree/trunk/ACME_Lib/cbm/c64/float.a?force=True diff --git a/c64/basic/math/e097.rnd_FAC1.s b/c64/basic/math/e097.rnd_FAC1.s new file mode 100644 index 00000000..0091fe7f --- /dev/null +++ b/c64/basic/math/e097.rnd_FAC1.s @@ -0,0 +1,20 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + +// +// Random number generator routine +// +// Input: +// - FAC1 (0 - reinitialize the seed with random value, negative - create seed from FAC1) +// +// Output: +// - FAC1 +// + +rnd_FAC1: + + jsr sgn_FAC1_A + + // FALLTROUGH to rnd_A + diff --git a/c64/basic/math/e0be.rnd_generate.s b/c64/basic/math/e0be.rnd_generate.s index d315cc1a..f33e2921 100644 --- a/c64/basic/math/e0be.rnd_generate.s +++ b/c64/basic/math/e0be.rnd_generate.s @@ -38,6 +38,8 @@ rnd_generate: eor #$04 sta RNDX+4 + sec // make sure Carry is always set, for adc + // FALLTROUGH rnd_generate_copy: @@ -45,7 +47,7 @@ rnd_generate_copy: // Copy the generated number to FAC1, mangle it a little lda RNDX+3 - eor #$62 + adc #$C6 sta FAC1_mantissa+0 lda RNDX+1 @@ -53,10 +55,12 @@ rnd_generate_copy: sta FAC1_mantissa+1 lda RNDX+4 - eor #$97 + eor #$62 sta FAC1_mantissa+2 lda RNDX+2 + bit RNDX+2 + rol sta FAC1_mantissa+3 // FALLTROUGH