_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

ZAPL1541

FILE INFORMATION

FILENAME(S): ZAPL1541

FILE TYPE(S): SEQ

FILE SIZE: 23.8K

FIRST SEEN: 2025-12-01 19:06:08

APPEARS ON: 1 disk(s)

FILE HASH

aa824315f8ce1c89b66e66e923cd3cff358cbfd4719f6019a598a54101662f87

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
ICE ZAPL1541 SEQ Icebreaker 23 4 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 7A 61 70 6C 31 35 34 31  0D 0D 6F 52 49 47 49 4E  |zapl1541..oRIGIN|
00000010: 41 4C 4C 59 20 57 52 49  54 54 45 4E 20 42 59 20  |ALLY WRITTEN BY |
00000020: 64 4F 4E 20 6C 45 57 49  53 20 41 4E 44 20 41 50  |dON lEWIS AND AP|
00000030: 50 45 41 52 45 44 20 49  4E 20 61 50 52 49 4C 20  |PEARED IN aPRIL |
00000040: 31 39 38 35 20 63 4F 4D  50 55 54 45 21 20 41 53  |1985 cOMPUTE! AS|
00000050: 0D 74 55 52 42 4F 64 49  53 4B 2E 20 75 50 4C 4F  |.tURBOdISK. uPLO|
00000060: 41 44 45 44 20 57 49 54  48 20 54 48 45 20 41 55  |ADED WITH THE AU|
00000070: 54 48 4F 52 53 20 50 45  52 4D 49 53 53 49 4F 4E  |THORS PERMISSION|
00000080: 20 42 59 20 71 2D 6C 49  4E 4B 20 55 53 45 52 20  | BY q-lINK USER |
00000090: 62 49 53 4F 4E 2C 20 41  4E 44 0D 49 53 20 43 55  |bISON, AND.IS CU|
000000A0: 52 52 45 4E 54 4C 59 20  49 4E 20 54 48 45 20 4F  |RRENTLY IN THE O|
000000B0: 52 49 47 49 4E 41 4C 20  46 4F 52 4D 20 41 53 20  |RIGINAL FORM AS |
000000C0: 32 20 46 49 4C 45 53 20  49 4E 20 54 48 45 20 70  |2 FILES IN THE p|
000000D0: 52 4F 47 52 41 4D 4D 45  52 27 53 20 77 4F 52 4B  |ROGRAMMER'S wORK|
000000E0: 53 48 4F 50 0D 6C 49 42  52 41 52 59 2C 20 36 35  |SHOP.lIBRARY, 65|
000000F0: 78 78 2C 20 75 54 49 4C  49 54 49 45 53 20 73 4F  |xx, uTILITIES sO|
00000100: 55 52 43 45 20 41 53 3A  0D 0D 7A 41 50 2D 4C 44  |URCE AS:..zAP-LD|
00000110: 45 52 32 2E 41 31 35 34  31 0D 7A 41 50 2D 4C 44  |ER2.A1541.zAP-LD|
00000120: 45 52 32 2E 41 36 34 0D  0D 65 58 54 45 4E 53 49  |ER2.A64..eXTENSI|
00000130: 56 45 20 43 4F 4D 4D 45  4E 54 49 4E 47 20 41 4E  |VE COMMENTING AN|
00000140: 44 20 54 55 54 4F 52 49  41 4C 20 42 59 20 6A 4F  |D TUTORIAL BY jO|
00000150: 48 4E 20 67 41 47 45 52  0D 28 71 2D 6C 49 4E 4B  |HN gAGER.(q-lINK|
00000160: 20 69 64 3A 20 73 55 50  45 52 64 49 53 4B 29 0D  | id: sUPERdISK).|
00000170: 28 63 4F 4D 50 55 73 45  52 56 45 20 69 64 20 37  |(cOMPUsERVE id 7|
00000180: 31 33 33 36 2C 36 32 34  29 0D 0D 7A 41 50 2F 6C  |1336,624)..zAP/l|
00000190: 4F 41 44 45 52 2D 31 35  34 31 20 52 45 53 49 44  |OADER-1541 RESID|
000001A0: 45 4E 54 20 43 4F 44 45  0D 0D 31 35 34 31 20 72  |ENT CODE..1541 r|
000001B0: 4F 4D 20 52 4F 55 54 49  4E 45 53 0D 0D 20 20 20  |OM ROUTINES..   |
000001C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 6F 70 39  |             op9|
000001D0: 35 20 20 20 20 20 3D 20  20 20 20 20 24 64 39 34  |5     =     $d94|
000001E0: 35 20 20 20 20 20 20 3B  73 45 54 20 55 50 20 27  |5      ;sET UP '|
000001F0: 66 49 4C 45 20 6E 4F 54  20 66 4F 55 4E 44 27 0D  |fILE nOT fOUND'.|
00000200: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000210: 63 6D 64 65 72 72 20 20  20 3D 20 20 20 20 20 24  |cmderr   =     $|
00000220: 63 31 63 38 20 20 20 20  20 20 3B 63 4F 4D 4D 41  |c1c8      ;cOMMA|
00000230: 4E 44 20 4C 45 56 45 4C  20 45 52 52 4F 52 0D 20  |ND LEVEL ERROR. |
00000240: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 63  |               c|
00000250: 6F 6E 68 64 72 20 20 20  3D 20 20 20 20 20 24 66  |onhdr   =     $f|
00000260: 39 33 34 20 20 20 20 20  20 3B 63 4F 4E 56 45 52  |934      ;cONVER|
00000270: 54 20 48 45 41 44 45 52  20 44 41 54 41 20 54 4F  |T HEADER DATA TO|
00000280: 20 67 63 72 0D 20 20 20  20 20 20 20 20 20 20 20  | gcr.           |
00000290: 20 20 20 20 20 67 63 72  62 69 6E 20 20 20 3D 20  |     gcrbin   = |
000002A0: 20 20 20 20 24 66 38 65  30 20 20 20 20 20 20 3B  |    $f8e0      ;|
000002B0: 63 4F 4E 56 45 52 54 20  67 63 72 20 44 41 54 41  |cONVERT gcr DATA|
000002C0: 20 54 4F 20 62 69 6E 61  72 79 0D 20 20 20 20 20  | TO binary.     |
000002D0: 20 20 20 20 20 20 20 20  20 20 20 63 68 6B 62 6C  |           chkbl|
000002E0: 6B 20 20 20 3D 20 20 20  20 20 24 66 35 65 39 20  |k   =     $f5e9 |
000002F0: 20 20 20 20 20 3B 63 41  4C 43 55 4C 41 54 45 20  |     ;cALCULATE |
00000300: 44 41 54 41 20 43 48 45  43 4B 53 55 4D 0D 20 20  |DATA CHECKSUM.  |
00000310: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 6E  |              in|
00000320: 69 74 64 72 20 20 20 3D  20 20 20 20 20 24 64 30  |itdr   =     $d0|
00000330: 34 32 20 20 20 20 20 20  3B 69 4E 49 54 49 41 4C  |42      ;iNITIAL|
00000340: 49 5A 45 20 44 52 49 56  45 0D 0D 31 35 34 31 20  |IZE DRIVE..1541 |
00000350: 72 41 4D 20 26 20 69 2F  6F 0D 0D 20 20 20 20 20  |rAM & i/o..     |
00000360: 20 20 20 20 20 20 20 20  20 20 20 62 75 66 30 20  |           buf0 |
00000370: 20 20 20 20 3D 20 20 20  20 20 24 30 33 30 30 20  |    =     $0300 |
00000380: 20 20 20 20 20 3B 62 55  46 46 45 52 20 23 20 30  |     ;bUFFER # 0|
00000390: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000003A0: 20 6A 6F 62 73 20 20 20  20 20 3D 20 20 20 20 20  | jobs     =     |
000003B0: 24 30 30 20 20 20 20 20  20 20 20 3B 6A 4F 42 20  |$00        ;jOB |
000003C0: 71 55 45 55 45 20 46 4F  52 20 62 55 46 30 0D 20  |qUEUE FOR bUF0. |
000003D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 68  |               h|
000003E0: 64 72 73 20 20 20 20 20  3D 20 20 20 20 20 24 30  |drs     =     $0|
000003F0: 36 20 20 20 20 20 20 20  20 3B 74 52 41 43 4B 20  |6        ;tRACK |
00000400: 26 20 73 45 43 54 4F 52  20 46 4F 52 20 62 55 46  |& sECTOR FOR bUF|
00000410: 30 20 6A 4F 42 0D 20 20  20 20 20 20 20 20 20 20  |0 jOB.          |
00000420: 20 20 20 20 20 20 64 73  6B 69 64 20 20 20 20 3D  |      dskid    =|
00000430: 20 20 20 20 20 24 31 32  20 20 20 20 20 20 20 20  |     $12        |
00000440: 3B 6D 41 53 54 45 52 20  44 49 53 4B 20 69 64 0D  |;mASTER DISK id.|
00000450: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000460: 68 65 61 64 65 72 20 20  20 3D 20 20 20 20 20 24  |header   =     $|
00000470: 31 36 20 20 20 20 20 20  20 20 3B 69 4D 41 47 45  |16        ;iMAGE|
00000480: 20 4F 46 20 4D 4F 53 54  20 52 45 43 45 4E 54 20  | OF MOST RECENT |
00000490: 48 45 41 44 45 52 20 52  45 41 44 0D 20 20 20 20  |HEADER READ.    |
000004A0: 20 20 20 20 20 20 20 20  20 20 20 20 73 74 61 62  |            stab|
000004B0: 20 20 20 20 20 3D 20 20  20 20 20 24 32 34 20 20  |     =     $24  |
000004C0: 20 20 20 20 20 20 3B 77  4F 52 4B 20 41 52 45 41  |      ;wORK AREA|
000004D0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000004E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000004F0: 20 20 20 20 20 20 20 20  20 20 20 3B 28 66 4F 52  |           ;(fOR|
00000500: 20 62 69 6E 61 72 79 2D  67 63 72 20 43 4F 4E 56  | binary-gcr CONV|
00000510: 45 52 53 49 4F 4E 29 0D  20 20 20 20 20 20 20 20  |ERSION).        |
00000520: 20 20 20 20 20 20 20 20  70 6E 74 72 20 20 20 20  |        pntr    |
00000530: 20 3D 20 20 20 20 20 24  33 62 20 20 20 20 20 20  | =     $3b      |
00000540: 20 20 3B 77 4F 52 4B 20  41 52 45 41 0D 20 20 20  |  ;wORK AREA.   |
00000550: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000560: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000570: 20 20 20 20 20 20 20 3B  28 70 4F 49 4E 54 45 52  |       ;(pOINTER|
00000580: 20 54 4F 20 64 49 52 45  43 54 4F 52 59 20 45 4E  | TO dIRECTORY EN|
00000590: 54 52 59 29 0D 20 20 20  20 20 20 20 20 20 20 20  |TRY).           |
000005A0: 20 20 20 20 20 63 6F 75  6E 74 20 20 20 20 3D 20  |     count    = |
000005B0: 20 20 20 20 24 34 62 20  20 20 20 20 20 20 20 3B  |    $4b        ;|
000005C0: 77 4F 52 4B 20 41 52 45  41 0D 20 20 20 20 20 20  |wORK AREA.      |
000005D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000005E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000005F0: 20 20 20 20 3B 28 63 4F  55 4E 54 45 52 20 46 4F  |    ;(cOUNTER FO|
00000600: 52 20 64 49 52 20 45 4E  54 52 59 29 0D 20 20 20  |R dIR ENTRY).   |
00000610: 20 20 20 20 20 20 20 20  20 20 20 20 20 64 61 74  |             dat|
00000620: 61 20 20 20 20 20 3D 20  20 20 20 20 24 38 35 20  |a     =     $85 |
00000630: 20 20 20 20 20 20 20 3B  74 45 4D 50 4F 52 41 52  |       ;tEMPORAR|
00000640: 59 20 44 41 54 41 20 42  59 54 45 0D 20 20 20 20  |Y DATA BYTE.    |
00000650: 20 20 20 20 20 20 20 20  20 20 20 20 62 69 64 20  |            bid |
00000660: 20 20 20 20 20 3D 20 20  20 20 20 24 33 38 20 20  |     =     $38  |
00000670: 20 20 20 20 20 20 3B 64  41 54 41 20 42 4C 4F 43  |      ;dATA BLOC|
00000680: 4B 20 69 64 20 43 48 41  52 20 28 24 30 37 29 0D  |K id CHAR ($07).|
00000690: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000006A0: 64 62 69 64 20 20 20 20  20 3D 20 20 20 20 20 24  |dbid     =     $|
000006B0: 34 37 20 20 20 20 20 20  20 20 3B 64 41 54 41 20  |47        ;dATA |
000006C0: 42 4C 4F 43 4B 20 69 64  20 43 48 41 52 20 52 45  |BLOCK id CHAR RE|
000006D0: 41 44 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |AD.             |
000006E0: 20 20 20 62 75 66 70 6E  74 20 20 20 3D 20 20 20  |   bufpnt   =   |
000006F0: 20 20 24 33 30 20 20 20  20 20 20 20 20 3B 70 4F  |  $30        ;pO|
00000700: 49 4E 54 45 52 20 54 4F  20 41 43 54 49 56 45 20  |INTER TO ACTIVE |
00000710: 42 55 46 46 45 52 0D 20  20 20 20 20 20 20 20 20  |BUFFER.         |
00000720: 20 20 20 20 20 20 20 68  64 72 70 6E 74 20 20 20  |       hdrpnt   |
00000730: 3D 20 20 20 20 20 24 33  32 20 20 20 20 20 20 20  |=     $32       |
00000740: 20 3B 70 4F 49 4E 54 45  52 20 54 4F 20 41 43 54  | ;pOINTER TO ACT|
00000750: 49 56 45 20 48 45 41 44  45 52 0D 20 20 20 20 20  |IVE HEADER.     |
00000760: 20 20 20 20 20 20 20 20  20 20 20 63 68 6B 73 75  |           chksu|
00000770: 6D 20 20 20 3D 20 20 20  20 20 24 33 61 20 20 20  |m   =     $3a   |
00000780: 20 20 20 20 20 3B 73 54  4F 52 41 47 45 20 4F 46  |     ;sTORAGE OF|
00000790: 20 44 41 54 41 20 4F 52  20 48 45 41 44 45 52 20  | DATA OR HEADER |
000007A0: 43 48 45 43 4B 53 55 4D  0D 20 20 20 20 20 20 20  |CHECKSUM.       |
000007B0: 20 20 20 20 20 20 20 20  20 65 72 72 6E 75 6D 20  |         errnum |
000007C0: 20 20 3D 20 20 20 20 20  24 34 34 20 20 20 20 20  |  =     $44     |
000007D0: 20 20 20 3B 77 4F 52 4B  20 41 52 45 41 0D 20 20  |   ;wORK AREA.  |
000007E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000800: 20 20 20 20 20 20 20 20  3B 28 63 4F 4D 4D 41 4E  |        ;(cOMMAN|
00000810: 44 20 45 52 52 4F 52 20  4E 55 4D 42 45 52 29 0D  |D ERROR NUMBER).|
00000820: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000830: 70 62 20 20 20 20 20 20  20 3D 20 20 20 20 20 24  |pb       =     $|
00000840: 31 38 30 30 20 20 20 20  20 20 3B 73 45 52 49 41  |1800      ;sERIA|
00000850: 4C 20 69 2F 6F 20 36 35  32 32 20 2D 20 64 41 54  |L i/o 6522 - dAT|
00000860: 41 20 50 4F 52 54 20 62  0D 20 20 20 20 20 20 20  |A PORT b.       |
00000870: 20 20 20 20 20 20 20 20  20 74 31 68 63 31 20 20  |         t1hc1  |
00000880: 20 20 3D 20 20 20 20 20  24 31 38 30 35 20 20 20  |  =     $1805   |
00000890: 20 20 20 3B 74 49 4D 45  52 20 31 20 68 49 47 48  |   ;tIMER 1 hIGH|
000008A0: 20 63 4F 55 4E 54 45 52  0D 20 20 20 20 20 20 20  | cOUNTER.       |
000008B0: 20 20 20 20 20 20 20 20  20 64 73 6B 63 6E 74 20  |         dskcnt |
000008C0: 20 20 3D 20 20 20 20 20  24 31 63 30 30 20 20 20  |  =     $1c00   |
000008D0: 20 20 20 3B 64 49 53 4B  20 43 4F 4E 54 52 4F 4C  |   ;dISK CONTROL|
000008E0: 4C 45 52 20 36 35 32 32  0D 20 20 20 20 20 20 20  |LER 6522.       |
000008F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000900: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000910: 20 20 20 3B 64 41 54 41  20 70 4F 52 54 20 62 0D  |   ;dATA pORT b.|
00000920: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000930: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000940: 20 20 20 20 20 20 20 20  20 20 3B 64 49 53 4B 20  |          ;dISK |
00000950: 43 4F 4E 54 52 4F 4C 4C  45 52 20 69 2F 6F 0D 20  |CONTROLLER i/o. |
00000960: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 64  |               d|
00000970: 61 74 61 32 20 20 20 20  3D 20 20 20 20 20 24 31  |ata2    =     $1|
00000980: 63 30 31 20 20 20 20 20  20 3B 64 41 54 41 20 70  |c01      ;dATA p|
00000990: 4F 52 54 20 61 0D 20 20  20 20 20 20 20 20 20 20  |ORT a.          |
000009A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000009B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000009C0: 3B 67 63 72 20 44 41 54  41 20 69 2F 6F 20 54 4F  |;gcr DATA i/o TO|
000009D0: 20 44 49 53 4B 45 54 54  45 0D 20 20 20 20 20 20  | DISKETTE.      |
000009E0: 20 20 20 20 20 20 20 20  20 20 70 63 72 32 20 20  |          pcr2  |
000009F0: 20 20 20 3D 20 20 20 20  20 24 31 63 30 63 20 20  |   =     $1c0c  |
00000A00: 20 20 20 20 3B 70 45 52  49 50 48 45 52 41 4C 20  |    ;pERIPHERAL |
00000A10: 63 4F 4E 54 52 4F 4C 20  72 45 47 49 53 54 45 52  |cONTROL rEGISTER|
00000A20: 0D 0D 64 49 53 4B 20 6A  4F 42 20 43 4F 44 45 53  |..dISK jOB CODES|
00000A30: 0D 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00000A40: 20 20 73 65 65 6B 20 20  20 20 20 3D 20 20 20 20  |  seek     =    |
00000A50: 20 24 62 30 0D 0D 73 54  41 52 54 20 4F 46 20 50  | $b0..sTART OF P|
00000A60: 52 4F 47 52 41 4D 0D 0D  20 20 20 20 20 20 20 20  |ROGRAM..        |
00000A70: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000A80: 20 6F 72 67 20 20 20 24  30 35 30 30 0D 0D 30 35  | org   $0500..05|
00000A90: 30 30 3A 20 32 30 20 34  32 20 64 30 20 20 20 20  |00: 20 42 d0    |
00000AA0: 20 20 20 20 20 20 20 6A  73 72 20 20 20 69 6E 69  |       jsr   ini|
00000AB0: 74 64 72 20 20 20 20 20  3B 69 4E 49 54 49 41 4C  |tdr     ;iNITIAL|
00000AC0: 49 5A 45 20 44 52 49 56  45 0D 30 35 30 33 3A 20  |IZE DRIVE.0503: |
00000AD0: 37 38 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |78              |
00000AE0: 20 20 20 73 65 69 20 20  20 20 20 20 20 20 20 20  |   sei          |
00000AF0: 20 20 20 20 3B 64 49 53  41 42 4C 45 20 49 4E 54  |    ;dISABLE INT|
00000B00: 45 52 52 55 50 54 53 0D  30 35 30 34 3A 20 61 39  |ERRUPTS.0504: a9|
00000B10: 20 31 35 20 20 20 20 20  20 20 20 20 20 20 20 20  | 15             |
00000B20: 20 6C 64 61 20 20 20 23  24 31 35 0D 30 35 30 36  | lda   #$15.0506|
00000B30: 3A 20 38 64 20 30 37 20  31 63 20 20 20 20 20 20  |: 8d 07 1c      |
00000B40: 20 20 20 20 20 73 74 61  20 20 20 24 31 63 30 37  |     sta   $1c07|
00000B50: 20 20 20 20 20 20 3B 73  50 45 45 44 20 55 50 20  |      ;sPEED UP |
00000B60: 54 48 45 20 69 72 71 20  50 52 4F 43 45 53 53 0D  |THE irq PROCESS.|
00000B70: 30 35 30 39 3A 20 61 39  20 31 32 20 20 20 20 20  |0509: a9 12     |
00000B80: 20 20 20 20 20 20 20 20  20 6C 64 61 20 20 20 23  |         lda   #|
00000B90: 31 38 20 20 20 20 20 20  20 20 3B 62 45 47 49 4E  |18        ;bEGIN|
00000BA0: 20 53 45 41 52 43 48 20  46 4F 52 20 64 49 52 45  | SEARCH FOR dIRE|
00000BB0: 43 54 4F 52 59 0D 20 20  20 20 20 20 20 20 20 20  |CTORY.          |
00000BC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000BD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000BE0: 3B 74 52 41 43 4B 20 4E  55 4D 42 45 52 20 49 4E  |;tRACK NUMBER IN|
00000BF0: 20 61 0D 30 35 30 62 3A  20 61 30 20 30 31 20 20  | a.050b: a0 01  |
00000C00: 20 20 20 20 20 20 20 20  20 20 20 20 6C 64 79 20  |            ldy |
00000C10: 20 20 23 31 20 20 20 20  20 20 20 20 20 3B 73 45  |  #1         ;sE|
00000C20: 43 54 4F 52 20 4E 55 4D  42 45 52 20 49 4E 20 79  |CTOR NUMBER IN y|
00000C30: 0D 30 35 30 64 3A 20 38  64 20 30 30 20 30 33 20  |.050d: 8d 00 03 |
00000C40: 20 20 20 20 20 20 20 20  20 20 73 74 61 20 20 20  |          sta   |
00000C50: 62 75 66 30 20 20 20 20  20 20 20 3B 73 54 4F 52  |buf0       ;sTOR|
00000C60: 45 20 41 54 20 24 30 33  30 30 2D 24 30 33 30 31  |E AT $0300-$0301|
00000C70: 0D 30 35 31 30 3A 20 38  63 20 30 31 20 30 33 20  |.0510: 8c 01 03 |
00000C80: 20 20 20 20 20 20 20 20  20 20 73 74 79 20 20 20  |          sty   |
00000C90: 62 75 66 30 2B 31 20 20  20 20 20 3B 72 45 41 44  |buf0+1     ;rEAD|
00000CA0: 20 74 52 41 43 4B 20 31  38 2D 73 45 43 54 4F 52  | tRACK 18-sECTOR|
00000CB0: 20 31 0D 30 35 31 33 3A  20 32 30 20 63 64 20 30  | 1.0513: 20 cd 0|
00000CC0: 35 20 20 64 69 72 65 63  74 20 20 20 6A 73 72 20  |5  direct   jsr |
00000CD0: 20 20 72 64 73 65 63 74  20 20 20 20 20 3B 72 45  |  rdsect     ;rE|
00000CE0: 41 44 20 41 20 64 49 52  45 43 54 4F 52 59 20 53  |AD A dIRECTORY S|
00000CF0: 45 43 54 4F 52 0D 0D 68  41 56 45 20 73 45 43 54  |ECTOR..hAVE sECT|
00000D00: 4F 52 2C 20 53 45 41 52  43 48 20 49 54 20 46 4F  |OR, SEARCH IT FO|
00000D10: 52 20 54 48 45 20 50 52  4F 50 45 52 20 45 4E 54  |R THE PROPER ENT|
00000D20: 52 59 2E 20 74 48 45 20  6D 73 62 20 4F 46 20 70  |RY. tHE msb OF p|
00000D30: 6E 74 72 20 49 53 20 53  45 54 20 54 4F 20 24 30  |ntr IS SET TO $0|
00000D40: 33 2C 0D 57 48 49 43 48  20 49 53 20 4F 55 52 20  |3,.WHICH IS OUR |
00000D50: 42 55 46 46 45 52 2C 20  41 4E 44 20 54 48 45 20  |BUFFER, AND THE |
00000D60: 6C 73 62 20 4F 46 20 70  6E 74 72 20 57 49 4C 4C  |lsb OF pntr WILL|
00000D70: 20 42 45 20 53 45 54 20  46 4F 52 20 4F 55 52 20  | BE SET FOR OUR |
00000D80: 6F 66 66 73 65 74 20 54  4F 20 54 48 45 0D 64 49  |offset TO THE.dI|
00000D90: 52 45 43 54 4F 52 59 20  45 4E 54 52 59 2E 20 73  |RECTORY ENTRY. s|
00000DA0: 4F 20 49 46 20 49 54 53  20 54 48 45 20 31 53 54  |O IF ITS THE 1ST|
00000DB0: 20 64 49 52 20 45 4E 54  52 59 2C 20 70 6E 74 72  | dIR ENTRY, pntr|
00000DC0: 20 57 49 4C 4C 20 42 45  20 53 45 54 20 54 4F 20  | WILL BE SET TO |
00000DD0: 24 30 33 30 32 2C 0D 41  4E 44 20 46 4F 52 20 54  |$0302,.AND FOR T|
00000DE0: 48 45 20 32 4E 44 20 64  49 52 20 45 4E 54 52 59  |HE 2ND dIR ENTRY|
00000DF0: 2C 20 70 6E 74 72 20 57  49 4C 4C 20 42 45 20 53  |, pntr WILL BE S|
00000E00: 45 54 20 54 4F 20 24 30  33 32 32 2C 20 45 54 43  |ET TO $0322, ETC|
00000E10: 2E 0D 0D 30 35 31 36 3A  20 61 39 20 30 33 20 20  |...0516: a9 03  |
00000E20: 20 20 20 20 20 20 20 20  20 20 20 20 6C 64 61 20  |            lda |
00000E30: 20 20 23 3E 62 75 66 30  20 20 20 20 20 3B 73 45  |  #>buf0     ;sE|
00000E40: 54 20 70 6E 74 72 20 4D  53 42 20 54 4F 20 24 30  |T pntr MSB TO $0|
00000E50: 33 0D 30 35 31 38 3A 20  38 35 20 33 63 20 20 20  |3.0518: 85 3c   |
00000E60: 20 20 20 20 20 20 20 20  20 20 20 73 74 61 20 20  |           sta  |
00000E70: 20 70 6E 74 72 2B 31 0D  30 35 31 61 3A 20 61 32  | pntr+1.051a: a2|
00000E80: 20 30 30 20 20 20 20 20  20 20 20 20 20 20 20 20  | 00             |
00000E90: 20 6C 64 78 20 20 20 23  30 0D 30 35 31 63 3A 20  | ldx   #0.051c: |
00000EA0: 38 36 20 34 62 20 20 20  20 20 20 20 20 20 20 20  |86 4b           |
00000EB0: 20 20 20 73 74 78 20 20  20 63 6F 75 6E 74 20 20  |   stx   count  |
00000EC0: 20 20 20 20 3B 64 49 52  45 43 54 4F 52 59 20 45  |    ;dIRECTORY E|
00000ED0: 4E 54 52 59 20 43 4F 55  4E 54 45 52 20 54 4F 20  |NTRY COUNTER TO |
00000EE0: 30 0D 30 35 31 65 3A 20  66 30 20 32 62 20 20 20  |0.051e: f0 2b   |
00000EF0: 20 20 20 20 20 20 20 20  20 20 20 62 65 71 20 20  |           beq  |
00000F00: 20 6E 78 74 6F 6E 31 20  20 20 20 20 3B 67 45 54  | nxton1     ;gET|
00000F10: 20 31 53 54 20 44 49 52  45 43 54 4F 52 59 20 45  | 1ST DIRECTORY E|
00000F20: 4E 54 52 59 0D 0D 30 35  32 30 3A 20 61 30 20 30  |NTRY..0520: a0 0|
00000F30: 30 20 20 20 20 20 73 65  61 72 63 68 20 20 20 6C  |0     search   l|
00000F40: 64 79 20 20 20 23 30 20  20 20 20 20 20 20 20 20  |dy   #0         |
00000F50: 3B 70 6E 74 72 20 49 53  20 53 45 54 20 54 4F 20  |;pntr IS SET TO |
00000F60: 54 48 45 20 4F 46 46 53  45 54 20 46 4F 52 0D 30  |THE OFFSET FOR.0|
00000F70: 35 32 32 3A 20 62 31 20  33 62 20 20 20 20 20 20  |522: b1 3b      |
00000F80: 20 20 20 20 20 20 20 20  6C 64 61 20 20 20 28 70  |        lda   (p|
00000F90: 6E 74 72 29 2C 79 20 20  20 3B 41 20 64 49 52 20  |ntr),y   ;A dIR |
00000FA0: 45 4E 54 52 59 2C 20 41  4E 44 20 45 41 43 48 20  |ENTRY, AND EACH |
00000FB0: 4F 46 46 53 45 54 0D 20  20 20 20 20 20 20 20 20  |OFFSET.         |
00000FC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000FD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000FE0: 20 3B 53 54 41 52 54 53  20 57 49 54 48 20 54 48  | ;STARTS WITH TH|
00000FF0: 45 20 46 49 4C 45 2D 54  59 50 45 2E 0D 30 35 32  |E FILE-TYPE..052|
00001000: 34 3A 20 32 39 20 62 66  20 20 20 20 20 20 20 20  |4: 29 bf        |
00001010: 20 20 20 20 20 20 61 6E  64 20 20 20 23 25 31 30  |      and   #%10|
00001020: 31 31 31 31 31 31 20 3B  73 54 52 49 50 20 4F 46  |111111 ;sTRIP OF|
00001030: 46 20 6C 4F 43 4B 20 42  49 54 0D 30 35 32 36 3A  |F lOCK BIT.0526:|
00001040: 20 63 39 20 38 32 20 20  20 20 20 20 20 20 20 20  | c9 82          |
00001050: 20 20 20 20 63 6D 70 20  20 20 23 24 38 32 20 20  |    cmp   #$82  |
00001060: 20 20 20 20 20 3B 69 53  20 49 54 20 41 20 70 52  |     ;iS IT A pR|
00001070: 4F 47 52 41 4D 20 46 49  4C 45 20 54 59 50 45 3F  |OGRAM FILE TYPE?|
00001080: 0D 30 35 32 38 3A 20 64  30 20 31 39 20 20 20 20  |.0528: d0 19    |
00001090: 20 20 20 20 20 20 20 20  20 20 62 6E 65 20 20 20  |          bne   |
000010A0: 6E 78 74 6F 6E 65 20 20  20 20 20 3B 6E 4F 2D 54  |nxtone     ;nO-T|
000010B0: 48 45 4E 20 53 45 41 52  43 48 20 4E 45 58 54 20  |HEN SEARCH NEXT |
000010C0: 45 4E 54 52 59 0D 30 35  32 61 3A 20 63 38 20 20  |ENTRY.052a: c8  |
000010D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
000010E0: 6E 79 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ny              |
000010F0: 3B 79 45 53 2D 74 48 45  4E 20 49 4E 43 52 45 4D  |;yES-tHEN INCREM|
00001100: 45 4E 54 20 79 20 53 4F  20 70 6E 74 72 0D 30 35  |ENT y SO pntr.05|
00001110: 32 62 3A 20 63 38 20 20  20 20 20 20 20 20 20 20  |2b: c8          |
00001120: 20 20 20 20 20 20 20 69  6E 79 20 20 20 20 20 20  |       iny      |
00001130: 20 20 20 20 20 20 20 20  3B 57 49 4C 4C 20 4E 4F  |        ;WILL NO|
00001140: 57 20 42 45 20 53 45 54  20 54 4F 20 54 48 45 20  |W BE SET TO THE |
00001150: 31 53 54 0D 30 35 32 63  3A 20 63 38 20 20 20 20  |1ST.052c: c8    |
00001160: 20 20 20 20 20 20 20 20  20 20 20 20 20 69 6E 79  |             iny|
00001170: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 43  |              ;C|
00001180: 48 41 52 20 4F 46 20 54  48 45 20 46 49 4C 45 4E  |HAR OF THE FILEN|
00001190: 41 4D 45 2E 0D 30 35 32  64 3A 20 62 39 20 61 39  |AME..052d: b9 a9|
000011A0: 20 30 36 20 20 63 6F 6D  70 61 72 20 20 20 6C 64  | 06  compar   ld|
000011B0: 61 20 20 20 66 69 6C 65  2D 33 2C 79 20 20 20 3B  |a   file-3,y   ;|
000011C0: 67 45 54 20 31 53 54 20  43 48 41 52 20 4F 46 20  |gET 1ST CHAR OF |
000011D0: 66 49 4C 45 4E 41 4D 45  0D 20 20 20 20 20 20 20  |fILENAME.       |
000011E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001200: 20 20 20 3B 49 4E 20 54  48 45 20 6C 6F 61 64 20  |   ;IN THE load |
00001210: 43 4F 4D 4D 41 4E 44 2E  0D 0D 69 46 20 54 48 45  |COMMAND...iF THE|
00001220: 20 6C 6F 61 64 20 46 49  4C 45 4E 41 4D 45 20 49  | load FILENAME I|
00001230: 53 20 41 20 2A 20 42 59  20 49 54 53 45 4C 46 2C  |S A * BY ITSELF,|
00001240: 20 53 55 43 48 20 41 53  20 6C 6F 61 64 22 2A 22  | SUCH AS load"*"|
00001250: 2C 38 20 54 48 45 4E 20  49 54 20 57 49 4C 4C 20  |,8 THEN IT WILL |
00001260: 4C 4F 41 44 20 54 48 45  0D 31 53 54 20 46 49 4C  |LOAD THE.1ST FIL|
00001270: 45 20 4F 4E 20 54 48 45  20 44 49 53 4B 2E 20 69  |E ON THE DISK. i|
00001280: 46 20 54 48 45 20 46 49  4C 45 4E 41 4D 45 20 55  |F THE FILENAME U|
00001290: 53 45 53 20 41 20 2A 2C  20 53 55 43 48 20 41 53  |SES A *, SUCH AS|
000012A0: 20 6C 6F 61 64 22 74 65  73 74 2A 22 2C 38 20 54  | load"test*",8 T|
000012B0: 48 45 4E 20 49 54 0D 57  49 4C 4C 20 4C 4F 41 44  |HEN IT.WILL LOAD|
000012C0: 20 54 48 45 20 31 53 54  20 46 49 4C 45 20 4F 4E  | THE 1ST FILE ON|
000012D0: 20 54 48 45 20 44 49 53  4B 20 42 45 47 49 4E 4E  | THE DISK BEGINN|
000012E0: 49 4E 47 20 57 49 54 48  20 54 48 45 20 57 4F 52  |ING WITH THE WOR|
000012F0: 44 20 74 65 73 74 2C 20  53 55 43 48 20 41 53 0D  |D test, SUCH AS.|
00001300: 74 65 73 74 64 69 73 6B  2C 20 74 65 73 74 65 72  |testdisk, tester|
00001310: 2C 20 74 65 73 74 61 76  65 72 64 65 2C 20 45 54  |, testaverde, ET|
00001320: 43 2E 0D 0D 30 35 33 30  3A 20 63 39 20 32 61 20  |C...0530: c9 2a |
00001330: 20 20 20 20 20 20 20 20  20 20 20 20 20 63 6D 70  |             cmp|
00001340: 20 20 20 23 27 2A 27 0D  30 35 33 32 3A 20 66 30  |   #'*'.0532: f0|
00001350: 20 34 32 20 20 20 20 20  20 20 20 20 20 20 20 20  | 42             |
00001360: 20 62 65 71 20 20 20 67  6F 74 69 74 0D 0D 69 46  | beq   gotit..iF|
00001370: 20 54 48 45 20 6C 6F 61  64 20 46 49 4C 45 4E 41  | THE load FILENA|
00001380: 4D 45 20 43 4F 4E 54 41  49 4E 53 20 54 48 45 20  |ME CONTAINS THE |
00001390: 57 49 4C 44 43 41 52 44  20 43 48 41 52 41 43 54  |WILDCARD CHARACT|
000013A0: 45 52 20 3F 2C 20 54 48  49 53 20 57 49 4C 4C 20  |ER ?, THIS WILL |
000013B0: 4D 41 54 43 48 20 41 4E  59 0D 43 48 41 52 41 43  |MATCH ANY.CHARAC|
000013C0: 54 45 52 20 49 4E 20 41  20 46 49 4C 45 4E 41 4D  |TER IN A FILENAM|
000013D0: 45 2E 20 66 4F 52 20 45  58 41 4D 50 4C 45 2C 20  |E. fOR EXAMPLE, |
000013E0: 6C 6F 61 64 22 3F 65 73  74 22 2C 38 20 57 49 4C  |load"?est",8 WIL|
000013F0: 4C 20 4C 4F 41 44 20 49  4E 20 54 48 45 20 46 49  |L LOAD IN THE FI|
00001400: 52 53 54 20 46 49 4C 45  0D 49 46 20 49 54 20 48  |RST FILE.IF IT H|
00001410: 41 53 20 41 20 46 49 4C  45 4E 41 4D 45 20 53 55  |AS A FILENAME SU|
00001420: 43 48 20 41 53 20 62 65  73 74 2C 20 74 65 73 74  |CH AS best, test|
00001430: 2C 20 77 65 73 74 2C 20  45 54 43 2E 20 62 55 54  |, west, ETC. bUT|
00001440: 20 53 49 4E 43 45 20 49  54 20 4D 41 54 43 48 45  | SINCE IT MATCHE|
00001450: 53 20 4F 4E 4C 59 0D 31  20 43 48 41 52 41 43 54  |S ONLY.1 CHARACT|
00001460: 45 52 2C 20 49 54 20 57  4F 55 4C 44 20 4E 4F 54  |ER, IT WOULD NOT|
00001470: 20 4C 4F 41 44 20 49 4E  20 41 20 46 49 4C 45 20  | LOAD IN A FILE |
00001480: 53 55 43 48 20 41 53 20  71 75 65 73 74 2E 0D 0D  |SUCH AS quest...|
00001490: 30 35 33 34 3A 20 63 39  20 33 66 20 20 20 20 20  |0534: c9 3f     |
000014A0: 20 20 20 20 20 20 20 20  20 63 6D 70 20 20 20 23  |         cmp   #|
000014B0: 27 3F 27 20 20 20 20 20  20 20 3B 69 53 20 41 20  |'?'       ;iS A |
000014C0: 57 49 4C 44 43 41 52 44  20 43 48 41 52 41 43 54  |WILDCARD CHARACT|
000014D0: 45 52 3F 0D 30 35 33 36  3A 20 66 30 20 30 34 20  |ER?.0536: f0 04 |
000014E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 62 65 71  |             beq|
000014F0: 20 20 20 63 6F 6D 70 72  31 20 20 20 20 20 3B 79  |   compr1     ;y|
00001500: 45 53 2D 54 48 45 4E 20  53 4B 49 50 0D 30 35 33  |ES-THEN SKIP.053|
00001510: 38 3A 20 64 31 20 33 62  20 20 20 20 20 20 20 20  |8: d1 3b        |
00001520: 20 20 20 20 20 20 63 6D  70 20 20 20 28 70 6E 74  |      cmp   (pnt|
00001530: 72 29 2C 79 20 20 20 3B  6E 4F 2D 54 48 45 4E 20  |r),y   ;nO-THEN |
00001540: 43 4F 4D 50 41 52 45 20  43 48 41 52 41 43 54 45  |COMPARE CHARACTE|
00001550: 52 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |R.              |
00001560: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001570: 20 20 20 20 20 20 20 20  20 20 20 20 3B 4F 46 20  |            ;OF |
00001580: 54 48 45 20 44 49 52 45  43 54 4F 52 59 20 45 4E  |THE DIRECTORY EN|
00001590: 54 52 59 0D 20 20 20 20  20 20 20 20 20 20 20 20  |TRY.            |
000015A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000015B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 46  |              ;F|
000015C0: 49 4C 45 4E 41 4D 45 20  54 4F 20 54 48 45 20 46  |ILENAME TO THE F|
000015D0: 49 4C 45 4E 41 4D 45 0D  20 20 20 20 20 20 20 20  |ILENAME.        |
000015E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000015F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001600: 20 20 3B 53 50 45 43 49  46 49 45 44 20 49 4E 20  |  ;SPECIFIED IN |
00001610: 54 48 45 20 6C 6F 61 64  0D 20 20 20 20 20 20 20  |THE load.       |
00001620: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001630: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001640: 20 20 20 3B 43 4F 4D 4D  41 4E 44 2E 0D 30 35 33  |   ;COMMAND..053|
00001650: 61 3A 20 64 30 20 30 37  20 20 20 20 20 20 20 20  |a: d0 07        |
00001660: 20 20 20 20 20 20 62 6E  65 20 20 20 6E 78 74 6F  |      bne   nxto|
00001670: 6E 65 20 20 20 20 20 3B  69 46 20 4E 4F 54 20 45  |ne     ;iF NOT E|
00001680: 51 55 41 4C 2C 20 43 48  45 43 4B 20 4E 45 58 54  |QUAL, CHECK NEXT|
00001690: 20 45 4E 54 52 59 0D 30  35 33 63 3A 20 63 38 20  | ENTRY.053c: c8 |
000016A0: 20 20 20 20 20 20 20 63  6F 6D 70 72 31 20 20 20  |       compr1   |
000016B0: 69 6E 79 20 20 20 20 20  20 20 20 20 20 20 20 20  |iny             |
000016C0: 20 3B 69 4E 43 52 45 4D  45 4E 54 20 46 49 4C 45  | ;iNCREMENT FILE|
000016D0: 4E 41 4D 45 20 50 4F 49  4E 54 45 52 0D 30 35 33  |NAME POINTER.053|
000016E0: 64 3A 20 63 30 20 31 32  20 20 20 20 20 20 20 20  |d: c0 12        |
000016F0: 20 20 20 20 20 20 63 70  79 20 20 20 23 31 38 20  |      cpy   #18 |
00001700: 20 20 20 20 20 20 20 3B  68 41 53 20 45 4E 54 49  |       ;hAS ENTI|
00001710: 52 45 20 46 49 4C 45 4E  41 4D 45 20 42 45 45 4E  |RE FILENAME BEEN|
00001720: 20 43 48 45 43 4B 45 44  3F 0D 30 35 33 66 3A 20  | CHECKED?.053f: |
00001730: 66 30 20 33 35 20 20 20  20 20 20 20 20 20 20 20  |f0 35           |
00001740: 20 20 20 62 65 71 20 20  20 67 6F 74 69 74 20 20  |   beq   gotit  |
00001750: 20 20 20 20 3B 79 45 53  2D 54 48 45 4E 20 49 54  |    ;yES-THEN IT|
00001760: 53 20 41 20 4D 41 54 43  48 2C 20 53 4F 20 4C 4F  |S A MATCH, SO LO|
00001770: 41 44 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |AD.             |
00001780: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001790: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 54 48  |             ;TH|
000017A0: 49 53 20 50 52 4F 47 52  41 4D 20 46 49 4C 45 2E  |IS PROGRAM FILE.|
000017B0: 0D 30 35 34 31 3A 20 64  30 20 65 61 20 20 20 20  |.0541: d0 ea    |
000017C0: 20 20 20 20 20 20 20 20  20 20 62 6E 65 20 20 20  |          bne   |
000017D0: 63 6F 6D 70 61 72 20 20  20 20 20 3B 6E 4F 2C 20  |compar     ;nO, |
000017E0: 54 48 45 4E 20 43 4F 4E  54 49 4E 55 45 20 43 48  |THEN CONTINUE CH|
000017F0: 45 43 4B 49 4E 47 0D 20  20 20 20 20 20 20 20 20  |ECKING.         |
00001800: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001810: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001820: 20 3B 46 49 4C 45 4E 41  4D 45 20 43 48 41 52 53  | ;FILENAME CHARS|
00001830: 2E 0D 30 35 34 33 3A 20  65 36 20 34 62 20 20 20  |..0543: e6 4b   |
00001840: 20 20 6E 78 74 6F 6E 65  20 20 20 69 6E 63 20 20  |  nxtone   inc  |
00001850: 20 63 6F 75 6E 74 20 20  20 20 20 20 3B 69 4E 43  | count      ;iNC|
00001860: 52 45 4D 45 4E 54 20 54  48 45 20 64 49 52 20 45  |REMENT THE dIR E|
00001870: 4E 54 52 59 20 43 4F 55  4E 54 0D 30 35 34 35 3A  |NTRY COUNT.0545:|
00001880: 20 61 36 20 34 62 20 20  20 20 20 20 20 20 20 20  | a6 4b          |
00001890: 20 20 20 20 6C 64 78 20  20 20 63 6F 75 6E 74 0D  |    ldx   count.|
000018A0: 30 35 34 37 3A 20 65 30  20 30 38 20 20 20 20 20  |0547: e0 08     |
000018B0: 20 20 20 20 20 20 20 20  20 63 70 78 20 20 20 23  |         cpx   #|
000018C0: 38 20 20 20 20 20 20 20  20 20 3B 61 4C 4C 20 38  |8         ;aLL 8|
000018D0: 20 64 49 52 20 45 4E 54  52 59 53 20 42 45 45 4E  | dIR ENTRYS BEEN|
000018E0: 20 43 48 45 43 4B 45 44  3F 0D 30 35 34 39 3A 20  | CHECKED?.0549: |
000018F0: 66 30 20 30 37 20 20 20  20 20 20 20 20 20 20 20  |f0 07           |
00001900: 20 20 20 62 65 71 20 20  20 6E 78 74 6F 6E 32 20  |   beq   nxton2 |
00001910: 20 20 20 20 3B 79 45 53  2C 20 54 48 45 4E 20 43  |    ;yES, THEN C|
00001920: 48 45 43 4B 20 49 46 20  54 48 45 52 45 20 49 53  |HECK IF THERE IS|
00001930: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001940: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001950: 20 20 20 20 20 20 20 20  20 20 20 3B 41 4E 4F 54  |           ;ANOT|
00001960: 48 45 52 20 44 49 52 45  43 54 4F 52 59 20 53 45  |HER DIRECTORY SE|
00001970: 43 54 4F 52 20 57 49 54  48 0D 20 20 20 20 20 20  |CTOR WITH.      |
00001980: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001990: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000019A0: 20 20 20 20 3B 4D 4F 52  45 20 46 49 4C 45 4E 41  |    ;MORE FILENA|
000019B0: 4D 45 53 2E 0D 30 35 34  62 3A 20 62 64 20 36 65  |MES..054b: bd 6e|
000019C0: 20 30 35 20 20 6E 78 74  6F 6E 31 20 20 20 6C 64  | 05  nxton1   ld|
000019D0: 61 20 20 20 6F 66 66 73  65 74 2C 78 20 20 20 3B  |a   offset,x   ;|
000019E0: 67 45 54 20 54 48 45 20  46 49 4C 45 20 45 4E 54  |gET THE FILE ENT|
000019F0: 52 59 20 6F 66 66 73 65  74 0D 30 35 34 65 3A 20  |RY offset.054e: |
00001A00: 38 35 20 33 62 20 20 20  20 20 20 20 20 20 20 20  |85 3b           |
00001A10: 20 20 20 73 74 61 20 20  20 70 6E 74 72 20 20 20  |   sta   pntr   |
00001A20: 20 20 20 20 3B 61 4E 44  20 53 54 4F 52 45 20 49  |    ;aND STORE I|
00001A30: 4E 20 70 6E 74 72 20 28  24 33 62 29 0D 30 35 35  |N pntr ($3b).055|
00001A40: 30 3A 20 64 30 20 63 65  20 20 20 20 20 20 20 20  |0: d0 ce        |
00001A50: 20 20 20 20 20 20 62 6E  65 20 20 20 73 65 61 72  |      bne   sear|
00001A60: 63 68 20 20 20 20 20 3B  6A 55 4D 50 20 54 4F 20  |ch     ;jUMP TO |
00001A70: 73 65 61 72 63 68 20 54  4F 20 43 4F 4D 50 41 52  |search TO COMPAR|
00001A80: 45 0D 30 35 35 32 3A 20  61 64 20 30 30 20 30 33  |E.0552: ad 00 03|
00001A90: 20 20 6E 78 74 6F 6E 32  20 20 20 6C 64 61 20 20  |  nxton2   lda  |
00001AA0: 20 62 75 66 30 20 20 20  20 20 20 20 3B 63 48 45  | buf0       ;cHE|
00001AB0: 43 4B 20 54 48 45 20 46  4F 57 41 52 44 20 50 4F  |CK THE FOWARD PO|
00001AC0: 49 4E 54 45 52 20 54 4F  0D 20 20 20 20 20 20 20  |INTER TO.       |
00001AD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001AE0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001AF0: 20 20 20 3B 54 48 45 20  4E 45 58 54 20 44 49 52  |   ;THE NEXT DIR|
00001B00: 45 43 54 4F 52 59 20 54  52 41 43 4B 2E 0D 30 35  |ECTORY TRACK..05|
00001B10: 35 35 3A 20 66 30 20 30  36 20 20 20 20 20 20 20  |55: f0 06       |
00001B20: 20 20 20 20 20 20 20 62  65 71 20 20 20 64 6F 6E  |       beq   don|
00001B30: 65 20 20 20 20 20 20 20  3B 69 46 20 41 20 30 2C  |e       ;iF A 0,|
00001B40: 20 54 48 45 4E 20 4E 4F  20 4D 4F 52 45 20 64 49  | THEN NO MORE dI|
00001B50: 52 20 53 45 43 54 4F 52  53 0D 30 35 35 37 3A 20  |R SECTORS.0557: |
00001B60: 61 63 20 30 31 20 30 33  20 20 20 20 20 20 20 20  |ac 01 03        |
00001B70: 20 20 20 6C 64 79 20 20  20 62 75 66 30 2B 31 20  |   ldy   buf0+1 |
00001B80: 20 20 20 20 3B 67 45 54  20 54 48 45 20 46 4F 57  |    ;gET THE FOW|
00001B90: 41 52 44 20 50 4F 49 4E  54 45 52 20 54 4F 20 54  |ARD POINTER TO T|
00001BA0: 48 45 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |HE.             |
00001BB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001BC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 4E 45  |             ;NE|
00001BD0: 58 54 20 64 49 52 45 43  54 4F 52 59 20 53 45 43  |XT dIRECTORY SEC|
00001BE0: 54 4F 52 0D 30 35 35 61  3A 20 34 63 20 31 33 20  |TOR.055a: 4c 13 |
00001BF0: 30 35 20 20 20 20 20 20  20 20 20 20 20 6A 6D 70  |05           jmp|
00001C00: 20 20 20 64 69 72 65 63  74 20 20 20 20 20 3B 6C  |   direct     ;l|
00001C10: 4F 41 44 20 49 4E 20 4E  45 58 54 20 44 49 52 45  |OAD IN NEXT DIRE|
00001C20: 43 54 4F 52 59 20 53 45  43 54 4F 52 0D 0D 64 49  |CTORY SECTOR..dI|
00001C30: 44 20 4E 4F 54 20 46 49  4E 44 20 41 4E 20 45 4E  |D NOT FIND AN EN|
00001C40: 54 52 59 0D 0D 30 35 35  64 3A 20 61 39 20 66 66  |TRY..055d: a9 ff|
00001C50: 20 20 20 20 20 64 6F 6E  65 20 20 20 20 20 6C 64  |     done     ld|
00001C60: 61 20 20 20 23 24 66 66  20 20 20 20 20 20 20 3B  |a   #$ff       ;|
00001C70: 74 45 4C 4C 20 54 48 45  20 36 34 20 54 48 45 52  |tELL THE 64 THER|
00001C80: 45 20 57 41 53 20 41 4E  20 45 52 52 4F 52 0D 30  |E WAS AN ERROR.0|
00001C90: 35 35 66 3A 20 38 64 20  30 30 20 30 33 20 20 20  |55f: 8d 00 03   |
00001CA0: 20 20 20 20 20 20 20 20  73 74 61 20 20 20 62 75  |        sta   bu|
00001CB0: 66 30 0D 30 35 36 32 3A  20 32 30 20 39 36 20 30  |f0.0562: 20 96 0|
00001CC0: 35 20 20 20 20 20 20 20  20 20 20 20 6A 73 72 20  |5           jsr |
00001CD0: 20 20 78 6D 69 74 36 34  0D 30 35 36 35 3A 20 61  |  xmit64.0565: a|
00001CE0: 39 20 33 61 20 20 20 20  20 20 20 20 20 20 20 20  |9 3a            |
00001CF0: 20 20 6C 64 61 20 20 20  23 24 33 61 0D 30 35 36  |  lda   #$3a.056|
00001D00: 37 3A 20 38 64 20 30 37  20 31 63 20 20 20 20 20  |7: 8d 07 1c     |
00001D10: 20 20 20 20 20 20 73 74  61 20 20 20 24 31 63 30  |      sta   $1c0|
00001D20: 37 20 20 20 20 20 20 3B  72 45 53 54 4F 52 45 20  |7      ;rESTORE |
00001D30: 4E 4F 52 4D 41 4C 20 69  72 71 20 54 49 4D 45 0D  |NORMAL irq TIME.|
00001D40: 30 35 36 61 3A 20 35 38  20 20 20 20 20 20 20 20  |056a: 58        |
00001D50: 20 20 20 20 20 20 20 20  20 63 6C 69 0D 30 35 36  |         cli.056|
00001D60: 62 3A 20 34 63 20 34 35  20 64 39 20 20 20 20 20  |b: 4c 45 d9     |
00001D70: 20 20 20 20 20 20 6A 6D  70 20 20 20 6F 70 39 35  |      jmp   op95|
00001D80: 20 20 20 20 20 20 20 3B  70 52 49 4E 54 20 22 66  |       ;pRINT "f|
00001D90: 49 4C 45 20 6E 4F 54 20  66 4F 55 4E 44 22 0D 0D  |ILE nOT fOUND"..|
00001DA0: 30 35 36 65 3A 20 30 32  20 32 32 20 34 32 20 20  |056e: 02 22 42  |
00001DB0: 6F 66 66 73 65 74 20 20  20 64 66 62 20 20 20 24  |offset   dfb   $|
00001DC0: 30 32 2C 24 32 32 2C 24  34 32 2C 24 36 32 2C 24  |02,$22,$42,$62,$|
00001DD0: 38 32 2C 24 61 32 2C 24  63 32 2C 24 65 32 0D 30  |82,$a2,$c2,$e2.0|
00001DE0: 35 37 31 3A 20 36 32 20  38 32 20 61 32 20 63 32  |571: 62 82 a2 c2|
00001DF0: 20 65 32 0D 0D 77 45 20  48 41 56 45 20 41 20 4D  | e2..wE HAVE A M|
00001E00: 41 54 43 48 21 21 21 21  0D 0D 69 4E 43 52 45 4D  |ATCH!!!!..iNCREM|
00001E10: 45 4E 54 20 54 48 45 20  46 49 4C 45 20 45 4E 54  |ENT THE FILE ENT|
00001E20: 52 59 20 50 4F 49 4E 54  45 52 20 53 4F 20 49 54  |RY POINTER SO IT|
00001E30: 20 4E 4F 57 20 50 4F 49  4E 54 53 20 54 4F 20 54  | NOW POINTS TO T|
00001E40: 48 45 20 74 52 41 43 4B  20 26 20 73 45 43 54 4F  |HE tRACK & sECTO|
00001E50: 52 0D 4E 55 4D 42 45 52  53 20 46 4F 52 20 54 48  |R.NUMBERS FOR TH|
00001E60: 45 20 46 49 4C 45 20 57  45 20 57 41 4E 54 20 54  |E FILE WE WANT T|
00001E70: 4F 20 4C 4F 41 44 2E 0D  0D 30 35 37 36 3A 20 65  |O LOAD...0576: e|
00001E80: 36 20 33 62 20 20 20 20  20 67 6F 74 69 74 20 20  |6 3b     gotit  |
00001E90: 20 20 69 6E 63 20 20 20  70 6E 74 72 20 20 20 20  |  inc   pntr    |
00001EA0: 20 20 20 3B 69 6E 63 20  46 49 4C 45 20 45 4E 54  |   ;inc FILE ENT|
00001EB0: 52 59 20 50 4F 49 4E 54  45 52 0D 30 35 37 38 3A  |RY POINTER.0578:|
00001EC0: 20 61 30 20 30 30 20 20  20 20 20 20 20 20 20 20  | a0 00          |
00001ED0: 20 20 20 20 6C 64 79 20  20 20 23 30 0D 30 35 37  |    ldy   #0.057|
00001EE0: 61 3A 20 62 31 20 33 62  20 20 20 20 20 20 20 20  |a: b1 3b        |
00001EF0: 20 20 20 20 20 20 6C 64  61 20 20 20 28 70 6E 74  |      lda   (pnt|
00001F00: 72 29 2C 79 20 20 20 3B  67 45 54 20 54 48 45 20  |r),y   ;gET THE |
00001F10: 74 52 41 43 4B 20 23 20  4F 46 20 54 48 45 20 46  |tRACK # OF THE F|
00001F20: 49 4C 45 0D 30 35 37 63  3A 20 38 64 20 30 30 20  |ILE.057c: 8d 00 |
00001F30: 30 33 20 20 20 20 20 20  20 20 20 20 20 73 74 61  |03           sta|
00001F40: 20 20 20 62 75 66 30 20  20 20 20 20 20 20 3B 41  |   buf0       ;A|
00001F50: 4E 44 20 50 55 54 20 49  4E 54 4F 20 24 30 33 30  |ND PUT INTO $030|
00001F60: 30 0D 30 35 37 66 3A 20  63 38 20 20 20 20 20 20  |0.057f: c8      |
00001F70: 20 20 20 20 20 20 20 20  20 20 20 69 6E 79 0D 30  |           iny.0|
00001F80: 35 38 30 3A 20 62 31 20  33 62 20 20 20 20 20 20  |580: b1 3b      |
00001F90: 20 20 20 20 20 20 20 20  6C 64 61 20 20 20 28 70  |        lda   (p|
00001FA0: 6E 74 72 29 2C 79 20 20  20 3B 67 45 54 20 54 48  |ntr),y   ;gET TH|
00001FB0: 45 20 73 45 43 54 4F 52  20 23 20 4F 46 20 54 48  |E sECTOR # OF TH|
00001FC0: 45 20 46 49 4C 45 0D 30  35 38 32 3A 20 38 64 20  |E FILE.0582: 8d |
00001FD0: 30 31 20 30 33 20 20 20  20 20 20 20 20 20 20 20  |01 03           |
00001FE0: 73 74 61 20 20 20 62 75  66 30 2B 31 20 20 20 20  |sta   buf0+1    |
00001FF0: 20 3B 41 4E 44 20 50 55  54 20 49 4E 54 4F 20 24  | ;AND PUT INTO $|
00002000: 30 33 30 31 0D 30 35 38  35 3A 20 32 30 20 63 64  |0301.0585: 20 cd|
00002010: 20 30 35 20 20 67 6F 74  6F 69 74 20 20 20 6A 73  | 05  gotoit   js|
00002020: 72 20 20 20 72 64 73 65  63 74 20 20 20 20 20 3B  |r   rdsect     ;|
00002030: 72 45 41 44 20 41 20 53  45 43 54 4F 52 20 4F 46  |rEAD A SECTOR OF|
00002040: 20 54 48 45 20 46 49 4C  45 0D 30 35 38 38 3A 20  | THE FILE.0588: |
00002050: 32 30 20 39 36 20 30 35  20 20 20 20 20 20 20 20  |20 96 05        |
00002060: 20 20 20 6A 73 72 20 20  20 78 6D 69 74 36 34 20  |   jsr   xmit64 |
00002070: 20 20 20 20 3B 41 4E 44  20 54 52 41 4E 53 46 45  |    ;AND TRANSFE|
00002080: 52 20 49 54 20 54 4F 20  54 48 45 20 63 36 34 0D  |R IT TO THE c64.|
00002090: 30 35 38 62 3A 20 61 64  20 30 30 20 30 33 20 20  |058b: ad 00 03  |
000020A0: 20 20 20 20 20 20 20 20  20 6C 64 61 20 20 20 62  |         lda   b|
000020B0: 75 66 30 20 20 20 20 20  20 20 3B 63 48 45 43 4B  |uf0       ;cHECK|
000020C0: 20 54 48 45 20 46 4F 57  41 52 44 20 50 4F 49 4E  | THE FOWARD POIN|
000020D0: 54 45 52 0D 20 20 20 20  20 20 20 20 20 20 20 20  |TER.            |
000020E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000020F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 4F  |              ;O|
00002100: 46 20 54 48 45 20 4C 41  53 54 20 53 45 43 54 4F  |F THE LAST SECTO|
00002110: 52 20 52 45 41 44 2E 0D  30 35 38 65 3A 20 64 30  |R READ..058e: d0|
00002120: 20 66 35 20 20 20 20 20  20 20 20 20 20 20 20 20  | f5             |
00002130: 20 62 6E 65 20 20 20 67  6F 74 6F 69 74 20 20 20  | bne   gotoit   |
00002140: 20 20 3B 69 46 20 4E 4F  54 20 30 2C 20 54 48 45  |  ;iF NOT 0, THE|
00002150: 4E 20 4D 4F 52 45 20 53  45 43 54 4F 52 53 0D 20  |N MORE SECTORS. |
00002160: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002170: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002180: 20 20 20 20 20 20 20 20  20 3B 69 46 20 41 20 30  |         ;iF A 0|
00002190: 2C 20 54 48 49 53 20 49  4E 44 49 43 41 54 45 53  |, THIS INDICATES|
000021A0: 20 4E 4F 0D 20 20 20 20  20 20 20 20 20 20 20 20  | NO.            |
000021B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000021C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 4D  |              ;M|
000021D0: 4F 52 45 20 53 45 43 54  4F 52 53 20 49 4E 20 54  |ORE SECTORS IN T|
000021E0: 48 49 53 20 46 49 4C 45  2E 0D 30 35 39 30 3A 20  |HIS FILE..0590: |
000021F0: 61 39 20 33 61 20 20 20  20 20 20 20 20 20 20 20  |a9 3a           |
00002200: 20 20 20 6C 64 61 20 20  20 23 24 33 61 20 20 20  |   lda   #$3a   |
00002210: 20 20 20 20 3B 73 4F 20  52 45 53 54 4F 52 45 20  |    ;sO RESTORE |
00002220: 4E 4F 52 4D 41 4C 20 49  4E 54 45 52 52 55 50 54  |NORMAL INTERRUPT|
00002230: 53 0D 30 35 39 32 3A 20  38 64 20 30 37 20 31 63  |S.0592: 8d 07 1c|
00002240: 20 20 20 20 20 20 20 20  20 20 20 73 74 61 20 20  |           sta  |
00002250: 20 24 31 63 30 37 0D 30  35 39 35 3A 20 36 30 20  | $1c07.0595: 60 |
00002260: 20 20 20 20 20 20 20 61  6C 6C 64 75 6E 20 20 20  |       alldun   |
00002270: 72 74 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |rts             |
00002280: 20 3B 61 4E 44 20 52 45  54 55 52 4E 20 54 4F 20  | ;aND RETURN TO |
00002290: 54 48 45 20 63 36 34 0D  0D 74 52 41 4E 53 4D 49  |THE c64..tRANSMI|
000022A0: 54 20 54 48 45 20 42 55  46 46 45 52 20 54 4F 20  |T THE BUFFER TO |
000022B0: 54 48 45 20 36 34 0D 0D  30 35 39 36 3A 20 61 30  |THE 64..0596: a0|
000022C0: 20 30 30 20 20 20 20 20  78 6D 69 74 36 34 20 20  | 00     xmit64  |
000022D0: 20 6C 64 79 20 20 20 23  30 0D 30 35 39 38 3A 20  | ldy   #0.0598: |
000022E0: 62 39 20 30 30 20 30 33  20 20 78 6D 69 74 30 33  |b9 00 03  xmit03|
000022F0: 20 20 20 6C 64 61 20 20  20 62 75 66 30 2C 79 0D  |   lda   buf0,y.|
00002300: 30 35 39 62 3A 20 38 35  20 38 35 20 20 20 20 20  |059b: 85 85     |
00002310: 7A 61 70 20 20 20 20 20  20 73 74 61 20 20 20 64  |zap      sta   d|
00002320: 61 74 61 20 20 20 20 20  20 20 3B 73 41 56 45 20  |ata       ;sAVE |
00002330: 44 41 54 41 0D 0D 7A 41  50 20 41 20 42 59 54 45  |DATA..zAP A BYTE|
00002340: 20 54 4F 20 54 48 45 20  36 34 0D 0D 74 48 49 53  | TO THE 64..tHIS|
00002350: 20 53 45 54 53 20 54 48  45 20 64 61 74 61 20 4C  | SETS THE data L|
00002360: 49 4E 45 20 4C 4F 57 2C  20 41 4E 44 20 63 6C 6F  |INE LOW, AND clo|
00002370: 63 6B 20 4C 49 4E 45 20  48 49 47 48 20 41 53 20  |ck LINE HIGH AS |
00002380: 52 45 43 45 49 56 45 44  20 41 54 20 54 48 45 20  |RECEIVED AT THE |
00002390: 63 36 34 2E 0D 6E 4F 54  49 43 45 20 54 48 41 54  |c64..nOTICE THAT|
000023A0: 20 42 49 54 20 31 20 49  53 20 48 49 47 48 20 49  | BIT 1 IS HIGH I|
000023B0: 4E 20 54 48 45 20 42 45  4C 4F 57 20 42 59 54 45  |N THE BELOW BYTE|
000023C0: 2E 20 77 45 4C 4C 20 42  49 54 20 31 20 4F 46 20  |. wELL BIT 1 OF |
000023D0: 70 62 20 28 24 31 38 30  30 29 20 49 53 20 54 48  |pb ($1800) IS TH|
000023E0: 45 0D 64 61 74 61 20 6F  75 74 70 75 74 20 4C 49  |E.data output LI|
000023F0: 4E 45 2E 20 69 20 4B 4E  4F 57 20 54 48 41 54 20  |NE. i KNOW THAT |
00002400: 69 20 53 41 49 44 20 41  42 4F 56 45 20 54 48 41  |i SAID ABOVE THA|
00002410: 54 20 57 45 20 53 45 54  20 64 61 74 61 20 4C 4F  |T WE SET data LO|
00002420: 57 2C 20 42 55 54 20 52  45 4D 45 4D 42 45 52 0D  |W, BUT REMEMBER.|
00002430: 54 48 41 54 20 42 45 43  41 55 53 45 20 4F 46 20  |THAT BECAUSE OF |
00002440: 54 48 45 20 49 4E 56 45  52 53 49 4F 4E 2C 20 57  |THE INVERSION, W|
00002450: 45 20 4D 55 53 54 20 53  45 54 20 54 48 45 20 42  |E MUST SET THE B|
00002460: 49 54 20 48 49 47 48 20  54 4F 20 43 4C 4F 43 4B  |IT HIGH TO CLOCK|
00002470: 20 49 54 20 4C 4F 57 2E  20 61 54 0D 54 48 49 53  | IT LOW. aT.THIS|
00002480: 20 54 49 4D 45 2C 20 54  48 45 20 43 4F 44 45 20  | TIME, THE CODE |
00002490: 49 4E 20 67 74 73 63 74  31 20 49 4E 20 7A 41 50  |IN gtsct1 IN zAP|
000024A0: 4C 36 34 20 49 53 20 57  41 49 54 49 4E 47 20 46  |L64 IS WAITING F|
000024B0: 4F 52 20 42 49 54 20 37  20 4F 46 20 70 6F 72 74  |OR BIT 7 OF port|
000024C0: 61 20 28 24 64 64 30 30  29 0D 54 4F 20 47 4F 20  |a ($dd00).TO GO |
000024D0: 4C 4F 57 2C 20 57 48 49  43 48 20 49 53 20 4F 55  |LOW, WHICH IS OU|
000024E0: 52 20 64 61 74 61 20 69  6E 70 75 74 20 4C 49 4E  |R data input LIN|
000024F0: 45 20 4F 46 20 54 48 45  20 63 36 34 20 53 45 52  |E OF THE c64 SER|
00002500: 49 41 4C 20 42 55 53 2E  0D 0D 30 35 39 64 3A 20  |IAL BUS...059d: |
00002510: 61 39 20 30 32 20 20 20  20 20 20 20 20 20 20 20  |a9 02           |
00002520: 20 20 20 6C 64 61 20 20  20 23 25 30 30 30 30 30  |   lda   #%00000|
00002530: 30 31 30 20 3B 64 61 74  61 20 4C 4F 57 2C 20 63  |010 ;data LOW, c|
00002540: 6C 6F 63 6B 20 48 49 47  48 0D 30 35 39 66 3A 20  |lock HIGH.059f: |
00002550: 38 64 20 30 30 20 31 38  20 20 20 20 20 20 20 20  |8d 00 18        |
00002560: 20 20 20 73 74 61 20 20  20 70 62 0D 0D 77 41 49  |   sta   pb..wAI|
00002570: 54 20 46 4F 52 20 54 48  45 20 63 6C 6F 63 6B 20  |T FOR THE clock |
00002580: 69 6E 20 4C 49 4E 45 20  54 4F 20 47 4F 20 4C 4F  |in LINE TO GO LO|
00002590: 57 2E 20 74 48 45 20 43  4F 44 45 20 41 54 20 72  |W. tHE CODE AT r|
000025A0: 65 63 76 30 32 20 49 4E  20 7A 41 50 4C 36 34 20  |ecv02 IN zAPL64 |
000025B0: 53 45 54 53 20 54 48 45  0D 63 6C 6F 63 6B 20 6F  |SETS THE.clock o|
000025C0: 75 74 70 75 74 20 42 49  54 20 54 4F 20 41 20 31  |utput BIT TO A 1|
000025D0: 2C 20 57 48 49 43 48 20  50 55 4C 4C 53 20 54 48  |, WHICH PULLS TH|
000025E0: 45 20 4C 49 4E 45 20 4C  4F 57 20 41 4E 44 20 49  |E LINE LOW AND I|
000025F0: 53 20 44 45 54 45 43 54  45 44 20 48 45 52 45 2E  |S DETECTED HERE.|
00002600: 0D 0D 30 35 61 32 3A 20  61 64 20 30 30 20 31 38  |..05a2: ad 00 18|
00002610: 20 20 7A 61 70 30 31 20  20 20 20 6C 64 61 20 20  |  zap01    lda  |
00002620: 20 70 62 20 20 20 20 20  20 20 20 20 3B 67 45 54  | pb         ;gET|
00002630: 20 53 45 52 49 41 4C 20  48 41 4E 44 53 48 41 4B  | SERIAL HANDSHAK|
00002640: 45 20 42 59 54 45 0D 30  35 61 35 3A 20 32 39 20  |E BYTE.05a5: 29 |
00002650: 30 34 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |04              |
00002660: 61 6E 64 20 20 20 23 34  20 20 20 20 20 20 20 20  |and   #4        |
00002670: 20 3B 63 48 45 43 4B 20  63 6C 6F 63 6B 20 69 6E  | ;cHECK clock in|
00002680: 20 42 49 54 0D 30 35 61  37 3A 20 66 30 20 66 39  | BIT.05a7: f0 f9|
00002690: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 65  |              be|
000026A0: 71 20 20 20 7A 61 70 30  31 20 20 20 20 20 20 3B  |q   zap01      ;|
000026B0: 69 53 20 49 54 20 4C 4F  57 3F 20 6E 4F 0D 0D 79  |iS IT LOW? nO..y|
000026C0: 45 53 2D 54 48 45 4E 20  70 55 4C 4C 20 64 61 74  |ES-THEN pULL dat|
000026D0: 61 20 41 4E 44 20 63 6C  6F 63 6B 20 48 49 47 48  |a AND clock HIGH|
000026E0: 2E 20 61 54 20 54 48 49  53 20 50 4F 49 4E 54 20  |. aT THIS POINT |
000026F0: 54 48 45 20 43 4F 44 45  20 41 54 20 72 65 63 76  |THE CODE AT recv|
00002700: 30 31 20 49 4E 20 7A 41  50 4C 36 34 0D 49 53 20  |01 IN zAPL64.IS |
00002710: 57 41 49 54 49 4E 47 20  46 4F 52 20 54 48 45 20  |WAITING FOR THE |
00002720: 64 61 74 61 20 4C 49 4E  45 20 54 4F 20 47 4F 20  |data LINE TO GO |
00002730: 48 49 47 48 2E 0D 0D 30  35 61 39 3A 20 61 39 20  |HIGH...05a9: a9 |
00002740: 30 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |00              |
00002750: 6C 64 61 20 20 20 23 30  20 20 20 20 20 20 20 20  |lda   #0        |
00002760: 20 3B 73 45 54 20 64 61  74 61 2C 20 63 6C 6F 63  | ;sET data, cloc|
00002770: 6B 20 48 49 47 48 0D 30  35 61 62 3A 20 38 64 20  |k HIGH.05ab: 8d |
00002780: 30 30 20 31 38 20 20 20  20 20 20 20 20 20 20 20  |00 18           |
00002790: 73 74 61 20 20 20 70 62  0D 0D 6E 4F 57 20 57 45  |sta   pb..nOW WE|
000027A0: 20 44 4F 20 53 4F 4D 45  20 46 41 4E 43 59 20 53  | DO SOME FANCY S|
000027B0: 54 55 46 46 20 48 45 52  45 2E 20 77 45 20 55 53  |TUFF HERE. wE US|
000027C0: 45 20 42 4F 54 48 20 54  48 45 20 64 41 54 41 20  |E BOTH THE dATA |
000027D0: 41 4E 44 20 63 4C 4F 43  4B 20 4C 49 4E 45 53 20  |AND cLOCK LINES |
000027E0: 4F 46 20 70 62 0D 28 24  31 38 30 30 29 20 54 4F  |OF pb.($1800) TO|
000027F0: 20 53 45 4E 44 20 44 41  54 41 2E 20 73 49 4E 43  | SEND DATA. sINC|
00002800: 45 20 49 54 20 57 49 4C  4C 20 53 45 4E 44 20 32  |E IT WILL SEND 2|
00002810: 20 42 49 54 53 20 41 54  20 41 20 54 49 4D 45 2C  | BITS AT A TIME,|
00002820: 20 41 4E 44 20 4F 46 20  43 4F 55 52 53 45 20 41  | AND OF COURSE A|
00002830: 20 42 59 54 45 0D 49 53  20 38 20 42 49 54 53 2C  | BYTE.IS 8 BITS,|
00002840: 20 49 54 20 57 49 4C 4C  20 54 41 4B 45 20 34 20  | IT WILL TAKE 4 |
00002850: 50 41 53 53 45 53 20 54  4F 20 53 45 4E 44 20 41  |PASSES TO SEND A|
00002860: 20 46 55 4C 4C 20 42 59  54 45 20 28 6C 64 78 20  | FULL BYTE (ldx |
00002870: 23 34 29 2E 20 73 4F 20  4C 45 54 53 20 53 41 59  |#4). sO LETS SAY|
00002880: 20 54 48 41 54 0D 54 48  45 20 42 59 54 45 20 54  | THAT.THE BYTE T|
00002890: 4F 20 53 45 4E 44 20 49  53 20 24 34 62 20 4F 52  |O SEND IS $4b OR|
000028A0: 20 25 30 31 30 30 31 30  31 31 20 49 4E 20 42 49  | %01001011 IN BI|
000028B0: 4E 41 52 59 2E 20 62 59  20 46 41 4E 43 59 20 4D  |NARY. bY FANCY M|
000028C0: 41 54 48 20 4D 41 4E 49  50 55 4C 41 54 49 4F 4E  |ATH MANIPULATION|
000028D0: 2C 20 54 48 45 0D 43 4F  4E 44 49 54 49 4F 4E 20  |, THE.CONDITION |
000028E0: 4F 46 20 54 48 45 20 63  4C 4F 43 4B 20 41 4E 44  |OF THE cLOCK AND|
000028F0: 20 64 41 54 41 20 4F 55  54 50 55 54 20 42 49 54  | dATA OUTPUT BIT|
00002900: 53 20 57 49 4C 4C 20 42  45 20 41 53 20 46 4F 4C  |S WILL BE AS FOL|
00002910: 4C 4F 57 53 20 41 53 20  54 48 45 20 42 59 54 45  |LOWS AS THE BYTE|
00002920: 20 49 53 0D 53 45 4E 54  2E 0D 0D 20 20 20 20 20  | IS.SENT...     |
00002930: 20 20 20 20 20 63 4C 4F  43 4B 20 20 20 20 20 64  |     cLOCK     d|
00002940: 41 54 41 0D 31 53 54 20  70 41 53 53 20 20 20 20  |ATA.1ST pASS    |
00002950: 30 20 20 20 20 20 20 20  20 20 31 0D 32 4E 44 20  |0         1.2ND |
00002960: 70 41 53 53 20 20 20 20  30 20 20 20 20 20 20 20  |pASS    0       |
00002970: 20 20 30 0D 33 52 44 20  70 41 53 53 20 20 20 20  |  0.3RD pASS    |
00002980: 31 20 20 20 20 20 20 20  20 20 30 0D 34 54 48 20  |1         0.4TH |
00002990: 70 41 53 53 20 20 20 20  31 20 20 20 20 20 20 20  |pASS    1       |
000029A0: 20 20 31 0D 0D 6E 4F 57  20 49 46 20 59 4F 55 20  |  1..nOW IF YOU |
000029B0: 47 52 4F 55 50 20 54 48  45 20 42 49 54 53 20 4C  |GROUP THE BITS L|
000029C0: 45 46 54 2D 52 49 47 48  54 2C 20 41 4E 44 20 54  |EFT-RIGHT, AND T|
000029D0: 4F 50 2D 42 4F 54 54 4F  4D 20 49 4E 54 4F 20 41  |OP-BOTTOM INTO A|
000029E0: 20 42 59 54 45 2C 20 59  4F 55 20 57 49 4C 4C 20  | BYTE, YOU WILL |
000029F0: 53 45 45 0D 54 48 41 54  20 49 54 20 57 49 4C 4C  |SEE.THAT IT WILL|
00002A00: 20 43 4F 4D 45 20 4F 55  54 20 41 53 20 25 30 31  | COME OUT AS %01|
00002A10: 2D 30 30 2D 31 30 2D 31  31 2C 20 41 4E 44 20 4C  |-00-10-11, AND L|
00002A20: 4F 57 20 41 4E 44 20 42  45 48 4F 4C 44 2C 20 49  |OW AND BEHOLD, I|
00002A30: 54 53 20 45 51 55 41 4C  20 54 4F 20 54 48 45 0D  |TS EQUAL TO THE.|
00002A40: 42 59 54 45 20 54 48 41  54 20 57 45 20 57 41 4E  |BYTE THAT WE WAN|
00002A50: 54 45 44 20 54 4F 20 53  45 4E 44 20 28 24 34 62  |TED TO SEND ($4b|
00002A60: 29 2E 20 73 4F 20 59 4F  55 20 43 41 4E 20 53 45  |). sO YOU CAN SE|
00002A70: 45 20 57 45 20 48 41 56  45 20 41 20 32 20 42 49  |E WE HAVE A 2 BI|
00002A80: 54 20 50 41 52 41 4C 4C  45 4C 0D 50 4F 52 54 2C  |T PARALLEL.PORT,|
00002A90: 20 57 48 49 43 48 20 49  53 20 43 45 52 54 41 49  | WHICH IS CERTAI|
00002AA0: 4E 4C 59 20 42 45 54 54  45 52 20 54 48 41 4E 20  |NLY BETTER THAN |
00002AB0: 53 45 4E 44 49 4E 47 20  4F 55 54 20 54 48 45 20  |SENDING OUT THE |
00002AC0: 42 59 54 45 20 4F 4E 45  20 42 49 54 20 41 54 20  |BYTE ONE BIT AT |
00002AD0: 41 20 54 49 4D 45 2C 0D  41 53 20 54 48 45 20 44  |A TIME,.AS THE D|
00002AE0: 52 49 56 45 20 4E 4F 52  4D 41 4C 4C 59 20 44 4F  |RIVE NORMALLY DO|
00002AF0: 45 53 2E 20 74 48 49 53  20 49 53 20 57 48 41 54  |ES. tHIS IS WHAT|
00002B00: 20 47 49 56 45 53 20 54  48 49 53 20 50 52 4F 47  | GIVES THIS PROG|
00002B10: 52 41 4D 20 54 48 45 20  4D 55 43 48 20 46 41 53  |RAM THE MUCH FAS|
00002B20: 54 45 52 0D 4C 4F 41 44  49 4E 47 20 53 50 45 45  |TER.LOADING SPEE|
00002B30: 44 2E 20 62 55 54 20 57  41 49 54 20 62 59 54 45  |D. bUT WAIT bYTE|
00002B40: 20 42 52 45 41 54 48 21  20 62 45 43 41 55 53 45  | BREATH! bECAUSE|
00002B50: 20 4F 46 20 4F 55 52 20  4F 55 54 50 55 54 20 49  | OF OUR OUTPUT I|
00002B60: 4E 56 45 52 53 49 4F 4E  20 54 48 45 0D 43 4F 4E  |NVERSION THE.CON|
00002B70: 44 49 54 49 4F 4E 20 4F  46 20 54 48 45 20 63 6C  |DITION OF THE cl|
00002B80: 6F 63 6B 20 41 4E 44 20  64 61 74 61 20 69 6E 70  |ock AND data inp|
00002B90: 75 74 20 4C 49 4E 45 53  20 4F 46 20 70 4F 52 54  |ut LINES OF pORT|
00002BA0: 20 61 20 49 4E 20 54 48  45 20 63 36 34 20 57 49  | a IN THE c64 WI|
00002BB0: 4C 4C 20 42 45 0D 4F 50  50 4F 53 49 54 45 20 4F  |LL BE.OPPOSITE O|
00002BC0: 46 20 57 48 41 54 20 49  53 20 53 45 4E 54 20 4F  |F WHAT IS SENT O|
00002BD0: 55 54 20 4F 46 20 54 48  45 20 31 35 34 31 2E 20  |UT OF THE 1541. |
00002BE0: 73 4F 20 54 48 49 53 20  49 53 20 54 48 45 20 43  |sO THIS IS THE C|
00002BF0: 4F 4E 44 49 54 49 4F 4E  20 4F 46 20 54 48 45 0D  |ONDITION OF THE.|
00002C00: 63 6C 6F 63 6B 20 41 4E  44 20 64 61 74 61 20 69  |clock AND data i|
00002C10: 6E 70 75 74 20 4C 49 4E  45 53 20 41 53 20 52 45  |nput LINES AS RE|
00002C20: 43 45 49 56 45 44 20 41  54 20 54 48 45 20 63 36  |CEIVED AT THE c6|
00002C30: 34 2E 0D 0D 20 20 20 20  20 20 20 20 20 20 20 63  |4...           c|
00002C40: 4C 4F 43 4B 20 20 20 20  20 64 41 54 41 0D 31 53  |LOCK     dATA.1S|
00002C50: 54 20 70 41 53 53 20 20  20 20 20 31 20 20 20 20  |T pASS     1    |
00002C60: 20 20 20 20 20 30 0D 32  4E 44 20 70 41 53 53 20  |     0.2ND pASS |
00002C70: 20 20 20 20 31 20 20 20  20 20 20 20 20 20 31 0D  |    1         1.|
00002C80: 33 52 44 20 70 41 53 53  20 20 20 20 20 30 20 20  |3RD pASS     0  |
00002C90: 20 20 20 20 20 20 20 31  0D 34 54 48 20 70 41 53  |       1.4TH pAS|
00002CA0: 53 20 20 20 20 20 30 20  20 20 20 20 20 20 20 20  |S     0         |
00002CB0: 30 0D 0D 6F 4B 2C 20 4E  4F 57 20 49 46 20 59 4F  |0..oK, NOW IF YO|
00002CC0: 55 20 47 52 4F 55 50 20  54 48 45 53 45 20 42 49  |U GROUP THESE BI|
00002CD0: 54 53 20 41 53 20 42 45  46 4F 52 45 2C 20 59 4F  |TS AS BEFORE, YO|
00002CE0: 55 20 43 4F 4D 45 20 55  50 20 57 49 54 48 20 25  |U COME UP WITH %|
00002CF0: 31 30 2D 31 31 2D 30 31  2D 30 30 2C 20 57 48 49  |10-11-01-00, WHI|
00002D00: 43 48 0D 43 4F 4D 45 53  20 4F 55 54 20 41 53 20  |CH.COMES OUT AS |
00002D10: 24 62 34 2E 20 68 45 59  20 57 41 49 54 20 41 20  |$b4. hEY WAIT A |
00002D20: 4D 49 4E 55 54 45 2C 20  54 48 45 20 31 35 34 31  |MINUTE, THE 1541|
00002D30: 20 53 45 4E 44 53 20 4F  55 54 20 41 20 24 34 62  | SENDS OUT A $4b|
00002D40: 20 41 4E 44 20 54 48 45  20 63 36 34 20 47 45 54  | AND THE c64 GET|
00002D50: 53 0D 41 20 24 62 34 21  20 6E 4F 20 50 52 4F 42  |S.A $b4! nO PROB|
00002D60: 4C 45 4D 2C 20 57 45 20  44 4F 20 41 20 31 27 53  |LEM, WE DO A 1'S|
00002D70: 20 43 4F 4D 50 4C 45 4D  45 4E 54 20 41 4E 44 20  | COMPLEMENT AND |
00002D80: 54 48 45 20 42 59 54 45  20 4D 41 47 49 43 41 4C  |THE BYTE MAGICAL|
00002D90: 4C 59 20 43 48 41 4E 47  45 53 20 46 52 4F 4D 20  |LY CHANGES FROM |
00002DA0: 41 0D 24 62 34 20 54 4F  20 24 34 62 2C 20 41 4E  |A.$b4 TO $4b, AN|
00002DB0: 44 20 57 45 20 48 41 56  45 20 54 48 45 20 42 59  |D WE HAVE THE BY|
00002DC0: 54 45 20 54 48 41 54 20  54 48 45 20 31 35 34 31  |TE THAT THE 1541|
00002DD0: 20 4F 52 49 47 49 4E 41  4C 4C 59 20 53 45 4E 54  | ORIGINALLY SENT|
00002DE0: 20 55 53 2E 20 74 48 49  53 20 49 53 0D 50 45 52  | US. tHIS IS.PER|
00002DF0: 46 4F 52 4D 45 44 20 49  4E 20 54 48 45 20 7A 61  |FORMED IN THE za|
00002E00: 70 6C 36 34 20 43 4F 44  45 20 41 53 3A 0D 0D 6C  |pl64 CODE AS:..l|
00002E10: 64 61 20 62 73 6F 75 72  0D 65 6F 72 20 23 24 66  |da bsour.eor #$f|
00002E20: 66 0D 0D 74 48 45 20 46  4F 4C 4C 4F 57 49 4E 47  |f..tHE FOLLOWING|
00002E30: 20 4D 41 54 48 20 52 4F  55 54 49 4E 45 20 48 41  | MATH ROUTINE HA|
00002E40: 53 20 54 4F 20 54 41 4B  45 20 4F 55 52 20 44 41  |S TO TAKE OUR DA|
00002E50: 54 41 20 42 59 54 45 20  28 24 34 62 29 20 41 4E  |TA BYTE ($4b) AN|
00002E60: 44 20 42 52 45 41 4B 20  49 54 20 44 4F 57 4E 0D  |D BREAK IT DOWN.|
00002E70: 53 4F 20 54 48 41 54 20  49 54 20 53 45 54 53 20  |SO THAT IT SETS |
00002E80: 54 48 45 20 43 4F 4E 44  49 54 49 4F 4E 20 4F 46  |THE CONDITION OF|
00002E90: 20 54 48 45 20 64 61 74  61 20 41 4E 44 20 63 6C  | THE data AND cl|
00002EA0: 6F 63 6B 20 6F 75 74 70  75 74 20 4C 49 4E 45 53  |ock output LINES|
00002EB0: 20 50 52 4F 50 45 52 4C  59 20 46 4F 52 0D 4F 55  | PROPERLY FOR.OU|
00002EC0: 52 20 32 20 42 49 54 53  2E 20 61 4C 53 4F 20 54  |R 2 BITS. aLSO T|
00002ED0: 48 45 20 64 61 74 61 20  41 4E 44 20 63 6C 6F 63  |HE data AND cloc|
00002EE0: 6B 20 6F 75 74 70 75 74  20 4F 46 20 70 4F 52 54  |k output OF pORT|
00002EF0: 20 62 20 28 24 31 38 30  30 29 20 49 4E 20 54 48  | b ($1800) IN TH|
00002F00: 45 20 31 35 34 31 20 4F  43 43 55 50 59 0D 42 49  |E 1541 OCCUPY.BI|
00002F10: 54 20 50 4F 53 49 54 49  4F 4E 53 20 31 20 26 20  |T POSITIONS 1 & |
00002F20: 33 20 4F 46 20 54 48 45  20 50 4F 52 54 2C 20 42  |3 OF THE PORT, B|
00002F30: 55 54 20 54 48 45 20 64  61 74 61 20 41 4E 44 20  |UT THE data AND |
00002F40: 63 6C 6F 63 6B 20 69 6E  70 75 74 20 4F 46 20 70  |clock input OF p|
00002F50: 4F 52 54 20 61 20 28 24  64 64 30 30 29 0D 49 4E  |ORT a ($dd00).IN|
00002F60: 20 54 48 45 20 63 36 34  20 4F 43 43 55 50 59 20  | THE c64 OCCUPY |
00002F70: 42 49 54 20 50 4F 53 49  54 49 4F 4E 53 20 37 20  |BIT POSITIONS 7 |
00002F80: 26 20 36 20 4F 46 20 54  48 45 20 50 4F 52 54 2E  |& 6 OF THE PORT.|
00002F90: 20 61 4E 44 20 54 4F 20  4D 41 4B 45 20 4D 41 54  | aND TO MAKE MAT|
00002FA0: 54 45 52 53 20 57 4F 52  53 45 2C 0D 54 48 45 20  |TERS WORSE,.THE |
00002FB0: 42 49 54 53 20 53 45 4E  54 20 4F 55 54 20 4F 46  |BITS SENT OUT OF|
00002FC0: 20 54 48 45 20 31 35 34  31 20 50 4F 52 54 20 49  | THE 1541 PORT I|
00002FD0: 53 20 49 4E 56 45 52 54  45 44 20 57 48 45 4E 20  |S INVERTED WHEN |
00002FE0: 49 54 20 47 45 54 53 20  54 4F 20 54 48 45 20 63  |IT GETS TO THE c|
00002FF0: 36 34 20 50 4F 52 54 21  0D 61 4C 53 4F 20 41 53  |64 PORT!.aLSO AS|
00003000: 20 4D 45 4E 54 49 4F 4E  45 44 20 49 4E 20 54 48  | MENTIONED IN TH|
00003010: 45 20 7A 61 70 6C 36 34  20 43 4F 44 45 2C 20 53  |E zapl64 CODE, S|
00003020: 49 4E 43 45 20 54 48 45  20 63 6C 6F 63 6B 20 4C  |INCE THE clock L|
00003030: 49 4E 45 20 49 53 20 55  53 45 44 20 48 45 52 45  |INE IS USED HERE|
00003040: 20 54 4F 0D 54 52 41 4E  53 46 45 52 20 44 41 54  | TO.TRANSFER DAT|
00003050: 41 20 49 4E 53 54 45 41  44 20 4F 46 20 54 45 4C  |A INSTEAD OF TEL|
00003060: 4C 49 4E 47 20 54 48 45  20 63 36 34 20 54 48 41  |LING THE c64 THA|
00003070: 54 20 41 20 42 49 54 20  49 53 20 42 45 49 4E 47  |T A BIT IS BEING|
00003080: 20 53 45 4E 54 2C 20 57  45 20 48 41 56 45 20 54  | SENT, WE HAVE T|
00003090: 4F 0D 4D 41 4B 45 20 53  55 52 45 20 54 48 45 20  |O.MAKE SURE THE |
000030A0: 54 49 4D 49 4E 47 20 49  53 20 52 49 47 48 54 2E  |TIMING IS RIGHT.|
000030B0: 20 73 4F 20 54 48 41 54  53 20 57 48 41 54 20 54  | sO THATS WHAT T|
000030C0: 48 45 20 46 4F 4C 4C 4F  57 49 4E 47 20 4D 41 54  |HE FOLLOWING MAT|
000030D0: 48 20 52 4F 55 54 49 4E  45 20 49 53 20 41 4C 4C  |H ROUTINE IS ALL|
000030E0: 0D 41 42 4F 55 54 2E 20  72 41 54 48 45 52 20 54  |.ABOUT. rATHER T|
000030F0: 48 41 4E 20 53 48 4F 57  49 4E 47 20 59 4F 55 20  |HAN SHOWING YOU |
00003100: 54 48 45 20 4D 41 54 48  20 4D 41 4E 49 50 55 4C  |THE MATH MANIPUL|
00003110: 41 54 49 4F 4E 53 20 42  59 20 48 41 4E 44 20 28  |ATIONS BY HAND (|
00003120: 59 4F 55 20 44 4F 4E 27  54 20 48 41 56 45 0D 43  |YOU DON'T HAVE.C|
00003130: 4C 4F 53 45 20 54 4F 20  45 4E 4F 55 47 48 20 4D  |LOSE TO ENOUGH M|
00003140: 4F 4E 45 59 20 46 4F 52  20 54 48 41 54 29 2C 20  |ONEY FOR THAT), |
00003150: 44 4F 20 41 53 20 69 20  44 49 44 2E 20 73 49 4D  |DO AS i DID. sIM|
00003160: 55 4C 41 54 45 20 49 54  20 42 59 20 57 52 49 54  |ULATE IT BY WRIT|
00003170: 49 4E 47 20 41 0D 43 4F  4D 50 41 52 41 42 4C 45  |ING A.COMPARABLE|
00003180: 20 52 4F 55 54 49 4E 45  20 49 4E 20 54 48 45 20  | ROUTINE IN THE |
00003190: 63 36 34 20 55 53 49 4E  47 20 41 20 6D 6C 20 4D  |c64 USING A ml M|
000031A0: 4F 4E 49 54 4F 52 2E 20  6F 46 20 43 4F 55 52 53  |ONITOR. oF COURS|
000031B0: 45 2C 20 54 48 49 53 20  4A 55 53 54 0D 53 49 4D  |E, THIS JUST.SIM|
000031C0: 55 4C 41 54 45 53 20 54  48 45 20 64 61 74 61 20  |ULATES THE data |
000031D0: 41 4E 44 20 63 6C 6F 63  6B 20 42 49 54 20 4D 41  |AND clock BIT MA|
000031E0: 4E 49 50 55 4C 41 54 49  4F 4E 53 2C 20 41 4E 44  |NIPULATIONS, AND|
000031F0: 20 4E 4F 54 20 54 48 45  20 54 49 4D 49 4E 47 2E  | NOT THE TIMING.|
00003200: 20 74 4F 20 4D 41 4B 45  0D 54 48 49 4E 47 53 20  | tO MAKE.THINGS |
00003210: 41 20 4C 49 54 54 4C 45  20 45 41 53 49 45 52 2C  |A LITTLE EASIER,|
00003220: 20 48 45 52 45 20 49 53  20 54 48 45 20 52 4F 55  | HERE IS THE ROU|
00003230: 54 49 4E 45 20 69 20 55  53 45 44 3A 0D 0D 63 30  |TINE i USED:..c0|
00003240: 30 30 20 20 61 39 20 34  62 20 20 20 20 20 6C 64  |00  a9 4b     ld|
00003250: 61 20 23 24 34 62 0D 63  30 30 32 20 20 38 64 20  |a #$4b.c002  8d |
00003260: 32 30 20 63 30 20 20 73  74 61 20 24 63 30 32 30  |20 c0  sta $c020|
00003270: 0D 63 30 30 35 20 20 61  30 20 30 30 20 20 20 20  |.c005  a0 00    |
00003280: 20 6C 64 79 20 23 24 30  30 0D 63 30 30 37 20 20  | ldy #$00.c007  |
00003290: 61 32 20 30 34 20 20 20  20 20 6C 64 78 20 23 24  |a2 04     ldx #$|
000032A0: 30 34 0D 63 30 30 39 20  20 61 39 20 30 30 20 20  |04.c009  a9 00  |
000032B0: 20 20 20 6C 64 61 20 23  24 30 30 0D 63 30 30 62  |   lda #$00.c00b|
000032C0: 20 20 30 65 20 32 30 20  63 30 20 20 61 73 6C 20  |  0e 20 c0  asl |
000032D0: 24 63 30 32 30 0D 63 30  30 65 20 20 32 61 20 20  |$c020.c00e  2a  |
000032E0: 20 20 20 20 20 20 72 6F  6C 0D 63 30 30 66 20 20  |      rol.c00f  |
000032F0: 30 61 20 20 20 20 20 20  20 20 61 73 6C 0D 63 30  |0a        asl.c0|
00003300: 31 30 20 20 30 65 20 32  30 20 63 30 20 20 61 73  |10  0e 20 c0  as|
00003310: 6C 20 24 63 30 32 30 0D  63 30 31 33 20 20 32 61  |l $c020.c013  2a|
00003320: 20 20 20 20 20 20 20 20  72 6F 6C 0D 63 30 31 34  |        rol.c014|
00003330: 20 20 30 61 20 20 20 20  20 20 20 20 61 73 6C 0D  |  0a        asl.|
00003340: 63 30 31 35 20 20 39 39  20 33 30 20 63 30 20 20  |c015  99 30 c0  |
00003350: 73 74 61 20 24 63 30 33  30 2C 79 0D 63 30 31 38  |sta $c030,y.c018|
00003360: 20 20 63 38 20 20 20 20  20 20 20 20 69 6E 79 0D  |  c8        iny.|
00003370: 63 30 31 39 20 20 63 61  20 20 20 20 20 20 20 20  |c019  ca        |
00003380: 64 65 78 0D 63 30 31 61  20 20 64 30 20 65 64 20  |dex.c01a  d0 ed |
00003390: 20 20 20 20 62 6E 65 20  24 63 30 30 39 0D 63 30  |    bne $c009.c0|
000033A0: 31 63 20 20 30 30 20 20  20 20 20 20 20 20 62 72  |1c  00        br|
000033B0: 6B 0D 0D 61 53 20 59 4F  55 20 43 41 4E 20 53 45  |k..aS YOU CAN SE|
000033C0: 45 2C 20 4F 55 52 20 53  49 4D 55 4C 41 54 45 44  |E, OUR SIMULATED|
000033D0: 20 52 4F 55 54 49 4E 45  20 41 42 4F 56 45 20 49  | ROUTINE ABOVE I|
000033E0: 53 20 56 45 52 59 20 53  49 4D 49 4C 41 52 20 54  |S VERY SIMILAR T|
000033F0: 4F 20 4F 55 52 20 41 43  54 55 41 4C 0D 52 4F 55  |O OUR ACTUAL.ROU|
00003400: 54 49 4E 45 20 42 45 4C  4F 57 2E 20 74 48 45 20  |TINE BELOW. tHE |
00003410: 4D 45 4D 4F 52 59 20 4C  4F 43 41 54 49 4F 4E 20  |MEMORY LOCATION |
00003420: 24 63 30 32 30 20 52 45  50 4C 41 43 45 53 20 54  |$c020 REPLACES T|
00003430: 48 45 20 64 61 74 61 20  4C 41 42 45 4C 20 42 45  |HE data LABEL BE|
00003440: 4C 4F 57 2C 20 41 4E 44  20 54 48 45 0D 73 74 61  |LOW, AND THE.sta|
00003450: 20 24 63 30 33 30 2C 79  20 50 55 54 53 20 54 48  | $c030,y PUTS TH|
00003460: 45 20 4F 55 54 50 55 54  20 42 59 54 45 53 20 49  |E OUTPUT BYTES I|
00003470: 4E 20 34 20 53 55 43 43  45 53 53 49 56 45 20 4D  |N 4 SUCCESSIVE M|
00003480: 45 4D 4F 52 59 20 4C 4F  43 41 54 49 4F 4E 53 20  |EMORY LOCATIONS |
00003490: 41 54 20 24 63 30 33 30  20 53 4F 0D 54 48 45 59  |AT $c030 SO.THEY|
000034A0: 20 43 41 4E 20 42 45 20  45 58 41 4D 49 4E 45 44  | CAN BE EXAMINED|
000034B0: 2C 20 57 48 49 43 48 20  52 45 50 4C 41 43 45 53  |, WHICH REPLACES|
000034C0: 20 54 48 45 20 73 74 61  20 70 62 20 49 4E 20 54  | THE sta pb IN T|
000034D0: 48 45 20 42 45 4C 4F 57  20 52 4F 55 54 49 4E 45  |HE BELOW ROUTINE|
000034E0: 2E 20 77 48 45 4E 20 4F  55 52 0D 53 49 4D 55 4C  |. wHEN OUR.SIMUL|
000034F0: 41 54 45 44 20 52 4F 55  54 49 4E 45 20 49 53 20  |ATED ROUTINE IS |
00003500: 52 55 4E 2C 20 41 20 4C  4F 4F 4B 20 41 54 20 54  |RUN, A LOOK AT T|
00003510: 48 45 20 34 20 42 59 54  45 53 20 41 54 20 24 63  |HE 4 BYTES AT $c|
00003520: 30 33 30 2D 63 30 33 33  20 52 45 56 45 41 4C 53  |030-c033 REVEALS|
00003530: 20 54 48 45 0D 42 59 54  45 53 3A 20 30 32 20 30  | THE.BYTES: 02 0|
00003540: 30 20 30 38 20 30 61 2C  20 57 48 49 43 48 20 49  |0 08 0a, WHICH I|
00003550: 53 20 57 48 41 54 20 54  48 45 20 31 35 34 31 20  |S WHAT THE 1541 |
00003560: 53 45 4E 44 53 20 54 4F  20 54 48 45 20 63 36 34  |SENDS TO THE c64|
00003570: 20 57 48 45 4E 20 49 54  20 57 41 4E 54 53 20 53  | WHEN IT WANTS S|
00003580: 45 4E 44 0D 4F 55 52 20  44 41 54 41 20 42 59 54  |END.OUR DATA BYT|
00003590: 45 20 24 34 62 2E 20 66  4F 52 20 54 48 45 20 53  |E $4b. fOR THE S|
000035A0: 41 4B 45 20 4F 46 20 43  4F 4E 54 49 4E 55 49 54  |AKE OF CONTINUIT|
000035B0: 59 2C 20 4C 45 54 53 20  46 49 4E 44 20 4F 55 54  |Y, LETS FIND OUT|
000035C0: 20 57 48 41 54 20 48 41  50 50 45 4E 53 20 41 54  | WHAT HAPPENS AT|
000035D0: 0D 54 48 45 20 63 36 34  27 53 20 45 4E 44 20 54  |.THE c64'S END T|
000035E0: 4F 20 47 45 54 20 42 41  43 4B 20 4F 55 52 20 24  |O GET BACK OUR $|
000035F0: 34 62 20 44 41 54 41 20  42 59 54 45 2E 20 72 45  |4b DATA BYTE. rE|
00003600: 4D 45 4D 42 45 52 20 42  45 43 41 55 53 45 20 4F  |MEMBER BECAUSE O|
00003610: 46 20 4F 55 52 20 49 4E  56 45 52 53 49 4F 4E 2C  |F OUR INVERSION,|
00003620: 0D 41 4E 44 20 54 48 41  54 20 54 48 45 20 64 61  |.AND THAT THE da|
00003630: 74 61 20 41 4E 44 20 63  6C 6F 63 6B 20 49 4E 50  |ta AND clock INP|
00003640: 55 54 20 4C 49 4E 45 53  20 41 52 45 20 41 54 20  |UT LINES ARE AT |
00003650: 44 49 46 46 45 52 45 4E  54 20 42 49 54 20 50 4F  |DIFFERENT BIT PO|
00003660: 53 49 54 49 4F 4E 53 20  4F 46 20 54 48 45 0D 50  |SITIONS OF THE.P|
00003670: 4F 52 54 2C 20 57 48 41  54 20 54 48 45 20 63 36  |ORT, WHAT THE c6|
00003680: 34 20 53 45 45 53 20 57  48 45 4E 20 54 48 45 20  |4 SEES WHEN THE |
00003690: 63 69 61 20 50 4F 52 54  20 49 53 20 52 45 41 44  |cia PORT IS READ|
000036A0: 2C 20 49 53 20 44 49 46  46 45 52 45 4E 54 20 54  |, IS DIFFERENT T|
000036B0: 48 41 54 20 57 48 41 54  0D 54 48 45 20 31 35 34  |HAT WHAT.THE 154|
000036C0: 31 20 53 45 4E 44 53 2E  20 61 4C 53 4F 20 53 4F  |1 SENDS. aLSO SO|
000036D0: 4D 45 20 4F 46 20 54 48  45 20 43 48 49 50 20 50  |ME OF THE CHIP P|
000036E0: 49 4E 53 20 41 52 45 20  53 45 54 20 46 4F 52 20  |INS ARE SET FOR |
000036F0: 49 4E 50 55 54 2C 20 53  55 43 48 20 41 53 20 4F  |INPUT, SUCH AS O|
00003700: 55 52 0D 64 61 74 61 20  41 4E 44 20 63 6C 6F 63  |UR.data AND cloc|
00003710: 6B 20 69 6E 70 75 74 20  4C 49 4E 45 53 2C 20 57  |k input LINES, W|
00003720: 48 49 4C 45 20 4F 54 48  45 52 53 20 41 52 45 20  |HILE OTHERS ARE |
00003730: 53 45 54 20 46 4F 52 20  4F 55 54 50 55 54 2E 20  |SET FOR OUTPUT. |
00003740: 57 48 45 4E 20 54 48 45  20 50 4F 52 54 20 49 53  |WHEN THE PORT IS|
00003750: 0D 52 45 41 44 2C 20 49  54 20 57 49 4C 4C 20 52  |.READ, IT WILL R|
00003760: 45 46 4C 45 43 54 20 54  48 45 20 49 4E 46 4F 52  |EFLECT THE INFOR|
00003770: 4D 41 54 49 4F 4E 20 50  52 45 53 45 4E 54 20 4F  |MATION PRESENT O|
00003780: 4E 20 54 48 45 20 41 43  54 55 41 4C 20 50 4F 52  |N THE ACTUAL POR|
00003790: 54 20 50 49 4E 53 20 46  4F 52 20 42 4F 54 48 0D  |T PINS FOR BOTH.|
000037A0: 49 4E 50 55 54 20 41 4E  44 20 4F 55 54 50 55 54  |INPUT AND OUTPUT|
000037B0: 2E 20 73 4F 20 4A 55 53  54 20 46 4F 52 20 54 48  |. sO JUST FOR TH|
000037C0: 45 20 53 41 4B 45 20 4F  46 20 45 58 41 4D 50 4C  |E SAKE OF EXAMPL|
000037D0: 45 2C 20 4C 45 54 53 20  53 41 59 20 54 48 41 54  |E, LETS SAY THAT|
000037E0: 20 57 48 45 4E 20 54 48  45 20 63 36 34 0D 52 45  | WHEN THE c64.RE|
000037F0: 41 44 53 20 54 48 45 20  50 4F 52 54 2C 20 41 4C  |ADS THE PORT, AL|
00003800: 4C 20 4F 54 48 45 52 20  50 49 4E 53 20 45 58 43  |L OTHER PINS EXC|
00003810: 45 50 54 20 4F 55 52 20  64 61 74 61 20 41 4E 44  |EPT OUR data AND|
00003820: 20 63 6C 6F 63 6B 20 69  6E 70 75 74 20 4C 49 4E  | clock input LIN|
00003830: 45 53 20 48 41 50 50 45  4E 45 44 0D 54 4F 20 42  |ES HAPPENED.TO B|
00003840: 45 20 48 49 47 48 2E 20  73 4F 20 57 49 54 48 20  |E HIGH. sO WITH |
00003850: 54 48 41 54 20 43 4F 4E  44 49 54 49 4F 4E 20 49  |THAT CONDITION I|
00003860: 4E 20 4D 49 4E 44 2C 20  48 45 52 45 20 49 53 20  |N MIND, HERE IS |
00003870: 57 48 41 54 20 54 48 45  20 63 36 34 20 57 4F 55  |WHAT THE c64 WOU|
00003880: 4C 44 20 52 45 41 44 0D  46 52 4F 4D 20 54 48 45  |LD READ.FROM THE|
00003890: 20 50 4F 52 54 2C 20 41  53 20 45 41 43 48 20 4F  | PORT, AS EACH O|
000038A0: 46 20 54 48 45 20 32 20  42 49 54 53 20 41 52 45  |F THE 2 BITS ARE|
000038B0: 20 53 45 4E 54 20 46 52  4F 4D 20 54 48 45 20 31  | SENT FROM THE 1|
000038C0: 35 34 31 2E 0D 0D 20 20  20 20 20 20 20 20 20 20  |541...          |
000038D0: 31 35 34 31 20 20 20 20  20 20 63 36 34 0D 31 53  |1541      c64.1S|
000038E0: 54 20 70 41 53 53 20 20  24 30 32 20 20 20 20 20  |T pASS  $02     |
000038F0: 20 20 24 37 66 0D 32 4E  44 20 70 41 53 53 20 20  |  $7f.2ND pASS  |
00003900: 24 30 30 20 20 20 20 20  20 20 24 66 66 0D 33 52  |$00       $ff.3R|
00003910: 44 20 70 41 53 53 20 20  24 30 38 20 20 20 20 20  |D pASS  $08     |
00003920: 20 20 24 62 66 0D 34 54  48 20 70 41 53 53 20 20  |  $bf.4TH pASS  |
00003930: 24 30 61 20 20 20 20 20  20 20 24 33 66 0D 0D 6E  |$0a       $3f..n|
00003940: 4F 57 20 57 45 20 52 55  4E 20 41 4E 4F 54 48 45  |OW WE RUN ANOTHE|
00003950: 52 20 53 49 4D 55 4C 41  54 49 4F 4E 20 54 4F 20  |R SIMULATION TO |
00003960: 53 48 4F 57 20 57 48 41  54 20 48 41 50 50 45 4E  |SHOW WHAT HAPPEN|
00003970: 53 20 41 54 20 54 48 45  20 63 36 34 27 53 20 45  |S AT THE c64'S E|
00003980: 4E 44 20 57 48 45 4E 20  54 48 45 0D 50 4F 52 54  |ND WHEN THE.PORT|
00003990: 20 49 53 20 52 45 41 44  2E 20 68 45 52 45 20 49  | IS READ. hERE I|
000039A0: 53 20 54 48 45 20 52 4F  55 54 49 4E 45 3A 0D 0D  |S THE ROUTINE:..|
000039B0: 63 30 30 30 20 20 61 39  20 37 66 20 20 20 20 6C  |c000  a9 7f    l|
000039C0: 64 61 20 23 24 37 66 0D  63 30 30 32 20 20 38 64  |da #$7f.c002  8d|
000039D0: 20 34 30 20 63 30 20 73  74 61 20 24 63 30 34 30  | 40 c0 sta $c040|
000039E0: 0D 63 30 30 35 20 20 61  39 20 66 66 20 20 20 20  |.c005  a9 ff    |
000039F0: 6C 64 61 20 23 24 66 66  0D 63 30 30 37 20 20 38  |lda #$ff.c007  8|
00003A00: 64 20 34 31 20 63 30 20  73 74 61 20 24 63 30 34  |d 41 c0 sta $c04|
00003A10: 31 0D 63 30 30 61 20 20  61 39 20 62 66 20 20 20  |1.c00a  a9 bf   |
00003A20: 20 6C 64 61 20 23 24 62  66 0D 63 30 30 63 20 20  | lda #$bf.c00c  |
00003A30: 38 64 20 34 32 20 63 30  20 73 74 61 20 24 63 30  |8d 42 c0 sta $c0|
00003A40: 34 32 0D 63 30 30 66 20  20 61 39 20 33 66 20 20  |42.c00f  a9 3f  |
00003A50: 20 20 6C 64 61 20 23 24  33 66 0D 63 30 31 31 20  |  lda #$3f.c011 |
00003A60: 20 38 64 20 34 33 20 63  30 20 73 74 61 20 24 63  | 8d 43 c0 sta $c|
00003A70: 30 34 33 0D 63 30 31 34  20 20 61 30 20 30 30 20  |043.c014  a0 00 |
00003A80: 20 20 20 6C 64 79 20 23  24 30 30 0D 63 30 31 36  |   ldy #$00.c016|
00003A90: 20 20 61 32 20 30 34 20  20 20 20 6C 64 78 20 23  |  a2 04    ldx #|
00003AA0: 24 30 34 0D 63 30 31 38  20 20 62 39 20 34 30 20  |$04.c018  b9 40 |
00003AB0: 63 30 20 6C 64 61 20 24  63 30 34 30 2C 79 0D 63  |c0 lda $c040,y.c|
00003AC0: 30 31 62 20 20 30 61 20  20 20 20 20 20 20 61 73  |01b  0a       as|
00003AD0: 6C 0D 63 30 31 63 20 20  30 38 20 20 20 20 20 20  |l.c01c  08      |
00003AE0: 20 70 68 70 0D 63 30 31  64 20 20 30 61 20 20 20  | php.c01d  0a   |
00003AF0: 20 20 20 20 61 73 6C 0D  63 30 31 65 20 20 32 65  |    asl.c01e  2e|
00003B00: 20 35 30 20 63 30 20 72  6F 6C 20 24 63 30 35 30  | 50 c0 rol $c050|
00003B10: 0D 63 30 32 31 20 20 32  38 20 20 20 20 20 20 20  |.c021  28       |
00003B20: 70 6C 70 0D 63 30 32 32  20 20 32 65 20 35 30 20  |plp.c022  2e 50 |
00003B30: 63 30 20 72 6F 6C 20 24  63 30 35 30 0D 63 30 32  |c0 rol $c050.c02|
00003B40: 35 20 20 63 38 20 20 20  20 20 20 20 69 6E 79 0D  |5  c8       iny.|
00003B50: 63 30 32 36 20 20 63 61  20 20 20 20 20 20 20 64  |c026  ca       d|
00003B60: 65 78 0D 63 30 32 37 20  20 64 30 20 65 66 20 20  |ex.c027  d0 ef  |
00003B70: 20 20 62 6E 65 20 24 63  30 31 38 0D 63 30 32 39  |  bne $c018.c029|
00003B80: 20 20 61 64 20 35 30 20  63 30 20 6C 64 61 20 24  |  ad 50 c0 lda $|
00003B90: 63 30 35 30 0D 63 30 32  63 20 20 34 39 20 66 66  |c050.c02c  49 ff|
00003BA0: 20 20 20 20 65 6F 72 20  23 24 66 66 0D 63 30 32  |    eor #$ff.c02|
00003BB0: 65 20 20 38 64 20 35 30  20 63 30 20 73 74 61 20  |e  8d 50 c0 sta |
00003BC0: 24 63 30 35 30 0D 63 30  33 31 20 20 30 30 20 20  |$c050.c031  00  |
00003BD0: 20 20 20 20 20 62 72 6B  0D 0D 73 4F 20 49 46 20  |     brk..sO IF |
00003BE0: 59 4F 55 20 43 4F 4D 50  41 52 45 20 54 48 45 20  |YOU COMPARE THE |
00003BF0: 41 42 4F 56 45 20 53 49  4D 55 4C 41 54 45 44 20  |ABOVE SIMULATED |
00003C00: 52 4F 55 54 49 4E 45 2C  20 54 4F 20 54 48 45 20  |ROUTINE, TO THE |
00003C10: 41 43 54 55 41 4C 20 52  4F 55 54 49 4E 45 20 49  |ACTUAL ROUTINE I|
00003C20: 4E 20 54 48 45 0D 5A 41  50 4C 36 34 20 43 4F 44  |N THE.ZAPL64 COD|
00003C30: 45 20 41 54 20 72 65 63  76 30 34 2C 20 59 4F 55  |E AT recv04, YOU|
00003C40: 20 57 49 4C 4C 20 46 49  4E 44 20 54 48 45 4D 20  | WILL FIND THEM |
00003C50: 54 4F 20 42 45 20 53 49  4D 49 4C 41 52 2E 20 74  |TO BE SIMILAR. t|
00003C60: 4F 20 53 49 4D 55 4C 41  54 45 20 52 45 41 44 49  |O SIMULATE READI|
00003C70: 4E 47 0D 54 48 45 20 50  4F 52 54 2C 20 69 20 50  |NG.THE PORT, i P|
00003C80: 55 54 20 57 48 41 54 20  54 48 45 20 63 36 34 20  |UT WHAT THE c64 |
00003C90: 57 4F 55 4C 44 20 52 45  41 44 20 49 4E 20 34 20  |WOULD READ IN 4 |
00003CA0: 4C 4F 43 41 54 49 4F 4E  53 20 46 52 4F 4D 20 24  |LOCATIONS FROM $|
00003CB0: 63 30 34 30 2D 63 30 34  33 2E 20 61 4E 44 20 54  |c040-c043. aND T|
00003CC0: 4F 0D 53 49 4D 55 4C 41  54 45 20 54 48 45 20 6C  |O.SIMULATE THE l|
00003CD0: 64 61 20 70 6F 72 74 61  2C 20 69 20 55 53 45 44  |da porta, i USED|
00003CE0: 20 49 4E 44 45 58 45 44  20 41 44 44 52 45 53 53  | INDEXED ADDRESS|
00003CF0: 49 4E 47 20 28 6C 64 61  20 24 63 30 34 30 2C 79  |ING (lda $c040,y|
00003D00: 29 20 54 4F 20 53 49 4D  55 4C 41 54 45 0D 52 45  |) TO SIMULATE.RE|
00003D10: 41 44 49 4E 47 20 54 48  45 20 50 4F 52 54 2E 20  |ADING THE PORT. |
00003D20: 74 48 45 20 72 6F 6C 20  24 63 30 35 30 20 53 49  |tHE rol $c050 SI|
00003D30: 4D 55 4C 41 54 45 53 20  54 48 45 20 72 6F 6C 20  |MULATES THE rol |
00003D40: 62 73 6F 75 72 20 49 4E  20 54 48 45 20 7A 61 70  |bsour IN THE zap|
00003D50: 6C 36 34 20 43 4F 44 45  2E 20 61 4E 44 0D 49 4E  |l64 CODE. aND.IN|
00003D60: 53 54 45 41 44 20 4F 46  20 50 55 54 54 49 4E 47  |STEAD OF PUTTING|
00003D70: 20 54 48 45 20 46 49 4E  41 4C 20 44 41 54 41 20  | THE FINAL DATA |
00003D80: 42 59 54 45 20 28 24 34  62 29 20 49 4E 20 41 20  |BYTE ($4b) IN A |
00003D90: 42 55 46 46 45 52 2C 20  69 20 50 55 54 20 49 54  |BUFFER, i PUT IT|
00003DA0: 20 42 41 43 4B 20 49 4E  0D 24 63 30 35 30 20 28  | BACK IN.$c050 (|
00003DB0: 73 74 61 20 24 63 30 35  30 29 2E 20 73 4F 20 57  |sta $c050). sO W|
00003DC0: 48 45 4E 20 54 48 45 20  41 42 4F 56 45 20 52 4F  |HEN THE ABOVE RO|
00003DD0: 55 54 49 4E 45 20 49 53  20 52 55 4E 2C 20 41 20  |UTINE IS RUN, A |
00003DE0: 4C 4F 4F 4B 20 41 54 20  24 63 30 35 30 20 57 49  |LOOK AT $c050 WI|
00003DF0: 4C 4C 0D 52 45 56 45 41  4C 20 28 44 52 55 4D 20  |LL.REVEAL (DRUM |
00003E00: 52 4F 4C 4C 20 50 4C 45  41 53 45 29 20 24 34 62  |ROLL PLEASE) $4b|
00003E10: 21 21 21 20 63 4F 4D 50  55 54 45 52 53 20 41 4E  |!!! cOMPUTERS AN|
00003E20: 44 20 44 49 53 4B 20 44  52 49 56 45 53 20 41 52  |D DISK DRIVES AR|
00003E30: 45 20 57 4F 4E 44 45 52  46 55 4C 4C 2E 0D 69 54  |E WONDERFULL..iT|
00003E40: 20 54 4F 4F 4B 20 57 52  49 54 49 4E 47 20 41 4E  | TOOK WRITING AN|
00003E50: 44 20 52 45 41 44 49 4E  47 20 54 48 45 20 50 4F  |D READING THE PO|
00003E60: 52 54 20 34 20 54 49 4D  45 53 2C 20 50 4C 55 53  |RT 4 TIMES, PLUS|
00003E70: 20 4D 41 4A 4F 52 20 4D  41 54 48 2C 20 54 4F 20  | MAJOR MATH, TO |
00003E80: 4A 55 53 54 20 47 45 54  20 4F 55 52 0D 24 34 62  |JUST GET OUR.$4b|
00003E90: 20 44 41 54 41 20 42 59  54 45 21 20 73 4F 20 54  | DATA BYTE! sO T|
00003EA0: 48 41 54 53 20 41 42 4F  55 54 20 49 54 2E 20 69  |HATS ABOUT IT. i|
00003EB0: 20 48 4F 50 45 20 59 4F  55 20 47 45 54 20 41 20  | HOPE YOU GET A |
00003EC0: 42 45 54 54 45 52 20 49  44 45 41 20 57 48 59 20  |BETTER IDEA WHY |
00003ED0: 54 48 45 20 4D 41 54 48  0D 52 4F 55 54 49 4E 45  |THE MATH.ROUTINE|
00003EE0: 53 20 57 45 52 45 20 4E  45 43 45 53 53 41 52 59  |S WERE NECESSARY|
00003EF0: 20 41 4E 44 20 57 48 41  54 20 48 41 50 50 45 4E  | AND WHAT HAPPEN|
00003F00: 53 20 41 54 20 42 4F 54  48 20 45 4E 44 53 2E 0D  |S AT BOTH ENDS..|
00003F10: 0D 30 35 61 65 3A 20 61  32 20 30 34 20 20 20 20  |.05ae: a2 04    |
00003F20: 20 20 20 20 20 20 20 20  20 20 6C 64 78 20 20 20  |          ldx   |
00003F30: 23 34 20 20 20 20 20 20  20 20 20 3B 6F 4B 20 53  |#4         ;oK S|
00003F40: 45 4E 44 20 34 20 58 20  32 20 42 49 54 53 0D 30  |END 4 X 2 BITS.0|
00003F50: 35 62 30 3A 20 61 39 20  30 30 20 20 20 20 20 7A  |5b0: a9 00     z|
00003F60: 61 70 33 20 20 20 20 20  6C 64 61 20 20 20 23 30  |ap3     lda   #0|
00003F70: 0D 30 35 62 32 3A 20 30  36 20 38 35 20 20 20 20  |.05b2: 06 85    |
00003F80: 20 20 20 20 20 20 20 20  20 20 61 73 6C 20 20 20  |          asl   |
00003F90: 64 61 74 61 0D 30 35 62  34 3A 20 32 61 20 20 20  |data.05b4: 2a   |
00003FA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 72 6F  |              ro|
00003FB0: 6C 20 20 20 61 0D 30 35  62 35 3A 20 30 61 20 20  |l   a.05b5: 0a  |
00003FC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 61  |               a|
00003FD0: 73 6C 20 20 20 61 0D 30  35 62 36 3A 20 30 36 20  |sl   a.05b6: 06 |
00003FE0: 38 35 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |85              |
00003FF0: 61 73 6C 20 20 20 64 61  74 61 0D 30 35 62 38 3A  |asl   data.05b8:|
00004000: 20 32 61 20 20 20 20 20  20 20 20 20 20 20 20 20  | 2a             |
00004010: 20 20 20 20 72 6F 6C 20  20 20 61 0D 30 35 62 39  |    rol   a.05b9|
00004020: 3A 20 30 61 20 20 20 20  20 20 20 20 20 20 20 20  |: 0a            |
00004030: 20 20 20 20 20 61 73 6C  20 20 20 61 0D 30 35 62  |     asl   a.05b|
00004040: 61 3A 20 38 64 20 30 30  20 31 38 20 20 20 20 20  |a: 8d 00 18     |
00004050: 20 20 20 20 20 20 73 74  61 20 20 20 70 62 0D 30  |      sta   pb.0|
00004060: 35 62 64 3A 20 63 61 20  20 20 20 20 20 20 20 20  |5bd: ca         |
00004070: 20 20 20 20 20 20 20 20  64 65 78 0D 30 35 62 65  |        dex.05be|
00004080: 3A 20 64 30 20 66 30 20  20 20 20 20 20 20 20 20  |: d0 f0         |
00004090: 20 20 20 20 20 62 6E 65  20 20 20 7A 61 70 33 0D  |     bne   zap3.|
000040A0: 0D 77 41 49 54 20 46 4F  52 20 36 34 20 54 4F 20  |.wAIT FOR 64 TO |
000040B0: 47 45 54 20 4C 41 53 54  20 32 20 42 49 54 53 0D  |GET LAST 2 BITS.|
000040C0: 0D 30 35 63 30 3A 20 34  38 20 20 20 20 20 20 20  |.05c0: 48       |
000040D0: 20 20 20 20 20 20 20 20  20 20 70 68 61 20 20 20  |          pha   |
000040E0: 20 20 20 20 20 20 20 20  20 20 20 3B 77 41 49 54  |           ;wAIT|
000040F0: 20 4F 55 54 20 31 34 20  43 59 43 4C 45 53 0D 30  | OUT 14 CYCLES.0|
00004100: 35 63 31 3A 20 36 38 20  20 20 20 20 20 20 20 20  |5c1: 68         |
00004110: 20 20 20 20 20 20 20 20  70 6C 61 0D 30 35 63 32  |        pla.05c2|
00004120: 3A 20 34 38 20 20 20 20  20 20 20 20 20 20 20 20  |: 48            |
00004130: 20 20 20 20 20 70 68 61  0D 30 35 63 33 3A 20 36  |     pha.05c3: 6|
00004140: 38 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |8               |
00004150: 20 20 70 6C 61 0D 30 35  63 34 3A 20 61 39 20 30  |  pla.05c4: a9 0|
00004160: 30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6C  |0              l|
00004170: 64 61 20 20 20 23 30 0D  30 35 63 36 3A 20 38 64  |da   #0.05c6: 8d|
00004180: 20 30 30 20 31 38 20 20  20 20 20 20 20 20 20 20  | 00 18          |
00004190: 20 73 74 61 20 20 20 70  62 20 20 20 20 20 20 20  | sta   pb       |
000041A0: 20 20 3B 63 6C 6F 63 6B  2C 20 64 61 74 61 20 48  |  ;clock, data H|
000041B0: 49 47 48 0D 30 35 63 39  3A 20 63 38 20 20 20 20  |IGH.05c9: c8    |
000041C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 69 6E 79  |             iny|
000041D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 65  |              ;e|
000041E0: 4E 54 49 52 45 20 42 55  46 46 45 52 20 42 45 45  |NTIRE BUFFER BEE|
000041F0: 4E 20 53 45 4E 54 3F 0D  30 35 63 61 3A 20 64 30  |N SENT?.05ca: d0|
00004200: 20 63 63 20 20 20 20 20  20 20 20 20 20 20 20 20  | cc             |
00004210: 20 62 6E 65 20 20 20 78  6D 69 74 30 33 20 20 20  | bne   xmit03   |
00004220: 20 20 3B 6E 4F 2D 54 48  45 4E 20 54 52 41 4E 53  |  ;nO-THEN TRANS|
00004230: 4D 49 54 20 4D 4F 52 45  0D 30 35 63 63 3A 20 36  |MIT MORE.05cc: 6|
00004240: 30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0               |
00004250: 20 20 72 74 73 20 20 20  20 20 20 20 20 20 20 20  |  rts           |
00004260: 20 20 20 3B 79 45 53 2D  54 48 45 4E 20 52 45 54  |   ;yES-THEN RET|
00004270: 55 52 4E 0D 0D 72 45 41  44 20 41 20 73 45 43 54  |URN..rEAD A sECT|
00004280: 4F 52 20 49 4E 54 4F 20  62 75 66 30 0D 0D 30 35  |OR INTO buf0..05|
00004290: 63 64 3A 20 61 63 20 30  31 20 30 33 20 20 72 64  |cd: ac 01 03  rd|
000042A0: 73 65 63 74 20 20 20 6C  64 79 20 20 20 62 75 66  |sect   ldy   buf|
000042B0: 30 2B 31 20 20 20 20 20  3B 67 45 54 20 53 45 43  |0+1     ;gET SEC|
000042C0: 54 4F 52 20 23 20 46 52  4F 4D 20 42 55 46 46 45  |TOR # FROM BUFFE|
000042D0: 52 0D 30 35 64 30 3A 20  38 34 20 30 37 20 20 20  |R.05d0: 84 07   |
000042E0: 20 20 20 20 20 20 20 20  20 20 20 73 74 79 20 20  |           sty  |
000042F0: 20 68 64 72 73 2B 31 20  20 20 20 20 3B 61 4E 44  | hdrs+1     ;aND|
00004300: 20 53 54 4F 52 45 20 49  4E 20 6A 4F 42 20 53 45  | STORE IN jOB SE|
00004310: 43 54 4F 52 20 23 20 28  24 30 37 29 0D 30 35 64  |CTOR # ($07).05d|
00004320: 32 3A 20 61 64 20 30 30  20 30 33 20 20 20 20 20  |2: ad 00 03     |
00004330: 20 20 20 20 20 20 6C 64  61 20 20 20 62 75 66 30  |      lda   buf0|
00004340: 20 20 20 20 20 20 20 3B  67 45 54 20 54 52 41 43  |       ;gET TRAC|
00004350: 4B 20 23 20 46 52 4F 4D  20 42 55 46 46 45 52 0D  |K # FROM BUFFER.|
00004360: 30 35 64 35 3A 20 63 35  20 30 36 20 20 20 20 20  |05d5: c5 06     |
00004370: 20 20 20 20 20 20 20 20  20 63 6D 70 20 20 20 68  |         cmp   h|
00004380: 64 72 73 20 20 20 20 20  20 20 3B 63 48 45 43 4B  |drs       ;cHECK|
00004390: 20 46 4F 52 20 4E 45 57  20 54 52 41 43 4B 0D 30  | FOR NEW TRACK.0|
000043A0: 35 64 37 3A 20 30 38 20  20 20 20 20 20 20 20 20  |5d7: 08         |
000043B0: 20 20 20 20 20 20 20 20  70 68 70 0D 30 35 64 38  |        php.05d8|
000043C0: 3A 20 38 35 20 30 36 20  20 20 20 20 20 20 20 20  |: 85 06         |
000043D0: 20 20 20 20 20 73 74 61  20 20 20 68 64 72 73 20  |     sta   hdrs |
000043E0: 20 20 20 20 20 20 3B 73  54 4F 52 45 20 74 52 41  |      ;sTORE tRA|
000043F0: 43 4B 20 23 20 49 4E 20  6A 4F 42 20 74 52 41 43  |CK # IN jOB tRAC|
00004400: 4B 20 28 24 30 36 29 0D  30 35 64 61 3A 20 32 38  |K ($06).05da: 28|
00004410: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004420: 20 70 6C 70 0D 30 35 64  62 3A 20 66 30 20 31 30  | plp.05db: f0 10|
00004430: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 65  |              be|
00004440: 71 20 20 20 72 73 65 63  74 30 20 20 20 20 20 3B  |q   rsect0     ;|
00004450: 69 53 20 49 54 20 41 20  4E 45 57 20 54 52 41 43  |iS IT A NEW TRAC|
00004460: 4B 3F 2D 6E 4F 0D 30 35  64 64 3A 20 61 39 20 62  |K?-nO.05dd: a9 b|
00004470: 30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6C  |0              l|
00004480: 64 61 20 20 20 23 73 65  65 6B 20 20 20 20 20 20  |da   #seek      |
00004490: 3B 79 45 53 2C 20 54 48  45 4E 20 53 45 45 4B 20  |;yES, THEN SEEK |
000044A0: 54 48 45 20 4E 45 57 20  54 52 41 43 4B 0D 30 35  |THE NEW TRACK.05|
000044B0: 64 66 3A 20 38 35 20 30  30 20 20 20 20 20 64 6F  |df: 85 00     do|
000044C0: 6A 6F 62 20 20 20 20 73  74 61 20 20 20 6A 6F 62  |job    sta   job|
000044D0: 73 20 20 20 20 20 20 20  3B 42 59 20 50 55 54 54  |s       ;BY PUTT|
000044E0: 49 4E 47 20 54 48 45 20  6A 4F 42 20 43 4F 44 45  |ING THE jOB CODE|
000044F0: 20 46 4F 52 20 73 65 65  6B 0D 20 20 20 20 20 20  | FOR seek.      |
00004500: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004510: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004520: 20 20 20 20 3B 49 4E 54  4F 20 24 30 30 30 30 2E  |    ;INTO $0000.|
00004530: 0D 30 35 65 31 3A 20 35  38 20 20 20 20 20 20 20  |.05e1: 58       |
00004540: 20 20 20 20 20 20 20 20  20 20 63 6C 69 20 20 20  |          cli   |
00004550: 20 20 20 20 20 20 20 20  20 20 20 3B 65 4E 41 42  |           ;eNAB|
00004560: 4C 45 20 49 4E 54 45 52  52 55 50 54 53 20 54 4F  |LE INTERRUPTS TO|
00004570: 20 44 4F 20 4A 4F 42 0D  30 35 65 32 3A 20 32 34  | DO JOB.05e2: 24|
00004580: 20 30 30 20 20 20 20 20  64 6F 6A 6F 62 31 20 20  | 00     dojob1  |
00004590: 20 62 69 74 20 20 20 6A  6F 62 73 20 20 20 20 20  | bit   jobs     |
000045A0: 20 20 3B 69 53 20 6A 4F  42 20 46 49 4E 49 53 48  |  ;iS jOB FINISH|
000045B0: 45 44 3F 0D 30 35 65 34  3A 20 33 30 20 66 63 20  |ED?.05e4: 30 fc |
000045C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 62 6D 69  |             bmi|
000045D0: 20 20 20 64 6F 6A 6F 62  31 20 20 20 20 20 3B 6E  |   dojob1     ;n|
000045E0: 4F 2D 54 48 45 4E 20 57  41 49 54 20 55 4E 54 49  |O-THEN WAIT UNTI|
000045F0: 4C 20 49 54 20 49 53 0D  30 35 65 36 3A 20 37 38  |L IT IS.05e6: 78|
00004600: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004610: 20 73 65 69 20 20 20 20  20 20 20 20 20 20 20 20  | sei            |
00004620: 20 20 3B 79 45 53 2D 54  48 45 4E 20 44 49 53 41  |  ;yES-THEN DISA|
00004630: 42 4C 45 20 49 4E 54 45  52 52 55 50 54 53 20 41  |BLE INTERRUPTS A|
00004640: 47 41 49 4E 0D 30 35 65  37 3A 20 61 35 20 30 30  |GAIN.05e7: a5 00|
00004650: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 6C 64  |              ld|
00004660: 61 20 20 20 6A 6F 62 73  20 20 20 20 20 20 20 3B  |a   jobs       ;|
00004670: 67 45 54 20 54 48 45 20  6A 4F 42 20 45 52 52 4F  |gET THE jOB ERRO|
00004680: 52 20 43 4F 44 45 0D 30  35 65 39 3A 20 63 39 20  |R CODE.05e9: c9 |
00004690: 30 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |01              |
000046A0: 63 6D 70 20 20 20 23 24  30 31 20 20 20 20 20 20  |cmp   #$01      |
000046B0: 20 3B 6A 4F 42 20 52 55  4E 20 45 52 52 4F 52 20  | ;jOB RUN ERROR |
000046C0: 46 52 45 45 3F 0D 30 35  65 62 3A 20 64 30 20 34  |FREE?.05eb: d0 4|
000046D0: 65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |e              b|
000046E0: 6E 65 20 20 20 6A 6F 62  65 72 72 20 20 20 20 20  |ne   joberr     |
000046F0: 3B 6E 4F 2D 54 48 45 4E  20 44 49 53 50 4C 41 59  |;nO-THEN DISPLAY|
00004700: 20 45 52 52 4F 52 0D 0D  6E 4F 57 20 52 45 41 44  | ERROR..nOW READ|
00004710: 20 49 4E 20 54 48 45 20  73 45 43 54 4F 52 0D 0D  | IN THE sECTOR..|
00004720: 30 35 65 64 3A 20 61 39  20 65 65 20 20 20 20 20  |05ed: a9 ee     |
00004730: 72 73 65 63 74 30 20 20  20 6C 64 61 20 20 20 23  |rsect0   lda   #|
00004740: 24 65 65 20 20 20 20 20  20 20 3B 79 45 53 2D 54  |$ee       ;yES-T|
00004750: 48 45 4E 20 52 45 41 44  20 49 4E 20 54 48 45 20  |HEN READ IN THE |
00004760: 53 45 43 54 4F 52 0D 30  35 65 66 3A 20 38 64 20  |SECTOR.05ef: 8d |
00004770: 30 63 20 31 63 20 20 20  20 20 20 20 20 20 20 20  |0c 1c           |
00004780: 73 74 61 20 20 20 70 63  72 32 20 20 20 20 20 20  |sta   pcr2      |
00004790: 20 3B 72 45 41 44 20 26  20 45 4E 41 42 4C 45 20  | ;rEAD & ENABLE |
000047A0: 53 59 4E 43 0D 30 35 66  32 3A 20 61 39 20 30 36  |SYNC.05f2: a9 06|
000047B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 6C 64  |              ld|
000047C0: 61 20 20 20 23 36 20 20  20 20 20 20 20 20 20 3B  |a   #6         ;|
000047D0: 6D 41 4B 45 20 4F 55 52  20 48 45 41 44 45 52 20  |mAKE OUR HEADER |
000047E0: 50 4F 49 4E 54 45 52 20  41 54 20 24 33 32 0D 30  |POINTER AT $32.0|
000047F0: 35 66 34 3A 20 38 35 20  33 32 20 20 20 20 20 20  |5f4: 85 32      |
00004800: 20 20 20 20 20 20 20 20  73 74 61 20 20 20 68 64  |        sta   hd|
00004810: 72 70 6E 74 20 20 20 20  20 3B 50 4F 49 4E 54 20  |rpnt     ;POINT |
00004820: 54 4F 20 4F 55 52 20 41  43 54 49 56 45 20 48 45  |TO OUR ACTIVE HE|
00004830: 41 44 45 52 0D 30 35 66  36 3A 20 61 39 20 30 30  |ADER.05f6: a9 00|
00004840: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 6C 64  |              ld|
00004850: 61 20 20 20 23 30 20 20  20 20 20 20 20 20 20 3B  |a   #0         ;|
00004860: 41 54 20 24 30 30 30 36  0D 30 35 66 38 3A 20 38  |AT $0006.05f8: 8|
00004870: 35 20 33 33 20 20 20 20  20 20 20 20 20 20 20 20  |5 33            |
00004880: 20 20 73 74 61 20 20 20  68 64 72 70 6E 74 2B 31  |  sta   hdrpnt+1|
00004890: 0D 30 35 66 61 3A 20 38  35 20 33 30 20 20 20 20  |.05fa: 85 30    |
000048A0: 20 20 20 20 20 20 20 20  20 20 73 74 61 20 20 20  |          sta   |
000048B0: 62 75 66 70 6E 74 20 20  20 20 20 3B 6E 4F 57 20  |bufpnt     ;nOW |
000048C0: 4D 41 4B 45 20 4F 55 52  20 42 55 46 46 45 52 20  |MAKE OUR BUFFER |
000048D0: 50 4F 49 4E 54 45 52 0D  30 35 66 63 3A 20 61 39  |POINTER.05fc: a9|
000048E0: 20 30 33 20 20 20 20 20  20 20 20 20 20 20 20 20  | 03             |
000048F0: 20 6C 64 61 20 20 20 23  3E 62 75 66 30 20 20 20  | lda   #>buf0   |
00004900: 20 20 3B 41 54 20 24 33  30 20 50 4F 49 4E 54 20  |  ;AT $30 POINT |
00004910: 54 4F 20 4F 55 52 20 41  43 54 49 56 45 0D 30 35  |TO OUR ACTIVE.05|
00004920: 66 65 3A 20 38 35 20 33  31 20 20 20 20 20 20 20  |fe: 85 31       |
00004930: 20 20 20 20 20 20 20 73  74 61 20 20 20 62 75 66  |       sta   buf|
00004940: 70 6E 74 2B 31 20 20 20  3B 42 55 46 46 45 52 20  |pnt+1   ;BUFFER |
00004950: 41 54 20 24 30 33 30 30  0D 30 36 30 30 3A 20 32  |AT $0300.0600: 2|
00004960: 30 20 35 32 20 30 36 20  20 20 20 20 20 20 20 20  |0 52 06         |
00004970: 20 20 6A 73 72 20 20 20  64 73 74 72 74 20 20 20  |  jsr   dstrt   |
00004980: 20 20 20 3B 66 49 4E 44  20 44 45 53 49 52 45 44  |   ;fIND DESIRED|
00004990: 20 53 45 43 54 4F 52 0D  30 36 30 33 3A 20 35 30  | SECTOR.0603: 50|
000049A0: 20 66 65 20 20 20 20 20  72 64 73 63 74 31 20 20  | fe     rdsct1  |
000049B0: 20 62 76 63 20 20 20 72  64 73 63 74 31 20 20 20  | bvc   rdsct1   |
000049C0: 20 20 3B 73 45 43 54 4F  52 20 46 4F 55 4E 44 2C  |  ;sECTOR FOUND,|
000049D0: 20 53 4F 20 52 45 41 44  20 44 41 54 41 0D 30 36  | SO READ DATA.06|
000049E0: 30 35 3A 20 62 38 20 20  20 20 20 20 20 20 20 20  |05: b8          |
000049F0: 20 20 20 20 20 20 20 63  6C 76 0D 30 36 30 36 3A  |       clv.0606:|
00004A00: 20 61 64 20 30 31 20 31  63 20 20 20 20 20 20 20  | ad 01 1c       |
00004A10: 20 20 20 20 6C 64 61 20  20 20 64 61 74 61 32 20  |    lda   data2 |
00004A20: 20 20 20 20 20 3B 72 45  41 44 20 67 63 72 20 44  |     ;rEAD gcr D|
00004A30: 41 54 41 20 42 59 54 45  0D 30 36 30 39 3A 20 39  |ATA BYTE.0609: 9|
00004A40: 39 20 30 30 20 30 33 20  20 20 20 20 20 20 20 20  |9 00 03         |
00004A50: 20 20 73 74 61 20 20 20  62 75 66 30 2C 79 20 20  |  sta   buf0,y  |
00004A60: 20 20 20 3B 41 4E 44 20  50 55 54 20 49 54 20 49  |   ;AND PUT IT I|
00004A70: 4E 20 62 75 66 30 20 28  24 30 33 30 30 29 0D 30  |N buf0 ($0300).0|
00004A80: 36 30 63 3A 20 63 38 20  20 20 20 20 20 20 20 20  |60c: c8         |
00004A90: 20 20 20 20 20 20 20 20  69 6E 79 20 20 20 20 20  |        iny     |
00004AA0: 20 20 20 20 20 20 20 20  20 3B 69 4E 43 52 45 4D  |         ;iNCREM|
00004AB0: 45 4E 54 20 42 55 46 46  45 52 20 50 4F 49 4E 54  |ENT BUFFER POINT|
00004AC0: 45 52 0D 30 36 30 64 3A  20 64 30 20 66 34 20 20  |ER.060d: d0 f4  |
00004AD0: 20 20 20 20 20 20 20 20  20 20 20 20 62 6E 65 20  |            bne |
00004AE0: 20 20 72 64 73 63 74 31  20 20 20 20 20 3B 68 41  |  rdsct1     ;hA|
00004AF0: 53 20 32 35 36 20 67 63  72 20 42 59 54 45 53 20  |S 256 gcr BYTES |
00004B00: 42 45 45 4E 20 52 45 41  44 3F 20 6E 4F 0D 30 36  |BEEN READ? nO.06|
00004B10: 30 66 3A 20 61 30 20 62  61 20 20 20 20 20 20 20  |0f: a0 ba       |
00004B20: 20 20 20 20 20 20 20 6C  64 79 20 20 20 23 24 62  |       ldy   #$b|
00004B30: 61 0D 30 36 31 31 3A 20  35 30 20 66 65 20 20 20  |a.0611: 50 fe   |
00004B40: 20 20 72 64 73 63 74 32  20 20 20 62 76 63 20 20  |  rdsct2   bvc  |
00004B50: 20 72 64 73 63 74 32 20  20 20 20 20 3B 79 45 53  | rdsct2     ;yES|
00004B60: 2D 54 48 45 4E 20 50 55  54 20 54 48 45 20 52 45  |-THEN PUT THE RE|
00004B70: 4D 41 49 4E 49 4E 47 20  36 39 0D 30 36 31 33 3A  |MAINING 69.0613:|
00004B80: 20 62 38 20 20 20 20 20  20 20 20 20 20 20 20 20  | b8             |
00004B90: 20 20 20 20 63 6C 76 20  20 20 20 20 20 20 20 20  |    clv         |
00004BA0: 20 20 20 20 20 3B 67 63  72 20 44 41 54 41 20 42  |     ;gcr DATA B|
00004BB0: 59 54 45 53 20 49 4E 54  4F 20 4F 55 52 20 4F 56  |YTES INTO OUR OV|
00004BC0: 45 52 46 4C 4F 57 0D 30  36 31 34 3A 20 61 64 20  |ERFLOW.0614: ad |
00004BD0: 30 31 20 31 63 20 20 20  20 20 20 20 20 20 20 20  |01 1c           |
00004BE0: 6C 64 61 20 20 20 64 61  74 61 32 20 20 20 20 20  |lda   data2     |
00004BF0: 20 3B 41 52 45 41 20 41  54 20 24 30 31 62 61 2E  | ;AREA AT $01ba.|
00004C00: 0D 30 36 31 37 3A 20 39  39 20 30 30 20 30 31 20  |.0617: 99 00 01 |
00004C10: 20 20 20 20 20 20 20 20  20 20 73 74 61 20 20 20  |          sta   |
00004C20: 24 30 31 30 30 2C 79 0D  30 36 31 61 3A 20 63 38  |$0100,y.061a: c8|
00004C30: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004C40: 20 69 6E 79 0D 30 36 31  62 3A 20 64 30 20 66 34  | iny.061b: d0 f4|
00004C50: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 6E  |              bn|
00004C60: 65 20 20 20 72 64 73 63  74 32 0D 30 36 31 64 3A  |e   rdsct2.061d:|
00004C70: 20 32 30 20 65 30 20 66  38 20 20 20 20 20 20 20  | 20 e0 f8       |
00004C80: 20 20 20 20 6A 73 72 20  20 20 67 63 72 62 69 6E  |    jsr   gcrbin|
00004C90: 20 20 20 20 20 3B 63 4F  4E 56 45 52 54 20 4F 55  |     ;cONVERT OU|
00004CA0: 52 20 33 32 35 20 67 63  72 20 42 59 54 45 53 20  |R 325 gcr BYTES |
00004CB0: 54 4F 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |TO.             |
00004CC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004CD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 32 35  |             ;25|
00004CE0: 36 20 42 49 4E 41 52 59  20 44 41 54 41 20 42 59  |6 BINARY DATA BY|
00004CF0: 54 45 53 0D 30 36 32 30  3A 20 61 35 20 33 38 20  |TES.0620: a5 38 |
00004D00: 20 20 20 20 20 20 20 20  20 20 20 20 20 6C 64 61  |             lda|
00004D10: 20 20 20 62 69 64 20 20  20 20 20 20 20 20 3B 67  |   bid        ;g|
00004D20: 45 54 20 54 48 45 20 4E  4F 52 4D 41 4C 20 64 41  |ET THE NORMAL dA|
00004D30: 54 41 20 62 4C 4F 43 4B  20 69 64 0D 20 20 20 20  |TA bLOCK id.    |
00004D40: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004D50: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004D60: 20 20 20 20 20 20 3B 43  48 41 52 20 28 24 30 37  |      ;CHAR ($07|
00004D70: 29 0D 30 36 32 32 3A 20  63 35 20 34 37 20 20 20  |).0622: c5 47   |
00004D80: 20 20 20 20 20 20 20 20  20 20 20 63 6D 70 20 20  |           cmp  |
00004D90: 20 64 62 69 64 20 20 20  20 20 20 20 3B 49 53 20  | dbid       ;IS |
00004DA0: 49 54 20 54 48 45 20 53  41 4D 45 20 41 53 20 4F  |IT THE SAME AS O|
00004DB0: 55 52 20 69 64 20 52 45  41 44 20 49 4E 3F 0D 30  |UR id READ IN?.0|
00004DC0: 36 32 34 3A 20 66 30 20  30 34 20 20 20 20 20 20  |624: f0 04      |
00004DD0: 20 20 20 20 20 20 20 20  62 65 71 20 20 20 72 64  |        beq   rd|
00004DE0: 73 63 74 33 20 20 20 20  20 3B 79 45 53 2D 54 48  |sct3     ;yES-TH|
00004DF0: 45 4E 20 43 48 45 43 4B  20 54 48 45 20 43 48 45  |EN CHECK THE CHE|
00004E00: 43 4B 53 55 4D 0D 30 36  32 36 3A 20 61 39 20 32  |CKSUM.0626: a9 2|
00004E10: 32 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6C  |2              l|
00004E20: 64 61 20 20 20 23 24 32  32 20 20 20 20 20 20 20  |da   #$22       |
00004E30: 3B 6E 4F 2D 54 48 45 4E  20 44 49 53 50 4C 41 59  |;nO-THEN DISPLAY|
00004E40: 20 65 52 52 4F 52 20 32  32 0D 30 36 32 38 3A 20  | eRROR 22.0628: |
00004E50: 64 30 20 31 34 20 20 20  20 20 20 20 20 20 20 20  |d0 14           |
00004E60: 20 20 20 62 6E 65 20 20  20 65 72 72 6F 72 20 20  |   bne   error  |
00004E70: 20 20 20 20 3B 28 64 41  54 41 20 42 4C 4F 43 4B  |    ;(dATA BLOCK|
00004E80: 20 4E 4F 54 20 46 4F 55  4E 44 29 0D 0D 30 36 32  | NOT FOUND)..062|
00004E90: 61 3A 20 32 30 20 65 39  20 66 35 20 20 72 64 73  |a: 20 e9 f5  rds|
00004EA0: 63 74 33 20 20 20 6A 73  72 20 20 20 63 68 6B 62  |ct3   jsr   chkb|
00004EB0: 6C 6B 20 20 20 20 20 3B  63 41 4C 43 55 4C 41 54  |lk     ;cALCULAT|
00004EC0: 45 20 44 41 54 41 20 42  4C 4F 43 4B 20 43 48 45  |E DATA BLOCK CHE|
00004ED0: 43 4B 53 55 4D 0D 30 36  32 64 3A 20 63 35 20 33  |CKSUM.062d: c5 3|
00004EE0: 61 20 20 20 20 20 20 20  20 20 20 20 20 20 20 63  |a              c|
00004EF0: 6D 70 20 20 20 63 68 6B  73 75 6D 20 20 20 20 20  |mp   chksum     |
00004F00: 3B 69 53 20 49 54 20 53  41 4D 45 20 41 53 20 43  |;iS IT SAME AS C|
00004F10: 48 45 43 4B 53 55 4D 20  42 59 54 45 20 52 45 41  |HECKSUM BYTE REA|
00004F20: 44 3F 0D 30 36 32 66 3A  20 66 30 20 30 34 20 20  |D?.062f: f0 04  |
00004F30: 20 20 20 20 20 20 20 20  20 20 20 20 62 65 71 20  |            beq |
00004F40: 20 20 72 64 73 63 74 34  20 20 20 20 20 3B 79 45  |  rdsct4     ;yE|
00004F50: 53 2D 54 48 45 4E 20 44  41 54 41 20 49 53 20 6F  |S-THEN DATA IS o|
00004F60: 6B 0D 30 36 33 31 3A 20  61 39 20 32 33 20 20 20  |k.0631: a9 23   |
00004F70: 20 20 20 20 20 20 20 20  20 20 20 6C 64 61 20 20  |           lda  |
00004F80: 20 23 24 32 33 20 20 20  20 20 20 20 3B 6E 4F 2D  | #$23       ;nO-|
00004F90: 54 48 45 4E 20 44 49 53  50 4C 41 59 20 41 20 65  |THEN DISPLAY A e|
00004FA0: 52 52 4F 52 20 32 33 0D  30 36 33 33 3A 20 64 30  |RROR 23.0633: d0|
00004FB0: 20 30 39 20 20 20 20 20  20 20 20 20 20 20 20 20  | 09             |
00004FC0: 20 62 6E 65 20 20 20 65  72 72 6F 72 20 20 20 20  | bne   error    |
00004FD0: 20 20 3B 28 64 41 54 41  20 42 4C 4F 43 4B 20 43  |  ;(dATA BLOCK C|
00004FE0: 48 45 43 4B 53 55 4D 20  45 52 52 4F 52 29 0D 0D  |HECKSUM ERROR)..|
00004FF0: 30 36 33 35 3A 20 61 39  20 65 63 20 20 20 20 20  |0635: a9 ec     |
00005000: 72 64 73 63 74 34 20 20  20 6C 64 61 20 20 20 23  |rdsct4   lda   #|
00005010: 24 65 63 20 20 20 20 20  20 20 3B 64 41 54 41 20  |$ec       ;dATA |
00005020: 6F 6B 20 53 4F 20 52 45  54 55 52 4E 0D 30 36 33  |ok SO RETURN.063|
00005030: 37 3A 20 38 64 20 30 63  20 31 63 20 20 20 20 20  |7: 8d 0c 1c     |
00005040: 20 20 20 20 20 20 73 74  61 20 20 20 70 63 72 32  |      sta   pcr2|
00005050: 0D 30 36 33 61 3A 20 36  30 20 20 20 20 20 20 20  |.063a: 60       |
00005060: 20 20 20 20 20 20 20 20  20 20 72 74 73 0D 0D 30  |          rts..0|
00005070: 36 33 62 3A 20 31 38 20  20 20 20 20 20 20 20 6A  |63b: 18        j|
00005080: 6F 62 65 72 72 20 20 20  63 6C 63 0D 30 36 33 63  |oberr   clc.063c|
00005090: 3A 20 36 39 20 31 38 20  20 20 20 20 20 20 20 20  |: 69 18         |
000050A0: 20 20 20 20 20 61 64 63  20 20 20 23 24 31 38 0D  |     adc   #$18.|
000050B0: 30 36 33 65 3A 20 38 35  20 34 34 20 20 20 20 20  |063e: 85 44     |
000050C0: 65 72 72 6F 72 20 20 20  20 73 74 61 20 20 20 65  |error    sta   e|
000050D0: 72 72 6E 75 6D 20 20 20  20 20 3B 61 44 44 20 31  |rrnum     ;aDD 1|
000050E0: 38 20 54 4F 20 6A 4F 42  20 45 52 52 4F 52 20 23  |8 TO jOB ERROR #|
000050F0: 20 54 4F 20 47 49 56 45  0D 20 20 20 20 20 20 20  | TO GIVE.       |
00005100: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005110: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005120: 20 20 20 3B 41 20 4E 4F  52 4D 41 4C 20 45 52 52  |   ;A NORMAL ERR|
00005130: 4F 52 20 4E 55 4D 42 45  52 2E 0D 30 36 34 30 3A  |OR NUMBER..0640:|
00005140: 20 61 39 20 66 66 20 20  20 20 20 20 20 20 20 20  | a9 ff          |
00005150: 20 20 20 20 6C 64 61 20  20 20 23 24 66 66 0D 30  |    lda   #$ff.0|
00005160: 36 34 32 3A 20 38 64 20  30 30 20 30 33 20 20 20  |642: 8d 00 03   |
00005170: 20 20 20 20 20 20 20 20  73 74 61 20 20 20 62 75  |        sta   bu|
00005180: 66 30 0D 30 36 34 35 3A  20 32 30 20 39 36 20 30  |f0.0645: 20 96 0|
00005190: 35 20 20 20 20 20 20 20  20 20 20 20 6A 73 72 20  |5           jsr |
000051A0: 20 20 78 6D 69 74 36 34  0D 30 36 34 38 3A 20 61  |  xmit64.0648: a|
000051B0: 39 20 33 61 20 20 20 20  20 20 20 20 20 20 20 20  |9 3a            |
000051C0: 20 20 6C 64 61 20 20 20  23 24 33 61 20 20 20 20  |  lda   #$3a    |
000051D0: 20 20 20 3B 72 45 53 45  54 20 49 4E 54 45 52 52  |   ;rESET INTERR|
000051E0: 55 50 54 20 42 41 43 4B  20 54 4F 20 4E 4F 52 4D  |UPT BACK TO NORM|
000051F0: 41 4C 0D 30 36 34 61 3A  20 38 64 20 30 37 20 31  |AL.064a: 8d 07 1|
00005200: 63 20 20 20 20 20 20 20  20 20 20 20 73 74 61 20  |c           sta |
00005210: 20 20 24 31 63 30 37 0D  30 36 34 64 3A 20 61 35  |  $1c07.064d: a5|
00005220: 20 34 34 20 20 20 20 20  20 20 20 20 20 20 20 20  | 44             |
00005230: 20 6C 64 61 20 20 20 65  72 72 6E 75 6D 20 20 20  | lda   errnum   |
00005240: 20 20 3B 67 45 54 20 54  48 45 20 45 52 52 4F 52  |  ;gET THE ERROR|
00005250: 20 4E 55 4D 42 45 52 0D  30 36 34 66 3A 20 34 63  | NUMBER.064f: 4c|
00005260: 20 63 38 20 63 31 20 20  20 20 20 20 20 20 20 20  | c8 c1          |
00005270: 20 6A 6D 70 20 20 20 63  6D 64 65 72 72 20 20 20  | jmp   cmderr   |
00005280: 20 20 3B 64 49 53 50 4C  41 59 2D 67 4F 20 54 4F  |  ;dISPLAY-gO TO|
00005290: 20 63 36 34 0D 0D 66 49  4E 44 20 44 45 53 49 52  | c64..fIND DESIR|
000052A0: 45 44 20 73 45 43 54 4F  52 0D 0D 30 36 35 32 3A  |ED sECTOR..0652:|
000052B0: 20 32 30 20 35 38 20 30  36 20 20 64 73 74 72 74  | 20 58 06  dstrt|
000052C0: 20 20 20 20 6A 73 72 20  20 20 73 72 63 68 0D 30  |    jsr   srch.0|
000052D0: 36 35 35 3A 20 34 63 20  39 34 20 30 36 20 20 20  |655: 4c 94 06   |
000052E0: 20 20 20 20 20 20 20 20  6A 6D 70 20 20 20 73 79  |        jmp   sy|
000052F0: 6E 63 68 0D 0D 73 45 41  52 43 48 20 46 4F 52 20  |nch..sEARCH FOR |
00005300: 41 20 53 50 45 43 49 46  49 43 20 48 45 41 44 45  |A SPECIFIC HEADE|
00005310: 52 0D 0D 30 36 35 38 3A  20 61 35 20 31 32 20 20  |R..0658: a5 12  |
00005320: 20 20 20 73 72 63 68 20  20 20 20 20 6C 64 61 20  |   srch     lda |
00005330: 20 20 64 73 6B 69 64 20  20 20 20 20 20 3B 67 45  |  dskid      ;gE|
00005340: 54 20 6D 41 53 54 45 52  20 44 49 53 4B 20 69 64  |T mASTER DISK id|
00005350: 20 62 59 54 45 20 31 0D  30 36 35 61 3A 20 38 35  | bYTE 1.065a: 85|
00005360: 20 31 36 20 20 20 20 20  20 20 20 20 20 20 20 20  | 16             |
00005370: 20 73 74 61 20 20 20 68  65 61 64 65 72 20 20 20  | sta   header   |
00005380: 20 20 3B 41 4E 44 20 55  53 45 20 46 4F 52 20 48  |  ;AND USE FOR H|
00005390: 45 41 44 45 52 20 44 49  53 4B 20 69 64 0D 30 36  |EADER DISK id.06|
000053A0: 35 63 3A 20 61 35 20 31  33 20 20 20 20 20 20 20  |5c: a5 13       |
000053B0: 20 20 20 20 20 20 20 6C  64 61 20 20 20 64 73 6B  |       lda   dsk|
000053C0: 69 64 2B 31 20 20 20 20  3B 67 45 54 20 6D 41 53  |id+1    ;gET mAS|
000053D0: 54 45 52 20 44 49 53 4B  20 69 64 20 42 59 54 45  |TER DISK id BYTE|
000053E0: 20 32 0D 30 36 35 65 3A  20 38 35 20 31 37 20 20  | 2.065e: 85 17  |
000053F0: 20 20 20 20 20 20 20 20  20 20 20 20 73 74 61 20  |            sta |
00005400: 20 20 68 65 61 64 65 72  2B 31 20 20 20 3B 41 4E  |  header+1   ;AN|
00005410: 44 20 55 53 45 20 46 4F  52 20 48 45 41 44 45 52  |D USE FOR HEADER|
00005420: 20 44 49 53 4B 20 69 64  0D 30 36 36 30 3A 20 61  | DISK id.0660: a|
00005430: 35 20 30 36 20 20 20 20  20 20 20 20 20 20 20 20  |5 06            |
00005440: 20 20 6C 64 61 20 20 20  68 64 72 73 20 20 20 20  |  lda   hdrs    |
00005450: 20 20 20 3B 67 45 54 20  6A 4F 42 20 54 52 41 43  |   ;gET jOB TRAC|
00005460: 4B 20 23 0D 30 36 36 32  3A 20 38 35 20 31 38 20  |K #.0662: 85 18 |
00005470: 20 20 20 20 20 20 20 20  20 20 20 20 20 73 74 61  |             sta|
00005480: 20 20 20 68 65 61 64 65  72 2B 32 20 20 20 3B 41  |   header+2   ;A|
00005490: 4E 44 20 55 53 45 20 46  4F 52 20 48 45 41 44 45  |ND USE FOR HEADE|
000054A0: 52 20 54 52 41 43 4B 0D  30 36 36 34 3A 20 61 35  |R TRACK.0664: a5|
000054B0: 20 30 37 20 20 20 20 20  20 20 20 20 20 20 20 20  | 07             |
000054C0: 20 6C 64 61 20 20 20 68  64 72 73 2B 31 20 20 20  | lda   hdrs+1   |
000054D0: 20 20 3B 67 45 54 20 6A  4F 42 20 53 45 43 54 4F  |  ;gET jOB SECTO|
000054E0: 52 20 23 0D 30 36 36 36  3A 20 38 35 20 31 39 20  |R #.0666: 85 19 |
000054F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 73 74 61  |             sta|
00005500: 20 20 20 68 65 61 64 65  72 2B 33 20 20 20 3B 41  |   header+3   ;A|
00005510: 4E 44 20 55 53 45 20 46  4F 52 20 48 45 41 44 45  |ND USE FOR HEADE|
00005520: 52 20 53 45 43 54 4F 52  0D 30 36 36 38 3A 20 61  |R SECTOR.0668: a|
00005530: 39 20 30 30 20 20 20 20  20 20 20 20 20 20 20 20  |9 00            |
00005540: 20 20 6C 64 61 20 20 20  23 30 30 0D 30 36 36 61  |  lda   #00.066a|
00005550: 3A 20 34 35 20 31 36 20  20 20 20 20 20 20 20 20  |: 45 16         |
00005560: 20 20 20 20 20 65 6F 72  20 20 20 68 65 61 64 65  |     eor   heade|
00005570: 72 20 20 20 20 20 3B 67  45 54 20 54 48 45 20 48  |r     ;gET THE H|
00005580: 45 41 44 45 52 20 43 48  45 43 4B 53 55 4D 20 42  |EADER CHECKSUM B|
00005590: 59 0D 30 36 36 63 3A 20  34 35 20 31 37 20 20 20  |Y.066c: 45 17   |
000055A0: 20 20 20 20 20 20 20 20  20 20 20 65 6F 72 20 20  |           eor  |
000055B0: 20 68 65 61 64 65 72 2B  31 20 20 20 3B 45 58 43  | header+1   ;EXC|
000055C0: 4C 55 53 49 56 45 20 6F  72 27 49 4E 47 20 54 48  |LUSIVE or'ING TH|
000055D0: 45 20 69 64 0D 30 36 36  65 3A 20 34 35 20 31 38  |E id.066e: 45 18|
000055E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 65 6F  |              eo|
000055F0: 72 20 20 20 68 65 61 64  65 72 2B 32 20 20 20 3B  |r   header+2   ;|
00005600: 42 59 54 45 53 2C 20 74  52 41 43 4B 20 41 4E 44  |BYTES, tRACK AND|
00005610: 20 73 45 43 54 4F 52 0D  30 36 37 30 3A 20 34 35  | sECTOR.0670: 45|
00005620: 20 31 39 20 20 20 20 20  20 20 20 20 20 20 20 20  | 19             |
00005630: 20 65 6F 72 20 20 20 68  65 61 64 65 72 2B 33 20  | eor   header+3 |
00005640: 20 20 3B 4E 55 4D 42 45  52 53 2C 20 41 4E 44 20  |  ;NUMBERS, AND |
00005650: 53 54 4F 52 49 4E 47 20  54 48 45 0D 30 36 37 32  |STORING THE.0672|
00005660: 3A 20 38 35 20 31 61 20  20 20 20 20 20 20 20 20  |: 85 1a         |
00005670: 20 20 20 20 20 73 74 61  20 20 20 68 65 61 64 65  |     sta   heade|
00005680: 72 2B 34 20 20 20 3B 52  45 53 55 4C 54 20 48 45  |r+4   ;RESULT HE|
00005690: 52 45 2E 0D 30 36 37 34  3A 20 32 30 20 33 34 20  |RE..0674: 20 34 |
000056A0: 66 39 20 20 20 20 20 20  20 20 20 20 20 6A 73 72  |f9           jsr|
000056B0: 20 20 20 63 6F 6E 68 64  72 20 20 20 20 20 3B 63  |   conhdr     ;c|
000056C0: 4F 4E 56 45 52 54 20 54  4F 20 67 63 72 2C 20 50  |ONVERT TO gcr, P|
000056D0: 55 54 20 49 4E 20 73 74  61 62 0D 30 36 37 37 3A  |UT IN stab.0677:|
000056E0: 20 61 32 20 35 61 20 20  20 20 20 20 20 20 20 20  | a2 5a          |
000056F0: 20 20 20 20 6C 64 78 20  20 20 23 24 35 61 20 20  |    ldx   #$5a  |
00005700: 20 20 20 20 20 3B 74 52  59 20 39 30 20 54 49 4D  |     ;tRY 90 TIM|
00005710: 45 53 0D 30 36 37 39 3A  20 32 30 20 39 34 20 30  |ES.0679: 20 94 0|
00005720: 36 20 20 73 72 63 68 31  20 20 20 20 6A 73 72 20  |6  srch1    jsr |
00005730: 20 20 73 79 6E 63 68 20  20 20 20 20 20 3B 67 4F  |  synch      ;gO|
00005740: 20 46 49 4E 44 20 41 20  73 79 6E 63 20 4D 41 52  | FIND A sync MAR|
00005750: 4B 45 52 0D 30 36 37 63  3A 20 35 30 20 66 65 20  |KER.067c: 50 fe |
00005760: 20 20 20 20 73 72 63 68  32 20 20 20 20 62 76 63  |    srch2    bvc|
00005770: 20 20 20 73 72 63 68 32  20 20 20 20 20 20 3B 77  |   srch2      ;w|
00005780: 41 49 54 20 55 4E 54 49  4C 20 43 4F 4E 54 52 4F  |AIT UNTIL CONTRO|
00005790: 4C 4C 45 52 20 52 45 41  44 59 0D 30 36 37 65 3A  |LLER READY.067e:|
000057A0: 20 62 38 20 20 20 20 20  20 20 20 20 20 20 20 20  | b8             |
000057B0: 20 20 20 20 63 6C 76 20  20 20 20 20 20 20 20 20  |    clv         |
000057C0: 20 20 20 20 20 3B 72 45  53 45 54 20 43 4F 4E 54  |     ;rESET CONT|
000057D0: 52 4F 4C 4C 45 52 0D 30  36 37 66 3A 20 61 64 20  |ROLLER.067f: ad |
000057E0: 30 31 20 31 63 20 20 20  20 20 20 20 20 20 20 20  |01 1c           |
000057F0: 6C 64 61 20 20 20 64 61  74 61 32 20 20 20 20 20  |lda   data2     |
00005800: 20 3B 67 45 54 20 41 20  67 63 72 20 42 59 54 45  | ;gET A gcr BYTE|
00005810: 20 46 52 4F 4D 20 44 49  53 4B 45 54 54 45 0D 30  | FROM DISKETTE.0|
00005820: 36 38 32 3A 20 64 39 20  32 34 20 30 30 20 20 20  |682: d9 24 00   |
00005830: 20 20 20 20 20 20 20 20  63 6D 70 20 20 20 73 74  |        cmp   st|
00005840: 61 62 2C 79 20 20 20 20  20 3B 64 4F 45 53 20 49  |ab,y     ;dOES I|
00005850: 54 20 43 4F 4D 50 41 52  45 20 54 4F 20 4F 55 52  |T COMPARE TO OUR|
00005860: 20 48 45 41 44 45 52 0D  30 36 38 35 3A 20 64 30  | HEADER.0685: d0|
00005870: 20 30 36 20 20 20 20 20  20 20 20 20 20 20 20 20  | 06             |
00005880: 20 62 6E 65 20 20 20 73  72 63 68 33 20 20 20 20  | bne   srch3    |
00005890: 20 20 3B 6E 4F 0D 30 36  38 37 3A 20 63 38 20 20  |  ;nO.0687: c8  |
000058A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
000058B0: 6E 79 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ny              |
000058C0: 3B 69 4E 43 52 45 4D 45  4E 54 20 48 45 41 44 45  |;iNCREMENT HEADE|
000058D0: 52 20 50 4F 49 4E 54 45  52 0D 30 36 38 38 3A 20  |R POINTER.0688: |
000058E0: 63 30 20 30 38 20 20 20  20 20 20 20 20 20 20 20  |c0 08           |
000058F0: 20 20 20 63 70 79 20 20  20 23 38 20 20 20 20 20  |   cpy   #8     |
00005900: 20 20 20 20 3B 68 41 53  20 45 4E 54 49 52 45 20  |    ;hAS ENTIRE |
00005910: 48 45 41 44 45 52 20 42  45 45 4E 20 52 45 41 44  |HEADER BEEN READ|
00005920: 3F 0D 30 36 38 61 3A 20  64 30 20 66 30 20 20 20  |?.068a: d0 f0   |
00005930: 20 20 20 20 20 20 20 20  20 20 20 62 6E 65 20 20  |           bne  |
00005940: 20 73 72 63 68 32 20 20  20 20 20 20 3B 6E 4F 2D  | srch2      ;nO-|
00005950: 54 48 45 4E 20 47 45 54  20 4D 4F 52 45 20 48 45  |THEN GET MORE HE|
00005960: 41 44 45 52 20 42 59 54  45 53 0D 30 36 38 63 3A  |ADER BYTES.068c:|
00005970: 20 36 30 20 20 20 20 20  20 20 20 20 20 20 20 20  | 60             |
00005980: 20 20 20 20 72 74 73 20  20 20 20 20 20 20 20 20  |    rts         |
00005990: 20 20 20 20 20 3B 79 45  53 2D 41 4C 4C 20 42 59  |     ;yES-ALL BY|
000059A0: 54 45 53 20 43 4F 4D 50  41 52 45 2C 20 53 4F 20  |TES COMPARE, SO |
000059B0: 54 48 49 53 0D 20 20 20  20 20 20 20 20 20 20 20  |THIS.           |
000059C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000059D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3B  |               ;|
000059E0: 49 53 20 54 48 45 20 43  4F 52 52 45 43 54 20 53  |IS THE CORRECT S|
000059F0: 45 43 54 4F 52 2C 20 54  48 45 4E 0D 20 20 20 20  |ECTOR, THEN.    |
00005A00: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005A10: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005A20: 20 20 20 20 20 20 3B 52  45 54 55 52 4E 2E 0D 0D  |      ;RETURN...|
00005A30: 30 36 38 64 3A 20 63 61  20 20 20 20 20 20 20 20  |068d: ca        |
00005A40: 73 72 63 68 33 20 20 20  20 64 65 78 20 20 20 20  |srch3    dex    |
00005A50: 20 20 20 20 20 20 20 20  20 20 3B 64 45 43 52 45  |          ;dECRE|
00005A60: 4D 45 4E 54 20 54 52 59  20 43 4F 55 4E 54 45 52  |MENT TRY COUNTER|
00005A70: 0D 30 36 38 65 3A 20 64  30 20 65 39 20 20 20 20  |.068e: d0 e9    |
00005A80: 20 20 20 20 20 20 20 20  20 20 62 6E 65 20 20 20  |          bne   |
00005A90: 73 72 63 68 31 20 20 20  20 20 20 3B 43 4F 4E 54  |srch1      ;CONT|
00005AA0: 49 4E 55 45 20 53 45 41  52 43 48 20 46 4F 52 20  |INUE SEARCH FOR |
00005AB0: 50 52 4F 50 45 52 20 48  45 41 44 45 52 0D 30 36  |PROPER HEADER.06|
00005AC0: 39 30 3A 20 61 39 20 32  30 20 20 20 20 20 20 20  |90: a9 20       |
00005AD0: 20 20 20 20 20 20 20 6C  64 61 20 20 20 23 24 32  |       lda   #$2|
00005AE0: 30 20 20 20 20 20 20 20  3B 73 45 43 54 4F 52 20  |0       ;sECTOR |
00005AF0: 48 45 41 44 45 52 20 4E  4F 54 20 46 4F 55 4E 44  |HEADER NOT FOUND|
00005B00: 20 53 4F 20 52 45 54 55  52 4E 0D 30 36 39 32 3A  | SO RETURN.0692:|
00005B10: 20 64 30 20 61 61 20 20  20 20 20 20 20 20 20 20  | d0 aa          |
00005B20: 20 20 20 20 62 6E 65 20  20 20 65 72 72 6F 72 20  |    bne   error |
00005B30: 20 20 20 20 20 3B 57 49  54 48 20 41 20 65 52 52  |     ;WITH A eRR|
00005B40: 4F 52 20 32 30 20 28 68  45 41 44 45 52 20 42 4C  |OR 20 (hEADER BL|
00005B50: 4F 43 4B 20 4E 4F 54 0D  20 20 20 20 20 20 20 20  |OCK NOT.        |
00005B60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005B70: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005B80: 20 20 3B 46 4F 55 4E 44  29 0D 0D 77 41 49 54 20  |  ;FOUND)..wAIT |
00005B90: 32 30 20 4D 53 20 46 4F  52 20 41 20 53 59 4E 43  |20 MS FOR A SYNC|
00005BA0: 20 4D 41 52 4B 0D 0D 30  36 39 34 3A 20 61 39 20  | MARK..0694: a9 |
00005BB0: 64 30 20 20 20 20 20 73  79 6E 63 68 20 20 20 20  |d0     synch    |
00005BC0: 6C 64 61 20 20 20 23 24  64 30 20 20 20 20 20 20  |lda   #$d0      |
00005BD0: 20 3B 77 41 49 54 20 32  30 20 4D 53 20 46 4F 52  | ;wAIT 20 MS FOR|
00005BE0: 20 41 20 53 59 4E 43 0D  30 36 39 36 3A 20 38 64  | A SYNC.0696: 8d|
00005BF0: 20 30 35 20 31 38 20 20  20 20 20 20 20 20 20 20  | 05 18          |
00005C00: 20 73 74 61 20 20 20 74  31 68 63 31 20 20 20 20  | sta   t1hc1    |
00005C10: 20 20 3B 41 4E 44 20 50  55 54 20 49 4E 20 74 49  |  ;AND PUT IN tI|
00005C20: 4D 45 52 20 31 20 68 49  47 48 0D 30 36 39 39 3A  |MER 1 hIGH.0699:|
00005C30: 20 61 39 20 32 31 20 20  20 20 20 20 20 20 20 20  | a9 21          |
00005C40: 20 20 20 20 6C 64 61 20  20 20 23 24 32 31 20 20  |    lda   #$21  |
00005C50: 20 20 20 20 20 3B 73 45  54 20 55 50 20 45 52 52  |     ;sET UP ERR|
00005C60: 4F 52 20 4D 53 47 20 28  73 59 4E 43 20 4E 4F 54  |OR MSG (sYNC NOT|
00005C70: 20 46 4F 55 4E 44 29 0D  30 36 39 62 3A 20 32 63  | FOUND).069b: 2c|
00005C80: 20 30 35 20 31 38 20 20  73 79 6E 63 68 31 20 20  | 05 18  synch1  |
00005C90: 20 62 69 74 20 20 20 74  31 68 63 31 20 20 20 20  | bit   t1hc1    |
00005CA0: 20 20 3B 68 41 53 20 54  49 4D 45 4F 55 54 20 4F  |  ;hAS TIMEOUT O|
00005CB0: 43 43 55 52 52 45 44 3F  0D 30 36 39 65 3A 20 31  |CCURRED?.069e: 1|
00005CC0: 30 20 39 65 20 20 20 20  20 20 20 20 20 20 20 20  |0 9e            |
00005CD0: 20 20 62 70 6C 20 20 20  65 72 72 6F 72 20 20 20  |  bpl   error   |
00005CE0: 20 20 20 3B 79 45 53 2D  54 48 45 4E 20 44 49 53  |   ;yES-THEN DIS|
00005CF0: 50 4C 41 59 20 45 52 52  4F 52 20 32 31 0D 30 36  |PLAY ERROR 21.06|
00005D00: 61 30 3A 20 32 63 20 30  30 20 31 63 20 20 20 20  |a0: 2c 00 1c    |
00005D10: 20 20 20 20 20 20 20 62  69 74 20 20 20 64 73 6B  |       bit   dsk|
00005D20: 63 6E 74 20 20 20 20 20  3B 6E 4F 2D 54 48 45 4E  |cnt     ;nO-THEN|
00005D30: 20 48 41 53 20 53 59 4E  43 20 42 45 45 4E 20 46  | HAS SYNC BEEN F|
00005D40: 4F 55 4E 44 3F 0D 30 36  61 33 3A 20 33 30 20 66  |OUND?.06a3: 30 f|
00005D50: 36 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |6              b|
00005D60: 6D 69 20 20 20 73 79 6E  63 68 31 20 20 20 20 20  |mi   synch1     |
00005D70: 3B 6E 4F 2D 54 48 45 4E  20 57 41 49 54 20 53 4F  |;nO-THEN WAIT SO|
00005D80: 4D 45 20 4D 4F 52 45 20  46 4F 52 20 53 59 4E 43  |ME MORE FOR SYNC|
00005D90: 0D 30 36 61 35 3A 20 61  64 20 30 31 20 31 63 20  |.06a5: ad 01 1c |
00005DA0: 20 20 20 20 20 20 20 20  20 20 6C 64 61 20 20 20  |          lda   |
00005DB0: 64 61 74 61 32 20 20 20  20 20 20 3B 79 45 53 2D  |data2      ;yES-|
00005DC0: 54 48 45 4E 20 52 45 53  45 54 20 70 61 20 4C 41  |THEN RESET pa LA|
00005DD0: 54 43 48 0D 30 36 61 38  3A 20 62 38 20 20 20 20  |TCH.06a8: b8    |
00005DE0: 20 20 20 20 20 20 20 20  20 20 20 20 20 63 6C 76  |             clv|
00005DF0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 3B 43  |              ;C|
00005E00: 4C 45 41 52 20 54 48 45  20 4F 56 45 52 46 4C 4F  |LEAR THE OVERFLO|
00005E10: 57 20 46 4C 41 47 0D 30  36 61 39 3A 20 61 30 20  |W FLAG.06a9: a0 |
00005E20: 30 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |00              |
00005E30: 6C 64 79 20 20 20 23 30  30 0D 30 36 61 62 3A 20  |ldy   #00.06ab: |
00005E40: 36 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |60              |
00005E50: 20 20 20 72 74 73 20 20  20 20 20 20 20 20 20 20  |   rts          |
00005E60: 20 20 20 20 3B 41 4E 44  20 52 45 54 55 52 4E 0D  |    ;AND RETURN.|
00005E70: 30 36 61 63 3A 20 61 30  20 61 30 20 61 30 20 20  |06ac: a0 a0 a0  |
00005E80: 66 69 6C 65 20 20 20 20  20 64 66 62 20 20 20 24  |file     dfb   $|
00005E90: 61 30 2C 24 61 30 2C 24  61 30 2C 24 61 30 2C 24  |a0,$a0,$a0,$a0,$|
00005EA0: 61 30 2C 24 61 30 0D 30  36 61 66 3A 20 61 30 20  |a0,$a0.06af: a0 |
00005EB0: 61 30 20 61 30 0D 30 36  62 32 3A 20 61 30 20 61  |a0 a0.06b2: a0 a|
00005EC0: 30 20 61 30 20 20 20 20  20 20 20 20 20 20 20 64  |0 a0           d|
00005ED0: 66 62 20 20 20 24 61 30  2C 24 61 30 2C 24 61 30  |fb   $a0,$a0,$a0|
00005EE0: 2C 24 61 30 2C 24 61 30  2C 24 61 30 0D 30 36 62  |,$a0,$a0,$a0.06b|
00005EF0: 35 3A 20 61 30 20 61 30  20 61 30 0D 30 36 62 38  |5: a0 a0 a0.06b8|
00005F00: 3A 20 61 30 20 61 30 20  61 30 20 20 20 20 20 20  |: a0 a0 a0      |
00005F10: 20 20 20 20 20 64 66 62  20 20 20 24 61 30 2C 24  |     dfb   $a0,$|
00005F20: 61 30 2C 24 61 30 2C 24  61 30 0D 30 36 62 62 3A  |a0,$a0,$a0.06bb:|
00005F30: 20 61 30 0D 0D 2D 2D 65  4E 44 20 6D 45 52 4C 49  | a0..--eND mERLI|
00005F40: 4E 2D 31 32 38 20 41 53  53 45 4D 42 4C 59 2C 20  |N-128 ASSEMBLY, |
00005F50: 34 34 34 20 42 59 54 45  53 2C 20 65 52 52 4F 52  |444 BYTES, eRROR|
00005F60: 53 3A 20 30 0D                                    |S: 0.           |
ZAPL1541..ORIGINALLY WRITTEN BY DON LEWI
S AND APPEARED IN APRIL 1985 COMPUTE! AS
.TURBODISK. UPLOADED WITH THE AUTHORS PE
RMISSION BY Q-LINK USER BISON, AND.IS CU
RRENTLY IN THE ORIGINAL FORM AS 2 FILES 
IN THE PROGRAMMER'S WORKSHOP.LIBRARY, 65
XX, UTILITIES SOURCE AS:..ZAP-LDER2.A154
1.ZAP-LDER2.A64..EXTENSIVE COMMENTING AN
D TUTORIAL BY JOHN GAGER.(Q-LINK ID: SUP
ERDISK).(COMPUSERVE ID 71336,624)..ZAP/L
OADER-1541 RESIDENT CODE..1541 ROM ROUTI
NES..                OP95     =     $D94
5      ;SET UP 'FILE NOT FOUND'.        
        CMDERR   =     $C1C8      ;COMMA
ND LEVEL ERROR.                CONHDR   
=     $F934      ;CONVERT HEADER DATA TO
 GCR.                GCRBIN   =     $F8E
0      ;CONVERT GCR DATA TO BINARY.     
           CHKBLK   =     $F5E9      ;CA
LCULATE DATA CHECKSUM.                IN
ITDR   =     $D042      ;INITIALIZE DRIV
E..1541 RAM & I/O..                BUF0 
    =     $0300      ;BUFFER # 0.       
         JOBS     =     $00        ;JOB 
QUEUE FOR BUF0.                HDRS     
=     $06        ;TRACK & SECTOR FOR BUF
0 JOB.                DSKID    =     $12
        ;MASTER DISK ID.                
HEADER   =     $16        ;IMAGE OF MOST
 RECENT HEADER READ.                STAB
     =     $24        ;WORK AREA.       
                                   ;(FOR
 BINARY-GCR CONVERSION).                
PNTR     =     $3B        ;WORK AREA.   
                                       ;
(POINTER TO DIRECTORY ENTRY).           
     COUNT    =     $4B        ;WORK ARE
A.                                      
    ;(COUNTER FOR DIR ENTRY).           
     DATA     =     $85        ;TEMPORAR
Y DATA BYTE.                BID      =  
   $38        ;DATA BLOCK ID CHAR ($07).
                DBID     =     $47      
  ;DATA BLOCK ID CHAR READ.             
   BUFPNT   =     $30        ;POINTER TO
 ACTIVE BUFFER.                HDRPNT   
=     $32        ;POINTER TO ACTIVE HEAD
ER.                CHKSUM   =     $3A   
     ;STORAGE OF DATA OR HEADER CHECKSUM
.                ERRNUM   =     $44     
   ;WORK AREA.                          
                ;(COMMAND ERROR NUMBER).
                PB       =     $1800    
  ;SERIAL I/O 6522 - DATA PORT B.       
         T1HC1    =     $1805      ;TIME
R 1 HIGH COUNTER.                DSKCNT 
  =     $1C00      ;DISK CONTROLLER 6522
.                                       
   ;DATA PORT B.                        
                  ;DISK CONTROLLER I/O. 
               DATA2    =     $1C01     
 ;DATA PORT A.                          
                ;GCR DATA I/O TO DISKETT
E.                PCR2     =     $1C0C  
    ;PERIPHERAL CONTROL REGISTER..DISK J
OB CODES..                SEEK     =    
 $B0..START OF PROGRAM..                
         ORG   $0500..0500: 20 42 D0    
       JSR   INITDR     ;INITIALIZE DRIV
E.0503: 78                 SEI          
    ;DISABLE INTERRUPTS.0504: A9 15     
         LDA   #$15.0506: 8D 07 1C      
     STA   $1C07      ;SPEED UP THE IRQ 
PROCESS.0509: A9 12              LDA   #
18        ;BEGIN SEARCH FOR DIRECTORY.  
                                        
;TRACK NUMBER IN A.050B: A0 01          
    LDY   #1         ;SECTOR NUMBER IN Y
.050D: 8D 00 03           STA   BUF0    
   ;STORE AT $0300-$0301.0510: 8C 01 03 
          STY   BUF0+1     ;READ TRACK 1
8-SECTOR 1.0513: 20 CD 05  DIRECT   JSR 
  RDSECT     ;READ A DIRECTORY SECTOR..H
AVE SECTOR, SEARCH IT FOR THE PROPER ENT
RY. THE MSB OF PNTR IS SET TO $03,.WHICH
 IS OUR BUFFER, AND THE LSB OF PNTR WILL
 BE SET FOR OUR OFFSET TO THE.DIRECTORY 
ENTRY. SO IF ITS THE 1ST DIR ENTRY, PNTR
 WILL BE SET TO $0302,.AND FOR THE 2ND D
IR ENTRY, PNTR WILL BE SET TO $0322, ETC
...0516: A9 03              LDA   #>BUF0
     ;SET PNTR MSB TO $03.0518: 85 3C   
           STA   PNTR+1.051A: A2 00     
         LDX   #0.051C: 86 4B           
   STX   COUNT      ;DIRECTORY ENTRY COU
NTER TO 0.051E: F0 2B              BEQ  
 NXTON1     ;GET 1ST DIRECTORY ENTRY..05
20: A0 00     SEARCH   LDY   #0         
;PNTR IS SET TO THE OFFSET FOR.0522: B1 
3B              LDA   (PNTR),Y   ;A DIR 
ENTRY, AND EACH OFFSET.                 
                         ;STARTS WITH TH
E FILE-TYPE..0524: 29 BF              AN
D   #%10111111 ;STRIP OFF LOCK BIT.0526:
 C9 82              CMP   #$82       ;IS
 IT A PROGRAM FILE TYPE?.0528: D0 19    
          BNE   NXTONE     ;NO-THEN SEAR
CH NEXT ENTRY.052A: C8                 I
NY              ;YES-THEN INCREMENT Y SO
 PNTR.052B: C8                 INY      
        ;WILL NOW BE SET TO THE 1ST.052C
: C8                 INY              ;C
HAR OF THE FILENAME..052D: B9 A9 06  COM
PAR   LDA   FILE-3,Y   ;GET 1ST CHAR OF 
FILENAME.                               
           ;IN THE LOAD COMMAND...IF THE
 LOAD FILENAME IS A * BY ITSELF, SUCH AS
 LOAD"*",8 THEN IT WILL LOAD THE.1ST FIL
E ON THE DISK. IF THE FILENAME USES A *,
 SUCH AS LOAD"TEST*",8 THEN IT.WILL LOAD
 THE 1ST FILE ON THE DISK BEGINNING WITH
 THE WORD TEST, SUCH AS.TESTDISK, TESTER
, TESTAVERDE, ETC...0530: C9 2A         
     CMP   #'*'.0532: F0 42             
 BEQ   GOTIT..IF THE LOAD FILENAME CONTA
INS THE WILDCARD CHARACTER ?, THIS WILL 
MATCH ANY.CHARACTER IN A FILENAME. FOR E
XAMPLE, LOAD"?EST",8 WILL LOAD IN THE FI
RST FILE.IF IT HAS A FILENAME SUCH AS BE
ST, TEST, WEST, ETC. BUT SINCE IT MATCHE
S ONLY.1 CHARACTER, IT WOULD NOT LOAD IN
 A FILE SUCH AS QUEST...0534: C9 3F     
         CMP   #'?'       ;IS A WILDCARD
 CHARACTER?.0536: F0 04              BEQ
   COMPR1     ;YES-THEN SKIP.0538: D1 3B
              CMP   (PNTR),Y   ;NO-THEN 
COMPARE CHARACTER.                      
                    ;OF THE DIRECTORY EN
TRY.                                    
      ;FILENAME TO THE FILENAME.        
                                  ;SPECI
FIED IN THE LOAD.                       
                   ;COMMAND..053A: D0 07
              BNE   NXTONE     ;IF NOT E
QUAL, CHECK NEXT ENTRY.053C: C8        C
OMPR1   INY              ;INCREMENT FILE
NAME POINTER.053D: C0 12              CP
Y   #18        ;HAS ENTIRE FILENAME BEEN
 CHECKED?.053F: F0 35              BEQ  
 GOTIT      ;YES-THEN ITS A MATCH, SO LO
AD.                                     
     ;THIS PROGRAM FILE..0541: D0 EA    
          BNE   COMPAR     ;NO, THEN CON
TINUE CHECKING.                         
                 ;FILENAME CHARS..0543: 
E6 4B     NXTONE   INC   COUNT      ;INC
REMENT THE DIR ENTRY COUNT.0545: A6 4B  
            LDX   COUNT.0547: E0 08     
         CPX   #8         ;ALL 8 DIR ENT
RYS BEEN CHECKED?.0549: F0 07           
   BEQ   NXTON2     ;YES, THEN CHECK IF 
THERE IS.                               
           ;ANOTHER DIRECTORY SECTOR WIT
H.                                      
    ;MORE FILENAMES..054B: BD 6E 05  NXT
ON1   LDA   OFFSET,X   ;GET THE FILE ENT
RY OFFSET.054E: 85 3B              STA  
 PNTR       ;AND STORE IN PNTR ($3B).055
0: D0 CE              BNE   SEARCH     ;
JUMP TO SEARCH TO COMPARE.0552: AD 00 03
  NXTON2   LDA   BUF0       ;CHECK THE F
OWARD POINTER TO.                       
                   ;THE NEXT DIRECTORY T
RACK..0555: F0 06              BEQ   DON
E       ;IF A 0, THEN NO MORE DIR SECTOR
S.0557: AC 01 03           LDY   BUF0+1 
    ;GET THE FOWARD POINTER TO THE.     
                                     ;NE
XT DIRECTORY SECTOR.055A: 4C 13 05      
     JMP   DIRECT     ;LOAD IN NEXT DIRE
CTORY SECTOR..DID NOT FIND AN ENTRY..055
D: A9 FF     DONE     LDA   #$FF       ;
TELL THE 64 THERE WAS AN ERROR.055F: 8D 
00 03           STA   BUF0.0562: 20 96 0
5           JSR   XMIT64.0565: A9 3A    
          LDA   #$3A.0567: 8D 07 1C     
      STA   $1C07      ;RESTORE NORMAL I
RQ TIME.056A: 58                 CLI.056
B: 4C 45 D9           JMP   OP95       ;
PRINT "FILE NOT FOUND"..056E: 02 22 42  
OFFSET   DFB   $02,$22,$42,$62,$82,$A2,$
C2,$E2.0571: 62 82 A2 C2 E2..WE HAVE A M
ATCH!!!!..INCREMENT THE FILE ENTRY POINT
ER SO IT NOW POINTS TO THE TRACK & SECTO
R.NUMBERS FOR THE FILE WE WANT TO LOAD..
.0576: E6 3B     GOTIT    INC   PNTR    
   ;INC FILE ENTRY POINTER.0578: A0 00  
            LDY   #0.057A: B1 3B        
      LDA   (PNTR),Y   ;GET THE TRACK # 
OF THE FILE.057C: 8D 00 03           STA
   BUF0       ;AND PUT INTO $0300.057F: 
C8                 INY.0580: B1 3B      
        LDA   (PNTR),Y   ;GET THE SECTOR
 # OF THE FILE.0582: 8D 01 03           
STA   BUF0+1     ;AND PUT INTO $0301.058
5: 20 CD 05  GOTOIT   JSR   RDSECT     ;
READ A SECTOR OF THE FILE.0588: 20 96 05
           JSR   XMIT64     ;AND TRANSFE
R IT TO THE C64.058B: AD 00 03          
 LDA   BUF0       ;CHECK THE FOWARD POIN
TER.                                    
      ;OF THE LAST SECTOR READ..058E: D0
 F5              BNE   GOTOIT     ;IF NO
T 0, THEN MORE SECTORS.                 
                         ;IF A 0, THIS I
NDICATES NO.                            
              ;MORE SECTORS IN THIS FILE
..0590: A9 3A              LDA   #$3A   
    ;SO RESTORE NORMAL INTERRUPTS.0592: 
8D 07 1C           STA   $1C07.0595: 60 
       ALLDUN   RTS              ;AND RE
TURN TO THE C64..TRANSMIT THE BUFFER TO 
THE 64..0596: A0 00     XMIT64   LDY   #
0.0598: B9 00 03  XMIT03   LDA   BUF0,Y.
059B: 85 85     ZAP      STA   DATA     
  ;SAVE DATA..ZAP A BYTE TO THE 64..THIS
 SETS THE DATA LINE LOW, AND CLOCK LINE 
HIGH AS RECEIVED AT THE C64..NOTICE THAT
 BIT 1 IS HIGH IN THE BELOW BYTE. WELL B
IT 1 OF PB ($1800) IS THE.DATA OUTPUT LI
NE. I KNOW THAT I SAID ABOVE THAT WE SET
 DATA LOW, BUT REMEMBER.THAT BECAUSE OF 
THE INVERSION, WE MUST SET THE BIT HIGH 
TO CLOCK IT LOW. AT.THIS TIME, THE CODE 
IN GTSCT1 IN ZAPL64 IS WAITING FOR BIT 7
 OF PORTA ($DD00).TO GO LOW, WHICH IS OU
R DATA INPUT LINE OF THE C64 SERIAL BUS.
..059D: A9 02              LDA   #%00000
010 ;DATA LOW, CLOCK HIGH.059F: 8D 00 18
           STA   PB..WAIT FOR THE CLOCK 
IN LINE TO GO LOW. THE CODE AT RECV02 IN
 ZAPL64 SETS THE.CLOCK OUTPUT BIT TO A 1
, WHICH PULLS THE LINE LOW AND IS DETECT
ED HERE...05A2: AD 00 18  ZAP01    LDA  
 PB         ;GET SERIAL HANDSHAKE BYTE.0
5A5: 29 04              AND   #4        
 ;CHECK CLOCK IN BIT.05A7: F0 F9        
      BEQ   ZAP01      ;IS IT LOW? NO..Y
ES-THEN PULL DATA AND CLOCK HIGH. AT THI
S POINT THE CODE AT RECV01 IN ZAPL64.IS 
WAITING FOR THE DATA LINE TO GO HIGH...0
5A9: A9 00              LDA   #0        
 ;SET DATA, CLOCK HIGH.05AB: 8D 00 18   
        STA   PB..NOW WE DO SOME FANCY S
TUFF HERE. WE USE BOTH THE DATA AND CLOC
K LINES OF PB.($1800) TO SEND DATA. SINC
E IT WILL SEND 2 BITS AT A TIME, AND OF 
COURSE A BYTE.IS 8 BITS, IT WILL TAKE 4 
PASSES TO SEND A FULL BYTE (LDX #4). SO 
LETS SAY THAT.THE BYTE TO SEND IS $4B OR
 %01001011 IN BINARY. BY FANCY MATH MANI
PULATION, THE.CONDITION OF THE CLOCK AND
 DATA OUTPUT BITS WILL BE AS FOLLOWS AS 
THE BYTE IS.SENT...          CLOCK     D
ATA.1ST PASS    0         1.2ND PASS    
0         0.3RD PASS    1         0.4TH 
PASS    1         1..NOW IF YOU GROUP TH
E BITS LEFT-RIGHT, AND TOP-BOTTOM INTO A
 BYTE, YOU WILL SEE.THAT IT WILL COME OU
T AS %01-00-10-11, AND LOW AND BEHOLD, I
TS EQUAL TO THE.BYTE THAT WE WANTED TO S
END ($4B). SO YOU CAN SEE WE HAVE A 2 BI
T PARALLEL.PORT, WHICH IS CERTAINLY BETT
ER THAN SENDING OUT THE BYTE ONE BIT AT 
A TIME,.AS THE DRIVE NORMALLY DOES. THIS
 IS WHAT GIVES THIS PROGRAM THE MUCH FAS
TER.LOADING SPEED. BUT WAIT BYTE BREATH!
 BECAUSE OF OUR OUTPUT INVERSION THE.CON
DITION OF THE CLOCK AND DATA INPUT LINES
 OF PORT A IN THE C64 WILL BE.OPPOSITE O
F WHAT IS SENT OUT OF THE 1541. SO THIS 
IS THE CONDITION OF THE.CLOCK AND DATA I
NPUT LINES AS RECEIVED AT THE C64...    
       CLOCK     DATA.1ST PASS     1    
     0.2ND PASS     1         1.3RD PASS
     0         1.4TH PASS     0         
0..OK, NOW IF YOU GROUP THESE BITS AS BE
FORE, YOU COME UP WITH %10-11-01-00, WHI
CH.COMES OUT AS $B4. HEY WAIT A MINUTE, 
THE 1541 SENDS OUT A $4B AND THE C64 GET
S.A $B4! NO PROBLEM, WE DO A 1'S COMPLEM
ENT AND THE BYTE MAGICALLY CHANGES FROM 
A.$B4 TO $4B, AND WE HAVE THE BYTE THAT 
THE 1541 ORIGINALLY SENT US. THIS IS.PER
FORMED IN THE ZAPL64 CODE AS:..LDA BSOUR
.EOR #$FF..THE FOLLOWING MATH ROUTINE HA
S TO TAKE OUR DATA BYTE ($4B) AND BREAK 
IT DOWN.SO THAT IT SETS THE CONDITION OF
 THE DATA AND CLOCK OUTPUT LINES PROPERL
Y FOR.OUR 2 BITS. ALSO THE DATA AND CLOC
K OUTPUT OF PORT B ($1800) IN THE 1541 O
CCUPY.BIT POSITIONS 1 & 3 OF THE PORT, B
UT THE DATA AND CLOCK INPUT OF PORT A ($
DD00).IN THE C64 OCCUPY BIT POSITIONS 7 
& 6 OF THE PORT. AND TO MAKE MATTERS WOR
SE,.THE BITS SENT OUT OF THE 1541 PORT I
S INVERTED WHEN IT GETS TO THE C64 PORT!
.ALSO AS MENTIONED IN THE ZAPL64 CODE, S
INCE THE CLOCK LINE IS USED HERE TO.TRAN
SFER DATA INSTEAD OF TELLING THE C64 THA
T A BIT IS BEING SENT, WE HAVE TO.MAKE S
URE THE TIMING IS RIGHT. SO THATS WHAT T
HE FOLLOWING MATH ROUTINE IS ALL.ABOUT. 
RATHER THAN SHOWING YOU THE MATH MANIPUL
ATIONS BY HAND (YOU DON'T HAVE.CLOSE TO 
ENOUGH MONEY FOR THAT), DO AS I DID. SIM
ULATE IT BY WRITING A.COMPARABLE ROUTINE
 IN THE C64 USING A ML MONITOR. OF COURS
E, THIS JUST.SIMULATES THE DATA AND CLOC
K BIT MANIPULATIONS, AND NOT THE TIMING.
 TO MAKE.THINGS A LITTLE EASIER, HERE IS
 THE ROUTINE I USED:..C000  A9 4B     LD
A #$4B.C002  8D 20 C0  STA $C020.C005  A
0 00     LDY #$00.C007  A2 04     LDX #$
04.C009  A9 00     LDA #$00.C00B  0E 20 
C0  ASL $C020.C00E  2A        ROL.C00F  
0A        ASL.C010  0E 20 C0  ASL $C020.
C013  2A        ROL.C014  0A        ASL.
C015  99 30 C0  STA $C030,Y.C018  C8    
    INY.C019  CA        DEX.C01A  D0 ED 
    BNE $C009.C01C  00        BRK..AS YO
U CAN SEE, OUR SIMULATED ROUTINE ABOVE I
S VERY SIMILAR TO OUR ACTUAL.ROUTINE BEL
OW. THE MEMORY LOCATION $C020 REPLACES T
HE DATA LABEL BELOW, AND THE.STA $C030,Y
 PUTS THE OUTPUT BYTES IN 4 SUCCESSIVE M
EMORY LOCATIONS AT $C030 SO.THEY CAN BE 
EXAMINED, WHICH REPLACES THE STA PB IN T
HE BELOW ROUTINE. WHEN OUR.SIMULATED ROU
TINE IS RUN, A LOOK AT THE 4 BYTES AT $C
030-C033 REVEALS THE.BYTES: 02 00 08 0A,
 WHICH IS WHAT THE 1541 SENDS TO THE C64
 WHEN IT WANTS SEND.OUR DATA BYTE $4B. F
OR THE SAKE OF CONTINUITY, LETS FIND OUT
 WHAT HAPPENS AT.THE C64'S END TO GET BA
CK OUR $4B DATA BYTE. REMEMBER BECAUSE O
F OUR INVERSION,.AND THAT THE DATA AND C
LOCK INPUT LINES ARE AT DIFFERENT BIT PO
SITIONS OF THE.PORT, WHAT THE C64 SEES W
HEN THE CIA PORT IS READ, IS DIFFERENT T
HAT WHAT.THE 1541 SENDS. ALSO SOME OF TH
E CHIP PINS ARE SET FOR INPUT, SUCH AS O
UR.DATA AND CLOCK INPUT LINES, WHILE OTH
ERS ARE SET FOR OUTPUT. WHEN THE PORT IS
.READ, IT WILL REFLECT THE INFORMATION P
RESENT ON THE ACTUAL PORT PINS FOR BOTH.
INPUT AND OUTPUT. SO JUST FOR THE SAKE O
F EXAMPLE, LETS SAY THAT WHEN THE C64.RE
ADS THE PORT, ALL OTHER PINS EXCEPT OUR 
DATA AND CLOCK INPUT LINES HAPPENED.TO B
E HIGH. SO WITH THAT CONDITION IN MIND, 
HERE IS WHAT THE C64 WOULD READ.FROM THE
 PORT, AS EACH OF THE 2 BITS ARE SENT FR
OM THE 1541...          1541      C64.1S
T PASS  $02       $7F.2ND PASS  $00     
  $FF.3RD PASS  $08       $BF.4TH PASS  
$0A       $3F..NOW WE RUN ANOTHER SIMULA
TION TO SHOW WHAT HAPPENS AT THE C64'S E
ND WHEN THE.PORT IS READ. HERE IS THE RO
UTINE:..C000  A9 7F    LDA #$7F.C002  8D
 40 C0 STA $C040.C005  A9 FF    LDA #$FF
.C007  8D 41 C0 STA $C041.C00A  A9 BF   
 LDA #$BF.C00C  8D 42 C0 STA $C042.C00F 
 A9 3F    LDA #$3F.C011  8D 43 C0 STA $C
043.C014  A0 00    LDY #$00.C016  A2 04 
   LDX #$04.C018  B9 40 C0 LDA $C040,Y.C
01B  0A       ASL.C01C  08       PHP.C01
D  0A       ASL.C01E  2E 50 C0 ROL $C050
.C021  28       PLP.C022  2E 50 C0 ROL $
C050.C025  C8       INY.C026  CA       D
EX.C027  D0 EF    BNE $C018.C029  AD 50 
C0 LDA $C050.C02C  49 FF    EOR #$FF.C02
E  8D 50 C0 STA $C050.C031  00       BRK
..SO IF YOU COMPARE THE ABOVE SIMULATED 
ROUTINE, TO THE ACTUAL ROUTINE IN THE.ZA
PL64 CODE AT RECV04, YOU WILL FIND THEM 
TO BE SIMILAR. TO SIMULATE READING.THE P
ORT, I PUT WHAT THE C64 WOULD READ IN 4 
LOCATIONS FROM $C040-C043. AND TO.SIMULA
TE THE LDA PORTA, I USED INDEXED ADDRESS
ING (LDA $C040,Y) TO SIMULATE.READING TH
E PORT. THE ROL $C050 SIMULATES THE ROL 
BSOUR IN THE ZAPL64 CODE. AND.INSTEAD OF
 PUTTING THE FINAL DATA BYTE ($4B) IN A 
BUFFER, I PUT IT BACK IN.$C050 (STA $C05
0). SO WHEN THE ABOVE ROUTINE IS RUN, A 
LOOK AT $C050 WILL.REVEAL (DRUM ROLL PLE
ASE) $4B!!! COMPUTERS AND DISK DRIVES AR
E WONDERFULL..IT TOOK WRITING AND READIN
G THE PORT 4 TIMES, PLUS MAJOR MATH, TO 
JUST GET OUR.$4B DATA BYTE! SO THATS ABO
UT IT. I HOPE YOU GET A BETTER IDEA WHY 
THE MATH.ROUTINES WERE NECESSARY AND WHA
T HAPPENS AT BOTH ENDS...05AE: A2 04    
          LDX   #4         ;OK SEND 4 X 
2 BITS.05B0: A9 00     ZAP3     LDA   #0
.05B2: 06 85              ASL   DATA.05B
4: 2A                 ROL   A.05B5: 0A  
               ASL   A.05B6: 06 85      
        ASL   DATA.05B8: 2A             
    ROL   A.05B9: 0A                 ASL
   A.05BA: 8D 00 18           STA   PB.0
5BD: CA                 DEX.05BE: D0 F0 
             BNE   ZAP3..WAIT FOR 64 TO 
GET LAST 2 BITS..05C0: 48               
  PHA              ;WAIT OUT 14 CYCLES.0
5C1: 68                 PLA.05C2: 48    
             PHA.05C3: 68               
  PLA.05C4: A9 00              LDA   #0.
05C6: 8D 00 18           STA   PB       
  ;CLOCK, DATA HIGH.05C9: C8            
     INY              ;ENTIRE BUFFER BEE
N SENT?.05CA: D0 CC              BNE   X
MIT03     ;NO-THEN TRANSMIT MORE.05CC: 6
0                 RTS              ;YES-
THEN RETURN..READ A SECTOR INTO BUF0..05
CD: AC 01 03  RDSECT   LDY   BUF0+1     
;GET SECTOR # FROM BUFFER.05D0: 84 07   
           STY   HDRS+1     ;AND STORE I
N JOB SECTOR # ($07).05D2: AD 00 03     
      LDA   BUF0       ;GET TRACK # FROM
 BUFFER.05D5: C5 06              CMP   H
DRS       ;CHECK FOR NEW TRACK.05D7: 08 
                PHP.05D8: 85 06         
     STA   HDRS       ;STORE TRACK # IN 
JOB TRACK ($06).05DA: 28                
 PLP.05DB: F0 10              BEQ   RSEC
T0     ;IS IT A NEW TRACK?-NO.05DD: A9 B
0              LDA   #SEEK      ;YES, TH
EN SEEK THE NEW TRACK.05DF: 85 00     DO
JOB    STA   JOBS       ;BY PUTTING THE 
JOB CODE FOR SEEK.                      
                    ;INTO $0000..05E1: 5
8                 CLI              ;ENAB
LE INTERRUPTS TO DO JOB.05E2: 24 00     
DOJOB1   BIT   JOBS       ;IS JOB FINISH
ED?.05E4: 30 FC              BMI   DOJOB
1     ;NO-THEN WAIT UNTIL IT IS.05E6: 78
                 SEI              ;YES-T
HEN DISABLE INTERRUPTS AGAIN.05E7: A5 00
              LDA   JOBS       ;GET THE 
JOB ERROR CODE.05E9: C9 01              
CMP   #$01       ;JOB RUN ERROR FREE?.05
EB: D0 4E              BNE   JOBERR     
;NO-THEN DISPLAY ERROR..NOW READ IN THE 
SECTOR..05ED: A9 EE     RSECT0   LDA   #
$EE       ;YES-THEN READ IN THE SECTOR.0
5EF: 8D 0C 1C           STA   PCR2      
 ;READ & ENABLE SYNC.05F2: A9 06        
      LDA   #6         ;MAKE OUR HEADER 
POINTER AT $32.05F4: 85 32              
STA   HDRPNT     ;POINT TO OUR ACTIVE HE
ADER.05F6: A9 00              LDA   #0  
       ;AT $0006.05F8: 85 33            
  STA   HDRPNT+1.05FA: 85 30            
  STA   BUFPNT     ;NOW MAKE OUR BUFFER 
POINTER.05FC: A9 03              LDA   #
>BUF0     ;AT $30 POINT TO OUR ACTIVE.05
FE: 85 31              STA   BUFPNT+1   
;BUFFER AT $0300.0600: 20 52 06         
  JSR   DSTRT      ;FIND DESIRED SECTOR.
0603: 50 FE     RDSCT1   BVC   RDSCT1   
  ;SECTOR FOUND, SO READ DATA.0605: B8  
               CLV.0606: AD 01 1C       
    LDA   DATA2      ;READ GCR DATA BYTE
.0609: 99 00 03           STA   BUF0,Y  
   ;AND PUT IT IN BUF0 ($0300).060C: C8 
                INY              ;INCREM
ENT BUFFER POINTER.060D: D0 F4          
    BNE   RDSCT1     ;HAS 256 GCR BYTES 
BEEN READ? NO.060F: A0 BA              L
DY   #$BA.0611: 50 FE     RDSCT2   BVC  
 RDSCT2     ;YES-THEN PUT THE REMAINING 
69.0613: B8                 CLV         
     ;GCR DATA BYTES INTO OUR OVERFLOW.0
614: AD 01 1C           LDA   DATA2     
 ;AREA AT $01BA..0617: 99 00 01         
  STA   $0100,Y.061A: C8                
 INY.061B: D0 F4              BNE   RDSC
T2.061D: 20 E0 F8           JSR   GCRBIN
     ;CONVERT OUR 325 GCR BYTES TO.     
                                     ;25
6 BINARY DATA BYTES.0620: A5 38         
     LDA   BID        ;GET THE NORMAL DA
TA BLOCK ID.                            
              ;CHAR ($07).0622: C5 47   
           CMP   DBID       ;IS IT THE S
AME AS OUR ID READ IN?.0624: F0 04      
        BEQ   RDSCT3     ;YES-THEN CHECK
 THE CHECKSUM.0626: A9 22              L
DA   #$22       ;NO-THEN DISPLAY ERROR 2
2.0628: D0 14              BNE   ERROR  
    ;(DATA BLOCK NOT FOUND)..062A: 20 E9
 F5  RDSCT3   JSR   CHKBLK     ;CALCULAT
E DATA BLOCK CHECKSUM.062D: C5 3A       
       CMP   CHKSUM     ;IS IT SAME AS C
HECKSUM BYTE READ?.062F: F0 04          
    BEQ   RDSCT4     ;YES-THEN DATA IS O
K.0631: A9 23              LDA   #$23   
    ;NO-THEN DISPLAY A ERROR 23.0633: D0
 09              BNE   ERROR      ;(DATA
 BLOCK CHECKSUM ERROR)..0635: A9 EC     
RDSCT4   LDA   #$EC       ;DATA OK SO RE
TURN.0637: 8D 0C 1C           STA   PCR2
.063A: 60                 RTS..063B: 18 
       JOBERR   CLC.063C: 69 18         
     ADC   #$18.063E: 85 44     ERROR   
 STA   ERRNUM     ;ADD 18 TO JOB ERROR #
 TO GIVE.                               
           ;A NORMAL ERROR NUMBER..0640:
 A9 FF              LDA   #$FF.0642: 8D 
00 03           STA   BUF0.0645: 20 96 0
5           JSR   XMIT64.0648: A9 3A    
          LDA   #$3A       ;RESET INTERR
UPT BACK TO NORMAL.064A: 8D 07 1C       
    STA   $1C07.064D: A5 44             
 LDA   ERRNUM     ;GET THE ERROR NUMBER.
064F: 4C C8 C1           JMP   CMDERR   
  ;DISPLAY-GO TO C64..FIND DESIRED SECTO
R..0652: 20 58 06  DSTRT    JSR   SRCH.0
655: 4C 94 06           JMP   SYNCH..SEA
RCH FOR A SPECIFIC HEADER..0658: A5 12  
   SRCH     LDA   DSKID      ;GET MASTER
 DISK ID BYTE 1.065A: 85 16             
 STA   HEADER     ;AND USE FOR HEADER DI
SK ID.065C: A5 13              LDA   DSK
ID+1    ;GET MASTER DISK ID BYTE 2.065E:
 85 17              STA   HEADER+1   ;AN
D USE FOR HEADER DISK ID.0660: A5 06    
          LDA   HDRS       ;GET JOB TRAC
K #.0662: 85 18              STA   HEADE
R+2   ;AND USE FOR HEADER TRACK.0664: A5
 07              LDA   HDRS+1     ;GET J
OB SECTOR #.0666: 85 19              STA
   HEADER+3   ;AND USE FOR HEADER SECTOR
.0668: A9 00              LDA   #00.066A
: 45 16              EOR   HEADER     ;G
ET THE HEADER CHECKSUM BY.066C: 45 17   
           EOR   HEADER+1   ;EXCLUSIVE O
R'ING THE ID.066E: 45 18              EO
R   HEADER+2   ;BYTES, TRACK AND SECTOR.
0670: 45 19              EOR   HEADER+3 
  ;NUMBERS, AND STORING THE.0672: 85 1A 
             STA   HEADER+4   ;RESULT HE
RE..0674: 20 34 F9           JSR   CONHD
R     ;CONVERT TO GCR, PUT IN STAB.0677:
 A2 5A              LDX   #$5A       ;TR
Y 90 TIMES.0679: 20 94 06  SRCH1    JSR 
  SYNCH      ;GO FIND A SYNC MARKER.067C
: 50 FE     SRCH2    BVC   SRCH2      ;W
AIT UNTIL CONTROLLER READY.067E: B8     
            CLV              ;RESET CONT
ROLLER.067F: AD 01 1C           LDA   DA
TA2      ;GET A GCR BYTE FROM DISKETTE.0
682: D9 24 00           CMP   STAB,Y    
 ;DOES IT COMPARE TO OUR HEADER.0685: D0
 06              BNE   SRCH3      ;NO.06
87: C8                 INY              
;INCREMENT HEADER POINTER.0688: C0 08   
           CPY   #8         ;HAS ENTIRE 
HEADER BEEN READ?.068A: D0 F0           
   BNE   SRCH2      ;NO-THEN GET MORE HE
ADER BYTES.068C: 60                 RTS 
             ;YES-ALL BYTES COMPARE, SO 
THIS.                                   
       ;IS THE CORRECT SECTOR, THEN.    
                                      ;R
ETURN...068D: CA        SRCH3    DEX    
          ;DECREMENT TRY COUNTER.068E: D
0 E9              BNE   SRCH1      ;CONT
INUE SEARCH FOR PROPER HEADER.0690: A9 2
0              LDA   #$20       ;SECTOR 
HEADER NOT FOUND SO RETURN.0692: D0 AA  
            BNE   ERROR      ;WITH A ERR
OR 20 (HEADER BLOCK NOT.                
                          ;FOUND)..WAIT 
20 MS FOR A SYNC MARK..0694: A9 D0     S
YNCH    LDA   #$D0       ;WAIT 20 MS FOR
 A SYNC.0696: 8D 05 18           STA   T
1HC1      ;AND PUT IN TIMER 1 HIGH.0699:
 A9 21              LDA   #$21       ;SE
T UP ERROR MSG (SYNC NOT FOUND).069B: 2C
 05 18  SYNCH1   BIT   T1HC1      ;HAS T
IMEOUT OCCURRED?.069E: 10 9E            
  BPL   ERROR      ;YES-THEN DISPLAY ERR
OR 21.06A0: 2C 00 1C           BIT   DSK
CNT     ;NO-THEN HAS SYNC BEEN FOUND?.06
A3: 30 F6              BMI   SYNCH1     
;NO-THEN WAIT SOME MORE FOR SYNC.06A5: A
D 01 1C           LDA   DATA2      ;YES-
THEN RESET PA LATCH.06A8: B8            
     CLV              ;CLEAR THE OVERFLO
W FLAG.06A9: A0 00              LDY   #0
0.06AB: 60                 RTS          
    ;AND RETURN.06AC: A0 A0 A0  FILE    
 DFB   $A0,$A0,$A0,$A0,$A0,$A0.06AF: A0 
A0 A0.06B2: A0 A0 A0           DFB   $A0
,$A0,$A0,$A0,$A0,$A0.06B5: A0 A0 A0.06B8
: A0 A0 A0           DFB   $A0,$A0,$A0,$
A0.06BB: A0..--END MERLIN-128 ASSEMBLY, 
444 BYTES, ERRORS: 0.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL