Beispiel #1
0
        static ControlLines DBus2Reg8(HLBusReg8 reg)
        {
            switch (reg)
            {
            case HLBusReg8.W:
            case HLBusReg8.B:
            case HLBusReg8.D:
            case HLBusReg8.H:
            case HLBusReg8.SPh:
            case HLBusReg8.PCh:
            case HLBusReg8.LRh:
                return(DBus2HBus | WriteReg8(reg));

            case HLBusReg8.Z:
            case HLBusReg8.C:
            case HLBusReg8.E:
            case HLBusReg8.L:
            case HLBusReg8.SPl:
            case HLBusReg8.PCl:
            case HLBusReg8.LRl:
                return(DBus2LBus | WriteReg8(reg));

            default:
                throw new ArgumentException(reg.ToString());
            }
        }
 static (ControlLines[], ControlLines2[]) LdReg8Abs(HLBusReg8 reg)
 {
     return(new[]
     {
         // this is a mixture of lda (WZ)
         // ACBA + 1 -> ACBA, ACBA + 1 -> ABuf
         // Read(Abuf), D -> W
         (ACOpInc | ACRes2ACB | ACBALoad | ABufLoad
          | BusEnablePin | Write_ReadPinRead | DBuf2DBus | DBus2Reg8(W)),
         // ACBA + 1 -> PC
         // Read(ABuf), D -> DBuf
         (ACOpInc | ACRes2HLBus | WriteReg16(PC)
          | BusEnablePin | Write_ReadPinRead | DBufLoad),
         // DBuf -> LBus
         // W -> HBus
         // HLBus -> ABuf
         (DBufOut | DBuf2DBus | DBus2LBus
          | ReadReg8(W)
          | ABufLoad),
         // D -> A, Read(Abuf)
         (DBus2Reg8(reg) | DBuf2DBus
          | Write_ReadPinRead | BusEnablePin
          | TogglePhase)
     },
            new[]
     {
         ControlLines2.None,
         ControlLines2.None,
         ControlLines2.None,
         ControlLines2.None,
     });
 }
 static (ControlLines[], ControlLines2[]) LdReg8Imm8(HLBusReg8 reg)
 {
     return(new[]
     {
         (BusEnablePin | Write_ReadPinRead
          | DBuf2DBus | DBus2Reg8(reg)),
         (WriteReg16(PC) | ACRes2HLBus | ACOpInc
          | TogglePhase)
     },
            new[]
     {
         ControlLines2.None,
         ControlLines2.None,
     });
 }
 static (ControlLines[], ControlLines2[]) LdReg8Ind(HLBusReg8 target, HLBusReg16 ind)
 {
     return(new[]
     {
         (ReadReg16(ind) | ABufLoad),
         (DBuf2DBus | DBus2Reg8(target)
          | Write_ReadPinRead | BusEnablePin
          | TogglePhase)
     },
            new[]
     {
         ControlLines2.None,
         ControlLines2.None,
     });
 }
Beispiel #5
0
        static ControlLines ReadReg8(HLBusReg8 reg)
        {
            switch (reg)
            {
            case W:
                return(Reg2HBusSelW);

            case B:
                return(Reg2HBusSelB);

            case D:
                return(Reg2HBusSelD);

            case H:
                return(Reg2HBusSelH);

            case SPh:
                return(Reg2HBusSelSPh);

            case PCh:
                return(Reg2HBusSelPCh);

            case LRh:
                return(Reg2HBusSelLRh);

            case IXh:
                return(Reg2HBusSelIXh);

            case IYh:
                return(Reg2HBusSelIYh);

            case IVh:
                return(Reg2HBusSelIVh);

            case Z:
                return(Reg2LBusSelZ);

            case C:
                return(Reg2LBusSelC);

            case E:
                return(Reg2LBusSelE);

            case L:
                return(Reg2LBusSelL);

            case SPl:
                return(Reg2LBusSelSPl);

            case PCl:
                return(Reg2LBusSelPCl);

            case LRl:
                return(Reg2LBusSelLRl);

            case IXl:
                return(Reg2LBusSelIXl);

            case IYl:
                return(Reg2LBusSelIYl);

            case IVl:
                return(Reg2LBusSelIVl);

            default:
                throw new ArgumentException(reg.ToString());
            }
        }