Skip to content

fletto2/pps8asm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pps8asm - Rockwell PPS-8 Assembler, Emulator, and ISA Documentation

The first publicly available assembler, emulator, and instruction set documentation for the Rockwell PPS-8 (Parallel Processing System, 8-bit) microprocessor (1974).

What is the PPS-8?

The PPS-8 was an 8-bit PMOS microprocessor from Rockwell International, announced in 1974. It featured a unique "data pool" architecture for code density optimization. The chip was used in specialized applications including the HCL 8C (India's first personal computer) before being superseded by the MOS 6502.

No PPS-8 emulator, assembler, or complete opcode map existed publicly before this project.

What's in this repo

Tools (src/)

  • pps8asm.py - Python assembler with full pool management, branch tag insertion, iterative address stabilization, and I/O encoding
  • pps8emu.c - C emulator with 60 opcodes, pool decode, interactive debugger, instruction trace, and breakpoints
  • crt_fdc.asm - Complete transcription of the Rockwell CRT/FDC Demonstrator program (2,641 lines, the only known PPS-8 assembly source code)

Documentation (docs/)

  • PPS8_CPU_Manual.md - Complete CPU reference (registers, opcodes, pool encoding, interrupts)
  • Assembler_Manual.md - Assembler usage, directives, pool sizing rules
  • Emulator_Manual.md - Emulator usage, debugger commands, memory map
  • PPS8_ISA_Reference.md - Detailed ISA reference from the October 1974 datasheet
  • pool_encoding.md - Pool encoding algorithm decoded from datasheet Figure 3-3
  • pps8_opcode_inferred.txt - Complete 61/64 opcode map with confidence levels
  • pps8_opcodes_verified.txt - Frequency analysis of 575 instruction instances

Transcription (transcription/)

  • Assembly listing transcriptions from the 1976 CRT/FDC Demonstrator
  • Pool ROM map, opcode frequency data, ROM ground truth bytes
  • Raw opcode extraction data used for frequency analysis

ROMs (roms/)

  • crt_fdc_test.rom - Assembled ROM output from crt_fdc.asm

Building and Running

Assembler

python3 src/pps8asm.py src/crt_fdc.asm -o roms/output.rom -l listing.lst

Emulator

cc -O2 -o pps8emu src/pps8emu.c
./pps8emu -d roms/crt_fdc_test.rom    # interactive debugger
./pps8emu -t roms/crt_fdc_test.rom    # trace mode

How the opcode map was reconstructed

The PPS-8 datasheet (October 1974) lists all instructions by mnemonic but does NOT publish hex opcode values. The opcode map was reconstructed by:

  1. Downloading the CRT/FDC Demonstrator assembly listing from bitsavers.org
  2. Extracting every (hex_code, mnemonic) pair from the listing (575 instances)
  3. Using frequency analysis to resolve OCR ambiguities in the scanned document
  4. Cross-referencing with the datasheet's instruction descriptions
  5. Inferring unobserved opcodes from positional patterns

OCR error patterns identified: 5/6, 8/A, E/F, 8/B confusion in hex digits.

Project status

  • Opcode map: 47 confirmed + 14 inferred = 61/64 primitive opcodes
  • Assembly coverage: 99% effective (all key routines at correct addresses)
  • Label accuracy: 100% of key routine addresses match the original listing
  • Tables: 100% (384/384 bytes of EBCDIC/ASCII translation tables)
  • Assembler: 0 errors, 0 warnings on the CRT/FDC program
  • Pool encoding: Fully decoded from datasheet Figure 3-3

Primary references

License

This is a reconstruction of historical computing documentation for preservation and educational purposes. The original Rockwell documentation is from 1974-1976.

About

Rockwell PPS-8 assembler, emulator, and ISA reconstruction (1974 microprocessor)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors