▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ░▒▓█ rapid1337.com █▓▒░ ╓──────────────────────────────────────────╖ ║ Spiv’s File Loader ║ ╟──────────────────────────────────────────╢ ║ ;DOS file-loader by Mr.Spiv/CAVE ║ ╟──────────────────────────────────────────╢ ║ ·· code/spivs-file-loader.html ·· ║ ╙──────────────────────────────────────────╜ ============================================================================ Title ..: Spiv’s File Loader Author .: staff Date ...: 2007-07-03 Section : Code ============================================================================ ``` ;DOS file-loader by Mr.Spiv/CAVE ;example of calling it ; lea mfmbuff(pc),a1 ;point to your MFM buffer here ; movea.l a1,mfmaddr ;set MFM buffer address for loader ; lea filename(pc),a0 ; lea $30000,a1 ; moveq #0,d0 ; bsr.w spivload ;filename: dc.b ‘testfile’,0 ; ————————————————————————— spivload: movem.l d1-a6,-(a7) bsr sub_1027E lea $DFF000,a6 lea $BFD100,a5 lea off_10496(pc),a4 movem.l a0-a1,(a4) move.b d0,$23(a4) bsr.w sub_10228 movea.l off_10496,a0 bsr.w sub_10180 bsr.w sub_101A0 movea.l #$6E000,a0 lea unk_104BC(pc),a1 bsr.w sub_101E0 bne.s loc_100E0 loc_100A0: move.w word_104A6,d0 lsl.w #2,d0 move.l (a1,d0.w),d0 loc_100AA: mulu.w #$200,d0 beq.s loc_100DC movea.l d0,a0 bsr.w sub_101E0 bne.s loc_100E0 move.l $1FC(a1),d0 move.l (a1),d1 cmpi.w #-3,d0 bne.s loc_100CA cmpi.w #2,d1 beq.s loc_1012A loc_100CA: cmpi.w #2,d0 bne.s loc_100D6 cmpi.w #2,d1 beq.s loc_100FA loc_100D6: cmpi.w #8,d1 beq.s loc_1013C loc_100DC: st $22(a4) loc_100E0: bsr.w sub_1025E moveq #-1,d0 tst.b $22(a4) bne.s loc_100F4 move.l dword_1049A,d0 sub.l $20(a7),d0 loc_100F4: movem.l (a7)+,d1-a6 rts loc_100FA: bsr.s sub_1010C adda.l dword_7049E,a0 addq.w #1,a0 bsr.s sub_10180 bsr.w sub_101A0 bra.s loc_100A0 sub_1010C: lea $1B0(a1),a3 moveq #0,d1 move.b (a3)+,d1 movem.l dword_1049E,d0/a0 bsr.s sub_1015E bmi.s loc_10120 rts loc_10120: addq.w #4,a7 move.l $1F0(a1),d0 bne.s loc_100AA bra.s loc_100DC loc_1012A: bsr.s sub_1010C move.l $134(a1),d0 loc_10130: mulu.w #$200,d0 movea.l d0,a0 bsr.w sub_101E0 bne.s loc_100E0 loc_1013C: move.l $10(a1),d0 lea $18(a1),a3 move.l $C(a1),d2 subq.w #1,d2 movea.l dword_1049A,a2 loc_1014E: move.b (a3)+,(a2)+ dbf d2,loc_1014E move.l a2,4(a4) tst.l d0 bne.s loc_10130 bra.s loc_100E0 sub_1015E: movea.l a0,a2 cmp.w d0,d1 bne.s loc_1017C subq.w #1,d0 loc_10166: move.b (a3)+,d1 bsr.s sub_101CE move.b d1,d2 move.b (a2)+,d1 bsr.s sub_101CE cmp.b d1,d2 bne.s loc_1017C dbf d0,loc_10166 moveq #0,d0 rts loc_1017C: moveq #-1,d0 rts sub_10180: move.l a0,-(a7) moveq #0,d0 loc_10184: cmpi.b #$2F,(a0) ; ‘/’ beq.s loc_10192 tst.b (a0)+ beq.s loc_10192 addq.w #1,d0 bra.s loc_10184 loc_10192: movea.l (a7)+,a0 clr.b (a0,d0.w) movem.l d0/a0,8(a4) rts sub_101A0: movem.l dword_1049E,d0/a0 move.l #$7FF,d2 loc_101AC: moveq #0,d1 move.b (a0)+,d1 beq.s loc_101BE bsr.s sub_101CE mulu.w #$D,d0 add.l d1,d0 and.w d2,d0 bra.s loc_101AC loc_101BE: and.l d2,d0 divu.w #$48,d0 swap d0 addq.w #6,d0 move.w d0,$10(a4) rts sub_101CE: cmpi.b #$61,d1 ; ‘a’ bcs.s locret_101DE cmpi.b #$7A,d1 ; ‘z’ bhi.s locret_101DE subi.b #$20,d1 ; ‘ ‘ locret_101DE: rts sub_101E0: move.b #3,$24(a4) loc_101E6: movem.l a0-a1,-(a7) move.l a7,$12(a4) clr.b $22(a4) tst.b $1E(a4) bpl.s loc_101FC bsr.w sub_1029A loc_101FC: move.b byte_104B4,$1F(a4) move.b byte_104B6,$21(a4) bsr.w sub_102CA loc_1020C: movea.l dword_104A8,a7 movem.l (a7)+,a0-a1 tst.b $22(a4) beq.s locret_10226 subq.b #1,$24(a4) bmi.s locret_10226 st $1E(a4) bra.s loc_101E6 locret_10226: rts sub_10228: move.w #$9500,$9E(a6) move.w #$8210,$96(a6) move.w #$4489,$7E(a6) move.l #$A000A,$9A(a6) bclr #7,(a5) moveq #0,d0 move.b byte_104B9,d0 addq.b #3,d0 bclr d0,(a5) moveq #$7F,d1 loc_10252: moveq #0,d0 bsr.w sub_103FA dbf d1,loc_10252 rts sub_1025E: moveq #0,d0 move.b byte_104B9,d0 addq.b #3,d0 bset d0,(a5) nop nop bset #7,(a5) nop nop bclr d0,(a5) nop nop bset d0,(a5) rts sub_1027E: lea $BFD100,a5 move.b #$F9,(a5) nop nop move.b #$81,(a5) nop nop move.b #$F9,(a5) rts sub_1029A: bset #1,(a5) loc_1029E: btst #4,$F01(a5) beq.s loc_102C4 bclr #0,(a5) nop nop bset #0,(a5) moveq #0,d0 bsr.w sub_103FA btst #2,$F01(a5) beq.w loc_10488 bra.s loc_1029E loc_102C4: clr.b $1E(a4) rts sub_102CA: move.l a0,d0 divu.w #$1600,d0 move.l d0,d1 andi.w #1,d1 bne.s loc_102DE bset #2,(a5) bra.s loc_102E2 loc_102DE: bclr #2,(a5) loc_102E2: move.b d1,$20(a4) lsr.w #1,d0 bsr.w sub_103BE swap d1 move.w d1,d3 move.l #$55555555,d2 lea $7C000,a3 ;MFM buffer lea $3300(a3),a0 move.b byte_104B4,d7 cmp.b byte_104B5,d7 bne.s loc_10314 move.b byte_104B6,d7 cmp.b byte_104B7,d7 beq.s loc_10336 loc_10314: move.l a3,$20(a6) ; MFM buffer move.w #2,$9C(a6) clr.w $24(a6) move.w #$9980,$24(a6) move.w #$9980,$24(a6) bsr.w sub_10432 clr.w $24(a6) loc_10336: moveq #$A,d7 loc_10338: cmpa.l a0,a3 bcc.w loc_10458 cmpi.w #$4489,(a3)+ bne.s loc_10338 cmpi.w #$4489,(a3) bne.s loc_1034C addq.w #2,a3 loc_1034C: movem.l (a3)+,d0-d1 and.l d2,d0 and.l d2,d1 add.l d0,d0 or.l d1,d0 clr.b d0 move.l d0,$16(a4) cmpi.b #-1,$16(a4) bne.w loc_10474 add.w d0,d0 sub.w d3,d0 beq.s loc_1037A adda.w #$430,a3 dbf d7,loc_10338 bra.w loc_10458 loc_1037A: adda.w #$28,a3 move.l (a3)+,d0 move.l (a3)+,d4 and.l d2,d0 and.l d2,d4 add.l d0,d0 or.l d0,d4 moveq #0,d6 moveq #$7F,d5 movea.l a3,a0 loc_10390: move.l $200(a0),d1 move.l (a0)+,d0 eor.l d0,d6 eor.l d1,d6 dbf d5,loc_10390 and.l d2,d6 cmp.l d4,d6 bne.w loc_1047E moveq #$7F,d7 loc_103A8: move.l $200(a3),d1 move.l (a3)+,d0 and.l d2,d0 and.l d2,d1 add.l d0,d0 or.l d1,d0 move.l d0,(a1)+ dbf d7,loc_103A8 rts sub_103BE: sub.b byte_104B4,d0 beq.s locret_103F4 add.b d0,$1E(a4) ext.w d0 move.w d0,d1 bge.s loc_103D6 bset #1,(a5) neg.w d1 bra.s loc_103DA loc_103D6: bclr #1,(a5) loc_103DA: subq.w #1,d1 loc_103DC: bclr #0,(a5) nop nop bset #0,(a5) moveq #0,d0 bsr.s sub_103FA dbf d1,loc_103DC bclr #1,(a5) locret_103F4: rts unk_103F6: dc.b $10 ; unk_103F7: dc.b $C8 ; + dc.b $32 ; 2 dc.b $58 ; X sub_103FA: add.w d0,d0 move.b #$82,$1C01(a5) move.b unk_103F7(pc,d0.w),$1501(a5) move.b unk_103F6(pc,d0.w),$1601(a5) move.b #$19,$1E01(a5) loc_10414: btst #1,$1C01(a5) beq.s loc_10414 move.w #8,$9C(a6) move.b #2,$1C01(a5) rts loc_1042A: move.w #2,$9C(a6) rts sub_10432: moveq #$7F,d1 loc_10434: btst #1,$1F(a6) bne.s loc_1042A moveq #0,d0 bsr.s sub_103FA dbf d1,loc_10434 move.b #6,$22(a4) move.w #2,$9C(a6) clr.w $24(a6) bra.w loc_1020C loc_10458: cmpi.b #$A,d7 bne.s loc_1046A bpl.s loc_1046A move.b #7,$22(a4) bra.w loc_1020C loc_1046A: move.b #8,$22(a4) bra.w loc_1020C loc_10474: move.b #3,$22(a4) bra.w loc_1020C loc_1047E: move.b #5,$22(a4) bra.w loc_1020C loc_10488: move.b #2,$22(a4) clr.b $24(a4) bra.w loc_1020C ; ————————————————————————— off_10496: dc.l unk_7005C dword_1049A: dc.l $30000 dword_1049E: dc.l 6 dc.b 0 dc.b 7 dc.b 0 dc.b $5C word_104A6: dc.w $1F dword_104A8: dc.l $2088B8 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 byte_104B4: dc.b $FF byte_104B5: dc.b 0 byte_104B6: dc.b $FF byte_104B7: dc.b 0 dc.b 2 byte_104B9: dc.b 1 dc.b $FF dc.b 0 unk_104BC: blk.b 16,0 mfmaddr: dc.l $0 ``` ---------------------------------------------------------------------------- -- rapid1337.com -- The dumping ground for all things tech // knowledge is the weapon --