Embedded RTOS class project. This project allows a Python/Tk program running on a PC host to monitor/control a test-CPU programmed into an altera development board.

Dependencies:   C12832_lcd USBDevice mbed-rtos mbed mmSPI-2 watchdog

Fork of USB_device_project by Mike Moore

Files at this revision

API Documentation at this revision

Comitter:
gatedClock
Date:
Sun Sep 01 03:48:07 2013 +0000
Parent:
6:b42075c1c1c1
Child:
8:db29cce17a33
Commit message:
improve tab formatting of code under mmRTL.

Changed in this revision

mmRTL/counter_08.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/cpu.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/instruction_decoder.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/main_memory.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/mux16x2.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/mux8x16.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/mux8x8.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/reg_08.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/reg_16.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/scan_08.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/scan_16.txt Show annotated file Show diff for this revision Revisions of this file
mmRTL/shadow_load_control.txt Show annotated file Show diff for this revision Revisions of this file
--- a/mmRTL/counter_08.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/counter_08.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,101 +1,101 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module counter_08
+        module counter_08
         (
-         oCount,                // counter state.
-         iParallel7,                // parallel-input  data.
-         iParallel6,                // parallel-input  data.
-         iParallel5,                // parallel-input  data.
-         iParallel4,                // parallel-input  data.
-         iParallel3,                // parallel-input  data.
-         iParallel2,                // parallel-input  data.
-         iParallel1,                // parallel-input  data.
-         iParallel0,                // parallel-input  data.
-     iSel,                  // select the parallel input.
-     oSerial,               // serial-output data.
-     iSerial,               // serial-input data.
-     iLoadEnable,               // parallel-load-enable.
-     iShiftEnable,              // serial-shift-enable.
-     iCountEnable,              // count-increment enable.
-     iResetN,               // synchronous reset*.
-     iClk                   // module clock.
+         oCount,                                // counter state.
+         iParallel7,                            // parallel-input  data.
+         iParallel6,                            // parallel-input  data.
+         iParallel5,                            // parallel-input  data.
+         iParallel4,                            // parallel-input  data.
+         iParallel3,                            // parallel-input  data.
+         iParallel2,                            // parallel-input  data.
+         iParallel1,                            // parallel-input  data.
+         iParallel0,                            // parallel-input  data.
+         iSel,                                  // select the parallel input.
+         oSerial,                               // serial-output data.
+         iSerial,                               // serial-input data.
+         iLoadEnable,                           // parallel-load-enable.
+         iShiftEnable,                          // serial-shift-enable.
+         iCountEnable,                          // count-increment enable.
+         iResetN,                               // synchronous reset*.
+         iClk                                   // module clock.
         );
 /*--------------------------------description-----------------------------------
-    an 8-bit preloadable counter.
+        an 8-bit preloadable counter.
 -------------------------------------notes--------------------------------------
-    shifting is LSB->MSB.
+        shifting is LSB->MSB.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    output  [ 7:0]  oCount;         // counter state.
-    input   [ 7:0]  iParallel7;     // parallel-input  data.
-    input   [ 7:0]  iParallel6;     // parallel-input  data.
-    input   [ 7:0]  iParallel5;     // parallel-input  data.
-    input   [ 7:0]  iParallel4;     // parallel-input  data.
-    input   [ 7:0]  iParallel3;     // parallel-input  data.
-    input   [ 7:0]  iParallel2;     // parallel-input  data.
-    input   [ 7:0]  iParallel1;     // parallel-input  data.
-    input   [ 7:0]  iParallel0;     // parallel-input  data.
-    input   [ 2:0]  iSel;           // select the parallel input.
-    output          oSerial;        // serial-output data.
-    input           iSerial;        // serial-input data.
-    input           iLoadEnable;        // parallel-load-enable.
-    input           iShiftEnable;       // serial-shift-enable.
-    input           iCountEnable;       // count-increment enable.
-    input           iResetN;        // synchronous reset*.
-    input           iClk;           // module clock.
+        output  [ 7:0]  oCount;                 // counter state.
+        input   [ 7:0]  iParallel7;             // parallel-input  data.
+        input   [ 7:0]  iParallel6;             // parallel-input  data.
+        input   [ 7:0]  iParallel5;             // parallel-input  data.
+        input   [ 7:0]  iParallel4;             // parallel-input  data.
+        input   [ 7:0]  iParallel3;             // parallel-input  data.
+        input   [ 7:0]  iParallel2;             // parallel-input  data.
+        input   [ 7:0]  iParallel1;             // parallel-input  data.
+        input   [ 7:0]  iParallel0;             // parallel-input  data.
+        input   [ 2:0]  iSel;                   // select the parallel input.
+        output          oSerial;                // serial-output data.
+        input           iSerial;                // serial-input data.
+        input           iLoadEnable;            // parallel-load-enable.
+        input           iShiftEnable;           // serial-shift-enable.
+        input           iCountEnable;           // count-increment enable.
+        input           iResetN;                // synchronous reset*.
+        input           iClk;                   // module clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  oCount;         // counter state.
-    wire    [ 7:0]  iParallel7;     // parallel-input  data.
-    wire    [ 7:0]  iParallel6;     // parallel-input  data.
-    wire    [ 7:0]  iParallel5;     // parallel-input  data.
-    wire    [ 7:0]  iParallel4;     // parallel-input  data.
-    wire    [ 7:0]  iParallel3;     // parallel-input  data.
-    wire    [ 7:0]  iParallel2;     // parallel-input  data.
-    wire    [ 7:0]  iParallel1;     // parallel-input  data.
-    wire    [ 7:0]  iParallel0;     // parallel-input  data.
-    wire    [ 2:0]  iSel;           // select the parallel input.
-    wire    [ 7:0]  wParallelIn;        // select the parallel input.
-    wire            oSerial;        // serial-output data.
-    wire            iSerial;        // serial-input data.
-    wire            iLoadEnable;        // parallel-load-enable.
-    wire            iShiftEnable;       // serial-shift-enable.
-    wire            iCountEnable;       // count-increment enable.
-    wire            iResetN;        // synchronous reset*.
-    wire            iClk;           // module clock.
+        wire    [ 7:0]  oCount;                 // counter state.
+        wire    [ 7:0]  iParallel7;             // parallel-input  data.
+        wire    [ 7:0]  iParallel6;             // parallel-input  data.
+        wire    [ 7:0]  iParallel5;             // parallel-input  data.
+        wire    [ 7:0]  iParallel4;             // parallel-input  data.
+        wire    [ 7:0]  iParallel3;             // parallel-input  data.
+        wire    [ 7:0]  iParallel2;             // parallel-input  data.
+        wire    [ 7:0]  iParallel1;             // parallel-input  data.
+        wire    [ 7:0]  iParallel0;             // parallel-input  data.
+        wire    [ 2:0]  iSel;                   // select the parallel input.
+        wire    [ 7:0]  wParallelIn;            // select the parallel input.
+        wire            oSerial;                // serial-output data.
+        wire            iSerial;                // serial-input data.
+        wire            iLoadEnable;            // parallel-load-enable.
+        wire            iShiftEnable;           // serial-shift-enable.
+        wire            iCountEnable;           // count-increment enable.
+        wire            iResetN;                // synchronous reset*.
+        wire            iClk;                   // module clock.
 /*---------------------------------registers----------------------------------*/
-        reg     [ 7:0]  rRegister;      // the counter state.
+        reg     [ 7:0]  rRegister;              // the counter state.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
-    mux8x8 U01_mux8x8           // data-input selection.
+        mux8x8 U01_mux8x8                       // data-input selection.
         (
-     .iDin7(iParallel7),
-     .iDin6(iParallel6),
-     .iDin5(iParallel5),
-     .iDin4(iParallel4),
-     .iDin3(iParallel3),
-     .iDin2(iParallel2),
-     .iDin1(iParallel1),
-     .iDin0(iParallel0),
-     .iSel (iSel),
-     .oDout(wParallelIn)
+         .iDin7(iParallel7),
+         .iDin6(iParallel6),
+         .iDin5(iParallel5),
+         .iDin4(iParallel4),
+         .iDin3(iParallel3),
+         .iDin2(iParallel2),
+         .iDin1(iParallel1),
+         .iDin0(iParallel0),
+         .iSel (iSel),
+         .oDout(wParallelIn)
         );
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iClk or negedge iResetN)
-    begin
-           if (!iResetN)     rRegister <= 8'h00;
-      else if (iLoadEnable)  rRegister <= wParallelIn;
-      else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
-      else if (iCountEnable) rRegister <= rRegister + 1'b1;
-      else                   rRegister <= rRegister;
-    end
+        always @ (posedge iClk or negedge iResetN)
+        begin
+               if (!iResetN)     rRegister <= 8'h00;
+          else if (iLoadEnable)  rRegister <= wParallelIn;
+          else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
+          else if (iCountEnable) rRegister <= rRegister + 1'b1;
+          else                   rRegister <= rRegister;
+        end
 
-    assign oCount    = rRegister;       // propagate counter state.
-    assign oSerial   = rRegister[7];    // propagate serial-out.
+        assign oCount    = rRegister;           // propagate counter state.
+        assign oSerial   = rRegister[7];        // propagate serial-out.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -113,3 +113,20 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/mmRTL/cpu.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/cpu.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,169 +1,169 @@
 /*----------------------------------copyright---//----------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----//----------------------------*/
