READYChat for C64 OS

Message other C64 OS users,
Or ask your assistant, Ready, for help.





READYChat ChatGPT Plugin.




Introducing READYChat

Generic Utility Icon.

READYChat is an instant messenger for C64 OS, but it's got a pile of amazing tricks up its sleeve. Chat with other READYChat users, one-to-one, just like SMS. Users you've chatted with most recently appear in the sidebar and you can view your chats and carry on the conversation with them, plus all your computers stay in sync.

But the real power comes from Ready, your internet-powered personal assistant.

Ready is always listed at the top of the sidebar, and just as your Commodore 64's READY prompt is available to take BASIC commands, the Ready assistant is always available to take your commands, help you out, and fetch information for you from the internet. Its responses are crafted to be short and sweet, so you can access stocks, weather, news headlines, dictionary definitions and more, with connection speeds from 300 bps to 38.4Kbps, and beyond.

READYChat can even get instant-answers from ChatGPT.
Smart context you can access any time.

OpenAI ChatGPT blossom logo.

READYChat is a Utility, so you can open it concurrently1 with most other C64 OS Applications. It uses C64 OS networking, so you can use it with any networking hardware supported by the operating system. Check out the C64 OS Networking Guide for further information about getting online.

READYChat is an instant messenger with an internet-powered personal assistant for C64 OS. Greg Nacu — 2025 — C64OS.com

Download READYChat today, pay what it's worth to you. Requires C64 OS v1.08 or greater and compatible network hardware.




How to use READYChat

Installation

READYChat is a Utility for C64 OS, distributed as a .CAR archive. Download the .CAR installation archive and transfer it to your C64. From File Manager, double-click the .CAR file to open in the Installer. Click extract to unarchive a subdirectory containing the Utility, some help content and other goodies.

Use File Manager to copy the PRG file, READYChat, to the system's utilities directory. Then add an alias to it on one or more of your App Launcher desktops.

Choose Add Alias from the App Launcher File menu. Navigate to the utilities directory, choose READYChat and click select.

Choose Add Alias from the App Launcher File menu. Navigate to the utilities directory, choose READYChat and click select. Now you can launch READYChat straight from the desktop.

Memory Limitations

Although READYChat can be used from within other Applications, it decreases the amount of memory that can be used by the Application. For example, if READYChat is open with Wikipedia, Wikipedia may have insufficient memory to load in some article sections.

File Manager uses too much memory to be run concurrently with READYChat.


Opening READYChat for the first time

Getting started is very simple. From the very first time you open READYChat, you're ready to go. There's no need to create an account or choose a password. READYChat uses the CNP authentication protocol to create your user account and fetch basic profile information.2

Your profile information, including your name, email address, country and timezone, are provided by the CNP authentication protocol and come from your account settings which can be changed at https://www.c64os.com/c64os/account

Change your profile settings in your account at C64OS.com
Change your profile settings in your account at C64OS.com.

If you haven't already, be sure to set your timezone in your C64OS.com account settings. This affects the displayed date and time of when messages were sent to you. If you change your name, email address or timezone settings, that information is automatically updated in your chat profile the next time you launch READYChat.

READYChat requires a C64 OS internet connection. To get online with C64 OS, review the C64 OS Networking Guide and configure your network settings.

READYChat connecting to the internet. READYChat fetching the most recent messages.
Connecting to the internet and fetching the most recent messages.

Overview of the user interface

On the left side is a list of users you can chat with. Click someone in the list to change who you're chatting with.

On the right side is a chat dialog area. Your messages always appear right aligned in the standard body text style (defined by the current C64 OS theme.) Messages from the other person appear left aligned and display in the emphatic text style.

READYChat retains 1 KB (1024 characters) of scrollback buffer for the current chat. When new messages are appended to the bottom of the dialog, older messages are bumped off the top to make room. Whenever you change users, the chat buffer is refetched from the server and the date and time of the last message is displayed in the bold above the last message.

Below the chat dialog is a text field. Type your message in the field and press RETURN to send it. Messages may be up to 160 characters.

