TED: An Encrypted Text Editor for Oric
TED: An Encrypted Text Editor for Oric
Hi!
I am pleased to announce the release of “TED”, a text editor for the Oric Atmos capable of encrypting text using a ChaCha20 algorithm (see my previous post on this topic). This algorithm is particularly well-suited for low-computation platforms, such as IoT devices.
I wanted to develop software that could still be useful in 2025 for our beloved old machine. With this program and a real Oric, you can store sensitive information on floppy disks using only 1980s-era hardware, which is inherently secure and free from modern tampering risks.
Below, you will find the manual for TED (also available by typing ted 'readme' in Sedoric).
GitHub repo: https://github.com/jacqu/ted
Enjoy!
Jacques
I am pleased to announce the release of “TED”, a text editor for the Oric Atmos capable of encrypting text using a ChaCha20 algorithm (see my previous post on this topic). This algorithm is particularly well-suited for low-computation platforms, such as IoT devices.
I wanted to develop software that could still be useful in 2025 for our beloved old machine. With this program and a real Oric, you can store sensitive information on floppy disks using only 1980s-era hardware, which is inherently secure and free from modern tampering risks.
Below, you will find the manual for TED (also available by typing ted 'readme' in Sedoric).
GitHub repo: https://github.com/jacqu/ted
Enjoy!
Jacques
Last edited by jacqu on Fri Jan 31, 2025 11:31 am, edited 3 times in total.
Old French Oric Atmos Nerd
TED: Manual
TED: ENCRYPTED TEXT EDITOR FOR THE 6502
INTRODUCTION
“TED” is a lightweight text editor designed for computers powered by the 6502 CPU. Despite its simplicity, it features advanced cryptographic capabilities, utilizing an assembly-optimized cipher capable of processing data at nearly 1 kByte per second.
ORIC IMPLEMENTATION
“TED” is compatible with the Oric Atmos platform equipped with a Microdisc running the Sedoric operating system. The Oric’s 48kB of RAM, allow for allocating 250 lines of 40 columns to user-entered text.
The software fully supports the Oric MCP-40 color printer. Text rendered in white, red, green, and blue on-screen, corresponds to print colors of black, red, green, and blue on the printer. Inverted fonts are highlighted through an overlay printing technique, providing enhanced emphasis for selected text.
FILE HANDLING
Text can be saved to disk either encrypted or in plain text, depending on whether a password is entered or not. If an incorrect password is provided, an error message is displayed, prompting the user to try again.
Each save operation generates a .BAK file, ensuring the previous version can be recovered in case of issues. The size of saved files is approximately proportional to the length of the text. Filenames can be up to 9 characters long, with the .TED extension automatically appended.
When specifying filenames on the command line, they should be entered in lowercase and enclosed in single quotes. The closing quote is optional, and no space is required between "TED" and the opening quote.
In the event of an error during saving, a message is displayed on the status line detailing the cause of the issue. The program then automatically returns to edit mode, allowing the user to address the problem and attempt saving again without losing any data.
ENCRYPTION
TED implements an advanced encryption algorithm that utilizes a 256-bit key, allowing passwords to be up to 32 characters long. If no password is provided, the editor saves the content in plain text on the disk. For enhanced security, each save operation encrypts the data uniquely, using a randomly generated nonce to ensure variability. If a wrong password is given, the program prints an eror message and returns to the BASIC prompt.
EDITION
TED offers an intuitive, distraction-free editing experience. It allows text insertion at any position within the document, with automatic text wrapping set to a width of 40 columns. This feature ensures smooth typing, enabling users to focus on the content rather than screen formatting. A fast screen update routine provides seamless text scrolling, while convenient shortcuts make it easy to quickly navigate to the beginning or end of the document.
Status line
The status line provides key information, starting with the filename. If the file has been edited, an asterisk (*) is appended to the filename as an indicator. A helpful reminder of the shortcut to display the help screen is also included: pressing [CTRL]-G brings up a summary of all available shortcuts. Next, the status line displays the percentage of memory used by the text. If there is no space left for a new line, a “ping” sound alerts the user. Finally, the current character mode is indicated at the end of the status line: “NORML” denotes normal color mode, while “INVSE” indicates that the inverse bit of the character is active. This mode can be toggle with [CTRL]-O.
Navigation
The cursor represents the current insertion point and can be navigated using the arrow keys: one line up or down, and one character left or right. For faster navigation, an entire page can be scrolled up or down using [CTRL]-F and [CTRL]-B, respectively.
Shortcuts
Disk operation:
[CTRL]-S: Saves the file to disk. If a previous version of the file exists, it is renamed with a .BAK extension. For encrypted files, the process is as follows:
1. The text is encrypted in RAM.
2. The encrypted text is saved to disk.
3. The text is decrypted in RAM.
Clipboard Management:
[CTRL]-C: Copies the current line to the clipboard.
[CTRL]-X: Cuts the current line to the clipboard.
[CTRL]-V: Pastes the clipboard content at the cursor position.
Color Attribute Handling:
On the Oric Atmos, attribute characters can be inserted to control video chip settings. These characters appear as blanks on the screen but act as control signals for color changes, valid for the current line only. The following shortcuts allow changes to ink (foreground) and paper (background) colors:
Ink Colors:
[CTRL]-Q: White ink
[CTRL]-W: Red ink
[CTRL]-E: Green ink
[CTRL]-R: Blue ink
[CTRL]-T: Black ink
Paper Colors:
[CTRL]-Y: Black paper
[CTRL]-U: Red paper
[CTRL]-A: Yellow paper
[CTRL]-D: Blue paper
PRINTING
[CTRL]-P: Opens the print dialog, prompting the user to specify whether an Oric MCP-40 color plotter is being used.
* Abort Option: If you choose to abort, the printing process is canceled.
* Generic printer: If you select “No,” generic ASCII codes are sent to the printer. Inverted characters are printed twice, creating a bold effect.
* MCP-40 Plotter Printing: If you select “Yes,” the ink color attributes (red, blue, and green) are used to switch the corresponding pens on the plotter, enabling multicolor printing.
Long pressing any key aborts printing.
EXIT
[ESC]: Exits the program. If there are unsaved changes, the program prompts the user to save the file:
* Choosing "Yes" saves the changes before exiting.
* Choosing "No" discards all unsaved changes.
After exiting, the program automatically reboots the disk operating system.
THANKS
Special thanks to the fantastic Oric community for all its contributions, without which this project would never have come to life.
INTRODUCTION
“TED” is a lightweight text editor designed for computers powered by the 6502 CPU. Despite its simplicity, it features advanced cryptographic capabilities, utilizing an assembly-optimized cipher capable of processing data at nearly 1 kByte per second.
ORIC IMPLEMENTATION
“TED” is compatible with the Oric Atmos platform equipped with a Microdisc running the Sedoric operating system. The Oric’s 48kB of RAM, allow for allocating 250 lines of 40 columns to user-entered text.
The software fully supports the Oric MCP-40 color printer. Text rendered in white, red, green, and blue on-screen, corresponds to print colors of black, red, green, and blue on the printer. Inverted fonts are highlighted through an overlay printing technique, providing enhanced emphasis for selected text.
FILE HANDLING
Text can be saved to disk either encrypted or in plain text, depending on whether a password is entered or not. If an incorrect password is provided, an error message is displayed, prompting the user to try again.
Each save operation generates a .BAK file, ensuring the previous version can be recovered in case of issues. The size of saved files is approximately proportional to the length of the text. Filenames can be up to 9 characters long, with the .TED extension automatically appended.
When specifying filenames on the command line, they should be entered in lowercase and enclosed in single quotes. The closing quote is optional, and no space is required between "TED" and the opening quote.
In the event of an error during saving, a message is displayed on the status line detailing the cause of the issue. The program then automatically returns to edit mode, allowing the user to address the problem and attempt saving again without losing any data.
ENCRYPTION
TED implements an advanced encryption algorithm that utilizes a 256-bit key, allowing passwords to be up to 32 characters long. If no password is provided, the editor saves the content in plain text on the disk. For enhanced security, each save operation encrypts the data uniquely, using a randomly generated nonce to ensure variability. If a wrong password is given, the program prints an eror message and returns to the BASIC prompt.
EDITION
TED offers an intuitive, distraction-free editing experience. It allows text insertion at any position within the document, with automatic text wrapping set to a width of 40 columns. This feature ensures smooth typing, enabling users to focus on the content rather than screen formatting. A fast screen update routine provides seamless text scrolling, while convenient shortcuts make it easy to quickly navigate to the beginning or end of the document.
Status line
The status line provides key information, starting with the filename. If the file has been edited, an asterisk (*) is appended to the filename as an indicator. A helpful reminder of the shortcut to display the help screen is also included: pressing [CTRL]-G brings up a summary of all available shortcuts. Next, the status line displays the percentage of memory used by the text. If there is no space left for a new line, a “ping” sound alerts the user. Finally, the current character mode is indicated at the end of the status line: “NORML” denotes normal color mode, while “INVSE” indicates that the inverse bit of the character is active. This mode can be toggle with [CTRL]-O.
Navigation
The cursor represents the current insertion point and can be navigated using the arrow keys: one line up or down, and one character left or right. For faster navigation, an entire page can be scrolled up or down using [CTRL]-F and [CTRL]-B, respectively.
Shortcuts
Disk operation:
[CTRL]-S: Saves the file to disk. If a previous version of the file exists, it is renamed with a .BAK extension. For encrypted files, the process is as follows:
1. The text is encrypted in RAM.
2. The encrypted text is saved to disk.
3. The text is decrypted in RAM.
Clipboard Management:
[CTRL]-C: Copies the current line to the clipboard.
[CTRL]-X: Cuts the current line to the clipboard.
[CTRL]-V: Pastes the clipboard content at the cursor position.
Color Attribute Handling:
On the Oric Atmos, attribute characters can be inserted to control video chip settings. These characters appear as blanks on the screen but act as control signals for color changes, valid for the current line only. The following shortcuts allow changes to ink (foreground) and paper (background) colors:
Ink Colors:
[CTRL]-Q: White ink
[CTRL]-W: Red ink
[CTRL]-E: Green ink
[CTRL]-R: Blue ink
[CTRL]-T: Black ink
Paper Colors:
[CTRL]-Y: Black paper
[CTRL]-U: Red paper
[CTRL]-A: Yellow paper
[CTRL]-D: Blue paper
PRINTING
[CTRL]-P: Opens the print dialog, prompting the user to specify whether an Oric MCP-40 color plotter is being used.
* Abort Option: If you choose to abort, the printing process is canceled.
* Generic printer: If you select “No,” generic ASCII codes are sent to the printer. Inverted characters are printed twice, creating a bold effect.
* MCP-40 Plotter Printing: If you select “Yes,” the ink color attributes (red, blue, and green) are used to switch the corresponding pens on the plotter, enabling multicolor printing.
Long pressing any key aborts printing.
EXIT
[ESC]: Exits the program. If there are unsaved changes, the program prompts the user to save the file:
* Choosing "Yes" saves the changes before exiting.
* Choosing "No" discards all unsaved changes.
After exiting, the program automatically reboots the disk operating system.
THANKS
Special thanks to the fantastic Oric community for all its contributions, without which this project would never have come to life.
Old French Oric Atmos Nerd
- xahmol
- Squad Leader
- Posts: 611
- Joined: Sun Jun 28, 2020 7:32 pm
- Location: Utrecht, The Netherlands
- Contact:
Re: TED: An Encrypted Text Editor for Oric
Nice!
(Although I immediately had to think about the Commodore TED chip for the C16 and Plus/4……)
(Although I immediately had to think about the Commodore TED chip for the C16 and Plus/4……)
TED: GitHub repo
Here is the link for TED's GitHub repository: https://github.com/jacqu/ted/
Note that I use a modified version of iss's lib-basic:
https://github.com/iss000/oricOpenLibra ... /lib-basic
I called it liboric.
It handles Sedoric errors without returning to the basic prompt. For example, it allows to check if a file is present on the disk, or to handle read errors.
You can use this lib (files liboric.h, liboric.s and liboric_c.c on the repo) independently.
Note that I use a modified version of iss's lib-basic:
https://github.com/iss000/oricOpenLibra ... /lib-basic
I called it liboric.
It handles Sedoric errors without returning to the basic prompt. For example, it allows to check if a file is present on the disk, or to handle read errors.
You can use this lib (files liboric.h, liboric.s and liboric_c.c on the repo) independently.
Old French Oric Atmos Nerd
- xahmol
- Squad Leader
- Posts: 611
- Joined: Sun Jun 28, 2020 7:32 pm
- Location: Utrecht, The Netherlands
- Contact:
Re: TED: GitHub repo
Nice!
Haha, so you do this only when I just am rewriting my Oric Screen Editor project to use LOCI native storage, so not needing anything SEDORIC anymore.
Indeed, the present version of Oric Screen Editor has no error handling whatsoever. Which is one of its bigger 'known issues'.
Re: TED: GitHub repo
With the modified lib, it should be pretty easy to fix this « known issue ». Probably just a matter of changing a few function calls and the Makefile of course.xahmol wrote: ↑Sun Jan 26, 2025 4:19 pmNice!
Haha, so you do this only when I just am rewriting my Oric Screen Editor project to use LOCI native storage, so not needing anything SEDORIC anymore.
Indeed, the present version of Oric Screen Editor has no error handling whatsoever. Which is one of its bigger 'known issues'.
Old French Oric Atmos Nerd
- ibisum
- Wing Commander
- Posts: 1918
- Joined: Fri Apr 03, 2009 8:56 am
- Location: Vienna, Austria
- Contact:
Re: TED: An Encrypted Text Editor for Oric
Folks, if you have custom toolchains you want to use, please learn to use ?= in your Makefile.
?= means, "set this VAR to that value if it isn't aready set", and its really just a minor thing, but TED's Makefile could use a light dusting of that.
Using ?= means that, if I check out your repo and have my own paths to things, I can easily override them without modifying your Makefile. [1]
e.g.
$ CC=/my/custom/cc65/bin/cc65 make
.. or
$ cat env.sh && . env.sh && make
export CC65=/my/custom/cc65/builds/2.16/bin/cc65
export CC65_HOME=$(readlink -f `brew --prefix cc65`)
.. and so on ..
In the case of the second example, using an env.sh (which can be .gitignore'd), means custom paths don't get shared to the repo, also...
I dare not make a PR out of it, lest I screw up the formatting (lol), but here is an example fix of TED's Makefile:
This simple change, means no tweaks necessary for other devs, to do a build. Its perfectly reasonable to have local toolchains (and not use package-manager provided tooling), but its also perfectly reasonable to have package-manager tooling, which can over-ride local toolchains, on the same system.
BTW, I'm bringing it up in TED but it happens in other Oric projects too...
[1] - This leads to pull requests.
?= means, "set this VAR to that value if it isn't aready set", and its really just a minor thing, but TED's Makefile could use a light dusting of that.
Using ?= means that, if I check out your repo and have my own paths to things, I can easily override them without modifying your Makefile. [1]
e.g.
$ CC=/my/custom/cc65/bin/cc65 make
.. or
$ cat env.sh && . env.sh && make
export CC65=/my/custom/cc65/builds/2.16/bin/cc65
export CC65_HOME=$(readlink -f `brew --prefix cc65`)
.. and so on ..
In the case of the second example, using an env.sh (which can be .gitignore'd), means custom paths don't get shared to the repo, also...
I dare not make a PR out of it, lest I screw up the formatting (lol), but here is an example fix of TED's Makefile:
Code: Select all
CC65_HOME ?= /Users/jacques/Personnel/Retro/Oric/CC65/cc65
TOOLS_HOME ?= /Users/jacques/Personnel/Retro/Oric/osdk/osdk/main
HXC_HOME ?= /Users/jacques/Personnel/Retro/Oric/Microdisc/HxCFloppyEmulator
GIT_VER = "$(shell git log -1 --date=format:'%Y.%m.%d' --format='%ad')"
CC ?= $(CC65_HOME)/bin/cc65
CA ?= $(CC65_HOME)/bin/ca65
LD ?= $(CC65_HOME)/bin/ld65
CFLAGS = -DTED_VERSION=\"$(GIT_VER)\" -D__ATMOS__ --standard cc65 -DSTART_ADDRESS=$(START) -Oirs --codesize 500 -T -g -t atmos
CAFLAGS = -g
LDFLAGS = -C $(CC65_HOME)/cfg/atmosd.cfg -L$(CC65_HOME)/lib $(CC65_HOME)/lib/atmos.lib -D__START_ADDRESS__=$(START) -Ln $(SYMBOLS)
RM = /bin/rm -f
HEADER ?= $(TOOLS_HOME)/header/header
TAP2DSK ?= $(TOOLS_HOME)/tap2dsk/tap2dsk
OLD2MFM ?= $(TOOLS_HOME)/old2mfm/old2mfm
HXCFE ?= $(HXC_HOME)/build/hxcfe
EMULATE ?= /usr/bin/open -n /Applications/Clock\ Signal.app
BTW, I'm bringing it up in TED but it happens in other Oric projects too...
[1] - This leads to pull requests.
- xahmol
- Squad Leader
- Posts: 611
- Joined: Sun Jun 28, 2020 7:32 pm
- Location: Utrecht, The Netherlands
- Contact:
Re: TED: GitHub repo
Agree, was not saying it was difficult

Just have to prioritize in projects, and improving the 'old' version is not my highest prio compared to making the 'new' LOCI version.
And @ibisum, you already convinced me. It is already slightly higher on my prio list.
Problem is I do have a family and a paid job, so basically have the weekends and Wednesdays (I work four days of 9 hour, continued that even after it is not really needed for the kids anymore....) only to code, and in really busy times or other social/family prios not even that.
Re: TED: An Encrypted Text Editor for Oric
Thanks for the tip! I’m not a professional developer, I’m an academic and I mainly coded embedded software in C for scientific robotics experiments. I still have a lot to learn and definitely don’t fully master all the Autoconf stuff. I will make the changes asap.ibisum wrote: ↑Sun Jan 26, 2025 4:41 pm Folks, if you have custom toolchains you want to use, please learn to use ?= in your Makefile.
?= means, "set this VAR to that value if it isn't aready set", and its really just a minor thing, but TED's Makefile could use a light dusting of that.
Using ?= means that, if I check out your repo and have my own paths to things, I can easily override them without modifying your Makefile. [1]
e.g.
$ CC=/my/custom/cc65/bin/cc65 make
.. or
$ cat env.sh && . env.sh && make
export CC65=/my/custom/cc65/builds/2.16/bin/cc65
export CC65_HOME=$(readlink -f `brew --prefix cc65`)
.. and so on ..
In the case of the second example, using an env.sh (which can be .gitignore'd), means custom paths don't get shared to the repo, also...
I dare not make a PR out of it, lest I screw up the formatting (lol), but here is an example fix of TED's Makefile:
This simple change, means no tweaks necessary for other devs, to do a build. Its perfectly reasonable to have local toolchains (and not use package-manager provided tooling), but its also perfectly reasonable to have package-manager tooling, which can over-ride local toolchains, on the same system.Code: Select all
CC65_HOME ?= /Users/jacques/Personnel/Retro/Oric/CC65/cc65 TOOLS_HOME ?= /Users/jacques/Personnel/Retro/Oric/osdk/osdk/main HXC_HOME ?= /Users/jacques/Personnel/Retro/Oric/Microdisc/HxCFloppyEmulator GIT_VER = "$(shell git log -1 --date=format:'%Y.%m.%d' --format='%ad')" CC ?= $(CC65_HOME)/bin/cc65 CA ?= $(CC65_HOME)/bin/ca65 LD ?= $(CC65_HOME)/bin/ld65 CFLAGS = -DTED_VERSION=\"$(GIT_VER)\" -D__ATMOS__ --standard cc65 -DSTART_ADDRESS=$(START) -Oirs --codesize 500 -T -g -t atmos CAFLAGS = -g LDFLAGS = -C $(CC65_HOME)/cfg/atmosd.cfg -L$(CC65_HOME)/lib $(CC65_HOME)/lib/atmos.lib -D__START_ADDRESS__=$(START) -Ln $(SYMBOLS) RM = /bin/rm -f HEADER ?= $(TOOLS_HOME)/header/header TAP2DSK ?= $(TOOLS_HOME)/tap2dsk/tap2dsk OLD2MFM ?= $(TOOLS_HOME)/old2mfm/old2mfm HXCFE ?= $(HXC_HOME)/build/hxcfe EMULATE ?= /usr/bin/open -n /Applications/Clock\ Signal.app
BTW, I'm bringing it up in TED but it happens in other Oric projects too...
[1] - This leads to pull requests.
Old French Oric Atmos Nerd
Re: TED: An Encrypted Text Editor for Oric
About Makefile variables: passing values with command line has priority too over ':=' and '=' in Makefile,
so '?=' is not required but it will work too - its main purpose is to ensure that variable is always initialized.
Sample Makefile:
Default results:
Command line forced initialization:
Happy make-ing! 
so '?=' is not required but it will work too - its main purpose is to ensure that variable is always initialized.

Sample Makefile:
Code: Select all
A := 1
B = 2
C ?= 3
all:
echo "A=$(A)"
echo "B=$(B)"
echo "C=$(C)"
Code: Select all
$ make
echo "A=1"
A=1
echo "B=2"
B=2
echo "C=3"
C=3
Code: Select all
$ make A=5 B=6 C=7
echo "A=5"
A=5
echo "B=6"
B=6
echo "C=7"
C=7

Re: TED: An Encrypted Text Editor for Oric
Congratulations on the amazing work! 
I’ve always liked the idea of a fast text editor for ORIC, and what you’re doing looks very promising. I think it would be great if the editor supports tabs – this would make it especially suitable for writing ASM code. I know we can use spaces, but in my experience, that significantly increases the file size, which is not ideal.
Back in the day, I really liked a certain editor that loaded into additional memory, and I used it constantly. Unfortunately, it didn’t work with MIKRODISK.
Cheers, and keep up the great work – your project is truly inspiring!

I’ve always liked the idea of a fast text editor for ORIC, and what you’re doing looks very promising. I think it would be great if the editor supports tabs – this would make it especially suitable for writing ASM code. I know we can use spaces, but in my experience, that significantly increases the file size, which is not ideal.
Back in the day, I really liked a certain editor that loaded into additional memory, and I used it constantly. Unfortunately, it didn’t work with MIKRODISK.
Cheers, and keep up the great work – your project is truly inspiring!
Re: TED: An Encrypted Text Editor for Oric
Thank you, rax, for this kind feedback. I think adding “soft tabs” shouldn’t be too complicated. However, hard tabs are a different story. One wouldn’t imagine how difficult it can be to program something as basic as a text editor. I learned that the hard wayrax wrote: ↑Tue Jan 28, 2025 11:49 am Congratulations on the amazing work!
I’ve always liked the idea of a fast text editor for ORIC, and what you’re doing looks very promising. I think it would be great if the editor supports tabs – this would make it especially suitable for writing ASM code. I know we can use spaces, but in my experience, that significantly increases the file size, which is not ideal.
Back in the day, I really liked a certain editor that loaded into additional memory, and I used it constantly. Unfortunately, it didn’t work with MIKRODISK.
Cheers, and keep up the great work – your project is truly inspiring!

Old French Oric Atmos Nerd
Re: TED Has Now a Cool Screensaver
Nice one 
What's the music? That sounds like some remixed version of one of The Matrix tracks?

What's the music? That sounds like some remixed version of one of The Matrix tracks?
Re: TED Has Now a Cool Screensaver
Thanks Dbug! The music is from Artlist: https://artlist.io/royalty-free-music/song/oracle/69211
It’s indeed a remixed version of « The Oracle » from « The Matrix » soundtrack. Artlist provides some very good music to YouTubers at a correct price. And they give you a unlimited license to use the music, even after you stop your subscription.
Old French Oric Atmos Nerd