From bbd0ab11c405193af03118db303fa4b886d02158 Mon Sep 17 00:00:00 2001 From: Zane Kaminski Date: Sun, 26 Dec 2021 18:10:23 -0500 Subject: [PATCH] Redo settings --- bin/GWSys6_4M.bin | Bin 4194304 -> 4194304 bytes bin/GWSys6_8M.bin | Bin 8388608 -> 8388608 bytes bin/GWSys71_8M.bin | Bin 8388608 -> 8388608 bytes bin/GWSys7Diagnostics_8M.bin | Bin 8388608 -> 8388608 bytes bin/baserom_romdisk_noramtest.bin | Bin 524288 -> 524288 bytes bin/baserom_romdisk_ramtest.bin | Bin 524288 -> 524288 bytes bin/driver.bin | Bin 2163 -> 1911 bytes rdisk.c | 189 ++++++++++++++---------------- rdisk.h | 16 ++- 9 files changed, 100 insertions(+), 105 deletions(-) diff --git a/bin/GWSys6_4M.bin b/bin/GWSys6_4M.bin index 1ee3ff6303d3b30cd41ee0b23ed05ac1c42aa43a..b8b60d08e1ac05682b47266afaf5aeb3efc86018 100755 GIT binary patch delta 1934 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 DJc3l) delta 3897 zcmeH|?{8C87{{O6wWGs2F12oTzc{14W|q1&Ng1pAb-?%n?~NI1<8N*beb(Fq-}-? z)n;lVj`Bj;PySIoI9+HEQC^om!ucdOmt2ot zewSgc$Cp#yJ0{CH;u^2NX>A_xM?GfdH4;&nd3aXu;mzfguj7a-=rI%CdTWo4$e5D| zUgYsFRu5k;WaX>SL9l!nxq^fhy&Moc>ft>(!MpzGfhMoFbz5gkYoMua?S|Iw?)HxG zyO?IsT4Xp9_is|}`fl@Xu|XatONi*IuS0nV9)Lf{9N9O_5(3 z@0g6rg#Rsn6eIV;L__XU(v!q!g+zK*i{&(aD%gBv36HOc(LoZDC2Tuc?13!Yx6>f^g}QU!mv$Epk*K|g$yOCpjHJtrL3MpqJ(;Sula;dBN_ZXb%DOpJ zC6Re~OxkVRr%c!VO7`VGWd;kK1~Y4Fxx%3_jAptsDx8$9oq*pX1xb5$YA#YiW^3;;XrC^}NjSYA(8ixP3Aq z*dEoDn@)s@>vG39lgOvl5Ii4^ z2-TeNW`AZ6;S5fm-q|4(Zov3Pj=&L_f4O^Jtj1%KsN=oiQ zNUydCZ;q41%jf-HOS_jyn)~6W?wYrvdAl`lH@t0g-m*)16xL&!476qt(e5rwXT(Zm z1Qg4_*cfvXv)8Iik`v*|4cx>IZ8-8)7L^=QYa&Sy!V9KK431P1tyMkkf%my zCzjqmU0`}vpLD4Lg_tJ7A@yG;65EKr(fWs<^sh2l7-kS0B#!lzNW>S{kwZ-e&hEjQ z<9N&zO3EzWDS*sK?OYb41Tr8U{J5a?(n_k*6ph0tDN~qIqnBsY&1iyU=Sn2Paz?Y< z_>aW~%cv?zI{Q*rSXOeQAh9_1G8a^FtLs+v7#}84-H%eKj_mJ2_OZpsNHmhV>o6$= z$X17HW2!ek9L+oDv3Hy1Z8H+QbWkuOL<)~H(1pCvT~cRIBdU7F!wZ>SfSg$0Pt2Iy z$RxEtx1`kfk%`7T1y<#T`msm84c?1f4Bm-c3Qqc?dz-w0uJ#?RMC%7|SJv1Ya7Y%p z9|tXq>)j5@Gf8CaXq2VSO&cV%bGQ0+&{a{!67E&TO#dU&QG5@r)_w=cLq{IB(Wyv$|}dLb0IPnd`&JzZau(L7rHASg*ua-&xr>Xb$=mOgdZD7ZnR4u zkFG`P7mY`Z!W+1Y*bk%rgMob&XJ+Elq2D|bZej}HCVqX2_~0cqXlOE+)PjG4Tf^iV zamP?7%7gm`$CnzM4MVR^lD$}_g5VK#?(o9m7(Tzn=zplSc(i)m&h$5c>q`Ih@+y{K zBc&}efoIELKr~2$r-}@Y!Tq9P^WIxF1IPpmfDvSYh2R-r0?&eMun6#AF))MYfCW4c zazHMyf)_v@$Oi?W5EOwWfPrElfTchLHed(KfCH3(Qs4w-U^#Gsa^MCpf(q~ws01s( z%b*HWgO#8LtOB**6|fqt0TQSK9#DV!md$(V;e2hLug&wddA>H!*XH@!JYSnp7ytL# Kj5@rg@XFshw*tHX diff --git a/bin/GWSys71_8M.bin b/bin/GWSys71_8M.bin index c2bdc7d5078d9fc435f32d1379c21dac4a4c2c04..9fc771470b4a72eda91c4e1184e34c1e20ddaeb4 100755 GIT binary patch delta 2169 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 T@4&kdf%oA36W1-#+>8GJg&g~u diff --git a/bin/GWSys7Diagnostics_8M.bin b/bin/GWSys7Diagnostics_8M.bin index 9f86f991afe00ed4e68b381d83ea37e4fb81d978..c274b0b552fa65ececae0d20434adaae186bf5d7 100755 GIT binary patch delta 2169 zcmZA1Z)_B09tZI6On1u`R~YKHU9sCf9j43nkL^+|EVu`=yM^11b-T3uDW1v*Ww+3> ztgA)EJ$H!(iyBKV#wEs(jc+VUj5dOIiBa^e=7JX`7hg!CMk05Ci!X?$4eNKNhn()_ zGkKn8e)G)l`8_jJEEXL_%ak-FPgPAh-gUm`iv$KPRv|GNzl3uS13&zKPd;SzOm*R$ zQ?+{TF-TaRT5{ux>e14VKBrc?(ByojG}`J66gJPqFL{H0m%raQ1y2f+A;N%^d|h1` zhbO(d+$P51(UOs?P;!o}6xV}NdGiyVf6j=$obyIs>4q|)sP~Fk;&1wqrnA}aO-Ql} zKsp$0M>C1qZg^w~Qe6ZswP4G^RzZ~kSDlU(!45cN{bI%Jtjja$W?n3%*4u5t={<~- z7}wI9mn5iGG<1PAIvi{Acp2)BnXdPNDwo(kG9$(yA9R|_qx&Eh;>~i;7^=@6%Q*Zs zL(hn$F`c?n_oRNL;G0FjYWPl}tv6qBLAGz{=#9bMI}R_Fh_yU>I#=`cY_E>m?!10P zI}Rms8SUMyQ2YRtZpVhO_RZ2wlfs1Z$awai(bf|AIyC=hXu-fZ7 z7WsE&!r*l3g#uZnpA84!VU4A79q*?^>lR+EZbah z_u{!@qt)W@%18m4Iu6Y^mNxxiJ1`~`k=LgIdndio4#=8SpA#Z>=KN?qZ=&+%N___c zU;GQ29d*=>c=gPGtr_f?6^sF6+HS`1%I36#^Hs4WQtn_UH@v_dU&}q@P!+SD5*^T( z2ybr`)3P680?LJHwG)c4k~sa&N4vSUKo_*XPLDzwvCjNsYR+m8)OKN!TY_v=Qq4dt zR01ywhlrKCj5ndBguR(3tgBcB;Ap`fc=gwTvfwF|)1N=wrbD?ifR1 zg3)oPCa%A4LwlF5Zu`9nDYvb5;QB&Tk>Q+j249fKHyDEWZyUebUQ7l zJE)O-)I`lBsD)HoK^nD^pH@fi|(dgT1{&xL~Cgs-9use z1FfeGq*H{V6r(=cNSo-76sLYN=w2G2`zS$!l%&lxM8mX&w$e7*P9wB~?x#P|1N0z0 zL_5i(hiMn>rcv5MDYEurjP}w#8m9@`PZ>HuS$c$W^e8<>lXQ?Crzhx1Iz&%Vp8iZv LzxPdR!T04a>mQ&V delta 2205 zcmZA2aZD3e90%~7ViS}c~%=|E(9l&a;#T3{${&Q*aHoI;1xxvg7E zM1_S6lNoV~G5v3#W?OVqXUvAn;$OrtqS<1M8YOXaix}seo7mg;uAR{1nu(+A zK>Fifl=R=v)d^8ksnABuRz!leh-`&zRA_4>r?rjdmyc6+yEepmL?;)oMr}sBZnDM~ zQTAp-#%bcJuBL7er_und1d)6J=O^Yx^9hiBj}zO?|YF zHIrtWPU;SHWW6o!%pD*>y$_P5I3nvwlNCYMwZ#==DBeUSN@oiZb)-G*+CZ^L#<>x3 zr=?fEU;Zmu=X&G`O!PiXEGgr12S)HT)tNHSPU-3jcwM5OWJ#H(M!X`UTpyj+OsU6v zTD8`+njOrCN87#OT{Z4ip{7>k2-&&oxnU|n*Y|9dtc5b9?jUIrR-a_2yZ~`?)am76 zNEs6FP#GQ`z~A0e52dwzgW>rRD!cF_vX^5mqiHUYFX1|r^)g0FxbPO@dL=?q+e-tiiD}4VlNjYc#T+*_FgtMC>MtJ6v|s2uhCkfAyD=!$xMdM~U$cIU#kTOSd`+ zccz_$3unAvi#unEYWRUC;cB$3MmyDLC!#Hr(UL=c5Y%Fr6qF{=qt#iM+z|`0BapEa zJR4zlV%9QcN>VJ?AI{gAqMwGUpeY89G)PaWxrJEr z_313rvWmDvNl<{PN!YLa>S(Ni=o__u;BoyDLkq(QW*Z43odqKC`Q>C&HUnpMVa`!p zCUQmjA?^vl&PZ&V9ibR@K(g~AX0?{gq>`GvQN+Y03Q}VD!i4fNYQoa9L=w<)Qf;~V zzZMHxhLw~gcVFTnON-Z;MHa=oOm-?em3b@q7#$=*c^`Sc@?=jZb|0I5m;^m3Zyh8# z2fNj#v@sXTDSd>;nX=B8uu@g=3sB#!&MWwEgeF3Zn{1v9x{~o3phgjNMF3p zDtSQr&nukYraG|{)5Wc!KwKXe16kW|4=RQD0MmQ$!`G1mG;Tu zl`o==4KpAIav=|90)u=o!z>WM0#=v}HYk8OV247O3l1m(Cp-`H;02fu3*bd4 zh7wo^rLYLf;3ZfLOF)Eja6tvQVJR$w<=}xzkYEK=!AkJLD)2!y)Icq~40W&?lw8)s zT6hIsg>~>6tcTaZ4;x@3G(aOXK>&i#3@xw;-hj=p1zMpELhvTE!&c~kFl>XjU^~1G T@4&kdf%oA36W1-#+>8GJg&g~u diff --git a/bin/baserom_romdisk_noramtest.bin b/bin/baserom_romdisk_noramtest.bin index 4cf91860a47f1e181194d102a3e26780fc8f8059..f4d4686ae3186ef2ec19bd4e9fdd0d4777f2ce72 100755 GIT binary patch delta 1730 zcmZ8hZD>5U0iLJ-4gQ<>nlo_dU;f z&wHNtoRi704E=|MA#unuBzK%m)aO6Uw3x9I++&I@S+| z8u34boRktmNb?B!HSarq&9b(nb;g#PArHvPTPzs?vQrp8K} z;SdD~Wq#C@f{;Wgt%!iFOv6G?10+$KEEtVtDN4GUCJWIOCT0}gK|FzYHLWQ@fWq0( z7?x^~mZtC-l#SV@i-5((HuPj!AH-c&V}4*e*fihBxAdXt{AgTqm2~Z85q%{3pzH%} zU%GM(ZVoC>qOLVnut7AJlv;zZxAwz{*=!k&o=%qB8f(>1+MLq%sfQr@@1wq%6bkKx z+$^p136*0L0U@b_3N^rath^_C_P}PT zdvEk6MX8B-bgz9p24S-&CD@gSQt~Mkr1CWL3btD#MH!H6BY;^+XP^P1%Jn(Ig6AfB=g}exEiTV%fcyF%P)*jb$vArMZyv$q zEF=zyQ}>cXGpl0~#j_A%QM;#+3ZABlFQXcg%R*TXu?DD=2raK?VxkLd0P>9yr4cgY zNu2)r$1SuscN5faM|vUj@R47J#yRdNZ9=hKfXJ0p;$YKC;2@J&FyEw~f*NIJF^}+B zqyjLUHXTP_IP#2!6be7Fr%r?Xh9B;LW&n37?`mqSoQ`0iAButJhZm(lf{n|u%c=c^;%b5@dHr)WGSQ@OO$K%vjv#TlqPr$T~ThxRbq!Q4}D+rTrAq0mFj z-dC9GUt!kSK#Tw>V2Ps8L5hk|AF1f&kxVUSF-ajMh*iOC`E`uaNGsEM@HA|R+Z~hd zIKzX9AB@L|pN&U}YsQ1{;Qp?*NOIebtpI;3WUs4T;b(W0%H>tpc-)w8*WiqI=-SS3 zw??>p^J5tf+WK`h7Pe=+wgo_4?NFXJ+P!d(jEj~R)F#%jHu zPR3*E#pqx9S5R{i)mq+)+?94ZZB@>MO$oB?P_JGIAC7!{ek%PW`X|446*hkFcF8xg z#x))ydf&+B&Z^di?u&G<>T7gV7~?!@Y*tN*ZpB=(kDEv)bmZlwuhGaJF|$Bnxu+iX z&?Qd_#rbBEtUhs@`gl&QwQ9LfYONd6o1#))FvKr}6`Al=Ws_XZxJM$7H0@!V5@q@L z3;g;Fo@O40A$|!y>ZFrp{;ZW6thGj4*ZMBB^b|Mw*9JN}*KSQVvi3`P&RBH_5PfYX zIZb_q;1zUgnBfX=)xi-jo;*g+(KC9E=5!~dc`gFecI!=VM^;NHZW3|=fI$?Fv?`pt0hY52FjW~h;M4BSumH~TbnFU;Z;@8S zGP;**L+FiQw`|xx05&Jt-jT|Z zZeaI1)FFMK;(d94^(Y9|a}0cqNz(~zMG{%JH@1SSaW{COjI2Y{ss7SCqm44SS0&~B zz7cb-zpkDHvVA-<9!k4|=0fDsc*fYEHn~n4!1PN=#wBn?HhATualVOh-We{* z0G`2_OS{U?eAnqF!z&^{NKzgG$On}Guma`y=vRMH4m$}SNCDx3W=?#|vw8F=O7+ExScesXjM;E)k_3Q= z%`_!7ZR8TQ4sYr+9_!6t2g3QGPGItUJ#bTlr|JB#yAGDP7+{f}^?VPI;`ZS(v6I$( zkP@U5i-e=}t<&jU0N+^pv1j@Xf);`ics~e}nK~J`+7|HBVqioCb57wfUoD#p_$;7c zWfbP*Z)rs)DK#}yh{>y9Kw;wAJl%{%SXqS(0$R>nmfQcc_|P&zDJfQ8 z;W{bJZ{=l@!o4gyH6@xiDy&vNwGoQOi({e7 zpQ5`hw9g5MVv#|c4km|Z!0I97U8WJJN6Kf)SW4_X(uw)~M4b7pM5g*;N`>#^({1;w zyyk6s+2h~F9>%Z4?#HjjX0*h?_E5CHXHOTv<}CKg^yL&{CB(wH{oZd4BfOCNtayO zfL-Tud^Yx)x)N*aF^;VMKs|x%%qX7&hvK38(}QttGMnEj${$Z`#L};siaYr?uosaZ zCbT2bk=5ttQ*-)nij18YqS%RFp9L;I{grDpbXe)7Zw++9Y1TWvG8>%{ZJ5N`c}Xz;7Zn_G?re?2 WpF1QtwjaFfbD)%*yX#w0ef=Nijvyug diff --git a/bin/baserom_romdisk_ramtest.bin b/bin/baserom_romdisk_ramtest.bin index 126f05d0922fba5adee92a0ec7345dc83cfe970b..90594e86a2622cbb59eaa05fb399133c8ea8ee40 100755 GIT binary patch delta 1730 zcmZ8hZD>5U0iLJ-4gQ<>nlo_dU;f z&wHNtoRi704E=|MA#unuBzK%m)aO6Uw3x9I++&I@S+| z8u34boRktmNb?B!HSarq&9b(nb;g#PArHvPTPzs?vQrp8K} z;SdD~Wq#C@f{;Wgt%!iFOv6G?10+$KEEtVtDN4GUCJWIOCT0}gK|FzYHLWQ@fWq0( z7?x^~mZtC-l#SV@i-5((HuPj!AH-c&V}4*e*fihBxAdXt{AgTqm2~Z85q%{3pzH%} zU%GM(ZVoC>qOLVnut7AJlv;zZxAwz{*=!k&o=%qB8f(>1+MLq%sfQr@@1wq%6bkKx z+$^p136*0L0U@b_3N^rath^_C_P}PT zdvEk6MX8B-bgz9p24S-&CD@gSQt~Mkr1CWL3btD#MH!H6BY;^+XP^P1%Jn(Ig6AfB=g}exEiTV%fcyF%P)*jb$vArMZyv$q zEF=zyQ}>cXGpl0~#j_A%QM;#+3ZABlFQXcg%R*TXu?DD=2raK?VxkLd0P>9yr4cgY zNu2)r$1SuscN5faM|vUj@R47J#yRdNZ9=hKfXJ0p;$YKC;2@J&FyEw~f*NIJF^}+B zqyjLUHXTP_IP#2!6be7Fr%r?Xh9B;LW&n37?`mqSoQ`0iAButJhZm(lf{n|u%c=c^;%b5@dHr)WGSQ@OO$K%vjv#TlqPr$T~ThxRbq!Q4}D+rTrAq0mFj z-dC9GUt!kSK#Tw>V2Ps8L5hk|AF1f&kxVUSF-ajMh*iOC`E`uaNGsEM@HA|R+Z~hd zIKzX9AB@L|pN&U}YsQ1{;Qp?*NOIebtpI;3WUs4T;b(W0%H>tpc-)w8*WiqI=-SS3 zw??>p^J5tf+WK`h7Pe=+wgo_4?NFXJ+P!d(jEj~R)F#%jHu zPR3*E#pqx9S5R{i)mq+)+?94ZZB@>MO$oB?P_JGIAC7!{ek%PW`X|446*hkFcF8xg z#x))ydf&+B&Z^di?u&G<>T7gV7~?!@Y*tN*ZpB=(kDEv)bmZlwuhGaJF|$Bnxu+iX z&?Qd_#rbBEtUhs@`gl&QwQ9LfYONd6o1#))FvKr}6`Al=Ws_XZxJM$7H0@!V5@q@L z3;g;Fo@O40A$|!y>ZFrp{;ZW6thGj4*ZMBB^b|Mw*9JN}*KSQVvi3`P&RBH_5PfYX zIZb_q;1zUgnBfX=)xi-jo;*g+(KC9E=5!~dc`gFecI!=VM^;NHZW3|=fI$?Fv?`pt0hY52FjW~h;M4BSumH~TbnFU;Z;@8S zGP;**L+FiQw`|xx05&Jt-jT|Z zZeaI1)FFMK;(d94^(Y9|a}0cqNz(~zMG{%JH@1SSaW{COjI2Y{ss7SCqm44SS0&~B zz7cb-zpkDHvVA-<9!k4|=0fDsc*fYEHn~n4!1PN=#wBn?HhATualVOh-We{* z0G`2_OS{U?eAnqF!z&^{NKzgG$On}Guma`y=vRMH4m$}SNCDx3W=?#|vw8F=O7+ExScesXjM;E)k_3Q= z%`_!7ZR8TQ4sYr+9_!6t2g3QGPGItUJ#bTlr|JB#yAGDP7+{f}^?VPI;`ZS(v6I$( zkP@U5i-e=}t<&jU0N+^pv1j@Xf);`ics~e}nK~J`+7|HBVqioCb57wfUoD#p_$;7c zWfbP*Z)rs)DK#}yh{>y9Kw;wAJl%{%SXqS(0$R>nmfQcc_|P&zDJfQ8 z;W{bJZ{=l@!o4gyH6@xiDy&vNwGoQOi({e7 zpQ5`hw9g5MVv#|c4km|Z!0I97U8WJJN6Kf)SW4_X(uw)~M4b7pM5g*;N`>#^({1;w zyyk6s+2h~F9>%Z4?#HjjX0*h?_E5CHXHOTv<}CKg^yL&{CB(wH{oZd4BfOCNtayO zfL-Tud^Yx)x)N*aF^;VMKs|x%%qX7&hvK38(}QttGMnEj${$Z`#L};siaYr?uosaZ zCbT2bk=5ttQ*-)nij18YqS%RFp9L;I{grDpbXe)7Zw++9Y1TWvG8>%{ZJ5N`c}Xz;7Zn_G?re?2 WpF1QtwjaFfbD)%*yX#w0ef=Nijvyug diff --git a/bin/driver.bin b/bin/driver.bin index 23bf7eef5fa875505389acbe7c69778632bc0036..54bb4762f668615dddc4b797b19c39f094c7b0ed 100755 GIT binary patch literal 1911 zcmaJ?Z%k8H6#u=~f)8x;Ns2TM%jNM>N@28;q1BP?(K3aus};tCWQ$M5R}_SoLX9rX zz#t4pzb z-#Pc(-?{fZ;QxOG?Jc{9`YgGgDzD+rlbZM@ z*K{TSu0Y|MqZa~J8Os(t3VXP-OZkJ+gIKCN(|W5M9?4te zLq(drmp9+Wa#_y4A&;^GrGb6+w?e>;%|KQLr zU<>WS74S%&w#X?s4G0m|1PJjDmFiYF6Kk_ItPf5#PV2}?yD7A40U^6(zw`SHYe^O? z=&~PjzpT8>!m-b_arb%iXB~nlQB@Lw5Ya<}mH6Ql1qh|hs4M|Vc9IkkkV-XF1!`dz zwb`6rSIW7pAYZ|F!IBw8cM?t@TxDZg5TI~0G=_B=?Ca8a4@!5Y{sLf=*w(HL>xHpO%`20*{Gq!pVr3JqmY~D;PVqdt%H#L_7|Ik)hB1jRv54~_^{04C>GM9vkq6B zYCh54vf11D zsFVk-9vMxD9q26AN2@1=xI}UKbfLh1=TG9FIG7; zxCWxs8Dkw9$z?k>io{ATH!~V|UMh_J1rcvyt@S^G4Y>D6&Rd?IFX0lt#!ZUSoY2kN z`o@TlPQ^W%MdP=~Y2sln^f6=_PQD|f-jruD*-j7MzuZPA&+RfLB}`pT{q}O~Sp1#y z4@T}Azw#ScF7X?%~ACOS1ljPQ-hQeu3_x zuQGyieVXTzD6UM?Em}eP2bLt0bbPT#RBEJ8@^z?g8=j0x-22QMG!Mj5h_$ z89khE(bq?!uaDDohkrsjYtPo_`!spnH|O==tsc@bynUDs-8uZ7t0JC-jJxT;REgTQ zFt~n^?46xgJ4bROxw{1YF^7?d*0_uEXEtq5CU*@FR}ZnRgUP<3-a(VKZ+?YY-_w5p DP{RDO literal 2163 zcmaJ@eN0nV6hE&mSg^ro(?J8ZUh1Qk58Fy`R7c#S?PhtyCzha?Y_kgVfg)`RHJUV` z1aYvCv1G=$#hCs#P_qw>i!)|}W$`a!7?Eu;Mw}thu?37n$0qdc+*bi-vXz|o?)kju z{?57Q0r3C7G{3i{{jg%QS;imV3q_RkdN;oc#{hf}VE6zq*QzJgAVyQ%s>F+&O3?)@ zDP7tW)#;jnf!tu$vWJUGOKp&@WgtV+34BQ9<~Q@eicyD4yC6pQ4fq}yw{amLHV1H4 z2iQtNP+|*#(;9-Z%2~*bXu^z-cQT3H$mK=SmN?b{xve_GbzrI|-!|3{h*7tmc(r&2 ziMUzfakF{{dvv`Ro zVPBC{PlAi)*zGATqrQ$zhg$JkjW(-OUfKGUHLJF+=k_ZeJO10l(7ocZY+p<5#Xa&P z-vidkRS8322m;*kwaI@XJw7yD(qr*jGPY|LjDlT$Ea}3(R?q0P@|5_l7)8mP z1Tg3<0uAs4w(y`K6$n%HrbT? z$uTi{((m0BZfe8IAvSZ^buNtj)K*1Wz##NWph{Y6gkmrUfhkh5GvkgjQW9yA?vC^f z>2LAcqOfmZC|VYSiiw{PJCn5n*0_1r#dOdv(z}@G5n%cSz*r}#CCRBD_~QM8n%eH* zZQ%lty~9<*-niZ_FIJ5VcS+j?m+q1TOvD*ubR3()!s7mD*y3We_xsYj01I$=q#^tA zca3_|x3LNciQ$cfgxy^XDvlz2=E`3b!A4>!2Ey9qq|k*Cy-E(=>|)?1M#QiAp7p$9 zefA}5S+RC1)=so8Sh5!E@-s<;yQp!sfDx_El2kWr#cn{n)F>MxxTm#(W+cQVl@&-U zus`-%N`NIaw~JqnGywCN1-s8y2;9})Mqmr3FX|54b@z z^cGRXf8IxZLHrgAE)s3e>T3E-+i}+3= zVV@+AZj3=38zL3^qDA3S$WpA#<7kr*K!W7x!~#8?f?!q-4;*T)Dw=yQX$nv?N-;|H zV)8c0NYq()dXlA>vXf>_(HI{Bj-Ey?qmmE1uoubN3&3fCo>>CfguQE{Izp}S7Ae-* z&#jvk>jEvHl?w4w2SH}BCaRzp>%h|;Xha3gOro(MmYChoM4PB1n2}{UqvZGDsp=V% zQNBm-efZnJy+f*&%1CJ9x_=NrBaIN_zVZm zpBv%Xz?(u5cG^>Xs)CP%^N7u~`*UEC4D@tCdzc*?NYq*Rk4JanJur`lwU)PVDv=*X z#nUzYR~I_xgTK3Z{8B&-PT?K1zy@y7n8E2lLW%te&JUe$*cpRW2}htGW#*vn6*{HN z_|$^>MZL2)RbQM{n!w;2(_qaPz!W$~^OG|3V|ZWJBL9K1VsUkXde9k4JyvF2K94$( zo5NH1Y!stCey^va6~K|nQH;uqBrHhUg|iTLrx^W1){(NthQJQJ8x=2~sX zfevhA^jex`x!ZJp?0j}6unmountEN = 0; // Don't unmount so we boot from this drive + c->mountEN = 0; // No need to mount later since we are boot disk + c->ramEN = a; // A enables RAM disk + c->dbgEN = 0; + c->cdrEN = 0; } } // Decode PRAM settings -static void RDDecodePRAMSettings(Ptr inhibitEN, Ptr unmountEN, Ptr mountEN, Ptr ramEN, Ptr dbgEN, Ptr cdrEN) { +static OSErr RDDecodePRAMSettings(RDiskStorage_t *c) { // Read PRAM char legacy_startup, legacy_ram; RDReadXPRAM(1, 4, &legacy_startup); @@ -40,29 +40,27 @@ static void RDDecodePRAMSettings(Ptr inhibitEN, Ptr unmountEN, Ptr mountEN, Ptr // Decode settings based on PRAM values: // unmount (don't boot), mount (after boot), RAM disk if (legacy_startup & 0x80) { - *inhibitEN = 1; + return -1; } else if (legacy_startup & 0x01) { // Boot from ROM disk - *inhibitEN = 0; // Don't inhibit - *unmountEN = 0; // Don't unmount so we boot from this drive - *mountEN = 0; // No need to mount later since we are boot disk - *ramEN = legacy_ram & 0x01; // Allocate RAM disk if bit 0 == 1 - *dbgEN = legacy_startup & 0x04; // MacsBug enabled if bit 2 == 1 - *cdrEN = legacy_startup & 0x08; // CD-ROM enabled if bit 3 == 1 - } else if (!(legacy_startup & 0x02)) { // Mount ROM diskk - *inhibitEN = 0; // Don't inhibit - *unmountEN = 1; // Unmount to not boot from our disk - *mountEN = 1; // Mount in accRun - *ramEN = legacy_ram & 0x01; // Allocate RAM disk if bit 0 == 1 - *dbgEN = 1; // CD-ROM ext. always enabled in mount mode - *cdrEN = 1; // MacsBug always enabled in mount mode + c->unmountEN = 0; // Don't unmount so we boot from this drive + c->mountEN = 0; // No need to mount later since we are boot disk + c->ramEN = legacy_ram & 0x01; // Allocate RAM disk if bit 0 == 1 + c->dbgEN = legacy_startup & 0x04; // MacsBug enabled if bit 2 == 1 + c->cdrEN = legacy_startup & 0x08; // CD-ROM enabled if bit 3 == 1 + } else if (!(legacy_startup & 0x02)) { // Mount ROM disk + c->unmountEN = 1; // Unmount to not boot from our disk + c->mountEN = 1; // Mount in accRun + c->ramEN = legacy_ram & 0x01; // Allocate RAM disk if bit 0 == 1 + c->dbgEN = 1; // CD-ROM ext. always enabled in mount mode + c->cdrEN = 1; // MacsBug always enabled in mount mode } else { - *inhibitEN = 0; // Don't inhibit - *unmountEN = 1; // Unmount - *mountEN = 0; // Don't mount again - *ramEN = 0; // Don't allocate RAM disk - *dbgEN = 1; // CD-ROM ext. always enabled in unmount mode - *cdrEN = 1; // MacsBug always enabled in unmount mode + c->unmountEN = 1; // Unmount + c->mountEN = 0; // Don't mount again + c->ramEN = 0; // Don't allocate RAM disk + c->dbgEN = 1; // CD-ROM ext. always enabled in unmount mode + c->cdrEN = 1; // MacsBug always enabled in unmount mode } + return noErr; } // Switch to 32-bit mode and copy @@ -104,34 +102,45 @@ static int RDFindDrvNum() { return drvNum; } +#pragma parameter __D0 RDClose(__A0, __A1) +OSErr RDClose(IOParamPtr p, DCtlPtr d) { + // If dCtlStorage not null, dispose of it + if (!d->dCtlStorage) { return noErr; } + HUnlock(d->dCtlStorage); + DisposeHandle(d->dCtlStorage); + d->dCtlStorage = NULL; + return noErr; +} + #pragma parameter __D0 RDOpen(__A0, __A1) OSErr RDOpen(IOParamPtr p, DCtlPtr d) { int drvNum; RDiskStorage_t *c; - char inhibitEN, unmountEN, mountEN, ramEN, dbgEN, cdrEN; // Do nothing if already opened if (d->dCtlStorage) { return noErr; } - // Do nothing if inhibited - RDDecodePRAMSettings(&inhibitEN, &unmountEN, &mountEN, &ramEN, &dbgEN, &cdrEN); - if (inhibitEN) { return openErr; } - - // Iff mount enabled, enable accRun to post disk inserted event later - if (mountEN) { d->dCtlFlags |= dNeedTimeMask; } - else { d->dCtlFlags &= ~dNeedTimeMask; } - // Allocate storage struct d->dCtlStorage = NewHandleSysClear(sizeof(RDiskStorage_t)); if (!d->dCtlStorage) { return openErr; } - // Set accRun delay - d->dCtlDelay = 150; // (150 ticks is 2.5 sec.) - // Lock our storage struct and get master pointer HLock(d->dCtlStorage); c = *(RDiskStorage_t**)d->dCtlStorage; + // Do nothing if inhibited + if (RDDecodePRAMSettings(c) != noErr) { + RDClose(p, d); + return openErr; + } + + // Iff mount enabled, enable accRun to post disk inserted event later + if (c->mountEN) { d->dCtlFlags |= dNeedTimeMask; } + else { d->dCtlFlags &= ~dNeedTimeMask; } + + // Set accRun delay + d->dCtlDelay = 150; // (150 ticks is 2.5 sec.) + // Find first available drive number drvNum = RDFindDrvNum(); @@ -164,17 +173,29 @@ OSErr RDOpen(IOParamPtr p, DCtlPtr d) { return noErr; } +static void RDPatchRAMDisk(char enable, Ptr ram, Ptr rom, + unsigned long pos, unsigned long size, Ptr patch) { + if (pos < size) { + if (enable) { + void (*poke)(Ptr, char) = S24; + poke(ram + pos, *patch); + } else { + char (*peek)(Ptr) = G24; + *patch = peek(rom + pos); + } + } +} + // Init is called at beginning of first prime (read/write) call static void RDBootInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) { - char inhibitEN, unmountEN, mountEN, ramEN, dbgEN, cdrEN; // Mark init done c->initialized = 1; + // Decode key settings - RDDecodePRAMSettings(&inhibitEN, &unmountEN, &mountEN, &ramEN, &dbgEN, &cdrEN); - RDDecodeKeySettings(&unmountEN, &mountEN, &ramEN, &dbgEN, &cdrEN); + RDDecodeKeySettings(c); // If RAM disk enabled, try to allocate RAM disk buffer if not already - if (ramEN & !c->ramdisk) { + if (c->ramEN) { if (*MMU32bit) { // 32-bit mode unsigned long minBufPtr, newBufPtr; // Compute if there is enough high memory @@ -185,53 +206,35 @@ static void RDBootInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) { *BufPtr = (Ptr)newBufPtr; // Set RAM disk buffer pointer. c->ramdisk = *BufPtr; - // Copy ROM disk image to RAM disk - BlockMove(RDiskBuf, c->ramdisk, RDiskSize); - // Clearing write protect marks RAM disk enabled - c->status.writeProt = 0; } } else { // 24-bit mode // Put RAM disk just past 8MB c->ramdisk = (Ptr)(8 * 1024 * 1024); - // Copy ROM disk image to RAM disk //FIXME: what if we don't have enough RAM? // Will this wrap around and overwrite low memory? // That's not the worst, since the system would just crash, // but it would be better to switch to read-only status - copy24(RDiskBuf, c->ramdisk, RDiskSize); - // Clearing write protect marks RAM disk enableds - c->status.writeProt = 0; } } - // Patch - if (RDiskDBGDisPos < RDiskSize) { - if (c->ramdisk && !dbgEN) { - poke24(c->ramdisk + RDiskDBGDisPos, c->dbgDisByte); - } else if (dbgEN) { - peek24(RDiskBuf + RDiskDBGDisPos, c->dbgDisByte); - } - } - if (RDiskCDRDisPos < RDiskSize) { - if (c->ramdisk && !cdrEN) { - poke24(c->ramdisk + RDiskCDRDisPos, c->cdrDisByte); - } else if (cdrEN) { - peek24(RDiskBuf + RDiskCDRDisPos, c->cdrDisByte); - } + if (c->ramdisk) { + // Copy ROM disk image to RAM disk + copy24(RDiskBuf, c->ramdisk, RDiskSize); + // Clearing write protect marks RAM disk enabled + c->status.writeProt = 0; + // Patch debug + RDPatchRAMDisk(!c->dbgEN, c->ramdisk, RDiskBuf, + RDiskDBGDisPos, RDiskSize, &c->dbgDisByte); + // Patch CD + RDPatchRAMDisk(!c->cdrEN, c->ramdisk, RDiskBuf, + RDiskCDRDisPos, RDiskSize, &c->cdrDisByte); } // Unmount if not booting from ROM disk - if (unmountEN) { c->status.diskInPlace = 0; } + if (c->unmountEN) { c->status.diskInPlace = 0; } - // Iff mount enabled, enable accRun to post disk inserted event later - if (mountEN) { d->dCtlFlags |= dNeedTimeMask; } - else { d->dCtlFlags &= ~dNeedTimeMask; } -} - -static void RDFinderInit(CntrlParamPtr p, DCtlPtr d, RDiskStorage_t *c) { - // Mark init done - c->initialized = 1; - c->status.diskInPlace = 8; // 8 is nonejectable disk + // Iff mount disabled, disable accRun + if (!c->mountEN) { d->dCtlFlags &= ~dNeedTimeMask; } } #pragma parameter __D0 RDPrime(__A0, __A1) @@ -308,14 +311,12 @@ OSErr RDCtl(CntrlParamPtr p, DCtlPtr d) { case kVerify: if (!c->status.diskInPlace) { return controlErr; } return noErr; - case kEject: - // "Reinsert" disk if ejected illegally - if (c->status.diskInPlace) { - PostEvent(diskEvt, c->status.dQDrive); - } - return controlErr; // Eject not allowed so return error case accRun: - if (!c->initialized) { RDFinderInit(p, d, c); } + if (!c->initialized) { + // Mark init done + c->initialized = 1; + c->status.diskInPlace = 8; // 8 is nonejectable disk + } PostEvent(diskEvt, c->status.dQDrive); // Post disk inserted event d->dCtlFlags &= ~dNeedTimeMask; // Disable accRun return noErr; @@ -333,23 +334,24 @@ OSErr RDCtl(CntrlParamPtr p, DCtlPtr d) { if (c->status.writeProt) { *(long*)p->csParam = 0x00000411; } else { *(long*)p->csParam = 0x00000410; } return noErr; - case 2351: // Post-boot - d->dCtlFlags |= dNeedTimeMask; // Enable accRun case 24: // Return SCSI partition size *(long*)p->csParam = RDiskSize / 512; - case killCode: return noErr; + case killCode: return noErr; + case kEject: + // "Reinsert" disk if ejected illegally + if (c->status.diskInPlace) { + PostEvent(diskEvt, c->status.dQDrive); + } + return controlErr; // Eject not allowed so return error default: return controlErr; } } #pragma parameter __D0 RDStat(__A0, __A1) OSErr RDStat(CntrlParamPtr p, DCtlPtr d) { - //RDiskStorage_t *c; // Fail if dCtlStorage null if (!d->dCtlStorage) { return notOpenErr; } - // Dereference dCtlStorage to get pointer to our context - //c = *(RDiskStorage_t**)d->dCtlStorage; // Handle status request based on csCode switch (p->csCode) { case kDriveStatus: @@ -358,14 +360,3 @@ OSErr RDStat(CntrlParamPtr p, DCtlPtr d) { default: return statusErr; } } - -#pragma parameter __D0 RDClose(__A0, __A1) -OSErr RDClose(IOParamPtr p, DCtlPtr d) { - // If dCtlStorage not null, dispose of it - if (!d->dCtlStorage) { return noErr; } - //RDiskStorage_t *c = *(RDiskStorage_t**)d->dCtlStorage; - HUnlock(d->dCtlStorage); - DisposeHandle(d->dCtlStorage); - d->dCtlStorage = NULL; - return noErr; -} diff --git a/rdisk.h b/rdisk.h index 4941404..4e07de5 100644 --- a/rdisk.h +++ b/rdisk.h @@ -26,10 +26,20 @@ static inline char IsRPressed() { return *((volatile char*)0x175) & 0x80; } #define RDISK_ICON_SIZE (285) typedef struct RDiskStorage_s { DrvSts2 status; + char initialized; + + char unmountEN; + char mountEN; + char ramEN; + char dbgEN; + char cdrEN; + Ptr ramdisk; + char dbgDisByte; char cdrDisByte; + #ifdef RDISK_COMPRESS_ICON_ENABLE char icon[RDISK_ICON_SIZE+8]; #endif @@ -38,12 +48,6 @@ typedef struct RDiskStorage_s { typedef void (*RDiskCopy_t)(Ptr, Ptr, unsigned long); #define copy24(s, d, b) { RDiskCopy_t f = C24; f(s, d, b); } -typedef char (*RDiskPeek_t)(Ptr); -#define peek24(a, d) { RDiskPeek_t f = G24; d = f(a); } - -typedef void (*RDiskPoke_t)(Ptr, char); -#define poke24(a, d) { RDiskPoke_t f = S24; f(a, d); } - #define PackBits_Repeat(count) (-1 * (count - 1)) #define PackBits_Literal(count) (count - 1)