Labeled UI diagram of READYChat.

Drag the splitter bar to shrink or hide the user list and see more of the conversation.

New messages appear instantly. The list of users is updated so the people you've chatted with most recently always appear at the top of the list. If someone has sent you messages that you haven't read, their name appears in a highlighted color. A gentle alert sounds when a message arrives from a user who's not in focus. An even gentler alert will sound if a message arrives from the user who's in focus, if there has been no communication during the last minute. You won't miss anything, even if you're attending to other things.

Messages are sent just like SMS text messages. You don't have to be online at the same time as your friends. You can send other people messages any time, and they'll get them the next time they open READYChat.


How to message other users

Sending a message to someone you're already chatted with in the past is easy. Just click their name in the user list, and send them a message. But how do you send messages to people you never have before?

Message a new user

To message a new user you have to know their READYChat handle. Click the Ready user from the top of the user list. Type the message command like this:

msg handle your message goes here...

Handle's are case-insensitive. If the handle does not exist, Ready will tell you it can't find that user. Otherwise, you'll see the new handle appear at the top of the user list.

You can send messages to any user with the "msg" command sent to Ready. And this is also how you get new users into your user list. The user list only shows the most recent 14 people you've chatted with. If a person falls off the bottom of the list, you can send them a message using the "msg" command, and they'll get bumped back to the top of your user list.

It may happen that someone sends you a message, and that's how their handle gets itself into your user list. If you don't recognize this person or their handle, you can send the whois command to Ready.

whois handle

Ready responds by telling you the user's full name, email address and home country.

Search for users

You can learn of a user's handle many different ways. For example, someone can just tell you their handle through some other means. Or, someone could send you a READYChat message and now you know their handle. Additionally, by default a person's handle is the initial letter of their first name, followed by their last name, up to a limit of 16 characters maximum. If two handles would be the same, a number is appended to the end.

You can also search for users by part of their name, email or handle. To search for users, click the Ready user, and send it the search command, for example:

search john

The search term is case-insensitive. In this example, it will return any user whose name is "John" or "Johnny" or "Johnson", etc. Or anyone whose handle or email contains the sequence "john". Search limits how many matches it returns. Its results show the full name and handle of the matching users. You could optionally request a whois on any of those handles to pull more information about that user.

Configuration options

config email show|hide

By default your profile consists of your:

  • first and last name
  • handle (which is automatically generated based on your name)
  • country (i.e., Canada, United States, Germany, etc.)
  • timezone (i.e., America/Toronto, Asia/Tokyo, etc.)
  • email address

You may opt to hide your email address, for privacy reasons. To do this, send the command to Ready, "config email hide". It will confirm the change. You can reverse this at any time by sending "config email show". When your email address is hidden it does not appear in response to whoami or whois, and it cannot be used to find you with a search.

Conversations kept in sync

If you sign into the same CNP server with the same account credentials on more than one Commodore 64, each instance of READYChat that you open will be authenticated as the same user. This is perfectly acceptable, in fact, you can even have READYChat open in more than one app bank on the same C64, with an REU and Fast App Switching.

Your conversations are always kept in perfect sync across all your computers. If two instances of READYChat are authenticated with the same account, and they are both focused on chatting with the same friend, when you send a message from one computer you see your own message appear in the chat dialog on the other computer instantly. Any messages sent back appear at the same time in both (or all) or your open READYChat Utilities.

You can chat with different users in different READYChat clients, on the same account, at the same time. Additionally, if one instance of READYChat gets a message from the user in focus, that will indicate that the message is read. This suppresses the alert sound in the other instances of READYChat. It also knows the message has already been read, so the user list updates on all computers but since the message has been read on one computer it will not be highlight on the other computers.

If you leave READYChat open in an fast app switching bank that is frozen in the background, data flowing to that client is put on pause. When you switch back to an app bank where READYChat is running, its connection is resumed and the messages it missed are sent down.

READYChat chatting with a friend.
READYChat chatting with a friend.

How to use Ready

