My other site, Appleause, will be posting a multi-part review of the recently released 5-bay Drobo 5C:
Nested ternary operators in C
I started learning C programming back in the late 1980s. I was using the original Microware OS-9 C compiler on a Radio Shack Color Computer 3. It was a K&R compiler, meaning it was the original version of C that was before the ANSI-C standard. Back then, I recall reading a magazine article that claimed C would be “the language of the 80s” so I decided to see what the fuss was about.
A Commodore-using friend of mine, Mark, was helping me learn C. He loaned me a Pocket C reference guide. That, and the Microware documentation, was all I had for reference material. At the time, Mark had moved from his Commodore 64 to a powerful Amiga computer. He would dial in to my OS-9 BBS system and upload source code he wrote on his Amiga and then compile it on my machine to see if it ran there, too. It was amazing that this was even possible, considering how non-portable BASIC programs were from machine to machine.
It was a fun time.
Over the years, I learned much about C from books and friends and just general experimentation. One thing I learned was this weird conditional assignment operation:
a = (b == 10 ? 100 : 200);
It is basically doing this:
condition ? value_if_true : value_if_false
The value of a would be set to 100 if b was 10, otherwise it would be set to 200. It was a shortcut to writing the code like this:
if (b == 10)
{
a = 100;
}
else
{
a = 200
}
…or…
switch( b )
{
case 10:
a = 100;
break;
default:
a = 200;
break;
}
I have used this many times over the years, but don’t even know what it’s called. I asked a coworker, and they told me it was a “ternary operator“. Here is the Wikipedia entry on how it works in C:
https://en.wikipedia.org/wiki/Ternary_conditional_operator#C
It is a great shortcut for response strings. For instance, turning a boolean true/false result in to a string:
printf( "Status: %s\n", (status == true ? "Enabled" : "Disabled" );
This will print “Status: Enabled” if status==true, or “Status: Disabled” if status==false. What a neat shortcut.
Recently, I saw a nested use of this ternary operator. It never dawned on me that you could do this. It was something like this:
char *colorStr = (value == RED) ? "Red" : (value == BLUE) ? "Blue" : "Unknown";
It was using a second ternary operator for the “value_if_false” condition, allowing it to have three conditions rather than just two. I realized you could nest these in many different ways to create rather complex things… Though, readability would likely suffer. I think I’d just stick with simple if/then or switch/case things for anything more than two choices, but in this case it seemed simple enough.
I thought it was neat, and decided I’d share it here in this quick article.
360 photos in 2005
I bought my first digital camera in 1996. Back then, no one knew what the term “digital camera” meant, so I would have to call it a “computer camera” for people to understand it was some kind of camera you hooked up to a computer.
I originally wanted it so I could take and post photos during visits to Disneyland and Walt Disney World. Over the years, I created a massive archive of theme park photos at my site DisneyFans.com and Renaissance festival photos at AtTheFaire.com. Between my various photo archive websites and personal photos, I expect I have easily taken several hundred thousand digital photos.
And I still don’t claim to know a thing about photography. I just point and click.
I also got involved with video editing back in the early 1980s using my dad’s VHS editing equipment. I bought my first digital camcorder in 1999, as well as an iMac DV to do digital video editing.
Over the years, I have experimented with many types of photography and videography.
Around 2004, I purchased a NuView 3-D adapter for my camcorder, and records many hours of 3-D video at Disneyland and a local Renaissance Faire.
I was also interested in Apple’s QuickTime VR, where you could have a photo that enabled you to look all around (and sometimes up and down). Taking such photos was labor intensive (requiring taking dozens of photos in different angles and “stitching” them together with special, and expensive, computer software). But, there were some “one shot” solutions being offered that involved shooting against a circular mirror that would capture a panoramic image 360 degrees around.
Back around 2004-2005, I had a web page listing the various lens systems I had found:
The mirror system I wanted cost almost $1000, so I never bought one, but I did purchase a cheap knockoff called SurroundPhoto. It was a plastic lens with marginal optic quality, but at least I could afford it. I picked one up for around $130, and then picked up a Nikon Coolpix 5400 camera to use with it.
I took the 360 setup with me on a trip to Disneyland during a trip in December 2005. I wanted to take 360 photos of Main Street and create an update to an old 1996 virtual tour I created using normal photos.
I also took the camera to the Kansas City Renaissance Faire, and to the future construction site of the Des Moines Renaissance Faire.
Beyond posting a few sample photos, I never did anything else with the device.
I recently discovered the photos I took, and thought I’d share a look at what 360 photography was like back in 2005.
The camera shot upwards, pointing to a circular curved mirror. The raw photos looked like this:

Special software for Mac or Windows could then convert this circular image in to a panorama:

Special viewing software could then be used to pan around in this image, with a tiny bit of up and down.
Today, this type of image would be taken with a single 180 degree wide angle lens (like the Kodak PIXPRO SP360) or with multiple lenses like the RICOH THETA or Giroptic 360cam.
One of my winter projects is going to be to finally build this Disneyland 2005 panoramic tour. The picture quality is pretty horrible by today’s standards, so I present it mostly as a look back at the humble origins to 360/VR photography that is so common today that even Facebook natively supports it.
More to come…
2016 HBO Westerworld versus 1973 Westworld
I couldn’t figure out which of my existing sites would make sense for discussing the new HBO series, Westworld, so I decided to put it here. Because robots.
This article will contain updates of easter eggs and other references/links between the new HBO series and the 1973 original movie.
References to 1973 Westworld
- There is a reference about how you could tell the original robots were fake by a handshake. In the 1973 movie, the hands were the giveaway.
Much more to come… I wanted to post something now to get it in the search engines.
Apple’s 2016 AirPods get us one step closer to Roddenberry’s 1966 Star Trek.
Giroptic 360cam review by a Ricoh Theta owner
Updates:
- 2016/07/20 – more commentary.
[vrview img=”https://subethasoftware.com/wp-content/uploads/2016/07/360_0027.jpg” ]
I have been following 360-degree (sometimes called VR) images for many years. I even had an old webpage dedicated to one-shot VR style devices like the 0-360 mirror device.
The whole concept of a VR-style picture, where you could move the image and look in all different directions, was pioneered in 1994 by Apple QuickTime VR. In those days, you had to mount a camera on a tripod and take a bunch of photos then have them stitched together using special software. The viewer (QuickTime) then allowed the user to look left and right in the image.
As time progressed, other methods of doing these types of images were developed, including a process where you used a 150-degree fisheye lens and took only two photos and stitched them together. These spherical images allowed you to also look up and down.

The easiest solutions were one-shot devices that used a mirror. The camera would point up towards the mirror and create a donut-like image that could then be turned in to a VR image without any stitching. I always wanted the 0-360 device (about $600), but ended up with a much cheaper one called SurroundPhoto ($250). It produced poor quality images, but you get what you pay for.
In recent years, special multi-lens cameras have been introduced that are substantially cheaper than a camera+lens mirror system, and can offer greater field-of-view (up and down).
The Giroptic 360cam was the first such camera I became aware of when it was announced as a Kickstarter project in 2014. It a three-lens camera that can take a 360 VR-style picture with one shot.
I signed up to get one at the half-price early bird level, and at the time they hoped to ship before the end of the year. A year later, the camera was nowhere to be found. During this delay, other similar devices from established companies entered the market at a much lower price point, including:
- Kodak SP360 – I saw the one advertised at RadioShack for under $300. It used one lens with a huge fisheye pointing up, so it couldn’t get full VR images, but it could create a circular panorama. It could be mounted on a bike or helmet so it was more of a 360 GoPro type device.
- Ricoh Theta – This $350 two-camera came out with a first model, then the m15 improved model (which added video!) . It could instantly create full 360 images with one click. I had the m15 model.
- …and likely many others by now.
The Theta m15 and it was amazing. It was small enough to carry with you at all times, and as fast as a regular digital camera at taking the images. There was an iOS and Android app to download and post photos and videos from the device and share them immediately. The resolution was not great. Photos and video could be especially grainy in lower light situations.
In July 2016, the 360cam finally shipped to all of it’s original 2014 backers. Today I want to quickly review how the 360cam stacks up. To save you some time, I’ll present the conclusion first:
CONCLUSION:
This camera is way too slow to be useful. I believe if you are looking in to a device like this, you should probably get something like the Theta S (now available at Best Buy). It is substantial cheaper, easier to use, and much easier to carry around. If there is any advantage to the 360cam’s three-lens setup, I feel most users will not benefit from it.
DETAILS:
The 360cam is neat, and had I obtained it two years ago (before owning a Theta), I would have raved about it. But today, it feels like a dinosaur.
CONS:
- Heavy. The 360cam is much heavier than the candy-bar style Theta.
- Bulky. It is the shape of a smaller pear, and therefore cannot be carried in a pocket. After lugging mine around, I find I have to carry a fanny pack or other type of pouch with me because there’s just no convenient way to attach something like this to a belt. (The Theta came with a belt strap padded carrier.)
- SLOW! Oh my gosh. This thing is stone-age slow! When you turn it on, it takes about 25 seconds to boot up! This is ridiculous. Forget any concept of pulling out the 360cam and taking a quick photo. You have to plan ahead. Also, switching between video and photo mode is also frustratingly slow. My device spins a little animated mustache graphic for about 28 seconds while it goes from one mode to the next! (And right now, the display is showing me “E801” so I guess I have to go look up what went wrong. A quick look at their support site shows five codes, including the 801, that could mean “Something might be wrong with the camera last firmware update. You can restore your camera to factory settings, and try to update the camera again.” Great.) It also does not take pictures quickly. I have mine set for a 3 second countdown, and it will often display a little animated graphic for a few seconds before it even gets to the countdown! Useless!
- iOS iPad App only works in Portrait Mode. In this modern era, why are any iPad apps still not supporting device rotation? The VR images rotate just fine, but all the menus are set for portrait mode, which seems odd for a world where video and modern digital images are 16×9 landscape.
- More Seams. Three lenses means you will have three seams in your images, rather than just two with a two lens system. With the Theta, you just pointed it at your subject and hit the button. With this thing, you have to make sure one of the three lenses is pointing there to prevent a theme down it. Frustrating, but once you get used to this, it will become second-nature.
- No Bottom View. Since the base of the camera is large, there are no straight down views offered. Instead, a large circular graphic is placed there (just like old VR images had, to hide where the tripod was). The Theta has no problem with straight down.
- SHORT Battery Life! It seems with the unit on (WiFi and GPS enabled), you will be out of juice in 30-60 minutes just having it “on” and barely using it. I am watching the battery drain as I type this. I doubt I could ever fill up my 16GB memory card with only one (or maybe even two) batteries. I managed to completely drain the battery after recording a 9 minute video, and about 30 images. Do not expect to take this with you all day without stocking up on a ton of extra batteries.
- App Required to Change Basic Settings! Why do I need the use my phone and WiFi to change between one picture and self timer mode? By the time I toggle through 360cam menus to turn on WiFi, then connect to the camera. then run the app … I’ve forgotten what I was trying to take a picture of.
- Awful User Interface. The built in color display (big pixels) is neat, but the user interface of two buttons is very sluggish and cumbersome. At least it’s better than having to remember what button to hold down to change modes (like the display-less Theta does; they fixed that with the new S model). Once you learn how to navigate, it becomes easier, but it it still time consuming to dig through a half dozen or more displays to make a simple change.
- SLOW!!! Did I mention how slow this thing is? It’s ridiculous.
That said, let’s look at the PROS:
- Three lenses! This should mean better resolution for video and photos. But does it? I do not have a Theta S to compare side-by-side, so I will leave that to other reviewers. I will say the images from the 360cam look very nice and it handles low light better than my Theta m15 did.
- GPS. The 360cam has GPS built in so images can be geotagged without requiring linking to a phone. That’s nice (but it will drain the battery quicker).
- Removable battery. My Kickstarter package came with two batteries, so I can charge them up and swap them out during the day. Unfortunately, you have to pop open three connectors on each side and remove the base (and not lose the microSD card that seems to pop out easily). It’s a “stop walking to do this” operation.
- Nice iOS and Desktop Software. The app and desktop software are nice, and probably on-par with the Ricoh software. They allow remotely operating the camera, changing modes and limited sharing. You will need to link your 360cam to an iOS/Android device if you want to change modes (one photo, self timer, timelapse, etc.). That is frustrating but at least the modes are there.
- “Patch”. Many 360 image systems allow you to put a special graphic at the bottom of the image where the tripod would go. Giroptic refers to this as the “patch” (I’d call it a logo). You can customize your own logo, which is a nice touch. The last Ricoh I used had no such option.
- NO HUGE FINGERS! Since you can hold the 360cam by the base and take a picture using the self timer, you can voice the HUGE THUMBS problem all the Ricoh Theta selfies seem to have. This is very nice.
I personally plan to get rid of the 360cam and replace it with a Theta S soon. I’m quite disappointed. While I might be able to get used to the pear-shape, the slowness of this device is absolutely unacceptable. “Hey, let me take a cool picture. Everyone wait a minute while I boot up and switch from video mode to picture mode.”
Great attempt, Giroptic, but competition has rendered your device obsolete except for those who may benefit from the three-lens setup. I would have to see a side-by-side comparison to see if the 360cam even has that advantaged.
Just get a Ricoh Theta S and use the heck out of it :) They are $350, versus $499 for the 360cam.
Creating a RaspberryPi DriveWire server
- 2016/05/12 – This is a work-in-progress article I originally wrote on February 8, 2015, but never completed. The other night I was trying to look up my notes to help Curtis B. with a NitrOS-9 boot disk and I realized I never completed this. I will try to finish it when I have a moment.
Summary
To get DriveWire 4 server running on a Raspberry Pi, you will do the following:
- Download the DriveWire server to the Pi and unzip it:
wget http://sites.google.com/site/drivewire4/download/DriveWire4_4.3.3.zip
unzip DriveWire4_4.3.3.zip
cd DriveWire4_4.3.3.zip - Edit the config.xml file to default to your serial port on your Pi in <deviceType> and <serialDevice>. (i.e., “serial” and “/dev/ttyUSB0“)
- Run the server with no user interface:
java -jar DW4UI.jar -noui - On the CoCo, load the needed DriveWire modules from NITROS9/6x08L2/MODULES/RBF:
dwio.sb, rbdw.dr, x0.dd up to x3.dd - Use the “dw” command to test things by creating a blank disk image:
dw disk create 0 /home/pi/test.dsk
format /x0
dir /x0 - Customize your boot disk to include the modules you want and read the documentation to learn how to use all the cool virtual terminals, MIDI and other neat features.
And now, the long version…
Materials Needed
- Raspberry Pi B (or B+, or probably the Pi 2 B). I did all these steps on a B.
- USB keyboard (a mouse makes things easier, but I do not have one so all of these tips will just use a Pi, keyboard and HDMI TV/monitor).
- Compatible* 8GB SD card (or larger).
- Ethernet cable to hook the Pi to the Internet. (Required if you plan to do the network install of NOOBS LITE).
- WiFi (with a supported USB dongle) or Ethernet is needed later for downloading the DriveWire software and updates, but there are ways to do all of this without any Internet access if you start with the full NOOBs installer.
- Compatible* USB serial adapter (or TTL->RS232 converter for use with the built in UART pins of the Pi).
- …
Preparation on Windows/Mac/Linux
- Download the “NOOBS” installation for Raspberry Pi (currently 1.3.12). You can get the full NOOBS (780MB, just unzip and copy to the SD card and boot), or the NOOBS LITE (22.8MB) version.
- NOOBS LITE can also be used. It is a much smaller download, but requires the Pi to be hooked up to the internet via Ethernet to download the rest of the OS files which is about 2355MB.
http://www.raspberrypi.org/downloads/
- NOOBS LITE can also be used. It is a much smaller download, but requires the Pi to be hooked up to the internet via Ethernet to download the rest of the OS files which is about 2355MB.
- Unzip the files, then copy them over to a freshly formatted SD card.
Preparation on the Raspberry Pi
- Boot the Pi using this card. You will see a menu of operating systems you can install. Choose “Raspbian [RECOMMENDED]” at the top by using the arrow keys and SPACE to select. You may also wish to hit “l” for Language and set it to “English (US)” or your preference, and “9” for Keyboard and select yours. Once Raspbian is selected, press “I” for install. It will ask if you are sure you wish to overwrite the SD card. Select “Y” for yes.
- NOOBS LITE: The Pi will then download the Raspbian image (2.3GB), then install.
- NOOBS: The Pi will then install.
- The Pi will (eventually) reboot and after a bit, you get a DOS-like screen for the raspi-config utility. Arrow over to Finish and press ENTER. You will not be at the Pi shell prompt.
pi@raspberrypi ~ $ - At this point, I like to do a full reboot to make sure everything is working properly:
sudo reboot - On a reboot, you won’t go directly to a shell prompt. You will get a login prompt. The default account is:
username: pi
password: rasbperry.
Log in and you will get back to the shell prompt. You will be in the home directory for user “pi”. - Now we need to download the DriveWire 4 software. Note the filename will change when DriveWire is updated, so check the official site if this does not work.
wget http://sites.google.com/site/drivewire4/download/DriveWire4_4.3.3.zip - After the zip file is download, you can extract it by typing:
unzip DriveWire4_4.3.3.zip - DriveWire 4 is set up to run with a nice GUI with mouse control. This requires a keyboard and mouse, and the Pi to be set up with X-Windows running. Since I do not have a mouse, and plan to run the Pi headless with nothing hooked up to it but power and the CoCo, this is not an option for me. Instead, I need to manually edit the configuration file to tell it what Linux serial port I will be using.
cd DriveWire4_4.3.3
copy config.xml config.xml.org (always keep a backup!)
pico config.xml
The editor will open, and you want to look for a few entries:<instance category=”instance” desc=”Autocreated 2013-03-24 23:57:53.831″ name=”TCP connection via TCP“>
…
<DeviceType category=”device” list=”serial,tcp-server,tcp-client,dummy” type=”list”>tcp-server</DeviceType>
…
<SerialDevice category=”device” type=”serialdev”>COM14</SerialDevice>The first entry is just the name of the connection. You could change that to “Serial Connection” or whatever. The second “tcp-“server” should be changed to “serial”, and the “COM14” entry should be changed to your serial port device. On my Pi, when I plug in a single USB RS232 adapter, it shows up as /dev/ttyUSB0 so that is what I use. - Save your changes back to the file (Ctrl-X, Y) and now you are ready to run the server without a user interface. (Getting the user interface to run requires installed two more additional packages, and I will make a tutorial for that soon, if anyone wants me to.)
java -jar DW4UI.jar -noui - After a bit, Java will load and the DriveWire 4 server will start. Java is big, and the Pi is small, so it can be quite sluggish. Now, with the USB cable connected between the Pi and the CoCo, you can start testing.
Preparation on NitrOS-9
This tutorial is being written for someone who already has an active NitrOS-9 system and wants to add DriveWire support to it. If you have no customized
If you are using one of the default NitrOS-9 disk images for you system, it should have a NITROS9 directory, and inside of it will be various device drivers and descriptors, including the ones used by DriveWire. Ultimately, you would want to make a custom boot disk that includes these modules, but here is a simple way to merge them together and just load them when you want to use them. From OS-9:
- If you are running a stock CoCo 3 with the standard 6809 processor, go here:
cd /dd/NITROS9/6809L2/MODULES
…and if you have upgraded your CPU with a Hitachi 6309, go here:
cd /dd/NITROS9/6309L2/MODULES - The modules you want depend on what you plan to do. Here is the list:
- drio.sb – this module handles all communication with the DriveWire server.
- rbdw.dr – RBF device driver that uses DriveWire for disk access instead of disk hardware
- ddx0.dd, x0.dd, x1.dd, x2.dd, x3.dd – device descriptors for the DriveWire disk drives (/x0 to /x3, with ddx0.dd being a /dd descriptor for DriveWire).
- scdwp.dr – printer driver
- p_scdwp.dd – device descriptor /p for scdwp.dr
- scdwv.dr – virtual serial port driver
- n_scdwv.dd, n1_scdwv.dd to n13_scdwv.dd – serial port descriptors. /n is the “next available” descriptor, similar to /w for windows. /n devices may also be used for MIDI.
- midi_scdwv.dd – this is n14 but named /midi for MIDI programs that are hard coded to look for that name.
- term_z_scdwv.dt, z1_scdwv.dd to z7_scdwv.dd – (??? not in the doc wiki)
- For my example, I am only concerned about the disk drives, so I would merge the following modules together:
chd RBF
merge dwio.sb rbdw.dr x0.dd x1.dd x2.dd x3.dd >/dd/dw
This gives me a single file called “dw” I can load to get DW support instantly. First, I need to set the attributes to allow that:
attr /dd/dw e
…then I can just load it when I want to use DriveWire:
load /dd/dw - If this worked, you should now be able to use the DriveWire command, “dw”, to communicate with the server. Type “dw” and it should report back a list of commands:
config disk log midi net port server
…and you can then type “dw config” or “dw disk” to see what all it can do.
Using DriveWire
Here is an example of creating an empty disk image and formatting it:
dw create 0 /home/pi/test.dsk
format /x0
dir /x0
If you look on the Pi, you will see a new file “test.dsk” there. You can now use this disk like any other OS-9 disk. In my test, I copied my NITROS9 directory over to it just for fun:
chd /dd/NITROS9
dsave /x0 ! shell
DriveWire’s performance is not as good as you’d get from a No Halt floppy controller like the Disto Super Controller 2 or a hard drive interface like the Cloud-9 SuperIDE or KenTon SCSI. As disk activity is going on, interrupts are masked while data is blasted out of the bitbanger port. Still, it did a remarkable job keeping up with my typing. Quite impressive for a cheap cable and a $35 computer with a serial port.
TO DO
- Make the DriveWire 4 server auto-start.
- Update the DriveWire 4 software from the command line (is this even possible?).
- Update the Raspberry Pi software.
Problems
One issue I immediately ran in to was a bunch of ERROR #207 (Memory Full) errors. mfree still showed 352K free, and it wasn’t the #237 (RAM Full) that happens when there isn’t enough room left in the main 64K memory map.
Building NitrOS-9 on Mac OS X
Updates:
- 6-22-2022 – I wrote up the steps on building LWTOOLS under Windows using Cygwin. I found it very simple. But, I was not able to get Toolshed building under Cygwin.
- 12-7-2022 – A few updates about ‘hg’ on Mac.
- 2-20-2025 – Updated location of NitrOS9 project, and changing instructions to use “git” instead of Mercurial for that step.
Since I have to relearn all the steps, I thought I would post them as I go through them. The NitrOS-9 website has a tutorial on building it, but here are my steps with some specifically for Mac OS X:
Install the Command Line Tools for Mac OS X.
We need the command line versions of the Mac OS X compiler so we can build the tools that are then used to build NitrOS-9. If you have XCODE installed, you may already have them. An easy way to do this is from a Terminal prompt:
xcode-select --install
That will launch the Apple Mac App Store installer and get the tools for you. Cool.


Download Mercurial.
The NitrOS-9 repository now uses git as version control. You will need to download a git client, or use the GitHub Desktop app. I just learned about this change today (Feb 2025) so I need to update these steps.
Toolshed and LWTools use Mercurial, so you will need to download that as well. On macOS, you should be able to install it using “brew install mercurial”:
brew install mercurial
Download LWTools.
These are the cross-compiler tools used to build 6809 source code from Mac/Windows/Linux systems. From a Terminal prompt, find a directory you want to download the lwtools to. I chose a poor location — “CoCo” inside my Downloads folder:
pwd
/Users/allenh/Downloads/CoCo
From this directory, use the “hg” command to obtain and build the tools. It will build the directory you specify from the command line (“lwtools”):
hg clone http://lwtools.projects.l-w.ca/hg/ lwtools
cd lwtools
make
sudo make install
cd ..
Build Toolshed.
Next we want to build Toolshed. This is a series of command-line utilities that operate on CoCo/OS-9 disk images (like those used with emulators and the CoCoSDC interface). Once again, I do these steps from my “Downloads/CoCo” directory:
hg clone http://hg.code.sf.net/p/toolshed/code toolshed
cd toolshed
sudo make -C build/unix install
cd ..
(Note: I had to use “sudo make…” here to get it to build on my system.) The different build/make process shows the different styles of the various developers that made these tools. (Note: Mine seems to fail looking for a command “markdown” at the very end. Not sure what this is, but it seems to be building HTML documentation or something.)
Build NitrOS-9.
Now we are ready to download and build NitrOS-9. Once again, I start in my “Downloads/CoCo” directory, and issue the following git commands to download all the NitrOS-9 stuff:
git clone https://github.com/nitros9project/nitros9.git
cd nitros9
make dsk
This will build absolutely everything, including tons of ports and disk images you likely do not want. After this, you will have all the sources, and have built all (or some) of the sample disk images for various types of hardware (CoCo 1/2, CoCo 3, 6809 or 6309, CoCoSDC controller versus floppy or IDE hard drive, etc.).
If you are only interested in a CoCo 3 6809 setup, why build all the CoCo 1/2 and Dragon versions, or any of the 6309 stuff? I always build everything, but you can also specify to build just a specific port. For my CoCo 3/6309 build, I could do this instead:
make dsk PORTS=coco3_6309
For stock 6809 CoCo 3:
make dsk PORTS=coco3
Updating NitrOS-9 and the Tools.
Later, if you want to update your sources, you can use this command from the “nitros9” directory:
git pull
make ask
For updating LWTools and Toolshed, use this:
hg pull
hg update
…then the build steps, shown earlier.
NOTE: David Ladd has pointed out that you may want to clean out old files before rebuilding. For Toolshed, I needed to do this first:
hg pull
hg update
make -C build/unix clean
make -C build/unix
I do this occasionally to get the “latest and greatest.” You can do this for the other tools, too, by changing in to their directory then issuing the “pull” and “update”, then the appropriate make command.
TODO: This next section was from when NitrOS9 was at SourceForge and used Mercurial. I have not had a merge conflict using git yet, so I don’t know what those look like. I will try to update this document later.
If you get a merge conflict because you changed something locally, you might see this:
hg update
abort: outstanding merge conflicts
You can use this command to see what files have been changed on your local repository that conflict with the master files. This happens if, for instance, you tweak a makefile or build list or source code:
hg resolve -l
U 3rdparty/utils/tlindner/sdir.asm
This reminded me that I already Tim’s “sdir” source code (for CoCoSDC) so enable built in help and such. I have to revert those changes if I want to update, or learn how to use the merge too… I forgot!
These steps should get you everything you need to begin playing with NitrOS-9 on a real CoCo with the CoCoSDC interface, or an emulator. If you plan to use real floppies, you can use toolshed utilities to format and then copy disk image .DSK files over to the physical floppy, but I don’t have any way to hook a 360K Floppy drive to my Mac so I have never done this. CoCoSDC is the way to go there.
More to come…
25th annual “Last” Chicago CoCoFEST!
Tandy/Radio Shack TRS-80 Color Computer fans, take note. This weekend (April 23-24, 2016), the Glenside Color Computer Club will be hosting the 25th annual “Last” Chicago CoCoFEST! in Lombard, Illinois (near Chicago).
I attended the first “Last” CoCoFEST! there back in 1992, flying up from Lufkin, Texas with a CoCo friend of mine, Mark. That 1992 event was presented by Dave Myers of CoCoPro, and Glenside was the host club for it. Dave had gotten in to the CoCo convention scene in 1990 when he held his first CoCoFest in Atlanta, Georgia, with the Atlanta Computer Society as the host club there.
These CoCoFests were being started just as the long-running RainbowFests were winding down. Rainbow Magazine was the premier Color Computer publication, starting out as a photocopied newsletter and growing to a 300+ page monthly periodical. Rainbow had years where they held several events across America, but their last event was in Chicago in 1991.
Dave first stepped in to offer an event “down South” in 1990. Rainbow had held only one southern event in Ft. Worth, Texas. When the final RainbowFest was held, Dave decided to continue the tradition with a new event in its place.
Though CoCoPro would exit the convention scene after that 1992 event, the CoCo clubs continued. Atlanta Computer Society kept CoCoFests going there through 1995. The Glenside CoCo Club has continued to host events ever since the original CoCoPro event in 1992 (and they were host club for the RainbowFests before that). But this year is the last one. Again.
Dave chose the “Last” (in quotes) moniker for his first Chicago-area event knowing it could be the final event, and it become the “2nd annual ‘Last'” event the following year when Glenside took over.
Then the 3rd … and 4th … and 5th…
It’s hard to believe that was 25 years ago!
I last got to visit the CoCoFEST! in 2013. I would like to at least day trip to this one. Several long-time CoCo folks from the past are showing up (including our own monk, Brother Jeremy, and our Canadian pal L. Curtis Boyle). I have had several generous offers to provide lodging if I wanted to stay overnight, and even offers to fund my gas. These are some of the people I have called friends longer than just about anyone else I still have in my life.
If you can make it, and I am there, be sure to say hi. If I am not there, be sure to take photos and let me know what I missed.
Find out more: http://glensideccc.com/
Floating point is hard.
In my day job, I am an embedded C programmer. Our devices work with flow measurement and use a bunch of floating point math for accumulators and such. In the past three years, I have learned some interesting things about floating point numbers and how they cannot represent certain values. I was therefore amused to see an easy example of the floating point problem when I was paying for postage last night:

I wonder how much it deducted from my PayPal account . . .

