;Conqueror’s DOS fileloader, ripped from “DEEP CORE” coverdisk preview version
;ripped + modified to let you set the MFM buffer address -WK
conqload:
movem.l d0-a6,-(sp)
lea ($BFD100).l,a5
bsr.w sub_7E948
lea unk_7EA93(pc),a6
andi.b #$7F,(a5)
move.b (a6)+,d0
move.l a0,2(a6)
st 6(a6)
and.b d0,(a5)
move.w #$370,d0
bsr.w sub_7E9A2
movea.l a1,a2
loc_7E8AE:
tst.b (a2)+
bne.s loc_7E8AE
suba.l a1,a2
subq.w #1,a2
move.l a2,d2
moveq #0,d3
move.l d2,d4
move.l d4,d6
movea.l a1,a3
loc_7E8C0:
mulu.w #$D,d2
move.b (a1)+,d3
cmpi.b #$61,d3 ; ‘a’
bcs.s loc_7E8D6
cmpi.b #$7A,d3 ; ‘z’
bhi.s loc_7E8D6
subi.b #$20,d3
loc_7E8D6:
add.w d3,d2
andi.w #$7FF,d2
subq.w #1,d4
bne.s loc_7E8C0
divu.w #$48,d2
swap d2
addq.w #6,d2
lsl.w #2,d2
move.l (a0,d2.w),d0
loc_7E8EE:
bsr.w sub_7E9A2
lea $1B0(a0),a1
cmp.b (a1)+,d6
bne.s loc_7E93A
movea.l a3,a2
move.w d6,d0
loc_7E8FE:
cmpm.b (a1)+,(a2)+
bne.s loc_7E93A
subq.w #1,d0
bne.s loc_7E8FE
move.l $144(a0),d0
add.l dword_7EA96(pc),d0
move.l d0,6(a6)
loc_7E912:
move.l $10(a0),d0
beq.s loc_7E940
bsr.w sub_7E9A2
lea $18(a0),a1
movea.l dword_7EA96(pc),a2
move.l dword_7EA9A(pc),d0
move.w #$1E7,d7
loc_7E92C:
move.b (a1)+,(a2)+
cmpa.l d0,a2
dbeq d7,loc_7E92C
move.l a2,2(a6)
bra.s loc_7E912
; —————————————————————————
loc_7E93A:
move.l $1F0(a0),d0
bne.s loc_7E8EE
loc_7E940:
bsr.s sub_7E948
movem.l (sp)+,d0-a6
rts
; End of function conqload
; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ
sub_7E948:
ori.b #$F8,(a5)
andi.b #$87,(a5)
ori.b #$78,(a5)
rts
; End of function sub_7E948
; —————————————————————————
loc_7E956:
bset d7,(a5)
bsr.s sub_7E97C
loc_7E95A:
btst #4,$F01(a5)
bne.s loc_7E956
sf (a6)
; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ
sub_7E964:
tst.b (a6)
bmi.s loc_7E95A
loc_7E968:
cmp.b (a6),d2
beq.s loc_7E998
bcc.s loc_7E974
bset d7,(a5)
subq.b #1,(a6)
bra.s loc_7E978
; —————————————————————————
loc_7E974:
bclr d7,(a5)
addq.b #1,(a6)
loc_7E978:
bsr.s sub_7E97C
bra.s loc_7E968
; End of function sub_7E964
; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ
sub_7E97C:
bclr d3,(a5)
mulu.w d3,d3
bset d3,(a5)
move.b d3,$500(a5)
move.b #$10,$600(a5)
move.b #$19,$E00(a5)
loc_7E992:
btst d3,$E00(a5)
bne.s loc_7E992
loc_7E998:
btst #5,$F01(a5)
bne.s loc_7E998
rts
; End of function sub_7E97C
; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ
sub_7E9A2:
moveq #0,d3
moveq #1,d7
moveq #2,d5
movea.l #mfmbuff,a4
; lea (unk_A04).l,a4 ;MFM buff
move.l d0,d2
ext.l d2
divu.w #$B,d2
move.l d2,d4
swap d4
cmp.b 1(a6),d2
beq.s loc_7EA2A
move.b d2,1(a6)
bset d5,(a5)
btst d3,d2
beq.s loc_7E9CC
bclr d5,(a5)
loc_7E9CC:
lsr.w #1,d2
bsr.s sub_7E964
move.b #5,-2(a6)
bra.s loc_7E9E4
; —————————————————————————
loc_7E9D8:
subq.b #1,-2(a6)
bne.s loc_7E9E4
moveq #-1,d2
move.w d2,(a6)
bra.s sub_7E9A2
; —————————————————————————
loc_7E9E4:
movea.l #mfmbuff,a4
; lea (unk_A04).l,a4 ; MFM buffer
lea ($DFF020).l,a0
move.l a4,(a0)+
move.w #$8210,$72(a0)
move.l #$27F00,$78(a0)
move.w #$9500,$7A(a0)
move.w #$4489,$5A(a0)
move.w #$9900,(a0)
move.w #$9900,(a0)
move.l #$A00000,d7
loc_7EA1A:
subq.l #1,d7
beq.s loc_7E9D8
btst #1,-5(a0)
beq.s loc_7EA1A
move.w #$4000,(a0)
loc_7EA2A:
lea $3200(a4),a2
movea.l a2,a0
move.l #$55555555,d5
moveq #$A,d1
loc_7EA38:
cmpi.w #$4489,(a4)+
bne.s loc_7EA38
cmpi.w #$4489,(a4)
beq.s loc_7EA38
movem.l (a4),d2-d3
bsr.s sub_7EA88
lsr.w #8,d2
cmp.w d4,d2
beq.s loc_7EA5C
adda.w #$438,a4
dbf d1,loc_7EA38
bra.w loc_7E9D8
; —————————————————————————
loc_7EA5C:
swap d2
cmp.b 1(a6),d2
bne.w loc_7E9D8
lea $34(a4),a4
move.l (a4)+,d4
moveq #$7F,d7
loc_7EA6E:
move.l $200(a4),d3
move.l (a4)+,d2
eor.l d2,d4
eor.l d3,d4
bsr.s sub_7EA88
move.l d2,(a2)+
dbf d7,loc_7EA6E
and.l d5,d4
bne.w loc_7E9D8
rts
; End of function sub_7E9A2
; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ
sub_7EA88:
and.l d5,d2
and.l d5,d3
add.l d2,d2
or.l d3,d2
rts
; End of function sub_7EA88
; —————————————————————————
dc.b 5
unk_7EA93: dc.b $F7
dc.b $FF
dc.b $FF
dword_7EA96: dc.l $ffffffff
dword_7EA9A: dc.l $ffffffff
mfmaddr: dc.l $0
filename: dc.b “TEST”,0
even
; —————————————————————————
****************************************************************************
; VARIABLES
****************************************************************************
gfxlib: dc.b “graphics.library”,0,0
gfxbase: dc.l 0
old_Intena dc.w 0
old_Dmacon dc.w 0
even
;space for MFM buffer
mfmbuff: blk.b 16384,0
even
;space for loading buffer
loadbuff: blk.b 32768,0
even
theend:
File-name Loader
;Conqueror’s DOS fileloader, ripped from “DEEP CORE” coverdisk preview version
<-- Alpha One’s Track loader | [ Code ]