home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / util / acmautils.lha / AcmaUtils / Source / DiskBooter.s < prev    next >
Encoding:
Text File  |  1994-03-05  |  2.9 KB  |  156 lines

  1. ; DiskBooter V1.00
  2. ; Boots disk from drive df0:
  3.  
  4.  XREF _LVOOldOpenLibrary
  5.  XREF _LVOCloseLibrary
  6.  XREF _LVOCreateMsgPort
  7.  XREF _LVOCreateIORequest
  8.  XREF _LVOOpenDevice
  9.  XREF _LVOCloseDevice
  10.  XREF _LVODeleteIORequest
  11.  XREF _LVODeleteMsgPort
  12.  XREF _LVOOutput
  13.  XREF _LVOWrite
  14.  XREF _LVODoIO
  15.  XREF _LVODelay
  16.  
  17. io_Length    equ $24
  18. io_Data        equ $28
  19. io_Offset    equ $2c
  20. io_Command    equ $1c
  21. io_Flags    equ $1e
  22. io_Actual    equ $20
  23. CMD_READ    equ $2
  24. CMD_UPDATE    equ $4
  25. TD_MOTOR    equ $9
  26. TD_CHANGESTATE    equ $e
  27. TD_CHANGENUM    equ $d
  28.  
  29.  
  30. TrackTest
  31.  move.l  4,a6
  32.  lea     DosName(pc),a1
  33.  jsr     _LVOOldOpenLibrary(a6)
  34.  move.l  d0,DosBase
  35.  
  36.  jsr     _LVOCreateMsgPort(a6)
  37.  move.l  d0,MsgBase
  38.  move.l  d0,a0
  39.  moveq.l #$38,d0
  40.  jsr     _LVOCreateIORequest(a6)
  41.  move.l  d0,ReqBase
  42.  lea     TrackDiskName(pc),a0
  43.  moveq.l #0,d0
  44.  move.l  ReqBase(pc),a1
  45.  moveq.l #0,d1
  46.  jsr     _LVOOpenDevice(a6)
  47.  
  48.  move.l  DosBase(pc),a6
  49.  jsr     _LVOOutput(a6)
  50.  move.l  d0,Output
  51.  move.l  d0,d1
  52.  move.l  #Text1,d2
  53.  moveq.l #63,d3
  54.  jsr     _LVOWrite(a6)
  55.  
  56. Loop1
  57.  move.l  DosBase(pc),a6
  58.  moveq.l #25,d1
  59.  jsr     _LVODelay(a6)
  60.  move.l  4,a6
  61.  move.l  ReqBase(pc),a1
  62.  move.w  #TD_CHANGESTATE,io_Command(a1)
  63.  jsr     _LVODoIO(a6)
  64.  move.l  ReqBase(pc),a1
  65.  cmp.l   #0,io_Actual(a1)
  66.  beq.s   Loop1
  67.  
  68.  move.l  DosBase(pc),a6
  69.  move.l  Output(pc),d1
  70.  move.l  #Text2,d2
  71.  moveq.l #48,d3
  72.  jsr     _LVOWrite(a6)
  73.  
  74. Loop2
  75.  move.l  DosBase(pc),a6
  76.  moveq.l #25,d1
  77.  jsr     _LVODelay(a6)
  78.  move.l  4,a6
  79.  move.l  ReqBase(pc),a1
  80.  move.w  #TD_CHANGESTATE,io_Command(a1)
  81.  jsr     _LVODoIO(a6)
  82.  move.l  ReqBase(pc),a1
  83.  cmp.l   #0,io_Actual(a1)
  84.  bne.s   Loop2
  85.  
  86.  move.l  DosBase(pc),a6
  87.  move.l  Output(pc),d1
  88.  move.l  #Text3,d2
  89.  moveq.l #11,d3
  90.  jsr     _LVOWrite(a6)
  91.  
  92.  move.l  4,a6
  93.  move.l  ReqBase(pc),a1
  94.  move.l  #1024,io_Length(a1)
  95.  move.l  #Buffer,io_Data(a1)
  96.  move.l  #0,io_Offset(a1)
  97.  move.w  #CMD_READ,io_Command(a1)
  98.  jsr     _LVODoIO(a6)
  99.  move.l  ReqBase(pc),a1
  100.  move.l  #0,io_Length(a1)
  101.  move.w  #TD_MOTOR,io_Command(a1)
  102.  jsr     _LVODoIO(a6)
  103.  
  104.  lea     Buffer,a0
  105.  move.l  ReqBase(pc),a1
  106.  jsr     12(a0)
  107.  move.l  d0,d7
  108.  move.l  a0,a5
  109.  cmp.l   #0,d0
  110.  beq.s   NoError
  111.  move.l  DosBase(pc),a6
  112.  move.l  Output(pc),d1
  113.  move.l  #Text4,d2
  114.  moveq.l #15,d3
  115.  jsr     _LVOWrite(a6)
  116. NoError
  117.  move.l  ReqBase(pc),a1
  118.  jsr     _LVOCloseDevice(a6)
  119.  move.l  ReqBase(pc),a0
  120.  jsr     _LVODeleteIORequest(a6)
  121.  move.l  MsgBase(pc),a0
  122.  jsr     _LVODeleteMsgPort(a6)
  123.  
  124.  move.l  4,a6
  125.  move.l  DosBase(pc),a1
  126.  jsr     _LVOCloseLibrary(a6)
  127.  cmp.l   #0,d7
  128.  beq.s   DoTheBoot
  129.  rts
  130.  
  131. DoTheBoot
  132.  move.l  a5,a0
  133.  jsr     (a0)
  134.  rts
  135.  
  136. DosBase        dc.l 0
  137. ReqBase        dc.l 0
  138. MsgBase        dc.l 0
  139. Output        dc.l 0
  140.  
  141. DosName        dc.b 'dos.library',0
  142. TrackDiskName    dc.b 'trackdisk.device',0
  143. Text1        dc.b ' pcHDiskBooter V1.00',10
  144.         dc.b 10,'Please remove disk from drive DF0:',10
  145. Text2        dc.b 'Please insert disk to be booted into drive DF0:',10
  146. Text3        dc.b 'Booting...',10
  147. Text4        dc.b 10,'Boot failure!',10
  148.  
  149.         dc.b '$VER: DiskBooter V1.00',0
  150.  
  151.   SECTION 2,BSS
  152.  
  153. Buffer        ds.b 1024
  154.  
  155.  END
  156.