; ******************************************************************* ; N.O.M.A.D. FAIRLIGHT SHORTENED RNC SECTOR LOADER FROM MORTAL KOMBAT ; RIPPED AND RESOURCED BY SCENEX ; SEE http://eab.abime.net/showthread.php?t=60856 ; ; D0 = Drive to read (on entry) ; D0 = Error code (on exit) ; D1 = Sector start ; D2 = Sectors to read ; D3 = Drive motor on or off after read ; D4 = Serial key ; A0 = Load address ; A1 = Track buffer decode address ; ; *******************************************************************
START MOVEM.L D1-D7/A0-A6,-(SP) LINK.W A2,#-$30 LEA ($DFF000).L,A6 LEA ($BFD100).L,A5 LEA (*-$FFFF0062,PC),A4 MOVE.L A0,(-$2C,A2) MOVE.L A1,(-$30,A2) MOVE.W D0,(-$20,A2) MOVE.W D1,(-$1E,A2) MOVE.W D2,(-$1C,A2) ADD.W D1,D2 CMP.W #$6E0,D2 BGT.B lbC000072 MOVEQ #0,D0 TST.W D2 BEQ.B lbC000066 MOVE.L D4,(-$1A,A2) CLR.W (-$22,A2) BSR.W lbC000122 TST.L D0 BNE.B lbC000066 BSR.W lbC000168 TST.L (-$1A,A2) BEQ.B lbC000062 BSR.B lbC00007A MOVEQ #$1B,D0 MOVEA.L (-$2C,A2),A0 CMP.L (8,A0),D4 BNE.B lbC000066 lbC000062 BSR.B lbC00008A MOVEQ #0,D0 lbC000066 BSR.W lbC000150 UNLK A2 MOVEM.L (SP)+,D1-D7/A0-A6 RTS
lbC000072 MOVE.W (6,A6),($180,A6) BRA.B lbC000072
lbC00007A MOVEM.L D0-D7/A0-A6,-(SP) MOVEQ #0,D0 MOVEQ #1,D2 BSR.B lbC000096 MOVEM.L (SP)+,D0-D7/A0-A6 RTS
lbC00008A MOVEQ #0,D0 MOVEQ #0,D2 MOVE.W (-$1E,A2),D0 MOVE.W (-$1C,A2),D2 lbC000096 MOVEA.L (-$2C,A2),A0 lbC00009A MOVEM.L D0/D2,-(SP) BSR.B lbC0000CA BSR.B lbC0000AE MOVEM.L (SP)+,D0/D2 ADDQ.L #1,D0 SUBQ.L #1,D2 BNE.B lbC00009A RTS
lbC0000AE MOVE.W #$7F,D0 lbC0000B2 MOVE.L (A3)+,(A0)+ DBRA D0,lbC0000B2 RTS
lbC0000BA MOVE.L D0,-(SP) MOVE.B (6,A6),D0 lbC0000C0 CMP.B (6,A6),D0 BEQ.B lbC0000C0 MOVE.L (SP)+,D0 RTS
lbC0000CA MOVE.L A0,-(SP) MOVEA.L (-$30,A2),A0 MOVEA.L A0,A3 EXT.L D0 DIVU.W #11,D0 MOVE.L D0,D1 SWAP D1 MOVE.W D1,(-$24,A2) TST.W (-$22,A2) BEQ.B lbC0000EC CMP.W (-$28,A2),D0 BEQ.B lbC000110 lbC0000EC MOVE.W D0,(-$28,A2) BSET #2,(A5) BTST #0,D0 BEQ.B lbC0000FE BCLR #2,(A5) lbC0000FE ASR.W #1,D0 BSR.B lbC00017E lbC000102 BSR.W lbC0001DE MOVEQ #11,D6 BSR.W lbC00025E TST.L D0 BNE.B lbC000102 lbC000110 MOVE.W (-$24,A2),D0 EXT.L D0 MULU.W #$200,D0 LEA (A3,D0.W),A3 MOVEA.L (SP)+,A0 RTS
lbC000122 MOVE.B #$FF,(A5) MOVE.B #$87,(A5) MOVE.B #$7F,(A5) MOVE.W (-$20,A2),D1 ADDQ.L #3,D1 BCLR D1,(A5) MOVEQ #0,D0 MOVE.W #$9999,D1 lbC00013C BSR.W lbC0000BA BTST #5,($F01,A5) BEQ.B lbC00014E DBRA D1,lbC00013C MOVEQ #$1D,D0 lbC00014E RTS
lbC000150 MOVE.B #$FF,(A5) MOVE.B #$87,(A5) MOVE.B #$FF,(A5) RTS
lbC00015E BTST #5,($F01,A5) BNE.B lbC00015E RTS
lbC000168 BSET #1,(A5) lbC00016C BTST #4,($F01,A5) BEQ.B lbC000178 BSR.B lbC0001A0 BRA.B lbC00016C
lbC000178 CLR.L (-$28,A2) RTS
lbC00017E MOVE.W (-$26,A2),D1 MOVE.W D0,(-$26,A2) BCLR #1,(A5) SUB.W D1,D0 BEQ.B lbC00019E BPL.B lbC000196 BSET #1,(A5) NEG.W D0 lbC000196 SUBQ.W #1,D0 lbC000198 BSR.B lbC0001A0 DBRA D0,lbC000198 lbC00019E RTS
lbC0001A0 BSR.B lbC00015E BCLR #0,(A5) NOP BSET #0,(A5) BSR.B lbC0001B2 BSR.B lbC00015E RTS
lbC0001B2 BRA.B lbC0001C2
MOVE.W #$46,D7 BSR.W lbC0000BA DBRA D7,START+$01B8 RTS
lbC0001C2 MOVE.B #8,($D00,A5) MOVE.B #$68,($300,A5) MOVE.B #8,($400,A5) lbC0001D4 BTST #0,($D00,A5) BNE.B lbC0001D4 RTS
lbC0001DE MOVE.L A0,-(SP) lbC0001E0 MOVEA.L (SP),A0 MOVE.W #$4000,($24,A6) MOVE.W #$8210,($96,A6) MOVE.W #$7F00,($9E,A6) MOVE.W #$9500,($9E,A6) MOVE.W #$4489,($7E,A6) MOVE.W #$1002,($9C,A6) MOVE.L A0,($20,A6) ADDQ.L #2,A0 CLR.L (10,A0) MOVE.L #$55555555,D7 MOVE.W #$998B,D0 MOVE.W D0,($24,A6) MOVE.W D0,($24,A6) lbC000222 TST.L (10,A0) BEQ.B lbC000222 BSR.W lbC0002AE LSR.W #8,D2 TST.W D2 BNE.B lbC0001E0 MOVE.W #$9999,D2 lbC000236 BSR.W lbC0000BA BTST #1,($1F,A6) BNE.B lbC000248 DBRA D2,lbC000236 BRA.B lbC0001E0
lbC000248 MOVE.W #$4000,($24,A6) MOVE.W #$1002,($9C,A6) MOVE.W #$10,($96,A6) MOVEA.L (SP)+,A0 RTS
lbC00025E MOVEM.L D1-D7/A0-A6,-(SP) MOVE.L #$55555555,D7 lbC000268 CMPI.W #$4489,(A0)+ BNE.B lbC000268 lbC00026E CMPI.W #$4489,(A0) BNE.B lbC000278 ADDQ.L #2,A0 BRA.B lbC00026E
lbC000278 LEA ($30,A0),A0 BSR.B lbC0002AE MOVE.L D2,D5 MOVEQ #$7F,D1 lbC000282 MOVE.L (A0),D2 MOVE.L ($200,A0),D3 BSR.B lbC0002B2 MOVE.L D2,(A3)+ ADDQ.L #4,A0 DBRA D1,lbC000282 SF (-$22,A2) LEA ($200,A0),A0 TST.L D5 BNE.B lbC0002A6 SUBQ.B #1,D6 BNE.B lbC000268 ST (-$22,A2) lbC0002A6 MOVE.L D5,D0 MOVEM.L (SP)+,D1-D7/A0-A6 RTS
lbC0002AE MOVE.L (A0)+,D2 MOVE.L (A0)+,D3 lbC0002B2 AND.L D7,D2 AND.L D7,D3 EOR.L D2,D5 EOR.L D3,D5 LSL.L #1,D2 OR.L D3,D2 RTS