Microcode
Home ] Up ] New Stuff ] Minix Port ] Magic-2? ] Overview ] Photo Gallery ] Construction ] My Other Projects ] Links ]

System Microcode

This page is actually the root for the source code of the M-1 microcode to be used in the microcode-level simulator, as well as the actual bits to be burned into the proms.  It is processed by extracting the text and processing with cpp and a Perl script (see the Software page for more details).  The created files are:

bulletmcode.h - Description of the fields within the microinstruction word.
bulletmcode.c - An initialized array representing the microcode image.
bulletmcdefs.h - #defines for microcode fields.
bulletprombits.h - The initialization declaration for the 512 56-bit microinstruction words.
bulletprom0.hex .. prom4.hex - Hex images of the slices of the microcode store to be fed into the PROM programmer.
bulletopcodes.h - Opcode strings.

The current(12/8/2007) versions follow:

bulletV2.3 - Fixed ENTER bug
bulletV2.2 - 16-bit memory-to-memory ops, Minix tuning
bulletV2.1 - Experimental, acceleration for Minix
bulletV2.0 - Stable.  16-bit offsets, new page table support

Older, obsolete versions are:

Release versions:

bulletV1.0 - working in simulator
bulletV1.5 - Stable, 4 nops (no Forth opcodes yet)

Test versions:

bulletT0 - Simple sequencing via NEXT field; no other testing
bulletT1 - Conditional branching
bulletT2 - While taking DMA_REQ interrupt, fetch and execute instruction at 0x00 (which is an 0x83)
bullet T3 - ALU tests (no memory access)
bulletT4 - Tight microcode loop test of critical ALU path (mdr -> L -> ALU -> C bit -> MSW
bulletT5 - Tight microcode loop exercising memory read critical path

Development version:

bulletTop of trunk.
bulletSpecial 16-bit displacement version
bullet16-bit displacement, new page table structure

horizontal rule

Hit Counter