Improve reversal of FindStartupDevice

Also some lagging AmphibianDNA changes
This commit is contained in:
Elliot Nunn 2019-08-20 10:43:29 +08:00
parent 75a40a747e
commit 0ecbd4a1a1
2 changed files with 311 additions and 365 deletions

View File

@ -4,62 +4,61 @@ Subject: Amphibian DNA
---
diff --git a/AmphibianDNA/ATAMgr.lib b/AmphibianDNA/ATAMgr.lib
new file mode 100644
index 0000000000000000000000000000000000000000..b8bb6cd4ade0809234492b3f276738e06e58b39c
index 0000000000000000000000000000000000000000..a2b5f88d7f6f0b8d287fb9a17f30b94a70c1c6fc
GIT binary patch
literal 7782
zcmd5>eQXow8Gr1C;3gg`AFWcL-K&5yhbFcYLU5P^Is49WT*r<ahe0Qm7<_h2%-M1r
znpIK7Bt}tHDU?e4V`IhTj}{1;3aTblp^8ZxDzv0PDPN_is=6`|N?U{&LRH>9?|XLq
z5hC0UEP~E=#?Rfo_j`WN@A){52DFa>*m^wf4$t$FNE|+IC+QUI#M@2SVSPQ3-0lvq
zpZr$nCQivG{elqkyJcdF*<44KN#@3;T2cm32_Kbp1|kaJ)g~4_j6Zf?wsppWgHd?}
z5&S}DyKfy|Np?YE%Th~iz9|_<1`<g*NP>ehNyb)?&GLq1EJ4Ci{2o{z+bq|SPOnIU
zkp%t_VP72`ZYlRW{@mUpb$1g(AQ}lPbtD>CFGuT$&)-dweX>I0fnYGAgliFrxo}*c
zyEd4y9gf3CGXeiBIvupJ1J7yzlfK#rI--D{^nu0D2U=nUp!Db;s-ahF@DqKw{Llf=
zhi(zQL7_i-Ui1tix?=9diL3;3o-7eiNJL4-h$0Uq$tI3e9kCE)Fd7{o$wXw+COL@L
zxb!d_v?w2T?xFUM)snxXQ{oP4VvG@61mS)TD)7cnL4OXMs6>D=_eJbaq_N+K*e6u%
z>6r5>RFNU=-wl1*#fY=pbpYDJ4ibenS09vxtu=j6K`O)L+J5?9(8r;^jb5@T^a^g@
zFsoLyqTjX-gFycyjMK4H8MB6d(1G4PUIp}6j<+(4Dau*R`OYGbfyPxTZ>8hOX6Ej)
zad!#LO%Kam8NT@Bfmn1i(l|Dl4975xNJ0+D30c`753FED`1f3kofwvhLX*9A1#xxz
zFho5p5=3crhh6H<ST!{>s}@Id+A23zcx-;06Pq?Oi_MSI{CFSvaU{);>&~k)tLiX1
zjYf>lG*4_&-0FrQSUa+B@XBuOHWsVMogvPh1n16PC=d7bzG%{$$~_+d)U=VxE^pX{
zJb9d6Z*|Zc%&H!_MaS!h-CjYYH{%-Q*6jq$c@E~+3-m5BY@%nxsnF}pwz?0>J#VZq
z(ur5V@9iyPS7rDAaCh*}<{8Meujo0(G<>!v;gebUpupo*PywIdGrh%+j^mLNqu-H5
z1zlZ?f;2QvVI^EHEh~lPoRzp^A|hDstMWfrL|8VP3n#NY!CNw(oJ{ki3VA|Qo-kjS
zkR@?2fi1j$BYGkUWqBISmR$_OQ#HEO__nC{wy5}u4^E`T{1mC;JC=iQ3&(dXjjs#w
z^=0tQ=yVO!>B?{&;%yaut9`4CP_Zv%ScmafMck=clYZaMU;ClUHwte2z67^LT!-)E
z=&&kp0zPOl9w`uF)M2G0jPLMt_|*VqDlACcA2z%6NT{$VF@3e!q(Xf~R5Kck_%fU2
z=0Y2L!=#PH!fl!@XycZIY%#~<TQFk`&W2AbvRJSP{4~vwab(DCl_7MS^QuOdQD~wM
zS$VF0?U`ZF(jEBu2Hj;d(!Zj{?m=aJ3-^D*?HxQm#8vjS{XeYyRrdTazz(x@|HgM6
z^-j9YY~8#2T?aAJZ3mBr=dB%aMxmF*`YJ1E_HSI{?JbW(Z5#9ncL8dhkYei0vq2lr
z2CR~3cCnmbh6A`>E$qcipu<csOlfW|DAaquH@?gS>}qSg?(rwK&{r6XxrUG7b-v;X
zbt)S{2&}60r|{RE-0mbEy@pC;%R*Qb>kEV)uTWwgvWZ-WaL07sZhpu*e>#gI-jcEG
zbed%awR)39bH*^FS(q^QRyqGcH2>ay>UGlQ+7T)@YaDI86=sc3cwbPyiNif>b@o`r
zsLqr;poNmC&SXh|Tw=O|JC47@{z&MKomYQ$F;o3{yCje3!{)+Ae#6Sffk;p$p-5ED
zh>(RBg7%h7A=obYMZ4cEdHlY$)10!5Ym%L7600yLAwl0|F1u8{Y*Xg49SSy=(Wscf
zwlU#I#5S>7b}+F)p5`76>T@(^p2Hal_sIjv9wn0W3~pL4CkoEvk$xu2Q5NaQ(KBg|
z-asY1g^`Z^B)y4BSoQXN)U6-aju;PX-y!Q#3$Tv7&2%IIjbPHm%_clDY4D$w(!V{!
zepw0L@1Tn5-ehjI9&Ff`s$WNMhF@kDtyrIi<3yo1G0z(5&3!xBv7w8&%|?1V)w&Ww
zzO^H(@R(WSd3VA#w78S1WuG-&n4=ppcN=S7U+#yp<x$kZYWysN#rRncHQaUyYT(PT
zFtc9NWbAlT3owUoq2Ds~(;3kp?pPp*Ct_~+tRhPRRr@|e7{)kWXZ5+>R)0N<zi#Ks
zcp8shKsy4TKRvDcxaH?)X+g^>I5&HWqqxO6w0M@O>?BuM_~ggA%_kV$Br*^UC_#c#
zgV;-Tq$$6g#w(1MB+A>p9>I@Mqb`@lx!B0#T(mUbFV53XaPNW1bS=92@OdK=f`~o|
z=V#@wg|Yg4n$;m>wSveZt0xXKR(FikqqcU;vM&4C>I>}O+w*IjS(f*VV8>;RzZBmP
z*O&k~bQrfIPG#aS&(tp<o1RZCFwbOcnmEANRKXAkD1oq?U=u56{$dI|c<-qSIy!Hx
zf}J{?D2W#*$%aEX?nAX^7i|xwQ|I%%xo{z?I(Q%Ep9^XKEJpv-ss2IeaFSAkGc1Dw
zx~jjp7KZK;?1=Je?`*%x7Mvd)(_mXrhA?bPT!&!k!LhZg@gd$fKK{Rc^I{I#c8>PN
zG}=!g+RtXtu11vOI34tDaXlTno9=CL@Wn+Jh3{1EYW9?byZI9ej<DL{NYaDrI17fd
zEP1o7s5z6!GqhyOWa!*r%dY~YhD;TZwXyR`f!XyaiDJfDs3O=bi4N8**|6wX+}zmQ
zY{n{JeSpuyCJP&`nwJVEJQ$UiRGw%mbUMu(l_zwU^Xe~ksG4^SM*_(JQ^ZspMz0NF
zKhX<t48QM+&m6sG#P1=1J;O6hdX~GFfbWkcJjP7?0ooj7=b6g6btSWQ8R<c+7D#Bd
z>(!8tcUp(A$I{Zn`1vONr_D(Jh27N&?5>XC{zKfx@c0r=NK;sse2rEb`W^o7_qg4{
z?K++@&byyO`+x9zhc)aDp>o%&VW0}XuWt0(8n0_>h^?twU1gV-l=-&CweM|R544%7
z`V-&N?JO3s2!x=#IkG`sm;8NPRx|$v#N-Ok))(=}f=c2jAYm~PGj$p;uO#ups3mxW
zb}V!;TT2eEMh>hWGo)5uhfI0LaqomYc~()O(9p!V=`c5?8~OYsnOT585r`8(a5Nx8
zXTujfv#Kj*Ipd48idj*`M3tQ^XXN$lI>x<~sA{%$S9_=evpHrE)|a=ovuQf^zif(w
zlQr(e^LUk~(2Kn0N<&kO2dCCtCC(_0r97kHj&)WJ;lX5U_7duz6Sm9QjDojhzPOzB
zMG}26tonlDq+5Lx!Y6F~>U*eO_C91@Si~vDJdCrwpbuNxZ@@xVKTb4^@v@_%Fe_Z+
z8pX*5X=U+$y)_E6=#Bb*HrY;3Gx~9Iy~FQi@3BJf@p|CvDfx;)QjG5&f%&sTeJg@H
z^d5ihnF)aDBk*UvLS*&vT=+7_d+K|NFCUQiv<2SN{6z0HO=dd=Nxt{+8;OMqUY}~=
Ee}5k)Q~&?~
literal 7802
zcmd5>eQZ<L6+d=Ea1)R5)h-3vT?LdSG_jo!g2Nohv)^+Z*RdnVVbDn>20y=;m}kpz
zXjVlPlNd#)QYe%5$Ht1wA1x3x6;w^ALKTxXRA@<oQoc%2Rdr<`l(q;lgsR+~d!HSD
z1cci`grnzoUwqzu_nq@Qzw>c*I?z7>VDI*N+PyDGB60eC9i&5W5MLKz!@4>mc|7gD
z0Qrs3MO>0!`WYeQw@bxli=~z<l`IX7HKYWf96l`R2u4)E*~S+>iVu4(J33;afvCKk
z2mzs^&A*nfB)cH7d5N_qUzGGGgNdXZBB249BxB3TCV71_mLN(LuY>Dio8(&3;S)(H
zlE5D#?9$opk#eu`=eBOCtBX_zqY*`|CDGtIIa*8nfi9Bll~ocChC&flsX<N5f#b&9
zwZXJ)a2!6I4*0Pe4A9C3-c<l*W2FfUL<J-11#5LL=!p%0(xbnxgdTl$fEbn1LkGYZ
zzD11HD*eIxl6L^LE9Op4WHprYW{IFmB5E>5RCzE-HgZkX5-U*$qS1bmOhh(rltVbj
zrAJ|)h52gd7HVr>B?a0$ByONah8VF~5FTWp0&Dyj?azi2<*1;{b5Zvv(z@S(x=(1j
zr=zZ`P(cRuf3NP<FG4+g+y|glagr#sx_hBSu~qd#87Wsv^?mfeV2nduE4^e_=@mS_
zW>PIEMZako0)hTV7^9=95+)6OU;v|MtODq<9BXA3Q<Slq@{L8F0G)fPtd;gByM>#}
z&dnt>H9jhHW$@yc`(x2f2;<m5Qi-7(k%SzU6SBHq?qAM?@bi4LgH$gSg+@osa^mjt
zql<c(Cy3Ijc8AoJk!oyWQq9h$v{bIIaNqnW$2aX3=9?d-@$nww<477G*IieqSJa|+
znoQ`OX`I-lxXlBDux5DQz?I$lt;|;uJA)iM367n;P^$Fyyks_-OTF&{RJD@wPM_jN
zoIFXdw>aqyCRK;nqGNSK9-ko6n{gdt>vjTWKM(Wj1bP<{Hr_q#Qt5RjTiFYx-Zz$;
z==iG;@b#3iS=sYH*d6+_Wf~&wOL~qW4d3l4_;^OXQsBu7D1(pjo!;c5<2Z7m_dBy%
zK~opQAoUHCPzjf(7L~#>j!HZ+5)rHqWci;;A}pHCfs<LB;3FAMPNs2EfjA)=PM9ss
zh>|#%!LIDzfR;!?NghYDWf!C2$s9e^`fb+q+pOtVe0U@+=7&g4zoR+&ZRYwNP3zZ<
z`t@h@o8jpy#?$3WE$Z7Q`d9f^nxJf7s(LN@Uj^}`YRtxcJAV~`PX7pa@Om*G3po$p
z$>Cv*-UNKnVk}ZX#K^;mDM5U@w>_XaC}Uwk;`XpRq{o7VMTzmN-7XdKD{3{v!Khy*
zv&@o~@x+25cE|}af!S3eBWJa8xh5;hc_bm5&~YCZEa-=`;FGefKA0DNl19lGqU5%Q
z61vrORcFYsG%<#4JYH{qb_n!z2Y$anciBz!ugJ4|kX_%z^Pli|8^?z@({A7Y{fb{^
z?^ghJSZw<@yyL8M(XAHS-reswiHUAKcvP9YX4n;l9_H^WZJ^t~VYRQPG!8Yb&@0>p
zsBuAxF*J_|tvn*IY@*4{;(`SZ;Cl727o&jzqrniRx$&To^8>#4QZumGR{K0-GdI&$
z8In1VkK#OEqIP}(r)Cx^SL6IsD6x~vp2X31WF&i5jYXlqfbemKDdr=)$oU9QjPD(m
zN6h!9vwVb)WJo)mMp{A6-e}dGsUFlVNLYF*T>l`te{VbWI%#$92$x!P&eonXi_R~+
zC#YY?;hs4=d#z&FXHq=SmrM!!6yk|-kfUC+fz$C=aFBy%f(|j03HmxEujt1@!%u$A
zQpo;DNG9P(RGuIjo)kKoGf82a6c8N&kK_&b*WBlprJS1_oSRs-Igv4;{W8-o(WY(8
zOxvzvp&5;8B<D=THnO~SAhBM)&ok<^_h`txhbyA=%Kgc1HInoWY+NTN3hv_`e`d1B
zBUaC(v3dhp@fLbK)|d1qvSP(s^N_=SSTk%otbd!VP0h!=@;2j?1T=tI7q^&kWY*!I
zjncn8%YIn_zHgy|ao|L(wH>VAm#SM!Zz``ai5ARPl{iu9O^mxHdUM}SHm>d@9*c?I
zPPMFnuz$_)N*pt3yzh=;M~OSB8une)i7~qYW4Wp7^<@DlSr$c3ti<mUScKoDP{m~z
zBOks33o`3Pe#QzoH6LU8X8H|dLW2oy!qAF0Vx0K2EDHmT13yJIjN)%|;H)v%;@Yog
z@z-sfAy4DzMU*4(*)#VwA(#9NC9Nn~0q15-G8UIOhZ4`R411Cr<@>zdFPJ<e(jN_~
zA%dNR*vqw~F+at|S;nTs<J){*A%NbK%{jyd?(d?t=|TRUeuH~AQSMi^YcHSIHX*3h
zr{MgI{IxI^KA%Q*7?G`_b`ja*hZ(Zl$LLXe8%ABX<80*x_V?DjDpwZi-NRUg+2Sw9
z*T;2cKpY*$<A_TgKg=Wdi-@QfQu8g-8KTAyFhrFx4FuJoA}3fE%ay;FqFB4$l5a$;
z-r>ZQSaE`&urbFt8&525iuQ+7z4IR59Jr8;lK22-p9^XGEJFL#YW6|ZVRxkp`&!j1
z7%KkaUJ$-Zuu96y$FnskTX4R2+`EhQ7}TJchH%|FG~J31^pF3q2ECZ0Z3ox(#k97c
zMr}Wr(RL+jIgTAe|7Q0y;k)U2Cr7`y=%VyH8N0eYQ-a<6t_9byR`p2I!>d9I8nrBl
zv!kfqlgJ~rWY0wETxZMA2Bi8-HjtHZ@Qi`Ub*qVDT3yH@SU`zRRzTS?`B>D{(9~qX
zY+zlG_sAv^9L}1T3cEh&m6tS}=*kQR-E0jfbeHSu&ke|$cdCyBlR?IasW^;W8^rpe
z2jCc9?}|?!xn{!aFu<OnX=Wpf-;2Tj2Q!W_8o!S+2ibk*QZ8N2q}?WZ5Hki6Ugdr*
z?B|u&A*{Ld^e}$^k^a+eqW{8b>jYL?$MF0C9-}zEgk94V<|bdEl#YIj|NRb+TX<Z@
zJH~i5bZGzg0pF00Jt17`eoX<Y^5+^xuC4aDw}jc6Dz#O1`bdd?OI-i%mUTdz7^~0x
zj&5VVfXN_)<V}(F^4jF@;<6U~FQ87Y@Q8g8M^+ZG3qV+m$4u@J%$*W{VbBu1LK`N$
z$n=tvvyl_?$PB2pEs{z59`_E&6L%Hm3iXW)n@&q(y135|l9>er62UkT1ZO=WbQXNh
zBdfMz7BfCivzQH8Ow`cHVn$vKZ(!J4fvje4bGL=dFq&foVRd>-8|$!RJ<K{g*lpuh
zJdd+HjaIbhsHPYTPR_ZexXN`d;SmK-ELuB-hZC*Y#?(E#ZkMwW1s}<5aXD>^B-&y~
zvjxTOx3)XNyKa5j-c%3UBblp+*wvVeezq5kinZ+qEO7T>hr<*vIXVI}lq&ZKb~;E4
z^Z)BDQJ6t*)b+7$ce=aLhu!QQ0Uz7j3ct(qfv+aTE2ffSZ1))C15RzH1W#x^z7?8r
yfctykPuf;w`SBe1BFB2#-o+OW$$I(%>*;=^^%^Il9aBlZ_3(<s!UbEZdiWnUoHeHa
literal 0
HcmV?d00001
@ -4473,105 +4472,92 @@ new file mode 100644
\ No newline at end of file
diff --git a/AmphibianDNA/OpenFirmwareX.c.o b/AmphibianDNA/OpenFirmwareX.c.o
new file mode 100644
index 0000000000000000000000000000000000000000..50a4571d1e42221829a24d0b29a6afe1544f3f6a
index 0000000000000000000000000000000000000000..4a4c5d7364c7b0691fceed72ca6da2e79a1cf9c1
GIT binary patch
literal 14280
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
literal 11510
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
literal 0
HcmV?d00001

View File

@ -28929,145 +28929,114 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
MaxTimeOut EQU 31 ; maximum number of seconds allowed as timeout
PollDelay EQU 15 ; delay (in ticks) between poll drive SCSILoads
@@ -211,7 +211,7 @@ Locals RECORD {link},INCR
frameSize equ *
flashTime ds.l 1 ; time to flash icon
-startTicks ds.l 1 ; Ticks when we first get into FindStartupDevice
+startTicks ds.l 1 ; Ticks when we first get into FindStartupDevice ; 8 lower
ckPartition ds.b 1 ; flag = we need to check to see if the partition #s match
noDefaultDrive ds.b 1 ; flag = we have no default drive
@@ -220,7 +220,7 @@ forcedBoot ds.b 1 ; flag = boot has been forced to a non-default device
csPB ds CntrlParam ; pb for Control and Status
-pmCommandPB ds pmCommandRec ; pb for sending SleepReq to power manager
+pmCommandPB ds pmCommandRec ; pb for sending SleepReq to power manager ; 8 lower
startPRAM ;(ds.l 1)
lsdExtDevID ds.b 1 ; slot device ExtDevID (for SCSI target/lun)
@@ -229,6 +229,8 @@ lsdRefNum ;(ds.w 1) ; SCSI device refnum
@@ -229,6 +229,11 @@ lsdRefNum ;(ds.w 1) ; SCSI device refnum
lsdSlotNum ds.b 1 ; slot number
lsdSRsrcID ds.b 1 ; sRsrc ID (for native SCSI, bus #; for plug-in, sRsrc ID)
+ ds.b 8
+myword8 ds.w 1
+mybyte ds.b 1
+startMgrBootDev ds.w 1
+myword2 ds.w 1
+
link ds.l 1 ; old A4 = (A4)
ENDR
@@ -245,6 +247,7 @@ A4_locals EQU A4
A5_bootGlobs EQU A5
A6_bootBlocks EQU A6
@@ -269,6 +274,9 @@ FindStartupDevice PROC EXPORT
EXPORT EraseMyIcon
+
;________________________________________________________________________________________
;
; Routine: FindStartupDevice
@@ -276,11 +279,19 @@ FindStartupDevice PROC EXPORT
IMPORT GetDefaultStartup ; StartSearch.a
+ IMPORT ATAGiveTime
+ IMPORT INTERC_2750
+ IMPORT PMIDLERELATEDDRIVERCALL
link A4, #frameSize
@@ -276,11 +284,15 @@ FindStartupDevice PROC EXPORT
BSR LoadSlotDrivers ; Default is a slot device, execute boot code
; When booting a Mac OS, execution will continue here
+ MOVEQ.L #0, D7
+ CLR.L D7 ; (CDG5) "default drive timeout" flag
MOVE.L Ticks, startTicks(A4) ; Init the time we got here in case we have PowerMgr
BSR LoadSCSIDrivers ; Load all the drivers we can
BSR WaitForPollDrive ; Wait until the boot drive has warmed up
- BRA.S @FirstEntry ; First time through: keep original goal
+
+ CLR.B -6(A4)
+
+ BSR LoadATADrivers
+
+ BSR OpenLANDiskDriver
+
+ CLR.B mybyte(A4)
+ BSR _LoadATADrivers
+ BSR LoadLANDiskDriver
+ BRA @FirstEntry ; First time through: keep original goal
@NextPass
IF hasPwrControls THEN ; <SM7>
@@ -294,7 +305,7 @@ FindStartupDevice PROC EXPORT
@@ -294,7 +306,7 @@ FindStartupDevice PROC EXPORT
BLS.S @nosleep
@sleepnow
LEA pmCommandPB(A4), A0 ; A0 gets pointer to parameter block
- MOVE.W #SleepReq, pmCommand(A0) ; PMGR command, Go to sleep
+ MOVE.W #PmgrPWRoff, pmCommand(A0)
+ MOVE.W #PmgrPWRoff, pmCommand(A0) ; (CDG5) die instead of sleep
MOVE.W #4, pmLength(A0) ; Four bytes of data to send
LEA pmData(A0), A1
MOVE.L A1, pmSBuffer(A0) ; pointer to send buffer
@@ -307,16 +318,48 @@ FindStartupDevice PROC EXPORT
@@ -307,16 +319,37 @@ FindStartupDevice PROC EXPORT
ENDWITH
ENDIF ; <SM7>
- CMPI.W #FloppyRefNum,D4 ; do we have floppy set as the default?
- BEQ.S @NoChange ; -> yes, keep looking for floppies
- LEA IsItAnything,A3 ; no, from now on, any device will do
-@NoChange
+
+ Move.L D7, D7
+ BNE.B @twenty_six
+ SubA.L A0, A0
+ _InternalWait
+ BNE.B @skip_blah
+ MoveQ.L #$19, D0
+@skip_blah
+ MulU #$3C, D0
+ Add.L -$56(A4), D0
+ Cmp.L (Ticks), D0
+ BCS.B @twenty_six
+ MoveQ.L #$F, D0
+ Add.L (Ticks), D0
+@before_cmp
+ Cmp.L (Ticks), D0
+ BCC.B @before_cmp
+ Bra.B @after_less_stuff
+@twenty_six
+ MoveQ.L #$1, D7
+ Lea.L IsItAnything, A3
+@after_less_stuff
+ IMPORT ATAGiveTime
+ Bsr.L ATAGiveTime
+@after_stuff
+; (CDG5) Apply the PRAM "default drive timeout" to all disks, not just SCSI
+ MOVE.L D7,D7 ; D7 set because timeout already elapsed?
+ BNE.S @TimedOut
+ _GetTimeOut ; Get the PRAM "default drive timeout"
+ BNE.S @UsePramTO ; -> use the returned parameter
+ MOVEQ #DefaultTimeOut,D0 ; -> use default instead
+@UsePramTO MULU #60,D0
+ ADD.L startTicks(A4),D0
+ CMP.L Ticks,D0
+ BLO.S @TimedOut ; If time has elapsed, never check again.
+
+ MOVEQ.L #PollDelay,D0 ; Wait out PollDelay for this cycle.
+ ADD.L Ticks,D0
+@PollDlyLup CMP.L Ticks,D0
+ BHS.S @PollDlyLup
+ BRA.S @NoChange ; Preserve A3 until default drive has timed out
+
+@TimedOut MOVE.L #1,D7 ; Not waiting for default device any more...
LEA IsItAnything,A3 ; no, from now on, any device will do
@NoChange
+ BSR.L ATAGiveTime ; give accRun time to .ATALoad (CDG5)
BSR LoadSCSIDrivers ; load more drivers if we can
+ BSR OpenLANDiskDriver
+ BSR LoadLANDiskDriver
@TryAgain
BSR VisualUpdate ; Update dynamic user feedback
+ IMPORT PMIDLERELATEDDRIVERCALL
+ BSR.L PMIDLERELATEDDRIVERCALL
+ IMPORT INTERC_2750
+ BSR.L INTERC_2750
+
+
+ BSR.L INTERC_2750 ; (CDG5) related to FireWire boot
@FirstEntry
+ BSR DaFuq
+
+ BSR PreWalkAllDrives ; (CDG5) Not sure what side effect this has
BSR FindNextCandidate ; Find the next potential Startup Device.
BEQ.S @NextPass ; Branch if we're at the end of the queue.
@@ -381,6 +424,7 @@ EmbarkOnSearch
@@ -381,6 +414,7 @@ EmbarkOnSearch
SUBQ.W #4,SP ; make room for parameters on the stack
MOVE.L SP,A0 ; and point to them
_GetDefaultStartup ; get info about the default device
+ CLR -4(A4)
+ CLR.W startMgrBootDev(A4) ; (CDG5) we will call StartLib::GetStartupDevice
MOVE.L (SP), startPRAM(A4) ; store for later partition check
MOVE.W (SP)+,D3 ; D3.L = <xx><xx><device-ID><partition>
MOVE.W (SP)+,D4 ; get the driver's refNum/<slot#><sRsrc#>
@@ -413,19 +457,8 @@ EmbarkOnSearch
@@ -413,19 +447,7 @@ EmbarkOnSearch
SUBA.L A2,A2 ; initialize the drive queue pointer
- LEA IsItFloppyOrDefault,A3 ; ASSUME match default or floppy devices.
+ LEA IsItDefault,A3
-
- CASE OBJ
- IMPORT Ck4OnlyLoadFromDefault ; :SCSIMgr4pt3:BootItt.a
- BSR.L Ck4OnlyLoadFromDefault ; supposed to limit our search to default device?
- CASE OFF
- BEQ.S @ck4NoDefault
- LEA IsItDefault, A3 ; match only default device
LEA IsItDefault, A3 ; match only default device
-@ck4NoDefault
- TST.B noDefaultDrive(A4) ; is there a default drive? <MC2>
- BEQ.S @HaveDefault ; -> yes
@ -29076,7 +29045,7 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
MOVE.L Ticks,flashTime(A4) ; let flash time expire immediately.
CLR.W D6 ; clear visual state information.
@@ -453,9 +486,8 @@ EmbarkOnSearch
@@ -453,9 +475,8 @@ EmbarkOnSearch
move.w D4, D1 ; get refNum (maybe)
not.w D1 ; convert refNum to unit number
sub.w #$20, D1 ; convert to SCSI ID
@ -29087,18 +29056,19 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
move.b SCSIPoll, D0
and.b #$F8, D0 ; strip out old internal HD SCSI ID
@@ -569,9 +601,7 @@ LoadSlotDrivers
@@ -569,10 +590,7 @@ LoadSlotDrivers
LoadSCSIDrivers
IF hasAsyncSCSI THEN
- BSR.L ISITT ; check if we're running SCSI 4.3
- TST.B D0 ; are we?
- BEQ.S @UseOldSCSI ; -> no, use the old code to load drivers
-
+ CLR.B forcedBoot(A4)
PEA forcedBoot(A4) ; ptr to flag indicating a forcedBoot
CLR.L -(SP) ; load all drivers
@@ -589,26 +619,99 @@ LoadSCSIDrivers
BSR.L ITTBOOT ; Load Drivers and look for startup disk
@@ -589,27 +607,100 @@ LoadSCSIDrivers
RTS
@UseOldSCSI
ENDIF
@ -29121,104 +29091,104 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
- BSR.L SCSILoad ; try to load driver(s) from disk
- move.l (sp)+,a0 ; restore a0
- move.l (sp)+,d6 ; restore d6 <LW3>pdw
- RTS
+
+
+_LoadATADrivers
+ BTST.B #7,$B23 ; ?ATAExists
+ BEQ @NoATA
+
+
+LoadATADrivers
+ BTst.B #$7, ($B23)
+ BEQ @L3
+ MoveM.L D1-D7/A0-A6, -(A7)
+ Move D4, -$8(A4)
+ Move.L -$C(A4), D5
+ Move.L #$FF, D2
+ Move.L D5, D1
+ AndI #$F800, D1
+ CmpI #$2000, D1
+ BEQ.B @L0
+ AndI.L #$FFFF00FF, D3
+ CmpI #$FFCA, D5
+ BEQ.B @L0
+ Bra.B @L2
+ MOVEM.L D1-D7/A0-A6,-(A7)
+ MOVE.W D4,myword8(A4)
+ MOVE.L startPRAM(A4),D5
+ MOVE.L #$FF,D2
+ MOVE.L D5,D1
+ AND.W #$F800,D1
+ CMP.W #$2000,D1
+ BEQ.S @L0
+ AND.L #$FFFF00FF,D3
+ CMP.W #$FFCA,D5
+ BEQ.S @L0
+ BRA.S @L2
+@L0 _DisableDynWait
+ _GetTimeOut
+ BNE.B @L1
+ MoveQ.L #$19, D0
+@L1 Move.L D0, -(A7)
+ MoveQ.L #$0, D0
+ Move.B -$9(A4), D0
+ LsL #$8, D0
+ Move.B -$C(A4), D0
+ Move.L D0, -(A7)
+ BNE.S @L1
+ MOVE.L #$19,D0
+@L1 MOVE.L D0,-(A7)
+ CLR.L D0
+ MOVE.B lsdSRsrcID(A4),D0
+ LSL #$8,D0
+ MOVE.B lsdExtDevID(A4),D0
+ MOVE.L D0,-(A7)
+ IMPORT ATAMgr_5d9b0
+ BSR.L ATAMgr_5d9b0
+ AddQ #$8, A7
+ CmpI #$0, D0
+ BEQ.B @L2
+ Move D0, -$8(A4)
+ IMPORT ATAGiveTime
+ ADDQ #$8,A7
+ CMP.W #$0,D0
+ BEQ.S @L2
+ MOVE.W D0,myword8(A4)
+
+@L2 BSR.L ATAGiveTime
+ MoveM.L (A7)+, D1-D7/A0-A6
+ Move -$8(A4), D4
+@L3 Rts
+ MOVEM.L (A7)+,D1-D7/A0-A6
+ MOVE.W myword8(A4),D4
+
+@NoATA RTS
+
+
+
+PostATA
+ MoveM.L D0-D3/A0-A2, -(A7)
+ MoveA.L ([$2B6],$288), A2
+ MOVEM.L D0-D3/A0-A2,-(A7)
+ MOVEA.L ([$2B6],$288),A2
+
+ Move.L A2, D0
+ MOVE.L A2,D0
+ BEQ.B @return
+ Move $6(A2), D1
+ MoveQ.L #$0, D2
+ MOVE.W 6(A2),D1
+ CLR.L D2
+
+@loop MoveA.L $14(A2,D2.L), A1
+ Move.L A1, D0
+ BEQ.B @return
+ Move $C8(A1), D0
+@loop MOVEA.L $14(A2,D2.L),A1
+ MOVE.L A1,D0
+ BEQ.S @return
+ MOVE.W $C8(A1),D0
+
+ Clr D3
+ Cmp D3, D0
+ BEQ.B @skip
+ MoveA.L $C4(A1), A0
+ Move.L A0, D0
+ BEQ.B @return
+ Jsr (A0)
+ Bra.B @return
+ CLR.W D3
+ CMP.W D3,D0
+ BEQ.S @skip
+ MOVEA.L $C4(A1),A0
+ MOVE.L A0,D0
+ BEQ.S @return
+ JSR (A0)
+ BRA.S @return
+
+@skip AddQ #$4, D2
+ SubQ #$1, D1
+ BNE.B @loop
+@skip ADDQ #$4,D2
+ SUBQ #$1,D1
+ BNE.S @loop
+
+@return MoveM.L (A7)+, D0-D3/A0-A2
+ Rts
+@return MOVEM.L (A7)+,D0-D3/A0-A2
+ RTS
+
+
+
+OpenLANDiskDriver
+ Lea.L @DriverName, A1
+ Lea.L -$32(A7), A7
+ MoveA.L A7, A0
+ Move.L A1, $12(A0)
+ DC.W $A000
+ Tst D0
+ BNE.B @L7
+ Move $18(A0), D4
+@L7 Lea.L $32(A7), A7
+ Rts
+
+LoadLANDiskDriver
+ LEA.L @DriverName,A1
+ LEA.L -CntrlParam.size(A7),A7
+ MOVEA.L A7,A0
+ MOVE.L A1,CntrlParam.ioNamePtr(A0)
+ _Open
+ TST D0
+ BNE.B @NotFound
+ MOVE CntrlParam.ioCRefNum(A0),D4
+@NotFound LEA.L CntrlParam.size(A7),A7
RTS
+ STRING Pascal
+@DriverName DC.B '.LANDisk'
+ ALIGN 2
+
+
+
+
;________________________________________________________________________________________
@@ -655,9 +758,7 @@ WaitForPollDrive
;
@@ -655,9 +746,7 @@ WaitForPollDrive
@WaitForIt
IF hasAsyncSCSI THEN
@ -29229,7 +29199,7 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
PEA forcedBoot(A4) ; ptr to flag indicating a forcedBoot
PEA 1 ; only look for the startup device
BSR.L ITTBOOT ; get the startup device's refnum in D0
@@ -676,47 +777,7 @@ WaitForPollDrive
@@ -676,54 +765,14 @@ WaitForPollDrive
@UseOldSCSI
ENDIF
@ -29277,7 +29247,16 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
CMP.L Ticks,D5 ; Should the poll HD be visible by now?
BLO.S @NoDrivePresent ; Yes, so quit waiting for it
MOVEQ.L #PollDelay,D0 ; Get number of ticks to wait before retrying
@@ -969,6 +1030,7 @@ Ck4SupportsPartition
ADD.L Ticks,D0 ; Calculate new time to try it again
-@DelayLoop
+@PollDlyLup
CMP.L Ticks,D0 ; Time to try again?
- BHS.S @DelayLoop ; No, so just be patient
+ BHS.S @PollDlyLup ; No, so just be patient
BRA.S @WaitForIt ; Ready to try the poll drive again
@NoDrivePresent ; Time expired, drive must not be there
@@ -969,6 +1018,7 @@ Ck4SupportsPartition
; now check this driver to see if it "follows new rules" and responds
; to driverGestalt status call
;
@ -29285,37 +29264,35 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
move.w dCtlFlags(A0), D0 ; does it Follow New Rules?
btst #FollowsNewRules, D0 ; (word-relative bit #)
beq.s @notSupported ; no -> skip driverGestalt call
@@ -1010,9 +1072,29 @@ Ck4SupportsPartition
@@ -1010,9 +1060,27 @@ Ck4SupportsPartition
;________________________________________________________________________________________
IsItDefault
+ tst -4(A4)
+ bne.s @skipsomestuff
+ IMPORT GetStartupDevice ; (CDG5) Takes ptr to refnum, returns OSErr
+
+ pea.l -4(A4)
+ import GetStartupDevice
+ jsr GetStartupDevice ; (CDG5) native StartLib
+ lea.l $4(SP), SP
+ tst D0
+ tst.w startMgrBootDev(A4) ; (CDG5) The StartMgr fragment overrides
+ bne.s @gotDrvNum ; everything below
+ pea.l startMgrBootDev(A4)
+ jsr GetStartupDevice
+ lea.l 4(SP), SP
+ tst.w D0 ; probably OSErr
+ bne.s @notTheDisk
+@skipsomestuff
+
+ move -4(A4), D0
+ cmp 6(A2), D0
+@gotDrvNum move.w startMgrBootDev(A4), D0
+ cmp.w dQDrive(A2), D0
+ beq.s @isTheDisk
+ bra.s @notTheDisk
+
cmp.w dqRefNum(A2), D4 ; is this driver for the default device?
bne.s @notTheDisk ; no-> definitely no the disk then
+ import ZeroD0
+ import ZeroD0 ; (CDG5) unsure of purpose
+ bsr ZeroD0
+ bne.s @notTheDisk
+
move.b #1, foundDrvr(A4) ; so we know to clr ckPartition if end-of-Q
tst.b ckPartition(A4) ; do we need to check the partition num?
beq.s @isTheDisk ; no-> well then, it is the right disk
@@ -1085,7 +1167,16 @@ ItsDefault RTS ; and return BEQ if so
@@ -1085,7 +1153,16 @@ ItsDefault RTS ; and return BEQ if so
;________________________________________________________________________________________
IsItAnything
@ -29333,7 +29310,7 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
RTS
@@ -1129,15 +1220,18 @@ VisualUpdate
@@ -1129,15 +1206,18 @@ VisualUpdate
@NoSwitch BCHG #FlashParity,D6 ; Switch parity.
BNE.S @XorQ ; Branch if we need X or ? showing.
LEA DiskIcon,A0 ; plot the plain disk icon
@ -29352,7 +29329,7 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
BRA.S PlotMyIcon
@DoneDisk RTS
@@ -1158,7 +1252,73 @@ VisualUpdate
@@ -1158,7 +1238,73 @@ VisualUpdate
HappyMac BSR.S EraseMyIcon ; erase what's on the screen where the icon goes
LEA HappyIcon,A0 ; plot the happy mac icon
@ -29427,7 +29404,7 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
RTS
@@ -1175,61 +1335,31 @@ HappyMac BSR.S EraseMyIcon ; erase what's on the screen where the icon goes
@@ -1175,61 +1321,31 @@ HappyMac BSR.S EraseMyIcon ; erase what's on the screen where the icon goes
; Function: erases the ICN# in the center of the main screen
;________________________________________________________________________________________
@ -29508,63 +29485,46 @@ diff --git a/OS/StartMgr/StartSearch.a b/OS/StartMgr/StartSearch.a
;________________________________________________________________________________________
@@ -1322,7 +1452,54 @@ XDiskIcon DC.L $7FFFFFF0,$81000108,$81007104,$81008902,$81008901,$81008901,$8100
@@ -1322,10 +1438,38 @@ XDiskIcon DC.L $7FFFFFF0,$81000108,$81007104,$81008902,$81008901,$81008901,$8100
DC.L $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFE
ENDWITH
- ENDPROC
+; ENDPROC
+
+
+
+
+
+
+
+DaFuq ; proc export ; but has no callers yet?
+; IMPORT NextDQEntry
+; IMPORT SelectDevice
+; IMPORT GetStartupInfo
+
+
+PreWalkAllDrives
+ MOVEM.L D0-D2/A0-A2,-(SP)
+ SUB.L A2,A2
+@loop
+ MOVE #$A002,D0
+
+@Next MOVE #$A002,D0 ; Check for a patch over the ROM _Open trap
+ _GetOSTrapAddress
+ MOVE.L ROMBase,A1
+ CMP.L A0,A1
+ BCS.S @return
+ BSR NextDQEntry
+ BEQ.S @return
+ BSR SelectDevice
+ BSR GetStartupInfo
+ BRA.S @loop
+@return
+ MOVEM.L (SP)+,D0-D2/A0-A2
+ BLO.S @return ; ...Return if it is patched.
+
+ BSR NextDQEntry ; Point A2 to next DQE
+ BEQ.S @return ; ...Return if there are no more drives
+ BSR SelectDevice ; Point A0 to the populated paramBlk
+ BSR GetStartupInfo ; Read the boot blocks and test for magic num
+ BRA.S @Next
+
+@return MOVEM.L (SP)+,D0-D2/A0-A2
+ RTS
+
+; ALIGN 16
+
+
+
+
+
+
+
ENDPROC
+ZeroD0 PROC EXPORT
+ MOVEQ.L #0, D0
+ CLR.L D0
+ RTS
+
+; ALIGN 16
+
+
+
+
@@ -1665,104 +1842,6 @@ AppPhne EQU $09961010
;----------------------------------------------------------------------
; Execute one of the subroutines related to the timeout while waiting for
; the poll hard disk to warm up.
@@ -1665,104 +1809,6 @@ AppPhne EQU $09961010
ENDPROC