24K Cassette or Disk
by Matthew J.W. Ratcliff
Matt*Edit is a menu-driven 40-column text and character graphics editor. It was originally developed for the local Bulletin Board System Operators, who frequently create text files for transmitting over the modem to other Atari users. If you have a Gemini or Epson with Graftrax (or Epson graphics compatible) printer, then you will be able to print your text files, using Atari's character set. See the sample printout below (Figure 1). Matt*Edit also has the capability of printing in a "newspaper" dual- or triple-column format. This will allow you to put much more information on a single page than the normal 40-character per line print mode. Text files created with the editor can be saved as BASIC routines, as PRINT, PRINT #n; (ie., ? #6; "text") or DATA statements, with line numbers that you specify.
With this editor, you will quickly learn the hidden value of character graphics. They can be used to make superb title pages for your school papers or lovely greeting cards. I use it to manage a "chords" file for my wife, who is learning how to play the guitar. Figure 2 gives an example of this. Matt*Edit will even allow you to treat disk directories as text files. This enables you to create a complete catalog of all your disks in very short order.
Below is a rundown on all the menu functions in Matt*Edit, along with a short explanation of each item.
You may use all of Atari's standard editing keys to create text on the screen. A status line is displayed at the bottom of the screen. As you type text, the current line you are on will be updated. Typing past the last line on the screen (or pressing RETURN on the last line) will cause the editor to read the current page and place you on the next page to edit (showing the last two lines worked on at the top). You can use the CTRL-ARROW keys to move anywhere on the screen. Sometimes certain edit functions will cause the cursor to get ahead of the current line number shown in the status line. If in doubt, just press the RETURN key, and it will be updated correctly. Certain keys are disabled when in the edit mode. The SHIFT-CLEAR and CTRL-CLEAR keys are not allowed, so that you cannot accidentally erase a page of work. The ESCAPE key is not allowed in the edit mode, although it is used to abort functions in other parts of the program. If an incorrect keypress is made, you will hear a short buzzing sound. To read the current page and exit to the edit menu, just press the START key.
Once you have created more than one page of text (23 lines), the OPTION key will read the page and move up one page in the buffer, and SELECT will read and move down one page. These key functions make it a simple task to move to any page in the buffer. Note that, if you make any editing changes on the current page, the cursor must be on or below the last changed line in the page before you may press one of the console keys. The read routine only reads text up to the line that the cursor is resting on at the time of the console key press. The SHIFT-INSERT and -DELETE keys will function as well. You should be aware, however, that any text lines shifted down off the page will not appear on the next page of text. If you do not wish to lose any lines, then the Insert Line(s) function should be used. This editor, unfortunately, does not support "parsing" or "word wrap," as it would take too much overhead. You format your text as you type it in. The printout will be exactly as you typed it in with the editor.
One SAVE option is to delete all blank lines from the text buffer as it is written to disk. This will make the file compact for you. I tend to use a lot of blank lines, especially if working with character graphics. This allows me to use SHIFT-INSERT and SHIFT-DELETE more liberally while editing the screens of text, without having to go to the Delete Lines and Insert Lines menu functions as often. If you save text as a BASIC PRINT or DATA file, you should also save it as a "40 Char Lines" file. It will be handy, if you should need to go back and edit the text again.
You will be requested to input a TITLE for your printout. Press RETURN if none is desired. Pages will always be numbered, however. Single-line spacing will print text exactly as it appears on the Atari screen. Double spacing is also provided for. To abort the printing function, just press the ESCAPE key.
That should cover the major functions of Matt*Edit. I think that you will find the rest of it self explanatory, since the program has many helpful prompts. Should you select any function accidentally, the ESCAPE key will usually exit it.
A special routine is called to input titles and filenames. This routine will not allow invalid text keypresses. Only upper and lower case, numeric keys and punctuation keys are allowed. Backspace editing is the only edit function provided for. This routine will keep you from accidentally clearing the screen in the middle of typing a filename. When in the edit mode, you can use inverse video, control graphics and more. Anytime you exit to a menu, the keyboard will automatically be restored to normal video, upper case characters. You may use CRTL-TAB to clear tabs and SHIFT-TAB to set special tabs for your editing screens. They will remain in effect until you change them.
This program has a couple of short machine language routines, in strings, to speed things up a bit. It will run well on an 800XL, since I followed the proper Operating System (OS) entry points. You should be aware of an XL OS bug, however. Sometimes, while printing, everything will stop for 35 to 40 seconds and then start again. No data is lost, and the program continues to function correctly. I checked with Atari on this problem, and it seems that a "certain combination of characters" being sent to the printer will put the system in a pause mode. Atari has informed me that they are working on a fix for this one. Don't worry if this happens to you; be patient, and all will pick up right where it left off. If you have Atari's Translator Disk (converts the 800XL OS to the old OS Rev. A or B, user selectable), it may be used to avoid this "timeout delay" problem.
10 DATA 690,721,162,784,89,117,133,105
,258,0,145,389,343,577,403,4916
190 DATA 738,338,922,883,53,888,920,42
7,890,667,502,794,588,22,511,9143
340 DATA 361,715,223,473,605,137,57,12
,73,65,965,194,723,822,7,5432
490 DATA 762,664,228,245,895,846,740,9
36,119,643,197,801,787,991,39,8893
640 DATA 179,731,460,529,314,5,620,99,
949,830,254,398,791,804,683,7646
790 DATA 620,98,891,482,579,807,723,73
7,924,952,401,84,605,16,593,8512
940 DATA 923,971,488,31,752,92,280,759
,807,10,579,210,588,982,549,8021
1090 DATA 565,513,901,655,970,51,83,59
0,919,637,904,524,761,916,650,9639
1240 DATA 724,183,830,924,738,437,14,6
80,853,601,793,67,832,567,473,8716
1390 DATA 839,887,807,645,536,772,468,
765,358,766,728,685,515,724,437,9932
1540 DATA 926,625,535,568,596,306,68,5
38,767,245,143,817,35,53,581,6803
1690 DATA 106,399,896,511,260,916,195,
469,274,513,933,638,573,257,70,7010
1840 DATA 140,211,754,276,281,677,823,
924,903,232,207,98,239,907,679,7351
1990 DATA 564,33,758,99,892,621,572,72
0,883,94,343,27,715,653,656,7630
2140 DATA 884,804,194,608,617,484,715,
621,504,718,612,506,6,791,549,8613
2290 DATA 734,424,791,535,214,681,909,
892,612,595,732,743,845,899,683,10289
2440 DATA 501,953,458,731,410,416,386,
352,328,973,403,182,722,782,325,7922
2590 DATA 210,273,291,806,224,572,919,
318,554,382,101,242,926,202,265,6285
2740 DATA 478,291,585,250,576,384,665,
352,920,375,514,90,42,220,837,6579
2890 DATA 430,795,982,637,640,671,662,
335,662,779,487,181,357,666,453,8737
3040 DATA 855,821,747,947,218,798,37,2
44,861,65,795,612,903,717,87,8707
3190 DATA 374,247,408,947,608,761,499,
560,721,255,312,780,20,512,303,7307
3340 DATA 154,71,564,452,672,957,503,6
07,215,966,992,743,409,190,103,7598
3490 DATA 241,969,298,179,801,328,789,
621,678,369,334,394,382,191,131,6705
4040 DATA 324,89,364,237,598,147,290,9
17,577,3543