KeroBurn: a Mac app for the XGecu T48 / TL866II+ (beta, testers wanted)

Kay K.M.Mods

Active Tinkerer
Sep 23, 2021
326
747
93
Tokyo
www.kerosmm.com
Hi all,

I program a lot of ROMs and GALs for the boards I make, and I got tired of booting a Windows machine every time just to run Xgpro. minipro works on the Mac, but typing "SST39SF040@PLCC32" into Terminal 10 times a day gets old fast. So I wrapped it in a proper Mac app.

スクリーンショット 2026-10-16 14.23.52.png

It's called KeroBurn. It's a front end for minipro, and minipro, libusb and the device database are all bundled inside, so there's no Homebrew or MacPorts to deal with. Universal binary, macOS 12 or later.

What it does:

- Presets for the chips you use. The editor searches minipro's T48 database as you type, and shows a green check if the name is valid.
- Drag a .bin (or .jed) onto the window and hit Write.
- Multi-chip runs. Drop a HI/LO pair or a 4-chip ROM SIMM set and it flashes them in order, stopping between each one so you can swap chips. Handy for ROM-inator or SMC ROM SIMM sets.
- Hex View. Load the file, read the chip back, and it shows both side by side with the mismatched bytes in red. It also tells you if the data looks shifted to a different address, or if all the errors land on even or odd bytes (which is usually a HI/LO mix-up).
- Sum and CRC32 for the file and the chip.
- A log of every chip written, with the file's SHA-256.
- Checkboxes for -s, -y, -v, -u and -P, saved per preset.
スクリーンショット 2026-10-16 14.26.03.pngスクリーンショット 2026-10-16 14.09.35.png
As this is still a beta version, it is being updated frequently. Please be sure to check for new releases before downloading.
https://github.com/kerokero5150/KeroBurn/releases

Download (beta):

New

  • Write a file at an address. Each file has an Offset… button: chip address, start in file, length, and "keep what's already on the chip". Put a few bytes of patched code in a small file, give it the address, tick Keep, and only that range changes. Same idea as the file load dialog in Xgpro.
  • Presets remember their files. Line them up (offsets included), press Save to Preset, and they're loaded every time you pick that preset.
  • Each preset keeps its own file list while the app is open, so switching presets doesn't lose anything.
  • File rows show when the file was last modified. A saved file that's been moved or renamed shows in orange and the write won't start.
  • Hex View lines up the compare when a file has an offset.
Fixes

  • Read… crashed when the first file in the list was smaller than the chip.
Under the hood

  • The offset feature uses new minipro options (--offset, --file_offset, --length, --keep) from a patch in patches/. They work from Terminal too.
Thanks to Mike for the saved files idea, and to Lewin and @Stephen for testing.

スクリーンショット 2026-10-16 13.34.03.png
Source is on GitHub too, GPLv3 like minipro:
https://github.com/kerokero5150/keroburn

It's not notarized, so the first time you'll need to right-click it and choose Open.

What I've tested: an Intel Mac Pro with a T48 on firmware 00.1.39. SST39SF040 in PLCC32, AT28C64B, ATF16V8B and a few others all flash and verify fine.

What I haven't tested, and where I'd really like help:

- Apple Silicon. It builds as a universal binary, but I don't have an M-series Mac to run it on.
- The T56 and TL866II+. minipro supports them, I just don't own one.

One known oddity: my AT28C64Bs fail verify with the normal device name. Only the first and last byte of each 64-byte page get written. Switching to "AT28C64B(Non-Standard)" fixes it. My chips are recycled pulls though, so I'm not sure if it's the T48 or the chips. If you have genuine Atmel parts I'd like to know how they behave.

Bug reports here or on GitHub issues are both fine. Thanks for trying it.
 
Last edited:

PL212

Tinkerer
Dec 25, 2022
67
43
18
This works great! I used it to dump the four PLCC32 ROMs of a Global Village OneWorld (a strange device that makes two GV PowerBook modems available over an AppleTalk LAN.)

M5 Pro MacBook Pro, Golden Gate 27.0.1

IMG_6227.jpg
Screenshot 2026-10-16 at 2.45.14 PM.png



For AppleTalk fans, longer thread over here.
 

Attachments

  • GV_OneWorld_ROM_512K_base_F80000.bin
    512 KB · Views: 8
Last edited:

Kay K.M.Mods

Active Tinkerer
Sep 23, 2021
326
747
93
Tokyo
www.kerosmm.com
@PL212 Thanks for the report, and great to see it working on an M5 Pro with macOS 27! That looks like one of the early betas. Since then I’ve added quite a few things in beta 4, like Read opening straight into Hex View (saving is optional now), Chip ID telling you what a chip really is when it doesn’t match, and presets that remember their files. It’s still a work in progress, so I’m keen to hear how it works for you and what you’d like to see next.
https://github.com/kerokero5150/KeroBurn/releases/latest


@Kai Robinson Funny you should mention it, I’ve just finished the SE ROM-inator. I flashed ROMs for it hundreds of times while developing it, and that’s what gave me the idea for this app. In the Mac SE, the BBU was never meant to drive chip select for a flash ROM, so I had to generate the CE and OE signals myself. The whole story is here if you’re interested:
https://www.kerosmm.com/post/se-rom-flash-tool-1-1-and-how-it-got-here
IMG_8523.jpeg

