Based on MIXAL from Darius Bacon.
See runhello
for example usage.
You can check James L. Peterson's Computer Organization and Assembly Language Programming book, which uses the MIX machine.
For a reference see the MIX Reference Card.
If you want to run the real thing, you can try Michael Schroeder's MIX-fpga !
Changes:
- Tyme unit is 6us, drum size is 512 sectors, drum/disk rotational delay, tape load-point
- added unchecked transcripts of Knuth's MIX assembly program, Threetran interpreter and compiler
- Mixmaster mode: memory size is 32KW, r1-r6 is 5 digits + sign, the instruction format AAAA J0 LR CC, specify the address JAAAA
- changed CPrM syntax to CPMr (CI = reg:M)
- fixed shifts, punch object card deck, NUM handles overpunch,
debugged I/O, runs Peterson's load-and-go assembler (see
runprimes
) - fixed INT encoding (C=5,F=9), added MIX360 user manual and UT-MIX manual
- ALF statement without quotes
- assemble only
- core memory support (non-volatile memory)
- punch object card deck
- GO button
- MIXmaster instructions added: XEQ (execute), CPrM (CI = reg:M)
- indirect/double-addressing
- UT-MIX instructions added: NEG, XCH
- binary instructions: OR, XOR, AND, SLB, SRB, JrE, JrO
- interrupt facility, real-time clock (INT instruction)
- limited size of drum and tape devices
- memory dump of non-zero locations, with instruction frequency counts
- instruction execution trace
- count idle time waiting for I/O to complete
- MinGW port
- overlapping I/O buffer checks, incomplete I/O detection
- reference card
- card reader/punch and printer can use files instead of stdin/stdout
- time dependent I/O (low-end Burroughs B5500 peripheral timing)
- tape devices
NOTE: execution trace and memory dump mechanics loosely follows Knuth, Sites: MIX/360 User's Guide. For the UT-MIX extensions see Peterson: UT-MIX Reference Manual. Good luck!