Word Processor File Converter

Developer(s): Steve Gunhouse
Date: 1990
Type: Program
Platform(s): TS 2068

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 .CT appended.
  • POKE 23617,2 before 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 C extension, 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.

Related Content

Image Gallery

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 100

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.