Skip to content

System 2000

Choose a tag to compare

@metebalci metebalci released this 29 Sep 10:13
· 146 commits to 078f94e203d075b04d7504792e74771a5165d1d6 since this release

System 2000

The first release for QUUX, the CADR evolved. System 2000 runs only on QUUX,
on microcode 2000 and boot PROM 2000; the CADR's systems are the 1000s, on
the cadr branch.
docs/release-2000.md
lists every change, one by one.

The band on the disk was compiled by the system from the sources in
release-2000-sys.tar.gz, every file, made into a cold load, loaded with
QLD and saved, all on QUUX.

What changed

  • QUUX only. The band and the microcode check the machine at boot and
    stop on anything but QUUX hardware revision 11 or later. The system takes
    its sizes from QUUX's feature page: the PDL buffer, the level-1 map, the
    video controller's screen.
  • QUUX's own devices, on its register page at 17777400: block-disk,
    whose disk is a GPT disk (a VHD on the host); a real-time clock, which a
    boot takes the time from; a file device, through which SYS: is on
    HOST, the machine's host folder, so no file server is needed; three
    interval timers, the tick among them; the video controller, a one-bit
    frame buffer up to 1920 by 1080.
  • The boot PROM saves nothing and writes nothing to the disk, and
    resets the devices; the PROM and the microcode find the microcode and the
    band by the disk's GPT.
  • Faster simple instructions (the fused return, on revision 12): the
    microcode fills QUUX's MACRO DISPATCH MEMORY at every start, with
    specialised handlers for moves, pops, branches and three arithmetic
    instructions on locals and arguments.
  • Time zones by name (a tzdata zone in the site's :TIMEZONE), and
    FILE dates in UTC on the wire.
  • Faults fixed in dates (1900, 2000 and after 2100; summer time;
    four-digit years), division by the most negative fixnum, the error table,
    QLD, the directory date parser and pathname matching, among others.
  • The herald names the site and the machine type; the site defines
    LISPM-1 to LISPM-7.

Known faults are listed at the end of the notes.

Assets

File Bytes SHA-256
release-2000-disk.vhd.gz 6,013,023 8dd7a9b353339f7be482a0090449e019170c827f330ac44fd889f9e7285caa6f
release-2000-sys.tar.gz 4,494,691 e953c7d844c787ec43a9d5939badbd31d0f745a792a0b64f78f8932015df9954
release-2000-promh.mcr 143,360 1fcb62bc6d8cf8e1170a422e1401a2261043d1d1c1f9fb5f3f9450fdc0a54058
SHA256SUMS 358 99e8f34aeeba038f9072fdd9db517ae231aecca25e84027d35b46dd25e1514fa

SHA256SUMS gives these and the disk uncompressed, release-2000-disk.vhd
(25,175,040 bytes, 77178ef2c2cda8f00354e81809d87fc4b644c3c342dca9c9f7bed12833dade8e). A VHD's own bytes differ with every
conversion, so the build is identified by the disk as raw blocks:
269,562,880 bytes, SHA-256 dff94dce039ab2b3bd361126bcc70b854bcff402980ce9b7240e2dff1b98868e (qemu-img convert -f vpc -O raw).

  • The disk is a GPT disk as a dynamic VHD, 263,245 blocks of 1024
    bytes: MCR1, "MCR1 UCADR 2000", microcode 2000, and LOD1, "LOD1 System
    2000", the band, both current (GPT attribute bit 48); MCR2, PAGE and LOD2
    to LOD4 are empty and zero. Made with sgdisk and dd, converted with
    qemu-img 10.2.1 (docs/building.md, "Writing QUUX's release disk").
  • The sources unpack to release-2000/: the repository at tag
    release-2000 (commit 3997c39c837d29a5f4df4ada3694d0b15bbdd8da), plus sys/ubin/: microcode 2000 and
    boot PROM 2000 assembled from sys/ucadr/, which the error handler reads
    at run time and a rebuild needs. Every member is owned by root.
  • The boot PROM, release-2000-promh.mcr, is the one part of the system
    not on the disk: quux --prom takes it. It is muir-sim's built-in QUUX
    PROM byte for byte.
  • site/ in the sources is the site the band was built with, :MIT,
    an example to copy.

Verification

Built on 2026-09-29 from commit 70e280a8230c9aa969fbd090928bdab8e3ea4f4c, whose tree differs from the tag's in README.md and docs/ alone, on muir-sim f9f4cf0's
quux (QUUX revision 12), micro engine, on QUUX alone, with no file server
but the machine's file device. The builder was the previous System 2000 band
on the new microcode. Every file was compiled, 217 compiled files in
1h44m27s with the site, the readtables and WORMCH (SYSTEM alone 1h38m02s);
MAKE-COLD took 3m35s, and the unattended QLD, from the cold boot to the
save, 13m22s. Microcode 2000 and boot PROM 2000 were each assembled twice from the
commit's sys/ucadr/, and the two assemblies agree byte for byte in all four
files of each.

The band, booted from a copy of the published disk with the sources unpacked
from the published tarball as its host folder, prints "MIT System, band 1 of
LISPM-1", System 2000, microcode 2000, machine type QUUX, site MIT; reads
SYS: files through the file device; regenerates WORMCH equal to the loaded
font; and gives, on micro, the arithmetic checks of 1001 and the 2304
division cases exactly as before (the one exception is (%div 0 0), a
known fault); the same checks but the long arithmetic ones pass on rtl.
muir-sim f9f4cf0's own System 2000 tests pass on it, on micro and rtl: the video
controller and its sizes, the ticks and the timers (word 110 reads 401 and
word 111 16,667, INTR-TICK 600 times in 10 s after a cold boot, a
%DISK-RESTORE and a warm boot), a restore of the band, and the fused
return filled by the microcode at every start. Thirteen workloads on micro
and on rtl ran with the fused return's checkers counting no problem. A
session of login, the editor, a compile, a directory listing, a font loaded
on demand, the inspector and PEEK opened no compiled file the sources lack;
with one font's compiled file taken away, that file is the one reported.
The machine wrote only PAGE; the GPT and both loaded partitions were as
published afterwards. MCR1 holds sys/ubin/ucadr.mcr, LOD1 the saved band,
and every other partition, PAGE included, is zero. The sums were taken
before any boot and read again after. Not checked here: a QUUX board.

Running it

System 2000 needs QUUX hardware revision 11 or later: muir-sim's quux, or
a QUUX bitstream of muir-fpga. Its SYS: is on the file device, so the
machine's host folder must hold sys/ and site/ from the sources and a
home for the login:

gunzip release-2000-disk.vhd.gz
tar -xzf release-2000-sys.tar.gz
mkdir -p root/home/lispm
cp -a release-2000/sys release-2000/site root/

quux --micro --disk-pack release-2000-disk.vhd --file-root $PWD/root

--micro is the faster engine; quux runs the register-transfer engine,
at the machine's own speed, without it.

The copies keep the unpacked sources as they are, since the machine writes
under its host folder. The machine boots to "MIT System, band 1 of LISPM-1"
and "Experimental System 2000", "Microcode 2000", "Machine Type QUUX".
quux serves the screen, keyboard and mouse over RFB, for any VNC viewer
(quux --help, --terminal). Log in with (login "LISPM" "HOST" t).

Upgrading from System 1001

Nothing carries over between bands: a release is a whole band, and there are
no patches. System 2000 does not run on the CADR; the CADR's next system is
1002, on the cadr branch.

Licence

GNU Affero General Public License, version 3 or later. LICENSE and NOTICE
are in the sources tarball; NOTICE gives the sources' provenance and every
copyright notice in the tree that is not MIT's.