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

CBM64DOS.SRC

FILE INFORMATION

FILENAME(S): CBM64DOS.SRC

FILE TYPE(S): SEQ

FILE SIZE: 10.4K

FIRST SEEN: 2025-11-30 21:11:19

APPEARS ON: 1 disk(s)

FILE HASH

41bfe814c5e7a7bb4dd5f6eb02270ace9a533dfc86d80869cdb4e533c8eab6c6

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
13 MAART 83 15 CBM64DOS.SRC SEQ DuncanTwain 15 19 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 50 55 54 22 40 31 3A  43 42 4D 36 34 44 4F 53  |;PUT"@1:CBM64DOS|
00000010: 2E 53 52 43 22 0D 3B 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.SRC".;*********|
00000020: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000030: 2A 2A 2A 2A 2A 2A 0D 3B  2A 0D 3B 2A 20 20 50 45  |******.;*.;*  PE|
00000040: 54 20 44 4F 53 20 53 55  50 50 4F 52 54 0D 3B 2A  |T DOS SUPPORT.;*|
00000050: 0D 3B 2A 20 20 20 20 30  34 2D 32 37 2D 37 39 0D  |.;*    04-27-79.|
00000060: 3B 2A 0D 3B 2A 20 20 42  4F 42 20 46 41 49 52 42  |;*.;*  BOB FAIRB|
00000070: 41 49 52 4E 0D 3B 2A 0D  3B 2A 2A 2A 2A 2A 2A 2A  |AIRN.;*.;*******|
00000080: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000090: 2A 2A 2A 2A 2A 2A 2A 2A  0D 3B 2A 0D 3B 2A 20 56  |********.;*.;* V|
000000A0: 45 52 53 49 4F 4E 20 33  2E 31 20 36 2F 31 34 2F  |ERSION 3.1 6/14/|
000000B0: 37 39 0D 3B 2A 20 20 20  20 41 44 44 20 40 20 50  |79.;*    ADD @ P|
000000C0: 52 4F 4D 50 54 20 46 4F  52 20 42 55 53 49 4E 45  |ROMPT FOR BUSINE|
000000D0: 53 53 0D 3B 2A 20 20 20  20 4B 45 59 42 4F 41 52  |SS.;*    KEYBOAR|
000000E0: 44 2E 20 41 44 44 20 53  54 4F 50 20 4B 45 59 20  |D. ADD STOP KEY |
000000F0: 43 48 45 43 4B 0D 3B 2A  20 20 20 20 49 4E 20 44  |CHECK.;*    IN D|
00000100: 49 52 45 43 54 4F 52 59  20 50 52 49 4E 54 2E 20  |IRECTORY PRINT. |
00000110: 41 44 44 0D 3B 2A 20 20  20 20 48 41 4C 54 20 49  |ADD.;*    HALT I|
00000120: 4E 20 44 49 52 45 43 54  4F 52 59 20 50 52 49 4E  |N DIRECTORY PRIN|
00000130: 54 0D 3B 2A 0D 3B 2A 20  56 45 52 53 49 4F 4E 20  |T.;*.;* VERSION |
00000140: 33 2E 32 20 37 2F 32 2F  37 39 0D 3B 2A 20 20 20  |3.2 7/2/79.;*   |
00000150: 20 46 4F 52 20 28 2D 30  34 29 20 52 4F 4D 20 50  | FOR (-04) ROM P|
00000160: 52 4F 42 4C 45 4D 53 0D  3B 2A 20 20 20 20 57 49  |ROBLEMS.;*    WI|
00000170: 54 48 20 4C 4F 41 44 20  41 44 44 52 45 53 53 20  |TH LOAD ADDRESS |
00000180: 4F 4E 45 20 4F 46 46 0D  3B 2A 20 20 20 20 42 59  |ONE OFF.;*    BY|
00000190: 54 45 20 4C 4F 57 2E 0D  3B 2A 0D 3B 2A 20 56 45  |TE LOW..;*.;* VE|
000001A0: 52 53 49 4F 4E 20 33 2E  33 20 37 2F 32 2F 37 39  |RSION 3.3 7/2/79|
000001B0: 0D 3B 2A 20 20 20 20 41  44 44 20 53 54 41 43 4B  |.;*    ADD STACK|
000001C0: 20 4C 4F 4F 4B 55 50 20  46 4F 52 0D 3B 2A 20 20  | LOOKUP FOR.;*  |
000001D0: 20 20 41 43 54 49 56 41  54 49 4F 4E 2E 0D 3B 2A  |  ACTIVATION..;*|
000001E0: 0D 3B 2A 20 56 45 52 53  49 4F 4E 20 34 2E 30 20  |.;* VERSION 4.0 |
000001F0: 37 2F 35 2F 37 39 0D 3B  2A 20 20 20 20 41 44 44  |7/5/79.;*    ADD|
00000200: 20 43 4F 4E 54 52 4F 4C  20 46 4F 52 20 43 4D 44  | CONTROL FOR CMD|
00000210: 20 44 55 52 49 4E 47 0D  3B 2A 20 20 20 20 41 20  | DURING.;*    A |
00000220: 44 49 52 45 43 54 4F 52  59 20 4C 49 53 54 49 4E  |DIRECTORY LISTIN|
00000230: 47 2E 0D 3B 2A 0D 3B 2A  0D 3B 2A 20 56 45 52 53  |G..;*.;*.;* VERS|
00000240: 49 4F 4E 20 34 2E 31 20  31 31 2F 37 2F 37 39 0D  |ION 4.1 11/7/79.|
00000250: 3B 2A 20 20 20 20 52 45  4D 4F 56 45 20 4D 4F 44  |;*    REMOVE MOD|
00000260: 53 20 46 52 4F 4D 20 34  2E 30 2E 20 43 41 4C 4C  |S FROM 4.0. CALL|
00000270: 0D 3B 2A 20 20 20 20 46  41 53 54 20 57 45 44 47  |.;*    FAST WEDG|
00000280: 45 20 34 2E 31 2E 0D 3B  2A 0D 3B 2A 0D 3B 2A 20  |E 4.1..;*.;*.;* |
00000290: 56 45 52 53 49 4F 4E 20  34 2E 32 20 31 32 2F 31  |VERSION 4.2 12/1|
000002A0: 37 2F 37 39 0D 3B 2A 20  20 20 20 53 45 54 20 55  |7/79.;*    SET U|
000002B0: 50 20 46 4F 52 20 42 41  53 49 43 20 34 2E 30 20  |P FOR BASIC 4.0 |
000002C0: 41 4E 44 0D 3B 2A 20 20  20 20 32 2E 30 20 28 4E  |AND.;*    2.0 (N|
000002D0: 4F 20 43 48 41 4E 47 45  53 29 0D 3B 2A 0D 3B 2A  |O CHANGES).;*.;*|
000002E0: 0D 3B 2A 20 56 45 52 53  49 4F 4E 20 35 2E 30 20  |.;* VERSION 5.0 |
000002F0: 31 32 2F 31 36 2F 38 31  2D 30 32 2F 31 30 2F 38  |12/16/81-02/10/8|
00000300: 32 0D 3B 2A 20 20 20 20  41 44 44 20 4E 45 57 20  |2.;*    ADD NEW |
00000310: 43 4F 4D 4D 41 4E 44 53  2C 20 41 4C 4C 4F 57 20  |COMMANDS, ALLOW |
00000320: 54 4F 20 57 4F 52 4B 20  49 4E 0D 3B 2A 20 20 20  |TO WORK IN.;*   |
00000330: 20 52 55 4E 4E 49 4E 47  20 50 52 4F 47 52 41 4D  | RUNNING PROGRAM|
00000340: 2E 20 50 55 54 20 56 4F  4C 55 4D 45 20 4E 41 4D  |. PUT VOLUME NAM|
00000350: 45 53 0D 3B 2A 20 20 20  20 49 4E 20 41 4C 4C 20  |ES.;*    IN ALL |
00000360: 43 4F 4D 4D 41 4E 44 53  20 55 53 49 4E 47 20 42  |COMMANDS USING B|
00000370: 52 41 43 4B 45 54 53 0D  3B 2A 20 20 20 20 4F 4E  |RACKETS.;*    ON|
00000380: 4C 59 20 57 4F 52 4B 53  20 57 49 54 48 20 42 41  |LY WORKS WITH BA|
00000390: 53 49 43 34 2E 30 0D 3B  2A 0D 3B 2A 0D 3B 2A 20  |SIC4.0.;*.;*.;* |
000003A0: 56 45 52 53 49 4F 4E 20  35 2E 31 2F 36 34 20 20  |VERSION 5.1/64  |
000003B0: 20 30 36 2F 30 37 2F 38  32 2D 30 37 2F 31 33 2F  | 06/07/82-07/13/|
000003C0: 38 32 0D 3B 2A 20 20 20  20 4D 41 4B 45 20 57 4F  |82.;*    MAKE WO|
000003D0: 52 4B 20 57 49 54 48 20  43 4F 4D 4D 4F 44 4F 52  |RK WITH COMMODOR|
000003E0: 45 20 36 34 0D 3B 2A 0D  2E 50 41 47 45 0D 3B 0D  |E 64.;*..PAGE.;.|
000003F0: 3B 42 41 53 49 43 20 56  41 52 49 41 42 4C 45 53  |;BASIC VARIABLES|
00000400: 20 55 53 45 44 0D 3B 0D  53 41 4C 20 3D 24 41 43  | USED.;.SAL =$AC|
00000410: 20 3B 49 4E 44 49 52 45  43 54 20 50 4F 49 4E 54  | ;INDIRECT POINT|
00000420: 45 52 20 4C 4F 0D 53 41  48 20 3D 24 41 44 20 3B  |ER LO.SAH =$AD ;|
00000430: 48 49 0D 42 55 46 50 54  20 3D 24 41 36 20 3B 43  |HI.BUFPT =$A6 ;C|
00000440: 41 53 53 45 54 54 45 20  28 54 57 4F 20 42 59 54  |ASSETTE (TWO BYT|
00000450: 45 53 29 0D 43 4E 54 44  4E 20 3D 24 41 35 20 3B  |ES).CNTDN =$A5 ;|
00000460: 53 41 56 45 20 41 52 45  41 0D 54 58 54 54 41 42  |SAVE AREA.TXTTAB|
00000470: 20 3D 24 32 42 20 3B 50  4F 49 4E 54 45 52 20 54  | =$2B ;POINTER T|
00000480: 4F 20 42 41 53 49 43 20  53 54 41 52 54 0D 4D 45  |O BASIC START.ME|
00000490: 4D 53 49 5A 20 3D 24 33  37 20 3B 50 4F 49 4E 54  |MSIZ =$37 ;POINT|
000004A0: 45 52 20 54 4F 20 54 4F  50 20 4D 45 4D 0D 54 58  |ER TO TOP MEM.TX|
000004B0: 54 50 54 52 20 3D 24 37  41 20 3B 50 4F 49 4E 54  |TPTR =$7A ;POINT|
000004C0: 45 52 20 54 4F 20 42 55  46 0D 53 41 54 55 53 20  |ER TO BUF.SATUS |
000004D0: 3D 24 39 30 20 3B 53 54  41 54 55 53 20 42 59 54  |=$90 ;STATUS BYT|
000004E0: 45 0D 53 41 20 3D 24 42  39 20 3B 53 45 43 4F 4E  |E.SA =$B9 ;SECON|
000004F0: 44 41 52 59 20 41 44 44  52 45 53 53 0D 46 41 20  |DARY ADDRESS.FA |
00000500: 3D 24 42 41 20 3B 50 52  49 4D 41 52 59 20 41 44  |=$BA ;PRIMARY AD|
00000510: 44 52 45 53 53 0D 4C 41  20 3D 24 42 38 20 3B 4C  |DRESS.LA =$B8 ;L|
00000520: 4F 47 49 43 41 4C 20 44  45 56 49 43 45 20 23 0D  |OGICAL DEVICE #.|
00000530: 46 4E 4C 45 4E 20 3D 24  42 37 20 3B 46 49 4C 45  |FNLEN =$B7 ;FILE|
00000540: 20 4E 41 4D 45 20 4C 45  4E 47 54 48 0D 46 4E 41  | NAME LENGTH.FNA|
00000550: 44 52 20 3D 24 42 42 20  3B 46 49 4C 45 20 4E 41  |DR =$BB ;FILE NA|
00000560: 4D 45 20 41 44 44 52 45  53 53 0D 45 41 4C 20 3D  |ME ADDRESS.EAL =|
00000570: 24 41 45 20 3B 45 4E 44  20 41 44 44 52 20 4C 4F  |$AE ;END ADDR LO|
00000580: 0D 45 41 48 20 3D 24 41  46 20 3B 48 49 0D 53 54  |.EAH =$AF ;HI.ST|
00000590: 41 4C 20 3D 24 43 31 20  3B 4C 4F 20 42 59 54 45  |AL =$C1 ;LO BYTE|
000005A0: 0D 53 54 41 48 20 3D 24  43 32 20 3B 48 49 20 42  |.STAH =$C2 ;HI B|
000005B0: 59 54 45 0D 56 41 52 54  41 42 20 3D 24 32 44 20  |YTE.VARTAB =$2D |
000005C0: 3B 45 4E 44 20 4F 46 20  42 41 53 49 43 20 50 47  |;END OF BASIC PG|
000005D0: 4D 2E 0D 54 4D 50 32 20  3D 24 43 33 20 3B 54 45  |M..TMP2 =$C3 ;TE|
000005E0: 4D 50 20 56 41 52 49 41  42 4C 45 0D 42 55 46 20  |MP VARIABLE.BUF |
000005F0: 3D 24 30 32 30 30 20 3B  49 4E 50 55 54 20 42 55  |=$0200 ;INPUT BU|
00000600: 46 46 45 52 0D 3B 0D 3B  50 52 4F 47 52 41 4D 20  |FFER.;.;PROGRAM |
00000610: 56 41 52 49 41 42 4C 45  53 0D 3B 0D 43 52 20 3D  |VARIABLES.;.CR =|
00000620: 24 30 44 20 3B 53 59 4D  42 4F 4C 49 43 20 43 41  |$0D ;SYMBOLIC CA|
00000630: 52 52 49 41 47 45 20 52  45 54 55 52 4E 0D 2E 50  |RRIAGE RETURN..P|
00000640: 41 47 45 0D 3B 0D 3B 43  42 4D 20 36 34 20 20 52  |AGE.;.;CBM 64  R|
00000650: 4F 55 54 49 4E 45 53 20  55 53 45 44 20 28 32 2E  |OUTINES USED (2.|
00000660: 30 20 42 41 53 49 43 29  0D 3B 0D 4D 41 49 4E 20  |0 BASIC).;.MAIN |
00000670: 3D 24 41 34 38 43 20 3B  57 48 45 52 45 20 43 41  |=$A48C ;WHERE CA|
00000680: 4C 4C 45 44 20 46 52 4F  4D 28 4D 41 49 4E 2B 31  |LLED FROM(MAIN+1|
00000690: 32 29 0D 4C 49 4E 50 52  54 20 3D 24 42 44 43 44  |2).LINPRT =$BDCD|
000006A0: 20 3B 50 52 49 4E 54 20  4C 49 4E 45 20 23 0D 43  | ;PRINT LINE #.C|
000006B0: 4C 53 45 49 20 3D 24 46  36 34 32 20 3B 43 4C 4F  |LSEI =$F642 ;CLO|
000006C0: 53 45 20 41 20 46 49 4C  45 0D 4C 4F 41 44 53 50  |SE A FILE.LOADSP|
000006D0: 20 3D 24 46 46 44 35 20  3B 4C 4F 41 44 20 52 4F  | =$FFD5 ;LOAD RO|
000006E0: 55 54 49 4E 45 0D 43 48  52 47 45 54 20 3D 24 37  |UTINE.CHRGET =$7|
000006F0: 33 20 3B 49 4E 50 55 54  53 20 43 48 41 52 41 43  |3 ;INPUTS CHARAC|
00000700: 54 45 52 53 0D 43 48 52  47 4F 54 20 3D 24 37 39  |TERS.CHRGOT =$79|
00000710: 20 3B 47 45 54 20 4C 41  53 54 20 43 48 41 52 0D  | ;GET LAST CHAR.|
00000720: 47 4F 4E 45 20 3D 24 41  37 45 36 20 3B 20 53 54  |GONE =$A7E6 ; ST|
00000730: 41 54 45 4D 45 4E 54 20  45 58 45 43 28 4E 47 4F  |ATEMENT EXEC(NGO|
00000740: 4E 45 2B 32 29 0D 53 4E  45 52 52 20 3D 24 41 46  |NE+2).SNERR =$AF|
00000750: 30 38 20 3B 20 53 59 4E  54 41 58 20 45 52 52 4F  |08 ; SYNTAX ERRO|
00000760: 52 20 50 52 49 4E 54 0D  43 48 44 47 4F 54 20 3D  |R PRINT.CHDGOT =|
00000770: 24 45 33 41 38 20 3B 52  4F 4D 20 43 4F 50 59 20  |$E3A8 ;ROM COPY |
00000780: 4F 46 20 43 48 52 47 4F  54 0D 4E 45 57 53 54 54  |OF CHRGOT.NEWSTT|
00000790: 20 3D 24 41 37 41 45 20  3B 4E 45 57 20 53 54 41  | =$A7AE ;NEW STA|
000007A0: 54 45 4D 45 4E 54 20 45  58 45 43 0D 50 52 54 20  |TEMENT EXEC.PRT |
000007B0: 3D 24 45 37 31 36 20 3B  50 52 49 4E 54 20 41 20  |=$E716 ;PRINT A |
000007C0: 43 48 41 52 41 43 54 45  52 0D 4C 49 53 54 4E 20  |CHARACTER.LISTN |
000007D0: 3D 24 46 46 42 31 20 3B  53 45 4E 44 20 4C 49 53  |=$FFB1 ;SEND LIS|
000007E0: 54 45 4E 0D 53 45 54 4D  53 47 20 3D 24 46 46 39  |TEN.SETMSG =$FF9|
000007F0: 30 20 3B 53 45 54 20 4B  45 52 4E 41 4C 20 4D 45  |0 ;SET KERNAL ME|
00000800: 53 53 41 47 45 53 0D 53  45 43 4E 44 20 3D 24 46  |SSAGES.SECND =$F|
00000810: 46 39 33 20 3B 53 45 4E  44 20 53 41 0D 43 49 4F  |F93 ;SEND SA.CIO|
00000820: 55 54 20 3D 24 46 46 41  38 20 3B 53 45 4E 44 20  |UT =$FFA8 ;SEND |
00000830: 43 48 41 52 41 43 54 45  52 0D 55 4E 4C 53 4E 20  |CHARACTER.UNLSN |
00000840: 3D 24 46 46 41 45 20 3B  55 4E 20 4C 49 53 54 45  |=$FFAE ;UN LISTE|
00000850: 4E 0D 41 43 50 54 52 20  3D 24 46 46 41 35 20 3B  |N.ACPTR =$FFA5 ;|
00000860: 47 45 54 20 41 20 43 48  41 52 43 41 54 45 52 0D  |GET A CHARCATER.|
00000870: 54 41 4C 4B 20 3D 24 46  46 42 34 20 3B 53 45 4E  |TALK =$FFB4 ;SEN|
00000880: 44 20 54 41 4C 4B 0D 4F  50 45 4E 49 20 3D 24 46  |D TALK.OPENI =$F|
00000890: 33 44 35 20 3B 4F 50 45  4E 20 46 49 4C 45 0D 52  |3D5 ;OPEN FILE.R|
000008A0: 45 41 44 59 20 3D 24 45  33 38 36 20 3B 52 45 45  |EADY =$E386 ;REE|
000008B0: 4E 54 45 52 20 42 41 53  49 43 0D 52 55 4E 43 20  |NTER BASIC.RUNC |
000008C0: 3D 24 41 36 35 39 20 3B  43 4C 45 41 52 20 56 41  |=$A659 ;CLEAR VA|
000008D0: 52 49 41 42 4C 45 53 20  41 4E 44 20 53 54 41 43  |RIABLES AND STAC|
000008E0: 4B 0D 4C 4E 4B 50 52 47  20 3D 24 41 35 33 33 20  |K.LNKPRG =$A533 |
000008F0: 3B 4C 49 4E 4B 20 42 41  53 49 43 20 4C 49 4E 45  |;LINK BASIC LINE|
00000900: 53 0D 55 4E 54 4C 4B 20  3D 24 46 46 41 42 20 3B  |S.UNTLK =$FFAB ;|
00000910: 55 4E 20 54 41 4C 4B 0D  53 54 58 54 50 54 20 3D  |UN TALK.STXTPT =|
00000920: 24 41 36 38 45 20 3B 53  45 54 20 53 54 41 52 54  |$A68E ;SET START|
00000930: 20 54 45 58 54 20 50 4F  49 4E 54 45 52 0D 53 54  | TEXT POINTER.ST|
00000940: 4F 50 20 3D 24 46 46 45  31 20 3B 43 48 45 43 4B  |OP =$FFE1 ;CHECK|
00000950: 20 46 4F 52 20 53 54 4F  50 20 4B 45 59 0D 43 53  | FOR STOP KEY.CS|
00000960: 41 56 45 20 3D 24 45 31  35 36 2B 33 20 3B 53 41  |AVE =$E156+3 ;SA|
00000970: 56 45 20 57 49 54 48 20  41 44 44 52 45 53 53 20  |VE WITH ADDRESS |
00000980: 53 45 54 20 28 42 41 53  49 43 29 0D 54 4B 53 41  |SET (BASIC).TKSA|
00000990: 20 3D 24 46 46 39 36 20  3B 54 41 4C 4B 20 53 45  | =$FF96 ;TALK SE|
000009A0: 43 4F 4E 44 41 52 59 20  41 44 44 52 45 53 53 0D  |CONDARY ADDRESS.|
000009B0: 47 45 54 49 4E 20 3D 24  46 46 45 34 20 3B 47 45  |GETIN =$FFE4 ;GE|
000009C0: 54 20 41 20 43 48 41 52  41 43 54 45 52 0D 2E 50  |T A CHARACTER..P|
000009D0: 41 47 45 20 27 57 45 44  47 45 20 50 41 52 53 45  |AGE 'WEDGE PARSE|
000009E0: 52 27 0D 3B 0D 3B 57 45  44 47 45 20 49 4E 20 52  |R'.;.;WEDGE IN R|
000009F0: 4F 55 54 49 4E 45 20 57  49 54 48 20 54 48 45 0D  |OUTINE WITH THE.|
00000A00: 3B 43 4F 4D 4D 41 4E 44  20 50 41 52 53 45 52 20  |;COMMAND PARSER |
00000A10: 41 4E 44 20 45 58 45 43  55 54 49 54 49 4F 4E 0D  |AND EXECUTITION.|
00000A20: 3B 0D 2A 3D 24 43 43 30  30 0D 4A 4D 50 20 47 4F  |;.*=$CC00.JMP GO|
00000A30: 4F 4F 0D 54 41 42 48 49  0D 2E 42 59 54 20 3E 5A  |OO.TABHI..BYT >Z|
00000A40: 5A 31 20 3B 25 20 20 20  20 20 20 20 20 4C 4F 41  |Z1 ;%        LOA|
00000A50: 44 20 28 4E 4F 4E 20 52  45 4C 4F 29 0D 2E 42 59  |D (NON RELO)..BY|
00000A60: 54 20 3E 5A 5A 31 20 3B  2F 20 20 20 20 20 20 20  |T >ZZ1 ;/       |
00000A70: 20 4C 4F 41 44 0D 2E 42  59 54 20 3E 5A 5A 31 20  | LOAD..BYT >ZZ1 |
00000A80: 3B 2F 20 54 4F 4B 45 4E  20 20 20 20 22 0D 2E 42  |;/ TOKEN    "..B|
00000A90: 59 54 20 3E 5A 5A 32 20  3B 5E 20 20 20 20 20 20  |YT >ZZ2 ;^      |
00000AA0: 20 20 4C 4F 41 44 2F 52  55 4E 0D 2E 42 59 54 20  |  LOAD/RUN..BYT |
00000AB0: 3E 5A 5A 32 20 3B 5E 20  54 4F 4B 45 4E 20 20 20  |>ZZ2 ;^ TOKEN   |
00000AC0: 22 20 20 20 20 22 0D 2E  42 59 54 20 3E 5A 5A 33  |"    "..BYT >ZZ3|
00000AD0: 20 3B 5F 20 20 20 20 20  20 20 20 53 41 56 45 0D  | ;_        SAVE.|
00000AE0: 2E 42 59 54 20 3E 5A 5A  34 20 3B 3E 20 20 20 20  |.BYT >ZZ4 ;>    |
00000AF0: 20 20 20 20 44 49 53 4B  20 43 4F 4D 4D 41 4E 44  |    DISK COMMAND|
00000B00: 0D 2E 42 59 54 20 3E 5A  5A 34 20 3B 3E 20 54 4F  |..BYT >ZZ4 ;> TO|
00000B10: 4B 45 4E 20 20 20 20 22  20 20 20 20 20 22 0D 2E  |KEN    "     "..|
00000B20: 42 59 54 20 3E 5A 5A 34  20 3B 40 20 20 20 20 20  |BYT >ZZ4 ;@     |
00000B30: 20 20 20 20 20 22 20 20  20 20 20 22 0D 2E 42 59  |     "     "..BY|
00000B40: 54 20 3E 5A 5A 35 20 3B  23 20 20 20 20 20 20 20  |T >ZZ5 ;#       |
00000B50: 20 43 48 41 4E 47 45 20  44 45 56 49 43 45 0D 2E  | CHANGE DEVICE..|
00000B60: 42 59 54 20 3E 5A 5A 36  20 3B 51 20 20 20 20 20  |BYT >ZZ6 ;Q     |
00000B70: 20 20 20 51 55 49 54 0D  3B 0D 54 41 42 4C 4F 0D  |   QUIT.;.TABLO.|
00000B80: 2E 42 59 54 20 3C 5A 5A  31 20 3B 25 0D 2E 42 59  |.BYT <ZZ1 ;%..BY|
00000B90: 54 20 3C 5A 5A 31 20 3B  2F 0D 2E 42 59 54 20 3C  |T <ZZ1 ;/..BYT <|
00000BA0: 5A 5A 31 20 3B 2F 20 54  4F 4B 45 4E 0D 2E 42 59  |ZZ1 ;/ TOKEN..BY|
00000BB0: 54 20 3C 5A 5A 32 20 3B  5E 0D 2E 42 59 54 20 3C  |T <ZZ2 ;^..BYT <|
00000BC0: 5A 5A 32 20 3B 5E 20 54  4F 4B 45 4E 0D 2E 42 59  |ZZ2 ;^ TOKEN..BY|
00000BD0: 54 20 3C 5A 5A 33 20 3B  5F 0D 2E 42 59 54 20 3C  |T <ZZ3 ;_..BYT <|
00000BE0: 5A 5A 34 20 3B 3E 0D 2E  42 59 54 20 3C 5A 5A 34  |ZZ4 ;>..BYT <ZZ4|
00000BF0: 20 3B 3E 20 54 4F 4B 45  4E 0D 2E 42 59 54 20 3C  | ;> TOKEN..BYT <|
00000C00: 5A 5A 34 20 3B 40 0D 2E  42 59 54 20 3C 5A 5A 35  |ZZ4 ;@..BYT <ZZ5|
00000C10: 20 3B 23 0D 2E 42 59 54  20 3C 5A 5A 36 20 3B 51  | ;#..BYT <ZZ6 ;Q|
00000C20: 0D 3B 0D 4E 43 4D 44 20  3D 39 20 3B 4E 55 4D 42  |.;.NCMD =9 ;NUMB|
00000C30: 45 52 20 4F 46 20 4D 41  49 4E 20 43 4F 4D 4D 41  |ER OF MAIN COMMA|
00000C40: 4E 44 53 0D 43 4D 44 20  2E 42 59 54 20 27 25 2F  |NDS.CMD .BYT '%/|
00000C50: 27 2C 24 41 44 2C 27 5E  27 2C 24 41 45 2C 27 5F  |',$AD,'^',$AE,'_|
00000C60: 27 2C 27 3E 27 2C 24 42  31 2C 27 40 23 51 27 2C  |','>',$B1,'@#Q',|
00000C70: 24 30 30 0D 3B 43 4F 4D  4D 41 4E 44 53 20 20 25  |$00.;COMMANDS  %|
00000C80: 20 2F 20 2F 20 5E 20 5E  20 5F 20 3E 20 3E 20 40  | / / ^ ^ _ > > @|
00000C90: 20 23 20 51 0D 3B 43 4F  4D 4D 41 4E 44 53 20 20  | # Q.;COMMANDS  |
00000CA0: 31 20 32 20 33 20 34 20  35 20 36 20 37 20 38 20  |1 2 3 4 5 6 7 8 |
00000CB0: 39 20 41 20 42 0D 50 52  45 46 49 58 20 2A 3D 2A  |9 A B.PREFIX *=*|
00000CC0: 2B 32 0D 46 49 4C 45 20  2A 3D 2A 2B 31 20 3B 44  |+2.FILE *=*+1 ;D|
00000CD0: 41 54 41 20 46 4F 52 20  44 49 53 4B 20 49 53 20  |ATA FOR DISK IS |
00000CE0: 53 54 4F 52 45 44 20 48  45 52 45 0D 46 49 4C 45  |STORED HERE.FILE|
00000CF0: 31 20 2A 3D 2A 2B 37 39  0D 53 56 46 41 20 2A 3D  |1 *=*+79.SVFA *=|
00000D00: 2A 2B 31 20 3B 53 41 56  45 20 46 41 0D 56 4F 4C  |*+1 ;SAVE FA.VOL|
00000D10: 20 2A 3D 2A 2B 31 20 3B  56 4F 4C 55 4D 45 20 4E  | *=*+1 ;VOLUME N|
00000D20: 41 4D 45 0D 4C 41 53 54  43 48 20 2A 3D 2A 2B 31  |AME.LASTCH *=*+1|
00000D30: 20 3B 4C 41 53 54 20 43  48 41 52 20 46 52 4F 4D  | ;LAST CHAR FROM|
00000D40: 20 43 48 52 47 45 54 0D  46 4C 41 47 20 2A 3D 2A  | CHRGET.FLAG *=*|
00000D50: 2B 31 20 3B 53 41 56 45  20 43 4F 4D 4D 41 4E 44  |+1 ;SAVE COMMAND|
00000D60: 0D 4D 53 47 53 20 2E 42  59 54 20 24 44 2C 24 44  |.MSGS .BYT $D,$D|
00000D70: 2C 27 20 20 20 20 20 20  44 4F 53 20 4D 41 4E 41  |,'      DOS MANA|
00000D80: 47 45 52 20 56 35 2E 31  2F 30 37 31 33 38 32 27  |GER V5.1/071382'|
00000D90: 2C 24 44 0D 2E 42 59 54  20 24 44 2C 20 27 20 20  |,$D..BYT $D, '  |
00000DA0: 20 20 20 20 20 20 20 42  59 20 20 42 4F 42 20 46  |       BY  BOB F|
00000DB0: 41 49 52 42 41 49 52 4E  27 2C 24 44 0D 2E 42 59  |AIRBAIRN',$D..BY|
00000DC0: 54 20 24 44 2C 20 27 28  43 29 20 31 39 38 32 20  |T $D, '(C) 1982 |
00000DD0: 43 4F 4D 4D 4F 44 4F 52  45 20 42 55 53 49 4E 45  |COMMODORE BUSINE|
00000DE0: 53 53 20 4D 41 43 48 49  4E 45 53 27 2C 24 44 2C  |SS MACHINES',$D,|
00000DF0: 24 30 0D 4A 55 4D 50 20  4A 4D 50 20 53 54 41 52  |$0.JUMP JMP STAR|
00000E00: 54 20 3B 4F 56 45 52 4C  41 59 20 46 4F 52 20 5A  |T ;OVERLAY FOR Z|
00000E10: 2D 50 41 47 45 20 27 43  48 52 47 4F 54 27 0D 2E  |-PAGE 'CHRGOT'..|
00000E20: 50 41 47 45 20 27 49 4E  49 54 20 43 4F 44 45 3B  |PAGE 'INIT CODE;|
00000E30: 20 56 45 43 54 4F 52 27  0D 3B 0D 3B 20 49 4E 49  | VECTOR'.;.; INI|
00000E40: 54 20 54 48 45 20 4D 45  4D 4F 52 59 20 4D 41 4E  |T THE MEMORY MAN|
00000E50: 41 47 45 52 20 28 53 54  41 52 54 55 50 20 43 4F  |AGER (STARTUP CO|
00000E60: 4D 45 53 20 48 45 52 45  29 0D 3B 0D 47 4F 4F 4F  |MES HERE).;.GOOO|
00000E70: 0D 20 4C 44 58 20 23 24  30 32 20 3B 4D 4F 56 45  |. LDX #$02 ;MOVE|
00000E80: 20 54 48 52 45 45 20 42  59 54 45 53 0D 57 45 44  | THREE BYTES.WED|
00000E90: 47 45 20 4C 44 41 20 4A  55 4D 50 2C 58 0D 20 53  |GE LDA JUMP,X. S|
00000EA0: 54 41 20 43 48 52 47 4F  54 2B 33 2C 58 0D 20 44  |TA CHRGOT+3,X. D|
00000EB0: 45 58 0D 20 42 50 4C 20  57 45 44 47 45 0D 3B 0D  |EX. BPL WEDGE.;.|
00000EC0: 20 4C 44 41 20 46 41 20  3B 55 53 45 20 43 55 52  | LDA FA ;USE CUR|
00000ED0: 52 45 4E 54 20 46 41 20  46 4F 52 20 44 45 56 49  |RENT FA FOR DEVI|
00000EE0: 43 45 20 41 44 44 52 0D  20 53 54 41 20 53 56 46  |CE ADDR. STA SVF|
00000EF0: 41 0D 3B 0D 3B 20 53 41  59 20 48 45 4C 4C 4F 20  |A.;.; SAY HELLO |
00000F00: 41 4E 44 20 45 58 49 54  0D 3B 0D 20 4A 4D 50 20  |AND EXIT.;. JMP |
00000F10: 4D 53 47 20 3B 50 52 49  4E 54 20 48 45 4C 4C 4F  |MSG ;PRINT HELLO|
00000F20: 20 28 4A 53 52 2F 52 54  53 29 0D 3B 0D 3B 20 54  | (JSR/RTS).;.; T|
00000F30: 48 49 53 20 49 53 20 57  48 45 52 45 20 57 45 20  |HIS IS WHERE WE |
00000F40: 43 4F 4D 45 20 54 4F 20  44 4F 20 54 48 45 20 57  |COME TO DO THE W|
00000F50: 4F 52 4B 0D 3B 0D 53 54  41 52 54 0D 20 53 54 41  |ORK.;.START. STA|
00000F60: 20 42 55 46 50 54 20 3B  53 41 56 45 20 2E 41 2C  | BUFPT ;SAVE .A,|
00000F70: 20 2E 58 0D 20 53 54 58  20 42 55 46 50 54 2B 31  | .X. STX BUFPT+1|
00000F80: 0D 20 54 53 58 20 3B 41  43 54 49 56 41 54 45 44  |. TSX ;ACTIVATED|
00000F90: 20 20 43 41 4C 4C 20 49  4E 20 27 47 4F 4E 45 27  |  CALL IN 'GONE'|
00000FA0: 0D 20 4C 44 41 20 24 30  31 30 31 2C 58 0D 20 43  |. LDA $0101,X. C|
00000FB0: 4D 50 20 23 3C 47 4F 4E  45 20 3B 46 52 4F 4D 20  |MP #<GONE ;FROM |
00000FC0: 41 20 52 55 4E 4E 49 4E  47 20 50 52 4F 47 52 41  |A RUNNING PROGRA|
00000FD0: 4D 3F 3F 0D 20 42 45 51  20 54 52 59 54 57 4F 0D  |M??. BEQ TRYTWO.|
00000FE0: 20 43 4D 50 20 23 3C 4D  41 49 4E 20 3B 46 52 4F  | CMP #<MAIN ;FRO|
00000FF0: 4D 20 44 49 52 45 43 54  20 4D 4F 44 45 3F 3F 0D  |M DIRECT MODE??.|
00001000: 20 42 4E 45 20 4E 4F 54  43 4D 44 0D 54 52 59 54  | BNE NOTCMD.TRYT|
00001010: 57 4F 20 4C 44 41 20 24  30 31 30 32 2C 58 0D 20  |WO LDA $0102,X. |
00001020: 43 4D 50 20 23 3E 47 4F  4E 45 20 3B 50 52 4F 47  |CMP #>GONE ;PROG|
00001030: 52 41 4D 3F 0D 20 42 45  51 20 46 49 4E 44 49 54  |RAM?. BEQ FINDIT|
00001040: 0D 20 43 4D 50 20 23 3E  4D 41 49 4E 20 3B 44 49  |. CMP #>MAIN ;DI|
00001050: 52 45 43 54 3F 0D 20 42  4E 45 20 4E 4F 54 43 4D  |RECT?. BNE NOTCM|
00001060: 44 0D 46 49 4E 44 49 54  20 4C 44 41 20 42 55 46  |D.FINDIT LDA BUF|
00001070: 50 54 20 3B 47 45 54 20  54 48 45 20 43 4F 4D 4D  |PT ;GET THE COMM|
00001080: 41 4E 44 20 42 41 43 4B  0D 20 4C 44 58 20 23 4E  |AND BACK. LDX #N|
00001090: 43 4D 44 2D 31 0D 46 49  4E 44 43 20 3B 46 49 4E  |CMD-1.FINDC ;FIN|
000010A0: 44 20 54 48 45 20 43 4F  4D 4D 41 4E 44 0D 20 43  |D THE COMMAND. C|
000010B0: 4D 50 20 43 4D 44 2C 58  0D 20 42 45 51 20 43 41  |MP CMD,X. BEQ CA|
000010C0: 4C 4C 31 30 0D 20 44 45  58 0D 20 42 50 4C 20 46  |LL10. DEX. BPL F|
000010D0: 49 4E 44 43 0D 3B 0D 4E  4F 54 43 4D 44 0D 20 4C  |INDC.;.NOTCMD. L|
000010E0: 44 41 20 42 55 46 50 54  20 3B 52 45 53 54 4F 52  |DA BUFPT ;RESTOR|
000010F0: 45 20 52 45 47 53 0D 20  4C 44 58 20 42 55 46 50  |E REGS. LDX BUFP|
00001100: 54 2B 31 0D 20 43 4D 50  20 23 27 3A 20 3B 43 4F  |T+1. CMP #': ;CO|
00001110: 4D 50 4C 45 54 45 20 43  48 52 47 4F 54 0D 20 42  |MPLETE CHRGOT. B|
00001120: 43 53 20 53 54 52 54 53  0D 20 4A 4D 50 20 43 48  |CS STRTS. JMP CH|
00001130: 52 47 4F 54 2B 37 0D 53  54 52 54 53 20 4A 4D 50  |RGOT+7.STRTS JMP|
00001140: 20 43 48 52 47 4F 54 2B  31 37 20 3B 54 4F 20 54  | CHRGOT+17 ;TO T|
00001150: 48 45 20 45 4E 44 20 4F  46 20 43 48 52 47 4F 54  |HE END OF CHRGOT|
00001160: 0D 3B 0D 43 41 4C 4C 31  30 0D 20 53 54 58 20 43  |.;.CALL10. STX C|
00001170: 4E 54 44 4E 20 3B 53 41  56 45 20 49 4E 44 45 58  |NTDN ;SAVE INDEX|
00001180: 0D 20 53 54 41 20 46 4C  41 47 20 3B 53 41 56 45  |. STA FLAG ;SAVE|
00001190: 20 54 48 45 20 43 4F 4D  4D 41 4E 44 20 46 4F 52  | THE COMMAND FOR|
000011A0: 20 4C 41 54 45 52 0D 20  4A 53 52 20 52 44 46 49  | LATER. JSR RDFI|
000011B0: 4C 45 20 3B 47 45 54 20  54 48 45 20 46 49 4C 45  |LE ;GET THE FILE|
000011C0: 4E 41 4D 45 20 41 4E 44  20 4C 45 4E 47 54 48 0D  |NAME AND LENGTH.|
000011D0: 20 4C 44 58 20 43 4E 54  44 4E 20 3B 52 45 53 54  | LDX CNTDN ;REST|
000011E0: 4F 52 45 20 49 4E 44 45  58 0D 20 4C 44 41 20 23  |ORE INDEX. LDA #|
000011F0: 3C 46 49 4C 45 20 3B 53  45 54 20 46 49 4C 45 4E  |<FILE ;SET FILEN|
00001200: 41 4D 45 20 41 44 44 52  45 53 53 0D 20 53 54 41  |AME ADDRESS. STA|
00001210: 20 46 4E 41 44 52 0D 20  4C 44 41 20 23 3E 46 49  | FNADR. LDA #>FI|
00001220: 4C 45 0D 20 53 54 41 20  46 4E 41 44 52 2B 31 0D  |LE. STA FNADR+1.|
00001230: 20 4C 44 41 20 53 56 46  41 20 3B 53 45 54 20 50  | LDA SVFA ;SET P|
00001240: 52 49 4D 41 52 59 20 41  44 44 52 45 53 53 0D 20  |RIMARY ADDRESS. |
00001250: 53 54 41 20 46 41 0D 3B  0D 43 41 4C 4C 49 54 0D  |STA FA.;.CALLIT.|
00001260: 20 4C 44 41 20 54 41 42  48 49 2C 58 20 3B 46 4F  | LDA TABHI,X ;FO|
00001270: 55 4E 44 20 43 4F 4D 4D  41 4E 44 2E 2E 2E 47 4F  |UND COMMAND...GO|
00001280: 20 54 48 45 52 45 0D 20  50 48 41 0D 20 4C 44 41  | THERE. PHA. LDA|
00001290: 20 54 41 42 4C 4F 2C 58  0D 20 50 48 41 0D 20 52  | TABLO,X. PHA. R|
000012A0: 54 53 0D 2E 50 41 47 0D  3B 0D 3B 4D 41 49 4E 20  |TS..PAG.;.;MAIN |
000012B0: 41 43 54 49 4F 4E 20 52  4F 55 54 49 4E 45 20 46  |ACTION ROUTINE F|
000012C0: 4F 52 20 57 45 44 47 45  20 43 4F 4D 4D 41 4E 44  |OR WEDGE COMMAND|
000012D0: 53 20 27 3E 40 27 0D 3B  0D 44 4F 49 54 0D 20 54  |S '>@'.;.DOIT. T|
000012E0: 59 41 20 3B 2E 59 20 48  41 53 20 46 4E 4C 45 4E  |YA ;.Y HAS FNLEN|
000012F0: 0D 20 42 45 51 20 52 44  45 52 52 20 3B 4E 4F 20  |. BEQ RDERR ;NO |
00001300: 44 41 54 41 20 53 4F 20  52 45 41 44 20 45 2E 20  |DATA SO READ E. |
00001310: 43 2E 0D 3B 0D 20 4C 44  58 20 23 4E 43 4D 44 20  |C..;. LDX #NCMD |
00001320: 3B 4E 4F 57 20 43 48 45  43 4B 20 46 4F 52 20 53  |;NOW CHECK FOR S|
00001330: 55 42 2D 43 4F 4D 4D 41  4E 44 53 0D 43 48 4B 53  |UB-COMMANDS.CHKS|
00001340: 55 42 0D 20 4C 44 41 20  43 4D 44 2C 58 0D 20 42  |UB. LDA CMD,X. B|
00001350: 45 51 20 43 48 4B 4C 53  54 20 3B 52 41 4E 20 4F  |EQ CHKLST ;RAN O|
00001360: 55 54 2E 2E 2E 0D 20 43  4D 50 20 46 49 4C 45 20  |UT.... CMP FILE |
00001370: 3B 49 53 20 54 48 49 53  20 41 20 43 4F 4D 4D 41  |;IS THIS A COMMA|
00001380: 4E 44 3F 0D 20 42 45 51  20 46 4E 44 53 55 42 20  |ND?. BEQ FNDSUB |
00001390: 3B 59 45 53 2E 2E 2E 0D  20 49 4E 58 0D 20 42 50  |;YES.... INX. BP|
000013A0: 4C 20 43 48 4B 53 55 42  0D 3B 0D 43 48 4B 4C 53  |L CHKSUB.;.CHKLS|
000013B0: 54 20 3B 4E 4F 54 20 41  20 53 55 42 2D 43 4F 4D  |T ;NOT A SUB-COM|
000013C0: 4D 41 4E 44 0D 20 4C 44  41 20 46 49 4C 45 20 3B  |MAND. LDA FILE ;|
000013D0: 49 53 20 54 48 49 53 20  41 20 44 49 52 20 43 4F  |IS THIS A DIR CO|
000013E0: 4D 4D 41 4E 44 0D 20 43  4D 50 20 23 27 24 0D 20  |MMAND. CMP #'$. |
000013F0: 42 45 51 20 44 4F 44 49  52 20 3B 44 49 52 45 43  |BEQ DODIR ;DIREC|
00001400: 54 4F 52 59 20 53 54 55  46 46 0D 20 4A 4D 50 20  |TORY STUFF. JMP |
00001410: 4E 4F 54 44 49 52 20 3B  44 49 53 4B 20 43 4F 4D  |NOTDIR ;DISK COM|
00001420: 4D 41 4E 44 53 0D 3B 0D  3B 0D 46 4E 44 53 55 42  |MANDS.;.;.FNDSUB|
00001430: 20 3B 46 4F 55 4E 44 20  53 55 42 20 43 4F 4D 4D  | ;FOUND SUB COMM|
00001440: 41 4E 44 0D 20 44 45 43  20 46 4E 4C 45 4E 20 3B  |AND. DEC FNLEN ;|
00001450: 53 45 54 55 50 20 41 4E  44 20 47 4F 20 54 48 45  |SETUP AND GO THE|
00001460: 52 45 0D 20 4C 44 41 20  23 3C 46 49 4C 45 31 0D  |RE. LDA #<FILE1.|
00001470: 20 53 54 41 20 46 4E 41  44 52 0D 20 4C 44 41 20  | STA FNADR. LDA |
00001480: 23 3E 46 49 4C 45 31 0D  20 53 54 41 20 46 4E 41  |#>FILE1. STA FNA|
00001490: 44 52 2B 31 0D 20 4A 4D  50 20 43 41 4C 4C 49 54  |DR+1. JMP CALLIT|
000014A0: 0D 2E 50 41 47 45 20 27  44 49 53 4B 20 43 4D 44  |..PAGE 'DISK CMD|
000014B0: 20 26 20 45 2E 20 43 2E  27 0D 3B 0D 3B 20 53 45  | & E. C.'.;.; SE|
000014C0: 4E 44 20 43 4F 4D 4D 41  4E 44 20 54 4F 20 44 49  |ND COMMAND TO DI|
000014D0: 53 4B 0D 3B 0D 4E 4F 54  44 49 52 0D 20 4C 44 41  |SK.;.NOTDIR. LDA|
000014E0: 20 46 41 20 3B 44 45 56  49 43 45 20 41 44 44 52  | FA ;DEVICE ADDR|
000014F0: 45 53 53 0D 20 4A 53 52  20 4C 49 53 54 4E 0D 20  |ESS. JSR LISTN. |
00001500: 4C 44 41 20 23 24 36 46  0D 20 53 54 41 20 53 41  |LDA #$6F. STA SA|
00001510: 0D 20 4A 53 52 20 53 45  43 4E 44 20 3B 53 45 4E  |. JSR SECND ;SEN|
00001520: 44 20 53 45 43 4F 4E 44  41 52 59 20 41 44 44 52  |D SECONDARY ADDR|
00001530: 0D 20 4C 44 59 20 23 30  0D 42 55 4D 50 20 4C 44  |. LDY #0.BUMP LD|
00001540: 41 20 46 49 4C 45 2C 59  0D 20 4A 53 52 20 43 49  |A FILE,Y. JSR CI|
00001550: 4F 55 54 0D 20 49 4E 59  0D 20 43 50 59 20 46 4E  |OUT. INY. CPY FN|
00001560: 4C 45 4E 0D 20 42 43 43  20 42 55 4D 50 20 3B 4D  |LEN. BCC BUMP ;M|
00001570: 4F 52 45 0D 3B 0D 57 47  31 32 30 20 4A 53 52 20  |ORE.;.WG120 JSR |
00001580: 55 4E 4C 53 4E 20 3B 55  4E 20 4C 49 53 54 45 4E  |UNLSN ;UN LISTEN|
00001590: 0D 20 4A 4D 50 20 57 47  39 39 38 0D 3B 0D 3B 20  |. JMP WG998.;.; |
000015A0: 52 45 41 44 20 54 48 45  20 45 52 52 4F 52 20 43  |READ THE ERROR C|
000015B0: 48 41 4E 4E 45 4C 0D 3B  0D 52 44 45 52 52 0D 20  |HANNEL.;.RDERR. |
000015C0: 4C 44 41 20 46 41 20 3B  44 45 56 49 43 45 20 41  |LDA FA ;DEVICE A|
000015D0: 44 44 52 45 53 53 0D 20  4A 53 52 20 54 41 4C 4B  |DDRESS. JSR TALK|
000015E0: 0D 20 4C 44 41 20 23 24  36 46 20 3B 43 4F 4D 4D  |. LDA #$6F ;COMM|
000015F0: 41 4E 44 20 43 48 41 4E  4E 45 4C 20 53 41 0D 20  |AND CHANNEL SA. |
00001600: 53 54 41 20 53 41 0D 20  4A 53 52 20 54 4B 53 41  |STA SA. JSR TKSA|
00001610: 20 3B 53 45 4E 44 20 53  41 20 54 41 4C 4B 20 53  | ;SEND SA TALK S|
00001620: 54 59 4C 45 0D 57 47 31  34 30 20 4A 53 52 20 41  |TYLE.WG140 JSR A|
00001630: 43 50 54 52 20 3B 47 45  54 20 42 59 54 45 20 46  |CPTR ;GET BYTE F|
00001640: 52 4F 4D 20 44 49 53 4B  0D 20 43 4D 50 20 23 43  |ROM DISK. CMP #C|
00001650: 52 0D 20 42 45 51 20 57  47 31 33 30 0D 20 4A 53  |R. BEQ WG130. JS|
00001660: 52 20 50 52 54 20 3B 50  52 49 4E 54 20 42 59 54  |R PRT ;PRINT BYT|
00001670: 45 20 54 4F 20 53 43 52  45 45 4E 0D 20 4A 4D 50  |E TO SCREEN. JMP|
00001680: 20 57 47 31 34 30 20 3B  4C 4F 4F 50 20 46 4F 52  | WG140 ;LOOP FOR|
00001690: 20 4D 4F 52 45 0D 57 47  31 33 30 20 4A 53 52 20  | MORE.WG130 JSR |
000016A0: 50 52 54 20 3B 50 52 49  4E 54 20 43 52 0D 20 4A  |PRT ;PRINT CR. J|
000016B0: 53 52 20 55 4E 54 4C 4B  20 3B 55 4E 20 54 41 4C  |SR UNTLK ;UN TAL|
000016C0: 4B 0D 57 47 39 39 38 20  4A 4D 50 20 43 48 52 47  |K.WG998 JMP CHRG|
000016D0: 4F 54 20 3B 44 4F 4E 45  20 57 49 54 48 20 43 4D  |OT ;DONE WITH CM|
000016E0: 44 0D 2E 50 41 47 45 20  27 44 49 52 45 43 54 4F  |D..PAGE 'DIRECTO|
000016F0: 52 59 20 52 45 41 44 27  0D 3B 0D 3B 50 52 49 4E  |RY READ'.;.;PRIN|
00001700: 54 20 54 48 45 20 44 49  52 45 43 54 4F 52 59 20  |T THE DIRECTORY |
00001710: 27 40 24 30 3A 2A 27 0D  3B 0D 44 4F 44 49 52 0D  |'@$0:*'.;.DODIR.|
00001720: 20 4C 44 41 20 23 24 36  30 20 3B 53 45 43 4F 4E  | LDA #$60 ;SECON|
00001730: 44 41 52 59 20 41 44 44  52 0D 20 53 54 41 20 53  |DARY ADDR. STA S|
00001740: 41 0D 20 4A 53 52 20 4F  50 45 4E 49 20 3B 4F 50  |A. JSR OPENI ;OP|
00001750: 45 4E 20 54 48 45 20 46  49 4C 45 0D 20 4C 44 41  |EN THE FILE. LDA|
00001760: 20 46 41 20 3B 47 45 54  20 50 52 49 4D 41 52 59  | FA ;GET PRIMARY|
00001770: 20 41 44 44 52 45 53 53  0D 20 4A 53 52 20 54 41  | ADDRESS. JSR TA|
00001780: 4C 4B 0D 20 4C 44 41 20  53 41 20 3B 47 45 54 20  |LK. LDA SA ;GET |
00001790: 53 45 43 4F 4E 44 41 52  59 20 41 44 44 52 45 53  |SECONDARY ADDRES|
000017A0: 53 0D 20 4A 53 52 20 54  4B 53 41 0D 2E 53 4B 49  |S. JSR TKSA..SKI|
000017B0: 0D 20 4C 44 41 20 23 30  0D 20 53 54 41 20 53 41  |. LDA #0. STA SA|
000017C0: 54 55 53 20 3B 53 45 54  20 53 54 41 54 55 53 20  |TUS ;SET STATUS |
000017D0: 54 4F 20 30 0D 20 4C 44  59 20 23 24 30 33 20 3B  |TO 0. LDY #$03 ;|
000017E0: 4C 4F 4F 50 20 54 48 52  45 45 20 54 49 4D 45 53  |LOOP THREE TIMES|
000017F0: 0D 57 47 32 32 30 20 53  54 59 20 46 4E 4C 45 4E  |.WG220 STY FNLEN|
00001800: 20 3B 53 41 56 45 20 4E  45 57 20 43 4F 55 4E 54  | ;SAVE NEW COUNT|
00001810: 0D 20 4A 53 52 20 41 43  50 54 52 0D 20 53 54 41  |. JSR ACPTR. STA|
00001820: 20 54 4D 50 32 0D 20 4A  53 52 20 41 43 50 54 52  | TMP2. JSR ACPTR|
00001830: 0D 20 53 54 41 20 54 4D  50 32 2B 31 0D 20 4C 44  |. STA TMP2+1. LD|
00001840: 59 20 53 41 54 55 53 20  3B 43 48 45 43 4B 20 53  |Y SATUS ;CHECK S|
00001850: 54 41 54 55 53 0D 20 42  4E 45 20 57 47 32 33 30  |TATUS. BNE WG230|
00001860: 0D 20 4C 44 59 20 46 4E  4C 45 4E 20 3B 4D 4F 52  |. LDY FNLEN ;MOR|
00001870: 45 20 54 4F 20 44 4F 3F  0D 20 44 45 59 0D 20 42  |E TO DO?. DEY. B|
00001880: 4E 45 20 57 47 32 32 30  20 3B 4E 4F 54 20 44 4F  |NE WG220 ;NOT DO|
00001890: 4E 45 20 59 45 54 0D 20  4C 44 58 20 54 4D 50 32  |NE YET. LDX TMP2|
000018A0: 0D 20 4C 44 41 20 54 4D  50 32 2B 31 0D 20 4A 53  |. LDA TMP2+1. JS|
000018B0: 52 20 4C 49 4E 50 52 54  20 3B 50 52 49 4E 54 20  |R LINPRT ;PRINT |
000018C0: 4C 49 4E 45 20 4E 55 4D  42 45 52 0D 20 4C 44 41  |LINE NUMBER. LDA|
000018D0: 20 23 24 32 30 20 3B 50  52 49 4E 54 20 41 20 53  | #$20 ;PRINT A S|
000018E0: 50 41 43 45 0D 20 4A 53  52 20 50 52 54 0D 57 47  |PACE. JSR PRT.WG|
000018F0: 32 35 30 20 4A 53 52 20  41 43 50 54 52 0D 20 4C  |250 JSR ACPTR. L|
00001900: 44 58 20 53 41 54 55 53  0D 20 42 4E 45 20 57 47  |DX SATUS. BNE WG|
00001910: 32 33 30 20 3B 42 41 44  0D 20 43 4D 50 20 23 30  |230 ;BAD. CMP #0|
00001920: 20 3B 45 4F 4C 0D 20 42  45 51 20 57 47 32 34 30  | ;EOL. BEQ WG240|
00001930: 0D 20 4A 53 52 20 50 52  54 0D 3B 43 48 45 43 4B  |. JSR PRT.;CHECK|
00001940: 20 46 4F 52 20 53 54 4F  50 20 4B 45 59 20 41 4E  | FOR STOP KEY AN|
00001950: 44 20 50 41 55 53 45 0D  20 4A 53 52 20 53 54 4F  |D PAUSE. JSR STO|
00001960: 50 20 3B 53 54 4F 50 20  4B 45 59 0D 20 42 45 51  |P ;STOP KEY. BEQ|
00001970: 20 57 47 32 33 30 20 3B  59 45 53 2E 2E 2E 0D 20  | WG230 ;YES.... |
00001980: 4A 53 52 20 47 45 54 49  4E 20 3B 47 45 54 20 41  |JSR GETIN ;GET A|
00001990: 20 43 48 41 52 20 46 52  4F 4D 20 4B 45 59 42 4F  | CHAR FROM KEYBO|
000019A0: 41 52 44 0D 20 42 45 51  20 57 47 32 35 30 20 3B  |ARD. BEQ WG250 ;|
000019B0: 4E 4F 54 48 49 4E 47 2E  2E 2E 0D 20 43 4D 50 20  |NOTHING.... CMP |
000019C0: 23 24 32 30 20 3B 53 50  41 43 45 20 42 41 52 20  |#$20 ;SPACE BAR |
000019D0: 46 4F 52 20 50 41 55 53  45 3F 0D 20 42 4E 45 20  |FOR PAUSE?. BNE |
000019E0: 57 47 32 35 30 20 3B 4E  4F 2E 2E 2E 0D 57 47 32  |WG250 ;NO....WG2|
000019F0: 35 35 20 4A 53 52 20 47  45 54 49 4E 20 3B 41 4E  |55 JSR GETIN ;AN|
00001A00: 59 20 4B 45 59 20 53 54  41 52 54 53 0D 20 42 45  |Y KEY STARTS. BE|
00001A10: 51 20 57 47 32 35 35 0D  20 42 4E 45 20 57 47 32  |Q WG255. BNE WG2|
00001A20: 35 30 20 3B 28 4A 4D 50  29 0D 3B 0D 57 47 32 34  |50 ;(JMP).;.WG24|
00001A30: 30 20 4C 44 41 20 23 43  52 0D 20 4A 53 52 20 50  |0 LDA #CR. JSR P|
00001A40: 52 54 0D 20 4C 44 59 20  23 24 30 32 20 3B 20 44  |RT. LDY #$02 ; D|
00001A50: 4F 20 54 57 49 43 45 0D  20 4A 4D 50 20 57 47 32  |O TWICE. JMP WG2|
00001A60: 32 30 0D 3B 0D 3B 43 4C  4F 53 45 20 46 4C 4F 50  |20.;.;CLOSE FLOP|
00001A70: 50 59 20 41 4E 44 20 52  45 54 55 52 4E 0D 3B 0D  |PY AND RETURN.;.|
00001A80: 57 47 32 33 30 20 4A 53  52 20 43 4C 53 45 49 20  |WG230 JSR CLSEI |
00001A90: 3B 43 4C 4F 53 45 20 46  49 4C 45 0D 20 4C 44 41  |;CLOSE FILE. LDA|
00001AA0: 20 23 43 52 20 3B 50 52  49 4E 54 20 41 20 52 45  | #CR ;PRINT A RE|
00001AB0: 54 55 52 4E 0D 20 4A 53  52 20 50 52 54 0D 20 4A  |TURN. JSR PRT. J|
00001AC0: 4D 50 20 43 48 52 47 4F  54 20 3B 52 45 54 55 52  |MP CHRGOT ;RETUR|
00001AD0: 4E 0D 2E 50 41 47 45 20  27 46 49 4C 45 20 4C 4F  |N..PAGE 'FILE LO|
00001AE0: 41 44 2F 52 55 4E 27 0D  3B 0D 3B 20 20 20 20 4C  |AD/RUN'.;.;    L|
00001AF0: 4F 41 44 20 4F 52 20 4C  4F 41 44 20 41 4E 44 20  |OAD OR LOAD AND |
00001B00: 52 55 4E 20 41 20 46 49  4C 45 0D 3B 20 20 28 46  |RUN A FILE.;  (F|
00001B10: 4E 4C 45 4E 20 49 53 20  53 45 54 20 41 4E 44 20  |NLEN IS SET AND |
00001B20: 54 48 45 20 4E 41 4D 45  20 49 53 20 49 4E 20 46  |THE NAME IS IN F|
00001B30: 49 4C 45 29 0D 3B 20 20  25 46 49 4C 45 4E 41 4D  |ILE).;  %FILENAM|
00001B40: 45 20 2E 2E 2E 2E 2E 2E  20 4C 4F 41 44 20 28 4E  |E ...... LOAD (N|
00001B50: 4F 4E 20 52 45 4C 4F 43  41 54 49 4E 47 29 0D 3B  |ON RELOCATING).;|
00001B60: 20 20 2F 46 49 4C 45 4E  41 4D 45 20 2E 2E 2E 2E  |  /FILENAME ....|
00001B70: 2E 2E 20 4C 4F 41 44 0D  3B 20 20 5E 46 49 4C 45  |.. LOAD.;  ^FILE|
00001B80: 4E 41 4D 45 20 2E 2E 2E  2E 2E 2E 20 4C 4F 41 44  |NAME ...... LOAD|
00001B90: 2F 52 55 4E 0D 3B 0D 52  55 4E 52 0D 4C 4F 41 44  |/RUN.;.RUNR.LOAD|
00001BA0: 0D 20 4C 44 58 20 54 58  54 54 41 42 20 3B 53 45  |. LDX TXTTAB ;SE|
00001BB0: 54 20 50 4F 49 4E 54 45  52 20 46 4F 52 20 41 55  |T POINTER FOR AU|
00001BC0: 54 4F 20 4C 4F 43 41 54  45 0D 20 4C 44 59 20 54  |TO LOCATE. LDY T|
00001BD0: 58 54 54 41 42 2B 31 0D  20 4C 44 41 20 46 4C 41  |XTTAB+1. LDA FLA|
00001BE0: 47 20 3B 53 45 54 20 54  59 50 45 20 4F 46 20 4C  |G ;SET TYPE OF L|
00001BF0: 4F 41 44 0D 20 43 4D 50  20 23 27 25 0D 20 42 4E  |OAD. CMP #'%. BN|
00001C00: 45 20 4C 4F 41 44 30 0D  20 4C 44 41 20 23 31 0D  |E LOAD0. LDA #1.|
00001C10: 20 2E 42 59 54 20 24 32  43 20 3B 53 4B 49 50 32  | .BYT $2C ;SKIP2|
00001C20: 0D 4C 4F 41 44 30 20 4C  44 41 20 23 30 0D 20 53  |.LOAD0 LDA #0. S|
00001C30: 54 41 20 53 41 0D 20 4C  44 41 20 23 24 30 0D 20  |TA SA. LDA #$0. |
00001C40: 4A 53 52 20 4C 4F 41 44  53 50 20 3B 4C 4F 41 44  |JSR LOADSP ;LOAD|
00001C50: 20 41 20 50 52 4F 47 52  41 4D 0D 20 42 43 53 20  | A PROGRAM. BCS |
00001C60: 4C 44 45 52 52 20 3B 54  52 4F 55 42 4C 45 20 49  |LDERR ;TROUBLE I|
00001C70: 4E 20 52 49 56 45 52 20  43 49 54 59 0D 20 4C 44  |N RIVER CITY. LD|
00001C80: 41 20 46 4C 41 47 20 3B  4C 4F 41 44 20 54 59 50  |A FLAG ;LOAD TYP|
00001C90: 45 0D 20 43 4D 50 20 23  27 25 20 3B 49 53 20 49  |E. CMP #'% ;IS I|
00001CA0: 54 20 41 4E 20 41 42 53  4F 4C 55 54 45 20 4C 4F  |T AN ABSOLUTE LO|
00001CB0: 41 44 0D 20 42 45 51 20  4C 4F 41 44 31 20 3B 59  |AD. BEQ LOAD1 ;Y|
00001CC0: 45 53 0D 20 4C 44 41 20  45 41 48 20 3B 53 45 54  |ES. LDA EAH ;SET|
00001CD0: 20 42 41 53 49 43 27 53  20 50 4F 49 4E 54 45 52  | BASIC'S POINTER|
00001CE0: 53 0D 20 53 54 41 20 56  41 52 54 41 42 2B 31 0D  |S. STA VARTAB+1.|
00001CF0: 20 4C 44 41 20 45 41 4C  0D 20 53 54 41 20 56 41  | LDA EAL. STA VA|
00001D00: 52 54 41 42 0D 20 4A 53  52 20 52 55 4E 43 20 3B  |RTAB. JSR RUNC ;|
00001D10: 46 49 58 20 50 4F 49 4E  54 45 52 53 0D 20 4A 53  |FIX POINTERS. JS|
00001D20: 52 20 4C 4E 4B 50 52 47  20 3B 46 49 58 20 4C 49  |R LNKPRG ;FIX LI|
00001D30: 4E 4B 53 0D 20 4C 44 41  20 46 4C 41 47 20 3B 43  |NKS. LDA FLAG ;C|
00001D40: 48 45 43 4B 20 46 4F 52  20 4C 4F 41 44 20 4F 52  |HECK FOR LOAD OR|
00001D50: 20 52 55 4E 0D 20 43 4D  50 20 23 24 41 44 20 3B  | RUN. CMP #$AD ;|
00001D60: 4C 4F 41 44 20 43 4F 4D  4D 41 4E 44 20 49 53 20  |LOAD COMMAND IS |
00001D70: 2F 20 28 54 4F 4B 45 4E  29 0D 20 42 45 51 20 4C  |/ (TOKEN). BEQ L|
00001D80: 4F 41 44 31 20 3B 59 45  53 2E 2E 2E 4C 4F 41 44  |OAD1 ;YES...LOAD|
00001D90: 20 4F 4E 4C 59 0D 20 43  4D 50 20 23 27 2F 20 3B  | ONLY. CMP #'/ ;|
00001DA0: 4C 4F 41 44 20 43 4F 4D  4D 41 4E 44 20 49 53 20  |LOAD COMMAND IS |
00001DB0: 2F 0D 20 42 4E 45 20 57  47 33 30 30 20 3B 4E 4F  |/. BNE WG300 ;NO|
00001DC0: 2E 2E 2E 4C 4F 41 44 2F  52 55 4E 0D 4C 4F 41 44  |...LOAD/RUN.LOAD|
00001DD0: 31 20 4A 4D 50 20 52 45  41 44 59 20 3B 4C 4F 41  |1 JMP READY ;LOA|
00001DE0: 44 20 52 45 54 55 52 4E  20 54 4F 20 42 41 53 49  |D RETURN TO BASI|
00001DF0: 43 0D 57 47 33 30 30 20  4C 44 41 20 23 24 30 30  |C.WG300 LDA #$00|
00001E00: 20 3B 4E 4F 20 4B 45 52  4E 41 4C 20 4D 45 53 53  | ;NO KERNAL MESS|
00001E10: 41 47 45 53 0D 20 4A 53  52 20 53 45 54 4D 53 47  |AGES. JSR SETMSG|
00001E20: 0D 20 4A 53 52 20 53 54  58 54 50 54 20 3B 53 45  |. JSR STXTPT ;SE|
00001E30: 54 20 54 58 54 50 54 52  20 46 4F 52 20 52 55 4E  |T TXTPTR FOR RUN|
00001E40: 0D 20 4A 4D 50 20 4E 45  57 53 54 54 20 3B 52 55  |. JMP NEWSTT ;RU|
00001E50: 4E 20 50 52 4F 47 52 41  4D 0D 4C 44 45 52 52 20  |N PROGRAM.LDERR |
00001E60: 3B 4C 4F 41 44 20 45 52  52 4F 52 0D 20 4A 4D 50  |;LOAD ERROR. JMP|
00001E70: 20 52 45 41 44 59 0D 2E  50 41 47 45 20 27 51 55  | READY..PAGE 'QU|
00001E80: 49 54 2C 20 53 41 56 45  2C 20 43 48 41 4E 47 45  |IT, SAVE, CHANGE|
00001E90: 27 0D 3B 0D 3B 20 51 55  49 54 20 43 4F 4D 4D 41  |'.;.; QUIT COMMA|
00001EA0: 4E 44 20 27 40 51 27 0D  3B 0D 51 55 49 54 0D 20  |ND '@Q'.;.QUIT. |
00001EB0: 4C 44 58 20 23 24 30 32  0D 52 45 53 54 20 3B 52  |LDX #$02.REST ;R|
00001EC0: 45 53 54 4F 52 45 20 27  43 48 52 47 45 54 27 0D  |ESTORE 'CHRGET'.|
00001ED0: 20 4C 44 41 20 43 48 44  47 4F 54 2B 33 2C 58 0D  | LDA CHDGOT+3,X.|
00001EE0: 20 53 54 41 20 43 48 52  47 4F 54 2B 33 2C 58 0D  | STA CHRGOT+3,X.|
00001EF0: 20 44 45 58 0D 20 42 50  4C 20 52 45 53 54 0D 20  | DEX. BPL REST. |
00001F00: 4A 4D 50 20 52 45 41 44  59 0D 3B 0D 3B 53 41 56  |JMP READY.;.;SAV|
00001F10: 45 20 43 4F 4D 4D 41 4E  44 20 27 5F 46 49 4C 45  |E COMMAND '_FILE|
00001F20: 4E 41 4D 45 27 0D 3B 0D  53 41 56 45 20 3B 53 41  |NAME'.;.SAVE ;SA|
00001F30: 56 45 20 41 20 46 49 4C  45 0D 20 4A 53 52 20 43  |VE A FILE. JSR C|
00001F40: 53 41 56 45 20 3B 43 41  4C 4C 20 42 41 53 49 43  |SAVE ;CALL BASIC|
00001F50: 20 53 41 56 45 20 52 4F  55 54 49 4E 45 20 4A 55  | SAVE ROUTINE JU|
00001F60: 53 54 20 50 41 53 54 20  50 41 52 53 49 4E 47 0D  |ST PAST PARSING.|
00001F70: 20 4A 4D 50 20 52 44 45  52 52 20 3B 52 45 41 44  | JMP RDERR ;READ|
00001F80: 20 54 48 45 45 20 45 43  20 41 46 54 45 52 20 53  | THEE EC AFTER S|
00001F90: 41 56 45 0D 3B 0D 3B 20  43 48 41 4E 47 45 20 54  |AVE.;.; CHANGE T|
00001FA0: 48 45 20 44 45 46 41 55  4C 54 20 44 45 56 49 43  |HE DEFAULT DEVIC|
00001FB0: 45 20 4E 55 4D 42 45 52  20 27 40 23 39 27 0D 3B  |E NUMBER '@#9'.;|
00001FC0: 0D 43 48 47 44 45 56 0D  20 4C 44 59 20 46 4E 4C  |.CHGDEV. LDY FNL|
00001FD0: 45 4E 0D 20 4C 44 41 20  46 49 4C 45 2C 59 0D 20  |EN. LDA FILE,Y. |
00001FE0: 41 4E 44 20 23 24 30 46  20 3B 43 4F 4E 56 45 52  |AND #$0F ;CONVER|
00001FF0: 54 20 41 53 43 49 49 20  54 4F 20 42 49 4E 41 52  |T ASCII TO BINAR|
00002000: 59 0D 20 53 54 41 20 53  56 46 41 0D 20 44 45 59  |Y. STA SVFA. DEY|
00002010: 0D 20 42 45 51 20 43 48  47 31 30 20 3B 4F 4E 4C  |. BEQ CHG10 ;ONL|
00002020: 59 20 4F 4E 45 20 4E 55  4D 42 45 52 0D 3B 0D 20  |Y ONE NUMBER.;. |
00002030: 4C 44 41 20 46 49 4C 45  2C 59 0D 20 41 4E 44 20  |LDA FILE,Y. AND |
00002040: 23 24 30 46 0D 20 54 41  59 20 3B 55 53 45 20 46  |#$0F. TAY ;USE F|
00002050: 49 52 53 54 20 44 49 47  49 54 20 41 53 20 43 4F  |IRST DIGIT AS CO|
00002060: 55 4E 54 0D 20 42 45 51  20 43 48 47 31 30 0D 20  |UNT. BEQ CHG10. |
00002070: 4C 44 41 20 53 56 46 41  0D 20 43 4C 43 0D 43 48  |LDA SVFA. CLC.CH|
00002080: 47 30 35 20 41 44 43 20  23 31 30 20 3B 41 44 44  |G05 ADC #10 ;ADD|
00002090: 20 31 30 20 46 4F 52 20  45 41 43 48 20 43 4F 55  | 10 FOR EACH COU|
000020A0: 4E 54 0D 20 44 45 59 0D  20 42 4E 45 20 43 48 47  |NT. DEY. BNE CHG|
000020B0: 30 35 0D 20 53 54 41 20  53 56 46 41 20 3B 53 41  |05. STA SVFA ;SA|
000020C0: 56 45 20 52 45 53 55 4C  54 0D 43 48 47 31 30 0D  |VE RESULT.CHG10.|
000020D0: 20 4A 4D 50 20 43 48 52  47 4F 54 0D 2E 50 41 47  | JMP CHRGOT..PAG|
000020E0: 45 20 27 53 55 42 52 4F  55 54 49 4E 45 53 27 0D  |E 'SUBROUTINES'.|
000020F0: 3B 0D 3B 20 52 45 41 44  20 46 49 4C 45 4E 41 4D  |;.; READ FILENAM|
00002100: 45 20 53 54 52 49 4E 47  20 46 52 4F 4D 20 43 4F  |E STRING FROM CO|
00002110: 4D 4D 41 4E 44 0D 3B 20  41 4E 44 20 50 4C 41 43  |MMAND.; AND PLAC|
00002120: 45 20 49 54 20 49 4E 54  4F 20 46 49 4C 45 20 53  |E IT INTO FILE S|
00002130: 54 52 49 4E 47 0D 3B 0D  52 44 46 49 4C 45 0D 20  |TRING.;.RDFILE. |
00002140: 4C 44 59 20 23 30 0D 20  4A 53 52 20 43 48 52 47  |LDY #0. JSR CHRG|
00002150: 45 54 0D 20 54 41 58 0D  20 42 4E 45 20 52 44 30  |ET. TAX. BNE RD0|
00002160: 35 20 3B 4D 4F 52 45 20  54 4F 20 44 4F 2E 2E 2E  |5 ;MORE TO DO...|
00002170: 0D 20 4A 4D 50 20 53 45  54 4C 45 4E 20 3B 44 4F  |. JMP SETLEN ;DO|
00002180: 4E 45 2E 2E 2E 0D 52 44  30 35 20 4C 44 41 20 23  |NE....RD05 LDA #|
00002190: 24 36 30 20 3B 44 4F 20  4E 4F 54 20 53 4B 49 50  |$60 ;DO NOT SKIP|
000021A0: 20 42 4C 41 4E 4B 53 20  4F 52 20 43 41 4C 4C 20  | BLANKS OR CALL |
000021B0: 4D 45 20 43 48 52 47 45  54 0D 20 53 54 41 20 43  |ME CHRGET. STA C|
000021C0: 48 52 47 4F 54 2B 33 0D  20 4C 44 41 20 54 58 54  |HRGOT+3. LDA TXT|
000021D0: 50 54 52 20 3B 53 41 56  45 20 50 4F 49 4E 54 45  |PTR ;SAVE POINTE|
000021E0: 52 20 54 4F 20 44 41 54  41 0D 20 50 48 41 0D 20  |R TO DATA. PHA. |
000021F0: 4C 44 41 20 54 58 54 50  54 52 2B 31 0D 20 50 48  |LDA TXTPTR+1. PH|
00002200: 41 0D 20 54 58 41 20 3B  50 55 54 20 46 49 52 53  |A. TXA ;PUT FIRS|
00002210: 54 20 43 48 41 52 20 49  4E 54 4F 20 2E 41 0D 52  |T CHAR INTO .A.R|
00002220: 44 31 30 20 43 4D 50 20  23 27 22 20 3B 4C 4F 4F  |D10 CMP #'" ;LOO|
00002230: 4B 20 46 4F 52 20 51 55  4F 54 45 0D 20 42 45 51  |K FOR QUOTE. BEQ|
00002240: 20 52 44 32 30 0D 20 4A  53 52 20 43 48 52 47 45  | RD20. JSR CHRGE|
00002250: 54 20 3B 47 45 54 20 4E  45 58 54 20 43 48 41 52  |T ;GET NEXT CHAR|
00002260: 41 43 54 45 52 0D 20 42  4E 45 20 52 44 31 30 0D  |ACTER. BNE RD10.|
00002270: 20 50 4C 41 20 3B 44 49  44 20 4E 4F 54 20 46 49  | PLA ;DID NOT FI|
00002280: 4E 44 20 51 55 4F 54 45  20 28 52 45 41 44 20 41  |ND QUOTE (READ A|
00002290: 4C 4C 20 4F 46 20 4C 49  4E 45 29 0D 20 53 54 41  |LL OF LINE). STA|
000022A0: 20 54 58 54 50 54 52 2B  31 20 3B 52 45 53 54 4F  | TXTPTR+1 ;RESTO|
000022B0: 52 45 20 50 4F 49 4E 54  45 52 0D 20 50 4C 41 0D  |RE POINTER. PLA.|
000022C0: 20 53 54 41 20 54 58 54  50 54 52 0D 20 4A 53 52  | STA TXTPTR. JSR|
000022D0: 20 43 48 52 47 4F 54 20  3B 47 45 54 20 46 49 52  | CHRGOT ;GET FIR|
000022E0: 53 54 20 43 48 41 52 41  43 54 45 52 20 4F 4E 20  |ST CHARACTER ON |
000022F0: 4C 49 4E 45 0D 20 4C 44  58 20 23 30 20 3B 46 49  |LINE. LDX #0 ;FI|
00002300: 4C 45 20 4E 41 4D 45 20  4C 45 4E 47 54 48 20 43  |LE NAME LENGTH C|
00002310: 4F 55 4E 54 0D 20 43 4D  50 20 23 27 22 20 3B 4C  |OUNT. CMP #'" ;L|
00002320: 4F 4F 4B 49 4E 47 20 41  54 20 51 55 4F 54 45 3F  |OOKING AT QUOTE?|
00002330: 0D 20 42 45 51 20 46 49  4C 4C 20 3B 59 45 53 2E  |. BEQ FILL ;YES.|
00002340: 2E 2E 28 4D 55 53 54 20  42 45 20 57 48 45 4E 20  |..(MUST BE WHEN |
00002350: 52 55 4E 4E 49 4E 47 29  0D 20 4C 44 58 20 23 3E  |RUNNING). LDX #>|
00002360: 42 55 46 20 3B 49 46 20  49 4E 20 44 49 52 45 43  |BUF ;IF IN DIREC|
00002370: 54 20 4D 4F 44 45 20 54  48 45 4E 20 4F 4B 0D 20  |T MODE THEN OK. |
00002380: 43 50 58 20 54 58 54 50  54 52 2B 31 0D 20 42 4E  |CPX TXTPTR+1. BN|
00002390: 45 20 46 49 4C 45 52 31  20 3B 4D 55 53 54 20 48  |E FILER1 ;MUST H|
000023A0: 41 56 45 20 41 20 51 55  4F 54 45 0D 20 4C 44 58  |AVE A QUOTE. LDX|
000023B0: 20 23 30 0D 20 42 45 51  20 46 49 4C 4C 31 30 20  | #0. BEQ FILL10 |
000023C0: 3B 28 42 52 41 4E 43 48  29 0D 52 44 32 30 20 50  |;(BRANCH).RD20 P|
000023D0: 4C 41 20 3B 46 4F 55 4E  44 20 51 55 4F 54 45 20  |LA ;FOUND QUOTE |
000023E0: 44 4F 20 4F 55 52 20 54  48 49 4E 47 0D 20 50 4C  |DO OUR THING. PL|
000023F0: 41 0D 20 4C 44 58 20 23  30 0D 3B 0D 46 49 4C 4C  |A. LDX #0.;.FILL|
00002400: 0D 20 4A 53 52 20 43 48  52 47 45 54 0D 20 42 45  |. JSR CHRGET. BE|
00002410: 51 20 53 45 54 4C 45 4E  0D 46 49 4C 4C 31 30 0D  |Q SETLEN.FILL10.|
00002420: 20 43 4D 50 20 23 27 22  20 3B 45 4E 44 20 51 55  | CMP #'" ;END QU|
00002430: 4F 54 45 3F 0D 20 42 45  51 20 53 45 54 4C 45 4E  |OTE?. BEQ SETLEN|
00002440: 0D 20 43 4D 50 20 23 27  3D 20 3B 46 49 4C 45 4E  |. CMP #'= ;FILEN|
00002450: 41 4D 45 20 53 54 41 52  54 0D 20 42 45 51 20 46  |AME START. BEQ F|
00002460: 49 4C 4C 32 30 0D 20 43  4D 50 20 23 27 3A 20 3B  |ILL20. CMP #': ;|
00002470: 46 49 4C 45 4E 41 4D 45  20 53 54 41 52 54 0D 20  |FILENAME START. |
00002480: 42 4E 45 20 53 54 4F 52  49 54 0D 46 49 4C 4C 32  |BNE STORIT.FILL2|
00002490: 30 0D 20 4C 44 58 20 23  24 46 46 20 3B 44 4F 20  |0. LDX #$FF ;DO |
000024A0: 4E 4F 54 20 43 4F 55 4E  54 0D 53 54 4F 52 49 54  |NOT COUNT.STORIT|
000024B0: 0D 20 43 4D 50 20 23 27  5B 20 3B 53 54 41 52 54  |. CMP #'[ ;START|
000024C0: 20 56 4F 4C 20 53 54 55  46 46 3F 0D 20 42 45 51  | VOL STUFF?. BEQ|
000024D0: 20 46 49 4C 4C 33 30 20  3B 59 45 53 2E 2E 2E 0D  | FILL30 ;YES....|
000024E0: 53 54 4F 52 31 30 0D 20  53 54 41 20 46 49 4C 45  |STOR10. STA FILE|
000024F0: 2C 59 0D 20 53 54 41 20  4C 41 53 54 43 48 0D 20  |,Y. STA LASTCH. |
00002500: 49 4E 58 0D 20 49 4E 59  0D 20 42 50 4C 20 46 49  |INX. INY. BPL FI|
00002510: 4C 4C 0D 3B 0D 46 49 4C  4C 33 30 0D 20 4A 53 52  |LL.;.FILL30. JSR|
00002520: 20 43 48 52 47 45 54 20  3B 47 45 54 20 56 4F 4C  | CHRGET ;GET VOL|
00002530: 20 4E 41 4D 45 0D 20 42  45 51 20 46 49 4C 45 52  | NAME. BEQ FILER|
00002540: 31 20 3B 52 45 51 55 49  52 45 44 0D 20 53 54 41  |1 ;REQUIRED. STA|
00002550: 20 56 4F 4C 20 3B 53 41  56 45 20 49 54 0D 20 4A  | VOL ;SAVE IT. J|
00002560: 53 52 20 43 48 52 47 45  54 20 3B 47 45 54 20 43  |SR CHRGET ;GET C|
00002570: 4C 4F 53 49 4E 47 20 44  45 4C 49 4D 49 54 45 52  |LOSING DELIMITER|
00002580: 0D 20 42 45 51 20 46 49  4C 45 52 31 20 3B 4D 55  |. BEQ FILER1 ;MU|
00002590: 53 54 20 42 45 20 54 48  45 52 45 3F 3F 2E 2E 2E  |ST BE THERE??...|
000025A0: 0D 20 43 4D 50 20 23 27  5D 0D 20 42 4E 45 20 46  |. CMP #']. BNE F|
000025B0: 49 4C 45 52 31 20 3B 57  52 4F 4E 47 20 44 45 4C  |ILER1 ;WRONG DEL|
000025C0: 49 4D 49 54 45 52 2E 2E  2E 2E 0D 3B 0D 20 43 50  |IMITER.....;. CP|
000025D0: 58 20 23 31 36 20 3B 53  45 45 20 49 46 20 4E 41  |X #16 ;SEE IF NA|
000025E0: 4D 45 20 49 53 20 54 4F  4F 20 4C 4F 4E 47 0D 20  |ME IS TOO LONG. |
000025F0: 42 43 53 20 46 49 4C 45  52 31 0D 20 4C 44 41 20  |BCS FILER1. LDA |
00002600: 4C 41 53 54 43 48 20 3B  49 46 20 4C 41 53 54 20  |LASTCH ;IF LAST |
00002610: 49 53 20 2A 20 54 48 45  4E 20 46 49 4C 4C 20 3F  |IS * THEN FILL ?|
00002620: 0D 20 43 4D 50 20 23 27  2A 0D 20 42 4E 45 20 46  |. CMP #'*. BNE F|
00002630: 49 4C 53 50 43 0D 20 44  45 59 20 3B 44 4F 20 4E  |ILSPC. DEY ;DO N|
00002640: 4F 54 20 50 55 54 20 49  4E 20 54 48 45 20 2A 0D  |OT PUT IN THE *.|
00002650: 20 44 45 58 0D 20 4C 44  41 20 23 27 3F 0D 20 2E  | DEX. LDA #'?. .|
00002660: 42 59 54 20 24 32 43 0D  46 49 4C 53 50 43 20 4C  |BYT $2C.FILSPC L|
00002670: 44 41 20 23 24 32 30 20  3B 45 4C 53 45 20 46 49  |DA #$20 ;ELSE FI|
00002680: 4C 4C 20 57 49 54 48 20  53 50 41 43 45 0D 46 49  |LL WITH SPACE.FI|
00002690: 4C 50 41 54 0D 20 43 50  58 20 23 31 35 20 3B 41  |LPAT. CPX #15 ;A|
000026A0: 52 45 20 57 45 20 44 4F  4E 45 20 59 45 54 20 3F  |RE WE DONE YET ?|
000026B0: 0D 20 42 43 53 20 46 49  4C 45 4E 44 20 3B 59 45  |. BCS FILEND ;YE|
000026C0: 53 2E 2E 2E 0D 20 53 54  41 20 46 49 4C 45 2C 59  |S.... STA FILE,Y|
000026D0: 0D 20 49 4E 59 0D 20 49  4E 58 0D 20 42 50 4C 20  |. INY. INX. BPL |
000026E0: 46 49 4C 50 41 54 0D 46  49 4C 45 4E 44 0D 20 4C  |FILPAT.FILEND. L|
000026F0: 44 41 20 56 4F 4C 20 3B  50 55 54 20 49 4E 20 54  |DA VOL ;PUT IN T|
00002700: 48 45 20 56 4F 4C 55 4D  45 20 4E 41 4D 45 0D 20  |HE VOLUME NAME. |
00002710: 42 4E 45 20 53 54 4F 52  31 30 20 3B 42 52 41 4E  |BNE STOR10 ;BRAN|
00002720: 43 48 0D 3B 0D 46 49 4C  45 52 31 20 3B 42 4C 4F  |CH.;.FILER1 ;BLO|
00002730: 57 20 4F 46 46 20 54 4F  20 53 59 4E 54 41 58 20  |W OFF TO SYNTAX |
00002740: 45 52 52 4F 52 0D 20 4C  44 58 20 23 24 34 43 20  |ERROR. LDX #$4C |
00002750: 3B 52 45 53 54 4F 52 45  20 43 48 52 47 4F 54 0D  |;RESTORE CHRGOT.|
00002760: 20 53 54 58 20 43 48 52  47 4F 54 2B 33 0D 20 4A  | STX CHRGOT+3. J|
00002770: 4D 50 20 53 4E 45 52 52  0D 3B 0D 53 45 54 4C 45  |MP SNERR.;.SETLE|
00002780: 4E 0D 20 53 54 59 20 46  4E 4C 45 4E 20 3B 53 41  |N. STY FNLEN ;SA|
00002790: 56 45 20 4C 45 4E 47 54  48 0D 20 4C 44 58 20 23  |VE LENGTH. LDX #|
000027A0: 24 34 43 20 3B 52 45 53  54 4F 52 45 20 43 48 52  |$4C ;RESTORE CHR|
000027B0: 47 4F 54 0D 20 53 54 58  20 43 48 52 47 4F 54 2B  |GOT. STX CHRGOT+|
000027C0: 33 0D 3B 0D 20 4A 53 52  20 43 48 52 47 4F 54 20  |3.;. JSR CHRGOT |
000027D0: 3B 54 48 52 4F 57 20 41  57 41 59 20 54 48 45 20  |;THROW AWAY THE |
000027E0: 52 45 53 54 20 4F 46 20  54 48 45 20 4C 49 4E 45  |REST OF THE LINE|
000027F0: 0D 20 42 45 51 20 53 45  54 52 54 53 0D 53 45 54  |. BEQ SETRTS.SET|
00002800: 43 4C 52 0D 20 4A 53 52  20 43 48 52 47 45 54 0D  |CLR. JSR CHRGET.|
00002810: 20 42 4E 45 20 53 45 54  43 4C 52 0D 3B 0D 53 45  | BNE SETCLR.;.SE|
00002820: 54 52 54 53 20 3B 44 4F  4E 45 0D 20 52 54 53 0D  |TRTS ;DONE. RTS.|
00002830: 3B 0D 3B 0D 3B 20 50 52  49 4E 54 20 54 48 45 20  |;.;.; PRINT THE |
00002840: 53 49 47 4E 20 4F 4E 20  4D 53 47 0D 3B 0D 4D 53  |SIGN ON MSG.;.MS|
00002850: 47 0D 20 4C 44 58 20 23  24 30 30 0D 4F 55 54 4C  |G. LDX #$00.OUTL|
00002860: 50 20 4C 44 41 20 4D 53  47 53 2C 58 0D 20 42 45  |P LDA MSGS,X. BE|
00002870: 51 20 4D 53 47 44 0D 20  4A 53 52 20 50 52 54 0D  |Q MSGD. JSR PRT.|
00002880: 20 49 4E 58 0D 20 42 4E  45 20 4F 55 54 4C 50 0D  | INX. BNE OUTLP.|
00002890: 4D 53 47 44 20 52 54 53  0D 3B 0D 3B 54 48 45 53  |MSGD RTS.;.;THES|
000028A0: 45 20 4D 55 53 54 20 42  45 20 41 46 54 45 52 20  |E MUST BE AFTER |
000028B0: 54 48 45 20 44 45 46 49  4E 49 54 49 4F 4E 53 0D  |THE DEFINITIONS.|
000028C0: 3B 0D 5A 5A 31 20 3D 4C  4F 41 44 2D 31 20 3B 4C  |;.ZZ1 =LOAD-1 ;L|
000028D0: 4F 41 44 20 41 20 50 52  4F 47 52 41 4D 0D 5A 5A  |OAD A PROGRAM.ZZ|
000028E0: 32 20 3D 52 55 4E 52 2D  31 20 3B 52 55 4E 20 41  |2 =RUNR-1 ;RUN A|
000028F0: 20 50 52 4F 47 52 41 4D  0D 5A 5A 33 20 3D 53 41  | PROGRAM.ZZ3 =SA|
00002900: 56 45 2D 31 20 3B 53 41  56 45 20 41 20 50 52 4F  |VE-1 ;SAVE A PRO|
00002910: 47 52 41 4D 0D 5A 5A 34  20 3D 44 4F 49 54 2D 31  |GRAM.ZZ4 =DOIT-1|
00002920: 20 3B 3E 20 43 41 4C 4C  0D 5A 5A 35 20 3D 43 48  | ;> CALL.ZZ5 =CH|
00002930: 47 44 45 56 2D 31 20 3B  43 48 41 4E 47 45 20 44  |GDEV-1 ;CHANGE D|
00002940: 45 56 49 43 45 20 4E 55  4D 42 45 52 0D 5A 5A 36  |EVICE NUMBER.ZZ6|
00002950: 20 3D 51 55 49 54 2D 31  20 3B 4C 45 41 56 45 20  | =QUIT-1 ;LEAVE |
00002960: 44 4F 53 20 53 55 50 50  4F 52 54 0D 2E 45 4E 44  |DOS SUPPORT..END|
00002970: 0D                                                |.               |
;PUT"@1:CBM64DOS.SRC".;*****************
**************.;*.;*  PET DOS SUPPORT.;*
.;*    04-27-79.;*.;*  BOB FAIRBAIRN.;*.
;*******************************.;*.;* V
ERSION 3.1 6/14/79.;*    ADD @ PROMPT FO
R BUSINESS.;*    KEYBOARD. ADD STOP KEY 
CHECK.;*    IN DIRECTORY PRINT. ADD.;*  
  HALT IN DIRECTORY PRINT.;*.;* VERSION 
3.2 7/2/79.;*    FOR (-04) ROM PROBLEMS.
;*    WITH LOAD ADDRESS ONE OFF.;*    BY
TE LOW..;*.;* VERSION 3.3 7/2/79.;*    A
DD STACK LOOKUP FOR.;*    ACTIVATION..;*
.;* VERSION 4.0 7/5/79.;*    ADD CONTROL
 FOR CMD DURING.;*    A DIRECTORY LISTIN
G..;*.;*.;* VERSION 4.1 11/7/79.;*    RE
MOVE MODS FROM 4.0. CALL.;*    FAST WEDG
E 4.1..;*.;*.;* VERSION 4.2 12/17/79.;* 
   SET UP FOR BASIC 4.0 AND.;*    2.0 (N
O CHANGES).;*.;*.;* VERSION 5.0 12/16/81
-02/10/82.;*    ADD NEW COMMANDS, ALLOW 
TO WORK IN.;*    RUNNING PROGRAM. PUT VO
LUME NAMES.;*    IN ALL COMMANDS USING B
RACKETS.;*    ONLY WORKS WITH BASIC4.0.;
*.;*.;* VERSION 5.1/64   06/07/82-07/13/
82.;*    MAKE WORK WITH COMMODORE 64.;*.
.PAGE.;.;BASIC VARIABLES USED.;.SAL =$AC
 ;INDIRECT POINTER LO.SAH =$AD ;HI.BUFPT
 =$A6 ;CASSETTE (TWO BYTES).CNTDN =$A5 ;
