Home of the original IBM PC emulator for browsers.
The RQDX3 is DEC’s Q22-bus MSCP disk controller. On this machine it presents the OpenVMS system
volume as DUA0:, and the emulated controller is the RQDX3
Component driving
modules/v2/rq.js, a port of Open SIMH’s pdp11_rq.c.
Machines containing the RQDX3 Component include:
The disks those machines can mount are listed in the following RQDX3 Device XML file:
which is typically referenced by a Machine XML file as:
<device ref="/machines/dec/vax/rqdx3/default.xml" autoMount='{DUA0:{path:"/vaxdisks/vms55-rd54.dsk"}}'/>
Device XML files not only configure a device, but also list all the resources the device will use, and define UI elements used to control the device, such as choosing which disks should be “auto-mounted” by the RQDX3 device. For example:
<?xml version="1.0" encoding="UTF-8"?>
<device id="rqdx3" type="rqdx3" autoMountExample='{DUA0:{path:"/vaxdisks/vms55-rd54.dsk"}}' pos="left" width="45%" padLeft="8px" padBottom="8px">
<control type="container">
<control type="list" binding="listDisks">
<disk id="disk01" name="VAX/VMS V5.5-2H4 (RD54)" path="/vaxdisks/vms55-rd54.dsk"/>
<disk id="disk02" name="VAX/VMS V5.5-2H4 (RD54, gzip)" path="/vaxdisks/vms55-rd54.dsk.gz"/>
</control>
<control type="button" binding="loadDisk">Load</control>
<control type="description" binding="descDisk" padRight="8px"/>
<control type="file" binding="mountDisk"/>
</control>
</device>
The images are raw, not JSON. PCjs’s own disk component already loads raw binary images by
path — pcx86/modules/v2/disk.js documents *.img paths, fetches them with getResource(), and
hands non-string responses straight to buildDisk(). So no conversion step is involved here. What
is unusual is the size: an OpenVMS system volume is 159,334,400 bytes, roughly eight times the
largest media PCjs otherwise references (/harddisks/pcx86/20mb/*.json).
A .gz path is decompressed transparently. GitHub rejects any file over 100 MB, so a
repo-hosted deployment cannot serve the raw image at all; gzipped it is 20,038,241 bytes. The
decode is a DecompressionStream step inside this device’s own loader, before the bytes reach the
drive — the same code path either way. The shipped autoMount uses the raw image, served from
the vaxdisks media host; the .gz entry is listed for deployments that cannot.
Either way the machine page takes no query parameters: the media is named by the device XML, not by the URL.