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