SAVE AREA.TXTTAB =$2B ;POINTER TO BASIC 
START.MEMSIZ =$37 ;POINTER TO TOP MEM.TX
TPTR =$7A ;POINTER TO BUF.SATUS =$90 ;ST
ATUS BYTE.SA =$B9 ;SECONDARY ADDRESS.FA 
=$BA ;PRIMARY ADDRESS.LA =$B8 ;LOGICAL D
EVICE #.FNLEN =$B7 ;FILE NAME LENGTH.FNA
DR =$BB ;FILE NAME ADDRESS.EAL =$AE ;END
 ADDR LO.EAH =$AF ;HI.STAL =$C1 ;LO BYTE
.STAH =$C2 ;HI BYTE.VARTAB =$2D ;END OF 
BASIC PGM..TMP2 =$C3 ;TEMP VARIABLE.BUF 
=$0200 ;INPUT BUFFER.;.;PROGRAM VARIABLE
S.;.CR =$0D ;SYMBOLIC CARRIAGE RETURN..P
AGE.;.;CBM 64  ROUTINES USED (2.0 BASIC)
.;.MAIN =$A48C ;WHERE CALLED FROM(MAIN+1
2).LINPRT =$BDCD ;PRINT LINE #.CLSEI =$F
642 ;CLOSE A FILE.LOADSP =$FFD5 ;LOAD RO
UTINE.CHRGET =$73 ;INPUTS CHARACTERS.CHR
GOT =$79 ;GET LAST CHAR.GONE =$A7E6 ; ST
ATEMENT EXEC(NGONE+2).SNERR =$AF08 ; SYN
TAX ERROR PRINT.CHDGOT =$E3A8 ;ROM COPY 
OF CHRGOT.NEWSTT =$A7AE ;NEW STATEMENT E
XEC.PRT =$E716 ;PRINT A CHARACTER.LISTN 
=$FFB1 ;SEND LISTEN.SETMSG =$FF90 ;SET K
ERNAL MESSAGES.SECND =$FF93 ;SEND SA.CIO
UT =$FFA8 ;SEND CHARACTER.UNLSN =$FFAE ;
UN LISTEN.ACPTR =$FFA5 ;GET A CHARCATER.
TALK =$FFB4 ;SEND TALK.OPENI =$F3D5 ;OPE
N FILE.READY =$E386 ;REENTER BASIC.RUNC 
=$A659 ;CLEAR VARIABLES AND STACK.LNKPRG
 =$A533 ;LINK BASIC LINES.UNTLK =$FFAB ;
UN TALK.STXTPT =$A68E ;SET START TEXT PO
INTER.STOP =$FFE1 ;CHECK FOR STOP KEY.CS
AVE =$E156+3 ;SAVE WITH ADDRESS SET (BAS
IC).TKSA =$FF96 ;TALK SECONDARY ADDRESS.
GETIN =$FFE4 ;GET A CHARACTER..PAGE 'WED
GE PARSER'.;.;WEDGE IN ROUTINE WITH THE.
;COMMAND PARSER AND EXECUTITION.;.*=$CC0
0.JMP GOOO.TABHI..BYT >ZZ1 ;%        LOA
D (NON RELO)..BYT >ZZ1 ;/        LOAD..B
YT >ZZ1 ;/ TOKEN    "..BYT >ZZ2 ;^      
  LOAD/RUN..BYT >ZZ2 ;^ TOKEN   "    "..
BYT >ZZ3 ;_        SAVE..BYT >ZZ4 ;>    
    DISK COMMAND..BYT >ZZ4 ;> TOKEN    "
     "..BYT >ZZ4 ;@          "     "..BY
T >ZZ5 ;#        CHANGE DEVICE..BYT >ZZ6
 ;Q        QUIT.;.TABLO..BYT <ZZ1 ;%..BY
T <ZZ1 ;/..BYT <ZZ1 ;/ TOKEN..BYT <ZZ2 ;
^..BYT <ZZ2 ;^ TOKEN..BYT <ZZ3 ;_..BYT <
ZZ4 ;>..BYT <ZZ4 ;> TOKEN..BYT <ZZ4 ;@..
BYT <ZZ5 ;#..BYT <ZZ6 ;Q.;.NCMD =9 ;NUMB
ER OF MAIN COMMANDS.CMD .BYT '%/',$AD,'^
',$AE,'_','>',$B1,'@#Q',$00.;COMMANDS  %
 / / ^ ^ _ > > @ # Q.;COMMANDS  1 2 3 4 
