home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / util / cli / acmautils / source / diskbooter1.3.s < prev    next >
Encoding:
Text File  |  1994-03-05  |  3.0 KB  |  168 lines

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