int get_cursor(){ //select the internal register 14 and 15 of display //to read the high byte and low byte of the cursor //offset. int offset; write_port_byte(DISPLAY_CTRL_PORT, CURSOR_HIGH_BYTE); offset = read_port_byte(DISPLAY_DATA_PORT) << 8; write_port_byte(DISPLAY_CTRL_PORT, CURSOR_LOW_BYTE); offset += read_port_byte(DISPLAY_DATA_PORT); return offset * 2; }
static void PREFIX186(_insb)(i8086_state *cpustate) /* Opcode 0x6c */ { #ifdef I80286 if (PM && (CPL>IOPL)) throw TRAP(GENERAL_PROTECTION_FAULT, 0); #endif ICOUNT -= timing.ins8; PutMemB(ES,cpustate->regs.w[DI],read_port_byte(cpustate->regs.w[DX])); cpustate->regs.w[DI] += cpustate->DirVal; }
static void PREFIX186(_insb)(void) /* Opcode 0x6c */ { ICOUNT -= cycles.ins8; PutMemB(ES,I.regs.w[DI],read_port_byte(I.regs.w[DX])); I.regs.w[DI] += I.DirVal; }
static void PREFIX186(_insb)(i8086_state *cpustate) /* Opcode 0x6c */ { ICOUNT -= timing.ins8; PutMemB(ES,cpustate->regs.w[DI],read_port_byte(cpustate->regs.w[DX])); cpustate->regs.w[DI] += cpustate->DirVal; }