5 6 7 8 9 A B.PREFIX *=*+2.FILE *=*+1 ;D
ATA FOR DISK IS STORED HERE.FILE1 *=*+79
.SVFA *=*+1 ;SAVE FA.VOL *=*+1 ;VOLUME N
AME.LASTCH *=*+1 ;LAST CHAR FROM CHRGET.
FLAG *=*+1 ;SAVE COMMAND.MSGS .BYT $D,$D
,'      DOS MANAGER V5.1/071382',$D..BYT
 $D, '         BY  BOB FAIRBAIRN',$D..BY
T $D, '(C) 1982 COMMODORE BUSINESS MACHI
NES',$D,$0.JUMP JMP START ;OVERLAY FOR Z
-PAGE 'CHRGOT'..PAGE 'INIT CODE; VECTOR'
.;.; INIT THE MEMORY MANAGER (STARTUP CO
MES HERE).;.GOOO. LDX #$02 ;MOVE THREE B
YTES.WEDGE LDA JUMP,X. STA CHRGOT+3,X. D
EX. BPL WEDGE.;. LDA FA ;USE CURRENT FA 
FOR DEVICE ADDR. STA SVFA.;.; SAY HELLO 
AND EXIT.;. JMP MSG ;PRINT HELLO (JSR/RT
S).;.; THIS IS WHERE WE COME TO DO THE W
ORK.;.START. STA BUFPT ;SAVE .A, .X. STX
 BUFPT+1. TSX ;ACTIVATED  CALL IN 'GONE'
