Classic Computer Magazine Archive COMPUTE! ISSUE 57 / FEBRUARY 1985 / PAGE 88

Plus/Term For VIC & 64

Gregg Peele, Assistant Programming Supervisor

Here's a top-notch terminal program that lets you access almost any computer or information service over the phone with your Commodore 64 or VIC-20. Its features include key redefinition, word wrapping, 1200 bps support, uploading, and downloading. Written in BASIC and machine language, the program works on any 64 or VIC with at least 16K RAM and a modem.



There's a lot more out there than you think.
    Sure, you can use your home computer to play games, write letters, and balance your budget. But telecomputing-communicating with other computers over the phone lines-can let you do even more. "Plus/Term" and a modem turns your home computer into a full-fledged communications terminal. You can link up with the personal computers of your friends, the mainframe computer at work or at school, electronic bulletin boards, on-line data bases, and commercial information services such as CompuServe, The Source, and Dow Jones News/ Retrieval.
    Plus/Term is designed to make your computer emulate an asynchronous ASCII terminal. An asynchronous terminal does not require special timing (sync) characters, and doesn't require the receiving terminal to operate in step with your system. ASCII (American Standard Code for Information Interchange) is a standard character code that computers use to understand each other. Most microcomputer communications are asynchronous and in ASCII.

Typing Plus/Term
Plus/Term consists of two parts: a BASIC program that displays menu options, and a machine language routine that handles the actual communications. The BASIC program (Program 1) is the same for both the VIC and 64, but the machine language programs are different.
    First, type in the BASIC portion (Program 1) and save it on tape or disk. To type in the machine language portion, you must use the MLX machine language editor located elsewhere in this issue. Starting and ending addresses for Plus/Term are 50152 and 52561 for the Commodore 64 (Program 2), and 6144 and 8456 for the VIC-20 (Program 3). Before loading MLX to enter Program 3, VIC users must enter the following line in direct mode (without a line number) and press RETURN:

POKE 44,35:POKE 256*35,0:NEW

    Save the machine language portion on tape or disk using the filename referenced in line 100 of the BASIC program (PLUS/TERM.ML).
    To start Plus/Term, run the BASIC program. It automatically loads the machine language part from tape or disk using the filename in line 100. If you're using tape, change the ,8,1 listed after the filename to ,1,1.
    Important: Before loading the BASIC portion into the VIC, enter this line without a line number and press RETURN:

POKE 44,35:POKE 256*35,0:NEW

    You must enter this line every time you start the VIC version of Plus/Term.

Entering Terminal Mode
When you run Plus/Term, the program asks you to specify a baud rate. The baud rate, more properly known as bps (bits per second), is the speed at which a modem communicates. Inexpensive modems-including most of those sold for the Commodore 64 and VIC-20-can transmit and receive information at speeds ranging from 110 to 300 bps (about 10 to 30 characters per second). Modems costing $400 or more can usually be switched to 1200 bps to speed up communications by a factor of four.
    Remember that the computer at the other end of the phone line must be transmitting and receiving at the same speed as yours. You can't send and receive at 1200 bps if the other computer has only a 300 bps modem. Many electronic bulletin boards and commercial information services are capable of communicating at both 300 and 1200 bps. Some even recognize your baud rate when you first sign on and adjust themselves accordingly. But you still have to set Plus/Term for the proper baud rate each time you run the program.
    After you specify the baud rate, Plus/Term enters terminal mode. A cursor appears at the upper-left corner of the screen. The Commodore 64 version of Plus/Term has a blinking underline cursor, and the VIC version has a solid block cursor.
    To see how terminal mode works, try typing these two sentences:

This is a test of the Plus/Term software. It is designed to provide lots of options for use with many systems.

    Notice how Plus/Term handles words that are typed at the end of a line. Rather than splitting words, Plus/Term moves the entire word to the next line. This feature, known as word wrap, makes text easier to read. It's found on most word processors.
    You can turn word wrap on or off at any time by calling up a menu. All the main features in Plus/Term are controlled from a main menu and its submenus. When you're in terminal mode, you can flip the screen to the main menu whenever you want by pressing the f7 special function key.

Plus/Term Main Menu
Here's what it looks like:

PARAMETERS
1. WORD LENGTH
2. STOP BITS
3. BAUD RATE
4. PARITY
5. DUPLEX
6. DEFINE KEY
7. TERMINAL OPTIONS
8. RETURN TO TERMINAL
9. RETURN TO BASIC

    The first five options control communications parameters. Plus/Term defaults to these settings:

8-bit word length
1 stop bit
300 baud
No parity
Half duplex

    Always set your modem to full duplex while using Plus/Term. That way you can control the duplex setting with the program. To change Plus/Term from half duplex to full duplex, press the numeral 5 key to select option 5 from the main menu. The menu goes away and a submenu appears. Again, press the appropriate key to select the option you want (half or full duplex); your choice will be highlighted in reverse video. Press RETURN to go back to the main menu.
    All of the other options in Plus/Term work the same way. Just select an option from the main menu and usually another menu will appear.
    If you change baud rates from within Plus/Term, all other parameters revert to their default values. Usually you need to set the baud rate only when first running the program.
    Never press RUN/STOP-RESTORE in the 64 version of Plus/Term when the menu is on the screen. If you do, the program halts. You can restore it by typing POKE 648,4 and pressing RETURN, but you'll have to type blindly because the operating system thinks the screen is at a different location.

Terminal Mode Commands
You can return to terminal mode from the main menu by selecting option 8 (option 9 exits Plus/Term to BASIC). Notice that the text you left on the screen is still there.
    Other keys besides f7 execute commands in terminal mode. You must press three keys simultaneously: Hold down SHIFT and CTRL, then press the appropriate command key (this sequence makes it possible for you to send special control codes in terminal mode by pressing CTRL and a character key). Here are the terminal mode commands:

CTRL-SHIFT-B:    Change background color.
CTRL-SHIFT-F:    Change border color.
CTRL-SHIFT-K:    Change text color.
CTRL-SHIFT-O:    Open buffer (start storing characters in memory).
CTRL-SHIFT-C:    Close buffer (stop storing characters in memory).
CTRL-SHIFT-S:    Save buffer contents on disk or tape.
CTRL-SHIFT-L:    Load buffer contents from disk or tape.
CTRL-SHIFT-Z:    Zero (erase) buffer.

    Notice that some of these commands involve the manipulation of a buffer. A buffer is an area in memory set aside to store data. If the buffer is open (CTRL-SHIFT-O), all the characters sent and received by your computer are stored in memory. The contents of the buffer can then be saved on disk or tape or sent to a printer. This feature lets you download (receive) text files and programs from remote computers. You can also upload (send) files to other computers. We'll discuss these procedures in a moment.
    The buffer is 30,720 bytes long (about 30K) on a Commodore 64, and 7860 bytes long (about 7.6K) on a VIC-20 with the 16K memory expander. The file you plan to upload or download must fit in the buffer, unless you handle it in pieces to be assembled later. If the buffer fills up when you're downloading, a screen prompt asks: SAVE BUFFER, YES OR NO? If you answer no, the contents of the buffer are erased. Press CTRL-Q to continue your conversation with the other system.

Terminal Options
Option 7 on the main menu, TERMINAL OPTIONS, controls some of the most useful features of Plus/Term. Here's what the terminal options submenu looks like:

1. DIRECTORY (DISK)
2. COMM TO COMM
3. COMM TO ASCII
4. WORD WRAP
5. NORMAL SCREEN
6. PRINT BUFFER
7. LINEFEED WITH RETURN

    Option 1 (DIRECTORY) simply lets you call a disk directory without leaving Plus/Term.
    Options 2 and 3 (COMM TO COMM and COMM TO ASCII) toggle between each other. Option 3 is the default setting. Plus/Term normally translates Commodore codes into ASCII and vice versa. If you select option 2, Plus/Term stops converting Commodore codes to ASCII. This is useful when communicating with other Commodore systems or when transferring files, as we'll see in a moment. Option 3 also lets you save or load key redefinitions with a tape or disk drive. After you've customized the keys as described below, select option 3 and follow the screen prompts.
    Options 4 and 5 (WORD WRAP and NORMAL SCREEN) also toggle back and forth to turn word wrap on or off.
    Option 6 (PRINT BUFFER) lets you access the most powerful features of Plus/Term. You can print the contents of the buffer on the screen or a printer, or send it through the RS-232 port (which may be connected to your modem or a serial printer). Whenever you're printing the buffer, you can pause the action by pressing the SHIFT key, slow it by pressing CTRL, or stop it by pressing the space bar. Since some printers may enter graphics mode if certain character codes are sent, you may need to modify the OPEN statement in line 1900 to lock your printer into text mode.
    Option 7 (LINEFEED WITH RETURN) lets you disable the linefeed character that normally accompanies the RETURN character. Normally when you press RETURN, two things happen: The cursor jumps to the left side of the screen and also moves down a line. The downward
cursor movement is a linefeed. Some remote computers automatically send a linefeed when they receive a RETURN, so the extra linefeed is unnecessary. If option 7 is highlighted, the RETURN character will include a linefeed. Selecting this option toggles linefeeds on and off.

Customizing Plus/Term
We've already mentioned key redefinition briefly. This is a feature usually found only on the better terminal programs, and it requires some explanation. Basically it lets you customize Plus/Term for communicating with a specific remote computer. To use this feature, select option 6 on the main menu.
    Here's why it's important. When Plus/Term is in normal ASCII mode, all characters you type are translated into the standard ASCII codes before they are sent over the phone line. This assumes that the other computer also is sending and receiving the same ASCII codes. But some computers occasionally depart from ASCII. For instance, some systems use ASCII code 127 as a delete character, while pressing the INST/DEL key on a Commodore 64 generates ASCII code 20. The result will be a failure to communicate.
    Plus/Term lets you redefine any key on the keyboard to send out any ASCII code you want. To redefine the INST/DEL key to send the ASCII code 127 that the other computer expects instead of the ASCII code 20, first you'd select option 6 from the main menu. The following submenu appears:

CHANGE VALUES
1. GOING OUT
2. COMING IN

    Since you want to change the value you're sending out, select option 1. A screen prompt asks you to press the key you want to redefine; press INST/DEL. Plus/Term tells you that the key currently sends an ASCII 20 and asks you to type in the code you want. Type 127 and press RETURN. The main menu reappears.
    It's that easy. Now the INST/DEL key sends an ASCII 127 instead of 20.

Two-Way Translating
You're only half done, though. When Plus/Term sends the 127 over the phone line, the other computer will accept it as a delete key, all right. But then the remote computer echoes the code back to your computer (we won't get into the technical reasons). Plus/Term knows that it's supposed to send a 127 instead of a 20, but it doesn't know how to translate the 127 coming back into the 20 that your computer recognizes as a delete key. Instead of deleting characters on your screen, pressing INST/DEL would make back-arrows appear.
    The solution, as you may have guessed, is to customize Plus/Term further so it translates the key in both directions. Select option 6 from the main menu again, then choose option 2 on the submenu (COMING IN). Now you can match the incoming code with the appropriate Commodore code. When the program asks you which code you want to change, type 127. When it asks you for the new value, type 20. Pressing RETURN brings you back to the main menu.
    Don't forget that the function keys (except for f7, which calls the main menu) can also be redefined. If you want to save the new definitions so you don't have to repeat the process each time you run Plus/Term, select option 3 from the terminal options menu as described above.

Uploading And Downloading
As we mentioned, one of Plus/Term's most powerful features is the ability to exchange files with other computers.
    Downloading is as simple as opening the buffer (CTRL-SHIFT-O in terminal mode), clearing it out if necessary (CTRL-SHIFT-Z), and closing it when you've received everything you want (CTRL-SHIFT-C). Then you can save the buffer on tape or disk by pressing CTRL-SHIFT-S, or print it out from the terminal options menu.
    Since the RS-232 routines share zero page locations with the tape input/output routines, tape users must be off-line to perform any type of tape I/O.
    To upload a file, reverse the process. Clear the buffer if necessary by pressing CTRL-SHIFT-Z; load the file you wish to transmit by pressing CTRL-SHIFT-L; go to the terminal options menu and select option 6 (PRINT BUFFER); and send the file to the RS-232 port, where your modem is connected.
    However, there are some complications-imposed by the computer, not the program. Transferring text files is easy: Usually they're already stored in ASCII format by the word processor, and they can be loaded into another word processor after the transfer is complete. But BASIC program files present a problem.
    Most computers, including Commodores, can store programs on tape or disk in two formats: ASCII and tokenized. Tokenized files are abbreviated versions of ASCII files. A program must be tokenized before it will run on a VIC or 64. Unfortunately, the VIC and 64 lack a command to load an ASCII file back into the computer and convert it to a tokenized file. After you transfer a program you won't be able to run it.

The Tokenizer Solution
To overcome this limitation, we've included a short tokenizer utility (Program 4) which converts ASCII files to tokenized files. However, it only works if you have a disk drive. Therefore, if you're using a tape drive, you can upload BASIC programs with Plus/Term but not download them in a form your computer can execute.
    To convert a tokenized BASIC program file into an ASCII file for uploading, use the following procedure. First, before running Plus/Term, load the program you wish to transfer into the computer. Then type the following and press RETURN:

OPEN 8,8,8,"0:FILENAME,P,W":CMD8:LIST [for disk]
OPEN 8,1,8,"0:FILENAME,P,W":CMD8:LIST [for tape]

Replace FILENAME with your own filename, of course.)
    When the cursor returns, type the following and press RETURN:

PRINT#8:CLOSE8

    The program has now been converted into a Commodore ASCII file which can be uploaded.

Sending A File
Now follow these steps:

1. Run Plus/Term and enter terminal mode.

2. Zero (erase) the buffer (press CTRL-SHIFT-Z).

3. Load your file into the buffer (press CTRL-SHIFT-L). A screen prompt will ask you to enter the filename, and another prompt asks if you want to load from tape or disk.

4. When the disk stops whirring (and the red busy light goes off), close the buffer (press CTRL-SHIFT-C).

5. Establish your communications link with the remote computer (you could have done this during step 1, if desired). Notify the person at the other end of the line that you're ready to send the program file. The other system must be set to receive Commodore ASCII. If the other person has Plus/Term, both of you should adjust your parameters for COMM TO COMM (selection 2 on the terminal options menu described above). The person at the other end should then open and zero his buffer (CTRL-SHIFT-O and CTRL-SHIFT-Z).

6. Now press the f7 key to exit terminal mode and reach the main menu. Select option 7 to call up the terminal options menu. Choose option 6 (PRINT BUFFER) and send the file through the RS-232 port (where your modem is connected). After a while, you'll be asked to press any key to continue. After you press a key, the transfer is complete.
    As the file is transmitted, it is listed on the screen of the remote computer. When the word READY appears, the upload is finished. The buffer can then be closed (CTRL-SHIFT-C) and saved on tape or disk (CTRL-SHIFT-S). If the file is a BASIC program, remember to use the Tokenizer utility to convert it from ASCII to a tokenized file before running it.

Using The Tokenizer
Type in Program 4 with MLX. Use a starting address of 828 and ending address of 971.
    To use the Tokenizer, load the file produced by MLX into memory. Type NEW, press RETURN, type the following line, and press RETURN:

SYS 828,"0:FILENAME"

(Substitute the filename for the file you wish to tokenize.)
    The file should list on your screen and end with a syntax error. This is normal; ignore the error. If the uploading/ downloading process has been successful, you will have a ready-to-run BASIC program in memory that you can save on disk or tape.

80-Column Compatibility
Many mainframe computers expect communications terminals to display 80 columns of text per line, so they format output in that fashion. If you want an 80-column display, Plus/Term is compatible with the "Screen-80" program published in the September 1984 issue of COMPUTE!'s GAZETTE.
    There are only a few operating differences in 80-column mode: Word wrap doesn't work, any information on the screen is erased when you leave terminal mode to access the menu, and you must restart the computer to switch back to 40 columns. Otherwise, Plus/Term and Screen-80 make a good team.


Program 1: Plus/Term BASIC Portion For VIC & 64
Refer to "COMPUTE!'s Guide To Typing In Programs" before entering this listing.

100 CLOSE2:IF Q=0 THEN Q=1:LOAD"PLUS/TERM
    .ML",8,1                     :rem 127
110 POKE680,1:PRINT"{CLR}",:SYS 65517:IF
    {SPACE}PEEK(781)=22THEN LO=6144:QC=46
    08:GOTO130                    :rem 16
120 LO = 50152:QC=52736          :rem 122
130 FU = 787                      :rem 18
140 NA = 831:RT$="{RVS}"         :rem 148
150 WL$(1)="{RVS}":SB$(1)="{RVS}":PA$(1)=
    "{RVS}":DI$(2)="{RVS}":CA$(2)="{RVS}"
    :FS$(1)="{RVS}"              :rem 131
160 POKE53281,12:POKE53280,12:PRINT"{CLR}
    {BLK}":POKE646,0:A$=CHR$(13)+"{DOWN}
    (10 RIGHT)"                   :rem 25
170 PRINTCHR$(14);CHR$(8)        :rem 161
180 IF PEEK(185)<>99THENFZ=1:GOTO200
                                 :rem 106
190 SYSLO+6                      :rem 149
200 SYS65517:IF PEEK(781)=22THEN A$=CHR$(
    13)+"{DOWN}":GOTO220          :rem 39
210 A$=CHR$(13)+"{DOWN}{10 RIGHT}"
                                 :rem 141
220 IF FZTHENFZ=0:GOTO540         :rem 11
230 POKE53281,12:POKE53280,12:PRINT"{CLR}
    ";A$;"{2 RIGHT}PARAMETERS"    :rem 59