Ready is your internet-powered personal assistant, always ready to help you get answers and solve problems. Just like the READY prompt on your friendly Commodore computer has always been ready to take your commands and do your bidding.

Ready always appears at the top of the user list. And we have already seen three commands that you can send: search, whois, and msg.

Sending commands to Ready works exactly the same as how you would chat with any other friend. Click Ready in the list to focus the chat dialog on that user. You'll see the chat dialog fill up with your most recent exchanges.

Try saying "hello" to Ready!

If you send a command that it doesn't understand, you'll get back a reminder that although Ready is not an LLM it is capable of answering many commands and queries, plus a tip that you can ask for "help".

Ready has a growing vocabulary of commands and services, by means of its plugin architecture. To get a list of all the commands that Ready understands try:

help list

The commands that are specifically related to finding, messaging and identifying users for chat are grouped at the top. Following those are other available commands in alphabetical order.

READYChat provides a list of commands it understands.
READYChat provides a list of commands it understands.

The help command can also be used to get information and usage instructions for any other command. Just ask it, like this:

help weather

You get back instructions about how to use the command. Optional parameters are displayed in square brackets, repeated options are shown with a "...", ranges are shown with a hyphen, and alternatives are separated by the "|" (pipe) character. Like this:

weather city[,countrycode[-state]]|lat,long [0-6] - Fetch the weather in any city or by GPS coordinate.

Let's interpret what this command usage means. First, the command is "weather". And it requires either a city or lat,long coordinates. You have to provide one of those two or it won't know where to report the weather from. Some cities appear in more than one country. For example, there is London, England, but there is also a city called London in Canada. The [,countrycode[-state]] part means that you can optionally include ",countrycode" following the name of a city. And if there is more than one city with that name in the country you can include a state or other administrative region code following that.

weather Austin,US-AR
weather Austin,US-TX

Lastly, there is also an optional number, 0 to 6. These are offsets from today. If you don't include this number the report is for today's weather. Use 1 for tomorrow, etc.


Overview of Ready Commands

The following is a list of commands and their general usage. Request a list of the available commands by sending "help list" to Ready, and then "help command" to get the format of a command, right from within READYChat.

Most of the commands listed below are provided by plugins which extend the vocabulary of Ready and enable it to perform many fun and useful tasks.

8ball

8ball yes/no question... - Ask the Magic 8-Ball for its prediction.

The classic Magic 8-Ball. Ask it a yes/no question and enjoy the hilarity of its responses.

The 8ball plugin.

about

about - Get information about READYChat.

Fetches information about READYChat.

calc

calc expression... - Perform calculations with Expression Evaluator.

This calculator evaluates mathematical equations and replies with the result. It is based on the NPM package expr-eval. See the release page for a list of constants, functions and operators that it can use.

The calc plugin.

chatgpt

chatgpt query... - Get concise instant answers from ChatGPT."

Get access to concise instant-answers from ChatGPT. Your question may be up to 160 characters and its responses are limited to the same. There is no context maintained between queries. But it is nonetheless an incredibly useful tool. For example, if you want to look up a stock price with the stocks command but don't know the symbol for the company, ask ChatGPT for the symbol.

The ChatGPT plugin.

Of course, beware. ChatGPT is not always right. In this funny example, ChatGPT does not yet realize that it can be accessed from a Commodore 64.

config

config email hide|show - Configure your email address visibility.

You can choose to hide your email in the response to whoami and whois, and also prevent your email address from matching you in a search request.

convert

convert [measures|units measure|# unit to unit [precision]] - Convert between units.

The unit conversion command can be used with many different types of units. Start by sending it the measures command. It replies with a list of measures, like speed, volume, etc. Next, ask for units it supports for that measure. Once you know the units you can use, you can ask it for something like: convert 10 m to in

You can optionally provide a precision, this is the number of decimal places to which it will round the result.

currency

currency amount from to - Convert amount between currencies.

Currency conversions are up-to-date, based on the frankfurter.app API. Enter the amount followed by the from currency code and then the to currency code.

The currency plugin.

date

date [timezone] - Get current date and time for any standard timezone code. i.e., America/Toronto

The date command will return the current date and time for any timezone code you provide. These are in the standard region/city format. For example America/Toronto or Asia/Tokyo.

The date plugin.

define

define word [#] - Get the definition of a word from WordNet, optionally request Nth definition.

The handy dictionary is based on the WordNet dictionary database. You supply a word you want to look up, and it gives you the first defintion by default. You can provide a number to request further definitions. Request a number that's clearly out of range, like 99, and it will tell you how many definitions it has available.

The define plugin.

fact

fact - Fetch a random fact from "uselessfacts."

For the trivia nerds, this command returns random interesting facts about the world, history, and more. It's like an Uncle John's Reader built into READYChat.

The fact plugin.

help

help [list|command] - Get a list of available commands or get help about a specific command.

If you just type help, you'll get help about how to ask for help. Use "help list" to get a list of commands. The first few are specifically for how to use READYChat to find and message other users, the rest are in alphabetical order.

Once you know the name of a command, try "help command" to get information about how to use it and what it does for you.

The help plugin.

insult

insult - Get randomly insulted. (NSFW.)

Just for fun, send the command insult and get back a funny insult. These might be a bit racey, and some of them are definitely not safe for work. You've been warned.

joke

joke - Get a random joke.

Jokes are also just for fun, but in general these will be safer for work than insults. There are a lot of groaners and dad jokes in here.

The joke and insult plugins.

knock

knock - Get a random knock-knock joke.

When jokes and insults are not enough, you can get even more groaners with the knock command which gives you random knock-knock jokes.

latlong

latlong city[,countrycode[-state]] [DD|DDM|DMS|HDD|UTM] - Get the coordinates of a city, in different formats

Request the global coordinates of a city. The city database contains the coordinates of tens of thousands of cities from around the world. To request a specific city of the same name as another one, you can optionally provide a country code. And for even more precision, you can provide a state code following the country code by a dash. For example, Kingston,CA finds Kingston, Ontario, Canada, rather than Kingston, Jamaica. Austin,US finds Austin, United States in Arkansas, but Austin,US-TX finds Austin, United States in Texas.

You can optionally specify a format. The default is Decimal Degrees (DD).

  • DD - Decimal Degrees: 45.421500, -75.699300
  • DDM - Degrees Decimal Minutes: 45deg25.290' N, 75deg41.958' W
  • DMS - Degrees Minutes Seconds: 45deg25'17.40" N, 75deg41'57.48" W
  • HDD - Hemisphere Decimal Degrees: N45.421500deg, W75.699300deg
  • UTM - Universal Transverse Mercator: 18T 446300.3mE 5032475.1mN

moon

moon [yyyy-mm-dd] - Get information about the moon phase and more, optionally by date.

The moon command gives you information about the moon, its current phase, its percentage of illumination, how many days until next full, how many days until next new, what sign of the zodiac it is currently in, and its current distance from earth. By default it gives this information for today, but you can optionally supply a date in YYYY-MM-DD format for any date past or future.

The moon plugin.

movie

movie info|plot|cast|awards title - Get information or a plot description of movies by title.

The movie commands gives you access to information about movies, looking them up by title. Info gets you the year, rating, genre, director and IMDb score. You can also request a short plot summary, a list of main actors, or a summary of the awards it won.

msg

msg handle message... - Send a message or start a conversation with a user by their handle.

msg is a built-in command. It is used for sending a message to any READYChat user by their handle. If they are not currently on your user list, they are put on the list and moved to the very top, because they are suddenly the most recent person with whom you've chatted.

nslookup

nslookup domain - Fetch the IP address for any domain name.

Lookup the IPv4 address of any internet domain name.

password

password [len] - Generate a random password. Default length is 12 characters.

The password command is for generating a crytographically random string from a pool of letters, digits and symbols. You can specify the length; the default is 12.

The password plugin.

roll

roll die [die] ... - Get D&D dice results. 2d6 4d12 etc.

A Dungeons-and-Dragon's-style dice roller. You ask for a series of different dice and it randomly rolls them and gives you the results in a list for each requested die. 2d6 means 2 dice of 6 sides each. 1d20 means 1 die with 20 sides.

search

search name - Search for a READYChat user by case-insensitive partial name match.

Search is a built-in command. Use it to search for READYChat users. The search term you provide can be a case-insensitive partial match for the full name, email address or handle. It only returns 5 matches, and informs you of how many more matches there are. So, if you search for "a" it returns just 5 people who have an "a" anywhere in their name, email or handle.

stocks

stocks symbol - Fetch the current stock price and market cap by symbol.

Get the most up-to-date stock price of any publicly traded company, as well as its market capitalization, by supplying the stock symbol. If you don't know that AAPL is the symbol for Apple, or META is the symbol for Facebook, you can ask ChatGPT for that sort of information.

Stock symbols are case-insensitive.

The stocks plugin.

synonyms

synonyms word [n|v|adj] [#] - Search for synonyms for a word, optionally by type.

Get a list of synonyms for any word. By default you'll get synonyms from any category of word, noun, verb or adjective. Or you can limit the reesults to just one of those categories. For example, "fall v" will get words like tumble, drop, collapse, but "fall n" will get autumn, and other nouns. By default you will get up to 3 results. You can supply a number to get up to 10 results.

timer

timer [20s|2m|1h] [label] - Set a timer. I'll send you a message when the time is up.

Set a timer. You can perform other chat tasks, you can even switch to a different app bank, as long as you switch back and READYChat is in the running app bank when the timer expires. If you close READYChat, though, the active timers are cancelled.

You can set multiple timers. Each timer can be given a length of time expressed in seconds, minutes or hours (but not units mixed.) If you want 2.5 minutes, use 150s. Each timer can optionally be assigned a label. When the timer expires, Ready sends you a message to say, Time's Up! The response includes the label (if one was provided) and the length of time that was set for this timer. Turn up your Commodore 64's volume, because READYChat plays an alarm sound. The sound continues until you press the STOP key, or close READYChat.

today

today [years|year ????] - Read about what happened today in years past.

Get information about what happened on this day in the past. If there is more than one year on which something important happened on this day, it will pick a year at random. You can also ask for a list of years, with "today years". From that you can request any particular year, like this: "today year 1995"

The today plugin.

topstory

topstory [#[,#...]|search string] - Read the top news headline, or get up to 5 by number, or search headlines for word sequence.

Each time you open READYChat, Ready greets you and gives you the most recent top news headline. You can request a news headline any time with topstory. You can search all the headlines for any word and it returns a list of headlines by numeric index. You can request any specific headline by number. You can also request up to 5 stories at a time by providing a comma-delimited list of numeric indexes.

weather

weather city[,countrycode[-state]]|lat,long [0-6] - Fetch the weather in any city or by GPS coordinate.

Request a weather report by city or by lat,long coordinates. The city database contains the coordinates of tens of thousands of cities from around the world. To request a specific city of the same name as another one, you can optionally provide a country code. And for even more precision, you can provide a state code following the country code by a dash. For example, Kingston,CA finds Kingston, Ontario, Canada, rather than Kingston, Jamaica. Austin,US finds Austin, United States in Arkansas, but Austin,US-TX finds Austin, United States in Texas.

If your city or town is too small to be in the database, you can ask ChatGPT for the lat,long coords and use those instead. By default you get the weather report for today, but you can optionally provide a number of days, 0 through 6 from today. It gives you the high and the low temperature for the day, the percentage chance of rain, the quantity of rain in millimeters, plus the average wind speed and direction.

If you want to be sure that the city/country/state codes you're entering are for your city, you can confirm by asking for the coordinates of that city with the latlong commmand.

The weather plugin.

whoami

whoami - Get information about yourself, the user currently signed in.

whoami is a lot like whois, except instead of looking up a user by their handle, it gives you information about yourself, whatever user is currently signed in. You can use this to see what information other users will see about you if they perform a whois.

whois

whois handle - Get information about a READYChat user by their handle.

Use whois to get information about any user by their handle. If someone messages you, their handle will appear at the top of your user list. If you don't recognize the handle, pop over to Ready and do a whois on them. You get back their full name, email address, and their home country.

wotd

wotd - Read about the word of the day from WordNik.

For the logophiles among us, you can use "wotd" to get and read about the word of the day. The word changes every day, includes fascinating history and trivia, and is powered by the WordNik API.

zodiac

zodiac info|sign [today|yesterday] - Read your horoscope, defaults to today.

Zodiac gives you a detailed horoscope for any sign. By default it gives you the results for today, but you can also request the results from yesterday. If you can't remember the signs, how to spell them or what date ranges they cover, you can ask for "zodiac info" and it'll give you all the signs and the date when the sun enters that sign.


How to write a plugin

One of the most powerful features of READYChat is its extensible lexicon, thanks to its support for plugins. OpCoders Inc has already provided a core set of 25 plugins that provide instant access to weather, stocks, news, and instant-answers from ChatGPT. Writing new plugins is incredibly easy.

Write and submit your own plugins

If you have an idea for a plugin, give it whirl.

  • Submit your plugins (or plugin ideas) through the developer or general channels on the C64 OS Community Support Discord server.
  • We'll review them to make sure they're secure, and work as described, and then add them to the READYChat server so that every C64 OS user can benefit from them.

Every plugin is a stand-alone executable script in the plugins directory. The name of the script file is the command you send to Ready. This must be just one word. The complete string following the single-word command (script name) is sent to the script via standard in when the script is executed as a child process.

The plugin scripts are typically written using NodeJS, although this is not strictly necessary. Plugins may also be written in PHP, or Python, etc. The script is responsible for parsing the string of input.

To provide a response, the plugin script simply prints to standard out. Output must be limited to 160 characters per line. Multiple lines can be returned for long content responses, but the output should be kept as concise as possible and should not exceed 5 or 6 lines. Be mindful that users may be accessing READYChat at speeds as low as 1200 or 2400 bps.

The following is an example of the source code to the "calc" plugin.

In order for this plugin to work, it was necessary for OpCoders Inc. to install the expr-eval NPM package. If your plugin requires custom packages not yet installed, we will review that to make sure there are not any security or performance issues with that package.

You can see that lines 6 to 16 read in all the data from standard in. The resulting string is then passed to the expr-eval's parser, and the result is printed to standard out.

Here is another example, this one is the "moon" plugin.

This one is interesting, because it doesn't depend on any external packages or APIs, but it does perform a bunch of math which is trivial for the server but onerous for programming in 6502 assembly.

You can also see from this plugin an example of how input parameters can be parsed out using regex, or other string analysis techniques.

User profile

The calling user's profile is provided to the plugin as a JSON-encoded structure in an environment variable. This can be useful for providing meaningful defaults for the user. For example, the weather plugin returns temperature in Fahrenheit if the country is the United States, instead of Celsius. The date plugin uses the user's own timezone as the default.

Accessing the user profile is very easy. If the plugin is written in NodeJS it can be accessed by including line 3, in the example below. This line JSON parses the environment variable READYUSER.

The READYUSER profile has the following structure:

{
	name:      "John Doe",
	email:     "jdoe3@gmail.com",
	hideEmail: 0,
	country:   "Canada",
	timezone:  "America/Vancouver",
	handle:    "JDoe"
}

Conclusion

We hope you love using READYChat! We're excited to bring all of this great functionality to the Commodore 64, and to give you the ability to send instant messages to other C64 OS users.

The list of features and the information that READYChat is able to provide continues to expand.

  1. There has to be enough free memory for the Application and READYChat to both be open at the same time.
  2. If you are using your own CNP server, it has to be version 2.0 or greater, with support for the CNP authentication protocol. If you use the CNP server provided by OpCoders Inc. you don't have to worry about this, it'll just work.


Last modified: Oct 30, 2025