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

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL