static int sis_read_2(int custom, int idx) { uint8_t val1; uint8_t val2; if (custom >= 0) { if (idx+1 > sisregs[custom].length) { return 0; } else { inSISIDXREG(sisregs[custom].idx_base, idx++, val1); inSISIDXREG(sisregs[custom].idx_base, idx, val2); } } else { val1 = inSISREG(idx++); val2 = inSISREG(idx); } return (val2<<8) | val1; }
/* read function */ static int sis_read_1(int custom, int idx) { uint8_t val; if (custom >= 0) { if (idx > sisregs[custom].length) return 0; else inSISIDXREG(sisregs[custom].idx_base, idx, val); } else { val = inSISREG(idx); } return val; }
static int sis_read_4(int custom, int idx) { uint8_t val1; uint8_t val2; uint8_t val3; uint8_t val4; if (custom >= 0) { if (idx+3 > sisregs[custom].length) { return 0; } else { inSISIDXREG(sisregs[custom].idx_base, idx++, val1); inSISIDXREG(sisregs[custom].idx_base, idx++, val2); inSISIDXREG(sisregs[custom].idx_base, idx++, val3); inSISIDXREG(sisregs[custom].idx_base, idx, val4); } } else { val1 = inSISREG(idx++); val2 = inSISREG(idx++); val3 = inSISREG(idx++); val4 = inSISREG(idx); } return (val4<<24) | (val3<<16) | (val2<<8) | val1; }
/* VBlank */ static CARD8 vblank_active_CRT1(SISPtr pSiS) { return (inSISREG(SISINPSTAT) & 0x08); }