You probably don’t remember, but we talked about putting a ROM disk in the SE a while back. It turned out to be a lot harder than I expected!

I’ve also put up an SE emulator that runs in the browser. It’s Mini vMac, built for the Mac SE instead of the Plus. I originally made it as a test bench while developing the SE ROM disk:
https://www.kerosmm.com/se-wevmac
 
Last edited:

Kai Robinson

Co-Founder, Emeritus Board Member
Staff member
Founder
Sep 2, 2021
1,412
1
1,419
113
44
Worthing, UK
@PL212 Thanks for the report, and great to see it working on an M5 Pro with macOS 27! That looks like one of the early betas. Since then I’ve added quite a few things in beta 4, like Read opening straight into Hex View (saving is optional now), Chip ID telling you what a chip really is when it doesn’t match, and presets that remember their files. It’s still a work in progress, so I’m keen to hear how it works for you and what you’d like to see next.
https://github.com/kerokero5150/KeroBurn/releases/latest


@Kai Robinson Funny you should mention it, I’ve just finished the SE ROM-inator. I flashed ROMs for it hundreds of times while developing it, and that’s what gave me the idea for this app. In the Mac SE, the BBU was never meant to drive chip select for a flash ROM, so I had to generate the CE and OE signals myself. The whole story is here if you’re interested:
https://www.kerosmm.com/post/se-rom-flash-tool-1-1-and-how-it-got-here
View attachment 30892
You probably don’t remember, but we talked about putting a ROM disk in the SE a while back. It turned out to be a lot harder than I expected!

I’ve also put up an SE emulator that runs in the browser. It’s Mini vMac, built for the Mac SE instead of the Plus. I originally made it as a test bench while developing the SE ROM disk:
https://www.kerosmm.com/se-wevmac
The latest revision of the board has an extra address linenfir the ROM so people could test using the Classic ROM, as they're identical in almost every way bar the floppy disk select.
 

Kay K.M.Mods

Active Tinkerer
Sep 23, 2021
326
747
93
Tokyo
www.kerosmm.com
The latest revision of the board has an extra address linenfir the ROM so people could test using the Classic ROM, as they're identical in almost every way bar the floppy disk select.
Interesting. I actually tried the Classic ROM on my SE a while back. I used a MacPlus ROM-inator style 1MB board, so A18, A19 and A20 were all there, and I flashed the 512K Classic ROM into it twice. It booted fine from BlueSCSI and from a 6.0.8 floppy. Cmd-Opt-X-O did nothing, though.

I went back to the disassembly to find out why... Early in boot the Classic ROM sets VIA PA3 to an input and reads it ($43F770). If it reads 0, it writes $0B to $CB3 and treats the machine as a Classic. On an SE it reads 1, so $CB3 never gets set.

43f770: lea $EFE1FE,a2 ; VIA1
43f776: bclr #3,$600(a2) ; DDRA bit3 = input (PA3 as input)
43f77c: btst #3,$1E00(a2) ; read PA3
43f782: bne → ; PA3=1 → not Classic
43f784: move.b #$0B,$CB3 ; PA3=0 → Classic, so $CB3=$0B

Later, right after it opens .Sound ($43F824), it checks $CB3 again. Only when it’s $0B does it install .Screen, check for Cmd-Opt-X-O (or the PRAM startup device), and then install and open .EDisk. On an SE that whole block is skipped. .EDisk isn’t in the DRVR resource map either, so nothing else will ever load it.

43f828: _Open '.Sound'
43f82a: cmpi.b #$0B,$CB3
43f830: bne $43F840 ; not Classic → skip everything below
43f832: bsr $43F856 ; install/open .Screen (unit 51)
43f834: bsr $43F8DA
43f838: bsr $43F8E6 ; Cmd-Opt-X-O check, or PRAM startup = EDisk
43f83c: bne $43F840
43f83e: bsr $43F898 ; _DrvrInstall + _Open '.EDisk' (unit 52)

The EDisk driver itself looks fine for the SE. Its Open scans from ROMBase up to $500000 in $10000 steps looking for the “EDisk Gary D” header, so it would find the disk at $440000 without any trouble.


So with the extra address line the Classic ROM will boot an SE, but the ROM disk won’t come up unless you patch that $CB3 check. The floppy select difference you mentioned comes from the same $CB3 flag ($43F7F2 / $43F806), which is probably why it runs on SE hardware at all. Looks like Apple left the SE code paths in there.

If anyone wants to try, NOPing the bne at $43F830 (and the bsr to .Screen at $43F832) should be enough to get .EDisk installed. I haven’t tested that yet.

The whole story of how I got ROM disk booting working on the SE is on my blog:
https://www.kerosmm.com/post/bringing-rom-disk-booting-to-the-macintosh-se-the-se-rom-inator-project

Ah, on second thought, since this is KeroBurn’s post, it might cause some confusion. I will create a separate post for the SE ROM-inator to continue our discussion, let’s carry on there...
 
Last edited:
  • Like
Reactions: Kai Robinson