Home » CEEFAX disks » telesoftware8.adl » 05-08-88/T\DFS00

05-08-88/T\DFS00

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 » telesoftware8.adl
Filename: 05-08-88/T\DFS00
Read OK:
File size: 6EFE bytes
Load address: 0000
Exec address: FFFFFFFF
File contents
The Acorn DFS Osword commands  -  by  -  Gordon Horsington
----------------------------------------------------------

Module 0. Introduction
----------------------

      +----------------------------------------------------------+
      | 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.  |
      +----------------------------------------------------------+


There are eight modules in this part of the Opcodes series. The modules
are in files named T/DFS00 to T/DFS07. The following topics will be
covered in these series modules.


Module 0. This module. Introduction.
          Programs: IDSDUMP, VERIFY

Module 1. The DFS Osword commands (Part 1).
          Programs: CYCLES, HOWMANY, STATUS, OUTPUT

Module 2. The DFS Osword commands (Part 2).
          Programs: FORM10, NOTFORM, WRITE10, READ10

Module 3. Formatting single density discs.
          Program: OFFSET, IDSDUMP, VERIFY

Module 4. Converting 40 track discs to run on 80 track disc drives.
          Program: CONVERT

Module 5. Creating discs compatible with both 40 and 80 track drives.
          Program: DUALDFS, OFFSET

Module 6. Creating copy-protected single density discs.
          Programs: SECTOR5, ENCODE, DECODE, IDSDUMP, VERIFY

Module 7. Duplicating copy-protected single density discs.
          Programs: COPYDFS, COPYALL, DEFORM, IDSDUMP, VERIFY


The later modules develop the ideas and techniques described in the
earlier modules and for this reason the series needs to be worked through
from beginning to end rather than used as a reference guide.


------------------------------------
Introduction to single density discs
------------------------------------

There are three levels at which data can be written to and read from
single density discs. The highest level, with which all disc users should
be familiar, is through using the DFS star commands, filenames and the
range of BGET, BPUT and other filing system commands. This level has a
large ammount of filing system independence so that, for example, the same
*SAVE command syntax can be used with both tape and disc. When this high
level access to the DFS is used, both the programmer and the program user
are tied to the restrictions of the particular DFS ROM so that, for
example, non-standard disc formats are not available.

A lower level of access to the DFS ROM is provided by the DFS Osword
commands. Oswords &7D to &7F are used by the DFS and Oswords &70 to &73
are used by the ADFS.

The ADFS is only available on BBC computers which use the Western Digital
1770 (or 1772) disc controller. The BBC B DFS was designed to use the
Intel 8271 disc controller and cannot support the ADFS without a 1770
upgrade. The 1770 disc controller is fitted as standard to the BBC B+ and
Master series computers. The 1770 disc controller can support both single
density and double density disc formats but the 8271 can only support the
single density format. All disc based BBC computers are capable of using
Oswords &7D to &7F but only those with the ADFS can use Oswords &70 to
&73. Only Oswords &7D to &7F will be considered in detail in this series.

The lowest level of access to discs can be achieved by programing the disc
contoller directly.

The hardware which makes up a BBC microcomputer system is memory mapped.
This means that the usable registers of all the hardware devices available
to the I/O processor are mapped onto the main memory address space used by
the 6502 CPU. Page &FE, ie. memory from &FE00 to &FEFF, is known as Sheila
and this page is reserved for the hardware on the I/O processor's circuit
board.

Sheila addresses &80 to &9F are available to the floppy disc controller.
Five of the BBC B's 8271 registers are mapped onto the Sheila addresses
from &FE80 to &FE82. Three of the five registers can only be written into
and the other two can only be read from. For this reason only three Sheila
addresses need to be used to access the five registers. These three
addresses can be used to communicate with the 8271 and to instruct it to
execute a wide range of functions. Sheila address &FE84 is used to pass
data to, and to read data from, the disc controller. The mapping of the
8271 registers onto Sheila addresses is shown in figure 1.


                 +-----------+---------+---------+
                 | 8271      | Sheila  | read or |
                 | register  | address | write   |
                 +-----------+---------+---------+
                 | status    | &FE80   | read    |
                 | result    | &FE81   | read    |
                 | command   | &FE80   | write   |
                 | parameter | &FE81   | write   |
                 | reset     | &FE82   | write   |
                 +-----------+---------+---------+

Figure 1. The 8271 registers mapped onto Sheila addresses
---------------------------------------------------------


The 8271 has twelve other registers, known as the Special Registers, which
are not mapped onto the Sheila addresses. Access to these registers can be
achieved indirectly using the 8271 Read Special Register command or the
8271 Write Special Register command, both of which can be sent to the disc
controller using the registers in figure 1. The Sheila addresses can be
peeked or poked using the indirection operator but to produce Tube-
compatible code it is necessary to use Osbyte &96 to read the Sheila
addresses and Osbyte &97 to write to them.

Using Osbytes &96 and &97 will ensure that the code is Tube-compatible but
it not the easiest or the best way to program the disc controller. Osword
&7F executes a single 8271 command through all its phases and relieves the
programmer of the problems associated with techniques such as non-maskable
interupt handling which must be used when programming the 8271. Osword &7F
uses the Sheila addresses from &FE80 to &FE84 but the programmer does not
have to be concerned with, or even be aware of, the detailed use of these
addresses. Osword &7F provides a standard interface on the disc controller
and is the method of accessing the disc hardware used in this series.

Before looking at the single density Oswords in detail it is necessary to
understand the format used by single density discs.

The BBC computer is capable of using 3 1/2 inch, 5 1/4 inch and 8 inch
discs, although 8 inch discs are something of a rarity these days. Because
8 inch discs are so uncommon they will not be discussed in this series.
Both 3 1/2 inch and 5 1/4 inch discs use the same format and are available
in both single and double sided versions with either 40 or 80 tracks per
side.

Each track is subdivided into a number of sectors each of which has an
identification field (usually called an ID field) and a data field.

There are a number of gaps associated with each track. The gaps are a
variable number of bytes between the ID and data fields and are used to
space out the fields to prevent the sectors overwriting each other when
the disc speed varies.

Physical tracks and sectors are identified by their physical position on a
disc. Physical track 0 is the outermost track and physical sector 0 is the
first sector on a track after the index pulse hole. Every sector is given
a one-byte logical track number and a one-byte logical sector number. The
physical track numbers and logical track numbers are the same on discs
formatted for the Acorn DFS but the physical and logical sector numbers do
not have to be the same. One of the many ways of copy-protecting discs is
to make the physical and logical track numbers different, this effectivly
disables the DFS *BACKUP command.

The number of sectors, the size of the data fields, and the gap sizes are
determined when the disc is formatted. In module 3 you will have the
opportunity to vary these parameters but, whatever the format, each single
density track has the layout shown in figure 2 below.


  +------------+-----------+------+----------+
  | Sync bytes | Data mark | data | data CRC |
  +------------+-----------+------+----------+
              \            /
Index          \  Data    /                                        End of
mark            \ field  /                                          track
+-----+----+-----+------+-----+----+-----+------+-----+     +-----+-----+
| Gap | ID | Gap | Data | Gap | ID | Gap | Data | Gap | ... | Gap | Gap |
|  1  |    |  2  |  0   |  3  |    |  2  |  1   |  3  |     |  4  |  5  |
+-----+----+-----+------+-----+----+-----+------+-----+     +-----+-----+
     / ID   \
    / field  \
   /          \
  +-------+------+---------+--------+---------+-----------+--------+
  | Sync  | ID   | Logical | Head   | Logical | Data size | Sector |
  | bytes | mark | track   | number | sector  | code      | ID CRC |
  +-------+------+---------+--------+---------+-----------+--------+

Figure 2. The layout of a DFS track.
------------------------------------


Figure 2 illustrates a complete track with one of the data fields expanded
above the centre line and one of the ID fields expanded below. If figure 2
is taken as an illustration of a 10 sector track, then sectors 2 - 9 have
been left out.

The index mark at the beginning of the track has its position determined
by the physical index pulse hole in the disc. This mark is followed by
Gap 1. Gap 1 occurs once per track between the index mark and the start of
physical sector 0. It should always be 16 (&10) bytes long.

Gap 1 is followed by the ID field for physical sector 0. The ID field
starts with 6 sync bytes. These sync bytes synchronise the controller to
the rotational speed of the disc. The sync bytes are followed by a sector
ID mark, which simply marks the start of the sector. This in turn is
followed by the logical track number. The logical track number is normally
the same as the physical track number but, on non-standard discs, it does
not have to be the same. If you use the demonstration progran IDSDUMP on a
copy-protected disc you may find that the physical track numbers and the
logical track numbers of the protected tracks are different.

The logical track number is followed by the head number. This should be
&00 for drives 0 and 1 (which use the under side of the disc), and &01 for
drives 2 and 3 (which use the top side of the disc) but most formatting
programs use a head number of &00 for all disc surfaces. A head number of
&00 seems to be ignored by the disc controller.

Next comes the logical sector number. The logical sector number does not
have to be the same as the physical sector number and, as will be
demonstrated in module 3, there can be a small advantage to be gained by
not using the same logical and physical sector numbers.

The data size code follows the logical sector number and it indicates the
number of data bytes in the data field (see figure 3 below). This is
followed by a two byte cyclic redundancy check (CRC). The CRC is used to
check for errors in the data stored within the ID field.

The ID field is followed by Gap 2. Gap 2 should always be 11 (&0B) bytes
long and it is positioned between the ID field and the data field of each
sector on the track. Each data field is followed by Gap3. The Gap 3 after
the last data field is followed by Gap 4 which in turn is followed by Gap
5. The relationship between the sector sizes and the gap sizes for 3 1/2
inch and 5 1/4 inch discs is shown in figure 3. All the numbers in figure
3 are in decimal.


+-------------+-----------+--------+------+------+------+------+------+
| No. Sectors | Size code | Length | Gap1 | Gap2 | Gap3 | Gap4 | Gap5 |
+-------------+-----------+--------+------+------+------+------+------+
|     18      |     0     |   128  |  16  |  11  |  11  |   24 |   0  |
|     10      |     1     |   256  |  16  |  11  |  21  |   30 |   0  |
|      5      |     2     |   512  |  16  |  11  |  74  |   88 |   0  |
|      2      |     3     |  1024  |  16  |  11  | 255  |  740 |   0  |
|      1      |     4     |  2048  |  16  |  11  |   0  | 1028 |   0  |
+-------------+-----------+--------+------+------+------+------+------+

Figure 3. The relationship between sector size code, length and gap size.
-------------------------------------------------------------------------


The data field for each sector starts with 6 sync bytes which are used to
synchronise the disc controller with the rotational speed of the disc.
The sync bytes are followed by the data mark which identifies the start of
the data and also indicates if the data are marked as "deleted". Deleted
data are not physically deleted from the disc, they are simply marked as
deleted. This type of data marking will be used in module 6 to help
produce copy-protected discs. The data follow the data mark and are
terminated with two data CRC bytes.

The program IDSDUMP can be used to print the ID field for every sector on
a single density disc. I will not explain how the program works because it
uses techniques that will be covered in the next two modules. The program
is commented so that you can come back to it after reading modules 1 and 2
when you should be able to understand how it works.


   10 REM: IDSDUMP
   20 zeropage=&70
   30 osasci=&FFE3
   40 osnewl=&FFE7
   50 osword=&FFF1
   60 osbyte=&FFF4
   70 DIM buffer &50
   80 DIM mcode &200
   90 FOR pass=0 TO 2 STEP 2
  100 P%=mcode
  110 [       OPT pass
  120         LDA #14       \ paged mode
  130         JSR osasci
  140 .mainloop
  150         JSR escape    \ check escape flag
  160         JSR firstsector \ read sector id first sector
  170         BNE notformatted \ if error, track not formatted
  180         JSR tracknumber \ print track number
  190         JSR sectorids \ read all sector ids
  200 .notformatted
  210         INC physical  \ increment physical track number
  220         LDA physical  \ load physical track number
  230         CMP last      \ all done?
  240         BNE mainloop  \ if not copy next track
  250         JSR osnewl
  260         RTS           \ return to BASIC
  270 .escape
  280         LDA &FF       \ escape flag
  290         BMI pressed   \ bit 7 set if pressed
  300         RTS
  310 .pressed
  320         LDA #&7E
  330         JSR osbyte    \ acknowledge Escape
  340         BRK
  350         BRK
  360         EQUS "Escape"
  370         BRK
  380 .firstsector
  390         LDA physical  \ physical track number
  400         STA idsblock+7 \ store physical track
  410         LDA #1        \ one sector
  420         STA idsblock+9 \ number of ids
  430         LDA #&7F
  440         LDX #idsblock MOD 256
  450         LDY #idsblock DIV 256
  460         JSR osword
  470         LDA idsblock+10 \ result
  480         AND #&1E      \ = 0 if formatted
  490         RTS
  500 .sectorids
  510         LDX buffer+3   \ load data size code
  520         LDA sizes,X   \ load number of sectors
  530         STA idsblock+9 \ store number of sectors
  540         ASL A         \ *2
  550         ASL A         \ *4
  560         STA sectornumber \ store index on sectors
  570         LDA #&7F
  580         LDX #idsblock MOD 256
  590         LDY #idsblock DIV 256
  600         JSR osword
  610         LDA idsblock+10 \ result
  620         AND #&1E
  630         BNE idserror  \ = 0 if OK
  640         LDX #0
  650 .next
  660         LDY #0
  670 .printloop
  680         LDA buffer,X
  690         JSR printbyte \ print every byte of sector table
  700         INX
  710         INY
  720         CPY #4        \ 4 bytes per line
  730         BNE printloop
  740         JSR osnewl
  750         CPX sectornumber \ last byte?
  760         BCC next      \ go back for more
  770         RTS
  780 .idserror
  790         BRK
  800         BRK
  810         EQUS "Sector ID Error"
  820         BRK
  830 .tracknumber
  840         JSR osnewl
  850         LDX #title MOD 256
  860         LDY #title DIV 256
  870         JSR printtext \ print "Track &"
  880         LDA physical  \ load physical track number
  890         JSR printbyte \ print track number
  900         LDX #header MOD 256
  910         LDY #header DIV 256
  920         JMP printtext \ print "LT HN LS DS"
  930 .printtext
  940         STX zeropage
  950         STY zeropage+1
  960         LDY #0
  970 .textloop
  980         LDA (zeropage),Y
  990         BEQ endtext
 1000         JSR osasci
 1010         INY
 1020         BNE textloop
 1030 .endtext
 1040         RTS
 1050 .printbyte
 1060         PHA
 1070         LSR A
 1080         LSR A
 1090         LSR A
 1100         LSR A
 1110         JSR nybble    \ print MS nybble
 1120         PLA
 1130         JSR nybble    \ print LS nybble
 1140         LDA #ASC(" ")
 1150         JSR osasci    \ print space
 1160         JMP osasci    \ print space
 1170 .nybble
 1180         AND #&0F
 1190         SED
 1200         CLC
 1210         ADC #&90
 1220         ADC #&40
 1230         CLD
 1240         JMP osasci    \ print nybble and return
 1250 .idsblock
 1260         EQUB &FF      \ current drive
 1270         EQUD buffer   \ address of buffer
 1280         EQUD &00005B03 \ read sector ids
 1290         EQUW 0
 1300 .sizes
 1310         EQUB 18
 1320         EQUB 10
 1330         EQUB 5
 1340         EQUB 2
 1350         EQUB 1
 1360 .title
 1370         EQUS "  Track  &"
 1380         BRK
 1390 .header
 1400         EQUB &0D
 1410         EQUS "  ----------"
 1420         EQUB &0D
 1430         EQUS "LT  HN  LS  DS"
 1440         EQUB &0D
 1450         EQUS "--------------"
 1460         EQUB &0D
 1470         BRK
 1480 .physical
 1490         EQUB &00
 1500 .sectornumber
 1510         EQUB &00
 1520 .last
 1530         EQUB &00
 1540 ]
 1550 NEXT
 1560 INPUT'"Number of tracks (40/80) "tracks$
 1570 IF tracks$="40" ?last = 40 ELSE ?last = 80
 1580 PRINT'"Insert ";?last;" track disc into current drive"
 1590 PRINT"and press Spacebar to print sector IDs"
 1600 REPEAT
 1610 UNTIL GET=32
 1620 PRINT'"Press Shift to scroll"
 1630 CALL mcode


Chain the program IDSDUMP and, when prompted, put a suitable disc in the
current drive. Then press the spacebar to print the sector IDs for every
track on the disc. The track number is displayed and the logical track
(LT), head number (HN), logical sector (LS) and data size code (DS) are
printed for every physical sector on each track, starting with physical
sector 0.

It is quite interesting to use this program with a copy-protected disc.
You will almost certainly find that some of the physical and logical track
numbers are different and you may also find some unexpected logical sector
numbers. Figure 4 is a part of the output I produced with the 40 track
single density disc version of the game "Grand Prix Construction Set".


                            Track  &0A
                            ----------
                          LT  HN  LS  DS
                          --------------
                          14  00  00  01
                          14  00  01  01
                          14  00  02  01
                          14  00  03  01               
                          14  00  04  01                   
                          14  00  05  01
                          14  00  06  01
                          14  00  07  01
                          14  00  08  01
                          14  00  09  01


Figure 4. Part of the output from the program IDSDUMP
-----------------------------------------------------


You should notice that physical track &0A uses logical track number &14
but the physical sector numbers, indicated by the order of the sectors,
are the same as the logical sector numbers. This use of different physical
and logical track numbers is sufficient to prevent the *BACKUP command
duplicating the disc. As if to make sure it can't be copied, the disc also
uses deleted data to re-inforce the same effect. Deleted data markers
cannot be displayed with the program IDSDUMP and so I have provided a
program called VERIFY which will verify copy-protected discs and indicate
which tracks use deleted data.

The deleted data mark is a part of the data field and can be read using
the verify command. This will also be explained in detail in a later
module but, for now, you should find it interesting to use the program
VERIFY to find the deleted data on a copy-protected disc.


   10 REM: VERIFY
   20 REM: for copy-protected discs
   30 osnewl=&FFE7
   40 oswrch=&FFEE
   50 osword=&FFF1
   60 osbyte=&FFF4
   70 DIM buffer &50
   80 DIM mcode &500
   90 FOR pass=0 TO 2 STEP 2
  100 P%=mcode
  110 [       OPT pass
  120         JSR osnewl
  130 .mainloop
  140         JSR escape    \ check escape flag
  150         JSR seek      \ seek physical tracks 0 - 40
  160         JSR firstsector \ read sector id first sector
  170         BNE notverify \ if error track not formatted
  180         JSR sectorids \ read all sector ids
  190         JSR verify    \ verify all sectors
  200 .notverify
  210         JSR printbyte \ print track number
  220         INC physical  \ increment physical track number
  230         LDA physical  \ load physical track number
  240         CMP last      \ all done?
  250         BNE mainloop  \ if not copy next track
  260         JSR osnewl
  270         RTS           \ return to BASIC
  280 .escape
  290         LDA &FF       \ escape flag
  300         BMI pressed   \ bit 7 set if pressed
  310         RTS
  320 .pressed
  330         LDA #&7E
  340         JSR osbyte    \ acknowledge Escape
  350         BRK
  360         BRK
  370         EQUS "Escape"
  380         BRK
  390 .seek
  400         LDA physical  \ physical track number
  410         STA seekblock+7
  420         LDA #&7F
  430         LDX #seekblock MOD 256
  440         LDY #seekblock DIV 256
  450         JSR osword
  460         LDA seekblock+8 \ result
  470         BNE seekerror \ = 0 if OK
  480         RTS
  490 .seekerror
  500         BRK
  510         BRK
  520         EQUS "Seek error"
  530         BRK
  540 .firstsector
  550         LDA physical  \ physical track number
  560         STA idsblock+7 \ store physical track
  570         LDA #1        \ one sector
  580         STA idsblock+9 \ number of ids
  590         LDA #&7F
  600         LDX #idsblock MOD 256
  610         LDY #idsblock DIV 256
  620         JSR osword
  630         LDA idsblock+10 \ = 0 if formatted
  640         RTS
  650 .sectorids
  660         LDX buffer+3  \ load data size code
  670         LDA sizes,X   \ load number of sectors
  680         STA idsblock+9 \ store number of sectors
  690         ASL A         \ *2
  700         ASL A         \ *4
  710         SEC
  720         SBC #4        \ sectors*4-4
  730         STA sectornumber \ store index on sectors
  740         TXA           \ transfer data size code
  750         ASL A         \ *2
  760         ASL A         \ *4
  770         ASL A         \ *8
  780         ASL A         \ *16
  790         ASL A         \ *32
  800         ORA idsblock+9 \ add number of sectors
  810         STA verblock+9 \ store for verify
  820         LDA #&7F
  830         LDX #idsblock MOD 256
  840         LDY #idsblock DIV 256
  850         JSR osword
  860         LDA idsblock+10 \ result
  870         BNE idserror  \ = 0 if OK
  880         RTS
  890 .idserror
  900         BRK
  910         BRK
  920         EQUS "Sector ID Error"
  930         BRK
  940 .verify
  950         LDX sectornumber \ load index on table
  960         LDA buffer+2,X \ load logical sector number
  970         STA verblock+8 \ store for verify
  980 .lowest
  990         DEX
 1000         DEX
 1010         DEX
 1020         DEX
 1030         BMI finished
 1040         LDA buffer+2,X \ load logical sector number
 1050         CMP verblock+8 \ is it lower than the last one?
 1060         BCS lowest    \ branch if not lowest sector
 1070         STA verblock+8 \ store if it is lower
 1080         BCC lowest    \ look for lower sector number
 1090 .finished
 1100         LDA buffer    \ load logical track number
 1110         STA verblock+7 \ and store for verify
 1120         JSR register  \ write track register
 1130         LDA #&7F
 1140         LDX #verblock MOD 256
 1150         LDY #verblock DIV 256
 1160         JSR osword
 1170         LDA physical  \ physical track number
 1180         JSR register  \ write track register
 1190         LDA verblock+10
 1200         AND #&1E      \ isolate error bits
 1210         BNE vererror
 1220         RTS
 1230 .vererror
 1240         BRK
 1250         BRK
 1260         EQUS "Verify error"
 1270         BRK
 1280 .register
 1290         STA regblock+8 \ value to put in register
 1300         LDA #&7F
 1310         LDX #regblock MOD 256
 1320         LDY #regblock DIV 256
 1330         JSR osword
 1340         LDA regblock+9
 1350         BNE regerror
 1360         RTS
 1370 .regerror
 1380         BRK
 1390         BRK
 1400         EQUS "Special register error"
 1410         BRK
 1420 .printbyte
 1430         LDA physical  \ print physical track number
 1440         PHA
 1450         LSR A
 1460         LSR A
 1470         LSR A
 1480         LSR A
 1490         JSR nybble    \ print MS nybble
 1500         PLA
 1510         JSR nybble    \ print LS nybble
 1520         LDA #ASC(" ")
 1530         LDX verblock+10 \ load deleted data flag
 1540         BEQ space     \ if =0 not deleted
 1550         LDA #ASC("d") \ deleted data mark
 1560 .space
 1570         JSR oswrch    \ print space or "d"
 1580         LDA #ASC(" ")
 1590         JMP oswrch    \ print space
 1600 .nybble
 1610         AND #&0F
 1620         SED
 1630         CLC
 1640         ADC #&90
 1650         ADC #&40
 1660         CLD
 1670         JMP oswrch    \ print nybble and return
 1680 .seekblock
 1690         EQUB &FF      \ current drive
 1700         EQUD &00      \ does not matter
 1710         EQUD &00006901 \ seek, 1 parameter
 1720 .idsblock
 1730         EQUB &FF      \ current drive
 1740         EQUD buffer   \ address of buffer
 1750         EQUD &00005B03 \ read sector ids
 1760         EQUW &00
 1770 .verblock
 1780         EQUB &FF      \ current drive
 1790         EQUD &00      \ does not matter
 1800         EQUD &00005F03 \ verify multi sector
 1810         EQUW &00
 1820 .regblock
 1830         EQUB &FF      \ current drive
 1840         EQUD &00      \ does not matter
 1850         EQUD &00127A02
 1860         EQUB &00      \ result
 1870 .sizes
 1880         EQUB 18
 1890         EQUB 10
 1900         EQUB 5
 1910         EQUB 2
 1920         EQUB 1
 1930 .physical
 1940         EQUB &00
 1950 .sectornumber
 1960         EQUB &00
 1970 .last
 1980         EQUB &00
 1990 ]
 2000 NEXT
 2010 INPUT'"Number of tracks (40/80) "tracks$
 2020 IF tracks$="40" ?last = 40 ELSE ?last = 80
 2030 PRINT"Insert ";?last;" track disc into current drive"
 2040 PRINT"and press the Spacebar to verify"
 2050 REPEAT
 2060 UNTIL GET=32
 2070 CALL mcode


The program is commented to explain how it works and you might like to
come back to it after reading module 2. When the program VERIFY was used
on the "Grand Prix Construction Set" disc the output shown in figure 5 was
produced.


           >LO."VERIFY"
           >RUN         

           Number of tracks (40/80) 40
           Insert 40 track disc into current drive
           and press the Spacebar to verify

           00  01  02  03  04  05  06  07  08  09
           0A  0B  0C  0Dd 0Ed 0Fd 10d 11d 12  13
           14  15  16  17  18  19d 1Ad 1Bd 1Cd 1Dd
           1Ed 1Fd 20d 21d 22d 23  24  25  26  27

           >


Figure 5. The output from the program VERIFY
--------------------------------------------


The lower case letter d following tracks &0D to &11 and tracks &19 to &22
indicates that these tracks have deleted data stored on them. The game on
this disc loads in two parts and I would not be at all surprised to find
that the two parts are stored on the tracks with deleted data. If the
program VERIFY is used with a standard DFS disc it will not produce a
lower case d to indicate the use of the deleted data marker.
00000000  0d 54 68 65 20 41 63 6f  72 6e 20 44 46 53 20 4f  |.The Acorn DFS O|
00000010  73 77 6f 72 64 20 63 6f  6d 6d 61 6e 64 73 20 20  |sword commands  |
00000020  2d 20 20 62 79 20 20 2d  20 20 47 6f 72 64 6f 6e  |-  by  -  Gordon|
00000030  20 48 6f 72 73 69 6e 67  74 6f 6e 0d 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 2d 0d 0d  4d 6f 64 75 6c 65 20 30  |------..Module 0|
00000080  2e 20 49 6e 74 72 6f 64  75 63 74 69 6f 6e 0d 2d  |. Introduction.-|
00000090  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000000a0  2d 2d 2d 2d 2d 0d 0d 20  20 20 20 20 20 2b 2d 2d  |-----..      +--|
000000b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000000e0  2d 2d 2d 2d 2d 2d 2d 2d  2b 0d 20 20 20 20 20 20  |--------+.      |
000000f0  7c 20 41 6c 6c 20 74 68  65 20 44 46 53 20 6d 6f  || All the DFS mo|
00000100  64 75 6c 65 73 20 69 6e  20 20 74 68 69 73 20 20  |dules in  this  |
00000110  73 65 72 69 65 73 20 20  75 73 65 20 70 72 6f 67  |series  use prog|
00000120  72 61 6d 73 20 77 68 69  63 68 20 7c 0d 20 20 20  |rams which |.   |
00000130  20 20 20 7c 20 65 78 70  65 72 69 6d 65 6e 74 20  |   | experiment |
00000140  20 77 69 74 68 20 74 68  65 20 66 6f 72 6d 61 74  | with the format|
00000150  20 61 6e 64 20 63 6f 6e  74 65 6e 74 73 20 6f 66  | and contents of|
00000160  20 64 69 73 63 73 2e 20  54 68 65 73 65 20 7c 0d  | discs. These |.|
00000170  20 20 20 20 20 20 7c 20  65 78 70 65 72 69 6d 65  |      | experime|
00000180  6e 74 73 20 6d 61 79 20  20 68 61 76 65 20 64 69  |nts may  have di|
00000190  73 61 73 74 65 72 6f 75  73 20 65 66 66 65 63 74  |sasterous effect|
000001a0  73 20 69 66 20 79 6f 75  20 75 73 65 20 61 6e 79  |s if you use any|
000001b0  20 7c 0d 20 20 20 20 20  20 7c 20 6f 66 20 74 68  | |.      | of th|
000001c0  65 20 70 72 6f 67 72 61  6d 73 20 20 6f 6e 20 20  |e programs  on  |
000001d0  64 69 73 63 73 20 20 77  68 69 63 68 20 73 74 6f  |discs  which sto|
000001e0  72 65 20 70 72 6f 67 72  61 6d 73 20 6f 72 20 64  |re programs or d|
000001f0  61 74 61 20 7c 0d 20 20  20 20 20 20 7c 20 77 68  |ata |.      | wh|
00000200  69 63 68 20 79 6f 75 20  63 61 6e 6e 6f 74 20 61  |ich you cannot a|
00000210  66 66 6f 72 64 20 74 6f  20 6c 6f 73 65 2e 20 20  |fford to lose.  |
00000220  59 6f 75 20 20 73 68 6f  75 6c 64 20 20 66 69 72  |You  should  fir|
00000230  73 74 20 74 72 79 20 7c  0d 20 20 20 20 20 20 7c  |st try |.      ||
00000240  20 6f 75 74 20 20 74 68  65 20 20 70 72 6f 67 72  | out  the  progr|
00000250  61 6d 73 20 20 75 73 69  6e 67 20 20 64 69 73 63  |ams  using  disc|
00000260  73 20 20 74 68 61 74 20  20 68 61 76 65 20 65 69  |s  that  have ei|
00000270  74 68 65 72 20 62 65 65  6e 20 7c 0d 20 20 20 20  |ther been |.    |
00000280  20 20 7c 20 64 75 70 6c  69 63 61 74 65 64 20 6f  |  | duplicated o|
00000290  72 2c 20 62 65 74 74 65  72 20 73 74 69 6c 6c 2c  |r, better still,|
000002a0  20 68 61 76 65 20 6e 6f  74 20 62 65 65 6e 20 75  | have not been u|
000002b0  73 65 64 20 61 74 20 61  6c 6c 2e 20 20 7c 0d 20  |sed at all.  |. |
000002c0  20 20 20 20 20 2b 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |     +----------|
000002d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000300  2b 0d 0d 0d 54 68 65 72  65 20 61 72 65 20 65 69  |+...There are ei|
00000310  67 68 74 20 6d 6f 64 75  6c 65 73 20 69 6e 20 74  |ght modules in t|
00000320  68 69 73 20 70 61 72 74  20 6f 66 20 74 68 65 20  |his part of the |
00000330  4f 70 63 6f 64 65 73 20  73 65 72 69 65 73 2e 20  |Opcodes series. |
00000340  54 68 65 20 6d 6f 64 75  6c 65 73 0d 61 72 65 20  |The modules.are |
00000350  69 6e 20 66 69 6c 65 73  20 6e 61 6d 65 64 20 54  |in files named T|
00000360  2f 44 46 53 30 30 20 74  6f 20 54 2f 44 46 53 30  |/DFS00 to T/DFS0|
00000370  37 2e 20 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |7. The following|
00000380  20 74 6f 70 69 63 73 20  77 69 6c 6c 20 62 65 0d  | topics will be.|
00000390  63 6f 76 65 72 65 64 20  69 6e 20 74 68 65 73 65  |covered in these|
000003a0  20 73 65 72 69 65 73 20  6d 6f 64 75 6c 65 73 2e  | series modules.|
000003b0  0d 0d 0d 4d 6f 64 75 6c  65 20 30 2e 20 54 68 69  |...Module 0. Thi|
000003c0  73 20 6d 6f 64 75 6c 65  2e 20 49 6e 74 72 6f 64  |s module. Introd|
000003d0  75 63 74 69 6f 6e 2e 0d  20 20 20 20 20 20 20 20  |uction..        |
000003e0  20 20 50 72 6f 67 72 61  6d 73 3a 20 49 44 53 44  |  Programs: IDSD|
000003f0  55 4d 50 2c 20 56 45 52  49 46 59 0d 0d 4d 6f 64  |UMP, VERIFY..Mod|
00000400  75 6c 65 20 31 2e 20 54  68 65 20 44 46 53 20 4f  |ule 1. The DFS O|
00000410  73 77 6f 72 64 20 63 6f  6d 6d 61 6e 64 73 20 28  |sword commands (|
00000420  50 61 72 74 20 31 29 2e  0d 20 20 20 20 20 20 20  |Part 1)..       |
00000430  20 20 20 50 72 6f 67 72  61 6d 73 3a 20 43 59 43  |   Programs: CYC|
00000440  4c 45 53 2c 20 48 4f 57  4d 41 4e 59 2c 20 53 54  |LES, HOWMANY, ST|
00000450  41 54 55 53 2c 20 4f 55  54 50 55 54 0d 0d 4d 6f  |ATUS, OUTPUT..Mo|
00000460  64 75 6c 65 20 32 2e 20  54 68 65 20 44 46 53 20  |dule 2. The DFS |
00000470  4f 73 77 6f 72 64 20 63  6f 6d 6d 61 6e 64 73 20  |Osword commands |
00000480  28 50 61 72 74 20 32 29  2e 0d 20 20 20 20 20 20  |(Part 2)..      |
00000490  20 20 20 20 50 72 6f 67  72 61 6d 73 3a 20 46 4f  |    Programs: FO|
000004a0  52 4d 31 30 2c 20 4e 4f  54 46 4f 52 4d 2c 20 57  |RM10, NOTFORM, W|
000004b0  52 49 54 45 31 30 2c 20  52 45 41 44 31 30 0d 0d  |RITE10, READ10..|
000004c0  4d 6f 64 75 6c 65 20 33  2e 20 46 6f 72 6d 61 74  |Module 3. Format|
000004d0  74 69 6e 67 20 73 69 6e  67 6c 65 20 64 65 6e 73  |ting single dens|
000004e0  69 74 79 20 64 69 73 63  73 2e 0d 20 20 20 20 20  |ity discs..     |
000004f0  20 20 20 20 20 50 72 6f  67 72 61 6d 3a 20 4f 46  |     Program: OF|
00000500  46 53 45 54 2c 20 49 44  53 44 55 4d 50 2c 20 56  |FSET, IDSDUMP, V|
00000510  45 52 49 46 59 0d 0d 4d  6f 64 75 6c 65 20 34 2e  |ERIFY..Module 4.|
00000520  20 43 6f 6e 76 65 72 74  69 6e 67 20 34 30 20 74  | Converting 40 t|
00000530  72 61 63 6b 20 64 69 73  63 73 20 74 6f 20 72 75  |rack discs to ru|
00000540  6e 20 6f 6e 20 38 30 20  74 72 61 63 6b 20 64 69  |n on 80 track di|
00000550  73 63 20 64 72 69 76 65  73 2e 0d 20 20 20 20 20  |sc drives..     |
00000560  20 20 20 20 20 50 72 6f  67 72 61 6d 3a 20 43 4f  |     Program: CO|
00000570  4e 56 45 52 54 0d 0d 4d  6f 64 75 6c 65 20 35 2e  |NVERT..Module 5.|
00000580  20 43 72 65 61 74 69 6e  67 20 64 69 73 63 73 20  | Creating discs |
00000590  63 6f 6d 70 61 74 69 62  6c 65 20 77 69 74 68 20  |compatible with |
000005a0  62 6f 74 68 20 34 30 20  61 6e 64 20 38 30 20 74  |both 40 and 80 t|
000005b0  72 61 63 6b 20 64 72 69  76 65 73 2e 0d 20 20 20  |rack drives..   |
000005c0  20 20 20 20 20 20 20 50  72 6f 67 72 61 6d 3a 20  |       Program: |
000005d0  44 55 41 4c 44 46 53 2c  20 4f 46 46 53 45 54 0d  |DUALDFS, OFFSET.|
000005e0  0d 4d 6f 64 75 6c 65 20  36 2e 20 43 72 65 61 74  |.Module 6. Creat|
000005f0  69 6e 67 20 63 6f 70 79  2d 70 72 6f 74 65 63 74  |ing copy-protect|
00000600  65 64 20 73 69 6e 67 6c  65 20 64 65 6e 73 69 74  |ed single densit|
00000610  79 20 64 69 73 63 73 2e  0d 20 20 20 20 20 20 20  |y discs..       |
00000620  20 20 20 50 72 6f 67 72  61 6d 73 3a 20 53 45 43  |   Programs: SEC|
00000630  54 4f 52 35 2c 20 45 4e  43 4f 44 45 2c 20 44 45  |TOR5, ENCODE, DE|
00000640  43 4f 44 45 2c 20 49 44  53 44 55 4d 50 2c 20 56  |CODE, IDSDUMP, V|
00000650  45 52 49 46 59 0d 0d 4d  6f 64 75 6c 65 20 37 2e  |ERIFY..Module 7.|
00000660  20 44 75 70 6c 69 63 61  74 69 6e 67 20 63 6f 70  | Duplicating cop|
00000670  79 2d 70 72 6f 74 65 63  74 65 64 20 73 69 6e 67  |y-protected sing|
00000680  6c 65 20 64 65 6e 73 69  74 79 20 64 69 73 63 73  |le density discs|
00000690  2e 0d 20 20 20 20 20 20  20 20 20 20 50 72 6f 67  |..          Prog|
000006a0  72 61 6d 73 3a 20 43 4f  50 59 44 46 53 2c 20 43  |rams: COPYDFS, C|
000006b0  4f 50 59 41 4c 4c 2c 20  44 45 46 4f 52 4d 2c 20  |OPYALL, DEFORM, |
000006c0  49 44 53 44 55 4d 50 2c  20 56 45 52 49 46 59 0d  |IDSDUMP, VERIFY.|
000006d0  0d 0d 54 68 65 20 6c 61  74 65 72 20 6d 6f 64 75  |..The later modu|
000006e0  6c 65 73 20 64 65 76 65  6c 6f 70 20 74 68 65 20  |les develop the |
000006f0  69 64 65 61 73 20 61 6e  64 20 74 65 63 68 6e 69  |ideas and techni|
00000700  71 75 65 73 20 64 65 73  63 72 69 62 65 64 20 69  |ques described i|
00000710  6e 20 74 68 65 0d 65 61  72 6c 69 65 72 20 6d 6f  |n the.earlier mo|
00000720  64 75 6c 65 73 20 61 6e  64 20 66 6f 72 20 74 68  |dules and for th|
00000730  69 73 20 72 65 61 73 6f  6e 20 74 68 65 20 73 65  |is reason the se|
00000740  72 69 65 73 20 6e 65 65  64 73 20 74 6f 20 62 65  |ries needs to be|
00000750  20 77 6f 72 6b 65 64 20  74 68 72 6f 75 67 68 0d  | worked through.|
00000760  66 72 6f 6d 20 62 65 67  69 6e 6e 69 6e 67 20 74  |from beginning t|
00000770  6f 20 65 6e 64 20 72 61  74 68 65 72 20 74 68 61  |o end rather tha|
00000780  6e 20 75 73 65 64 20 61  73 20 61 20 72 65 66 65  |n used as a refe|
00000790  72 65 6e 63 65 20 67 75  69 64 65 2e 0d 0d 0d 2d  |rence guide....-|
000007a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000007c0  2d 2d 2d 0d 49 6e 74 72  6f 64 75 63 74 69 6f 6e  |---.Introduction|
000007d0  20 74 6f 20 73 69 6e 67  6c 65 20 64 65 6e 73 69  | to single densi|
000007e0  74 79 20 64 69 73 63 73  0d 2d 2d 2d 2d 2d 2d 2d  |ty discs.-------|
000007f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000800  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 0d 54  |-------------..T|
00000810  68 65 72 65 20 61 72 65  20 74 68 72 65 65 20 6c  |here are three l|
00000820  65 76 65 6c 73 20 61 74  20 77 68 69 63 68 20 64  |evels at which d|
00000830  61 74 61 20 63 61 6e 20  62 65 20 77 72 69 74 74  |ata can be writt|
00000840  65 6e 20 74 6f 20 61 6e  64 20 72 65 61 64 20 66  |en to and read f|
00000850  72 6f 6d 0d 73 69 6e 67  6c 65 20 64 65 6e 73 69  |rom.single densi|
00000860  74 79 20 64 69 73 63 73  2e 20 54 68 65 20 68 69  |ty discs. The hi|
00000870  67 68 65 73 74 20 6c 65  76 65 6c 2c 20 77 69 74  |ghest level, wit|
00000880  68 20 77 68 69 63 68 20  61 6c 6c 20 64 69 73 63  |h which all disc|
00000890  20 75 73 65 72 73 20 73  68 6f 75 6c 64 0d 62 65  | users should.be|
000008a0  20 66 61 6d 69 6c 69 61  72 2c 20 69 73 20 74 68  | familiar, is th|
000008b0  72 6f 75 67 68 20 75 73  69 6e 67 20 74 68 65 20  |rough using the |
000008c0  44 46 53 20 73 74 61 72  20 63 6f 6d 6d 61 6e 64  |DFS star command|
000008d0  73 2c 20 66 69 6c 65 6e  61 6d 65 73 20 61 6e 64  |s, filenames and|
000008e0  20 74 68 65 0d 72 61 6e  67 65 20 6f 66 20 42 47  | the.range of BG|
000008f0  45 54 2c 20 42 50 55 54  20 61 6e 64 20 6f 74 68  |ET, BPUT and oth|
00000900  65 72 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |er filing system|
00000910  20 63 6f 6d 6d 61 6e 64  73 2e 20 54 68 69 73 20  | commands. This |
00000920  6c 65 76 65 6c 20 68 61  73 20 61 0d 6c 61 72 67  |level has a.larg|
00000930  65 20 61 6d 6d 6f 75 6e  74 20 6f 66 20 66 69 6c  |e ammount of fil|
00000940  69 6e 67 20 73 79 73 74  65 6d 20 69 6e 64 65 70  |ing system indep|
00000950  65 6e 64 65 6e 63 65 20  73 6f 20 74 68 61 74 2c  |endence so that,|
00000960  20 66 6f 72 20 65 78 61  6d 70 6c 65 2c 20 74 68  | for example, th|
00000970  65 20 73 61 6d 65 0d 2a  53 41 56 45 20 63 6f 6d  |e same.*SAVE com|
00000980  6d 61 6e 64 20 73 79 6e  74 61 78 20 63 61 6e 20  |mand syntax can |
00000990  62 65 20 75 73 65 64 20  77 69 74 68 20 62 6f 74  |be used with bot|
000009a0  68 20 74 61 70 65 20 61  6e 64 20 64 69 73 63 2e  |h tape and disc.|
000009b0  20 57 68 65 6e 20 74 68  69 73 20 68 69 67 68 0d  | When this high.|
000009c0  6c 65 76 65 6c 20 61 63  63 65 73 73 20 74 6f 20  |level access to |
000009d0  74 68 65 20 44 46 53 20  69 73 20 75 73 65 64 2c  |the DFS is used,|
000009e0  20 62 6f 74 68 20 74 68  65 20 70 72 6f 67 72 61  | both the progra|
000009f0  6d 6d 65 72 20 61 6e 64  20 74 68 65 20 70 72 6f  |mmer and the pro|
00000a00  67 72 61 6d 20 75 73 65  72 0d 61 72 65 20 74 69  |gram user.are ti|
00000a10  65 64 20 74 6f 20 74 68  65 20 72 65 73 74 72 69  |ed to the restri|
00000a20  63 74 69 6f 6e 73 20 6f  66 20 74 68 65 20 70 61  |ctions of the pa|
00000a30  72 74 69 63 75 6c 61 72  20 44 46 53 20 52 4f 4d  |rticular DFS ROM|
00000a40  20 73 6f 20 74 68 61 74  2c 20 66 6f 72 0d 65 78  | so that, for.ex|
00000a50  61 6d 70 6c 65 2c 20 6e  6f 6e 2d 73 74 61 6e 64  |ample, non-stand|
00000a60  61 72 64 20 64 69 73 63  20 66 6f 72 6d 61 74 73  |ard disc formats|
00000a70  20 61 72 65 20 6e 6f 74  20 61 76 61 69 6c 61 62  | are not availab|
00000a80  6c 65 2e 0d 0d 41 20 6c  6f 77 65 72 20 6c 65 76  |le...A lower lev|
00000a90  65 6c 20 6f 66 20 61 63  63 65 73 73 20 74 6f 20  |el of access to |
00000aa0  74 68 65 20 44 46 53 20  52 4f 4d 20 69 73 20 70  |the DFS ROM is p|
00000ab0  72 6f 76 69 64 65 64 20  62 79 20 74 68 65 20 44  |rovided by the D|
00000ac0  46 53 20 4f 73 77 6f 72  64 0d 63 6f 6d 6d 61 6e  |FS Osword.comman|
00000ad0  64 73 2e 20 4f 73 77 6f  72 64 73 20 26 37 44 20  |ds. Oswords &7D |
00000ae0  74 6f 20 26 37 46 20 61  72 65 20 75 73 65 64 20  |to &7F are used |
00000af0  62 79 20 74 68 65 20 44  46 53 20 61 6e 64 20 4f  |by the DFS and O|
00000b00  73 77 6f 72 64 73 20 26  37 30 20 74 6f 20 26 37  |swords &70 to &7|
00000b10  33 0d 61 72 65 20 75 73  65 64 20 62 79 20 74 68  |3.are used by th|
00000b20  65 20 41 44 46 53 2e 0d  0d 54 68 65 20 41 44 46  |e ADFS...The ADF|
00000b30  53 20 69 73 20 6f 6e 6c  79 20 61 76 61 69 6c 61  |S is only availa|
00000b40  62 6c 65 20 6f 6e 20 42  42 43 20 63 6f 6d 70 75  |ble on BBC compu|
00000b50  74 65 72 73 20 77 68 69  63 68 20 75 73 65 20 74  |ters which use t|
00000b60  68 65 20 57 65 73 74 65  72 6e 20 44 69 67 69 74  |he Western Digit|
00000b70  61 6c 0d 31 37 37 30 20  28 6f 72 20 31 37 37 32  |al.1770 (or 1772|
00000b80  29 20 64 69 73 63 20 63  6f 6e 74 72 6f 6c 6c 65  |) disc controlle|
00000b90  72 2e 20 54 68 65 20 42  42 43 20 42 20 44 46 53  |r. The BBC B DFS|
00000ba0  20 77 61 73 20 64 65 73  69 67 6e 65 64 20 74 6f  | was designed to|
00000bb0  20 75 73 65 20 74 68 65  0d 49 6e 74 65 6c 20 38  | use the.Intel 8|
00000bc0  32 37 31 20 64 69 73 63  20 63 6f 6e 74 72 6f 6c  |271 disc control|
00000bd0  6c 65 72 20 61 6e 64 20  63 61 6e 6e 6f 74 20 73  |ler and cannot s|
00000be0  75 70 70 6f 72 74 20 74  68 65 20 41 44 46 53 20  |upport the ADFS |
00000bf0  77 69 74 68 6f 75 74 20  61 20 31 37 37 30 0d 75  |without a 1770.u|
00000c00  70 67 72 61 64 65 2e 20  54 68 65 20 31 37 37 30  |pgrade. The 1770|
00000c10  20 64 69 73 63 20 63 6f  6e 74 72 6f 6c 6c 65 72  | disc controller|
00000c20  20 69 73 20 66 69 74 74  65 64 20 61 73 20 73 74  | is fitted as st|
00000c30  61 6e 64 61 72 64 20 74  6f 20 74 68 65 20 42 42  |andard to the BB|
00000c40  43 20 42 2b 20 61 6e 64  0d 4d 61 73 74 65 72 20  |C B+ and.Master |
00000c50  73 65 72 69 65 73 20 63  6f 6d 70 75 74 65 72 73  |series computers|
00000c60  2e 20 54 68 65 20 31 37  37 30 20 64 69 73 63 20  |. The 1770 disc |
00000c70  63 6f 6e 74 72 6f 6c 6c  65 72 20 63 61 6e 20 73  |controller can s|
00000c80  75 70 70 6f 72 74 20 62  6f 74 68 20 73 69 6e 67  |upport both sing|
00000c90  6c 65 0d 64 65 6e 73 69  74 79 20 61 6e 64 20 64  |le.density and d|
00000ca0  6f 75 62 6c 65 20 64 65  6e 73 69 74 79 20 64 69  |ouble density di|
00000cb0  73 63 20 66 6f 72 6d 61  74 73 20 62 75 74 20 74  |sc formats but t|
00000cc0  68 65 20 38 32 37 31 20  63 61 6e 20 6f 6e 6c 79  |he 8271 can only|
00000cd0  20 73 75 70 70 6f 72 74  20 74 68 65 0d 73 69 6e  | support the.sin|
00000ce0  67 6c 65 20 64 65 6e 73  69 74 79 20 66 6f 72 6d  |gle density form|
00000cf0  61 74 2e 20 41 6c 6c 20  64 69 73 63 20 62 61 73  |at. All disc bas|
00000d00  65 64 20 42 42 43 20 63  6f 6d 70 75 74 65 72 73  |ed BBC computers|
00000d10  20 61 72 65 20 63 61 70  61 62 6c 65 20 6f 66 20  | are capable of |
00000d20  75 73 69 6e 67 0d 4f 73  77 6f 72 64 73 20 26 37  |using.Oswords &7|
00000d30  44 20 74 6f 20 26 37 46  20 62 75 74 20 6f 6e 6c  |D to &7F but onl|
00000d40  79 20 74 68 6f 73 65 20  77 69 74 68 20 74 68 65  |y those with the|
00000d50  20 41 44 46 53 20 63 61  6e 20 75 73 65 20 4f 73  | ADFS can use Os|
00000d60  77 6f 72 64 73 20 26 37  30 20 74 6f 0d 26 37 33  |words &70 to.&73|
00000d70  2e 20 4f 6e 6c 79 20 4f  73 77 6f 72 64 73 20 26  |. Only Oswords &|
00000d80  37 44 20 74 6f 20 26 37  46 20 77 69 6c 6c 20 62  |7D to &7F will b|
00000d90  65 20 63 6f 6e 73 69 64  65 72 65 64 20 69 6e 20  |e considered in |
00000da0  64 65 74 61 69 6c 20 69  6e 20 74 68 69 73 20 73  |detail in this s|
00000db0  65 72 69 65 73 2e 0d 0d  54 68 65 20 6c 6f 77 65  |eries...The lowe|
00000dc0  73 74 20 6c 65 76 65 6c  20 6f 66 20 61 63 63 65  |st level of acce|
00000dd0  73 73 20 74 6f 20 64 69  73 63 73 20 63 61 6e 20  |ss to discs can |
00000de0  62 65 20 61 63 68 69 65  76 65 64 20 62 79 20 70  |be achieved by p|
00000df0  72 6f 67 72 61 6d 69 6e  67 20 74 68 65 20 64 69  |rograming the di|
00000e00  73 63 0d 63 6f 6e 74 6f  6c 6c 65 72 20 64 69 72  |sc.contoller dir|
00000e10  65 63 74 6c 79 2e 0d 0d  54 68 65 20 68 61 72 64  |ectly...The hard|
00000e20  77 61 72 65 20 77 68 69  63 68 20 6d 61 6b 65 73  |ware which makes|
00000e30  20 75 70 20 61 20 42 42  43 20 6d 69 63 72 6f 63  | up a BBC microc|
00000e40  6f 6d 70 75 74 65 72 20  73 79 73 74 65 6d 20 69  |omputer system i|
00000e50  73 20 6d 65 6d 6f 72 79  20 6d 61 70 70 65 64 2e  |s memory mapped.|
00000e60  0d 54 68 69 73 20 6d 65  61 6e 73 20 74 68 61 74  |.This means that|
00000e70  20 74 68 65 20 75 73 61  62 6c 65 20 72 65 67 69  | the usable regi|
00000e80  73 74 65 72 73 20 6f 66  20 61 6c 6c 20 74 68 65  |sters of all the|
00000e90  20 68 61 72 64 77 61 72  65 20 64 65 76 69 63 65  | hardware device|
00000ea0  73 20 61 76 61 69 6c 61  62 6c 65 0d 74 6f 20 74  |s available.to t|
00000eb0  68 65 20 49 2f 4f 20 70  72 6f 63 65 73 73 6f 72  |he I/O processor|
00000ec0  20 61 72 65 20 6d 61 70  70 65 64 20 6f 6e 74 6f  | are mapped onto|
00000ed0  20 74 68 65 20 6d 61 69  6e 20 6d 65 6d 6f 72 79  | the main memory|
00000ee0  20 61 64 64 72 65 73 73  20 73 70 61 63 65 20 75  | address space u|
00000ef0  73 65 64 20 62 79 0d 74  68 65 20 36 35 30 32 20  |sed by.the 6502 |
00000f00  43 50 55 2e 20 50 61 67  65 20 26 46 45 2c 20 69  |CPU. Page &FE, i|
00000f10  65 2e 20 6d 65 6d 6f 72  79 20 66 72 6f 6d 20 26  |e. memory from &|
00000f20  46 45 30 30 20 74 6f 20  26 46 45 46 46 2c 20 69  |FE00 to &FEFF, i|
00000f30  73 20 6b 6e 6f 77 6e 20  61 73 20 53 68 65 69 6c  |s known as Sheil|
00000f40  61 0d 61 6e 64 20 74 68  69 73 20 70 61 67 65 20  |a.and this page |
00000f50  69 73 20 72 65 73 65 72  76 65 64 20 66 6f 72 20  |is reserved for |
00000f60  74 68 65 20 68 61 72 64  77 61 72 65 20 6f 6e 20  |the hardware on |
00000f70  74 68 65 20 49 2f 4f 20  70 72 6f 63 65 73 73 6f  |the I/O processo|
00000f80  72 27 73 20 63 69 72 63  75 69 74 0d 62 6f 61 72  |r's circuit.boar|
00000f90  64 2e 0d 0d 53 68 65 69  6c 61 20 61 64 64 72 65  |d...Sheila addre|
00000fa0  73 73 65 73 20 26 38 30  20 74 6f 20 26 39 46 20  |sses &80 to &9F |
00000fb0  61 72 65 20 61 76 61 69  6c 61 62 6c 65 20 74 6f  |are available to|
00000fc0  20 74 68 65 20 66 6c 6f  70 70 79 20 64 69 73 63  | the floppy disc|
00000fd0  20 63 6f 6e 74 72 6f 6c  6c 65 72 2e 0d 46 69 76  | controller..Fiv|
00000fe0  65 20 6f 66 20 74 68 65  20 42 42 43 20 42 27 73  |e of the BBC B's|
00000ff0  20 38 32 37 31 20 72 65  67 69 73 74 65 72 73 20  | 8271 registers |
00001000  61 72 65 20 6d 61 70 70  65 64 20 6f 6e 74 6f 20  |are mapped onto |
00001010  74 68 65 20 53 68 65 69  6c 61 20 61 64 64 72 65  |the Sheila addre|
00001020  73 73 65 73 0d 66 72 6f  6d 20 26 46 45 38 30 20  |sses.from &FE80 |
00001030  74 6f 20 26 46 45 38 32  2e 20 54 68 72 65 65 20  |to &FE82. Three |
00001040  6f 66 20 74 68 65 20 66  69 76 65 20 72 65 67 69  |of the five regi|
00001050  73 74 65 72 73 20 63 61  6e 20 6f 6e 6c 79 20 62  |sters can only b|
00001060  65 20 77 72 69 74 74 65  6e 20 69 6e 74 6f 0d 61  |e written into.a|
00001070  6e 64 20 74 68 65 20 6f  74 68 65 72 20 74 77 6f  |nd the other two|
00001080  20 63 61 6e 20 6f 6e 6c  79 20 62 65 20 72 65 61  | can only be rea|
00001090  64 20 66 72 6f 6d 2e 20  46 6f 72 20 74 68 69 73  |d from. For this|
000010a0  20 72 65 61 73 6f 6e 20  6f 6e 6c 79 20 74 68 72  | reason only thr|
000010b0  65 65 20 53 68 65 69 6c  61 0d 61 64 64 72 65 73  |ee Sheila.addres|
000010c0  73 65 73 20 6e 65 65 64  20 74 6f 20 62 65 20 75  |ses need to be u|
000010d0  73 65 64 20 74 6f 20 61  63 63 65 73 73 20 74 68  |sed to access th|
000010e0  65 20 66 69 76 65 20 72  65 67 69 73 74 65 72 73  |e five registers|
000010f0  2e 20 54 68 65 73 65 20  74 68 72 65 65 0d 61 64  |. These three.ad|
00001100  64 72 65 73 73 65 73 20  63 61 6e 20 62 65 20 75  |dresses can be u|
00001110  73 65 64 20 74 6f 20 63  6f 6d 6d 75 6e 69 63 61  |sed to communica|
00001120  74 65 20 77 69 74 68 20  74 68 65 20 38 32 37 31  |te with the 8271|
00001130  20 61 6e 64 20 74 6f 20  69 6e 73 74 72 75 63 74  | and to instruct|
00001140  20 69 74 20 74 6f 0d 65  78 65 63 75 74 65 20 61  | it to.execute a|
00001150  20 77 69 64 65 20 72 61  6e 67 65 20 6f 66 20 66  | wide range of f|
00001160  75 6e 63 74 69 6f 6e 73  2e 20 53 68 65 69 6c 61  |unctions. Sheila|
00001170  20 61 64 64 72 65 73 73  20 26 46 45 38 34 20 69  | address &FE84 i|
00001180  73 20 75 73 65 64 20 74  6f 20 70 61 73 73 0d 64  |s used to pass.d|
00001190  61 74 61 20 74 6f 2c 20  61 6e 64 20 74 6f 20 72  |ata to, and to r|
000011a0  65 61 64 20 64 61 74 61  20 66 72 6f 6d 2c 20 74  |ead data from, t|
000011b0  68 65 20 64 69 73 63 20  63 6f 6e 74 72 6f 6c 6c  |he disc controll|
000011c0  65 72 2e 20 54 68 65 20  6d 61 70 70 69 6e 67 20  |er. The mapping |
000011d0  6f 66 20 74 68 65 0d 38  32 37 31 20 72 65 67 69  |of the.8271 regi|
000011e0  73 74 65 72 73 20 6f 6e  74 6f 20 53 68 65 69 6c  |sters onto Sheil|
000011f0  61 20 61 64 64 72 65 73  73 65 73 20 69 73 20 73  |a addresses is s|
00001200  68 6f 77 6e 20 69 6e 20  66 69 67 75 72 65 20 31  |hown in figure 1|
00001210  2e 0d 0d 0d 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00001220  20 20 20 20 20 2b 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |     +----------|
00001230  2d 2b 2d 2d 2d 2d 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |-+---------+----|
00001240  2d 2d 2d 2d 2d 2b 0d 20  20 20 20 20 20 20 20 20  |-----+.         |
00001250  20 20 20 20 20 20 20 20  7c 20 38 32 37 31 20 20  |        | 8271  |
00001260  20 20 20 20 7c 20 53 68  65 69 6c 61 20 20 7c 20  |    | Sheila  | |
00001270  72 65 61 64 20 6f 72 20  7c 0d 20 20 20 20 20 20  |read or |.      |
00001280  20 20 20 20 20 20 20 20  20 20 20 7c 20 72 65 67  |           | reg|
00001290  69 73 74 65 72 20 20 7c  20 61 64 64 72 65 73 73  |ister  | address|
000012a0  20 7c 20 77 72 69 74 65  20 20 20 7c 0d 20 20 20  | | write   |.   |
000012b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 2b 2d  |              +-|
000012c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |----------+-----|
000012d0  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2d 2d 2d 2d 2b 0d  |----+---------+.|
000012e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000012f0  20 7c 20 73 74 61 74 75  73 20 20 20 20 7c 20 26  | | status    | &|
00001300  46 45 38 30 20 20 20 7c  20 72 65 61 64 20 20 20  |FE80   | read   |
00001310  20 7c 0d 20 20 20 20 20  20 20 20 20 20 20 20 20  | |.             |
00001320  20 20 20 20 7c 20 72 65  73 75 6c 74 20 20 20 20  |    | result    |
00001330  7c 20 26 46 45 38 31 20  20 20 7c 20 72 65 61 64  || &FE81   | read|
00001340  20 20 20 20 7c 0d 20 20  20 20 20 20 20 20 20 20  |    |.          |
00001350  20 20 20 20 20 20 20 7c  20 63 6f 6d 6d 61 6e 64  |       | command|
00001360  20 20 20 7c 20 26 46 45  38 30 20 20 20 7c 20 77  |   | &FE80   | w|
00001370  72 69 74 65 20 20 20 7c  0d 20 20 20 20 20 20 20  |rite   |.       |
00001380  20 20 20 20 20 20 20 20  20 20 7c 20 70 61 72 61  |          | para|
00001390  6d 65 74 65 72 20 7c 20  26 46 45 38 31 20 20 20  |meter | &FE81   |
000013a0  7c 20 77 72 69 74 65 20  20 20 7c 0d 20 20 20 20  || write   |.    |
000013b0  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 20 72  |             | r|
000013c0  65 73 65 74 20 20 20 20  20 7c 20 26 46 45 38 32  |eset     | &FE82|
000013d0  20 20 20 7c 20 77 72 69  74 65 20 20 20 7c 0d 20  |   | write   |. |
000013e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000013f0  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |+-----------+---|
00001400  2d 2d 2d 2d 2d 2d 2b 2d  2d 2d 2d 2d 2d 2d 2d 2d  |------+---------|
00001410  2b 0d 0d 46 69 67 75 72  65 20 31 2e 20 54 68 65  |+..Figure 1. The|
00001420  20 38 32 37 31 20 72 65  67 69 73 74 65 72 73 20  | 8271 registers |
00001430  6d 61 70 70 65 64 20 6f  6e 74 6f 20 53 68 65 69  |mapped onto Shei|
00001440  6c 61 20 61 64 64 72 65  73 73 65 73 0d 2d 2d 2d  |la addresses.---|
00001450  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001480  2d 2d 2d 2d 2d 2d 0d 0d  0d 54 68 65 20 38 32 37  |------...The 827|
00001490  31 20 68 61 73 20 74 77  65 6c 76 65 20 6f 74 68  |1 has twelve oth|
000014a0  65 72 20 72 65 67 69 73  74 65 72 73 2c 20 6b 6e  |er registers, kn|
000014b0  6f 77 6e 20 61 73 20 74  68 65 20 53 70 65 63 69  |own as the Speci|
000014c0  61 6c 20 52 65 67 69 73  74 65 72 73 2c 20 77 68  |al Registers, wh|
000014d0  69 63 68 0d 61 72 65 20  6e 6f 74 20 6d 61 70 70  |ich.are not mapp|
000014e0  65 64 20 6f 6e 74 6f 20  74 68 65 20 53 68 65 69  |ed onto the Shei|
000014f0  6c 61 20 61 64 64 72 65  73 73 65 73 2e 20 41 63  |la addresses. Ac|
00001500  63 65 73 73 20 74 6f 20  74 68 65 73 65 20 72 65  |cess to these re|
00001510  67 69 73 74 65 72 73 20  63 61 6e 20 62 65 0d 61  |gisters can be.a|
00001520  63 68 69 65 76 65 64 20  69 6e 64 69 72 65 63 74  |chieved indirect|
00001530  6c 79 20 75 73 69 6e 67  20 74 68 65 20 38 32 37  |ly using the 827|
00001540  31 20 52 65 61 64 20 53  70 65 63 69 61 6c 20 52  |1 Read Special R|
00001550  65 67 69 73 74 65 72 20  63 6f 6d 6d 61 6e 64 20  |egister command |
00001560  6f 72 20 74 68 65 0d 38  32 37 31 20 57 72 69 74  |or the.8271 Writ|
00001570  65 20 53 70 65 63 69 61  6c 20 52 65 67 69 73 74  |e Special Regist|
00001580  65 72 20 63 6f 6d 6d 61  6e 64 2c 20 62 6f 74 68  |er command, both|
00001590  20 6f 66 20 77 68 69 63  68 20 63 61 6e 20 62 65  | of which can be|
000015a0  20 73 65 6e 74 20 74 6f  20 74 68 65 20 64 69 73  | sent to the dis|
000015b0  63 0d 63 6f 6e 74 72 6f  6c 6c 65 72 20 75 73 69  |c.controller usi|
000015c0  6e 67 20 74 68 65 20 72  65 67 69 73 74 65 72 73  |ng the registers|
000015d0  20 69 6e 20 66 69 67 75  72 65 20 31 2e 20 54 68  | in figure 1. Th|
000015e0  65 20 53 68 65 69 6c 61  20 61 64 64 72 65 73 73  |e Sheila address|
000015f0  65 73 20 63 61 6e 20 62  65 0d 70 65 65 6b 65 64  |es can be.peeked|
00001600  20 6f 72 20 70 6f 6b 65  64 20 75 73 69 6e 67 20  | or poked using |
00001610  74 68 65 20 69 6e 64 69  72 65 63 74 69 6f 6e 20  |the indirection |
00001620  6f 70 65 72 61 74 6f 72  20 62 75 74 20 74 6f 20  |operator but to |
00001630  70 72 6f 64 75 63 65 20  54 75 62 65 2d 0d 63 6f  |produce Tube-.co|
00001640  6d 70 61 74 69 62 6c 65  20 63 6f 64 65 20 69 74  |mpatible code it|
00001650  20 69 73 20 6e 65 63 65  73 73 61 72 79 20 74 6f  | is necessary to|
00001660  20 75 73 65 20 4f 73 62  79 74 65 20 26 39 36 20  | use Osbyte &96 |
00001670  74 6f 20 72 65 61 64 20  74 68 65 20 53 68 65 69  |to read the Shei|
00001680  6c 61 0d 61 64 64 72 65  73 73 65 73 20 61 6e 64  |la.addresses and|
00001690  20 4f 73 62 79 74 65 20  26 39 37 20 74 6f 20 77  | Osbyte &97 to w|
000016a0  72 69 74 65 20 74 6f 20  74 68 65 6d 2e 0d 0d 55  |rite to them...U|
000016b0  73 69 6e 67 20 4f 73 62  79 74 65 73 20 26 39 36  |sing Osbytes &96|
000016c0  20 61 6e 64 20 26 39 37  20 77 69 6c 6c 20 65 6e  | and &97 will en|
000016d0  73 75 72 65 20 74 68 61  74 20 74 68 65 20 63 6f  |sure that the co|
000016e0  64 65 20 69 73 20 54 75  62 65 2d 63 6f 6d 70 61  |de is Tube-compa|
000016f0  74 69 62 6c 65 20 62 75  74 0d 69 74 20 6e 6f 74  |tible but.it not|
00001700  20 74 68 65 20 65 61 73  69 65 73 74 20 6f 72 20  | the easiest or |
00001710  74 68 65 20 62 65 73 74  20 77 61 79 20 74 6f 20  |the best way to |
00001720  70 72 6f 67 72 61 6d 20  74 68 65 20 64 69 73 63  |program the disc|
00001730  20 63 6f 6e 74 72 6f 6c  6c 65 72 2e 20 4f 73 77  | controller. Osw|
00001740  6f 72 64 0d 26 37 46 20  65 78 65 63 75 74 65 73  |ord.&7F executes|
00001750  20 61 20 73 69 6e 67 6c  65 20 38 32 37 31 20 63  | a single 8271 c|
00001760  6f 6d 6d 61 6e 64 20 74  68 72 6f 75 67 68 20 61  |ommand through a|
00001770  6c 6c 20 69 74 73 20 70  68 61 73 65 73 20 61 6e  |ll its phases an|
00001780  64 20 72 65 6c 69 65 76  65 73 20 74 68 65 0d 70  |d relieves the.p|
00001790  72 6f 67 72 61 6d 6d 65  72 20 6f 66 20 74 68 65  |rogrammer of the|
000017a0  20 70 72 6f 62 6c 65 6d  73 20 61 73 73 6f 63 69  | problems associ|
000017b0  61 74 65 64 20 77 69 74  68 20 74 65 63 68 6e 69  |ated with techni|
000017c0  71 75 65 73 20 73 75 63  68 20 61 73 20 6e 6f 6e  |ques such as non|
000017d0  2d 6d 61 73 6b 61 62 6c  65 0d 69 6e 74 65 72 75  |-maskable.interu|
000017e0  70 74 20 68 61 6e 64 6c  69 6e 67 20 77 68 69 63  |pt handling whic|
000017f0  68 20 6d 75 73 74 20 62  65 20 75 73 65 64 20 77  |h must be used w|
00001800  68 65 6e 20 70 72 6f 67  72 61 6d 6d 69 6e 67 20  |hen programming |
00001810  74 68 65 20 38 32 37 31  2e 20 4f 73 77 6f 72 64  |the 8271. Osword|
00001820  20 26 37 46 0d 75 73 65  73 20 74 68 65 20 53 68  | &7F.uses the Sh|
00001830  65 69 6c 61 20 61 64 64  72 65 73 73 65 73 20 66  |eila addresses f|
00001840  72 6f 6d 20 26 46 45 38  30 20 74 6f 20 26 46 45  |rom &FE80 to &FE|
00001850  38 34 20 62 75 74 20 74  68 65 20 70 72 6f 67 72  |84 but the progr|
00001860  61 6d 6d 65 72 20 64 6f  65 73 20 6e 6f 74 0d 68  |ammer does not.h|
00001870  61 76 65 20 74 6f 20 62  65 20 63 6f 6e 63 65 72  |ave to be concer|
00001880  6e 65 64 20 77 69 74 68  2c 20 6f 72 20 65 76 65  |ned with, or eve|
00001890  6e 20 62 65 20 61 77 61  72 65 20 6f 66 2c 20 74  |n be aware of, t|
000018a0  68 65 20 64 65 74 61 69  6c 65 64 20 75 73 65 20  |he detailed use |
000018b0  6f 66 20 74 68 65 73 65  0d 61 64 64 72 65 73 73  |of these.address|
000018c0  65 73 2e 20 4f 73 77 6f  72 64 20 26 37 46 20 70  |es. Osword &7F p|
000018d0  72 6f 76 69 64 65 73 20  61 20 73 74 61 6e 64 61  |rovides a standa|
000018e0  72 64 20 69 6e 74 65 72  66 61 63 65 20 6f 6e 20  |rd interface on |
000018f0  74 68 65 20 64 69 73 63  20 63 6f 6e 74 72 6f 6c  |the disc control|
00001900  6c 65 72 0d 61 6e 64 20  69 73 20 74 68 65 20 6d  |ler.and is the m|
00001910  65 74 68 6f 64 20 6f 66  20 61 63 63 65 73 73 69  |ethod of accessi|
00001920  6e 67 20 74 68 65 20 64  69 73 63 20 68 61 72 64  |ng the disc hard|
00001930  77 61 72 65 20 75 73 65  64 20 69 6e 20 74 68 69  |ware used in thi|
00001940  73 20 73 65 72 69 65 73  2e 0d 0d 42 65 66 6f 72  |s series...Befor|
00001950  65 20 6c 6f 6f 6b 69 6e  67 20 61 74 20 74 68 65  |e looking at the|
00001960  20 73 69 6e 67 6c 65 20  64 65 6e 73 69 74 79 20  | single density |
00001970  4f 73 77 6f 72 64 73 20  69 6e 20 64 65 74 61 69  |Oswords in detai|
00001980  6c 20 69 74 20 69 73 20  6e 65 63 65 73 73 61 72  |l it is necessar|
00001990  79 20 74 6f 0d 75 6e 64  65 72 73 74 61 6e 64 20  |y to.understand |
000019a0  74 68 65 20 66 6f 72 6d  61 74 20 75 73 65 64 20  |the format used |
000019b0  62 79 20 73 69 6e 67 6c  65 20 64 65 6e 73 69 74  |by single densit|
000019c0  79 20 64 69 73 63 73 2e  0d 0d 54 68 65 20 42 42  |y discs...The BB|
000019d0  43 20 63 6f 6d 70 75 74  65 72 20 69 73 20 63 61  |C computer is ca|
000019e0  70 61 62 6c 65 20 6f 66  20 75 73 69 6e 67 20 33  |pable of using 3|
000019f0  20 31 2f 32 20 69 6e 63  68 2c 20 35 20 31 2f 34  | 1/2 inch, 5 1/4|
00001a00  20 69 6e 63 68 20 61 6e  64 20 38 20 69 6e 63 68  | inch and 8 inch|
00001a10  0d 64 69 73 63 73 2c 20  61 6c 74 68 6f 75 67 68  |.discs, although|
00001a20  20 38 20 69 6e 63 68 20  64 69 73 63 73 20 61 72  | 8 inch discs ar|
00001a30  65 20 73 6f 6d 65 74 68  69 6e 67 20 6f 66 20 61  |e something of a|
00001a40  20 72 61 72 69 74 79 20  74 68 65 73 65 20 64 61  | rarity these da|
00001a50  79 73 2e 20 42 65 63 61  75 73 65 0d 38 20 69 6e  |ys. Because.8 in|
00001a60  63 68 20 64 69 73 63 73  20 61 72 65 20 73 6f 20  |ch discs are so |
00001a70  75 6e 63 6f 6d 6d 6f 6e  20 74 68 65 79 20 77 69  |uncommon they wi|
00001a80  6c 6c 20 6e 6f 74 20 62  65 20 64 69 73 63 75 73  |ll not be discus|
00001a90  73 65 64 20 69 6e 20 74  68 69 73 20 73 65 72 69  |sed in this seri|
00001aa0  65 73 2e 0d 42 6f 74 68  20 33 20 31 2f 32 20 69  |es..Both 3 1/2 i|
00001ab0  6e 63 68 20 61 6e 64 20  35 20 31 2f 34 20 69 6e  |nch and 5 1/4 in|
00001ac0  63 68 20 64 69 73 63 73  20 75 73 65 20 74 68 65  |ch discs use the|
00001ad0  20 73 61 6d 65 20 66 6f  72 6d 61 74 20 61 6e 64  | same format and|
00001ae0  20 61 72 65 20 61 76 61  69 6c 61 62 6c 65 0d 69  | are available.i|
00001af0  6e 20 62 6f 74 68 20 73  69 6e 67 6c 65 20 61 6e  |n both single an|
00001b00  64 20 64 6f 75 62 6c 65  20 73 69 64 65 64 20 76  |d double sided v|
00001b10  65 72 73 69 6f 6e 73 20  77 69 74 68 20 65 69 74  |ersions with eit|
00001b20  68 65 72 20 34 30 20 6f  72 20 38 30 20 74 72 61  |her 40 or 80 tra|
00001b30  63 6b 73 20 70 65 72 0d  73 69 64 65 2e 0d 0d 45  |cks per.side...E|
00001b40  61 63 68 20 74 72 61 63  6b 20 69 73 20 73 75 62  |ach track is sub|
00001b50  64 69 76 69 64 65 64 20  69 6e 74 6f 20 61 20 6e  |divided into a n|
00001b60  75 6d 62 65 72 20 6f 66  20 73 65 63 74 6f 72 73  |umber of sectors|
00001b70  20 65 61 63 68 20 6f 66  20 77 68 69 63 68 20 68  | each of which h|
00001b80  61 73 20 61 6e 0d 69 64  65 6e 74 69 66 69 63 61  |as an.identifica|
00001b90  74 69 6f 6e 20 66 69 65  6c 64 20 28 75 73 75 61  |tion field (usua|
00001ba0  6c 6c 79 20 63 61 6c 6c  65 64 20 61 6e 20 49 44  |lly called an ID|
00001bb0  20 66 69 65 6c 64 29 20  61 6e 64 20 61 20 64 61  | field) and a da|
00001bc0  74 61 20 66 69 65 6c 64  2e 0d 0d 54 68 65 72 65  |ta field...There|
00001bd0  20 61 72 65 20 61 20 6e  75 6d 62 65 72 20 6f 66  | are a number of|
00001be0  20 67 61 70 73 20 61 73  73 6f 63 69 61 74 65 64  | gaps associated|
00001bf0  20 77 69 74 68 20 65 61  63 68 20 74 72 61 63 6b  | with each track|
00001c00  2e 20 54 68 65 20 67 61  70 73 20 61 72 65 20 61  |. The gaps are a|
00001c10  0d 76 61 72 69 61 62 6c  65 20 6e 75 6d 62 65 72  |.variable number|
00001c20  20 6f 66 20 62 79 74 65  73 20 62 65 74 77 65 65  | of bytes betwee|
00001c30  6e 20 74 68 65 20 49 44  20 61 6e 64 20 64 61 74  |n the ID and dat|
00001c40  61 20 66 69 65 6c 64 73  20 61 6e 64 20 61 72 65  |a fields and are|
00001c50  20 75 73 65 64 20 74 6f  0d 73 70 61 63 65 20 6f  | used to.space o|
00001c60  75 74 20 74 68 65 20 66  69 65 6c 64 73 20 74 6f  |ut the fields to|
00001c70  20 70 72 65 76 65 6e 74  20 74 68 65 20 73 65 63  | prevent the sec|
00001c80  74 6f 72 73 20 6f 76 65  72 77 72 69 74 69 6e 67  |tors overwriting|
00001c90  20 65 61 63 68 20 6f 74  68 65 72 20 77 68 65 6e  | each other when|
00001ca0  0d 74 68 65 20 64 69 73  63 20 73 70 65 65 64 20  |.the disc speed |
00001cb0  76 61 72 69 65 73 2e 0d  0d 50 68 79 73 69 63 61  |varies...Physica|
00001cc0  6c 20 74 72 61 63 6b 73  20 61 6e 64 20 73 65 63  |l tracks and sec|
00001cd0  74 6f 72 73 20 61 72 65  20 69 64 65 6e 74 69 66  |tors are identif|
00001ce0  69 65 64 20 62 79 20 74  68 65 69 72 20 70 68 79  |ied by their phy|
00001cf0  73 69 63 61 6c 20 70 6f  73 69 74 69 6f 6e 20 6f  |sical position o|
00001d00  6e 20 61 0d 64 69 73 63  2e 20 50 68 79 73 69 63  |n a.disc. Physic|
00001d10  61 6c 20 74 72 61 63 6b  20 30 20 69 73 20 74 68  |al track 0 is th|
00001d20  65 20 6f 75 74 65 72 6d  6f 73 74 20 74 72 61 63  |e outermost trac|
00001d30  6b 20 61 6e 64 20 70 68  79 73 69 63 61 6c 20 73  |k and physical s|
00001d40  65 63 74 6f 72 20 30 20  69 73 20 74 68 65 0d 66  |ector 0 is the.f|
00001d50  69 72 73 74 20 73 65 63  74 6f 72 20 6f 6e 20 61  |irst sector on a|
00001d60  20 74 72 61 63 6b 20 61  66 74 65 72 20 74 68 65  | track after the|
00001d70  20 69 6e 64 65 78 20 70  75 6c 73 65 20 68 6f 6c  | index pulse hol|
00001d80  65 2e 20 45 76 65 72 79  20 73 65 63 74 6f 72 20  |e. Every sector |
00001d90  69 73 20 67 69 76 65 6e  0d 61 20 6f 6e 65 2d 62  |is given.a one-b|
00001da0  79 74 65 20 6c 6f 67 69  63 61 6c 20 74 72 61 63  |yte logical trac|
00001db0  6b 20 6e 75 6d 62 65 72  20 61 6e 64 20 61 20 6f  |k number and a o|
00001dc0  6e 65 2d 62 79 74 65 20  6c 6f 67 69 63 61 6c 20  |ne-byte logical |
00001dd0  73 65 63 74 6f 72 20 6e  75 6d 62 65 72 2e 20 54  |sector number. T|
00001de0  68 65 0d 70 68 79 73 69  63 61 6c 20 74 72 61 63  |he.physical trac|
00001df0  6b 20 6e 75 6d 62 65 72  73 20 61 6e 64 20 6c 6f  |k numbers and lo|
00001e00  67 69 63 61 6c 20 74 72  61 63 6b 20 6e 75 6d 62  |gical track numb|
00001e10  65 72 73 20 61 72 65 20  74 68 65 20 73 61 6d 65  |ers are the same|
00001e20  20 6f 6e 20 64 69 73 63  73 0d 66 6f 72 6d 61 74  | on discs.format|
00001e30  74 65 64 20 66 6f 72 20  74 68 65 20 41 63 6f 72  |ted for the Acor|
00001e40  6e 20 44 46 53 20 62 75  74 20 74 68 65 20 70 68  |n DFS but the ph|
00001e50  79 73 69 63 61 6c 20 61  6e 64 20 6c 6f 67 69 63  |ysical and logic|
00001e60  61 6c 20 73 65 63 74 6f  72 20 6e 75 6d 62 65 72  |al sector number|
00001e70  73 20 64 6f 0d 6e 6f 74  20 68 61 76 65 20 74 6f  |s do.not have to|
00001e80  20 62 65 20 74 68 65 20  73 61 6d 65 2e 20 4f 6e  | be the same. On|
00001e90  65 20 6f 66 20 74 68 65  20 6d 61 6e 79 20 77 61  |e of the many wa|
00001ea0  79 73 20 6f 66 20 63 6f  70 79 2d 70 72 6f 74 65  |ys of copy-prote|
00001eb0  63 74 69 6e 67 20 64 69  73 63 73 20 69 73 0d 74  |cting discs is.t|
00001ec0  6f 20 6d 61 6b 65 20 74  68 65 20 70 68 79 73 69  |o make the physi|
00001ed0  63 61 6c 20 61 6e 64 20  6c 6f 67 69 63 61 6c 20  |cal and logical |
00001ee0  74 72 61 63 6b 20 6e 75  6d 62 65 72 73 20 64 69  |track numbers di|
00001ef0  66 66 65 72 65 6e 74 2c  20 74 68 69 73 20 65 66  |fferent, this ef|
00001f00  66 65 63 74 69 76 6c 79  0d 64 69 73 61 62 6c 65  |fectivly.disable|
00001f10  73 20 74 68 65 20 44 46  53 20 2a 42 41 43 4b 55  |s the DFS *BACKU|
00001f20  50 20 63 6f 6d 6d 61 6e  64 2e 0d 0d 54 68 65 20  |P command...The |
00001f30  6e 75 6d 62 65 72 20 6f  66 20 73 65 63 74 6f 72  |number of sector|
00001f40  73 2c 20 74 68 65 20 73  69 7a 65 20 6f 66 20 74  |s, the size of t|
00001f50  68 65 20 64 61 74 61 20  66 69 65 6c 64 73 2c 20  |he data fields, |
00001f60  61 6e 64 20 74 68 65 20  67 61 70 20 73 69 7a 65  |and the gap size|
00001f70  73 20 61 72 65 0d 64 65  74 65 72 6d 69 6e 65 64  |s are.determined|
00001f80  20 77 68 65 6e 20 74 68  65 20 64 69 73 63 20 69  | when the disc i|
00001f90  73 20 66 6f 72 6d 61 74  74 65 64 2e 20 49 6e 20  |s formatted. In |
00001fa0  6d 6f 64 75 6c 65 20 33  20 79 6f 75 20 77 69 6c  |module 3 you wil|
00001fb0  6c 20 68 61 76 65 20 74  68 65 0d 6f 70 70 6f 72  |l have the.oppor|
00001fc0  74 75 6e 69 74 79 20 74  6f 20 76 61 72 79 20 74  |tunity to vary t|
00001fd0  68 65 73 65 20 70 61 72  61 6d 65 74 65 72 73 20  |hese parameters |
00001fe0  62 75 74 2c 20 77 68 61  74 65 76 65 72 20 74 68  |but, whatever th|
00001ff0  65 20 66 6f 72 6d 61 74  2c 20 65 61 63 68 20 73  |e format, each s|
00002000  69 6e 67 6c 65 0d 64 65  6e 73 69 74 79 20 74 72  |ingle.density tr|
00002010  61 63 6b 20 68 61 73 20  74 68 65 20 6c 61 79 6f  |ack has the layo|
00002020  75 74 20 73 68 6f 77 6e  20 69 6e 20 66 69 67 75  |ut shown in figu|
00002030  72 65 20 32 20 62 65 6c  6f 77 2e 0d 0d 0d 20 20  |re 2 below....  |
00002040  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2b 2d 2d  |+------------+--|
00002050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |---------+------|
00002060  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2b 0d 20 20 7c  |+----------+.  ||
00002070  20 53 79 6e 63 20 62 79  74 65 73 20 7c 20 44 61  | Sync bytes | Da|
00002080  74 61 20 6d 61 72 6b 20  7c 20 64 61 74 61 20 7c  |ta mark | data ||
00002090  20 64 61 74 61 20 43 52  43 20 7c 0d 20 20 2b 2d  | data CRC |.  +-|
000020a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |-----------+----|
000020b0  2d 2d 2d 2d 2d 2d 2d 2b  2d 2d 2d 2d 2d 2d 2b 2d  |-------+------+-|
000020c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 0d 20 20 20 20 20  |---------+.     |
000020d0  20 20 20 20 20 20 20 20  20 5c 20 20 20 20 20 20  |         \      |
000020e0  20 20 20 20 20 20 2f 0d  49 6e 64 65 78 20 20 20  |      /.Index   |
000020f0  20 20 20 20 20 20 20 5c  20 20 44 61 74 61 20 20  |       \  Data  |
00002100  20 20 2f 20 20 20 20 20  20 20 20 20 20 20 20 20  |  /             |
00002110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002120  20 20 20 20 20 20 20 20  20 20 20 45 6e 64 20 6f  |           End o|
00002130  66 0d 6d 61 72 6b 20 20  20 20 20 20 20 20 20 20  |f.mark          |
00002140  20 20 5c 20 66 69 65 6c  64 20 20 2f 20 20 20 20  |  \ field  /    |
00002150  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00002170  20 20 20 20 20 20 74 72  61 63 6b 0d 2b 2d 2d 2d  |      track.+---|
00002180  2d 2d 2b 2d 2d 2d 2d 2b  2d 2d 2d 2d 2d 2b 2d 2d  |--+----+-----+--|
00002190  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2b  |----+-----+----+|
000021a0  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |-----+------+---|
000021b0  2d 2d 2b 20 20 20 20 20  2b 2d 2d 2d 2d 2d 2b 2d  |--+     +-----+-|
000021c0  2d 2d 2d 2d 2b 0d 7c 20  47 61 70 20 7c 20 49 44  |----+.| Gap | ID|
000021d0  20 7c 20 47 61 70 20 7c  20 44 61 74 61 20 7c 20  | | Gap | Data | |
000021e0  47 61 70 20 7c 20 49 44  20 7c 20 47 61 70 20 7c  |Gap | ID | Gap ||
000021f0  20 44 61 74 61 20 7c 20  47 61 70 20 7c 20 2e 2e  | Data | Gap | ..|
00002200  2e 20 7c 20 47 61 70 20  7c 20 47 61 70 20 7c 0d  |. | Gap | Gap |.|
00002210  7c 20 20 31 20 20 7c 20  20 20 20 7c 20 20 32 20  ||  1  |    |  2 |
00002220  20 7c 20 20 30 20 20 20  7c 20 20 33 20 20 7c 20  | |  0   |  3  | |
00002230  20 20 20 7c 20 20 32 20  20 7c 20 20 31 20 20 20  |   |  2  |  1   |
00002240  7c 20 20 33 20 20 7c 20  20 20 20 20 7c 20 20 34  ||  3  |     |  4|
00002250  20 20 7c 20 20 35 20 20  7c 0d 2b 2d 2d 2d 2d 2d  |  |  5  |.+-----|
00002260  2b 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |+----+-----+----|
00002270  2d 2d 2b 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2b 2d 2d  |--+-----+----+--|
00002280  2d 2d 2d 2b 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |---+------+-----|
00002290  2b 20 20 20 20 20 2b 2d  2d 2d 2d 2d 2b 2d 2d 2d  |+     +-----+---|
000022a0  2d 2d 2b 0d 20 20 20 20  20 2f 20 49 44 20 20 20  |--+.     / ID   |
000022b0  5c 0d 20 20 20 20 2f 20  66 69 65 6c 64 20 20 5c  |\.    / field  \|
000022c0  0d 20 20 20 2f 20 20 20  20 20 20 20 20 20 20 5c  |.   /          \|
000022d0  0d 20 20 2b 2d 2d 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |.  +-------+----|
000022e0  2d 2d 2b 2d 2d 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |--+---------+---|
000022f0  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2d 2d 2d 2b  |-----+---------+|
00002300  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |-----------+----|
00002310  2d 2d 2d 2d 2b 0d 20 20  7c 20 53 79 6e 63 20 20  |----+.  | Sync  |
00002320  7c 20 49 44 20 20 20 7c  20 4c 6f 67 69 63 61 6c  || ID   | Logical|
00002330  20 7c 20 48 65 61 64 20  20 20 7c 20 4c 6f 67 69  | | Head   | Logi|
00002340  63 61 6c 20 7c 20 44 61  74 61 20 73 69 7a 65 20  |cal | Data size |
00002350  7c 20 53 65 63 74 6f 72  20 7c 0d 20 20 7c 20 62  || Sector |.  | b|
00002360  79 74 65 73 20 7c 20 6d  61 72 6b 20 7c 20 74 72  |ytes | mark | tr|
00002370  61 63 6b 20 20 20 7c 20  6e 75 6d 62 65 72 20 7c  |ack   | number ||
00002380  20 73 65 63 74 6f 72 20  20 7c 20 63 6f 64 65 20  | sector  | code |
00002390  20 20 20 20 20 7c 20 49  44 20 43 52 43 20 7c 0d  |     | ID CRC |.|
000023a0  20 20 2b 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |  +-------+-----|
000023b0  2d 2b 2d 2d 2d 2d 2d 2d  2d 2d 2d 2b 2d 2d 2d 2d  |-+---------+----|
000023c0  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2d 2d 2d 2d 2b 2d  |----+---------+-|
000023d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |----------+-----|
000023e0  2d 2d 2d 2b 0d 0d 46 69  67 75 72 65 20 32 2e 20  |---+..Figure 2. |
000023f0  54 68 65 20 6c 61 79 6f  75 74 20 6f 66 20 61 20  |The layout of a |
00002400  44 46 53 20 74 72 61 63  6b 2e 0d 2d 2d 2d 2d 2d  |DFS track..-----|
00002410  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002420  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00002430  0d 0d 46 69 67 75 72 65  20 32 20 69 6c 6c 75 73  |..Figure 2 illus|
00002440  74 72 61 74 65 73 20 61  20 63 6f 6d 70 6c 65 74  |trates a complet|
00002450  65 20 74 72 61 63 6b 20  77 69 74 68 20 6f 6e 65  |e track with one|
00002460  20 6f 66 20 74 68 65 20  64 61 74 61 20 66 69 65  | of the data fie|
00002470  6c 64 73 20 65 78 70 61  6e 64 65 64 0d 61 62 6f  |lds expanded.abo|
00002480  76 65 20 74 68 65 20 63  65 6e 74 72 65 20 6c 69  |ve the centre li|
00002490  6e 65 20 61 6e 64 20 6f  6e 65 20 6f 66 20 74 68  |ne and one of th|
000024a0  65 20 49 44 20 66 69 65  6c 64 73 20 65 78 70 61  |e ID fields expa|
000024b0  6e 64 65 64 20 62 65 6c  6f 77 2e 20 49 66 20 66  |nded below. If f|
000024c0  69 67 75 72 65 20 32 0d  69 73 20 74 61 6b 65 6e  |igure 2.is taken|
000024d0  20 61 73 20 61 6e 20 69  6c 6c 75 73 74 72 61 74  | as an illustrat|
000024e0  69 6f 6e 20 6f 66 20 61  20 31 30 20 73 65 63 74  |ion of a 10 sect|
000024f0  6f 72 20 74 72 61 63 6b  2c 20 74 68 65 6e 20 73  |or track, then s|
00002500  65 63 74 6f 72 73 20 32  20 2d 20 39 20 68 61 76  |ectors 2 - 9 hav|
00002510  65 0d 62 65 65 6e 20 6c  65 66 74 20 6f 75 74 2e  |e.been left out.|
00002520  0d 0d 54 68 65 20 69 6e  64 65 78 20 6d 61 72 6b  |..The index mark|
00002530  20 61 74 20 74 68 65 20  62 65 67 69 6e 6e 69 6e  | at the beginnin|
00002540  67 20 6f 66 20 74 68 65  20 74 72 61 63 6b 20 68  |g of the track h|
00002550  61 73 20 69 74 73 20 70  6f 73 69 74 69 6f 6e 20  |as its position |
00002560  64 65 74 65 72 6d 69 6e  65 64 0d 62 79 20 74 68  |determined.by th|
00002570  65 20 70 68 79 73 69 63  61 6c 20 69 6e 64 65 78  |e physical index|
00002580  20 70 75 6c 73 65 20 68  6f 6c 65 20 69 6e 20 74  | pulse hole in t|
00002590  68 65 20 64 69 73 63 2e  20 54 68 69 73 20 6d 61  |he disc. This ma|
000025a0  72 6b 20 69 73 20 66 6f  6c 6c 6f 77 65 64 20 62  |rk is followed b|
000025b0  79 0d 47 61 70 20 31 2e  20 47 61 70 20 31 20 6f  |y.Gap 1. Gap 1 o|
000025c0  63 63 75 72 73 20 6f 6e  63 65 20 70 65 72 20 74  |ccurs once per t|
000025d0  72 61 63 6b 20 62 65 74  77 65 65 6e 20 74 68 65  |rack between the|
000025e0  20 69 6e 64 65 78 20 6d  61 72 6b 20 61 6e 64 20  | index mark and |
000025f0  74 68 65 20 73 74 61 72  74 20 6f 66 0d 70 68 79  |the start of.phy|
00002600  73 69 63 61 6c 20 73 65  63 74 6f 72 20 30 2e 20  |sical sector 0. |
00002610  49 74 20 73 68 6f 75 6c  64 20 61 6c 77 61 79 73  |It should always|
00002620  20 62 65 20 31 36 20 28  26 31 30 29 20 62 79 74  | be 16 (&10) byt|
00002630  65 73 20 6c 6f 6e 67 2e  0d 0d 47 61 70 20 31 20  |es long...Gap 1 |
00002640  69 73 20 66 6f 6c 6c 6f  77 65 64 20 62 79 20 74  |is followed by t|
00002650  68 65 20 49 44 20 66 69  65 6c 64 20 66 6f 72 20  |he ID field for |
00002660  70 68 79 73 69 63 61 6c  20 73 65 63 74 6f 72 20  |physical sector |
00002670  30 2e 20 54 68 65 20 49  44 20 66 69 65 6c 64 0d  |0. The ID field.|
00002680  73 74 61 72 74 73 20 77  69 74 68 20 36 20 73 79  |starts with 6 sy|
00002690  6e 63 20 62 79 74 65 73  2e 20 54 68 65 73 65 20  |nc bytes. These |
000026a0  73 79 6e 63 20 62 79 74  65 73 20 73 79 6e 63 68  |sync bytes synch|
000026b0  72 6f 6e 69 73 65 20 74  68 65 20 63 6f 6e 74 72  |ronise the contr|
000026c0  6f 6c 6c 65 72 20 74 6f  0d 74 68 65 20 72 6f 74  |oller to.the rot|
000026d0  61 74 69 6f 6e 61 6c 20  73 70 65 65 64 20 6f 66  |ational speed of|
000026e0  20 74 68 65 20 64 69 73  63 2e 20 54 68 65 20 73  | the disc. The s|
000026f0  79 6e 63 20 62 79 74 65  73 20 61 72 65 20 66 6f  |ync bytes are fo|
00002700  6c 6c 6f 77 65 64 20 62  79 20 61 20 73 65 63 74  |llowed by a sect|
00002710  6f 72 0d 49 44 20 6d 61  72 6b 2c 20 77 68 69 63  |or.ID mark, whic|
00002720  68 20 73 69 6d 70 6c 79  20 6d 61 72 6b 73 20 74  |h simply marks t|
00002730  68 65 20 73 74 61 72 74  20 6f 66 20 74 68 65 20  |he start of the |
00002740  73 65 63 74 6f 72 2e 20  54 68 69 73 20 69 6e 20  |sector. This in |
00002750  74 75 72 6e 20 69 73 0d  66 6f 6c 6c 6f 77 65 64  |turn is.followed|
00002760  20 62 79 20 74 68 65 20  6c 6f 67 69 63 61 6c 20  | by the logical |
00002770  74 72 61 63 6b 20 6e 75  6d 62 65 72 2e 20 54 68  |track number. Th|
00002780  65 20 6c 6f 67 69 63 61  6c 20 74 72 61 63 6b 20  |e logical track |
00002790  6e 75 6d 62 65 72 20 69  73 20 6e 6f 72 6d 61 6c  |number is normal|
000027a0  6c 79 0d 74 68 65 20 73  61 6d 65 20 61 73 20 74  |ly.the same as t|
000027b0  68 65 20 70 68 79 73 69  63 61 6c 20 74 72 61 63  |he physical trac|
000027c0  6b 20 6e 75 6d 62 65 72  20 62 75 74 2c 20 6f 6e  |k number but, on|
000027d0  20 6e 6f 6e 2d 73 74 61  6e 64 61 72 64 20 64 69  | non-standard di|
000027e0  73 63 73 2c 20 69 74 20  64 6f 65 73 0d 6e 6f 74  |scs, it does.not|
000027f0  20 68 61 76 65 20 74 6f  20 62 65 20 74 68 65 20  | have to be the |
00002800  73 61 6d 65 2e 20 49 66  20 79 6f 75 20 75 73 65  |same. If you use|
00002810  20 74 68 65 20 64 65 6d  6f 6e 73 74 72 61 74 69  | the demonstrati|
00002820  6f 6e 20 70 72 6f 67 72  61 6e 20 49 44 53 44 55  |on progran IDSDU|
00002830  4d 50 20 6f 6e 20 61 0d  63 6f 70 79 2d 70 72 6f  |MP on a.copy-pro|
00002840  74 65 63 74 65 64 20 64  69 73 63 20 79 6f 75 20  |tected disc you |
00002850  6d 61 79 20 66 69 6e 64  20 74 68 61 74 20 74 68  |may find that th|
00002860  65 20 70 68 79 73 69 63  61 6c 20 74 72 61 63 6b  |e physical track|
00002870  20 6e 75 6d 62 65 72 73  20 61 6e 64 20 74 68 65  | numbers and the|
00002880  0d 6c 6f 67 69 63 61 6c  20 74 72 61 63 6b 20 6e  |.logical track n|
00002890  75 6d 62 65 72 73 20 6f  66 20 74 68 65 20 70 72  |umbers of the pr|
000028a0  6f 74 65 63 74 65 64 20  74 72 61 63 6b 73 20 61  |otected tracks a|
000028b0  72 65 20 64 69 66 66 65  72 65 6e 74 2e 0d 0d 54  |re different...T|
000028c0  68 65 20 6c 6f 67 69 63  61 6c 20 74 72 61 63 6b  |he logical track|
000028d0  20 6e 75 6d 62 65 72 20  69 73 20 66 6f 6c 6c 6f  | number is follo|
000028e0  77 65 64 20 62 79 20 74  68 65 20 68 65 61 64 20  |wed by the head |
000028f0  6e 75 6d 62 65 72 2e 20  54 68 69 73 20 73 68 6f  |number. This sho|
00002900  75 6c 64 20 62 65 0d 26  30 30 20 66 6f 72 20 64  |uld be.&00 for d|
00002910  72 69 76 65 73 20 30 20  61 6e 64 20 31 20 28 77  |rives 0 and 1 (w|
00002920  68 69 63 68 20 75 73 65  20 74 68 65 20 75 6e 64  |hich use the und|
00002930  65 72 20 73 69 64 65 20  6f 66 20 74 68 65 20 64  |er side of the d|
00002940  69 73 63 29 2c 20 61 6e  64 20 26 30 31 20 66 6f  |isc), and &01 fo|
00002950  72 0d 64 72 69 76 65 73  20 32 20 61 6e 64 20 33  |r.drives 2 and 3|
00002960  20 28 77 68 69 63 68 20  75 73 65 20 74 68 65 20  | (which use the |
00002970  74 6f 70 20 73 69 64 65  20 6f 66 20 74 68 65 20  |top side of the |
00002980  64 69 73 63 29 20 62 75  74 20 6d 6f 73 74 20 66  |disc) but most f|
00002990  6f 72 6d 61 74 74 69 6e  67 0d 70 72 6f 67 72 61  |ormatting.progra|
000029a0  6d 73 20 75 73 65 20 61  20 68 65 61 64 20 6e 75  |ms use a head nu|
000029b0  6d 62 65 72 20 6f 66 20  26 30 30 20 66 6f 72 20  |mber of &00 for |
000029c0  61 6c 6c 20 64 69 73 63  20 73 75 72 66 61 63 65  |all disc surface|
000029d0  73 2e 20 41 20 68 65 61  64 20 6e 75 6d 62 65 72  |s. A head number|
000029e0  20 6f 66 0d 26 30 30 20  73 65 65 6d 73 20 74 6f  | of.&00 seems to|
000029f0  20 62 65 20 69 67 6e 6f  72 65 64 20 62 79 20 74  | be ignored by t|
00002a00  68 65 20 64 69 73 63 20  63 6f 6e 74 72 6f 6c 6c  |he disc controll|
00002a10  65 72 2e 0d 0d 4e 65 78  74 20 63 6f 6d 65 73 20  |er...Next comes |
00002a20  74 68 65 20 6c 6f 67 69  63 61 6c 20 73 65 63 74  |the logical sect|
00002a30  6f 72 20 6e 75 6d 62 65  72 2e 20 54 68 65 20 6c  |or number. The l|
00002a40  6f 67 69 63 61 6c 20 73  65 63 74 6f 72 20 6e 75  |ogical sector nu|
00002a50  6d 62 65 72 20 64 6f 65  73 20 6e 6f 74 0d 68 61  |mber does not.ha|
00002a60  76 65 20 74 6f 20 62 65  20 74 68 65 20 73 61 6d  |ve to be the sam|
00002a70  65 20 61 73 20 74 68 65  20 70 68 79 73 69 63 61  |e as the physica|
00002a80  6c 20 73 65 63 74 6f 72  20 6e 75 6d 62 65 72 20  |l sector number |
00002a90  61 6e 64 2c 20 61 73 20  77 69 6c 6c 20 62 65 0d  |and, as will be.|
00002aa0  64 65 6d 6f 6e 73 74 72  61 74 65 64 20 69 6e 20  |demonstrated in |
00002ab0  6d 6f 64 75 6c 65 20 33  2c 20 74 68 65 72 65 20  |module 3, there |
00002ac0  63 61 6e 20 62 65 20 61  20 73 6d 61 6c 6c 20 61  |can be a small a|
00002ad0  64 76 61 6e 74 61 67 65  20 74 6f 20 62 65 20 67  |dvantage to be g|
00002ae0  61 69 6e 65 64 20 62 79  0d 6e 6f 74 20 75 73 69  |ained by.not usi|
00002af0  6e 67 20 74 68 65 20 73  61 6d 65 20 6c 6f 67 69  |ng the same logi|
00002b00  63 61 6c 20 61 6e 64 20  70 68 79 73 69 63 61 6c  |cal and physical|
00002b10  20 73 65 63 74 6f 72 20  6e 75 6d 62 65 72 73 2e  | sector numbers.|
00002b20  0d 0d 54 68 65 20 64 61  74 61 20 73 69 7a 65 20  |..The data size |
00002b30  63 6f 64 65 20 66 6f 6c  6c 6f 77 73 20 74 68 65  |code follows the|
00002b40  20 6c 6f 67 69 63 61 6c  20 73 65 63 74 6f 72 20  | logical sector |
00002b50  6e 75 6d 62 65 72 20 61  6e 64 20 69 74 20 69 6e  |number and it in|
00002b60  64 69 63 61 74 65 73 20  74 68 65 0d 6e 75 6d 62  |dicates the.numb|
00002b70  65 72 20 6f 66 20 64 61  74 61 20 62 79 74 65 73  |er of data bytes|
00002b80  20 69 6e 20 74 68 65 20  64 61 74 61 20 66 69 65  | in the data fie|
00002b90  6c 64 20 28 73 65 65 20  66 69 67 75 72 65 20 33  |ld (see figure 3|
00002ba0  20 62 65 6c 6f 77 29 2e  20 54 68 69 73 20 69 73  | below). This is|
00002bb0  0d 66 6f 6c 6c 6f 77 65  64 20 62 79 20 61 20 74  |.followed by a t|
00002bc0  77 6f 20 62 79 74 65 20  63 79 63 6c 69 63 20 72  |wo byte cyclic r|
00002bd0  65 64 75 6e 64 61 6e 63  79 20 63 68 65 63 6b 20  |edundancy check |
00002be0  28 43 52 43 29 2e 20 54  68 65 20 43 52 43 20 69  |(CRC). The CRC i|
00002bf0  73 20 75 73 65 64 20 74  6f 0d 63 68 65 63 6b 20  |s used to.check |
00002c00  66 6f 72 20 65 72 72 6f  72 73 20 69 6e 20 74 68  |for errors in th|
00002c10  65 20 64 61 74 61 20 73  74 6f 72 65 64 20 77 69  |e data stored wi|
00002c20  74 68 69 6e 20 74 68 65  20 49 44 20 66 69 65 6c  |thin the ID fiel|
00002c30  64 2e 0d 0d 54 68 65 20  49 44 20 66 69 65 6c 64  |d...The ID field|
00002c40  20 69 73 20 66 6f 6c 6c  6f 77 65 64 20 62 79 20  | is followed by |
00002c50  47 61 70 20 32 2e 20 47  61 70 20 32 20 73 68 6f  |Gap 2. Gap 2 sho|
00002c60  75 6c 64 20 61 6c 77 61  79 73 20 62 65 20 31 31  |uld always be 11|
00002c70  20 28 26 30 42 29 20 62  79 74 65 73 0d 6c 6f 6e  | (&0B) bytes.lon|
00002c80  67 20 61 6e 64 20 69 74  20 69 73 20 70 6f 73 69  |g and it is posi|
00002c90  74 69 6f 6e 65 64 20 62  65 74 77 65 65 6e 20 74  |tioned between t|
00002ca0  68 65 20 49 44 20 66 69  65 6c 64 20 61 6e 64 20  |he ID field and |
00002cb0  74 68 65 20 64 61 74 61  20 66 69 65 6c 64 20 6f  |the data field o|
00002cc0  66 20 65 61 63 68 0d 73  65 63 74 6f 72 20 6f 6e  |f each.sector on|
00002cd0  20 74 68 65 20 74 72 61  63 6b 2e 20 45 61 63 68  | the track. Each|
00002ce0  20 64 61 74 61 20 66 69  65 6c 64 20 69 73 20 66  | data field is f|
00002cf0  6f 6c 6c 6f 77 65 64 20  62 79 20 47 61 70 33 2e  |ollowed by Gap3.|
00002d00  20 54 68 65 20 47 61 70  20 33 20 61 66 74 65 72  | The Gap 3 after|
00002d10  0d 74 68 65 20 6c 61 73  74 20 64 61 74 61 20 66  |.the last data f|
00002d20  69 65 6c 64 20 69 73 20  66 6f 6c 6c 6f 77 65 64  |ield is followed|
00002d30  20 62 79 20 47 61 70 20  34 20 77 68 69 63 68 20  | by Gap 4 which |
00002d40  69 6e 20 74 75 72 6e 20  69 73 20 66 6f 6c 6c 6f  |in turn is follo|
00002d50  77 65 64 20 62 79 20 47  61 70 0d 35 2e 20 54 68  |wed by Gap.5. Th|
00002d60  65 20 72 65 6c 61 74 69  6f 6e 73 68 69 70 20 62  |e relationship b|
00002d70  65 74 77 65 65 6e 20 74  68 65 20 73 65 63 74 6f  |etween the secto|
00002d80  72 20 73 69 7a 65 73 20  61 6e 64 20 74 68 65 20  |r sizes and the |
00002d90  67 61 70 20 73 69 7a 65  73 20 66 6f 72 20 33 20  |gap sizes for 3 |
00002da0  31 2f 32 0d 69 6e 63 68  20 61 6e 64 20 35 20 31  |1/2.inch and 5 1|
00002db0  2f 34 20 69 6e 63 68 20  64 69 73 63 73 20 69 73  |/4 inch discs is|
00002dc0  20 73 68 6f 77 6e 20 69  6e 20 66 69 67 75 72 65  | shown in figure|
00002dd0  20 33 2e 20 41 6c 6c 20  74 68 65 20 6e 75 6d 62  | 3. All the numb|
00002de0  65 72 73 20 69 6e 20 66  69 67 75 72 65 0d 33 20  |ers in figure.3 |
00002df0  61 72 65 20 69 6e 20 64  65 63 69 6d 61 6c 2e 0d  |are in decimal..|
00002e00  0d 0d 2b 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..+-------------|
00002e10  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |+-----------+---|
00002e20  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |-----+------+---|
00002e30  2d 2d 2d 2b 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |---+------+-----|
00002e40  2d 2b 2d 2d 2d 2d 2d 2d  2b 0d 7c 20 4e 6f 2e 20  |-+------+.| No. |
00002e50  53 65 63 74 6f 72 73 20  7c 20 53 69 7a 65 20 63  |Sectors | Size c|
00002e60  6f 64 65 20 7c 20 4c 65  6e 67 74 68 20 7c 20 47  |ode | Length | G|
00002e70  61 70 31 20 7c 20 47 61  70 32 20 7c 20 47 61 70  |ap1 | Gap2 | Gap|
00002e80  33 20 7c 20 47 61 70 34  20 7c 20 47 61 70 35 20  |3 | Gap4 | Gap5 |
00002e90  7c 0d 2b 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  ||.+-------------|
00002ea0  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |+-----------+---|
00002eb0  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |-----+------+---|
00002ec0  2d 2d 2d 2b 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |---+------+-----|
00002ed0  2d 2b 2d 2d 2d 2d 2d 2d  2b 0d 7c 20 20 20 20 20  |-+------+.|     |
00002ee0  31 38 20 20 20 20 20 20  7c 20 20 20 20 20 30 20  |18      |     0 |
00002ef0  20 20 20 20 7c 20 20 20  31 32 38 20 20 7c 20 20  |    |   128  |  |
00002f00  31 36 20 20 7c 20 20 31  31 20 20 7c 20 20 31 31  |16  |  11  |  11|
00002f10  20 20 7c 20 20 20 32 34  20 7c 20 20 20 30 20 20  |  |   24 |   0  |
00002f20  7c 0d 7c 20 20 20 20 20  31 30 20 20 20 20 20 20  ||.|     10      |
00002f30  7c 20 20 20 20 20 31 20  20 20 20 20 7c 20 20 20  ||     1     |   |
00002f40  32 35 36 20 20 7c 20 20  31 36 20 20 7c 20 20 31  |256  |  16  |  1|
00002f50  31 20 20 7c 20 20 32 31  20 20 7c 20 20 20 33 30  |1  |  21  |   30|
00002f60  20 7c 20 20 20 30 20 20  7c 0d 7c 20 20 20 20 20  | |   0  |.|     |
00002f70  20 35 20 20 20 20 20 20  7c 20 20 20 20 20 32 20  | 5      |     2 |
00002f80  20 20 20 20 7c 20 20 20  35 31 32 20 20 7c 20 20  |    |   512  |  |
00002f90  31 36 20 20 7c 20 20 31  31 20 20 7c 20 20 37 34  |16  |  11  |  74|
00002fa0  20 20 7c 20 20 20 38 38  20 7c 20 20 20 30 20 20  |  |   88 |   0  |
00002fb0  7c 0d 7c 20 20 20 20 20  20 32 20 20 20 20 20 20  ||.|      2      |
00002fc0  7c 20 20 20 20 20 33 20  20 20 20 20 7c 20 20 31  ||     3     |  1|
00002fd0  30 32 34 20 20 7c 20 20  31 36 20 20 7c 20 20 31  |024  |  16  |  1|
00002fe0  31 20 20 7c 20 32 35 35  20 20 7c 20 20 37 34 30  |1  | 255  |  740|
00002ff0  20 7c 20 20 20 30 20 20  7c 0d 7c 20 20 20 20 20  | |   0  |.|     |
00003000  20 31 20 20 20 20 20 20  7c 20 20 20 20 20 34 20  | 1      |     4 |
00003010  20 20 20 20 7c 20 20 32  30 34 38 20 20 7c 20 20  |    |  2048  |  |
00003020  31 36 20 20 7c 20 20 31  31 20 20 7c 20 20 20 30  |16  |  11  |   0|
00003030  20 20 7c 20 31 30 32 38  20 7c 20 20 20 30 20 20  |  | 1028 |   0  |
00003040  7c 0d 2b 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  ||.+-------------|
00003050  2b 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |+-----------+---|
00003060  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |-----+------+---|
00003070  2d 2d 2d 2b 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |---+------+-----|
00003080  2d 2b 2d 2d 2d 2d 2d 2d  2b 0d 0d 46 69 67 75 72  |-+------+..Figur|
00003090  65 20 33 2e 20 54 68 65  20 72 65 6c 61 74 69 6f  |e 3. The relatio|
000030a0  6e 73 68 69 70 20 62 65  74 77 65 65 6e 20 73 65  |nship between se|
000030b0  63 74 6f 72 20 73 69 7a  65 20 63 6f 64 65 2c 20  |ctor size code, |
000030c0  6c 65 6e 67 74 68 20 61  6e 64 20 67 61 70 20 73  |length and gap s|
000030d0  69 7a 65 2e 0d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ize..-----------|
000030e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0d  |--------------..|
00003120  0d 54 68 65 20 64 61 74  61 20 66 69 65 6c 64 20  |.The data field |
00003130  66 6f 72 20 65 61 63 68  20 73 65 63 74 6f 72 20  |for each sector |
00003140  73 74 61 72 74 73 20 77  69 74 68 20 36 20 73 79  |starts with 6 sy|
00003150  6e 63 20 62 79 74 65 73  20 77 68 69 63 68 20 61  |nc bytes which a|
00003160  72 65 20 75 73 65 64 20  74 6f 0d 73 79 6e 63 68  |re used to.synch|
00003170  72 6f 6e 69 73 65 20 74  68 65 20 64 69 73 63 20  |ronise the disc |
00003180  63 6f 6e 74 72 6f 6c 6c  65 72 20 77 69 74 68 20  |controller with |
00003190  74 68 65 20 72 6f 74 61  74 69 6f 6e 61 6c 20 73  |the rotational s|
000031a0  70 65 65 64 20 6f 66 20  74 68 65 20 64 69 73 63  |peed of the disc|
000031b0  2e 0d 54 68 65 20 73 79  6e 63 20 62 79 74 65 73  |..The sync bytes|
000031c0  20 61 72 65 20 66 6f 6c  6c 6f 77 65 64 20 62 79  | are followed by|
000031d0  20 74 68 65 20 64 61 74  61 20 6d 61 72 6b 20 77  | the data mark w|
000031e0  68 69 63 68 20 69 64 65  6e 74 69 66 69 65 73 20  |hich identifies |
000031f0  74 68 65 20 73 74 61 72  74 20 6f 66 0d 74 68 65  |the start of.the|
00003200  20 64 61 74 61 20 61 6e  64 20 61 6c 73 6f 20 69  | data and also i|
00003210  6e 64 69 63 61 74 65 73  20 69 66 20 74 68 65 20  |ndicates if the |
00003220  64 61 74 61 20 61 72 65  20 6d 61 72 6b 65 64 20  |data are marked |
00003230  61 73 20 22 64 65 6c 65  74 65 64 22 2e 20 44 65  |as "deleted". De|
00003240  6c 65 74 65 64 0d 64 61  74 61 20 61 72 65 20 6e  |leted.data are n|
00003250  6f 74 20 70 68 79 73 69  63 61 6c 6c 79 20 64 65  |ot physically de|
00003260  6c 65 74 65 64 20 66 72  6f 6d 20 74 68 65 20 64  |leted from the d|
00003270  69 73 63 2c 20 74 68 65  79 20 61 72 65 20 73 69  |isc, they are si|
00003280  6d 70 6c 79 20 6d 61 72  6b 65 64 20 61 73 0d 64  |mply marked as.d|
00003290  65 6c 65 74 65 64 2e 20  54 68 69 73 20 74 79 70  |eleted. This typ|
000032a0  65 20 6f 66 20 64 61 74  61 20 6d 61 72 6b 69 6e  |e of data markin|
000032b0  67 20 77 69 6c 6c 20 62  65 20 75 73 65 64 20 69  |g will be used i|
000032c0  6e 20 6d 6f 64 75 6c 65  20 36 20 74 6f 20 68 65  |n module 6 to he|
000032d0  6c 70 0d 70 72 6f 64 75  63 65 20 63 6f 70 79 2d  |lp.produce copy-|
000032e0  70 72 6f 74 65 63 74 65  64 20 64 69 73 63 73 2e  |protected discs.|
000032f0  20 54 68 65 20 64 61 74  61 20 66 6f 6c 6c 6f 77  | The data follow|
00003300  20 74 68 65 20 64 61 74  61 20 6d 61 72 6b 20 61  | the data mark a|
00003310  6e 64 20 61 72 65 0d 74  65 72 6d 69 6e 61 74 65  |nd are.terminate|
00003320  64 20 77 69 74 68 20 74  77 6f 20 64 61 74 61 20  |d with two data |
00003330  43 52 43 20 62 79 74 65  73 2e 0d 0d 54 68 65 20  |CRC bytes...The |
00003340  70 72 6f 67 72 61 6d 20  49 44 53 44 55 4d 50 20  |program IDSDUMP |
00003350  63 61 6e 20 62 65 20 75  73 65 64 20 74 6f 20 70  |can be used to p|
00003360  72 69 6e 74 20 74 68 65  20 49 44 20 66 69 65 6c  |rint the ID fiel|
00003370  64 20 66 6f 72 20 65 76  65 72 79 20 73 65 63 74  |d for every sect|
00003380  6f 72 20 6f 6e 0d 61 20  73 69 6e 67 6c 65 20 64  |or on.a single d|
00003390  65 6e 73 69 74 79 20 64  69 73 63 2e 20 49 20 77  |ensity disc. I w|
000033a0  69 6c 6c 20 6e 6f 74 20  65 78 70 6c 61 69 6e 20  |ill not explain |
000033b0  68 6f 77 20 74 68 65 20  70 72 6f 67 72 61 6d 20  |how the program |
000033c0  77 6f 72 6b 73 20 62 65  63 61 75 73 65 20 69 74  |works because it|
000033d0  0d 75 73 65 73 20 74 65  63 68 6e 69 71 75 65 73  |.uses techniques|
000033e0  20 74 68 61 74 20 77 69  6c 6c 20 62 65 20 63 6f  | that will be co|
000033f0  76 65 72 65 64 20 69 6e  20 74 68 65 20 6e 65 78  |vered in the nex|
00003400  74 20 74 77 6f 20 6d 6f  64 75 6c 65 73 2e 20 54  |t two modules. T|
00003410  68 65 20 70 72 6f 67 72  61 6d 0d 69 73 20 63 6f  |he program.is co|
00003420  6d 6d 65 6e 74 65 64 20  73 6f 20 74 68 61 74 20  |mmented so that |
00003430  79 6f 75 20 63 61 6e 20  63 6f 6d 65 20 62 61 63  |you can come bac|
00003440  6b 20 74 6f 20 69 74 20  61 66 74 65 72 20 72 65  |k to it after re|
00003450  61 64 69 6e 67 20 6d 6f  64 75 6c 65 73 20 31 20  |ading modules 1 |
00003460  61 6e 64 20 32 0d 77 68  65 6e 20 79 6f 75 20 73  |and 2.when you s|
00003470  68 6f 75 6c 64 20 62 65  20 61 62 6c 65 20 74 6f  |hould be able to|
00003480  20 75 6e 64 65 72 73 74  61 6e 64 20 68 6f 77 20  | understand how |
00003490  69 74 20 77 6f 72 6b 73  2e 0d 0d 0d 20 20 20 31  |it works....   1|
000034a0  30 20 52 45 4d 3a 20 49  44 53 44 55 4d 50 0d 20  |0 REM: IDSDUMP. |
000034b0  20 20 32 30 20 7a 65 72  6f 70 61 67 65 3d 26 37  |  20 zeropage=&7|
000034c0  30 0d 20 20 20 33 30 20  6f 73 61 73 63 69 3d 26  |0.   30 osasci=&|
000034d0  46 46 45 33 0d 20 20 20  34 30 20 6f 73 6e 65 77  |FFE3.   40 osnew|
000034e0  6c 3d 26 46 46 45 37 0d  20 20 20 35 30 20 6f 73  |l=&FFE7.   50 os|
000034f0  77 6f 72 64 3d 26 46 46  46 31 0d 20 20 20 36 30  |word=&FFF1.   60|
00003500  20 6f 73 62 79 74 65 3d  26 46 46 46 34 0d 20 20  | osbyte=&FFF4.  |
00003510  20 37 30 20 44 49 4d 20  62 75 66 66 65 72 20 26  | 70 DIM buffer &|
00003520  35 30 0d 20 20 20 38 30  20 44 49 4d 20 6d 63 6f  |50.   80 DIM mco|
00003530  64 65 20 26 32 30 30 0d  20 20 20 39 30 20 46 4f  |de &200.   90 FO|
00003540  52 20 70 61 73 73 3d 30  20 54 4f 20 32 20 53 54  |R pass=0 TO 2 ST|
00003550  45 50 20 32 0d 20 20 31  30 30 20 50 25 3d 6d 63  |EP 2.  100 P%=mc|
00003560  6f 64 65 0d 20 20 31 31  30 20 5b 20 20 20 20 20  |ode.  110 [     |
00003570  20 20 4f 50 54 20 70 61  73 73 0d 20 20 31 32 30  |  OPT pass.  120|
00003580  20 20 20 20 20 20 20 20  20 4c 44 41 20 23 31 34  |         LDA #14|
00003590  20 20 20 20 20 20 20 5c  20 70 61 67 65 64 20 6d  |       \ paged m|
000035a0  6f 64 65 0d 20 20 31 33  30 20 20 20 20 20 20 20  |ode.  130       |
000035b0  20 20 4a 53 52 20 6f 73  61 73 63 69 0d 20 20 31  |  JSR osasci.  1|
000035c0  34 30 20 2e 6d 61 69 6e  6c 6f 6f 70 0d 20 20 31  |40 .mainloop.  1|
000035d0  35 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 65  |50         JSR e|
000035e0  73 63 61 70 65 20 20 20  20 5c 20 63 68 65 63 6b  |scape    \ check|
000035f0  20 65 73 63 61 70 65 20  66 6c 61 67 0d 20 20 31  | escape flag.  1|
00003600  36 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 66  |60         JSR f|
00003610  69 72 73 74 73 65 63 74  6f 72 20 5c 20 72 65 61  |irstsector \ rea|
00003620  64 20 73 65 63 74 6f 72  20 69 64 20 66 69 72 73  |d sector id firs|
00003630  74 20 73 65 63 74 6f 72  0d 20 20 31 37 30 20 20  |t sector.  170  |
00003640  20 20 20 20 20 20 20 42  4e 45 20 6e 6f 74 66 6f  |       BNE notfo|
00003650  72 6d 61 74 74 65 64 20  5c 20 69 66 20 65 72 72  |rmatted \ if err|
00003660  6f 72 2c 20 74 72 61 63  6b 20 6e 6f 74 20 66 6f  |or, track not fo|
00003670  72 6d 61 74 74 65 64 0d  20 20 31 38 30 20 20 20  |rmatted.  180   |
00003680  20 20 20 20 20 20 4a 53  52 20 74 72 61 63 6b 6e  |      JSR trackn|
00003690  75 6d 62 65 72 20 5c 20  70 72 69 6e 74 20 74 72  |umber \ print tr|
000036a0  61 63 6b 20 6e 75 6d 62  65 72 0d 20 20 31 39 30  |ack number.  190|
000036b0  20 20 20 20 20 20 20 20  20 4a 53 52 20 73 65 63  |         JSR sec|
000036c0  74 6f 72 69 64 73 20 5c  20 72 65 61 64 20 61 6c  |torids \ read al|
000036d0  6c 20 73 65 63 74 6f 72  20 69 64 73 0d 20 20 32  |l sector ids.  2|
000036e0  30 30 20 2e 6e 6f 74 66  6f 72 6d 61 74 74 65 64  |00 .notformatted|
000036f0  0d 20 20 32 31 30 20 20  20 20 20 20 20 20 20 49  |.  210         I|
00003700  4e 43 20 70 68 79 73 69  63 61 6c 20 20 5c 20 69  |NC physical  \ i|
00003710  6e 63 72 65 6d 65 6e 74  20 70 68 79 73 69 63 61  |ncrement physica|
00003720  6c 20 74 72 61 63 6b 20  6e 75 6d 62 65 72 0d 20  |l track number. |
00003730  20 32 32 30 20 20 20 20  20 20 20 20 20 4c 44 41  | 220         LDA|
00003740  20 70 68 79 73 69 63 61  6c 20 20 5c 20 6c 6f 61  | physical  \ loa|
00003750  64 20 70 68 79 73 69 63  61 6c 20 74 72 61 63 6b  |d physical track|
00003760  20 6e 75 6d 62 65 72 0d  20 20 32 33 30 20 20 20  | number.  230   |
00003770  20 20 20 20 20 20 43 4d  50 20 6c 61 73 74 20 20  |      CMP last  |
00003780  20 20 20 20 5c 20 61 6c  6c 20 64 6f 6e 65 3f 0d  |    \ all done?.|
00003790  20 20 32 34 30 20 20 20  20 20 20 20 20 20 42 4e  |  240         BN|
000037a0  45 20 6d 61 69 6e 6c 6f  6f 70 20 20 5c 20 69 66  |E mainloop  \ if|
000037b0  20 6e 6f 74 20 63 6f 70  79 20 6e 65 78 74 20 74  | not copy next t|
000037c0  72 61 63 6b 0d 20 20 32  35 30 20 20 20 20 20 20  |rack.  250      |
000037d0  20 20 20 4a 53 52 20 6f  73 6e 65 77 6c 0d 20 20  |   JSR osnewl.  |
000037e0  32 36 30 20 20 20 20 20  20 20 20 20 52 54 53 20  |260         RTS |
000037f0  20 20 20 20 20 20 20 20  20 20 5c 20 72 65 74 75  |          \ retu|
00003800  72 6e 20 74 6f 20 42 41  53 49 43 0d 20 20 32 37  |rn to BASIC.  27|
00003810  30 20 2e 65 73 63 61 70  65 0d 20 20 32 38 30 20  |0 .escape.  280 |
00003820  20 20 20 20 20 20 20 20  4c 44 41 20 26 46 46 20  |        LDA &FF |
00003830  20 20 20 20 20 20 5c 20  65 73 63 61 70 65 20 66  |      \ escape f|
00003840  6c 61 67 0d 20 20 32 39  30 20 20 20 20 20 20 20  |lag.  290       |
00003850  20 20 42 4d 49 20 70 72  65 73 73 65 64 20 20 20  |  BMI pressed   |
00003860  5c 20 62 69 74 20 37 20  73 65 74 20 69 66 20 70  |\ bit 7 set if p|
00003870  72 65 73 73 65 64 0d 20  20 33 30 30 20 20 20 20  |ressed.  300    |
00003880  20 20 20 20 20 52 54 53  0d 20 20 33 31 30 20 2e  |     RTS.  310 .|
00003890  70 72 65 73 73 65 64 0d  20 20 33 32 30 20 20 20  |pressed.  320   |
000038a0  20 20 20 20 20 20 4c 44  41 20 23 26 37 45 0d 20  |      LDA #&7E. |
000038b0  20 33 33 30 20 20 20 20  20 20 20 20 20 4a 53 52  | 330         JSR|
000038c0  20 6f 73 62 79 74 65 20  20 20 20 5c 20 61 63 6b  | osbyte    \ ack|
000038d0  6e 6f 77 6c 65 64 67 65  20 45 73 63 61 70 65 0d  |nowledge Escape.|
000038e0  20 20 33 34 30 20 20 20  20 20 20 20 20 20 42 52  |  340         BR|
000038f0  4b 0d 20 20 33 35 30 20  20 20 20 20 20 20 20 20  |K.  350         |
00003900  42 52 4b 0d 20 20 33 36  30 20 20 20 20 20 20 20  |BRK.  360       |
00003910  20 20 45 51 55 53 20 22  45 73 63 61 70 65 22 0d  |  EQUS "Escape".|
00003920  20 20 33 37 30 20 20 20  20 20 20 20 20 20 42 52  |  370         BR|
00003930  4b 0d 20 20 33 38 30 20  2e 66 69 72 73 74 73 65  |K.  380 .firstse|
00003940  63 74 6f 72 0d 20 20 33  39 30 20 20 20 20 20 20  |ctor.  390      |
00003950  20 20 20 4c 44 41 20 70  68 79 73 69 63 61 6c 20  |   LDA physical |
00003960  20 5c 20 70 68 79 73 69  63 61 6c 20 74 72 61 63  | \ physical trac|
00003970  6b 20 6e 75 6d 62 65 72  0d 20 20 34 30 30 20 20  |k number.  400  |
00003980  20 20 20 20 20 20 20 53  54 41 20 69 64 73 62 6c  |       STA idsbl|
00003990  6f 63 6b 2b 37 20 5c 20  73 74 6f 72 65 20 70 68  |ock+7 \ store ph|
000039a0  79 73 69 63 61 6c 20 74  72 61 63 6b 0d 20 20 34  |ysical track.  4|
000039b0  31 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 23  |10         LDA #|
000039c0  31 20 20 20 20 20 20 20  20 5c 20 6f 6e 65 20 73  |1        \ one s|
000039d0  65 63 74 6f 72 0d 20 20  34 32 30 20 20 20 20 20  |ector.  420     |
000039e0  20 20 20 20 53 54 41 20  69 64 73 62 6c 6f 63 6b  |    STA idsblock|
000039f0  2b 39 20 5c 20 6e 75 6d  62 65 72 20 6f 66 20 69  |+9 \ number of i|
00003a00  64 73 0d 20 20 34 33 30  20 20 20 20 20 20 20 20  |ds.  430        |
00003a10  20 4c 44 41 20 23 26 37  46 0d 20 20 34 34 30 20  | LDA #&7F.  440 |
00003a20  20 20 20 20 20 20 20 20  4c 44 58 20 23 69 64 73  |        LDX #ids|
00003a30  62 6c 6f 63 6b 20 4d 4f  44 20 32 35 36 0d 20 20  |block MOD 256.  |
00003a40  34 35 30 20 20 20 20 20  20 20 20 20 4c 44 59 20  |450         LDY |
00003a50  23 69 64 73 62 6c 6f 63  6b 20 44 49 56 20 32 35  |#idsblock DIV 25|
00003a60  36 0d 20 20 34 36 30 20  20 20 20 20 20 20 20 20  |6.  460         |
00003a70  4a 53 52 20 6f 73 77 6f  72 64 0d 20 20 34 37 30  |JSR osword.  470|
00003a80  20 20 20 20 20 20 20 20  20 4c 44 41 20 69 64 73  |         LDA ids|
00003a90  62 6c 6f 63 6b 2b 31 30  20 5c 20 72 65 73 75 6c  |block+10 \ resul|
00003aa0  74 0d 20 20 34 38 30 20  20 20 20 20 20 20 20 20  |t.  480         |
00003ab0  41 4e 44 20 23 26 31 45  20 20 20 20 20 20 5c 20  |AND #&1E      \ |
00003ac0  3d 20 30 20 69 66 20 66  6f 72 6d 61 74 74 65 64  |= 0 if formatted|
00003ad0  0d 20 20 34 39 30 20 20  20 20 20 20 20 20 20 52  |.  490         R|
00003ae0  54 53 0d 20 20 35 30 30  20 2e 73 65 63 74 6f 72  |TS.  500 .sector|
00003af0  69 64 73 0d 20 20 35 31  30 20 20 20 20 20 20 20  |ids.  510       |
00003b00  20 20 4c 44 58 20 62 75  66 66 65 72 2b 33 20 20  |  LDX buffer+3  |
00003b10  20 5c 20 6c 6f 61 64 20  64 61 74 61 20 73 69 7a  | \ load data siz|
00003b20  65 20 63 6f 64 65 0d 20  20 35 32 30 20 20 20 20  |e code.  520    |
00003b30  20 20 20 20 20 4c 44 41  20 73 69 7a 65 73 2c 58  |     LDA sizes,X|
00003b40  20 20 20 5c 20 6c 6f 61  64 20 6e 75 6d 62 65 72  |   \ load number|
00003b50  20 6f 66 20 73 65 63 74  6f 72 73 0d 20 20 35 33  | of sectors.  53|
00003b60  30 20 20 20 20 20 20 20  20 20 53 54 41 20 69 64  |0         STA id|
00003b70  73 62 6c 6f 63 6b 2b 39  20 5c 20 73 74 6f 72 65  |sblock+9 \ store|
00003b80  20 6e 75 6d 62 65 72 20  6f 66 20 73 65 63 74 6f  | number of secto|
00003b90  72 73 0d 20 20 35 34 30  20 20 20 20 20 20 20 20  |rs.  540        |
00003ba0  20 41 53 4c 20 41 20 20  20 20 20 20 20 20 20 5c  | ASL A         \|
00003bb0  20 2a 32 0d 20 20 35 35  30 20 20 20 20 20 20 20  | *2.  550       |
00003bc0  20 20 41 53 4c 20 41 20  20 20 20 20 20 20 20 20  |  ASL A         |
00003bd0  5c 20 2a 34 0d 20 20 35  36 30 20 20 20 20 20 20  |\ *4.  560      |
00003be0  20 20 20 53 54 41 20 73  65 63 74 6f 72 6e 75 6d  |   STA sectornum|
00003bf0  62 65 72 20 5c 20 73 74  6f 72 65 20 69 6e 64 65  |ber \ store inde|
00003c00  78 20 6f 6e 20 73 65 63  74 6f 72 73 0d 20 20 35  |x on sectors.  5|
00003c10  37 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 23  |70         LDA #|
00003c20  26 37 46 0d 20 20 35 38  30 20 20 20 20 20 20 20  |&7F.  580       |
00003c30  20 20 4c 44 58 20 23 69  64 73 62 6c 6f 63 6b 20  |  LDX #idsblock |
00003c40  4d 4f 44 20 32 35 36 0d  20 20 35 39 30 20 20 20  |MOD 256.  590   |
00003c50  20 20 20 20 20 20 4c 44  59 20 23 69 64 73 62 6c  |      LDY #idsbl|
00003c60  6f 63 6b 20 44 49 56 20  32 35 36 0d 20 20 36 30  |ock DIV 256.  60|
00003c70  30 20 20 20 20 20 20 20  20 20 4a 53 52 20 6f 73  |0         JSR os|
00003c80  77 6f 72 64 0d 20 20 36  31 30 20 20 20 20 20 20  |word.  610      |
00003c90  20 20 20 4c 44 41 20 69  64 73 62 6c 6f 63 6b 2b  |   LDA idsblock+|
00003ca0  31 30 20 5c 20 72 65 73  75 6c 74 0d 20 20 36 32  |10 \ result.  62|
00003cb0  30 20 20 20 20 20 20 20  20 20 41 4e 44 20 23 26  |0         AND #&|
00003cc0  31 45 0d 20 20 36 33 30  20 20 20 20 20 20 20 20  |1E.  630        |
00003cd0  20 42 4e 45 20 69 64 73  65 72 72 6f 72 20 20 5c  | BNE idserror  \|
00003ce0  20 3d 20 30 20 69 66 20  4f 4b 0d 20 20 36 34 30  | = 0 if OK.  640|
00003cf0  20 20 20 20 20 20 20 20  20 4c 44 58 20 23 30 0d  |         LDX #0.|
00003d00  20 20 36 35 30 20 2e 6e  65 78 74 0d 20 20 36 36  |  650 .next.  66|
00003d10  30 20 20 20 20 20 20 20  20 20 4c 44 59 20 23 30  |0         LDY #0|
00003d20  0d 20 20 36 37 30 20 2e  70 72 69 6e 74 6c 6f 6f  |.  670 .printloo|
00003d30  70 0d 20 20 36 38 30 20  20 20 20 20 20 20 20 20  |p.  680         |
00003d40  4c 44 41 20 62 75 66 66  65 72 2c 58 0d 20 20 36  |LDA buffer,X.  6|
00003d50  39 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 70  |90         JSR p|
00003d60  72 69 6e 74 62 79 74 65  20 5c 20 70 72 69 6e 74  |rintbyte \ print|
00003d70  20 65 76 65 72 79 20 62  79 74 65 20 6f 66 20 73  | every byte of s|
00003d80  65 63 74 6f 72 20 74 61  62 6c 65 0d 20 20 37 30  |ector table.  70|
00003d90  30 20 20 20 20 20 20 20  20 20 49 4e 58 0d 20 20  |0         INX.  |
00003da0  37 31 30 20 20 20 20 20  20 20 20 20 49 4e 59 0d  |710         INY.|
00003db0  20 20 37 32 30 20 20 20  20 20 20 20 20 20 43 50  |  720         CP|
00003dc0  59 20 23 34 20 20 20 20  20 20 20 20 5c 20 34 20  |Y #4        \ 4 |
00003dd0  62 79 74 65 73 20 70 65  72 20 6c 69 6e 65 0d 20  |bytes per line. |
00003de0  20 37 33 30 20 20 20 20  20 20 20 20 20 42 4e 45  | 730         BNE|
00003df0  20 70 72 69 6e 74 6c 6f  6f 70 0d 20 20 37 34 30  | printloop.  740|
00003e00  20 20 20 20 20 20 20 20  20 4a 53 52 20 6f 73 6e  |         JSR osn|
00003e10  65 77 6c 0d 20 20 37 35  30 20 20 20 20 20 20 20  |ewl.  750       |
00003e20  20 20 43 50 58 20 73 65  63 74 6f 72 6e 75 6d 62  |  CPX sectornumb|
00003e30  65 72 20 5c 20 6c 61 73  74 20 62 79 74 65 3f 0d  |er \ last byte?.|
00003e40  20 20 37 36 30 20 20 20  20 20 20 20 20 20 42 43  |  760         BC|
00003e50  43 20 6e 65 78 74 20 20  20 20 20 20 5c 20 67 6f  |C next      \ go|
00003e60  20 62 61 63 6b 20 66 6f  72 20 6d 6f 72 65 0d 20  | back for more. |
00003e70  20 37 37 30 20 20 20 20  20 20 20 20 20 52 54 53  | 770         RTS|
00003e80  0d 20 20 37 38 30 20 2e  69 64 73 65 72 72 6f 72  |.  780 .idserror|
00003e90  0d 20 20 37 39 30 20 20  20 20 20 20 20 20 20 42  |.  790         B|
00003ea0  52 4b 0d 20 20 38 30 30  20 20 20 20 20 20 20 20  |RK.  800        |
00003eb0  20 42 52 4b 0d 20 20 38  31 30 20 20 20 20 20 20  | BRK.  810      |
00003ec0  20 20 20 45 51 55 53 20  22 53 65 63 74 6f 72 20  |   EQUS "Sector |
00003ed0  49 44 20 45 72 72 6f 72  22 0d 20 20 38 32 30 20  |ID Error".  820 |
00003ee0  20 20 20 20 20 20 20 20  42 52 4b 0d 20 20 38 33  |        BRK.  83|
00003ef0  30 20 2e 74 72 61 63 6b  6e 75 6d 62 65 72 0d 20  |0 .tracknumber. |
00003f00  20 38 34 30 20 20 20 20  20 20 20 20 20 4a 53 52  | 840         JSR|
00003f10  20 6f 73 6e 65 77 6c 0d  20 20 38 35 30 20 20 20  | osnewl.  850   |
00003f20  20 20 20 20 20 20 4c 44  58 20 23 74 69 74 6c 65  |      LDX #title|
00003f30  20 4d 4f 44 20 32 35 36  0d 20 20 38 36 30 20 20  | MOD 256.  860  |
00003f40  20 20 20 20 20 20 20 4c  44 59 20 23 74 69 74 6c  |       LDY #titl|
00003f50  65 20 44 49 56 20 32 35  36 0d 20 20 38 37 30 20  |e DIV 256.  870 |
00003f60  20 20 20 20 20 20 20 20  4a 53 52 20 70 72 69 6e  |        JSR prin|
00003f70  74 74 65 78 74 20 5c 20  70 72 69 6e 74 20 22 54  |ttext \ print "T|
00003f80  72 61 63 6b 20 26 22 0d  20 20 38 38 30 20 20 20  |rack &".  880   |
00003f90  20 20 20 20 20 20 4c 44  41 20 70 68 79 73 69 63  |      LDA physic|
00003fa0  61 6c 20 20 5c 20 6c 6f  61 64 20 70 68 79 73 69  |al  \ load physi|
00003fb0  63 61 6c 20 74 72 61 63  6b 20 6e 75 6d 62 65 72  |cal track number|
00003fc0  0d 20 20 38 39 30 20 20  20 20 20 20 20 20 20 4a  |.  890         J|
00003fd0  53 52 20 70 72 69 6e 74  62 79 74 65 20 5c 20 70  |SR printbyte \ p|
00003fe0  72 69 6e 74 20 74 72 61  63 6b 20 6e 75 6d 62 65  |rint track numbe|
00003ff0  72 0d 20 20 39 30 30 20  20 20 20 20 20 20 20 20  |r.  900         |
00004000  4c 44 58 20 23 68 65 61  64 65 72 20 4d 4f 44 20  |LDX #header MOD |
00004010  32 35 36 0d 20 20 39 31  30 20 20 20 20 20 20 20  |256.  910       |
00004020  20 20 4c 44 59 20 23 68  65 61 64 65 72 20 44 49  |  LDY #header DI|
00004030  56 20 32 35 36 0d 20 20  39 32 30 20 20 20 20 20  |V 256.  920     |
00004040  20 20 20 20 4a 4d 50 20  70 72 69 6e 74 74 65 78  |    JMP printtex|
00004050  74 20 5c 20 70 72 69 6e  74 20 22 4c 54 20 48 4e  |t \ print "LT HN|
00004060  20 4c 53 20 44 53 22 0d  20 20 39 33 30 20 2e 70  | LS DS".  930 .p|
00004070  72 69 6e 74 74 65 78 74  0d 20 20 39 34 30 20 20  |rinttext.  940  |
00004080  20 20 20 20 20 20 20 53  54 58 20 7a 65 72 6f 70  |       STX zerop|
00004090  61 67 65 0d 20 20 39 35  30 20 20 20 20 20 20 20  |age.  950       |
000040a0  20 20 53 54 59 20 7a 65  72 6f 70 61 67 65 2b 31  |  STY zeropage+1|
000040b0  0d 20 20 39 36 30 20 20  20 20 20 20 20 20 20 4c  |.  960         L|
000040c0  44 59 20 23 30 0d 20 20  39 37 30 20 2e 74 65 78  |DY #0.  970 .tex|
000040d0  74 6c 6f 6f 70 0d 20 20  39 38 30 20 20 20 20 20  |tloop.  980     |
000040e0  20 20 20 20 4c 44 41 20  28 7a 65 72 6f 70 61 67  |    LDA (zeropag|
000040f0  65 29 2c 59 0d 20 20 39  39 30 20 20 20 20 20 20  |e),Y.  990      |
00004100  20 20 20 42 45 51 20 65  6e 64 74 65 78 74 0d 20  |   BEQ endtext. |
00004110  31 30 30 30 20 20 20 20  20 20 20 20 20 4a 53 52  |1000         JSR|
00004120  20 6f 73 61 73 63 69 0d  20 31 30 31 30 20 20 20  | osasci. 1010   |
00004130  20 20 20 20 20 20 49 4e  59 0d 20 31 30 32 30 20  |      INY. 1020 |
00004140  20 20 20 20 20 20 20 20  42 4e 45 20 74 65 78 74  |        BNE text|
00004150  6c 6f 6f 70 0d 20 31 30  33 30 20 2e 65 6e 64 74  |loop. 1030 .endt|
00004160  65 78 74 0d 20 31 30 34  30 20 20 20 20 20 20 20  |ext. 1040       |
00004170  20 20 52 54 53 0d 20 31  30 35 30 20 2e 70 72 69  |  RTS. 1050 .pri|
00004180  6e 74 62 79 74 65 0d 20  31 30 36 30 20 20 20 20  |ntbyte. 1060    |
00004190  20 20 20 20 20 50 48 41  0d 20 31 30 37 30 20 20  |     PHA. 1070  |
000041a0  20 20 20 20 20 20 20 4c  53 52 20 41 0d 20 31 30  |       LSR A. 10|
000041b0  38 30 20 20 20 20 20 20  20 20 20 4c 53 52 20 41  |80         LSR A|
000041c0  0d 20 31 30 39 30 20 20  20 20 20 20 20 20 20 4c  |. 1090         L|
000041d0  53 52 20 41 0d 20 31 31  30 30 20 20 20 20 20 20  |SR A. 1100      |
000041e0  20 20 20 4c 53 52 20 41  0d 20 31 31 31 30 20 20  |   LSR A. 1110  |
000041f0  20 20 20 20 20 20 20 4a  53 52 20 6e 79 62 62 6c  |       JSR nybbl|
00004200  65 20 20 20 20 5c 20 70  72 69 6e 74 20 4d 53 20  |e    \ print MS |
00004210  6e 79 62 62 6c 65 0d 20  31 31 32 30 20 20 20 20  |nybble. 1120    |
00004220  20 20 20 20 20 50 4c 41  0d 20 31 31 33 30 20 20  |     PLA. 1130  |
00004230  20 20 20 20 20 20 20 4a  53 52 20 6e 79 62 62 6c  |       JSR nybbl|
00004240  65 20 20 20 20 5c 20 70  72 69 6e 74 20 4c 53 20  |e    \ print LS |
00004250  6e 79 62 62 6c 65 0d 20  31 31 34 30 20 20 20 20  |nybble. 1140    |
00004260  20 20 20 20 20 4c 44 41  20 23 41 53 43 28 22 20  |     LDA #ASC(" |
00004270  22 29 0d 20 31 31 35 30  20 20 20 20 20 20 20 20  |"). 1150        |
00004280  20 4a 53 52 20 6f 73 61  73 63 69 20 20 20 20 5c  | JSR osasci    \|
00004290  20 70 72 69 6e 74 20 73  70 61 63 65 0d 20 31 31  | print space. 11|
000042a0  36 30 20 20 20 20 20 20  20 20 20 4a 4d 50 20 6f  |60         JMP o|
000042b0  73 61 73 63 69 20 20 20  20 5c 20 70 72 69 6e 74  |sasci    \ print|
000042c0  20 73 70 61 63 65 0d 20  31 31 37 30 20 2e 6e 79  | space. 1170 .ny|
000042d0  62 62 6c 65 0d 20 31 31  38 30 20 20 20 20 20 20  |bble. 1180      |
000042e0  20 20 20 41 4e 44 20 23  26 30 46 0d 20 31 31 39  |   AND #&0F. 119|
000042f0  30 20 20 20 20 20 20 20  20 20 53 45 44 0d 20 31  |0         SED. 1|
00004300  32 30 30 20 20 20 20 20  20 20 20 20 43 4c 43 0d  |200         CLC.|
00004310  20 31 32 31 30 20 20 20  20 20 20 20 20 20 41 44  | 1210         AD|
00004320  43 20 23 26 39 30 0d 20  31 32 32 30 20 20 20 20  |C #&90. 1220    |
00004330  20 20 20 20 20 41 44 43  20 23 26 34 30 0d 20 31  |     ADC #&40. 1|
00004340  32 33 30 20 20 20 20 20  20 20 20 20 43 4c 44 0d  |230         CLD.|
00004350  20 31 32 34 30 20 20 20  20 20 20 20 20 20 4a 4d  | 1240         JM|
00004360  50 20 6f 73 61 73 63 69  20 20 20 20 5c 20 70 72  |P osasci    \ pr|
00004370  69 6e 74 20 6e 79 62 62  6c 65 20 61 6e 64 20 72  |int nybble and r|
00004380  65 74 75 72 6e 0d 20 31  32 35 30 20 2e 69 64 73  |eturn. 1250 .ids|
00004390  62 6c 6f 63 6b 0d 20 31  32 36 30 20 20 20 20 20  |block. 1260     |
000043a0  20 20 20 20 45 51 55 42  20 26 46 46 20 20 20 20  |    EQUB &FF    |
000043b0  20 20 5c 20 63 75 72 72  65 6e 74 20 64 72 69 76  |  \ current driv|
000043c0  65 0d 20 31 32 37 30 20  20 20 20 20 20 20 20 20  |e. 1270         |
000043d0  45 51 55 44 20 62 75 66  66 65 72 20 20 20 5c 20  |EQUD buffer   \ |
000043e0  61 64 64 72 65 73 73 20  6f 66 20 62 75 66 66 65  |address of buffe|
000043f0  72 0d 20 31 32 38 30 20  20 20 20 20 20 20 20 20  |r. 1280         |
00004400  45 51 55 44 20 26 30 30  30 30 35 42 30 33 20 5c  |EQUD &00005B03 \|
00004410  20 72 65 61 64 20 73 65  63 74 6f 72 20 69 64 73  | read sector ids|
00004420  0d 20 31 32 39 30 20 20  20 20 20 20 20 20 20 45  |. 1290         E|
00004430  51 55 57 20 30 0d 20 31  33 30 30 20 2e 73 69 7a  |QUW 0. 1300 .siz|
00004440  65 73 0d 20 31 33 31 30  20 20 20 20 20 20 20 20  |es. 1310        |
00004450  20 45 51 55 42 20 31 38  0d 20 31 33 32 30 20 20  | EQUB 18. 1320  |
00004460  20 20 20 20 20 20 20 45  51 55 42 20 31 30 0d 20  |       EQUB 10. |
00004470  31 33 33 30 20 20 20 20  20 20 20 20 20 45 51 55  |1330         EQU|
00004480  42 20 35 0d 20 31 33 34  30 20 20 20 20 20 20 20  |B 5. 1340       |
00004490  20 20 45 51 55 42 20 32  0d 20 31 33 35 30 20 20  |  EQUB 2. 1350  |
000044a0  20 20 20 20 20 20 20 45  51 55 42 20 31 0d 20 31  |       EQUB 1. 1|
000044b0  33 36 30 20 2e 74 69 74  6c 65 0d 20 31 33 37 30  |360 .title. 1370|
000044c0  20 20 20 20 20 20 20 20  20 45 51 55 53 20 22 20  |         EQUS " |
000044d0  20 54 72 61 63 6b 20 20  26 22 0d 20 31 33 38 30  | Track  &". 1380|
000044e0  20 20 20 20 20 20 20 20  20 42 52 4b 0d 20 31 33  |         BRK. 13|
000044f0  39 30 20 2e 68 65 61 64  65 72 0d 20 31 34 30 30  |90 .header. 1400|
00004500  20 20 20 20 20 20 20 20  20 45 51 55 42 20 26 30  |         EQUB &0|
00004510  44 0d 20 31 34 31 30 20  20 20 20 20 20 20 20 20  |D. 1410         |
00004520  45 51 55 53 20 22 20 20  2d 2d 2d 2d 2d 2d 2d 2d  |EQUS "  --------|
00004530  2d 2d 22 0d 20 31 34 32  30 20 20 20 20 20 20 20  |--". 1420       |
00004540  20 20 45 51 55 42 20 26  30 44 0d 20 31 34 33 30  |  EQUB &0D. 1430|
00004550  20 20 20 20 20 20 20 20  20 45 51 55 53 20 22 4c  |         EQUS "L|
00004560  54 20 20 48 4e 20 20 4c  53 20 20 44 53 22 0d 20  |T  HN  LS  DS". |
00004570  31 34 34 30 20 20 20 20  20 20 20 20 20 45 51 55  |1440         EQU|
00004580  42 20 26 30 44 0d 20 31  34 35 30 20 20 20 20 20  |B &0D. 1450     |
00004590  20 20 20 20 45 51 55 53  20 22 2d 2d 2d 2d 2d 2d  |    EQUS "------|
000045a0  2d 2d 2d 2d 2d 2d 2d 2d  22 0d 20 31 34 36 30 20  |--------". 1460 |
000045b0  20 20 20 20 20 20 20 20  45 51 55 42 20 26 30 44  |        EQUB &0D|
000045c0  0d 20 31 34 37 30 20 20  20 20 20 20 20 20 20 42  |. 1470         B|
000045d0  52 4b 0d 20 31 34 38 30  20 2e 70 68 79 73 69 63  |RK. 1480 .physic|
000045e0  61 6c 0d 20 31 34 39 30  20 20 20 20 20 20 20 20  |al. 1490        |
000045f0  20 45 51 55 42 20 26 30  30 0d 20 31 35 30 30 20  | EQUB &00. 1500 |
00004600  2e 73 65 63 74 6f 72 6e  75 6d 62 65 72 0d 20 31  |.sectornumber. 1|
00004610  35 31 30 20 20 20 20 20  20 20 20 20 45 51 55 42  |510         EQUB|
00004620  20 26 30 30 0d 20 31 35  32 30 20 2e 6c 61 73 74  | &00. 1520 .last|
00004630  0d 20 31 35 33 30 20 20  20 20 20 20 20 20 20 45  |. 1530         E|
00004640  51 55 42 20 26 30 30 0d  20 31 35 34 30 20 5d 0d  |QUB &00. 1540 ].|
00004650  20 31 35 35 30 20 4e 45  58 54 0d 20 31 35 36 30  | 1550 NEXT. 1560|
00004660  20 49 4e 50 55 54 27 22  4e 75 6d 62 65 72 20 6f  | INPUT'"Number o|
00004670  66 20 74 72 61 63 6b 73  20 28 34 30 2f 38 30 29  |f tracks (40/80)|
00004680  20 22 74 72 61 63 6b 73  24 0d 20 31 35 37 30 20  | "tracks$. 1570 |
00004690  49 46 20 74 72 61 63 6b  73 24 3d 22 34 30 22 20  |IF tracks$="40" |
000046a0  3f 6c 61 73 74 20 3d 20  34 30 20 45 4c 53 45 20  |?last = 40 ELSE |
000046b0  3f 6c 61 73 74 20 3d 20  38 30 0d 20 31 35 38 30  |?last = 80. 1580|
000046c0  20 50 52 49 4e 54 27 22  49 6e 73 65 72 74 20 22  | PRINT'"Insert "|
000046d0  3b 3f 6c 61 73 74 3b 22  20 74 72 61 63 6b 20 64  |;?last;" track d|
000046e0  69 73 63 20 69 6e 74 6f  20 63 75 72 72 65 6e 74  |isc into current|
000046f0  20 64 72 69 76 65 22 0d  20 31 35 39 30 20 50 52  | drive". 1590 PR|
00004700  49 4e 54 22 61 6e 64 20  70 72 65 73 73 20 53 70  |INT"and press Sp|
00004710  61 63 65 62 61 72 20 74  6f 20 70 72 69 6e 74 20  |acebar to print |
00004720  73 65 63 74 6f 72 20 49  44 73 22 0d 20 31 36 30  |sector IDs". 160|
00004730  30 20 52 45 50 45 41 54  0d 20 31 36 31 30 20 55  |0 REPEAT. 1610 U|
00004740  4e 54 49 4c 20 47 45 54  3d 33 32 0d 20 31 36 32  |NTIL GET=32. 162|
00004750  30 20 50 52 49 4e 54 27  22 50 72 65 73 73 20 53  |0 PRINT'"Press S|
00004760  68 69 66 74 20 74 6f 20  73 63 72 6f 6c 6c 22 0d  |hift to scroll".|
00004770  20 31 36 33 30 20 43 41  4c 4c 20 6d 63 6f 64 65  | 1630 CALL mcode|
00004780  0d 0d 0d 43 68 61 69 6e  20 74 68 65 20 70 72 6f  |...Chain the pro|
00004790  67 72 61 6d 20 49 44 53  44 55 4d 50 20 61 6e 64  |gram IDSDUMP and|
000047a0  2c 20 77 68 65 6e 20 70  72 6f 6d 70 74 65 64 2c  |, when prompted,|
000047b0  20 70 75 74 20 61 20 73  75 69 74 61 62 6c 65 20  | put a suitable |
000047c0  64 69 73 63 20 69 6e 20  74 68 65 0d 63 75 72 72  |disc in the.curr|
000047d0  65 6e 74 20 64 72 69 76  65 2e 20 54 68 65 6e 20  |ent drive. Then |
000047e0  70 72 65 73 73 20 74 68  65 20 73 70 61 63 65 62  |press the spaceb|
000047f0  61 72 20 74 6f 20 70 72  69 6e 74 20 74 68 65 20  |ar to print the |
00004800  73 65 63 74 6f 72 20 49  44 73 20 66 6f 72 20 65  |sector IDs for e|
00004810  76 65 72 79 0d 74 72 61  63 6b 20 6f 6e 20 74 68  |very.track on th|
00004820  65 20 64 69 73 63 2e 20  54 68 65 20 74 72 61 63  |e disc. The trac|
00004830  6b 20 6e 75 6d 62 65 72  20 69 73 20 64 69 73 70  |k number is disp|
00004840  6c 61 79 65 64 20 61 6e  64 20 74 68 65 20 6c 6f  |layed and the lo|
00004850  67 69 63 61 6c 20 74 72  61 63 6b 0d 28 4c 54 29  |gical track.(LT)|
00004860  2c 20 68 65 61 64 20 6e  75 6d 62 65 72 20 28 48  |, head number (H|
00004870  4e 29 2c 20 6c 6f 67 69  63 61 6c 20 73 65 63 74  |N), logical sect|
00004880  6f 72 20 28 4c 53 29 20  61 6e 64 20 64 61 74 61  |or (LS) and data|
00004890  20 73 69 7a 65 20 63 6f  64 65 20 28 44 53 29 20  | size code (DS) |
000048a0  61 72 65 0d 70 72 69 6e  74 65 64 20 66 6f 72 20  |are.printed for |
000048b0  65 76 65 72 79 20 70 68  79 73 69 63 61 6c 20 73  |every physical s|
000048c0  65 63 74 6f 72 20 6f 6e  20 65 61 63 68 20 74 72  |ector on each tr|
000048d0  61 63 6b 2c 20 73 74 61  72 74 69 6e 67 20 77 69  |ack, starting wi|
000048e0  74 68 20 70 68 79 73 69  63 61 6c 0d 73 65 63 74  |th physical.sect|
000048f0  6f 72 20 30 2e 0d 0d 49  74 20 69 73 20 71 75 69  |or 0...It is qui|
00004900  74 65 20 69 6e 74 65 72  65 73 74 69 6e 67 20 74  |te interesting t|
00004910  6f 20 75 73 65 20 74 68  69 73 20 70 72 6f 67 72  |o use this progr|
00004920  61 6d 20 77 69 74 68 20  61 20 63 6f 70 79 2d 70  |am with a copy-p|
00004930  72 6f 74 65 63 74 65 64  20 64 69 73 63 2e 0d 59  |rotected disc..Y|
00004940  6f 75 20 77 69 6c 6c 20  61 6c 6d 6f 73 74 20 63  |ou will almost c|
00004950  65 72 74 61 69 6e 6c 79  20 66 69 6e 64 20 74 68  |ertainly find th|
00004960  61 74 20 73 6f 6d 65 20  6f 66 20 74 68 65 20 70  |at some of the p|
00004970  68 79 73 69 63 61 6c 20  61 6e 64 20 6c 6f 67 69  |hysical and logi|
00004980  63 61 6c 20 74 72 61 63  6b 0d 6e 75 6d 62 65 72  |cal track.number|
00004990  73 20 61 72 65 20 64 69  66 66 65 72 65 6e 74 20  |s are different |
000049a0  61 6e 64 20 79 6f 75 20  6d 61 79 20 61 6c 73 6f  |and you may also|
000049b0  20 66 69 6e 64 20 73 6f  6d 65 20 75 6e 65 78 70  | find some unexp|
000049c0  65 63 74 65 64 20 6c 6f  67 69 63 61 6c 20 73 65  |ected logical se|
000049d0  63 74 6f 72 0d 6e 75 6d  62 65 72 73 2e 20 46 69  |ctor.numbers. Fi|
000049e0  67 75 72 65 20 34 20 69  73 20 61 20 70 61 72 74  |gure 4 is a part|
000049f0  20 6f 66 20 74 68 65 20  6f 75 74 70 75 74 20 49  | of the output I|
00004a00  20 70 72 6f 64 75 63 65  64 20 77 69 74 68 20 74  | produced with t|
00004a10  68 65 20 34 30 20 74 72  61 63 6b 0d 73 69 6e 67  |he 40 track.sing|
00004a20  6c 65 20 64 65 6e 73 69  74 79 20 64 69 73 63 20  |le density disc |
00004a30  76 65 72 73 69 6f 6e 20  6f 66 20 74 68 65 20 67  |version of the g|
00004a40  61 6d 65 20 22 47 72 61  6e 64 20 50 72 69 78 20  |ame "Grand Prix |
00004a50  43 6f 6e 73 74 72 75 63  74 69 6f 6e 20 53 65 74  |Construction Set|
00004a60  22 2e 0d 0d 0d 20 20 20  20 20 20 20 20 20 20 20  |"....           |
00004a70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004a80  20 54 72 61 63 6b 20 20  26 30 41 0d 20 20 20 20  | Track  &0A.    |
00004a90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004aa0  20 20 20 20 20 20 20 20  2d 2d 2d 2d 2d 2d 2d 2d  |        --------|
00004ab0  2d 2d 0d 20 20 20 20 20  20 20 20 20 20 20 20 20  |--.             |
00004ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 4c 54 20  |             LT |
00004ad0  20 48 4e 20 20 4c 53 20  20 44 53 0d 20 20 20 20  | HN  LS  DS.    |
00004ae0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004af0  20 20 20 20 20 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |      ----------|
00004b00  2d 2d 2d 2d 0d 20 20 20  20 20 20 20 20 20 20 20  |----.           |
00004b10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 31  |               1|
00004b20  34 20 20 30 30 20 20 30  30 20 20 30 31 0d 20 20  |4  00  00  01.  |
00004b30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004b40  20 20 20 20 20 20 20 20  31 34 20 20 30 30 20 20  |        14  00  |
00004b50  30 31 20 20 30 31 0d 20  20 20 20 20 20 20 20 20  |01  01.         |
00004b60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004b70  20 31 34 20 20 30 30 20  20 30 32 20 20 30 31 0d  | 14  00  02  01.|
00004b80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004b90  20 20 20 20 20 20 20 20  20 20 31 34 20 20 30 30  |          14  00|
00004ba0  20 20 30 33 20 20 30 31  20 20 20 20 20 20 20 20  |  03  01        |
00004bb0  20 20 20 20 20 20 20 0d  20 20 20 20 20 20 20 20  |       .        |
00004bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004bd0  20 20 31 34 20 20 30 30  20 20 30 34 20 20 30 31  |  14  00  04  01|
00004be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004bf0  20 20 20 0d 20 20 20 20  20 20 20 20 20 20 20 20  |   .            |
00004c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 31 34  |              14|
00004c10  20 20 30 30 20 20 30 35  20 20 30 31 0d 20 20 20  |  00  05  01.   |
00004c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004c30  20 20 20 20 20 20 20 31  34 20 20 30 30 20 20 30  |       14  00  0|
00004c40  36 20 20 30 31 0d 20 20  20 20 20 20 20 20 20 20  |6  01.          |
00004c50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004c60  31 34 20 20 30 30 20 20  30 37 20 20 30 31 0d 20  |14  00  07  01. |
00004c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004c80  20 20 20 20 20 20 20 20  20 31 34 20 20 30 30 20  |         14  00 |
00004c90  20 30 38 20 20 30 31 0d  20 20 20 20 20 20 20 20  | 08  01.        |
00004ca0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004cb0  20 20 31 34 20 20 30 30  20 20 30 39 20 20 30 31  |  14  00  09  01|
00004cc0  0d 0d 0d 46 69 67 75 72  65 20 34 2e 20 50 61 72  |...Figure 4. Par|
00004cd0  74 20 6f 66 20 74 68 65  20 6f 75 74 70 75 74 20  |t of the output |
00004ce0  66 72 6f 6d 20 74 68 65  20 70 72 6f 67 72 61 6d  |from the program|
00004cf0  20 49 44 53 44 55 4d 50  0d 2d 2d 2d 2d 2d 2d 2d  | IDSDUMP.-------|
00004d00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004d20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0d  |--------------..|
00004d30  0d 59 6f 75 20 73 68 6f  75 6c 64 20 6e 6f 74 69  |.You should noti|
00004d40  63 65 20 74 68 61 74 20  70 68 79 73 69 63 61 6c  |ce that physical|
00004d50  20 74 72 61 63 6b 20 26  30 41 20 75 73 65 73 20  | track &0A uses |
00004d60  6c 6f 67 69 63 61 6c 20  74 72 61 63 6b 20 6e 75  |logical track nu|
00004d70  6d 62 65 72 20 26 31 34  0d 62 75 74 20 74 68 65  |mber &14.but the|
00004d80  20 70 68 79 73 69 63 61  6c 20 73 65 63 74 6f 72  | physical sector|
00004d90  20 6e 75 6d 62 65 72 73  2c 20 69 6e 64 69 63 61  | numbers, indica|
00004da0  74 65 64 20 62 79 20 74  68 65 20 6f 72 64 65 72  |ted by the order|
00004db0  20 6f 66 20 74 68 65 20  73 65 63 74 6f 72 73 2c  | of the sectors,|
00004dc0  0d 61 72 65 20 74 68 65  20 73 61 6d 65 20 61 73  |.are the same as|
00004dd0  20 74 68 65 20 6c 6f 67  69 63 61 6c 20 73 65 63  | the logical sec|
00004de0  74 6f 72 20 6e 75 6d 62  65 72 73 2e 20 54 68 69  |tor numbers. Thi|
00004df0  73 20 75 73 65 20 6f 66  20 64 69 66 66 65 72 65  |s use of differe|
00004e00  6e 74 20 70 68 79 73 69  63 61 6c 0d 61 6e 64 20  |nt physical.and |
00004e10  6c 6f 67 69 63 61 6c 20  74 72 61 63 6b 20 6e 75  |logical track nu|
00004e20  6d 62 65 72 73 20 69 73  20 73 75 66 66 69 63 69  |mbers is suffici|
00004e30  65 6e 74 20 74 6f 20 70  72 65 76 65 6e 74 20 74  |ent to prevent t|
00004e40  68 65 20 2a 42 41 43 4b  55 50 20 63 6f 6d 6d 61  |he *BACKUP comma|
00004e50  6e 64 0d 64 75 70 6c 69  63 61 74 69 6e 67 20 74  |nd.duplicating t|
00004e60  68 65 20 64 69 73 63 2e  20 41 73 20 69 66 20 74  |he disc. As if t|
00004e70  6f 20 6d 61 6b 65 20 73  75 72 65 20 69 74 20 63  |o make sure it c|
00004e80  61 6e 27 74 20 62 65 20  63 6f 70 69 65 64 2c 20  |an't be copied, |
00004e90  74 68 65 20 64 69 73 63  20 61 6c 73 6f 0d 75 73  |the disc also.us|
00004ea0  65 73 20 64 65 6c 65 74  65 64 20 64 61 74 61 20  |es deleted data |
00004eb0  74 6f 20 72 65 2d 69 6e  66 6f 72 63 65 20 74 68  |to re-inforce th|
00004ec0  65 20 73 61 6d 65 20 65  66 66 65 63 74 2e 20 44  |e same effect. D|
00004ed0  65 6c 65 74 65 64 20 64  61 74 61 20 6d 61 72 6b  |eleted data mark|
00004ee0  65 72 73 0d 63 61 6e 6e  6f 74 20 62 65 20 64 69  |ers.cannot be di|
00004ef0  73 70 6c 61 79 65 64 20  77 69 74 68 20 74 68 65  |splayed with the|
00004f00  20 70 72 6f 67 72 61 6d  20 49 44 53 44 55 4d 50  | program IDSDUMP|
00004f10  20 61 6e 64 20 73 6f 20  49 20 68 61 76 65 20 70  | and so I have p|
00004f20  72 6f 76 69 64 65 64 20  61 0d 70 72 6f 67 72 61  |rovided a.progra|
00004f30  6d 20 63 61 6c 6c 65 64  20 56 45 52 49 46 59 20  |m called VERIFY |
00004f40  77 68 69 63 68 20 77 69  6c 6c 20 76 65 72 69 66  |which will verif|
00004f50  79 20 63 6f 70 79 2d 70  72 6f 74 65 63 74 65 64  |y copy-protected|
00004f60  20 64 69 73 63 73 20 61  6e 64 20 69 6e 64 69 63  | discs and indic|
00004f70  61 74 65 0d 77 68 69 63  68 20 74 72 61 63 6b 73  |ate.which tracks|
00004f80  20 75 73 65 20 64 65 6c  65 74 65 64 20 64 61 74  | use deleted dat|
00004f90  61 2e 0d 0d 54 68 65 20  64 65 6c 65 74 65 64 20  |a...The deleted |
00004fa0  64 61 74 61 20 6d 61 72  6b 20 69 73 20 61 20 70  |data mark is a p|
00004fb0  61 72 74 20 6f 66 20 74  68 65 20 64 61 74 61 20  |art of the data |
00004fc0  66 69 65 6c 64 20 61 6e  64 20 63 61 6e 20 62 65  |field and can be|
00004fd0  20 72 65 61 64 20 75 73  69 6e 67 0d 74 68 65 20  | read using.the |
00004fe0  76 65 72 69 66 79 20 63  6f 6d 6d 61 6e 64 2e 20  |verify command. |
00004ff0  54 68 69 73 20 77 69 6c  6c 20 61 6c 73 6f 20 62  |This will also b|
00005000  65 20 65 78 70 6c 61 69  6e 65 64 20 69 6e 20 64  |e explained in d|
00005010  65 74 61 69 6c 20 69 6e  20 61 20 6c 61 74 65 72  |etail in a later|
00005020  0d 6d 6f 64 75 6c 65 20  62 75 74 2c 20 66 6f 72  |.module but, for|
00005030  20 6e 6f 77 2c 20 79 6f  75 20 73 68 6f 75 6c 64  | now, you should|
00005040  20 66 69 6e 64 20 69 74  20 69 6e 74 65 72 65 73  | find it interes|
00005050  74 69 6e 67 20 74 6f 20  75 73 65 20 74 68 65 20  |ting to use the |
00005060  70 72 6f 67 72 61 6d 0d  56 45 52 49 46 59 20 74  |program.VERIFY t|
00005070  6f 20 66 69 6e 64 20 74  68 65 20 64 65 6c 65 74  |o find the delet|
00005080  65 64 20 64 61 74 61 20  6f 6e 20 61 20 63 6f 70  |ed data on a cop|
00005090  79 2d 70 72 6f 74 65 63  74 65 64 20 64 69 73 63  |y-protected disc|
000050a0  2e 0d 0d 0d 20 20 20 31  30 20 52 45 4d 3a 20 56  |....   10 REM: V|
000050b0  45 52 49 46 59 0d 20 20  20 32 30 20 52 45 4d 3a  |ERIFY.   20 REM:|
000050c0  20 66 6f 72 20 63 6f 70  79 2d 70 72 6f 74 65 63  | for copy-protec|
000050d0  74 65 64 20 64 69 73 63  73 0d 20 20 20 33 30 20  |ted discs.   30 |
000050e0  6f 73 6e 65 77 6c 3d 26  46 46 45 37 0d 20 20 20  |osnewl=&FFE7.   |
000050f0  34 30 20 6f 73 77 72 63  68 3d 26 46 46 45 45 0d  |40 oswrch=&FFEE.|
00005100  20 20 20 35 30 20 6f 73  77 6f 72 64 3d 26 46 46  |   50 osword=&FF|
00005110  46 31 0d 20 20 20 36 30  20 6f 73 62 79 74 65 3d  |F1.   60 osbyte=|
00005120  26 46 46 46 34 0d 20 20  20 37 30 20 44 49 4d 20  |&FFF4.   70 DIM |
00005130  62 75 66 66 65 72 20 26  35 30 0d 20 20 20 38 30  |buffer &50.   80|
00005140  20 44 49 4d 20 6d 63 6f  64 65 20 26 35 30 30 0d  | DIM mcode &500.|
00005150  20 20 20 39 30 20 46 4f  52 20 70 61 73 73 3d 30  |   90 FOR pass=0|
00005160  20 54 4f 20 32 20 53 54  45 50 20 32 0d 20 20 31  | TO 2 STEP 2.  1|
00005170  30 30 20 50 25 3d 6d 63  6f 64 65 0d 20 20 31 31  |00 P%=mcode.  11|
00005180  30 20 5b 20 20 20 20 20  20 20 4f 50 54 20 70 61  |0 [       OPT pa|
00005190  73 73 0d 20 20 31 32 30  20 20 20 20 20 20 20 20  |ss.  120        |
000051a0  20 4a 53 52 20 6f 73 6e  65 77 6c 0d 20 20 31 33  | JSR osnewl.  13|
000051b0  30 20 2e 6d 61 69 6e 6c  6f 6f 70 0d 20 20 31 34  |0 .mainloop.  14|
000051c0  30 20 20 20 20 20 20 20  20 20 4a 53 52 20 65 73  |0         JSR es|
000051d0  63 61 70 65 20 20 20 20  5c 20 63 68 65 63 6b 20  |cape    \ check |
000051e0  65 73 63 61 70 65 20 66  6c 61 67 0d 20 20 31 35  |escape flag.  15|
000051f0  30 20 20 20 20 20 20 20  20 20 4a 53 52 20 73 65  |0         JSR se|
00005200  65 6b 20 20 20 20 20 20  5c 20 73 65 65 6b 20 70  |ek      \ seek p|
00005210  68 79 73 69 63 61 6c 20  74 72 61 63 6b 73 20 30  |hysical tracks 0|
00005220  20 2d 20 34 30 0d 20 20  31 36 30 20 20 20 20 20  | - 40.  160     |
00005230  20 20 20 20 4a 53 52 20  66 69 72 73 74 73 65 63  |    JSR firstsec|
00005240  74 6f 72 20 5c 20 72 65  61 64 20 73 65 63 74 6f  |tor \ read secto|
00005250  72 20 69 64 20 66 69 72  73 74 20 73 65 63 74 6f  |r id first secto|
00005260  72 0d 20 20 31 37 30 20  20 20 20 20 20 20 20 20  |r.  170         |
00005270  42 4e 45 20 6e 6f 74 76  65 72 69 66 79 20 5c 20  |BNE notverify \ |
00005280  69 66 20 65 72 72 6f 72  20 74 72 61 63 6b 20 6e  |if error track n|
00005290  6f 74 20 66 6f 72 6d 61  74 74 65 64 0d 20 20 31  |ot formatted.  1|
000052a0  38 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 73  |80         JSR s|
000052b0  65 63 74 6f 72 69 64 73  20 5c 20 72 65 61 64 20  |ectorids \ read |
000052c0  61 6c 6c 20 73 65 63 74  6f 72 20 69 64 73 0d 20  |all sector ids. |
000052d0  20 31 39 30 20 20 20 20  20 20 20 20 20 4a 53 52  | 190         JSR|
000052e0  20 76 65 72 69 66 79 20  20 20 20 5c 20 76 65 72  | verify    \ ver|
000052f0  69 66 79 20 61 6c 6c 20  73 65 63 74 6f 72 73 0d  |ify all sectors.|
00005300  20 20 32 30 30 20 2e 6e  6f 74 76 65 72 69 66 79  |  200 .notverify|
00005310  0d 20 20 32 31 30 20 20  20 20 20 20 20 20 20 4a  |.  210         J|
00005320  53 52 20 70 72 69 6e 74  62 79 74 65 20 5c 20 70  |SR printbyte \ p|
00005330  72 69 6e 74 20 74 72 61  63 6b 20 6e 75 6d 62 65  |rint track numbe|
00005340  72 0d 20 20 32 32 30 20  20 20 20 20 20 20 20 20  |r.  220         |
00005350  49 4e 43 20 70 68 79 73  69 63 61 6c 20 20 5c 20  |INC physical  \ |
00005360  69 6e 63 72 65 6d 65 6e  74 20 70 68 79 73 69 63  |increment physic|
00005370  61 6c 20 74 72 61 63 6b  20 6e 75 6d 62 65 72 0d  |al track number.|
00005380  20 20 32 33 30 20 20 20  20 20 20 20 20 20 4c 44  |  230         LD|
00005390  41 20 70 68 79 73 69 63  61 6c 20 20 5c 20 6c 6f  |A physical  \ lo|
000053a0  61 64 20 70 68 79 73 69  63 61 6c 20 74 72 61 63  |ad physical trac|
000053b0  6b 20 6e 75 6d 62 65 72  0d 20 20 32 34 30 20 20  |k number.  240  |
000053c0  20 20 20 20 20 20 20 43  4d 50 20 6c 61 73 74 20  |       CMP last |
000053d0  20 20 20 20 20 5c 20 61  6c 6c 20 64 6f 6e 65 3f  |     \ all done?|
000053e0  0d 20 20 32 35 30 20 20  20 20 20 20 20 20 20 42  |.  250         B|
000053f0  4e 45 20 6d 61 69 6e 6c  6f 6f 70 20 20 5c 20 69  |NE mainloop  \ i|
00005400  66 20 6e 6f 74 20 63 6f  70 79 20 6e 65 78 74 20  |f not copy next |
00005410  74 72 61 63 6b 0d 20 20  32 36 30 20 20 20 20 20  |track.  260     |
00005420  20 20 20 20 4a 53 52 20  6f 73 6e 65 77 6c 0d 20  |    JSR osnewl. |
00005430  20 32 37 30 20 20 20 20  20 20 20 20 20 52 54 53  | 270         RTS|
00005440  20 20 20 20 20 20 20 20  20 20 20 5c 20 72 65 74  |           \ ret|
00005450  75 72 6e 20 74 6f 20 42  41 53 49 43 0d 20 20 32  |urn to BASIC.  2|
00005460  38 30 20 2e 65 73 63 61  70 65 0d 20 20 32 39 30  |80 .escape.  290|
00005470  20 20 20 20 20 20 20 20  20 4c 44 41 20 26 46 46  |         LDA &FF|
00005480  20 20 20 20 20 20 20 5c  20 65 73 63 61 70 65 20  |       \ escape |
00005490  66 6c 61 67 0d 20 20 33  30 30 20 20 20 20 20 20  |flag.  300      |
000054a0  20 20 20 42 4d 49 20 70  72 65 73 73 65 64 20 20  |   BMI pressed  |
000054b0  20 5c 20 62 69 74 20 37  20 73 65 74 20 69 66 20  | \ bit 7 set if |
000054c0  70 72 65 73 73 65 64 0d  20 20 33 31 30 20 20 20  |pressed.  310   |
000054d0  20 20 20 20 20 20 52 54  53 0d 20 20 33 32 30 20  |      RTS.  320 |
000054e0  2e 70 72 65 73 73 65 64  0d 20 20 33 33 30 20 20  |.pressed.  330  |
000054f0  20 20 20 20 20 20 20 4c  44 41 20 23 26 37 45 0d  |       LDA #&7E.|
00005500  20 20 33 34 30 20 20 20  20 20 20 20 20 20 4a 53  |  340         JS|
00005510  52 20 6f 73 62 79 74 65  20 20 20 20 5c 20 61 63  |R osbyte    \ ac|
00005520  6b 6e 6f 77 6c 65 64 67  65 20 45 73 63 61 70 65  |knowledge Escape|
00005530  0d 20 20 33 35 30 20 20  20 20 20 20 20 20 20 42  |.  350         B|
00005540  52 4b 0d 20 20 33 36 30  20 20 20 20 20 20 20 20  |RK.  360        |
00005550  20 42 52 4b 0d 20 20 33  37 30 20 20 20 20 20 20  | BRK.  370      |
00005560  20 20 20 45 51 55 53 20  22 45 73 63 61 70 65 22  |   EQUS "Escape"|
00005570  0d 20 20 33 38 30 20 20  20 20 20 20 20 20 20 42  |.  380         B|
00005580  52 4b 0d 20 20 33 39 30  20 2e 73 65 65 6b 0d 20  |RK.  390 .seek. |
00005590  20 34 30 30 20 20 20 20  20 20 20 20 20 4c 44 41  | 400         LDA|
000055a0  20 70 68 79 73 69 63 61  6c 20 20 5c 20 70 68 79  | physical  \ phy|
000055b0  73 69 63 61 6c 20 74 72  61 63 6b 20 6e 75 6d 62  |sical track numb|
000055c0  65 72 0d 20 20 34 31 30  20 20 20 20 20 20 20 20  |er.  410        |
000055d0  20 53 54 41 20 73 65 65  6b 62 6c 6f 63 6b 2b 37  | STA seekblock+7|
000055e0  0d 20 20 34 32 30 20 20  20 20 20 20 20 20 20 4c  |.  420         L|
000055f0  44 41 20 23 26 37 46 0d  20 20 34 33 30 20 20 20  |DA #&7F.  430   |
00005600  20 20 20 20 20 20 4c 44  58 20 23 73 65 65 6b 62  |      LDX #seekb|
00005610  6c 6f 63 6b 20 4d 4f 44  20 32 35 36 0d 20 20 34  |lock MOD 256.  4|
00005620  34 30 20 20 20 20 20 20  20 20 20 4c 44 59 20 23  |40         LDY #|
00005630  73 65 65 6b 62 6c 6f 63  6b 20 44 49 56 20 32 35  |seekblock DIV 25|
00005640  36 0d 20 20 34 35 30 20  20 20 20 20 20 20 20 20  |6.  450         |
00005650  4a 53 52 20 6f 73 77 6f  72 64 0d 20 20 34 36 30  |JSR osword.  460|
00005660  20 20 20 20 20 20 20 20  20 4c 44 41 20 73 65 65  |         LDA see|
00005670  6b 62 6c 6f 63 6b 2b 38  20 5c 20 72 65 73 75 6c  |kblock+8 \ resul|
00005680  74 0d 20 20 34 37 30 20  20 20 20 20 20 20 20 20  |t.  470         |
00005690  42 4e 45 20 73 65 65 6b  65 72 72 6f 72 20 5c 20  |BNE seekerror \ |
000056a0  3d 20 30 20 69 66 20 4f  4b 0d 20 20 34 38 30 20  |= 0 if OK.  480 |
000056b0  20 20 20 20 20 20 20 20  52 54 53 0d 20 20 34 39  |        RTS.  49|
000056c0  30 20 2e 73 65 65 6b 65  72 72 6f 72 0d 20 20 35  |0 .seekerror.  5|
000056d0  30 30 20 20 20 20 20 20  20 20 20 42 52 4b 0d 20  |00         BRK. |
000056e0  20 35 31 30 20 20 20 20  20 20 20 20 20 42 52 4b  | 510         BRK|
000056f0  0d 20 20 35 32 30 20 20  20 20 20 20 20 20 20 45  |.  520         E|
00005700  51 55 53 20 22 53 65 65  6b 20 65 72 72 6f 72 22  |QUS "Seek error"|
00005710  0d 20 20 35 33 30 20 20  20 20 20 20 20 20 20 42  |.  530         B|
00005720  52 4b 0d 20 20 35 34 30  20 2e 66 69 72 73 74 73  |RK.  540 .firsts|
00005730  65 63 74 6f 72 0d 20 20  35 35 30 20 20 20 20 20  |ector.  550     |
00005740  20 20 20 20 4c 44 41 20  70 68 79 73 69 63 61 6c  |    LDA physical|
00005750  20 20 5c 20 70 68 79 73  69 63 61 6c 20 74 72 61  |  \ physical tra|
00005760  63 6b 20 6e 75 6d 62 65  72 0d 20 20 35 36 30 20  |ck number.  560 |
00005770  20 20 20 20 20 20 20 20  53 54 41 20 69 64 73 62  |        STA idsb|
00005780  6c 6f 63 6b 2b 37 20 5c  20 73 74 6f 72 65 20 70  |lock+7 \ store p|
00005790  68 79 73 69 63 61 6c 20  74 72 61 63 6b 0d 20 20  |hysical track.  |
000057a0  35 37 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |570         LDA |
000057b0  23 31 20 20 20 20 20 20  20 20 5c 20 6f 6e 65 20  |#1        \ one |
000057c0  73 65 63 74 6f 72 0d 20  20 35 38 30 20 20 20 20  |sector.  580    |
000057d0  20 20 20 20 20 53 54 41  20 69 64 73 62 6c 6f 63  |     STA idsbloc|
000057e0  6b 2b 39 20 5c 20 6e 75  6d 62 65 72 20 6f 66 20  |k+9 \ number of |
000057f0  69 64 73 0d 20 20 35 39  30 20 20 20 20 20 20 20  |ids.  590       |
00005800  20 20 4c 44 41 20 23 26  37 46 0d 20 20 36 30 30  |  LDA #&7F.  600|
00005810  20 20 20 20 20 20 20 20  20 4c 44 58 20 23 69 64  |         LDX #id|
00005820  73 62 6c 6f 63 6b 20 4d  4f 44 20 32 35 36 0d 20  |sblock MOD 256. |
00005830  20 36 31 30 20 20 20 20  20 20 20 20 20 4c 44 59  | 610         LDY|
00005840  20 23 69 64 73 62 6c 6f  63 6b 20 44 49 56 20 32  | #idsblock DIV 2|
00005850  35 36 0d 20 20 36 32 30  20 20 20 20 20 20 20 20  |56.  620        |
00005860  20 4a 53 52 20 6f 73 77  6f 72 64 0d 20 20 36 33  | JSR osword.  63|
00005870  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 69 64  |0         LDA id|
00005880  73 62 6c 6f 63 6b 2b 31  30 20 5c 20 3d 20 30 20  |sblock+10 \ = 0 |
00005890  69 66 20 66 6f 72 6d 61  74 74 65 64 0d 20 20 36  |if formatted.  6|
000058a0  34 30 20 20 20 20 20 20  20 20 20 52 54 53 0d 20  |40         RTS. |
000058b0  20 36 35 30 20 2e 73 65  63 74 6f 72 69 64 73 0d  | 650 .sectorids.|
000058c0  20 20 36 36 30 20 20 20  20 20 20 20 20 20 4c 44  |  660         LD|
000058d0  58 20 62 75 66 66 65 72  2b 33 20 20 5c 20 6c 6f  |X buffer+3  \ lo|
000058e0  61 64 20 64 61 74 61 20  73 69 7a 65 20 63 6f 64  |ad data size cod|
000058f0  65 0d 20 20 36 37 30 20  20 20 20 20 20 20 20 20  |e.  670         |
00005900  4c 44 41 20 73 69 7a 65  73 2c 58 20 20 20 5c 20  |LDA sizes,X   \ |
00005910  6c 6f 61 64 20 6e 75 6d  62 65 72 20 6f 66 20 73  |load number of s|
00005920  65 63 74 6f 72 73 0d 20  20 36 38 30 20 20 20 20  |ectors.  680    |
00005930  20 20 20 20 20 53 54 41  20 69 64 73 62 6c 6f 63  |     STA idsbloc|
00005940  6b 2b 39 20 5c 20 73 74  6f 72 65 20 6e 75 6d 62  |k+9 \ store numb|
00005950  65 72 20 6f 66 20 73 65  63 74 6f 72 73 0d 20 20  |er of sectors.  |
00005960  36 39 30 20 20 20 20 20  20 20 20 20 41 53 4c 20  |690         ASL |
00005970  41 20 20 20 20 20 20 20  20 20 5c 20 2a 32 0d 20  |A         \ *2. |
00005980  20 37 30 30 20 20 20 20  20 20 20 20 20 41 53 4c  | 700         ASL|
00005990  20 41 20 20 20 20 20 20  20 20 20 5c 20 2a 34 0d  | A         \ *4.|
000059a0  20 20 37 31 30 20 20 20  20 20 20 20 20 20 53 45  |  710         SE|
000059b0  43 0d 20 20 37 32 30 20  20 20 20 20 20 20 20 20  |C.  720         |
000059c0  53 42 43 20 23 34 20 20  20 20 20 20 20 20 5c 20  |SBC #4        \ |
000059d0  73 65 63 74 6f 72 73 2a  34 2d 34 0d 20 20 37 33  |sectors*4-4.  73|
000059e0  30 20 20 20 20 20 20 20  20 20 53 54 41 20 73 65  |0         STA se|
000059f0  63 74 6f 72 6e 75 6d 62  65 72 20 5c 20 73 74 6f  |ctornumber \ sto|
00005a00  72 65 20 69 6e 64 65 78  20 6f 6e 20 73 65 63 74  |re index on sect|
00005a10  6f 72 73 0d 20 20 37 34  30 20 20 20 20 20 20 20  |ors.  740       |
00005a20  20 20 54 58 41 20 20 20  20 20 20 20 20 20 20 20  |  TXA           |
00005a30  5c 20 74 72 61 6e 73 66  65 72 20 64 61 74 61 20  |\ transfer data |
00005a40  73 69 7a 65 20 63 6f 64  65 0d 20 20 37 35 30 20  |size code.  750 |
00005a50  20 20 20 20 20 20 20 20  41 53 4c 20 41 20 20 20  |        ASL A   |
00005a60  20 20 20 20 20 20 5c 20  2a 32 0d 20 20 37 36 30  |      \ *2.  760|
00005a70  20 20 20 20 20 20 20 20  20 41 53 4c 20 41 20 20  |         ASL A  |
00005a80  20 20 20 20 20 20 20 5c  20 2a 34 0d 20 20 37 37  |       \ *4.  77|
00005a90  30 20 20 20 20 20 20 20  20 20 41 53 4c 20 41 20  |0         ASL A |
00005aa0  20 20 20 20 20 20 20 20  5c 20 2a 38 0d 20 20 37  |        \ *8.  7|
00005ab0  38 30 20 20 20 20 20 20  20 20 20 41 53 4c 20 41  |80         ASL A|
00005ac0  20 20 20 20 20 20 20 20  20 5c 20 2a 31 36 0d 20  |         \ *16. |
00005ad0  20 37 39 30 20 20 20 20  20 20 20 20 20 41 53 4c  | 790         ASL|
00005ae0  20 41 20 20 20 20 20 20  20 20 20 5c 20 2a 33 32  | A         \ *32|
00005af0  0d 20 20 38 30 30 20 20  20 20 20 20 20 20 20 4f  |.  800         O|
00005b00  52 41 20 69 64 73 62 6c  6f 63 6b 2b 39 20 5c 20  |RA idsblock+9 \ |
00005b10  61 64 64 20 6e 75 6d 62  65 72 20 6f 66 20 73 65  |add number of se|
00005b20  63 74 6f 72 73 0d 20 20  38 31 30 20 20 20 20 20  |ctors.  810     |
00005b30  20 20 20 20 53 54 41 20  76 65 72 62 6c 6f 63 6b  |    STA verblock|
00005b40  2b 39 20 5c 20 73 74 6f  72 65 20 66 6f 72 20 76  |+9 \ store for v|
00005b50  65 72 69 66 79 0d 20 20  38 32 30 20 20 20 20 20  |erify.  820     |
00005b60  20 20 20 20 4c 44 41 20  23 26 37 46 0d 20 20 38  |    LDA #&7F.  8|
00005b70  33 30 20 20 20 20 20 20  20 20 20 4c 44 58 20 23  |30         LDX #|
00005b80  69 64 73 62 6c 6f 63 6b  20 4d 4f 44 20 32 35 36  |idsblock MOD 256|
00005b90  0d 20 20 38 34 30 20 20  20 20 20 20 20 20 20 4c  |.  840         L|
00005ba0  44 59 20 23 69 64 73 62  6c 6f 63 6b 20 44 49 56  |DY #idsblock DIV|
00005bb0  20 32 35 36 0d 20 20 38  35 30 20 20 20 20 20 20  | 256.  850      |
00005bc0  20 20 20 4a 53 52 20 6f  73 77 6f 72 64 0d 20 20  |   JSR osword.  |
00005bd0  38 36 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |860         LDA |
00005be0  69 64 73 62 6c 6f 63 6b  2b 31 30 20 5c 20 72 65  |idsblock+10 \ re|
00005bf0  73 75 6c 74 0d 20 20 38  37 30 20 20 20 20 20 20  |sult.  870      |
00005c00  20 20 20 42 4e 45 20 69  64 73 65 72 72 6f 72 20  |   BNE idserror |
00005c10  20 5c 20 3d 20 30 20 69  66 20 4f 4b 0d 20 20 38  | \ = 0 if OK.  8|
00005c20  38 30 20 20 20 20 20 20  20 20 20 52 54 53 0d 20  |80         RTS. |
00005c30  20 38 39 30 20 2e 69 64  73 65 72 72 6f 72 0d 20  | 890 .idserror. |
00005c40  20 39 30 30 20 20 20 20  20 20 20 20 20 42 52 4b  | 900         BRK|
00005c50  0d 20 20 39 31 30 20 20  20 20 20 20 20 20 20 42  |.  910         B|
00005c60  52 4b 0d 20 20 39 32 30  20 20 20 20 20 20 20 20  |RK.  920        |
00005c70  20 45 51 55 53 20 22 53  65 63 74 6f 72 20 49 44  | EQUS "Sector ID|
00005c80  20 45 72 72 6f 72 22 0d  20 20 39 33 30 20 20 20  | Error".  930   |
00005c90  20 20 20 20 20 20 42 52  4b 0d 20 20 39 34 30 20  |      BRK.  940 |
00005ca0  2e 76 65 72 69 66 79 0d  20 20 39 35 30 20 20 20  |.verify.  950   |
00005cb0  20 20 20 20 20 20 4c 44  58 20 73 65 63 74 6f 72  |      LDX sector|
00005cc0  6e 75 6d 62 65 72 20 5c  20 6c 6f 61 64 20 69 6e  |number \ load in|
00005cd0  64 65 78 20 6f 6e 20 74  61 62 6c 65 0d 20 20 39  |dex on table.  9|
00005ce0  36 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 62  |60         LDA b|
00005cf0  75 66 66 65 72 2b 32 2c  58 20 5c 20 6c 6f 61 64  |uffer+2,X \ load|
00005d00  20 6c 6f 67 69 63 61 6c  20 73 65 63 74 6f 72 20  | logical sector |
00005d10  6e 75 6d 62 65 72 0d 20  20 39 37 30 20 20 20 20  |number.  970    |
00005d20  20 20 20 20 20 53 54 41  20 76 65 72 62 6c 6f 63  |     STA verbloc|
00005d30  6b 2b 38 20 5c 20 73 74  6f 72 65 20 66 6f 72 20  |k+8 \ store for |
00005d40  76 65 72 69 66 79 0d 20  20 39 38 30 20 2e 6c 6f  |verify.  980 .lo|
00005d50  77 65 73 74 0d 20 20 39  39 30 20 20 20 20 20 20  |west.  990      |
00005d60  20 20 20 44 45 58 0d 20  31 30 30 30 20 20 20 20  |   DEX. 1000    |
00005d70  20 20 20 20 20 44 45 58  0d 20 31 30 31 30 20 20  |     DEX. 1010  |
00005d80  20 20 20 20 20 20 20 44  45 58 0d 20 31 30 32 30  |       DEX. 1020|
00005d90  20 20 20 20 20 20 20 20  20 44 45 58 0d 20 31 30  |         DEX. 10|
00005da0  33 30 20 20 20 20 20 20  20 20 20 42 4d 49 20 66  |30         BMI f|
00005db0  69 6e 69 73 68 65 64 0d  20 31 30 34 30 20 20 20  |inished. 1040   |
00005dc0  20 20 20 20 20 20 4c 44  41 20 62 75 66 66 65 72  |      LDA buffer|
00005dd0  2b 32 2c 58 20 5c 20 6c  6f 61 64 20 6c 6f 67 69  |+2,X \ load logi|
00005de0  63 61 6c 20 73 65 63 74  6f 72 20 6e 75 6d 62 65  |cal sector numbe|
00005df0  72 0d 20 31 30 35 30 20  20 20 20 20 20 20 20 20  |r. 1050         |
00005e00  43 4d 50 20 76 65 72 62  6c 6f 63 6b 2b 38 20 5c  |CMP verblock+8 \|
00005e10  20 69 73 20 69 74 20 6c  6f 77 65 72 20 74 68 61  | is it lower tha|
00005e20  6e 20 74 68 65 20 6c 61  73 74 20 6f 6e 65 3f 0d  |n the last one?.|
00005e30  20 31 30 36 30 20 20 20  20 20 20 20 20 20 42 43  | 1060         BC|
00005e40  53 20 6c 6f 77 65 73 74  20 20 20 20 5c 20 62 72  |S lowest    \ br|
00005e50  61 6e 63 68 20 69 66 20  6e 6f 74 20 6c 6f 77 65  |anch if not lowe|
00005e60  73 74 20 73 65 63 74 6f  72 0d 20 31 30 37 30 20  |st sector. 1070 |
00005e70  20 20 20 20 20 20 20 20  53 54 41 20 76 65 72 62  |        STA verb|
00005e80  6c 6f 63 6b 2b 38 20 5c  20 73 74 6f 72 65 20 69  |lock+8 \ store i|
00005e90  66 20 69 74 20 69 73 20  6c 6f 77 65 72 0d 20 31  |f it is lower. 1|
00005ea0  30 38 30 20 20 20 20 20  20 20 20 20 42 43 43 20  |080         BCC |
00005eb0  6c 6f 77 65 73 74 20 20  20 20 5c 20 6c 6f 6f 6b  |lowest    \ look|
00005ec0  20 66 6f 72 20 6c 6f 77  65 72 20 73 65 63 74 6f  | for lower secto|
00005ed0  72 20 6e 75 6d 62 65 72  0d 20 31 30 39 30 20 2e  |r number. 1090 .|
00005ee0  66 69 6e 69 73 68 65 64  0d 20 31 31 30 30 20 20  |finished. 1100  |
00005ef0  20 20 20 20 20 20 20 4c  44 41 20 62 75 66 66 65  |       LDA buffe|
00005f00  72 20 20 20 20 5c 20 6c  6f 61 64 20 6c 6f 67 69  |r    \ load logi|
00005f10  63 61 6c 20 74 72 61 63  6b 20 6e 75 6d 62 65 72  |cal track number|
00005f20  0d 20 31 31 31 30 20 20  20 20 20 20 20 20 20 53  |. 1110         S|
00005f30  54 41 20 76 65 72 62 6c  6f 63 6b 2b 37 20 5c 20  |TA verblock+7 \ |
00005f40  61 6e 64 20 73 74 6f 72  65 20 66 6f 72 20 76 65  |and store for ve|
00005f50  72 69 66 79 0d 20 31 31  32 30 20 20 20 20 20 20  |rify. 1120      |
00005f60  20 20 20 4a 53 52 20 72  65 67 69 73 74 65 72 20  |   JSR register |
00005f70  20 5c 20 77 72 69 74 65  20 74 72 61 63 6b 20 72  | \ write track r|
00005f80  65 67 69 73 74 65 72 0d  20 31 31 33 30 20 20 20  |egister. 1130   |
00005f90  20 20 20 20 20 20 4c 44  41 20 23 26 37 46 0d 20  |      LDA #&7F. |
00005fa0  31 31 34 30 20 20 20 20  20 20 20 20 20 4c 44 58  |1140         LDX|
00005fb0  20 23 76 65 72 62 6c 6f  63 6b 20 4d 4f 44 20 32  | #verblock MOD 2|
00005fc0  35 36 0d 20 31 31 35 30  20 20 20 20 20 20 20 20  |56. 1150        |
00005fd0  20 4c 44 59 20 23 76 65  72 62 6c 6f 63 6b 20 44  | LDY #verblock D|
00005fe0  49 56 20 32 35 36 0d 20  31 31 36 30 20 20 20 20  |IV 256. 1160    |
00005ff0  20 20 20 20 20 4a 53 52  20 6f 73 77 6f 72 64 0d  |     JSR osword.|
00006000  20 31 31 37 30 20 20 20  20 20 20 20 20 20 4c 44  | 1170         LD|
00006010  41 20 70 68 79 73 69 63  61 6c 20 20 5c 20 70 68  |A physical  \ ph|
00006020  79 73 69 63 61 6c 20 74  72 61 63 6b 20 6e 75 6d  |ysical track num|
00006030  62 65 72 0d 20 31 31 38  30 20 20 20 20 20 20 20  |ber. 1180       |
00006040  20 20 4a 53 52 20 72 65  67 69 73 74 65 72 20 20  |  JSR register  |
00006050  5c 20 77 72 69 74 65 20  74 72 61 63 6b 20 72 65  |\ write track re|
00006060  67 69 73 74 65 72 0d 20  31 31 39 30 20 20 20 20  |gister. 1190    |
00006070  20 20 20 20 20 4c 44 41  20 76 65 72 62 6c 6f 63  |     LDA verbloc|
00006080  6b 2b 31 30 0d 20 31 32  30 30 20 20 20 20 20 20  |k+10. 1200      |
00006090  20 20 20 41 4e 44 20 23  26 31 45 20 20 20 20 20  |   AND #&1E     |
000060a0  20 5c 20 69 73 6f 6c 61  74 65 20 65 72 72 6f 72  | \ isolate error|
000060b0  20 62 69 74 73 0d 20 31  32 31 30 20 20 20 20 20  | bits. 1210     |
000060c0  20 20 20 20 42 4e 45 20  76 65 72 65 72 72 6f 72  |    BNE vererror|
000060d0  0d 20 31 32 32 30 20 20  20 20 20 20 20 20 20 52  |. 1220         R|
000060e0  54 53 0d 20 31 32 33 30  20 2e 76 65 72 65 72 72  |TS. 1230 .vererr|
000060f0  6f 72 0d 20 31 32 34 30  20 20 20 20 20 20 20 20  |or. 1240        |
00006100  20 42 52 4b 0d 20 31 32  35 30 20 20 20 20 20 20  | BRK. 1250      |
00006110  20 20 20 42 52 4b 0d 20  31 32 36 30 20 20 20 20  |   BRK. 1260    |
00006120  20 20 20 20 20 45 51 55  53 20 22 56 65 72 69 66  |     EQUS "Verif|
00006130  79 20 65 72 72 6f 72 22  0d 20 31 32 37 30 20 20  |y error". 1270  |
00006140  20 20 20 20 20 20 20 42  52 4b 0d 20 31 32 38 30  |       BRK. 1280|
00006150  20 2e 72 65 67 69 73 74  65 72 0d 20 31 32 39 30  | .register. 1290|
00006160  20 20 20 20 20 20 20 20  20 53 54 41 20 72 65 67  |         STA reg|
00006170  62 6c 6f 63 6b 2b 38 20  5c 20 76 61 6c 75 65 20  |block+8 \ value |
00006180  74 6f 20 70 75 74 20 69  6e 20 72 65 67 69 73 74  |to put in regist|
00006190  65 72 0d 20 31 33 30 30  20 20 20 20 20 20 20 20  |er. 1300        |
000061a0  20 4c 44 41 20 23 26 37  46 0d 20 31 33 31 30 20  | LDA #&7F. 1310 |
000061b0  20 20 20 20 20 20 20 20  4c 44 58 20 23 72 65 67  |        LDX #reg|
000061c0  62 6c 6f 63 6b 20 4d 4f  44 20 32 35 36 0d 20 31  |block MOD 256. 1|
000061d0  33 32 30 20 20 20 20 20  20 20 20 20 4c 44 59 20  |320         LDY |
000061e0  23 72 65 67 62 6c 6f 63  6b 20 44 49 56 20 32 35  |#regblock DIV 25|
000061f0  36 0d 20 31 33 33 30 20  20 20 20 20 20 20 20 20  |6. 1330         |
00006200  4a 53 52 20 6f 73 77 6f  72 64 0d 20 31 33 34 30  |JSR osword. 1340|
00006210  20 20 20 20 20 20 20 20  20 4c 44 41 20 72 65 67  |         LDA reg|
00006220  62 6c 6f 63 6b 2b 39 0d  20 31 33 35 30 20 20 20  |block+9. 1350   |
00006230  20 20 20 20 20 20 42 4e  45 20 72 65 67 65 72 72  |      BNE regerr|
00006240  6f 72 0d 20 31 33 36 30  20 20 20 20 20 20 20 20  |or. 1360        |
00006250  20 52 54 53 0d 20 31 33  37 30 20 2e 72 65 67 65  | RTS. 1370 .rege|
00006260  72 72 6f 72 0d 20 31 33  38 30 20 20 20 20 20 20  |rror. 1380      |
00006270  20 20 20 42 52 4b 0d 20  31 33 39 30 20 20 20 20  |   BRK. 1390    |
00006280  20 20 20 20 20 42 52 4b  0d 20 31 34 30 30 20 20  |     BRK. 1400  |
00006290  20 20 20 20 20 20 20 45  51 55 53 20 22 53 70 65  |       EQUS "Spe|
000062a0  63 69 61 6c 20 72 65 67  69 73 74 65 72 20 65 72  |cial register er|
000062b0  72 6f 72 22 0d 20 31 34  31 30 20 20 20 20 20 20  |ror". 1410      |
000062c0  20 20 20 42 52 4b 0d 20  31 34 32 30 20 2e 70 72  |   BRK. 1420 .pr|
000062d0  69 6e 74 62 79 74 65 0d  20 31 34 33 30 20 20 20  |intbyte. 1430   |
000062e0  20 20 20 20 20 20 4c 44  41 20 70 68 79 73 69 63  |      LDA physic|
000062f0  61 6c 20 20 5c 20 70 72  69 6e 74 20 70 68 79 73  |al  \ print phys|
00006300  69 63 61 6c 20 74 72 61  63 6b 20 6e 75 6d 62 65  |ical track numbe|
00006310  72 0d 20 31 34 34 30 20  20 20 20 20 20 20 20 20  |r. 1440         |
00006320  50 48 41 0d 20 31 34 35  30 20 20 20 20 20 20 20  |PHA. 1450       |
00006330  20 20 4c 53 52 20 41 0d  20 31 34 36 30 20 20 20  |  LSR A. 1460   |
00006340  20 20 20 20 20 20 4c 53  52 20 41 0d 20 31 34 37  |      LSR A. 147|
00006350  30 20 20 20 20 20 20 20  20 20 4c 53 52 20 41 0d  |0         LSR A.|
00006360  20 31 34 38 30 20 20 20  20 20 20 20 20 20 4c 53  | 1480         LS|
00006370  52 20 41 0d 20 31 34 39  30 20 20 20 20 20 20 20  |R A. 1490       |
00006380  20 20 4a 53 52 20 6e 79  62 62 6c 65 20 20 20 20  |  JSR nybble    |
00006390  5c 20 70 72 69 6e 74 20  4d 53 20 6e 79 62 62 6c  |\ print MS nybbl|
000063a0  65 0d 20 31 35 30 30 20  20 20 20 20 20 20 20 20  |e. 1500         |
000063b0  50 4c 41 0d 20 31 35 31  30 20 20 20 20 20 20 20  |PLA. 1510       |
000063c0  20 20 4a 53 52 20 6e 79  62 62 6c 65 20 20 20 20  |  JSR nybble    |
000063d0  5c 20 70 72 69 6e 74 20  4c 53 20 6e 79 62 62 6c  |\ print LS nybbl|
000063e0  65 0d 20 31 35 32 30 20  20 20 20 20 20 20 20 20  |e. 1520         |
000063f0  4c 44 41 20 23 41 53 43  28 22 20 22 29 0d 20 31  |LDA #ASC(" "). 1|
00006400  35 33 30 20 20 20 20 20  20 20 20 20 4c 44 58 20  |530         LDX |
00006410  76 65 72 62 6c 6f 63 6b  2b 31 30 20 5c 20 6c 6f  |verblock+10 \ lo|
00006420  61 64 20 64 65 6c 65 74  65 64 20 64 61 74 61 20  |ad deleted data |
00006430  66 6c 61 67 0d 20 31 35  34 30 20 20 20 20 20 20  |flag. 1540      |
00006440  20 20 20 42 45 51 20 73  70 61 63 65 20 20 20 20  |   BEQ space    |
00006450  20 5c 20 69 66 20 3d 30  20 6e 6f 74 20 64 65 6c  | \ if =0 not del|
00006460  65 74 65 64 0d 20 31 35  35 30 20 20 20 20 20 20  |eted. 1550      |
00006470  20 20 20 4c 44 41 20 23  41 53 43 28 22 64 22 29  |   LDA #ASC("d")|
00006480  20 5c 20 64 65 6c 65 74  65 64 20 64 61 74 61 20  | \ deleted data |
00006490  6d 61 72 6b 0d 20 31 35  36 30 20 2e 73 70 61 63  |mark. 1560 .spac|
000064a0  65 0d 20 31 35 37 30 20  20 20 20 20 20 20 20 20  |e. 1570         |
000064b0  4a 53 52 20 6f 73 77 72  63 68 20 20 20 20 5c 20  |JSR oswrch    \ |
000064c0  70 72 69 6e 74 20 73 70  61 63 65 20 6f 72 20 22  |print space or "|
000064d0  64 22 0d 20 31 35 38 30  20 20 20 20 20 20 20 20  |d". 1580        |
000064e0  20 4c 44 41 20 23 41 53  43 28 22 20 22 29 0d 20  | LDA #ASC(" "). |
000064f0  31 35 39 30 20 20 20 20  20 20 20 20 20 4a 4d 50  |1590         JMP|
00006500  20 6f 73 77 72 63 68 20  20 20 20 5c 20 70 72 69  | oswrch    \ pri|
00006510  6e 74 20 73 70 61 63 65  0d 20 31 36 30 30 20 2e  |nt space. 1600 .|
00006520  6e 79 62 62 6c 65 0d 20  31 36 31 30 20 20 20 20  |nybble. 1610    |
00006530  20 20 20 20 20 41 4e 44  20 23 26 30 46 0d 20 31  |     AND #&0F. 1|
00006540  36 32 30 20 20 20 20 20  20 20 20 20 53 45 44 0d  |620         SED.|
00006550  20 31 36 33 30 20 20 20  20 20 20 20 20 20 43 4c  | 1630         CL|
00006560  43 0d 20 31 36 34 30 20  20 20 20 20 20 20 20 20  |C. 1640         |
00006570  41 44 43 20 23 26 39 30  0d 20 31 36 35 30 20 20  |ADC #&90. 1650  |
00006580  20 20 20 20 20 20 20 41  44 43 20 23 26 34 30 0d  |       ADC #&40.|
00006590  20 31 36 36 30 20 20 20  20 20 20 20 20 20 43 4c  | 1660         CL|
000065a0  44 0d 20 31 36 37 30 20  20 20 20 20 20 20 20 20  |D. 1670         |
000065b0  4a 4d 50 20 6f 73 77 72  63 68 20 20 20 20 5c 20  |JMP oswrch    \ |
000065c0  70 72 69 6e 74 20 6e 79  62 62 6c 65 20 61 6e 64  |print nybble and|
000065d0  20 72 65 74 75 72 6e 0d  20 31 36 38 30 20 2e 73  | return. 1680 .s|
000065e0  65 65 6b 62 6c 6f 63 6b  0d 20 31 36 39 30 20 20  |eekblock. 1690  |
000065f0  20 20 20 20 20 20 20 45  51 55 42 20 26 46 46 20  |       EQUB &FF |
00006600  20 20 20 20 20 5c 20 63  75 72 72 65 6e 74 20 64  |     \ current d|
00006610  72 69 76 65 0d 20 31 37  30 30 20 20 20 20 20 20  |rive. 1700      |
00006620  20 20 20 45 51 55 44 20  26 30 30 20 20 20 20 20  |   EQUD &00     |
00006630  20 5c 20 64 6f 65 73 20  6e 6f 74 20 6d 61 74 74  | \ does not matt|
00006640  65 72 0d 20 31 37 31 30  20 20 20 20 20 20 20 20  |er. 1710        |
00006650  20 45 51 55 44 20 26 30  30 30 30 36 39 30 31 20  | EQUD &00006901 |
00006660  5c 20 73 65 65 6b 2c 20  31 20 70 61 72 61 6d 65  |\ seek, 1 parame|
00006670  74 65 72 0d 20 31 37 32  30 20 2e 69 64 73 62 6c  |ter. 1720 .idsbl|
00006680  6f 63 6b 0d 20 31 37 33  30 20 20 20 20 20 20 20  |ock. 1730       |
00006690  20 20 45 51 55 42 20 26  46 46 20 20 20 20 20 20  |  EQUB &FF      |
000066a0  5c 20 63 75 72 72 65 6e  74 20 64 72 69 76 65 0d  |\ current drive.|
000066b0  20 31 37 34 30 20 20 20  20 20 20 20 20 20 45 51  | 1740         EQ|
000066c0  55 44 20 62 75 66 66 65  72 20 20 20 5c 20 61 64  |UD buffer   \ ad|
000066d0  64 72 65 73 73 20 6f 66  20 62 75 66 66 65 72 0d  |dress of buffer.|
000066e0  20 31 37 35 30 20 20 20  20 20 20 20 20 20 45 51  | 1750         EQ|
000066f0  55 44 20 26 30 30 30 30  35 42 30 33 20 5c 20 72  |UD &00005B03 \ r|
00006700  65 61 64 20 73 65 63 74  6f 72 20 69 64 73 0d 20  |ead sector ids. |
00006710  31 37 36 30 20 20 20 20  20 20 20 20 20 45 51 55  |1760         EQU|
00006720  57 20 26 30 30 0d 20 31  37 37 30 20 2e 76 65 72  |W &00. 1770 .ver|
00006730  62 6c 6f 63 6b 0d 20 31  37 38 30 20 20 20 20 20  |block. 1780     |
00006740  20 20 20 20 45 51 55 42  20 26 46 46 20 20 20 20  |    EQUB &FF    |
00006750  20 20 5c 20 63 75 72 72  65 6e 74 20 64 72 69 76  |  \ current driv|
00006760  65 0d 20 31 37 39 30 20  20 20 20 20 20 20 20 20  |e. 1790         |
00006770  45 51 55 44 20 26 30 30  20 20 20 20 20 20 5c 20  |EQUD &00      \ |
00006780  64 6f 65 73 20 6e 6f 74  20 6d 61 74 74 65 72 0d  |does not matter.|
00006790  20 31 38 30 30 20 20 20  20 20 20 20 20 20 45 51  | 1800         EQ|
000067a0  55 44 20 26 30 30 30 30  35 46 30 33 20 5c 20 76  |UD &00005F03 \ v|
000067b0  65 72 69 66 79 20 6d 75  6c 74 69 20 73 65 63 74  |erify multi sect|
000067c0  6f 72 0d 20 31 38 31 30  20 20 20 20 20 20 20 20  |or. 1810        |
000067d0  20 45 51 55 57 20 26 30  30 0d 20 31 38 32 30 20  | EQUW &00. 1820 |
000067e0  2e 72 65 67 62 6c 6f 63  6b 0d 20 31 38 33 30 20  |.regblock. 1830 |
000067f0  20 20 20 20 20 20 20 20  45 51 55 42 20 26 46 46  |        EQUB &FF|
00006800  20 20 20 20 20 20 5c 20  63 75 72 72 65 6e 74 20  |      \ current |
00006810  64 72 69 76 65 0d 20 31  38 34 30 20 20 20 20 20  |drive. 1840     |
00006820  20 20 20 20 45 51 55 44  20 26 30 30 20 20 20 20  |    EQUD &00    |
00006830  20 20 5c 20 64 6f 65 73  20 6e 6f 74 20 6d 61 74  |  \ does not mat|
00006840  74 65 72 0d 20 31 38 35  30 20 20 20 20 20 20 20  |ter. 1850       |
00006850  20 20 45 51 55 44 20 26  30 30 31 32 37 41 30 32  |  EQUD &00127A02|
00006860  0d 20 31 38 36 30 20 20  20 20 20 20 20 20 20 45  |. 1860         E|
00006870  51 55 42 20 26 30 30 20  20 20 20 20 20 5c 20 72  |QUB &00      \ r|
00006880  65 73 75 6c 74 0d 20 31  38 37 30 20 2e 73 69 7a  |esult. 1870 .siz|
00006890  65 73 0d 20 31 38 38 30  20 20 20 20 20 20 20 20  |es. 1880        |
000068a0  20 45 51 55 42 20 31 38  0d 20 31 38 39 30 20 20  | EQUB 18. 1890  |
000068b0  20 20 20 20 20 20 20 45  51 55 42 20 31 30 0d 20  |       EQUB 10. |
000068c0  31 39 30 30 20 20 20 20  20 20 20 20 20 45 51 55  |1900         EQU|
000068d0  42 20 35 0d 20 31 39 31  30 20 20 20 20 20 20 20  |B 5. 1910       |
000068e0  20 20 45 51 55 42 20 32  0d 20 31 39 32 30 20 20  |  EQUB 2. 1920  |
000068f0  20 20 20 20 20 20 20 45  51 55 42 20 31 0d 20 31  |       EQUB 1. 1|
00006900  39 33 30 20 2e 70 68 79  73 69 63 61 6c 0d 20 31  |930 .physical. 1|
00006910  39 34 30 20 20 20 20 20  20 20 20 20 45 51 55 42  |940         EQUB|
00006920  20 26 30 30 0d 20 31 39  35 30 20 2e 73 65 63 74  | &00. 1950 .sect|
00006930  6f 72 6e 75 6d 62 65 72  0d 20 31 39 36 30 20 20  |ornumber. 1960  |
00006940  20 20 20 20 20 20 20 45  51 55 42 20 26 30 30 0d  |       EQUB &00.|
00006950  20 31 39 37 30 20 2e 6c  61 73 74 0d 20 31 39 38  | 1970 .last. 198|
00006960  30 20 20 20 20 20 20 20  20 20 45 51 55 42 20 26  |0         EQUB &|
00006970  30 30 0d 20 31 39 39 30  20 5d 0d 20 32 30 30 30  |00. 1990 ]. 2000|
00006980  20 4e 45 58 54 0d 20 32  30 31 30 20 49 4e 50 55  | NEXT. 2010 INPU|
00006990  54 27 22 4e 75 6d 62 65  72 20 6f 66 20 74 72 61  |T'"Number of tra|
000069a0  63 6b 73 20 28 34 30 2f  38 30 29 20 22 74 72 61  |cks (40/80) "tra|
000069b0  63 6b 73 24 0d 20 32 30  32 30 20 49 46 20 74 72  |cks$. 2020 IF tr|
000069c0  61 63 6b 73 24 3d 22 34  30 22 20 3f 6c 61 73 74  |acks$="40" ?last|
000069d0  20 3d 20 34 30 20 45 4c  53 45 20 3f 6c 61 73 74  | = 40 ELSE ?last|
000069e0  20 3d 20 38 30 0d 20 32  30 33 30 20 50 52 49 4e  | = 80. 2030 PRIN|
000069f0  54 22 49 6e 73 65 72 74  20 22 3b 3f 6c 61 73 74  |T"Insert ";?last|
00006a00  3b 22 20 74 72 61 63 6b  20 64 69 73 63 20 69 6e  |;" track disc in|
00006a10  74 6f 20 63 75 72 72 65  6e 74 20 64 72 69 76 65  |to current drive|
00006a20  22 0d 20 32 30 34 30 20  50 52 49 4e 54 22 61 6e  |". 2040 PRINT"an|
00006a30  64 20 70 72 65 73 73 20  74 68 65 20 53 70 61 63  |d press the Spac|
00006a40  65 62 61 72 20 74 6f 20  76 65 72 69 66 79 22 0d  |ebar to verify".|
00006a50  20 32 30 35 30 20 52 45  50 45 41 54 0d 20 32 30  | 2050 REPEAT. 20|
00006a60  36 30 20 55 4e 54 49 4c  20 47 45 54 3d 33 32 0d  |60 UNTIL GET=32.|
00006a70  20 32 30 37 30 20 43 41  4c 4c 20 6d 63 6f 64 65  | 2070 CALL mcode|
00006a80  0d 0d 0d 54 68 65 20 70  72 6f 67 72 61 6d 20 69  |...The program i|
00006a90  73 20 63 6f 6d 6d 65 6e  74 65 64 20 74 6f 20 65  |s commented to e|
00006aa0  78 70 6c 61 69 6e 20 68  6f 77 20 69 74 20 77 6f  |xplain how it wo|
00006ab0  72 6b 73 20 61 6e 64 20  79 6f 75 20 6d 69 67 68  |rks and you migh|
00006ac0  74 20 6c 69 6b 65 20 74  6f 0d 63 6f 6d 65 20 62  |t like to.come b|
00006ad0  61 63 6b 20 74 6f 20 69  74 20 61 66 74 65 72 20  |ack to it after |
00006ae0  72 65 61 64 69 6e 67 20  6d 6f 64 75 6c 65 20 32  |reading module 2|
00006af0  2e 20 57 68 65 6e 20 74  68 65 20 70 72 6f 67 72  |. When the progr|
00006b00  61 6d 20 56 45 52 49 46  59 20 77 61 73 20 75 73  |am VERIFY was us|
00006b10  65 64 0d 6f 6e 20 74 68  65 20 22 47 72 61 6e 64  |ed.on the "Grand|
00006b20  20 50 72 69 78 20 43 6f  6e 73 74 72 75 63 74 69  | Prix Constructi|
00006b30  6f 6e 20 53 65 74 22 20  64 69 73 63 20 74 68 65  |on Set" disc the|
00006b40  20 6f 75 74 70 75 74 20  73 68 6f 77 6e 20 69 6e  | output shown in|
00006b50  20 66 69 67 75 72 65 20  35 20 77 61 73 0d 70 72  | figure 5 was.pr|
00006b60  6f 64 75 63 65 64 2e 0d  0d 0d 20 20 20 20 20 20  |oduced....      |
00006b70  20 20 20 20 20 3e 4c 4f  2e 22 56 45 52 49 46 59  |     >LO."VERIFY|
00006b80  22 0d 20 20 20 20 20 20  20 20 20 20 20 3e 52 55  |".           >RU|
00006b90  4e 20 20 20 20 20 20 20  20 20 0d 0d 20 20 20 20  |N         ..    |
00006ba0  20 20 20 20 20 20 20 4e  75 6d 62 65 72 20 6f 66  |       Number of|
00006bb0  20 74 72 61 63 6b 73 20  28 34 30 2f 38 30 29 20  | tracks (40/80) |
00006bc0  34 30 0d 20 20 20 20 20  20 20 20 20 20 20 49 6e  |40.           In|
00006bd0  73 65 72 74 20 34 30 20  74 72 61 63 6b 20 64 69  |sert 40 track di|
00006be0  73 63 20 69 6e 74 6f 20  63 75 72 72 65 6e 74 20  |sc into current |
00006bf0  64 72 69 76 65 0d 20 20  20 20 20 20 20 20 20 20  |drive.          |
00006c00  20 61 6e 64 20 70 72 65  73 73 20 74 68 65 20 53  | and press the S|
00006c10  70 61 63 65 62 61 72 20  74 6f 20 76 65 72 69 66  |pacebar to verif|
00006c20  79 0d 0d 20 20 20 20 20  20 20 20 20 20 20 30 30  |y..           00|
00006c30  20 20 30 31 20 20 30 32  20 20 30 33 20 20 30 34  |  01  02  03  04|
00006c40  20 20 30 35 20 20 30 36  20 20 30 37 20 20 30 38  |  05  06  07  08|
00006c50  20 20 30 39 0d 20 20 20  20 20 20 20 20 20 20 20  |  09.           |
00006c60  30 41 20 20 30 42 20 20  30 43 20 20 30 44 64 20  |0A  0B  0C  0Dd |
00006c70  30 45 64 20 30 46 64 20  31 30 64 20 31 31 64 20  |0Ed 0Fd 10d 11d |
00006c80  31 32 20 20 31 33 0d 20  20 20 20 20 20 20 20 20  |12  13.         |
00006c90  20 20 31 34 20 20 31 35  20 20 31 36 20 20 31 37  |  14  15  16  17|
00006ca0  20 20 31 38 20 20 31 39  64 20 31 41 64 20 31 42  |  18  19d 1Ad 1B|
00006cb0  64 20 31 43 64 20 31 44  64 0d 20 20 20 20 20 20  |d 1Cd 1Dd.      |
00006cc0  20 20 20 20 20 31 45 64  20 31 46 64 20 32 30 64  |     1Ed 1Fd 20d|
00006cd0  20 32 31 64 20 32 32 64  20 32 33 20 20 32 34 20  | 21d 22d 23  24 |
00006ce0  20 32 35 20 20 32 36 20  20 32 37 0d 0d 20 20 20  | 25  26  27..   |
00006cf0  20 20 20 20 20 20 20 20  3e 0d 0d 0d 46 69 67 75  |        >...Figu|
00006d00  72 65 20 35 2e 20 54 68  65 20 6f 75 74 70 75 74  |re 5. The output|
00006d10  20 66 72 6f 6d 20 74 68  65 20 70 72 6f 67 72 61  | from the progra|
00006d20  6d 20 56 45 52 49 46 59  0d 2d 2d 2d 2d 2d 2d 2d  |m VERIFY.-------|
00006d30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006d50  2d 2d 2d 2d 2d 0d 0d 0d  54 68 65 20 6c 6f 77 65  |-----...The lowe|
00006d60  72 20 63 61 73 65 20 6c  65 74 74 65 72 20 64 20  |r case letter d |
00006d70  66 6f 6c 6c 6f 77 69 6e  67 20 74 72 61 63 6b 73  |following tracks|
00006d80  20 26 30 44 20 74 6f 20  26 31 31 20 61 6e 64 20  | &0D to &11 and |
00006d90  74 72 61 63 6b 73 20 26  31 39 20 74 6f 20 26 32  |tracks &19 to &2|
00006da0  32 0d 69 6e 64 69 63 61  74 65 73 20 74 68 61 74  |2.indicates that|
00006db0  20 74 68 65 73 65 20 74  72 61 63 6b 73 20 68 61  | these tracks ha|
00006dc0  76 65 20 64 65 6c 65 74  65 64 20 64 61 74 61 20  |ve deleted data |
00006dd0  73 74 6f 72 65 64 20 6f  6e 20 74 68 65 6d 2e 20  |stored on them. |
00006de0  54 68 65 20 67 61 6d 65  20 6f 6e 0d 74 68 69 73  |The game on.this|
00006df0  20 64 69 73 63 20 6c 6f  61 64 73 20 69 6e 20 74  | disc loads in t|
00006e00  77 6f 20 70 61 72 74 73  20 61 6e 64 20 49 20 77  |wo parts and I w|
00006e10  6f 75 6c 64 20 6e 6f 74  20 62 65 20 61 74 20 61  |ould not be at a|
00006e20  6c 6c 20 73 75 72 70 72  69 73 65 64 20 74 6f 20  |ll surprised to |
00006e30  66 69 6e 64 0d 74 68 61  74 20 74 68 65 20 74 77  |find.that the tw|
00006e40  6f 20 70 61 72 74 73 20  61 72 65 20 73 74 6f 72  |o parts are stor|
00006e50  65 64 20 6f 6e 20 74 68  65 20 74 72 61 63 6b 73  |ed on the tracks|
00006e60  20 77 69 74 68 20 64 65  6c 65 74 65 64 20 64 61  | with deleted da|
00006e70  74 61 2e 20 49 66 20 74  68 65 0d 70 72 6f 67 72  |ta. If the.progr|
00006e80  61 6d 20 56 45 52 49 46  59 20 69 73 20 75 73 65  |am VERIFY is use|
00006e90  64 20 77 69 74 68 20 61  20 73 74 61 6e 64 61 72  |d with a standar|
00006ea0  64 20 44 46 53 20 64 69  73 63 20 69 74 20 77 69  |d DFS disc it wi|
00006eb0  6c 6c 20 6e 6f 74 20 70  72 6f 64 75 63 65 20 61  |ll not produce a|
00006ec0  0d 6c 6f 77 65 72 20 63  61 73 65 20 64 20 74 6f  |.lower case d to|
00006ed0  20 69 6e 64 69 63 61 74  65 20 74 68 65 20 75 73  | indicate the us|
00006ee0  65 20 6f 66 20 74 68 65  20 64 65 6c 65 74 65 64  |e of the deleted|
00006ef0  20 64 61 74 61 20 6d 61  72 6b 65 72 2e 0d        | data marker..|
00006efe
05-08-88/T\DFS00.m0
05-08-88/T\DFS00.m1
05-08-88/T\DFS00.m2
05-08-88/T\DFS00.m4
05-08-88/T\DFS00.m5