home *** CD-ROM | disk | FTP | other *** search
- #ifndef _MIC_MAIN_
- #define _MIC_MAIN_
-
- #include "mic_clock.h"
- #include "mic_memory.h"
- #include "mic_data_path.h"
- #include "mic_control.h"
-
- /*
- With containership, all of the contained classes must be accessible to the
- contained classes at compile time. If separate files are needed, one may
- simply declare the class without filling in any guts. After all, the
- container doesn't care what's actually IN the contained classes.
- */
-
- //••• CLOCK •••
- class ClockClass;
-
- //••• MEMORY •••
- class MemoryClass;
-
- //••• DATA PATH •••
- class MARClass;
- class MBRClass;
- class ScratchPadClass;
- class AMUXClass;
- class ALUClass;
- class ShifterClass;
- class A_LatchClass;
- class B_LatchClass;
-
- //••• CONTROL •••
- class IncrementerClass;
- class MIRClass;
- class MPCClass;
- class MMUXClass;
- class ControlStoreClass;
- class MicroSeqClass;
-
- // ••••••••••••• MIC-1 CLASS ••••••••••••••
- class Mic_1_Class
- {
- public:
- // CLOCK
- ClockClass Clock;
-
- // MEMORY
- MemoryClass Memory;
-
- // DATA PATH
- MARClass MAR;
- MBRClass MBR;
- ScratchPadClass ScratchPad;
- AMUXClass AMUX;
- ALUClass ALU;
- ShifterClass Shifter;
- A_LatchClass A_Latch;
- B_LatchClass B_Latch;
-
- // CONTROL
- IncrementerClass Incrementer;
- MIRClass MIR;
- MPCClass MPC;
- MMUXClass MMUX;
- ControlStoreClass ControlStore;
- MicroSeqClass MicroSeq;
- };
-
- // •••••••••••••• CONSTANTS ••••••••••••••
- // Program Data
-
- // Processor Options
- // cycleBreakPoint
- extern const short kRunConstant;
- extern const short kRunInterrupted;
-
- // Global vars
- typedef struct DataRec
- {
- Boolean Done; // done with the program
- Boolean doneExecuting; // if the processor is done
- unsigned long Cycle; // how many cycles gone through
- float CPS; // Cycles Per Second
- } DataRec, *DataRecPtr;
-
- typedef struct OptionsRec
- {
- } OptionsRec, *OptionsRecPtr;
-
- extern DataRec Data;
- extern OptionsRec options;
-
- #endif