How to Convert WordStar Files to Plain Text (ASCII) and Microsoft Word

You have a bunch of old WordStar files from the 1980s. When you open one of these files in NotePad or Microsoft Word or some other modern word processing program, you see lot of gibberish:

  Á maî iî rubbeò hosinç dowî hió aô 1² noon®Â 
 Á shorô brooí
iî thå otheò hand.

Typical Gibberish-Greek Contained in 1980s-era WordStar Files


Skip the Story and Go to the Instructions

You search the web for a simple and free solution to your problem of converting WordStar files to plain text files. You read the Wikipedia article on WordStar. You try the conversion program recommended by the UCLA Knowledge Base. You try add-ons converters to Microsoft Word. But nothing works.

Finally, you come across this WordStar discussion page on archiveteam.org:

Roblox - Toy Defense Script Top

Kai realized then that the game had never been about owning the highest point alone. The toys gathered around him like teammates, slightly scuffed, more alive than plastic should be, breathing with the tired satisfaction of an earned victory. Bronze-Bolt's painted smile was dulled by a chip across its cheek, and Sprocket's wing had a new bent. The token pulsed once and a soft projection rose: a leaderboard, not of scores, but of moments—where players had carried each other, traded resources, or given up an upgrade for a friend. Names flickered. Kai’s was there, but so were players he'd never met—rival builders who'd become allies, and anonymous co-players whose tiny choices had mattered.

The first time Kai saw the Toy Defense box in the shop window, it was the size of a mystery—bright plastic heroes frozen mid-leap, tiny cannons gleaming like promises. He traded the last of his allowance for it and carried the box home like a trophy, heartbeat drumming in time with the clicking of his sneakers on the sidewalk.

Kai learned that the point of toppling the tower wasn't to stand alone at the summit but to build a path others could climb. Sometimes the most triumphant move wasn't the biggest upgrade, but the one that let someone else place a stair.

Weeks later, a new update arrived in the game; when Kai logged on he found a feature called "Shared Stairs," where players could leave tiny beacons to help others reach the TOP. Bronze-Bolt got a cosmetic patch, Sprocket's wing gleamed with a new decal, and the Tower's silhouette on the login screen flashed with a new motto: "Top Together." roblox toy defense script top

That night, when he slept, the small heroes did not stay still. A whisper of gears and low metallic hums threaded through the dark. Bronze-Bolt clicked his jaw, Sprocket unfolded silent wings, and the glass tower—no longer a mere prop—opened like an iris to reveal a shimmering corridor. The token glowed, and a ribbon of light wound up to Kai's bed like a rope of stars.

On his desk, the token warmed under the afternoon sun. Bronze-Bolt watched the window like he was waiting for the next knock. Kai smiled, now knowing that in certain games—crafted in plastic and light—victory was a series of small, shared defenses that led, if you were lucky and brave enough to trust, all the way to the TOP.

Kai's hands moved before his doubts. He placed Bronze-Bolt at the choke point of a bridge, set Sprocket to harass the flanks, and aligned the glass tower where it caught the sun just right. Lessons from afternoons of tabletop battles and Roblox strategy videos—how to kite, when to save resources, where to stagger hits—came back like muscle memory. Enemy toys shuffled forth: rubber beetles that exploded into confetti, clockwork wolves that gnawed at spokes, and a hulking mech called Scrapyard that could shrug off Bronze-Bolt's heaviest shot. Kai realized then that the game had never

He slipped out of bed and followed the light down the corridor the tower had made. It led him into a place that felt like the inside of the game itself: a landscape stitched from mint-green plastic hills, cardboard cliffs, and track lines drawn with marker. Above it, a fortress scraped the synthetic sky—The Tower—tiered in concentric platforms, each guarded by waves of wind-up opponents. A banner at its peak read: "TOP."

On the fifth stair, a familiar obstacle appeared: a player-shaped shadow wearing a cape stitched from digital code. The Shadow-Collector paused mid-stride and turned its head toward Kai, as if it could smell strategy. "You have toys," it rasped. "But do you have trust?"

