The GALs' fuse files¶
One JEDEC file per GAL, by card: <card>/<GAL>.jed, 88 in all (CPU 35,
MMU / data 8, memory 3, I/O 16, disk 15, video 5, debug 6). Generated by
python3 generators/p32jed.py from the GAL definitions in the card
generators; do not edit. make test fails if any file is out of date.
Every file is checked when it is made: its fuses are read back through a
model of the 22V10 (registered feedback from /Q, S0 the output's polarity,
S1 the register bypassed, the OE and AR rows) and every output is compared
with the GAL's behavioural spec over every combination of its inputs. With
--galasm PATH, each GAL is also assembled by GALasm 2.1 (not part of the
project: github.com/daveho/GALasm) from the same equations, and the two fuse
maps must be identical. On 2026-10-26 all 83 were identical (D67); on
2026-10-27, with the comparator and the ANYP GALs (D72), all 94; on
2026-10-28, with the disk card's DMA engine (D75), all 100; the same day,
with the clock stepping (CKSEL, D76), all 101. On 2026-11-12 the video
card's 18 gave way to revision 2's 5 (VSEL, VDEC, VWT, VRD, VINT: D106):
88. Those five have not been compared with GALasm's yet (it is not on
the Mac they were made on); they are checked through the fuse map, as all
are.
Programming (TL866II+ or T48, minipro)¶
The parts are ATF22V10C in DIP-24 (the -10 grade, and the -7 for the CPU card's clock selector CKSEL). Both grades are the same device to the programmer:
minipro -p ATF22V10C -w hardware/gal/video/VWT.jed
minipro -p ATF22V10C -r check.jed # read back, if wanted
Each chip's GAL name is printed on the silkscreen beside it (the board
rules), and the card generators' BOM lists them (--bom).
The flash chips¶
| Part | What | File | Command |
|---|---|---|---|
| SST39SF010A (CPU card, 9) | the microcode (microcode/u0.binโu6.bin, 16 KiB each) and the decode ROMs (dec_op.bin, dec_cr.bin, 256 bytes) |
microcode/ |
minipro -s -p SST39SF010A -w FILE (-s: the file is shorter than the chip; the rest stays erased, FF) |
| SST39SF020A (memory card, 4) | the boot ROM's byte lanes | docs/monitor.md |
minipro -s -p SST39SF020A -w FILE |
| 27C256 (video card, 1) | the font, as the HD63484 reads it (D103) | video/font-acrtc.bin (python3 generators/gen_font.py --acrtc writes it: not kept in git) |
minipro -p 27C256 -w video/font-acrtc.bin (the part's own name in minipro's list: a UV EPROM needs erasing first, and some need a higher programming voltage than the T48 gives: to check with the part in hand) |
The flash types are in minipro's T48 list. The video card's ATmega328P
takes YACC1-D's firmware (embedded/video-ps2 there) over its FTDI header,
with the Arduino bootloader. The video card's second EPROM (the character
generator of its text method A, an AT27C256R-70) has no image yet: its
socket is empty on the first build. The Pico 2 / Pico 2 W
and the Tang Nano 20K are programmed over their own USB, not in the
programmer.