/** * Intercept GEMDOS calls. * Used for GEMDOS HD emulation (see gemdos.c). */ unsigned long OpCode_GemDos(uae_u32 opcode) { GemDOS_OpCode(); /* handler code in gemdos.c */ m68k_incpc(2); fill_prefetch_0(); return 4; }
/** * Intercept GEMDOS calls. * Used for GEMDOS HD emulation (see gemdos.c). */ unsigned long OpCode_GemDos(uae_u32 opcode) { GemDOS_OpCode(); /* handler code in gemdos.c */ m68k_incpc(2); regs.ir = regs.irc; get_word_prefetch(2); return 4 * CYCLE_UNIT / 2; }
/** * Emulator Native Features ID opcode interception. */ unsigned long OpCode_NatFeat_ID(uae_u32 opcode) { Uint32 stack = Regs[REG_A7] + SIZE_LONG; /* skip return address */ Uint16 SR = M68000_GetSR(); if (NatFeat_ID(stack, &(Regs[REG_D0]))) { m68k_incpc(2); regs.ir = regs.irc; get_word_prefetch(2); } return 4 * CYCLE_UNIT / 2; }
/** * Emulator Native Features call opcode interception. */ unsigned long OpCode_NatFeat_Call(uae_u32 opcode) { Uint32 stack = Regs[REG_A7] + SIZE_LONG; /* skip return address */ Uint16 SR = M68000_GetSR(); bool super; super = ((SR & SR_SUPERMODE) == SR_SUPERMODE); if (NatFeat_Call(stack, super, &(Regs[REG_D0]))) { m68k_incpc(2); regs.ir = regs.irc; get_word_prefetch(2); } return 4 * CYCLE_UNIT / 2; }
/** * This function will be called at system init by the cartridge routine * (after gemdos init, before booting floppies). * The GEMDOS vector (#$84) is setup and we also initialize the connected * drive mask and Line-A variables (for an extended VDI resolution) from here. */ unsigned long OpCode_SysInit(uae_u32 opcode) { /* Add any drives mapped by TOS in the interim */ ConnectedDriveMask |= STMemory_ReadLong(0x4c2); /* Initialize the connected drive mask */ STMemory_WriteLong(0x4c2, ConnectedDriveMask); if (!bInitGemDOS) { /* Init on boot - see cart.c */ GemDOS_Boot(); /* Update LineA for extended VDI res * D0: LineA base, A1: Font base */ VDI_LineA(regs.regs[0], regs.regs[9]); } m68k_incpc(2); fill_prefetch_0(); return 4; }