roms/roms.js embeds eleven binary blobs, ~25 KB gzipped, so that cloning the
repository and opening index.html is enough to run something. None of it is
ours. Regenerate with python3 tools/build_roms.py --data <agat-emulator data dir>.
The first eight are the Agat’s own and come from another project’s data tree.
The last three are the СМ6337 printer’s firmware, which comes from neither, and
are checked in under roms/sm6337 so the generator needs no second download.
| key | file | bytes | md5 |
|---|---|---|---|
monitor7 |
roms/monitor7.rom |
2048 | 4af780cb333807b87dab689a813781ca |
monitor9 |
roms/monitor9.rom |
2048 | 011bfc048693e7f9dce33a44253477ac |
teac |
roms/teac.rom |
256 | 6a3c80d51455d0187faeadebd136df26 |
shugart7 |
roms/shugart7.rom |
256 | 31ec46c2d227320170353607ad1ac8ac |
shugart9 |
roms/shugart9.rom |
256 | 21f62cc6c64e0d01d19bc1f8e560ff81 |
mouse |
roms/cm6337.rom |
2048 | 99073a7dfe03a67a0c6625619b2c0844 |
font7 |
fnts/agathe7.fnt |
2048 | 746e4e13e003f4d85be22c72c26fec7e |
font9 |
fnts/agathe9.fnt |
2048 | 3394cec9b91432a7e97da461a5e6a39f |
sm6337d27 |
roms/sm6337/SM6337.D27 |
8192 | f3e56498db51a60e471f2009ec97411f |
sm6337d28 |
roms/sm6337/SM6337.D28 |
8192 | 992692820c6087b88da5d26f2a458d1f |
sm6337d29 |
roms/sm6337/SM6337.D29 |
8192 | a24b67d4a3f5f49fab612ab5f91c72e9 |
The first eight paths are relative to the data tree of Agat Emulator by NOP
(https://sourceforge.net/projects/agatemulator/, GPLv2), as shipped in its
agat-emulator-data package.
The same five ROMs are distributed with AgatF (Ravodin & co., 2010) under different names, and are byte-for-byte identical — verified by the md5s above:
teac.rom == agatF-fd800.bin
shugart7.rom == agatF-fd140-105.bin
shugart9.rom == agatF-fd140-173.bin
monitor7.rom == agatF-sysmon7.bin
monitor9.rom == agatF-sysmon9.bin
The fonts are not interchangeable that way — AgatF’s differ — so --agatf
is a fallback for the five ROMs and nothing else. cm6337.rom has no AgatF
fallback at all; see below.
The color tables are not here: they are not ROMs but a property of the
monitor, live in src/videopal.js, and are transcribed from agatcomp.ru’s
measurements rather than from either emulator’s data package — see
HARDWARE.md.
mouse: the printer card’s ROMcm6337.rom is the ROM of the Agat-9 printer card, Фг3.089.174, which is what
both parallel mice plug into — agat-emulator loads it for DEV_MOUSE_PAR
exactly as it does for the printer (mouse9.c is printer9.c with the cable
swapped). It is byte for byte the EPROM dump agatcomp.ru offers beside the
card’s schematic (Hardware/IO/io9/ROM_Printer9.rar). The key is named for the
mice because they were here first.
The printer card uses all 2K: the last 256 bytes are its $Cn00 page
(pcs->rom[(adr & 0xFF) | 0x700] in both of agat-emulator’s files) and the
whole of it is the driver in the $C800-$CFFF window. The mouse fittings use
only that last page and do not decode the window, so a program that calls
the ROM rather than driving the ports itself will not work with a mouse.
The page matters even unread: MouseGraf 4.4 identifies a parallel mouse by
scanning slot ROM pages for the $18 $90 this one starts with, and will not
look at the ports of a card without it.
AgatF ships a 256-byte agatF-mmars.bin which is this same page with 17 bytes
changed: the real ROM’s JMP $C800 at $Cn40 — the jump into the expansion
window — is replaced by NOPs and an inline return. That is a modified ROM, and
this table is for unmodified ones, so tools/build_roms.py deliberately has no
AgatF fallback for this key. Either page satisfies MouseGraf’s scan, which is
all that is used here, so nothing is lost by preferring the original.
Both projects were also read to work out how the hardware behaves, and this
emulator would not exist without them. Specific debts are noted in the source
where they apply — baseram.c for the two memory maps, videoprocs.c,
videosel7.c and videosel9.c for the video, fdd.c and fdd1.c for the two
floppy controllers, and dsk2nib.c / dsk2hfe.c for the sector encoders.
sm6337d27, sm6337d28, sm6337d29: the printer’s own firmwareThree К573РФ6А of 8K from a СМ6337 matrix printer, dumped and published at
https://oldpc.su/pc/sm/sm6337/index.html as 6337rom.rar. They are the
printer’s whole program: D27 and D28 are 8080 code and the 9x11 font, D29 is
the 18x23 font that quality print uses. src/sm6337.js runs them, and
SM6337.md says what the machine around them is.
Not to be confused with the mouse key above. agat-emulator’s file for that
one is also called cm6337.rom, but it is the 2K ROM on the Agat’s printer
card — the driver that talks to a СМ6337 over the cable. One is the host’s
end, the other is the printer’s.
The same page has a second set for the СМ6337.06 (cm6337_firmwares.zip,
015М and 015-01М) and a test EPROM; neither is bundled and neither has been
run here.
The ROMs themselves are Soviet-era firmware whose copyright status is unclear; they are redistributed here on the same basis as the two projects above. If you are their rights holder and would rather they were not, please open an issue.