240 PRINTA$;"1. WORD LENGTH";A$;"2. STOP
    {SPACE}BITS";A$;"3. BAUD RATE";
                                  :rem 94
250 PRINTA$;"4. PARITY";A$;"5. DUPLEX";A$
    "6. DEFINE KEY";             :rem 233
260 PRINTA$;"7. TERMINAL OPTIONS";A$;"8.
    {SPACE}RETURN TO TERMINAL";  :rem 149
270 PRINTA$;"9. RETURN TO BASIC"  :rem 86
280 GET Ml$:IF M1$=""THEN 280    :rem 209
290 IF VAL(Ml$)<l OR VAL(Ml$)>9 THEN 280
                                  :rem 36
300 ON VAL(Ml$) GOTO 310,450,540,710,860,
    970,1230,1760,1800           :rem 152
310 REM WORD LENGTH              :rem 118
320 PRINT"{CLR}";A$;"{3 RIGHT}{6 DOWN)WOR
    D LENGTH"                    :rem 211
330 PRINTA$;WL$(1);"{2 RIGHT}1. 8 DATA BI
    TS"                          :rem 168
340 PRINTA$;WL$(2);"{2 RIGHT}2. 7 DATA BI
    TS"                          :rem 170
350 PRINTA$;WL$(3);"{2 RIGHT}3. 6 DATA BI
    TS"                          :rem 172
360 PRINTA$;WL$(4),"{2 RIGHT}4. 5 DATA BI
    TS"                          :rem 174
370 POKE198,0                    :rem 199
380 GET MA$:IF MA$='-THEN 380    :rem 243
390 IF MA$=CHR$(13)THEN200       :rem 145
400 FOR T= 1 TO 4:WL$(T)="":NEXT:WL$(VAL(
    MA$))= "{RVS}"               :rem 127
410 IF VAL(MA$)<l OR VAL(MA$)>4 THEN 380
                                  :rem 58
420 POKE659,(PEEK(659)AND159)OR(VAL(MA$)*
16)                              :rem 219
430 POKE198,0                    :rem 196
440 GOTO310                      :rem 101
450 PRINT"{CLR}";A$;"{RIGHT}{11 DOWN}STOP
    BITS ";SB$(1);"1";"{OFF} OR ";SB$(2)
    ;"2";"{OFF}?";               :rem 247
460 POKE198,0                    :rem 199
470 GET MB$:IF MB$=""THEN470     :rem 245
480 IF MB$=CHR$(13)THEN200       :rem 146
490 FOR T= 1 TO 2:SB$(T)="":NEXT:SB$(VAL(
    MB$))= "{RVS}"               :rem 107
500 IF VAL(MB$)<1OR VAL(MB$)>2THEN470
                                  :rem 58
510 IF VAL(MB$)=1THENPOKE659,(PEEK(659)AN
    D127):GOTO 530               :rem 139
520 POKE659,PEEK(659)OR128       :rem 236
530 POKE198,0:GOTO450            :rem 209
540 PRINT"{CLR}";A$;"{UP}{RIGHT}BAUD RATE
    S";A$;BR$(1);"1. 50 BAUD";    :rem 20
550 PRINTA$;BR$(2);"2. 75 BAUD";A$;BR$(3)
    "3. 110 BAUD";                :rem 73
560 PRINTA$;BR$(4);"4. 134.5 BAUD";A$;BR$
    (5);"5. 150 BAUD";           :rem 229
570 PRINTA$;BR$(6);"6. 300 BAUD";A$;BR$(7
    );"7. 600 BAUD";            :rem 134
580 PRINTA$;BR$(8);"8. 1200 BAUD";A$;BR$(
    9),"9. 1800 BAUD";           :rem 242
590 PRINTA$;BR$(10);"10. 2400 BAUD";A$;
                                   :rem 0
600 MC$="":INPUT"ENTER SELECTION";MC$
                                 :rem 236
610 IF MC$=""THENMC$=STR$(PEEK(645))
                                 :rem 254
620 IF VAL(MC$)<1OR VAL(MC$)>10THEN540
                                 :rem 108
630 SYS65517:IFPEEK(781)=22THEN POKE659,(
    PEEK(659)AND240)ORVAL(MC$)   :rem 171
640 TM(1)=50:TM(2)=75:TM(3)=110:TM(4)=134
    .5:TM(5)=150:TM(6)=300:TM(7)=600
                                 :rem 200
650 TM(8)=1225:TM(9)=1800:TM(10)=2400
                                 :rem 199
660 NT=1022730/TM(VAL(MC$))*.5-100:POKE66
    2,NT/256                     :rem 207
670 POKE661,(NT/256-INT(NT/256))*256:POKE
645,VAL(MC$):CLOSE2              :rem 240
680 OPEN2,2,3,CHR$(PEEK(659))+CHR$(PEEK(6
    60))+CHR$(PEEK(661))+CHR$(PEEK(662))
                                   :rem 7
690 FOR T= 1 TO 10:BR$(T)="":NEXT:BR$(PEE
    K(645))= "{RVS)"             :rem 200
700 GOTO110                       :rem 98
710 PRINT"{CLR)";A$;"{5 DOWN)PARITY";A$;P
    A$(1);"1. NO PARITY";        :rem 234
720 PRINTA$;PA$(2);"2. ODD PAR SNT/RCVD";
                                  :rem 37
730 PRINTA$;PA$(3);"3. EVN PARITY";
                                 :rem 221
740 PRINTA$;PA$(4);"4. MRK PAR SNT/NO CHK
    ";                           :rem 130
750 PRINTA$;PA$(5);"5. SPC PAR SNT/NO CHK
    ";                           :rem 129
760 GET MD$:IF MD$='-THEN 760    :rem 253
770 IF MD$=CHR$(13)THEN200       :rem 150
780 FOR T= 1 TO 5:PA$(T)=-':NEXT:PA$(VAL(
    MD$))= "{RVS)"               :rem 106
790 IF VAL(MD$)<1OR VAL(MD$)>5THEN760
                                  :rem 78
800 ON VAL(MD$)GOTO 810,820,830,840
                                  :rem 69
810 POKE660,(PEEK(660)AND31)OR32:GOTO850
                                  :rem 64
820 POKE660,(PEEK(660)AND31)OR96:GOTO850
                                  :rem 75
830 POKE660,(PEEK(660)AND31)OR160:GOTO850
                                 :rem 116
840 POKE660,(PEEK(660)AND31)OR224:rem 102
850 GOTO710                      :rem 110
860 PRINT"{CLR}";A$;"{6 DOWN){4 RIGHT)DUP
    LEX";A$;                     :rem 168
870 IF PEEK(787)THENDI$(1)="{RVS)":DI$(2)
    ="":GOTO890                   :rem 66
880 DI$(1)="":DI$(2)="{RVS)"      :rem 85
890 PRINT DI$(1);"1. FULL DUPLEX";A$;DI$(
    2)"2. HALF DUPLEX"           :rem 228
900 GET ME$:IF ME$=""THEN900     :rem 247
910 IF ME$=CHR$(13)THEN200       :rem 147
920 FOR T= 1 TO 2:DI$(T)="":NEXT:DI$(VAL(
    ME$))= "{RVS)"                :rem 92
930 IF VAL(ME$)<IOR VAL(ME$)>2THEN900
                                  :rem 69
940 IF VAL(ME$)=1THENPOKE660,PEEK(660)AND
    239:POKEFU,1:GOTO960         :rem 160
950 POKE660,PEEK(660)OR16:POKE FU,0
                                  :rem 15
960 GOTO860                      :rem 118
970 PRINT"{CLR)";A$"{6 DOWN)CHANGE VALUES
    ";A$;                        :rem 159
980 PRINT"1. GOING OUT";A$;"2. COMING IN"
                                  :rem 75
990 GET MFY:IF MF$=""THEN990      :rem 11
1000 IF MF$=CHR$(13)THEN200      :rem 187
1010 IF VAL(MF$)<1ORVAL(MF$)>2THEN990
                                 :rem 118
1020 ONVAL(MF$)GOTO 1030,1120     :rem 56
1030 PRINT"{CLR}{8 DOWN}";"PRESS THE KEY
     {SPACE)YOU WANT TO CHANGE":POKE198,0
                                 :rem 109
1040 GET KY$:IF KY$=""THEN1040   :rem 115
1050 KY = PEEK(QC+256+ASC(KY$))  :rem 148
1060 PRINT"{4 DOWN)THAT SENDS A CHR$(";
                                  :rem 47
