sys7.1-doc-wip/Patches/EDiskLocalNamePatch.a
2020-04-26 16:46:44 +08:00

56 lines
1.2 KiB
Plaintext

;
; Hacks to match MacOS (most recent first):
;
; <Sys7.1> 8/3/92 Disassembled from scratch
;
LOAD 'StandardEqu.d'
INCLUDE 'SysEqu.a'
INCLUDE 'EDiskEqu.a'
INCLUDE 'LinkedPatchMacros.a'
ROMInternalRAMDiskString RomBind (IIci,$E7DAA)
EDiskShutdownPtch InstallProc (IIci,hasTERROR)
lea DrvQHdr+QHead-QLink,a2
@dqloop move.l (a2),d0
beq.s @return
move.l d0,a2 ; follow link
move.w dQRefNum(a2),d0 ; calculate unit table offset from refNum
add.w #1,d0
neg.w d0
asl.w #2,d0
move.l UTableBase,a1
move.l (a1,d0),a1
move.l (a1),a1
btst #dRAMBased,DCtlFlags+1(a1)
bz.s @romBased
move.l (a1),a1 ; ptr to rom or handle to ram
@romBased move.l (a1),a1
lea drvrName(a1),a1
lea #'.EDisk',a0 ; searching for the EDisk drvr
clr.l d0
move.b (a0),d0
@cmploop cmp.b (a0)+,(a1)+
bne.s @dqloop ; not the EDisk
dbra d0,@cmploop
move.l EDiskDriveInfo.WhereStringPtr(a2),a1
cmpRom ROMInternalRAMDiskString,a1
beq.s @isEphemeral
cmp.l #$408E7DA0,a1 ; nearby location?
bne.s @return
@isEphemeral
subq #4,sp
move.w #-16535,-(sp) ; 'Internal RAM Disk'
_GetString
move.l (sp)+,d0
beq.s @return
move.l d0,a1
move.l (a1),EDiskDriveInfo.WhereStringPtr(a2)
@return rts