home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / TOXIC_14.ARJ / toxic_14 / TOXIC_14.D_2 / LEONARD / LEO_ST.ZIP / ST_PC / HD_EMUL / GET_DISK.S next >
Text File  |  1989-07-29  |  3KB  |  168 lines

  1.  
  2. ;****************************************************************
  3. ;*                                *
  4. ;*    Recupere l(image d'un disk                *
  5. ;*    Code and Idea by Leonard/OXYGENE.            *
  6. ;*                                *
  7. ;****************************************************************
  8.  
  9.  
  10. ; Tailles utilisateurs.
  11. NBS        equ    9
  12. NBT        equ    78
  13. CMD_READ    equ    8
  14. CMD_WRITE    equ    9
  15.  
  16.  
  17.     section    text
  18.  
  19.         movea.l    sp,a5
  20.         lea    my_stack,a7
  21.         move.l    4(a5),a5
  22.         move.l    #256,d7
  23.         add.l    $c(a5),d7
  24.         add.l    $14(a5),d7
  25.         add.l    $1c(a5),d7
  26.         move.l    d7,prg_size
  27.         move.l    d7,-(sp)
  28.         pea    (a5)
  29.         clr.w    -(sp)
  30.         move.w    #$4a,-(sp)
  31.         trap    #1
  32.         lea    12(sp),sp
  33.  
  34.  
  35.         lea    txt_intro,a0
  36.         bsr    print
  37.         bsr    wait_key
  38.  
  39.         moveq    #CMD_READ,d0
  40.         bsr.s    copy_disk
  41.  
  42.         lea    txt_chg,a0
  43.         bsr    print
  44.         bsr    wait_key
  45.  
  46.         moveq    #CMD_WRITE,d0
  47.         bsr.s    copy_disk
  48.         
  49.         lea    txt_over,a0
  50.         bsr    print
  51.         bsr    wait_key
  52.  
  53.         rts
  54.  
  55.         
  56.         
  57.         clr.w    -(sp)
  58.         trap    #1
  59.  
  60.  
  61.  
  62. copy_disk    clr.w    track
  63.         move.l    #buffer,ptr
  64.         move.w    d0,cmd
  65. .loop:        move.w    track,d0
  66.         moveq    #0,d1            ; Side 0
  67.         move.w    cmd,d3
  68.         move.l    ptr,a0
  69.         bsr    Track_Acces
  70.         add.l    #512*NBS,ptr
  71.         move.w    track,d0
  72.         moveq    #1,d1            ; Side 1
  73.         move.w    cmd,d3
  74.         move.l    ptr,a0
  75.         bsr    Track_Acces
  76.         add.l    #512*NBS,ptr
  77.         addq.w    #1,track
  78.         cmpi.w    #NBT,track
  79.         bne.s    .loop
  80.         rts
  81.  
  82. error        lea    txt_err,a0
  83.         bsr    print
  84.         bsr    wait_key
  85.         rts
  86.         
  87. track        dc.w    0
  88. cmd        dc.w    0
  89. ptr        dc.l    0
  90.  
  91. txt_err        dc.b    'DISK ERROR.',0
  92. txt_over    dc.b    'Ok, fini.',0
  93. txt_chg        dc.b    7,'Change disk.',0
  94.         even
  95.  
  96. sector        dc.w    0
  97. print:        pea    (a0)
  98.         move.w    #9,-(sp)
  99.         trap    #1
  100.         addq.l    #6,sp
  101.         rts
  102.  
  103. wait_key:
  104.         move.w    #7,-(sp)
  105.         trap    #1
  106.         addq.w    #2,sp
  107.         rts
  108.  
  109.  
  110. ; D0: Track
  111. ; D1: Side
  112. ; D3: Command (8=read,9=write)
  113. ; A0: Buffer adress.
  114. Track_Acces    cmpi.w    #CMD_READ,d3
  115.         beq.s    .ok
  116.         cmpi.w    #CMD_WRITE,d3
  117.         bne.s    .non
  118. .ok:        and.w    #1,d1
  119.         move.w    #NBS,-(sp)    ; Count
  120.         move.w    d1,-(sp)    ; Side
  121.         move.w    d0,-(sp)    ; Track
  122.         move.w    #1,-(sp)    ; Secteur deb
  123.         clr.w    -(sp)        ; Drive A:
  124.         clr.l    -(sp)
  125.         pea    (a0)        ; buffer
  126.         move.w    d3,-(sp)    ; Command
  127.         trap    #14
  128.         lea    20(sp),sp
  129. .non:        rts
  130.  
  131.  
  132. ;***************************************************************************
  133. ;***************************************************************************
  134.  
  135.     section    data
  136.  
  137. changed        dc.w    2    ; Flag premier changement pour MEDIA-CHG.
  138.  
  139.  
  140. txt_intro    dc.b    27,'E'
  141.         dc.b    'GET DISK.',10,13
  142.         dc.b    '(C)OXYGENE 1995 by Leonard.',10,13
  143.         dc.b    'Insert disk to be copied.',10,13
  144.         dc.b    0
  145.         even
  146.  
  147.  
  148.         even
  149.  
  150. ;***************************************************************************
  151. ;***************************************************************************
  152.  
  153.     section    bss
  154.  
  155.         ds.l    64
  156. my_stack:
  157. prg_size    ds.l    1
  158.  
  159. buffer        ds.b    512*2*NBS*NBT
  160.  
  161.         END
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.