1070 PRINTRIGHT$(STR$(KY),LEN(STR$(KY))-1
     +")"                        :rem 190
1080 INPUT"{4 DOWN)REPLACE WITH";RK$
                                  :rem 21
1090 IF VAL(RK$)>255THEN 1030     :rem 27
1100 POKEQC+256+ASC(KY$),VAL(RK$):rem 137
1110 GOTO 200                    :rem 142
1120 INPUT"{CLR}{8 DOWNICODE TO CHANGE";I
     C$                            :rem 2
1130 IF IC$=""THEN970             :rem 84
1140 IF VAL(IC$)>2550RVAL(IC$)=0 THEN 112
     0                           :rem 248
1150 PRINT"{4 DOWN)NOW A CHR$("; :rem 117
1160 IC = PEEK(QC+VAL(IC$))      :rem 170
1170 PRINTRIGHT$(STR$(IC),LEN(STR$(IC))-1
     +")"                        :rem 143
1180 INPUT "{4 DOWN}CHANGE TO CHR$";NK$
                                  :rem 36
1190 IF NK$=""THEN970            :rem 103
1200 IF VAL(NK$)>255THEN 1120     :rem 16
1210 POKE QC+VAL(IC$),VAL(NK$)   :rem 179
1220 GOTO200                     :rem 144
1230 PRINT "{CLR}";A$;"{4 DOWN){4 RIGHT)O
     PTIONS";A$;"1. DIRECTORY (DISK)";
                                  :rem 23
1240 PRINTA$;CA$(1);"2. COMM TO COMM";
                                  :rem 51
1250 PRINTA$;CA$(2);"3. COMM TO ASCII";
                                 :rem 115
1260 PRINTA$;FS$(1);"4. WORD WRAP";
                                 :rem 199
1270 PRINTA$;FS$(2);"5. NORMAL SCREEN";
                                 :rem 221
1280 PRINTA$;"6. PRINT BUFFER";   :rem 34
1290? PRINTA$;RT$;"7. LINEFEED W/ RETURN"
                                  :rem 73
1300 GET OP$:IF OP$=""THEN 1300  :rem 103
1310 IF OP$=CHR$(13)THEN200      :rem 203
1320 IF VAL(OP$)=2THENCA$(1)="{RVS)":CA$(
     2)=""                       :rem 141
1330 IF VAL(OP$)=3THENCA$(2)="{RVS)":CA$(
     1)=""                       :rem 143
1340 IF VAL(OP$)=4THENFS$(1)="{RVS)":FS$(
     2)=""                       :rem 187
1350 IF VAL(OP$)=5THENFS$(2)="{RVS)":FS$(
     1)=""                       :rem 189
1360 IF VAL(OP$)=7 THEN POKE 680,-(PEEK(6
     80)=0)                      :rem 235
1370 IF PEEK(680)THENRT$="[RVS]":GOTO1390
                                  :rem 58
1380 RT$=""                       :rem 23
1390 IF VAL(OP$)<1OR VAL(OP$)>7THEN1300
                                 :rem 192
1400 ON VAL(OP$)GOTO 1410,1540,1550,1780,
1790,1810,1230                    :rem 38
1410 PRINT"[CLR]":OPEN1,8,0,"$0"  :rem 75
1420 GET #1,T$,T$                 :rem 67
1430 GET #1,T$,T$                 :rem 68
1440 S=ST:IF S<>0 THENCLOSE1:GOTO 1500
                                 :rem 213
1450 GET #1,LU$,HI$:              :rem 10
1460 LU=ASC(LU$+CHR$(0)):HI=ASC(HI$+CHR$(
     0)):LN=LU+HI*256:LN$=MID$(STR$(LN),2
                                 :rem 244
1470 PRINTLN$+" ";               :rem 193
1480 GET#1,B$:IF B$="" THEN PRINT:GOTO143
     0                            :rem 58
1490 PRINTB$;:GOTO1480            :rem 60
1500 OPEN15,8,15:INPUT#15,EN,EM$,ET,ES:CL
     OSE15:IF ENTHENPRINTEN;EM$;ET;ES
                                  :rem 42
1510 PRINT"(RVS}PRESS RETURN TO CONTINUE
     {OFF}"                      :rem 177
1520 GET T$:IF T$<>CHR$(13)THEN1520
                                 :rem 136
1530 GOTO1230                    :rem 200
1540 POKE NA,1:GOTO1230           :rem 30
1550 POKENA,0                    :rem 229
1560 PRINT"(CLR}(6 DOWN)";A$;"ASCII OPTIO
     NS";A$;"1. LOAD CONFIG";    :rem 217
1570 PRINTA$;"2. SAVE CONFIG";A$; :rem 94
1580 PRINT"3. RETURN TO MENU"    :rem 184
1590 GET CN$:IF CN$=""THEN1590    :rem 97
1600 IF VAL(CN$)<1ORVAL(CN$)>3THEN1590
                                 :rem 165
1610 ON VAL(CN$)GOTO1620,1630,1640:rem 61
1620 GOSUB 1650:SYS PEEK(764)+256*PEEK(76
     5):GOSUB1740:GOTO1230        :rem 46
1630 GOSUB 1650:SYS PEEK(766)+256*PEEK(76
     7):GOSUB1740:GOTO1230        :rem 51
1640 GOTO1230                    :rem 202
1650 PRINT"{CLR}";A$;"{RVS}D{OFF)ISK OR
     {RVS}T{OFF}APE";A$;         :rem 104
1660 GET DV$:IF DV$<>"T"ANDDV$<>"D"THEN16
     60                          :rem 147
1670 INPUT"FILENAME";FI$         :rem 209
1680 IF LEN(FI$)>16THEN 1670     :rem 227
1690 IF LEFT$(DV$,1)="D"THEN D=8:GOTO 171
     0                             :rem 3
1700 D=1                         :rem 122
1710 FOR T= 684 TO 684+LEN(FI$)-1:POKET,A
     SC(MID$(FI$,T-683,1)):NEXT  :rem 203
1720 POKE679,D:POKE763,D:POKE681,LEN(FI$)
     :POKE682,172:POKE683,2      :rem 214
1730 RETURN                      :rem 171
1740 OPEN15,8,15:INPUT#15,EN,EM$,ET,ES:CL
     OSE15:PRINT:IFENTHENPRINTEN;EM$;ET;E
     S                           :rem 247
1750 FOR T=1 TO 1500:NEXT:RETURN :rem 114
1760 PRINT"{CLR}":SYSLO            :rem 6
1770 GOTO200                     :rem 154
1780 POKE703,0:GOTO1230           :rem 46
1790 POKE703,1:GOTO1230           :rem 48
1800 END                         :rem 160
1810 BY=PEEK(706)+256*PEEK( 707)-(PEEK(55)
     +256*PEEK(56)):PRINT"(CLR}{DOWN}";A$
     ;BY;                         :rem 76
1820 PRINT"BYTES IN BUFFER";A$;:PRINT" TO
     TAL BYTES";                 :rem 160
1830 PRINT(PEEK(249)+256*PEEK(250))-(PEEK
     (55)+256*PEEK(56))          :rem 239
1840 PRINTA$;"PRINT TO"          :rem 110
1850 PRINTA$;"1. RETURN";A$;"2. RS232 ";A
     $;"3. SCREEN";A$;"4. PRINTER";
                                  :rem 89
1860 GET ZE$:ZE=VAL(ZE$):IF ZE<1OR ZE>4 T
     HEN 1860                      :rem 4
1870 PRINT"(CLR}":IF ZE=1 THEN1230
                                 :rem 255
1880 IF ZE=2 THEN 1910           :rem 104
1890 IF BY=OTHEN1990             :rem 107
1900 OPEN5,ZE                    :rem 252
1910 FOR T = PEEK(55)+256*PEEK(56)TO(PEEK
     (706)+256*PEEK(707))-1:POKE212,0
                                 :rem 187
1920 IF PEEK(653)=1 THEN1920     :rem 216
1930 IF PEEK(197)=60THENFORT=OT00:rem 192
1940 IF PEEK(653)=4 THEN FOR J= 1 TO 1000
     :NEXT                       :rem 141
1950 IF ZE = 2 THENPRINT#2,CHR$(PEEK(T));
     :GOTO1970                    :rem 68
1960 PRINT#5,CHR$(PEEK(T));       :rem 56
1970 NEXT                         :rem 16
1980 IF ZE<>2 THEN PRINT#5:CLOSE 5
                                 :rem 165
1990 POKE198,0:PRINTA$;"PRESS ANY KEY TO
     {SPACE}CONT"                :rem 224
2000 GET J$:IF J$=""THEN2000     :rem 185
2010 GOTO 1230                   :rem 194


Program 2: Plus/Term ML Portion For 64
Refer to the "MLX" article before entering this listing.

50152 :032,075,204,076,251,196,042
50158 :169,000,141,100,196,141,217
50164 :103,196,141,084,205,133,082
50170 :002,141,191,002,141,063,022
50176 :003,169,231,141,252,002,030
50182 :169,204,141,253,002,169,176
50188 :008,141,254,002,169,205,023
50194 :141,255,002,169,001,141,215
50200 :021,208,169,006,141,033,090
50206 :208,173,038,003,201,210,095
50212 :208,015,173,039,003,201,163
50218 :002,208,008,169,001,141,059
50224 :094,205,076,127,196,169,147
50230 :000,141,094,205,169,004,155
50236 :141,136,002,169,023,141,160
50242 :024,208,169,003,013,002,229
50248 :221,141,002,221,169,003,061
50254 :013,000,221,141,000,221,162
50260 :120,169,051,133,001,169,215
50266 :208,141,101,196,141,104,213
50272 :196,160,000,185,255,255,123
50278 :153,255,255,200,208,247,140
50284 :238,101,196,238,104,196,157
50290 :173,104,196,201,224,208,196
50296 :234,169,055,133,001,088,032
50302 :152,162,064,157,064,003,216
50308 :202,016,250,169,255,141,141
50314 :085,003,169,013,141,248,029
50320 :007,032,168,196,169,000,204
50326 :141,194,002,133,055,141,048
50332 :019,003,169,038,133,056,062
50338 :141,195,002,076,008,197,013
50344 :160,255,152,192,219,176,042
50350 :024,192,193,144,006,056,021
50356 :233,128,076,201,196,192,182
50362 :065,144,012,192,096,176,103
50368 :006,024,105,032,076,201,124
50374 :196,169,000,153,000,207,155
50380 :136,192,255,208,217,160,092
50386 :255,152,192,128,176,024,113
50392 :192,096,144,006,056,233,175
50398 :032,076,242,196,192,065,001
50404 :144,012,192,091,176,008,083
50410 :024,105,128,076,242,196,237
50416 :169,000,153,000,206,136,136
50422 :192,255,208,217,096,174,108
50428 :094,205,240,008,169,147,091
50434 :141,085,205,032,248,201,146
50440 :032,048,200,032,204,255,011
50446 :032,228,255,201,000,208,170
50452 :003,076,202,197,141,107,234
50458 :205,201,136,208,006,072,086
50464 :032,175,203,104,096,174,048
50470 :141,002,224,005,208,115,221
50476 :201,015,208,011,162,001,130
50482 :142,098,205,032,248,197,204
50488 :076,202,197,201,003,208,175
50494 :011,169,000,141,098,205,174
50500 :032,028,198,076,202,197,033
50506 :201,026,208,016,169,000,182
50512 :141,194,002,165,056,141,011
50518 :195,002,032,066,198,076,143
50524 :202,197,201,019,208,006,157
50530 :032,124,198,076,202,197,159
50536 :201,012,208,006,032,185,236
50542 :199,076,202,197,201,002,219
50548 :208,006,238,033,208,076,117
50554 :202,197,201,011,208,006,179
50560 :238,134,002,076,202,197,209
50566 :201,006,208,006,238,032,057
50572 :208,076,202,197,201,021,021
50578 :208,011,173,024,208,073,075
50584 :002,141,024,208,076,202,037
50590 :197,162,002,032,201,255,239
50596 :173,107,205,072,168,174,039
50602 :063,003,208,006,185,000,123
50608 :207,076,182,197,104,072,246
50614 :032,210,255,104,172,019,206
50620 :003,208,011,141,085,205,073
50626 :072,032,204,255,104,032,125
50632 :106,201,032,048,200,032,051
50638 :204,255,162,002,032,198,035
50644 :255,032,228,255,201,000,159
50650 :208,003,076,008,197,174,116
50656 :063,003,208,006,041,127,160
50662 :168,185,000,206,141,085,247
50668 :205,072,032,204,255,104,084
50674 :032,106,201,076,008,197,094
50680 :160,000,152,072,185,013,062
50686 :198,141,085,205,032,248,139
50692 :201,104,168,200,192,015,116
50698 :208,238,096,013,091,066,210
50704 :085,070,070,069,082,032,168
50710 :079,080,069,078,093,013,178
50716 :160,000,152,072,185,049,134
50722 :198,141,085,205,032,248,175
50728 :201,104,168,200,192,017,154
50734 :208,238,096,013,091,066,246
50740 :085,070,070,069,082,032,204
50746 :067,076,079,083,069,068,244
50752 :093,013,160,000,152,072,042
50758 :185,087,198,141,085,205,203
50764 :032,248,201,104,168,200,005
50770 :192,017,208,238,096,013,078
50776 :091,066,085,070,070,069,027
50782 :082,032,090,069,082,079,016
50788 :069,068,093,013,160,000,247
50794 :152,072,185,236,199,141,067
50800 :085,205,032,248,201,104,219
50806 :168,200,192,014,208,238,114
50812 :160,000,152,072,185,251,176
50818 :199,141,085,205,032,248,016
50824 :201,104,168,200,192,013,246
50830 :208,238,032,228,255,240,063
50836 :251,201,089,240,007,201,113
50842 :078,208,243,076,106,199,040
50848 :169,000,141,095,205,160,162
50854 :000,152,072,185,009,200,016
50860 :141,085,205,032,248,201,060
50866 :104,168,200,192,011,208,037
50872 :238,032,204,255,160,000,049
50878 :140,101,205,032,048,200,148
50884 :032,228,255,201,000,240,128
50890 :246,201,013,240,048,201,127
50896 :020,208,011,172,101,205,157
50902 :240,233,206,101,205,076,251
50908 :239,198,201,031,144,223,232
50914 :201,091,176,219,172,101,162
50920 :205,153,238,002,238,101,145
50926 :205,141,085,205,032,248,130
50932 :201,172,101,205,192,016,107
50938 :240,197,076,193,198,172,046
50944 :101,205,140,099,205,160,142
50950 :000,185,020,200,141,085,125
50956 :205,140,100,205,032,248,174
50962 :201,172,100,205,200,192,064
50968 :014,208,236,032,228,255,229
50974 :240,251,201,084,240,007,029
50980 :201,068,240,008,076,027,144
50986 :199,162,001,076,050,199,217
50992 :162,008,169,010,160,000,045
50998 :032,186,255,173,099,205,236
51004 :162,238,160,002,032,189,075
51010 :255,169,000,141,021,208,092.
51016 :169,147,032,210,255,169,030
51022 :147,141,085,205,032,248,168
51028 :201,174,095,205,208,029,228
51034 :169,000,141,021,208,174,035
51040 :194,002,172,195,002,169,062
51046 :055,032,216,255,165,055,112
51052 :141,194,002,165,056,141,039
51058 :195,002,076,142,199,169,129
51064 :000,166,055,164,056,032,081
51070 :213,255,142,194,002,140,048
51076 :195,002,162,000,134,055,168
51082 :160,038,132,056,169,001,182
51088 :141,021,208,169,000,162,077
51094 :064,157,064,003,202,016,144
51100 :250,169,255,141,085,003,035
51106 :160,003,185,181,199,141,007
51112 :085,205,152,072,032,248,194
51118 :201,104,168,136,016,240,015
51124 :096,013,075,079,013,160,104
51130 :000,140,101,205,185,034,083
51136 :200,141,085,205,032,248,079
51142 :201,238,101,205,172,101,192
51148 :205,192,014,208,234,032,065
51154 :228,255,201,000,240,249,103
51160 :201,089,240,007,201,078,008
51166 :240,138,076,209,199,162,222
51172 :001,141,095,205,032,165,099
51178 :198,096,013,091,066,085,015
51184 :070,070,069,082,032,070,121
51190 :085,076,076,093,013,013,090
51196 :083,065,086,069,032,089,164
51202 :032,079,082,032,078,063,112
51208 :013,013,070,073,076,069,066
51214 :078,065,077,069,058,013,118
51220 :013,084,065,080,069,032,107
51226 :079,082,032,068,073,083,187
51232 :075,013,013,076,079,065,097
51238 :068,032,089,032,079,082,164
51244 :032,078,063,013,174,094,242
51250 :205,240,006,162,000,141,036
51256 :021,208,096,173,054,205,045
51262 :048,015,201,040,144,024,022
51268 :169,000,141,054,205,238,107
51274 :055,205,076,092,200,238,172
51280 :054,205,206,055,205,048,085
51286 :023,169,039,141,054,205,205
51292 :173,055,205,048,013,201,019
51298 :025,144,012,206,055,205,233
51304 :032,234,232,076,113,200,223
51310 :238,055,205,169,000,141,150
51316 :051,205,173,054,205,010,046
51322 :010,141,050,205,014,050,080
51328 :205,046,051,205,024,173,064
51334 :050,205,105,024,141,000,147
51340 :208,173,051,205,105,000,114
51346 :141,016,208,173,055,205,176
51352 :010,010,010,141,086,205,102
51358 :024,173,086,205,105,050,033
51364 :141,001,208,165,162,201,018
51370 :014,144,013,133,162,173,041
51376 :033,208,041,015,141,039,141
51382 :208,076,192,200,173,134,141
51388 :002,141,039,208,165,162,137
51394 :201,028,144,004,169,000,228
51400 :133,162,172,055,205,185,088
51406 :240,236,133,209,185,056,241
51412 :205,133,210,096,172,054,058
51418 :205,177,209,201,032,208,226
51424 :003,076,105,201,162,000,003
51430 :177,209,157,169,003,072,249
51436 :024,165,210,105,212,133,061
51442 :210,177,209,157,129,003,103
51448 :056,165,210,233,212,133,233
51454 :210,136,232,224,039,240,055
51460 :011,104,201,032,208,220,012
51466 :142,053,205,076,020,201,195
51472 :104,076,105,201,174,053,217
51478 :205,200,169,032,145,209,214
51484 :200,202,208,248,173,055,090
51490 :205,201,024,208,006,032,198
51496 :234,232,206,055,205,238,186
51502 :055,205,169,000,141,054,158
51508 :205,174,053,205,168,202,035
51514 :202,189,169,003,141,083,077
51520 :205,024,165,210,105,212,217
51526 :133,210,189,129,003,141,107
51532 :134,002,072,152,072,138,134
51538 :072,032,093,202,104,170,243
51544 :104,168,104,056,165,210,127
51550 :233,212,133,210,200,202,004
51556 :016,213,206,054,205,096,122
51562 :174,098,205,208,003,076,102
51568 :248,201,160,000,141,085,179
51574 :205,166,251,142,096,205,159
51580 :166,252,142,097,205,174,136
51586 :194,002,134,251,174,195,056
51592 :002,134,252,145,251,072,224
51598 :174,096,205,134,251,174,152
51604 :097,205,134,252,056,165,033
51610 :249,237,194,002,141,088,041
51616 :205,165,250,237,195,002,190
51622 :013,088,205,208,021,162,095
51628 :002,032,201,255,169,019,082
51634 :032,210,255,032,204,255,142
51640 :032,104,198,032,066,198,046
51646 :104,096,104,201,020,240,187
51652 :011,238,194,002,208,046,127
51658 :238,195,002,076,248,201,138
51664 :141,085,205,173,194,002,240
51670 :229,055,141,088,205,173,081
51676 :195,002,229,056,013,088,035
51682 :205,240,019,072,056,173,223
51688 :194,002,233,001,141,194,229
51694 :002,173,195,002,233,000,075
51700 :141,195,002,104,173,085,176
51706 :205,174,094,205,240,072,216
51712 :162,000,142,021,208,201,222
51718 :013,240,008,162,001,142,060
51724 :244,173,076,043,202,162,144
51730 :001,142,244,173,072,120,002
51736 :162,054,134,001,032,210,105
51742 :164,032,068,168,032,125,107
51748 :164,162,055,134,001,088,128
51754 :104,174,102,205,134,251,244
51760 :174,103,205,134,252,032,180
51766 :210,002,166,251,142,102,159
51772 :205,166,252,142,103,205,109
51778 :162,000,142,244,173,096,115
51784 :173,085,205,201,032,144,144
51790 :091,201,127,144,007,201,081
51796 :160,176,003,076,170,202,103
51802 :032,065,203,172,055,205,054
51808 :185,240,236,133,209,185,004
51814 :056,205,133,210,172,054,164
51820 :205,173,084,205,240,010,001
51826 :173,083,205,009,128,145,089
51832 :209,076,129,202,173,083,224
51838 :205,145,209,024,165,210,060
51844 :105,212,133,210,173,134,075
51850 :002,145,209,056,165,210,157
51856 :233,212,133,210,173,054,135
51862 :205,201,039,208,008,174,217
51868 :191,002,208,003,032,216,040
51874 :200,238,054,205,032,048,171
51880 :200,096,173,085,205,201,104
51886 :032,176,074,201,010,208,107
51892 :003,238,055,205,201,013,127
51898 :208,005,072,032,155,203,093
51904 :104,201,014,208,010,072,033
51910 :169,002,013,024,208,141,243
51916 :024,208,104,201,017,208,198
51922 :003,238,055,205,201,018,162
51928 :208,005,162,001,142,084,050
51934 :205,201,019,208,008,162,001
51940 :000,142,054,205,142,055,058
51946 :205,201,020,208,005,072,177
51952 :032,085,203,104,201,029,126
51958 :208,003,238,054,205,201,131
51964 :141,208,005,072,032,155,097
51970 :203,104,201,142,208,010,102
51976 :072,173,024,208,041,253,011
51982 :141,024,208,104,201,145,069
51988 :208,003,206,055,205,201,130
51994 :146,208,005,162,000,142,177
52000 :084,205,201,147,208,016,125
52006 :072,032,068,229,169,000,096
52012 :141,054,205,141,055,205,077
52018 :032,048,200,104,201,157,024
52024 :208,003,206,054,205,032,252
52030 :048,200,096,173,085,205,101
52036 :072,041,128,074,141,087,099
52042 :205,104,041,063,013,087,075
52048 :205,141,083,205,096,172,214
52054 :055,205,185,240,236,133,116
52060 :209,185,056,205,133,210,066
52066 :172,054,205,240,051,056,108
52072 :169,039,237,054,205,170,210
52078 :177,209,136,145,209,200,162
52084 :024,165,210,105,212,133,197
52090 :210,177,209,136,145,209,184
52096 :056,165,210,233,212,133,113
52102 :210,200,200,202,224,255,145
52108 :208,224,169,032,160,039,204
52114 :145,209,206,054,205,032,229
52120 :048,200,096,174,168,002,072
52126 :240,003,238,055,205,169,044
52132 :000,141,054,205,141,084,021
52138 :205,032,048,200,096,173,156
52144 :094,205,240,003,076,074,100
52150 :204,174,054,205,140,090,025
52156 :205,172,055,205,140,089,030
52162 :205,162,002,032,201,255,027
52168 :169,019,032,210,255,032,149
52174 :204,255,169,216,141,229,140
52180 :203,169,000,141,228,203,132
52186 :168,141,231,203,169,176,026
52192 :141,232,203,185,255,255,215
52198 :153,255,255,056,173,228,070
52204 :203,233,232,141,088,205,058
52210 :173,229,203,233,219,013,032
52216 :088,205,240,017,238,228,240
52222 :203,238,231,203,208,223,024
52228 :238,229,203,238,232,203,067
52234 :076,227,203,169,000,141,058
52240 :021,208,169,192,141,136,115
52246 :002,173,000,221,041,252,199
52252 :141,000,221,173,024,208,027
52258 :041,015,141,024,208,173,124
52264 :033,208,141,091,205,173,123
52270 :032,208,141,092,205,173,129
52276 :134,002,141,093,205,160,019
52282 :024,185,217,000,153,000,125
52288 :180,185,000,181,153,217,212
52294 :000,136,016,241,096,173,220
52300 :094,205,208,250,169,176,154
52306 :141,119,204,169,000,141,088
52312 :118,204,168,162,002,032,006
52318 :201,255,169,017,032,210,210
52324 :255,032,204,255,141,121,084
52330 :204,169,216,141,122,204,138
52336 :120,169,054,133,001,185,006
52342 :255,255,153,255,255,056,067
52348 :173,121,204,233,233,141,205
52354 :088,205,173,122,204,233,131
52360 :219,013,088,205,240,034,167
52366 :238,118,204,238,121,204,241
52372 :208,223,238,119,204,238,098
52378 :122,204,076,117,204,160,013
52384 :024,185,217,000,153,000,227
52390 :181,185,000,180,153,217,058
52396 :000,136,016,241,169,055,021
52402 :133,001,088,173,091,205,101
52408 :141,033,208,173,093,205,013
52414 :141,134,002,173,092,205,169
52420 :141,032,208,169,004,141,123
52426 :136,002,169,001,141,021,160
52432 :208,169,003,013,002,221,056
52438 :141,002,221,169,003,013,251
52444 :000,221,141,000,221,169,204
52450 :023,141,024,208,096,173,123
52456 :167,002,174,251,002,160,220
52462 :001,032,186,255,173,169,030
52468 :002,162,172,160,002,032,006
52474 :189,255,169,000,170,160,169
52480 :206,032,213,255,032,147,117
52486 :199,096,173,167,002,174,049
52492 :251,002,160,001,032,186,132
52498 :255,173,169,002,162,172,183
52504 :160,002,032,189,255,169,063
52510 :206,133,254,169,000,133,157
52516 :253,169,253,162,255,160,008
52522 :207,032,216,255,032,147,163
52528 :199,096,000,000,000,000,087
52534 :000,000,004,004,004,004,070
52540 :004,004,004,005,005,005,087
52546 :005,005,005,006,006,006,099
52552 :006,006,006,006,007,007,110
52558 :007,007,007,013,013,013,138


Program 3: Plus/Term ML Portion For VIC
Refer to the "MLX" article before entering this listing.

6144 :032,023,032,076,200,024,131
6150 :169,016,141,136,002,169,127
6156 :194,141,005,144,169,140,037
6162 :141,252,002,169,032,141,243
6168 :253,002,169,171,141,254,246
6174 :002,169,032,141,255,002,119
6180 :169,001,141,102,033,032,002
6186 :120,028,169,147,141,093,228
6192 :033,032,252,029,169,000,051
6198 :141,091,033,133,055,169,164
6204 :064,133,056,169,035,133,138
6210 :044,169,000,141,191,002,101
6216 :141,107,033,141,000,035,017
6222 :169,000,141,063,003,032,230
6228 :117,024,169,000,141,092,115
6234 :033,141,093,033,141,094,113
6240 :033,169,000,141,019,003,205
6246 :165,055,141,194,002,165,056
6252 :056,141,195,002,076,200,010
6258 :024,006,016,160,255,152,215
6264 :192,219,176,024,192,193,092
6270 :144,006,056,233,128,076,001
6276 :150,024,192,065,144,012,207
6282 :192,096,176,006,024,105,225
6288 :032,076,150,024,169,000,083
6294 :153,000,019,136,192,255,137
6300 :208,217,160,255,152,192,060
6306 :128,176,024,192,096,144,154
6312 :006,056,233,032,076,191,250
6318 :024,192,065,144,012,192,035
6324 :091,176,008,024,105,128,200
6330 :076,191,024,169,000,153,031
6336 :000,018,136,192,255,208,233
6342 :217,096,032,052,028,032,143
6348 :204,255,174,141,002,224,180
6354 :004,240,017,224,005,240,172
6360 :055,032,228,255,201,000,219
6366 :240,003,076,197,025,076,071
6372 :243,025,164,197,192,128,153
6378 :176,226,185,094,236,056,183
6384 :233,064,048,218,240,216,235
6390 :160,000,162,000,136,208,144
6396 :253,202,208,250,076,197,158
6402 :025,160,000,162,000,136,229
6408 :208,253,202,208,250,076,181
6414 :243,025,166,197,224,041,142
6420 :208,008,072,032,160,026,014
6426 :104,076,194,025,166,197,020
6432 :224,021,208,008,072,032,085
6438 :185,027,104,076,194,025,137
6444 :166,197,224,035,208,019,125
6450 :072,024,173,015,144,105,071
6456 :016,141,015,144,009,008,133
6462 :141,015,144,104,076,194,224
6468 :025,166,197,224,044,208,164
6474 :018,072,173,134,002,041,002
6480 :007,024,105,001,041,007,009
6486 :141,134,002,104,076,194,225
6492 :025,166,197,224,042,208,186
6498 :030,072,024,173,109,033,027
6504 :041,007,024,105,001,141,167
6510 :109,033,173,015,144,041,113
6516 :248,013,109,033,009,008,024
6522 :141,015,144,104,076,194,028
6528 :025,166,197,224,052,208,232
6534 :013,072,162,001,142,107,119
6540 :033,032,028,026,104,076,183
6546 :194,025,166,197,224,034,218
6552 :208,013,072,162,000,142,237
6558 :107,033,032,064,026,104,012
6564 :076,194,025,166,197,224,022
6570 :033,208,018,072,162,000,151
6576 :142,194,002,166,056,142,110
6582 :195,002,032,102,026,104,131
6588 :076,194,025,076,206,024,021
6594 :076,003,025,072,201,136,195
6600 :208,005,104,032,152,031,220
6606 :096,162,002,032,201,255,186
6612 :174,063,003,208,009,104,005
6618 :072,168,185,000,019,076,226
6624 :228,025,104,072,032,210,127
6630 :255,104,172,019,003,208,223
6636 :006,141,093,033,032,109,138
6642 :029,032,052,028,032,204,107
6648 :255,162,002,032,198,255,128
6654 :032,228,255,201,000,208,154
6660 :003,076,200,024,174,063,032
6666 :003,208,006,041,127,168,051
6672 :185,000,018,141,093,033,230
6678 :032,109,029,076,200,024,236
6684 :160,000,152,072,185,049,134
6690 :026,141,093,033,032,252,099
6696 :029,104,168,200,192,015,236
6702 :208,238,096,013,091,066,246
6708 :085,070,070,069,082,032,204
6714 :079,080,069,078,093,013,214
6720 :160,000,152,072,185,085,206
6726 :026,141,093,033,032,252,135
6732 :029,104,168,200,192,017,018
6738 :208,238,096,013,091,066,026
6744 :085,070,070,069,082,032,240
6750 :067,076,079,083,069,068,024
6756 :093,013,160,000,152,072,078
6762 :185,123,026,141,093,033,195
6768 :032,252,029,104,168,200,129
6774 :192,017,208,238,096,013,114
6780 :091,066,085,070,070,069,063
6786 :082,032,090,069,082,079,052
6792 :069,068,093,013,160,000,027
6798 :152,072,185,240,027,141,191
6804 :093,033,032,252,029,104,179
6810 :168,200,192,014,208,238,150
6816 :160,000,152,072,185,255,216
6822 :027,141,093,033,032,252,232
6828 :029,104,168,200,192,013,110
6834 :208,238,032,228,255,240,099
6840 :251,201,089,240,007,201,149
6846 :078,208,243,076,132,027,186
6852 :169,000,141,106,033,160,037
6858 :000,152,072,185,027,028,154
6864 :141,093,033,032,252,029,020
6870 :104,168,200,192,011,208,073
6876 :238,032,204,255,160,000,085
6882 :140,104,033,032,228,255,250
6888 :201,000,240,249,201,013,112
6894 :240,048,201,020,208,011,198
6900 :172,104,033,240,236,206,211
6906 :104,033,076,016,027,201,195
6912 :031,144,226,201,091,176,101
6918 :222,172,104,033,153,050,228
6924 :033,238,104,033,141,093,142
6930 :033,032,252,029,172,104,128
6936 :033,192,016,240,200,076,013
6942 :229,026,172,104,033,140,222
6948 :105,033,160,000,185,013,020
6954 :028,141,093,033,140,103,068
6960 :033,032,252,029,172,103,157
6966 :033,200,192,014,208,236,169
6972 :032,204,255,032,228,255,042
6978 :240,248,201,084,240,007,062
6984 :201,068,240,008,076,060,213
6990 :027,162,001,076,086,027,201
6996 :162,008,169,010,160,000,081
7002 :032,186,255,173,105,033,106
7008 :162,050,160,033,032,189,210
7014 :255,169,147,141,093,033,172
7020 :032,252,029,169,147,032,001
7026 :210,255,174,106,033,208,076
7032 :022,174,194,002,172,195,111
7038 :002,109,055,032,216,255,087
7044 :165,055,141,194,002,165,086
7050 :056,141,195,002,096,169,029
7056 :000,166,055,164,056,032,105
7062 :213,255,142,194,002,140,072
7068 :195,002,162,000,134,055,192
7074 :160,063,132,056,160,003,224
7080 :185,236,027,141,093,033,115
7086 :152,072,032,252,029,104,047
7092 :168,136,016,240,096,160,228
7098 :000,140,104,033,185,038,174
7104 :028,141,093,033,032,252,003
7110 :029,238,104,033,172,104,110
7116 :033,192,014,208,234,032,149
7122 :228,255,201,000,240,249,103
7128 :201,089,240,007,201,078,008
7134 :240,011,076,209,027,162,179
7140 :001,141,106,033,032,201,230
7146 :026,096,013,075,079,013,024
7152 :013,091,066,085,070,070,123
7158 :069,082,032,070,085,076,148
7164 :076,093,013,013,083,065,083
7170 :086,069,032,089,032,079,133
7176 :082,032,078,063,013,013,033
7182 :084,065,080,069,032,079,167
7188 :082,032,068,073,083,075,177
7194 :013,013,070,073,076,069,084
7200 :078,065,077,069,058,013,136
7206 :013,076,079,065,068,032,115
7212 :089,032,079,082,032,078,180
7218 :063,013,173,214,032,048,081
7224 :015,201,022,144,024,169,119
7230 :000,141,214,032,238,215,134
7236 :032,076,085,028,238,214,229
7242 :032,206,215,032,048,023,118
7248 :169,021,141,214,032,173,062
7254 :215,032,048,013,201,023,106
7260 :144,012,206,215,032,032,221
7266 :117,233,076,106,028,238,128
7272 :215,032,172,215,032,185,187
7278 :240,032,133,209,185,216,101
7284 :032,133,210,096,172,214,205
7290 :032,177,209,073,128,145,118
7296 :209,024,165,210,105,132,205
7302 :133,210,165,209,105,000,188
7308 :133,209,173,102,033,240,006
7314 :022,177,209,041,015,141,239
7320 :101,033,169,000,141,102,186
7326 :033,173,134,002,041,015,044
7332 :145,209,076,179,028,173,206
7338 :101,033,145,209,169,001,060
7344 :141,102,033,056,165,210,115
7350 :233,132,133,210,233,000,099
7356 :133,209,032,052,028,096,226
7362 :172,214,032,177,209,201,175
7368 :032,208,012,238,214,032,168
7374 :032,052,028,032,120,028,242
7380 :104,104,096,162,000,177,087
7386 :209,157,010,033,072,024,211
7392 :165,210,105,132,133,210,155
7398 :177,209,157,050,033,056,144
7404 :165,210,233,132,133,210,039
7410 :136,232,224,022,240,011,083
7416 :104,201,032,208,220,142,131
7422 :213,032,076,016,029,104,212
7428 :238,214,032,032,052,028,088
7434 :032,120,028,104,104,096,238
7440 :174,213,032,200,169,032,068
7446 :145,209,200,202,208,248,210
7452 :173,215,032,201,023,208,112
7458 :006,032,117,233,206,215,075
7464 :032,238,215,032,169,000,214
7470 :141,214,032,032,052,028,033
7476 :174,213,032,160,000,202,065
7482 :202,189,010,033,141,090,211
7488 :033,024,165,210,105,132,221
7494 :133,210,189,050,033,141,058
7500 :134,002,056,165,210,233,108
7506 :132,133,210,072,152,072.085
7512 :138,072,032,017,030,104,225
7518 :170,104,168,104,200,202,018
7524 :016,213,206,214,032,032,045
7530 :052,028,096,174,107,033,084
7536 :208,003,076,252,029,160,072
7542 :000,141,093,033,166,253,036
7548 :142,064,003,166,254,142,127
7554 :065,003,174,194,002,134,190
7560 :253,174,195,002,134,254,124
7566 :145,253,072,174,064,003,085
7572 :134,253,174,065,003,134,143
7578 :254,056,165,249,237,194,029
7584 :002,141,096,033,165,250,079
7590 :237,195,002,013,096,033,230
7596 :208,021,162,002,032,201,030
7602 :255,169,019,032,210,255,094
7608 :032,204,255,032,140,026,105
7614 :032,102,026,104,096,104,142
7620 :201,020,240,011,238,194,076
7626 :002,208,047,238,195,002,126
7632 :076,252,029,141,093,033,064
7638 :056,173,194,002,229,055,155
7644 :141,096,033,173,195,002,092
7650 :229,056,013,096,033,240,125
7656 :019,072,056,173,194,002,236
7662 :233,001,141,194,002,173,214
7668 :195,002,233,000,141,195,242
7674 :002,104,173,093,033,201,088
7680 :032,144,115,201,127,144,251
7686 :007,201,160,176,003,076,117
7692 :118,030,032,041,031,032,040
7698 :120,028,172,215,032,185,002
7704 :240,032,133,209,185,216,015
7710 :032,133,210,172,214,032,055
7716 :173,091,033,240,010,173,244
7722 :090,033,009,128,145,209,144
7728 :076,056,030,173,090,033,250
7734 :145,209,024,165,210,105,144
7740 :132,133,210,173,134,002,076
7746 :145,209,056,165,210,233,060
7752 :132,133,210,173,214,032,198
7758 :201,021,208,026,174,191,131
7764 :002,208,021,032,194,028,057
7770 :238,214,032,032,052,028,174
7776 :032,120,028,169,001,141,075
7782 :102,033,032,120,028,096,001
7788 :238,214,032,032,052,028,192
7794 :032,120,028,096,032,120,030
7800 :028,173,093,033,201,032,168
7806 :176,084,201,013,208,005,045
7812 :072,032,132,031,104,201,192
7818 :014,208,010,072,169,002,101
7824 :013,005,144,141,005,144,084
7830 :104,201,017,208,008,072,248
7836 :238,215,032,032,052,028,241
7842 :104,201,018,208,007,072,004
7848 :169,001,141,091,033,104,195
7854 :201,019,208,013,072,169,088
7860 :000,141,214,032,141,215,155
7866 :032,032,052,028,104,201,123
7872 :020,208,005,072,032,062,079
7878 :031,104,201,029,208,008,011
7884 :072,238,214,032,032,052,076
7890 :028,104,201,141,208,005,129
7896 :072,032,132,031,104,201,020
7902 :142,208,010,072,169,240,039
7908 :045,005,144,141,005,144,200
7914 :104,201,145,208,008,072,204
7920 :206,215,032,032,052,028,037
7926 :104,201,146,208,007,072,216
7932 :169,000,141,091,033,104,022
7938 :201,147,208,016,072,032,166
7944 :095,229,169,000,141,214,088
7950 :032,141,215,032,032,052,006
7956 :028,104,201,157,208,008,214
7962 :072,206,214,032,032,052,122
7968 :028,104,032,052,028,032,052
7974 :120,028,096,173,093,033,069
7980 :041,128,074,141,095,033,044
7986 :173,093,033,041,063,013,210
7992 :095,033,141,090,033,096,032
7998 :172,215,032,185,240,032,170
8004 :133,209,185,216,032,133,208
8010 :210,172,214,032,240,051,225
8016 :056,169,021,237,214,032,041
8022 :170,177,209,136,145,209,108
8028 :200,024,165,210,105,132,160
8034 :133,210,177,209,136,145,084
8040 :209,056,165,210,233,132,085
8046 :133,210,200,200,202,224,255
8052 :255,208,224,169,032,160,140
8058 :021,145,209,206,214,032,181
8064 :032,052,028,096,174,168,166
8070 :002,240,003,238,215,032,096
8076 :169,000,141,214,032,141,069
8082 :091,033,032,052,028,096,222
8088 :174,214,032,142,098,033,077
8094 :172,215,032,140,097,033,079
8100 :162,002,032,201,255,169,217
8106 :019,032,210,255,032,204,154
8112 :255,169,148,141,199,031,095
8118 :169,000,141,198,031,141,094
8124 :201,031,169,022,141,202,186
8130 :031,160,000,185,255,255,056
8136 :153,255,255,056,173,201,013
8142 :031,233,250,141,096,033,222
8148 :173,202,031,233,023,013,119
8154 :096,033,240,017,238,198,016
8160 :031,238,201,031,208,223,132
8166 :238,199,031,238,202,031,145
8172 :076,197,031,169,020,141,102
8178 :136,002,173,015,144,141,085
8184 :099,033,169,210,141,005,137
8190 :144,173,134,002,141,100,180
8196 :033,160,025,185,217,000,112
8202 :153,000,034,185,050,034,210
8208 :153,217,000,136,016,241,011
8214 :096,169,022,141,060,032,030
8220 :169,000,141,059,032,162,079
8226 :002,032,201,255,169,017,198
8232 :032,210,255,032,204,255,004
8238 :169,000,141,062,032,169,107
8244 :148,141,063,032,160,000,084
8250 :185,255,255,153,255,255,136
8256 :056,173,059,032,233,250,099
8262 :141,096,033,173,060,032,093
8268 :233,023,013,096,033,240,202
8274 :017,238,059,032,238,062,216
8280 :032,208,223,238,060,032,113
8286 :238,063,032,076,058,032,081
8292 :173,099,033,141,015,144,193
8298 :173,100,033,141,134,002,177
8304 :169,016,141,136,002,169,233
8310 :194,141,005,144,160,025,019
8316 :185,217,000,153,050,034,251
8322 :185,000,034,153,217,000,207
8328 :136,016,241,096,173,167,197
8334 :002,174,251,002,160,001,220
8340 :032,186,255,173,169,002,197
8346 :162,172,160,002,032,189,103
8352 :255,169,000,162,000,160,138
8358 :024,032,213,255,096,173,191
8364 :167,002,174,251,002,160,160
8370 :001,032,186,255,173,169,226
8376 :002,162,172,160,002,032,202
8382 :189,255,169,024,133,254,190
8388 :169,000,133,253,169,253,149
8394 :162,255,160,025,032,216,028
8400 :255,096,000,000,000,000,047
8406 :000,000,016,016,016,016,022
8412 :016,016,016,016,016,016,060
8418 :016,016,017,017,017,017,070
8424 :017,017,017,017,017,017,078
8430 :017;017,000,022,044,066,148
8436 :088,110,132,154,176,198,078
8442 :220,242,008,030,052,074,108
8448 :096,118,140,162,184,206,138
8454 :228,250,013,013,013,013,024


Program 4: VIC/64 Tokenizer (Disk Only)
Refer to the "MLX" article before entering this listing.

828 :032,237,255,224,022,240,046
834 :012,032,253,174,032,158,215
840 :173,032,130,183,076,095,249
846 :003,032,253,206,032,158,250
852 :205,032,130,215,166,034,098
858 :164,035,032,189,255,166,163
864 :034,164,035,032,189,255,037
870 :169,032,162,008,160,008,129
876 :032,186,255,032,192,255,036
882 :169,125,141,036,003,169,245
888 :003,141,037,003,096,008,152
894 :138,072,152,072,169,008,225
900 :032,180,255,169,104,032,136
906 :150,255,032,165,255,141,112
912 :203,003,032,171,255,165,205
918 :144,240,026,169,032,032,025
924 :195,255,032,138,255,169,176
930 :008,032,177,255,169,232,011
936 :032,147,255,032,174,255,039
942 :169,013,141,203,003;173,108
948 :204,003,208,010,173,203,213
954 :003,201,013,240,003,032,166
960 :210,255,104,168,104,170,179
966 :040,173,203,003,096,000,201