m100le - Wordle for the Tandy TRS-80 Model 100
A version of Wordle created for a forty-year-old computer, the Tandy TRS-80 Model 100 (and family).
If you already know how to transfer binary files to your Model 100, you only need two files: the tokenized basic for your system (e.g., M100LE.BA), and the compressed wordlist for the current year (e.g., WL2023.CO). Pick one from each of the tables below.
Table of all code versions.
Filename | Size | Meaning |
---|---|---|
ALL PLATFORMS | ||
M100LE+comments.DO | 16KB | The actual source code, including all comments, in ASCII format |
M100LE.DO | 8.5KB | All comments removed, in ASCII format |
TANDY / TRS-80 / Kyocera / Olivetti | ||
M100LE+comments.BA | 14KB | Tokenized Tandy BASIC format, including all comments |
M100LE.BA | 6.6KB | Tokenized Tandy BASIC format, all comments removed |
NEC | ||
M100LE+comments.BA.NEC | Tokenized NEC N82 BASIC format, including all comments | |
M100LE.BA.NEC | Tokenized NEC N82 BASIC format, all comments removed |
(Note that the .BA files above are tokenized BASIC and cannot be
transferred via BASIC's LOAD
or TELCOM. See the .DO versions if you
need [ASCII](ASCII Install).)
Table of compressed daily Word Lists.
Filename | Size | Notes |
---|---|---|
ALL PLATFORMS | ||
WL2021.CO | 1K | Words before June 19th, 2021 are bonus words, added by M100LE |
WL2022.CO | 1K | |
WL2023.CO | 1K | |
WL2024.CO | 1K | |
WL2025.CO | 1K | |
WL2026.CO | 1K | |
WL2027.CO | 1K | Wordle's official list ends on October 14th, 2027 |
(Note that the .CO files above are compressed binary and cannot be
transferred via BASIC's LOAD
or the builtin TELCOM program. See the
.DO versions if you need ASCII.)
Tip: You can transfer all of the above files, and more, to a modern computer by downloading the most recent .zip file from the RELEASES section.
Though the look of the game hasn't changed much, a lot has gone on behind the scenes, thanks to the amazing work by hackerb9:
- Hardware agnostic - runs on any of the Kyotronic sisters (TRS-80 Model 100, Tandy 200, Tandy 102, Kyocera Kyotronic-85, Olivetti M-10, NEC PC-8201, NEC PC-8201A, and NEC PC-8300).
- Speed increase - due to the following...
- Random, instead of sequential, access to RAM file
- Compressed binary word list files - smaller size and discourages peeking :)
- Smarter string handling (avoid concatenations,
CLEAR
plenty of space)
- Commented and uncommented code files
- VT52 character positioning vs Tandy/NEC-specific routines
- Harmonized auto and manual date entry — play tomorrow's game today!
- Synchronized with the 'official' NYT Wordle list
- Data cleanup, code cleanup, and other optimizations
Click to see summary of changes.
Whew, lots there -- and more detail on a few things below!
--bgrier Oct. 8, 2022
* * * * *
Multiple versions of the code are now available, but you only need one for your machine. For TRS-80 and Tandy computers, you will use M100LE.BA. For others, or if you want the original source code, see the Formats section for more details.
Word list files are now compressed binary files with the extension
.CO
, although the old .DO
format still works. As before, you only
need to download the wordlist for the year you wish to play.
Also available are the uncompressed wordlists (.DO), which are mainly of use if you wish to edit the words or if you are transferring the files using the builtin TELCOM program which can only send ASCII files. M100LE is smart enough to use the .DO files if .CO cannot be found.
m100le is an implementation of WORDLE for the TRS-80 Model 100 and related computers.
It is written in the unit's on-board BASIC, a subset of Microsoft BASIC included with the device.
- Guess the WORDLE in 6 tries.
- Every day you get a new WORDLE.
- Each guess must be a valid 5 letter word. Hit the enter button to submit.
- After each guess, the colour of the tiles will change to show how close your guess was to the word.
As far as possible, we have attempted to remain faithful to the original game and gameplay. The following features were changed.
We've chosen to eliminate this constraint, given the limited onboard memory of the Model 100.
WORDLE initially checks the date and loads today's word from the wordlist. When a guess is submitted, WORDLE checks the guess to verify that it's a word in a large dictionary (14,855 five-letter words). If the guess doesn't appear in the dictionary, the guess is invalid and will not be accepted. The game does not progress until a valid guess is made.
m100le initially checks the system DATE$
and loads today's word
from WL20xx.CO. When a guess is submitted, m100le compares it to
today's word, and provides the resultant clue. m100le does not
test to verify the word appears in the wordlist. A guess of
MOIST
is valid, as is a guess of
DDDDD.
WORDLE contains a wordlist of over 2000 five-letter words, one per day for six years. m100le has split the wordlist into seven files, based on the year, so you need only download the current year's wordfile.
Uncompressed, the data is over 17 KBytes; over half of the memory on a TRS-80 Model 100. Separately, each year's data is only about 2.5 KB, uncompressed, or 1 KB, compressed.
For example, in the year 2023, m100le sees the two digit year of
"23" in DATE$ and loads the wordfile WL2023.CO
. If you've
enabled the Manual Date Entry function (see below), then the program
will attempt to load whatever wordlist file that corresponds to the
year entered.
As the Model 100 uses a monochrome LCD display, we don't have the ability to use colours to provide the clues. Instead, m100le shows symbols.
For each guess, a line in the Clue Panel will be filled in with the clue for that guess, and the cumulative Alphabet Panel will be updated.
Clue | Name | Meaning |
---|---|---|
. | Period | Wrong letter |
? | Question mark | Letter is in word, wrong location |
X/* | Letter or asterisk | X = Any letter in proper location‡ |
Daily, a five-letter word is selected and players have six tries to guess it. Each guess is rewarded with clues. After every guess, each letter is evaluated and marked in the Clue Panel as either X/*, ?, or . (CORRECT LETTER, QUESTION MARK, or PERIOD).
X/* CORRECT LETTER, a letter from A to Z in Clue Panel and an asterisk in Alphabet Panel, indicates that the letter is correct and in the correct position.
? QUESTION MARK indicates that the letter is in the answer but not in the proper position.
. PERIOD means that the letter is not in the answer at all.
Note that to play the same as the official Wordle, m100le now marks multiple instances of the same letter in a guess, such as the "P"s in "POPPY", with a QUESTION MARK even if the letter only appears once in the answer. (In previous version of m100le, excess repeating letters were shown as a PERIOD.)
When either the word is guessed correctly, or no correct word is guessed after six attempts, the game ends and you have a few options:
- [A]GAIN? - Prompt for a new date to play
- [R]ANDOM? - Starts a new game with the word chosen randomly from this year's wordlist
- [S]OCIAL? - Display your game's progress in a way suitable for sharing on social networks (Take a photo of the display & impress your friends :)
- [Q]UIT? - End the program execution and return to the main system menu.
Many Model 100 computers no longer have working internal backup batteries for the clock and will have the wrong date set. You can fix this by setting DATE$ or by altering the program.
Setting the DATE$ in BASIC
To set the date once, go to BASIC and type the following:
DATE$="12/31/23" :REM MM/DD/YY format, usually
DATE$="23/12/31" :REM YY/MM/DD for NEC portables
Note that this is only a temporary fix if your internal battery is shot. Tip: It's a good idea to replace the battery before it starts leaking and damages your unit.
Enabling Manual Date Entry
If your DATE$
is never set correctly or you'd like to replay a
specific game, you can change m100le to always prompt for Manual
Date Entry at startup by changing line 16 to set MD
to 1:
16 MD=1
This will prevent the game loading today's game from DATE$ on startup and lets you play a game from any date, provided you have the word file for that year loaded into your unit's memory.
Date entry format
If you have enabled Manual Date Entry or if you restart the game with the A (AGAIN) key, you will be prompted for the date you wish to play.
The system will prompt you for the date in MM/DD/YY
format. (NEC
portables use YY/MM/DD
). Two digits must be used for month, day,
and year, so add a leading 0
, as needed.
If you hit ENTER without typing anything, it will use the default date which is either the previously played date (when the AGAIN option is used) or the system DATE$ (when first run).
Alternately, you may enter the ordinal 'Day-of-Year', e.g., 200
for
the 200th day of the loaded year. Optionally, you may specify a year
before the ordinal day. For example, 21/170
would give you the
170th day of the year 2021, which happens to be the first Wordle game
in the official Wordle wordlist. The ordinal day is shown on the right
side of the screen while playing. Subtract one to play the previous
day's word.
If you know how to transfer binary files to your Model 100, just grab the two files mentioned above in the Quickstart section. If you do not know how (or lack the tools), read on.
You will need to transfer both the m100le program and at least one wordlist file in ASCII and convert them to binary. Because the ASCII versions are significantly larger, these instructions include some tricks to save memory.
-
Serial port. CMPRSS can read the ASCII list of words over the RS232C serial port from a modern computer. This is the recommended method and what will be detailed below. It uses the least RAM. Its primary downside is that it requires learning how to send ASCII files from a personal computer.
-
RAM storage. CMPRSS can also read from the Model 100's file system. If you know how to transfer ASCII files using TELCOM, this may be a useful alternative. (Note, if you know how to transfer files in a different way, then you are in the wrong instructions. You can just use the precompressed wordlists).
-
Not at all. CMPRSS is optional. The m100le program actually works fine with uncompressed ASCII word lists. It just takes up unnecessary space on the Model 100's limited RAM filesystem. (2.5 KB per year instead of 1 KB).
Click to see the steps for an ASCII install
You will need a NULL modem cable. Since current computers do not come with serial ports, you will likely also need a USB to Serial adapter.
Warning: if you get certain serial adapters, your transfers will be garbled. Technically, you'll need a device that has hardware-level XON/XOFF flow-control, but that's rarely listed on the box. Some keywords to look for that you might see in advertising: "on-chip flow control", "16950 UART", "MU860", or "FTDI". Additionally, most adapters labelled "PL2303" will work, but not all of them.
On your Model T, type this to load the program from the serial port:
LOAD "COM:98N1ENN" :REM FOR NEC, USE COM:9N81XN
Then, use your connected personal computer's "send file" ability to send the CMPRSS.DO ASCII file over the serial port at 19.2 Kbps. If you do not know how to send a file, please see sendfile.md.
Click to learn more about CMPRSS.
CMPRSS is a BASIC program that runs on the Model 100. It reads words from the serial port from a personal computer that is sending an ASCII wordlist (WL20xx.DO). (Where 20xx is a year.) CMPRSS compresses the five letter words to three bytes and writes them to a binary file in the RAM storage named WL20xx.CO.
There are three ways of using CMPRSS:
Note that it is advisable to hold off on loading the M100LE.DO BASIC program until after CMPRSS has been run and deleted to free memory.
Download one of the following files to your personal computer:
Run CMPRSS to load words from the serial port and use the connected computer to send the WL20xx.DO file.
Explanation of running CMPRSS
When run, CMPRSS will ask you for where to load the words from and where to save them. CMPRSS can load data over the serial port or a .DO file.
If you are using the serial port, the default (COM:...
)should be
correct and you can just hit ENTER.
Once CMPRSS says, "Waiting for COM:", use the "send file" mechanism on your personal computer to send the WL20xx.DO ASCII word list over the serial port.
After you are finished compressing all the wordlists you intend to use, you may delete CMPRSS.BA, or, if you have enough RAM, you may save it.
NEW
KILL "CMPRSS.BA"
or
SAVE "CMPRSS.BA"
Now that the wordlist is transferred, all that is needed is the actual m100le program. This is sent exactly the same as CMPRSS was in step 1.
LOAD "COM:98N1ENN" :REM FOR NEC, USE COM:9N81XN
Then, use your connected personal computer's "send file" ability to send the M100LE.DO ASCII file over the serial port at 19.2 Kbps.
Important: don't forget to SAVE "M100LE"
after transferring the
program over the serial port.
You now have M100LE.BA on your machine and can play today's Wordle!
Try RUN
.
As mentioned above, there are multiple versions of the M100LE program available. Only one file, (M100LE+comments.DO), is the true source code. All others are derived automatically, mostly for smaller file size and to ease installation.
-
Comments By default files have comments stripped to keep the size down. Versions which contain "+comments" in the filename include notes for developers who wish to edit or improving m100le.
-
Tokenization Files can be in ASCII or one of four binary formats.
-
.DO ASCII BASIC source code has two main benefits: it will run on any of the platforms and it can be downloaded using the builtin TELCOM program or BASIC. ASCII format can be read on any machine and will run on any of the platforms. However, downloading requires an extra tokenization step which may require more memory than your computer has. (But, see [installation](#ASCII Install) for a workaround.)
-
.BA Tokenized BASIC format which saves memory during transfer, but requires using a program such as TEENY which can download binary files.
- .BA Runs on all Model 100 type devices except the NEC portables. Specifically, the BASIC tokenization is the same for the Model 100, Tandy 102 (US and UK), Tandy 200, Kyocera Kyotronic-85, and Olivetti M10.
- .BA.NEC Runs only on NEC PC-8201, PC-8201A, and PC-8300.
-
Click to learn more about the different formats.
- Add the ability to save and display statistics
- Improve clues, guess feedback and messages
- Do the impossible: Cram Wordle's 72 KB spelling dictionary into 10 KB (or less).
The current version of m100le (starting with v0.m) uses the New York Times Wordle word lists. That means that every day there is a new word chosen and it is the same word for your Model 100 as every other computer on the planet. The game, written in Javascript, contains the entire set of daily words (the wordfile) within the program code. Over six years worth of words.
Previously, the wordfiles used were based on the the original javascript WORDLE. While the order changed, there are very few differences between the original and the current word lists.
Big wordfiles wouldn't work for our little units, so we broke each wordfile into manageable chunks of one year each. The WL20xx.CO files are compressed so each five-letter word takes only three bytes. If you have enough memory and you'd like to see and change the words, you may want to download the plain text WL20xx.DO files instead. m100le will automatically use a .DO file if the .CO file is not found.
The wordfiles are all named for the year they correspond to. On
program load, m100le checks the system DATE$
for the current
date OR the manually entered date (if enabled) and scans the
appropriate wordfiles for the matching daily word.
Maybe. Mostly. It ought to, anyhow. The NYT may change their word list at any time. If that happens, and we don't catch it, let us know and we'll update ours.
Yes. m100le works fine whether or not your m100 has a
Y2K patched ROM.
The century shown in the main MENU is just cosmetic as the m100 only
keeps track of the last two digits and the game presumes you are in
the 21st century. For example, if you set
DATE$="06/20/26"
, you'll get the same game no matter whether the
main MENU shows 1926 or 2026.
If you have any feedback, please reach out to us:
- in the discussions area for general conversation about m100le
- in the issues area for bugs and feature requests
- Josh Wardle - Wordle's creator
- hackerb9 - significant optimization and improvements. This thing rocks!!
- TRS-80 Model 100 BASIC - based on Microsoft BASIC, with special support for the RAM file store, LCD display, and other built-in hardware of the TRS-80 Model 100 and Tandy 102 portable computers
- Heathkit H19 escape codes which allowed this program to run cross platform, despite superficial differences in BASIC.