. LDA $0101,X. CMP #<GONE ;FROM A RUNNIN
G PROGRAM??. BEQ TRYTWO. CMP #<MAIN ;FRO
M DIRECT MODE??. BNE NOTCMD.TRYTWO LDA $
0102,X. CMP #>GONE ;PROGRAM?. BEQ FINDIT
. CMP #>MAIN ;DIRECT?. BNE NOTCMD.FINDIT
 LDA BUFPT ;GET THE COMMAND BACK. LDX #N
CMD-1.FINDC ;FIND THE COMMAND. CMP CMD,X
. BEQ CALL10. DEX. BPL FINDC.;.NOTCMD. L
DA BUFPT ;RESTORE REGS. LDX BUFPT+1. CMP
 #': ;COMPLETE CHRGOT. BCS STRTS. JMP CH
RGOT+7.STRTS JMP CHRGOT+17 ;TO THE END O
F CHRGOT.;.CALL10. STX CNTDN ;SAVE INDEX
. STA FLAG ;SAVE THE COMMAND FOR LATER. 
JSR RDFILE ;GET THE FILENAME AND LENGTH.
 LDX CNTDN ;RESTORE INDEX. LDA #<FILE ;S
ET FILENAME ADDRESS. STA FNADR. LDA #>FI
LE. STA FNADR+1. LDA SVFA ;SET PRIMARY A
DDRESS. STA FA.;.CALLIT. LDA TABHI,X ;FO
UND COMMAND...GO THERE. PHA. LDA TABLO,X
. PHA. RTS..PAG.;.;MAIN ACTION ROUTINE F
OR WEDGE COMMANDS '>@'.;.DOIT. TYA ;.Y H
AS FNLEN. BEQ RDERR ;NO DATA SO READ E. 
C..;. LDX #NCMD ;NOW CHECK FOR SUB-COMMA
NDS.CHKSUB. LDA CMD,X. BEQ CHKLST ;RAN O
UT.... CMP FILE ;IS THIS A COMMAND?. BEQ
 FNDSUB ;YES.... INX. BPL CHKSUB.;.CHKLS
T ;NOT A SUB-COMMAND. LDA FILE ;IS THIS 
A DIR COMMAND. CMP #'$. BEQ DODIR ;DIREC
TORY STUFF. JMP NOTDIR ;DISK COMMANDS.;.
;.FNDSUB ;FOUND SUB COMMAND. DEC FNLEN ;
SETUP AND GO THERE. LDA #<FILE1. STA FNA
DR. LDA #>FILE1. STA FNADR+1. JMP CALLIT
..PAGE 'DISK CMD & E. C.'.;.; SEND COMMA
ND TO DISK.;.NOTDIR. LDA FA ;DEVICE ADDR
ESS. JSR LISTN. LDA #$6F. STA SA. JSR SE
CND ;SEND SECONDARY ADDR. LDY #0.BUMP LD
A FILE,Y. JSR CIOUT. INY. CPY FNLEN. BCC
 BUMP ;MORE.;.WG120 JSR UNLSN ;UN LISTEN
. JMP WG998.;.; READ THE ERROR CHANNEL.;
.RDERR. LDA FA ;DEVICE ADDRESS. JSR TALK
. LDA #$6F ;COMMAND CHANNEL SA. STA SA. 
JSR TKSA ;SEND SA TALK STYLE.WG140 JSR A
CPTR ;GET BYTE FROM DISK. CMP #CR. BEQ W
G130. JSR PRT ;PRINT BYTE TO SCREEN. JMP
 WG140 ;LOOP FOR MORE.WG130 JSR PRT ;PRI
