OS-9: Difference between revisions
m (specify that my flash command is for the Jr) |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 29: | Line 29: | ||
in case you want to push changes.) | in case you want to push changes.) | ||
There is a special Make target for re-flashing the | There is a special Make target for re-flashing the F256Jr or F256K, | ||
but first time you run this command, it should fail. | but first time you run this command, it should fail. | ||
Then you have to edit the `port=` line in `FoenixMgr/foenixmgr.ini` | Then you have to edit the `port=` line in `FoenixMgr/foenixmgr.ini` | ||
and run the command again (with the cable plugged in): | and run the command again (with the cable plugged in): | ||
make ANON=1 run-f256-flash | make ANON=1 run-f256-flash # Old command for F256Jr that works? | ||
or | |||
make ANON=1 run-f256jr-flash # TODO fix this | |||
or | |||
make ANON=1 run-f256k-flash # TODO fix this | |||
== Building FEU and OS-9 Level 1 from scratch == | == Building FEU and OS-9 Level 1 from scratch == | ||
Line 50: | Line 54: | ||
cd feu | cd feu | ||
make flash_f256k | make flash_f256k | ||
Then (this is in addition to make flash_f256jr or make flash_f256k): | |||
make flash_f0 | |||
Once the flash completes, restart the machine and FEU should come up. | Once the flash completes, restart the machine and FEU should come up. | ||
== Building OS-9 Level 2 == | == Building OS-9 Level 2 == | ||
To build OS-9 Level 2, run these commands: | To build OS-9 Level 2, run these commands (this assumes you have added the NITROS9DIR environment variable as above: export NITROS9DIR=$PWD from the top level nitros9 directory): | ||
cd ../../level2/f256 | cd ../../level2/f256 | ||
make dsk | make dsk |
Latest revision as of 05:01, 22 October 2024
Introduction[edit | edit source]
The FNX6809 combined with the F256 makes a great system for running OS-9/6809. OS-9 is a real-time, embedded operating system created by Microware Systems Corporation. While it was used in many areas of industry, home computer users know it best for its implementation on the Tandy Color Computer sold by Radio Shack
Today, a community effort has led to the creation of NitrOS-9, an open source version of the OS-9 operating system. Throughout this page, I'll refer to NitrOS-9 as OS-9.
A word about platforms[edit | edit source]
This page assumes you're running on Linux or macOS. If you're using Windows, these instructions don't apply, and someone will have to step up and write steps to develop on that platform.
Tooling[edit | edit source]
Cross-hosted development is the fastest way to develop for the F256. For this you need the following:
- lwtools - an assembler/linker package
- ToolShed - a set of tools for creating disk images
- NitrOS-9 - the NitrOS-9 operating system in source form
- FoenixMgr - tools to load code into RAM or Flash of the F256.
You can pull these down individually, or better yet, use @strickyak's great CoCo Shelf repository. It has a Makefile
which gets all of the above and puts it in a convenient location (note that you'll have to update your shell script of choice to include the locations of the binaries in the PATH
environment variable).
Here are the terminal commands for Linux and macOS to pull down all the required software:
cd git clone https://github.com/strickyak/coco-shelf.git cd coco-shelf export PATH="$PATH:$HOME/coco-shelf/bin" make ANON=1 nitros9/done FoenixMgr/done
(If you have a github account and your github ssh key is loaded, you can omit `ANON=1` on the last command, so it will check out git repositories using your github username, in case you want to push changes.)
There is a special Make target for re-flashing the F256Jr or F256K, but first time you run this command, it should fail. Then you have to edit the `port=` line in `FoenixMgr/foenixmgr.ini` and run the command again (with the cable plugged in):
make ANON=1 run-f256-flash # Old command for F256Jr that works?
or
make ANON=1 run-f256jr-flash # TODO fix this
or
make ANON=1 run-f256k-flash # TODO fix this
Building FEU and OS-9 Level 1 from scratch[edit | edit source]
FEU is the Foenix Executive Utility. It resides in flash and hosts a debugger and booters that can bring up operating systems like OS-9. FEU runs under OS-9 Level 1, so go ahead and build the entire operating system:
cd nitros9 export NITROS9DIR=$PWD cd level1/f256 make cd feu
Now you can flash the image into the F256. You must have a USB cable connected to the system from your computer. Note: if you're using a Mac, you won't be able to upload code into the F256 due to the driver manufacturer being so behind on updates. You can use a Linux VM and FoenixMgr tools in bridge mode on the Mac.
There are distinct builds of FEU for the F256 Jr and the F256K. Power up the machine, then select the correct command:
cd feu make flash_f256jr
or
cd feu make flash_f256k
Then (this is in addition to make flash_f256jr or make flash_f256k):
make flash_f0
Once the flash completes, restart the machine and FEU should come up.
Building OS-9 Level 2[edit | edit source]
To build OS-9 Level 2, run these commands (this assumes you have added the NITROS9DIR environment variable as above: export NITROS9DIR=$PWD from the top level nitros9 directory):
cd ../../level2/f256 make dsk
This produces the following disk images for the F256 Jr and the F256K:
NOS9_6809_L2_v030300_f256jr_dw.dsk NOS9_6809_L2_v030300_f256jr_sd.dsk NOS9_6809_L2_v030300_f256k_dw.dsk NOS9_6809_L2_v030300_f256k_sd.dsk
The dw disk images are for booting from DriveWire. The sd disk image are for booting from the SD card. You need to write the images onto an SD card, then insert the SD card into the F256 and restart.
Here's how to image the SD card.
Linux[edit | edit source]
On Linux, insert the SD card into your computer. Ttype lsblk
to find the correct device and replace sdx on the command line below with it:
dd if=NOS9_6809_L2_v030300_f256k_sd.dsk of=/dev/sdx
macOS[edit | edit source]
On macOS, insert the SD card into your Mac. A dialog will likely appear telling you that the disk you attached isn't readable. Click the "ignore" button, then type diskutil list external
to obtain the device name of the SD card and replace diskx on the command line below with it:
sudo dd if=NOS9_6809_L2_v030300_f256k_sd.dsk of=/dev/diskx
Once the command completes, type:
diskutil eject /dev/diskx
You can then safely remove the SD card.