ADD-ON-MON.SRC
FILE INFORMATION
FILENAME(S): ADD-ON-MON.SRC
FILE TYPE(S): SEQ
FILE SIZE: 18.1K
FIRST SEEN: 2025-11-30 21:11:19
APPEARS ON: 1 disk(s)
FILE HASH
bde5ed3691859619d15e5128ad95b6f4600380a9d3102fc2a99f9b0f4f3d0eca
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| 13 MAART 83 15 | ADD-ON-MON.SRC | SEQ | DuncanTwain | 7 | 9 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |;***************| 00000010: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000020: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B 2A 20 20 20 |**********.;* | 00000030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000050: 20 20 20 20 2A 0D 3B 2A 20 20 41 41 41 20 20 44 | *.;* AAA D| 00000060: 44 44 44 20 20 44 44 44 44 20 20 20 20 20 20 20 |DDD DDDD | 00000070: 4F 4F 4F 20 20 4E 20 20 20 4E 20 20 20 20 20 2A |OOO N N *| 00000080: 0D 3B 2A 20 41 20 20 20 41 20 44 20 20 20 44 20 |.;* A A D D | 00000090: 44 20 20 20 44 20 20 20 20 20 4F 20 20 20 4F 20 |D D O O | 000000A0: 4E 4E 20 20 4E 20 20 20 20 20 2A 0D 3B 2A 20 41 |NN N *.;* A| 000000B0: 20 20 20 41 20 44 20 20 20 44 20 44 20 20 20 44 | A D D D D| 000000C0: 20 2A 2A 2A 20 4F 20 20 20 4F 20 4E 20 4E 20 4E | *** O O N N N| 000000D0: 20 20 20 20 20 2A 0D 3B 2A 20 41 41 41 41 41 20 | *.;* AAAAA | 000000E0: 44 20 20 20 44 20 44 20 20 20 44 20 2A 2A 2A 20 |D D D D *** | 000000F0: 4F 20 20 20 4F 20 4E 20 4E 20 4E 20 20 20 20 20 |O O N N N | 00000100: 2A 0D 3B 2A 20 41 20 20 20 41 20 44 20 20 20 44 |*.;* A A D D| 00000110: 20 44 20 20 20 44 20 20 20 20 20 4F 20 20 20 4F | D D O O| 00000120: 20 4E 20 20 4E 4E 20 20 20 20 20 2A 0D 3B 2A 20 | N NN *.;* | 00000130: 41 20 20 20 41 20 44 44 44 44 20 20 44 44 44 44 |A A DDDD DDDD| 00000140: 20 20 20 20 20 20 20 4F 4F 4F 20 20 4E 20 20 20 | OOO N | 00000150: 4E 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 |N *.;* | 00000160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000180: 20 2A 0D 3B 2A 20 20 20 20 20 20 20 4D 20 20 20 | *.;* M | 00000190: 4D 20 20 4F 4F 4F 20 20 4E 20 20 20 4E 20 20 20 |M OOO N N | 000001A0: 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A | *.;*| 000001B0: 20 20 20 20 20 20 20 4D 4D 20 4D 4D 20 4F 20 20 | MM MM O | 000001C0: 20 4F 20 4E 4E 20 20 4E 20 20 20 20 20 20 20 20 | O NN N | 000001D0: 20 20 20 20 20 20 20 2A 0D 3B 2A 20 20 2A 2A 2A | *.;* ***| 000001E0: 20 20 4D 20 4D 20 4D 20 4F 20 20 20 4F 20 4E 20 | M M M O O N | 000001F0: 4E 20 4E 20 20 20 20 20 20 20 20 20 20 20 20 20 |N N | 00000200: 20 20 2A 0D 3B 2A 20 20 2A 2A 2A 20 20 4D 20 20 | *.;* *** M | 00000210: 20 4D 20 4F 20 20 20 4F 20 4E 20 4E 20 4E 20 20 | M O O N N N | 00000220: 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B | *.;| 00000230: 2A 20 20 20 20 20 20 20 4D 20 20 20 4D 20 4F 20 |* M M O | 00000240: 20 20 4F 20 4E 20 20 4E 4E 20 20 20 20 20 20 20 | O N NN | 00000250: 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 | *.;* | 00000260: 20 20 20 4D 20 20 20 4D 20 20 4F 4F 4F 20 20 4E | M M OOO N| 00000270: 20 20 20 4E 20 20 20 20 20 20 20 20 20 20 20 20 | N | 00000280: 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 | *.;* | 00000290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000002A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D | *.| 000002B0: 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |;***************| 000002C0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000002D0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2E 53 4B 49 20 35 |*********..SKI 5| 000002E0: 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |.;**************| 000002F0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000300: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B 2A 20 20 |***********.;* | 00000310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000330: 20 20 20 20 20 2A 0D 3B 2A 20 20 36 34 4B 2D 41 | *.;* 64K-A| 00000340: 44 44 2D 4F 4E 20 4D 4F 4E 49 54 4F 52 20 20 20 |DD-ON MONITOR | 00000350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000360: 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 20 |*.;* | 00000370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000380: 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 | *.;* | 00000390: 20 54 48 49 53 20 50 52 4F 47 52 41 4D 20 41 4C | THIS PROGRAM AL| 000003A0: 4C 4F 57 53 20 41 20 55 53 45 52 20 54 4F 20 20 |LOWS A USER TO | 000003B0: 20 20 20 20 20 20 2A 0D 3B 2A 20 20 45 58 41 4D | *.;* EXAM| 000003C0: 49 4E 45 2C 20 4D 4F 44 49 46 59 2C 20 41 4E 44 |INE, MODIFY, AND| 000003D0: 20 52 55 4E 20 50 52 4F 47 52 41 4D 53 20 20 20 | RUN PROGRAMS | 000003E0: 20 2A 0D 3B 2A 20 20 57 49 54 48 20 42 52 45 41 | *.;* WITH BREA| 000003F0: 4B 50 4F 49 4E 54 53 20 49 4E 20 54 48 45 20 36 |KPOINTS IN THE 6| 00000400: 34 4B 20 41 44 44 2D 4F 4E 20 20 20 2A 0D 3B 2A |4K ADD-ON *.;*| 00000410: 20 20 4D 45 4D 4F 52 59 2E 20 20 49 54 20 49 53 | MEMORY. IT IS| 00000420: 20 46 55 4E 43 54 49 4F 4E 41 4C 4C 59 20 54 48 | FUNCTIONALLY TH| 00000430: 45 20 53 41 4D 45 20 2A 0D 3B 2A 20 20 41 53 20 |E SAME *.;* AS | 00000440: 54 48 45 20 43 42 4D 20 52 45 53 49 44 45 4E 54 |THE CBM RESIDENT| 00000450: 20 4D 4F 4E 49 54 4F 52 2E 20 20 20 20 20 20 20 | MONITOR. | 00000460: 20 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 | *.;* | 00000470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000480: 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B | *.;| 00000490: 2A 20 20 32 39 4A 41 4E 38 31 20 52 4A 46 20 20 |* 29JAN81 RJF | 000004A0: 20 20 20 20 20 20 20 32 39 4A 55 4C 38 31 20 52 | 29JUL81 R| 000004B0: 4A 46 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 |JF *.;* | 000004C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000004D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000004E0: 20 20 20 2A 0D 3B 2A 20 20 43 42 4D 20 50 41 52 | *.;* CBM PAR| 000004F0: 54 20 23 20 31 31 38 30 30 35 20 52 45 56 20 42 |T # 118005 REV B| 00000500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D | *.| 00000510: 3B 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |;* | 00000520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000530: 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 2A 2A 2A | *.;****| 00000540: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000550: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000560: 2A 2A 2A 2A 2A 0D 2E 50 41 47 0D 3B 0D 3B 56 49 |*****..PAG.;.;VI| 00000570: 52 54 55 41 4C 20 52 45 47 49 53 54 45 52 53 0D |RTUAL REGISTERS.| 00000580: 3B 0D 50 43 48 20 2A 3D 2A 2B 31 20 3B 50 52 4F |;.PCH *=*+1 ;PRO| 00000590: 47 52 41 4D 20 43 4F 55 4E 54 45 52 0D 50 43 4C |GRAM COUNTER.PCL| 000005A0: 20 2A 3D 2A 2B 31 0D 46 4C 47 53 20 2A 3D 2A 2B | *=*+1.FLGS *=*+| 000005B0: 31 20 3B 50 52 4F 43 45 53 53 4F 52 20 53 54 41 |1 ;PROCESSOR STA| 000005C0: 54 55 53 0D 41 43 43 20 2A 3D 2A 2B 31 20 3B 41 |TUS.ACC *=*+1 ;A| 000005D0: 43 43 55 4D 55 4C 41 54 4F 52 0D 58 52 20 2A 3D |CCUMULATOR.XR *=| 000005E0: 2A 2B 31 20 3B 58 20 49 4E 44 45 58 0D 59 52 20 |*+1 ;X INDEX.YR | 000005F0: 2A 3D 2A 2B 31 20 3B 59 20 49 4E 44 45 58 0D 53 |*=*+1 ;Y INDEX.S| 00000600: 50 20 2A 3D 2A 2B 31 20 3B 53 54 41 43 4B 20 50 |P *=*+1 ;STACK P| 00000610: 4F 49 4E 54 45 52 0D 49 4E 56 48 20 2A 3D 2A 2B |OINTER.INVH *=*+| 00000620: 31 20 3B 55 53 45 52 20 20 49 52 51 20 56 45 43 |1 ;USER IRQ VEC| 00000630: 54 4F 52 0D 49 4E 56 4C 20 2A 3D 2A 2B 31 0D 4D |TOR.INVL *=*+1.M| 00000640: 45 4D 4D 41 50 20 2A 3D 2A 2B 31 20 3B 41 44 44 |EMMAP *=*+1 ;ADD| 00000650: 2D 4F 4E 20 43 4F 4E 54 52 4F 4C 20 52 45 47 0D |-ON CONTROL REG.| 00000660: 3B 0D 3B 49 4E 44 49 52 45 43 54 20 50 4F 49 4E |;.;INDIRECT POIN| 00000670: 54 45 52 53 0D 3B 0D 53 54 41 4C 20 2A 3D 2A 2B |TERS.;.STAL *=*+| 00000680: 31 20 20 3B 53 41 56 45 20 53 54 4F 52 45 20 50 |1 ;SAVE STORE P| 00000690: 4F 49 4E 54 45 52 0D 53 54 41 48 20 2A 3D 2A 2B |OINTER.STAH *=*+| 000006A0: 31 0D 3B 0D 53 41 4C 20 2A 3D 2A 2B 31 20 3B 4C |1.;.SAL *=*+1 ;L| 000006B0: 4F 41 44 2F 53 41 56 45 20 53 54 41 52 54 0D 53 |OAD/SAVE START.S| 000006C0: 41 48 20 2A 3D 2A 2B 31 0D 3B 0D 45 41 4C 20 2A |AH *=*+1.;.EAL *| 000006D0: 3D 2A 2B 31 20 3B 4C 4F 41 44 2F 53 41 56 45 20 |=*+1 ;LOAD/SAVE | 000006E0: 45 4E 44 0D 45 41 48 20 2A 3D 2A 2B 31 0D 3B 0D |END.EAH *=*+1.;.| 000006F0: 54 4D 50 30 20 2A 3D 2A 2B 32 20 3B 4D 4F 4E 49 |TMP0 *=*+2 ;MONI| 00000700: 54 4F 52 20 49 4E 44 49 52 45 43 54 53 0D 3B 0D |TOR INDIRECTS.;.| 00000710: 54 4D 50 32 20 2A 3D 2A 2B 32 0D 3B 0D 3B 57 4F |TMP2 *=*+2.;.;WO| 00000720: 52 4B 49 4E 47 20 56 41 52 49 41 42 4C 45 53 0D |RKING VARIABLES.| 00000730: 3B 0D 54 4D 50 43 20 2A 3D 2A 2B 31 0D 53 41 56 |;.TMPC *=*+1.SAV| 00000740: 58 20 2A 3D 2A 2B 31 0D 57 52 41 50 20 2A 3D 2A |X *=*+1.WRAP *=*| 00000750: 2B 31 20 3B 57 52 41 50 20 46 4C 41 47 20 46 4F |+1 ;WRAP FLAG FO| 00000760: 52 20 44 49 53 50 4C 59 4D 0D 3B 0D 54 4D 50 41 |R DISPLYM.;.TMPA| 00000770: 20 2A 3D 2A 2B 31 20 3B 2E 41 20 53 41 56 45 20 | *=*+1 ;.A SAVE | 00000780: 46 4F 52 20 49 52 51 0D 54 4D 50 50 53 20 2A 3D |FOR IRQ.TMPPS *=| 00000790: 2A 2B 31 20 3B 2E 50 20 53 41 56 45 20 46 4F 52 |*+1 ;.P SAVE FOR| 000007A0: 20 49 52 51 0D 2E 50 41 47 0D 3B 2E 0D 43 49 4E | IRQ..PAG.;..CIN| 000007B0: 56 20 3D 24 39 30 0D 43 42 49 4E 56 20 3D 24 39 |V =$90.CBINV =$9| 000007C0: 32 0D 42 55 46 20 3D 24 32 30 30 0D 46 4E 41 44 |2.BUF =$200.FNAD| 000007D0: 52 20 3D 24 44 41 0D 46 4E 4C 45 4E 20 3D 24 44 |R =$DA.FNLEN =$D| 000007E0: 31 0D 43 52 20 3D 24 44 0D 42 41 44 20 3D 24 31 |1.CR =$D.BAD =$1| 000007F0: 30 30 0D 53 54 41 54 55 53 20 3D 24 39 36 0D 46 |00.STATUS =$96.F| 00000800: 41 20 3D 24 44 34 0D 53 41 20 3D 24 44 33 0D 52 |A =$D4.SA =$D3.R| 00000810: 43 4C 52 43 48 20 3D 24 46 32 41 36 0D 52 4C 49 |CLRCH =$F2A6.RLI| 00000820: 53 54 4E 20 3D 24 46 30 44 35 0D 52 53 45 43 4E |STN =$F0D5.RSECN| 00000830: 44 20 3D 24 46 31 34 33 0D 52 43 49 4F 55 54 20 |D =$F143.RCIOUT | 00000840: 3D 24 46 31 39 45 0D 52 55 4E 4C 53 4E 20 3D 24 |=$F19E.RUNLSN =$| 00000850: 46 31 42 39 0D 52 54 41 4C 4B 20 3D 24 46 30 44 |F1B9.RTALK =$F0D| 00000860: 32 0D 52 54 4B 53 41 20 3D 24 46 31 39 33 0D 52 |2.RTKSA =$F193.R| 00000870: 41 43 50 54 52 20 3D 24 46 31 43 30 0D 52 55 4E |ACPTR =$F1C0.RUN| 00000880: 54 4C 4B 20 3D 24 46 31 41 45 0D 52 4F 50 45 4E |TLK =$F1AE.ROPEN| 00000890: 49 20 3D 24 46 34 41 35 0D 53 54 4B 45 59 20 3D |I =$F4A5.STKEY =| 000008A0: 24 39 42 0D 4E 44 58 20 3D 24 39 45 0D 2E 50 41 |$9B.NDX =$9E..PA| 000008B0: 47 0D 3B 0D 2A 20 3D 31 30 32 34 0D 53 59 53 20 |G.;.* =1024.SYS | 000008C0: 3D 31 35 38 20 3B 42 41 53 49 43 20 54 4F 4B 45 |=158 ;BASIC TOKE| 000008D0: 4E 20 56 41 4C 55 45 0D 3B 0D 3B 45 4E 54 45 52 |N VALUE.;.;ENTER| 000008E0: 20 43 4F 4D 50 49 4C 45 44 20 42 41 53 49 43 20 | COMPILED BASIC | 000008F0: 54 45 58 54 0D 3B 0D 2E 42 59 54 20 30 0D 2E 57 |TEXT.;..BYT 0..W| 00000900: 4F 52 20 49 4E 49 54 2D 32 0D 2E 57 4F 52 20 24 |OR INIT-2..WOR $| 00000910: 31 30 0D 2E 42 59 54 20 53 59 53 0D 2E 42 59 54 |10..BYT SYS..BYT| 00000920: 20 27 28 31 30 33 39 29 27 2C 30 2C 30 2C 30 0D | '(1039)',0,0,0.| 00000930: 3B 0D 3B 49 4E 49 54 49 41 4C 49 5A 45 20 49 4E |;.;INITIALIZE IN| 00000940: 54 45 52 52 55 50 54 20 50 52 4F 43 45 53 53 0D |TERRUPT PROCESS.| 00000950: 3B 0D 49 4E 49 54 20 53 45 49 0D 4C 44 41 20 23 |;.INIT SEI.LDA #| 00000960: 25 31 30 30 30 30 30 30 30 0D 53 54 41 20 4D 45 |%10000000.STA ME| 00000970: 4D 4D 41 50 0D 53 54 41 20 24 46 46 46 30 0D 4A |MMAP.STA $FFF0.J| 00000980: 53 52 20 53 45 54 49 52 51 0D 4C 44 41 20 23 25 |SR SETIRQ.LDA #%| 00000990: 31 30 30 30 31 30 30 30 0D 53 54 41 20 24 46 46 |10001000.STA $FF| 000009A0: 46 30 0D 4A 53 52 20 53 45 54 49 52 51 0D 4C 44 |F0.JSR SETIRQ.LD| 000009B0: 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 24 46 46 |A MEMMAP.STA $FF| 000009C0: 46 30 0D 3B 0D 43 4C 49 0D 4A 4D 50 20 54 49 4D |F0.;.CLI.JMP TIM| 000009D0: 43 0D 2E 50 41 47 0D 53 45 54 49 52 51 20 4C 44 |C..PAG.SETIRQ LD| 000009E0: 41 20 23 3C 49 52 51 0D 53 54 41 20 24 46 46 46 |A #<IRQ.STA $FFF| 000009F0: 45 0D 4C 44 41 20 23 3E 49 52 51 0D 53 54 41 20 |E.LDA #>IRQ.STA | 00000A00: 24 46 46 46 46 0D 4C 44 41 20 23 3C 4E 4D 49 0D |$FFFF.LDA #<NMI.| 00000A10: 53 54 41 20 24 46 46 46 41 0D 4C 44 41 20 23 3E |STA $FFFA.LDA #>| 00000A20: 4E 4D 49 0D 53 54 41 20 24 46 46 46 42 0D 52 54 |NMI.STA $FFFB.RT| 00000A30: 53 0D 2E 53 4B 49 20 35 0D 3B 50 52 4F 43 45 53 |S..SKI 5.;PROCES| 00000A40: 53 20 49 52 51 0D 3B 0D 49 52 51 20 53 54 41 20 |S IRQ.;.IRQ STA | 00000A50: 54 4D 50 41 20 3B 50 52 45 53 45 52 56 45 20 2E |TMPA ;PRESERVE .| 00000A60: 41 0D 3B 0D 50 4C 41 0D 50 48 41 0D 53 54 41 20 |A.;.PLA.PHA.STA | 00000A70: 54 4D 50 50 53 0D 3B 0D 4C 44 41 20 23 25 30 30 |TMPPS.;.LDA #%00| 00000A80: 30 30 30 30 30 30 0D 53 54 41 20 24 46 46 46 30 |000000.STA $FFF0| 00000A90: 0D 3B 0D 3B 50 55 53 48 20 52 45 54 55 52 4E 20 |.;.;PUSH RETURN | 00000AA0: 46 52 4F 4D 20 49 4E 54 45 52 52 55 50 54 20 41 |FROM INTERRUPT A| 00000AB0: 44 44 52 45 53 53 0D 3B 0D 4C 44 41 20 23 3E 52 |DDRESS.;.LDA #>R| 00000AC0: 54 49 50 0D 50 48 41 0D 4C 44 41 20 23 3C 52 54 |TIP.PHA.LDA #<RT| 00000AD0: 49 50 0D 50 48 41 0D 3B 0D 4C 44 41 20 54 4D 50 |IP.PHA.;.LDA TMP| 00000AE0: 50 53 0D 50 48 41 20 3B 50 55 53 48 20 44 55 4D |PS.PHA ;PUSH DUM| 00000AF0: 4D 59 20 53 54 41 54 55 53 0D 3B 0D 4C 44 41 20 |MY STATUS.;.LDA | 00000B00: 54 4D 50 41 20 3B 52 45 53 54 4F 52 45 20 2E 41 |TMPA ;RESTORE .A| 00000B10: 0D 3B 0D 3B 47 4F 20 54 4F 20 52 4F 4D 20 49 52 |.;.;GO TO ROM IR| 00000B20: 51 20 53 45 52 56 49 43 45 0D 3B 0D 4A 4D 50 20 |Q SERVICE.;.JMP | 00000B30: 28 24 46 46 46 45 29 0D 2E 53 4B 49 20 35 0D 3B |($FFFE)..SKI 5.;| 00000B40: 50 52 4F 43 45 53 53 20 4E 4D 49 0D 3B 0D 3B 50 |PROCESS NMI.;.;P| 00000B50: 52 4F 43 45 53 53 20 4E 4D 49 0D 3B 0D 4E 4D 49 |ROCESS NMI.;.NMI| 00000B60: 20 53 54 41 20 54 4D 50 41 20 3B 50 52 45 53 45 | STA TMPA ;PRESE| 00000B70: 52 56 45 20 2E 41 0D 3B 0D 50 4C 41 0D 50 48 41 |RVE .A.;.PLA.PHA| 00000B80: 0D 53 54 41 20 54 4D 50 50 53 0D 3B 0D 3B 0D 4C |.STA TMPPS.;.;.L| 00000B90: 44 41 20 23 25 30 30 30 30 30 30 30 30 0D 53 54 |DA #%00000000.ST| 00000BA0: 41 20 24 46 46 46 30 0D 3B 0D 3B 50 55 53 48 20 |A $FFF0.;.;PUSH | 00000BB0: 52 45 54 55 52 4E 20 46 52 4F 4D 20 49 4E 54 45 |RETURN FROM INTE| 00000BC0: 52 52 55 50 54 20 41 44 44 52 45 53 53 0D 3B 0D |RRUPT ADDRESS.;.| 00000BD0: 4C 44 41 20 23 3E 52 54 49 50 0D 50 48 41 0D 4C |LDA #>RTIP.PHA.L| 00000BE0: 44 41 20 23 3C 52 54 49 50 0D 50 48 41 0D 3B 0D |DA #<RTIP.PHA.;.| 00000BF0: 4C 44 41 20 54 4D 50 50 53 0D 50 48 41 20 3B 50 |LDA TMPPS.PHA ;P| 00000C00: 55 53 48 20 44 55 4D 4D 59 20 53 54 41 54 55 53 |USH DUMMY STATUS| 00000C10: 0D 3B 0D 4C 44 41 20 54 4D 50 41 0D 3B 0D 3B 47 |.;.LDA TMPA.;.;G| 00000C20: 4F 20 54 4F 20 52 4F 4D 20 49 52 51 20 53 45 52 |O TO ROM IRQ SER| 00000C30: 56 49 43 45 0D 3B 0D 4A 4D 50 20 28 24 46 46 46 |VICE.;.JMP ($FFF| 00000C40: 41 29 0D 2E 53 4B 49 20 35 0D 3B 52 45 54 55 52 |A)..SKI 5.;RETUR| 00000C50: 4E 20 46 52 4F 4D 20 49 4E 54 45 52 52 55 50 54 |N FROM INTERRUPT| 00000C60: 20 50 52 4F 43 45 53 53 0D 3B 0D 52 54 49 50 20 | PROCESS.;.RTIP | 00000C70: 50 48 41 20 20 20 20 20 20 20 20 20 20 20 20 20 |PHA | 00000C80: 20 20 0D 3B 0D 3B 4D 41 50 20 42 41 43 4B 20 54 | .;.;MAP BACK T| 00000C90: 4F 20 4F 52 49 47 49 4E 41 4C 20 52 41 4D 0D 3B |O ORIGINAL RAM.;| 00000CA0: 0D 4C 44 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 |.LDA MEMMAP.STA | 00000CB0: 24 46 46 46 30 0D 3B 0D 3B 52 45 53 54 4F 52 45 |$FFF0.;.;RESTORE| 00000CC0: 20 4F 4C 44 20 2E 41 0D 3B 0D 50 4C 41 0D 3B 0D | OLD .A.;.PLA.;.| 00000CD0: 3B 42 41 43 4B 20 54 4F 20 55 53 45 52 0D 3B 0D |;BACK TO USER.;.| 00000CE0: 52 54 49 0D 2E 50 41 47 20 27 4D 4F 4E 49 54 4F |RTI..PAG 'MONITO| 00000CF0: 52 27 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |R'.;************| 00000D00: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000D10: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000D20: 2A 2A 2A 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 |****.;* | 00000D30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000D50: 20 20 20 20 20 2A 0D 3B 2A 20 4B 45 52 4E 41 4C | *.;* KERNAL| 00000D60: 20 4D 4F 4E 49 54 4F 52 20 20 20 20 20 20 20 20 | MONITOR | 00000D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000D80: 20 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 | *.;* | 00000D90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000DA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000DB0: 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 45 4E | *.;* EN| 00000DC0: 54 52 59 20 56 49 41 20 43 41 4C 4C 20 28 4A 4D |TRY VIA CALL (JM| 00000DD0: 50 29 20 4F 52 20 42 52 45 41 4B 50 4F 49 4E 54 |P) OR BREAKPOINT| 00000DE0: 20 28 42 52 4B 29 20 20 20 20 20 2A 0D 3B 2A 20 | (BRK) *.;* | 00000DF0: 2D 2D 2D 46 55 4E 43 54 49 4F 4E 53 2D 2D 2D 20 |---FUNCTIONS--- | 00000E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000E10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B | *.;| 00000E20: 2A 20 3C 3A 3E 20 20 20 20 20 20 41 4C 54 45 52 |* <:> ALTER| 00000E30: 20 4D 45 4D 4F 52 59 20 20 20 20 20 20 20 20 20 | MEMORY | 00000E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A | *| 00000E50: 0D 3B 2A 20 3C 3B 3E 20 20 20 20 20 20 41 4C 54 |.;* <;> ALT| 00000E60: 45 52 20 52 45 47 49 53 54 45 52 53 20 20 20 20 |ER REGISTERS | 00000E70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000E80: 20 2A 0D 3B 2A 20 3C 52 3E 20 20 20 20 20 20 44 | *.;* <R> D| 00000E90: 49 53 50 4C 41 59 20 52 45 47 49 53 54 45 52 53 |ISPLAY REGISTERS| 00000EA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000EB0: 20 20 20 2A 0D 3B 2A 20 3C 4D 3E 20 20 20 20 20 | *.;* <M> | 00000EC0: 20 44 49 53 50 4C 41 59 20 4D 45 4D 4F 52 59 20 | DISPLAY MEMORY | 00000ED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000EE0: 20 20 20 20 20 2A 0D 3B 2A 20 3C 47 3E 20 20 20 | *.;* <G> | 00000EF0: 20 20 20 53 54 41 52 54 20 45 58 45 43 55 54 49 | START EXECUTI| 00000F00: 4F 4E 20 4F 46 20 43 4F 44 45 20 20 20 20 20 20 |ON OF CODE | 00000F10: 20 20 20 20 20 20 20 2A 0D 3B 2A 20 3C 4C 3E 20 | *.;* <L> | 00000F20: 20 20 20 20 20 4C 4F 41 44 20 4D 45 4D 4F 52 59 | LOAD MEMORY| 00000F30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000F40: 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 3C 53 | *.;* <S| 00000F50: 3E 20 20 20 20 20 20 53 41 56 45 20 4D 45 4D 4F |> SAVE MEMO| 00000F60: 52 59 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |RY | 00000F70: 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 | *.;* | 00000F80: 3C 40 3E 20 20 20 20 20 20 44 49 53 4B 20 43 4F |<@> DISK CO| 00000F90: 4D 4D 41 4E 44 20 20 20 20 20 20 20 20 20 20 20 |MMAND | 00000FA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B | *.;| 00000FB0: 2A 20 3C 2A 3E 20 20 20 20 20 20 41 44 44 2D 4F |* <*> ADD-O| 00000FC0: 4E 20 43 4F 4E 54 52 4F 4C 20 52 45 47 49 53 54 |N CONTROL REGIST| 00000FD0: 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20 2A |ER *| 00000FE0: 0D 3B 2A 20 3C 4F 54 48 45 52 3E 20 20 4C 4F 41 |.;* <OTHER> LOA| 00000FF0: 44 20 41 4E 44 20 45 58 45 43 55 54 45 20 46 52 |D AND EXECUTE FR| 00001000: 4F 4D 20 44 49 53 4B 20 20 20 20 20 20 20 20 20 |OM DISK | 00001010: 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 | *.;* | 00001020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001040: 20 20 20 2A 0D 3B 2A 20 46 4F 52 20 53 59 4E 54 | *.;* FOR SYNT| 00001050: 41 58 20 26 20 53 45 4D 41 4E 54 49 43 53 20 53 |AX & SEMANTICS S| 00001060: 45 45 20 43 42 4D 20 4B 45 52 4E 41 4C 20 4D 41 |EE CBM KERNAL MA| 00001070: 4E 55 41 4C 20 2A 0D 3B 2A 20 43 4F 50 59 52 49 |NUAL *.;* COPYRI| 00001080: 47 48 54 20 28 43 29 20 31 39 38 30 20 42 59 20 |GHT (C) 1980 BY | 00001090: 43 42 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 |CBM | 000010A0: 20 20 20 20 20 20 20 2A 0D 3B 2A 2A 2A 2A 2A 2A | *.;******| 000010B0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000010C0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000010D0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2E 50 41 47 20 |**********..PAG | 000010E0: 27 4D 4F 4E 49 54 4F 52 27 0D 3B 2A 2A 2A 2A 2A |'MONITOR'.;*****| 000010F0: 43 41 4C 4C 20 45 4E 54 52 59 2A 2A 2A 2A 2A 0D |CALL ENTRY*****.| 00001100: 3B 0D 54 49 4D 43 0D 4C 44 41 20 23 3C 54 49 4D |;.TIMC.LDA #<TIM| 00001110: 42 0D 53 54 41 20 43 42 49 4E 56 0D 4C 44 41 20 |B.STA CBINV.LDA | 00001120: 23 3E 54 49 4D 42 0D 53 54 41 20 43 42 49 4E 56 |#>TIMB.STA CBINV| 00001130: 2B 31 0D 4C 44 41 20 23 4D 53 33 34 2D 4D 53 31 |+1.LDA #MS34-MS1| 00001140: 20 3B 43 41 4C 4C 20 45 4E 54 52 59 0D 53 54 41 | ;CALL ENTRY.STA| 00001150: 20 54 4D 50 43 0D 42 4E 45 20 42 33 20 3B 42 52 | TMPC.BNE B3 ;BR| 00001160: 41 4E 43 48 20 41 4C 57 41 59 53 0D 3B 0D 3B 2A |ANCH ALWAYS.;.;*| 00001170: 2A 2A 2A 2A 42 52 45 41 4B 20 45 4E 54 52 59 2A |****BREAK ENTRY*| 00001180: 2A 2A 2A 2A 0D 3B 0D 54 49 4D 42 20 4A 53 52 20 |****.;.TIMB JSR | 00001190: 43 4C 52 43 48 20 3B 43 4C 52 20 43 48 41 4E 4E |CLRCH ;CLR CHANN| 000011A0: 45 4C 53 0D 4C 44 41 20 23 4D 53 33 36 2D 4D 53 |ELS.LDA #MS36-MS| 000011B0: 31 20 3B 42 52 45 41 4B 20 45 4E 54 52 59 0D 53 |1 ;BREAK ENTRY.S| 000011C0: 54 41 20 54 4D 50 43 0D 43 4C 44 20 0D 3B 0D 3B |TA TMPC.CLD .;.;| 000011D0: 53 41 56 45 20 2E 59 2C 2E 58 2C 2E 41 2C 46 4C |SAVE .Y,.X,.A,FL| 000011E0: 41 47 53 2C 20 41 4E 44 20 50 43 0D 3B 0D 4C 44 |AGS, AND PC.;.LD| 000011F0: 58 20 23 35 0D 42 31 20 50 4C 41 0D 53 54 41 20 |X #5.B1 PLA.STA | 00001200: 50 43 48 2C 58 0D 44 45 58 0D 42 50 4C 20 42 31 |PCH,X.DEX.BPL B1| 00001210: 0D 3B 0D 42 33 20 4C 44 41 20 43 49 4E 56 0D 53 |.;.B3 LDA CINV.S| 00001220: 54 41 20 49 4E 56 4C 20 3B 53 41 56 45 20 49 52 |TA INVL ;SAVE IR| 00001230: 51 20 4C 4F 57 0D 4C 44 41 20 43 49 4E 56 2B 31 |Q LOW.LDA CINV+1| 00001240: 0D 53 54 41 20 49 4E 56 48 20 3B 53 41 56 45 20 |.STA INVH ;SAVE | 00001250: 49 52 51 20 48 49 47 48 0D 3B 0D 54 53 58 0D 53 |IRQ HIGH.;.TSX.S| 00001260: 54 58 20 53 50 20 3B 53 41 56 45 20 4F 52 49 47 |TX SP ;SAVE ORIG| 00001270: 49 4E 41 4C 20 53 50 0D 43 4C 49 20 3B 43 4C 45 |INAL SP.CLI ;CLE| 00001280: 41 52 20 49 4E 54 53 0D 3B 0D 42 35 20 4C 44 59 |AR INTS.;.B5 LDY| 00001290: 20 54 4D 50 43 20 3B 4D 45 53 53 41 47 45 20 43 | TMPC ;MESSAGE C| 000012A0: 4F 44 45 0D 4A 53 52 20 4D 53 47 20 3B 50 52 49 |ODE.JSR MSG ;PRI| 000012B0: 4E 54 20 42 52 45 41 4B 2F 43 41 4C 4C 0D 3B 0D |NT BREAK/CALL.;.| 000012C0: 4C 44 41 20 23 27 52 20 3B 44 49 53 50 4C 41 59 |LDA #'R ;DISPLAY| 000012D0: 20 52 45 47 53 20 4F 4E 20 45 4E 54 52 59 0D 42 | REGS ON ENTRY.B| 000012E0: 4E 45 20 53 30 20 3B 42 52 41 4E 43 48 20 41 4C |NE S0 ;BRANCH AL| 000012F0: 57 41 59 53 0D 3B 0D 3B 2A 2A 2A 2A 2A 45 52 52 |WAYS.;.;*****ERR| 00001300: 4F 52 20 45 4E 54 52 59 2A 2A 2A 2A 2A 0D 3B 0D |OR ENTRY*****.;.| 00001310: 45 52 52 4F 50 52 20 4A 53 52 20 4F 55 54 51 53 |ERROPR JSR OUTQS| 00001320: 54 0D 50 4C 41 0D 50 4C 41 0D 3B 0D 3B 2A 2A 2A |T.PLA.PLA.;.;***| 00001330: 2A 2A 43 4F 4D 4D 41 4E 44 20 49 4E 54 45 52 50 |**COMMAND INTERP| 00001340: 52 45 54 45 52 20 45 4E 54 52 59 2A 2A 2A 2A 2A |RETER ENTRY*****| 00001350: 0D 3B 0D 53 54 52 54 4D 31 3D 2A 2D 31 0D 4C 44 |.;.STRTM1=*-1.LD| 00001360: 58 20 23 3C 42 55 46 20 20 3B 50 4C 41 43 45 20 |X #<BUF ;PLACE | 00001370: 54 4F 20 50 55 54 20 46 49 4C 45 20 4E 41 4D 45 |TO PUT FILE NAME| 00001380: 0D 4C 44 59 20 23 3E 42 55 46 0D 53 54 58 20 46 |.LDY #>BUF.STX F| 00001390: 4E 41 44 52 0D 53 54 59 20 46 4E 41 44 52 2B 31 |NADR.STY FNADR+1| 000013A0: 0D 4A 53 52 20 43 52 4C 46 0D 3B 0D 53 54 31 20 |.JSR CRLF.;.ST1 | 000013B0: 4A 53 52 20 42 41 53 49 4E 20 3B 52 45 41 44 20 |JSR BASIN ;READ | 000013C0: 43 4F 4D 4D 41 4E 44 0D 43 4D 50 20 23 24 32 30 |COMMAND.CMP #$20| 000013D0: 0D 42 45 51 20 53 54 31 20 3B 53 50 41 4E 20 42 |.BEQ ST1 ;SPAN B| 000013E0: 4C 41 4E 4B 53 0D 3B 0D 3B 43 4F 4D 4D 41 4E 44 |LANKS.;.;COMMAND| 000013F0: 20 49 4E 54 45 52 50 52 45 54 45 52 0D 3B 0D 53 | INTERPRETER.;.S| 00001400: 30 20 4C 44 58 20 23 30 0D 53 54 58 20 57 52 41 |0 LDX #0.STX WRA| 00001410: 50 0D 53 54 58 20 46 4E 4C 45 4E 0D 54 41 59 20 |P.STX FNLEN.TAY | 00001420: 3B 53 41 56 45 20 43 55 52 52 45 4E 54 20 43 4F |;SAVE CURRENT CO| 00001430: 4D 4D 41 4E 44 0D 3B 0D 3B 50 55 54 20 52 45 54 |MMAND.;.;PUT RET| 00001440: 55 52 4E 20 41 44 44 52 45 53 53 20 46 4F 52 20 |URN ADDRESS FOR | 00001450: 43 4F 4D 4D 41 4E 44 53 20 4F 4E 20 53 54 41 43 |COMMANDS ON STAC| 00001460: 4B 0D 3B 0D 4C 44 41 20 23 3E 53 54 52 54 4D 31 |K.;.LDA #>STRTM1| 00001470: 0D 50 48 41 0D 4C 44 41 20 23 3C 53 54 52 54 4D |.PHA.LDA #<STRTM| 00001480: 31 0D 50 48 41 0D 3B 0D 54 59 41 20 3B 43 55 52 |1.PHA.;.TYA ;CUR| 00001490: 52 45 4E 54 20 43 4F 4D 4D 41 4E 44 20 49 4E 20 |RENT COMMAND IN | 000014A0: 2E 41 0D 3B 0D 53 31 20 43 4D 50 20 43 4D 44 53 |.A.;.S1 CMP CMDS| 000014B0: 2C 58 20 20 3B 49 53 20 49 54 20 54 48 49 53 20 |,X ;IS IT THIS | 000014C0: 4F 4E 45 3F 0D 42 4E 45 20 53 32 20 3B 4E 4F 54 |ONE?.BNE S2 ;NOT| 000014D0: 49 54 0D 3B 0D 53 54 41 20 53 41 56 58 20 3B 53 |IT.;.STA SAVX ;S| 000014E0: 41 56 45 20 43 55 52 52 45 4E 54 20 43 4F 4D 4D |AVE CURRENT COMM| 000014F0: 41 4E 44 0D 3B 0D 3B 49 4E 44 49 52 45 43 54 20 |AND.;.;INDIRECT | 00001500: 4A 4D 50 20 46 52 4F 4D 20 54 41 42 4C 45 0D 3B |JMP FROM TABLE.;| 00001510: 0D 4C 44 41 20 43 4D 44 53 2B 31 2C 58 0D 53 54 |.LDA CMDS+1,X.ST| 00001520: 41 20 54 4D 50 30 0D 4C 44 41 20 43 4D 44 53 2B |A TMP0.LDA CMDS+| 00001530: 32 2C 58 0D 53 54 41 20 54 4D 50 30 2B 31 0D 4A |2,X.STA TMP0+1.J| 00001540: 4D 50 20 28 54 4D 50 30 29 0D 3B 0D 3B 45 41 43 |MP (TMP0).;.;EAC| 00001550: 48 20 54 41 42 4C 45 20 45 4E 54 52 59 20 49 53 |H TABLE ENTRY IS| 00001560: 20 33 20 4C 4F 4E 47 2D 2D 2D 53 4B 49 50 20 54 | 3 LONG---SKIP T| 00001570: 4F 20 4E 45 58 54 0D 3B 0D 53 32 20 49 4E 58 0D |O NEXT.;.S2 INX.| 00001580: 49 4E 58 0D 49 4E 58 0D 43 50 58 20 23 43 4D 44 |INX.INX.CPX #CMD| 00001590: 45 4E 44 2D 43 4D 44 53 0D 42 43 43 20 53 31 20 |END-CMDS.BCC S1 | 000015A0: 3B 4C 4F 4F 50 20 46 4F 52 20 41 4C 4C 20 43 4F |;LOOP FOR ALL CO| 000015B0: 4D 4D 41 4E 44 53 0D 3B 0D 3B 43 4F 4D 4D 41 4E |MMANDS.;.;COMMAN| 000015C0: 44 20 4E 4F 54 20 49 4E 20 54 41 42 4C 45 2E 2E |D NOT IN TABLE..| 000015D0: 2E 4C 4F 4F 4B 20 4F 4E 20 44 49 53 4B 2E 0D 3B |.LOOK ON DISK..;| 000015E0: 43 4F 4D 4D 41 4E 44 20 4E 41 4D 45 20 43 41 4E |COMMAND NAME CAN| 000015F0: 20 42 45 20 41 4E 59 20 4C 45 4E 47 54 48 20 41 | BE ANY LENGTH A| 00001600: 4E 44 0D 3B 48 41 56 45 20 50 41 52 41 4D 45 54 |ND.;HAVE PARAMET| 00001610: 45 52 53 2E 0D 3B 0D 4C 44 58 20 23 30 20 3B 4C |ERS..;.LDX #0 ;L| 00001620: 45 4E 47 54 48 20 54 4F 20 5A 45 52 4F 0D 53 33 |ENGTH TO ZERO.S3| 00001630: 20 43 4D 50 20 23 24 44 20 3B 45 4E 44 20 4F 46 | CMP #$D ;END OF| 00001640: 20 4E 41 4D 45 3F 0D 42 45 51 20 53 34 20 3B 59 | NAME?.BEQ S4 ;Y| 00001650: 45 53 2E 2E 2E 0D 43 4D 50 20 23 24 32 30 20 3B |ES....CMP #$20 ;| 00001660: 42 4C 41 4E 4B 3F 0D 42 45 51 20 53 34 20 3B 59 |BLANK?.BEQ S4 ;Y| 00001670: 45 53 0D 53 54 41 20 42 55 46 2C 58 0D 4A 53 52 |ES.STA BUF,X.JSR| 00001680: 20 42 41 53 49 4E 20 3B 47 45 54 20 4E 45 58 54 | BASIN ;GET NEXT| 00001690: 0D 49 4E 58 20 3B 43 4F 55 4E 54 20 43 48 41 52 |.INX ;COUNT CHAR| 000016A0: 0D 42 4E 45 20 53 33 20 3B 41 4E 44 20 43 4F 4E |.BNE S3 ;AND CON| 000016B0: 54 49 4E 55 45 0D 3B 0D 53 34 20 53 54 41 20 54 |TINUE.;.S4 STA T| 000016C0: 4D 50 43 0D 54 58 41 20 3B 43 4F 55 4E 54 0D 42 |MPC.TXA ;COUNT.B| 000016D0: 45 51 20 53 36 20 3B 49 53 20 5A 45 52 4F 0D 3B |EQ S6 ;IS ZERO.;| 000016E0: 0D 53 54 41 20 46 4E 4C 45 4E 0D 4C 44 41 20 23 |.STA FNLEN.LDA #| 000016F0: 38 0D 53 54 41 20 46 41 20 3B 57 49 4C 4C 20 55 |8.STA FA ;WILL U| 00001700: 53 45 20 44 45 56 49 43 45 20 23 38 0D 4A 53 52 |SE DEVICE #8.JSR| 00001710: 20 4C 4F 41 44 20 3B 54 52 59 20 54 4F 20 4C 4F | LOAD ;TRY TO LO| 00001720: 41 44 20 43 4F 4D 4D 41 4E 44 0D 42 43 53 20 53 |AD COMMAND.BCS S| 00001730: 36 20 3B 42 41 44 20 4C 4F 41 44 2E 2E 2E 0D 3B |6 ;BAD LOAD....;| 00001740: 0D 4C 44 41 20 54 4D 50 43 20 3B 50 41 53 53 20 |.LDA TMPC ;PASS | 00001750: 4C 41 53 54 20 43 48 41 52 41 43 54 45 52 0D 4A |LAST CHARACTER.J| 00001760: 4D 50 20 28 53 54 41 4C 29 20 3B 47 4F 20 44 4F |MP (STAL) ;GO DO| 00001770: 20 49 54 0D 3B 0D 53 36 20 52 54 53 0D 2E 53 4B | IT.;.S6 RTS..SK| 00001780: 49 20 33 0D 43 4D 44 53 20 2E 42 59 54 20 27 3A |I 3.CMDS .BYT ':| 00001790: 27 20 3B 41 4C 54 45 52 20 4D 45 4D 4F 52 59 0D |' ;ALTER MEMORY.| 000017A0: 2E 57 4F 52 20 41 4C 54 4D 0D 2E 42 59 54 20 27 |.WOR ALTM..BYT '| 000017B0: 3B 27 20 3B 41 4C 54 45 52 20 52 45 47 49 53 54 |;' ;ALTER REGIST| 000017C0: 45 52 53 0D 2E 57 4F 52 20 41 4C 54 52 0D 2E 42 |ERS..WOR ALTR..B| 000017D0: 59 54 20 27 52 27 20 3B 44 49 53 50 4C 41 59 20 |YT 'R' ;DISPLAY | 000017E0: 52 45 47 49 53 54 45 52 53 0D 2E 57 4F 52 20 44 |REGISTERS..WOR D| 000017F0: 53 50 4C 59 52 0D 2E 42 59 54 20 27 4D 27 20 3B |SPLYR..BYT 'M' ;| 00001800: 44 49 53 50 4C 41 59 20 4D 45 4D 4F 52 59 0D 2E |DISPLAY MEMORY..| 00001810: 57 4F 52 20 44 53 50 4C 59 4D 0D 2E 42 59 54 20 |WOR DSPLYM..BYT | 00001820: 27 47 27 20 3B 53 54 41 52 54 20 45 58 45 43 55 |'G' ;START EXECU| 00001830: 54 49 4F 4E 0D 2E 57 4F 52 20 47 4F 0D 2E 42 59 |TION..WOR GO..BY| 00001840: 54 20 27 4C 27 20 3B 4C 4F 41 44 20 4D 45 4D 4F |T 'L' ;LOAD MEMO| 00001850: 52 59 0D 2E 57 4F 52 20 4C 44 0D 2E 42 59 54 20 |RY..WOR LD..BYT | 00001860: 27 53 27 20 3B 53 41 56 45 20 4D 45 4D 4F 52 59 |'S' ;SAVE MEMORY| 00001870: 0D 2E 57 4F 52 20 4C 44 0D 2E 42 59 54 20 27 2A |..WOR LD..BYT '*| 00001880: 27 20 3B 4D 41 50 20 4D 45 4D 4F 52 59 0D 2E 57 |' ;MAP MEMORY..W| 00001890: 4F 52 20 4D 41 50 50 45 52 0D 2E 42 59 54 20 27 |OR MAPPER..BYT '| 000018A0: 40 27 20 3B 44 49 53 4B 20 43 4F 4D 4D 41 4E 44 |@' ;DISK COMMAND| 000018B0: 20 28 41 4C 54 45 52 4E 41 54 45 29 0D 2E 57 4F | (ALTERNATE)..WO| 000018C0: 52 20 44 49 53 4B 0D 43 4D 44 45 4E 44 0D 2E 53 |R DISK.CMDEND..S| 000018D0: 4B 49 20 35 0D 50 55 54 50 20 4C 44 41 20 54 4D |KI 5.PUTP LDA TM| 000018E0: 50 30 20 3B 4D 4F 56 45 20 54 4D 50 30 20 54 4F |P0 ;MOVE TMP0 TO| 000018F0: 20 50 43 48 2C 50 43 4C 0D 53 54 41 20 50 43 4C | PCH,PCL.STA PCL| 00001900: 0D 4C 44 41 20 54 4D 50 30 2B 31 0D 53 54 41 20 |.LDA TMP0+1.STA | 00001910: 50 43 48 0D 52 54 53 0D 2E 53 4B 49 20 35 0D 53 |PCH.RTS..SKI 5.S| 00001920: 45 54 52 20 4C 44 41 20 23 3C 46 4C 47 53 20 3B |ETR LDA #<FLGS ;| 00001930: 53 45 54 20 54 4F 20 41 43 43 45 53 53 20 52 45 |SET TO ACCESS RE| 00001940: 47 53 0D 53 54 41 20 54 4D 50 30 0D 4C 44 41 20 |GS.STA TMP0.LDA | 00001950: 23 3E 46 4C 47 53 0D 53 54 41 20 54 4D 50 30 2B |#>FLGS.STA TMP0+| 00001960: 31 0D 4C 44 41 20 23 35 0D 52 54 53 0D 2E 53 4B |1.LDA #5.RTS..SK| 00001970: 49 20 35 0D 3B 50 52 49 4E 54 53 20 27 3A 27 20 |I 5.;PRINTS ':' | 00001980: 4F 52 20 27 3B 27 20 42 45 46 4F 52 45 20 44 41 |OR ';' BEFORE DA| 00001990: 54 41 20 54 4F 20 50 45 52 4D 49 54 0D 3B 41 4C |TA TO PERMIT.;AL| 000019A0: 54 45 52 20 41 46 54 45 52 20 27 4D 27 20 4F 52 |TER AFTER 'M' OR| 000019B0: 20 27 52 27 20 43 4F 4D 4D 41 4E 44 0D 3B 0D 41 | 'R' COMMAND.;.A| 000019C0: 4C 54 52 49 54 20 50 48 41 20 3B 50 52 45 53 45 |LTRIT PHA ;PRESE| 000019D0: 52 56 45 20 41 4C 54 45 52 20 43 48 41 52 41 43 |RVE ALTER CHARAC| 000019E0: 54 45 52 0D 4A 53 52 20 43 52 4C 46 0D 50 4C 41 |TER.JSR CRLF.PLA| 000019F0: 0D 4A 53 52 20 42 53 4F 55 54 0D 2E 53 4B 49 20 |.JSR BSOUT..SKI | 00001A00: 33 0D 53 50 41 43 45 20 4C 44 41 20 23 24 32 30 |3.SPACE LDA #$20| 00001A10: 20 3B 4F 55 54 50 55 54 20 41 20 53 50 41 43 45 | ;OUTPUT A SPACE| 00001A20: 0D 2E 42 59 54 20 24 32 43 20 3B 53 4B 49 50 20 |..BYT $2C ;SKIP | 00001A30: 54 57 4F 20 42 59 54 45 53 0D 4F 55 54 51 53 54 |TWO BYTES.OUTQST| 00001A40: 20 4C 44 41 20 23 27 3F 20 3B 4F 55 54 50 55 54 | LDA #'? ;OUTPUT| 00001A50: 20 51 55 45 53 54 49 4F 4E 0D 2E 42 59 54 20 24 | QUESTION..BYT $| 00001A60: 32 43 20 3B 53 4B 49 50 20 54 57 4F 20 42 59 54 |2C ;SKIP TWO BYT| 00001A70: 45 53 0D 43 52 4C 46 20 4C 44 41 20 23 24 44 20 |ES.CRLF LDA #$D | 00001A80: 3B 44 4F 20 43 41 52 52 49 41 47 45 20 52 45 54 |;DO CARRIAGE RET| 00001A90: 55 52 4E 0D 4A 4D 50 20 42 53 4F 55 54 0D 2E 53 |URN.JMP BSOUT..S| 00001AA0: 4B 49 20 35 0D 3B 44 41 54 41 20 46 4F 52 20 52 |KI 5.;DATA FOR R| 00001AB0: 45 47 49 53 54 45 52 20 44 49 53 50 4C 41 59 20 |EGISTER DISPLAY | 00001AC0: 48 45 41 44 49 4E 47 0D 3B 0D 52 45 47 4B 20 2E |HEADING.;.REGK .| 00001AD0: 42 59 54 20 43 52 2C 24 32 30 2C 24 32 30 20 3B |BYT CR,$20,$20 ;| 00001AE0: 33 20 53 50 41 43 45 53 0D 2E 42 59 54 20 27 20 |3 SPACES..BYT ' | 00001AF0: 50 43 20 27 2C 27 20 49 52 51 20 27 2C 27 20 53 |PC ',' IRQ ',' S| 00001B00: 52 20 41 43 20 58 52 20 59 52 20 53 50 27 0D 2E |R AC XR YR SP'..| 00001B10: 53 4B 49 20 35 0D 3B 44 49 53 50 4C 41 59 20 52 |SKI 5.;DISPLAY R| 00001B20: 45 47 49 53 54 45 52 20 46 55 4E 43 54 49 4F 4E |EGISTER FUNCTION| 00001B30: 0D 3B 0D 44 53 50 4C 59 52 20 4C 44 58 20 23 30 |.;.DSPLYR LDX #0| 00001B40: 0D 44 32 20 4C 44 41 20 52 45 47 4B 2C 58 0D 4A |.D2 LDA REGK,X.J| 00001B50: 53 52 20 42 53 4F 55 54 20 3B 50 52 49 4E 54 20 |SR BSOUT ;PRINT | 00001B60: 48 45 41 44 49 4E 47 0D 49 4E 58 0D 43 50 58 20 |HEADING.INX.CPX | 00001B70: 23 44 53 50 4C 59 52 2D 52 45 47 4B 20 3B 4D 41 |#DSPLYR-REGK ;MA| 00001B80: 58 20 4C 45 4E 47 54 48 0D 42 4E 45 20 44 32 0D |X LENGTH.BNE D2.| 00001B90: 4C 44 41 20 23 27 3B 0D 4A 53 52 20 41 4C 54 52 |LDA #';.JSR ALTR| 00001BA0: 49 54 20 3B 41 4C 4C 4F 57 20 41 4C 54 45 52 20 |IT ;ALLOW ALTER | 00001BB0: 41 46 54 45 52 20 44 49 53 50 4C 41 59 0D 4C 44 |AFTER DISPLAY.LD| 00001BC0: 58 20 50 43 48 0D 4C 44 59 20 50 43 4C 0D 4A 53 |X PCH.LDY PCL.JS| 00001BD0: 52 20 57 52 4F 41 20 20 3B 50 52 49 4E 54 20 50 |R WROA ;PRINT P| 00001BE0: 52 4F 47 52 41 4D 20 43 4F 55 4E 54 45 52 0D 4A |ROGRAM COUNTER.J| 00001BF0: 53 52 20 53 50 41 43 45 0D 4C 44 58 20 49 4E 56 |SR SPACE.LDX INV| 00001C00: 48 0D 4C 44 59 20 49 4E 56 4C 0D 4A 53 52 20 57 |H.LDY INVL.JSR W| 00001C10: 52 4F 41 20 3B 50 52 49 4E 54 20 49 52 51 20 56 |ROA ;PRINT IRQ V| 00001C20: 45 43 54 4F 52 0D 4A 53 52 20 53 45 54 52 20 3B |ECTOR.JSR SETR ;| 00001C30: 53 45 54 20 54 4F 20 50 52 49 4E 54 20 2E 50 2C |SET TO PRINT .P,| 00001C40: 2E 41 2C 2E 58 2C 2E 59 2C 2E 53 0D 3B 0D 3B 44 |.A,.X,.Y,.S.;.;D| 00001C50: 49 53 50 4C 41 59 20 4D 45 4D 4F 52 59 20 53 55 |ISPLAY MEMORY SU| 00001C60: 42 52 4F 55 54 49 4E 45 0D 3B 0D 44 4D 20 53 54 |BROUTINE.;.DM ST| 00001C70: 41 20 54 4D 50 43 20 3B 42 59 54 45 20 43 4F 55 |A TMPC ;BYTE COU| 00001C80: 4E 54 0D 4C 44 59 20 23 30 20 3B 49 4E 44 49 52 |NT.LDY #0 ;INDIR| 00001C90: 45 43 54 20 49 4E 44 45 58 0D 44 4D 31 20 4A 53 |ECT INDEX.DM1 JS| 00001CA0: 52 20 53 50 41 43 45 20 3B 53 50 41 43 45 20 54 |R SPACE ;SPACE T| 00001CB0: 57 45 45 4E 20 42 59 54 45 53 0D 4C 44 41 20 28 |WEEN BYTES.LDA (| 00001CC0: 54 4D 50 30 29 59 0D 4A 53 52 20 57 52 4F 42 20 |TMP0)Y.JSR WROB | 00001CD0: 3B 57 52 49 54 45 20 42 59 54 45 20 4F 46 20 4D |;WRITE BYTE OF M| 00001CE0: 45 4D 4F 52 59 0D 3B 0D 3B 49 4E 43 52 45 4D 45 |EMORY.;.;INCREME| 00001CF0: 4E 54 20 49 4E 44 49 52 45 43 54 0D 3B 0D 49 4E |NT INDIRECT.;.IN| 00001D00: 43 20 54 4D 50 30 0D 42 4E 45 20 44 4D 32 0D 49 |C TMP0.BNE DM2.I| 00001D10: 4E 43 20 54 4D 50 30 2B 31 0D 42 4E 45 20 44 4D |NC TMP0+1.BNE DM| 00001D20: 32 0D 49 4E 43 20 57 52 41 50 0D 3B 0D 44 4D 32 |2.INC WRAP.;.DM2| 00001D30: 20 44 45 43 20 54 4D 50 43 20 3B 43 4F 55 4E 54 | DEC TMPC ;COUNT| 00001D40: 20 42 59 54 45 53 0D 42 4E 45 20 44 4D 31 20 3B | BYTES.BNE DM1 ;| 00001D50: 55 4E 54 49 4C 20 5A 45 52 4F 0D 52 54 53 0D 2E |UNTIL ZERO.RTS..| 00001D60: 53 4B 49 20 35 0D 3B 44 49 53 50 4C 41 59 20 4D |SKI 5.;DISPLAY M| 00001D70: 45 4D 4F 52 59 20 46 55 4E 43 54 49 4F 4E 0D 3B |EMORY FUNCTION.;| 00001D80: 0D 44 53 50 4C 59 4D 20 4A 53 52 20 52 44 4F 41 |.DSPLYM JSR RDOA| 00001D90: 20 3B 52 45 41 44 20 53 54 41 52 54 20 41 44 52 | ;READ START ADR| 00001DA0: 0D 42 43 53 20 45 52 52 53 31 20 3B 45 52 52 20 |.BCS ERRS1 ;ERR | 00001DB0: 49 46 20 4E 4F 20 53 41 0D 4A 53 52 20 54 32 54 |IF NO SA.JSR T2T| 00001DC0: 32 20 3B 53 41 20 54 4F 20 54 4D 50 32 0D 3B 0D |2 ;SA TO TMP2.;.| 00001DD0: 3B 41 4C 4C 4F 57 20 55 53 45 52 20 54 4F 20 54 |;ALLOW USER TO T| 00001DE0: 59 50 45 20 4A 55 53 54 20 4F 4E 45 20 41 44 44 |YPE JUST ONE ADD| 00001DF0: 52 45 53 53 0D 3B 0D 4A 53 52 20 52 44 4F 41 20 |RESS.;.JSR RDOA | 00001E00: 3B 52 45 41 44 20 45 4E 44 20 41 44 52 0D 42 43 |;READ END ADR.BC| 00001E10: 43 20 44 53 50 31 30 20 3B 47 4F 4F 44 2E 2E 2E |C DSP10 ;GOOD...| 00001E20: 4E 4F 20 44 45 46 41 55 4C 54 0D 3B 0D 4C 44 41 |NO DEFAULT.;.LDA| 00001E30: 20 54 4D 50 32 0D 53 54 41 20 54 4D 50 30 20 3B | TMP2.STA TMP0 ;| 00001E40: 44 45 46 41 55 4C 54 20 4C 4F 57 20 42 59 54 45 |DEFAULT LOW BYTE| 00001E50: 0D 4C 44 41 20 54 4D 50 32 2B 31 0D 53 54 41 20 |.LDA TMP2+1.STA | 00001E60: 54 4D 50 30 2B 31 20 3B 44 45 46 41 55 4C 54 20 |TMP0+1 ;DEFAULT | 00001E70: 48 49 20 42 59 54 45 0D 3B 0D 44 53 50 31 30 20 |HI BYTE.;.DSP10 | 00001E80: 4A 53 52 20 54 32 54 32 20 3B 53 41 20 54 4F 20 |JSR T2T2 ;SA TO | 00001E90: 54 4D 50 30 2C 20 45 41 20 54 4F 20 54 4D 50 32 |TMP0, EA TO TMP2| 00001EA0: 0D 44 53 50 31 20 4A 53 52 20 53 54 4F 50 20 3B |.DSP1 JSR STOP ;| 00001EB0: 53 54 4F 50 20 4B 45 59 3F 0D 42 45 51 20 42 45 |STOP KEY?.BEQ BE| 00001EC0: 51 53 31 20 3B 59 45 53 2E 2E 2E 42 52 45 41 4B |QS1 ;YES...BREAK| 00001ED0: 20 4C 49 53 54 0D 3B 0D 4C 44 41 20 23 27 3A 0D | LIST.;.LDA #':.| 00001EE0: 4A 53 52 20 41 4C 54 52 49 54 20 3B 41 4C 4C 4F |JSR ALTRIT ;ALLO| 00001EF0: 57 20 41 4C 54 45 52 0D 4C 44 58 20 54 4D 50 30 |W ALTER.LDX TMP0| 00001F00: 2B 31 0D 4C 44 59 20 54 4D 50 30 0D 4A 53 52 20 |+1.LDY TMP0.JSR | 00001F10: 57 52 4F 41 20 3B 57 52 49 54 45 20 53 54 41 52 |WROA ;WRITE STAR| 00001F20: 54 20 41 44 44 52 45 53 53 0D 4C 44 41 20 23 38 |T ADDRESS.LDA #8| 00001F30: 20 3B 43 4F 55 4E 54 20 4F 46 20 42 59 54 45 53 | ;COUNT OF BYTES| 00001F40: 0D 4A 53 52 20 44 4D 20 3B 44 49 53 50 4C 41 59 |.JSR DM ;DISPLAY| 00001F50: 20 42 59 54 45 53 0D 4C 44 41 20 57 52 41 50 0D | BYTES.LDA WRAP.| 00001F60: 42 4E 45 20 42 45 51 53 31 0D 3B 0D 3B 43 48 45 |BNE BEQS1.;.;CHE| 00001F70: 43 4B 20 46 4F 52 20 45 4E 44 20 4F 46 20 44 49 |CK FOR END OF DI| 00001F80: 53 50 4C 41 59 0D 3B 0D 53 45 43 0D 4C 44 41 20 |SPLAY.;.SEC.LDA | 00001F90: 54 4D 50 32 0D 53 42 43 20 54 4D 50 30 0D 4C 44 |TMP2.SBC TMP0.LD| 00001FA0: 41 20 54 4D 50 32 2B 31 0D 53 42 43 20 54 4D 50 |A TMP2+1.SBC TMP| 00001FB0: 30 2B 31 0D 42 43 53 20 44 53 50 31 20 20 3B 45 |0+1.BCS DSP1 ;E| 00001FC0: 4E 44 20 3E 3D 20 53 54 41 52 54 0D 3B 0D 42 45 |ND >= START.;.BE| 00001FD0: 51 53 31 20 52 54 53 20 3B 41 2E 4F 2E 4B 2E 20 |QS1 RTS ;A.O.K. | 00001FE0: 45 58 49 54 0D 3B 0D 45 52 52 53 31 20 4A 4D 50 |EXIT.;.ERRS1 JMP| 00001FF0: 20 45 52 52 4F 50 52 20 3B 53 59 4E 54 41 58 20 | ERROPR ;SYNTAX | 00002000: 45 52 52 4F 52 0D 2E 53 4B 49 20 35 0D 3B 41 4C |ERROR..SKI 5.;AL| 00002010: 54 45 52 20 52 45 47 49 53 54 45 52 20 46 55 4E |TER REGISTER FUN| 00002020: 43 54 49 4F 4E 0D 3B 0D 41 4C 54 52 20 4A 53 52 |CTION.;.ALTR JSR| 00002030: 20 52 44 4F 41 20 3B 52 45 41 44 20 4E 45 57 20 | RDOA ;READ NEW | 00002040: 50 43 0D 42 43 53 20 45 52 52 53 31 20 3B 45 52 |PC.BCS ERRS1 ;ER| 00002050: 52 4F 52 2E 2E 2E 4E 4F 20 41 44 44 52 45 53 53 |ROR...NO ADDRESS| 00002060: 0D 3B 0D 4A 53 52 20 50 55 54 50 20 3B 41 4C 54 |.;.JSR PUTP ;ALT| 00002070: 45 52 20 50 43 0D 3B 0D 4A 53 52 20 52 44 4F 41 |ER PC.;.JSR RDOA| 00002080: 20 3B 52 45 41 44 20 4E 45 57 20 49 52 51 0D 42 | ;READ NEW IRQ.B| 00002090: 43 53 20 45 52 52 53 31 20 3B 45 52 52 4F 52 2E |CS ERRS1 ;ERROR.| 000020A0: 2E 2E 4E 4F 20 41 44 44 52 45 53 53 0D 3B 0D 4C |..NO ADDRESS.;.L| 000020B0: 44 41 20 54 4D 50 30 0D 53 54 41 20 49 4E 56 4C |DA TMP0.STA INVL| 000020C0: 20 3B 41 4C 54 45 52 20 49 52 51 20 56 45 43 54 | ;ALTER IRQ VECT| 000020D0: 4F 52 0D 4C 44 41 20 54 4D 50 30 2B 31 0D 53 54 |OR.LDA TMP0+1.ST| 000020E0: 41 20 49 4E 56 48 0D 3B 0D 4A 53 52 20 53 45 54 |A INVH.;.JSR SET| 000020F0: 52 20 3B 53 45 54 20 54 4F 20 41 4C 54 45 52 20 |R ;SET TO ALTER | 00002100: 52 27 53 0D 42 4E 45 20 41 34 20 3B 42 52 41 4E |R'S.BNE A4 ;BRAN| 00002110: 43 48 20 41 4C 57 41 59 53 0D 2E 53 4B 49 20 35 |CH ALWAYS..SKI 5| 00002120: 0D 3B 41 4C 54 45 52 20 4D 45 4D 4F 52 59 20 2D |.;ALTER MEMORY -| 00002130: 20 52 45 41 44 20 41 44 52 20 41 4E 44 20 44 41 | READ ADR AND DA| 00002140: 54 41 0D 3B 0D 41 4C 54 4D 20 4A 53 52 20 52 44 |TA.;.ALTM JSR RD| 00002150: 4F 41 20 3B 52 45 41 44 20 41 4C 54 45 52 20 41 |OA ;READ ALTER A| 00002160: 44 52 0D 42 43 53 20 45 52 52 53 31 20 3B 49 46 |DR.BCS ERRS1 ;IF| 00002170: 20 53 50 41 43 45 2C 45 52 52 0D 3B 0D 4C 44 41 | SPACE,ERR.;.LDA| 00002180: 20 23 38 20 3B 41 4C 4C 4F 57 20 38 20 42 59 54 | #8 ;ALLOW 8 BYT| 00002190: 45 53 20 43 48 41 4E 47 45 0D 3B 0D 3B 43 4F 4D |ES CHANGE.;.;COM| 000021A0: 4D 4F 4E 20 43 4F 44 45 20 46 4F 52 20 27 3A 27 |MON CODE FOR ':'| 000021B0: 20 41 4E 44 20 27 3B 27 0D 3B 0D 41 34 20 53 54 | AND ';'.;.A4 ST| 000021C0: 41 20 54 4D 50 43 20 3B 4E 55 4D 42 45 52 20 4F |A TMPC ;NUMBER O| 000021D0: 46 20 42 59 54 45 53 20 54 4F 20 43 48 41 4E 47 |F BYTES TO CHANG| 000021E0: 45 0D 3B 0D 41 35 20 4A 53 52 20 52 44 4F 42 20 |E.;.A5 JSR RDOB | 000021F0: 3B 52 45 41 44 20 42 59 54 45 0D 42 43 53 20 41 |;READ BYTE.BCS A| 00002200: 39 20 3B 4E 4F 4E 45 2E 2E 2E 45 4E 44 20 4F 46 |9 ;NONE...END OF| 00002210: 20 4C 49 4E 45 0D 3B 0D 4C 44 58 20 23 30 0D 53 | LINE.;.LDX #0.S| 00002220: 54 41 20 28 54 4D 50 30 2C 58 29 20 3B 53 54 4F |TA (TMP0,X) ;STO| 00002230: 52 45 20 49 54 20 41 57 41 59 0D 3B 0D 3B 49 4E |RE IT AWAY.;.;IN| 00002240: 43 52 45 4D 45 4E 54 20 53 54 4F 52 45 20 41 44 |CREMENT STORE AD| 00002250: 44 52 45 53 53 0D 3B 0D 49 4E 43 20 54 4D 50 30 |DRESS.;.INC TMP0| 00002260: 0D 42 4E 45 20 41 36 0D 49 4E 43 20 54 4D 50 30 |.BNE A6.INC TMP0| 00002270: 2B 31 0D 3B 0D 41 36 20 44 45 43 20 54 4D 50 43 |+1.;.A6 DEC TMPC| 00002280: 20 3B 43 4F 55 4E 54 20 42 59 54 45 0D 42 4E 45 | ;COUNT BYTE.BNE| 00002290: 20 41 35 20 3B 55 4E 54 49 4C 20 5A 45 52 4F 0D | A5 ;UNTIL ZERO.| 000022A0: 3B 0D 41 39 20 52 54 53 0D 2E 53 4B 49 20 35 0D |;.A9 RTS..SKI 5.| 000022B0: 3B 4D 41 50 20 4D 45 4D 4F 52 59 0D 3B 0D 4D 41 |;MAP MEMORY.;.MA| 000022C0: 50 50 45 52 20 4A 53 52 20 52 44 4F 42 0D 53 54 |PPER JSR RDOB.ST| 000022D0: 41 20 4D 45 4D 4D 41 50 0D 52 54 53 0D 2E 53 4B |A MEMMAP.RTS..SK| 000022E0: 49 20 35 0D 3B 53 54 41 52 54 20 45 58 45 43 55 |I 5.;START EXECU| 000022F0: 54 49 4F 4E 20 46 55 4E 43 54 49 4F 4E 0D 3B 0D |TION FUNCTION.;.| 00002300: 47 4F 20 4A 53 52 20 52 44 4F 43 20 3B 53 45 45 |GO JSR RDOC ;SEE| 00002310: 20 49 46 20 44 45 46 41 55 4C 54 0D 42 45 51 20 | IF DEFAULT.BEQ | 00002320: 47 31 20 3B 59 45 53 2E 2E 2E 50 43 20 49 53 20 |G1 ;YES...PC IS | 00002330: 41 44 44 52 45 53 53 0D 3B 0D 4A 53 52 20 52 44 |ADDRESS.;.JSR RD| 00002340: 4F 41 20 3B 4E 4F 2E 2E 2E 47 45 54 20 4E 45 57 |OA ;NO...GET NEW| 00002350: 20 41 44 44 52 0D 42 43 53 20 45 52 52 4C 20 3B | ADDR.BCS ERRL ;| 00002360: 45 52 52 4F 52 2E 2E 2E 41 44 44 52 45 53 53 20 |ERROR...ADDRESS | 00002370: 53 43 52 45 57 45 44 20 55 50 0D 3B 0D 4A 53 52 |SCREWED UP.;.JSR| 00002380: 20 50 55 54 50 20 3B 4D 4F 56 45 20 41 44 44 52 | PUTP ;MOVE ADDR| 00002390: 20 54 4F 20 50 2E 43 2E 0D 3B 0D 47 31 20 4C 44 | TO P.C..;.G1 LD| 000023A0: 58 20 53 50 0D 54 58 53 20 3B 4F 52 49 47 20 4F |X SP.TXS ;ORIG O| 000023B0: 52 20 4E 45 57 20 53 50 20 56 41 4C 55 45 20 54 |R NEW SP VALUE T| 000023C0: 4F 20 53 50 0D 3B 0D 53 45 49 20 3B 50 52 45 56 |O SP.;.SEI ;PREV| 000023D0: 45 4E 54 20 44 49 53 41 53 54 45 52 0D 3B 0D 4C |ENT DISASTER.;.L| 000023E0: 44 41 20 49 4E 56 48 0D 53 54 41 20 43 49 4E 56 |DA INVH.STA CINV| 000023F0: 2B 31 20 20 3B 53 45 54 20 55 50 20 49 52 51 20 |+1 ;SET UP IRQ | 00002400: 56 45 43 54 4F 52 0D 4C 44 41 20 49 4E 56 4C 0D |VECTOR.LDA INVL.| 00002410: 53 54 41 20 43 49 4E 56 0D 3B 0D 3B 47 45 54 20 |STA CINV.;.;GET | 00002420: 46 4C 41 47 53 2C 50 43 48 2C 50 43 4C 2C 2E 41 |FLAGS,PCH,PCL,.A| 00002430: 2C 2E 58 2C 2E 59 0D 3B 0D 4C 44 58 20 23 30 0D |,.X,.Y.;.LDX #0.| 00002440: 47 32 20 4C 44 41 20 50 43 48 2C 58 0D 50 48 41 |G2 LDA PCH,X.PHA| 00002450: 20 3B 45 56 45 52 59 42 4F 44 59 20 4F 4E 20 53 | ;EVERYBODY ON S| 00002460: 54 41 43 4B 0D 49 4E 58 0D 43 50 58 20 23 36 0D |TACK.INX.CPX #6.| 00002470: 42 4E 45 20 47 32 0D 3B 0D 3B 49 4E 54 45 52 52 |BNE G2.;.;INTERR| 00002480: 55 50 54 20 52 45 54 55 52 4E 20 53 45 54 53 20 |UPT RETURN SETS | 00002490: 45 56 45 52 59 42 4F 44 59 20 55 50 0D 3B 46 52 |EVERYBODY UP.;FR| 000024A0: 4F 4D 20 44 41 54 41 20 4F 4E 20 53 54 41 43 4B |OM DATA ON STACK| 000024B0: 0D 3B 0D 50 52 45 4E 44 20 50 4C 41 0D 54 41 59 |.;.PREND PLA.TAY| 000024C0: 0D 50 4C 41 0D 54 41 58 0D 50 4C 41 0D 52 54 49 |.PLA.TAX.PLA.RTI| 000024D0: 0D 2E 53 4B 49 20 33 0D 45 52 52 4C 20 4A 4D 50 |..SKI 3.ERRL JMP| 000024E0: 20 45 52 52 4F 50 52 20 3B 53 59 4E 54 41 58 20 | ERROPR ;SYNTAX | 000024F0: 45 52 52 4F 52 20 4A 55 4D 50 0D 2E 53 4B 49 20 |ERROR JUMP..SKI | 00002500: 33 0D 3B 4C 4F 41 44 20 52 41 4D 20 46 55 4E 43 |3.;LOAD RAM FUNC| 00002510: 54 49 4F 4E 0D 3B 0D 4C 44 20 4C 44 59 20 23 31 |TION.;.LD LDY #1| 00002520: 0D 53 54 59 20 46 41 20 3B 44 45 46 41 55 4C 54 |.STY FA ;DEFAULT| 00002530: 20 44 45 56 49 43 45 20 23 31 0D 44 45 59 20 3B | DEVICE #1.DEY ;| 00002540: 2E 59 3D 30 20 54 4F 20 43 4F 55 4E 54 20 4E 41 |.Y=0 TO COUNT NA| 00002550: 4D 45 20 4C 45 4E 47 54 48 0D 3B 0D 4C 31 20 4A |ME LENGTH.;.L1 J| 00002560: 53 52 20 52 44 4F 43 20 3B 44 45 46 41 55 4C 54 |SR RDOC ;DEFAULT| 00002570: 3F 0D 42 45 51 20 4C 35 20 3B 59 45 53 2E 2E 2E |?.BEQ L5 ;YES...| 00002580: 54 52 59 20 4C 4F 41 44 0D 3B 0D 43 4D 50 20 23 |TRY LOAD.;.CMP #| 00002590: 27 20 0D 42 45 51 20 4C 31 20 3B 53 50 41 4E 20 |' .BEQ L1 ;SPAN | 000025A0: 42 4C 41 4E 4B 53 0D 3B 0D 43 4D 50 20 23 27 22 |BLANKS.;.CMP #'"| 000025B0: 20 3B 53 54 52 49 4E 47 20 4E 45 58 54 3F 0D 4C | ;STRING NEXT?.L| 000025C0: 32 20 42 4E 45 20 45 52 52 4C 20 3B 4E 4F 20 46 |2 BNE ERRL ;NO F| 000025D0: 49 4C 45 20 4E 41 4D 45 2E 2E 2E 0D 3B 0D 4C 33 |ILE NAME....;.L3| 000025E0: 20 4A 53 52 20 52 44 4F 43 20 3B 47 45 54 20 43 | JSR RDOC ;GET C| 000025F0: 48 41 52 41 43 54 45 52 20 4F 46 20 4E 41 4D 45 |HARACTER OF NAME| 00002600: 0D 42 45 51 20 4C 35 20 3B 45 4E 44 2E 2E 2E 41 |.BEQ L5 ;END...A| 00002610: 53 53 53 55 4D 45 20 4C 4F 41 44 0D 3B 0D 43 4D |SSSUME LOAD.;.CM| 00002620: 50 20 23 27 22 20 3B 45 4E 44 20 4F 46 20 53 54 |P #'" ;END OF ST| 00002630: 52 49 4E 47 3F 0D 42 45 51 20 4C 38 20 3B 59 45 |RING?.BEQ L8 ;YE| 00002640: 53 2E 2E 2E 43 4F 55 4C 44 20 53 54 49 4C 4C 20 |S...COULD STILL | 00002650: 42 45 20 27 4C 27 20 4F 52 20 27 53 27 0D 3B 0D |BE 'L' OR 'S'.;.| 00002660: 53 54 41 20 28 46 4E 41 44 52 29 59 20 3B 53 54 |STA (FNADR)Y ;ST| 00002670: 4F 52 45 20 4E 41 4D 45 0D 49 4E 43 20 46 4E 4C |ORE NAME.INC FNL| 00002680: 45 4E 0D 49 4E 59 0D 43 50 59 20 23 31 36 20 3B |EN.INY.CPY #16 ;| 00002690: 4D 41 58 20 46 49 4C 45 20 4E 41 4D 45 20 4C 45 |MAX FILE NAME LE| 000026A0: 4E 47 54 48 0D 3B 0D 4C 34 20 42 45 51 20 45 52 |NGTH.;.L4 BEQ ER| 000026B0: 52 4C 20 3B 46 49 4C 45 20 4E 41 4D 45 20 54 4F |RL ;FILE NAME TO| 000026C0: 4F 20 4C 4F 4E 47 0D 42 4E 45 20 4C 33 20 3B 42 |O LONG.BNE L3 ;B| 000026D0: 52 41 4E 43 48 20 41 4C 57 41 59 53 0D 3B 0D 3B |RANCH ALWAYS.;.;| 000026E0: 53 45 45 20 49 46 20 57 45 20 47 4F 54 20 41 20 |SEE IF WE GOT A | 000026F0: 4C 4F 41 44 0D 3B 0D 4C 35 20 4C 44 41 20 53 41 |LOAD.;.L5 LDA SA| 00002700: 56 58 20 3B 47 45 54 20 4C 41 53 54 20 43 4F 4D |VX ;GET LAST COM| 00002710: 4D 41 4E 44 0D 43 4D 50 20 23 27 4C 0D 42 4E 45 |MAND.CMP #'L.BNE| 00002720: 20 4C 32 20 3B 4E 4F 2E 2E 4E 4F 54 20 41 20 4C | L2 ;NO..NOT A L| 00002730: 4F 41 44 2E 2E 45 52 52 4F 52 0D 3B 0D 4A 4D 50 |OAD..ERROR.;.JMP| 00002740: 20 4C 4F 41 44 20 3B 59 45 53 2E 2E 2E 44 4F 20 | LOAD ;YES...DO | 00002750: 4C 4F 41 44 0D 3B 0D 4C 38 20 4A 53 52 20 52 44 |LOAD.;.L8 JSR RD| 00002760: 4F 43 20 3B 4D 4F 52 45 20 53 54 55 46 46 3F 0D |OC ;MORE STUFF?.| 00002770: 42 45 51 20 4C 35 20 3B 4E 4F 2E 2E 2E 44 45 46 |BEQ L5 ;NO...DEF| 00002780: 55 41 4C 54 20 4C 4F 41 44 0D 3B 0D 43 4D 50 20 |UALT LOAD.;.CMP | 00002790: 23 27 2C 20 3B 44 45 4C 45 49 4D 45 54 45 52 3F |#', ;DELEIMETER?| 000027A0: 0D 4C 39 20 42 4E 45 20 4C 32 20 3B 4E 4F 2E 2E |.L9 BNE L2 ;NO..| 000027B0: 2E 42 41 44 20 53 59 4E 54 41 58 0D 3B 0D 4A 53 |.BAD SYNTAX.;.JS| 000027C0: 52 20 52 44 4F 42 20 3B 59 45 53 2E 2E 2E 47 45 |R RDOB ;YES...GE| 000027D0: 54 20 4E 45 58 54 20 50 41 52 4D 0D 42 43 53 20 |T NEXT PARM.BCS | 000027E0: 4C 31 35 20 3B 4E 4F 54 20 47 4F 4F 44 0D 3B 0D |L15 ;NOT GOOD.;.| 000027F0: 53 54 41 20 46 41 0D 3B 0D 4A 53 52 20 52 44 4F |STA FA.;.JSR RDO| 00002800: 43 20 3B 4D 4F 52 45 20 50 41 52 4D 53 3F 0D 42 |C ;MORE PARMS?.B| 00002810: 45 51 20 4C 35 20 3B 4E 4F 2E 2E 2E 44 45 46 41 |EQ L5 ;NO...DEFA| 00002820: 55 4C 54 20 4C 4F 41 44 0D 3B 0D 43 4D 50 20 23 |ULT LOAD.;.CMP #| 00002830: 27 2C 20 3B 44 45 4C 49 4D 45 54 45 52 3F 0D 4C |', ;DELIMETER?.L| 00002840: 31 32 20 42 4E 45 20 4C 39 20 3B 4E 4F 2E 2E 2E |12 BNE L9 ;NO...| 00002850: 42 41 44 20 53 59 4E 54 41 58 0D 3B 0D 4A 53 52 |BAD SYNTAX.;.JSR| 00002860: 20 52 44 4F 41 20 3B 53 54 41 52 54 20 41 44 44 | RDOA ;START ADD| 00002870: 52 45 53 53 3F 0D 42 43 53 20 4C 31 35 20 3B 4E |RESS?.BCS L15 ;N| 00002880: 4F 2E 2E 2E 42 41 44 0D 3B 0D 4A 53 52 20 54 32 |O...BAD.;.JSR T2| 00002890: 54 32 20 3B 50 52 45 53 45 52 56 45 20 53 54 41 |T2 ;PRESERVE STA| 000028A0: 52 54 0D 4A 53 52 20 42 41 53 49 4E 20 3B 44 45 |RT.JSR BASIN ;DE| 000028B0: 4C 49 4D 45 54 45 52 3F 0D 43 4D 50 20 23 27 2C |LIMETER?.CMP #',| 000028C0: 0D 4C 31 33 20 42 4E 45 20 4C 31 32 20 3B 4E 4F |.L13 BNE L12 ;NO| 000028D0: 2E 2E 2E 0D 4A 53 52 20 52 44 4F 41 20 3B 54 52 |....JSR RDOA ;TR| 000028E0: 59 20 54 4F 20 52 45 41 44 20 45 4E 44 0D 42 43 |Y TO READ END.BC| 000028F0: 53 20 4C 31 35 20 3B 4E 4F 4E 45 2E 2E 2E 45 52 |S L15 ;NONE...ER| 00002900: 52 4F 52 0D 3B 0D 3B 53 45 54 20 55 50 20 45 4E |ROR.;.;SET UP EN| 00002910: 44 20 53 41 56 45 20 41 44 44 52 45 53 53 0D 3B |D SAVE ADDRESS.;| 00002920: 0D 4C 44 41 20 54 4D 50 30 0D 53 54 41 20 45 41 |.LDA TMP0.STA EA| 00002930: 4C 0D 4C 44 41 20 54 4D 50 30 2B 31 0D 53 54 41 |L.LDA TMP0+1.STA| 00002940: 20 45 41 48 0D 4A 53 52 20 54 32 54 32 0D 3B 0D | EAH.JSR T2T2.;.| 00002950: 4C 32 30 20 4A 53 52 20 42 41 53 49 4E 0D 43 4D |L20 JSR BASIN.CM| 00002960: 50 20 23 24 32 30 0D 42 45 51 20 4C 32 30 20 3B |P #$20.BEQ L20 ;| 00002970: 53 50 41 4E 20 42 4C 41 4E 4B 53 0D 3B 0D 43 4D |SPAN BLANKS.;.CM| 00002980: 50 20 23 43 52 0D 4C 31 34 20 42 4E 45 20 4C 31 |P #CR.L14 BNE L1| 00002990: 33 20 3B 4D 49 53 53 49 4E 47 20 43 52 20 41 54 |3 ;MISSING CR AT| 000029A0: 20 45 4E 44 0D 4C 44 41 20 53 41 56 58 20 3B 57 | END.LDA SAVX ;W| 000029B0: 41 53 20 43 4F 4D 4D 41 4E 44 20 53 41 56 45 3F |AS COMMAND SAVE?| 000029C0: 0D 43 4D 50 20 23 27 53 0D 42 4E 45 20 4C 31 34 |.CMP #'S.BNE L14| 000029D0: 20 3B 4E 4F 2E 2E 2E 4C 4F 41 44 20 43 41 4E 27 | ;NO...LOAD CAN'| 000029E0: 54 20 48 41 56 45 20 50 41 52 4D 53 0D 4A 4D 50 |T HAVE PARMS.JMP| 000029F0: 20 53 41 56 45 0D 3B 0D 4C 31 35 20 4A 4D 50 20 | SAVE.;.L15 JMP | 00002A00: 45 52 52 4F 50 52 0D 2E 53 4B 49 20 35 0D 3B 57 |ERROPR..SKI 5.;W| 00002A10: 52 49 54 45 20 41 44 52 20 46 52 4F 4D 20 54 4D |RITE ADR FROM TM| 00002A20: 50 30 20 53 54 4F 52 45 53 0D 3B 0D 57 52 4F 41 |P0 STORES.;.WROA| 00002A30: 20 54 58 41 20 3B 48 49 2D 42 59 54 45 0D 4A 53 | TXA ;HI-BYTE.JS| 00002A40: 52 20 57 52 4F 42 0D 54 59 41 20 3B 4C 4F 57 2D |R WROB.TYA ;LOW-| 00002A50: 42 59 54 45 0D 2E 53 4B 49 20 33 0D 3B 57 52 49 |BYTE..SKI 3.;WRI| 00002A60: 54 45 20 42 59 54 45 20 2D 2D 2D 20 41 20 3D 20 |TE BYTE --- A = | 00002A70: 42 59 54 45 0D 3B 55 4E 50 41 43 4B 20 42 59 54 |BYTE.;UNPACK BYT| 00002A80: 45 20 44 41 54 41 20 49 4E 54 4F 20 54 57 4F 20 |E DATA INTO TWO | 00002A90: 41 53 43 49 49 0D 3B 43 48 41 52 41 43 54 45 52 |ASCII.;CHARACTER| 00002AA0: 53 2E 20 41 3D 42 59 54 45 3B 20 58 2C 41 3D 43 |S. A=BYTE; X,A=C| 00002AB0: 48 41 52 53 0D 57 52 4F 42 20 50 48 41 0D 4C 53 |HARS.WROB PHA.LS| 00002AC0: 52 20 41 0D 4C 53 52 20 41 0D 4C 53 52 20 41 0D |R A.LSR A.LSR A.| 00002AD0: 4C 53 52 20 41 0D 4A 53 52 20 41 53 43 49 49 20 |LSR A.JSR ASCII | 00002AE0: 3B 43 4F 4E 56 45 52 54 20 54 4F 20 41 53 43 49 |;CONVERT TO ASCI| 00002AF0: 49 0D 54 41 58 0D 50 4C 41 0D 41 4E 44 20 23 24 |I.TAX.PLA.AND #$| 00002B00: 30 46 0D 2E 53 4B 49 20 33 0D 3B 43 4F 4E 56 45 |0F..SKI 3.;CONVE| 00002B10: 52 54 20 4E 59 42 42 4C 45 20 49 4E 20 41 20 54 |RT NYBBLE IN A T| 00002B20: 4F 20 41 53 43 49 49 20 41 4E 44 0D 3B 50 52 49 |O ASCII AND.;PRI| 00002B30: 4E 54 20 49 54 0D 3B 0D 41 53 43 49 49 20 43 4C |NT IT.;.ASCII CL| 00002B40: 43 0D 41 44 43 20 23 24 46 36 0D 42 43 43 20 41 |C.ADC #$F6.BCC A| 00002B50: 53 43 31 0D 41 44 43 20 23 24 30 36 0D 41 53 43 |SC1.ADC #$06.ASC| 00002B60: 31 20 41 44 43 20 23 24 33 41 0D 4A 4D 50 20 42 |1 ADC #$3A.JMP B| 00002B70: 53 4F 55 54 0D 2E 53 4B 49 20 35 0D 3B 45 58 43 |SOUT..SKI 5.;EXC| 00002B80: 48 41 4E 47 45 20 54 45 4D 50 4F 52 41 52 49 45 |HANGE TEMPORARIE| 00002B90: 53 0D 3B 0D 54 32 54 32 20 4C 44 58 20 23 32 0D |S.;.T2T2 LDX #2.| 00002BA0: 54 32 54 32 31 20 4C 44 41 20 54 4D 50 30 2D 31 |T2T21 LDA TMP0-1| 00002BB0: 2C 58 0D 50 48 41 0D 4C 44 41 20 54 4D 50 32 2D |,X.PHA.LDA TMP2-| 00002BC0: 31 2C 58 0D 53 54 41 20 54 4D 50 30 2D 31 2C 58 |1,X.STA TMP0-1,X| 00002BD0: 20 0D 50 4C 41 0D 53 54 41 20 54 4D 50 32 2D 31 | .PLA.STA TMP2-1| 00002BE0: 2C 58 0D 44 45 58 0D 42 4E 45 20 54 32 54 32 31 |,X.DEX.BNE T2T21| 00002BF0: 0D 52 54 53 0D 2E 53 4B 49 20 35 0D 3B 52 45 41 |.RTS..SKI 5.;REA| 00002C00: 44 20 48 45 58 20 41 44 52 2C 52 45 54 55 52 4E |D HEX ADR,RETURN| 00002C10: 20 48 49 20 49 4E 20 54 4D 50 30 2C 0D 3B 4C 4F | HI IN TMP0,.;LO| 00002C20: 20 49 4E 20 54 4D 50 30 2B 31 2C 41 4E 44 20 43 | IN TMP0+1,AND C| 00002C30: 59 3D 31 0D 3B 49 46 20 53 50 20 43 59 3D 30 0D |Y=1.;IF SP CY=0.| 00002C40: 3B 0D 52 44 4F 41 20 4A 53 52 20 52 44 4F 42 20 |;.RDOA JSR RDOB | 00002C50: 3B 52 45 41 44 20 32 2D 43 48 41 52 20 42 59 54 |;READ 2-CHAR BYT| 00002C60: 45 0D 42 43 53 20 52 44 4F 41 32 20 3B 53 50 41 |E.BCS RDOA2 ;SPA| 00002C70: 43 45 0D 53 54 41 20 54 4D 50 30 2B 31 0D 4A 53 |CE.STA TMP0+1.JS| 00002C80: 52 20 52 44 4F 42 0D 53 54 41 20 54 4D 50 30 0D |R RDOB.STA TMP0.| 00002C90: 52 44 4F 41 32 20 52 54 53 0D 3B 52 45 41 44 20 |RDOA2 RTS.;READ | 00002CA0: 48 45 58 20 42 59 54 45 20 41 4E 44 20 52 45 54 |HEX BYTE AND RET| 00002CB0: 55 52 4E 20 49 4E 20 41 0D 3B 41 4E 44 20 43 59 |URN IN A.;AND CY| 00002CC0: 3D 30 20 49 46 20 53 50 20 43 59 3D 31 0D 52 44 |=0 IF SP CY=1.RD| 00002CD0: 4F 42 20 4C 44 41 20 23 30 20 3B 53 50 41 43 45 |OB LDA #0 ;SPACE| 00002CE0: 0D 53 54 41 20 42 41 44 20 3B 52 45 41 44 20 4E |.STA BAD ;READ N| 00002CF0: 45 58 54 20 43 48 41 52 0D 4A 53 52 20 52 44 4F |EXT CHAR.JSR RDO| 00002D00: 43 0D 42 45 51 20 52 44 4F 42 34 20 3B 46 41 49 |C.BEQ RDOB4 ;FAI| 00002D10: 4C 20 4F 4E 20 43 52 0D 43 4D 50 20 23 27 20 20 |L ON CR.CMP #' | 00002D20: 3B 42 4C 41 4E 4B 3F 0D 42 45 51 20 52 44 4F 42 |;BLANK?.BEQ RDOB| 00002D30: 20 3B 53 50 41 4E 20 42 4C 41 4E 4B 53 2E 2E 2E | ;SPAN BLANKS...| 00002D40: 0D 3B 0D 4A 53 52 20 48 45 58 49 54 20 3B 43 4F |.;.JSR HEXIT ;CO| 00002D50: 4E 56 45 52 54 20 54 4F 20 48 45 58 20 4E 59 42 |NVERT TO HEX NYB| 00002D60: 42 4C 45 0D 41 53 4C 20 41 0D 41 53 4C 20 41 0D |BLE.ASL A.ASL A.| 00002D70: 41 53 4C 20 41 0D 41 53 4C 20 41 0D 53 54 41 20 |ASL A.ASL A.STA | 00002D80: 42 41 44 0D 4A 53 52 20 52 44 4F 43 20 3B 32 4E |BAD.JSR RDOC ;2N| 00002D90: 44 20 43 48 41 52 20 41 53 53 55 4D 45 44 20 48 |D CHAR ASSUMED H| 00002DA0: 45 58 0D 42 45 51 20 52 44 4F 42 34 20 3B 46 41 |EX.BEQ RDOB4 ;FA| 00002DB0: 49 4C 20 4F 4E 20 43 52 0D 4A 53 52 20 48 45 58 |IL ON CR.JSR HEX| 00002DC0: 49 54 0D 4F 52 41 20 42 41 44 0D 3B 0D 52 44 4F |IT.ORA BAD.;.RDO| 00002DD0: 42 34 20 52 54 53 0D 2E 53 4B 49 20 35 0D 3B 43 |B4 RTS..SKI 5.;C| 00002DE0: 4F 4E 56 45 52 54 20 41 53 43 49 49 20 43 48 41 |ONVERT ASCII CHA| 00002DF0: 52 20 54 4F 20 48 45 58 20 4E 59 42 42 4C 45 0D |R TO HEX NYBBLE.| 00002E00: 3B 0D 48 45 58 49 54 20 43 4D 50 20 23 24 33 41 |;.HEXIT CMP #$3A| 00002E10: 0D 50 48 50 20 3B 53 41 56 45 20 46 4C 41 47 53 |.PHP ;SAVE FLAGS| 00002E20: 0D 41 4E 44 20 23 24 30 46 0D 50 4C 50 0D 42 43 |.AND #$0F.PLP.BC| 00002E30: 43 20 48 45 58 30 39 20 3B 30 2D 39 0D 41 44 43 |C HEX09 ;0-9.ADC| 00002E40: 20 23 38 20 3B 41 4C 50 48 41 20 41 44 44 20 38 | #8 ;ALPHA ADD 8| 00002E50: 2B 43 59 3D 39 0D 48 45 58 30 39 20 52 54 53 0D |+CY=9.HEX09 RTS.| 00002E60: 2E 53 4B 49 20 35 0D 3B 47 45 54 20 43 48 41 52 |.SKI 5.;GET CHAR| 00002E70: 41 43 54 45 52 20 41 4E 44 20 54 45 53 54 20 46 |ACTER AND TEST F| 00002E80: 4F 52 20 43 52 0D 3B 0D 52 44 4F 43 20 4A 53 52 |OR CR.;.RDOC JSR| 00002E90: 20 42 41 53 49 4E 0D 43 4D 50 20 23 24 30 44 20 | BASIN.CMP #$0D | 00002EA0: 3B 49 53 20 49 54 20 41 20 43 52 0D 52 54 53 20 |;IS IT A CR.RTS | 00002EB0: 3B 52 45 54 55 52 4E 20 57 49 54 48 20 46 4C 41 |;RETURN WITH FLA| 00002EC0: 47 53 0D 2E 53 4B 49 20 35 0D 3B 53 45 4E 44 20 |GS..SKI 5.;SEND | 00002ED0: 44 49 53 4B 20 43 4F 4D 4D 41 4E 44 20 4F 52 20 |DISK COMMAND OR | 00002EE0: 52 45 41 44 20 53 54 41 54 55 53 0D 3B 0D 44 49 |READ STATUS.;.DI| 00002EF0: 53 4B 20 4C 44 41 20 23 30 20 3B 43 4C 45 41 52 |SK LDA #0 ;CLEAR| 00002F00: 20 53 54 41 54 55 53 20 40 20 49 2F 4F 20 42 45 | STATUS @ I/O BE| 00002F10: 47 49 4E 0D 53 54 41 20 53 54 41 54 55 53 0D 3B |GIN.STA STATUS.;| 00002F20: 0D 4A 53 52 20 52 44 4F 43 20 3B 53 45 45 20 49 |.JSR RDOC ;SEE I| 00002F30: 46 20 53 54 41 54 55 53 20 43 48 45 43 4B 0D 42 |F STATUS CHECK.B| 00002F40: 45 51 20 44 49 53 4B 32 30 20 3B 59 45 53 0D 3B |EQ DISK20 ;YES.;| 00002F50: 0D 50 48 41 0D 4C 44 41 20 23 38 20 3B 46 4C 4F |.PHA.LDA #8 ;FLO| 00002F60: 50 50 59 20 49 53 20 44 45 56 49 43 45 20 23 38 |PPY IS DEVICE #8| 00002F70: 0D 4A 53 52 20 4C 49 53 54 4E 20 3B 54 45 4C 4C |.JSR LISTN ;TELL| 00002F80: 20 46 4C 4F 50 50 59 20 54 4F 20 52 45 43 45 49 | FLOPPY TO RECEI| 00002F90: 56 45 0D 4C 44 41 20 23 31 35 2B 24 36 30 0D 4A |VE.LDA #15+$60.J| 00002FA0: 53 52 20 53 45 43 4E 44 20 3B 4F 4E 20 43 4F 4D |SR SECND ;ON COM| 00002FB0: 4D 41 4E 44 20 43 48 41 4E 4E 45 4C 0D 3B 0D 50 |MAND CHANNEL.;.P| 00002FC0: 4C 41 0D 4C 44 58 20 53 54 41 54 55 53 20 3B 45 |LA.LDX STATUS ;E| 00002FD0: 52 52 4F 52 3F 0D 42 50 4C 20 44 49 53 4B 31 35 |RROR?.BPL DISK15| 00002FE0: 20 3B 4E 4F 2E 2E 2E 4F 4B 0D 3B 0D 44 49 53 4B | ;NO...OK.;.DISK| 00002FF0: 35 20 4A 4D 50 20 45 52 52 4F 52 35 20 3B 44 45 |5 JMP ERROR5 ;DE| 00003000: 56 49 43 45 20 4E 4F 54 20 50 52 45 53 45 4E 54 |VICE NOT PRESENT| 00003010: 0D 3B 0D 44 49 53 4B 31 30 20 4A 53 52 20 42 41 |.;.DISK10 JSR BA| 00003020: 53 49 4E 20 3B 47 45 54 20 41 20 43 48 41 52 41 |SIN ;GET A CHARA| 00003030: 43 54 45 52 0D 44 49 53 4B 31 35 20 43 4D 50 20 |CTER.DISK15 CMP | 00003040: 23 24 44 20 3B 53 45 45 20 49 46 20 45 4E 44 0D |#$D ;SEE IF END.| 00003050: 50 48 50 20 3B 53 41 56 45 20 46 4F 52 20 4C 41 |PHP ;SAVE FOR LA| 00003060: 54 45 52 0D 4A 53 52 20 43 49 4F 55 54 20 3B 4F |TER.JSR CIOUT ;O| 00003070: 55 54 20 54 4F 20 46 4C 4F 50 50 59 0D 50 4C 50 |UT TO FLOPPY.PLP| 00003080: 20 3B 45 4E 44 3F 0D 42 4E 45 20 44 49 53 4B 31 | ;END?.BNE DISK1| 00003090: 30 20 3B 4E 4F 2E 2E 2E 43 4F 4E 54 49 4E 55 45 |0 ;NO...CONTINUE| 000030A0: 0D 3B 0D 4A 4D 50 20 55 4E 4C 53 4E 20 3B 59 45 |.;.JMP UNLSN ;YE| 000030B0: 53 2E 2E 2E 46 4C 4F 50 50 59 20 44 4F 4E 45 0D |S...FLOPPY DONE.| 000030C0: 3B 0D 44 49 53 4B 32 30 20 4A 53 52 20 43 52 4C |;.DISK20 JSR CRL| 000030D0: 46 0D 4C 44 41 20 23 38 20 3B 46 4C 4F 50 50 59 |F.LDA #8 ;FLOPPY| 000030E0: 20 49 53 20 44 45 56 49 43 45 20 23 38 0D 4A 53 | IS DEVICE #8.JS| 000030F0: 52 20 54 41 4C 4B 20 3B 54 45 4C 4C 20 46 4C 4F |R TALK ;TELL FLO| 00003100: 50 50 59 20 54 4F 20 53 50 45 41 4B 0D 4C 44 41 |PPY TO SPEAK.LDA| 00003110: 20 23 31 35 2B 24 36 30 0D 4A 53 52 20 54 4B 53 | #15+$60.JSR TKS| 00003120: 41 20 3B 46 52 4F 4D 20 45 52 52 4F 52 20 43 48 |A ;FROM ERROR CH| 00003130: 41 4E 4E 45 4C 0D 3B 0D 4C 44 41 20 53 54 41 54 |ANNEL.;.LDA STAT| 00003140: 55 53 20 3B 41 4E 20 45 52 52 4F 52 3F 0D 42 4D |US ;AN ERROR?.BM| 00003150: 49 20 44 49 53 4B 35 20 3B 59 45 53 2E 2E 2E 0D |I DISK5 ;YES....| 00003160: 3B 0D 44 49 53 4B 32 35 20 4A 53 52 20 41 43 50 |;.DISK25 JSR ACP| 00003170: 54 52 20 3B 47 45 54 20 41 20 43 48 41 52 41 43 |TR ;GET A CHARAC| 00003180: 54 45 52 0D 43 4D 50 20 23 24 44 20 3B 53 45 45 |TER.CMP #$D ;SEE| 00003190: 20 49 46 20 45 4E 44 0D 50 48 50 20 3B 54 45 53 | IF END.PHP ;TES| 000031A0: 54 20 4C 41 54 45 52 0D 4A 53 52 20 42 53 4F 55 |T LATER.JSR BSOU| 000031B0: 54 20 3B 4F 55 54 20 54 4F 20 53 43 52 45 45 4E |T ;OUT TO SCREEN| 000031C0: 0D 50 4C 50 20 3B 45 4E 44 3F 0D 42 4E 45 20 44 |.PLP ;END?.BNE D| 000031D0: 49 53 4B 32 35 20 3B 4E 4F 2E 2E 2E 0D 4A 4D 50 |ISK25 ;NO....JMP| 000031E0: 20 55 4E 54 4C 4B 20 3B 59 45 53 2E 2E 2E 46 4C | UNTLK ;YES...FL| 000031F0: 4F 50 50 59 20 44 4F 4E 45 0D 2E 50 41 47 20 27 |OPPY DONE..PAG '| 00003200: 4C 4F 41 44 20 46 55 4E 43 54 49 4F 4E 27 0D 3B |LOAD FUNCTION'.;| 00003210: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003220: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003230: 2A 2A 0D 3B 2A 20 4C 4F 41 44 20 52 41 4D 20 46 |**.;* LOAD RAM F| 00003240: 55 4E 43 54 49 4F 4E 20 20 20 20 20 20 20 20 20 |UNCTION | 00003250: 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 20 | *.;* | 00003260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003270: 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 4C 4F | *.;* LO| 00003280: 41 44 53 20 46 52 4F 4D 20 43 41 53 53 45 54 54 |ADS FROM CASSETT| 00003290: 45 20 31 20 4F 52 20 32 2C 20 4F 52 20 2A 0D 3B |E 1 OR 2, OR *.;| 000032A0: 2A 20 49 45 45 45 20 42 55 53 20 44 45 56 49 43 |* IEEE BUS DEVIC| 000032B0: 45 53 20 3E 3D 34 20 54 4F 20 33 31 20 41 53 20 |ES >=4 TO 31 AS | 000032C0: 20 2A 0D 3B 2A 20 44 45 54 45 52 4D 49 4E 45 44 | *.;* DETERMINED| 000032D0: 20 42 59 20 43 4F 4E 54 45 4E 54 53 20 4F 46 20 | BY CONTENTS OF | 000032E0: 20 20 20 20 20 2A 0D 3B 2A 20 56 41 52 49 41 42 | *.;* VARIAB| 000032F0: 4C 45 20 46 41 2E 20 56 45 52 49 46 59 20 46 4C |LE FA. VERIFY FL| 00003300: 41 47 20 49 4E 20 2E 41 20 2A 0D 3B 2A 20 48 49 |AG IN .A *.;* HI| 00003310: 47 48 20 4C 4F 41 44 20 52 45 54 55 52 4E 20 49 |GH LOAD RETURN I| 00003320: 4E 20 58 2C 59 2E 20 20 20 20 20 20 20 2A 0D 3B |N X,Y. *.;| 00003330: 2A 20 2E 41 3D 30 20 50 45 52 46 4F 52 4D 53 20 |* .A=0 PERFORMS | 00003340: 4C 4F 41 44 2C 3C 3E 20 49 53 20 56 45 52 49 46 |LOAD,<> IS VERIF| 00003350: 59 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 |Y*.;* | 00003360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003370: 20 20 20 20 20 2A 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A | *.;********| 00003380: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003390: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2E 53 4B 49 20 |**********..SKI | 000033A0: 33 0D 4C 4F 41 44 0D 4C 44 41 20 23 30 0D 53 54 |3.LOAD.LDA #0.ST| 000033B0: 41 20 53 54 41 54 55 53 0D 3B 0D 4C 44 41 20 46 |A STATUS.;.LDA F| 000033C0: 41 20 3B 43 48 45 43 4B 20 44 45 56 49 43 45 20 |A ;CHECK DEVICE | 000033D0: 4E 55 4D 42 45 52 0D 43 4D 50 20 23 34 0D 42 43 |NUMBER.CMP #4.BC| 000033E0: 53 20 4C 44 32 30 0D 3B 0D 4C 44 31 30 20 4A 4D |S LD20.;.LD10 JM| 000033F0: 50 20 45 52 52 4F 52 39 20 3B 42 41 44 20 44 45 |P ERROR9 ;BAD DE| 00003400: 56 49 43 45 20 23 0D 3B 0D 4C 44 32 30 0D 3B 0D |VICE #.;.LD20.;.| 00003410: 3B 4C 4F 41 44 20 46 52 4F 4D 20 43 42 4D 20 49 |;LOAD FROM CBM I| 00003420: 45 45 45 20 44 45 56 49 43 45 0D 3B 0D 4C 44 41 |EEE DEVICE.;.LDA| 00003430: 20 23 24 36 30 20 3B 53 50 45 43 49 41 4C 20 4C | #$60 ;SPECIAL L| 00003440: 4F 41 44 20 43 4F 4D 4D 41 4E 44 0D 53 54 41 20 |OAD COMMAND.STA | 00003450: 53 41 0D 3B 0D 4C 44 59 20 46 4E 4C 45 4E 20 3B |SA.;.LDY FNLEN ;| 00003460: 4D 55 53 54 20 48 41 56 45 20 46 49 4C 45 20 4E |MUST HAVE FILE N| 00003470: 41 4D 45 0D 42 4E 45 20 4C 44 32 35 20 3B 59 45 |AME.BNE LD25 ;YE| 00003480: 53 2E 2E 2E 4F 4B 0D 3B 0D 4A 4D 50 20 45 52 52 |S...OK.;.JMP ERR| 00003490: 4F 52 38 20 3B 4D 49 53 53 49 4E 47 20 46 49 4C |OR8 ;MISSING FIL| 000034A0: 45 20 4E 41 4D 45 0D 3B 0D 4C 44 32 35 20 4A 53 |E NAME.;.LD25 JS| 000034B0: 52 20 4C 55 4B 49 4E 47 20 3B 54 45 4C 4C 20 55 |R LUKING ;TELL U| 000034C0: 53 45 52 20 4C 4F 4F 4B 49 4E 47 0D 4A 53 52 20 |SER LOOKING.JSR | 000034D0: 4F 50 45 4E 49 20 3B 4F 50 45 4E 20 54 48 45 20 |OPENI ;OPEN THE | 000034E0: 46 49 4C 45 0D 3B 0D 4C 44 41 20 46 41 0D 4A 53 |FILE.;.LDA FA.JS| 000034F0: 52 20 54 41 4C 4B 20 3B 45 53 54 41 42 4C 49 53 |R TALK ;ESTABLIS| 00003500: 48 20 54 48 45 20 43 48 41 4E 4E 45 4C 0D 4C 44 |H THE CHANNEL.LD| 00003510: 41 20 53 41 0D 4A 53 52 20 54 4B 53 41 20 3B 54 |A SA.JSR TKSA ;T| 00003520: 45 4C 4C 20 49 54 20 54 4F 20 4C 4F 41 44 0D 3B |ELL IT TO LOAD.;| 00003530: 0D 4A 53 52 20 41 43 50 54 52 20 3B 47 45 54 20 |.JSR ACPTR ;GET | 00003540: 46 49 52 53 54 20 42 59 54 45 0D 53 54 41 20 45 |FIRST BYTE.STA E| 00003550: 41 4C 0D 53 54 41 20 53 54 41 4C 0D 3B 0D 4C 44 |AL.STA STAL.;.LD| 00003560: 41 20 53 54 41 54 55 53 20 3B 54 45 53 54 20 53 |A STATUS ;TEST S| 00003570: 54 41 54 55 53 20 46 4F 52 20 45 52 52 4F 52 0D |TATUS FOR ERROR.| 00003580: 4C 53 52 20 41 0D 4C 53 52 20 41 0D 42 43 53 20 |LSR A.LSR A.BCS | 00003590: 4C 44 39 30 20 3B 46 49 4C 45 20 4E 4F 54 20 46 |LD90 ;FILE NOT F| 000035A0: 4F 55 4E 44 2E 2E 2E 0D 4A 53 52 20 41 43 50 54 |OUND....JSR ACPT| 000035B0: 52 0D 53 54 41 20 45 41 48 0D 53 54 41 20 53 54 |R.STA EAH.STA ST| 000035C0: 41 48 0D 3B 0D 4A 53 52 20 4C 4F 44 49 4E 47 20 |AH.;.JSR LODING | 000035D0: 3B 54 45 4C 4C 20 55 53 45 52 20 4C 4F 41 44 49 |;TELL USER LOADI| 000035E0: 4E 47 0D 3B 0D 4C 44 34 30 20 4C 44 41 20 23 24 |NG.;.LD40 LDA #$| 000035F0: 46 44 20 3B 4D 41 53 4B 20 4F 46 46 20 54 49 4D |FD ;MASK OFF TIM| 00003600: 45 4F 55 54 0D 41 4E 44 20 53 54 41 54 55 53 0D |EOUT.AND STATUS.| 00003610: 53 54 41 20 53 54 41 54 55 53 0D 3B 0D 4A 53 52 |STA STATUS.;.JSR| 00003620: 20 53 54 4F 50 20 3B 53 54 4F 50 20 4B 45 59 3F | STOP ;STOP KEY?| 00003630: 0D 42 4E 45 20 4C 44 34 35 20 3B 4E 4F 2E 2E 2E |.BNE LD45 ;NO...| 00003640: 0D 3B 0D 4A 4D 50 20 42 52 45 41 4B 20 3B 53 54 |.;.JMP BREAK ;ST| 00003650: 4F 50 20 4B 45 59 20 50 52 45 53 53 45 44 0D 3B |OP KEY PRESSED.;| 00003660: 0D 4C 44 34 35 20 4A 53 52 20 41 43 50 54 52 20 |.LD45 JSR ACPTR | 00003670: 3B 47 45 54 20 42 59 54 45 20 4F 46 46 20 49 45 |;GET BYTE OFF IE| 00003680: 45 45 0D 54 41 58 0D 4C 44 41 20 53 54 41 54 55 |EE.TAX.LDA STATU| 00003690: 53 20 3B 57 41 53 20 54 48 45 52 45 20 41 20 54 |S ;WAS THERE A T| 000036A0: 49 4D 45 4F 55 54 3F 0D 4C 53 52 20 41 0D 4C 53 |IMEOUT?.LSR A.LS| 000036B0: 52 20 41 0D 42 43 53 20 4C 44 34 30 20 3B 59 45 |R A.BCS LD40 ;YE| 000036C0: 53 2E 2E 2E 54 52 59 20 41 47 41 49 4E 0D 54 58 |S...TRY AGAIN.TX| 000036D0: 41 0D 4C 44 59 20 23 30 0D 53 54 41 20 28 45 41 |A.LDY #0.STA (EA| 000036E0: 4C 29 59 0D 4C 44 36 30 20 49 4E 43 20 45 41 4C |L)Y.LD60 INC EAL| 000036F0: 20 3B 49 4E 43 52 45 4D 45 4E 54 20 53 54 4F 52 | ;INCREMENT STOR| 00003700: 45 20 41 44 44 52 0D 42 4E 45 20 4C 44 36 34 0D |E ADDR.BNE LD64.| 00003710: 49 4E 43 20 45 41 48 0D 4C 44 36 34 20 42 49 54 |INC EAH.LD64 BIT| 00003720: 20 53 54 41 54 55 53 20 3B 45 4F 49 3F 0D 42 56 | STATUS ;EOI?.BV| 00003730: 43 20 4C 44 34 30 20 3B 4E 4F 2E 2E 2E 43 4F 4E |C LD40 ;NO...CON| 00003740: 54 49 4E 55 45 20 4C 4F 41 44 0D 3B 0D 4A 53 52 |TINUE LOAD.;.JSR| 00003750: 20 55 4E 54 4C 4B 20 3B 43 4C 4F 53 45 20 43 48 | UNTLK ;CLOSE CH| 00003760: 41 4E 4E 45 4C 0D 4A 53 52 20 43 4C 53 45 49 20 |ANNEL.JSR CLSEI | 00003770: 3B 43 4C 4F 53 45 20 54 48 45 20 46 49 4C 45 0D |;CLOSE THE FILE.| 00003780: 42 43 43 20 4C 44 31 38 30 20 3B 42 52 41 4E 43 |BCC LD180 ;BRANC| 00003790: 48 20 41 4C 57 41 59 53 0D 3B 0D 4C 44 39 30 20 |H ALWAYS.;.LD90 | 000037A0: 4A 4D 50 20 45 52 52 4F 52 34 20 3B 46 49 4C 45 |JMP ERROR4 ;FILE| 000037B0: 20 4E 4F 54 20 46 4F 55 4E 44 0D 3B 0D 3B 0D 4C | NOT FOUND.;.;.L| 000037C0: 44 31 38 30 20 43 4C 43 20 3B 47 4F 4F 44 20 45 |D180 CLC ;GOOD E| 000037D0: 58 49 54 0D 3B 0D 3B 53 45 54 20 55 50 20 45 4E |XIT.;.;SET UP EN| 000037E0: 44 20 4C 4F 41 44 20 41 44 44 52 45 53 53 0D 3B |D LOAD ADDRESS.;| 000037F0: 0D 4C 44 58 20 45 41 4C 0D 4C 44 59 20 45 41 48 |.LDX EAL.LDY EAH| 00003800: 0D 3B 0D 4C 44 31 39 30 20 52 54 53 0D 2E 53 4B |.;.LD190 RTS..SK| 00003810: 49 20 35 0D 3B 53 55 42 52 4F 55 54 49 4E 45 20 |I 5.;SUBROUTINE | 00003820: 54 4F 20 50 52 49 4E 54 20 54 4F 20 43 4F 4E 53 |TO PRINT TO CONS| 00003830: 4F 4C 45 3A 0D 3B 0D 3B 53 45 41 52 43 48 49 4E |OLE:.;.;SEARCHIN| 00003840: 47 20 5B 46 4F 52 20 4E 41 4D 45 5D 0D 3B 0D 4C |G [FOR NAME].;.L| 00003850: 55 4B 49 4E 47 0D 4C 44 59 20 23 4D 53 35 2D 4D |UKING.LDY #MS5-M| 00003860: 53 31 20 3B 22 53 45 41 52 43 48 49 4E 47 22 0D |S1 ;"SEARCHING".| 00003870: 4A 53 52 20 4D 53 47 0D 4C 44 41 20 46 4E 4C 45 |JSR MSG.LDA FNLE| 00003880: 4E 0D 42 45 51 20 4C 44 31 31 35 0D 4C 44 59 20 |N.BEQ LD115.LDY | 00003890: 23 4D 53 36 2D 4D 53 31 20 3B 22 46 4F 52 22 0D |#MS6-MS1 ;"FOR".| 000038A0: 4A 53 52 20 4D 53 47 0D 2E 53 4B 49 20 33 0D 3B |JSR MSG..SKI 3.;| 000038B0: 53 55 42 52 4F 55 54 49 4E 45 20 54 4F 20 4F 55 |SUBROUTINE TO OU| 000038C0: 54 50 55 54 20 46 49 4C 45 20 4E 41 4D 45 0D 3B |TPUT FILE NAME.;| 000038D0: 0D 4F 55 54 46 4E 0D 4C 44 59 20 23 30 0D 4C 44 |.OUTFN.LDY #0.LD| 000038E0: 31 31 30 20 4C 44 41 20 28 46 4E 41 44 52 29 59 |110 LDA (FNADR)Y| 000038F0: 0D 4A 53 52 20 42 53 4F 55 54 0D 49 4E 59 0D 43 |.JSR BSOUT.INY.C| 00003900: 50 59 20 46 4E 4C 45 4E 0D 42 4E 45 20 4C 44 31 |PY FNLEN.BNE LD1| 00003910: 31 30 0D 3B 0D 4C 44 31 31 35 20 52 54 53 0D 2E |10.;.LD115 RTS..| 00003920: 53 4B 49 20 33 0D 3B 53 55 42 52 4F 55 54 49 4E |SKI 3.;SUBROUTIN| 00003930: 45 20 54 4F 20 50 52 49 4E 54 3A 0D 3B 0D 3B 4C |E TO PRINT:.;.;L| 00003940: 4F 41 44 49 4E 47 2F 56 45 52 49 46 49 4E 47 0D |OADING/VERIFING.| 00003950: 3B 0D 4C 4F 44 49 4E 47 20 4C 44 59 20 23 4D 53 |;.LODING LDY #MS| 00003960: 31 30 2D 4D 53 31 20 3B 41 53 53 55 4D 45 20 27 |10-MS1 ;ASSUME '| 00003970: 4C 4F 41 44 49 4E 47 27 0D 4C 44 34 31 30 20 4A |LOADING'.LD410 J| 00003980: 4D 50 20 53 50 4D 53 47 0D 2E 50 41 47 20 27 53 |MP SPMSG..PAG 'S| 00003990: 41 56 45 20 46 55 4E 43 54 49 4F 4E 27 0D 3B 2A |AVE FUNCTION'.;*| 000039A0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000039B0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000039C0: 2A 2A 0D 3B 2A 20 53 41 56 45 20 20 20 20 20 20 |**.;* SAVE | 000039D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000039E0: 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 | *.;* | 000039F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003A00: 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 | *.;* | 00003A10: 53 41 56 45 53 20 54 4F 20 43 41 53 53 45 54 54 |SAVES TO CASSETT| 00003A20: 45 20 31 20 4F 52 20 32 2C 20 4F 52 20 20 20 20 |E 1 OR 2, OR | 00003A30: 2A 0D 3B 2A 20 49 45 45 45 20 44 45 56 49 43 45 |*.;* IEEE DEVICE| 00003A40: 53 20 34 3E 3D 4E 3E 3D 33 31 20 41 53 20 53 45 |S 4>=N>=31 AS SE| 00003A50: 4C 45 43 54 2D 2A 0D 3B 2A 20 45 44 20 42 59 20 |LECT-*.;* ED BY | 00003A60: 56 41 52 49 41 42 4C 45 20 46 41 2E 20 20 20 20 |VARIABLE FA. | 00003A70: 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 20 | *.;* | 00003A80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003A90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A | *| 00003AA0: 0D 3B 2A 53 54 41 52 54 20 4F 46 20 53 41 56 45 |.;*START OF SAVE| 00003AB0: 20 49 53 20 4D 45 4D 53 54 52 2E 2E 2E 45 4E 44 | IS MEMSTR...END| 00003AC0: 20 4F 46 2A 0D 3B 2A 53 41 56 45 20 49 53 20 2E | OF*.;*SAVE IS .| 00003AD0: 58 2C 2E 59 20 20 20 20 20 20 20 20 20 20 20 20 |X,.Y | 00003AE0: 20 20 20 20 20 20 20 2A 0D 3B 2A 2A 2A 2A 2A 2A | *.;******| 00003AF0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003B00: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2E 53 |*************..S| 00003B10: 4B 49 20 33 0D 53 41 56 45 20 4C 44 41 20 46 41 |KI 3.SAVE LDA FA| 00003B20: 20 20 2A 2A 2A 4D 4F 4E 49 54 4F 52 20 45 4E 54 | ***MONITOR ENT| 00003B30: 52 59 0D 43 4D 50 20 23 34 0D 42 43 53 20 53 56 |RY.CMP #4.BCS SV| 00003B40: 32 30 0D 3B 0D 53 56 31 30 20 4A 4D 50 20 45 52 |20.;.SV10 JMP ER| 00003B50: 52 4F 52 39 20 3B 42 41 44 20 44 45 56 49 43 45 |ROR9 ;BAD DEVICE| 00003B60: 20 23 0D 3B 0D 53 56 32 30 0D 4C 44 41 20 23 24 | #.;.SV20.LDA #$| 00003B70: 36 31 0D 53 54 41 20 53 41 0D 4C 44 59 20 46 4E |61.STA SA.LDY FN| 00003B80: 4C 45 4E 0D 42 4E 45 20 53 56 32 35 0D 3B 0D 4A |LEN.BNE SV25.;.J| 00003B90: 4D 50 20 45 52 52 4F 52 38 20 3B 4D 49 53 53 49 |MP ERROR8 ;MISSI| 00003BA0: 4E 47 20 46 49 4C 45 20 4E 41 4D 45 0D 3B 0D 53 |NG FILE NAME.;.S| 00003BB0: 56 32 35 20 4A 53 52 20 4F 50 45 4E 49 0D 4A 53 |V25 JSR OPENI.JS| 00003BC0: 52 20 53 41 56 49 4E 47 0D 4C 44 41 20 46 41 0D |R SAVING.LDA FA.| 00003BD0: 4A 53 52 20 4C 49 53 54 4E 0D 4C 44 41 20 53 41 |JSR LISTN.LDA SA| 00003BE0: 0D 4A 53 52 20 53 45 43 4E 44 0D 4C 44 59 20 23 |.JSR SECND.LDY #| 00003BF0: 30 0D 4C 44 41 20 53 54 41 48 0D 53 54 41 20 53 |0.LDA STAH.STA S| 00003C00: 41 48 0D 4C 44 41 20 53 54 41 4C 0D 53 54 41 20 |AH.LDA STAL.STA | 00003C10: 53 41 4C 0D 4A 53 52 20 43 49 4F 55 54 0D 4C 44 |SAL.JSR CIOUT.LD| 00003C20: 41 20 53 41 48 0D 4A 53 52 20 43 49 4F 55 54 0D |A SAH.JSR CIOUT.| 00003C30: 53 56 33 30 20 53 45 43 0D 4C 44 41 20 53 41 4C |SV30 SEC.LDA SAL| 00003C40: 0D 53 42 43 20 45 41 4C 0D 4C 44 41 20 53 41 48 |.SBC EAL.LDA SAH| 00003C50: 0D 53 42 43 20 45 41 48 0D 42 43 53 20 53 56 35 |.SBC EAH.BCS SV5| 00003C60: 30 20 3B 48 41 56 45 20 52 45 41 43 48 45 44 20 |0 ;HAVE REACHED | 00003C70: 45 4E 44 0D 4C 44 41 20 28 53 41 4C 29 59 0D 4A |END.LDA (SAL)Y.J| 00003C80: 53 52 20 43 49 4F 55 54 0D 4A 53 52 20 53 54 4F |SR CIOUT.JSR STO| 00003C90: 50 0D 42 4E 45 20 53 56 34 30 0D 3B 0D 42 52 45 |P.BNE SV40.;.BRE| 00003CA0: 41 4B 20 4A 53 52 20 43 4C 53 45 49 0D 4C 44 41 |AK JSR CLSEI.LDA| 00003CB0: 20 23 30 0D 53 45 43 0D 52 54 53 0D 3B 0D 53 56 | #0.SEC.RTS.;.SV| 00003CC0: 34 30 20 49 4E 43 20 53 41 4C 0D 42 4E 45 20 49 |40 INC SAL.BNE I| 00003CD0: 4E 43 52 0D 49 4E 43 20 53 41 48 0D 49 4E 43 52 |NCR.INC SAH.INCR| 00003CE0: 0D 42 4E 45 20 53 56 33 30 0D 53 56 35 30 20 4A |.BNE SV30.SV50 J| 00003CF0: 53 52 20 55 4E 4C 53 4E 0D 2E 53 4B 49 20 35 0D |SR UNLSN..SKI 5.| 00003D00: 43 4C 53 45 49 20 42 49 54 20 53 41 0D 42 4D 49 |CLSEI BIT SA.BMI| 00003D10: 20 43 4C 53 45 49 32 0D 4C 44 41 20 46 41 0D 4A | CLSEI2.LDA FA.J| 00003D20: 53 52 20 4C 49 53 54 4E 0D 4C 44 41 20 53 41 0D |SR LISTN.LDA SA.| 00003D30: 41 4E 44 20 23 24 45 46 0D 4F 52 41 20 23 24 45 |AND #$EF.ORA #$E| 00003D40: 30 0D 4A 53 52 20 53 45 43 4E 44 0D 4A 53 52 20 |0.JSR SECND.JSR | 00003D50: 55 4E 4C 53 4E 0D 3B 0D 43 4C 53 45 49 32 20 43 |UNLSN.;.CLSEI2 C| 00003D60: 4C 43 0D 52 54 53 0D 2E 53 4B 49 20 35 0D 2E 53 |LC.RTS..SKI 5..S| 00003D70: 4B 49 20 33 0D 3B 53 55 42 52 4F 55 54 49 4E 45 |KI 3.;SUBROUTINE| 00003D80: 20 54 4F 20 4F 55 54 50 55 54 3A 0D 3B 27 53 41 | TO OUTPUT:.;'SA| 00003D90: 56 49 4E 47 20 3C 46 49 4C 45 20 4E 41 4D 45 3E |VING <FILE NAME>| 00003DA0: 27 0D 3B 0D 53 41 56 49 4E 47 0D 3B 0D 4C 44 59 |'.;.SAVING.;.LDY| 00003DB0: 20 23 4D 53 31 31 2D 4D 53 31 20 3B 27 53 41 56 | #MS11-MS1 ;'SAV| 00003DC0: 49 4E 47 27 0D 4A 53 52 20 4D 53 47 0D 4A 53 52 |ING'.JSR MSG.JSR| 00003DD0: 20 4F 55 54 46 4E 20 3B 3C 46 49 4C 45 20 4E 41 | OUTFN ;<FILE NA| 00003DE0: 4D 45 3E 0D 3B 0D 53 41 56 31 30 30 20 52 54 53 |ME>.;.SAV100 RTS| 00003DF0: 0D 2E 50 41 47 20 27 45 52 52 4F 52 20 48 41 4E |..PAG 'ERROR HAN| 00003E00: 44 4C 45 52 27 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A |DLER'.;*********| 00003E10: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003E20: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B |**************.;| 00003E30: 2A 20 53 54 4F 50 20 2D 2D 20 43 48 45 43 4B 20 |* STOP -- CHECK | 00003E40: 53 54 4F 50 20 4B 45 59 20 46 4C 41 47 20 41 4E |STOP KEY FLAG AN| 00003E50: 44 20 20 20 20 20 2A 0D 3B 2A 20 52 45 54 55 52 |D *.;* RETUR| 00003E60: 4E 20 5A 20 46 4C 41 47 20 53 45 54 20 49 46 20 |N Z FLAG SET IF | 00003E70: 46 4C 41 47 20 54 52 55 45 2E 20 20 20 20 20 2A |FLAG TRUE. *| 00003E80: 0D 3B 2A 20 41 4C 53 4F 20 43 4C 4F 53 45 53 20 |.;* ALSO CLOSES | 00003E90: 41 43 54 49 56 45 20 43 48 41 4E 4E 45 4C 53 20 |ACTIVE CHANNELS | 00003EA0: 41 4E 44 20 20 20 20 20 2A 0D 3B 2A 20 46 4C 55 |AND *.;* FLU| 00003EB0: 53 48 45 53 20 4B 45 59 42 4F 41 52 44 20 51 55 |SHES KEYBOARD QU| 00003EC0: 45 55 45 2E 20 20 20 20 20 20 20 20 20 20 20 20 |EUE. | 00003ED0: 20 2A 0D 3B 2A 20 41 4C 53 4F 20 52 45 54 55 52 | *.;* ALSO RETUR| 00003EE0: 4E 53 20 4B 45 59 20 44 4F 57 4E 53 20 46 52 4F |NS KEY DOWNS FRO| 00003EF0: 4D 20 4C 41 53 54 20 20 20 20 2A 0D 3B 2A 20 4B |M LAST *.;* K| 00003F00: 45 59 42 4F 41 52 44 20 52 4F 57 20 49 4E 20 2E |EYBOARD ROW IN .| 00003F10: 41 2E 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |A. | 00003F20: 20 20 20 2A 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A | *.;**********| 00003F30: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00003F40: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 53 54 |*************.ST| 00003F50: 4F 50 20 4C 44 41 20 53 54 4B 45 59 20 3B 56 41 |OP LDA STKEY ;VA| 00003F60: 4C 55 45 20 4F 46 20 4C 41 53 54 20 52 4F 57 0D |LUE OF LAST ROW.| 00003F70: 43 4D 50 20 23 24 45 46 20 3B 43 48 45 43 4B 20 |CMP #$EF ;CHECK | 00003F80: 53 54 4F 50 20 4B 45 59 20 50 4F 53 49 54 49 4F |STOP KEY POSITIO| 00003F90: 4E 0D 42 4E 45 20 53 54 4F 50 32 20 3B 4E 4F 54 |N.BNE STOP2 ;NOT| 00003FA0: 20 44 4F 57 4E 0D 50 48 50 0D 4A 53 52 20 43 4C | DOWN.PHP.JSR CL| 00003FB0: 52 43 48 20 3B 43 4C 45 41 52 20 43 48 41 4E 4E |RCH ;CLEAR CHANN| 00003FC0: 45 4C 53 0D 4C 44 41 20 23 30 0D 53 54 41 20 4E |ELS.LDA #0.STA N| 00003FD0: 44 58 20 3B 46 4C 55 53 48 20 51 55 45 55 45 0D |DX ;FLUSH QUEUE.| 00003FE0: 50 4C 50 0D 53 54 4F 50 32 20 52 54 53 0D 2E 53 |PLP.STOP2 RTS..S| 00003FF0: 4B 49 20 35 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |KI 5.;**********| 00004000: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00004010: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B 2A 20 20 20 |**********.;* | 00004020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A | *| 00004040: 0D 3B 2A 20 45 52 52 4F 52 20 48 41 4E 44 4C 45 |.;* ERROR HANDLE| 00004050: 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |R | 00004060: 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 20 | *.;* | 00004070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004080: 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 | *.;* | 00004090: 57 49 54 48 20 45 52 52 4F 52 20 23 20 49 4E 20 |WITH ERROR # IN | 000040A0: 2E 41 20 41 4E 44 20 43 41 52 52 59 2E 20 20 20 |.A AND CARRY. | 000040B0: 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 20 | *.;* | 000040C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000040D0: 20 20 20 20 20 20 20 2A 0D 3B 2A 2A 2A 2A 2A 2A | *.;******| 000040E0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 000040F0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B |**************.;| 00004100: 0D 45 52 52 4F 52 31 20 4C 44 41 20 23 31 20 3B |.ERROR1 LDA #1 ;| 00004110: 54 4F 4F 20 4D 41 4E 59 20 46 49 4C 45 53 0D 2E |TOO MANY FILES..| 00004120: 42 59 54 20 24 32 43 0D 45 52 52 4F 52 32 20 4C |BYT $2C.ERROR2 L| 00004130: 44 41 20 23 32 20 3B 46 49 4C 45 20 4F 50 45 4E |DA #2 ;FILE OPEN| 00004140: 0D 2E 42 59 54 20 24 32 43 0D 45 52 52 4F 52 33 |..BYT $2C.ERROR3| 00004150: 20 4C 44 41 20 23 33 20 3B 46 49 4C 45 20 4E 4F | LDA #3 ;FILE NO| 00004160: 54 20 4F 50 45 4E 0D 2E 42 59 54 20 24 32 43 0D |T OPEN..BYT $2C.| 00004170: 45 52 52 4F 52 34 20 4C 44 41 20 23 34 20 3B 46 |ERROR4 LDA #4 ;F| 00004180: 49 4C 45 20 4E 4F 54 20 46 4F 55 4E 44 0D 2E 42 |ILE NOT FOUND..B| 00004190: 59 54 20 24 32 43 0D 45 52 52 4F 52 35 20 4C 44 |YT $2C.ERROR5 LD| 000041A0: 41 20 23 35 20 3B 44 45 56 49 43 45 20 4E 4F 54 |A #5 ;DEVICE NOT| 000041B0: 20 50 52 45 53 45 4E 54 0D 2E 42 59 54 20 24 32 | PRESENT..BYT $2| 000041C0: 43 0D 45 52 52 4F 52 36 20 4C 44 41 20 23 36 20 |C.ERROR6 LDA #6 | 000041D0: 3B 4E 4F 54 20 49 4E 50 55 54 20 46 49 4C 45 0D |;NOT INPUT FILE.| 000041E0: 2E 42 59 54 20 24 32 43 0D 45 52 52 4F 52 37 20 |.BYT $2C.ERROR7 | 000041F0: 4C 44 41 20 23 37 20 3B 4E 4F 54 20 4F 55 54 50 |LDA #7 ;NOT OUTP| 00004200: 55 54 20 46 49 4C 45 0D 2E 42 59 54 20 24 32 43 |UT FILE..BYT $2C| 00004210: 0D 45 52 52 4F 52 38 20 4C 44 41 20 23 38 20 3B |.ERROR8 LDA #8 ;| 00004220: 4D 49 53 53 49 4E 47 20 46 49 4C 45 20 4E 41 4D |MISSING FILE NAM| 00004230: 45 0D 2E 42 59 54 20 24 32 43 0D 45 52 52 4F 52 |E..BYT $2C.ERROR| 00004240: 39 20 4C 44 41 20 23 39 20 3B 42 41 44 20 44 45 |9 LDA #9 ;BAD DE| 00004250: 56 49 43 45 20 23 0D 3B 0D 50 48 41 20 3B 45 52 |VICE #.;.PHA ;ER| 00004260: 52 4F 52 20 4E 55 4D 42 45 52 20 4F 4E 20 53 54 |ROR NUMBER ON ST| 00004270: 41 43 4B 0D 4A 53 52 20 43 4C 52 43 48 20 3B 52 |ACK.JSR CLRCH ;R| 00004280: 45 53 54 4F 52 45 20 49 2F 4F 20 43 48 41 4E 4E |ESTORE I/O CHANN| 00004290: 45 4C 53 0D 3B 0D 4C 44 59 20 23 4D 53 31 2D 4D |ELS.;.LDY #MS1-M| 000042A0: 53 31 0D 3B 0D 4A 53 52 20 4D 53 47 20 3B 50 52 |S1.;.JSR MSG ;PR| 000042B0: 49 4E 54 20 22 43 42 4D 20 49 2F 4F 20 45 52 52 |INT "CBM I/O ERR| 000042C0: 4F 52 20 23 22 0D 50 4C 41 0D 50 48 41 0D 4F 52 |OR #".PLA.PHA.OR| 000042D0: 41 20 23 24 33 30 20 3B 4D 41 4B 45 20 45 52 52 |A #$30 ;MAKE ERR| 000042E0: 4F 52 20 23 20 41 53 43 49 49 0D 4A 53 52 20 42 |OR # ASCII.JSR B| 000042F0: 53 4F 55 54 20 3B 50 52 49 4E 54 20 49 54 0D 3B |SOUT ;PRINT IT.;| 00004300: 0D 45 52 45 58 49 54 20 50 4C 41 0D 53 45 43 0D |.EREXIT PLA.SEC.| 00004310: 52 54 53 0D 2E 50 41 47 20 27 4D 45 53 53 41 47 |RTS..PAG 'MESSAG| 00004320: 45 53 27 0D 4D 53 31 20 2E 42 59 54 20 24 44 2C |ES'.MS1 .BYT $D,| 00004330: 27 49 2F 4F 20 45 52 52 4F 52 20 27 2C 24 41 33 |'I/O ERROR ',$A3| 00004340: 0D 4D 53 35 20 2E 42 59 54 20 24 44 2C 27 53 45 |.MS5 .BYT $D,'SE| 00004350: 41 52 43 48 49 4E 47 27 2C 24 41 30 0D 4D 53 36 |ARCHING',$A0.MS6| 00004360: 20 2E 42 59 54 20 27 46 4F 52 27 2C 24 41 30 0D | .BYT 'FOR',$A0.| 00004370: 4D 53 37 20 2E 42 59 54 20 24 44 2C 27 50 52 45 |MS7 .BYT $D,'PRE| 00004380: 53 53 20 50 4C 41 59 27 2C 24 41 30 0D 4D 53 38 |SS PLAY',$A0.MS8| 00004390: 20 2E 42 59 54 20 27 26 20 52 45 43 4F 52 44 27 | .BYT '& RECORD'| 000043A0: 2C 24 41 30 0D 4D 53 39 20 2E 42 59 54 20 27 4F |,$A0.MS9 .BYT 'O| 000043B0: 4E 20 54 41 50 45 20 27 2C 24 41 33 0D 4D 53 31 |N TAPE ',$A3.MS1| 000043C0: 30 20 2E 42 59 54 20 24 44 2C 27 4C 4F 41 44 49 |0 .BYT $D,'LOADI| 000043D0: 4E 27 2C 24 43 37 0D 4D 53 31 31 20 2E 42 59 54 |N',$C7.MS11 .BYT| 000043E0: 20 24 44 2C 27 53 41 56 49 4E 47 27 2C 24 41 30 | $D,'SAVING',$A0| 000043F0: 0D 4D 53 32 31 20 2E 42 59 54 20 24 44 2C 27 56 |.MS21 .BYT $D,'V| 00004400: 45 52 49 46 59 49 4E 27 2C 24 43 37 0D 4D 53 31 |ERIFYIN',$C7.MS1| 00004410: 37 20 2E 42 59 54 20 24 44 2C 27 46 4F 55 4E 44 |7 .BYT $D,'FOUND| 00004420: 27 2C 24 41 30 0D 4D 53 31 38 20 2E 42 59 54 20 |',$A0.MS18 .BYT | 00004430: 24 44 2C 27 4F 4B 27 2C 24 38 44 0D 4D 53 33 34 |$D,'OK',$8D.MS34| 00004440: 20 2E 42 59 54 20 24 44 2C 27 2A 2A 2A 43 42 4D | .BYT $D,'***CBM| 00004450: 20 4D 4F 4E 49 54 4F 52 20 31 2E 30 2A 2A 2A 27 | MONITOR 1.0***'| 00004460: 2C 24 38 44 0D 4D 53 33 36 20 2E 42 59 54 20 24 |,$8D.MS36 .BYT $| 00004470: 44 2C 27 42 52 45 41 27 2C 24 43 42 0D 2E 53 4B |D,'BREA',$CB..SK| 00004480: 49 20 35 0D 3B 50 52 49 4E 54 20 4D 45 53 53 41 |I 5.;PRINT MESSA| 00004490: 47 45 20 54 4F 20 53 43 52 45 45 4E 20 4F 4E 4C |GE TO SCREEN ONL| 000044A0: 59 20 49 46 0D 3B 4F 55 54 50 55 54 20 45 4E 41 |Y IF.;OUTPUT ENA| 000044B0: 42 4C 45 44 0D 3B 0D 53 50 4D 53 47 0D 4D 53 47 |BLED.;.SPMSG.MSG| 000044C0: 20 4C 44 41 20 4D 53 31 2C 59 0D 50 48 50 0D 41 | LDA MS1,Y.PHP.A| 000044D0: 4E 44 20 23 24 37 46 0D 4A 53 52 20 42 53 4F 55 |ND #$7F.JSR BSOU| 000044E0: 54 0D 49 4E 59 0D 50 4C 50 0D 42 50 4C 20 4D 53 |T.INY.PLP.BPL MS| 000044F0: 47 0D 4D 53 47 31 30 20 43 4C 43 0D 52 54 53 0D |G.MSG10 CLC.RTS.| 00004500: 2E 50 41 47 0D 3B 0D 42 41 53 49 4E 0D 4C 44 41 |.PAG.;.BASIN.LDA| 00004510: 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D 4A 53 | #0.STA $FFF0.JS| 00004520: 52 20 24 46 46 43 46 0D 50 48 41 0D 4C 44 41 20 |R $FFCF.PHA.LDA | 00004530: 4D 45 4D 4D 41 50 0D 53 54 41 20 24 46 46 46 30 |MEMMAP.STA $FFF0| 00004540: 0D 50 4C 41 0D 52 54 53 0D 2E 53 4B 49 20 35 0D |.PLA.RTS..SKI 5.| 00004550: 42 53 4F 55 54 0D 50 48 41 0D 4C 44 41 20 23 30 |BSOUT.PHA.LDA #0| 00004560: 0D 53 54 41 20 24 46 46 46 30 0D 50 4C 41 0D 4A |.STA $FFF0.PLA.J| 00004570: 53 52 20 24 46 46 44 32 0D 4C 44 41 20 4D 45 4D |SR $FFD2.LDA MEM| 00004580: 4D 41 50 0D 53 54 41 20 24 46 46 46 30 0D 52 54 |MAP.STA $FFF0.RT| 00004590: 53 0D 2E 53 4B 49 20 35 0D 43 4C 52 43 48 20 4C |S..SKI 5.CLRCH L| 000045A0: 44 41 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D |DA #0.STA $FFF0.| 000045B0: 4A 53 52 20 52 43 4C 52 43 48 0D 4C 44 41 20 4D |JSR RCLRCH.LDA M| 000045C0: 45 4D 4D 41 50 0D 53 54 41 20 24 46 46 46 30 0D |EMMAP.STA $FFF0.| 000045D0: 52 54 53 0D 2E 53 4B 49 20 35 0D 4C 49 53 54 4E |RTS..SKI 5.LISTN| 000045E0: 20 53 54 41 20 46 41 0D 4C 44 41 20 23 30 0D 53 | STA FA.LDA #0.S| 000045F0: 54 41 20 24 46 46 46 30 0D 4A 53 52 20 52 4C 49 |TA $FFF0.JSR RLI| 00004600: 53 54 4E 0D 4C 44 41 20 4D 45 4D 4D 41 50 0D 53 |STN.LDA MEMMAP.S| 00004610: 54 41 20 24 46 46 46 30 0D 52 54 53 0D 2E 53 4B |TA $FFF0.RTS..SK| 00004620: 49 20 35 0D 53 45 43 4E 44 20 50 48 41 0D 4C 44 |I 5.SECND PHA.LD| 00004630: 41 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D 50 |A #0.STA $FFF0.P| 00004640: 4C 41 0D 4A 53 52 20 52 53 45 43 4E 44 0D 4C 44 |LA.JSR RSECND.LD| 00004650: 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 24 46 46 |A MEMMAP.STA $FF| 00004660: 46 30 0D 52 54 53 0D 2E 53 4B 49 20 35 0D 43 49 |F0.RTS..SKI 5.CI| 00004670: 4F 55 54 20 50 48 41 0D 4C 44 41 20 23 30 0D 53 |OUT PHA.LDA #0.S| 00004680: 54 41 20 24 46 46 46 30 0D 50 4C 41 0D 4A 53 52 |TA $FFF0.PLA.JSR| 00004690: 20 52 43 49 4F 55 54 0D 4C 44 41 20 4D 45 4D 4D | RCIOUT.LDA MEMM| 000046A0: 41 50 0D 53 54 41 20 24 46 46 46 30 0D 52 54 53 |AP.STA $FFF0.RTS| 000046B0: 0D 2E 53 4B 49 20 35 0D 55 4E 4C 53 4E 0D 4C 44 |..SKI 5.UNLSN.LD| 000046C0: 41 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D 4A |A #0.STA $FFF0.J| 000046D0: 53 52 20 52 55 4E 4C 53 4E 0D 4C 44 41 20 4D 45 |SR RUNLSN.LDA ME| 000046E0: 4D 4D 41 50 0D 53 54 41 20 24 46 46 46 30 0D 52 |MMAP.STA $FFF0.R| 000046F0: 54 53 0D 2E 53 4B 49 20 35 0D 54 41 4C 4B 20 53 |TS..SKI 5.TALK S| 00004700: 54 41 20 46 41 0D 4C 44 41 20 23 30 0D 53 54 41 |TA FA.LDA #0.STA| 00004710: 20 24 46 46 46 30 0D 4A 53 52 20 52 54 41 4C 4B | $FFF0.JSR RTALK| 00004720: 0D 4C 44 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 |.LDA MEMMAP.STA | 00004730: 24 46 46 46 30 0D 52 54 53 0D 2E 53 4B 49 20 35 |$FFF0.RTS..SKI 5| 00004740: 0D 54 4B 53 41 20 50 48 41 0D 4C 44 41 20 23 30 |.TKSA PHA.LDA #0| 00004750: 0D 53 54 41 20 24 46 46 46 30 0D 50 4C 41 0D 4A |.STA $FFF0.PLA.J| 00004760: 53 52 20 52 54 4B 53 41 0D 4C 44 41 20 4D 45 4D |SR RTKSA.LDA MEM| 00004770: 4D 41 50 0D 53 54 41 20 24 46 46 46 30 0D 52 54 |MAP.STA $FFF0.RT| 00004780: 53 0D 2E 53 4B 49 20 35 0D 41 43 50 54 52 0D 4C |S..SKI 5.ACPTR.L| 00004790: 44 41 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D |DA #0.STA $FFF0.| 000047A0: 4A 53 52 20 52 41 43 50 54 52 0D 50 48 41 0D 4C |JSR RACPTR.PHA.L| 000047B0: 44 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 24 46 |DA MEMMAP.STA $F| 000047C0: 46 46 30 0D 50 4C 41 0D 52 54 53 0D 2E 53 4B 49 |FF0.PLA.RTS..SKI| 000047D0: 20 35 0D 55 4E 54 4C 4B 0D 4C 44 41 20 23 30 0D | 5.UNTLK.LDA #0.| 000047E0: 53 54 41 20 24 46 46 46 30 0D 4A 53 52 20 52 55 |STA $FFF0.JSR RU| 000047F0: 4E 54 4C 4B 0D 4C 44 41 20 4D 45 4D 4D 41 50 0D |NTLK.LDA MEMMAP.| 00004800: 53 54 41 20 24 46 46 46 30 0D 52 54 53 0D 2E 53 |STA $FFF0.RTS..S| 00004810: 4B 49 20 35 0D 4F 50 45 4E 49 20 50 48 41 0D 4C |KI 5.OPENI PHA.L| 00004820: 44 41 20 23 30 0D 53 54 41 20 24 46 46 46 30 0D |DA #0.STA $FFF0.| 00004830: 50 4C 41 0D 4A 53 52 20 52 4F 50 45 4E 49 0D 4C |PLA.JSR ROPENI.L| 00004840: 44 41 20 4D 45 4D 4D 41 50 0D 53 54 41 20 24 46 |DA MEMMAP.STA $F| 00004850: 46 46 30 0D 52 54 53 0D 2E 45 4E 44 0D |FF0.RTS..END. |
;***************************************
**.;*
*.;* AAA DDDD DDDD OOO N
N *.;* A A D D D D O O
NN N *.;* A A D D D D *** O
O N N N *.;* AAAAA D D D D ***
O O N N N *.;* A A D D D D
O O N NN *.;* A A DDDD DDDD
OOO N N *.;*
*.;* M
M OOO N N *.;* M
M MM O O NN N *.;* ***
M M M O O N N N *.;*
*** M M O O N N N *.;
* M M O O N NN
*.;* M M OOO N N
*.;*
*.;*******************************
*********..SKI 5.;**********************
*******************.;*
*.;* 64K-ADD-ON MO
NITOR *.;*
*.;* THIS PR
OGRAM ALLOWS A USER TO *.;* EXAM
INE, MODIFY, AND RUN PROGRAMS *.;* W
ITH BREAKPOINTS IN THE 64K ADD-ON *.;*
MEMORY. IT IS FUNCTIONALLY THE SAME *
.;* AS THE CBM RESIDENT MONITOR.
*.;*
*.;* 29JAN81 RJF 29JUL81 R
JF *.;*
*.;* CBM PART # 118005 REV B
*.;*
*.;********************
*********************..PAG.;.;VIRTUAL RE
GISTERS.;.PCH *=*+1 ;PROGRAM COUNTER.PCL
*=*+1.FLGS *=*+1 ;PROCESSOR STATUS.ACC
*=*+1 ;ACCUMULATOR.XR *=*+1 ;X INDEX.YR
*=*+1 ;Y INDEX.SP *=*+1 ;STACK POINTER.I
NVH *=*+1 ;USER IRQ VECTOR.INVL *=*+1.M
EMMAP *=*+1 ;ADD-ON CONTROL REG.;.;INDIR
ECT POINTERS.;.STAL *=*+1 ;SAVE STORE P
OINTER.STAH *=*+1.;.SAL *=*+1 ;LOAD/SAVE
START.SAH *=*+1.;.EAL *=*+1 ;LOAD/SAVE
END.EAH *=*+1.;.TMP0 *=*+2 ;MONITOR INDI
RECTS.;.TMP2 *=*+2.;.;WORKING VARIABLES.
;.TMPC *=*+1.SAVX *=*+1.WRAP *=*+1 ;WRAP
FLAG FOR DISPLYM.;.TMPA *=*+1 ;.A SAVE
FOR IRQ.TMPPS *=*+1 ;.P SAVE FOR IRQ..PA
G.;..CINV =$90.CBINV =$92.BUF =$200.FNAD
R =$DA.FNLEN =$D1.CR =$D.BAD =$100.STATU
S =$96.FA =$D4.SA =$D3.RCLRCH =$F2A6.RLI
STN =$F0D5.RSECND =$F143.RCIOUT =$F19E.R
UNLSN =$F1B9.RTALK =$F0D2.RTKSA =$F193.R
ACPTR =$F1C0.RUNTLK =$F1AE.ROPENI =$F4A5
.STKEY =$9B.NDX =$9E..PAG.;.* =1024.SYS
=158 ;BASIC TOKEN VALUE.;.;ENTER COMPILE
D BASIC TEXT.;..BYT 0..WOR INIT-2..WOR $
10..BYT SYS..BYT '(1039)',0,0,0.;.;INITI
ALIZE INTERRUPT PROCESS.;.INIT SEI.LDA #
%10000000.STA MEMMAP.STA $FFF0.JSR SETIR
Q.LDA #%10001000.STA $FFF0.JSR SETIRQ.LD
A MEMMAP.STA $FFF0.;.CLI.JMP TIMC..PAG.S
ETIRQ LDA #<IRQ.STA $FFFE.LDA #>IRQ.STA
$FFFF.LDA #<NMI.STA $FFFA.LDA #>NMI.STA
$FFFB.RTS..SKI 5.;PROCESS IRQ.;.IRQ STA
TMPA ;PRESERVE .A.;.PLA.PHA.STA TMPPS.;.
LDA #%00000000.STA $FFF0.;.;PUSH RETURN
FROM INTERRUPT ADDRESS.;.LDA #>RTIP.PHA.
LDA #<RTIP.PHA.;.LDA TMPPS.PHA ;PUSH DUM
MY STATUS.;.LDA TMPA ;RESTORE .A.;.;GO T
O ROM IRQ SERVICE.;.JMP ($FFFE)..SKI 5.;
PROCESS NMI.;.;PROCESS NMI.;.NMI STA TMP
A ;PRESERVE .A.;.PLA.PHA.STA TMPPS.;.;.L
DA #%00000000.STA $FFF0.;.;PUSH RETURN F
ROM INTERRUPT ADDRESS.;.LDA #>RTIP.PHA.L
DA #<RTIP.PHA.;.LDA TMPPS.PHA ;PUSH DUMM
Y STATUS.;.LDA TMPA.;.;GO TO ROM IRQ SER
VICE.;.JMP ($FFFA)..SKI 5.;RETURN FROM I
NTERRUPT PROCESS.;.RTIP PHA
.;.;MAP BACK TO ORIGINAL RAM.;.LDA MEM
MAP.STA $FFF0.;.;RESTORE OLD .A.;.PLA.;.
;BACK TO USER.;.RTI..PAG 'MONITOR'.;****
****************************************
****.;*
*.;* KERNAL MONITOR
*.;*
*.;* EN
TRY VIA CALL (JMP) OR BREAKPOINT (BRK)
*.;* ---FUNCTIONS---
*.;* <:> ALTER MEMORY
*.;* <;> ALT
ER REGISTERS *.;* <R
> DISPLAY REGISTERS
*.;* <M> DISPLAY MEMORY
*.;* <G> START EXECUTI
ON OF CODE *.;* <L> LOA
D MEMORY *.;* <S
> SAVE MEMORY
*.;* <@> DISK COMMAND
*.;* <*> ADD-ON CONTRO
L REGISTER *.;* <OTHER> LOA
D AND EXECUTE FROM DISK *.;*
*.;* FOR SYNTAX & SEMANTICS SEE CBM K
ERNAL MANUAL *.;* COPYRIGHT (C) 1980 BY
CBM *.;**************
**********************************..PAG
'MONITOR'.;*****CALL ENTRY*****.;.TIMC.L
DA #<TIMB.STA CBINV.LDA #>TIMB.STA CBINV
+1.LDA #MS34-MS1 ;CALL ENTRY.STA TMPC.BN
E B3 ;BRANCH ALWAYS.;.;*****BREAK ENTRY*
****.;.TIMB JSR CLRCH ;CLR CHANNELS.LDA
#MS36-MS1 ;BREAK ENTRY.STA TMPC.CLD .;.;
SAVE .Y,.X,.A,FLAGS, AND PC.;.LDX #5.B1
PLA.STA PCH,X.DEX.BPL B1.;.B3 LDA CINV.S
TA INVL ;SAVE IRQ LOW.LDA CINV+1.STA INV
H ;SAVE IRQ HIGH.;.TSX.STX SP ;SAVE ORIG
INAL SP.CLI ;CLEAR INTS.;.B5 LDY TMPC ;M
ESSAGE CODE.JSR MSG ;PRINT BREAK/CALL.;.
LDA #'R ;DISPLAY REGS ON ENTRY.BNE S0 ;B
RANCH ALWAYS.;.;*****ERROR ENTRY*****.;.
ERROPR JSR OUTQST.PLA.PLA.;.;*****COMMAN
D INTERPRETER ENTRY*****.;.STRTM1=*-1.LD
X #<BUF ;PLACE TO PUT FILE NAME.LDY #>B
UF.STX FNADR.STY FNADR+1.JSR CRLF.;.ST1
JSR BASIN ;READ COMMAND.CMP #$20.BEQ ST1
;SPAN BLANKS.;.;COMMAND INTERPRETER.;.S
0 LDX #0.STX WRAP.STX FNLEN.TAY ;SAVE CU
RRENT COMMAND.;.;PUT RETURN ADDRESS FOR
COMMANDS ON STACK.;.LDA #>STRTM1.PHA.LDA
#<STRTM1.PHA.;.TYA ;CURRENT COMMAND IN
.A.;.S1 CMP CMDS,X ;IS IT THIS ONE?.BNE
S2 ;NOTIT.;.STA SAVX ;SAVE CURRENT COMM
AND.;.;INDIRECT JMP FROM TABLE.;.LDA CMD
S+1,X.STA TMP0.LDA CMDS+2,X.STA TMP0+1.J
MP (TMP0).;.;EACH TABLE ENTRY IS 3 LONG-
--SKIP TO NEXT.;.S2 INX.INX.INX.CPX #CMD
END-CMDS.BCC S1 ;LOOP FOR ALL COMMANDS.;
.;COMMAND NOT IN TABLE...LOOK ON DISK..;
COMMAND NAME CAN BE ANY LENGTH AND.;HAVE
PARAMETERS..;.LDX #0 ;LENGTH TO ZERO.S3
CMP #$D ;END OF NAME?.BEQ S4 ;YES....CM
P #$20 ;BLANK?.BEQ S4 ;YES.STA BUF,X.JSR
BASIN ;GET NEXT.INX ;COUNT CHAR.BNE S3
;AND CONTINUE.;.S4 STA TMPC.TXA ;COUNT.B
EQ S6 ;IS ZERO.;.STA FNLEN.LDA #8.STA FA
;WILL USE DEVICE #8.JSR LOAD ;TRY TO LO
AD COMMAND.BCS S6 ;BAD LOAD....;.LDA TMP
C ;PASS LAST CHARACTER.JMP (STAL) ;GO DO
IT.;.S6 RTS..SKI 3.CMDS .BYT ':' ;ALTER
MEMORY..WOR ALTM..BYT ';' ;ALTER REGIST
ERS..WOR ALTR..BYT 'R' ;DISPLAY REGISTER
S..WOR DSPLYR..BYT 'M' ;DISPLAY MEMORY..
WOR DSPLYM..BYT 'G' ;START EXECUTION..WO
R GO..BYT 'L' ;LOAD MEMORY..WOR LD..BYT
'S' ;SAVE MEMORY..WOR LD..BYT '*' ;MAP M
EMORY..WOR MAPPER..BYT '@' ;DISK COMMAND
(ALTERNATE)..WOR DISK.CMDEND..SKI 5.PUT
P LDA TMP0 ;MOVE TMP0 TO PCH,PCL.STA PCL
.LDA TMP0+1.STA PCH.RTS..SKI 5.SETR LDA
#<FLGS ;SET TO ACCESS REGS.STA TMP0.LDA
#>FLGS.STA TMP0+1.LDA #5.RTS..SKI 5.;PRI
NTS ':' OR ';' BEFORE DATA TO PERMIT.;AL
TER AFTER 'M' OR 'R' COMMAND.;.ALTRIT PH
A ;PRESERVE ALTER CHARACTER.JSR CRLF.PLA
.JSR BSOUT..SKI 3.SPACE LDA #$20 ;OUTPUT
A SPACE..BYT $2C ;SKIP TWO BYTES.OUTQST
LDA #'? ;OUTPUT QUESTION..BYT $2C ;SKIP
TWO BYTES.CRLF LDA #$D ;DO CARRIAGE RET
URN.JMP BSOUT..SKI 5.;DATA FOR REGISTER
DISPLAY HEADING.;.REGK .BYT CR,$20,$20 ;
3 SPACES..BYT ' PC ',' IRQ ',' SR AC XR
YR SP'..SKI 5.;DISPLAY REGISTER FUNCTION
.;.DSPLYR LDX #0.D2 LDA REGK,X.JSR BSOUT
;PRINT HEADING.INX.CPX #DSPLYR-REGK ;MA
X LENGTH.BNE D2.LDA #';.JSR ALTRIT ;ALLO
W ALTER AFTER DISPLAY.LDX PCH.LDY PCL.JS
R WROA ;PRINT PROGRAM COUNTER.JSR SPACE
.LDX INVH.LDY INVL.JSR WROA ;PRINT IRQ V
ECTOR.JSR SETR ;SET TO PRINT .P,.A,.X,.Y
,.S.;.;DISPLAY MEMORY SUBROUTINE.;.DM ST
A TMPC ;BYTE COUNT.LDY #0 ;INDIRECT INDE
X.DM1 JSR SPACE ;SPACE TWEEN BYTES.LDA (
TMP0)Y.JSR WROB ;WRITE BYTE OF MEMORY.;.
;INCREMENT INDIRECT.;.INC TMP0.BNE DM2.I
NC TMP0+1.BNE DM2.INC WRAP.;.DM2 DEC TMP
C ;COUNT BYTES.BNE DM1 ;UNTIL ZERO.RTS..
SKI 5.;DISPLAY MEMORY FUNCTION.;.DSPLYM
JSR RDOA ;READ START ADR.BCS ERRS1 ;ERR
IF NO SA.JSR T2T2 ;SA TO TMP2.;.;ALLOW U
SER TO TYPE JUST ONE ADDRESS.;.JSR RDOA
;READ END ADR.BCC DSP10 ;GOOD...NO DEFAU
LT.;.LDA TMP2.STA TMP0 ;DEFAULT LOW BYTE
.LDA TMP2+1.STA TMP0+1 ;DEFAULT HI BYTE.
;.DSP10 JSR T2T2 ;SA TO TMP0, EA TO TMP2
.DSP1 JSR STOP ;STOP KEY?.BEQ BEQS1 ;YES
...BREAK LIST.;.LDA #':.JSR ALTRIT ;ALLO
W ALTER.LDX TMP0+1.LDY TMP0.JSR WROA ;WR
ITE START ADDRESS.LDA #8 ;COUNT OF BYTES
.JSR DM ;DISPLAY BYTES.LDA WRAP.BNE BEQS
1.;.;CHECK FOR END OF DISPLAY.;.SEC.LDA
TMP2.SBC TMP0.LDA TMP2+1.SBC TMP0+1.BCS
DSP1 ;END >= START.;.BEQS1 RTS ;A.O.K.
EXIT.;.ERRS1 JMP ERROPR ;SYNTAX ERROR..S
KI 5.;ALTER REGISTER FUNCTION.;.ALTR JSR
RDOA ;READ NEW PC.BCS ERRS1 ;ERROR...NO
ADDRESS.;.JSR PUTP ;ALTER PC.;.JSR RDOA
;READ NEW IRQ.BCS ERRS1 ;ERROR...NO ADD
RESS.;.LDA TMP0.STA INVL ;ALTER IRQ VECT
OR.LDA TMP0+1.STA INVH.;.JSR SETR ;SET T
O ALTER R'S.BNE A4 ;BRANCH ALWAYS..SKI 5
.;ALTER MEMORY - READ ADR AND DATA.;.ALT
M JSR RDOA ;READ ALTER ADR.BCS ERRS1 ;IF
SPACE,ERR.;.LDA #8 ;ALLOW 8 BYTES CHANG
E.;.;COMMON CODE FOR ':' AND ';'.;.A4 ST
A TMPC ;NUMBER OF BYTES TO CHANGE.;.A5 J
SR RDOB ;READ BYTE.BCS A9 ;NONE...END OF
LINE.;.LDX #0.STA (TMP0,X) ;STORE IT AW
AY.;.;INCREMENT STORE ADDRESS.;.INC TMP0
.BNE A6.INC TMP0+1.;.A6 DEC TMPC ;COUNT
BYTE.BNE A5 ;UNTIL ZERO.;.A9 RTS..SKI 5.
;MAP MEMORY.;.MAPPER JSR RDOB.STA MEMMAP
.RTS..SKI 5.;START EXECUTION FUNCTION.;.
GO JSR RDOC ;SEE IF DEFAULT.BEQ G1 ;YES.
..PC IS ADDRESS.;.JSR RDOA ;NO...GET NEW
ADDR.BCS ERRL ;ERROR...ADDRESS SCREWED
UP.;.JSR PUTP ;MOVE ADDR TO P.C..;.G1 LD
X SP.TXS ;ORIG OR NEW SP VALUE TO SP.;.S
EI ;PREVENT DISASTER.;.LDA INVH.STA CINV
+1 ;SET UP IRQ VECTOR.LDA INVL.STA CINV
.;.;GET FLAGS,PCH,PCL,.A,.X,.Y.;.LDX #0.
G2 LDA PCH,X.PHA ;EVERYBODY ON STACK.INX
.CPX #6.BNE G2.;.;INTERRUPT RETURN SETS
EVERYBODY UP.;FROM DATA ON STACK.;.PREND
PLA.TAY.PLA.TAX.PLA.RTI..SKI 3.ERRL JMP
ERROPR ;SYNTAX ERROR JUMP..SKI 3.;LOAD
RAM FUNCTION.;.LD LDY #1.STY FA ;DEFAULT
DEVICE #1.DEY ;.Y=0 TO COUNT NAME LENGT
H.;.L1 JSR RDOC ;DEFAULT?.BEQ L5 ;YES...
TRY LOAD.;.CMP #' .BEQ L1 ;SPAN BLANKS.;
.CMP #'" ;STRING NEXT?.L2 BNE ERRL ;NO F
ILE NAME....;.L3 JSR RDOC ;GET CHARACTER
OF NAME.BEQ L5 ;END...ASSSUME LOAD.;.CM
P #'" ;END OF STRING?.BEQ L8 ;YES...COUL
D STILL BE 'L' OR 'S'.;.STA (FNADR)Y ;ST
ORE NAME.INC FNLEN.INY.CPY #16 ;MAX FILE
NAME LENGTH.;.L4 BEQ ERRL ;FILE NAME TO
O LONG.BNE L3 ;BRANCH ALWAYS.;.;SEE IF W
E GOT A LOAD.;.L5 LDA SAVX ;GET LAST COM
MAND.CMP #'L.BNE L2 ;NO..NOT A LOAD..ERR
OR.;.JMP LOAD ;YES...DO LOAD.;.L8 JSR RD
OC ;MORE STUFF?.BEQ L5 ;NO...DEFUALT LOA
D.;.CMP #', ;DELEIMETER?.L9 BNE L2 ;NO..
.BAD SYNTAX.;.JSR RDOB ;YES...GET NEXT P
ARM.BCS L15 ;NOT GOOD.;.STA FA.;.JSR RDO
C ;MORE PARMS?.BEQ L5 ;NO...DEFAULT LOAD
.;.CMP #', ;DELIMETER?.L12 BNE L9 ;NO...
BAD SYNTAX.;.JSR RDOA ;START ADDRESS?.BC
S L15 ;NO...BAD.;.JSR T2T2 ;PRESERVE STA
RT.JSR BASIN ;DELIMETER?.CMP #',.L13 BNE
L12 ;NO....JSR RDOA ;TRY TO READ END.BC
S L15 ;NONE...ERROR.;.;SET UP END SAVE A
DDRESS.;.LDA TMP0.STA EAL.LDA TMP0+1.STA
EAH.JSR T2T2.;.L20 JSR BASIN.CMP #$20.B
EQ L20 ;SPAN BLANKS.;.CMP #CR.L14 BNE L1
3 ;MISSING CR AT END.LDA SAVX ;WAS COMMA
ND SAVE?.CMP #'S.BNE L14 ;NO...LOAD CAN'
T HAVE PARMS.JMP SAVE.;.L15 JMP ERROPR..
SKI 5.;WRITE ADR FROM TMP0 STORES.;.WROA
TXA ;HI-BYTE.JSR WROB.TYA ;LOW-BYTE..SK
I 3.;WRITE BYTE --- A = BYTE.;UNPACK BYT
E DATA INTO TWO ASCII.;CHARACTERS. A=BYT
E; X,A=CHARS.WROB PHA.LSR A.LSR A.LSR A.
LSR A.JSR ASCII ;CONVERT TO ASCII.TAX.PL
A.AND #$0F..SKI 3.;CONVERT NYBBLE IN A T
O ASCII AND.;PRINT IT.;.ASCII CLC.ADC #$
F6.BCC ASC1.ADC #$06.ASC1 ADC #$3A.JMP B
SOUT..SKI 5.;EXCHANGE TEMPORARIES.;.T2T2
LDX #2.T2T21 LDA TMP0-1,X.PHA.LDA TMP2-
1,X.STA TMP0-1,X .PLA.STA TMP2-1,X.DEX.B
NE T2T21.RTS..SKI 5.;READ HEX ADR,RETURN
HI IN TMP0,.;LO IN TMP0+1,AND CY=1.;IF
SP CY=0.;.RDOA JSR RDOB ;READ 2-CHAR BYT
E.BCS RDOA2 ;SPACE.STA TMP0+1.JSR RDOB.S
TA TMP0.RDOA2 RTS.;READ HEX BYTE AND RET
URN IN A.;AND CY=0 IF SP CY=1.RDOB LDA #
0 ;SPACE.STA BAD ;READ NEXT CHAR.JSR RDO
C.BEQ RDOB4 ;FAIL ON CR.CMP #' ;BLANK?.
BEQ RDOB ;SPAN BLANKS....;.JSR HEXIT ;CO
NVERT TO HEX NYBBLE.ASL A.ASL A.ASL A.AS
L A.STA BAD.JSR RDOC ;2ND CHAR ASSUMED H
EX.BEQ RDOB4 ;FAIL ON CR.JSR HEXIT.ORA B
AD.;.RDOB4 RTS..SKI 5.;CONVERT ASCII CHA
R TO HEX NYBBLE.;.HEXIT CMP #$3A.PHP ;SA
VE FLAGS.AND #$0F.PLP.BCC HEX09 ;0-9.ADC
#8 ;ALPHA ADD 8+CY=9.HEX09 RTS..SKI 5.;
GET CHARACTER AND TEST FOR CR.;.RDOC JSR
BASIN.CMP #$0D ;IS IT A CR.RTS ;RETURN
WITH FLAGS..SKI 5.;SEND DISK COMMAND OR
READ STATUS.;.DISK LDA #0 ;CLEAR STATUS
@ I/O BEGIN.STA STATUS.;.JSR RDOC ;SEE I
F STATUS CHECK.BEQ DISK20 ;YES.;.PHA.LDA
#8 ;FLOPPY IS DEVICE #8.JSR LISTN ;TELL
FLOPPY TO RECEIVE.LDA #15+$60.JSR SECND
;ON COMMAND CHANNEL.;.PLA.LDX STATUS ;E
RROR?.BPL DISK15 ;NO...OK.;.DISK5 JMP ER
ROR5 ;DEVICE NOT PRESENT.;.DISK10 JSR BA
SIN ;GET A CHARACTER.DISK15 CMP #$D ;SEE
IF END.PHP ;SAVE FOR LATER.JSR CIOUT ;O
UT TO FLOPPY.PLP ;END?.BNE DISK10 ;NO...
CONTINUE.;.JMP UNLSN ;YES...FLOPPY DONE.
;.DISK20 JSR CRLF.LDA #8 ;FLOPPY IS DEVI
CE #8.JSR TALK ;TELL FLOPPY TO SPEAK.LDA
#15+$60.JSR TKSA ;FROM ERROR CHANNEL.;.
LDA STATUS ;AN ERROR?.BMI DISK5 ;YES....
;.DISK25 JSR ACPTR ;GET A CHARACTER.CMP
#$D ;SEE IF END.PHP ;TEST LATER.JSR BSOU
T ;OUT TO SCREEN.PLP ;END?.BNE DISK25 ;N
O....JMP UNTLK ;YES...FLOPPY DONE..PAG '
LOAD FUNCTION'.;************************
**********.;* LOAD RAM FUNCTION
*.;*
*.;* LOADS FROM CASSETTE 1 OR 2, OR *.;
* IEEE BUS DEVICES >=4 TO 31 AS *.;* DE
TERMINED BY CONTENTS OF *.;* VARIAB
LE FA. VERIFY FLAG IN .A *.;* HIGH LOAD
RETURN IN X,Y. *.;* .A=0 PERFORMS
LOAD,<> IS VERIFY*.;*
*.;************************
**********..SKI 3.LOAD.LDA #0.STA STATUS
.;.LDA FA ;CHECK DEVICE NUMBER.CMP #4.BC
S LD20.;.LD10 JMP ERROR9 ;BAD DEVICE #.;
.LD20.;.;LOAD FROM CBM IEEE DEVICE.;.LDA
#$60 ;SPECIAL LOAD COMMAND.STA SA.;.LDY
FNLEN ;MUST HAVE FILE NAME.BNE LD25 ;YE
S...OK.;.JMP ERROR8 ;MISSING FILE NAME.;
.LD25 JSR LUKING ;TELL USER LOOKING.JSR
OPENI ;OPEN THE FILE.;.LDA FA.JSR TALK ;
ESTABLISH THE CHANNEL.LDA SA.JSR TKSA ;T
ELL IT TO LOAD.;.JSR ACPTR ;GET FIRST BY
TE.STA EAL.STA STAL.;.LDA STATUS ;TEST S
TATUS FOR ERROR.LSR A.LSR A.BCS LD90 ;FI
LE NOT FOUND....JSR ACPTR.STA EAH.STA ST
AH.;.JSR LODING ;TELL USER LOADING.;.LD4
0 LDA #$FD ;MASK OFF TIMEOUT.AND STATUS.
STA STATUS.;.JSR STOP ;STOP KEY?.BNE LD4
5 ;NO....;.JMP BREAK ;STOP KEY PRESSED.;
.LD45 JSR ACPTR ;GET BYTE OFF IEEE.TAX.L
DA STATUS ;WAS THERE A TIMEOUT?.LSR A.LS
R A.BCS LD40 ;YES...TRY AGAIN.TXA.LDY #0
.STA (EAL)Y.LD60 INC EAL ;INCREMENT STOR
E ADDR.BNE LD64.INC EAH.LD64 BIT STATUS
;EOI?.BVC LD40 ;NO...CONTINUE LOAD.;.JSR
UNTLK ;CLOSE CHANNEL.JSR CLSEI ;CLOSE T
HE FILE.BCC LD180 ;BRANCH ALWAYS.;.LD90
JMP ERROR4 ;FILE NOT FOUND.;.;.LD180 CLC
;GOOD EXIT.;.;SET UP END LOAD ADDRESS.;
.LDX EAL.LDY EAH.;.LD190 RTS..SKI 5.;SUB
ROUTINE TO PRINT TO CONSOLE:.;.;SEARCHIN
G [FOR NAME].;.LUKING.LDY #MS5-MS1 ;"SEA
RCHING".JSR MSG.LDA FNLEN.BEQ LD115.LDY
#MS6-MS1 ;"FOR".JSR MSG..SKI 3.;SUBROUTI
NE TO OUTPUT FILE NAME.;.OUTFN.LDY #0.LD
110 LDA (FNADR)Y.JSR BSOUT.INY.CPY FNLEN
.BNE LD110.;.LD115 RTS..SKI 3.;SUBROUTIN
E TO PRINT:.;.;LOADING/VERIFING.;.LODING
LDY #MS10-MS1 ;ASSUME 'LOADING'.LD410 J
MP SPMSG..PAG 'SAVE FUNCTION'.;*********
**************************.;* SAVE
*.;*
*.;* SAVES TO CASSETT
E 1 OR 2, OR *.;* IEEE DEVICES 4>=N>=
31 AS SELECT-*.;* ED BY VARIABLE FA.
*.;*
*.;*START OF SAVE IS MEMSTR...END
OF*.;*SAVE IS .X,.Y *
.;***********************************..S
KI 3.SAVE LDA FA ***MONITOR ENTRY.CMP #
4.BCS SV20.;.SV10 JMP ERROR9 ;BAD DEVICE
#.;.SV20.LDA #$61.STA SA.LDY FNLEN.BNE
SV25.;.JMP ERROR8 ;MISSING FILE NAME.;.S
V25 JSR OPENI.JSR SAVING.LDA FA.JSR LIST
N.LDA SA.JSR SECND.LDY #0.LDA STAH.STA S
AH.LDA STAL.STA SAL.JSR CIOUT.LDA SAH.JS
R CIOUT.SV30 SEC.LDA SAL.SBC EAL.LDA SAH
.SBC EAH.BCS SV50 ;HAVE REACHED END.LDA
(SAL)Y.JSR CIOUT.JSR STOP.BNE SV40.;.BRE
AK JSR CLSEI.LDA #0.SEC.RTS.;.SV40 INC S
AL.BNE INCR.INC SAH.INCR.BNE SV30.SV50 J
SR UNLSN..SKI 5.CLSEI BIT SA.BMI CLSEI2.
LDA FA.JSR LISTN.LDA SA.AND #$EF.ORA #$E
0.JSR SECND.JSR UNLSN.;.CLSEI2 CLC.RTS..
SKI 5..SKI 3.;SUBROUTINE TO OUTPUT:.;'SA
VING <FILE NAME>'.;.SAVING.;.LDY #MS11-M
S1 ;'SAVING'.JSR MSG.JSR OUTFN ;<FILE NA
ME>.;.SAV100 RTS..PAG 'ERROR HANDLER'.;*
**************************************.;
* STOP -- CHECK STOP KEY FLAG AND *.
;* RETURN Z FLAG SET IF FLAG TRUE. *
.;* ALSO CLOSES ACTIVE CHANNELS AND
*.;* FLUSHES KEYBOARD QUEUE.
*.;* ALSO RETURNS KEY DOWNS FROM LAST
*.;* KEYBOARD ROW IN .A.
*.;**********************************
*****.STOP LDA STKEY ;VALUE OF LAST ROW.
CMP #$EF ;CHECK STOP KEY POSITION.BNE ST
OP2 ;NOT DOWN.PHP.JSR CLRCH ;CLEAR CHANN
ELS.LDA #0.STA NDX ;FLUSH QUEUE.PLP.STOP
2 RTS..SKI 5.;**************************
**********.;*
*.;* ERROR HANDLER
*.;*
*.;* WITH ERROR # IN .A AND CARRY.
*.;* *
.;************************************.;
.ERROR1 LDA #1 ;TOO MANY FILES..BYT $2C.
ERROR2 LDA #2 ;FILE OPEN..BYT $2C.ERROR3
LDA #3 ;FILE NOT OPEN..BYT $2C.ERROR4 L
DA #4 ;FILE NOT FOUND..BYT $2C.ERROR5 LD
A #5 ;DEVICE NOT PRESENT..BYT $2C.ERROR6
LDA #6 ;NOT INPUT FILE..BYT $2C.ERROR7
LDA #7 ;NOT OUTPUT FILE..BYT $2C.ERROR8
LDA #8 ;MISSING FILE NAME..BYT $2C.ERROR
9 LDA #9 ;BAD DEVICE #.;.PHA ;ERROR NUMB
ER ON STACK.JSR CLRCH ;RESTORE I/O CHANN
ELS.;.LDY #MS1-MS1.;.JSR MSG ;PRINT "CBM
I/O ERROR #".PLA.PHA.ORA #$30 ;MAKE ERR
OR # ASCII.JSR BSOUT ;PRINT IT.;.EREXIT
PLA.SEC.RTS..PAG 'MESSAGES'.MS1 .BYT $D,
'I/O ERROR ',$A3.MS5 .BYT $D,'SEARCHING'
,$A0.MS6 .BYT 'FOR',$A0.MS7 .BYT $D,'PRE
SS PLAY',$A0.MS8 .BYT '& RECORD',$A0.MS9
.BYT 'ON TAPE ',$A3.MS10 .BYT $D,'LOADI
N',$C7.MS11 .BYT $D,'SAVING',$A0.MS21 .B
YT $D,'VERIFYIN',$C7.MS17 .BYT $D,'FOUND
',$A0.MS18 .BYT $D,'OK',$8D.MS34 .BYT $D
,'***CBM MONITOR 1.0***',$8D.MS36 .BYT $
D,'BREA',$CB..SKI 5.;PRINT MESSAGE TO SC
REEN ONLY IF.;OUTPUT ENABLED.;.SPMSG.MSG
LDA MS1,Y.PHP.AND #$7F.JSR BSOUT.INY.PL
P.BPL MSG.MSG10 CLC.RTS..PAG.;.BASIN.LDA
#0.STA $FFF0.JSR $FFCF.PHA.LDA MEMMAP.S
TA $FFF0.PLA.RTS..SKI 5.BSOUT.PHA.LDA #0
.STA $FFF0.PLA.JSR $FFD2.LDA MEMMAP.STA
$FFF0.RTS..SKI 5.CLRCH LDA #0.STA $FFF0.
JSR RCLRCH.LDA MEMMAP.STA $FFF0.RTS..SKI
5.LISTN STA FA.LDA #0.STA $FFF0.JSR RLI
STN.LDA MEMMAP.STA $FFF0.RTS..SKI 5.SECN
D PHA.LDA #0.STA $FFF0.PLA.JSR RSECND.LD
A MEMMAP.STA $FFF0.RTS..SKI 5.CIOUT PHA.
LDA #0.STA $FFF0.PLA.JSR RCIOUT.LDA MEMM
AP.STA $FFF0.RTS..SKI 5.UNLSN.LDA #0.STA
$FFF0.JSR RUNLSN.LDA MEMMAP.STA $FFF0.R
TS..SKI 5.TALK STA FA.LDA #0.STA $FFF0.J
SR RTALK.LDA MEMMAP.STA $FFF0.RTS..SKI 5
.TKSA PHA.LDA #0.STA $FFF0.PLA.JSR RTKSA
.LDA MEMMAP.STA $FFF0.RTS..SKI 5.ACPTR.L
DA #0.STA $FFF0.JSR RACPTR.PHA.LDA MEMMA
P.STA $FFF0.PLA.RTS..SKI 5.UNTLK.LDA #0.
STA $FFF0.JSR RUNTLK.LDA MEMMAP.STA $FFF
0.RTS..SKI 5.OPENI PHA.LDA #0.STA $FFF0.
PLA.JSR ROPENI.LDA MEMMAP.STA $FFF0.RTS.
.END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL