Word Processor File Converter converts text files between Tasword II and MScript, in either direction. Tasword keeps text as fixed 64-character lines, while MScript uses free-running text with carriage returns. The program loads a file as CODE at 46080, converts it with a 300-byte machine code routine, reports the new length and saves the result under a name you give. A third option shows the sixteen Tasword graphics characters next to the MScript printer codes they become, and lets you change any of them; option 4 saves the program with your table.
The title screen reads “Word Processor File Converter by Steven V. Gunhouse”. Gunhouse described converting Tasword files for MScript in a letter in Sinc-Link (Jul/Aug 1990), linked below.
Program Analysis
The BASIC is a short menu driver. RANDOMIZE USR 33000 initialises the code, and the conversion entry point is USR (33016+97*o), where o is 0 for Tasword to MScript and 1 for the reverse; the function returns the length of the converted text, which is built at 33280. The graphics table sits at 32896–32911 (stock Tasword graphics 128–135 and their shifted forms 136–143), and option 3 pokes new letters into it.
Notable Techniques
- The output file name defaults to the input name, and a missing extension gets
.CTappended. POKE 23617,2before the graphics prompt puts the INPUT cursor in graphics mode, so you can type the graphics character itself.
Potential Issues
- The file-name check insists on a Larken-style name: a dot followed by a
Cextension, nine characters at most.
This copy came from the TTSUC Larken library disk L-51, “MSCRIPT SUPPORT DISK”. For tape, the LKDOS prefixes, the disk catalogues and the disk file-not-found check were removed, and Quit now stops the program instead of returning to the disk menu. Tested in ZEsarUX, converting a Tasword file to MScript.
Source Code
100 CLS : PRINT AT 3,9;"Word Processor";AT 5,9;"File Converter"
110 PLOT 47,111: DRAW 0,49: DRAW 169,0: DRAW 0,-49: DRAW -169,0
120 PRINT AT 7,6; INVERSE 1;"by Steven V. Gunhouse"
130 PRINT AT 10,0;"Options:"
140 PRINT '"1. Convert Tasword to MScript"'"2. Convert MScript to Tasword"'"3. Change printer codes"
150 PRINT "4. Save this program"
160 PRINT "5. Quit"
170 PRINT ''"Your choice? "+CHR$ 8;
180 LET a$=INKEY$: IF a$<"1" OR a$>"5" THEN GO TO 180
190 PRINT a$
200 IF a$="3" THEN GO TO 480
210 IF a$="4" THEN GO TO 9900
220 IF a$="5" THEN STOP
230 LET o=VAL a$-1
240 LET o$=("Tasword" AND NOT o)+("MScript" AND o)
250 LET n$=("Tasword" AND o)+("MScript" AND NOT o)
260 RANDOMIZE USR 33000
270 CLS
280 INPUT (o$);" file to LOAD? ", LINE f$
290 IF f$="" THEN GO TO 280
300 FOR i=1 TO LEN f$: IF f$(i)<>"." THEN NEXT i: LET f$=f$+".CT"
310 IF i<>LEN f$-2 OR LEN f$>9 THEN PRINT AT 10,0;"Invalid file name!": GO TO 280
320 IF f$(i+1)<>"C" THEN PRINT AT 20,0;"Invalid file name!": GO TO 280
330 CLS : PRINT AT 10,0;"Loading ";f$
340 LOAD f$CODE 46080
350 REM (disk file-not-found check removed for tape)
360 LET len=USR (33016+97*o)
370 PRINT '''n$;" file length:"'len;" bytes"
380 INPUT "Save ";(n$);" file as? ", LINE s$
390 IF s$="" THEN LET s$=f$
400 FOR i=1 TO LEN s$: IF s$(i)<>"." THEN NEXT i: LET s$=s$+".CT"
410 IF i<>LEN s$-2 OR LEN s$>9 THEN PRINT "Invalid file name!": GO TO 380
420 IF s$(i+1)<>"C" THEN PRINT "Invalid file name!": GO TO 380
430 PRINT '"Saving ";s$
440 SAVE s$CODE 33280,len
450 CLS
460 PRINT #1;"Press any key."
470 PAUSE 0: INPUT ;: GO TO 100
480 CLS : PRINT "Change printer codes."
490 PRINT '"Current printer codes:"'"Tasword","MScript"
500 FOR i=0 TO 7: PRINT "GRAPHICS-";i+(8 AND NOT i);" "; PAPER 5;CHR$ (128+i); PAPER 7," @";CHR$ PEEK (32896+i)
510 PRINT " GR Shift-";i+(8 AND NOT i);" "; PAPER 5;CHR$ (143-i); PAPER 7," @";CHR$ PEEK (32911-i): NEXT i
520 PRINT '"Press ENTER to return to menu."
530 POKE 23617,2: INPUT "Graphics code to change? ";g$
540 POKE 23617,0
550 IF g$="" THEN GO TO 100
560 IF g$<CHR$ 128 OR g$>CHR$ 143 THEN GO TO 530
570 INPUT "Change "; PAPER 5;(g$); PAPER 7;" to: ";a$
580 IF LEN a$>1 THEN GO TO 480
590 IF a$="" THEN GO TO 610
600 IF a$<"A" OR a$>"Z" AND a$<"a" OR a$>"z" THEN GO TO 480
610 POKE 32768+CODE g$,CODE a$
620 GO TO 480
9800 CLEAR 32895
9810 LOAD "WPConv.C2"CODE
9820 GO TO 100
9900 SAVE "WPConv.B2" LINE 9800
9910 SAVE "WPConv.C2"CODE 32896,300
9920 GO TO 100Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


