Kjetil's Information Center: A Blog About My Projects

CP/M on the GR-CITRUS

I have now also ported my "kaytil" Z80 CP/M 2.2 emulator to the Gadget Renesas GR-CITRUS reference board. I found some of these boards recently in Akihabara, and they are probably somewhat outdated by now, but hopefully CP/M can provide some more opportunities. They are a kind of like a simpler version of the GR-SAKURA but lacking Ethernet connectivity and a SD-Card slot.

The GR-CITRUS (at least the GR-CITRUS-NORMAL that I got) uses a Renesas RX631 MCU as opposed to a RX63N on the GR-SAKURA. The UART and timer hardware is identical so the routines for those are re-used. The GR-CITRUS also has a slightly larger 2MB of flash ROM instead of just 1MB, so this port of the emulator uses the same trick as the Raspberry Pi Pico version where disk images are stored as part of the binary.

The emulator application should be uploaded using the existing default GR-CITRUS bootloader which provides a fake USB mass storage device when it is connected. I found that it is very important to let the transfer complete fully before unmounting the device or else there is a high chance of data corruption. Use the "sync" command like this simple upload script example:

#!/bin/sh

if [ -z "$1" ]; then
  echo "Specify file to upload."
  exit 1;
fi

if [ -b /dev/sde1 ]; then
  mount /mnt/sde1
  cp -v "$1" /mnt/sde1/
  sync
  umount /mnt/sde1
else
  echo "/dev/sde1 does not exist."
fi
          


The CP/M console will be available on the first UART at pin 0 (TX1) and pin 1 (RX1) as seen here:

GR-CITRUS UART Connection.


The version has been increased to 0.5 and the new package be found here or gotten from the Git repository.

Topic: Open Source, by Kjetil @ 09/05-2025, Article Link