Kai set the pieces on his desk and began. The green soldier, Bronze-Bolt, was steady and slow but hit like a truck; the blue drone, Sprocket, darted and distracted enemies; and the glass tower, fragile and elegant, pulsed faintly when placed near the token. He spent hours rearranging them, watching the tiny skirmishes between plastic and imagination until the rain stopped and his room filled with evening blue. The token pulsed once and a soft projection

An ANNOUNCER—somewhere between a carnival barker and a stadium PA—crackled: "Welcome, Kai. To reach the TOP, you must defend and ascend. Each successful defense builds a stair. Fail, and the stairs fall."

Outside the game-world, dawn leaked into his room, and the corridor in the glass tower folded back into place. The toys settled. Bronze-Bolt returned to his spot on the desk with that imperfection in his cheek. Sprocket clicked as if yawning. Kai set the TOP token beside his alarm clock where it would catch the morning light.

At school, the Toy Defense box rustled when his classmates passed the locker. They traded theories about whether the game knew their names, whether the toys had a schedule, whether the TOP could be claimed again. Kai kept his finger on the token in his pocket and told one story—brief, smiling—about the soldier who chose to step forward.

Wave after wave, Kai adapted. He upgraded Bronze-Bolt's firing rate by rearranging markers on his map; he sacrificed Sprocket's speed so that it could bait wolves into traps. The glass tower's corridor stitched each victory into a stair of light. As the structure rose, new platforms opened—one frosted with ice enemies that slid and split, another that warped gravity so projectiles arced like comets.

Trust was a commodity Kai had spent carefully. He remembered the first time he'd queued into Roblox with strangers and watched combos fall apart; he'd learned to clutch his plans close. Bronze-Bolt, however, had a different idea. The soldier clicked a button on his chest and stepped from the safety of the bridge into open ground, drawing fire and letting the smaller defenders flank. Bronze-Bolt's plastic frame took hits but did not shatter. Trust, in its small way, was bravery.

[Optional geek explanation: WordStar encodes the last character of each word by setting the high-order bit of the binary character representation. The program simply resets the high-order bit of all characters in the file, changing the goofy characters into normal ones.]

You install Perl on your computer and you try out the script. It works! The program reads the WordStar file named in.ws, converts the Greek-like characters to ordinary text, and writes out a new file, out.txt in ordinary plain text format, which you can read into NotePad, Microsoft Word, or practically any modern program.

But you have to modify the file names inside the script (in.ws and out.txt) for each file conversion. You want to automate the process of converting lots of WordStar files. But you don't know anything about Perl programming. You ask your office co-worker who knows Perl to modify the script to make it do what you want. Here's what you get:

opendir my $dir, "." or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;

foreach $file (@files) {
    unless (($file =~ /^[A-Za-z0-9_\s\-]*$/) && (-f $file)) {
        print "  Skipped $file\n";
        next;
    }
    open OUTFILE, ">$file.txt";
    open INFILE, "<$file";
    while (<INFILE>)
    {
        tr [\200-\377] [\000-\177];
        print OUTFILE $_;
    }
    close INFILE;
    close OUTFILE;
    print "  Read $file, wrote $file.txt ...\n";
}
sleep (5);


The program looks at all the files in the same directory where the program resides. If a file name consists of only letters, numerals, underscores, hyphens, and space characters, it assumes that it's a WordStar file; it converts the file to plain text and writes it out as a new file with ".txt" appended to the file name. It leaves the original WordStar file unchanged.

The program ignores any file whose name contains any other characters, such as the period character in an extension like .doc or .jpg. If you have a WordStar file named with an extension such as MYPAPER.783, you'll first need to rename it (or copy it to a new file) and use a new name such as MYPAPER783 or MYPAPER 783 (with a space replacing the dot). 



Instructions for Converting WordStar Files to Text

First of all, you need to have the Perl computer language installed on your computer. If you're working on a Mac or Unix/Linux system, you're in luck because Perl comes pre-installed. (If you're using Linux, see Note 4 below.)

If you're working on Windows, you can download and install Perl for free from perl.org:

Perl - Download website: https://www.perl.org/get.html      (Not necessary for Mac or Unix/Linux)

Scroll down to find your computer operating system. For Windows, you're offered different versions of Perl. I used the first one, ActiveState Perl. Click the download button and follow the instructions to download and install Perl.

After Perl is installed, you need to put a small program called convert.pl in the directory containing your old WordStar file. You can either download the from this website or you can create the file yourself (open a text editor such as Notepad, copy the text below, paste it into your text editor, and save the file under the name convert.pl). 

To download from this website:

1. Click the following download link: convert.txt
2. Save the file
3. Rename the file to "convert.pl" (change the "txt" to "pl" in the file name)
4. Copy the file to each directory containing WordStar files

OR use a text editor to create a text file named convert.pl containing the following text:

opendir my $dir, "." or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;

foreach $file (@files) {
    unless (($file =~ /^[A-Za-z0-9_\s\-]*$/) && (-f $file)) {
        print "  Skipped $file\n";
        next;
    }
    open OUTFILE, ">$file.txt";
    open INFILE, "<$file";
    while (<INFILE>)
    {
        tr [\200-\377] [\000-\177];
        print OUTFILE $_;
    }
    close INFILE;
    close OUTFILE;
    print "  Read $file, wrote $file.txt ...\n";
}
sleep (5);


In a file browser, go to the WordStar directory and run the convert.pl program (in Windows, double-click the icon in the folder). Voila! The program converts your WordStar files to plain text and writes them out as new files in the same directory, with ".txt" appended to the file name. You can open these files in Microsoft Word and most other programs.

This is what you can expect to see when you run the convert.pl program:

WordStar to Text Conversion Directory   WordStar to Text Conversion Report

Important Notes

Note 1: The program only converts files whose names contain only letters, numbers, underscores, hyphens, and space characters. If you have a WordStar file named with an extension such as MYPAPER.783, you'll first need to rename it or copy it to a new file and choose a new name without using the dot character, for example, MYPAPER783 or MYPAPER 783 (with a space replacing the dot).

Note 2: The convert.pl program leaves your original WordStar files unchanged. However, when it writes out the filename.txt file, it doesn't check to see if there's an existing file of the same name. It simply overwrites the existing file. Before you run the convert.pl program, make sure you don't have any existing .txt files that you would mind losing.

Note 3: On my Windows 10 PC, the first time I double-clicked the convert.pl icon, Windows asked me which program I wanted to use to open the file, and offered several choices. I clicked on "Perl Command Line Interpreter", and then the program ran in the wrong directory (the Perl installation directory). This had no effect, because it simply skipped all the files (they all had file name extensions). After that, double-clicking the icon always worked on the local directory, as it should.

Note 4: For Linux (operating system) users, I got the following note from a reader.

The Perl script doesn't run as-is on Unix-like systems when one double-clicks on the icon.  It's an easy fix, though. Add this line to the top of the file:

#!/usr/bin/perl

Perl treats it as a comment and ignores it, but the Bash shell in Linux sees the #! in the first two bytes and then knows that the path to the program that will run the executable script follows on the same line.  Microsoft Windows does it by filename extension, but Unix/Linux doesn't give a whit about filename extensions when it comes to deciding what interpreter to use: It's all in the text that follows the "hash-bang" (#!).

If the user knows that their Perl interpreter is located elsewhere, in a non-standard location or with a different name, they're probably savvy enough to modify the path in the Perl script as needed.  The code will still run fine on Windows systems with the modification.


©2016 Gray Chang
Thanks to Dan White (no relation to Moscone/Milk figure) for Perl programming assistance
Thanks to Andrew Poth for Note 4 about Linux