-    module cpu
+        module cpu
         (
-      iMOSI,
+          iMOSI,
           oMISO,
-      iSPIclk,
-      iCPUclk,
-      iKEY,
-      iSW,
-      oLEDR,
-      oLEDG,
-      oDummyLoad
+          iSPIclk,
+          iCPUclk,
+          iKEY,
+          iSW,
+          oLEDR,
+          oLEDG,
+          oDummyLoad
         );
 /*--------------------------------description---//------------------------------
-    the demonstration cpu datapath.
+        the demonstration cpu datapath.
 
-    the CPU consists of
-    R0 -  8-bit register and accumulator.
-    R1 -  8-bit register and main-memory address register.
-    R2 -  8-bit register and main-memory high data byte.
-    R3 -  8-bit register and main-memory low  data byte.
-    PC -  8-bit program counter.
-    IR - 16-bit instruction register.
-    ID -        combinatorial instruction decoder.
-    MM -        16-bit-wide x 256-address Main Memory.
+        the CPU consists of
+        R0 -  8-bit register and accumulator.
+        R1 -  8-bit register and main-memory address register.
+        R2 -  8-bit register and main-memory high data byte.
+        R3 -  8-bit register and main-memory low  data byte.
+        PC -  8-bit program counter.
+        IR - 16-bit instruction register.
+        ID -        combinatorial instruction decoder.
+        MM -        16-bit-wide x 256-address Main Memory.
 
-    the instruction words is sixteen bits long, and is comprised of
-    <15:13> = source resource.
-    <12:10> = destination resource.
-    <    9> = write-enable.
-    <    8> = program-counter-enable.
-    < 7: 0> = immediate data.
+        the instruction words is sixteen bits long, and is comprised of
+        <15:13> = source resource.
+        <12:10> = destination resource.
+        <    9> = write-enable.
+        <    8> = program-counter-enable.
+        < 7: 0> = immediate data.
 
-    the registers (U00 through U05) have a iSel input which define the source.
-    the instruction decoder (U06) enables the loading of the destinations.
+        the registers (U00 through U05) have a iSel input which define the source.
+        the instruction decoder (U06) enables the loading of the destinations.
 
-    the SPI shadow registers (U19-U25) monitor the CPU state, and can
-    control the CPU state by asserting U19's bits 1 and 2.
+        the SPI shadow registers (U19-U25) monitor the CPU state, and can
+        control the CPU state by asserting U19's bits 1 and 2.
 
-    U08 provides a shadow register load-enable pulse which
-        begins at the falling edge of a CPU clock and ends at
-        the falling edge of the next SPI clock, allowing the shadow
+        U08 provides a shadow register load-enable pulse which
+            begins at the falling edge of a CPU clock and ends at
+            the falling edge of the next SPI clock, allowing the shadow
             registers the ability to capture the state of the CPU.
 
-    U30 routes internal nets out to the green LED bank according
-        to the setting of switches SW<3:0>.
+        U30 routes internal nets out to the green LED bank according
+            to the setting of switches SW<3:0>.
 
 -------------------------------------notes------//------------------------------
 
-    fpga board pin assignments.
+        fpga board pin assignments.
 
 
-    project:
-    MOSI    P17
-    MISO    D15
-    SPIclk  E20
-    CPUclk  E14
+        project:
+        MOSI    P17
+        MISO    D15
+        SPIclk  E20
+        CPUclk  E14
 
 
-    key3    T21
-    key2    T22
-    key1    R21
-    key0    R22 iRstn
+        key3    T21
+        key2    T22
+        key1    R21
+        key0    R22     iRstn
 
-    sw9 L2
-    sw8 M1
-    sw7 M2
-    sw6 U11
-    sw5 U12
-    sw4 W12
-    sw3 V12
-    sw2 M22
-    sw1 L21
-    sw0 L22
+        sw9     L2
+        sw8     M1
+        sw7     M2
+        sw6     U11
+        sw5     U12
+        sw4     W12
+        sw3     V12
+        sw2     M22
+        sw1     L21
+        sw0     L22
 
-    ledr9   R17
-    ledr8   R18
-    ledr7   U18
-    ledr6   Y18
-    ledr5   V19
-    ledr4   T18
-    ledr3   Y19
-    ledr2   U19
-    ledr1   R19
-    ledr0   R20
+        ledr9   R17
+        ledr8   R18
+        ledr7   U18
+        ledr6   Y18
+        ledr5   V19
+        ledr4   T18
+        ledr3   Y19
+        ledr2   U19
+        ledr1   R19
+        ledr0   R20
 
-    ledg7   Y21
-    ledg6   Y22
-    ledg5   W21
-    ledg4   W22
-    ledg3   V21
-    ledg2   V22
-    ledg1   U21
-    ledg0   U22
+        ledg7   Y21
+        ledg6   Y22
+        ledg5   W21
+        ledg4   W22
+        ledg3   V21
+        ledg2   V22
+        ledg1   U21
+        ledg0   U22
 ------------------------------------defines-----//----------------------------*/
 /*-----------------------------------ports------//----------------------------*/
-    input           iMOSI;          // SPI input.
-    output          oMISO;          // SPI output.
-    input           iSPIclk;        // SPI clock.
-    input           iCPUclk;        // CPU clock.
-    input   [ 3:0]  iKEY;           // keypress.
-    input   [ 9:0]  iSW;            // slide-switches.
-    output  [ 9:0]  oLEDR;          // red   LED bank.
-    output  [ 7:0]  oLEDG;          // green LED bank.
-    output          oDummyLoad;     // anti-optimization.
+        input           iMOSI;                  // SPI input.
+        output          oMISO;                  // SPI output.
+        input           iSPIclk;                // SPI clock.
+        input           iCPUclk;                // CPU clock.
+        input   [ 3:0]  iKEY;                   // keypress.
+        input   [ 9:0]  iSW;                    // slide-switches.
+        output  [ 9:0]  oLEDR;                  // red   LED bank.
+        output  [ 7:0]  oLEDG;                  // green LED bank.
+        output          oDummyLoad;             // anti-optimization.
 /*-----------------------------------wires------//----------------------------*/
-    wire            iMOSI;          // SPI input.
-    wire            oMISO;          // SPI output.
-    wire            iSPIclk;        // SPI clock.
-    wire            iCPUclk;        // CPU clock.
-    wire    [ 3:0]  iKEY;           // keypress.
-    wire    [ 9:0]  iSW;            // slide-switches.
-    wire    [ 9:0]  oLEDR;          // red   LED bank.
-    wire    [ 7:0]  oLEDG;          // green LED bank.
+        wire            iMOSI;                  // SPI input.
+        wire            oMISO;                  // SPI output.
+        wire            iSPIclk;                // SPI clock.
+        wire            iCPUclk;                // CPU clock.
+        wire    [ 3:0]  iKEY;                   // keypress.
+        wire    [ 9:0]  iSW;                    // slide-switches.
+        wire    [ 9:0]  oLEDR;                  // red   LED bank.
+        wire    [ 7:0]  oLEDG;                  // green LED bank.
 
-    wire            wCEPC;          // program counter count-enable.
-    wire    [15:0]  wIR;            // instruction register.
-    wire            wLEIR;          // instruction register load-enable.
-    wire            wLEPC;          // program counter load-enable.
-    wire            wLER0;          // R0 load-enable.
-    wire            wLER1;          // R1 load-enable.
-    wire            wLER2;          // R2 load-enable.
-    wire            wLER3;          // R3 load-enable.
-    wire    [15:0]  wMMD;           // main-memory data-out.
-    wire    [15:0]  wMMI;           // main-memory instruction-out.
-    wire    [ 7:0]  wPC;            // program-counter.
-    wire    [ 7:0]  wR0;            // R0.
-    wire    [ 7:0]  wR1;            // R1.
-    wire    [ 7:0]  wR2;            // R2.
-    wire    [ 7:0]  wR3;            // R3.
-    wire            wRstn;          // system reset.
-    wire    [ 2:0]  wSel;           // common data-in selector.
-    wire    [ 7:0]  wShadow0;       // R0 shadow register.
-    wire    [ 7:0]  wShadow1;       // R1 shadow register.
-    wire    [ 7:0]  wShadow2;       // R2 shadow register.
-    wire    [ 7:0]  wShadow3;       // R3 shadow register.
-    wire    [15:0]  wShadowIR;      // instruction register shadow.
-    wire    [ 7:0]  wShadowPC;      // program counter shadow.
-    wire            wSIR;           // instruction register shadow shift-up.
-    wire            wSPC;           // program counter shadow shift-up.
-    wire            wSR0;           // R0 shadow shift-up.
-    wire            wSR1;           // R1 shadow shift-up.
-    wire            wSR2;           // R2 shadow shift-up.
-    wire            wSR3;           // R3 shadow shift-up.
-    wire            wWE;            // write-enable pulse.
-    wire    [ 7:0]  wImmediate;     // immediate data.
-    wire    [ 7:0]  wSpiControl;        // from spi control register.
-    wire            wSquelch;       // from spi control register.
-    wire            wBypassIR;      // from spi control register.
-    wire            wLoadShadows;       // shadow registers parallel load.
+        wire            wCEPC;                  // program counter count-enable.
+        wire    [15:0]  wIR;                    // instruction register.
+        wire            wLEIR;                  // instruction register load-enable.
+        wire            wLEPC;                  // program counter load-enable.
+        wire            wLER0;                  // R0 load-enable.
+        wire            wLER1;                  // R1 load-enable.
+        wire            wLER2;                  // R2 load-enable.
+        wire            wLER3;                  // R3 load-enable.
+        wire    [15:0]  wMMD;                   // main-memory data-out.
+        wire    [15:0]  wMMI;                   // main-memory instruction-out.
+        wire    [ 7:0]  wPC;                    // program-counter.
+        wire    [ 7:0]  wR0;                    // R0.
+        wire    [ 7:0]  wR1;                    // R1.
+        wire    [ 7:0]  wR2;                    // R2.
+        wire    [ 7:0]  wR3;                    // R3.
+        wire            wRstn;                  // system reset.
+        wire    [ 2:0]  wSel;                   // common data-in selector.
+        wire    [ 7:0]  wShadow0;               // R0 shadow register.
+        wire    [ 7:0]  wShadow1;               // R1 shadow register.
+        wire    [ 7:0]  wShadow2;               // R2 shadow register.
+        wire    [ 7:0]  wShadow3;               // R3 shadow register.
+        wire    [15:0]  wShadowIR;              // instruction register shadow.
+        wire    [ 7:0]  wShadowPC;              // program counter shadow.
+        wire            wSIR;                   // instruction register shadow shift-up.
+        wire            wSPC;                   // program counter shadow shift-up.
+        wire            wSR0;                   // R0 shadow shift-up.
+        wire            wSR1;                   // R1 shadow shift-up.
+        wire            wSR2;                   // R2 shadow shift-up.
+        wire            wSR3;                   // R3 shadow shift-up.
+        wire            wWE;                    // write-enable pulse.
+        wire    [ 7:0]  wImmediate;             // immediate data.
+        wire    [ 7:0]  wSpiControl;            // from spi control register.
+        wire            wSquelch;               // from spi control register.
+        wire            wBypassIR;              // from spi control register.
+        wire            wLoadShadows;           // shadow registers parallel load.
 
-                        // not currently used.
-    wire    [ 7:0]  wGreenLEDBus7;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus6;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus5;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus4;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus3;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus2;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus1;      // green LED bus.
-    wire    [ 7:0]  wGreenLEDBus0;      // green LED bus.
-    wire            oDummyLoad;     // anti-optimization.
-    wire    [ 3:0]  wTrigger;       // trigger control.
+                                                // not currently used.
+        wire    [ 7:0]  wGreenLEDBus7;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus6;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus5;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus4;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus3;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus2;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus1;          // green LED bus.
+        wire    [ 7:0]  wGreenLEDBus0;          // green LED bus.
+        wire            oDummyLoad;             // anti-optimization.
+        wire    [ 3:0]  wTrigger;               // trigger control.
 /*---------------------------------registers----//----------------------------*/
 /*---------------------------------variables----//----------------------------*/
 /*---------------------------------parameters---//----------------------------*/
@@ -173,29 +173,29 @@
 //---   begin regular CPU section.
 
 