NT CR. JSR UNTLK ;UN TALK.WG998 JMP CHRG
OT ;DONE WITH CMD..PAGE 'DIRECTORY READ'
.;.;PRINT THE DIRECTORY '@$0:*'.;.DODIR.
 LDA #$60 ;SECONDARY ADDR. STA SA. JSR O
PENI ;OPEN THE FILE. LDA FA ;GET PRIMARY
 ADDRESS. JSR TALK. LDA SA ;GET SECONDAR
Y ADDRESS. JSR TKSA..SKI. LDA #0. STA SA
TUS ;SET STATUS TO 0. LDY #$03 ;LOOP THR
EE TIMES.WG220 STY FNLEN ;SAVE NEW COUNT
. JSR ACPTR. STA TMP2. JSR ACPTR. STA TM
P2+1. LDY SATUS ;CHECK STATUS. BNE WG230
. LDY FNLEN ;MORE TO DO?. DEY. BNE WG220
 ;NOT DONE YET. LDX TMP2. LDA TMP2+1. JS
R LINPRT ;PRINT LINE NUMBER. LDA #$20 ;P
RINT A SPACE. JSR PRT.WG250 JSR ACPTR. L
DX SATUS. BNE WG230 ;BAD. CMP #0 ;EOL. B
EQ WG240. JSR PRT.;CHECK FOR STOP KEY AN
D PAUSE. JSR STOP ;STOP KEY. BEQ WG230 ;
YES.... JSR GETIN ;GET A CHAR FROM KEYBO
ARD. BEQ WG250 ;NOTHING.... CMP #$20 ;SP
ACE BAR FOR PAUSE?. BNE WG250 ;NO....WG2
55 JSR GETIN ;ANY KEY STARTS. BEQ WG255.
 BNE WG250 ;(JMP).;.WG240 LDA #CR. JSR P
RT. LDY #$02 ; DO TWICE. JMP WG220.;.;CL
OSE FLOPPY AND RETURN.;.WG230 JSR CLSEI 
;CLOSE FILE. LDA #CR ;PRINT A RETURN. JS
R PRT. JMP CHRGOT ;RETURN..PAGE 'FILE LO
AD/RUN'.;.;    LOAD OR LOAD AND RUN A FI
LE.;  (FNLEN IS SET AND THE NAME IS IN F
ILE).;  %FILENAME ...... LOAD (NON RELOC
ATING).;  /FILENAME ...... LOAD.;  ^FILE
NAME ...... LOAD/RUN.;.RUNR.LOAD. LDX TX
TTAB ;SET POINTER FOR AUTO LOCATE. LDY T
XTTAB+1. LDA FLAG ;SET TYPE OF LOAD. CMP
 #'%. BNE LOAD0. LDA #1. .BYT $2C ;SKIP2
.LOAD0 LDA #0. STA SA. LDA #$0. JSR LOAD
SP ;LOAD A PROGRAM. BCS LDERR ;TROUBLE I
N RIVER CITY. LDA FLAG ;LOAD TYPE. CMP #
'% ;IS IT AN ABSOLUTE LOAD. BEQ LOAD1 ;Y
ES. LDA EAH ;SET BASIC'S POINTERS. STA V
ARTAB+1. LDA EAL. STA VARTAB. JSR RUNC ;
FIX POINTERS. JSR LNKPRG ;FIX LINKS. LDA
 FLAG ;CHECK FOR LOAD OR RUN. CMP #$AD ;
LOAD COMMAND IS / (TOKEN). BEQ LOAD1 ;YE
S...LOAD ONLY. CMP #'/ ;LOAD COMMAND IS 
/. BNE WG300 ;NO...LOAD/RUN.LOAD1 JMP RE
ADY ;LOAD RETURN TO BASIC.WG300 LDA #$00
 ;NO KERNAL MESSAGES. JSR SETMSG. JSR ST
XTPT ;SET TXTPTR FOR RUN. JMP NEWSTT ;RU
N PROGRAM.LDERR ;LOAD ERROR. JMP READY..
PAGE 'QUIT, SAVE, CHANGE'.;.; QUIT COMMA
ND '@Q'.;.QUIT. LDX #$02.REST ;RESTORE '
CHRGET'. LDA CHDGOT+3,X. STA CHRGOT+3,X.
 DEX. BPL REST. JMP READY.;.;SAVE COMMAN
D '_FILENAME'.;.SAVE ;SAVE A FILE. JSR C
SAVE ;CALL BASIC SAVE ROUTINE JUST PAST 
PARSING. JMP RDERR ;READ THEE EC AFTER S
AVE.;.; CHANGE THE DEFAULT DEVICE NUMBER
 '@#9'.;.CHGDEV. LDY FNLEN. LDA FILE,Y. 
AND #$0F ;CONVERT ASCII TO BINARY. STA S
VFA. DEY. BEQ CHG10 ;ONLY ONE NUMBER.;. 
LDA FILE,Y. AND #$0F. TAY ;USE FIRST DIG
IT AS COUNT. BEQ CHG10. LDA SVFA. CLC.CH
G05 ADC #10 ;ADD 10 FOR EACH COUNT. DEY.
 BNE CHG05. STA SVFA ;SAVE RESULT.CHG10.
 JMP CHRGOT..PAGE 'SUBROUTINES'.;.; READ
 FILENAME STRING FROM COMMAND.; AND PLAC
E IT INTO FILE STRING.;.RDFILE. LDY #0. 
JSR CHRGET. TAX. BNE RD05 ;MORE TO DO...
. JMP SETLEN ;DONE....RD05 LDA #$60 ;DO 
NOT SKIP BLANKS OR CALL ME CHRGET. STA C
HRGOT+3. LDA TXTPTR ;SAVE POINTER TO DAT
A. PHA. LDA TXTPTR+1. PHA. TXA ;PUT FIRS
T CHAR INTO .A.RD10 CMP #'" ;LOOK FOR QU
OTE. BEQ RD20. JSR CHRGET ;GET NEXT CHAR
ACTER. BNE RD10. PLA ;DID NOT FIND QUOTE
 (READ ALL OF LINE). STA TXTPTR+1 ;RESTO
RE POINTER. PLA. STA TXTPTR. JSR CHRGOT 
;GET FIRST CHARACTER ON LINE. LDX #0 ;FI
LE NAME LENGTH COUNT. CMP #'" ;LOOKING A
T QUOTE?. BEQ FILL ;YES...(MUST BE WHEN 
RUNNING). LDX #>BUF ;IF IN DIRECT MODE T
HEN OK. CPX TXTPTR+1. BNE FILER1 ;MUST H
AVE A QUOTE. LDX #0. BEQ FILL10 ;(BRANCH
).RD20 PLA ;FOUND QUOTE DO OUR THING. PL
A. LDX #0.;.FILL. JSR CHRGET. BEQ SETLEN
.FILL10. CMP #'" ;END QUOTE?. BEQ SETLEN
. CMP #'= ;FILENAME START. BEQ FILL20. C
MP #': ;FILENAME START. BNE STORIT.FILL2
0. LDX #$FF ;DO NOT COUNT.STORIT. CMP #'
[ ;START VOL STUFF?. BEQ FILL30 ;YES....
STOR10. STA FILE,Y. STA LASTCH. INX. INY
. BPL FILL.;.FILL30. JSR CHRGET ;GET VOL
 NAME. BEQ FILER1 ;REQUIRED. STA VOL ;SA
VE IT. JSR CHRGET ;GET CLOSING DELIMITER
. BEQ FILER1 ;MUST BE THERE??.... CMP #'
]. BNE FILER1 ;WRONG DELIMITER.....;. CP
X #16 ;SEE IF NAME IS TOO LONG. BCS FILE
R1. LDA LASTCH ;IF LAST IS * THEN FILL ?
. CMP #'*. BNE FILSPC. DEY ;DO NOT PUT I
N THE *. DEX. LDA #'?. .BYT $2C.FILSPC L
DA #$20 ;ELSE FILL WITH SPACE.FILPAT. CP
X #15 ;ARE WE DONE YET ?. BCS FILEND ;YE
S.... STA FILE,Y. INY. INX. BPL FILPAT.F
ILEND. LDA VOL ;PUT IN THE VOLUME NAME. 
BNE STOR10 ;BRANCH.;.FILER1 ;BLOW OFF TO
 SYNTAX ERROR. LDX #$4C ;RESTORE CHRGOT.
 STX CHRGOT+3. JMP SNERR.;.SETLEN. STY F
NLEN ;SAVE LENGTH. LDX #$4C ;RESTORE CHR
GOT. STX CHRGOT+3.;. JSR CHRGOT ;THROW A
WAY THE REST OF THE LINE. BEQ SETRTS.SET
CLR. JSR CHRGET. BNE SETCLR.;.SETRTS ;DO
NE. RTS.;.;.; PRINT THE SIGN ON MSG.;.MS
G. LDX #$00.OUTLP LDA MSGS,X. BEQ MSGD. 
JSR PRT. INX. BNE OUTLP.MSGD RTS.;.;THES
E MUST BE AFTER THE DEFINITIONS.;.ZZ1 =L
OAD-1 ;LOAD A PROGRAM.ZZ2 =RUNR-1 ;RUN A
 PROGRAM.ZZ3 =SAVE-1 ;SAVE A PROGRAM.ZZ4
 =DOIT-1 ;> CALL.ZZ5 =CHGDEV-1 ;CHANGE D
EVICE NUMBER.ZZ6 =QUIT-1 ;LEAVE DOS SUPP
ORT..END.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL