Classic Computer Magazine Archive ANTIC VOL. 6, NO. 7 / NOVEMBER 1987

FEATURES

WYSIWYG Cassette Jackets

Say goodbye to cassette chaos

by CHET WALTERS

Cassette Screenshot

Print neat, readable jacket directories for all your audio cassettes in any typeface you like; WYSIWYG Cassette Jackets is a BASIC program that works on 8-bit Atari computers with at least 32K memory and a disk drive. The pro-gram should work with most graphics-capable dot matrix printers.

If you're like a lot of other folks today, you probably make back-up cassette copies of your LP record albums, CD albums or commercial tapes. It's wonderfully convenient to have your favorite music on cassettes you can use in the car or with a portable cassette player. Not to mention the creative satisfaction of being your own disk jockey and making up original cassette programs that present the music in exactly the order you want.

Cassette Picture

As your collection of cassettes grows, sooner or later you'll find yourself facing the familiar problem of trying to write all the songs and artists on those cramped cardboard cassette jackets. If you're like me, you smear what you wrote for Side A while you're struggling to pen Side B, or you discover that you haven't got enough room for all the information you want to include.

WHIZZY-WIG

WYSIWYG (the desktop publishing acronym for “what you see is what you get”) produces - in any typeface you desire - great-looking cassette jackets that you cut out and insert into your cassette cases instead of the card-board jackets that come with blank tapes.

The program utilizes the bit-map graphics capabilities of Epson or C. Itoh Prowriter printers and their compatibles (Star, Gemini, Seikosha, etc.).

GETTING STARTED

Type in Listing 1, WYSIWYG.BAS, check it with TYPO II and SAVE a copy before you RUN it.

If you have trouble typing the special characters in lines 5000-5050, don't type them in. Listing 2 will create them for you. Type in Listing 2, check it with TYPO II and SAVE a copy When RUN, Listing 2 creates these hard-to-type lines, and stores them in a disk file called D:LINES.LST.

To merge the two programs, LOAD “D:WYSIWYG.BAS” then ENTER “D:LINES.LST”. Just remember to SAVE the completed program before you RUN it. You can then DELETE Listing 2 and LINES.LST from your disk to give you more room for font and jacket files.

PRINTER CHOICES

When you RUN the program, the first thing you're prompted to do is choose a printer. Since WYSIWYG’s ultimate goal is a nice printout, we must be sure that the program works with your own printer. If you have an Epson-compatible (Star, Gemini, Seikosha, etc.) or a Prowriter-compatible, just press the corresponding number key.

WYSIWYG can also be made to work with almost any printer that has graphics capability You simply add the necessary information to the printer list according to the instructions given in the REM statements that appear in lines 2042-2046 of Listing 1.

Since the program was designed around an Epson printer, the best results are obtained with printers capable of producing bit-mapped graphics at 120 DPI (dots per inch) horizontally and 72 DPI vertically Since vertical resolution is standard on most printers (each pin is l/72 inch apart) just enter the data that will set your printer to issue eight-dot line feeds. (That’s l/9 of an inch.)

For horizontal resolution, set your printer for 120 DPI (or 960 dots per 8-inch line - sometimes called high-resolution graphics) and tell it to expect 480 dots. What we're after is a jacket that is four inches wide and 4 l/8 inches long to match the card-board jackets of standard cassette cases. If your printer cannot produce exactly 120 DPI, set it to print at the nearest resolution greater than 120 DPI and clip your jackets a little wide so that they're eight inches from side to side.

Now tell WYSIWYG whether the most significant bit (MSB) or least significant bit (LSB) will “fire” the TOP-WIRE of your printer. The last number in your printer’s DATA statement must be this value - either 1 or 128 - and it must appear as a negative number to signify that WYSIWYG should stop reading DATA and move on. If your printouts have the text upside down, you've entered the wrong value here.

MAIN MENU

From the main menu you can CREATE a new jacket, EDIT, SAVE, or PRINT a jacket currently in memory. The [E], [S] and [P] keys won't work unless there is a jacket in memory. You can also LOAD a jacket previously saved; or load a custom FONT for printing and editing. Since this is your first time RUNning the program, your only options are CREATE and FONT

CUSTOM FONTS

When WYSIWYG loads, it moves the Atari ROM character set to its own RAM area to use for display and printing. You can replace this RAM font with any nine-sector FONT file created with a font editor such as En-vision ($19.95, The Catalog, AP0185). If you have a disk full of these fonts, you'll likely want to press [F] to load a font right now.

At the filename prompt you can get a disk directory by pressing a drive number and [RETURN]. Go to the menu simply by pressing [RETURN], or enter the "Dn:filename.ext" of your font file and press [RETURN]. (The n is necessary only if you're using a drive other than D1:.) If you choose the latter, your font file will load and be shown.

Caution: you must load a legitimate font file. WYSIWYG gets its personality by using the character set in its RAM area for display as well as printing. If you inadvertently load a file that turns the display to garbage, press [CONTROL] [.] while at the main menu to reinstall the Atari ROM set into RAM. Then reload the correct font file. But be warned: [CONTROL] [.] will wipe any custom font you've loaded, so don't ‘use this key wantonly.

CREATE AND EDIT

Since you have no jacket file as yet, press [C] for CREATE. WYSIWYG will wipe the jacket form clean and turn you over to the editor. What you see now is an accurate representation of Side A, or the left side of your cassette jacket. To the right of that is a mini-menu displaying the editing features available and which side of the jacket you're editing.

Jacket lines l-20 represent what will show through the clear plastic of the cassette case, where most of your songs will be listed. At the bottom, between two heavy lines, is the title area, which you see at the narrow end of the cassette case once the jacket is clipped and folded. Press [CONTROL] [E] to go to the bottom of the form and you'll see jacket lines 21-27, which appear on the back of the cassette case.

Side A now has a form 27 lines long by 25 characters wide to hold your song list, plus two lines for the title. Press [CONTROL] [S] to see a matching form for Side B, which goes on the right side of your jacket. [CONTROL] [S] flips between the two.

Since [CONTROL] keys are reserved for the commands illustrated at the right, only standard ASCII characters (numbers, uppercase or lowercase letters and punctuation symbols) can be used as text. [CONTROL] [C] centers the text on the line in which the cursor appears, and then it moves the cursor to the next line. If there are any leading spaces, the text will not center properly However, text can be blocked right by “centering” it repeatedly.

[CONTROL] [F] switches the display font between your custom font and the Atari ROM font, but will harm neither of them. If you haven't loaded a custom font, [CONTROL] [F] won't work. [CONTROL] [D] toggles your Dolby noise reduction selection through None, B, C or Hxp. [CONTROL] [B] toggles the Bias-Normal, Cr02 or MeTal. These can be set individually for each side and they appear nicely formatted at the top of your printed jacket.

All of the normal features of the Atari screen editor are supported by the WYSIWYG editor, except that [SHIFT] [CLEAR] erases only one line. To clear an entire side, press [CONTROL] [T] to get to the Top Of Form (TOF), then hold down [SHIFT] while alternately pressing [CLEAR] and [RETURN] until you're satisfied.

[CONTROL] [INSERT] and [CONTROL] [DELETE] work normally, but only on the line in which the cursor appears. [SHIFT] [INSERT]ing a line scrolls the last line off the end of the form. Any text pushed off of the form with these editing keys will be lost and gone forever. [SHIFT] [INSERT] and [SHIFT] [DELETE] will not work when the cursor is between the two title lines.

Type your song titles and side titles in the appropriate places on each side of the form, and then press [ESCAPE] to exit to the main menu. Once there, pressing [E] returns you to the editor on the side you came from.

LOADING AND SAVING JACKETS

When loading or saving a jacket, enter the filename, but do not include an extender on your filename. WYSIWYG appends .JKT to SAVEd filenames, thus denoting them as jacket files, and looks for this extender when loading jackets. Only. JKT files can be loaded, and if you try to load a file that is not legitimate, WYSIWYG returns to the menu while retaining the pristine quality of the current jacket in memory. Jacket files are 21 sectors long, so you can fit several on a disk. The program can't delete jacket files though, so you must do this through DOS.

Note: If you have a jacket in memory, even if it's blank, you must press [Y] at the WIPE CURRENT FORM prompt before you can LOAD or CREATE a new jacket.

PRINTING A JACKET

Ahh. . . the ultimate purpose of WYSIWYG. Press [P] to print, and press [N] if you want to use the Atari ROM set instead of the current displayed font. (Pressing [N] won't harm your custom set.) Prepare your printer by making sure it's online and the paper is set to the top of a page. If you wish to stop printing, press [ESCAPE] at any time. Press any key to start again.

Your jacket is printed on the left side of the page, and two jackets will fit on a page. The printer starts printing exactly where your paper is set, but after printing a jacket, WYSIWYG issues one line feed, so you need not adjust your printer after printing only one After the second jacket on a page, however, press the Form Feed button on your printer to move the paper to the top of the next page, or else the next jacket will print across the perforation.

Once you've printed your jackets, cut them with scissors, a paper cutter or, if you're like me, with a razor knife, straight-edge and cork board. Cut your jacket on the heavy black line around the text, trimming about one dot from the outside for a clean looking edge. Prowriter users should trim about 1/8-inch beyond the lines at the sides, but trim as above on top and bottom. Other printer users should measure with a ruler for accurate centering. (Remember, Cassette Jackets are four inches wide and 4 l/8 inches long.)

Once cut, the jacket folds quite easily along the horizontal lines that surround the title, subsequently slipping into a cassette case very neatly. It might be a good idea to slip that cardboard jacket in behind the WYSIWYG jacket for a little added firmness.

TECHNICAL TRICKS

WYSIWYG tricks the ANTIC chip into thinking that E$ (for EDITOR) is the screen memory area, which works well unless string E$ happens to cross a 2K memory boundary.

Adding printers, modifying the program’s overall length (by deleting REMs or adding features), or using WYSIWYG with BASICS other than Atari BASIC (Turbo, BASIC XL or XE, etc.) could affect the display of the editor, causing garbage to appear on the screen.

The routine beginning at line 9000 takes care of this problem very neatly. If E$ crosses a 2K boundary, the routines in lines 9004-9005 check A$ and B$. All three strings are DIMensioned to 1300 bytes (see line 2010). Since A$, B$ and E$ are DIMensioned consecutively, they will be placed side-by-side in memory. For example, if E$ begins at memory location 20000, then A$ must begin 1300 bytes later at location 21300, and B$ at location 22600.

As these strings occupy nearly 4K of memory, there will always be a string which does not cross a 2K boundary Once we find it, we alter the program’s variable value table so that the string is reassigned to E$.

Using the above example, E$ crosses a 2K boundary at location 20480, so we must use another string.

A$, beginning at location 21300, also crosses a 2K boundary at location 22528, so we continue our search.

B$, beginning at location 22600, does not cross a 2K boundary. This is the string we must use. Your BASIC program automatically builds a variable value table to help it remember which string variables refer to which blocks of memory (The ADR function uses this table to find the address of your string).

Knowing this, we can re-arrange the table, swapping the entries for E$ and B$. This swap occurs in lines 9032-9034. In this example:

ADR(B$)=22600
ADR(E$)=20000
before the swap

ADR(B$)=20000
ADR(E$)=22600
after the swap

Chet Walters, the owner and general manager of Non-Standard Magic, is the author of Words are Fun (Antic Disk: Bonus, May 1987) and Lister Plus/Picture Plus ($I9.95, The Catalog, APOI 79).

Listing 1 WYSIWYG.BAS Download
On disk BACKTALK.FNT Download
On disk FANCY.FNT Download
On disk JUDICIAL.FNT Download
On disk MODERN.FNT Download
On disk STOP.FNT Download