     1541 Job Codes:

      This table contains the addresses and the assigned buffers:

         +-------+---------+----------+---------------+
         |  JOB  |  TRACK  |  SECTOR  |     BUFFER    |
         +-------+---------+----------+---------------+
         |  $00  |   $06   |   $07    |  $0300-$03FF  |
         |  $01  |   $08   |   $09    |  $0400-$04FF  |
         |  $02  |   $0A   |   $0B    |  $0500-$05FF  |
         |  $03  |   $0C   |   $0D    |  $0600-$06FF  |
         |  $04  |   $0E   |   $0F    |  $0700-$07FF  |
         |  $05  |   $10   |   $11    |   - no RAM -  |
         +-------+---------+----------+---------------+

      If a disk controller routine is to be performed in the interrupt, one
      writes the job code and the track and sector numbers of the block to be
      processed (if necessary) in the appropriate memory locations. Now the
      job code can be passed. This job code has a value greater than 127 (the
      7th bit is set). In order to wait until the job is finished, only the
      seventh bit need be tested. If this bit is cleared, the job is completed.
      The disk controller can perform the following jobs:

         +-------+---------+-------------------------------+
         |  JOB  |  NAME   |          DESCRIPTION          |
         +-------+---------+-------------------------------+
         |  $80  | READ    | Read sector                   |
         |  $90  | WRITE   | Write sector (includes $A0)   |
         |  $A0  | VERIFY  | Verify sector                 |
         |  $B0  | SEEK    | Find sector                   |
         |  $C0  | BUMP    | Bump, Find track 1            |
         |  $D0  | JUMP    | Execute program in buffer     |
         |  $E0  | EXECUTE | Execute program, first switch |
         |       |         | drive on and find track       |
         +-------+---------+-------------------------------+

      If the job ends in an error then the memory location with job command
      code is replaced with and error code. Here is a list of the error numbers:

         +------+--------------------------------+----------------------+
         | CODE | MEANING                        | DOS ERROR MESSAGE    |
         +------+--------------------------------+----------------------+
         | $01  | Everything OK                  | 00, OK               |
         | $02  | Header block not found         | 20, READ ERROR       |
         | $03  | SYNC not found                 | 21, READ ERROR       |
         | $04  | Data block not found           | 22, READ ERROR       |
         | $05  | Checksum error in data block   | 23, READ ERROR       |
         | $07  | Verify error                   | 25, WRITE ERROR      |
         | $08  | Disk write protected           | 26, WRITE PROTECT ON |
         | $09  | Checksum error in header block | 27, READ ERROR       |
         | $0B  | Id mismatch                    | 29, DISK ID MISMATCH |
         | $0F  | Disk not inserted              | 74, DRIVE NOT READY  |
         +------+--------------------------------+----------------------+

      Error codes $06 and $0A do not occur on the 1541.