/* lu3.h Definitions for LU3 datapath control program */ #ifndef LU3_INCLUDED #define LU3_INCLUDED #define MAJOR_VERSION 0 #define MINOR_VERSION 99 #define BANNER_ID "LU3-DV Control" /* Bit defenitions for switch array */ #define IRQ0_DATA_HIGH_INCREMENT 2 #define IRQ1_DATA_HIGH_DECREMENT 1 #define IRQ2_DATA_LOW_INCREMENT 8 #define IRQ3_DATA_LOW_DECREMENT 4 #define IRQ4_ADDRESS_HIGH_INCREMENT 0x20 #define IRQ5_ADDRESS_HIGH_DECREMENT 0x10 #define IRQ6_ADDRESS_LOW_INCREMENT 0x80 #define IRQ7_ADDRESS_LOW_DECREMENT 0x40 #define IRQ8_DATA_SET 0x100 #define IRQ9_FLISP_RESET 0x200 #define IRQ10_FLISP_CLK 0x400 #define IRQ11_FLISP_NF 0x800 #define ADDRESS_SET_MODE 0x1000 #define DATA_SET_MODE 0x2000 #define FLISP_RESET 1 #define FLISP_NF 2 #define FLISP_CLK 3 #define MEM_DATA_SET 4 #define MEM_DATA_H_INC 5 #define MEM_DATA_H_DEC 6 #define MEM_DATA_L_INC 7 #define MEM_DATA_L_DEC 8 #define MEM_ADDR_H_INC 9 #define MEM_ADDR_H_DEC 10 #define MEM_ADDR_L_INC 11 #define MEM_ADDR_L_DEC 12 #define MEMORY_WRITE 13 #define MEMORY_READ 14 #define REGISTER_WRITE 15 #define REGISTER_READ 16 #define GET_VERSION 17 #define QUIET_MODE 18 #define INTERACTIVE_MODE 19 typedef struct cmd { unsigned char message; unsigned char p1; unsigned char p2; } CMD, *PCMD; #define MAX_CMD_BUF 32 typedef struct regtype{ unsigned char cval; unsigned char ldenab; unsigned char oeenab; unsigned char incenab; unsigned char decenab; unsigned char clrenab; }REGTYPE; typedef struct aluhandle{ unsigned char Dval; unsigned char Eval; unsigned char Uval; unsigned char func; unsigned char f3; unsigned char f2; unsigned char f1; unsigned char f0; unsigned char flags; unsigned char cin; }ALUHANDLE; typedef struct muxhandle{ unsigned char g14; unsigned char g13; unsigned char g12; unsigned char g11; unsigned char g10; unsigned char g9; unsigned char g8; unsigned char g7; unsigned char g6; unsigned char g5; unsigned char g4; unsigned char g3; unsigned char g2; unsigned char g1; unsigned char g0; }MUXHANDLE; typedef struct memhandle{ unsigned char mw; unsigned char mr; }MEMHANDLE; typedef struct datapath{ unsigned char busval; unsigned char memadd; unsigned char nf; unsigned char irq; REGTYPE regA; REGTYPE regB; REGTYPE regT; REGTYPE regR; REGTYPE regCC; REGTYPE regI; REGTYPE regX; REGTYPE regY; REGTYPE regSP; REGTYPE regPC; REGTYPE regTA; ALUHANDLE alu; MUXHANDLE mux; MEMHANDLE mainmem; }DATAPATH; int isExternalOpcode( void ); void doExternalOpcode( void ); unsigned char readIn( unsigned char ); void outbusHigh( unsigned char ); void outbusLow( unsigned char ); void selectOut( unsigned char ); void updateRegisters( void ); void updateAll(void); void setMemory(unsigned char add, unsigned char data); unsigned char getMemory(unsigned char add ); void setAutoAddress(unsigned char add); void consoleInit( void ); void consoleOut(unsigned char ch); void sendEOT( void ); void sendAsAscii( unsigned char ); void initCmd(void); void putCmd( PCMD p ); void setFlispRegisterValue(unsigned char r, unsigned char); unsigned char getFlispRegisterValue(unsigned char); unsigned char translateFlispRegister(unsigned char ); PCMD getCmd( void ); void doFlispReset(void ); void doFlispNF(void); void doFlispClk(void); extern unsigned char interactive_mode; #endif /* LU3_INCLUDED */