Skip to content

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.