home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1989 / USER1089.MSA / DXFORMAT.S < prev    next >
Text File  |  1985-11-19  |  3KB  |  128 lines

  1. *    Extended formatter - double sided 81 track x 10 sector
  2. *     By R.A.Waddilove
  3. *    Last modified 30/7/89
  4.  
  5.     OPT O+            all optimising on
  6.  
  7.     MOVE.L 4(A7),A6        get base page in A6
  8.     MOVE.L $C(A6),D0    get text segment size
  9.     ADD.L $14(A6),D0    add data segment
  10.     ADD.L  $1C(A6),D0    add uninitialised bit
  11.     ADD.L #$100,D0        add base page length
  12.     ADDA.L D0,A6        buffer starts here
  13.  
  14.     PEA prompt(PC)       Print prompt
  15.     MOVE.W #9,-(A7)
  16.     TRAP #1              BDOS 9
  17.     ADDQ.L #6,A7          Tidy stack
  18.     MOVE #8,-(A7)        C_NECIN
  19.     TRAP #1            wait for keypress
  20.     ADDQ.L #2,A7
  21.  
  22.     PEA okmess(PC)       Print formatting message
  23.     MOVE.W #9,-(A7)
  24.     TRAP #1              BDOS 9
  25.     ADDQ.L #6,A7          Tidy stack
  26.  
  27.     MOVE #0,D7        FOR i=0 TO 80
  28. loop    MOVE #0,D0        format side 0
  29.     BSR format
  30.     CMPI #0,D0        everything ok?
  31.     BNE error
  32.     MOVE #1,D0        format side 1
  33.     BSR format
  34.     CMPI #0,D0        everything ok?
  35.     BNE error
  36.     ADDQ #1,D7        NEXT track?
  37.     CMP #81,D7
  38.     BNE loop
  39.  
  40.     MOVE #2400,D0
  41.     MOVEA.L A6,A5        copy buffer address
  42. loop1    CLR.L (A5)+        zero buffer
  43.     DBRA D0,loop1
  44.  
  45. *     Zero directory
  46.     MOVE #1,D0        side 1
  47.     MOVE #0,D1        track 0
  48.     BSR write        zero track
  49.     CMPI #0,D0        everything ok?
  50.     BNE error
  51.  
  52. *    Create boot sector
  53.     MOVE #0,-(A7)        not executable boot sector
  54.     MOVE #3,-(A7)        80 track double side
  55.     MOVE.L #$1000001,-(A7)    random serial number
  56.     MOVE.L A6,-(A7)        buffer address
  57.     MOVE #18,-(A7)        _PROTOBT
  58.     TRAP #14        make prototype boot sector
  59.     ADDA.L #14,A7        tidy stack
  60.  
  61. *    Modify boot sector
  62.     MOVE.B #10,24(A6)    10 sectors per track
  63.     MOVE.B #84,19(A6)    84+6*256 (1620) sectors
  64.     MOVE.B #6,20(A6)
  65.  
  66. *    Write boot sector
  67.     MOVE #0,D0        side 0
  68.     MOVE #0,D1        track 0
  69.     BSR write        write boot sector & directory
  70.     CMPI #0,D0        everything ok?
  71.     BEQ exit
  72.  
  73. error    PEA errmess(PC)       Print error message
  74.     MOVE.W #9,-(A7)
  75.     TRAP #1              BDOS 9
  76.     ADDQ.L #6,A7          Tidy stack
  77.     MOVE #8,-(A7)        C_NECIN
  78.     TRAP #1            wait for keypress
  79.     ADDQ.L #2,A7        tidy stack
  80.  
  81. exit    MOVE.W #0,-(A7)      Return to Desktop
  82.     TRAP #1              BDOS 1
  83.  
  84. *********************************************************************
  85. * Write side D0, track D1, buffer A6
  86. *********************************************************************
  87. write    MOVE #10,-(A7)        10 sectors
  88.     MOVE D0,-(A7)        side D0
  89.     MOVE D1,-(A7)        track D1
  90.     MOVE #1,-(A7)        sector 1
  91.     MOVE #0,-(A7)        drive 0
  92.     MOVE.L #0,-(A7)        not used
  93.     MOVE.L A6,-(A7)        buffer address
  94.     MOVE #9,-(A7)        _FLOPWR
  95.     TRAP #14        write
  96.     ADDA.L #20,A7        tidy stack
  97.     RTS
  98.  
  99. *********************************************************************
  100. * Format side D0, track D7, buffer A6
  101. *********************************************************************
  102. format    MOVE #$E5E5,-(A7)    format code
  103.     MOVE.L #$87654321,-(A7)    magic number
  104.     MOVE #1,-(A7)        interleave factor
  105.     MOVE D0,-(A7)        side D0
  106.     MOVE D7,-(A7)        track D7
  107.     MOVE #10,-(A7)        10 sectors per track
  108.     MOVE #0,-(A7)        drive 0
  109.     MOVE.L #0,-(A7)        not used
  110.     MOVE.L A6,-(A7)        buffer address=A6
  111.     MOVE #10,-(A7)        _FLOPFMT
  112.     TRAP #14        format track
  113.     ADDA.L #26,A7        tidy stack
  114.     RTS
  115.  
  116.     EVEN
  117. prompt    DC.B "******* Extended Formatter *******",13,10
  118.     DC.B " Double sided 81 track x 10 sector",13,10
  119.     DC.B " Insert disc to format in Drive A",13,10
  120.     DC.B " Then press a key...",0
  121.     EVEN
  122. okmess    DC.B 13,10," Formatting...",0
  123.     EVEN
  124. errmess    DC.B 13,10," An error has occurred!"
  125.     DC.B 13,10," Press a key to exit...",0
  126.     EVEN
  127.     END
  128.