/*-------------------------------------------------------------------------*/
/* M01 Microcode       (c) Dieter Mueller 2002                             */
/*-------------------------------------------------------------------------*/
Microcode:

inputs

 A0.. A4  counter
 A5..A12  OPcode
A13       Flag
A14..A15  Interrupt


/*---*/
Flag: source for A13

A12     0       0       1       1
A11     0       1       0       1

A13     N       V       C       Z

/*---*/
Interrupts

A15     0       0       1       1
A14     0       1       0       1

        RES     NMI     IRQ     none

/*-------------------------------------*/
outputs

mc_h.7  NEUZ //1 = load next OPcode
mc_h.6  AS   //1 = address valid
mc_h.5  !WE  //0 = write
mc_h.4  IXS1
mc_h.3  IXS0
mc_h.2  LDD  //load data  register
mc_h.1  LDAH //load addr. register 8..15
mc_h.0  LDAL //load addr. register 0..7

mc_m.7  LDF //0/1 = load Flag register
mc_m.6  CLH //  1 = clear temp. Carry
mc_m.5  LDC //0/1 = load  temp. Carry
mc_m.4  AC4 //ALU command
mc_m.3  AC3
mc_m.2  AC2
mc_m.1  AC1
mc_m.0  AC0

mc_l.7  WA3 //register write address
mc_l.6  WA2
mc_l.5  WA1
mc_l.4  WA0
mc_l.3  RA3 //register read  address
mc_l.2  RA2
mc_l.1  RA1
mc_l.0  RA0

/*--------*/
IX selects the source for one of the ALU-Inputs

IXS0    0               0               1               1
IXS1    0               1               0               1

        invalid         ext.databus     sign extend     temp.Flags

/*--*/

TempFlag.7 = Q7 //Negat. Flag Bit    7
TempFlag.6 = V4 //Overfl.Flag Bit 0..7
TempFlag.5 = Q6 //(not used)
TempFlag.4 = 0  //unused
TempFlag.3 = 0  //unused
TempFlag.2 = Z4 //Zero   Flag Bit 4..7
TempFlag.1 = Z0 //Zero   Flag Bit 0..3
TempFlag.0 = C4 //Carry  Flag Bit 0..7



/*-------------------------------------------------------------------------*/
ALU


Commands:

00000    PASS_ID
00001    PASS_IX
00010    ADC
00011    SBC
00100    INC
00101    DEC
00110    ADDAC
00111    ADD0C
01000    ASL
01001    LSR
01010    ROL
01011    ROR
01100    AND
01101    OR
01110    XOR
01111    BIT
10000    C_00
10001    C_01
10010    C_FA
10011    C_FC
10100    C_FE
10101    C_FF
10110    CLC
10111    SEC
11000    CLI
11001    SEI
11010    CLD
11011    SED
11100    SEBI
11101    CLV
11110    MNZC
11111    MNZVC


/*----*/
Inputs

 A0.. A4  ID0..ID4 //data from registers
 A5.. A8  IX0..IX3 //data from ext.databus or temp.Flags
 A9..A13  AC0..AC4 //ALU command
A14       T_C      //temp. Carry for address calculations
A15       C_F      //Carry Flag input






