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 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL