home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1990 / USERJA90.MSA / LISTINGS_FDFORMAT.S < prev    next >
Text File  |  1989-10-26  |  3KB  |  125 lines

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