Home » CEEFAX disks » telesoftware9.adl » 02-09-88/T\DFS04

02-09-88/T\DFS04

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware9.adl
Filename: 02-09-88/T\DFS04
Read OK:
File size: 3D26 bytes
Load address: 0000
Exec address: FFFFFFFF
File contents
The Acorn DFS Osword commands  -  by  -  Gordon Horsington
----------------------------------------------------------

Module 4. Converting 40 track discs for 80 track drives
-------------------------------------------------------

      +----------------------------------------------------------+
      | All the DFS modules in  this  series  use programs which |
      | experiment  with the format and contents of discs. These |
      | experiments may  have disasterous effects if you use any |
      | of the programs  on  discs  which store programs or data |
      | which you cannot afford to lose.  You  should  first try |
      | out  the  programs  using  discs  that  have either been |
      | duplicated or, better still, have not been used at all.  |
      +----------------------------------------------------------+


In this module I will examine the problem of modifying forty track discs
so that they work properly on eighty track disc drives.

There are a number of possible solutions to the problem of using forty
track discs on an eighty track disc drive. If you have a 40/80 track
switchable disc drive it is possible to use *BACKUP 0 0 and switch the
track density selector from forty to eighty before inserting an eighty
track disc and then switch back to forty for the forty track disc. If you
use dual switchable drives this can be a less error prone method because
you would not have to remember to switch the drives between reading and
writing. One problem with this method is that, although it will produce a
disc which can be used on an eighty track disc drive, it will only use
forty of the eighty tracks. This could be overcome by using the *COPY
command and switching the track density selector appropriately. A
philosophical problem with using either of these methods to make the
conversion is that the conversion itself is pointless if you have
switchable disc drives.

The real problem exists for disc users who have a forty track disc and
only one eighty track disc drive. In these circumstances it is necessary
to modify the disc itself so that it becomes an eighty track disc. In this
module I will demonstrate how to use the Osword &7F commands to modify a
forty track disc on an eighty track disc drive so that the forty track
disc becomes an eighty track disc.

Forty track discs have a track density exactly one half of that used by
eighty track discs. Track &00 of both forty and eighty track discs share
the same physical position as the outer track on the disc. Track &01 on a
forty track disc is in the same physical position as track &02 on an
eighty track disc, track &02 is in the same position as track &04, and so
on. The relative position of the physical tracks on forty and eighty track
discs is shown in figure 1.


40T> 00    01 ... 09    0A    0B ... 13    14    15 ... 25    26    27
80T> 00 01 02 ... 12 13 14 15 16 ... 26 27 28 29 2A ... 4A 4B 4C 4D 4E 4F

   Figure 1. The relative position of tracks on 40 and 80 track discs
   ------------------------------------------------------------------


All the numbers in figure 1 are in hexadecimal and I am using the term
track density to refer to the physical proximity of the tracks (which are
closer together on 80 track discs). Because the track density of an eighty
track disc is twice that of a forty track disc, an eighty track disc is
sometimes refered to as double density even if it uses the single density
format. I will not refer to 80 track discs as double density because this
can be confused with the double density ADFS, which can use 80 track discs
in a double density format.

If you look at figure 1 you should be able to work out what needs to be
done to make forty track discs work on an eighty track disc drive. Because
track &00 is in the same physical position with both forty and eighty
track discs, any data on track &00 can be accessed with either type of
disc drive. All the other tracks on a forty track disc are in the wrong
physical position to be read on an eighty track disc drive. Assuming that
you have an Acorn DFS forty track disc in an eighty track disc drive, you
will need to copy physical track &02 (logical track &01) onto physical
track &01, copy physical track &04 (logical track &02) onto physical track
&02 and so on until physical track &4E (logical track &27) is copied onto
physical track &27. This copying is summarised in figure 2.


            Read physical track -> Format and write physical track

                            &00 -> &00
                            &02 -> &01
                            &04 -> &02
                            &06 -> &03
                                .
                                .
                                .
                            &4B -> &25
                            &4C -> &26
                            &4E -> &27

           Figure 2. The required copying of physical tracks
           -------------------------------------------------


You should note that figure 2 refers to the physical tracks and not the
logical tracks. This is important because, with Acorn DFS forty track
discs in an eighty track disc drive, physical track &02 will contain
logical track &01, physical track &04 will contain logical track &02, and
so on. It will be necessary to re-format each physical track after reading
and before writing the data back onto the disc. This is because the odd
numbered tracks will be unformatted and the even numbered tracks will have
the wrong logical track numbers in their ID fields.

When all forty tracks have been copied you can then go on to format the
tracks from &28 to &4F to make the disc an eighty track disc. In order
that the DFS can access all eighty tracks it is necessary to modify the
catalogue to indicate that 800 (&320) sectors are available. The number of
sectors is stored in bytes &06 (MSB) and &07 (LSB) of track &00, sector
&00. Note that it is not LSB and MSB as you might expect.

The following algorithm can be used to implement this idea.


1) Start with current track number = &00

2) Seek current track * 2 (ie. for logical track &01 seek &02, and so on)

3) Write the current track number into the track register (number &12).
   The head is now positioned above the appropriate track for reading the
   data and the track register also contains the logical track number.

4) Read the entire track into a buffer.

5) Write the current track number * 2 into the track register.

6) Format the physical track indicated by the current track number.

7) Write the contents of the buffer onto the newly formatted track.

8) Increment the current track number. If the current track number is less
   than &28 go back to 2) to copy the next track.

9) All forty tracks have been converted. Now format tracks &28 to &4F to
   create an eighty track disc.

10) Read the contents of track &00, sector &01 into a buffer.

11) OR the contents of buffer+&06 with the number &03, and store the
    number &20 in buffer+&07 to indicate that &320 (800) sectors are
    available on the disc.

12) Write the contents of the buffer back onto track &00, sector &01.


This algorithm has been implemented in the program CONVERT. You can use
the program CONVERT with an eighty track drive &00 to convert an Acorn
formatted 40 track single density disc into an eighty track single density
disc. The program will not work with copy-protected discs and you should
only use it if you have a duplicate of the disc you intend to convert.

If you use CONVERT and press the Escape key before it has finished the
conversion you will probably destroy some or all the data on the disc. Do
not use the program with a forty track disc drive. You have been warned to
be careful with all the programs used to illustrate this series. This
program can easily destroy all the data on your disc if you fail to use it
with care.

If you want to modify the program to make it more idiot proof you could
delete line 130 to take out the routine which polls the Escape flag. This
would make the program safer for ham-fisted or inexperienced users because
pressing Escape would not halt the program before it had finished.

Whatever modifications you make to this or any other of the programs used
to ilustrate the DFS modules of the series, don't ignore the warning about
the potentially disasterous effects these programs can have on your discs.


   10 REM: CONVERT
   20 osnewl=&FFE7
   30 oswrch=&FFEE
   40 osword=&FFF1
   50 osbyte=&FFF4
   60 DIM mcode &500
   70 DIM buffer &1000
   80 FOR pass=0 TO 2 STEP 2
   90 P%=mcode
  100 [       OPT pass
  110         JSR osnewl
  120 .mainloop
  130         JSR escape    \ check escape flag
  140         JSR seektwo   \ seek track * 2
  150         LDA track     \ load logical track number
  160         JSR register  \ write track register
  170         JSR read      \ read logical track
  180         LDA track     \ load logical track number
  190         ASL A         \ *2 = physical track
  200         JSR register  \ write track register
  210         JSR format    \ format physical track
  220         JSR write     \ write data onto disc
  230         JSR printbyte \ print track number
  240         INC track     \ get ready for next track
  250         LDA track     \ load logical track number
  260         CMP #40       \ is it track 40?
  270         BNE mainloop  \ if not read next track
  280 .formloop
  290         JSR escape    \ check escape flag
  300         JSR format    \ format tracks 40 - 79
  310         JSR printbyte \ print track number
  320         INC track     \ increment track number
  330         LDA track     \ load track number
  340         CMP #80       \ is it 80?
  350         BNE formloop  \ if not format next track
  360         LDA #0        \ go back to track 0
  370         STA track
  380         STA copyblock+7
  390         LDA #1        \ sector 1
  400         STA copyblock+8
  410         LDA #&21      \ 1 sector of 256 bytes
  420         STA copyblock+9
  430         JSR read      \ read track 0 sector 1
  440         LDA #&03      \ 800 sectors DIV 256
  450         ORA buffer+6  \ keep old *OPT4,n option
  460         STA buffer+6  \ MSB number of sectors
  470         LDA #&20      \ 800 sectors MOD 256
  480         STA buffer+7  \ LSB number of sectors
  490         JSR write     \ store track 0 sector 1
  500         JSR osnewl
  510         RTS           \ return to BASIC
  520 .escape
  530         LDA &FF       \ escape flag
  540         BMI pressed   \ bit 7 set if pressed
  550         RTS
  560 .pressed
  570         LDA #&7E
  580         JSR osbyte    \ acknowledge Escape
  590         BRK
  600         BRK
  610         EQUS "Escape"
  620         BRK
  630 .seektwo
  640         LDA track     \ source track number
  650         ASL A         \ *2
  660         STA seekblock+7 \ physical track number
  670         LDA #&7F
  680         LDX #seekblock MOD 256
  690         LDY #seekblock DIV 256
  700         JSR osword
  710         LDA seekblock+8 \ result
  720         BNE seekerror \ = 0 if OK
  730         RTS
  740 .seekerror
  750         BRK
  760         BRK
  770         EQUS "Seek error"
  780         BRK
  790 .format
  800         LDA track     \ source track number
  810         STA formblock+7 \ store physical track
  820         LDX #36
  830 .tableloop
  840         STA table,X   \ store logical track number in ID table
  850         DEX
  860         DEX
  870         DEX
  880         DEX
  890         BPL tableloop
  900         LDA #&7F
  910         LDX #formblock MOD 256
  920         LDY #formblock DIV 256
  930         JSR osword
  940         LDA formblock+12 \ result
  950         BNE formerror \ = 0 if OK
  960         RTS
  970 .formerror
  980         BRK
  990         BRK
 1000         EQUS "Format error"
 1010         BRK
 1020 .register
 1030         STA regblock+8 \ value to put in register
 1040         LDA #&7F
 1050         LDX #regblock MOD 256
 1060         LDY #regblock DIV 256
 1070         JSR osword
 1080         LDA regblock+9 \ result
 1090         BNE regerror  \ = 0 if OK
 1100         RTS
 1110 .regerror
 1120         BRK
 1130         BRK
 1140         EQUS "Special register error"           
 1150         BRK
 1160 .read
 1170         LDA track     \ source track number
 1180         STA copyblock+7 \ logical track number
 1190         LDA #&53      \ read data multi-sector
 1200         STA copyblock+6
 1210         LDA #&7F
 1220         LDX #copyblock MOD 256
 1230         LDY #copyblock DIV 256
 1240         JSR osword
 1250         LDA copyblock+10
 1260         BNE readerror
 1270         RTS
 1280 .readerror
 1290         BRK
 1300         BRK
 1310         EQUS "Read error"
 1320         BRK
 1330 .write
 1340         LDA #&4B      \ write data multi-sector
 1350         STA copyblock+6
 1360         LDA #&7F
 1370         LDX #copyblock MOD 256
 1380         LDY #copyblock DIV 256
 1390         JSR osword
 1400         LDA copyblock+10 \ result
 1410         BNE writeerror \ = 0 if OK
 1420         RTS
 1430 .writeerror
 1440         BRK
 1450         BRK
 1460         EQUS "Write error"
 1470         BRK
 1480 .printbyte
 1490         LDA track     \ print source track number
 1500         PHA
 1510         LSR A
 1520         LSR A
 1530         LSR A
 1540         LSR A
 1550         JSR nybble    \ print MS nybble
 1560         PLA
 1570         JSR nybble    \ print LS nybble
 1580         LDA #ASC(" ")
 1590         JSR oswrch    \ print space
 1600         JMP oswrch    \ print space
 1610 .nybble
 1620         AND #&0F
 1630         SED
 1640         CLC
 1650         ADC #&90
 1660         ADC #&40
 1670         CLD
 1680         JMP oswrch    \ print nybble and return
 1690 .seekblock
 1700         EQUB &00      \ drive 0
 1710         EQUD &00      \ does not matter
 1720         EQUB &01      \ 1 parameter
 1730         EQUB &69      \ seek command
 1740         EQUB &00      \ physical track
 1750         EQUB &00      \ result byte
 1760 .regblock
 1770         EQUB &00      \ drive 0
 1780         EQUD &00      \ does not matter
 1790         EQUD &00127A02 \ write special register
 1800         EQUB &00      \ result byte
 1810 .copyblock
 1820         EQUB &00      \ drive 0
 1830         EQUD buffer   \ address of buffer
 1840         EQUB &03      \ 3 parameters
 1850         EQUB &57      \ read data multi-sector
 1860         EQUB &00      \ logical track number
 1870         EQUB &00      \ logical sector number
 1880         EQUB &2A      \ 10 sectors of 256 bytes
 1890         EQUB &00      \ result byte
 1900 .formblock
 1910         EQUB &00      \ drive 0
 1920         EQUD table    \ address of sector table
 1930         EQUB &05      \ 5 parameters
 1940         EQUB &63      \ format command
 1950         EQUB &00      \ physical track number
 1960         EQUB &15      \ gap 3 size
 1970         EQUB &2A      \ 10 sectors of 256 bytes
 1980         EQUB &00      \ gap 5 size
 1990         EQUB &10      \ gap 1 size
 2000         EQUB &00      \ result byte
 2010 .table
 2020         EQUD &01000000
 2030         EQUD &01010000
 2040         EQUD &01020000
 2050         EQUD &01030000
 2060         EQUD &01040000
 2070         EQUD &01050000
 2080         EQUD &01060000
 2090         EQUD &01070000
 2100         EQUD &01080000
 2110         EQUD &01090000
 2120 .track
 2130         EQUB &00      \ logical track number
 2140 ]
 2150 NEXT
 2160 PRINT'"Place 40 track disc in 80 track drive 0"
 2170 PRINT"Press Spacebar to convert to 80 tracks"
 2180 REPEAT
 2190 UNTIL GET = 32
 2200 CALL mcode
00000000  54 68 65 20 41 63 6f 72  6e 20 44 46 53 20 4f 73  |The Acorn DFS Os|
00000010  77 6f 72 64 20 63 6f 6d  6d 61 6e 64 73 20 20 2d  |word commands  -|
00000020  20 20 62 79 20 20 2d 20  20 47 6f 72 64 6f 6e 20  |  by  -  Gordon |
00000030  48 6f 72 73 69 6e 67 74  6f 6e 0d 2d 2d 2d 2d 2d  |Horsington.-----|
00000040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000070  2d 2d 2d 2d 2d 0d 0d 4d  6f 64 75 6c 65 20 34 2e  |-----..Module 4.|
00000080  20 43 6f 6e 76 65 72 74  69 6e 67 20 34 30 20 74  | Converting 40 t|
00000090  72 61 63 6b 20 64 69 73  63 73 20 66 6f 72 20 38  |rack discs for 8|
000000a0  30 20 74 72 61 63 6b 20  64 72 69 76 65 73 0d 2d  |0 track drives.-|
000000b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000000e0  2d 2d 2d 2d 2d 2d 0d 0d  20 20 20 20 20 20 2b 2d  |------..      +-|
000000f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000120  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 0d 20 20 20 20 20  |---------+.     |
00000130  20 7c 20 41 6c 6c 20 74  68 65 20 44 46 53 20 6d  | | All the DFS m|
00000140  6f 64 75 6c 65 73 20 69  6e 20 20 74 68 69 73 20  |odules in  this |
00000150  20 73 65 72 69 65 73 20  20 75 73 65 20 70 72 6f  | series  use pro|
00000160  67 72 61 6d 73 20 77 68  69 63 68 20 7c 0d 20 20  |grams which |.  |
00000170  20 20 20 20 7c 20 65 78  70 65 72 69 6d 65 6e 74  |    | experiment|
00000180  20 20 77 69 74 68 20 74  68 65 20 66 6f 72 6d 61  |  with the forma|
00000190  74 20 61 6e 64 20 63 6f  6e 74 65 6e 74 73 20 6f  |t and contents o|
000001a0  66 20 64 69 73 63 73 2e  20 54 68 65 73 65 20 7c  |f discs. These ||
000001b0  0d 20 20 20 20 20 20 7c  20 65 78 70 65 72 69 6d  |.      | experim|
000001c0  65 6e 74 73 20 6d 61 79  20 20 68 61 76 65 20 64  |ents may  have d|
000001d0  69 73 61 73 74 65 72 6f  75 73 20 65 66 66 65 63  |isasterous effec|
000001e0  74 73 20 69 66 20 79 6f  75 20 75 73 65 20 61 6e  |ts if you use an|
000001f0  79 20 7c 0d 20 20 20 20  20 20 7c 20 6f 66 20 74  |y |.      | of t|
00000200  68 65 20 70 72 6f 67 72  61 6d 73 20 20 6f 6e 20  |he programs  on |
00000210  20 64 69 73 63 73 20 20  77 68 69 63 68 20 73 74  | discs  which st|
00000220  6f 72 65 20 70 72 6f 67  72 61 6d 73 20 6f 72 20  |ore programs or |
00000230  64 61 74 61 20 7c 0d 20  20 20 20 20 20 7c 20 77  |data |.      | w|
00000240  68 69 63 68 20 79 6f 75  20 63 61 6e 6e 6f 74 20  |hich you cannot |
00000250  61 66 66 6f 72 64 20 74  6f 20 6c 6f 73 65 2e 20  |afford to lose. |
00000260  20 59 6f 75 20 20 73 68  6f 75 6c 64 20 20 66 69  | You  should  fi|
00000270  72 73 74 20 74 72 79 20  7c 0d 20 20 20 20 20 20  |rst try |.      |
00000280  7c 20 6f 75 74 20 20 74  68 65 20 20 70 72 6f 67  || out  the  prog|
00000290  72 61 6d 73 20 20 75 73  69 6e 67 20 20 64 69 73  |rams  using  dis|
000002a0  63 73 20 20 74 68 61 74  20 20 68 61 76 65 20 65  |cs  that  have e|
000002b0  69 74 68 65 72 20 62 65  65 6e 20 7c 0d 20 20 20  |ither been |.   |
000002c0  20 20 20 7c 20 64 75 70  6c 69 63 61 74 65 64 20  |   | duplicated |
000002d0  6f 72 2c 20 62 65 74 74  65 72 20 73 74 69 6c 6c  |or, better still|
000002e0  2c 20 68 61 76 65 20 6e  6f 74 20 62 65 65 6e 20  |, have not been |
000002f0  75 73 65 64 20 61 74 20  61 6c 6c 2e 20 20 7c 0d  |used at all.  |.|
00000300  20 20 20 20 20 20 2b 2d  2d 2d 2d 2d 2d 2d 2d 2d  |      +---------|
00000310  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000340  2d 2b 0d 0d 0d 49 6e 20  74 68 69 73 20 6d 6f 64  |-+...In this mod|
00000350  75 6c 65 20 49 20 77 69  6c 6c 20 65 78 61 6d 69  |ule I will exami|
00000360  6e 65 20 74 68 65 20 70  72 6f 62 6c 65 6d 20 6f  |ne the problem o|
00000370  66 20 6d 6f 64 69 66 79  69 6e 67 20 66 6f 72 74  |f modifying fort|
00000380  79 20 74 72 61 63 6b 20  64 69 73 63 73 0d 73 6f  |y track discs.so|
00000390  20 74 68 61 74 20 74 68  65 79 20 77 6f 72 6b 20  | that they work |
000003a0  70 72 6f 70 65 72 6c 79  20 6f 6e 20 65 69 67 68  |properly on eigh|
000003b0  74 79 20 74 72 61 63 6b  20 64 69 73 63 20 64 72  |ty track disc dr|
000003c0  69 76 65 73 2e 0d 0d 54  68 65 72 65 20 61 72 65  |ives...There are|
000003d0  20 61 20 6e 75 6d 62 65  72 20 6f 66 20 70 6f 73  | a number of pos|
000003e0  73 69 62 6c 65 20 73 6f  6c 75 74 69 6f 6e 73 20  |sible solutions |
000003f0  74 6f 20 74 68 65 20 70  72 6f 62 6c 65 6d 20 6f  |to the problem o|
00000400  66 20 75 73 69 6e 67 20  66 6f 72 74 79 0d 74 72  |f using forty.tr|
00000410  61 63 6b 20 64 69 73 63  73 20 6f 6e 20 61 6e 20  |ack discs on an |
00000420  65 69 67 68 74 79 20 74  72 61 63 6b 20 64 69 73  |eighty track dis|
00000430  63 20 64 72 69 76 65 2e  20 49 66 20 79 6f 75 20  |c drive. If you |
00000440  68 61 76 65 20 61 20 34  30 2f 38 30 20 74 72 61  |have a 40/80 tra|
00000450  63 6b 0d 73 77 69 74 63  68 61 62 6c 65 20 64 69  |ck.switchable di|
00000460  73 63 20 64 72 69 76 65  20 69 74 20 69 73 20 70  |sc drive it is p|
00000470  6f 73 73 69 62 6c 65 20  74 6f 20 75 73 65 20 2a  |ossible to use *|
00000480  42 41 43 4b 55 50 20 30  20 30 20 61 6e 64 20 73  |BACKUP 0 0 and s|
00000490  77 69 74 63 68 20 74 68  65 0d 74 72 61 63 6b 20  |witch the.track |
000004a0  64 65 6e 73 69 74 79 20  73 65 6c 65 63 74 6f 72  |density selector|
000004b0  20 66 72 6f 6d 20 66 6f  72 74 79 20 74 6f 20 65  | from forty to e|
000004c0  69 67 68 74 79 20 62 65  66 6f 72 65 20 69 6e 73  |ighty before ins|
000004d0  65 72 74 69 6e 67 20 61  6e 20 65 69 67 68 74 79  |erting an eighty|
000004e0  0d 74 72 61 63 6b 20 64  69 73 63 20 61 6e 64 20  |.track disc and |
000004f0  74 68 65 6e 20 73 77 69  74 63 68 20 62 61 63 6b  |then switch back|
00000500  20 74 6f 20 66 6f 72 74  79 20 66 6f 72 20 74 68  | to forty for th|
00000510  65 20 66 6f 72 74 79 20  74 72 61 63 6b 20 64 69  |e forty track di|
00000520  73 63 2e 20 49 66 20 79  6f 75 0d 75 73 65 20 64  |sc. If you.use d|
00000530  75 61 6c 20 73 77 69 74  63 68 61 62 6c 65 20 64  |ual switchable d|
00000540  72 69 76 65 73 20 74 68  69 73 20 63 61 6e 20 62  |rives this can b|
00000550  65 20 61 20 6c 65 73 73  20 65 72 72 6f 72 20 70  |e a less error p|
00000560  72 6f 6e 65 20 6d 65 74  68 6f 64 20 62 65 63 61  |rone method beca|
00000570  75 73 65 0d 79 6f 75 20  77 6f 75 6c 64 20 6e 6f  |use.you would no|
00000580  74 20 68 61 76 65 20 74  6f 20 72 65 6d 65 6d 62  |t have to rememb|
00000590  65 72 20 74 6f 20 73 77  69 74 63 68 20 74 68 65  |er to switch the|
000005a0  20 64 72 69 76 65 73 20  62 65 74 77 65 65 6e 20  | drives between |
000005b0  72 65 61 64 69 6e 67 20  61 6e 64 0d 77 72 69 74  |reading and.writ|
000005c0  69 6e 67 2e 20 4f 6e 65  20 70 72 6f 62 6c 65 6d  |ing. One problem|
000005d0  20 77 69 74 68 20 74 68  69 73 20 6d 65 74 68 6f  | with this metho|
000005e0  64 20 69 73 20 74 68 61  74 2c 20 61 6c 74 68 6f  |d is that, altho|
000005f0  75 67 68 20 69 74 20 77  69 6c 6c 20 70 72 6f 64  |ugh it will prod|
00000600  75 63 65 20 61 0d 64 69  73 63 20 77 68 69 63 68  |uce a.disc which|
00000610  20 63 61 6e 20 62 65 20  75 73 65 64 20 6f 6e 20  | can be used on |
00000620  61 6e 20 65 69 67 68 74  79 20 74 72 61 63 6b 20  |an eighty track |
00000630  64 69 73 63 20 64 72 69  76 65 2c 20 69 74 20 77  |disc drive, it w|
00000640  69 6c 6c 20 6f 6e 6c 79  20 75 73 65 0d 66 6f 72  |ill only use.for|
00000650  74 79 20 6f 66 20 74 68  65 20 65 69 67 68 74 79  |ty of the eighty|
00000660  20 74 72 61 63 6b 73 2e  20 54 68 69 73 20 63 6f  | tracks. This co|
00000670  75 6c 64 20 62 65 20 6f  76 65 72 63 6f 6d 65 20  |uld be overcome |
00000680  62 79 20 75 73 69 6e 67  20 74 68 65 20 2a 43 4f  |by using the *CO|
00000690  50 59 0d 63 6f 6d 6d 61  6e 64 20 61 6e 64 20 73  |PY.command and s|
000006a0  77 69 74 63 68 69 6e 67  20 74 68 65 20 74 72 61  |witching the tra|
000006b0  63 6b 20 64 65 6e 73 69  74 79 20 73 65 6c 65 63  |ck density selec|
000006c0  74 6f 72 20 61 70 70 72  6f 70 72 69 61 74 65 6c  |tor appropriatel|
000006d0  79 2e 20 41 0d 70 68 69  6c 6f 73 6f 70 68 69 63  |y. A.philosophic|
000006e0  61 6c 20 70 72 6f 62 6c  65 6d 20 77 69 74 68 20  |al problem with |
000006f0  75 73 69 6e 67 20 65 69  74 68 65 72 20 6f 66 20  |using either of |
00000700  74 68 65 73 65 20 6d 65  74 68 6f 64 73 20 74 6f  |these methods to|
00000710  20 6d 61 6b 65 20 74 68  65 0d 63 6f 6e 76 65 72  | make the.conver|
00000720  73 69 6f 6e 20 69 73 20  74 68 61 74 20 74 68 65  |sion is that the|
00000730  20 63 6f 6e 76 65 72 73  69 6f 6e 20 69 74 73 65  | conversion itse|
00000740  6c 66 20 69 73 20 70 6f  69 6e 74 6c 65 73 73 20  |lf is pointless |
00000750  69 66 20 79 6f 75 20 68  61 76 65 0d 73 77 69 74  |if you have.swit|
00000760  63 68 61 62 6c 65 20 64  69 73 63 20 64 72 69 76  |chable disc driv|
00000770  65 73 2e 0d 0d 54 68 65  20 72 65 61 6c 20 70 72  |es...The real pr|
00000780  6f 62 6c 65 6d 20 65 78  69 73 74 73 20 66 6f 72  |oblem exists for|
00000790  20 64 69 73 63 20 75 73  65 72 73 20 77 68 6f 20  | disc users who |
000007a0  68 61 76 65 20 61 20 66  6f 72 74 79 20 74 72 61  |have a forty tra|
000007b0  63 6b 20 64 69 73 63 20  61 6e 64 0d 6f 6e 6c 79  |ck disc and.only|
000007c0  20 6f 6e 65 20 65 69 67  68 74 79 20 74 72 61 63  | one eighty trac|
000007d0  6b 20 64 69 73 63 20 64  72 69 76 65 2e 20 49 6e  |k disc drive. In|
000007e0  20 74 68 65 73 65 20 63  69 72 63 75 6d 73 74 61  | these circumsta|
000007f0  6e 63 65 73 20 69 74 20  69 73 20 6e 65 63 65 73  |nces it is neces|
00000800  73 61 72 79 0d 74 6f 20  6d 6f 64 69 66 79 20 74  |sary.to modify t|
00000810  68 65 20 64 69 73 63 20  69 74 73 65 6c 66 20 73  |he disc itself s|
00000820  6f 20 74 68 61 74 20 69  74 20 62 65 63 6f 6d 65  |o that it become|
00000830  73 20 61 6e 20 65 69 67  68 74 79 20 74 72 61 63  |s an eighty trac|
00000840  6b 20 64 69 73 63 2e 20  49 6e 20 74 68 69 73 0d  |k disc. In this.|
00000850  6d 6f 64 75 6c 65 20 49  20 77 69 6c 6c 20 64 65  |module I will de|
00000860  6d 6f 6e 73 74 72 61 74  65 20 68 6f 77 20 74 6f  |monstrate how to|
00000870  20 75 73 65 20 74 68 65  20 4f 73 77 6f 72 64 20  | use the Osword |
00000880  26 37 46 20 63 6f 6d 6d  61 6e 64 73 20 74 6f 20  |&7F commands to |
00000890  6d 6f 64 69 66 79 20 61  0d 66 6f 72 74 79 20 74  |modify a.forty t|
000008a0  72 61 63 6b 20 64 69 73  63 20 6f 6e 20 61 6e 20  |rack disc on an |
000008b0  65 69 67 68 74 79 20 74  72 61 63 6b 20 64 69 73  |eighty track dis|
000008c0  63 20 64 72 69 76 65 20  73 6f 20 74 68 61 74 20  |c drive so that |
000008d0  74 68 65 20 66 6f 72 74  79 20 74 72 61 63 6b 0d  |the forty track.|
000008e0  64 69 73 63 20 62 65 63  6f 6d 65 73 20 61 6e 20  |disc becomes an |
000008f0  65 69 67 68 74 79 20 74  72 61 63 6b 20 64 69 73  |eighty track dis|
00000900  63 2e 0d 0d 46 6f 72 74  79 20 74 72 61 63 6b 20  |c...Forty track |
00000910  64 69 73 63 73 20 68 61  76 65 20 61 20 74 72 61  |discs have a tra|
00000920  63 6b 20 64 65 6e 73 69  74 79 20 65 78 61 63 74  |ck density exact|
00000930  6c 79 20 6f 6e 65 20 68  61 6c 66 20 6f 66 20 74  |ly one half of t|
00000940  68 61 74 20 75 73 65 64  20 62 79 0d 65 69 67 68  |hat used by.eigh|
00000950  74 79 20 74 72 61 63 6b  20 64 69 73 63 73 2e 20  |ty track discs. |
00000960  54 72 61 63 6b 20 26 30  30 20 6f 66 20 62 6f 74  |Track &00 of bot|
00000970  68 20 66 6f 72 74 79 20  61 6e 64 20 65 69 67 68  |h forty and eigh|
00000980  74 79 20 74 72 61 63 6b  20 64 69 73 63 73 20 73  |ty track discs s|
00000990  68 61 72 65 0d 74 68 65  20 73 61 6d 65 20 70 68  |hare.the same ph|
000009a0  79 73 69 63 61 6c 20 70  6f 73 69 74 69 6f 6e 20  |ysical position |
000009b0  61 73 20 74 68 65 20 6f  75 74 65 72 20 74 72 61  |as the outer tra|
000009c0  63 6b 20 6f 6e 20 74 68  65 20 64 69 73 63 2e 20  |ck on the disc. |
000009d0  54 72 61 63 6b 20 26 30  31 20 6f 6e 20 61 0d 66  |Track &01 on a.f|
000009e0  6f 72 74 79 20 74 72 61  63 6b 20 64 69 73 63 20  |orty track disc |
000009f0  69 73 20 69 6e 20 74 68  65 20 73 61 6d 65 20 70  |is in the same p|
00000a00  68 79 73 69 63 61 6c 20  70 6f 73 69 74 69 6f 6e  |hysical position|
00000a10  20 61 73 20 74 72 61 63  6b 20 26 30 32 20 6f 6e  | as track &02 on|
00000a20  20 61 6e 0d 65 69 67 68  74 79 20 74 72 61 63 6b  | an.eighty track|
00000a30  20 64 69 73 63 2c 20 74  72 61 63 6b 20 26 30 32  | disc, track &02|
00000a40  20 69 73 20 69 6e 20 74  68 65 20 73 61 6d 65 20  | is in the same |
00000a50  70 6f 73 69 74 69 6f 6e  20 61 73 20 74 72 61 63  |position as trac|
00000a60  6b 20 26 30 34 2c 20 61  6e 64 20 73 6f 0d 6f 6e  |k &04, and so.on|
00000a70  2e 20 54 68 65 20 72 65  6c 61 74 69 76 65 20 70  |. The relative p|
00000a80  6f 73 69 74 69 6f 6e 20  6f 66 20 74 68 65 20 70  |osition of the p|
00000a90  68 79 73 69 63 61 6c 20  74 72 61 63 6b 73 20 6f  |hysical tracks o|
00000aa0  6e 20 66 6f 72 74 79 20  61 6e 64 20 65 69 67 68  |n forty and eigh|
00000ab0  74 79 20 74 72 61 63 6b  0d 64 69 73 63 73 20 69  |ty track.discs i|
00000ac0  73 20 73 68 6f 77 6e 20  69 6e 20 66 69 67 75 72  |s shown in figur|
00000ad0  65 20 31 2e 0d 0d 0d 34  30 54 3e 20 30 30 20 20  |e 1....40T> 00  |
00000ae0  20 20 30 31 20 2e 2e 2e  20 30 39 20 20 20 20 30  |  01 ... 09    0|
00000af0  41 20 20 20 20 30 42 20  2e 2e 2e 20 31 33 20 20  |A    0B ... 13  |
00000b00  20 20 31 34 20 20 20 20  31 35 20 2e 2e 2e 20 32  |  14    15 ... 2|
00000b10  35 20 20 20 20 32 36 20  20 20 20 32 37 0d 38 30  |5    26    27.80|
00000b20  54 3e 20 30 30 20 30 31  20 30 32 20 2e 2e 2e 20  |T> 00 01 02 ... |
00000b30  31 32 20 31 33 20 31 34  20 31 35 20 31 36 20 2e  |12 13 14 15 16 .|
00000b40  2e 2e 20 32 36 20 32 37  20 32 38 20 32 39 20 32  |.. 26 27 28 29 2|
00000b50  41 20 2e 2e 2e 20 34 41  20 34 42 20 34 43 20 34  |A ... 4A 4B 4C 4|
00000b60  44 20 34 45 20 34 46 0d  0d 20 20 20 46 69 67 75  |D 4E 4F..   Figu|
00000b70  72 65 20 31 2e 20 54 68  65 20 72 65 6c 61 74 69  |re 1. The relati|
00000b80  76 65 20 70 6f 73 69 74  69 6f 6e 20 6f 66 20 74  |ve position of t|
00000b90  72 61 63 6b 73 20 6f 6e  20 34 30 20 61 6e 64 20  |racks on 40 and |
00000ba0  38 30 20 74 72 61 63 6b  20 64 69 73 63 73 0d 20  |80 track discs. |
00000bb0  20 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |  --------------|
00000bc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000bf0  2d 2d 2d 2d 0d 0d 0d 41  6c 6c 20 74 68 65 20 6e  |----...All the n|
00000c00  75 6d 62 65 72 73 20 69  6e 20 66 69 67 75 72 65  |umbers in figure|
00000c10  20 31 20 61 72 65 20 69  6e 20 68 65 78 61 64 65  | 1 are in hexade|
00000c20  63 69 6d 61 6c 20 61 6e  64 20 49 20 61 6d 20 75  |cimal and I am u|
00000c30  73 69 6e 67 20 74 68 65  20 74 65 72 6d 0d 74 72  |sing the term.tr|
00000c40  61 63 6b 20 64 65 6e 73  69 74 79 20 74 6f 20 72  |ack density to r|
00000c50  65 66 65 72 20 74 6f 20  74 68 65 20 70 68 79 73  |efer to the phys|
00000c60  69 63 61 6c 20 70 72 6f  78 69 6d 69 74 79 20 6f  |ical proximity o|
00000c70  66 20 74 68 65 20 74 72  61 63 6b 73 20 28 77 68  |f the tracks (wh|
00000c80  69 63 68 20 61 72 65 0d  63 6c 6f 73 65 72 20 74  |ich are.closer t|
00000c90  6f 67 65 74 68 65 72 20  6f 6e 20 38 30 20 74 72  |ogether on 80 tr|
00000ca0  61 63 6b 20 64 69 73 63  73 29 2e 20 42 65 63 61  |ack discs). Beca|
00000cb0  75 73 65 20 74 68 65 20  74 72 61 63 6b 20 64 65  |use the track de|
00000cc0  6e 73 69 74 79 20 6f 66  20 61 6e 20 65 69 67 68  |nsity of an eigh|
00000cd0  74 79 0d 74 72 61 63 6b  20 64 69 73 63 20 69 73  |ty.track disc is|
00000ce0  20 74 77 69 63 65 20 74  68 61 74 20 6f 66 20 61  | twice that of a|
00000cf0  20 66 6f 72 74 79 20 74  72 61 63 6b 20 64 69 73  | forty track dis|
00000d00  63 2c 20 61 6e 20 65 69  67 68 74 79 20 74 72 61  |c, an eighty tra|
00000d10  63 6b 20 64 69 73 63 20  69 73 0d 73 6f 6d 65 74  |ck disc is.somet|
00000d20  69 6d 65 73 20 72 65 66  65 72 65 64 20 74 6f 20  |imes refered to |
00000d30  61 73 20 64 6f 75 62 6c  65 20 64 65 6e 73 69 74  |as double densit|
00000d40  79 20 65 76 65 6e 20 69  66 20 69 74 20 75 73 65  |y even if it use|
00000d50  73 20 74 68 65 20 73 69  6e 67 6c 65 20 64 65 6e  |s the single den|
00000d60  73 69 74 79 0d 66 6f 72  6d 61 74 2e 20 49 20 77  |sity.format. I w|
00000d70  69 6c 6c 20 6e 6f 74 20  72 65 66 65 72 20 74 6f  |ill not refer to|
00000d80  20 38 30 20 74 72 61 63  6b 20 64 69 73 63 73 20  | 80 track discs |
00000d90  61 73 20 64 6f 75 62 6c  65 20 64 65 6e 73 69 74  |as double densit|
00000da0  79 20 62 65 63 61 75 73  65 20 74 68 69 73 0d 63  |y because this.c|
00000db0  61 6e 20 62 65 20 63 6f  6e 66 75 73 65 64 20 77  |an be confused w|
00000dc0  69 74 68 20 74 68 65 20  64 6f 75 62 6c 65 20 64  |ith the double d|
00000dd0  65 6e 73 69 74 79 20 41  44 46 53 2c 20 77 68 69  |ensity ADFS, whi|
00000de0  63 68 20 63 61 6e 20 75  73 65 20 38 30 20 74 72  |ch can use 80 tr|
00000df0  61 63 6b 20 64 69 73 63  73 0d 69 6e 20 61 20 64  |ack discs.in a d|
00000e00  6f 75 62 6c 65 20 64 65  6e 73 69 74 79 20 66 6f  |ouble density fo|
00000e10  72 6d 61 74 2e 0d 0d 49  66 20 79 6f 75 20 6c 6f  |rmat...If you lo|
00000e20  6f 6b 20 61 74 20 66 69  67 75 72 65 20 31 20 79  |ok at figure 1 y|
00000e30  6f 75 20 73 68 6f 75 6c  64 20 62 65 20 61 62 6c  |ou should be abl|
00000e40  65 20 74 6f 20 77 6f 72  6b 20 6f 75 74 20 77 68  |e to work out wh|
00000e50  61 74 20 6e 65 65 64 73  20 74 6f 20 62 65 0d 64  |at needs to be.d|
00000e60  6f 6e 65 20 74 6f 20 6d  61 6b 65 20 66 6f 72 74  |one to make fort|
00000e70  79 20 74 72 61 63 6b 20  64 69 73 63 73 20 77 6f  |y track discs wo|
00000e80  72 6b 20 6f 6e 20 61 6e  20 65 69 67 68 74 79 20  |rk on an eighty |
00000e90  74 72 61 63 6b 20 64 69  73 63 20 64 72 69 76 65  |track disc drive|
00000ea0  2e 20 42 65 63 61 75 73  65 0d 74 72 61 63 6b 20  |. Because.track |
00000eb0  26 30 30 20 69 73 20 69  6e 20 74 68 65 20 73 61  |&00 is in the sa|
00000ec0  6d 65 20 70 68 79 73 69  63 61 6c 20 70 6f 73 69  |me physical posi|
00000ed0  74 69 6f 6e 20 77 69 74  68 20 62 6f 74 68 20 66  |tion with both f|
00000ee0  6f 72 74 79 20 61 6e 64  20 65 69 67 68 74 79 0d  |orty and eighty.|
00000ef0  74 72 61 63 6b 20 64 69  73 63 73 2c 20 61 6e 79  |track discs, any|
00000f00  20 64 61 74 61 20 6f 6e  20 74 72 61 63 6b 20 26  | data on track &|
00000f10  30 30 20 63 61 6e 20 62  65 20 61 63 63 65 73 73  |00 can be access|
00000f20  65 64 20 77 69 74 68 20  65 69 74 68 65 72 20 74  |ed with either t|
00000f30  79 70 65 20 6f 66 0d 64  69 73 63 20 64 72 69 76  |ype of.disc driv|
00000f40  65 2e 20 41 6c 6c 20 74  68 65 20 6f 74 68 65 72  |e. All the other|
00000f50  20 74 72 61 63 6b 73 20  6f 6e 20 61 20 66 6f 72  | tracks on a for|
00000f60  74 79 20 74 72 61 63 6b  20 64 69 73 63 20 61 72  |ty track disc ar|
00000f70  65 20 69 6e 20 74 68 65  20 77 72 6f 6e 67 0d 70  |e in the wrong.p|
00000f80  68 79 73 69 63 61 6c 20  70 6f 73 69 74 69 6f 6e  |hysical position|
00000f90  20 74 6f 20 62 65 20 72  65 61 64 20 6f 6e 20 61  | to be read on a|
00000fa0  6e 20 65 69 67 68 74 79  20 74 72 61 63 6b 20 64  |n eighty track d|
00000fb0  69 73 63 20 64 72 69 76  65 2e 20 41 73 73 75 6d  |isc drive. Assum|
00000fc0  69 6e 67 20 74 68 61 74  0d 79 6f 75 20 68 61 76  |ing that.you hav|
00000fd0  65 20 61 6e 20 41 63 6f  72 6e 20 44 46 53 20 66  |e an Acorn DFS f|
00000fe0  6f 72 74 79 20 74 72 61  63 6b 20 64 69 73 63 20  |orty track disc |
00000ff0  69 6e 20 61 6e 20 65 69  67 68 74 79 20 74 72 61  |in an eighty tra|
00001000  63 6b 20 64 69 73 63 20  64 72 69 76 65 2c 20 79  |ck disc drive, y|
00001010  6f 75 0d 77 69 6c 6c 20  6e 65 65 64 20 74 6f 20  |ou.will need to |
00001020  63 6f 70 79 20 70 68 79  73 69 63 61 6c 20 74 72  |copy physical tr|
00001030  61 63 6b 20 26 30 32 20  28 6c 6f 67 69 63 61 6c  |ack &02 (logical|
00001040  20 74 72 61 63 6b 20 26  30 31 29 20 6f 6e 74 6f  | track &01) onto|
00001050  20 70 68 79 73 69 63 61  6c 0d 74 72 61 63 6b 20  | physical.track |
00001060  26 30 31 2c 20 63 6f 70  79 20 70 68 79 73 69 63  |&01, copy physic|
00001070  61 6c 20 74 72 61 63 6b  20 26 30 34 20 28 6c 6f  |al track &04 (lo|
00001080  67 69 63 61 6c 20 74 72  61 63 6b 20 26 30 32 29  |gical track &02)|
00001090  20 6f 6e 74 6f 20 70 68  79 73 69 63 61 6c 20 74  | onto physical t|
000010a0  72 61 63 6b 0d 26 30 32  20 61 6e 64 20 73 6f 20  |rack.&02 and so |
000010b0  6f 6e 20 75 6e 74 69 6c  20 70 68 79 73 69 63 61  |on until physica|
000010c0  6c 20 74 72 61 63 6b 20  26 34 45 20 28 6c 6f 67  |l track &4E (log|
000010d0  69 63 61 6c 20 74 72 61  63 6b 20 26 32 37 29 20  |ical track &27) |
000010e0  69 73 20 63 6f 70 69 65  64 20 6f 6e 74 6f 0d 70  |is copied onto.p|
000010f0  68 79 73 69 63 61 6c 20  74 72 61 63 6b 20 26 32  |hysical track &2|
00001100  37 2e 20 54 68 69 73 20  63 6f 70 79 69 6e 67 20  |7. This copying |
00001110  69 73 20 73 75 6d 6d 61  72 69 73 65 64 20 69 6e  |is summarised in|
00001120  20 66 69 67 75 72 65 20  32 2e 0d 0d 0d 20 20 20  | figure 2....   |
00001130  20 20 20 20 20 20 20 20  20 52 65 61 64 20 70 68  |         Read ph|
00001140  79 73 69 63 61 6c 20 74  72 61 63 6b 20 2d 3e 20  |ysical track -> |
00001150  46 6f 72 6d 61 74 20 61  6e 64 20 77 72 69 74 65  |Format and write|
00001160  20 70 68 79 73 69 63 61  6c 20 74 72 61 63 6b 0d  | physical track.|
00001170  0d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001180  20 20 20 20 20 20 20 20  20 20 20 20 20 26 30 30  |             &00|
00001190  20 2d 3e 20 26 30 30 0d  20 20 20 20 20 20 20 20  | -> &00.        |
000011a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011b0  20 20 20 20 26 30 32 20  2d 3e 20 26 30 31 0d 20  |    &02 -> &01. |
000011c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011d0  20 20 20 20 20 20 20 20  20 20 20 26 30 34 20 2d  |           &04 -|
000011e0  3e 20 26 30 32 0d 20 20  20 20 20 20 20 20 20 20  |> &02.          |
000011f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001200  20 20 26 30 36 20 2d 3e  20 26 30 33 0d 20 20 20  |  &06 -> &03.   |
00001210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001220  20 20 20 20 20 20 20 20  20 20 20 20 20 2e 0d 20  |             .. |
00001230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001240  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 2e  |               .|
00001250  0d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001270  20 2e 0d 20 20 20 20 20  20 20 20 20 20 20 20 20  | ..             |
00001280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 26  |               &|
00001290  34 42 20 2d 3e 20 26 32  35 0d 20 20 20 20 20 20  |4B -> &25.      |
000012a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000012b0  20 20 20 20 20 20 26 34  43 20 2d 3e 20 26 32 36  |      &4C -> &26|
000012c0  0d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000012d0  20 20 20 20 20 20 20 20  20 20 20 20 20 26 34 45  |             &4E|
000012e0  20 2d 3e 20 26 32 37 0d  0d 20 20 20 20 20 20 20  | -> &27..       |
000012f0  20 20 20 20 46 69 67 75  72 65 20 32 2e 20 54 68  |    Figure 2. Th|
00001300  65 20 72 65 71 75 69 72  65 64 20 63 6f 70 79 69  |e required copyi|
00001310  6e 67 20 6f 66 20 70 68  79 73 69 63 61 6c 20 74  |ng of physical t|
00001320  72 61 63 6b 73 0d 20 20  20 20 20 20 20 20 20 20  |racks.          |
00001330  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00001340  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001360  2d 2d 0d 0d 0d 59 6f 75  20 73 68 6f 75 6c 64 20  |--...You should |
00001370  6e 6f 74 65 20 74 68 61  74 20 66 69 67 75 72 65  |note that figure|
00001380  20 32 20 72 65 66 65 72  73 20 74 6f 20 74 68 65  | 2 refers to the|
00001390  20 70 68 79 73 69 63 61  6c 20 74 72 61 63 6b 73  | physical tracks|
000013a0  20 61 6e 64 20 6e 6f 74  20 74 68 65 0d 6c 6f 67  | and not the.log|
000013b0  69 63 61 6c 20 74 72 61  63 6b 73 2e 20 54 68 69  |ical tracks. Thi|
000013c0  73 20 69 73 20 69 6d 70  6f 72 74 61 6e 74 20 62  |s is important b|
000013d0  65 63 61 75 73 65 2c 20  77 69 74 68 20 41 63 6f  |ecause, with Aco|
000013e0  72 6e 20 44 46 53 20 66  6f 72 74 79 20 74 72 61  |rn DFS forty tra|
000013f0  63 6b 0d 64 69 73 63 73  20 69 6e 20 61 6e 20 65  |ck.discs in an e|
00001400  69 67 68 74 79 20 74 72  61 63 6b 20 64 69 73 63  |ighty track disc|
00001410  20 64 72 69 76 65 2c 20  70 68 79 73 69 63 61 6c  | drive, physical|
00001420  20 74 72 61 63 6b 20 26  30 32 20 77 69 6c 6c 20  | track &02 will |
00001430  63 6f 6e 74 61 69 6e 0d  6c 6f 67 69 63 61 6c 20  |contain.logical |
00001440  74 72 61 63 6b 20 26 30  31 2c 20 70 68 79 73 69  |track &01, physi|
00001450  63 61 6c 20 74 72 61 63  6b 20 26 30 34 20 77 69  |cal track &04 wi|
00001460  6c 6c 20 63 6f 6e 74 61  69 6e 20 6c 6f 67 69 63  |ll contain logic|
00001470  61 6c 20 74 72 61 63 6b  20 26 30 32 2c 20 61 6e  |al track &02, an|
00001480  64 0d 73 6f 20 6f 6e 2e  20 49 74 20 77 69 6c 6c  |d.so on. It will|
00001490  20 62 65 20 6e 65 63 65  73 73 61 72 79 20 74 6f  | be necessary to|
000014a0  20 72 65 2d 66 6f 72 6d  61 74 20 65 61 63 68 20  | re-format each |
000014b0  70 68 79 73 69 63 61 6c  20 74 72 61 63 6b 20 61  |physical track a|
000014c0  66 74 65 72 20 72 65 61  64 69 6e 67 0d 61 6e 64  |fter reading.and|
000014d0  20 62 65 66 6f 72 65 20  77 72 69 74 69 6e 67 20  | before writing |
000014e0  74 68 65 20 64 61 74 61  20 62 61 63 6b 20 6f 6e  |the data back on|
000014f0  74 6f 20 74 68 65 20 64  69 73 63 2e 20 54 68 69  |to the disc. Thi|
00001500  73 20 69 73 20 62 65 63  61 75 73 65 20 74 68 65  |s is because the|
00001510  20 6f 64 64 0d 6e 75 6d  62 65 72 65 64 20 74 72  | odd.numbered tr|
00001520  61 63 6b 73 20 77 69 6c  6c 20 62 65 20 75 6e 66  |acks will be unf|
00001530  6f 72 6d 61 74 74 65 64  20 61 6e 64 20 74 68 65  |ormatted and the|
00001540  20 65 76 65 6e 20 6e 75  6d 62 65 72 65 64 20 74  | even numbered t|
00001550  72 61 63 6b 73 20 77 69  6c 6c 20 68 61 76 65 0d  |racks will have.|
00001560  74 68 65 20 77 72 6f 6e  67 20 6c 6f 67 69 63 61  |the wrong logica|
00001570  6c 20 74 72 61 63 6b 20  6e 75 6d 62 65 72 73 20  |l track numbers |
00001580  69 6e 20 74 68 65 69 72  20 49 44 20 66 69 65 6c  |in their ID fiel|
00001590  64 73 2e 0d 0d 57 68 65  6e 20 61 6c 6c 20 66 6f  |ds...When all fo|
000015a0  72 74 79 20 74 72 61 63  6b 73 20 68 61 76 65 20  |rty tracks have |
000015b0  62 65 65 6e 20 63 6f 70  69 65 64 20 79 6f 75 20  |been copied you |
000015c0  63 61 6e 20 74 68 65 6e  20 67 6f 20 6f 6e 20 74  |can then go on t|
000015d0  6f 20 66 6f 72 6d 61 74  20 74 68 65 0d 74 72 61  |o format the.tra|
000015e0  63 6b 73 20 66 72 6f 6d  20 26 32 38 20 74 6f 20  |cks from &28 to |
000015f0  26 34 46 20 74 6f 20 6d  61 6b 65 20 74 68 65 20  |&4F to make the |
00001600  64 69 73 63 20 61 6e 20  65 69 67 68 74 79 20 74  |disc an eighty t|
00001610  72 61 63 6b 20 64 69 73  63 2e 20 49 6e 20 6f 72  |rack disc. In or|
00001620  64 65 72 0d 74 68 61 74  20 74 68 65 20 44 46 53  |der.that the DFS|
00001630  20 63 61 6e 20 61 63 63  65 73 73 20 61 6c 6c 20  | can access all |
00001640  65 69 67 68 74 79 20 74  72 61 63 6b 73 20 69 74  |eighty tracks it|
00001650  20 69 73 20 6e 65 63 65  73 73 61 72 79 20 74 6f  | is necessary to|
00001660  20 6d 6f 64 69 66 79 20  74 68 65 0d 63 61 74 61  | modify the.cata|
00001670  6c 6f 67 75 65 20 74 6f  20 69 6e 64 69 63 61 74  |logue to indicat|
00001680  65 20 74 68 61 74 20 38  30 30 20 28 26 33 32 30  |e that 800 (&320|
00001690  29 20 73 65 63 74 6f 72  73 20 61 72 65 20 61 76  |) sectors are av|
000016a0  61 69 6c 61 62 6c 65 2e  20 54 68 65 20 6e 75 6d  |ailable. The num|
000016b0  62 65 72 20 6f 66 0d 73  65 63 74 6f 72 73 20 69  |ber of.sectors i|
000016c0  73 20 73 74 6f 72 65 64  20 69 6e 20 62 79 74 65  |s stored in byte|
000016d0  73 20 26 30 36 20 28 4d  53 42 29 20 61 6e 64 20  |s &06 (MSB) and |
000016e0  26 30 37 20 28 4c 53 42  29 20 6f 66 20 74 72 61  |&07 (LSB) of tra|
000016f0  63 6b 20 26 30 30 2c 20  73 65 63 74 6f 72 0d 26  |ck &00, sector.&|
00001700  30 30 2e 20 4e 6f 74 65  20 74 68 61 74 20 69 74  |00. Note that it|
00001710  20 69 73 20 6e 6f 74 20  4c 53 42 20 61 6e 64 20  | is not LSB and |
00001720  4d 53 42 20 61 73 20 79  6f 75 20 6d 69 67 68 74  |MSB as you might|
00001730  20 65 78 70 65 63 74 2e  0d 0d 54 68 65 20 66 6f  | expect...The fo|
00001740  6c 6c 6f 77 69 6e 67 20  61 6c 67 6f 72 69 74 68  |llowing algorith|
00001750  6d 20 63 61 6e 20 62 65  20 75 73 65 64 20 74 6f  |m can be used to|
00001760  20 69 6d 70 6c 65 6d 65  6e 74 20 74 68 69 73 20  | implement this |
00001770  69 64 65 61 2e 0d 0d 0d  31 29 20 53 74 61 72 74  |idea....1) Start|
00001780  20 77 69 74 68 20 63 75  72 72 65 6e 74 20 74 72  | with current tr|
00001790  61 63 6b 20 6e 75 6d 62  65 72 20 3d 20 26 30 30  |ack number = &00|
000017a0  0d 0d 32 29 20 53 65 65  6b 20 63 75 72 72 65 6e  |..2) Seek curren|
000017b0  74 20 74 72 61 63 6b 20  2a 20 32 20 28 69 65 2e  |t track * 2 (ie.|
000017c0  20 66 6f 72 20 6c 6f 67  69 63 61 6c 20 74 72 61  | for logical tra|
000017d0  63 6b 20 26 30 31 20 73  65 65 6b 20 26 30 32 2c  |ck &01 seek &02,|
000017e0  20 61 6e 64 20 73 6f 20  6f 6e 29 0d 0d 33 29 20  | and so on)..3) |
000017f0  57 72 69 74 65 20 74 68  65 20 63 75 72 72 65 6e  |Write the curren|
00001800  74 20 74 72 61 63 6b 20  6e 75 6d 62 65 72 20 69  |t track number i|
00001810  6e 74 6f 20 74 68 65 20  74 72 61 63 6b 20 72 65  |nto the track re|
00001820  67 69 73 74 65 72 20 28  6e 75 6d 62 65 72 20 26  |gister (number &|
00001830  31 32 29 2e 0d 20 20 20  54 68 65 20 68 65 61 64  |12)..   The head|
00001840  20 69 73 20 6e 6f 77 20  70 6f 73 69 74 69 6f 6e  | is now position|
00001850  65 64 20 61 62 6f 76 65  20 74 68 65 20 61 70 70  |ed above the app|
00001860  72 6f 70 72 69 61 74 65  20 74 72 61 63 6b 20 66  |ropriate track f|
00001870  6f 72 20 72 65 61 64 69  6e 67 20 74 68 65 0d 20  |or reading the. |
00001880  20 20 64 61 74 61 20 61  6e 64 20 74 68 65 20 74  |  data and the t|
00001890  72 61 63 6b 20 72 65 67  69 73 74 65 72 20 61 6c  |rack register al|
000018a0  73 6f 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |so contains the |
000018b0  6c 6f 67 69 63 61 6c 20  74 72 61 63 6b 20 6e 75  |logical track nu|
000018c0  6d 62 65 72 2e 0d 0d 34  29 20 52 65 61 64 20 74  |mber...4) Read t|
000018d0  68 65 20 65 6e 74 69 72  65 20 74 72 61 63 6b 20  |he entire track |
000018e0  69 6e 74 6f 20 61 20 62  75 66 66 65 72 2e 0d 0d  |into a buffer...|
000018f0  35 29 20 57 72 69 74 65  20 74 68 65 20 63 75 72  |5) Write the cur|
00001900  72 65 6e 74 20 74 72 61  63 6b 20 6e 75 6d 62 65  |rent track numbe|
00001910  72 20 2a 20 32 20 69 6e  74 6f 20 74 68 65 20 74  |r * 2 into the t|
00001920  72 61 63 6b 20 72 65 67  69 73 74 65 72 2e 0d 0d  |rack register...|
00001930  36 29 20 46 6f 72 6d 61  74 20 74 68 65 20 70 68  |6) Format the ph|
00001940  79 73 69 63 61 6c 20 74  72 61 63 6b 20 69 6e 64  |ysical track ind|
00001950  69 63 61 74 65 64 20 62  79 20 74 68 65 20 63 75  |icated by the cu|
00001960  72 72 65 6e 74 20 74 72  61 63 6b 20 6e 75 6d 62  |rrent track numb|
00001970  65 72 2e 0d 0d 37 29 20  57 72 69 74 65 20 74 68  |er...7) Write th|
00001980  65 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 74 68  |e contents of th|
00001990  65 20 62 75 66 66 65 72  20 6f 6e 74 6f 20 74 68  |e buffer onto th|
000019a0  65 20 6e 65 77 6c 79 20  66 6f 72 6d 61 74 74 65  |e newly formatte|
000019b0  64 20 74 72 61 63 6b 2e  0d 0d 38 29 20 49 6e 63  |d track...8) Inc|
000019c0  72 65 6d 65 6e 74 20 74  68 65 20 63 75 72 72 65  |rement the curre|
000019d0  6e 74 20 74 72 61 63 6b  20 6e 75 6d 62 65 72 2e  |nt track number.|
000019e0  20 49 66 20 74 68 65 20  63 75 72 72 65 6e 74 20  | If the current |
000019f0  74 72 61 63 6b 20 6e 75  6d 62 65 72 20 69 73 20  |track number is |
00001a00  6c 65 73 73 0d 20 20 20  74 68 61 6e 20 26 32 38  |less.   than &28|
00001a10  20 67 6f 20 62 61 63 6b  20 74 6f 20 32 29 20 74  | go back to 2) t|
00001a20  6f 20 63 6f 70 79 20 74  68 65 20 6e 65 78 74 20  |o copy the next |
00001a30  74 72 61 63 6b 2e 0d 0d  39 29 20 41 6c 6c 20 66  |track...9) All f|
00001a40  6f 72 74 79 20 74 72 61  63 6b 73 20 68 61 76 65  |orty tracks have|
00001a50  20 62 65 65 6e 20 63 6f  6e 76 65 72 74 65 64 2e  | been converted.|
00001a60  20 4e 6f 77 20 66 6f 72  6d 61 74 20 74 72 61 63  | Now format trac|
00001a70  6b 73 20 26 32 38 20 74  6f 20 26 34 46 20 74 6f  |ks &28 to &4F to|
00001a80  0d 20 20 20 63 72 65 61  74 65 20 61 6e 20 65 69  |.   create an ei|
00001a90  67 68 74 79 20 74 72 61  63 6b 20 64 69 73 63 2e  |ghty track disc.|
00001aa0  0d 0d 31 30 29 20 52 65  61 64 20 74 68 65 20 63  |..10) Read the c|
00001ab0  6f 6e 74 65 6e 74 73 20  6f 66 20 74 72 61 63 6b  |ontents of track|
00001ac0  20 26 30 30 2c 20 73 65  63 74 6f 72 20 26 30 31  | &00, sector &01|
00001ad0  20 69 6e 74 6f 20 61 20  62 75 66 66 65 72 2e 0d  | into a buffer..|
00001ae0  0d 31 31 29 20 4f 52 20  74 68 65 20 63 6f 6e 74  |.11) OR the cont|
00001af0  65 6e 74 73 20 6f 66 20  62 75 66 66 65 72 2b 26  |ents of buffer+&|
00001b00  30 36 20 77 69 74 68 20  74 68 65 20 6e 75 6d 62  |06 with the numb|
00001b10  65 72 20 26 30 33 2c 20  61 6e 64 20 73 74 6f 72  |er &03, and stor|
00001b20  65 20 74 68 65 0d 20 20  20 20 6e 75 6d 62 65 72  |e the.    number|
00001b30  20 26 32 30 20 69 6e 20  62 75 66 66 65 72 2b 26  | &20 in buffer+&|
00001b40  30 37 20 74 6f 20 69 6e  64 69 63 61 74 65 20 74  |07 to indicate t|
00001b50  68 61 74 20 26 33 32 30  20 28 38 30 30 29 20 73  |hat &320 (800) s|
00001b60  65 63 74 6f 72 73 20 61  72 65 0d 20 20 20 20 61  |ectors are.    a|
00001b70  76 61 69 6c 61 62 6c 65  20 6f 6e 20 74 68 65 20  |vailable on the |
00001b80  64 69 73 63 2e 0d 0d 31  32 29 20 57 72 69 74 65  |disc...12) Write|
00001b90  20 74 68 65 20 63 6f 6e  74 65 6e 74 73 20 6f 66  | the contents of|
00001ba0  20 74 68 65 20 62 75 66  66 65 72 20 62 61 63 6b  | the buffer back|
00001bb0  20 6f 6e 74 6f 20 74 72  61 63 6b 20 26 30 30 2c  | onto track &00,|
00001bc0  20 73 65 63 74 6f 72 20  26 30 31 2e 0d 0d 0d 54  | sector &01....T|
00001bd0  68 69 73 20 61 6c 67 6f  72 69 74 68 6d 20 68 61  |his algorithm ha|
00001be0  73 20 62 65 65 6e 20 69  6d 70 6c 65 6d 65 6e 74  |s been implement|
00001bf0  65 64 20 69 6e 20 74 68  65 20 70 72 6f 67 72 61  |ed in the progra|
00001c00  6d 20 43 4f 4e 56 45 52  54 2e 20 59 6f 75 20 63  |m CONVERT. You c|
00001c10  61 6e 20 75 73 65 0d 74  68 65 20 70 72 6f 67 72  |an use.the progr|
00001c20  61 6d 20 43 4f 4e 56 45  52 54 20 77 69 74 68 20  |am CONVERT with |
00001c30  61 6e 20 65 69 67 68 74  79 20 74 72 61 63 6b 20  |an eighty track |
00001c40  64 72 69 76 65 20 26 30  30 20 74 6f 20 63 6f 6e  |drive &00 to con|
00001c50  76 65 72 74 20 61 6e 20  41 63 6f 72 6e 0d 66 6f  |vert an Acorn.fo|
00001c60  72 6d 61 74 74 65 64 20  34 30 20 74 72 61 63 6b  |rmatted 40 track|
00001c70  20 73 69 6e 67 6c 65 20  64 65 6e 73 69 74 79 20  | single density |
00001c80  64 69 73 63 20 69 6e 74  6f 20 61 6e 20 65 69 67  |disc into an eig|
00001c90  68 74 79 20 74 72 61 63  6b 20 73 69 6e 67 6c 65  |hty track single|
00001ca0  20 64 65 6e 73 69 74 79  0d 64 69 73 63 2e 20 54  | density.disc. T|
00001cb0  68 65 20 70 72 6f 67 72  61 6d 20 77 69 6c 6c 20  |he program will |
00001cc0  6e 6f 74 20 77 6f 72 6b  20 77 69 74 68 20 63 6f  |not work with co|
00001cd0  70 79 2d 70 72 6f 74 65  63 74 65 64 20 64 69 73  |py-protected dis|
00001ce0  63 73 20 61 6e 64 20 79  6f 75 20 73 68 6f 75 6c  |cs and you shoul|
00001cf0  64 0d 6f 6e 6c 79 20 75  73 65 20 69 74 20 69 66  |d.only use it if|
00001d00  20 79 6f 75 20 68 61 76  65 20 61 20 64 75 70 6c  | you have a dupl|
00001d10  69 63 61 74 65 20 6f 66  20 74 68 65 20 64 69 73  |icate of the dis|
00001d20  63 20 79 6f 75 20 69 6e  74 65 6e 64 20 74 6f 20  |c you intend to |
00001d30  63 6f 6e 76 65 72 74 2e  0d 0d 49 66 20 79 6f 75  |convert...If you|
00001d40  20 75 73 65 20 43 4f 4e  56 45 52 54 20 61 6e 64  | use CONVERT and|
00001d50  20 70 72 65 73 73 20 74  68 65 20 45 73 63 61 70  | press the Escap|
00001d60  65 20 6b 65 79 20 62 65  66 6f 72 65 20 69 74 20  |e key before it |
00001d70  68 61 73 20 66 69 6e 69  73 68 65 64 20 74 68 65  |has finished the|
00001d80  0d 63 6f 6e 76 65 72 73  69 6f 6e 20 79 6f 75 20  |.conversion you |
00001d90  77 69 6c 6c 20 70 72 6f  62 61 62 6c 79 20 64 65  |will probably de|
00001da0  73 74 72 6f 79 20 73 6f  6d 65 20 6f 72 20 61 6c  |stroy some or al|
00001db0  6c 20 74 68 65 20 64 61  74 61 20 6f 6e 20 74 68  |l the data on th|
00001dc0  65 20 64 69 73 63 2e 20  44 6f 0d 6e 6f 74 20 75  |e disc. Do.not u|
00001dd0  73 65 20 74 68 65 20 70  72 6f 67 72 61 6d 20 77  |se the program w|
00001de0  69 74 68 20 61 20 66 6f  72 74 79 20 74 72 61 63  |ith a forty trac|
00001df0  6b 20 64 69 73 63 20 64  72 69 76 65 2e 20 59 6f  |k disc drive. Yo|
00001e00  75 20 68 61 76 65 20 62  65 65 6e 20 77 61 72 6e  |u have been warn|
00001e10  65 64 20 74 6f 0d 62 65  20 63 61 72 65 66 75 6c  |ed to.be careful|
00001e20  20 77 69 74 68 20 61 6c  6c 20 74 68 65 20 70 72  | with all the pr|
00001e30  6f 67 72 61 6d 73 20 75  73 65 64 20 74 6f 20 69  |ograms used to i|
00001e40  6c 6c 75 73 74 72 61 74  65 20 74 68 69 73 20 73  |llustrate this s|
00001e50  65 72 69 65 73 2e 20 54  68 69 73 0d 70 72 6f 67  |eries. This.prog|
00001e60  72 61 6d 20 63 61 6e 20  65 61 73 69 6c 79 20 64  |ram can easily d|
00001e70  65 73 74 72 6f 79 20 61  6c 6c 20 74 68 65 20 64  |estroy all the d|
00001e80  61 74 61 20 6f 6e 20 79  6f 75 72 20 64 69 73 63  |ata on your disc|
00001e90  20 69 66 20 79 6f 75 20  66 61 69 6c 20 74 6f 20  | if you fail to |
00001ea0  75 73 65 20 69 74 0d 77  69 74 68 20 63 61 72 65  |use it.with care|
00001eb0  2e 0d 0d 49 66 20 79 6f  75 20 77 61 6e 74 20 74  |...If you want t|
00001ec0  6f 20 6d 6f 64 69 66 79  20 74 68 65 20 70 72 6f  |o modify the pro|
00001ed0  67 72 61 6d 20 74 6f 20  6d 61 6b 65 20 69 74 20  |gram to make it |
00001ee0  6d 6f 72 65 20 69 64 69  6f 74 20 70 72 6f 6f 66  |more idiot proof|
00001ef0  20 79 6f 75 20 63 6f 75  6c 64 0d 64 65 6c 65 74  | you could.delet|
00001f00  65 20 6c 69 6e 65 20 31  33 30 20 74 6f 20 74 61  |e line 130 to ta|
00001f10  6b 65 20 6f 75 74 20 74  68 65 20 72 6f 75 74 69  |ke out the routi|
00001f20  6e 65 20 77 68 69 63 68  20 70 6f 6c 6c 73 20 74  |ne which polls t|
00001f30  68 65 20 45 73 63 61 70  65 20 66 6c 61 67 2e 20  |he Escape flag. |
00001f40  54 68 69 73 0d 77 6f 75  6c 64 20 6d 61 6b 65 20  |This.would make |
00001f50  74 68 65 20 70 72 6f 67  72 61 6d 20 73 61 66 65  |the program safe|
00001f60  72 20 66 6f 72 20 68 61  6d 2d 66 69 73 74 65 64  |r for ham-fisted|
00001f70  20 6f 72 20 69 6e 65 78  70 65 72 69 65 6e 63 65  | or inexperience|
00001f80  64 20 75 73 65 72 73 20  62 65 63 61 75 73 65 0d  |d users because.|
00001f90  70 72 65 73 73 69 6e 67  20 45 73 63 61 70 65 20  |pressing Escape |
00001fa0  77 6f 75 6c 64 20 6e 6f  74 20 68 61 6c 74 20 74  |would not halt t|
00001fb0  68 65 20 70 72 6f 67 72  61 6d 20 62 65 66 6f 72  |he program befor|
00001fc0  65 20 69 74 20 68 61 64  20 66 69 6e 69 73 68 65  |e it had finishe|
00001fd0  64 2e 0d 0d 57 68 61 74  65 76 65 72 20 6d 6f 64  |d...Whatever mod|
00001fe0  69 66 69 63 61 74 69 6f  6e 73 20 79 6f 75 20 6d  |ifications you m|
00001ff0  61 6b 65 20 74 6f 20 74  68 69 73 20 6f 72 20 61  |ake to this or a|
00002000  6e 79 20 6f 74 68 65 72  20 6f 66 20 74 68 65 20  |ny other of the |
00002010  70 72 6f 67 72 61 6d 73  20 75 73 65 64 0d 74 6f  |programs used.to|
00002020  20 69 6c 75 73 74 72 61  74 65 20 74 68 65 20 44  | ilustrate the D|
00002030  46 53 20 6d 6f 64 75 6c  65 73 20 6f 66 20 74 68  |FS modules of th|
00002040  65 20 73 65 72 69 65 73  2c 20 64 6f 6e 27 74 20  |e series, don't |
00002050  69 67 6e 6f 72 65 20 74  68 65 20 77 61 72 6e 69  |ignore the warni|
00002060  6e 67 20 61 62 6f 75 74  0d 74 68 65 20 70 6f 74  |ng about.the pot|
00002070  65 6e 74 69 61 6c 6c 79  20 64 69 73 61 73 74 65  |entially disaste|
00002080  72 6f 75 73 20 65 66 66  65 63 74 73 20 74 68 65  |rous effects the|
00002090  73 65 20 70 72 6f 67 72  61 6d 73 20 63 61 6e 20  |se programs can |
000020a0  68 61 76 65 20 6f 6e 20  79 6f 75 72 20 64 69 73  |have on your dis|
000020b0  63 73 2e 0d 0d 0d 20 20  20 31 30 20 52 45 4d 3a  |cs....   10 REM:|
000020c0  20 43 4f 4e 56 45 52 54  0d 20 20 20 32 30 20 6f  | CONVERT.   20 o|
000020d0  73 6e 65 77 6c 3d 26 46  46 45 37 0d 20 20 20 33  |snewl=&FFE7.   3|
000020e0  30 20 6f 73 77 72 63 68  3d 26 46 46 45 45 0d 20  |0 oswrch=&FFEE. |
000020f0  20 20 34 30 20 6f 73 77  6f 72 64 3d 26 46 46 46  |  40 osword=&FFF|
00002100  31 0d 20 20 20 35 30 20  6f 73 62 79 74 65 3d 26  |1.   50 osbyte=&|
00002110  46 46 46 34 0d 20 20 20  36 30 20 44 49 4d 20 6d  |FFF4.   60 DIM m|
00002120  63 6f 64 65 20 26 35 30  30 0d 20 20 20 37 30 20  |code &500.   70 |
00002130  44 49 4d 20 62 75 66 66  65 72 20 26 31 30 30 30  |DIM buffer &1000|
00002140  0d 20 20 20 38 30 20 46  4f 52 20 70 61 73 73 3d  |.   80 FOR pass=|
00002150  30 20 54 4f 20 32 20 53  54 45 50 20 32 0d 20 20  |0 TO 2 STEP 2.  |
00002160  20 39 30 20 50 25 3d 6d  63 6f 64 65 0d 20 20 31  | 90 P%=mcode.  1|
00002170  30 30 20 5b 20 20 20 20  20 20 20 4f 50 54 20 70  |00 [       OPT p|
00002180  61 73 73 0d 20 20 31 31  30 20 20 20 20 20 20 20  |ass.  110       |
00002190  20 20 4a 53 52 20 6f 73  6e 65 77 6c 0d 20 20 31  |  JSR osnewl.  1|
000021a0  32 30 20 2e 6d 61 69 6e  6c 6f 6f 70 0d 20 20 31  |20 .mainloop.  1|
000021b0  33 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 65  |30         JSR e|
000021c0  73 63 61 70 65 20 20 20  20 5c 20 63 68 65 63 6b  |scape    \ check|
000021d0  20 65 73 63 61 70 65 20  66 6c 61 67 0d 20 20 31  | escape flag.  1|
000021e0  34 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 73  |40         JSR s|
000021f0  65 65 6b 74 77 6f 20 20  20 5c 20 73 65 65 6b 20  |eektwo   \ seek |
00002200  74 72 61 63 6b 20 2a 20  32 0d 20 20 31 35 30 20  |track * 2.  150 |
00002210  20 20 20 20 20 20 20 20  4c 44 41 20 74 72 61 63  |        LDA trac|
00002220  6b 20 20 20 20 20 5c 20  6c 6f 61 64 20 6c 6f 67  |k     \ load log|
00002230  69 63 61 6c 20 74 72 61  63 6b 20 6e 75 6d 62 65  |ical track numbe|
00002240  72 0d 20 20 31 36 30 20  20 20 20 20 20 20 20 20  |r.  160         |
00002250  4a 53 52 20 72 65 67 69  73 74 65 72 20 20 5c 20  |JSR register  \ |
00002260  77 72 69 74 65 20 74 72  61 63 6b 20 72 65 67 69  |write track regi|
00002270  73 74 65 72 0d 20 20 31  37 30 20 20 20 20 20 20  |ster.  170      |
00002280  20 20 20 4a 53 52 20 72  65 61 64 20 20 20 20 20  |   JSR read     |
00002290  20 5c 20 72 65 61 64 20  6c 6f 67 69 63 61 6c 20  | \ read logical |
000022a0  74 72 61 63 6b 0d 20 20  31 38 30 20 20 20 20 20  |track.  180     |
000022b0  20 20 20 20 4c 44 41 20  74 72 61 63 6b 20 20 20  |    LDA track   |
000022c0  20 20 5c 20 6c 6f 61 64  20 6c 6f 67 69 63 61 6c  |  \ load logical|
000022d0  20 74 72 61 63 6b 20 6e  75 6d 62 65 72 0d 20 20  | track number.  |
000022e0  31 39 30 20 20 20 20 20  20 20 20 20 41 53 4c 20  |190         ASL |
000022f0  41 20 20 20 20 20 20 20  20 20 5c 20 2a 32 20 3d  |A         \ *2 =|
00002300  20 70 68 79 73 69 63 61  6c 20 74 72 61 63 6b 0d  | physical track.|
00002310  20 20 32 30 30 20 20 20  20 20 20 20 20 20 4a 53  |  200         JS|
00002320  52 20 72 65 67 69 73 74  65 72 20 20 5c 20 77 72  |R register  \ wr|
00002330  69 74 65 20 74 72 61 63  6b 20 72 65 67 69 73 74  |ite track regist|
00002340  65 72 0d 20 20 32 31 30  20 20 20 20 20 20 20 20  |er.  210        |
00002350  20 4a 53 52 20 66 6f 72  6d 61 74 20 20 20 20 5c  | JSR format    \|
00002360  20 66 6f 72 6d 61 74 20  70 68 79 73 69 63 61 6c  | format physical|
00002370  20 74 72 61 63 6b 0d 20  20 32 32 30 20 20 20 20  | track.  220    |
00002380  20 20 20 20 20 4a 53 52  20 77 72 69 74 65 20 20  |     JSR write  |
00002390  20 20 20 5c 20 77 72 69  74 65 20 64 61 74 61 20  |   \ write data |
000023a0  6f 6e 74 6f 20 64 69 73  63 0d 20 20 32 33 30 20  |onto disc.  230 |
000023b0  20 20 20 20 20 20 20 20  4a 53 52 20 70 72 69 6e  |        JSR prin|
000023c0  74 62 79 74 65 20 5c 20  70 72 69 6e 74 20 74 72  |tbyte \ print tr|
000023d0  61 63 6b 20 6e 75 6d 62  65 72 0d 20 20 32 34 30  |ack number.  240|
000023e0  20 20 20 20 20 20 20 20  20 49 4e 43 20 74 72 61  |         INC tra|
000023f0  63 6b 20 20 20 20 20 5c  20 67 65 74 20 72 65 61  |ck     \ get rea|
00002400  64 79 20 66 6f 72 20 6e  65 78 74 20 74 72 61 63  |dy for next trac|
00002410  6b 0d 20 20 32 35 30 20  20 20 20 20 20 20 20 20  |k.  250         |
00002420  4c 44 41 20 74 72 61 63  6b 20 20 20 20 20 5c 20  |LDA track     \ |
00002430  6c 6f 61 64 20 6c 6f 67  69 63 61 6c 20 74 72 61  |load logical tra|
00002440  63 6b 20 6e 75 6d 62 65  72 0d 20 20 32 36 30 20  |ck number.  260 |
00002450  20 20 20 20 20 20 20 20  43 4d 50 20 23 34 30 20  |        CMP #40 |
00002460  20 20 20 20 20 20 5c 20  69 73 20 69 74 20 74 72  |      \ is it tr|
00002470  61 63 6b 20 34 30 3f 0d  20 20 32 37 30 20 20 20  |ack 40?.  270   |
00002480  20 20 20 20 20 20 42 4e  45 20 6d 61 69 6e 6c 6f  |      BNE mainlo|
00002490  6f 70 20 20 5c 20 69 66  20 6e 6f 74 20 72 65 61  |op  \ if not rea|
000024a0  64 20 6e 65 78 74 20 74  72 61 63 6b 0d 20 20 32  |d next track.  2|
000024b0  38 30 20 2e 66 6f 72 6d  6c 6f 6f 70 0d 20 20 32  |80 .formloop.  2|
000024c0  39 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 65  |90         JSR e|
000024d0  73 63 61 70 65 20 20 20  20 5c 20 63 68 65 63 6b  |scape    \ check|
000024e0  20 65 73 63 61 70 65 20  66 6c 61 67 0d 20 20 33  | escape flag.  3|
000024f0  30 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 66  |00         JSR f|
00002500  6f 72 6d 61 74 20 20 20  20 5c 20 66 6f 72 6d 61  |ormat    \ forma|
00002510  74 20 74 72 61 63 6b 73  20 34 30 20 2d 20 37 39  |t tracks 40 - 79|
00002520  0d 20 20 33 31 30 20 20  20 20 20 20 20 20 20 4a  |.  310         J|
00002530  53 52 20 70 72 69 6e 74  62 79 74 65 20 5c 20 70  |SR printbyte \ p|
00002540  72 69 6e 74 20 74 72 61  63 6b 20 6e 75 6d 62 65  |rint track numbe|
00002550  72 0d 20 20 33 32 30 20  20 20 20 20 20 20 20 20  |r.  320         |
00002560  49 4e 43 20 74 72 61 63  6b 20 20 20 20 20 5c 20  |INC track     \ |
00002570  69 6e 63 72 65 6d 65 6e  74 20 74 72 61 63 6b 20  |increment track |
00002580  6e 75 6d 62 65 72 0d 20  20 33 33 30 20 20 20 20  |number.  330    |
00002590  20 20 20 20 20 4c 44 41  20 74 72 61 63 6b 20 20  |     LDA track  |
000025a0  20 20 20 5c 20 6c 6f 61  64 20 74 72 61 63 6b 20  |   \ load track |
000025b0  6e 75 6d 62 65 72 0d 20  20 33 34 30 20 20 20 20  |number.  340    |
000025c0  20 20 20 20 20 43 4d 50  20 23 38 30 20 20 20 20  |     CMP #80    |
000025d0  20 20 20 5c 20 69 73 20  69 74 20 38 30 3f 0d 20  |   \ is it 80?. |
000025e0  20 33 35 30 20 20 20 20  20 20 20 20 20 42 4e 45  | 350         BNE|
000025f0  20 66 6f 72 6d 6c 6f 6f  70 20 20 5c 20 69 66 20  | formloop  \ if |
00002600  6e 6f 74 20 66 6f 72 6d  61 74 20 6e 65 78 74 20  |not format next |
00002610  74 72 61 63 6b 0d 20 20  33 36 30 20 20 20 20 20  |track.  360     |
00002620  20 20 20 20 4c 44 41 20  23 30 20 20 20 20 20 20  |    LDA #0      |
00002630  20 20 5c 20 67 6f 20 62  61 63 6b 20 74 6f 20 74  |  \ go back to t|
00002640  72 61 63 6b 20 30 0d 20  20 33 37 30 20 20 20 20  |rack 0.  370    |
00002650  20 20 20 20 20 53 54 41  20 74 72 61 63 6b 0d 20  |     STA track. |
00002660  20 33 38 30 20 20 20 20  20 20 20 20 20 53 54 41  | 380         STA|
00002670  20 63 6f 70 79 62 6c 6f  63 6b 2b 37 0d 20 20 33  | copyblock+7.  3|
00002680  39 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 23  |90         LDA #|
00002690  31 20 20 20 20 20 20 20  20 5c 20 73 65 63 74 6f  |1        \ secto|
000026a0  72 20 31 0d 20 20 34 30  30 20 20 20 20 20 20 20  |r 1.  400       |
000026b0  20 20 53 54 41 20 63 6f  70 79 62 6c 6f 63 6b 2b  |  STA copyblock+|
000026c0  38 0d 20 20 34 31 30 20  20 20 20 20 20 20 20 20  |8.  410         |
000026d0  4c 44 41 20 23 26 32 31  20 20 20 20 20 20 5c 20  |LDA #&21      \ |
000026e0  31 20 73 65 63 74 6f 72  20 6f 66 20 32 35 36 20  |1 sector of 256 |
000026f0  62 79 74 65 73 0d 20 20  34 32 30 20 20 20 20 20  |bytes.  420     |
00002700  20 20 20 20 53 54 41 20  63 6f 70 79 62 6c 6f 63  |    STA copybloc|
00002710  6b 2b 39 0d 20 20 34 33  30 20 20 20 20 20 20 20  |k+9.  430       |
00002720  20 20 4a 53 52 20 72 65  61 64 20 20 20 20 20 20  |  JSR read      |
00002730  5c 20 72 65 61 64 20 74  72 61 63 6b 20 30 20 73  |\ read track 0 s|
00002740  65 63 74 6f 72 20 31 0d  20 20 34 34 30 20 20 20  |ector 1.  440   |
00002750  20 20 20 20 20 20 4c 44  41 20 23 26 30 33 20 20  |      LDA #&03  |
00002760  20 20 20 20 5c 20 38 30  30 20 73 65 63 74 6f 72  |    \ 800 sector|
00002770  73 20 44 49 56 20 32 35  36 0d 20 20 34 35 30 20  |s DIV 256.  450 |
00002780  20 20 20 20 20 20 20 20  4f 52 41 20 62 75 66 66  |        ORA buff|
00002790  65 72 2b 36 20 20 5c 20  6b 65 65 70 20 6f 6c 64  |er+6  \ keep old|
000027a0  20 2a 4f 50 54 34 2c 6e  20 6f 70 74 69 6f 6e 0d  | *OPT4,n option.|
000027b0  20 20 34 36 30 20 20 20  20 20 20 20 20 20 53 54  |  460         ST|
000027c0  41 20 62 75 66 66 65 72  2b 36 20 20 5c 20 4d 53  |A buffer+6  \ MS|
000027d0  42 20 6e 75 6d 62 65 72  20 6f 66 20 73 65 63 74  |B number of sect|
000027e0  6f 72 73 0d 20 20 34 37  30 20 20 20 20 20 20 20  |ors.  470       |
000027f0  20 20 4c 44 41 20 23 26  32 30 20 20 20 20 20 20  |  LDA #&20      |
00002800  5c 20 38 30 30 20 73 65  63 74 6f 72 73 20 4d 4f  |\ 800 sectors MO|
00002810  44 20 32 35 36 0d 20 20  34 38 30 20 20 20 20 20  |D 256.  480     |
00002820  20 20 20 20 53 54 41 20  62 75 66 66 65 72 2b 37  |    STA buffer+7|
00002830  20 20 5c 20 4c 53 42 20  6e 75 6d 62 65 72 20 6f  |  \ LSB number o|
00002840  66 20 73 65 63 74 6f 72  73 0d 20 20 34 39 30 20  |f sectors.  490 |
00002850  20 20 20 20 20 20 20 20  4a 53 52 20 77 72 69 74  |        JSR writ|
00002860  65 20 20 20 20 20 5c 20  73 74 6f 72 65 20 74 72  |e     \ store tr|
00002870  61 63 6b 20 30 20 73 65  63 74 6f 72 20 31 0d 20  |ack 0 sector 1. |
00002880  20 35 30 30 20 20 20 20  20 20 20 20 20 4a 53 52  | 500         JSR|
00002890  20 6f 73 6e 65 77 6c 0d  20 20 35 31 30 20 20 20  | osnewl.  510   |
000028a0  20 20 20 20 20 20 52 54  53 20 20 20 20 20 20 20  |      RTS       |
000028b0  20 20 20 20 5c 20 72 65  74 75 72 6e 20 74 6f 20  |    \ return to |
000028c0  42 41 53 49 43 0d 20 20  35 32 30 20 2e 65 73 63  |BASIC.  520 .esc|
000028d0  61 70 65 0d 20 20 35 33  30 20 20 20 20 20 20 20  |ape.  530       |
000028e0  20 20 4c 44 41 20 26 46  46 20 20 20 20 20 20 20  |  LDA &FF       |
000028f0  5c 20 65 73 63 61 70 65  20 66 6c 61 67 0d 20 20  |\ escape flag.  |
00002900  35 34 30 20 20 20 20 20  20 20 20 20 42 4d 49 20  |540         BMI |
00002910  70 72 65 73 73 65 64 20  20 20 5c 20 62 69 74 20  |pressed   \ bit |
00002920  37 20 73 65 74 20 69 66  20 70 72 65 73 73 65 64  |7 set if pressed|
00002930  0d 20 20 35 35 30 20 20  20 20 20 20 20 20 20 52  |.  550         R|
00002940  54 53 0d 20 20 35 36 30  20 2e 70 72 65 73 73 65  |TS.  560 .presse|
00002950  64 0d 20 20 35 37 30 20  20 20 20 20 20 20 20 20  |d.  570         |
00002960  4c 44 41 20 23 26 37 45  0d 20 20 35 38 30 20 20  |LDA #&7E.  580  |
00002970  20 20 20 20 20 20 20 4a  53 52 20 6f 73 62 79 74  |       JSR osbyt|
00002980  65 20 20 20 20 5c 20 61  63 6b 6e 6f 77 6c 65 64  |e    \ acknowled|
00002990  67 65 20 45 73 63 61 70  65 0d 20 20 35 39 30 20  |ge Escape.  590 |
000029a0  20 20 20 20 20 20 20 20  42 52 4b 0d 20 20 36 30  |        BRK.  60|
000029b0  30 20 20 20 20 20 20 20  20 20 42 52 4b 0d 20 20  |0         BRK.  |
000029c0  36 31 30 20 20 20 20 20  20 20 20 20 45 51 55 53  |610         EQUS|
000029d0  20 22 45 73 63 61 70 65  22 0d 20 20 36 32 30 20  | "Escape".  620 |
000029e0  20 20 20 20 20 20 20 20  42 52 4b 0d 20 20 36 33  |        BRK.  63|
000029f0  30 20 2e 73 65 65 6b 74  77 6f 0d 20 20 36 34 30  |0 .seektwo.  640|
00002a00  20 20 20 20 20 20 20 20  20 4c 44 41 20 74 72 61  |         LDA tra|
00002a10  63 6b 20 20 20 20 20 5c  20 73 6f 75 72 63 65 20  |ck     \ source |
00002a20  74 72 61 63 6b 20 6e 75  6d 62 65 72 0d 20 20 36  |track number.  6|
00002a30  35 30 20 20 20 20 20 20  20 20 20 41 53 4c 20 41  |50         ASL A|
00002a40  20 20 20 20 20 20 20 20  20 5c 20 2a 32 0d 20 20  |         \ *2.  |
00002a50  36 36 30 20 20 20 20 20  20 20 20 20 53 54 41 20  |660         STA |
00002a60  73 65 65 6b 62 6c 6f 63  6b 2b 37 20 5c 20 70 68  |seekblock+7 \ ph|
00002a70  79 73 69 63 61 6c 20 74  72 61 63 6b 20 6e 75 6d  |ysical track num|
00002a80  62 65 72 0d 20 20 36 37  30 20 20 20 20 20 20 20  |ber.  670       |
00002a90  20 20 4c 44 41 20 23 26  37 46 0d 20 20 36 38 30  |  LDA #&7F.  680|
00002aa0  20 20 20 20 20 20 20 20  20 4c 44 58 20 23 73 65  |         LDX #se|
00002ab0  65 6b 62 6c 6f 63 6b 20  4d 4f 44 20 32 35 36 0d  |ekblock MOD 256.|
00002ac0  20 20 36 39 30 20 20 20  20 20 20 20 20 20 4c 44  |  690         LD|
00002ad0  59 20 23 73 65 65 6b 62  6c 6f 63 6b 20 44 49 56  |Y #seekblock DIV|
00002ae0  20 32 35 36 0d 20 20 37  30 30 20 20 20 20 20 20  | 256.  700      |
00002af0  20 20 20 4a 53 52 20 6f  73 77 6f 72 64 0d 20 20  |   JSR osword.  |
00002b00  37 31 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |710         LDA |
00002b10  73 65 65 6b 62 6c 6f 63  6b 2b 38 20 5c 20 72 65  |seekblock+8 \ re|
00002b20  73 75 6c 74 0d 20 20 37  32 30 20 20 20 20 20 20  |sult.  720      |
00002b30  20 20 20 42 4e 45 20 73  65 65 6b 65 72 72 6f 72  |   BNE seekerror|
00002b40  20 5c 20 3d 20 30 20 69  66 20 4f 4b 0d 20 20 37  | \ = 0 if OK.  7|
00002b50  33 30 20 20 20 20 20 20  20 20 20 52 54 53 0d 20  |30         RTS. |
00002b60  20 37 34 30 20 2e 73 65  65 6b 65 72 72 6f 72 0d  | 740 .seekerror.|
00002b70  20 20 37 35 30 20 20 20  20 20 20 20 20 20 42 52  |  750         BR|
00002b80  4b 0d 20 20 37 36 30 20  20 20 20 20 20 20 20 20  |K.  760         |
00002b90  42 52 4b 0d 20 20 37 37  30 20 20 20 20 20 20 20  |BRK.  770       |
00002ba0  20 20 45 51 55 53 20 22  53 65 65 6b 20 65 72 72  |  EQUS "Seek err|
00002bb0  6f 72 22 0d 20 20 37 38  30 20 20 20 20 20 20 20  |or".  780       |
00002bc0  20 20 42 52 4b 0d 20 20  37 39 30 20 2e 66 6f 72  |  BRK.  790 .for|
00002bd0  6d 61 74 0d 20 20 38 30  30 20 20 20 20 20 20 20  |mat.  800       |
00002be0  20 20 4c 44 41 20 74 72  61 63 6b 20 20 20 20 20  |  LDA track     |
00002bf0  5c 20 73 6f 75 72 63 65  20 74 72 61 63 6b 20 6e  |\ source track n|
00002c00  75 6d 62 65 72 0d 20 20  38 31 30 20 20 20 20 20  |umber.  810     |
00002c10  20 20 20 20 53 54 41 20  66 6f 72 6d 62 6c 6f 63  |    STA formbloc|
00002c20  6b 2b 37 20 5c 20 73 74  6f 72 65 20 70 68 79 73  |k+7 \ store phys|
00002c30  69 63 61 6c 20 74 72 61  63 6b 0d 20 20 38 32 30  |ical track.  820|
00002c40  20 20 20 20 20 20 20 20  20 4c 44 58 20 23 33 36  |         LDX #36|
00002c50  0d 20 20 38 33 30 20 2e  74 61 62 6c 65 6c 6f 6f  |.  830 .tableloo|
00002c60  70 0d 20 20 38 34 30 20  20 20 20 20 20 20 20 20  |p.  840         |
00002c70  53 54 41 20 74 61 62 6c  65 2c 58 20 20 20 5c 20  |STA table,X   \ |
00002c80  73 74 6f 72 65 20 6c 6f  67 69 63 61 6c 20 74 72  |store logical tr|
00002c90  61 63 6b 20 6e 75 6d 62  65 72 20 69 6e 20 49 44  |ack number in ID|
00002ca0  20 74 61 62 6c 65 0d 20  20 38 35 30 20 20 20 20  | table.  850    |
00002cb0  20 20 20 20 20 44 45 58  0d 20 20 38 36 30 20 20  |     DEX.  860  |
00002cc0  20 20 20 20 20 20 20 44  45 58 0d 20 20 38 37 30  |       DEX.  870|
00002cd0  20 20 20 20 20 20 20 20  20 44 45 58 0d 20 20 38  |         DEX.  8|
00002ce0  38 30 20 20 20 20 20 20  20 20 20 44 45 58 0d 20  |80         DEX. |
00002cf0  20 38 39 30 20 20 20 20  20 20 20 20 20 42 50 4c  | 890         BPL|
00002d00  20 74 61 62 6c 65 6c 6f  6f 70 0d 20 20 39 30 30  | tableloop.  900|
00002d10  20 20 20 20 20 20 20 20  20 4c 44 41 20 23 26 37  |         LDA #&7|
00002d20  46 0d 20 20 39 31 30 20  20 20 20 20 20 20 20 20  |F.  910         |
00002d30  4c 44 58 20 23 66 6f 72  6d 62 6c 6f 63 6b 20 4d  |LDX #formblock M|
00002d40  4f 44 20 32 35 36 0d 20  20 39 32 30 20 20 20 20  |OD 256.  920    |
00002d50  20 20 20 20 20 4c 44 59  20 23 66 6f 72 6d 62 6c  |     LDY #formbl|
00002d60  6f 63 6b 20 44 49 56 20  32 35 36 0d 20 20 39 33  |ock DIV 256.  93|
00002d70  30 20 20 20 20 20 20 20  20 20 4a 53 52 20 6f 73  |0         JSR os|
00002d80  77 6f 72 64 0d 20 20 39  34 30 20 20 20 20 20 20  |word.  940      |
00002d90  20 20 20 4c 44 41 20 66  6f 72 6d 62 6c 6f 63 6b  |   LDA formblock|
00002da0  2b 31 32 20 5c 20 72 65  73 75 6c 74 0d 20 20 39  |+12 \ result.  9|
00002db0  35 30 20 20 20 20 20 20  20 20 20 42 4e 45 20 66  |50         BNE f|
00002dc0  6f 72 6d 65 72 72 6f 72  20 5c 20 3d 20 30 20 69  |ormerror \ = 0 i|
00002dd0  66 20 4f 4b 0d 20 20 39  36 30 20 20 20 20 20 20  |f OK.  960      |
00002de0  20 20 20 52 54 53 0d 20  20 39 37 30 20 2e 66 6f  |   RTS.  970 .fo|
00002df0  72 6d 65 72 72 6f 72 0d  20 20 39 38 30 20 20 20  |rmerror.  980   |
00002e00  20 20 20 20 20 20 42 52  4b 0d 20 20 39 39 30 20  |      BRK.  990 |
00002e10  20 20 20 20 20 20 20 20  42 52 4b 0d 20 31 30 30  |        BRK. 100|
00002e20  30 20 20 20 20 20 20 20  20 20 45 51 55 53 20 22  |0         EQUS "|
00002e30  46 6f 72 6d 61 74 20 65  72 72 6f 72 22 0d 20 31  |Format error". 1|
00002e40  30 31 30 20 20 20 20 20  20 20 20 20 42 52 4b 0d  |010         BRK.|
00002e50  20 31 30 32 30 20 2e 72  65 67 69 73 74 65 72 0d  | 1020 .register.|
00002e60  20 31 30 33 30 20 20 20  20 20 20 20 20 20 53 54  | 1030         ST|
00002e70  41 20 72 65 67 62 6c 6f  63 6b 2b 38 20 5c 20 76  |A regblock+8 \ v|
00002e80  61 6c 75 65 20 74 6f 20  70 75 74 20 69 6e 20 72  |alue to put in r|
00002e90  65 67 69 73 74 65 72 0d  20 31 30 34 30 20 20 20  |egister. 1040   |
00002ea0  20 20 20 20 20 20 4c 44  41 20 23 26 37 46 0d 20  |      LDA #&7F. |
00002eb0  31 30 35 30 20 20 20 20  20 20 20 20 20 4c 44 58  |1050         LDX|
00002ec0  20 23 72 65 67 62 6c 6f  63 6b 20 4d 4f 44 20 32  | #regblock MOD 2|
00002ed0  35 36 0d 20 31 30 36 30  20 20 20 20 20 20 20 20  |56. 1060        |
00002ee0  20 4c 44 59 20 23 72 65  67 62 6c 6f 63 6b 20 44  | LDY #regblock D|
00002ef0  49 56 20 32 35 36 0d 20  31 30 37 30 20 20 20 20  |IV 256. 1070    |
00002f00  20 20 20 20 20 4a 53 52  20 6f 73 77 6f 72 64 0d  |     JSR osword.|
00002f10  20 31 30 38 30 20 20 20  20 20 20 20 20 20 4c 44  | 1080         LD|
00002f20  41 20 72 65 67 62 6c 6f  63 6b 2b 39 20 5c 20 72  |A regblock+9 \ r|
00002f30  65 73 75 6c 74 0d 20 31  30 39 30 20 20 20 20 20  |esult. 1090     |
00002f40  20 20 20 20 42 4e 45 20  72 65 67 65 72 72 6f 72  |    BNE regerror|
00002f50  20 20 5c 20 3d 20 30 20  69 66 20 4f 4b 0d 20 31  |  \ = 0 if OK. 1|
00002f60  31 30 30 20 20 20 20 20  20 20 20 20 52 54 53 0d  |100         RTS.|
00002f70  20 31 31 31 30 20 2e 72  65 67 65 72 72 6f 72 0d  | 1110 .regerror.|
00002f80  20 31 31 32 30 20 20 20  20 20 20 20 20 20 42 52  | 1120         BR|
00002f90  4b 0d 20 31 31 33 30 20  20 20 20 20 20 20 20 20  |K. 1130         |
00002fa0  42 52 4b 0d 20 31 31 34  30 20 20 20 20 20 20 20  |BRK. 1140       |
00002fb0  20 20 45 51 55 53 20 22  53 70 65 63 69 61 6c 20  |  EQUS "Special |
00002fc0  72 65 67 69 73 74 65 72  20 65 72 72 6f 72 22 20  |register error" |
00002fd0  20 20 20 20 20 20 20 20  20 20 0d 20 31 31 35 30  |          . 1150|
00002fe0  20 20 20 20 20 20 20 20  20 42 52 4b 0d 20 31 31  |         BRK. 11|
00002ff0  36 30 20 2e 72 65 61 64  0d 20 31 31 37 30 20 20  |60 .read. 1170  |
00003000  20 20 20 20 20 20 20 4c  44 41 20 74 72 61 63 6b  |       LDA track|
00003010  20 20 20 20 20 5c 20 73  6f 75 72 63 65 20 74 72  |     \ source tr|
00003020  61 63 6b 20 6e 75 6d 62  65 72 0d 20 31 31 38 30  |ack number. 1180|
00003030  20 20 20 20 20 20 20 20  20 53 54 41 20 63 6f 70  |         STA cop|
00003040  79 62 6c 6f 63 6b 2b 37  20 5c 20 6c 6f 67 69 63  |yblock+7 \ logic|
00003050  61 6c 20 74 72 61 63 6b  20 6e 75 6d 62 65 72 0d  |al track number.|
00003060  20 31 31 39 30 20 20 20  20 20 20 20 20 20 4c 44  | 1190         LD|
00003070  41 20 23 26 35 33 20 20  20 20 20 20 5c 20 72 65  |A #&53      \ re|
00003080  61 64 20 64 61 74 61 20  6d 75 6c 74 69 2d 73 65  |ad data multi-se|
00003090  63 74 6f 72 0d 20 31 32  30 30 20 20 20 20 20 20  |ctor. 1200      |
000030a0  20 20 20 53 54 41 20 63  6f 70 79 62 6c 6f 63 6b  |   STA copyblock|
000030b0  2b 36 0d 20 31 32 31 30  20 20 20 20 20 20 20 20  |+6. 1210        |
000030c0  20 4c 44 41 20 23 26 37  46 0d 20 31 32 32 30 20  | LDA #&7F. 1220 |
000030d0  20 20 20 20 20 20 20 20  4c 44 58 20 23 63 6f 70  |        LDX #cop|
000030e0  79 62 6c 6f 63 6b 20 4d  4f 44 20 32 35 36 0d 20  |yblock MOD 256. |
000030f0  31 32 33 30 20 20 20 20  20 20 20 20 20 4c 44 59  |1230         LDY|
00003100  20 23 63 6f 70 79 62 6c  6f 63 6b 20 44 49 56 20  | #copyblock DIV |
00003110  32 35 36 0d 20 31 32 34  30 20 20 20 20 20 20 20  |256. 1240       |
00003120  20 20 4a 53 52 20 6f 73  77 6f 72 64 0d 20 31 32  |  JSR osword. 12|
00003130  35 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 63  |50         LDA c|
00003140  6f 70 79 62 6c 6f 63 6b  2b 31 30 0d 20 31 32 36  |opyblock+10. 126|
00003150  30 20 20 20 20 20 20 20  20 20 42 4e 45 20 72 65  |0         BNE re|
00003160  61 64 65 72 72 6f 72 0d  20 31 32 37 30 20 20 20  |aderror. 1270   |
00003170  20 20 20 20 20 20 52 54  53 0d 20 31 32 38 30 20  |      RTS. 1280 |
00003180  2e 72 65 61 64 65 72 72  6f 72 0d 20 31 32 39 30  |.readerror. 1290|
00003190  20 20 20 20 20 20 20 20  20 42 52 4b 0d 20 31 33  |         BRK. 13|
000031a0  30 30 20 20 20 20 20 20  20 20 20 42 52 4b 0d 20  |00         BRK. |
000031b0  31 33 31 30 20 20 20 20  20 20 20 20 20 45 51 55  |1310         EQU|
000031c0  53 20 22 52 65 61 64 20  65 72 72 6f 72 22 0d 20  |S "Read error". |
000031d0  31 33 32 30 20 20 20 20  20 20 20 20 20 42 52 4b  |1320         BRK|
000031e0  0d 20 31 33 33 30 20 2e  77 72 69 74 65 0d 20 31  |. 1330 .write. 1|
000031f0  33 34 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |340         LDA |
00003200  23 26 34 42 20 20 20 20  20 20 5c 20 77 72 69 74  |#&4B      \ writ|
00003210  65 20 64 61 74 61 20 6d  75 6c 74 69 2d 73 65 63  |e data multi-sec|
00003220  74 6f 72 0d 20 31 33 35  30 20 20 20 20 20 20 20  |tor. 1350       |
00003230  20 20 53 54 41 20 63 6f  70 79 62 6c 6f 63 6b 2b  |  STA copyblock+|
00003240  36 0d 20 31 33 36 30 20  20 20 20 20 20 20 20 20  |6. 1360         |
00003250  4c 44 41 20 23 26 37 46  0d 20 31 33 37 30 20 20  |LDA #&7F. 1370  |
00003260  20 20 20 20 20 20 20 4c  44 58 20 23 63 6f 70 79  |       LDX #copy|
00003270  62 6c 6f 63 6b 20 4d 4f  44 20 32 35 36 0d 20 31  |block MOD 256. 1|
00003280  33 38 30 20 20 20 20 20  20 20 20 20 4c 44 59 20  |380         LDY |
00003290  23 63 6f 70 79 62 6c 6f  63 6b 20 44 49 56 20 32  |#copyblock DIV 2|
000032a0  35 36 0d 20 31 33 39 30  20 20 20 20 20 20 20 20  |56. 1390        |
000032b0  20 4a 53 52 20 6f 73 77  6f 72 64 0d 20 31 34 30  | JSR osword. 140|
000032c0  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 63 6f  |0         LDA co|
000032d0  70 79 62 6c 6f 63 6b 2b  31 30 20 5c 20 72 65 73  |pyblock+10 \ res|
000032e0  75 6c 74 0d 20 31 34 31  30 20 20 20 20 20 20 20  |ult. 1410       |
000032f0  20 20 42 4e 45 20 77 72  69 74 65 65 72 72 6f 72  |  BNE writeerror|
00003300  20 5c 20 3d 20 30 20 69  66 20 4f 4b 0d 20 31 34  | \ = 0 if OK. 14|
00003310  32 30 20 20 20 20 20 20  20 20 20 52 54 53 0d 20  |20         RTS. |
00003320  31 34 33 30 20 2e 77 72  69 74 65 65 72 72 6f 72  |1430 .writeerror|
00003330  0d 20 31 34 34 30 20 20  20 20 20 20 20 20 20 42  |. 1440         B|
00003340  52 4b 0d 20 31 34 35 30  20 20 20 20 20 20 20 20  |RK. 1450        |
00003350  20 42 52 4b 0d 20 31 34  36 30 20 20 20 20 20 20  | BRK. 1460      |
00003360  20 20 20 45 51 55 53 20  22 57 72 69 74 65 20 65  |   EQUS "Write e|
00003370  72 72 6f 72 22 0d 20 31  34 37 30 20 20 20 20 20  |rror". 1470     |
00003380  20 20 20 20 42 52 4b 0d  20 31 34 38 30 20 2e 70  |    BRK. 1480 .p|
00003390  72 69 6e 74 62 79 74 65  0d 20 31 34 39 30 20 20  |rintbyte. 1490  |
000033a0  20 20 20 20 20 20 20 4c  44 41 20 74 72 61 63 6b  |       LDA track|
000033b0  20 20 20 20 20 5c 20 70  72 69 6e 74 20 73 6f 75  |     \ print sou|
000033c0  72 63 65 20 74 72 61 63  6b 20 6e 75 6d 62 65 72  |rce track number|
000033d0  0d 20 31 35 30 30 20 20  20 20 20 20 20 20 20 50  |. 1500         P|
000033e0  48 41 0d 20 31 35 31 30  20 20 20 20 20 20 20 20  |HA. 1510        |
000033f0  20 4c 53 52 20 41 0d 20  31 35 32 30 20 20 20 20  | LSR A. 1520    |
00003400  20 20 20 20 20 4c 53 52  20 41 0d 20 31 35 33 30  |     LSR A. 1530|
00003410  20 20 20 20 20 20 20 20  20 4c 53 52 20 41 0d 20  |         LSR A. |
00003420  31 35 34 30 20 20 20 20  20 20 20 20 20 4c 53 52  |1540         LSR|
00003430  20 41 0d 20 31 35 35 30  20 20 20 20 20 20 20 20  | A. 1550        |
00003440  20 4a 53 52 20 6e 79 62  62 6c 65 20 20 20 20 5c  | JSR nybble    \|
00003450  20 70 72 69 6e 74 20 4d  53 20 6e 79 62 62 6c 65  | print MS nybble|
00003460  0d 20 31 35 36 30 20 20  20 20 20 20 20 20 20 50  |. 1560         P|
00003470  4c 41 0d 20 31 35 37 30  20 20 20 20 20 20 20 20  |LA. 1570        |
00003480  20 4a 53 52 20 6e 79 62  62 6c 65 20 20 20 20 5c  | JSR nybble    \|
00003490  20 70 72 69 6e 74 20 4c  53 20 6e 79 62 62 6c 65  | print LS nybble|
000034a0  0d 20 31 35 38 30 20 20  20 20 20 20 20 20 20 4c  |. 1580         L|
000034b0  44 41 20 23 41 53 43 28  22 20 22 29 0d 20 31 35  |DA #ASC(" "). 15|
000034c0  39 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 6f  |90         JSR o|
000034d0  73 77 72 63 68 20 20 20  20 5c 20 70 72 69 6e 74  |swrch    \ print|
000034e0  20 73 70 61 63 65 0d 20  31 36 30 30 20 20 20 20  | space. 1600    |
000034f0  20 20 20 20 20 4a 4d 50  20 6f 73 77 72 63 68 20  |     JMP oswrch |
00003500  20 20 20 5c 20 70 72 69  6e 74 20 73 70 61 63 65  |   \ print space|
00003510  0d 20 31 36 31 30 20 2e  6e 79 62 62 6c 65 0d 20  |. 1610 .nybble. |
00003520  31 36 32 30 20 20 20 20  20 20 20 20 20 41 4e 44  |1620         AND|
00003530  20 23 26 30 46 0d 20 31  36 33 30 20 20 20 20 20  | #&0F. 1630     |
00003540  20 20 20 20 53 45 44 0d  20 31 36 34 30 20 20 20  |    SED. 1640   |
00003550  20 20 20 20 20 20 43 4c  43 0d 20 31 36 35 30 20  |      CLC. 1650 |
00003560  20 20 20 20 20 20 20 20  41 44 43 20 23 26 39 30  |        ADC #&90|
00003570  0d 20 31 36 36 30 20 20  20 20 20 20 20 20 20 41  |. 1660         A|
00003580  44 43 20 23 26 34 30 0d  20 31 36 37 30 20 20 20  |DC #&40. 1670   |
00003590  20 20 20 20 20 20 43 4c  44 0d 20 31 36 38 30 20  |      CLD. 1680 |
000035a0  20 20 20 20 20 20 20 20  4a 4d 50 20 6f 73 77 72  |        JMP oswr|
000035b0  63 68 20 20 20 20 5c 20  70 72 69 6e 74 20 6e 79  |ch    \ print ny|
000035c0  62 62 6c 65 20 61 6e 64  20 72 65 74 75 72 6e 0d  |bble and return.|
000035d0  20 31 36 39 30 20 2e 73  65 65 6b 62 6c 6f 63 6b  | 1690 .seekblock|
000035e0  0d 20 31 37 30 30 20 20  20 20 20 20 20 20 20 45  |. 1700         E|
000035f0  51 55 42 20 26 30 30 20  20 20 20 20 20 5c 20 64  |QUB &00      \ d|
00003600  72 69 76 65 20 30 0d 20  31 37 31 30 20 20 20 20  |rive 0. 1710    |
00003610  20 20 20 20 20 45 51 55  44 20 26 30 30 20 20 20  |     EQUD &00   |
00003620  20 20 20 5c 20 64 6f 65  73 20 6e 6f 74 20 6d 61  |   \ does not ma|
00003630  74 74 65 72 0d 20 31 37  32 30 20 20 20 20 20 20  |tter. 1720      |
00003640  20 20 20 45 51 55 42 20  26 30 31 20 20 20 20 20  |   EQUB &01     |
00003650  20 5c 20 31 20 70 61 72  61 6d 65 74 65 72 0d 20  | \ 1 parameter. |
00003660  31 37 33 30 20 20 20 20  20 20 20 20 20 45 51 55  |1730         EQU|
00003670  42 20 26 36 39 20 20 20  20 20 20 5c 20 73 65 65  |B &69      \ see|
00003680  6b 20 63 6f 6d 6d 61 6e  64 0d 20 31 37 34 30 20  |k command. 1740 |
00003690  20 20 20 20 20 20 20 20  45 51 55 42 20 26 30 30  |        EQUB &00|
000036a0  20 20 20 20 20 20 5c 20  70 68 79 73 69 63 61 6c  |      \ physical|
000036b0  20 74 72 61 63 6b 0d 20  31 37 35 30 20 20 20 20  | track. 1750    |
000036c0  20 20 20 20 20 45 51 55  42 20 26 30 30 20 20 20  |     EQUB &00   |
000036d0  20 20 20 5c 20 72 65 73  75 6c 74 20 62 79 74 65  |   \ result byte|
000036e0  0d 20 31 37 36 30 20 2e  72 65 67 62 6c 6f 63 6b  |. 1760 .regblock|
000036f0  0d 20 31 37 37 30 20 20  20 20 20 20 20 20 20 45  |. 1770         E|
00003700  51 55 42 20 26 30 30 20  20 20 20 20 20 5c 20 64  |QUB &00      \ d|
00003710  72 69 76 65 20 30 0d 20  31 37 38 30 20 20 20 20  |rive 0. 1780    |
00003720  20 20 20 20 20 45 51 55  44 20 26 30 30 20 20 20  |     EQUD &00   |
00003730  20 20 20 5c 20 64 6f 65  73 20 6e 6f 74 20 6d 61  |   \ does not ma|
00003740  74 74 65 72 0d 20 31 37  39 30 20 20 20 20 20 20  |tter. 1790      |
00003750  20 20 20 45 51 55 44 20  26 30 30 31 32 37 41 30  |   EQUD &00127A0|
00003760  32 20 5c 20 77 72 69 74  65 20 73 70 65 63 69 61  |2 \ write specia|
00003770  6c 20 72 65 67 69 73 74  65 72 0d 20 31 38 30 30  |l register. 1800|
00003780  20 20 20 20 20 20 20 20  20 45 51 55 42 20 26 30  |         EQUB &0|
00003790  30 20 20 20 20 20 20 5c  20 72 65 73 75 6c 74 20  |0      \ result |
000037a0  62 79 74 65 0d 20 31 38  31 30 20 2e 63 6f 70 79  |byte. 1810 .copy|
000037b0  62 6c 6f 63 6b 0d 20 31  38 32 30 20 20 20 20 20  |block. 1820     |
000037c0  20 20 20 20 45 51 55 42  20 26 30 30 20 20 20 20  |    EQUB &00    |
000037d0  20 20 5c 20 64 72 69 76  65 20 30 0d 20 31 38 33  |  \ drive 0. 183|
000037e0  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 62  |0         EQUD b|
000037f0  75 66 66 65 72 20 20 20  5c 20 61 64 64 72 65 73  |uffer   \ addres|
00003800  73 20 6f 66 20 62 75 66  66 65 72 0d 20 31 38 34  |s of buffer. 184|
00003810  30 20 20 20 20 20 20 20  20 20 45 51 55 42 20 26  |0         EQUB &|
00003820  30 33 20 20 20 20 20 20  5c 20 33 20 70 61 72 61  |03      \ 3 para|
00003830  6d 65 74 65 72 73 0d 20  31 38 35 30 20 20 20 20  |meters. 1850    |
00003840  20 20 20 20 20 45 51 55  42 20 26 35 37 20 20 20  |     EQUB &57   |
00003850  20 20 20 5c 20 72 65 61  64 20 64 61 74 61 20 6d  |   \ read data m|
00003860  75 6c 74 69 2d 73 65 63  74 6f 72 0d 20 31 38 36  |ulti-sector. 186|
00003870  30 20 20 20 20 20 20 20  20 20 45 51 55 42 20 26  |0         EQUB &|
00003880  30 30 20 20 20 20 20 20  5c 20 6c 6f 67 69 63 61  |00      \ logica|
00003890  6c 20 74 72 61 63 6b 20  6e 75 6d 62 65 72 0d 20  |l track number. |
000038a0  31 38 37 30 20 20 20 20  20 20 20 20 20 45 51 55  |1870         EQU|
000038b0  42 20 26 30 30 20 20 20  20 20 20 5c 20 6c 6f 67  |B &00      \ log|
000038c0  69 63 61 6c 20 73 65 63  74 6f 72 20 6e 75 6d 62  |ical sector numb|
000038d0  65 72 0d 20 31 38 38 30  20 20 20 20 20 20 20 20  |er. 1880        |
000038e0  20 45 51 55 42 20 26 32  41 20 20 20 20 20 20 5c  | EQUB &2A      \|
000038f0  20 31 30 20 73 65 63 74  6f 72 73 20 6f 66 20 32  | 10 sectors of 2|
00003900  35 36 20 62 79 74 65 73  0d 20 31 38 39 30 20 20  |56 bytes. 1890  |
00003910  20 20 20 20 20 20 20 45  51 55 42 20 26 30 30 20  |       EQUB &00 |
00003920  20 20 20 20 20 5c 20 72  65 73 75 6c 74 20 62 79  |     \ result by|
00003930  74 65 0d 20 31 39 30 30  20 2e 66 6f 72 6d 62 6c  |te. 1900 .formbl|
00003940  6f 63 6b 0d 20 31 39 31  30 20 20 20 20 20 20 20  |ock. 1910       |
00003950  20 20 45 51 55 42 20 26  30 30 20 20 20 20 20 20  |  EQUB &00      |
00003960  5c 20 64 72 69 76 65 20  30 0d 20 31 39 32 30 20  |\ drive 0. 1920 |
00003970  20 20 20 20 20 20 20 20  45 51 55 44 20 74 61 62  |        EQUD tab|
00003980  6c 65 20 20 20 20 5c 20  61 64 64 72 65 73 73 20  |le    \ address |
00003990  6f 66 20 73 65 63 74 6f  72 20 74 61 62 6c 65 0d  |of sector table.|
000039a0  20 31 39 33 30 20 20 20  20 20 20 20 20 20 45 51  | 1930         EQ|
000039b0  55 42 20 26 30 35 20 20  20 20 20 20 5c 20 35 20  |UB &05      \ 5 |
000039c0  70 61 72 61 6d 65 74 65  72 73 0d 20 31 39 34 30  |parameters. 1940|
000039d0  20 20 20 20 20 20 20 20  20 45 51 55 42 20 26 36  |         EQUB &6|
000039e0  33 20 20 20 20 20 20 5c  20 66 6f 72 6d 61 74 20  |3      \ format |
000039f0  63 6f 6d 6d 61 6e 64 0d  20 31 39 35 30 20 20 20  |command. 1950   |
00003a00  20 20 20 20 20 20 45 51  55 42 20 26 30 30 20 20  |      EQUB &00  |
00003a10  20 20 20 20 5c 20 70 68  79 73 69 63 61 6c 20 74  |    \ physical t|
00003a20  72 61 63 6b 20 6e 75 6d  62 65 72 0d 20 31 39 36  |rack number. 196|
00003a30  30 20 20 20 20 20 20 20  20 20 45 51 55 42 20 26  |0         EQUB &|
00003a40  31 35 20 20 20 20 20 20  5c 20 67 61 70 20 33 20  |15      \ gap 3 |
00003a50  73 69 7a 65 0d 20 31 39  37 30 20 20 20 20 20 20  |size. 1970      |
00003a60  20 20 20 45 51 55 42 20  26 32 41 20 20 20 20 20  |   EQUB &2A     |
00003a70  20 5c 20 31 30 20 73 65  63 74 6f 72 73 20 6f 66  | \ 10 sectors of|
00003a80  20 32 35 36 20 62 79 74  65 73 0d 20 31 39 38 30  | 256 bytes. 1980|
00003a90  20 20 20 20 20 20 20 20  20 45 51 55 42 20 26 30  |         EQUB &0|
00003aa0  30 20 20 20 20 20 20 5c  20 67 61 70 20 35 20 73  |0      \ gap 5 s|
00003ab0  69 7a 65 0d 20 31 39 39  30 20 20 20 20 20 20 20  |ize. 1990       |
00003ac0  20 20 45 51 55 42 20 26  31 30 20 20 20 20 20 20  |  EQUB &10      |
00003ad0  5c 20 67 61 70 20 31 20  73 69 7a 65 0d 20 32 30  |\ gap 1 size. 20|
00003ae0  30 30 20 20 20 20 20 20  20 20 20 45 51 55 42 20  |00         EQUB |
00003af0  26 30 30 20 20 20 20 20  20 5c 20 72 65 73 75 6c  |&00      \ resul|
00003b00  74 20 62 79 74 65 0d 20  32 30 31 30 20 2e 74 61  |t byte. 2010 .ta|
00003b10  62 6c 65 0d 20 32 30 32  30 20 20 20 20 20 20 20  |ble. 2020       |
00003b20  20 20 45 51 55 44 20 26  30 31 30 30 30 30 30 30  |  EQUD &01000000|
00003b30  0d 20 32 30 33 30 20 20  20 20 20 20 20 20 20 45  |. 2030         E|
00003b40  51 55 44 20 26 30 31 30  31 30 30 30 30 0d 20 32  |QUD &01010000. 2|
00003b50  30 34 30 20 20 20 20 20  20 20 20 20 45 51 55 44  |040         EQUD|
00003b60  20 26 30 31 30 32 30 30  30 30 0d 20 32 30 35 30  | &01020000. 2050|
00003b70  20 20 20 20 20 20 20 20  20 45 51 55 44 20 26 30  |         EQUD &0|
00003b80  31 30 33 30 30 30 30 0d  20 32 30 36 30 20 20 20  |1030000. 2060   |
00003b90  20 20 20 20 20 20 45 51  55 44 20 26 30 31 30 34  |      EQUD &0104|
00003ba0  30 30 30 30 0d 20 32 30  37 30 20 20 20 20 20 20  |0000. 2070      |
00003bb0  20 20 20 45 51 55 44 20  26 30 31 30 35 30 30 30  |   EQUD &0105000|
00003bc0  30 0d 20 32 30 38 30 20  20 20 20 20 20 20 20 20  |0. 2080         |
00003bd0  45 51 55 44 20 26 30 31  30 36 30 30 30 30 0d 20  |EQUD &01060000. |
00003be0  32 30 39 30 20 20 20 20  20 20 20 20 20 45 51 55  |2090         EQU|
00003bf0  44 20 26 30 31 30 37 30  30 30 30 0d 20 32 31 30  |D &01070000. 210|
00003c00  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 26  |0         EQUD &|
00003c10  30 31 30 38 30 30 30 30  0d 20 32 31 31 30 20 20  |01080000. 2110  |
00003c20  20 20 20 20 20 20 20 45  51 55 44 20 26 30 31 30  |       EQUD &010|
00003c30  39 30 30 30 30 0d 20 32  31 32 30 20 2e 74 72 61  |90000. 2120 .tra|
00003c40  63 6b 0d 20 32 31 33 30  20 20 20 20 20 20 20 20  |ck. 2130        |
00003c50  20 45 51 55 42 20 26 30  30 20 20 20 20 20 20 5c  | EQUB &00      \|
00003c60  20 6c 6f 67 69 63 61 6c  20 74 72 61 63 6b 20 6e  | logical track n|
00003c70  75 6d 62 65 72 0d 20 32  31 34 30 20 5d 0d 20 32  |umber. 2140 ]. 2|
00003c80  31 35 30 20 4e 45 58 54  0d 20 32 31 36 30 20 50  |150 NEXT. 2160 P|
00003c90  52 49 4e 54 27 22 50 6c  61 63 65 20 34 30 20 74  |RINT'"Place 40 t|
00003ca0  72 61 63 6b 20 64 69 73  63 20 69 6e 20 38 30 20  |rack disc in 80 |
00003cb0  74 72 61 63 6b 20 64 72  69 76 65 20 30 22 0d 20  |track drive 0". |
00003cc0  32 31 37 30 20 50 52 49  4e 54 22 50 72 65 73 73  |2170 PRINT"Press|
00003cd0  20 53 70 61 63 65 62 61  72 20 74 6f 20 63 6f 6e  | Spacebar to con|
00003ce0  76 65 72 74 20 74 6f 20  38 30 20 74 72 61 63 6b  |vert to 80 track|
00003cf0  73 22 0d 20 32 31 38 30  20 52 45 50 45 41 54 0d  |s". 2180 REPEAT.|
00003d00  20 32 31 39 30 20 55 4e  54 49 4c 20 47 45 54 20  | 2190 UNTIL GET |
00003d10  3d 20 33 32 0d 20 32 32  30 30 20 43 41 4c 4c 20  |= 32. 2200 CALL |
00003d20  6d 63 6f 64 65 0d                                 |mcode.|
00003d26
02-09-88/T\DFS04.m0
02-09-88/T\DFS04.m1
02-09-88/T\DFS04.m2
02-09-88/T\DFS04.m4
02-09-88/T\DFS04.m5