00000000: 3B 42 50 55 54 22 52 45 41 44 42 4F 4F 54 2E 53 |;BPUT"READBOOT.S|
00000010: 52 43 22 0D 3B 52 50 55 54 22 52 45 41 44 42 4F |RC".;RPUT"READBO|
00000020: 4F 54 2E 53 52 43 22 0D 3B 0D 2E 4C 49 42 20 48 |OT.SRC".;..LIB H|
00000030: 41 52 44 4A 55 4D 50 2E 45 51 0D 2E 4C 49 42 20 |ARDJUMP.EQ..LIB |
00000040: 48 41 52 44 49 53 4B 5A 2E 45 51 0D 3B 0D 2A 20 |HARDISKZ.EQ.;.* |
00000050: 3D 20 24 30 38 34 30 0D 53 54 41 52 54 20 4A 53 |= $0840.START JS|
00000060: 52 20 48 44 49 4E 49 54 20 3B 49 4E 49 54 20 43 |R HDINIT ;INIT C|
00000070: 54 4C 20 42 4C 4F 43 4B 53 0D 20 4A 53 52 20 52 |TL BLOCKS. JSR R|
00000080: 45 53 45 54 20 3B 49 53 53 55 45 20 54 48 45 20 |ESET ;ISSUE THE |
00000090: 52 45 53 45 54 0D 20 42 43 53 20 52 45 53 45 54 |RESET. BCS RESET|
000000A0: 45 52 52 4F 52 0D 20 4C 44 41 20 23 24 38 30 0D |ERROR. LDA #$80.|
000000B0: 20 4C 44 59 20 23 24 32 38 20 3B 47 45 54 20 4E | LDY #$28 ;GET N|
000000C0: 55 4D 42 45 52 20 4F 46 20 53 45 43 54 4F 52 53 |UMBER OF SECTORS|
000000D0: 20 54 4F 20 52 45 41 44 0D 20 4C 44 58 20 23 24 | TO READ. LDX #$|
000000E0: 34 30 20 3B 47 45 54 20 53 45 43 54 4F 52 20 4E |40 ;GET SECTOR N|
000000F0: 55 4D 42 45 52 0D 20 4A 53 52 20 52 45 41 44 49 |UMBER. JSR READI|
00000100: 54 20 3B 47 4F 20 43 4F 4E 56 45 52 54 20 41 4E |T ;GO CONVERT AN|
00000110: 44 20 52 45 41 44 0D 20 42 43 53 20 52 45 41 44 |D READ. BCS READ|
00000120: 45 52 52 4F 52 20 3B 47 4F 20 49 46 20 42 41 44 |ERROR ;GO IF BAD|
00000130: 0D 20 4C 44 41 20 23 24 45 30 20 3B 41 44 44 52 |. LDA #$E0 ;ADDR|
00000140: 45 53 53 20 49 4E 50 55 54 20 41 52 45 41 0D 20 |ESS INPUT AREA. |
00000150: 4C 44 59 20 23 24 31 30 0D 20 4C 44 58 20 23 24 |LDY #$10. LDX #$|
00000160: 36 39 0D 20 4A 53 52 20 52 45 41 44 49 54 0D 20 |69. JSR READIT. |
00000170: 42 43 53 20 52 45 41 44 45 52 52 4F 52 0D 20 4A |BCS READERROR. J|
00000180: 53 52 20 35 32 32 32 34 0D 20 4A 4D 50 20 24 43 |SR 52224. JMP $C|
00000190: 30 30 30 20 3B 45 4E 44 0D 3B 0D 52 45 41 44 49 |000 ;END.;.READI|
000001A0: 54 20 53 54 41 20 42 55 46 41 44 52 2B 31 20 3B |T STA BUFADR+1 ;|
000001B0: 41 44 44 52 45 53 53 20 49 4E 50 55 54 0D 20 53 |ADDRESS INPUT. S|
000001C0: 54 59 20 42 4C 4B 43 4E 54 20 3B 23 20 35 31 32 |TY BLKCNT ;# 512|
000001D0: 20 42 59 54 45 20 42 4C 4F 43 4B 53 0D 20 53 54 | BYTE BLOCKS. ST|
000001E0: 58 20 53 45 43 4E 55 4D 2B 32 0D 20 4C 44 41 20 |X SECNUM+2. LDA |
000001F0: 23 30 0D 20 53 54 41 20 48 44 4E 55 4D 20 3B 43 |#0. STA HDNUM ;C|
00000200: 4C 45 41 52 20 54 48 45 20 44 52 49 56 45 20 4E |LEAR THE DRIVE N|
00000210: 55 4D 42 45 52 0D 20 53 54 41 20 53 45 43 4E 55 |UMBER. STA SECNU|
00000220: 4D 0D 20 53 54 41 20 53 45 43 4E 55 4D 2B 31 0D |M. STA SECNUM+1.|
00000230: 20 4A 53 52 20 53 45 43 32 43 59 4C 44 43 42 20 | JSR SEC2CYLDCB |
00000240: 3B 43 4F 4E 56 45 52 54 20 54 4F 20 44 49 53 4B |;CONVERT TO DISK|
00000250: 20 41 44 44 52 0D 20 4C 44 41 20 48 45 41 44 20 | ADDR. LDA HEAD |
00000260: 3B 46 49 4C 4C 20 54 48 45 20 44 43 42 0D 20 53 |;FILL THE DCB. S|
00000270: 54 41 20 48 44 4E 55 4D 0D 20 4C 44 41 20 43 59 |TA HDNUM. LDA CY|
00000280: 4C 4C 53 42 20 3B 47 45 54 20 4C 4F 57 20 43 59 |LLSB ;GET LOW CY|
00000290: 4C 20 41 44 44 52 0D 20 53 54 41 20 43 59 4C 4E |L ADDR. STA CYLN|
000002A0: 55 4D 0D 20 4C 44 41 20 43 59 4C 4D 53 42 20 3B |UM. LDA CYLMSB ;|
000002B0: 47 45 54 20 48 49 20 43 59 4C 20 41 4E 44 20 53 |GET HI CYL AND S|
000002C0: 45 43 54 4F 52 0D 20 53 54 41 20 53 45 43 41 44 |ECTOR. STA SECAD|
000002D0: 52 20 3B 50 55 54 20 49 4E 20 44 43 42 0D 20 4A |R ;PUT IN DCB. J|
000002E0: 4D 50 20 52 45 41 44 20 3B 52 45 41 44 20 41 4E |MP READ ;READ AN|
000002F0: 44 20 52 45 54 55 52 4E 20 54 4F 20 43 41 4C 4C |D RETURN TO CALL|
00000300: 45 52 0D 3B 0D 52 45 53 45 54 45 52 52 4F 52 20 |ER.;.RESETERROR |
00000310: 4C 44 58 20 23 30 0D 20 2E 42 59 54 20 24 32 43 |LDX #0. .BYT $2C|
00000320: 20 3B 0D 52 45 41 44 45 52 52 4F 52 20 4C 44 58 | ;.READERROR LDX|
00000330: 20 23 30 0D 52 45 41 44 45 52 52 4F 52 4C 20 4C | #0.READERRORL L|
00000340: 44 41 20 52 45 53 45 54 4D 53 47 2C 58 0D 20 42 |DA RESETMSG,X. B|
00000350: 45 51 20 44 4F 4E 45 0D 20 4A 53 52 20 24 46 46 |EQ DONE. JSR $FF|
00000360: 44 32 0D 20 49 4E 58 0D 20 42 4E 45 20 52 45 41 |D2. INX. BNE REA|
00000370: 44 45 52 52 4F 52 4C 0D 44 4F 4E 45 20 52 54 53 |DERRORL.DONE RTS|
00000380: 0D 20 42 52 4B 0D 3B 0D 52 45 53 45 54 4D 53 47 |. BRK.;.RESETMSG|
00000390: 20 2E 42 59 54 20 27 52 45 53 45 54 20 46 41 49 | .BYT 'RESET FAI|
000003A0: 4C 45 44 27 2C 31 33 2C 30 0D 52 45 41 44 45 52 |LED',13,0.READER|
000003B0: 52 4D 53 47 20 2E 42 59 54 20 27 52 45 41 44 20 |RMSG .BYT 'READ |
000003C0: 46 41 49 4C 45 44 27 2C 31 33 2C 30 0D 2E 45 4E |FAILED',13,0..EN|
000003D0: 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |D...............|
000003E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
;BPUT"READBOOT.SRC".;RPUT"READBOOT.SRC".
;..LIB HARDJUMP.EQ..LIB HARDISKZ.EQ.;.*
= $0840.START JSR HDINIT ;INIT CTL BLOCK
S. JSR RESET ;ISSUE THE RESET. BCS RESET
ERROR. LDA #$80. LDY #$28 ;GET NUMBER OF
SECTORS TO READ. LDX #$40 ;GET SECTOR N
UMBER. JSR READIT ;GO CONVERT AND READ.
BCS READERROR ;GO IF BAD. LDA #$E0 ;ADDR
ESS INPUT AREA. LDY #$10. LDX #$69. JSR
READIT. BCS READERROR. JSR 52224. JMP $C
000 ;END.;.READIT STA BUFADR+1 ;ADDRESS
INPUT. STY BLKCNT ;# 512 BYTE BLOCKS. ST
X SECNUM+2. LDA #0. STA HDNUM ;CLEAR THE
DRIVE NUMBER. STA SECNUM. STA SECNUM+1.
JSR SEC2CYLDCB ;CONVERT TO DISK ADDR. L
DA HEAD ;FILL THE DCB. STA HDNUM. LDA CY
LLSB ;GET LOW CYL ADDR. STA CYLNUM. LDA
CYLMSB ;GET HI CYL AND SECTOR. STA SECAD
R ;PUT IN DCB. JMP READ ;READ AND RETURN
TO CALLER.;.RESETERROR LDX #0. .BYT $2C
;.READERROR LDX #0.READERRORL LDA RESET
MSG,X. BEQ DONE. JSR $FFD2. INX. BNE REA
DERRORL.DONE RTS. BRK.;.RESETMSG .BYT 'R
ESET FAILED',13,0.READERRMSG .BYT 'READ
FAILED',13,0..END.......................
........................
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL