40K Disk
by Dr. John C. Ferguson
The Bank Street Writer is an example of a simple word processor that is a near-perfect match for the Atari. Like the computer itself, it is rather inexpensive, a joy to use, and has a beautiful display. Unlike many other word processors, the BSW can be mastered in a few minutes. Even more important for the home user, it can be employed after several weeks of idleness with practically no effort needed to relearn the system.
With the beauty of simplicity, however, there are always trade-offs. I found that the BSW's major limitations were not with the editing and filing functions, but with the printout. Printing a hard copy was awkward and required a great many keystrokes to initiate. Even after all this effort, there was only very limited capacity to control the format, and no provision at all to use the many extraordinary functions built into my NEC 8023AC printer. For example, if I wanted enhanced printing for a letter I had just typed, I would usually have to save the letter to disk, return to BASIC (perhaps inserting the cartridge), turn on the printer, LPRINT the enhanced print code, reboot the BSW (perhaps after removing the BASIC cartridge) and then go through the tedious procedure of initiating the printing. For reports, I could not use underline, tab stops, or the special Greek characters or numerical superscripts of the NEC 8023AC font!
Recognizing that work was almost always saved to disk anyway, and that the problem was not really in the word processing, I began to develop the present program as an easier method to format printing functions and to allow the use of some seldom-used characters as "tokens" to call forth the underline, special symbols, and control functions of the printer. As I got more into it, I found that there were almost an infinite number of additional enhancements that could be incorporated, including right justification of text and word counting. The result is the Fergee File Printer, which is a smorgasbord of the functions that I find most useful. It can easily be modified to add still others, but, again, there are always tradeoffs between simplicity of use and complexity of control.
The program is designed to be easy and fast. The major functions file calling, token translation, word wrap, right justification and word counting are all accomplished with machine language subroutines, thus execution will only be slowed by the speed of the printer itself, and the NEC 8023AC is quite fast. Actually, only a few lines identified by REM statements call on printer-specific functions, so the program can easily be modified to work with Epsons or other common printers.
When the program is run, a title page is briefly displayed, showing the translations which are made in the file written with the word processor. These were selected to be easy to remember. Underline is set with "<" and cleared with ">". The "[" (like "C") causes the next letter typed to be interpreted as a CTRL character, and "]" (nearest the ATARI key) similarly causes the next letter to be interpreted as an ATARI character. A CTRL-ATARI character can likewise be called with "^" (above the ATARI key), while next to it "\" produces the ESC code. The BSW program's CTRL-C for centering text and the CTRL-1 for indenting are retained. If you would like the indent to be less than the preset eight spaces, a REM statement in the program tells how this function can be modified.
The redefined keys are lost for their normal functions, but their use while typing BSW files will now permit almost all of the printer function codes to be embedded in the text.
While the program is displaying the title page, the computer is busily loading some of the machine language subroutines into memory. During this period you may, if you wish, remove the program disk from your drive and insert your disk of BSW files. When the poking is done, the display will shift to the primary menu for controlling printer format. The menu page also shows the preset default values. If these are satisfactory, simply push RETURN, and you will quickly see a display of the disk inventory with a code letter by each filename. Another push of RETURN will put you back in the menu, if you now decide you want to change something or try another disk. Otherwise, press the letter of the file you want printed, and it will rapidly load into memory.
You are now given a choice of either printing the file, viewing it (and possibly editing the starting or ending point) or returning again to the menu. A press of "P" will immediately initiate printing, provided you have turned on the printer. Thus, from booting the program, just three keystrokes will suffice to initiate. printout of any file on the disk, unless you want to change any of the many options that are available in the menu. As soon as the file is dumped out to the printer's buffer, the screen will display a count of the words (actually spaces and EOL codes), and an option, either to print another copy or to return to the menu, will be given.
The menu shows a number of format changes that can be implemented, plus the current values. The initial default values are found in Lines 51 and 52 and can be altered to suit your own tastes.
Any menu item may be changed by typing its number and RETURN. Some will toggle to the alternative value; others will call for you to enter some specific data. In either case, the new values will be shown in a redisplay of the menu screen, and they will remain in effect until changed again, or until the program is restarted.
Most menu items are sufficiently self-explanatory to need no comment, but a few do. In item 10, the set default of Right Justified calls forth a subroutine which inserts extra spaces within the lines, so that the text is neatly lined up on both the left and, right margins, producing what -- in many cases -- is a more pleasing page appearance. I have also used it, in combination with changes in margin settings and line lengths, to produce dual column printing similar to this page. Note that there may be combinations of short line lengths, long words or non-printing control characters that will produce aberrant results, which can, infrequently, be a problem.
Item 12 allows you to define tab spacing at the time of printing. The tabs would be called by inserting the proper tokens in the text ("[I" for the NEC 8023). This greatly simplifies using the BSW for composing tables. A single default tab to position 50 has been included; I use this routinely for the date and signature lines in letters.
Item 13 allows other special codes to be sent out directly to the printer at the beginning of a session. I find that I often use it to call for 36/144-inch line spacing (about equivalent to 1 1/2 spacing), which together with a setting of 35 lines per page, a line length of 78 and elite type makes a nice format. Item 14 allows you to enter a header of up to 75 letters. If used, this will be printed out at the top of every page except page number 1 (Line 4020 prevents the header and page number from being printed on that page). Automatic page numbering in a choice of formats is provided in items 5 and 6. Be careful, when you print more than one file, that you set the correct first page number each time. If you want to set a new top-of-page position on the printer, turn it off and on again, to clear its memory.
After a file is called, you are given an option to see it displayed. If this is chosen, you will quickly see the first 500 characters, in a readable form with word wrap. You can toggle up and down, or from beginning to end, using the same controls. as in the BSW, but note that, if the 500 characters contain an unusually large number of EOL codes, some of the display may scroll off of the screen. At any point, pressing "C" will produce a redisplay of slightly more than the 500 characters without word wrap, and with the EOL codes translated to a visible symbol. In this mode, a new beginning or ending point may be designated by moving the cursor to the proper location and pressing "B" or "E." You can also abort back to the word wrap display. From it, you can choose further changes, to print the file, or return to the menu and start all over again.
While the Fergee File Printer was specifically written to enhance the BSW, it is certainly not limited to that function. It should work with files generated by most other word processors and editors. I have found it extremely useful in printing out listings of assembly language routines generated with the Atari Macro Assembler-Editor, and with the Atari Assembler Cartridge. Try it on anything you like you may be surprised at the results.
The program is dimensioned for a 48K machine, a capacity which is usually recommended for word processing. It may be adapted for less memory by reducing the text buffer set in Line 44, eliminating REM statements and, if necessary, leaving out such subroutines as the title page (Lines 6000-6200) or view and editing (Lines 7000-8150).
1 DATA 226,269,230,340,748,997,600,772
,260,391,195,252,200,190,275,5945
30 DATA 647,171,233,651,971,284,13,342
,256,446,153,73,166,386,975,5767
106 DATA 395,909,514,633,731,191,691,4
97,960,340,278,971,973,242,943,9268
250 DATA 927,712,392,963,966,440,925,9
89,494,699,304,387,292,130,602,9222
355 DATA 882,709,120,862,708,75,403,29
1,144,102,57,428,921,186,96,5984
430 DATA 500,512,460,472,494,506,278,2
79,266,576,132,431,886,86,433,6311
505 DATA 307,296,267,102,789,925,486,8
15,646,729,581,370,836,576,864,8589
1040 DATA 203,117,225,280,812,991,167,
939,658,942,33,905,536,657,261,7726
2010 DATA 337,849,284,978,308,875,345,
364,614,773,829,536,826,276,689,8883
2180 DATA 202,788,779,712,448,945,804,
937,10,524,537,336,721,154,514,8411
3510 DATA 567,191,733,745,679,488,266,
698,403,63,239,10,902,737,770,7491
4020 DATA 992,69,8,339,872,437,600,690
,313,233,918,967,335,600,718,8091
4160 DATA 238,831,489,423,847,593,236,
891,158,908,79,881,869,552,566,8561
4330 DATA 525,971,962,300,726,462,611,
109,102,914,39,185,890,511,430,7737
5020 DATA 7,106,57,840,33,525,139,610,
39,69,965,515,572,788,104,5369
5200 DATA 888,731,349,712,866,62,924,4
31,607,468,448,771,314,818,195,8584
6090 DATA 549,987,781,868,23,822,581,6
36,622,786,211,452,705,203,886,9112
7060 DATA 21,736,783,868,536,35,561,53
4,486,750,391,824,431,894,409,8259
7535 DATA 133,821,132,136,141,139,565,
568,560,770,754,645,750,638,763,7515
7700 DATA 623,853,435,649,661,940,362,
939,146,397,608,717,240,489,461,8520
8125 DATA 553,613,517,752,2435