home *** CD-ROM | disk | FTP | other *** search
- ; DiskBooter V1.00
- ; Boots disk from drive df0:
-
- XREF _LVOOldOpenLibrary
- XREF _LVOCloseLibrary
- XREF _LVOCreateMsgPort
- XREF _LVOCreateIORequest
- XREF _LVOOpenDevice
- XREF _LVOCloseDevice
- XREF _LVODeleteIORequest
- XREF _LVODeleteMsgPort
- XREF _LVOOutput
- XREF _LVOWrite
- XREF _LVODoIO
- XREF _LVODelay
-
- io_Length equ $24
- io_Data equ $28
- io_Offset equ $2c
- io_Command equ $1c
- io_Flags equ $1e
- io_Actual equ $20
- CMD_READ equ $2
- CMD_UPDATE equ $4
- TD_MOTOR equ $9
- TD_CHANGESTATE equ $e
- TD_CHANGENUM equ $d
-
-
- TrackTest
- move.l 4,a6
- lea DosName(pc),a1
- jsr _LVOOldOpenLibrary(a6)
- move.l d0,DosBase
-
- jsr _LVOCreateMsgPort(a6)
- move.l d0,MsgBase
- move.l d0,a0
- moveq.l #$38,d0
- jsr _LVOCreateIORequest(a6)
- move.l d0,ReqBase
- lea TrackDiskName(pc),a0
- moveq.l #0,d0
- move.l ReqBase(pc),a1
- moveq.l #0,d1
- jsr _LVOOpenDevice(a6)
-
- move.l DosBase(pc),a6
- jsr _LVOOutput(a6)
- move.l d0,Output
- move.l d0,d1
- move.l #Text1,d2
- moveq.l #63,d3
- jsr _LVOWrite(a6)
-
- Loop1
- move.l DosBase(pc),a6
- moveq.l #25,d1
- jsr _LVODelay(a6)
- move.l 4,a6
- move.l ReqBase(pc),a1
- move.w #TD_CHANGESTATE,io_Command(a1)
- jsr _LVODoIO(a6)
- move.l ReqBase(pc),a1
- cmp.l #0,io_Actual(a1)
- beq.s Loop1
-
- move.l DosBase(pc),a6
- move.l Output(pc),d1
- move.l #Text2,d2
- moveq.l #48,d3
- jsr _LVOWrite(a6)
-
- Loop2
- move.l DosBase(pc),a6
- moveq.l #25,d1
- jsr _LVODelay(a6)
- move.l 4,a6
- move.l ReqBase(pc),a1
- move.w #TD_CHANGESTATE,io_Command(a1)
- jsr _LVODoIO(a6)
- move.l ReqBase(pc),a1
- cmp.l #0,io_Actual(a1)
- bne.s Loop2
-
- move.l DosBase(pc),a6
- move.l Output(pc),d1
- move.l #Text3,d2
- moveq.l #11,d3
- jsr _LVOWrite(a6)
-
- move.l 4,a6
- move.l ReqBase(pc),a1
- move.l #1024,io_Length(a1)
- move.l #Buffer,io_Data(a1)
- move.l #0,io_Offset(a1)
- move.w #CMD_READ,io_Command(a1)
- jsr _LVODoIO(a6)
- move.l ReqBase(pc),a1
- move.l #0,io_Length(a1)
- move.w #TD_MOTOR,io_Command(a1)
- jsr _LVODoIO(a6)
-
- lea Buffer,a0
- move.l ReqBase(pc),a1
- jsr 12(a0)
- move.l d0,d7
- move.l a0,a5
- cmp.l #0,d0
- beq.s NoError
- move.l DosBase(pc),a6
- move.l Output(pc),d1
- move.l #Text4,d2
- moveq.l #15,d3
- jsr _LVOWrite(a6)
- NoError
- move.l ReqBase(pc),a1
- jsr _LVOCloseDevice(a6)
- move.l ReqBase(pc),a0
- jsr _LVODeleteIORequest(a6)
- move.l MsgBase(pc),a0
- jsr _LVODeleteMsgPort(a6)
-
- move.l 4,a6
- move.l DosBase(pc),a1
- jsr _LVOCloseLibrary(a6)
- cmp.l #0,d7
- beq.s DoTheBoot
- rts
-
- DoTheBoot
- move.l a5,a0
- jsr (a0)
- rts
-
- DosBase dc.l 0
- ReqBase dc.l 0
- MsgBase dc.l 0
- Output dc.l 0
-
- DosName dc.b 'dos.library',0
- TrackDiskName dc.b 'trackdisk.device',0
- Text1 dc.b ' pcHDiskBooter V1.00',10
- dc.b 10,'Please remove disk from drive DF0:',10
- Text2 dc.b 'Please insert disk to be booted into drive DF0:',10
- Text3 dc.b 'Booting...',10
- Text4 dc.b 10,'Boot failure!',10
-
- dc.b '$VER: DiskBooter V1.00',0
-
- SECTION 2,BSS
-
- Buffer ds.b 1024
-
- END
-