-    reg_08 U00_R0               // CPU R0.      
+        reg_08 U00_R0                           // CPU R0.              
         (
          .oParallel   (wR0),
          .iParallel7  (wShadow0),
-         .iParallel6  (wR1 + wR2),      // adder.
+         .iParallel6  (wR1 + wR2),              // adder.
          .iParallel5  (wImmediate),
          .iParallel4  (wR0),
          .iParallel3  (wR3),
          .iParallel2  (wR2),
          .iParallel1  (wR1),
-         .iParallel0  (wR0),            // needed for zero vector no-op.
-     .iSel        (wSel),
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLER0),
-     .iShiftEnable(1'b0),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .iParallel0  (wR0),                    // needed for zero vector no-op.
+         .iSel        (wSel),
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLER0),
+         .iShiftEnable(1'b0),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
 
-    reg_08 U01_R1               // CPU R1.      
+        reg_08 U01_R1                           // CPU R1.              
         (
          .oParallel   (wR1),
          .iParallel7  (wShadow1),
@@ -206,18 +206,18 @@
          .iParallel2  (wR2),
          .iParallel1  (wR1),
          .iParallel0  (wR0),
-     .iSel        (wSel),
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLER1),
-     .iShiftEnable(1'b0),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .iSel        (wSel),
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLER1),
+         .iShiftEnable(1'b0),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
 
-    reg_08 U02_R2               // CPU R2.      
+        reg_08 U02_R2                           // CPU R2.              
         (
          .oParallel   (wR2),
          .iParallel7  (wShadow2),
@@ -228,17 +228,17 @@
          .iParallel2  (wR2),
          .iParallel1  (wR1),
          .iParallel0  (wR0),
-     .iSel        (wSel),
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLER2),
-     .iShiftEnable(1'b0),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .iSel        (wSel),
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLER2),
+         .iShiftEnable(1'b0),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
-    reg_08 U03_R3               // CPU R3.      
+        reg_08 U03_R3                           // CPU R3.              
         (
          .oParallel   (wR3),
          .iParallel7  (wShadow3),
@@ -249,18 +249,18 @@
          .iParallel2  (wR2),
          .iParallel1  (wR1),
          .iParallel0  (wR0),
-     .iSel        (wSel),
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLER3),
-     .iShiftEnable(1'b0),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .iSel        (wSel),
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLER3),
+         .iShiftEnable(1'b0),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
 
-    counter_08 U04_PC           // CPU program counter.
+        counter_08 U04_PC                       // CPU program counter.
         (
          .oCount      (wPC),
          .iParallel7  (wShadowPC),
@@ -271,174 +271,174 @@
          .iParallel2  (wR2),
          .iParallel1  (wR1),
          .iParallel0  (wR0),
-     .iSel        (wSel),
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLEPC),
-     .iShiftEnable(1'b0),
-     .iCountEnable(wCEPC),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .iSel        (wSel),
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLEPC),
+         .iShiftEnable(1'b0),
+         .iCountEnable(wCEPC),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
-    reg_16 U05_IR               // CPU instruction register.
+        reg_16 U05_IR                           // CPU instruction register.
         (
-         .oParallel   (wIR),            // IR state.
-         .iParallel1  (wShadowIR),      // IR shadow state.
-         .iParallel0  (wMMI),           // MM output.
-     .iSel        (wSpiControl[2]),     // special control.
-     .oSerial     (),
-     .iSerial     (1'b0),
-     .iLoadEnable (wLEIR),
-     .iShiftEnable(1'b0),
-     .iResetN     (wRstn),
-     .iClk        (iCPUclk)
+         .oParallel   (wIR),                    // IR state.
+         .iParallel1  (wShadowIR),              // IR shadow state.
+         .iParallel0  (wMMI),                   // MM output.
+         .iSel        (wSpiControl[2]),         // special control.
+         .oSerial     (),
+         .iSerial     (1'b0),
+         .iLoadEnable (wLEIR),
+         .iShiftEnable(1'b0),
+         .iResetN     (wRstn),
+         .iClk        (iCPUclk)
         );
 
 
-    instruction_decoder U06_ID      // instruction decoder.
+        instruction_decoder U06_ID              // instruction decoder.
         (
-     .iSquelch  (wSquelch),         // squelch when writing to IR.
-     .iIR       (wIR),          // instruction register.
-     .iBypass   (wShadowIR),        // IR bypass from SPI.
-     .iBypassIR (wBypassIR),        // bypass the IR.
-     .oSel      (wSel),         // common data-in selector.
-     .oLER0     (wLER0),            // R0 load-enable.
-     .oLER1     (wLER1),            // R1 load-enable.
-     .oLER2     (wLER2),            // R2 load-enable.
-     .oLER3     (wLER3),            // R3 load-enable.
-     .oLEPC     (wLEPC),            // PC load-enable.
-     .oWE       (wWE),          // write-enable pulse.
-     .oCEPC     (wCEPC),            // PC count-enable.
-     .oImmediate(wImmediate)        // immediate data.
+         .iSquelch  (wSquelch),                 // squelch when writing to IR.
+         .iIR       (wIR),                      // instruction register.
+         .iBypass   (wShadowIR),                // IR bypass from SPI.
+         .iBypassIR (wBypassIR),                // bypass the IR.
+         .oSel      (wSel),                     // common data-in selector.
+         .oLER0     (wLER0),                    // R0 load-enable.
+         .oLER1     (wLER1),                    // R1 load-enable.
+         .oLER2     (wLER2),                    // R2 load-enable.
+         .oLER3     (wLER3),                    // R3 load-enable.
+         .oLEPC     (wLEPC),                    // PC load-enable.
+         .oWE       (wWE),                      // write-enable pulse.
+         .oCEPC     (wCEPC),                    // PC count-enable.
+         .oImmediate(wImmediate)                // immediate data.
         );
 
 
 
-                        // main memory:
-                        // the program counter reads from read-port-0.
-                        // the R2:R1 port reads from read-port-1.
-                        // the R2:R1 port writes to the write port.
-                        // the R2:R1 port reads/writes using address from R3.
+                                                // main memory:
+                                                // the program counter reads from read-port-0.
+                                                // the R2:R1 port reads from read-port-1.
+                                                // the R2:R1 port writes to the write port.
+                                                // the R2:R1 port reads/writes using address from R3.
 
 
-    main_memory U07_MM          // main-memory.
+        main_memory U07_MM                      // main-memory.
         (
-     .iReadAddress1(wR3),           // from R3.
-     .iReadAddress0(wPC),           // from PC
-     .iWriteAddress(wR3),           // from R3
-     .oReadData1   (wMMD),          // to <R2:R1>
-     .oReadData0   (wMMI),          // to IR.
-     .iWriteData   ({wR2,wR1}),     // from <R2:R1>.
-     .iWE          (wWE),           // from the instruction decoder.
-     .iCPUclk      (iCPUclk)
+         .iReadAddress1(wR3),                   // from R3.
+         .iReadAddress0(wPC),                   // from PC
+         .iWriteAddress(wR3),                   // from R3
+         .oReadData1   (wMMD),                  // to <R2:R1>
+         .oReadData0   (wMMI),                  // to IR.
+         .iWriteData   ({wR2,wR1}),             // from <R2:R1>.
+         .iWE          (wWE),                   // from the instruction decoder.
+         .iCPUclk      (iCPUclk)
         );
 
 
-                        // load shadow-registers upon rising
-                        // edge of first SPI clock following
-                        // the falling edge of a CPU clock.
-    shadow_load_control U08_shadow_load // shadow-register load control.
+                                                // load shadow-registers upon rising
+                                                // edge of first SPI clock following
+                                                // the falling edge of a CPU clock.
+        shadow_load_control U08_shadow_load     // shadow-register load control.
         (
-     .iCPUclk(iCPUclk),
-     .iSPIclk(iSPIclk),
-     .iRstn(wRstn), 
-     .oLoadEnable(wLoadShadows)
+         .iCPUclk(iCPUclk),
+         .iSPIclk(iSPIclk),
+         .iRstn(wRstn), 
+         .oLoadEnable(wLoadShadows)
         );
 
 
 //---   begin SPI shadow-scan section.
 
 
-                        // the SPI scan registers are generally
-                        // given the term 'shadow registers'.
+                                                // the SPI scan registers are generally
+                                                // given the term 'shadow registers'.
 
 
-    scan_08 U19_spi_control         // top of SPI scan chain, used for control.
+        scan_08 U19_spi_control                 // top of SPI scan chain, used for control.
         (
-         .oParallel   (wSpiControl),        // green LED select 7.
-         .iParallel   (wSpiControl),        // self-refresh.
-     .oSerial     (oMISO),
-     .iSerial     (wSR0),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oParallel   (wSpiControl),            // green LED select 7.
+         .iParallel   (wSpiControl),            // self-refresh.
+         .oSerial     (oMISO),
+         .iSerial     (wSR0),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
 
 
-    scan_08 U20_shadowR0            // R0 shadow register.
+        scan_08 U20_shadowR0                    // R0 shadow register.
         (
-         .oParallel   (wShadow0),       // green LED select 6.
+         .oParallel   (wShadow0),               // green LED select 6.
          .iParallel   (wR0),
-     .oSerial     (wSR0),
-     .iSerial     (wSR1),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSR0),
+         .iSerial     (wSR1),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
-    scan_08 U21_shadowR1            // R1 shadow register.
+        scan_08 U21_shadowR1                    // R1 shadow register.
         (
-         .oParallel   (wShadow1),       // green LED select 5.
+         .oParallel   (wShadow1),               // green LED select 5.
          .iParallel   (wR1),
-     .oSerial     (wSR1),
-     .iSerial     (wSR2),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSR1),
+         .iSerial     (wSR2),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
-    scan_08 U22_shadowR2            // R2 shadow register.
+        scan_08 U22_shadowR2                    // R2 shadow register.
         (
-         .oParallel   (wShadow2),       // green LED select 4.
+         .oParallel   (wShadow2),               // green LED select 4.
          .iParallel   (wR2),
-     .oSerial     (wSR2),
-     .iSerial     (wSR3),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSR2),
+         .iSerial     (wSR3),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
-    scan_08 U23_shadowR3            // R3 shadow register.
+        scan_08 U23_shadowR3                    // R3 shadow register.
         (
-         .oParallel   (wShadow3),       // green LED select 3.
+         .oParallel   (wShadow3),               // green LED select 3.
          .iParallel   (wR3),
-     .oSerial     (wSR3),
-     .iSerial     (wSPC),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSR3),
+         .iSerial     (wSPC),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
-    scan_08 U24_shadowPC            // program-counter shadow register.
+        scan_08 U24_shadowPC                    // program-counter shadow register.
         (
-         .oParallel   (wShadowPC),      // green LED select 2.
+         .oParallel   (wShadowPC),              // green LED select 2.
          .iParallel   (wPC),
-     .oSerial     (wSPC),
-     .iSerial     (wSIR),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSPC),
+         .iSerial     (wSIR),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
-    scan_16 U25_shadowIR            // instruction-register shadow register.
+        scan_16 U25_shadowIR                    // instruction-register shadow register.
         (
-         .oParallel   (wShadowIR),      // green LED select 1,0.
+         .oParallel   (wShadowIR),              // green LED select 1,0.
          .iParallel   (wIR),
-     .oSerial     (wSIR),
-     .iSerial     (iMOSI),
-     .iLoadEnable (wLoadShadows),
-     .iShiftEnable(1'b1),
-     .iResetN     (wRstn),
-     .iClk        (iSPIclk)
+         .oSerial     (wSIR),
+         .iSerial     (iMOSI),
+         .iLoadEnable (wLoadShadows),
+         .iShiftEnable(1'b1),
+         .iResetN     (wRstn),
+         .iClk        (iSPIclk)
         );
 
 
@@ -447,54 +447,54 @@
 
 
 
-    mux8x16 U30_green_led_mux       // green LED diagnostic mux.
+        mux8x16 U30_green_led_mux               // green LED diagnostic mux.
         (
-     .iDin15({wLER0,wLER1,wLER2,wLER3,wLEPC,wLEIR,wWE,wCEPC}),
-     .iDin14(wIR[15:8]),            // IR-H.
-     .iDin13(wIR[7:0]),         // IR-L.
-     .iDin12(wPC),              // PC.
-     .iDin11(wR3),              // R3.
-     .iDin10(wR2),              // R2.
-     .iDin9 (wR1),              // R1.
-     .iDin8 (wR0),              // R0.
-     .iDin7 (wSpiControl),          // SPI control.
-     .iDin6 (wShadowIR[15:8]),      // IR-H shadow.
-     .iDin5 (wShadowIR[7:0]),       // IR-L shadow.
-     .iDin4 (wShadowPC),            // PC   shadow.
-     .iDin3 (wShadow3),         // R3   shadow.
-     .iDin2 (wShadow2),         // R2   shadow.
-     .iDin1 (wShadow1),         // R1   shadow.
-     .iDin0 (wShadow0),         // R0   shadow.
-     .iSel  (iSW[3:0]),         // mux-select.
-     .oDout (oLEDG)             // to green LED bank.
+         .iDin15({wLER0,wLER1,wLER2,wLER3,wLEPC,wLEIR,wWE,wCEPC}),
+         .iDin14(wIR[15:8]),                    // IR-H.
+         .iDin13(wIR[7:0]),                     // IR-L.
+         .iDin12(wPC),                          // PC.
+         .iDin11(wR3),                          // R3.
+         .iDin10(wR2),                          // R2.
+         .iDin9 (wR1),                          // R1.
+         .iDin8 (wR0),                          // R0.
+         .iDin7 (wSpiControl),                  // SPI control.
+         .iDin6 (wShadowIR[15:8]),              // IR-H shadow.
+         .iDin5 (wShadowIR[7:0]),               // IR-L shadow.
+         .iDin4 (wShadowPC),                    // PC   shadow.
+         .iDin3 (wShadow3),                     // R3   shadow.
+         .iDin2 (wShadow2),                     // R2   shadow.
+         .iDin1 (wShadow1),                     // R1   shadow.
+         .iDin0 (wShadow0),                     // R0   shadow.
+         .iSel  (iSW[3:0]),                     // mux-select.
+         .oDout (oLEDG)                         // to green LED bank.
         );
 /*-----------------------------------logic------//----------------------------*/
-    assign wRstn     = iKEY[0];     // pushbutton system reset.
-    assign wSquelch  = wSpiControl[2];  // for python squelching ins. decode.
-    assign wBypassIR = wSpiControl[1];  // for python controlling CPU.
-    assign wTrigger  = wSpiControl[7:4];    // for signaltap triggering, not used.
+        assign wRstn     = iKEY[0];             // pushbutton system reset.
+        assign wSquelch  = wSpiControl[2];      // for python squelching ins. decode.
+        assign wBypassIR = wSpiControl[1];      // for python controlling CPU.
+        assign wTrigger  = wSpiControl[7:4];    // for signaltap triggering, not used.
 
-                        // load instruction register
-                        // if neither or both shadow
-                        // control signals asserted.
-    assign wLEIR     = !(wSquelch ^ wBypassIR);
+                                                // load instruction register
+                                                // if neither or both shadow
+                                                // control signals asserted.
+        assign wLEIR     = !(wSquelch ^ wBypassIR);
 
 
-    assign oLEDR[9]  = 1'b0;        // red LED hookup.
-    assign oLEDR[8]  = 1'b0;
-    assign oLEDR[7]  = wSel[2];
-    assign oLEDR[6]  = wSel[1];
-    assign oLEDR[5]  = wSel[0];
-    assign oLEDR[4]  = wRstn;
-    assign oLEDR[3]  = iCPUclk;
-    assign oLEDR[2]  = oMISO;
-    assign oLEDR[1]  = iMOSI;
-    assign oLEDR[0]  = iSPIclk;
+        assign oLEDR[9]  = 1'b0;                // red LED hookup.
+        assign oLEDR[8]  = 1'b0;
+        assign oLEDR[7]  = wSel[2];
+        assign oLEDR[6]  = wSel[1];
+        assign oLEDR[5]  = wSel[0];
+        assign oLEDR[4]  = wRstn;
+        assign oLEDR[3]  = iCPUclk;
+        assign oLEDR[2]  = oMISO;
+        assign oLEDR[1]  = iMOSI;
+        assign oLEDR[0]  = iSPIclk;
 
 
-                        // signals not to be optimized
-                        // out, place here.
-    assign oDummyLoad = (|wShadowIR) | wSIR | (|wSpiControl) | (|wTrigger);
+                                                // signals not to be optimized
+                                                // out, place here.
+        assign oDummyLoad = (|wShadowIR) | wSIR | (|wSpiControl) | (|wTrigger);
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -512,3 +512,20 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/mmRTL/instruction_decoder.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/instruction_decoder.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,80 +1,80 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module instruction_decoder
+        module instruction_decoder
         (
-      iSquelch,             // disrupt output enables.
-      iIR,                  // instruction register.
-      iBypass,              // instruction from SPI.
-      iBypassIR,                // override the IR.
-      oSel,                 // common data-in selector.
-      oLER0,                // R0 load-enable.
-      oLER1,                // R1 load-enable.
-      oLER2,                // R2 load-enable.
-      oLER3,                // R3 load-enable.
-      oLEPC,                // PC load-enable.
-      oWE,                  // write-enable pulse.
-      oCEPC,                // PC count-enable.
-      oImmediate                // immediate data.
+          iSquelch,                             // disrupt output enables.
+          iIR,                                  // instruction register.
+          iBypass,                              // instruction from SPI.
+          iBypassIR,                            // override the IR.
+          oSel,                                 // common data-in selector.
+          oLER0,                                // R0 load-enable.
+          oLER1,                                // R1 load-enable.
+          oLER2,                                // R2 load-enable.
+          oLER3,                                // R3 load-enable.
+          oLEPC,                                // PC load-enable.
+          oWE,                                  // write-enable pulse.
+          oCEPC,                                // PC count-enable.
+          oImmediate                            // immediate data.
         );
 /*--------------------------------description-----------------------------------
-    the instruction decoder.  
+        the instruction decoder.  
 -------------------------------------notes--------------------------------------
-    this instruction decoder operates in three different 'modes'.
-    1. nominal mode: the instruction word is decoded as per the CPU spec.
-    2. regular test mode: the instruction register is ignored, and instead
+        this instruction decoder operates in three different 'modes'.
+        1. nominal mode: the instruction word is decoded as per the CPU spec.
+        2. regular test mode: the instruction register is ignored, and instead
            this decoder makes use of iBypass, which is the instruction pattern
            provided by the instruction word shadow register (which is part of
            the spi scan chain).  this allows the python code to take over the
            operation of the CPU.
-    3. IR-write test mode: a special-case mode which occurs when python
+        3. IR-write test mode: a special-case mode which occurs when python
            writes to the instruction register.  in this case, the outputs of
-       this decoder which are used to provide load-enables to CPU 
-       resources, must be squelched.  this is because we don't want the
+           this decoder which are used to provide load-enables to CPU 
+           resources, must be squelched.  this is because we don't want the
            python-written instruction register content to be decoded and
-       the decoded signals sent into the CPU.  why?  because most likely
+           the decoded signals sent into the CPU.  why?  because most likely
            the python-write to the IR is only to check that it can be done,
            and if the result of such a write were allowed to propagate, then
            the other registers may be arbitrarily updated, confusing the
            user at the python end.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input           iSquelch;       // disrupt output enables.
-    input   [15:0]  iIR;            // instruction register.
-    input   [15:0]  iBypass;        // instruction from SPI.
-    input           iBypassIR;      // override the IR.
-    output  [ 2:0]  oSel;           // common data-in selector.
-    output          oLER0;          // R0 load-enable.
-    output          oLER1;          // R1 load-enable.
-    output          oLER2;          // R2 load-enable.
-    output          oLER3;          // R3 load-enable.
-    output          oLEPC;          // PC load-enable.
-    output          oWE;            // write-enable pulse.
-    output          oCEPC;          // PC count-enable.
-    output  [ 7:0]  oImmediate;     // immediate data.
+        input           iSquelch;               // disrupt output enables.
+        input   [15:0]  iIR;                    // instruction register.
+        input   [15:0]  iBypass;                // instruction from SPI.
+        input           iBypassIR;              // override the IR.
+        output  [ 2:0]  oSel;                   // common data-in selector.
+        output          oLER0;                  // R0 load-enable.
+        output          oLER1;                  // R1 load-enable.
+        output          oLER2;                  // R2 load-enable.
+        output          oLER3;                  // R3 load-enable.
+        output          oLEPC;                  // PC load-enable.
+        output          oWE;                    // write-enable pulse.
+        output          oCEPC;                  // PC count-enable.
+        output  [ 7:0]  oImmediate;             // immediate data.
 /*-----------------------------------wires------------------------------------*/
-    wire            iSquelch;       // disrupt output enables.
-    wire    [15:0]  iIR;            // instruction register.
-    wire    [15:0]  iBypass;        // instruction from SPI.
-    wire            iBypassIR;      // override the IR.
-    wire    [ 2:0]  oSel;           // common data-in selector.
-    wire            oLER0;          // R0 load-enable.
-    wire            oLER1;          // R1 load-enable.
-    wire            oLER2;          // R2 load-enable.
-    wire            oLER3;          // R3 load-enable.
-    wire            oLEPC;          // PC load-enable.
-    wire            oWE;            // write-enable pulse.
-    wire            oCEPC;          // PC count-enable.
-    wire    [ 7:0]  oImmediate;     // immediate data.
+        wire            iSquelch;               // disrupt output enables.
+        wire    [15:0]  iIR;                    // instruction register.
+        wire    [15:0]  iBypass;                // instruction from SPI.
+        wire            iBypassIR;              // override the IR.
+        wire    [ 2:0]  oSel;                   // common data-in selector.
+        wire            oLER0;                  // R0 load-enable.
+        wire            oLER1;                  // R1 load-enable.
+        wire            oLER2;                  // R2 load-enable.
+        wire            oLER3;                  // R3 load-enable.
+        wire            oLEPC;                  // PC load-enable.
+        wire            oWE;                    // write-enable pulse.
+        wire            oCEPC;                  // PC count-enable.
+        wire    [ 7:0]  oImmediate;             // immediate data.
 /*---------------------------------registers----------------------------------*/
-    reg     [15:0]  rIR;            // instruction.
-    reg             rLER0;          // R0 load-enable.
-    reg             rLER1;          // R1 load-enable.
-    reg             rLER2;          // R2 load-enable.
-    reg             rLER3;          // R3 load-enable.
-    reg             rLEPC;          // PC load-enable.
+        reg     [15:0]  rIR;                    // instruction.
+        reg             rLER0;                  // R0 load-enable.
+        reg             rLER1;                  // R1 load-enable.
+        reg             rLER2;                  // R2 load-enable.
+        reg             rLER3;                  // R3 load-enable.
+        reg             rLEPC;                  // PC load-enable.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
@@ -82,90 +82,90 @@
 /*-----------------------------------logic------------------------------------*/
 
 
-    always @ (rIR)
-    case     (rIR[12:10])           // decode the load-enables.
+        always @ (rIR)
+        case     (rIR[12:10])                   // decode the load-enables.
 
-      7 : begin             // no register.
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;
+          7 : begin                             // no register.
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;
               end
 
-      6 : begin             // no register.
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;  
+          6 : begin                             // no register.
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;  
               end
 
-      5 : begin             // no register.
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;      
+          5 : begin                             // no register.
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;          
               end
 
-      4 : begin             // PC
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b1;          
+          4 : begin                             // PC
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b1;                  
               end
 
-      3 : begin             // R3
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b1;          
-            rLEPC  = 1'b0;
+          3 : begin                             // R3
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b1;                  
+                rLEPC  = 1'b0;
               end
 
-      2 : begin             // R2
-            rLER0  = 1'b0;
-            rLER1  = 1'b0;
-            rLER2  = 1'b1;          
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;
+          2 : begin                             // R2
+                rLER0  = 1'b0;
+                rLER1  = 1'b0;
+                rLER2  = 1'b1;                  
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;
               end
 
-      1 : begin             // R1
-            rLER0  = 1'b0;
-            rLER1  = 1'b1;          
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;
+          1 : begin                             // R1
+                rLER0  = 1'b0;
+                rLER1  = 1'b1;                  
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;
               end
 
-      0 : begin             // R0
-            rLER0  = 1'b1;          
-            rLER1  = 1'b0;
-            rLER2  = 1'b0;
-            rLER3  = 1'b0;
-            rLEPC  = 1'b0;
+          0 : begin                             // R0
+                rLER0  = 1'b1;                  
+                rLER1  = 1'b0;
+                rLER2  = 1'b0;
+                rLER3  = 1'b0;
+                rLEPC  = 1'b0;
               end
 
-     
-    endcase
+         
+        endcase
 
-    assign oSel       = rIR[15:13];     // pass-through.
-    assign oLER0      = rLER0 & !iSquelch;  // decode iIR[12:10].
-    assign oLER1      = rLER1 & !iSquelch;  // decode iIR[12:10].
-    assign oLER2      = rLER2 & !iSquelch;  // decode iIR[12:10].
-    assign oLER3      = rLER3 & !iSquelch;  // decode iIR[12:10].
-    assign oLEPC      = rLEPC & !iSquelch;  // decode iIR[12:10].
-    assign oWE        = rIR[9] & !iSquelch; // pass-through.
-    assign oCEPC      = rIR[8] & !iSquelch; // pass-through.
-    assign oImmediate = rIR[7:0];       // pass-through.
+        assign oSel       = rIR[15:13];         // pass-through.
+        assign oLER0      = rLER0 & !iSquelch;  // decode iIR[12:10].
+        assign oLER1      = rLER1 & !iSquelch;  // decode iIR[12:10].
+        assign oLER2      = rLER2 & !iSquelch;  // decode iIR[12:10].
+        assign oLER3      = rLER3 & !iSquelch;  // decode iIR[12:10].
+        assign oLEPC      = rLEPC & !iSquelch;  // decode iIR[12:10].
+        assign oWE        = rIR[9] & !iSquelch; // pass-through.
+        assign oCEPC      = rIR[8] & !iSquelch; // pass-through.
+        assign oImmediate = rIR[7:0];           // pass-through.
 
 
-    always @ (iIR or iBypass or iBypassIR)
-    if (iBypassIR) rIR = iBypass;
-    else rIR = iIR;
+        always @ (iIR or iBypass or iBypassIR)
+        if (iBypassIR) rIR = iBypass;
+        else rIR = iIR;
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -183,3 +183,20 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/mmRTL/main_memory.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/main_memory.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,60 +1,60 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module main_memory
+        module main_memory
         (
-     iReadAddress1,             // read-address 1.
-     iReadAddress0,             // read-address 0.
-     iWriteAddress,             // write-address.
-     oReadData1,                // read-data 1.
-     oReadData0,                // read-data 0.
-     iWriteData,                // write-data.
-     iWE,                   // write-enable.
-     iCPUclk                // cpu clock.
+         iReadAddress1,                         // read-address 1.
+         iReadAddress0,                         // read-address 0.
+         iWriteAddress,                         // write-address.
+         oReadData1,                            // read-data 1.
+         oReadData0,                            // read-data 0.
+         iWriteData,                            // write-data.
+         iWE,                                   // write-enable.
+         iCPUclk                                // cpu clock.
         );
 /*--------------------------------description-----------------------------------
-    CPU main memory.
-    two read-ports, one write-port.
+        CPU main memory.
+        two read-ports, one write-port.
 -------------------------------------notes--------------------------------------
-    level-sensitive write-enable.
-    the memory needs to be sixteen bits wide in order to hold
-    immediate data for the instruction set.
+        level-sensitive write-enable.
+        the memory needs to be sixteen bits wide in order to hold
+        immediate data for the instruction set.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input   [ 7:0]  iReadAddress1;      // read-address 1.
-    input   [ 7:0]  iReadAddress0;      // read-address 0.
-    input   [ 7:0]  iWriteAddress;      // write-address.
-    output  [15:0]  oReadData1;     // read-data 1.
-    output  [15:0]  oReadData0;     // read-data 0.
-    input   [15:0]  iWriteData;     // write-data.
-    input           iWE;            // write-enable.
-    input           iCPUclk;        // cpu clock.
+        input   [ 7:0]  iReadAddress1;          // read-address 1.
+        input   [ 7:0]  iReadAddress0;          // read-address 0.
+        input   [ 7:0]  iWriteAddress;          // write-address.
+        output  [15:0]  oReadData1;             // read-data 1.
+        output  [15:0]  oReadData0;             // read-data 0.
+        input   [15:0]  iWriteData;             // write-data.
+        input           iWE;                    // write-enable.
+        input           iCPUclk;                // cpu clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  iReadAddress1;      // read-address 1.
-    wire    [ 7:0]  iReadAddress0;      // read-address 0.
-    wire    [ 7:0]  iWriteAddress;      // write-address.
-    wire    [15:0]  oReadData1;     // read-data 1.
-    wire    [15:0]  oReadData0;     // read-data 0.
-    wire    [15:0]  iWriteData;     // write-data.
-    wire            iWE;            // write-enable.
-    wire            iCPUclk;        // cpu clock.
+        wire    [ 7:0]  iReadAddress1;          // read-address 1.
+        wire    [ 7:0]  iReadAddress0;          // read-address 0.
+        wire    [ 7:0]  iWriteAddress;          // write-address.
+        wire    [15:0]  oReadData1;             // read-data 1.
+        wire    [15:0]  oReadData0;             // read-data 0.
+        wire    [15:0]  iWriteData;             // write-data.
+        wire            iWE;                    // write-enable.
+        wire            iCPUclk;                // cpu clock.
 /*---------------------------------registers----------------------------------*/
-    reg     [15:0] mem_bank [0:255];    // memory bank.
-    reg     [15:0] rData1;          // data-out-1 register.
-    reg     [15:0] rData0;          // data-out-0 register.
+        reg     [15:0] mem_bank [0:255];        // memory bank.
+        reg     [15:0] rData1;                  // data-out-1 register.
+        reg     [15:0] rData0;                  // data-out-0 register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iCPUclk) 
-    if (iWE) mem_bank[iWriteAddress] = iWriteData;
-    else     mem_bank[iWriteAddress] = mem_bank[iWriteAddress];
+        always @ (posedge iCPUclk) 
+        if (iWE) mem_bank[iWriteAddress] = iWriteData;
+        else     mem_bank[iWriteAddress] = mem_bank[iWriteAddress];
 
-    assign oReadData1 = mem_bank[iReadAddress1];
-    assign oReadData0 = mem_bank[iReadAddress0];
+        assign oReadData1 = mem_bank[iReadAddress1];
+        assign oReadData0 = mem_bank[iReadAddress0];
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
--- a/mmRTL/mux16x2.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/mux16x2.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,43 +1,43 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module mux16x2
+        module mux16x2
         (
-      iDin1,                // data-input 1.
-      iDin0,                // data-input 0.
-      iSel,                 // multiplexor select.
-      oDout                 // data-out.
+          iDin1,                                // data-input 1.
+          iDin0,                                // data-input 0.
+          iSel,                                 // multiplexor select.
+          oDout                                 // data-out.
         );
 /*--------------------------------description-----------------------------------
-    a 16-bit-wide, 2-selection multiplexor.
+        a 16-bit-wide, 2-selection multiplexor.
 -------------------------------------notes--------------------------------------
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input   [15:0]  iDin1;          // data-input 1.
-    input   [15:0]  iDin0;          // data-input 0.
-    input           iSel;           // multiplexor select.
-    output  [15:0]  oDout;          // data-out.
+        input   [15:0]  iDin1;                  // data-input 1.
+        input   [15:0]  iDin0;                  // data-input 0.
+        input           iSel;                   // multiplexor select.
+        output  [15:0]  oDout;                  // data-out.
 /*-----------------------------------wires------------------------------------*/
-    wire    [15:0]  iDin1;          // data-input 1.
-    wire    [15:0]  iDin0;          // data-input 0.
-    wire            iSel;           // multiplexor select.
-    wire    [15:0]  oDout;          // data-out.
+        wire    [15:0]  iDin1;                  // data-input 1.
+        wire    [15:0]  iDin0;                  // data-input 0.
+        wire            iSel;                   // multiplexor select.
+        wire    [15:0]  oDout;                  // data-out.
 /*---------------------------------registers----------------------------------*/
-    reg     [15:0]  rDout;          // output register.
+        reg     [15:0]  rDout;                  // output register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (iDin1 or iDin0 or iSel)
-    case (iSel)
-    1 : rDout = iDin1;
-    0 : rDout = iDin0;
-    endcase
+        always @ (iDin1 or iDin0 or iSel)
+        case (iSel)
+        1 : rDout = iDin1;
+        0 : rDout = iDin0;
+        endcase
 
-    assign oDout = rDout;           // propagate output.
+        assign oDout = rDout;                   // propagate output.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -55,3 +55,11 @@
 
 
 
+
+
+
+
+
+
+
+
--- a/mmRTL/mux8x16.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/mux8x16.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,103 +1,103 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module mux8x16
+        module mux8x16
         (
-      iDin15,               // data-input 15.
-      iDin14,               // data-input 14.
-      iDin13,               // data-input 13.
-      iDin12,               // data-input 12.
-      iDin11,               // data-input 11.
-      iDin10,               // data-input 10.
-      iDin9,                // data-input 9.
-      iDin8,                // data-input 8.
-      iDin7,                // data-input 7.
-      iDin6,                // data-input 6.
-      iDin5,                // data-input 5.
-      iDin4,                // data-input 4.
-      iDin3,                // data-input 3.
-      iDin2,                // data-input 2.
-      iDin1,                // data-input 1.
-      iDin0,                // data-input 0.
-      iSel,                 // multiplexor select.
-      oDout                 // data-out.
+          iDin15,                               // data-input 15.
+          iDin14,                               // data-input 14.
+          iDin13,                               // data-input 13.
+          iDin12,                               // data-input 12.
+          iDin11,                               // data-input 11.
+          iDin10,                               // data-input 10.
+          iDin9,                                // data-input 9.
+          iDin8,                                // data-input 8.
+          iDin7,                                // data-input 7.
+          iDin6,                                // data-input 6.
+          iDin5,                                // data-input 5.
+          iDin4,                                // data-input 4.
+          iDin3,                                // data-input 3.
+          iDin2,                                // data-input 2.
+          iDin1,                                // data-input 1.
+          iDin0,                                // data-input 0.
+          iSel,                                 // multiplexor select.
+          oDout                                 // data-out.
         );
 /*--------------------------------description-----------------------------------
-    a 8-bit-wide, 16-selection multiplexor.
+        a 8-bit-wide, 16-selection multiplexor.
 -------------------------------------notes--------------------------------------
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input   [ 7:0]  iDin15;         // data-input 15.
-    input   [ 7:0]  iDin14;         // data-input 14.
-    input   [ 7:0]  iDin13;         // data-input 13.
-    input   [ 7:0]  iDin12;         // data-input 12.
-    input   [ 7:0]  iDin11;         // data-input 11.
-    input   [ 7:0]  iDin10;         // data-input 10.
-    input   [ 7:0]  iDin9;          // data-input 9.
-    input   [ 7:0]  iDin8;          // data-input 8.
-    input   [ 7:0]  iDin7;          // data-input 7.
-    input   [ 7:0]  iDin6;          // data-input 6.
-    input   [ 7:0]  iDin5;          // data-input 5.
-    input   [ 7:0]  iDin4;          // data-input 4.
-    input   [ 7:0]  iDin3;          // data-input 3.
-    input   [ 7:0]  iDin2;          // data-input 2.
-    input   [ 7:0]  iDin1;          // data-input 1.
-    input   [ 7:0]  iDin0;          // data-input 0.
-    input   [ 3:0]  iSel;           // multiplexor select.
-    output  [ 7:0]  oDout;          // data-out.
+        input   [ 7:0]  iDin15;                 // data-input 15.
+        input   [ 7:0]  iDin14;                 // data-input 14.
+        input   [ 7:0]  iDin13;                 // data-input 13.
+        input   [ 7:0]  iDin12;                 // data-input 12.
+        input   [ 7:0]  iDin11;                 // data-input 11.
+        input   [ 7:0]  iDin10;                 // data-input 10.
+        input   [ 7:0]  iDin9;                  // data-input 9.
+        input   [ 7:0]  iDin8;                  // data-input 8.
+        input   [ 7:0]  iDin7;                  // data-input 7.
+        input   [ 7:0]  iDin6;                  // data-input 6.
+        input   [ 7:0]  iDin5;                  // data-input 5.
+        input   [ 7:0]  iDin4;                  // data-input 4.
+        input   [ 7:0]  iDin3;                  // data-input 3.
+        input   [ 7:0]  iDin2;                  // data-input 2.
+        input   [ 7:0]  iDin1;                  // data-input 1.
+        input   [ 7:0]  iDin0;                  // data-input 0.
+        input   [ 3:0]  iSel;                   // multiplexor select.
+        output  [ 7:0]  oDout;                  // data-out.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  iDin15;         // data-input 15.
-    wire    [ 7:0]  iDin14;         // data-input 14.
-    wire    [ 7:0]  iDin13;         // data-input 13.
-    wire    [ 7:0]  iDin12;         // data-input 12.
-    wire    [ 7:0]  iDin11;         // data-input 11.
-    wire    [ 7:0]  iDin10;         // data-input 10.
-    wire    [ 7:0]  iDin9;          // data-input 9.
-    wire    [ 7:0]  iDin8;          // data-input 8.
-    wire    [ 7:0]  iDin7;          // data-input 7.
-    wire    [ 7:0]  iDin6;          // data-input 6.
-    wire    [ 7:0]  iDin5;          // data-input 5.
-    wire    [ 7:0]  iDin4;          // data-input 4.
-    wire    [ 7:0]  iDin3;          // data-input 3.
-    wire    [ 7:0]  iDin2;          // data-input 2.
-    wire    [ 7:0]  iDin1;          // data-input 1.
-    wire    [ 7:0]  iDin0;          // data-input 0.
-    wire    [ 3:0]  iSel;           // multiplexor select.
-    wire    [ 7:0]  oDout;          // data-out.
+        wire    [ 7:0]  iDin15;                 // data-input 15.
+        wire    [ 7:0]  iDin14;                 // data-input 14.
+        wire    [ 7:0]  iDin13;                 // data-input 13.
+        wire    [ 7:0]  iDin12;                 // data-input 12.
+        wire    [ 7:0]  iDin11;                 // data-input 11.
+        wire    [ 7:0]  iDin10;                 // data-input 10.
+        wire    [ 7:0]  iDin9;                  // data-input 9.
+        wire    [ 7:0]  iDin8;                  // data-input 8.
+        wire    [ 7:0]  iDin7;                  // data-input 7.
+        wire    [ 7:0]  iDin6;                  // data-input 6.
+        wire    [ 7:0]  iDin5;                  // data-input 5.
+        wire    [ 7:0]  iDin4;                  // data-input 4.
+        wire    [ 7:0]  iDin3;                  // data-input 3.
+        wire    [ 7:0]  iDin2;                  // data-input 2.
+        wire    [ 7:0]  iDin1;                  // data-input 1.
+        wire    [ 7:0]  iDin0;                  // data-input 0.
+        wire    [ 3:0]  iSel;                   // multiplexor select.
+        wire    [ 7:0]  oDout;                  // data-out.
 /*---------------------------------registers----------------------------------*/
-    reg     [ 7:0]  rDout;          // output register.
+        reg     [ 7:0]  rDout;                  // output register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
 
-    always @ (iDin15 or iDin14 or iDin13 or iDin12 or
+        always @ (iDin15 or iDin14 or iDin13 or iDin12 or
                   iDin11 or iDin10 or iDin9  or iDin8  or
-          iDin7  or iDin6  or iDin5  or iDin4  or
-          iDin3  or iDin2  or iDin1  or iDin0  or iSel)
-    case (iSel)
-    15 : rDout = iDin15;
-    14 : rDout = iDin14;
-    13 : rDout = iDin13;
-    12 : rDout = iDin12;
-    11 : rDout = iDin11;
-    10 : rDout = iDin10;
-     9 : rDout = iDin9;
-     8 : rDout = iDin8;
-     7 : rDout = iDin7;
-     6 : rDout = iDin6;
-     5 : rDout = iDin5;
-     4 : rDout = iDin4;
-     3 : rDout = iDin3;
-     2 : rDout = iDin2;
-     1 : rDout = iDin1;
-     0 : rDout = iDin0;
-    endcase
+                  iDin7  or iDin6  or iDin5  or iDin4  or
+                  iDin3  or iDin2  or iDin1  or iDin0  or iSel)
+        case (iSel)
+        15 : rDout = iDin15;
+        14 : rDout = iDin14;
+        13 : rDout = iDin13;
+        12 : rDout = iDin12;
+        11 : rDout = iDin11;
+        10 : rDout = iDin10;
+         9 : rDout = iDin9;
+         8 : rDout = iDin8;
+         7 : rDout = iDin7;
+         6 : rDout = iDin6;
+         5 : rDout = iDin5;
+         4 : rDout = iDin4;
+         3 : rDout = iDin3;
+         2 : rDout = iDin2;
+         1 : rDout = iDin1;
+         0 : rDout = iDin0;
+        endcase
 
-    assign oDout = rDout;           // propagate output.
+        assign oDout = rDout;                   // propagate output.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -115,3 +115,6 @@
 
 
 
+
+
+
--- a/mmRTL/mux8x8.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/mux8x8.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,68 +1,68 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module mux8x8
+        module mux8x8
         (
-      iDin7,                // data-input 7.
-      iDin6,                // data-input 6.
-      iDin5,                // data-input 5.
-      iDin4,                // data-input 4.
-      iDin3,                // data-input 3.
-      iDin2,                // data-input 2.
-      iDin1,                // data-input 1.
-      iDin0,                // data-input 0.
-      iSel,                 // multiplexor select.
-      oDout                 // data-out.
+          iDin7,                                // data-input 7.
+          iDin6,                                // data-input 6.
+          iDin5,                                // data-input 5.
+          iDin4,                                // data-input 4.
+          iDin3,                                // data-input 3.
+          iDin2,                                // data-input 2.
+          iDin1,                                // data-input 1.
+          iDin0,                                // data-input 0.
+          iSel,                                 // multiplexor select.
+          oDout                                 // data-out.
         );
 /*--------------------------------description-----------------------------------
-    an 8-bit-wide, 8-selection multiplexor.
+        an 8-bit-wide, 8-selection multiplexor.
 -------------------------------------notes--------------------------------------
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input   [ 7:0]  iDin7;          // data-input 7.
-    input   [ 7:0]  iDin6;          // data-input 6.
-    input   [ 7:0]  iDin5;          // data-input 5.
-    input   [ 7:0]  iDin4;          // data-input 4.
-    input   [ 7:0]  iDin3;          // data-input 3.
-    input   [ 7:0]  iDin2;          // data-input 2.
-    input   [ 7:0]  iDin1;          // data-input 1.
-    input   [ 7:0]  iDin0;          // data-input 0.
-    input   [ 2:0]  iSel;           // multiplexor select.
-    output  [ 7:0]  oDout;          // data-out.
+        input   [ 7:0]  iDin7;                  // data-input 7.
+        input   [ 7:0]  iDin6;                  // data-input 6.
+        input   [ 7:0]  iDin5;                  // data-input 5.
+        input   [ 7:0]  iDin4;                  // data-input 4.
+        input   [ 7:0]  iDin3;                  // data-input 3.
+        input   [ 7:0]  iDin2;                  // data-input 2.
+        input   [ 7:0]  iDin1;                  // data-input 1.
+        input   [ 7:0]  iDin0;                  // data-input 0.
+        input   [ 2:0]  iSel;                   // multiplexor select.
+        output  [ 7:0]  oDout;                  // data-out.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  iDin7;          // data-input 7.
-    wire    [ 7:0]  iDin6;          // data-input 6.
-    wire    [ 7:0]  iDin5;          // data-input 5.
-    wire    [ 7:0]  iDin4;          // data-input 4.
-    wire    [ 7:0]  iDin3;          // data-input 3.
-    wire    [ 7:0]  iDin2;          // data-input 2.
-    wire    [ 7:0]  iDin1;          // data-input 1.
-    wire    [ 7:0]  iDin0;          // data-input 0.
-    wire    [ 2:0]  iSel;           // multiplexor select.
-    wire    [ 7:0]  oDout;          // data-out.
+        wire    [ 7:0]  iDin7;                  // data-input 7.
+        wire    [ 7:0]  iDin6;                  // data-input 6.
+        wire    [ 7:0]  iDin5;                  // data-input 5.
+        wire    [ 7:0]  iDin4;                  // data-input 4.
+        wire    [ 7:0]  iDin3;                  // data-input 3.
+        wire    [ 7:0]  iDin2;                  // data-input 2.
+        wire    [ 7:0]  iDin1;                  // data-input 1.
+        wire    [ 7:0]  iDin0;                  // data-input 0.
+        wire    [ 2:0]  iSel;                   // multiplexor select.
+        wire    [ 7:0]  oDout;                  // data-out.
 /*---------------------------------registers----------------------------------*/
-    reg     [ 7:0]  rDout;          // output register.
+        reg     [ 7:0]  rDout;                  // output register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (iDin7 or iDin6 or iDin5 or iDin4 or
+        always @ (iDin7 or iDin6 or iDin5 or iDin4 or
                   iDin3 or iDin2 or iDin1 or iDin0 or iSel)
-    case (iSel)
-    7 : rDout = iDin7;
-    6 : rDout = iDin6;
-    5 : rDout = iDin5;
-    4 : rDout = iDin4;
-    3 : rDout = iDin3;
-    2 : rDout = iDin2;
-    1 : rDout = iDin1;
-    0 : rDout = iDin0;
-    endcase
+        case (iSel)
+        7 : rDout = iDin7;
+        6 : rDout = iDin6;
+        5 : rDout = iDin5;
+        4 : rDout = iDin4;
+        3 : rDout = iDin3;
+        2 : rDout = iDin2;
+        1 : rDout = iDin1;
+        0 : rDout = iDin0;
+        endcase
 
-    assign oDout = rDout;           // propagate output.
+        assign oDout = rDout;                   // propagate output.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -80,3 +80,8 @@
 
 
 
+
+
+
+
+
--- a/mmRTL/reg_08.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/reg_08.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,97 +1,97 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module reg_08
+        module reg_08
         (
-         oParallel,             // parallel-output data.
-         iParallel7,                // parallel-input  data.
-         iParallel6,                // parallel-input  data.
-         iParallel5,                // parallel-input  data.
-         iParallel4,                // parallel-input  data.
-         iParallel3,                // parallel-input  data.
-         iParallel2,                // parallel-input  data.
-         iParallel1,                // parallel-input  data.
-         iParallel0,                // parallel-input  data.
-     iSel,                  // select the parallel input.
-     oSerial,               // serial-output data.
-     iSerial,               // serial-input data.
-     iLoadEnable,               // parallel-load-enable.
-     iShiftEnable,              // serial-shift-enable.
-     iResetN,               // synchronous reset*.
-     iClk                   // module clock.
+         oParallel,                             // parallel-output data.
+         iParallel7,                            // parallel-input  data.
+         iParallel6,                            // parallel-input  data.
+         iParallel5,                            // parallel-input  data.
+         iParallel4,                            // parallel-input  data.
+         iParallel3,                            // parallel-input  data.
+         iParallel2,                            // parallel-input  data.
+         iParallel1,                            // parallel-input  data.
+         iParallel0,                            // parallel-input  data.
+         iSel,                                  // select the parallel input.
+         oSerial,                               // serial-output data.
+         iSerial,                               // serial-input data.
+         iLoadEnable,                           // parallel-load-enable.
+         iShiftEnable,                          // serial-shift-enable.
+         iResetN,                               // synchronous reset*.
+         iClk                                   // module clock.
         );
 /*--------------------------------description-----------------------------------
-    an 8-bit parallel shift-register with 8 selectable input buses.
+        an 8-bit parallel shift-register with 8 selectable input buses.
 -------------------------------------notes--------------------------------------
-    shifting is LSB->MSB.
+        shifting is LSB->MSB.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    output  [ 7:0]  oParallel;      // parallel-output data.
-    input   [ 7:0]  iParallel7;     // parallel-input  data.
-    input   [ 7:0]  iParallel6;     // parallel-input  data.
-    input   [ 7:0]  iParallel5;     // parallel-input  data.
-    input   [ 7:0]  iParallel4;     // parallel-input  data.
-    input   [ 7:0]  iParallel3;     // parallel-input  data.
-    input   [ 7:0]  iParallel2;     // parallel-input  data.
-    input   [ 7:0]  iParallel1;     // parallel-input  data.
-    input   [ 7:0]  iParallel0;     // parallel-input  data.
-    input   [ 2:0]  iSel;           // select the parallel input.
-    output          oSerial;        // serial-output data.
-    input           iSerial;        // serial-input data.
-    input           iLoadEnable;        // parallel-load-enable.
-    input           iShiftEnable;       // serial-shift-enable.
-    input           iResetN;        // synchronous reset*.
-    input           iClk;           // module clock.
+        output  [ 7:0]  oParallel;              // parallel-output data.
+        input   [ 7:0]  iParallel7;             // parallel-input  data.
+        input   [ 7:0]  iParallel6;             // parallel-input  data.
+        input   [ 7:0]  iParallel5;             // parallel-input  data.
+        input   [ 7:0]  iParallel4;             // parallel-input  data.
+        input   [ 7:0]  iParallel3;             // parallel-input  data.
+        input   [ 7:0]  iParallel2;             // parallel-input  data.
+        input   [ 7:0]  iParallel1;             // parallel-input  data.
+        input   [ 7:0]  iParallel0;             // parallel-input  data.
+        input   [ 2:0]  iSel;                   // select the parallel input.
+        output          oSerial;                // serial-output data.
+        input           iSerial;                // serial-input data.
+        input           iLoadEnable;            // parallel-load-enable.
+        input           iShiftEnable;           // serial-shift-enable.
+        input           iResetN;                // synchronous reset*.
+        input           iClk;                   // module clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  oParallel;      // parallel-output data.
-    wire    [ 7:0]  iParallel7;     // parallel-input  data.
-    wire    [ 7:0]  iParallel6;     // parallel-input  data.
-    wire    [ 7:0]  iParallel5;     // parallel-input  data.
-    wire    [ 7:0]  iParallel4;     // parallel-input  data.
-    wire    [ 7:0]  iParallel3;     // parallel-input  data.
-    wire    [ 7:0]  iParallel2;     // parallel-input  data.
-    wire    [ 7:0]  iParallel1;     // parallel-input  data.
-    wire    [ 7:0]  iParallel0;     // parallel-input  data.
-    wire    [ 2:0]  iSel;           // select the parallel input.
-    wire    [ 7:0]  wParallelIn;        // select the parallel input.
-    wire            oSerial;        // serial-output data.
-    wire            iSerial;        // serial-input data.
-    wire            iLoadEnable;        // parallel-load-enable.
-    wire            iShiftEnable;       // serial-shift-enable.
-    wire            iResetN;        // synchronous reset*.
-    wire            iClk;           // module clock.
+        wire    [ 7:0]  oParallel;              // parallel-output data.
+        wire    [ 7:0]  iParallel7;             // parallel-input  data.
+        wire    [ 7:0]  iParallel6;             // parallel-input  data.
+        wire    [ 7:0]  iParallel5;             // parallel-input  data.
+        wire    [ 7:0]  iParallel4;             // parallel-input  data.
+        wire    [ 7:0]  iParallel3;             // parallel-input  data.
+        wire    [ 7:0]  iParallel2;             // parallel-input  data.
+        wire    [ 7:0]  iParallel1;             // parallel-input  data.
+        wire    [ 7:0]  iParallel0;             // parallel-input  data.
+        wire    [ 2:0]  iSel;                   // select the parallel input.
+        wire    [ 7:0]  wParallelIn;            // select the parallel input.
+        wire            oSerial;                // serial-output data.
+        wire            iSerial;                // serial-input data.
+        wire            iLoadEnable;            // parallel-load-enable.
+        wire            iShiftEnable;           // serial-shift-enable.
+        wire            iResetN;                // synchronous reset*.
+        wire            iClk;                   // module clock.
 /*---------------------------------registers----------------------------------*/
-        reg     [ 7:0]  rRegister;      // the register.
+        reg     [ 7:0]  rRegister;              // the register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
-    mux8x8 U01_mux8x8           // data-input selection.
+        mux8x8 U01_mux8x8                       // data-input selection.
         (
-     .iDin7(iParallel7),
-     .iDin6(iParallel6),
-     .iDin5(iParallel5),
-     .iDin4(iParallel4),
-     .iDin3(iParallel3),
-     .iDin2(iParallel2),
-     .iDin1(iParallel1),
-     .iDin0(iParallel0),
-     .iSel (iSel),
-     .oDout(wParallelIn)
+         .iDin7(iParallel7),
+         .iDin6(iParallel6),
+         .iDin5(iParallel5),
+         .iDin4(iParallel4),
+         .iDin3(iParallel3),
+         .iDin2(iParallel2),
+         .iDin1(iParallel1),
+         .iDin0(iParallel0),
+         .iSel (iSel),
+         .oDout(wParallelIn)
         );
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iClk or negedge iResetN)
-    begin
-           if (!iResetN)     rRegister <= 8'h00;
-      else if (iLoadEnable)  rRegister <= wParallelIn;
-      else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
-      else                   rRegister <= rRegister;
-    end
+        always @ (posedge iClk or negedge iResetN)
+        begin
+               if (!iResetN)     rRegister <= 8'h00;
+          else if (iLoadEnable)  rRegister <= wParallelIn;
+          else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
+          else                   rRegister <= rRegister;
+        end
 
-    assign oParallel = rRegister;       // propagate parallel-out.
-    assign oSerial   = rRegister[7];    // propagate serial-out.
+        assign oParallel = rRegister;           // propagate parallel-out.
+        assign oSerial   = rRegister[7];        // propagate serial-out.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -109,3 +109,20 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/mmRTL/reg_16.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/reg_16.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,71 +1,72 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module reg_16
+        module reg_16
         (
-         oParallel,             // parallel-output data.
-         iParallel1,                // parallel-input  data.
-         iParallel0,                // parallel-input  data.
-     iSel,                  // select the parallel input.
-     oSerial,               // serial-output data.
-     iSerial,               // serial-input data.
-     iLoadEnable,               // parallel-load-enable.
-     iShiftEnable,              // serial-shift-enable.
-     iResetN,               // synchronous reset*.
-     iClk                   // module clock.
+         oParallel,                             // parallel-output data.
+         iParallel1,                            // parallel-input  data.
+         iParallel0,                            // parallel-input  data.
+         iSel,                                  // select the parallel input.
+         oSerial,                               // serial-output data.
+         iSerial,                               // serial-input data.
+         iLoadEnable,                           // parallel-load-enable.
+         iShiftEnable,                          // serial-shift-enable.
+         iResetN,                               // synchronous reset*.
+         iClk                                   // module clock.
         );
 /*--------------------------------description-----------------------------------
-    a 16-bit parallel shift-register with 2 selectable input buses.
+        a 16-bit parallel shift-register with 2 selectable input buses.
 -------------------------------------notes--------------------------------------
-    shifting is LSB->MSB.
+        shifting is LSB->MSB.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    output  [15:0]  oParallel;      // parallel-output data.
-    input   [15:0]  iParallel1;     // parallel-input  data.
-    input   [15:0]  iParallel0;     // parallel-input  data.
-    input           iSel;           // select the parallel input.
-    output          oSerial;        // serial-output data.
-    input           iSerial;        // serial-input data.
-    input           iLoadEnable;        // parallel-load-enable.
-    input           iShiftEnable;       // serial-shift-enable.
-    input           iResetN;        // synchronous reset*.
-    input           iClk;           // module clock.
+        output  [15:0]  oParallel;              // parallel-output data.
+        input   [15:0]  iParallel1;             // parallel-input  data.
+        input   [15:0]  iParallel0;             // parallel-input  data.
+        input           iSel;                   // select the parallel input.
+        output          oSerial;                // serial-output data.
+        input           iSerial;                // serial-input data.
+        input           iLoadEnable;            // parallel-load-enable.
+        input           iShiftEnable;           // serial-shift-enable.
+        input           iResetN;                // synchronous reset*.
+        input           iClk;                   // module clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [15:0]  oParallel;      // parallel-output data.
-    wire    [15:0]  iParallel1;     // parallel-input  data.
-    wire    [15:0]  iParallel0;     // parallel-input  data.
-    wire            iSel;           // select the parallel input.
-    wire    [15:0]  wParallelIn;        // select the parallel input.
-    wire            oSerial;        // serial-output data.
-    wire            iSerial;        // serial-input data.
-    wire            iLoadEnable;        // parallel-load-enable.
-    wire            iShiftEnable;       // serial-shift-enable.
-    wire            iResetN;        // synchronous reset*.
-    wire            iClk;           // module clock.
+        wire    [15:0]  oParallel;              // parallel-output data.
+        wire    [15:0]  iParallel1;             // parallel-input  data.
+        wire    [15:0]  iParallel0;             // parallel-input  data.
+        wire            iSel;                   // select the parallel input.
+        wire    [15:0]  wParallelIn;            // select the parallel input.
+        wire            oSerial;                // serial-output data.
+        wire            iSerial;                // serial-input data.
+        wire            iLoadEnable;            // parallel-load-enable.
+        wire            iShiftEnable;           // serial-shift-enable.
+        wire            iResetN;                // synchronous reset*.
+        wire            iClk;                   // module clock.
 /*---------------------------------registers----------------------------------*/
-        reg     [15:0]  rRegister;      // the register.
+        reg     [15:0]  rRegister;              // the register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
-    mux16x2 U0_mux16x2          // data-input selection.
+        mux16x2 U0_mux16x2                      // data-input selection.
         (
-     .iDin1(iParallel1),
-     .iDin0(iParallel0),
-     .iSel (iSel),
-     .oDout(wParallelIn)
+         .iDin1(iParallel1),
+         .iDin0(iParallel0),
+         .iSel (iSel),
+         .oDout(wParallelIn)
         );
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iClk or negedge iResetN)
-    begin
-           if (!iResetN)     rRegister <= 16'h0000;
-      else if (iLoadEnable)  rRegister <= wParallelIn;
-      else if (iShiftEnable) rRegister <= {rRegister[14:0], iSerial};
-      else                   rRegister <= rRegister;
-    end
+        always @ (posedge iClk or negedge iResetN)
+        begin
+               if (!iResetN)     rRegister <= 16'h0000;
+          else if (iLoadEnable)  rRegister <= wParallelIn;
+          else if (iShiftEnable) rRegister <= {rRegister[14:0], iSerial};
+          else                   rRegister <= rRegister;
+        end
 
-    assign oParallel = rRegister;       // propagate parallel-out.
-    assign oSerial   = rRegister[15];   // propagate serial-out.
+        assign oParallel = rRegister;           // propagate parallel-out.
+        assign oSerial   = rRegister[15];       // propagate serial-out.
 /*-------------------------------*/endmodule/*--------------------------------*/
+
--- a/mmRTL/scan_08.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/scan_08.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,58 +1,75 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module scan_08              // shadow register.
+        module scan_08                          // shadow register.
         (
-         oParallel,             // parallel-output data.
-         iParallel,             // parallel-input  data.
-     oSerial,               // serial-output data.
-     iSerial,               // serial-input data.
-     iLoadEnable,               // parallel-load-enable.
-     iShiftEnable,              // serial-shift-enable.
-     iResetN,               // synchronous reset*.
-     iClk                   // module clock.
+         oParallel,                             // parallel-output data.
+         iParallel,                             // parallel-input  data.
+         oSerial,                               // serial-output data.
+         iSerial,                               // serial-input data.
+         iLoadEnable,                           // parallel-load-enable.
+         iShiftEnable,                          // serial-shift-enable.
+         iResetN,                               // synchronous reset*.
+         iClk                                   // module clock.
         );
 /*--------------------------------description-----------------------------------
-    an 8-bit parallel shift-register.
+        an 8-bit parallel shift-register.
 -------------------------------------notes--------------------------------------
-    shifting is LSB->MSB.
+        shifting is LSB->MSB.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    output  [ 7:0]  oParallel;      // parallel-output data.
-    input   [ 7:0]  iParallel;      // parallel-input  data.
-    output          oSerial;        // serial-output data.
-    input           iSerial;        // serial-input data.
-    input           iLoadEnable;        // parallel-load-enable.
-    input           iShiftEnable;       // serial-shift-enable.
-    input           iResetN;        // synchronous reset*.
-    input           iClk;           // module clock.
+        output  [ 7:0]  oParallel;              // parallel-output data.
+        input   [ 7:0]  iParallel;              // parallel-input  data.
+        output          oSerial;                // serial-output data.
+        input           iSerial;                // serial-input data.
+        input           iLoadEnable;            // parallel-load-enable.
+        input           iShiftEnable;           // serial-shift-enable.
+        input           iResetN;                // synchronous reset*.
+        input           iClk;                   // module clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [ 7:0]  oParallel;      // parallel-output data.
-    wire    [ 7:0]  iParallel;      // parallel-input  data.
-    wire    [ 7:0]  wParallelIn;        // select the parallel input.
-    wire            oSerial;        // serial-output data.
-    wire            iSerial;        // serial-input data.
-    wire            iLoadEnable;        // parallel-load-enable.
-    wire            iShiftEnable;       // serial-shift-enable.
-    wire            iResetN;        // synchronous reset*.
-    wire            iClk;           // module clock.
+        wire    [ 7:0]  oParallel;              // parallel-output data.
+        wire    [ 7:0]  iParallel;              // parallel-input  data.
+        wire    [ 7:0]  wParallelIn;            // select the parallel input.
+        wire            oSerial;                // serial-output data.
+        wire            iSerial;                // serial-input data.
+        wire            iLoadEnable;            // parallel-load-enable.
+        wire            iShiftEnable;           // serial-shift-enable.
+        wire            iResetN;                // synchronous reset*.
+        wire            iClk;                   // module clock.
 /*---------------------------------registers----------------------------------*/
-        reg     [ 7:0]  rRegister;      // the register.
+        reg     [ 7:0]  rRegister;              // the register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iClk or negedge iResetN)
-    begin
-           if (!iResetN)     rRegister <= 8'h00;
-      else if (iLoadEnable)  rRegister <= iParallel;
-      else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
-      else                   rRegister <= rRegister;
-    end
+        always @ (posedge iClk or negedge iResetN)
+        begin
+               if (!iResetN)     rRegister <= 8'h00;
+          else if (iLoadEnable)  rRegister <= iParallel;
+          else if (iShiftEnable) rRegister <= {rRegister[6:0], iSerial};
+          else                   rRegister <= rRegister;
+        end
+
+        assign oParallel = rRegister;           // propagate parallel-out.
+        assign oSerial   = rRegister[7];        // propagate serial-out.
+/*-------------------------------*/endmodule/*--------------------------------*/
+
+
 
-    assign oParallel = rRegister;       // propagate parallel-out.
-    assign oSerial   = rRegister[7];    // propagate serial-out.
-/*-------------------------------*/endmodule/*--------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/mmRTL/scan_16.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/scan_16.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,60 +1,61 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module scan_16              // shadow register.
+        module scan_16                          // shadow register.
         (
-         oParallel,             // parallel-output data.
-         iParallel,             // parallel-input  data.
-     oSerial,               // serial-output data.
-     iSerial,               // serial-input data.
-     iLoadEnable,               // parallel-load-enable.
-     iShiftEnable,              // serial-shift-enable.
-     iResetN,               // synchronous reset*.
-     iClk                   // module clock.
+         oParallel,                             // parallel-output data.
+         iParallel,                             // parallel-input  data.
+         oSerial,                               // serial-output data.
+         iSerial,                               // serial-input data.
+         iLoadEnable,                           // parallel-load-enable.
+         iShiftEnable,                          // serial-shift-enable.
+         iResetN,                               // synchronous reset*.
+         iClk                                   // module clock.
         );
 /*--------------------------------description-----------------------------------
-    a 16-bit parallel shift-register.
+        a 16-bit parallel shift-register.
 -------------------------------------notes--------------------------------------
-    shifting is LSB->MSB.
+        shifting is LSB->MSB.
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    output  [15:0]  oParallel;      // parallel-output data.
-    input   [15:0]  iParallel;      // parallel-input  data.
-    output          oSerial;        // serial-output data.
-    input           iSerial;        // serial-input data.
-    input           iLoadEnable;        // parallel-load-enable.
-    input           iShiftEnable;       // serial-shift-enable.
-    input           iResetN;        // synchronous reset*.
-    input           iClk;           // module clock.
+        output  [15:0]  oParallel;              // parallel-output data.
+        input   [15:0]  iParallel;              // parallel-input  data.
+        output          oSerial;                // serial-output data.
+        input           iSerial;                // serial-input data.
+        input           iLoadEnable;            // parallel-load-enable.
+        input           iShiftEnable;           // serial-shift-enable.
+        input           iResetN;                // synchronous reset*.
+        input           iClk;                   // module clock.
 /*-----------------------------------wires------------------------------------*/
-    wire    [15:0]  oParallel;      // parallel-output data.
-    wire    [15:0]  iParallel;      // parallel-input  data.
-    wire    [15:0]  wParallelIn;        // select the parallel input.
-    wire            oSerial;        // serial-output data.
-    wire            iSerial;        // serial-input data.
-    wire            iLoadEnable;        // parallel-load-enable.
-    wire            iShiftEnable;       // serial-shift-enable.
-    wire            iResetN;        // synchronous reset*.
-    wire            iClk;           // module clock.
+        wire    [15:0]  oParallel;              // parallel-output data.
+        wire    [15:0]  iParallel;              // parallel-input  data.
+        wire    [15:0]  wParallelIn;            // select the parallel input.
+        wire            oSerial;                // serial-output data.
+        wire            iSerial;                // serial-input data.
+        wire            iLoadEnable;            // parallel-load-enable.
+        wire            iShiftEnable;           // serial-shift-enable.
+        wire            iResetN;                // synchronous reset*.
+        wire            iClk;                   // module clock.
 /*---------------------------------registers----------------------------------*/
-        reg     [15:0]  rRegister;      // the register.
+        reg     [15:0]  rRegister;              // the register.
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (posedge iClk or negedge iResetN)
-    begin
-           if (!iResetN)     rRegister[15:0] <= 16'h0000;
-      else if (iLoadEnable)  rRegister[15:0] <= iParallel[15:0];
-      else if (iShiftEnable) rRegister[15:0] <= {rRegister[14:0], iSerial};
-      else                   rRegister[15:0] <= rRegister[15:0];
-    end
+        always @ (posedge iClk or negedge iResetN)
+        begin
+               if (!iResetN)     rRegister[15:0] <= 16'h0000;
+          else if (iLoadEnable)  rRegister[15:0] <= iParallel[15:0];
+          else if (iShiftEnable) rRegister[15:0] <= {rRegister[14:0], iSerial};
+          else                   rRegister[15:0] <= rRegister[15:0];
+        end
 
-    assign oParallel[15:0] = rRegister[15:0];       // propagate parallel-out.
-    assign oSerial   = rRegister[15];   // propagate serial-out.
+                                                // propagate parallel-out.
+        assign oParallel[15:0] = rRegister[15:0];               
+        assign oSerial   = rRegister[15];       // propagate serial-out.
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -72,3 +73,5 @@
 
 
 
+
+
--- a/mmRTL/shadow_load_control.txt	Sun Sep 01 03:19:59 2013 +0000
+++ b/mmRTL/shadow_load_control.txt	Sun Sep 01 03:48:07 2013 +0000
@@ -1,51 +1,51 @@
 /*----------------------------------copyright---------------------------------*/
-//  licensed for personal and academic use.
-//  commercial use must be approved by the account-holder of
-//  gated.clock@gmail.com
+//      licensed for personal and academic use.
+//      commercial use must be approved by the account-holder of
+//      gated.clock@gmail.com
 /*-----------------------------------module-----------------------------------*/
-    module shadow_load_control
+        module shadow_load_control
         (
-      iCPUclk,
-      iSPIclk,
-      iRstn,                // direct clear.
-      oLoadEnable               // shadow registers load enable.
+          iCPUclk,
+          iSPIclk,
+          iRstn,                                // direct clear.
+          oLoadEnable                           // shadow registers load enable.
         );
 /*--------------------------------description-----------------------------------
-    when the CPU clock goes low, the CPU state is stable, and its time
-    for the SPI shadow registers to do a parallel load of the CPU state,
-    so its time to turn on the load-enable signal.
+        when the CPU clock goes low, the CPU state is stable, and its time
+        for the SPI shadow registers to do a parallel load of the CPU state,
+        so its time to turn on the load-enable signal.
 
-    when the first SPI clock goes high, the parallel load completes and
-    its time to turn off the load-enable signal.
+        when the first SPI clock goes high, the parallel load completes and
+        its time to turn off the load-enable signal.
 -------------------------------------notes--------------------------------------
 ------------------------------------defines-----------------------------------*/
 /*-----------------------------------ports------------------------------------*/
-    input           iCPUclk;
-    input           iSPIclk;
-    input           iRstn;          // direct clear.
-    output          oLoadEnable;        // shadow registers load enable.
+        input           iCPUclk;
+        input           iSPIclk;
+        input           iRstn;                  // direct clear.
+        output          oLoadEnable;            // shadow registers load enable.
 /*-----------------------------------wires------------------------------------*/
-    wire            iCPUclk;
-    wire            iSPIclk;
-    wire            iRstn;          // direct clear.
-    wire            oLoadEnable;        // shadow registers load enable.
+        wire            iCPUclk;
+        wire            iSPIclk;
+        wire            iRstn;                  // direct clear.
+        wire            oLoadEnable;            // shadow registers load enable.
 
-    wire            wOrClock;       // OR the clocks.
+        wire            wOrClock;               // OR the clocks.
 /*---------------------------------registers----------------------------------*/
-    reg            rRegister;
+        reg            rRegister;
 /*---------------------------------variables----------------------------------*/
 /*---------------------------------parameters---------------------------------*/
 /*-----------------------------------clocks-----------------------------------*/
 /*---------------------------------instances----------------------------------*/
 /*-----------------------------------logic------------------------------------*/
-    always @ (negedge wOrClock or negedge iRstn)
-    begin
-           if (!iRstn   ) rRegister <= 1'b0;
-      else if (!wOrClock) rRegister <= !iSPIclk;
-    end
+        always @ (negedge wOrClock or negedge iRstn)
+        begin
+               if (!iRstn   ) rRegister <= 1'b0;
+          else if (!wOrClock) rRegister <= !iSPIclk;
+        end
 
-    assign wOrClock    =  iCPUclk | iSPIclk;
-    assign oLoadEnable =  rRegister;
+        assign wOrClock    =  iCPUclk | iSPIclk;
+        assign oLoadEnable =  rRegister;
 /*-------------------------------*/endmodule/*--------------------------------*/
 
 
@@ -63,3 +63,20 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+