Getting started

I’ve taken the covers off the Sol-20s and cleaned them up a bit, though a more thorough cleaning should be done. I’ve powered up one machine, and it mostly seems to work. As expected, all of the keyboards have a lot of keys that don’t work, due to degradation of the foam pads.

One Sol-20 has several upgrades from Micro Complex installed:

  • 80*24 display daughterboard
  • Z80 CPU daughterboard
  • Dual personality module

The Micro Complex products are quite nice, but for this project I am more interested in a stock configuration.  Also, I don’t have any documentation for the daughterboards.

 

Posted in RetroChallenge | Leave a comment

Retrochallenge 2012WW

I’m looking forward to starting on my Retrochallenge 2012WW project. Some of my tasks are:

  1. dig out a few Sol-20s
  2. see if any work
  3. replace keyboard foam pads.
  4. connect cassette interface to audio ports of Linux system
  5. save a block of memory, and analyze audio on Linux system
  6. write a C program to encode object files into audio to load into Sol-20

Thanks to Mike Davis for sending me a set of replacement foam pads!

I’m going to load programs from my Linux system into the Sol-20 using the cassette interface.  The Sol-20 supports two different data rates.  The default is a 1200 bps rate, while the 300 bps rate that can be selected is apparently compatible with the Kansas City Standard.

I’d prefer to use the fast rate, of course, but from the documentation I am somewhat confused about what frequencies the FSK modulation uses for the fast rate.

The Kansas City Standard uses four cycles of 1200 Hz for a zero, and eight cycles of 2400 Hz for a one.

The impression I have from the documentation is that the high speed mode uses a half cycle of 600 Hz for a zero, and one cycle of 1200 Hz for a one.  It seems strange to me that they wouldn’t have used the same FSK frequencies as the KCS, but with one cycle of 1200 Hz or two cycles of 2400 Hz.  I think that would have used simpler circuitry, but perhaps they found that it didn’t perform well.

I’ll confirm the FSK frequencies in high speed mode by writing a block of memory to the cassette interface and capturing it on the Linux system.  That will also allow me to verify that my understanding of the file header format is correct.

Posted in RetroChallenge | Leave a comment

More progress to report, after all

I fixed several bugs in my code, and now the DIY4 can display the directory of an SD card and read and write files. It’s not perfect, as the first I/O fails, but subsequent accesses succeed.

I’m using the open source FatFs code to implement the FAT filesystem.  It’s configured to work with two “drives”, the internal SPI FRAM chip in the DIY4, and the SD card.  I used the SD interface code from the “generic” example, with only minor changes necessary.

I still have to write a -41 microcode ROM to provide the equivalent of the HP-IL module’s mass storage commands, but talking to the SD card rather than HP-IL.

Posted in Calculators, Hardware, RetroChallenge, Software | Leave a comment

Declaring success

I completed my original RetroChallenge project, the rewrite of the Apple 1 monitor for the MC6800 microprocessor, sooner than expected, so I’ve spent my spare time for the rest of the month working on HP-41 calculator stuff.

I analyzed bugs in the microcode of the HP-41 and card reader, reverse-engineered portions of the Extended I/O ROM, and made a lot of progress on the DIY4 calculator which runs the original HP-41 microcode.

I may do a little more today, but don’t expect to have any additional significant progress to report by the end of the day, so I am declaring the project a success.  It will remain to be seen whether it is judged worthy of a prize, but regardless of that, I am happy with what I’ve accomplished. I wish I could get this much accomplished in my spare time every month!

Posted in Calculators, RetroChallenge | Leave a comment

Display contrast in DIY4

The DIYRPN 4 calculator uses a 16×2 character LCD module. The choice of module was limited due to the desired physical width of the calculator. We chose a module made by Lumex. The module is specified for operation on a 5V supply, but we need to run it on 3.1V. This results in needing a negative bias voltage to get reasonable display contrast. We use a pulse width modulator (PWM) driving a voltage inverter to get a software-adjustable negative bias voltage. Getting the timer of the Energy Micro EFM32G “Gecko” microcontroller working in PWM mode was slightly trickier than expected. Continue reading

Posted in Calculators, Hardware, RetroChallenge, Software | Leave a comment

Keyboard scanning on the DIY4

I tracked down a bug in the keyboard scanning of the DIY4 today. I thought there needed to be a delay in the scan routine between writing the scan lines and reading the return lines, but it turns out that another delay is needed also. Continue reading

Posted in Calculators, Hardware, RetroChallenge, Software | Leave a comment

Bit-banging FRAM on the DIYRPN 4

I’ve written code that successfully reads the vendor/device ID and serial number from a Ramtron FM25VN10 SPI FRAM chip. I haven’t yet read or written data. The code is currently using GPIO bit-banging, but the hardware is designed to allow the USART to be used in SPI mode, so I may switch to that in the future. Continue reading

Posted in Calculators, Hardware, RetroChallenge, Software | Leave a comment

HP-41 card reader bug

It occurred to me while studying simulator traces that it might be interesting to investigate a bug in early versions of the 82104A card reader for the HP-41C calculator. The bug was fairly esoteric and easily avoided, as it seemed to occur when backspacing over a four-digit numeric prompt after EEX and two digits have been entered. (This is somewhat reminiscent of the famous Therac-25 bug, though without the fatal consequences.) Continue reading

Posted in Calculators, Nonpareil, RetroChallenge | Leave a comment

HP-41CV ROM set version HFF bug fix

As I was studying HP-41CV microcode running in simulation, I finally uncovered what one of the bug fixes in the HFF ROM version does. This has been a mystery for many years, though there’s still one more unexplained change relative to the earlier GFF version. Continue reading

Posted in Calculators, Nonpareil, RetroChallenge | Leave a comment

Hacking HP-41 microcode

Since I’m basically done with my original project, the rewrite of the Apple 1 monitor for the MC6800, I’m now spending my copious free time working on HP-41 stuff. I’m trying to hack together an expansion ROM that will support access to an SD card. Initially I just want to have the equivalent of the HP-IL module DIR, WRTP, and READP functions. I’ll assign it XROM 28 with the full function list of the HP-IL module, but all of the other functions will give a “NONEXISTENT” error, until eventually I get around to implementing more of them.

I haven’t decided whether to finish my assembler written in Python, or use nutstudio.

So far I’ve studied the VASM listings of the HP-IL module’s cassette and control ROM to learn how the DIR, WRTP, and READP functions work.

I doubt that I’ll have this done by the end of this RetroChallenge, but at least I’m making some progress.

Posted in RetroChallenge | Leave a comment