IBM PCjr core for MiSTer FPGA by @spark2k06.
Discussion and evolution of the core in the MiSTer FPGA forum:
https://misterfpga.org/viewforum.php?f=40
This repository targets the IBM PCjr, not the Tandy 1000 line.
The core is built around the MCL86 core from @MicroCoreLabs and KFPC-XT from @kitune-san, with PCjr-specific video, memory, cartridge, keyboard and peripheral behaviour added on top.
Implemented and relevant today:
- IBM PCjr BIOS boot flow
- PCjr/Tandy graphics modes with PCjr-specific fixes
- Configurable system RAM from 128 KB to 640 KB
- Cartridge support through two
JRCslots - Floppy support through BIOS-compatible disk images
- PC speaker and PCjr 3-voice audio mixing
- Composite video simulation and alternate display palettes
- PCjr keyboard and joystick support
- Cassette
SAVEaudio through the PC speaker path
Present in the OSD but not currently active for loading:
Cassette Tape (JRT)Tape sound
These cassette-related OSD entries are intentionally shown as shaded/disabled. Cassette loading is pending a future PCjr-specific implementation.
The current OSD exposes these relevant PCjr options:
PCjr BIOSCartridge 1 (JRC)Cartridge 2 (JRC)Cassette Tape (JRT)shadedRAM SizeBoot Splash ScreenWrite ProtectSpeaker VolumePCjr VolumeTape soundshadedAudio BoostStereo MixCRT H offsetCRT V offsetVSync WidthHSync WidthScandoubler FxAspect ratioBorderComposite videoDisplayJoystick 1Joystick 2Sync Joy to CPU SpeedSwap Joysticks
The main PCjr BIOS is loaded from the OSD:
System & BIOS -> PCjr BIOS
The BIOS file is expected as a ROM image provided by the user. Original IBM ROMs are copyrighted and are not distributed with this repository.
Alternative BIOS projects may work depending on compatibility, but the primary target is original PCjr BIOS behaviour.
Two cartridge slots are available in the OSD:
Cartridge 1 (JRC)Cartridge 2 (JRC)
Current cartridge handling is designed around JRC images loaded from the OSD. Each slot maps independently into the PCjr cartridge area. After changing cartridge images, a full core restart is required for the new cartridge state to take effect; a simple reset is not enough.
Floppy IMG/IMA/VFD mounting is available from the main media slot in the OSD.
Practical notes:
- BIOS compatibility still matters for accepted image formats and geometry
- Using disk images that match what the loaded BIOS expects is recommended
- Preformatted images are safest when working with unusual sizes
The OSD currently shows a cassette media slot using the JRT extension.
Current state:
- Cassette
SAVEactivity is routed to audible output through the PC speaker path - Cassette
LOADis not enabled yet - Cassette OSD entries remain visible but shaded so the intended UI path is preserved for future work
The core currently mixes:
- PC speaker
- PCjr 3-voice sound
- Cassette
SAVEwaveform audio when save activity is present
Tape sound remains visible in the OSD only as a placeholder for future cassette loading support.
The core includes PCjr-oriented video behaviour rather than a generic CGA/Tandy port.
Relevant exposed options include:
- Composite video enable/disable
- Scandoubler effects
- Aspect ratio
- Border enable/disable
- Palette/display mode selection
- CRT H/V offsets
- VSync/HSync width controls
Recent video work in the repository also includes a dedicated CGA scandoubler path intended to be safer for UM6845R-sensitive software.
- PCjr keyboard path
- Joystick 1 and 2 configuration:
- Analog
- Digital
- Disabled
- Joystick swap option
- CPU-synchronised joystick timing option
The core also contains UART/serial plumbing used internally by the platform integration, but that is not currently a primary user-facing feature of this README.
- Copy the core to your MiSTer setup in the usual way.
- Launch the core from the computers section.
- Open the OSD.
- Load a PCjr BIOS in
System & BIOS -> PCjr BIOS. - Optionally load one or two
JRCcartridge images. - Optionally mount a floppy image.
- Use
Reset & apply settingsafter changing latched hardware options such as RAM size.
Suggested first-run checks:
- Confirm BIOS boots correctly
- Confirm floppy access works with a BIOS-compatible image
- Confirm cartridges mount correctly if used
- Confirm cassette-related options are visible but shaded
This README reflects the current production-facing state of the core:
- IBM PCjr system identity
- Cartridge and floppy support available
- Cassette
SAVEaudio available - Cassette
LOADstill pending
Contributions and pull requests should be prepared against the appropriate development branch before being reviewed and merged.
