public VIC_II(C64 _c64) : base(0xd000, 0xd3ff) { C64 = _c64; Palette = new Color[16]; Palette[0] = Color.FromArgb(0xff, 0x00, 0x00, 0x00); Palette[1] = Color.FromArgb(0xff, 0xff, 0xff, 0xff); Palette[2] = Color.FromArgb(0xff, 0x68, 0x37, 0x2b); Palette[3] = Color.FromArgb(0xff, 0x70, 0xa4, 0xb2); Palette[4] = Color.FromArgb(0xff, 0x6F, 0x3D, 0x86); Palette[5] = Color.FromArgb(0xff, 0x58, 0x8D, 0x43); Palette[6] = Color.FromArgb(0xff, 0x35, 0x28, 0x79); Palette[7] = Color.FromArgb(0xff, 0xB8, 0xC7, 0x6F); Palette[8] = Color.FromArgb(0xff, 0x6F, 0x4F, 0x25); Palette[9] = Color.FromArgb(0xff, 0x43, 0x39, 0x00); Palette[10] = Color.FromArgb(0xff, 0x9A, 0x67, 0x59); Palette[11] = Color.FromArgb(0xff, 0x44, 0x44, 0x44); Palette[12] = Color.FromArgb(0xff, 0x6C, 0x6C, 0x6C); Palette[13] = Color.FromArgb(0xff, 0x9A, 0xD2, 0x84); Palette[14] = Color.FromArgb(0xff, 0x6C, 0x5E, 0xB5); Palette[15] = Color.FromArgb(0xff, 0x95, 0x95, 0x95); Screen = new Bitmap(Settings.PixelsPerScanLine, Settings.NumScanLines, System.Drawing.Imaging.PixelFormat.Format8bppIndexed); if (Screen.Palette.Flags > 0) { ColorPalette pal = Screen.Palette; for (int i = 0; i < 16; i++) { pal.Entries[i] = Palette[i]; } Screen.Palette = pal; } }
public PLA(C64 _c64) { C64 = _c64; Reset(); }
public void Process(C64 _c64) { xSignal.CopyFrom(Signal); Signal.toInactive(); // collision? // CIA2: let host signal byte PRA = _c64.CIA2.PRA; if ((PRA & (1 << 3)) > 0) { Signal.ATN += 1; } if ((PRA & (1 << 4)) > 0) { Signal.CLK += 1; } if ((PRA & (1 << 5)) > 0) { Signal.DATA += 1; } // floppy output C1541 floppy = _c64.Floppy; if (floppy.DATA_OUT) { Signal.DATA += 2; } if (floppy.CLOCK_OUT) { Signal.CLK += 2; } // collision? if ((Signal.ATN == 3) || (Signal.CLK == 3) || (Signal.DATA == 3)) { Console.Out.WriteLine("IEC: collision"); } // // inputs // // floppy input floppy.ATN_IN = (Signal.ATN > 0); floppy.CLOCK_IN = (Signal.CLK > 0); floppy.DATA_IN = (Signal.DATA > 0); // CIA2 input _c64.CIA2.PRA &= 0x3f; if (Signal.CLK == 0) { _c64.CIA2.PRA |= (1 << 6); } else { _c64.CIA2.PRA &= 0xbf; } if (Signal.DATA == 0) { _c64.CIA2.PRA |= (1 << 7); } else { _c64.CIA2.PRA &= 0x7f; } // // Trace // if ((Signal.ATN != xSignal.ATN) || (Signal.DATA != xSignal.DATA) || (Signal.CLK != xSignal.CLK)) { string str = ""; str += string.Format("ATN:{0} ", Signal.ATN); str += string.Format("CLK:{0} ", Signal.CLK); str += string.Format("DATA:{0} ", Signal.DATA); Console.Out.WriteLine(str); } }
public IOMemoryBank(C64 _c64, int _offset, int _len) : base(_offset, _len) { C64 = _c64; }