ZAPL64
FILE INFORMATION
FILENAME(S): ZAPL64
FILE TYPE(S): SEQ
FILE SIZE: 20.8K
FIRST SEEN: 2025-12-01 19:06:08
APPEARS ON: 1 disk(s)
FILE HASH
25a9b7f1fa248d28d6e5021201350d0f7b9fdd4049f35ecf5d3e6c19812d30d1
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| ICE | ZAPL64 | SEQ | Icebreaker | 19 | 0 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 7A 61 70 6C 36 34 0D 0D 6F 52 49 47 49 4E 41 4C |zapl64..oRIGINAL| 00000010: 4C 59 20 57 52 49 54 54 45 4E 20 42 59 20 64 4F |LY WRITTEN BY dO| 00000020: 4E 20 6C 45 57 49 53 20 41 4E 44 20 41 50 50 45 |N lEWIS AND APPE| 00000030: 41 52 45 44 20 49 4E 20 61 50 52 49 4C 20 31 39 |ARED IN aPRIL 19| 00000040: 38 35 20 63 4F 4D 50 55 54 45 21 20 41 53 20 54 |85 cOMPUTE! AS T| 00000050: 48 45 0D 50 52 4F 54 52 41 4D 20 74 55 52 42 4F |HE.PROTRAM tURBO| 00000060: 64 49 53 4B 2E 20 75 50 4C 4F 41 44 45 44 20 57 |dISK. uPLOADED W| 00000070: 49 54 48 20 54 48 45 20 41 55 54 48 4F 52 53 20 |ITH THE AUTHORS | 00000080: 50 45 52 4D 49 53 53 49 4F 4E 20 42 59 20 71 2D |PERMISSION BY q-| 00000090: 6C 49 4E 4B 20 55 53 45 52 20 62 49 53 4F 4E 2C |lINK USER bISON,| 000000A0: 0D 41 4E 44 20 49 53 20 43 55 52 52 45 4E 54 4C |.AND IS CURRENTL| 000000B0: 59 20 49 4E 20 54 48 45 20 4F 52 49 47 49 4E 41 |Y IN THE ORIGINA| 000000C0: 4C 20 46 4F 52 4D 20 41 53 20 32 20 46 49 4C 45 |L FORM AS 2 FILE| 000000D0: 53 20 49 4E 20 54 48 45 20 70 52 4F 47 52 41 4D |S IN THE pROGRAM| 000000E0: 4D 45 52 27 53 20 77 4F 52 4B 53 48 4F 50 0D 6C |MER'S wORKSHOP.l| 000000F0: 49 42 52 41 52 59 2C 20 36 35 78 78 2C 20 75 54 |IBRARY, 65xx, uT| 00000100: 49 4C 49 54 49 45 53 20 73 4F 55 52 43 45 20 41 |ILITIES sOURCE A| 00000110: 53 3A 0D 0D 7A 41 50 2D 4C 44 45 52 32 2E 41 31 |S:..zAP-LDER2.A1| 00000120: 35 34 31 0D 7A 41 50 2D 4C 44 45 52 32 2E 41 36 |541.zAP-LDER2.A6| 00000130: 34 0D 0D 65 58 54 45 4E 53 49 56 45 20 43 4F 4D |4..eXTENSIVE COM| 00000140: 4D 45 4E 54 49 4E 47 20 41 4E 44 20 54 55 54 4F |MENTING AND TUTO| 00000150: 52 49 41 4C 20 42 59 20 6A 4F 48 4E 20 67 41 47 |RIAL BY jOHN gAG| 00000160: 45 52 0D 28 71 2D 6C 49 4E 4B 20 69 64 3A 20 73 |ER.(q-lINK id: s| 00000170: 55 50 45 52 64 49 53 4B 29 0D 28 63 4F 4D 50 55 |UPERdISK).(cOMPU| 00000180: 53 45 52 56 45 20 69 64 3A 20 37 31 33 33 36 2C |SERVE id: 71336,| 00000190: 36 32 34 29 0D 0D 73 55 50 45 52 64 49 53 4B 20 |624)..sUPERdISK | 000001A0: 63 4F 4D 4D 45 4E 54 53 3A 20 73 4F 4D 45 54 49 |cOMMENTS: sOMETI| 000001B0: 4D 45 53 20 69 27 4D 20 4E 4F 54 20 43 4F 4E 54 |MES i'M NOT CONT| 000001C0: 45 4E 54 20 57 49 54 48 20 4B 4E 4F 57 49 4E 47 |ENT WITH KNOWING| 000001D0: 20 4F 4E 4C 59 20 54 48 41 54 20 41 20 50 52 4F | ONLY THAT A PRO| 000001E0: 47 52 41 4D 0D 57 4F 52 4B 53 2E 20 74 48 45 52 |GRAM.WORKS. tHER| 000001F0: 45 20 41 52 45 20 43 45 52 54 41 49 4E 20 54 49 |E ARE CERTAIN TI| 00000200: 4D 45 53 20 69 20 57 41 4E 54 20 54 4F 20 4B 4E |MES i WANT TO KN| 00000210: 4F 57 20 77 48 59 20 41 4E 44 20 68 4F 57 3F 20 |OW wHY AND hOW? | 00000220: 74 48 49 53 20 48 41 53 20 42 45 45 4E 20 54 48 |tHIS HAS BEEN TH| 00000230: 45 0D 43 41 53 45 20 57 49 54 48 20 54 48 4F 53 |E.CASE WITH THOS| 00000240: 45 20 66 41 53 54 20 6C 4F 41 44 20 50 52 4F 47 |E fAST lOAD PROG| 00000250: 52 41 4D 53 20 54 48 41 54 20 48 41 56 45 20 42 |RAMS THAT HAVE B| 00000260: 45 45 4E 20 46 4C 4F 41 54 49 4E 47 20 41 52 4F |EEN FLOATING ARO| 00000270: 55 4E 44 2E 20 73 4F 20 57 48 45 4E 20 69 0D 53 |UND. sO WHEN i.S| 00000280: 41 57 20 54 48 45 20 32 20 53 4F 55 52 43 45 20 |AW THE 2 SOURCE | 00000290: 46 49 4C 45 53 20 62 49 53 4F 4E 20 55 50 4C 4F |FILES bISON UPLO| 000002A0: 41 44 45 44 2C 20 69 20 54 48 4F 55 47 48 54 20 |ADED, i THOUGHT | 000002B0: 22 67 52 45 41 54 21 20 6E 4F 57 20 69 20 43 41 |"gREAT! nOW i CA| 000002C0: 4E 20 46 49 4E 44 20 4F 55 54 0D 48 4F 57 20 54 |N FIND OUT.HOW T| 000002D0: 48 4F 53 45 20 44 41 52 4E 20 52 4F 55 54 49 4E |HOSE DARN ROUTIN| 000002E0: 45 53 20 57 4F 52 4B 22 2E 20 79 4F 55 20 43 41 |ES WORK". yOU CA| 000002F0: 4E 20 49 4D 41 47 49 4E 45 20 4D 59 20 44 49 53 |N IMAGINE MY DIS| 00000300: 41 50 50 4F 49 4E 54 4D 45 4E 54 20 57 48 45 4E |APPOINTMENT WHEN| 00000310: 20 69 20 4C 4F 4F 4B 45 44 0D 41 54 20 54 48 45 | i LOOKED.AT THE| 00000320: 20 32 20 46 49 4C 45 53 20 41 4E 44 20 46 4F 55 | 2 FILES AND FOU| 00000330: 4E 44 20 41 20 54 4F 54 41 4C 20 4F 46 20 41 42 |ND A TOTAL OF AB| 00000340: 4F 55 54 20 31 30 20 43 4F 4D 4D 45 4E 54 53 20 |OUT 10 COMMENTS | 00000350: 49 4E 20 54 48 45 20 53 4F 55 52 43 45 2E 20 61 |IN THE SOURCE. a| 00000360: 52 47 48 21 20 57 45 4C 4C 0D 69 20 47 55 45 53 |RGH! WELL.i GUES| 00000370: 53 20 59 4F 55 20 43 41 4E 27 54 20 48 41 56 45 |S YOU CAN'T HAVE| 00000380: 20 45 56 45 52 59 54 48 49 4E 47 2C 20 53 4F 20 | EVERYTHING, SO | 00000390: 44 45 43 49 44 45 44 20 54 4F 20 47 4F 20 54 48 |DECIDED TO GO TH| 000003A0: 52 4F 55 47 48 20 41 4E 44 20 46 49 47 55 52 45 |ROUGH AND FIGURE| 000003B0: 20 49 54 20 4F 55 54 0D 4D 59 53 45 4C 46 2E 20 | IT OUT.MYSELF. | 000003C0: 69 27 4D 20 47 4C 41 44 20 69 20 44 49 44 20 54 |i'M GLAD i DID T| 000003D0: 48 4F 55 47 48 2E 20 69 20 48 41 56 45 20 41 20 |HOUGH. i HAVE A | 000003E0: 4D 55 43 48 20 42 45 54 54 45 52 20 55 4E 44 45 |MUCH BETTER UNDE| 000003F0: 52 53 54 41 4E 44 49 4E 47 20 4F 46 20 48 4F 57 |RSTANDING OF HOW| 00000400: 20 54 48 4F 53 45 0D 66 41 53 54 20 6C 4F 41 44 | THOSE.fAST lOAD| 00000410: 20 50 52 4F 47 52 41 4D 53 20 57 4F 52 4B 20 49 | PROGRAMS WORK I| 00000420: 4E 20 47 45 4E 45 52 41 4C 2C 20 41 4E 44 20 73 |N GENERAL, AND s| 00000430: 45 52 49 41 4C 20 69 2F 6F 20 45 53 50 45 43 49 |ERIAL i/o ESPECI| 00000440: 41 4C 4C 59 2E 20 62 55 54 20 69 20 43 4F 55 4C |ALLY. bUT i COUL| 00000450: 44 4E 27 54 0D 48 41 56 45 20 44 4F 4E 45 20 49 |DN'T.HAVE DONE I| 00000460: 54 20 57 49 54 48 4F 55 54 20 4D 59 20 47 4F 4F |T WITHOUT MY GOO| 00000470: 44 20 4C 49 42 52 41 52 59 20 4F 46 20 52 45 46 |D LIBRARY OF REF| 00000480: 45 52 45 4E 43 45 20 42 4F 4F 4B 53 3A 0D 0D 31 |ERENCE BOOKS:..1| 00000490: 35 37 31 20 69 4E 54 45 52 4E 41 4C 53 20 28 61 |571 iNTERNALS (a| 000004A0: 42 41 43 55 53 29 0D 69 4E 53 49 44 45 20 63 4F |BACUS).iNSIDE cO| 000004B0: 4D 4D 4F 44 4F 52 45 20 64 4F 53 20 28 64 41 54 |MMODORE dOS (dAT| 000004C0: 41 4D 4F 53 54 29 0D 63 31 32 38 20 70 52 4F 47 |AMOST).c128 pROG| 000004D0: 52 41 4D 4D 45 52 27 53 20 72 45 46 45 52 45 4E |RAMMER'S rEFEREN| 000004E0: 43 45 20 67 55 49 44 45 20 28 62 41 4E 54 41 4D |CE gUIDE (bANTAM| 000004F0: 29 0D 0D 61 53 20 59 4F 55 20 4E 4F 54 49 43 45 |)..aS YOU NOTICE| 00000500: 2C 20 53 4F 4D 45 20 4F 46 20 54 48 45 20 42 4F |, SOME OF THE BO| 00000510: 4F 4B 53 20 69 20 55 53 45 44 20 41 52 45 20 46 |OKS i USED ARE F| 00000520: 4F 52 20 54 48 45 20 31 35 37 31 20 41 4E 44 20 |OR THE 1571 AND | 00000530: 63 31 32 38 2E 20 74 48 45 20 42 4F 4F 4B 0D 22 |c128. tHE BOOK."| 00000540: 31 35 37 31 20 69 4E 54 45 52 4E 41 4C 53 22 20 |1571 iNTERNALS" | 00000550: 48 41 53 20 41 20 56 45 52 59 20 47 4F 4F 44 20 |HAS A VERY GOOD | 00000560: 45 58 50 4C 41 4E 41 54 49 4F 4E 20 4F 46 20 48 |EXPLANATION OF H| 00000570: 4F 57 20 73 45 52 49 41 4C 20 69 2F 6F 20 57 4F |OW sERIAL i/o WO| 00000580: 52 4B 53 2C 20 57 48 49 4C 45 0D 54 48 45 49 52 |RKS, WHILE.THEIR| 00000590: 20 4D 41 4E 55 41 4C 20 22 61 4E 41 54 4F 4D 59 | MANUAL "aNATOMY| 000005A0: 20 4F 46 20 54 48 45 20 31 35 34 31 20 64 49 53 | OF THE 1541 dIS| 000005B0: 4B 20 64 52 49 56 45 22 20 42 41 52 45 4C 59 20 |K dRIVE" BARELY | 000005C0: 4D 45 4E 54 49 4F 4E 53 20 54 48 49 53 20 53 55 |MENTIONS THIS SU| 000005D0: 42 4A 45 43 54 2E 0D 77 48 59 20 54 48 45 59 20 |BJECT..wHY THEY | 000005E0: 44 49 44 4E 27 54 20 49 4E 43 4C 55 44 45 20 54 |DIDN'T INCLUDE T| 000005F0: 48 45 20 53 45 52 49 41 4C 20 69 2F 6F 20 49 4E |HE SERIAL i/o IN| 00000600: 46 4F 20 49 4E 20 54 48 45 20 31 35 34 31 20 4D |FO IN THE 1541 M| 00000610: 41 4E 55 41 4C 20 49 53 20 42 45 59 4F 4E 44 20 |ANUAL IS BEYOND | 00000620: 4D 45 2E 0D 61 4E 59 57 41 59 2C 20 69 20 48 4F |ME..aNYWAY, i HO| 00000630: 50 45 20 59 4F 55 20 43 41 4E 20 4C 45 41 52 4E |PE YOU CAN LEARN| 00000640: 20 46 52 4F 4D 20 54 48 45 20 52 45 53 55 4C 54 | FROM THE RESULT| 00000650: 20 4F 46 20 4D 59 20 45 46 46 4F 52 54 53 2C 20 | OF MY EFFORTS, | 00000660: 41 4E 44 20 50 4C 45 41 53 45 20 4C 45 54 20 4D |AND PLEASE LET M| 00000670: 45 0D 4B 4E 4F 57 20 57 48 41 54 20 59 4F 55 20 |E.KNOW WHAT YOU | 00000680: 54 48 49 4E 4B 2E 20 61 4C 53 4F 20 69 20 41 44 |THINK. aLSO i AD| 00000690: 4D 49 54 20 69 27 6D 20 4E 4F 54 20 41 4E 20 45 |MIT i'm NOT AN E| 000006A0: 58 50 45 52 49 45 4E 43 45 44 20 64 6F 73 20 48 |XPERIENCED dos H| 000006B0: 41 43 4B 45 52 20 4F 52 20 6D 6C 0D 50 52 4F 47 |ACKER OR ml.PROG| 000006C0: 52 41 4D 4D 45 52 2C 20 53 4F 20 49 46 20 59 4F |RAMMER, SO IF YO| 000006D0: 55 20 4E 4F 54 49 43 45 20 41 4E 59 20 43 4F 52 |U NOTICE ANY COR| 000006E0: 52 45 43 54 49 4F 4E 53 20 4F 52 20 41 44 44 49 |RECTIONS OR ADDI| 000006F0: 54 49 4F 4E 53 20 54 48 41 54 20 4E 45 45 44 20 |TIONS THAT NEED | 00000700: 54 4F 20 42 45 20 4D 41 44 45 2C 0D 50 4C 45 41 |TO BE MADE,.PLEA| 00000710: 53 45 20 54 45 4C 4C 20 4D 45 21 0D 0D 7A 41 50 |SE TELL ME!..zAP| 00000720: 2F 6C 4F 41 44 45 52 20 36 34 20 52 45 53 49 44 |/lOADER 64 RESID| 00000730: 45 4E 54 20 43 4F 44 45 0D 0D 20 20 20 20 20 20 |ENT CODE.. | 00000740: 20 20 20 20 20 20 20 20 20 20 36 34 20 52 4F 55 | 64 ROU| 00000750: 54 49 4E 45 53 20 26 20 52 41 4D 0D 0D 20 20 20 |TINES & RAM.. | 00000760: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6F 72 | por| 00000770: 74 61 20 20 20 20 3D 20 20 20 20 20 24 64 64 30 |ta = $dd0| 00000780: 30 20 20 20 20 20 20 3B 36 35 32 36 20 63 49 41 |0 ;6526 cIA| 00000790: 20 23 32 2D 70 4F 52 54 20 61 0D 20 20 20 20 20 | #2-pORT a. | 000007A0: 20 20 20 20 20 20 20 20 20 20 20 76 69 63 63 74 | vicct| 000007B0: 72 20 20 20 3D 20 20 20 20 20 24 64 30 31 31 20 |r = $d011 | 000007C0: 20 20 20 20 20 3B 76 69 63 20 63 4F 4E 54 52 4F | ;vic cONTRO| 000007D0: 4C 20 72 45 47 49 53 54 45 52 20 31 0D 20 20 20 |L rEGISTER 1. | 000007E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 | buf| 000007F0: 66 65 72 20 20 20 3D 20 20 20 20 20 24 63 34 30 |fer = $c40| 00000800: 30 20 20 20 20 20 20 3B 74 45 4D 50 20 42 55 46 |0 ;tEMP BUF| 00000810: 46 45 52 20 46 4F 52 20 53 45 43 54 4F 52 20 54 |FER FOR SECTOR T| 00000820: 52 41 4E 53 46 45 52 0D 20 20 20 20 20 20 20 20 |RANSFER. | 00000830: 20 20 20 20 20 20 20 20 69 6C 6F 61 64 20 20 20 | iload | 00000840: 20 3D 20 20 20 20 20 24 30 33 33 30 20 20 20 20 | = $0330 | 00000850: 20 20 3B 63 36 34 20 6B 45 52 4E 41 4C 20 6C 6F | ;c64 kERNAL lo| 00000860: 61 64 20 52 4F 55 54 49 4E 45 20 56 45 43 54 4F |ad ROUTINE VECTO| 00000870: 52 0D 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |R.. | 00000880: 20 20 20 6B 45 52 4E 41 4C 20 4A 55 4D 50 53 0D | kERNAL JUMPS.| 00000890: 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000008A0: 20 74 61 6C 6B 20 20 20 20 20 3D 20 20 20 20 20 | talk = | 000008B0: 24 66 66 62 34 20 20 20 20 20 20 3B 63 4F 4D 4D |$ffb4 ;cOMM| 000008C0: 41 4E 44 20 44 45 56 49 43 45 20 54 4F 20 74 61 |AND DEVICE TO ta| 000008D0: 6C 6B 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |lk. | 000008E0: 20 20 20 6C 69 73 74 65 6E 20 20 20 3D 20 20 20 | listen = | 000008F0: 20 20 24 66 66 62 31 20 20 20 20 20 20 3B 63 4F | $ffb1 ;cO| 00000900: 4D 4D 41 4E 44 20 44 45 56 49 43 45 20 54 4F 20 |MMAND DEVICE TO | 00000910: 6C 69 73 74 65 6E 0D 20 20 20 20 20 20 20 20 20 |listen. | 00000920: 20 20 20 20 20 20 20 75 6E 6C 73 6E 20 20 20 20 | unlsn | 00000930: 3D 20 20 20 20 20 24 66 66 61 65 20 20 20 20 20 |= $ffae | 00000940: 20 3B 63 4F 4D 4D 41 4E 44 20 44 45 56 49 43 45 | ;cOMMAND DEVICE| 00000950: 20 54 4F 20 75 6E 6C 69 73 74 65 6E 0D 20 20 20 | TO unlisten. | 00000960: 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6E 74 | unt| 00000970: 61 6C 6B 20 20 20 3D 20 20 20 20 20 24 66 66 61 |alk = $ffa| 00000980: 62 20 20 20 20 20 20 3B 63 4F 4D 4D 41 4E 44 20 |b ;cOMMAND | 00000990: 44 45 56 49 43 45 20 54 4F 20 75 6E 74 61 6C 6B |DEVICE TO untalk| 000009A0: 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000009B0: 20 63 69 6F 75 74 20 20 20 20 3D 20 20 20 20 20 | ciout = | 000009C0: 24 66 66 61 38 20 20 20 20 20 20 3B 6F 55 54 50 |$ffa8 ;oUTP| 000009D0: 55 54 20 42 59 54 45 20 4F 56 45 52 20 53 45 52 |UT BYTE OVER SER| 000009E0: 49 41 4C 20 42 55 53 0D 20 20 20 20 20 20 20 20 |IAL BUS. | 000009F0: 20 20 20 20 20 20 20 20 73 65 63 6F 6E 64 20 20 | second | 00000A00: 20 3D 20 20 20 20 20 24 66 66 39 33 20 20 20 20 | = $ff93 | 00000A10: 20 20 3B 73 45 4E 44 20 73 45 43 4F 4E 44 41 52 | ;sEND sECONDAR| 00000A20: 59 20 41 44 44 52 45 53 53 0D 20 20 20 20 20 20 |Y ADDRESS. | 00000A30: 20 20 20 20 20 20 20 20 20 20 6C 6F 61 64 36 34 | load64| 00000A40: 20 20 20 3D 20 20 20 20 20 24 66 34 61 35 20 20 | = $f4a5 | 00000A50: 20 20 20 20 3B 63 36 34 20 4E 4F 52 4D 41 4C 20 | ;c64 NORMAL | 00000A60: 6C 6F 61 64 20 52 4F 55 54 49 4E 45 0D 20 20 20 |load ROUTINE. | 00000A70: 20 20 20 20 20 20 20 20 20 20 20 20 20 6F 75 74 | out| 00000A80: 73 63 6E 20 20 20 3D 20 20 20 20 20 24 65 37 31 |scn = $e71| 00000A90: 36 20 20 20 20 20 20 3B 70 52 49 4E 54 20 43 48 |6 ;pRINT CH| 00000AA0: 41 52 20 49 4E 20 61 20 41 54 20 4E 45 58 54 0D |AR IN a AT NEXT.| 00000AB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000AC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000AD0: 20 20 20 20 20 20 20 20 20 20 3B 43 55 52 53 4F | ;CURSO| 00000AE0: 52 20 50 4F 53 49 54 49 4F 4E 2E 0D 0D 20 20 20 |R POSITION... | 00000AF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 36 34 | c64| 00000B00: 20 7A 45 52 4F 20 50 41 47 45 20 55 53 41 47 45 | zERO PAGE USAGE| 00000B10: 0D 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00000B20: 20 20 62 73 6F 75 72 20 20 20 20 3D 20 20 20 20 | bsour = | 00000B30: 20 24 39 35 20 20 20 20 20 20 20 20 3B 74 45 4D | $95 ;tEM| 00000B40: 50 20 42 55 46 46 45 52 20 46 4F 52 20 53 45 52 |P BUFFER FOR SER| 00000B50: 49 41 4C 20 44 41 54 41 0D 20 20 20 20 20 20 20 |IAL DATA. | 00000B60: 20 20 20 20 20 20 20 20 20 65 61 6C 20 20 20 20 | eal | 00000B70: 20 20 3D 20 20 20 20 20 24 61 65 20 20 20 20 20 | = $ae | 00000B80: 20 20 20 3B 70 4F 49 4E 54 45 52 20 54 4F 20 50 | ;pOINTER TO P| 00000B90: 52 4F 47 52 41 4D 20 53 54 41 52 54 20 41 44 44 |ROGRAM START ADD| 00000BA0: 52 45 53 53 0D 20 20 20 20 20 20 20 20 20 20 20 |RESS. | 00000BB0: 20 20 20 20 20 74 65 6D 70 20 20 20 20 20 3D 20 | temp = | 00000BC0: 20 20 20 20 24 66 62 20 20 20 20 20 20 20 20 3B | $fb ;| 00000BD0: 70 4F 49 4E 54 45 52 20 46 4F 52 20 31 35 34 31 |pOINTER FOR 1541| 00000BE0: 20 44 52 49 56 45 20 50 52 4F 47 52 41 4D 0D 20 | DRIVE PROGRAM. | 00000BF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000C00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000C10: 20 20 20 20 20 20 20 20 20 3B 54 48 41 54 20 49 | ;THAT I| 00000C20: 53 20 4C 4F 43 41 54 45 44 20 41 54 20 24 63 32 |S LOCATED AT $c2| 00000C30: 30 30 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |00. | 00000C40: 20 20 20 74 65 6D 70 31 20 20 20 20 3D 20 20 20 | temp1 = | 00000C50: 20 20 24 66 64 20 20 20 20 20 20 20 20 3B 70 4F | $fd ;pO| 00000C60: 49 4E 54 45 52 20 46 4F 52 20 31 35 34 31 20 52 |INTER FOR 1541 R| 00000C70: 41 4D 20 28 24 30 35 30 30 29 0D 20 20 20 20 20 |AM ($0500). | 00000C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000C90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000CA0: 20 20 20 20 20 3B 54 48 41 54 20 54 48 45 20 50 | ;THAT THE P| 00000CB0: 52 4F 47 52 41 4D 20 49 53 20 54 4F 20 42 45 0D |ROGRAM IS TO BE.| 00000CC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000CD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000CE0: 20 20 20 20 20 20 20 20 20 20 3B 44 4F 57 4E 4C | ;DOWNL| 00000CF0: 4F 41 44 45 44 20 54 4F 2E 0D 20 20 20 20 20 20 |OADED TO.. | 00000D00: 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 20 | page | 00000D10: 20 20 20 3D 20 20 20 20 20 24 66 66 20 20 20 20 | = $ff | 00000D20: 20 20 20 20 3B 6E 55 4D 42 45 52 20 4F 46 20 33 | ;nUMBER OF 3| 00000D30: 32 20 42 59 54 45 20 50 41 47 45 53 20 54 4F 0D |2 BYTE PAGES TO.| 00000D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000D50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000D60: 20 20 20 20 20 20 20 20 20 20 3B 42 45 20 44 4F | ;BE DO| 00000D70: 57 4E 4C 4F 41 44 45 44 20 54 4F 20 54 48 45 20 |WNLOADED TO THE | 00000D80: 31 35 34 31 20 28 31 36 29 2E 0D 20 20 20 20 20 |1541 (16).. | 00000D90: 20 20 20 20 20 20 20 20 20 20 20 66 61 20 20 20 | fa | 00000DA0: 20 20 20 20 3D 20 20 20 20 20 24 62 61 20 20 20 | = $ba | 00000DB0: 20 20 20 20 20 3B 63 55 52 52 45 4E 54 20 44 45 | ;cURRENT DE| 00000DC0: 56 49 43 45 20 28 46 4F 52 20 44 52 49 56 45 20 |VICE (FOR DRIVE | 00000DD0: 3D 20 38 29 0D 20 20 20 20 20 20 20 20 20 20 20 |= 8). | 00000DE0: 20 20 20 20 20 66 6E 6C 65 6E 20 20 20 20 3D 20 | fnlen = | 00000DF0: 20 20 20 20 24 62 37 20 20 20 20 20 20 20 20 3B | $b7 ;| 00000E00: 6C 45 4E 47 54 48 20 4F 46 20 46 49 4C 45 4E 41 |lENGTH OF FILENA| 00000E10: 4D 45 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |ME. | 00000E20: 20 20 20 66 6E 61 64 72 20 20 20 20 3D 20 20 20 | fnadr = | 00000E30: 20 20 24 62 62 20 20 20 20 20 20 20 20 3B 70 4F | $bb ;pO| 00000E40: 49 4E 54 45 52 20 57 48 45 52 45 20 46 49 4C 45 |INTER WHERE FILE| 00000E50: 4E 41 4D 45 20 49 53 20 4C 4F 43 41 54 45 44 0D |NAME IS LOCATED.| 00000E60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000E70: 73 61 20 20 20 20 20 20 20 3D 20 20 20 20 20 24 |sa = $| 00000E80: 62 39 20 20 20 20 20 20 20 20 3B 73 45 43 4F 4E |b9 ;sECON| 00000E90: 44 41 52 59 20 41 44 44 52 45 53 53 0D 20 20 20 |DARY ADDRESS. | 00000EA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6D 65 6D | mem| 00000EB0: 75 73 73 20 20 20 3D 20 20 20 20 20 24 63 33 20 |uss = $c3 | 00000EC0: 20 20 20 20 20 20 20 3B 6E 4F 52 4D 41 4C 20 62 | ;nORMAL b| 00000ED0: 41 53 49 43 20 6C 6F 61 64 20 50 4F 49 4E 54 45 |ASIC load POINTE| 00000EE0: 52 20 28 24 30 38 30 31 29 0D 20 20 20 20 20 20 |R ($0801). | 00000EF0: 20 20 20 20 20 20 20 20 20 20 76 65 72 63 6B 20 | verck | 00000F00: 20 20 20 3D 20 20 20 20 20 24 39 33 20 20 20 20 | = $93 | 00000F10: 20 20 20 20 3B 66 4C 41 47 3A 20 30 3D 6C 4F 41 | ;fLAG: 0=lOA| 00000F20: 44 20 31 3D 76 45 52 49 46 59 0D 0D 20 20 20 20 |D 1=vERIFY.. | 00000F30: 20 20 20 20 20 20 20 20 20 20 20 20 73 45 45 20 | sEE | 00000F40: 7A 41 50 20 4C 4F 41 44 45 52 20 31 35 34 31 20 |zAP LOADER 1541 | 00000F50: 52 45 53 49 44 45 4E 54 20 43 4F 44 45 0D 0D 20 |RESIDENT CODE.. | 00000F60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 | f| 00000F70: 69 6C 65 20 20 20 20 20 3D 20 20 20 20 20 24 30 |ile = $0| 00000F80: 36 61 63 2B 24 62 64 30 30 3B 73 45 43 4F 4E 44 |6ac+$bd00;sECOND| 00000F90: 41 52 59 20 66 49 4C 45 4E 41 4D 45 20 41 52 45 |ARY fILENAME ARE| 00000FA0: 41 20 55 53 45 44 0D 20 20 20 20 20 20 20 20 20 |A USED. | 00000FB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000FD0: 20 3B 42 59 20 54 48 49 53 20 50 52 4F 47 52 41 | ;BY THIS PROGRA| 00000FE0: 4D 2E 20 74 48 45 20 4D 41 49 4E 0D 20 20 20 20 |M. tHE MAIN. | 00000FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001010: 20 20 20 20 20 20 3B 46 49 4C 45 4E 41 4D 45 20 | ;FILENAME | 00001020: 49 53 20 50 4F 49 4E 54 45 44 20 54 4F 20 42 59 |IS POINTED TO BY| 00001030: 20 24 62 62 2E 0D 0D 70 52 4F 47 52 41 4D 20 53 | $bb...pROGRAM S| 00001040: 54 41 52 54 53 20 48 45 52 45 0D 0D 20 20 20 20 |TARTS HERE.. | 00001050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001060: 20 20 20 20 20 6F 72 67 20 20 20 24 63 30 30 30 | org $c000| 00001070: 0D 0D 63 30 30 30 3A 20 34 63 20 31 62 20 63 30 |..c000: 4c 1b c0| 00001080: 20 20 7A 61 70 6F 6E 20 20 20 20 6A 6D 70 20 20 | zapon jmp | 00001090: 20 7A 61 70 6F 6E 30 20 20 20 20 20 3B 6A 55 4D | zapon0 ;jUM| 000010A0: 50 20 54 4F 20 45 4E 41 42 4C 45 20 66 41 53 54 |P TO ENABLE fAST| 000010B0: 20 4C 4F 41 44 45 52 0D 0D 64 49 53 41 42 4C 45 | LOADER..dISABLE| 000010C0: 20 66 41 53 54 20 4C 4F 41 44 20 52 4F 55 54 49 | fAST LOAD ROUTI| 000010D0: 4E 45 0D 0D 63 30 30 33 3A 20 61 39 20 61 35 20 |NE..c003: a9 a5 | 000010E0: 20 20 20 20 7A 61 70 6F 66 66 20 20 20 6C 64 61 | zapoff lda| 000010F0: 20 20 20 23 3C 6C 6F 61 64 36 34 20 20 20 3B 72 | #<load64 ;r| 00001100: 45 53 54 4F 52 45 20 69 6C 6F 61 64 20 56 45 43 |ESTORE iload VEC| 00001110: 54 4F 52 20 54 4F 20 4E 4F 52 4D 41 4C 0D 63 30 |TOR TO NORMAL.c0| 00001120: 30 35 3A 20 38 64 20 33 30 20 30 33 20 20 20 20 |05: 8d 30 03 | 00001130: 20 20 20 20 20 20 20 73 74 61 20 20 20 69 6C 6F | sta ilo| 00001140: 61 64 20 20 20 20 20 20 3B 63 36 34 20 4C 4F 41 |ad ;c64 LOA| 00001150: 44 20 52 4F 55 54 49 4E 45 20 28 66 34 61 35 29 |D ROUTINE (f4a5)| 00001160: 0D 63 30 30 38 3A 20 61 39 20 66 34 20 20 20 20 |.c008: a9 f4 | 00001170: 20 20 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 | lda | 00001180: 23 3E 6C 6F 61 64 36 34 0D 63 30 30 61 3A 20 38 |#>load64.c00a: 8| 00001190: 64 20 33 31 20 30 33 20 20 20 20 20 20 20 20 20 |d 31 03 | 000011A0: 20 20 73 74 61 20 20 20 69 6C 6F 61 64 2B 31 0D | sta iload+1.| 000011B0: 63 30 30 64 3A 20 61 30 20 30 30 20 20 20 20 20 |c00d: a0 00 | 000011C0: 20 20 20 20 20 20 20 20 20 6C 64 79 20 20 20 23 | ldy #| 000011D0: 30 30 0D 63 30 30 66 3A 20 62 39 20 32 39 20 63 |00.c00f: b9 29 c| 000011E0: 30 20 20 7A 61 70 6F 66 30 20 20 20 6C 64 61 20 |0 zapof0 lda | 000011F0: 20 20 6D 73 67 31 2C 79 20 20 20 20 20 3B 70 52 | msg1,y ;pR| 00001200: 49 4E 54 20 64 69 73 61 62 6C 65 64 20 4D 45 53 |INT disabled MES| 00001210: 53 41 47 45 0D 63 30 31 32 3A 20 66 30 20 30 36 |SAGE.c012: f0 06| 00001220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 | be| 00001230: 71 20 20 20 7A 61 70 6F 66 78 0D 63 30 31 34 3A |q zapofx.c014:| 00001240: 20 32 30 20 31 36 20 65 37 20 20 20 20 20 20 20 | 20 16 e7 | 00001250: 20 20 20 20 6A 73 72 20 20 20 6F 75 74 73 63 6E | jsr outscn| 00001260: 0D 63 30 31 37 3A 20 63 38 20 20 20 20 20 20 20 |.c017: c8 | 00001270: 20 20 20 20 20 20 20 20 20 20 69 6E 79 0D 63 30 | iny.c0| 00001280: 31 38 3A 20 64 30 20 66 35 20 20 20 20 20 20 20 |18: d0 f5 | 00001290: 20 20 20 20 20 20 20 62 6E 65 20 20 20 7A 61 70 | bne zap| 000012A0: 6F 66 30 0D 63 30 31 61 3A 20 36 30 20 20 20 20 |of0.c01a: 60 | 000012B0: 20 20 20 20 7A 61 70 6F 66 78 20 20 20 72 74 73 | zapofx rts| 000012C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 41 | ;A| 000012D0: 4E 44 20 52 45 54 55 52 4E 0D 0D 65 4E 41 42 4C |ND RETURN..eNABL| 000012E0: 45 20 66 41 53 54 20 4C 4F 41 44 20 52 4F 55 54 |E fAST LOAD ROUT| 000012F0: 49 4E 45 0D 0D 63 30 31 62 3A 20 61 39 20 34 66 |INE..c01b: a9 4f| 00001300: 20 20 20 20 20 7A 61 70 6F 6E 30 20 20 20 6C 64 | zapon0 ld| 00001310: 61 20 20 20 23 3C 7A 61 70 20 20 20 20 20 20 3B |a #<zap ;| 00001320: 73 45 54 20 69 6C 6F 61 64 20 56 45 43 54 4F 52 |sET iload VECTOR| 00001330: 20 54 4F 20 50 4F 49 4E 54 20 54 4F 0D 63 30 31 | TO POINT TO.c01| 00001340: 64 3A 20 38 64 20 33 30 20 30 33 20 20 20 20 20 |d: 8d 30 03 | 00001350: 20 20 20 20 20 20 73 74 61 20 20 20 69 6C 6F 61 | sta iloa| 00001360: 64 20 20 20 20 20 20 3B 54 48 45 20 66 41 53 54 |d ;THE fAST| 00001370: 20 4C 4F 41 44 20 52 4F 55 54 49 4E 45 2E 0D 63 | LOAD ROUTINE..c| 00001380: 30 32 30 3A 20 61 39 20 63 30 20 20 20 20 20 20 |020: a9 c0 | 00001390: 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 23 3E | lda #>| 000013A0: 7A 61 70 0D 63 30 32 32 3A 20 38 64 20 33 31 20 |zap.c022: 8d 31 | 000013B0: 30 33 20 20 20 20 20 20 20 20 20 20 20 73 74 61 |03 sta| 000013C0: 20 20 20 69 6C 6F 61 64 2B 31 0D 63 30 32 35 3A | iload+1.c025:| 000013D0: 20 61 30 20 30 66 20 20 20 20 20 20 20 20 20 20 | a0 0f | 000013E0: 20 20 20 20 6C 64 79 20 20 20 23 6D 73 67 32 2D | ldy #msg2-| 000013F0: 6C 69 74 73 20 3B 70 52 49 4E 54 20 22 65 6E 61 |lits ;pRINT "ena| 00001400: 62 6C 65 64 22 20 4D 45 53 53 41 47 45 0D 63 30 |bled" MESSAGE.c0| 00001410: 32 37 3A 20 64 30 20 65 36 20 20 20 20 20 20 20 |27: d0 e6 | 00001420: 20 20 20 20 20 20 20 62 6E 65 20 20 20 7A 61 70 | bne zap| 00001430: 6F 66 30 0D 0D 20 20 20 20 20 20 20 20 20 20 20 |of0.. | 00001440: 20 20 20 20 20 6C 69 74 73 20 20 20 20 20 3D 20 | lits = | 00001450: 20 20 20 20 2A 0D 63 30 32 39 3A 20 30 64 20 20 | *.c029: 0d | 00001460: 20 20 20 20 20 20 6D 73 67 31 20 20 20 20 20 64 | msg1 d| 00001470: 66 62 20 20 20 24 30 64 0D 63 30 32 61 3A 20 35 |fb $0d.c02a: 5| 00001480: 61 20 34 31 20 35 30 20 20 20 20 20 20 20 20 20 |a 41 50 | 00001490: 20 20 61 73 63 20 20 20 27 7A 61 70 20 64 69 73 | asc 'zap dis| 000014A0: 61 62 6C 65 64 27 2C 30 64 2C 30 30 0D 63 30 32 |abled',0d,00.c02| 000014B0: 64 3A 20 32 30 20 34 34 20 34 39 20 35 33 20 34 |d: 20 44 49 53 4| 000014C0: 31 20 34 32 20 34 63 20 34 35 0D 63 30 33 35 3A |1 42 4c 45.c035:| 000014D0: 20 34 34 20 30 64 20 30 30 0D 63 30 33 38 3A 20 | 44 0d 00.c038: | 000014E0: 30 64 20 20 20 20 20 20 20 20 6D 73 67 32 20 20 |0d msg2 | 000014F0: 20 20 20 64 66 62 20 20 20 24 30 64 0D 63 30 33 | dfb $0d.c03| 00001500: 39 3A 20 35 61 20 34 31 20 35 30 20 20 20 20 20 |9: 5a 41 50 | 00001510: 20 20 20 20 20 20 61 73 63 20 20 20 27 7A 61 70 | asc 'zap| 00001520: 20 76 30 32 32 33 2F 38 35 20 65 6E 61 62 6C 65 | v0223/85 enable| 00001530: 64 27 2C 30 64 2C 30 30 0D 63 30 33 63 3A 20 32 |d',0d,00.c03c: 2| 00001540: 30 20 35 36 20 33 30 20 33 32 20 33 32 20 33 33 |0 56 30 32 32 33| 00001550: 20 32 66 20 33 38 0D 63 30 34 34 3A 20 33 35 20 | 2f 38.c044: 35 | 00001560: 32 30 20 34 35 20 34 65 20 34 31 20 34 32 20 34 |20 45 4e 41 42 4| 00001570: 63 20 34 35 0D 63 30 34 63 3A 20 34 34 20 30 64 |c 45.c04c: 44 0d| 00001580: 20 30 30 0D 0D 66 41 53 54 20 4C 4F 41 44 20 52 | 00..fAST LOAD R| 00001590: 4F 55 54 49 4E 45 20 53 54 41 52 54 53 20 48 45 |OUTINE STARTS HE| 000015A0: 52 45 2E 20 61 54 20 54 48 49 53 20 50 4F 49 4E |RE. aT THIS POIN| 000015B0: 54 2C 20 57 48 45 4E 20 54 48 45 20 69 6C 6F 61 |T, WHEN THE iloa| 000015C0: 64 20 56 45 43 54 4F 52 20 4A 55 4D 50 53 20 48 |d VECTOR JUMPS H| 000015D0: 45 52 45 2C 0D 54 48 45 20 61 20 52 45 47 49 53 |ERE,.THE a REGIS| 000015E0: 54 45 52 20 57 49 4C 4C 20 43 4F 4E 54 41 49 4E |TER WILL CONTAIN| 000015F0: 20 54 48 45 20 46 4C 41 47 20 46 4F 52 20 41 20 | THE FLAG FOR A | 00001600: 6C 6F 61 64 20 4F 52 20 76 65 72 69 66 79 2E 20 |load OR verify. | 00001610: 28 30 2D 6C 4F 41 44 20 31 2D 76 45 52 49 46 59 |(0-lOAD 1-vERIFY| 00001620: 29 0D 0D 63 30 34 66 3A 20 38 35 20 39 33 20 20 |)..c04f: 85 93 | 00001630: 20 20 20 7A 61 70 20 20 20 20 20 20 73 74 61 20 | zap sta | 00001640: 20 20 76 65 72 63 6B 20 20 20 20 20 20 3B 73 41 | verck ;sA| 00001650: 56 45 20 56 45 52 49 46 59 20 46 4C 41 47 0D 63 |VE VERIFY FLAG.c| 00001660: 30 35 31 3A 20 61 35 20 39 33 20 20 20 20 20 20 |051: a5 93 | 00001670: 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 76 65 | lda ve| 00001680: 72 63 6B 20 20 20 20 20 20 3B 67 45 54 20 56 45 |rck ;gET VE| 00001690: 52 49 46 59 20 46 4C 41 47 0D 63 30 35 33 3A 20 |RIFY FLAG.c053: | 000016A0: 64 30 20 31 65 20 20 20 20 20 20 20 20 20 20 20 |d0 1e | 000016B0: 20 20 20 62 6E 65 20 20 20 64 69 72 63 74 20 20 | bne dirct | 000016C0: 20 20 20 20 3B 69 53 20 49 54 20 41 20 76 65 72 | ;iS IT A ver| 000016D0: 69 66 79 3F 20 79 45 53 20 54 48 45 4E 20 4A 55 |ify? yES THEN JU| 000016E0: 4D 50 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |MP. | 000016F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001700: 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 54 4F | ;TO| 00001710: 20 4E 4F 52 4D 41 4C 20 63 36 34 20 6C 6F 61 64 | NORMAL c64 load| 00001720: 20 52 4F 55 54 49 4E 45 2E 0D 20 20 20 20 20 20 | ROUTINE.. | 00001730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001750: 20 20 20 20 3B 6E 4F 2D 54 48 45 4E 20 49 54 53 | ;nO-THEN ITS| 00001760: 20 41 20 6C 6F 61 64 20 43 4F 4D 4D 41 4E 44 0D | A load COMMAND.| 00001770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 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 3B 53 4F 20 43 4F | ;SO CO| 000017A0: 4E 54 49 4E 55 45 20 48 45 52 45 2E 0D 0D 63 4C |NTINUE HERE...cL| 000017B0: 45 41 52 20 66 49 4C 45 20 6E 41 4D 45 20 41 52 |EAR fILE nAME AR| 000017C0: 45 41 0D 0D 63 30 35 35 3A 20 61 32 20 31 30 20 |EA..c055: a2 10 | 000017D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 78 | ldx| 000017E0: 20 20 20 23 31 36 20 20 20 20 20 20 20 20 3B 74 | #16 ;t| 000017F0: 48 49 53 20 43 4C 45 41 52 53 20 54 48 45 20 53 |HIS CLEARS THE S| 00001800: 45 43 4F 4E 44 41 52 59 0D 63 30 35 37 3A 20 61 |ECONDARY.c057: a| 00001810: 39 20 61 30 20 20 20 20 20 20 20 20 20 20 20 20 |9 a0 | 00001820: 20 20 6C 64 61 20 20 20 23 24 61 30 20 20 20 20 | lda #$a0 | 00001830: 20 20 20 3B 66 49 4C 45 4E 41 4D 45 20 41 52 45 | ;fILENAME ARE| 00001840: 41 20 55 53 45 44 20 42 59 20 54 48 49 53 0D 63 |A USED BY THIS.c| 00001850: 30 35 39 3A 20 39 64 20 61 63 20 63 33 20 20 63 |059: 9d ac c3 c| 00001860: 6C 72 66 69 6C 20 20 20 73 74 61 20 20 20 66 69 |lrfil sta fi| 00001870: 6C 65 2C 78 20 20 20 20 20 3B 50 52 4F 47 52 41 |le,x ;PROGRA| 00001880: 4D 2E 20 74 48 45 20 4D 41 49 4E 20 46 49 4C 45 |M. tHE MAIN FILE| 00001890: 4E 41 4D 45 0D 63 30 35 63 3A 20 63 61 20 20 20 |NAME.c05c: ca | 000018A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 | de| 000018B0: 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B |x ;| 000018C0: 41 52 45 41 20 49 53 20 50 4F 49 4E 54 45 44 20 |AREA IS POINTED | 000018D0: 54 4F 20 42 59 20 41 0D 63 30 35 64 3A 20 31 30 |TO BY A.c05d: 10| 000018E0: 20 66 61 20 20 20 20 20 20 20 20 20 20 20 20 20 | fa | 000018F0: 20 62 70 6C 20 20 20 63 6C 72 66 69 6C 20 20 20 | bpl clrfil | 00001900: 20 20 3B 50 4F 49 4E 54 45 52 20 41 54 20 24 62 | ;POINTER AT $b| 00001910: 62 2E 0D 0D 63 48 45 43 4B 20 49 46 20 64 49 52 |b...cHECK IF dIR| 00001920: 45 43 54 4F 52 59 20 4C 4F 41 44 0D 0D 63 30 35 |ECTORY LOAD..c05| 00001930: 66 3A 20 61 30 20 30 30 20 20 20 20 20 20 20 20 |f: a0 00 | 00001940: 20 20 20 20 20 20 6C 64 79 20 20 20 23 30 20 20 | ldy #0 | 00001950: 20 20 20 20 20 20 20 3B 63 48 45 43 4B 20 54 48 | ;cHECK TH| 00001960: 45 20 4D 41 49 4E 20 46 49 4C 45 4E 41 4D 45 20 |E MAIN FILENAME | 00001970: 41 52 45 41 0D 63 30 36 31 3A 20 62 31 20 62 62 |AREA.c061: b1 bb| 00001980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 | ld| 00001990: 61 20 20 20 28 66 6E 61 64 72 29 2C 79 20 20 3B |a (fnadr),y ;| 000019A0: 46 4F 52 20 54 48 45 20 61 73 63 69 69 20 43 48 |FOR THE ascii CH| 000019B0: 41 52 41 43 54 45 52 20 24 0D 63 30 36 33 3A 20 |ARACTER $.c063: | 000019C0: 63 39 20 32 34 20 20 20 20 20 20 20 20 20 20 20 |c9 24 | 000019D0: 20 20 20 63 6D 70 20 20 20 23 27 24 27 20 20 20 | cmp #'$' | 000019E0: 20 20 20 20 3B 57 48 49 43 48 20 49 4E 44 49 43 | ;WHICH INDIC| 000019F0: 41 54 45 53 20 44 49 52 45 43 54 4F 52 59 20 4C |ATES DIRECTORY L| 00001A00: 4F 41 44 2E 0D 63 30 36 35 3A 20 66 30 20 30 63 |OAD..c065: f0 0c| 00001A10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 | be| 00001A20: 71 20 20 20 64 69 72 63 74 20 20 20 20 20 20 3B |q dirct ;| 00001A30: 69 46 20 53 4F 2C 20 54 48 45 4E 20 4A 55 4D 50 |iF SO, THEN JUMP| 00001A40: 20 54 4F 20 64 69 72 63 74 20 54 4F 0D 20 20 20 | TO dirct TO. | 00001A50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001A60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001A70: 20 20 20 20 20 20 20 3B 44 4F 20 41 20 4E 4F 52 | ;DO A NOR| 00001A80: 4D 41 4C 20 63 36 34 20 6C 6F 61 64 2E 0D 0D 6D |MAL c64 load...m| 00001A90: 4F 56 45 20 66 49 4C 45 20 6E 41 4D 45 20 54 4F |OVE fILE nAME TO| 00001AA0: 20 46 49 4C 45 20 41 52 45 41 0D 0D 63 30 36 37 | FILE AREA..c067| 00001AB0: 3A 20 62 31 20 62 62 20 20 20 20 20 73 74 66 69 |: b1 bb stfi| 00001AC0: 6C 20 20 20 20 6C 64 61 20 20 20 28 66 6E 61 64 |l lda (fnad| 00001AD0: 72 29 2C 79 20 20 3B 69 46 20 49 54 53 20 4E 4F |r),y ;iF ITS NO| 00001AE0: 54 20 41 20 44 49 52 45 43 54 4F 52 59 20 4C 4F |T A DIRECTORY LO| 00001AF0: 41 44 2C 0D 63 30 36 39 3A 20 39 39 20 61 63 20 |AD,.c069: 99 ac | 00001B00: 63 33 20 20 20 20 20 20 20 20 20 20 20 73 74 61 |c3 sta| 00001B10: 20 20 20 66 69 6C 65 2C 79 20 20 20 20 20 3B 54 | file,y ;T| 00001B20: 48 45 4E 20 49 54 53 20 41 20 4E 4F 52 4D 41 4C |HEN ITS A NORMAL| 00001B30: 20 46 49 4C 45 4E 41 4D 45 0D 63 30 36 63 3A 20 | FILENAME.c06c: | 00001B40: 63 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |c8 | 00001B50: 20 20 20 69 6E 79 20 20 20 20 20 20 20 20 20 20 | iny | 00001B60: 20 20 20 20 3B 53 4F 20 4D 4F 56 45 20 49 54 20 | ;SO MOVE IT | 00001B70: 54 4F 20 4F 55 52 20 53 45 43 4F 4E 44 41 52 59 |TO OUR SECONDARY| 00001B80: 0D 63 30 36 64 3A 20 63 34 20 62 37 20 20 20 20 |.c06d: c4 b7 | 00001B90: 20 20 20 20 20 20 20 20 20 20 63 70 79 20 20 20 | cpy | 00001BA0: 66 6E 6C 65 6E 20 20 20 20 20 20 3B 46 49 4C 45 |fnlen ;FILE| 00001BB0: 4E 41 4D 45 20 41 52 45 41 2E 0D 63 30 36 66 3A |NAME AREA..c06f:| 00001BC0: 20 39 30 20 66 36 20 20 20 20 20 20 20 20 20 20 | 90 f6 | 00001BD0: 20 20 20 20 62 63 63 20 20 20 73 74 66 69 6C 0D | bcc stfil.| 00001BE0: 63 30 37 31 3A 20 62 30 20 30 35 20 20 20 20 20 |c071: b0 05 | 00001BF0: 20 20 20 20 20 20 20 20 20 62 63 73 20 20 20 7A | bcs z| 00001C00: 61 70 36 34 20 20 20 20 20 20 3B 61 4E 44 20 42 |ap64 ;aND B| 00001C10: 52 41 4E 43 48 20 54 4F 20 46 41 53 54 4C 4F 41 |RANCH TO FASTLOA| 00001C20: 44 20 52 4F 55 54 49 4E 45 0D 0D 64 49 52 45 43 |D ROUTINE..dIREC| 00001C30: 54 4F 52 59 20 6C 4F 41 44 20 4F 52 20 76 45 52 |TORY lOAD OR vER| 00001C40: 49 46 59 0D 0D 63 30 37 33 3A 20 61 35 20 39 33 |IFY..c073: a5 93| 00001C50: 20 20 20 20 20 64 69 72 63 74 20 20 20 20 6C 64 | dirct ld| 00001C60: 61 20 20 20 76 65 72 63 6B 20 20 20 20 20 20 3B |a verck ;| 00001C70: 67 45 54 20 6C 4F 41 44 20 28 24 30 30 29 20 4F |gET lOAD ($00) O| 00001C80: 52 20 76 45 52 49 46 59 20 28 24 30 31 29 0D 63 |R vERIFY ($01).c| 00001C90: 30 37 35 3A 20 34 63 20 61 35 20 66 34 20 20 20 |075: 4c a5 f4 | 00001CA0: 20 20 20 20 20 20 20 20 6A 6D 70 20 20 20 6C 6F | jmp lo| 00001CB0: 61 64 36 34 20 20 20 20 20 3B 66 4C 41 47 20 41 |ad64 ;fLAG A| 00001CC0: 4E 44 20 4A 55 4D 50 20 54 4F 20 4E 4F 52 4D 41 |ND JUMP TO NORMA| 00001CD0: 4C 20 63 36 34 0D 20 20 20 20 20 20 20 20 20 20 |L c64. | 00001CE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001CF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001D00: 3B 6C 6F 61 64 20 52 4F 55 54 49 4E 45 2E 0D 7A |;load ROUTINE..z| 00001D10: 41 50 20 6C 4F 41 44 45 52 20 36 34 0D 0D 63 30 |AP lOADER 64..c0| 00001D20: 37 38 3A 20 32 30 20 34 63 20 63 31 20 20 7A 61 |78: 20 4c c1 za| 00001D30: 70 36 34 20 20 20 20 6A 73 72 20 20 20 64 6F 77 |p64 jsr dow| 00001D40: 6E 6C 20 20 20 20 20 20 3B 64 4F 57 4E 4C 4F 41 |nl ;dOWNLOA| 00001D50: 44 20 44 52 49 56 45 20 50 52 4F 47 52 41 4D 20 |D DRIVE PROGRAM | 00001D60: 54 4F 20 54 48 45 20 31 35 34 31 0D 63 30 37 62 |TO THE 1541.c07b| 00001D70: 3A 20 61 35 20 62 61 20 20 20 20 20 20 20 20 20 |: a5 ba | 00001D80: 20 20 20 20 20 6C 64 61 20 20 20 66 61 20 20 20 | lda fa | 00001D90: 20 20 20 20 20 20 3B 67 45 54 20 43 55 52 52 45 | ;gET CURRE| 00001DA0: 4E 54 20 44 45 56 49 43 45 20 28 44 52 49 56 45 |NT DEVICE (DRIVE| 00001DB0: 20 3D 20 38 29 0D 63 30 37 64 3A 20 32 30 20 62 | = 8).c07d: 20 b| 00001DC0: 31 20 66 66 20 20 20 20 20 20 20 20 20 20 20 6A |1 ff j| 00001DD0: 73 72 20 20 20 6C 69 73 74 65 6E 20 20 20 20 20 |sr listen | 00001DE0: 3B 61 4E 44 20 43 4F 4D 4D 41 4E 44 20 49 54 20 |;aND COMMAND IT | 00001DF0: 54 4F 20 6C 69 73 74 65 6E 0D 63 30 38 30 3A 20 |TO listen.c080: | 00001E00: 61 39 20 36 66 20 20 20 20 20 20 20 20 20 20 20 |a9 6f | 00001E10: 20 20 20 6C 64 61 20 20 20 23 24 36 66 20 20 20 | lda #$6f | 00001E20: 20 20 20 20 3B 67 45 54 20 54 48 45 20 53 45 43 | ;gET THE SEC| 00001E30: 4F 4E 44 41 52 59 20 41 44 44 52 45 53 53 0D 63 |ONDARY ADDRESS.c| 00001E40: 30 38 32 3A 20 32 30 20 39 33 20 66 66 20 20 20 |082: 20 93 ff | 00001E50: 20 20 20 20 20 20 20 20 6A 73 72 20 20 20 73 65 | jsr se| 00001E60: 63 6F 6E 64 20 20 20 20 20 3B 61 4E 44 20 43 4F |cond ;aND CO| 00001E70: 4D 4D 41 4E 44 20 44 52 49 56 45 20 54 4F 20 6F |MMAND DRIVE TO o| 00001E80: 70 65 6E 0D 20 20 20 20 20 20 20 20 20 20 20 20 |pen. | 00001E90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001EA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 54 | ;T| 00001EB0: 48 45 20 43 4F 4D 4D 41 4E 44 20 43 48 41 4E 4E |HE COMMAND CHANN| 00001EC0: 45 4C 2E 20 73 49 4D 49 4C 41 52 20 49 4E 0D 20 |EL. sIMILAR IN. | 00001ED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001EE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001EF0: 20 20 20 20 20 20 20 20 20 3B 62 41 53 49 43 20 | ;bASIC | 00001F00: 4F 46 20 6F 70 65 6E 20 31 35 2C 38 2C 31 35 2E |OF open 15,8,15.| 00001F10: 0D 63 30 38 35 3A 20 61 39 20 35 35 20 20 20 20 |.c085: a9 55 | 00001F20: 20 20 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 | lda | 00001F30: 23 27 55 27 20 20 20 20 20 20 20 3B 74 45 4C 4C |#'U' ;tELL| 00001F40: 20 44 52 49 56 45 20 54 4F 20 44 4F 20 41 20 75 | DRIVE TO DO A u| 00001F50: 63 20 43 4F 4D 4D 41 4E 44 0D 63 30 38 37 3A 20 |c COMMAND.c087: | 00001F60: 32 30 20 61 38 20 66 66 20 20 20 20 20 20 20 20 |20 a8 ff | 00001F70: 20 20 20 6A 73 72 20 20 20 63 69 6F 75 74 20 20 | jsr ciout | 00001F80: 20 20 20 20 3B 57 48 49 43 48 20 49 53 20 54 48 | ;WHICH IS TH| 00001F90: 45 20 43 4F 4D 4D 41 4E 44 20 46 4F 52 20 54 48 |E COMMAND FOR TH| 00001FA0: 45 20 44 52 49 56 45 0D 63 30 38 61 3A 20 61 39 |E DRIVE.c08a: a9| 00001FB0: 20 34 33 20 20 20 20 20 20 20 20 20 20 20 20 20 | 43 | 00001FC0: 20 6C 64 61 20 20 20 23 27 43 27 20 20 20 20 20 | lda #'C' | 00001FD0: 20 20 3B 54 4F 20 4A 55 4D 50 20 54 4F 20 54 48 | ;TO JUMP TO TH| 00001FE0: 45 20 50 52 4F 47 52 41 4D 20 41 54 20 24 30 35 |E PROGRAM AT $05| 00001FF0: 30 30 2E 0D 63 30 38 63 3A 20 32 30 20 61 38 20 |00..c08c: 20 a8 | 00002000: 66 66 20 20 20 20 20 20 20 20 20 20 20 6A 73 72 |ff jsr| 00002010: 20 20 20 63 69 6F 75 74 0D 63 30 38 66 3A 20 32 | ciout.c08f: 2| 00002020: 30 20 61 65 20 66 66 20 20 20 20 20 20 20 20 20 |0 ae ff | 00002030: 20 20 6A 73 72 20 20 20 75 6E 6C 73 6E 20 20 20 | jsr unlsn | 00002040: 20 20 20 3B 63 4F 4D 4D 41 4E 44 20 44 52 49 56 | ;cOMMAND DRIV| 00002050: 45 20 54 4F 20 75 6E 6C 69 73 74 65 6E 0D 0D 70 |E TO unlisten..p| 00002060: 52 4F 43 45 53 53 20 54 48 45 20 44 41 54 41 0D |ROCESS THE DATA.| 00002070: 0D 63 30 39 32 3A 20 37 38 20 20 20 20 20 20 20 |.c092: 78 | 00002080: 20 62 65 67 69 6E 20 20 20 20 73 65 69 20 20 20 | begin sei | 00002090: 20 20 20 20 20 20 20 20 20 20 20 3B 64 49 53 41 | ;dISA| 000020A0: 42 4C 45 20 69 4E 54 45 52 52 55 50 54 53 0D 63 |BLE iNTERRUPTS.c| 000020B0: 30 39 33 3A 20 61 39 20 30 62 20 20 20 20 20 20 |093: a9 0b | 000020C0: 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 23 24 | lda #$| 000020D0: 30 62 20 20 20 20 20 20 20 3B 74 48 49 53 20 42 |0b ;tHIS B| 000020E0: 4C 41 4E 4B 53 20 54 48 45 20 53 43 52 45 45 4E |LANKS THE SCREEN| 000020F0: 20 46 4F 52 0D 63 30 39 35 3A 20 38 64 20 31 31 | FOR.c095: 8d 11| 00002100: 20 64 30 20 20 20 20 20 20 20 20 20 20 20 73 74 | d0 st| 00002110: 61 20 20 20 76 69 63 63 74 72 20 20 20 20 20 3B |a vicctr ;| 00002120: 46 41 53 54 45 52 20 50 52 4F 43 45 53 53 49 4E |FASTER PROCESSIN| 00002130: 47 2E 0D 63 30 39 38 3A 20 32 30 20 31 35 20 63 |G..c098: 20 15 c| 00002140: 31 20 20 70 72 6F 63 65 73 20 20 20 6A 73 72 20 |1 proces jsr | 00002150: 20 20 67 74 73 65 63 74 20 20 20 20 20 3B 67 45 | gtsect ;gE| 00002160: 54 20 41 20 53 45 43 54 4F 52 20 4F 46 20 54 48 |T A SECTOR OF TH| 00002170: 45 20 46 49 4C 45 0D 63 30 39 62 3A 20 32 63 20 |E FILE.c09b: 2c | 00002180: 30 30 20 63 34 20 20 20 20 20 20 20 20 20 20 20 |00 c4 | 00002190: 62 69 74 20 20 20 62 75 66 66 65 72 20 20 20 20 |bit buffer | 000021A0: 20 3B 63 48 45 43 4B 20 46 4F 52 20 41 4E 20 45 | ;cHECK FOR AN E| 000021B0: 52 52 4F 52 20 46 4C 41 47 0D 20 20 20 20 20 20 |RROR FLAG. | 000021C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000021D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000021E0: 20 20 20 20 3B 53 45 4E 54 20 42 59 20 54 48 45 | ;SENT BY THE| 000021F0: 20 44 52 49 56 45 20 54 4F 20 49 4E 46 4F 52 4D | DRIVE TO INFORM| 00002200: 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00002210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002220: 20 20 20 20 20 20 20 20 20 20 20 3B 54 48 45 20 | ;THE | 00002230: 63 36 34 20 54 48 45 52 45 20 57 41 53 20 41 4E |c64 THERE WAS AN| 00002240: 20 45 52 52 4F 52 2E 0D 63 30 39 65 3A 20 33 30 | ERROR..c09e: 30| 00002250: 20 35 33 20 20 20 20 20 20 20 20 20 20 20 20 20 | 53 | 00002260: 20 62 6D 69 20 20 20 65 72 72 6F 72 31 20 20 20 | bmi error1 | 00002270: 20 20 3B 65 52 52 4F 52 20 44 45 54 45 43 54 45 | ;eRROR DETECTE| 00002280: 44 20 53 4F 20 42 52 41 4E 43 48 2E 0D 0D 6F 4E |D SO BRANCH...oN| 00002290: 20 41 20 62 61 73 69 63 20 6C 6F 61 64 20 43 4F | A basic load CO| 000022A0: 4D 4D 41 4E 44 2C 20 54 48 45 20 53 54 41 52 54 |MMAND, THE START| 000022B0: 20 4F 46 20 62 61 73 69 63 20 41 44 44 52 45 53 | OF basic ADDRES| 000022C0: 53 20 28 24 30 38 30 31 29 20 49 53 20 53 54 4F |S ($0801) IS STO| 000022D0: 52 45 44 20 49 4E 0D 24 63 33 2D 24 63 34 20 46 |RED IN.$c3-$c4 F| 000022E0: 4F 52 20 55 53 45 20 42 59 20 54 48 45 20 4B 45 |OR USE BY THE KE| 000022F0: 52 4E 45 4C 20 4C 4F 41 44 20 52 4F 55 54 49 4E |RNEL LOAD ROUTIN| 00002300: 45 2E 0D 0D 63 30 61 30 3A 20 61 34 20 63 33 20 |E...c0a0: a4 c3 | 00002310: 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 79 | ldy| 00002320: 20 20 20 6D 65 6D 75 73 73 20 20 20 20 20 3B 67 | memuss ;g| 00002330: 45 54 20 54 48 45 20 4E 4F 52 4D 41 4C 20 42 41 |ET THE NORMAL BA| 00002340: 53 49 43 20 4C 4F 41 44 20 41 44 44 52 0D 63 30 |SIC LOAD ADDR.c0| 00002350: 61 32 3A 20 61 36 20 63 34 20 20 20 20 20 20 20 |a2: a6 c4 | 00002360: 20 20 20 20 20 20 20 6C 64 78 20 20 20 6D 65 6D | ldx mem| 00002370: 75 73 73 2B 31 20 20 20 3B 46 4F 52 20 41 20 50 |uss+1 ;FOR A P| 00002380: 52 4F 47 52 41 4D 20 4C 4F 41 44 20 28 24 30 38 |ROGRAM LOAD ($08| 00002390: 30 31 29 0D 0D 74 48 49 53 20 43 48 45 43 4B 53 |01)..tHIS CHECKS| 000023A0: 20 57 48 45 54 48 45 52 20 4F 52 20 4E 4F 54 20 | WHETHER OR NOT | 000023B0: 54 48 45 20 50 52 4F 47 52 41 4D 20 53 48 4F 55 |THE PROGRAM SHOU| 000023C0: 4C 44 20 42 45 20 4C 4F 41 44 45 44 20 41 54 20 |LD BE LOADED AT | 000023D0: 54 48 45 20 4E 4F 52 4D 41 4C 20 4C 4F 41 44 0D |THE NORMAL LOAD.| 000023E0: 41 52 45 41 2C 20 57 48 49 43 48 20 57 4F 55 4C |AREA, WHICH WOUL| 000023F0: 44 20 42 45 20 45 51 55 49 56 41 4C 45 4E 54 20 |D BE EQUIVALENT | 00002400: 54 4F 20 54 48 45 20 43 4F 4D 4D 41 4E 44 20 6C |TO THE COMMAND l| 00002410: 6F 61 64 22 66 69 6C 65 6E 61 6D 65 22 2C 38 20 |oad"filename",8 | 00002420: 4F 52 20 54 4F 20 54 48 45 20 4C 4F 41 44 0D 41 |OR TO THE LOAD.A| 00002430: 52 45 41 20 53 50 45 43 49 46 49 45 44 20 49 4E |REA SPECIFIED IN| 00002440: 20 54 48 45 20 50 52 4F 47 52 41 4D 20 57 48 45 | THE PROGRAM WHE| 00002450: 4E 20 49 54 20 57 41 53 20 53 41 56 45 44 2C 20 |N IT WAS SAVED, | 00002460: 57 48 49 43 48 20 57 4F 55 4C 44 20 42 45 20 45 |WHICH WOULD BE E| 00002470: 51 55 49 56 41 4C 45 4E 54 20 54 4F 0D 54 48 45 |QUIVALENT TO.THE| 00002480: 20 43 4F 4D 4D 41 4E 44 20 6C 6F 61 64 22 66 69 | COMMAND load"fi| 00002490: 6C 65 6E 61 6D 65 22 2C 38 2C 31 2E 0D 0D 63 30 |lename",8,1...c0| 000024A0: 61 34 3A 20 61 35 20 62 39 20 20 20 20 20 20 20 |a4: a5 b9 | 000024B0: 20 20 20 20 20 20 20 6C 64 61 20 20 20 73 61 20 | lda sa | 000024C0: 20 20 20 20 20 20 20 20 3B 67 45 54 20 54 48 45 | ;gET THE| 000024D0: 20 53 45 43 4F 4E 44 41 52 59 20 41 44 44 52 45 | SECONDARY ADDRE| 000024E0: 53 53 0D 63 30 61 36 3A 20 66 30 20 30 36 20 20 |SS.c0a6: f0 06 | 000024F0: 20 20 20 20 20 20 20 20 20 20 20 20 62 65 71 20 | beq | 00002500: 20 20 70 72 6F 63 73 31 20 20 20 20 20 3B 69 46 | procs1 ;iF| 00002510: 20 41 20 5A 45 52 4F 2C 20 54 48 45 4E 20 4A 55 | A ZERO, THEN JU| 00002520: 4D 50 20 41 4E 44 20 4C 4F 41 44 0D 20 20 20 20 |MP AND LOAD. | 00002530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002550: 20 20 20 20 20 20 3B 54 4F 20 62 41 53 49 43 20 | ;TO bASIC | 00002560: 41 52 45 41 2E 0D 63 30 61 38 3A 20 61 63 20 30 |AREA..c0a8: ac 0| 00002570: 32 20 63 34 20 20 20 20 20 20 20 20 20 20 20 6C |2 c4 l| 00002580: 64 79 20 20 20 62 75 66 66 65 72 2B 32 20 20 20 |dy buffer+2 | 00002590: 3B 69 46 20 4E 4F 54 2C 20 54 48 45 4E 20 4C 4F |;iF NOT, THEN LO| 000025A0: 41 44 20 41 54 20 41 44 44 52 45 53 53 0D 20 20 |AD AT ADDRESS. | 000025B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000025C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000025D0: 20 20 20 20 20 20 20 20 3B 53 50 45 43 49 46 49 | ;SPECIFI| 000025E0: 45 44 20 49 4E 20 54 48 45 20 46 49 52 53 54 20 |ED IN THE FIRST | 000025F0: 53 45 43 54 4F 52 0D 63 30 61 62 3A 20 61 65 20 |SECTOR.c0ab: ae | 00002600: 30 33 20 63 34 20 20 20 20 20 20 20 20 20 20 20 |03 c4 | 00002610: 6C 64 78 20 20 20 62 75 66 66 65 72 2B 33 20 20 |ldx buffer+3 | 00002620: 20 3B 4F 46 20 54 48 45 20 50 52 4F 47 52 41 4D | ;OF THE PROGRAM| 00002630: 2E 0D 63 30 61 65 3A 20 38 34 20 61 65 20 20 20 |..c0ae: 84 ae | 00002640: 20 20 70 72 6F 63 73 31 20 20 20 73 74 79 20 20 | procs1 sty | 00002650: 20 65 61 6C 20 20 20 20 20 20 20 20 3B 73 54 4F | eal ;sTO| 00002660: 52 45 20 54 48 45 20 50 52 4F 47 52 41 4D 20 4C |RE THE PROGRAM L| 00002670: 4F 41 44 20 41 44 44 52 45 53 53 0D 63 30 62 30 |OAD ADDRESS.c0b0| 00002680: 3A 20 38 36 20 61 66 20 20 20 20 20 20 20 20 20 |: 86 af | 00002690: 20 20 20 20 20 73 74 78 20 20 20 65 61 6C 2B 31 | stx eal+1| 000026A0: 20 20 20 20 20 20 3B 49 4E 54 4F 20 65 61 6C 2E | ;INTO eal.| 000026B0: 0D 63 30 62 32 3A 20 61 32 20 30 34 20 20 20 20 |.c0b2: a2 04 | 000026C0: 20 20 20 20 20 20 20 20 20 20 6C 64 78 20 20 20 | ldx | 000026D0: 23 34 20 20 20 20 20 20 20 20 20 3B 73 49 4E 43 |#4 ;sINC| 000026E0: 45 20 54 48 49 53 20 49 53 20 54 48 45 20 46 49 |E THIS IS THE FI| 000026F0: 52 53 54 20 53 45 43 54 4F 52 0D 20 20 20 20 20 |RST SECTOR. | 00002700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002720: 20 20 20 20 20 3B 4F 46 20 54 48 45 20 50 52 4F | ;OF THE PRO| 00002730: 47 52 41 4D 2C 20 53 4B 49 50 20 54 48 45 20 74 |GRAM, SKIP THE t| 00002740: 52 41 43 4B 0D 20 20 20 20 20 20 20 20 20 20 20 |RACK. | 00002750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B | ;| 00002770: 26 20 73 45 43 54 4F 52 20 4C 49 4E 4B 53 2C 20 |& sECTOR LINKS, | 00002780: 41 4E 44 20 54 48 45 20 50 52 4F 47 52 41 4D 0D |AND THE PROGRAM.| 00002790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000027A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000027B0: 20 20 20 20 20 20 20 20 20 20 3B 4C 4F 41 44 20 | ;LOAD | 000027C0: 41 44 44 52 45 53 53 2E 0D 63 30 62 34 3A 20 61 |ADDRESS..c0b4: a| 000027D0: 64 20 30 30 20 63 34 20 20 20 20 20 20 20 20 20 |d 00 c4 | 000027E0: 20 20 6C 64 61 20 20 20 62 75 66 66 65 72 20 20 | lda buffer | 000027F0: 20 20 20 3B 6D 4F 52 45 20 53 45 43 54 4F 52 53 | ;mORE SECTORS| 00002800: 20 54 4F 20 4C 4F 41 44 3F 0D 63 30 62 37 3A 20 | TO LOAD?.c0b7: | 00002810: 66 30 20 31 35 20 20 20 20 20 20 20 20 20 20 20 |f0 15 | 00002820: 20 20 20 62 65 71 20 20 20 63 6C 6F 73 65 30 20 | beq close0 | 00002830: 20 20 20 20 3B 6E 4F 2D 54 48 45 4E 20 54 52 41 | ;nO-THEN TRA| 00002840: 4E 53 46 45 52 20 54 48 45 20 31 53 54 20 53 45 |NSFER THE 1ST SE| 00002850: 43 54 4F 52 0D 20 20 20 20 20 20 20 20 20 20 20 |CTOR. | 00002860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B | ;| 00002880: 49 4E 20 54 48 45 20 62 75 66 66 65 72 20 54 4F |IN THE buffer TO| 00002890: 20 54 48 45 20 50 52 4F 47 52 41 4D 0D 20 20 20 | THE PROGRAM. | 000028A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000028B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000028C0: 20 20 20 20 20 20 20 3B 53 54 4F 52 41 47 45 20 | ;STORAGE | 000028D0: 41 52 45 41 20 41 4E 44 20 45 4E 44 2E 0D 63 30 |AREA AND END..c0| 000028E0: 62 39 3A 20 32 30 20 66 64 20 63 30 20 20 20 20 |b9: 20 fd c0 | 000028F0: 20 20 20 20 20 20 20 6A 73 72 20 20 20 78 66 65 | jsr xfe| 00002900: 72 31 20 20 20 20 20 20 3B 79 45 53 2D 54 52 41 |r1 ;yES-TRA| 00002910: 4E 53 46 45 52 20 54 48 45 20 31 53 54 20 53 45 |NSFER THE 1ST SE| 00002920: 43 54 4F 52 2C 0D 20 20 20 20 20 20 20 20 20 20 |CTOR,. | 00002930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002950: 3B 41 4E 44 20 47 45 54 20 41 4E 4F 54 48 45 52 |;AND GET ANOTHER| 00002960: 2E 0D 0D 63 30 62 63 3A 20 32 30 20 31 35 20 63 |...c0bc: 20 15 c| 00002970: 31 20 20 70 72 6F 63 73 32 20 20 20 6A 73 72 20 |1 procs2 jsr | 00002980: 20 20 67 74 73 65 63 74 20 20 20 20 20 3B 67 45 | gtsect ;gE| 00002990: 54 20 41 4E 4F 54 48 45 52 20 53 45 43 54 4F 52 |T ANOTHER SECTOR| 000029A0: 20 4F 46 20 54 48 45 20 50 52 4F 47 52 41 4D 0D | OF THE PROGRAM.| 000029B0: 63 30 62 66 3A 20 61 64 20 30 30 20 63 34 20 20 |c0bf: ad 00 c4 | 000029C0: 20 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 62 | lda b| 000029D0: 75 66 66 65 72 20 20 20 20 20 3B 77 41 53 20 41 |uffer ;wAS A| 000029E0: 4E 20 45 52 52 4F 52 20 45 4E 43 4F 55 4E 54 45 |N ERROR ENCOUNTE| 000029F0: 52 45 44 3F 0D 63 30 63 32 3A 20 33 30 20 33 32 |RED?.c0c2: 30 32| 00002A00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6D | bm| 00002A10: 69 20 20 20 65 72 72 6F 72 32 20 20 20 20 20 3B |i error2 ;| 00002A20: 79 45 53 2D 54 48 45 4E 20 42 52 41 4E 43 48 0D |yES-THEN BRANCH.| 00002A30: 63 30 63 34 3A 20 66 30 20 30 36 20 20 20 20 20 |c0c4: f0 06 | 00002A40: 20 20 20 20 20 20 20 20 20 62 65 71 20 20 20 63 | beq c| 00002A50: 6C 6F 73 65 20 20 20 20 20 20 3B 77 41 53 20 49 |lose ;wAS I| 00002A60: 54 20 54 48 45 20 4C 41 53 54 20 53 45 43 54 4F |T THE LAST SECTO| 00002A70: 52 3F 20 79 45 53 0D 63 30 63 36 3A 20 32 30 20 |R? yES.c0c6: 20 | 00002A80: 66 62 20 63 30 20 20 20 20 20 20 20 20 20 20 20 |fb c0 | 00002A90: 6A 73 72 20 20 20 78 66 65 72 20 20 20 20 20 20 |jsr xfer | 00002AA0: 20 3B 6E 4F 2D 54 48 45 4E 20 54 52 41 4E 53 46 | ;nO-THEN TRANSF| 00002AB0: 45 52 20 54 48 45 20 42 55 46 46 45 52 20 54 4F |ER THE BUFFER TO| 00002AC0: 0D 63 30 63 39 3A 20 34 63 20 62 63 20 63 30 20 |.c0c9: 4c bc c0 | 00002AD0: 20 20 20 20 20 20 20 20 20 20 6A 6D 70 20 20 20 | jmp | 00002AE0: 70 72 6F 63 73 32 20 20 20 20 20 3B 50 52 4F 47 |procs2 ;PROG| 00002AF0: 52 41 4D 20 53 54 4F 52 41 47 45 20 26 20 47 45 |RAM STORAGE & GE| 00002B00: 54 20 4D 4F 52 45 20 53 45 43 54 4F 52 53 2E 0D |T MORE SECTORS..| 00002B10: 0D 63 30 63 63 3A 20 61 32 20 30 32 20 20 20 20 |.c0cc: a2 02 | 00002B20: 20 63 6C 6F 73 65 20 20 20 20 6C 64 78 20 20 20 | close ldx | 00002B30: 23 32 20 20 20 20 20 20 20 20 20 3B 73 4B 49 50 |#2 ;sKIP| 00002B40: 20 54 48 45 20 74 52 41 43 4B 20 26 20 53 45 43 | THE tRACK & SEC| 00002B50: 54 4F 52 20 4E 55 4D 42 45 52 20 4F 46 0D 20 20 |TOR NUMBER OF. | 00002B60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002B70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002B80: 20 20 20 20 20 20 20 20 3B 54 48 45 20 4C 41 53 | ;THE LAS| 00002B90: 54 20 53 45 43 54 4F 52 2E 0D 63 30 63 65 3A 20 |T SECTOR..c0ce: | 00002BA0: 61 30 20 30 30 20 20 20 20 20 63 6C 6F 73 65 30 |a0 00 close0| 00002BB0: 20 20 20 6C 64 79 20 20 20 23 30 0D 63 30 64 30 | ldy #0.c0d0| 00002BC0: 3A 20 62 64 20 30 30 20 63 34 20 20 63 6C 6F 73 |: bd 00 c4 clos| 00002BD0: 65 31 20 20 20 6C 64 61 20 20 20 62 75 66 66 65 |e1 lda buffe| 00002BE0: 72 2C 78 20 20 20 3B 67 45 54 20 41 20 44 41 54 |r,x ;gET A DAT| 00002BF0: 41 20 42 59 54 45 20 46 52 4F 4D 20 54 48 45 20 |A BYTE FROM THE | 00002C00: 42 55 46 46 45 52 0D 63 30 64 33 3A 20 39 31 20 |BUFFER.c0d3: 91 | 00002C10: 61 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |ae | 00002C20: 73 74 61 20 20 20 28 65 61 6C 29 2C 79 20 20 20 |sta (eal),y | 00002C30: 20 3B 50 55 54 20 49 54 20 49 4E 20 54 48 45 20 | ;PUT IT IN THE | 00002C40: 50 52 4F 47 52 41 4D 20 53 54 4F 52 41 47 45 20 |PROGRAM STORAGE | 00002C50: 41 52 45 41 2E 0D 63 30 64 35 3A 20 63 38 20 20 |AREA..c0d5: c8 | 00002C60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 | i| 00002C70: 6E 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |ny | 00002C80: 3B 69 4E 43 52 45 4D 45 4E 54 20 50 52 4F 47 52 |;iNCREMENT PROGR| 00002C90: 41 4D 20 41 52 45 41 20 50 4F 49 4E 54 45 52 0D |AM AREA POINTER.| 00002CA0: 63 30 64 36 3A 20 65 38 20 20 20 20 20 20 20 20 |c0d6: e8 | 00002CB0: 20 20 20 20 20 20 20 20 20 69 6E 78 20 20 20 20 | inx | 00002CC0: 20 20 20 20 20 20 20 20 20 20 3B 69 4E 43 52 45 | ;iNCRE| 00002CD0: 4D 45 4E 54 20 42 59 54 45 20 43 4F 55 4E 54 45 |MENT BYTE COUNTE| 00002CE0: 52 20 26 20 62 55 46 46 20 50 4E 54 52 0D 63 30 |R & bUFF PNTR.c0| 00002CF0: 64 37 3A 20 65 63 20 30 31 20 63 34 20 20 20 20 |d7: ec 01 c4 | 00002D00: 20 20 20 20 20 20 20 63 70 78 20 20 20 62 75 66 | cpx buf| 00002D10: 66 65 72 2B 31 20 20 20 3B 69 53 20 49 54 20 3C |fer+1 ;iS IT <| 00002D20: 20 4E 55 4D 42 45 52 20 4F 46 20 42 59 54 45 53 | NUMBER OF BYTES| 00002D30: 20 54 4F 20 52 45 41 44 0D 20 20 20 20 20 20 20 | TO READ. | 00002D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002D50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002D60: 20 20 20 3B 46 52 4F 4D 20 54 48 49 53 20 53 45 | ;FROM THIS SE| 00002D70: 43 54 4F 52 2E 20 69 4E 20 54 48 45 20 4C 41 53 |CTOR. iN THE LAS| 00002D80: 54 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |T. | 00002D90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002DA0: 20 20 20 20 20 20 20 20 20 20 20 20 3B 53 45 43 | ;SEC| 00002DB0: 54 4F 52 2C 20 54 48 45 20 53 45 43 4F 4E 44 20 |TOR, THE SECOND | 00002DC0: 42 59 54 45 20 54 45 4C 4C 53 20 59 4F 55 0D 20 |BYTE TELLS YOU. | 00002DD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002DE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002DF0: 20 20 20 20 20 20 20 20 20 3B 48 4F 57 20 4D 41 | ;HOW MA| 00002E00: 4E 59 20 42 59 54 45 53 20 41 52 45 20 49 4E 20 |NY BYTES ARE IN | 00002E10: 54 48 49 53 20 53 45 43 54 4F 52 2E 0D 63 30 64 |THIS SECTOR..c0d| 00002E20: 61 3A 20 39 30 20 66 34 20 20 20 20 20 20 20 20 |a: 90 f4 | 00002E30: 20 20 20 20 20 20 62 63 63 20 20 20 63 6C 6F 73 | bcc clos| 00002E40: 65 31 20 20 20 20 20 3B 69 46 20 3C 20 4E 55 4D |e1 ;iF < NUM| 00002E50: 42 45 52 20 4F 46 20 42 59 54 45 53 2C 20 54 48 |BER OF BYTES, TH| 00002E60: 45 4E 20 47 45 54 20 4D 4F 52 45 0D 63 30 64 63 |EN GET MORE.c0dc| 00002E70: 3A 20 62 64 20 30 30 20 63 34 20 20 20 20 20 20 |: bd 00 c4 | 00002E80: 20 20 20 20 20 6C 64 61 20 20 20 62 75 66 66 65 | lda buffe| 00002E90: 72 2C 78 20 20 20 3B 67 45 54 20 54 48 45 20 4C |r,x ;gET THE L| 00002EA0: 41 53 54 20 42 59 54 45 0D 63 30 64 66 3A 20 39 |AST BYTE.c0df: 9| 00002EB0: 31 20 61 65 20 20 20 20 20 20 20 20 20 20 20 20 |1 ae | 00002EC0: 20 20 73 74 61 20 20 20 28 65 61 6C 29 2C 79 20 | sta (eal),y | 00002ED0: 20 20 20 3B 61 4E 44 20 50 55 54 20 49 54 20 54 | ;aND PUT IT T| 00002EE0: 48 45 20 50 52 4F 47 52 41 4D 20 53 54 4F 52 41 |HE PROGRAM STORA| 00002EF0: 47 45 0D 63 30 65 31 3A 20 63 38 20 20 20 20 20 |GE.c0e1: c8 | 00002F00: 20 20 20 20 20 20 20 20 20 20 20 20 69 6E 79 20 | iny | 00002F10: 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 69 6E | ;in| 00002F20: 79 20 53 4F 20 49 54 20 50 4F 49 4E 54 53 20 54 |y SO IT POINTS T| 00002F30: 4F 20 54 48 45 20 4C 41 53 54 20 42 59 54 45 2B |O THE LAST BYTE+| 00002F40: 31 0D 63 30 65 32 3A 20 32 30 20 30 38 20 63 31 |1.c0e2: 20 08 c1| 00002F50: 20 20 20 20 20 20 20 20 20 20 20 6A 73 72 20 20 | jsr | 00002F60: 20 78 66 65 72 33 20 20 20 20 20 20 3B 69 4E 43 | xfer3 ;iNC| 00002F70: 52 45 4D 45 4E 54 20 50 52 4F 47 52 41 4D 20 50 |REMENT PROGRAM P| 00002F80: 4F 49 4E 54 45 52 53 0D 63 30 65 35 20 20 31 38 |OINTERS.c0e5 18| 00002F90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002FA0: 20 63 6C 63 20 20 20 20 20 20 20 20 20 20 20 20 | clc | 00002FB0: 20 20 3B 63 4C 45 41 52 20 63 41 52 52 59 20 54 | ;cLEAR cARRY T| 00002FC0: 4F 20 49 4E 44 49 43 41 54 45 20 4E 4F 20 45 52 |O INDICATE NO ER| 00002FD0: 52 4F 52 0D 20 20 20 20 20 20 20 20 20 20 20 20 |ROR. | 00002FE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 4F | ;O| 00003000: 43 43 55 52 52 45 44 20 57 48 45 4E 20 49 54 20 |CCURRED WHEN IT | 00003010: 52 45 54 55 52 4E 53 20 54 4F 20 54 48 45 0D 20 |RETURNS TO THE. | 00003020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003040: 20 20 20 20 20 20 20 20 20 3B 62 41 53 49 43 20 | ;bASIC | 00003050: 6C 6F 61 64 20 43 4F 4E 54 49 4E 55 41 54 49 4F |load CONTINUATIO| 00003060: 4E 20 41 54 20 24 65 31 37 38 2E 0D 63 30 65 36 |N AT $e178..c0e6| 00003070: 3A 20 34 38 20 20 20 20 20 20 20 20 63 6C 6F 73 |: 48 clos| 00003080: 65 78 20 20 20 70 68 61 20 20 20 20 20 20 20 20 |ex pha | 00003090: 20 20 20 20 20 20 3B 73 41 56 45 20 45 52 52 4F | ;sAVE ERRO| 000030A0: 52 20 4E 55 4D 42 45 52 2D 49 46 20 45 52 52 4F |R NUMBER-IF ERRO| 000030B0: 52 20 4F 43 43 55 52 52 45 44 0D 63 30 65 37 3A |R OCCURRED.c0e7:| 000030C0: 20 61 39 20 31 62 20 20 20 20 20 20 20 20 20 20 | a9 1b | 000030D0: 20 20 20 20 6C 64 61 20 20 20 23 24 31 62 20 20 | lda #$1b | 000030E0: 20 20 20 20 20 3B 72 45 53 54 4F 52 45 20 53 43 | ;rESTORE SC| 000030F0: 52 45 45 4E 20 54 4F 20 4E 4F 52 4D 41 4C 0D 63 |REEN TO NORMAL.c| 00003100: 30 65 39 3A 20 38 64 20 31 31 20 64 30 20 20 20 |0e9: 8d 11 d0 | 00003110: 20 20 20 20 20 20 20 20 73 74 61 20 20 20 76 69 | sta vi| 00003120: 63 63 74 72 0D 63 30 65 63 3A 20 36 38 20 20 20 |cctr.c0ec: 68 | 00003130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6C | pl| 00003140: 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B |a ;| 00003150: 72 45 54 52 49 45 56 45 20 45 52 52 4F 52 20 4E |rETRIEVE ERROR N| 00003160: 55 4D 42 45 52 0D 63 30 65 64 3A 20 61 36 20 61 |UMBER.c0ed: a6 a| 00003170: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6C |e l| 00003180: 64 78 20 20 20 65 61 6C 20 20 20 20 20 20 20 20 |dx eal | 00003190: 3B 74 48 49 53 20 57 49 4C 4C 20 53 45 54 20 54 |;tHIS WILL SET T| 000031A0: 48 45 20 62 41 53 49 43 20 52 41 4D 20 45 4E 44 |HE bASIC RAM END| 000031B0: 20 41 54 0D 63 30 65 66 3A 20 61 34 20 61 66 20 | AT.c0ef: a4 af | 000031C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 79 | ldy| 000031D0: 20 20 20 65 61 6C 2B 31 20 20 20 20 20 20 3B 24 | eal+1 ;$| 000031E0: 33 37 2D 33 38 20 46 4F 52 20 54 48 45 20 45 4E |37-38 FOR THE EN| 000031F0: 44 20 4F 46 20 4F 55 52 20 50 52 4F 47 52 41 4D |D OF OUR PROGRAM| 00003200: 2E 0D 63 30 66 31 3A 20 35 38 20 20 20 20 20 20 |..c0f1: 58 | 00003210: 20 20 20 20 20 20 20 20 20 20 20 63 6C 69 20 20 | cli | 00003220: 20 20 20 20 20 20 20 20 20 20 20 20 3B 65 4E 41 | ;eNA| 00003230: 42 4C 45 20 49 4E 54 45 52 52 55 50 54 53 0D 63 |BLE INTERRUPTS.c| 00003240: 30 66 32 3A 20 36 30 20 20 20 20 20 20 20 20 20 |0f2: 60 | 00003250: 20 20 20 20 20 20 20 20 72 74 73 20 20 20 20 20 | rts | 00003260: 20 20 20 20 20 20 20 20 20 3B 61 4E 44 20 52 45 | ;aND RE| 00003270: 54 55 52 4E 20 54 4F 20 62 41 53 49 43 20 6C 6F |TURN TO bASIC lo| 00003280: 61 64 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 |ad. | 00003290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000032A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 43 4F | ;CO| 000032B0: 4E 54 49 4E 55 41 54 49 4F 4E 20 41 54 20 24 65 |NTINUATION AT $e| 000032C0: 31 37 38 2E 0D 0D 63 30 66 33 3A 20 61 39 20 30 |178...c0f3: a9 0| 000032D0: 34 20 20 20 20 20 65 72 72 6F 72 31 20 20 20 6C |4 error1 l| 000032E0: 64 61 20 20 20 23 34 20 20 20 20 20 20 20 20 20 |da #4 | 000032F0: 3B 73 45 54 55 50 20 46 4F 52 20 27 3F 66 49 4C |;sETUP FOR '?fIL| 00003300: 45 20 6E 4F 54 20 66 4F 55 4E 44 20 65 52 52 4F |E nOT fOUND eRRO| 00003310: 52 27 0D 63 30 66 35 3A 20 32 63 20 20 20 20 20 |R'.c0f5: 2c | 00003320: 20 20 20 20 20 20 20 20 20 20 20 20 64 66 62 20 | dfb | 00003330: 20 20 24 32 63 0D 63 30 66 36 3A 20 61 39 20 30 | $2c.c0f6: a9 0| 00003340: 30 20 20 20 20 20 65 72 72 6F 72 32 20 20 20 6C |0 error2 l| 00003350: 64 61 20 20 20 23 30 20 20 20 20 20 20 20 20 20 |da #0 | 00003360: 3B 73 45 54 55 50 20 46 4F 52 20 27 3F 62 52 45 |;sETUP FOR '?bRE| 00003370: 41 4B 20 65 52 52 4F 52 27 0D 63 30 66 38 3A 20 |AK eRROR'.c0f8: | 00003380: 33 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |38 | 00003390: 20 20 20 73 65 63 20 20 20 20 20 20 20 20 20 20 | sec | 000033A0: 20 20 20 20 3B 66 4C 41 47 20 46 4F 52 20 45 52 | ;fLAG FOR ER| 000033B0: 52 4F 52 20 4F 43 43 55 52 52 45 44 0D 63 30 66 |ROR OCCURRED.c0f| 000033C0: 39 3A 20 62 30 20 65 62 20 20 20 20 20 20 20 20 |9: b0 eb | 000033D0: 20 20 20 20 20 20 62 63 73 20 20 20 63 6C 6F 73 | bcs clos| 000033E0: 65 78 20 20 20 20 20 3B 61 4E 44 20 4A 55 4D 50 |ex ;aND JUMP| 000033F0: 20 54 4F 20 45 4E 44 20 50 52 4F 47 52 41 4D 0D | TO END PROGRAM.| 00003400: 0D 63 30 66 62 3A 20 61 32 20 30 32 20 20 20 20 |.c0fb: a2 02 | 00003410: 20 78 66 65 72 20 20 20 20 20 6C 64 78 20 20 20 | xfer ldx | 00003420: 23 32 20 20 20 20 20 20 20 20 20 3B 73 4B 49 50 |#2 ;sKIP| 00003430: 20 74 52 41 43 4B 20 26 20 73 45 43 54 4F 52 20 | tRACK & sECTOR | 00003440: 4C 49 4E 4B 53 0D 63 30 66 64 3A 20 61 30 20 30 |LINKS.c0fd: a0 0| 00003450: 30 20 20 20 20 20 78 66 65 72 31 20 20 20 20 6C |0 xfer1 l| 00003460: 64 79 20 20 20 23 30 0D 63 30 66 66 3A 20 62 64 |dy #0.c0ff: bd| 00003470: 20 30 30 20 63 34 20 20 78 66 65 72 32 20 20 20 | 00 c4 xfer2 | 00003480: 20 6C 64 61 20 20 20 62 75 66 66 65 72 2C 78 20 | lda buffer,x | 00003490: 20 20 3B 74 52 41 4E 53 46 45 52 20 53 45 43 54 | ;tRANSFER SECT| 000034A0: 4F 52 20 49 4E 20 42 55 46 46 45 52 20 41 52 45 |OR IN BUFFER ARE| 000034B0: 41 0D 63 31 30 32 3A 20 39 31 20 61 65 20 20 20 |A.c102: 91 ae | 000034C0: 20 20 20 20 20 20 20 20 20 20 20 73 74 61 20 20 | sta | 000034D0: 20 28 65 61 6C 29 2C 79 20 20 20 20 3B 54 4F 20 | (eal),y ;TO | 000034E0: 50 52 4F 47 52 41 4D 20 53 54 4F 52 41 47 45 20 |PROGRAM STORAGE | 000034F0: 41 52 45 41 2E 0D 63 31 30 34 3A 20 63 38 20 20 |AREA..c104: c8 | 00003500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 | i| 00003510: 6E 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |ny | 00003520: 3B 69 6E 63 20 50 52 4F 47 52 41 4D 20 41 52 45 |;inc PROGRAM ARE| 00003530: 41 20 50 4F 49 4E 54 45 52 0D 63 31 30 35 3A 20 |A POINTER.c105: | 00003540: 65 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |e8 | 00003550: 20 20 20 69 6E 78 20 20 20 20 20 20 20 20 20 20 | inx | 00003560: 20 20 20 20 3B 69 6E 63 20 73 45 43 54 4F 52 20 | ;inc sECTOR | 00003570: 42 55 46 46 45 52 20 50 4F 49 4E 54 45 52 0D 63 |BUFFER POINTER.c| 00003580: 31 30 36 3A 20 64 30 20 66 37 20 20 20 20 20 20 |106: d0 f7 | 00003590: 20 20 20 20 20 20 20 20 62 6E 65 20 20 20 78 66 | bne xf| 000035A0: 65 72 32 20 20 20 20 20 20 3B 69 46 20 4D 4F 52 |er2 ;iF MOR| 000035B0: 45 20 42 59 54 45 53 20 49 4E 20 54 48 45 20 53 |E BYTES IN THE S| 000035C0: 45 43 54 4F 52 2C 20 54 48 45 4E 0D 20 20 20 20 |ECTOR, THEN. | 000035D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000035E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000035F0: 20 20 20 20 20 20 3B 47 45 54 20 4D 4F 52 45 2E | ;GET MORE.| 00003600: 0D 63 31 30 38 3A 20 31 38 20 20 20 20 20 20 20 |.c108: 18 | 00003610: 20 78 66 65 72 33 20 20 20 20 63 6C 63 20 20 20 | xfer3 clc | 00003620: 20 20 20 20 20 20 20 20 20 20 20 3B 69 46 20 4E | ;iF N| 00003630: 4F 54 2C 20 54 48 45 4E 20 49 4E 43 52 45 4D 45 |OT, THEN INCREME| 00003640: 4E 54 20 50 52 4F 47 52 41 4D 0D 63 31 30 39 3A |NT PROGRAM.c109:| 00003650: 20 39 38 20 20 20 20 20 20 20 20 20 20 20 20 20 | 98 | 00003660: 20 20 20 20 74 79 61 20 20 20 20 20 20 20 20 20 | tya | 00003670: 20 20 20 20 20 3B 50 4F 49 4E 54 45 52 20 46 4F | ;POINTER FO| 00003680: 52 20 41 4E 4F 54 48 45 52 20 53 45 43 54 4F 52 |R ANOTHER SECTOR| 00003690: 2E 0D 63 31 30 61 3A 20 36 35 20 61 65 20 20 20 |..c10a: 65 ae | 000036A0: 20 20 20 20 20 20 20 20 20 20 20 61 64 63 20 20 | adc | 000036B0: 20 65 61 6C 0D 63 31 30 63 3A 20 38 35 20 61 65 | eal.c10c: 85 ae| 000036C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 | st| 000036D0: 61 20 20 20 65 61 6C 0D 63 31 30 65 3A 20 61 35 |a eal.c10e: a5| 000036E0: 20 61 66 20 20 20 20 20 20 20 20 20 20 20 20 20 | af | 000036F0: 20 6C 64 61 20 20 20 65 61 6C 2B 31 0D 63 31 31 | lda eal+1.c11| 00003700: 30 3A 20 36 39 20 30 30 20 20 20 20 20 20 20 20 |0: 69 00 | 00003710: 20 20 20 20 20 20 61 64 63 20 20 20 23 30 0D 63 | adc #0.c| 00003720: 31 31 32 3A 20 38 35 20 61 66 20 20 20 20 20 20 |112: 85 af | 00003730: 20 20 20 20 20 20 20 20 73 74 61 20 20 20 65 61 | sta ea| 00003740: 6C 2B 31 0D 63 31 31 34 3A 20 36 30 20 20 20 20 |l+1.c114: 60 | 00003750: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 74 73 | rts| 00003760: 0D 0D 67 45 54 20 41 20 73 45 43 54 4F 52 0D 0D |..gET A sECTOR..| 00003770: 63 31 31 35 3A 20 61 30 20 30 30 20 20 20 20 20 |c115: a0 00 | 00003780: 67 74 73 65 63 74 20 20 20 6C 64 79 20 20 20 23 |gtsect ldy #| 00003790: 24 30 30 0D 0D 72 45 43 45 49 56 45 20 41 20 42 |$00..rECEIVE A B| 000037A0: 59 54 45 20 46 52 4F 4D 20 54 48 45 20 44 52 49 |YTE FROM THE DRI| 000037B0: 56 45 0D 0D 77 41 49 54 20 46 4F 52 20 64 61 74 |VE..wAIT FOR dat| 000037C0: 61 20 69 6E 70 75 74 20 4C 49 4E 45 20 54 4F 20 |a input LINE TO | 000037D0: 47 4F 20 4C 4F 57 2E 20 74 48 45 20 7A 61 70 20 |GO LOW. tHE zap | 000037E0: 52 4F 55 54 49 4E 45 20 49 4E 20 54 48 45 20 31 |ROUTINE IN THE 1| 000037F0: 35 34 31 20 43 4F 44 45 20 57 49 4C 4C 0D 53 45 |541 CODE WILL.SE| 00003800: 54 20 54 48 45 20 64 61 74 61 20 6F 75 74 70 75 |T THE data outpu| 00003810: 74 20 42 49 54 20 54 4F 20 41 20 31 2C 20 41 4E |t BIT TO A 1, AN| 00003820: 44 20 54 48 52 4F 55 47 48 20 54 48 45 20 49 4E |D THROUGH THE IN| 00003830: 56 45 52 53 49 4F 4E 20 57 49 4C 4C 20 42 45 20 |VERSION WILL BE | 00003840: 44 45 54 45 43 54 45 44 0D 48 45 52 45 20 41 53 |DETECTED.HERE AS| 00003850: 20 41 20 4C 4F 57 2E 0D 0D 63 31 31 37 3A 20 61 | A LOW...c117: a| 00003860: 64 20 30 30 20 64 64 20 20 67 74 73 63 74 31 20 |d 00 dd gtsct1 | 00003870: 20 20 6C 64 61 20 20 20 70 6F 72 74 61 20 20 20 | lda porta | 00003880: 20 20 20 3B 77 41 49 54 20 46 4F 52 20 42 49 54 | ;wAIT FOR BIT| 00003890: 20 37 20 4F 46 20 70 72 61 20 54 4F 20 47 4F 20 | 7 OF pra TO GO | 000038A0: 4C 4F 57 0D 63 31 31 61 3A 20 33 30 20 66 62 20 |LOW.c11a: 30 fb | 000038B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6D 69 | bmi| 000038C0: 20 20 20 67 74 73 63 74 31 20 20 20 20 20 3B 46 | gtsct1 ;F| 000038D0: 52 4F 4D 20 44 52 49 56 45 20 49 4E 44 49 43 41 |ROM DRIVE INDICA| 000038E0: 54 49 4E 47 20 44 41 54 41 20 49 4E 50 55 54 0D |TING DATA INPUT.| 000038F0: 0D 70 55 4C 4C 20 63 6C 6F 63 6B 20 6F 75 74 70 |.pULL clock outp| 00003900: 75 74 20 4C 49 4E 45 20 4C 4F 57 2E 20 6E 4F 54 |ut LINE LOW. nOT| 00003910: 49 43 45 20 54 48 41 54 20 42 49 54 20 34 20 4F |ICE THAT BIT 4 O| 00003920: 46 20 54 48 45 20 46 4F 4C 4C 4F 57 49 4E 47 20 |F THE FOLLOWING | 00003930: 42 59 54 45 20 49 53 20 48 49 47 48 2C 0D 42 55 |BYTE IS HIGH,.BU| 00003940: 54 20 57 49 54 48 20 54 48 45 20 49 4E 56 45 52 |T WITH THE INVER| 00003950: 53 49 4F 4E 20 50 55 4C 4C 53 20 54 48 45 20 4C |SION PULLS THE L| 00003960: 49 4E 45 20 4C 4F 57 2E 20 74 48 45 20 7A 61 70 |INE LOW. tHE zap| 00003970: 30 31 20 52 4F 55 54 49 4E 45 20 49 4E 20 54 48 |01 ROUTINE IN TH| 00003980: 45 20 31 35 34 31 20 49 53 0D 57 41 49 54 49 4E |E 1541 IS.WAITIN| 00003990: 47 20 46 4F 52 20 54 48 45 20 63 6C 6F 63 6B 20 |G FOR THE clock | 000039A0: 4C 49 4E 45 20 54 4F 20 47 4F 20 4C 4F 57 2E 0D |LINE TO GO LOW..| 000039B0: 0D 63 31 31 63 3A 20 61 39 20 31 37 20 20 20 20 |.c11c: a9 17 | 000039C0: 20 72 65 63 76 30 32 20 20 20 6C 64 61 20 20 20 | recv02 lda | 000039D0: 23 25 30 30 30 31 30 31 31 31 0D 63 31 31 65 3A |#%00010111.c11e:| 000039E0: 20 38 64 20 30 30 20 64 64 20 20 20 20 20 20 20 | 8d 00 dd | 000039F0: 20 20 20 20 73 74 61 20 20 20 70 6F 72 74 61 0D | sta porta.| 00003A00: 0D 77 41 49 54 20 46 4F 52 20 54 48 45 20 64 61 |.wAIT FOR THE da| 00003A10: 74 61 20 69 6E 70 75 74 20 4C 49 4E 45 20 54 4F |ta input LINE TO| 00003A20: 20 47 4F 20 48 49 47 48 2E 20 74 48 45 20 43 4F | GO HIGH. tHE CO| 00003A30: 44 45 20 49 4E 20 54 48 45 20 31 35 34 31 20 41 |DE IN THE 1541 A| 00003A40: 54 20 54 48 45 20 32 4E 44 20 50 41 52 54 0D 4F |T THE 2ND PART.O| 00003A50: 46 20 7A 61 70 30 31 20 53 54 4F 52 45 53 20 30 |F zap01 STORES 0| 00003A60: 20 49 4E 20 70 62 2C 20 41 4E 44 20 54 48 52 4F | IN pb, AND THRO| 00003A70: 55 47 48 20 54 48 45 20 49 4E 56 45 52 53 49 4F |UGH THE INVERSIO| 00003A80: 4E 20 43 41 55 53 45 53 20 42 4F 54 48 20 54 48 |N CAUSES BOTH TH| 00003A90: 45 20 64 61 74 61 20 41 4E 44 0D 63 6C 6F 63 6B |E data AND.clock| 00003AA0: 20 69 6E 70 75 74 20 4C 49 4E 45 53 20 4F 46 20 | input LINES OF | 00003AB0: 54 48 45 20 63 36 34 20 54 4F 20 47 4F 20 48 49 |THE c64 TO GO HI| 00003AC0: 47 48 2E 0D 0D 63 31 32 31 3A 20 61 64 20 30 30 |GH...c121: ad 00| 00003AD0: 20 64 64 20 20 72 65 63 76 30 31 20 20 20 6C 64 | dd recv01 ld| 00003AE0: 61 20 20 20 70 6F 72 74 61 20 20 20 20 20 20 3B |a porta ;| 00003AF0: 77 41 49 54 20 46 4F 52 20 64 41 54 41 20 48 49 |wAIT FOR dATA HI| 00003B00: 47 48 0D 63 31 32 34 3A 20 31 30 20 66 62 20 20 |GH.c124: 10 fb | 00003B10: 20 20 20 20 20 20 20 20 20 20 20 20 62 70 6C 20 | bpl | 00003B20: 20 20 72 65 63 76 30 31 0D 0D 74 48 45 20 46 4F | recv01..tHE FO| 00003B30: 4C 4C 4F 57 49 4E 47 20 43 4F 44 45 20 53 45 54 |LLOWING CODE SET| 00003B40: 53 20 54 48 45 20 64 61 74 61 20 41 4E 44 20 63 |S THE data AND c| 00003B50: 6C 6F 63 6B 20 4C 49 4E 45 53 20 48 49 47 48 2C |lock LINES HIGH,| 00003B60: 20 53 4F 20 54 48 41 54 20 54 48 45 59 20 41 52 | SO THAT THEY AR| 00003B70: 45 20 50 52 45 53 45 54 0D 42 45 46 4F 52 45 20 |E PRESET.BEFORE | 00003B80: 54 48 45 20 41 43 54 55 41 4C 20 44 41 54 41 20 |THE ACTUAL DATA | 00003B90: 54 52 41 4E 53 46 45 52 2C 20 41 4E 44 20 54 4F |TRANSFER, AND TO| 00003BA0: 20 41 44 44 20 41 42 4F 55 54 20 41 20 36 55 53 | ADD ABOUT A 6US| 00003BB0: 20 44 45 4C 41 59 2E 0D 0D 63 31 32 36 3A 20 61 | DELAY...c126: a| 00003BC0: 39 20 30 37 20 20 20 20 20 20 20 20 20 20 20 20 |9 07 | 00003BD0: 20 20 6C 64 61 20 20 20 23 24 30 37 0D 63 31 32 | lda #$07.c12| 00003BE0: 38 3A 20 38 64 20 30 30 20 64 64 20 20 20 20 20 |8: 8d 00 dd | 00003BF0: 20 20 20 20 20 20 73 74 61 20 20 20 70 6F 72 74 | sta port| 00003C00: 61 0D 0D 6F 4B 2C 20 4E 4F 57 20 57 45 20 47 45 |a..oK, NOW WE GE| 00003C10: 54 20 49 4E 54 4F 20 53 4F 4D 45 20 48 45 41 56 |T INTO SOME HEAV| 00003C20: 59 20 53 54 55 46 46 20 41 47 41 49 4E 2E 20 69 |Y STUFF AGAIN. i| 00003C30: 4E 20 41 20 4E 4F 52 4D 41 4C 20 63 36 34 20 53 |N A NORMAL c64 S| 00003C40: 45 52 49 41 4C 20 54 52 41 4E 53 46 45 52 2C 0D |ERIAL TRANSFER,.| 00003C50: 54 48 45 20 43 4C 4F 43 4B 20 4C 49 4E 45 20 49 |THE CLOCK LINE I| 00003C60: 53 20 55 53 45 44 20 54 4F 20 54 45 4C 4C 20 54 |S USED TO TELL T| 00003C70: 48 45 20 6C 69 73 74 65 6E 65 72 20 28 63 36 34 |HE listener (c64| 00003C80: 29 20 54 48 41 54 20 41 20 42 49 54 20 49 53 20 |) THAT A BIT IS | 00003C90: 52 45 41 44 59 20 54 4F 20 42 45 0D 53 45 4E 54 |READY TO BE.SENT| 00003CA0: 2C 20 41 4E 44 20 41 46 54 45 52 20 54 48 45 20 |, AND AFTER THE | 00003CB0: 42 49 54 20 48 41 53 20 42 45 45 4E 20 53 45 4E |BIT HAS BEEN SEN| 00003CC0: 54 2C 20 54 45 4C 4C 53 20 54 48 45 20 63 36 34 |T, TELLS THE c64| 00003CD0: 20 54 4F 20 47 45 54 20 52 45 41 44 59 20 46 4F | TO GET READY FO| 00003CE0: 52 20 41 4E 4F 54 48 45 52 0D 42 49 54 2E 20 69 |R ANOTHER.BIT. i| 00003CF0: 20 57 4F 4E 27 54 20 47 4F 20 49 4E 54 4F 20 45 | WON'T GO INTO E| 00003D00: 58 41 43 54 20 44 45 54 41 49 4C 53 20 4F 4E 20 |XACT DETAILS ON | 00003D10: 53 45 52 49 41 4C 20 69 2F 6F 20 54 52 41 4E 53 |SERIAL i/o TRANS| 00003D20: 46 45 52 53 20 42 45 43 41 55 53 45 20 54 48 41 |FERS BECAUSE THA| 00003D30: 54 20 43 4F 55 4C 44 0D 54 41 4B 45 20 55 50 20 |T COULD.TAKE UP | 00003D40: 41 4C 4D 4F 53 54 20 41 20 46 55 4C 4C 20 42 4F |ALMOST A FULL BO| 00003D50: 4F 4B 20 42 59 20 49 54 53 45 4C 46 2E 20 62 55 |OK BY ITSELF. bU| 00003D60: 54 20 49 46 20 59 4F 55 20 49 4E 54 45 52 45 53 |T IF YOU INTERES| 00003D70: 54 45 44 20 49 4E 20 4C 45 41 52 4E 49 4E 47 20 |TED IN LEARNING | 00003D80: 4D 4F 52 45 0D 41 42 4F 55 54 20 73 45 52 49 41 |MORE.ABOUT sERIA| 00003D90: 4C 20 69 2F 6F 2C 20 69 20 48 49 47 48 4C 59 20 |L i/o, i HIGHLY | 00003DA0: 52 45 43 4F 4D 4D 45 4E 44 20 52 45 41 44 49 4E |RECOMMEND READIN| 00003DB0: 47 20 41 4E 20 41 52 54 49 43 4C 45 20 42 59 20 |G AN ARTICLE BY | 00003DC0: 54 48 45 20 67 55 52 55 20 48 49 4D 53 45 4C 46 |THE gURU HIMSELF| 00003DD0: 2C 0D 6A 49 4D 20 62 55 54 54 45 52 46 49 45 4C |,.jIM bUTTERFIEL| 00003DE0: 44 2E 20 74 48 45 20 4E 41 4D 45 20 4F 46 20 54 |D. tHE NAME OF T| 00003DF0: 48 45 20 41 52 54 49 43 4C 45 20 49 53 20 22 68 |HE ARTICLE IS "h| 00003E00: 4F 57 20 54 48 45 20 76 69 63 2F 36 34 20 73 45 |OW THE vic/64 sE| 00003E10: 52 49 41 4C 20 62 55 53 20 77 4F 52 4B 53 22 2C |RIAL bUS wORKS",| 00003E20: 0D 41 4E 44 20 41 50 50 45 41 52 45 44 20 49 4E |.AND APPEARED IN| 00003E30: 20 54 48 45 20 6A 55 4C 59 20 31 39 38 33 20 49 | THE jULY 1983 I| 00003E40: 53 53 55 45 20 4F 46 20 63 4F 4D 50 55 54 45 21 |SSUE OF cOMPUTE!| 00003E50: 20 4D 41 47 41 5A 49 4E 45 2E 20 73 4F 20 48 4F | MAGAZINE. sO HO| 00003E60: 57 20 44 4F 20 57 45 20 4B 45 45 50 0D 54 48 45 |W DO WE KEEP.THE| 00003E70: 20 44 52 49 56 45 20 41 4E 44 20 43 4F 4D 50 55 | DRIVE AND COMPU| 00003E80: 54 45 52 20 53 59 4E 43 52 4F 4E 49 5A 45 44 20 |TER SYNCRONIZED | 00003E90: 53 4F 20 54 48 45 20 63 36 34 20 49 53 20 52 45 |SO THE c64 IS RE| 00003EA0: 41 44 59 20 54 4F 20 52 45 43 45 49 56 45 20 41 |ADY TO RECEIVE A| 00003EB0: 20 42 59 54 45 20 41 54 0D 54 48 45 20 54 49 4D | BYTE AT.THE TIM| 00003EC0: 45 20 54 48 45 20 31 35 34 31 20 49 53 20 53 45 |E THE 1541 IS SE| 00003ED0: 4E 44 49 4E 47 20 49 54 3F 20 62 59 20 56 45 52 |NDING IT? bY VER| 00003EE0: 59 20 43 4C 4F 53 45 20 54 49 4D 49 4E 47 2C 20 |Y CLOSE TIMING, | 00003EF0: 54 48 41 54 53 20 48 4F 57 21 20 74 48 45 20 44 |THATS HOW! tHE D| 00003F00: 52 49 56 45 0D 53 45 4E 44 53 20 49 54 53 20 32 |RIVE.SENDS ITS 2| 00003F10: 20 42 49 54 53 20 41 50 50 52 4F 58 49 4D 41 54 | BITS APPROXIMAT| 00003F20: 45 4C 59 20 45 56 45 52 59 20 33 30 55 53 2C 20 |ELY EVERY 30US, | 00003F30: 57 48 49 4C 45 20 54 48 45 20 63 36 34 20 52 45 |WHILE THE c64 RE| 00003F40: 43 45 49 56 45 53 20 41 4E 44 20 50 52 4F 43 45 |CEIVES AND PROCE| 00003F50: 53 53 45 53 0D 54 48 45 20 32 20 42 49 54 53 20 |SSES.THE 2 BITS | 00003F60: 45 56 45 52 59 20 33 30 55 53 2E 20 73 4F 20 41 |EVERY 30US. sO A| 00003F70: 53 20 44 52 49 56 45 20 53 45 4E 44 53 20 54 48 |S DRIVE SENDS TH| 00003F80: 45 20 42 49 54 53 2C 20 54 48 45 20 63 36 34 20 |E BITS, THE c64 | 00003F90: 49 53 20 52 45 41 44 59 20 54 4F 20 47 45 54 0D |IS READY TO GET.| 00003FA0: 54 48 45 4D 2E 20 73 49 4E 43 45 20 59 4F 55 20 |THEM. sINCE YOU | 00003FB0: 57 41 4E 54 20 54 4F 20 4D 41 4B 45 20 53 55 52 |WANT TO MAKE SUR| 00003FC0: 45 20 54 48 41 54 20 54 48 45 20 31 35 34 31 20 |E THAT THE 1541 | 00003FD0: 48 41 53 20 54 49 4D 45 20 54 4F 20 53 45 54 20 |HAS TIME TO SET | 00003FE0: 54 48 45 20 63 6C 6F 63 6B 20 41 4E 44 0D 64 61 |THE clock AND.da| 00003FF0: 74 61 20 4C 49 4E 45 53 20 50 52 4F 50 45 52 4C |ta LINES PROPERL| 00004000: 59 20 42 45 46 4F 52 45 20 54 48 45 20 63 36 34 |Y BEFORE THE c64| 00004010: 20 54 52 59 53 20 54 4F 20 52 45 41 44 20 49 54 | TRYS TO READ IT| 00004020: 2C 20 57 45 20 48 41 56 45 20 54 4F 20 47 49 56 |, WE HAVE TO GIV| 00004030: 45 20 54 48 45 20 63 36 34 20 41 0D 53 4C 49 47 |E THE c64 A.SLIG| 00004040: 48 54 20 44 45 4C 41 59 2E 20 73 49 4E 43 45 20 |HT DELAY. sINCE | 00004050: 49 54 20 54 41 4B 45 53 20 54 48 45 20 31 35 34 |IT TAKES THE 154| 00004060: 31 20 41 42 4F 55 54 20 32 36 20 55 53 20 42 45 |1 ABOUT 26 US BE| 00004070: 46 4F 52 45 20 49 54 53 20 31 53 54 20 32 20 42 |FORE ITS 1ST 2 B| 00004080: 49 54 53 20 41 52 45 0D 53 45 4E 54 2C 20 41 4E |ITS ARE.SENT, AN| 00004090: 44 20 49 46 20 57 45 20 44 49 44 4E 27 54 20 48 |D IF WE DIDN'T H| 000040A0: 41 56 45 20 4F 55 52 20 36 55 53 20 50 52 45 53 |AVE OUR 6US PRES| 000040B0: 45 54 20 44 45 4C 41 59 20 41 42 4F 56 45 20 41 |ET DELAY ABOVE A| 000040C0: 4E 44 20 54 48 45 20 32 39 55 53 20 44 45 4C 41 |ND THE 29US DELA| 000040D0: 59 20 4C 4F 4F 50 0D 42 45 4C 4F 57 2C 20 54 48 |Y LOOP.BELOW, TH| 000040E0: 45 20 63 36 34 20 57 4F 55 4C 44 20 54 52 59 20 |E c64 WOULD TRY | 000040F0: 54 4F 20 52 45 41 44 20 54 48 45 20 50 4F 52 54 |TO READ THE PORT| 00004100: 20 57 49 54 48 49 4E 20 36 55 53 2C 20 53 4F 20 | WITHIN 6US, SO | 00004110: 49 54 20 57 4F 55 4C 44 20 47 45 54 20 49 4E 56 |IT WOULD GET INV| 00004120: 41 4C 49 44 0D 44 41 54 41 2E 20 73 4F 20 57 45 |ALID.DATA. sO WE| 00004130: 20 47 49 56 45 20 49 54 20 41 20 4C 49 54 54 4C | GIVE IT A LITTL| 00004140: 45 20 54 49 4D 45 20 42 45 46 4F 52 45 20 57 45 |E TIME BEFORE WE| 00004150: 20 52 45 41 44 20 54 48 45 20 50 4F 52 54 2C 20 | READ THE PORT, | 00004160: 55 53 49 4E 47 20 4F 55 52 20 50 52 45 53 45 54 |USING OUR PRESET| 00004170: 0D 44 45 4C 41 59 2C 20 54 48 45 20 44 45 4C 41 |.DELAY, THE DELA| 00004180: 59 20 4C 4F 4F 50 20 42 45 4C 4F 57 2C 20 41 4E |Y LOOP BELOW, AN| 00004190: 44 20 54 48 45 20 43 59 43 4C 45 20 44 45 4C 41 |D THE CYCLE DELA| 000041A0: 59 20 46 4F 52 20 54 48 45 20 6C 64 78 20 23 34 |Y FOR THE ldx #4| 000041B0: 20 41 4E 44 20 6C 64 61 20 70 6F 72 74 61 2C 0D | AND lda porta,.| 000041C0: 54 4F 20 43 4F 4D 45 20 55 50 20 57 49 54 48 20 |TO COME UP WITH | 000041D0: 41 50 50 52 4F 58 49 4D 41 54 45 4C 59 20 41 20 |APPROXIMATELY A | 000041E0: 34 31 55 53 20 44 45 4C 41 59 20 42 45 46 4F 52 |41US DELAY BEFOR| 000041F0: 45 20 54 48 45 20 61 20 52 45 47 49 53 54 45 52 |E THE a REGISTER| 00004200: 20 43 4F 4E 54 41 49 4E 53 20 4F 55 52 0D 31 53 | CONTAINS OUR.1S| 00004210: 54 20 32 20 42 49 54 53 2E 20 61 46 54 45 52 20 |T 2 BITS. aFTER | 00004220: 54 48 45 20 31 53 54 20 70 41 53 53 2C 20 54 48 |THE 1ST pASS, TH| 00004230: 45 20 31 35 34 31 20 57 52 49 54 45 20 41 4E 44 |E 1541 WRITE AND| 00004240: 20 54 48 45 20 63 36 34 20 52 45 41 44 20 52 4F | THE c64 READ RO| 00004250: 55 54 49 4E 45 20 54 41 4B 45 53 0D 41 42 4F 55 |UTINE TAKES.ABOU| 00004260: 54 20 33 30 55 53 20 45 41 43 48 20 53 4F 20 54 |T 30US EACH SO T| 00004270: 48 45 20 63 36 34 20 57 49 4C 4C 20 43 4F 4E 54 |HE c64 WILL CONT| 00004280: 49 4E 55 45 20 54 4F 20 54 52 59 20 41 4E 44 20 |INUE TO TRY AND | 00004290: 52 45 41 44 20 54 48 45 20 50 4F 52 54 20 41 42 |READ THE PORT AB| 000042A0: 4F 55 54 20 31 35 55 53 0D 41 46 54 45 52 20 54 |OUT 15US.AFTER T| 000042B0: 48 45 20 31 35 34 31 20 48 41 53 20 57 52 49 54 |HE 1541 HAS WRIT| 000042C0: 54 45 4E 20 54 48 45 20 32 20 42 49 54 53 20 54 |TEN THE 2 BITS T| 000042D0: 4F 20 54 48 45 20 50 4F 52 54 2E 20 74 4F 20 54 |O THE PORT. tO T| 000042E0: 52 59 20 41 4E 44 20 4D 41 4B 45 20 49 54 20 41 |RY AND MAKE IT A| 000042F0: 20 4C 49 54 54 4C 45 0D 45 41 53 49 45 52 2C 20 | LITTLE.EASIER, | 00004300: 42 45 4C 4F 57 20 49 53 20 41 20 47 52 41 50 48 |BELOW IS A GRAPH| 00004310: 20 53 48 4F 57 49 4E 47 20 54 48 45 20 31 53 54 | SHOWING THE 1ST| 00004320: 20 32 20 50 41 53 53 45 53 2E 0D 0D 63 31 32 62 | 2 PASSES...c12b| 00004330: 3A 20 61 32 20 30 34 20 20 20 20 20 20 20 20 20 |: a2 04 | 00004340: 20 20 20 20 20 6C 64 78 20 20 20 23 24 30 34 20 | ldx #$04 | 00004350: 20 20 20 20 20 20 3B 32 39 55 53 20 44 45 4C 41 | ;29US DELA| 00004360: 59 20 4C 4F 4F 50 0D 63 31 32 64 3A 20 63 61 20 |Y LOOP.c12d: ca | 00004370: 20 20 20 20 20 20 20 72 65 63 76 30 33 20 20 20 | recv03 | 00004380: 64 65 78 0D 63 31 32 65 3A 20 65 61 20 20 20 20 |dex.c12e: ea | 00004390: 20 20 20 20 20 20 20 20 20 20 20 20 20 6E 6F 70 | nop| 000043A0: 0D 63 31 32 66 3A 20 64 30 20 66 63 20 20 20 20 |.c12f: d0 fc | 000043B0: 20 20 20 20 20 20 20 20 20 20 62 6E 65 20 20 20 | bne | 000043C0: 72 65 63 76 30 33 0D 0D 74 48 49 53 20 49 53 20 |recv03..tHIS IS | 000043D0: 48 4F 57 20 49 54 20 57 4F 52 4B 53 20 46 4F 4C |HOW IT WORKS FOL| 000043E0: 4B 53 21 21 0D 0D 2F 2E 2E 2E 2E 2E 2E 2E 2E 2E |KS!!../.........| 000043F0: 2E 2E 32 36 75 73 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E |..26us..........| 00004400: 2F 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 33 30 |/.............30| 00004410: 75 73 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2F |us............./| 00004420: 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E |................| 00004430: 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00004440: 20 20 20 20 20 20 20 31 35 34 31 20 77 52 49 54 | 1541 wRIT| 00004450: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |E | 00004460: 20 20 20 20 20 20 31 35 34 31 20 77 52 49 54 45 | 1541 wRITE| 00004470: 0D 2F 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E |./..............| 00004480: 2E 2E 2E 2E 2E 34 31 75 73 2E 2E 2E 2E 2E 2E 2E |.....41us.......| 00004490: 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2F 2E 2E 2E 2E |.........../....| 000044A0: 2E 2E 2E 2E 2E 2E 2E 2E 2E 33 30 75 73 2E 2E 2E |.........30us...| 000044B0: 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2F 0D 20 20 20 20 |........../. | 000044C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000044D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000044E0: 20 20 20 63 36 34 20 72 45 41 44 20 20 20 20 20 | c64 rEAD | 000044F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004500: 20 20 63 36 34 20 72 45 41 44 0D 0D 63 31 33 31 | c64 rEAD..c131| 00004510: 3A 20 61 32 20 30 34 20 20 20 20 20 20 20 20 20 |: a2 04 | 00004520: 20 20 20 20 20 6C 64 78 20 20 20 23 34 0D 63 31 | ldx #4.c1| 00004530: 33 33 3A 20 61 64 20 30 30 20 64 64 20 20 72 65 |33: ad 00 dd re| 00004540: 63 76 30 34 20 20 20 6C 64 61 20 20 20 70 6F 72 |cv04 lda por| 00004550: 74 61 20 20 20 20 20 20 3B 64 4F 20 54 48 45 20 |ta ;dO THE | 00004560: 4D 41 54 48 20 41 4E 44 20 4B 45 45 50 20 54 48 |MATH AND KEEP TH| 00004570: 45 0D 63 31 33 36 3A 20 30 61 20 20 20 20 20 20 |E.c136: 0a | 00004580: 20 20 20 20 20 20 20 20 20 20 20 61 73 6C 20 20 | asl | 00004590: 20 61 20 20 20 20 20 20 20 20 20 20 3B 54 49 4D | a ;TIM| 000045A0: 49 4E 47 20 52 49 47 48 54 21 0D 63 31 33 37 3A |ING RIGHT!.c137:| 000045B0: 20 30 38 20 20 20 20 20 20 20 20 20 20 20 20 20 | 08 | 000045C0: 20 20 20 20 70 68 70 0D 63 31 33 38 3A 20 30 61 | php.c138: 0a| 000045D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000045E0: 20 61 73 6C 20 20 20 61 0D 63 31 33 39 3A 20 32 | asl a.c139: 2| 000045F0: 36 20 39 35 20 20 20 20 20 20 20 20 20 20 20 20 |6 95 | 00004600: 20 20 72 6F 6C 20 20 20 62 73 6F 75 72 0D 63 31 | rol bsour.c1| 00004610: 33 62 3A 20 32 38 20 20 20 20 20 20 20 20 20 20 |3b: 28 | 00004620: 20 20 20 20 20 20 20 70 6C 70 0D 63 31 33 63 3A | plp.c13c:| 00004630: 20 32 36 20 39 35 20 20 20 20 20 20 20 20 20 20 | 26 95 | 00004640: 20 20 20 20 72 6F 6C 20 20 20 62 73 6F 75 72 0D | rol bsour.| 00004650: 63 31 33 65 3A 20 63 61 20 20 20 20 20 20 20 20 |c13e: ca | 00004660: 20 20 20 20 20 20 20 20 20 64 65 78 0D 63 31 33 | dex.c13| 00004670: 66 3A 20 64 30 20 66 32 20 20 20 20 20 20 20 20 |f: d0 f2 | 00004680: 20 20 20 20 20 20 62 6E 65 20 20 20 72 65 63 76 | bne recv| 00004690: 30 34 20 20 20 20 20 3B 61 4C 4C 20 34 20 58 20 |04 ;aLL 4 X | 000046A0: 32 20 42 49 54 53 20 53 45 4E 54 3F 2D 6E 4F 0D |2 BITS SENT?-nO.| 000046B0: 63 31 34 31 3A 20 61 35 20 39 35 20 20 20 20 20 |c141: a5 95 | 000046C0: 20 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 62 | lda b| 000046D0: 73 6F 75 72 20 20 20 20 20 20 3B 79 45 53 2D 54 |sour ;yES-T| 000046E0: 48 45 4E 20 57 45 20 4E 45 45 44 20 54 4F 20 43 |HEN WE NEED TO C| 000046F0: 4F 4D 50 4C 45 4D 45 4E 54 0D 63 31 34 33 3A 20 |OMPLEMENT.c143: | 00004700: 34 39 20 66 66 20 20 20 20 20 20 20 20 20 20 20 |49 ff | 00004710: 20 20 20 65 6F 72 20 20 20 23 24 66 66 20 20 20 | eor #$ff | 00004720: 20 20 20 20 3B 4F 55 52 20 52 45 43 45 49 56 45 | ;OUR RECEIVE| 00004730: 44 20 42 59 54 45 2E 0D 63 31 34 35 3A 20 39 39 |D BYTE..c145: 99| 00004740: 20 30 30 20 63 34 20 20 20 20 20 20 20 20 20 20 | 00 c4 | 00004750: 20 73 74 61 20 20 20 62 75 66 66 65 72 2C 79 20 | sta buffer,y | 00004760: 20 20 3B 61 4E 44 20 53 54 4F 52 45 20 49 54 20 | ;aND STORE IT | 00004770: 49 4E 20 54 48 45 20 42 55 46 46 45 52 2E 0D 63 |IN THE BUFFER..c| 00004780: 31 34 38 3A 20 63 38 20 20 20 20 20 20 20 20 20 |148: c8 | 00004790: 20 20 20 20 20 20 20 20 69 6E 79 0D 63 31 34 39 | iny.c149| 000047A0: 3A 20 64 30 20 63 63 20 20 20 20 20 20 20 20 20 |: d0 cc | 000047B0: 20 20 20 20 20 62 6E 65 20 20 20 67 74 73 63 74 | bne gtsct| 000047C0: 31 20 20 20 20 20 3B 63 4F 4D 50 4C 45 54 45 20 |1 ;cOMPLETE | 000047D0: 53 45 43 54 4F 52 20 52 45 43 45 49 56 45 44 3F |SECTOR RECEIVED?| 000047E0: 2D 6E 4F 0D 63 31 34 62 3A 20 36 30 20 20 20 20 |-nO.c14b: 60 | 000047F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 74 73 | rts| 00004800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 79 | ;y| 00004810: 45 53 2D 54 48 45 4E 20 52 45 54 55 52 4E 0D 0D |ES-THEN RETURN..| 00004820: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00004830: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00004840: 0D 2A 64 4F 57 4E 4C 4F 41 44 20 43 4F 44 45 20 |.*dOWNLOAD CODE | 00004850: 54 4F 20 31 35 34 31 20 44 52 49 56 45 20 20 20 |TO 1541 DRIVE | 00004860: 2A 0D 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 |*.* | 00004870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004880: 20 2A 0D 2A 73 45 54 20 55 50 2C 20 43 48 41 4E | *.*sET UP, CHAN| 00004890: 47 45 20 46 4F 52 20 59 4F 55 52 20 4F 57 4E 20 |GE FOR YOUR OWN | 000048A0: 20 20 2A 0D 2A 41 50 50 4C 49 43 41 54 49 4F 4E | *.*APPLICATION| 000048B0: 2E 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000048C0: 20 20 20 2A 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A | *.***********| 000048D0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000048E0: 2A 2A 2A 2A 2A 0D 0D 63 31 34 63 3A 20 61 39 20 |*****..c14c: a9 | 000048F0: 31 30 20 20 20 20 20 64 6F 77 6E 6C 20 20 20 20 |10 downl | 00004900: 6C 64 61 20 20 20 23 31 36 20 20 20 20 20 20 20 |lda #16 | 00004910: 20 3B 6E 55 4D 42 45 52 20 4F 46 20 33 32 20 42 | ;nUMBER OF 32 B| 00004920: 59 54 45 20 50 41 47 45 53 20 54 4F 20 4D 4F 56 |YTE PAGES TO MOV| 00004930: 45 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |E. | 00004940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004950: 20 20 20 20 20 20 20 20 20 20 20 20 3B 54 4F 20 | ;TO | 00004960: 54 48 45 20 31 35 34 31 20 28 31 36 20 2A 20 33 |THE 1541 (16 * 3| 00004970: 32 20 3D 20 35 31 32 20 42 59 54 45 53 29 0D 63 |2 = 512 BYTES).c| 00004980: 31 34 65 3A 20 38 35 20 66 66 20 20 20 20 20 20 |14e: 85 ff | 00004990: 20 20 20 20 20 20 20 20 73 74 61 20 20 20 70 61 | sta pa| 000049A0: 67 65 0D 63 31 35 30 3A 20 61 39 20 30 30 20 20 |ge.c150: a9 00 | 000049B0: 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 61 20 | lda | 000049C0: 20 20 23 3C 24 63 32 30 30 20 20 20 20 3B 6C 73 | #<$c200 ;ls| 000049D0: 62 20 4F 46 20 41 44 44 52 45 53 53 20 57 48 45 |b OF ADDRESS WHE| 000049E0: 52 45 20 54 48 45 20 44 52 49 56 45 0D 20 20 20 |RE THE DRIVE. | 000049F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004A00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004A10: 20 20 20 20 20 20 20 3B 50 52 4F 47 52 41 4D 20 | ;PROGRAM | 00004A20: 49 53 20 53 54 4F 52 45 44 20 49 4E 20 54 48 45 |IS STORED IN THE| 00004A30: 20 63 36 34 2E 0D 63 31 35 32 3A 20 38 35 20 66 | c64..c152: 85 f| 00004A40: 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 |b s| 00004A50: 74 61 20 20 20 74 65 6D 70 0D 63 31 35 34 3A 20 |ta temp.c154: | 00004A60: 61 39 20 63 32 20 20 20 20 20 20 20 20 20 20 20 |a9 c2 | 00004A70: 20 20 20 6C 64 61 20 20 20 23 3E 24 63 32 30 30 | lda #>$c200| 00004A80: 20 20 20 20 3B 6D 73 62 20 4F 46 20 41 44 44 52 | ;msb OF ADDR| 00004A90: 45 53 53 20 4F 46 20 54 48 45 20 44 52 49 56 45 |ESS OF THE DRIVE| 00004AA0: 20 50 52 4F 47 52 41 4D 0D 63 31 35 36 3A 20 38 | PROGRAM.c156: 8| 00004AB0: 35 20 66 63 20 20 20 20 20 20 20 20 20 20 20 20 |5 fc | 00004AC0: 20 20 73 74 61 20 20 20 74 65 6D 70 2B 31 0D 63 | sta temp+1.c| 00004AD0: 31 35 38 3A 20 61 39 20 30 30 20 20 20 20 20 20 |158: a9 00 | 00004AE0: 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 23 3C | lda #<| 00004AF0: 24 30 35 30 30 20 20 20 20 3B 70 55 54 20 49 54 |$0500 ;pUT IT| 00004B00: 20 49 4E 20 31 35 34 31 20 53 54 41 52 54 49 4E | IN 1541 STARTIN| 00004B10: 47 20 24 30 35 30 30 0D 63 31 35 61 3A 20 38 35 |G $0500.c15a: 85| 00004B20: 20 66 64 20 20 20 20 20 20 20 20 20 20 20 20 20 | fd | 00004B30: 20 73 74 61 20 20 20 74 65 6D 70 31 0D 63 31 35 | sta temp1.c15| 00004B40: 63 3A 20 61 39 20 30 35 20 20 20 20 20 20 20 20 |c: a9 05 | 00004B50: 20 20 20 20 20 20 6C 64 61 20 20 20 23 3E 24 30 | lda #>$0| 00004B60: 35 30 30 0D 63 31 35 65 3A 20 38 35 20 66 65 20 |500.c15e: 85 fe | 00004B70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 | sta| 00004B80: 20 20 20 74 65 6D 70 31 2B 31 0D 0D 63 31 36 30 | temp1+1..c160| 00004B90: 3A 20 61 35 20 62 61 20 20 20 20 20 6C 6F 61 64 |: a5 ba load| 00004BA0: 20 20 20 20 20 6C 64 61 20 20 20 66 61 20 20 20 | lda fa | 00004BB0: 20 20 20 20 20 20 3B 67 45 54 20 41 43 54 49 56 | ;gET ACTIV| 00004BC0: 45 20 44 45 56 49 43 45 20 28 64 52 49 56 45 20 |E DEVICE (dRIVE | 00004BD0: 3D 20 38 29 0D 63 31 36 32 3A 20 32 30 20 62 31 |= 8).c162: 20 b1| 00004BE0: 20 66 66 20 20 20 20 20 20 20 20 20 20 20 6A 73 | ff js| 00004BF0: 72 20 20 20 6C 69 73 74 65 6E 20 20 20 20 20 3B |r listen ;| 00004C00: 61 4E 44 20 43 4F 4D 4D 41 4E 44 20 49 54 20 54 |aND COMMAND IT T| 00004C10: 4F 20 6C 69 73 74 65 6E 0D 63 31 36 35 3A 20 61 |O listen.c165: a| 00004C20: 39 20 36 66 20 20 20 20 20 20 20 20 20 20 20 20 |9 6f | 00004C30: 20 20 6C 64 61 20 20 20 23 24 36 66 20 20 20 20 | lda #$6f | 00004C40: 20 20 20 3B 6F 50 45 4E 20 43 4F 4D 4D 41 4E 44 | ;oPEN COMMAND| 00004C50: 20 43 48 41 4E 4E 45 4C 20 28 31 35 29 0D 63 31 | CHANNEL (15).c1| 00004C60: 36 37 3A 20 32 30 20 39 33 20 66 66 20 20 20 20 |67: 20 93 ff | 00004C70: 20 20 20 20 20 20 20 6A 73 72 20 20 20 73 65 63 | jsr sec| 00004C80: 6F 6E 64 0D 63 31 36 61 3A 20 61 35 20 66 64 20 |ond.c16a: a5 fd | 00004C90: 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 61 | lda| 00004CA0: 20 20 20 74 65 6D 70 31 20 20 20 20 20 20 3B 70 | temp1 ;p| 00004CB0: 55 54 20 54 48 45 20 44 45 53 54 49 4E 41 54 49 |UT THE DESTINATI| 00004CC0: 4F 4E 20 41 44 44 52 45 53 53 0D 63 31 36 63 3A |ON ADDRESS.c16c:| 00004CD0: 20 61 34 20 66 65 20 20 20 20 20 20 20 20 20 20 | a4 fe | 00004CE0: 20 20 20 20 6C 64 79 20 20 20 74 65 6D 70 31 2B | ldy temp1+| 00004CF0: 31 20 20 20 20 3B 46 4F 52 20 4F 55 52 20 6D 2D |1 ;FOR OUR m-| 00004D00: 77 20 43 4F 4D 4D 41 4E 44 20 49 4E 54 4F 0D 63 |w COMMAND INTO.c| 00004D10: 31 36 65 3A 20 38 64 20 62 30 20 63 31 20 20 20 |16e: 8d b0 c1 | 00004D20: 20 20 20 20 20 20 20 20 73 74 61 20 20 20 6D 77 | sta mw| 00004D30: 2B 33 20 20 20 20 20 20 20 3B 54 48 45 20 6D 45 |+3 ;THE mE| 00004D40: 4D 4F 52 59 2D 77 52 49 54 45 20 53 54 52 49 4E |MORY-wRITE STRIN| 00004D50: 47 2E 0D 63 31 37 31 3A 20 38 63 20 62 31 20 63 |G..c171: 8c b1 c| 00004D60: 31 20 20 20 20 20 20 20 20 20 20 20 73 74 79 20 |1 sty | 00004D70: 20 20 6D 77 2B 34 0D 63 31 37 34 3A 20 61 30 20 | mw+4.c174: a0 | 00004D80: 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |00 | 00004D90: 6C 64 79 20 20 20 23 30 0D 63 31 37 36 3A 20 62 |ldy #0.c176: b| 00004DA0: 39 20 61 64 20 63 31 20 20 6C 6F 6F 70 20 20 20 |9 ad c1 loop | 00004DB0: 20 20 6C 64 61 20 20 20 6D 77 2C 79 20 20 20 20 | lda mw,y | 00004DC0: 20 20 20 3B 73 45 4E 44 20 54 48 45 20 27 6D 2D | ;sEND THE 'm-| 00004DD0: 77 27 20 43 4F 4D 4D 41 4E 44 0D 63 31 37 39 3A |w' COMMAND.c179:| 00004DE0: 20 32 30 20 61 38 20 66 66 20 20 20 20 20 20 20 | 20 a8 ff | 00004DF0: 20 20 20 20 6A 73 72 20 20 20 63 69 6F 75 74 20 | jsr ciout | 00004E00: 20 20 20 20 20 3B 54 4F 20 54 48 45 20 44 52 49 | ;TO THE DRI| 00004E10: 56 45 2E 0D 63 31 37 63 3A 20 63 38 20 20 20 20 |VE..c17c: c8 | 00004E20: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6E 79 | iny| 00004E30: 0D 63 31 37 64 3A 20 63 30 20 30 36 20 20 20 20 |.c17d: c0 06 | 00004E40: 20 20 20 20 20 20 20 20 20 20 63 70 79 20 20 20 | cpy | 00004E50: 23 36 0D 63 31 37 66 3A 20 64 30 20 66 35 20 20 |#6.c17f: d0 f5 | 00004E60: 20 20 20 20 20 20 20 20 20 20 20 20 62 6E 65 20 | bne | 00004E70: 20 20 6C 6F 6F 70 0D 63 31 38 31 3A 20 61 30 20 | loop.c181: a0 | 00004E80: 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |00 | 00004E90: 6C 64 79 20 20 20 23 30 30 20 20 20 20 20 20 20 |ldy #00 | 00004EA0: 20 3B 6E 4F 57 20 53 45 4E 44 20 33 32 20 42 59 | ;nOW SEND 32 BY| 00004EB0: 54 45 53 20 4F 46 20 54 48 45 20 64 52 49 56 45 |TES OF THE dRIVE| 00004EC0: 0D 63 31 38 33 3A 20 62 31 20 66 62 20 20 20 20 |.c183: b1 fb | 00004ED0: 20 6C 6F 6F 70 31 20 20 20 20 6C 64 61 20 20 20 | loop1 lda | 00004EE0: 28 74 65 6D 70 29 2C 79 20 20 20 3B 50 52 4F 47 |(temp),y ;PROG| 00004EF0: 52 41 4D 20 46 52 4F 4D 20 54 48 45 20 63 36 34 |RAM FROM THE c64| 00004F00: 20 54 4F 20 54 48 45 20 31 35 34 31 2E 0D 63 31 | TO THE 1541..c1| 00004F10: 38 35 3A 20 32 30 20 61 38 20 66 66 20 20 20 20 |85: 20 a8 ff | 00004F20: 20 20 20 20 20 20 20 6A 73 72 20 20 20 63 69 6F | jsr cio| 00004F30: 75 74 0D 63 31 38 38 3A 20 63 38 20 20 20 20 20 |ut.c188: c8 | 00004F40: 20 20 20 20 20 20 20 20 20 20 20 20 69 6E 79 0D | iny.| 00004F50: 63 31 38 39 3A 20 63 30 20 32 30 20 20 20 20 20 |c189: c0 20 | 00004F60: 20 20 20 20 20 20 20 20 20 63 70 79 20 20 20 23 | cpy #| 00004F70: 33 32 0D 63 31 38 62 3A 20 39 30 20 66 36 20 20 |32.c18b: 90 f6 | 00004F80: 20 20 20 20 20 20 20 20 20 20 20 20 62 63 63 20 | bcc | 00004F90: 20 20 6C 6F 6F 70 31 0D 0D 61 44 4A 55 53 54 20 | loop1..aDJUST | 00004FA0: 54 48 45 20 50 4F 49 4E 54 45 52 53 0D 0D 63 31 |THE POINTERS..c1| 00004FB0: 38 64 3A 20 61 35 20 66 62 20 20 20 20 20 20 20 |8d: a5 fb | 00004FC0: 20 20 20 20 20 20 20 6C 64 61 20 20 20 74 65 6D | lda tem| 00004FD0: 70 20 20 20 20 20 20 20 3B 61 44 44 20 33 32 20 |p ;aDD 32 | 00004FE0: 54 4F 20 42 4F 54 48 20 4F 55 52 20 74 65 6D 70 |TO BOTH OUR temp| 00004FF0: 20 41 4E 44 20 74 65 6D 70 31 0D 63 31 38 66 3A | AND temp1.c18f:| 00005000: 20 36 39 20 31 66 20 20 20 20 20 20 20 20 20 20 | 69 1f | 00005010: 20 20 20 20 61 64 63 20 20 20 23 33 31 20 20 20 | adc #31 | 00005020: 20 20 20 20 20 3B 50 4F 49 4E 54 45 52 53 20 53 | ;POINTERS S| 00005030: 4F 20 54 48 41 54 20 4F 55 52 20 6D 2D 77 20 41 |O THAT OUR m-w A| 00005040: 4E 44 20 63 36 34 0D 63 31 39 31 3A 20 38 35 20 |ND c64.c191: 85 | 00005050: 66 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |fb | 00005060: 73 74 61 20 20 20 74 65 6D 70 20 20 20 20 20 20 |sta temp | 00005070: 20 3B 44 52 49 56 45 20 50 52 4F 47 52 41 4D 20 | ;DRIVE PROGRAM | 00005080: 41 44 44 52 45 53 53 20 49 53 20 49 4E 43 52 45 |ADDRESS IS INCRE| 00005090: 4D 45 4E 54 45 44 0D 63 31 39 33 3A 20 61 35 20 |MENTED.c193: a5 | 000050A0: 66 63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |fc | 000050B0: 6C 64 61 20 20 20 74 65 6D 70 2B 31 20 20 20 20 |lda temp+1 | 000050C0: 20 3B 54 4F 20 4F 55 52 20 4E 45 58 54 20 33 32 | ;TO OUR NEXT 32| 000050D0: 20 42 59 54 45 20 50 41 47 45 2E 0D 63 31 39 35 | BYTE PAGE..c195| 000050E0: 3A 20 36 39 20 30 30 20 20 20 20 20 20 20 20 20 |: 69 00 | 000050F0: 20 20 20 20 20 61 64 63 20 20 20 23 30 0D 63 31 | adc #0.c1| 00005100: 39 37 3A 20 38 35 20 66 63 20 20 20 20 20 20 20 |97: 85 fc | 00005110: 20 20 20 20 20 20 20 73 74 61 20 20 20 74 65 6D | sta tem| 00005120: 70 2B 31 0D 63 31 39 39 3A 20 61 35 20 66 64 20 |p+1.c199: a5 fd | 00005130: 20 20 20 20 20 20 20 20 20 20 20 20 20 6C 64 61 | lda| 00005140: 20 20 20 74 65 6D 70 31 0D 63 31 39 62 3A 20 36 | temp1.c19b: 6| 00005150: 39 20 32 30 20 20 20 20 20 20 20 20 20 20 20 20 |9 20 | 00005160: 20 20 61 64 63 20 20 20 23 33 32 0D 63 31 39 64 | adc #32.c19d| 00005170: 3A 20 38 35 20 66 64 20 20 20 20 20 20 20 20 20 |: 85 fd | 00005180: 20 20 20 20 20 73 74 61 20 20 20 74 65 6D 70 31 | sta temp1| 00005190: 0D 63 31 39 66 3A 20 61 35 20 66 65 20 20 20 20 |.c19f: a5 fe | 000051A0: 20 20 20 20 20 20 20 20 20 20 6C 64 61 20 20 20 | lda | 000051B0: 74 65 6D 70 31 2B 31 0D 63 31 61 31 3A 20 36 39 |temp1+1.c1a1: 69| 000051C0: 20 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00 | 000051D0: 20 61 64 63 20 20 20 23 30 0D 63 31 61 33 3A 20 | adc #0.c1a3: | 000051E0: 38 35 20 66 65 20 20 20 20 20 20 20 20 20 20 20 |85 fe | 000051F0: 20 20 20 73 74 61 20 20 20 74 65 6D 70 31 2B 31 | sta temp1+1| 00005200: 0D 63 31 61 35 3A 20 32 30 20 61 65 20 66 66 20 |.c1a5: 20 ae ff | 00005210: 20 20 20 20 20 20 20 20 20 20 6A 73 72 20 20 20 | jsr | 00005220: 75 6E 6C 73 6E 0D 63 31 61 38 3A 20 63 36 20 66 |unlsn.c1a8: c6 f| 00005230: 66 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 |f d| 00005240: 65 63 20 20 20 70 61 67 65 20 20 20 20 20 20 20 |ec page | 00005250: 3B 61 4C 4C 20 33 32 20 42 59 54 45 20 50 41 47 |;aLL 32 BYTE PAG| 00005260: 45 53 20 53 45 4E 54 3F 0D 63 31 61 61 3A 20 64 |ES SENT?.c1aa: d| 00005270: 30 20 62 34 20 20 20 20 20 20 20 20 20 20 20 20 |0 b4 | 00005280: 20 20 62 6E 65 20 20 20 6C 6F 61 64 20 20 20 20 | bne load | 00005290: 20 20 20 3B 6E 4F 2D 54 48 45 4E 20 47 45 54 20 | ;nO-THEN GET | 000052A0: 4D 4F 52 45 0D 63 31 61 63 3A 20 36 30 20 20 20 |MORE.c1ac: 60 | 000052B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 74 | rt| 000052C0: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B |s ;| 000052D0: 79 45 53 2D 54 48 45 4E 20 52 45 54 55 52 4E 0D |yES-THEN RETURN.| 000052E0: 0D 63 31 61 64 3A 20 34 64 20 32 64 20 35 37 20 |.c1ad: 4d 2d 57 | 000052F0: 20 6D 77 20 20 20 20 20 20 20 61 73 63 20 20 20 | mw asc | 00005300: 27 6D 2D 77 27 2C 30 30 2C 30 30 2C 32 30 0D 63 |'m-w',00,00,20.c| 00005310: 31 62 30 3A 20 30 30 20 30 30 20 32 30 0D 0D 0D |1b0: 00 00 20...| 00005320: 2D 2D 65 4E 44 20 6D 45 52 4C 49 4E 2D 31 32 38 |--eND mERLIN-128| 00005330: 20 41 53 53 45 4D 42 4C 59 2C 20 34 33 35 20 42 | ASSEMBLY, 435 B| 00005340: 59 54 45 53 2C 20 65 52 52 4F 52 53 3A 20 30 0D |YTES, eRRORS: 0.|
ZAPL64..ORIGINALLY WRITTEN BY DON LEWIS
AND APPEARED IN APRIL 1985 COMPUTE! AS T
HE.PROTRAM TURBODISK. UPLOADED WITH THE
AUTHORS PERMISSION BY Q-LINK USER BISON,
.AND IS CURRENTLY IN THE ORIGINAL FORM A
S 2 FILES IN THE PROGRAMMER'S WORKSHOP.L
IBRARY, 65XX, UTILITIES SOURCE AS:..ZAP-
LDER2.A1541.ZAP-LDER2.A64..EXTENSIVE COM
MENTING AND TUTORIAL BY JOHN GAGER.(Q-LI
NK ID: SUPERDISK).(COMPUSERVE ID: 71336,
624)..SUPERDISK COMMENTS: SOMETIMES I'M
NOT CONTENT WITH KNOWING ONLY THAT A PRO
GRAM.WORKS. THERE ARE CERTAIN TIMES I WA
NT TO KNOW WHY AND HOW? THIS HAS BEEN TH
E.CASE WITH THOSE FAST LOAD PROGRAMS THA
T HAVE BEEN FLOATING AROUND. SO WHEN I.S
AW THE 2 SOURCE FILES BISON UPLOADED, I
THOUGHT "GREAT! NOW I CAN FIND OUT.HOW T
HOSE DARN ROUTINES WORK". YOU CAN IMAGIN
E MY DISAPPOINTMENT WHEN I LOOKED.AT THE
2 FILES AND FOUND A TOTAL OF ABOUT 10 C
OMMENTS IN THE SOURCE. ARGH! WELL.I GUES
S YOU CAN'T HAVE EVERYTHING, SO DECIDED
TO GO THROUGH AND FIGURE IT OUT.MYSELF.
I'M GLAD I DID THOUGH. I HAVE A MUCH BET
TER UNDERSTANDING OF HOW THOSE.FAST LOAD
PROGRAMS WORK IN GENERAL, AND SERIAL I/
O ESPECIALLY. BUT I COULDN'T.HAVE DONE I
T WITHOUT MY GOOD LIBRARY OF REFERENCE B
OOKS:..1571 INTERNALS (ABACUS).INSIDE CO
MMODORE DOS (DATAMOST).C128 PROGRAMMER'S
REFERENCE GUIDE (BANTAM)..AS YOU NOTICE
, SOME OF THE BOOKS I USED ARE FOR THE 1
571 AND C128. THE BOOK."1571 INTERNALS"
HAS A VERY GOOD EXPLANATION OF HOW SERIA
L I/O WORKS, WHILE.THEIR MANUAL "ANATOMY
OF THE 1541 DISK DRIVE" BARELY MENTIONS
THIS SUBJECT..WHY THEY DIDN'T INCLUDE T
HE SERIAL I/O INFO IN THE 1541 MANUAL IS
BEYOND ME..ANYWAY, I HOPE YOU CAN LEARN
FROM THE RESULT OF MY EFFORTS, AND PLEA
SE LET ME.KNOW WHAT YOU THINK. ALSO I AD
MIT I'M NOT AN EXPERIENCED DOS HACKER OR
ML.PROGRAMMER, SO IF YOU NOTICE ANY COR
RECTIONS OR ADDITIONS THAT NEED TO BE MA
DE,.PLEASE TELL ME!..ZAP/LOADER 64 RESID
ENT CODE.. 64 ROUTINES &
RAM.. PORTA = $DD0
0 ;6526 CIA #2-PORT A.
VICCTR = $D011 ;VIC CONTRO
L REGISTER 1. BUFFER =
$C400 ;TEMP BUFFER FOR SECTOR T
RANSFER. ILOAD = $
0330 ;C64 KERNAL LOAD ROUTINE VECTO
R.. KERNAL JUMPS..
TALK = $FFB4 ;COMM
AND DEVICE TO TALK. LISTE
N = $FFB1 ;COMMAND DEVICE TO
LISTEN. UNLSN = $F
FAE ;COMMAND DEVICE TO UNLISTEN.
UNTALK = $FFAB ;
COMMAND DEVICE TO UNTALK.
CIOUT = $FFA8 ;OUTPUT BYTE
OVER SERIAL BUS. SECOND
= $FF93 ;SEND SECONDARY ADDRES
S. LOAD64 = $F4A5
;C64 NORMAL LOAD ROUTINE.
OUTSCN = $E716 ;PRINT CH
AR IN A AT NEXT.
;CURSOR POSITION...
C64 ZERO PAGE USAGE..
BSOUR = $95 ;TEM
P BUFFER FOR SERIAL DATA.
EAL = $AE ;POINTER TO P
ROGRAM START ADDRESS. TEM
P = $FB ;POINTER FOR 1541
DRIVE PROGRAM.
;THAT IS LOCATED AT $C2
00. TEMP1 = $FD
;POINTER FOR 1541 RAM ($0500).
;TH
AT THE PROGRAM IS TO BE.
;DOWNLOADED TO
.. PAGE = $FF
;NUMBER OF 32 BYTE PAGES TO.
;BE DO
WNLOADED TO THE 1541 (16)..
FA = $BA ;CURRENT DE
VICE (FOR DRIVE = 8). FNL
EN = $B7 ;LENGTH OF FILENA
ME. FNADR = $BB
;POINTER WHERE FILENAME IS LOCATED.
SA = $B9
;SECONDARY ADDRESS. MEM
USS = $C3 ;NORMAL BASIC LOA
D POINTER ($0801). VERCK
= $93 ;FLAG: 0=LOAD 1=VERI
FY.. SEE ZAP LOADER 1541
RESIDENT CODE.. FILE
= $06AC+$BD00;SECONDARY FILENAME ARE
A USED.
;BY THIS PROGRAM. THE MAIN.
;F
ILENAME IS POINTED TO BY $BB...PROGRAM S
TARTS HERE.. ORG
$C000..C000: 4C 1B C0 ZAPON JMP
ZAPON0 ;JUMP TO ENABLE FAST LOADER.
.DISABLE FAST LOAD ROUTINE..C003: A9 A5
ZAPOFF LDA #<LOAD64 ;RESTORE I
LOAD VECTOR TO NORMAL.C005: 8D 30 03
STA ILOAD ;C64 LOAD ROUTIN
E (F4A5).C008: A9 F4 LDA
#>LOAD64.C00A: 8D 31 03 STA
ILOAD+1.C00D: A0 00 LDY #
00.C00F: B9 29 C0 ZAPOF0 LDA MSG1,Y
;PRINT DISABLED MESSAGE.C012: F0 06
BEQ ZAPOFX.C014: 20 16 E
7 JSR OUTSCN.C017: C8
INY.C018: D0 F5 B
NE ZAPOF0.C01A: 60 ZAPOFX RTS
;AND RETURN..ENABLE FAST L
OAD ROUTINE..C01B: A9 4F ZAPON0 LD
A #<ZAP ;SET ILOAD VECTOR TO POIN
T TO.C01D: 8D 30 03 STA ILOA
D ;THE FAST LOAD ROUTINE..C020: A9
C0 LDA #>ZAP.C022: 8D 31
03 STA ILOAD+1.C025: A0 0F
LDY #MSG2-LITS ;PRINT "ENA
BLED" MESSAGE.C027: D0 E6 B
NE ZAPOF0.. LITS =
*.C029: 0D MSG1 DFB $0D
.C02A: 5A 41 50 ASC 'ZAP DIS
ABLED',0D,00.C02D: 20 44 49 53 41 42 4C
45.C035: 44 0D 00.C038: 0D MSG2
DFB $0D.C039: 5A 41 50 AS
C 'ZAP V0223/85 ENABLED',0D,00.C03C: 2
0 56 30 32 32 33 2F 38.C044: 35 20 45 4E
41 42 4C 45.C04C: 44 0D 00..FAST LOAD R
OUTINE STARTS HERE. AT THIS POINT, WHEN
THE ILOAD VECTOR JUMPS HERE,.THE A REGIS
TER WILL CONTAIN THE FLAG FOR A LOAD OR
VERIFY. (0-LOAD 1-VERIFY)..C04F: 85 93
ZAP STA VERCK ;SAVE VERIF
Y FLAG.C051: A5 93 LDA VE
RCK ;GET VERIFY FLAG.C053: D0 1E
BNE DIRCT ;IS IT A VER
IFY? YES THEN JUMP.
;TO NORMAL C64 LOAD
ROUTINE..
;NO-THEN ITS A LOAD COMMAND.
;SO CONTINUE HERE...CLEAR FILE NAME AR
EA..C055: A2 10 LDX #16
;THIS CLEARS THE SECONDARY.C057: A
9 A0 LDA #$A0 ;FILE
NAME AREA USED BY THIS.C059: 9D AC C3 C
LRFIL STA FILE,X ;PROGRAM. THE M
AIN FILENAME.C05C: CA DE
X ;AREA IS POINTED TO BY A.
C05D: 10 FA BPL CLRFIL
;POINTER AT $BB...CHECK IF DIRECTORY L
OAD..C05F: A0 00 LDY #0
;CHECK THE MAIN FILENAME AREA.C06
1: B1 BB LDA (FNADR),Y ;
FOR THE ASCII CHARACTER $.C063: C9 24
CMP #'$' ;WHICH INDIC
ATES DIRECTORY LOAD..C065: F0 0C
BEQ DIRCT ;IF SO, THEN JUMP
TO DIRCT TO.
;DO A NORMAL C64 LOAD...M
OVE FILE NAME TO FILE AREA..C067: B1 BB
STFIL LDA (FNADR),Y ;IF ITS NO
T A DIRECTORY LOAD,.C069: 99 AC C3
STA FILE,Y ;THEN ITS A NORMAL
FILENAME.C06C: C8 INY
;SO MOVE IT TO OUR SECONDARY
.C06D: C4 B7 CPY FNLEN
;FILENAME AREA..C06F: 90 F6
BCC STFIL.C071: B0 05
BCS ZAP64 ;AND BRANCH TO FASTLOA
D ROUTINE..DIRECTORY LOAD OR VERIFY..C07
3: A5 93 DIRCT LDA VERCK ;
GET LOAD ($00) OR VERIFY ($01).C075: 4C
A5 F4 JMP LOAD64 ;FLAG A
ND JUMP TO NORMAL C64.
;LOAD ROUTINE..Z
AP LOADER 64..C078: 20 4C C1 ZAP64 J
SR DOWNL ;DOWNLOAD DRIVE PROGRAM
TO THE 1541.C07B: A5 BA LDA
FA ;GET CURRENT DEVICE (DRIVE
= 8).C07D: 20 B1 FF JSR LIS
TEN ;AND COMMAND IT TO LISTEN.C080:
A9 6F LDA #$6F ;GET
THE SECONDARY ADDRESS.C082: 20 93 FF
JSR SECOND ;AND COMMAND DR
IVE TO OPEN.
;THE COMMAND CHANNEL. SIMI
LAR IN.
;BASIC OF OPEN 15,8,15..C085: A
9 55 LDA #'U' ;TELL
DRIVE TO DO A UC COMMAND.C087: 20 A8 FF
JSR CIOUT ;WHICH IS TH
E COMMAND FOR THE DRIVE.C08A: A9 43
LDA #'C' ;TO JUMP TO TH
E PROGRAM AT $0500..C08C: 20 A8 FF
JSR CIOUT.C08F: 20 AE FF
JSR UNLSN ;COMMAND DRIVE TO UNL
ISTEN..PROCESS THE DATA..C092: 78
BEGIN SEI ;DISABLE INTE
RRUPTS.C093: A9 0B LDA #$
0B ;THIS BLANKS THE SCREEN FOR.C09
5: 8D 11 D0 STA VICCTR ;
FASTER PROCESSING..C098: 20 15 C1 PROCE
S JSR GTSECT ;GET A SECTOR OF TH
E FILE.C09B: 2C 00 C4 BIT BU
FFER ;CHECK FOR AN ERROR FLAG.
;SEN
T BY THE DRIVE TO INFORM.
;THE C64 THER
E WAS AN ERROR..C09E: 30 53
BMI ERROR1 ;ERROR DETECTED SO BRA
NCH...ON A BASIC LOAD COMMAND, THE START
OF BASIC ADDRESS ($0801) IS STORED IN.$
C3-$C4 FOR USE BY THE KERNEL LOAD ROUTIN
E...C0A0: A4 C3 LDY MEMUS
S ;GET THE NORMAL BASIC LOAD ADDR.C0
A2: A6 C4 LDX MEMUSS+1
;FOR A PROGRAM LOAD ($0801)..THIS CHECKS
WHETHER OR NOT THE PROGRAM SHOULD BE LO
ADED AT THE NORMAL LOAD.AREA, WHICH WOUL
D BE EQUIVALENT TO THE COMMAND LOAD"FILE
NAME",8 OR TO THE LOAD.AREA SPECIFIED IN
THE PROGRAM WHEN IT WAS SAVED, WHICH WO
ULD BE EQUIVALENT TO.THE COMMAND LOAD"FI
LENAME",8,1...C0A4: A5 B9 L
DA SA ;GET THE SECONDARY ADDRE
SS.C0A6: F0 06 BEQ PROCS1
;IF A ZERO, THEN JUMP AND LOAD.
;T
O BASIC AREA..C0A8: AC 02 C4 L
DY BUFFER+2 ;IF NOT, THEN LOAD AT AD
DRESS.
;SPECIFIED IN THE FIRST SECTOR.C
0AB: AE 03 C4 LDX BUFFER+3
;OF THE PROGRAM..C0AE: 84 AE PROCS1
STY EAL ;STORE THE PROGRAM L
OAD ADDRESS.C0B0: 86 AF STX
EAL+1 ;INTO EAL..C0B2: A2 04
LDX #4 ;SINCE THIS I
S THE FIRST SECTOR.
;OF THE PROGRAM, SK
IP THE TRACK.
;& SECTOR LINKS, AND THE
PROGRAM.
;LOAD ADDRESS..C0B4: AD 00 C4
LDA BUFFER ;MORE SECTORS
TO LOAD?.C0B7: F0 15 BEQ
CLOSE0 ;NO-THEN TRANSFER THE 1ST SE
CTOR.
;IN THE BUFFER TO THE PROGRAM.
;
STORAGE AREA AND END..C0B9: 20 FD C0
JSR XFER1 ;YES-TRANSFER TH
E 1ST SECTOR,.
;AND GET ANOTHER...C0BC:
20 15 C1 PROCS2 JSR GTSECT ;GE
T ANOTHER SECTOR OF THE PROGRAM.C0BF: AD
00 C4 LDA BUFFER ;WAS A
N ERROR ENCOUNTERED?.C0C2: 30 32
BMI ERROR2 ;YES-THEN BRANCH.
C0C4: F0 06 BEQ CLOSE
;WAS IT THE LAST SECTOR? YES.C0C6: 20
FB C0 JSR XFER ;NO-THE
N TRANSFER THE BUFFER TO.C0C9: 4C BC C0
JMP PROCS2 ;PROGRAM STOR
AGE & GET MORE SECTORS...C0CC: A2 02
CLOSE LDX #2 ;SKIP THE TRA
CK & SECTOR NUMBER OF.
;THE LAST SECTOR
..C0CE: A0 00 CLOSE0 LDY #0.C0D0
: BD 00 C4 CLOSE1 LDA BUFFER,X ;G
ET A DATA BYTE FROM THE BUFFER.C0D3: 91
AE STA (EAL),Y ;PUT IT
IN THE PROGRAM STORAGE AREA..C0D5: C8
INY ;INCREME
NT PROGRAM AREA POINTER.C0D6: E8
INX ;INCREMENT BYT
E COUNTER & BUFF PNTR.C0D7: EC 01 C4
CPX BUFFER+1 ;IS IT < NUMBER
OF BYTES TO READ.
;FROM THIS SECTOR. IN
THE LAST.
;SECTOR, THE SECOND BYTE TEL
LS YOU.
;HOW MANY BYTES ARE IN THIS SEC
TOR..C0DA: 90 F4 BCC CLOS
E1 ;IF < NUMBER OF BYTES, THEN GET M
ORE.C0DC: BD 00 C4 LDA BUFFE
R,X ;GET THE LAST BYTE.C0DF: 91 AE
STA (EAL),Y ;AND PUT IT T
HE PROGRAM STORAGE.C0E1: C8
INY ;INY SO IT POINTS T
O THE LAST BYTE+1.C0E2: 20 08 C1
JSR XFER3 ;INCREMENT PROGRAM P
OINTERS.C0E5 18 CLC
;CLEAR CARRY TO INDICATE NO ER
ROR.
;OCCURRED WHEN IT RETURNS TO THE.
;BASIC LOAD CONTINUATION AT $E178..C0E6
: 48 CLOSEX PHA ;S
AVE ERROR NUMBER-IF ERROR OCCURRED.C0E7:
A9 1B LDA #$1B ;RE
STORE SCREEN TO NORMAL.C0E9: 8D 11 D0
STA VICCTR.C0EC: 68
PLA ;RETRIEVE ERROR N
UMBER.C0ED: A6 AE LDX EAL
;THIS WILL SET THE BASIC RAM END
AT.C0EF: A4 AF LDY EAL+1
;$37-38 FOR THE END OF OUR PROGRAM
..C0F1: 58 CLI
;ENABLE INTERRUPTS.C0F2: 60
RTS ;AND RETURN TO
BASIC LOAD.
;CONTINUATION AT $E178...C0
F3: A9 04 ERROR1 LDA #4
;SETUP FOR '?FILE NOT FOUND ERROR'.C0F5:
2C DFB $2C.C0F6: A9 0
0 ERROR2 LDA #0 ;SETUP F
OR '?BREAK ERROR'.C0F8: 38
SEC ;FLAG FOR ERROR OCCU
RRED.C0F9: B0 EB BCS CLOS
EX ;AND JUMP TO END PROGRAM..C0FB: A
2 02 XFER LDX #2 ;SKIP
TRACK & SECTOR LINKS.C0FD: A0 00 XF
ER1 LDY #0.C0FF: BD 00 C4 XFER2
LDA BUFFER,X ;TRANSFER SECTOR IN BU
FFER AREA.C102: 91 AE STA
(EAL),Y ;TO PROGRAM STORAGE AREA..C1
04: C8 INY
;INC PROGRAM AREA POINTER.C105: E8
INX ;INC SECTOR
BUFFER POINTER.C106: D0 F7
BNE XFER2 ;IF MORE BYTES IN THE S
ECTOR, THEN.
;GET MORE..C108: 18
XFER3 CLC ;IF NOT, THEN
INCREMENT PROGRAM.C109: 98
TYA ;POINTER FOR ANOTHE
R SECTOR..C10A: 65 AE ADC
EAL.C10C: 85 AE STA EAL.
C10E: A5 AF LDA EAL+1.C11
0: 69 00 ADC #0.C112: 85
AF STA EAL+1.C114: 60
RTS..GET A SECTOR..C115: A0
00 GTSECT LDY #$00..RECEIVE A B
YTE FROM THE DRIVE..WAIT FOR DATA INPUT
LINE TO GO LOW. THE ZAP ROUTINE IN THE 1
541 CODE WILL.SET THE DATA OUTPUT BIT TO
A 1, AND THROUGH THE INVERSION WILL BE
DETECTED.HERE AS A LOW...C117: AD 00 DD
GTSCT1 LDA PORTA ;WAIT FOR BIT
7 OF PRA TO GO LOW.C11A: 30 FB
BMI GTSCT1 ;FROM DRIVE INDICA
TING DATA INPUT..PULL CLOCK OUTPUT LINE
LOW. NOTICE THAT BIT 4 OF THE FOLLOWING
BYTE IS HIGH,.BUT WITH THE INVERSION PUL
LS THE LINE LOW. THE ZAP01 ROUTINE IN TH
E 1541 IS.WAITING FOR THE CLOCK LINE TO
GO LOW...C11C: A9 17 RECV02 LDA
#%00010111.C11E: 8D 00 DD STA
PORTA..WAIT FOR THE DATA INPUT LINE TO
GO HIGH. THE CODE IN THE 1541 AT THE 2N
D PART.OF ZAP01 STORES 0 IN PB, AND THRO
UGH THE INVERSION CAUSES BOTH THE DATA A
ND.CLOCK INPUT LINES OF THE C64 TO GO HI
GH...C121: AD 00 DD RECV01 LDA PORT
A ;WAIT FOR DATA HIGH.C124: 10 FB
BPL RECV01..THE FOLLOWING
CODE SETS THE DATA AND CLOCK LINES HIGH,
SO THAT THEY ARE PRESET.BEFORE THE ACTU
AL DATA TRANSFER, AND TO ADD ABOUT A 6US
DELAY...C126: A9 07 LDA
#$07.C128: 8D 00 DD STA PORT
A..OK, NOW WE GET INTO SOME HEAVY STUFF
AGAIN. IN A NORMAL C64 SERIAL TRANSFER,.
THE CLOCK LINE IS USED TO TELL THE LISTE
NER (C64) THAT A BIT IS READY TO BE.SENT
, AND AFTER THE BIT HAS BEEN SENT, TELLS
THE C64 TO GET READY FOR ANOTHER.BIT. I
WON'T GO INTO EXACT DETAILS ON SERIAL I
/O TRANSFERS BECAUSE THAT COULD.TAKE UP
ALMOST A FULL BOOK BY ITSELF. BUT IF YOU
INTERESTED IN LEARNING MORE.ABOUT SERIA
L I/O, I HIGHLY RECOMMEND READING AN ART
ICLE BY THE GURU HIMSELF,.JIM BUTTERFIEL
D. THE NAME OF THE ARTICLE IS "HOW THE V
IC/64 SERIAL BUS WORKS",.AND APPEARED IN
THE JULY 1983 ISSUE OF COMPUTE! MAGAZIN
E. SO HOW DO WE KEEP.THE DRIVE AND COMPU
TER SYNCRONIZED SO THE C64 IS READY TO R
ECEIVE A BYTE AT.THE TIME THE 1541 IS SE
NDING IT? BY VERY CLOSE TIMING, THATS HO
W! THE DRIVE.SENDS ITS 2 BITS APPROXIMAT
ELY EVERY 30US, WHILE THE C64 RECEIVES A
ND PROCESSES.THE 2 BITS EVERY 30US. SO A
S DRIVE SENDS THE BITS, THE C64 IS READY
TO GET.THEM. SINCE YOU WANT TO MAKE SUR
E THAT THE 1541 HAS TIME TO SET THE CLOC
K AND.DATA LINES PROPERLY BEFORE THE C64
TRYS TO READ IT, WE HAVE TO GIVE THE C6
4 A.SLIGHT DELAY. SINCE IT TAKES THE 154
1 ABOUT 26 US BEFORE ITS 1ST 2 BITS ARE.
SENT, AND IF WE DIDN'T HAVE OUR 6US PRES
ET DELAY ABOVE AND THE 29US DELAY LOOP.B
ELOW, THE C64 WOULD TRY TO READ THE PORT
WITHIN 6US, SO IT WOULD GET INVALID.DAT
A. SO WE GIVE IT A LITTLE TIME BEFORE WE
READ THE PORT, USING OUR PRESET.DELAY,
THE DELAY LOOP BELOW, AND THE CYCLE DELA
Y FOR THE LDX #4 AND LDA PORTA,.TO COME
UP WITH APPROXIMATELY A 41US DELAY BEFOR
E THE A REGISTER CONTAINS OUR.1ST 2 BITS
. AFTER THE 1ST PASS, THE 1541 WRITE AND
THE C64 READ ROUTINE TAKES.ABOUT 30US E
ACH SO THE C64 WILL CONTINUE TO TRY AND
READ THE PORT ABOUT 15US.AFTER THE 1541
HAS WRITTEN THE 2 BITS TO THE PORT. TO T
RY AND MAKE IT A LITTLE.EASIER, BELOW IS
A GRAPH SHOWING THE 1ST 2 PASSES...C12B
: A2 04 LDX #$04 ;2
9US DELAY LOOP.C12D: CA RECV03
DEX.C12E: EA NOP.C12F: D
0 FC BNE RECV03..THIS IS
HOW IT WORKS FOLKS!!../...........26US..
......../.............30US............./
................. 1
541 WRITE 1541 WRITE
./...................41US...............
.../.............30US............./.
C64 R
EAD C64 READ..C131
: A2 04 LDX #4.C133: AD 0
0 DD RECV04 LDA PORTA ;DO THE
MATH AND KEEP THE.C136: 0A
ASL A ;TIMING RIGHT!.C137:
08 PHP.C138: 0A
ASL A.C139: 26 95
ROL BSOUR.C13B: 28 P
LP.C13C: 26 95 ROL BSOUR.
C13E: CA DEX.C13F: D0 F2
BNE RECV04 ;ALL 4 X
2 BITS SENT?-NO.C141: A5 95
LDA BSOUR ;YES-THEN WE NEED TO C
OMPLEMENT.C143: 49 FF EOR
#$FF ;OUR RECEIVED BYTE..C145: 99
00 C4 STA BUFFER,Y ;AND S
TORE IT IN THE BUFFER..C148: C8
INY.C149: D0 CC BNE
GTSCT1 ;COMPLETE SECTOR RECEIVED?
-NO.C14B: 60 RTS
;YES-THEN RETURN..****************
****************.*DOWNLOAD CODE TO 1541
DRIVE *.*
*.*SET UP, CHANGE FOR YOUR OWN *.*APP
LICATION. *.***********
*********************..C14C: A9 10 D
OWNL LDA #16 ;NUMBER OF 32 B
YTE PAGES TO MOVE.
;TO THE 1541 (16 * 3
2 = 512 BYTES).C14E: 85 FF
STA PAGE.C150: A9 00 LDA
#<$C200 ;LSB OF ADDRESS WHERE THE D
RIVE.
;PROGRAM IS STORED IN THE C64..C1
52: 85 FB STA TEMP.C154:
A9 C2 LDA #>$C200 ;MSB
OF ADDRESS OF THE DRIVE PROGRAM.C156: 8
5 FC STA TEMP+1.C158: A9
00 LDA #<$0500 ;PUT IT
IN 1541 STARTING $0500.C15A: 85 FD
STA TEMP1.C15C: A9 05
LDA #>$0500.C15E: 85 FE
STA TEMP1+1..C160: A5 BA LOAD
LDA FA ;GET ACTIVE DEVICE
(DRIVE = 8).C162: 20 B1 FF JS
R LISTEN ;AND COMMAND IT TO LISTEN
.C165: A9 6F LDA #$6F
;OPEN COMMAND CHANNEL (15).C167: 20 9
3 FF JSR SECOND.C16A: A5 FD
LDA TEMP1 ;PUT THE D
ESTINATION ADDRESS.C16C: A4 FE
LDY TEMP1+1 ;FOR OUR M-W COMMAN
D INTO.C16E: 8D B0 C1 STA MW
+3 ;THE MEMORY-WRITE STRING..C171:
8C B1 C1 STY MW+4.C174: A0
00 LDY #0.C176: B9 AD C1
LOOP LDA MW,Y ;SEND THE 'M-
W' COMMAND.C179: 20 A8 FF JSR
CIOUT ;TO THE DRIVE..C17C: C8
INY.C17D: C0 06
CPY #6.C17F: D0 F5 BNE
LOOP.C181: A0 00 LDY #0
0 ;NOW SEND 32 BYTES OF THE DRIVE
.C183: B1 FB LOOP1 LDA (TEMP),Y
;PROGRAM FROM THE C64 TO THE 1541..C1
85: 20 A8 FF JSR CIOUT.C188:
C8 INY.C189: C0 20
CPY #32.C18B: 90 F6
BCC LOOP1..ADJUST THE POINTERS..C1
8D: A5 FB LDA TEMP
;ADD 32 TO BOTH OUR TEMP AND TEMP1.C18F:
69 1F ADC #31 ;PO
INTERS SO THAT OUR M-W AND C64.C191: 85
FB STA TEMP ;DRIVE
PROGRAM ADDRESS IS INCREMENTED.C193: A5
FC LDA TEMP+1 ;TO OUR
NEXT 32 BYTE PAGE..C195: 69 00
ADC #0.C197: 85 FC S
TA TEMP+1.C199: A5 FD LDA
TEMP1.C19B: 69 20 ADC
#32.C19D: 85 FD STA TEMP1
.C19F: A5 FE LDA TEMP1+1.
C1A1: 69 00 ADC #0.C1A3:
85 FE STA TEMP1+1.C1A5: 2
0 AE FF JSR UNLSN.C1A8: C6 F
F DEC PAGE ;ALL 32
BYTE PAGES SENT?.C1AA: D0 B4
BNE LOAD ;NO-THEN GET MORE.C1A
C: 60 RTS ;
YES-THEN RETURN..C1AD: 4D 2D 57 MW
ASC 'M-W',00,00,20.C1B0: 00 00 20...
--END MERLIN-128 ASSEMBLY, 435 BYTES, ER
RORS: 0.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL