Annotation of hatari/src/xbios.c, revision 1.1.1.17

1.1       root        1: /*
1.1.1.3   root        2:   Hatari - xbios.c
                      3: 
1.1.1.14  root        4:   This file is distributed under the GNU General Public License, version 2
                      5:   or at your option any later version. Read the file gpl.txt for details.
1.1       root        6: 
1.1.1.17! root        7:   XBios Handler (Trap #14) -  http://toshyp.atari.org/en/004014.html
1.1       root        8: 
1.1.1.17! root        9:   Intercept and direct XBios calls to allow saving screenshots in host format
1.1.1.15  root       10:   and to help with tracing/debugging.
1.1       root       11: */
1.1.1.10  root       12: const char XBios_fileid[] = "Hatari xbios.c : " __DATE__ " " __TIME__;
1.1       root       13: 
                     14: #include "main.h"
1.1.1.3   root       15: #include "configuration.h"
1.1.1.10  root       16: #include "control.h"
1.1       root       17: #include "floppy.h"
1.1.1.4   root       18: #include "log.h"
1.1       root       19: #include "m68000.h"
                     20: #include "rs232.h"
1.1.1.3   root       21: #include "screenSnapShot.h"
1.1       root       22: #include "stMemory.h"
1.1.1.17! root       23: #include "debugui.h"
1.1.1.3   root       24: #include "xbios.h"
                     25: 
1.1       root       26: 
1.1.1.13  root       27: #define HATARI_CONTROL_OPCODE 255
1.1.1.4   root       28: 
1.1.1.17! root       29: /* whether to enable XBios(11/20/255) */
1.1.1.15  root       30: static bool bXBiosCommands;
                     31: 
1.1.1.17! root       32: 
1.1.1.15  root       33: void XBios_ToggleCommands(void)
                     34: {
                     35:        if (bXBiosCommands)
                     36:        {
1.1.1.17! root       37:                fprintf(stderr, "XBios 11/20/255 Hatari versions disabled.\n");
1.1.1.15  root       38:                bXBiosCommands = false;
                     39:        }
                     40:        else
                     41:        {
1.1.1.17! root       42:                fprintf(stderr, "XBios 11/20/255 Hatari versions enabled: Dbmsg(), Scrdmp(), HatariControl().\n");
1.1.1.15  root       43:                bXBiosCommands = true;
                     44:        }
                     45: }
1.1.1.4   root       46: 
1.1.1.17! root       47: 
        !            48: /**
        !            49:  * XBIOS Dbmsg
        !            50:  * Call 11
        !            51:  *
        !            52:  * Atari debugger API:
        !            53:  * http://dev-docs.atariforge.org/files/Atari_Debugger_1-24-1990.pdf
        !            54:  * http://toshyp.atari.org/en/004012.html#Dbmsg
        !            55:  */
        !            56: static bool XBios_Dbmsg(Uint32 Params)
        !            57: {
        !            58:        /* Read details from stack */
        !            59:        const Uint16 reserved = STMemory_ReadWord(Params);
        !            60:        const Uint16 msgnum = STMemory_ReadWord(Params+SIZE_WORD);
        !            61:        const Uint32 addr = STMemory_ReadLong(Params+SIZE_WORD+SIZE_WORD);
        !            62: 
        !            63:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x0B Dbmsg(%d, 0x%04X, 0x%x) at PC 0x%X\n",
        !            64:                  reserved, msgnum, addr, M68000_GetPC());
        !            65: 
        !            66:        if (reserved != 5 || !bXBiosCommands)
        !            67:                return false;
        !            68: 
        !            69:        fprintf(stderr, "Dbmsg: 0x%04X, 0x%x\n", msgnum, addr);
        !            70: 
        !            71:        /* debugger message? */
        !            72:        if (msgnum >= 0xF000 && msgnum <= 0xF100)
        !            73:        {
        !            74:                const char *txt = (const char *)STMemory_STAddrToPointer(addr);
        !            75:                char buffer[256];
        !            76: 
        !            77:                /* between non-halting message and debugger command IDs,
        !            78:                 * are halting messages with message length encoded in ID
        !            79:                 */
        !            80:                if (msgnum > 0xF000 && msgnum < 0xF100)
        !            81:                {
        !            82:                        const int len = (msgnum & 0xFF);
        !            83:                        memcpy(buffer, txt, len);
        !            84:                        buffer[len] = '\0';
        !            85:                        txt = buffer;
        !            86:                }
        !            87:                fprintf(stderr, "-> \"%s\"\n", txt);
        !            88:        }
        !            89: 
        !            90:        /* not just a message? */
        !            91:        if (msgnum != 0xF000)
        !            92:        {
        !            93:                fprintf(stderr, "-> HALT");
        !            94:                DebugUI(REASON_PROGRAM);
        !            95:        }
        !            96: 
        !            97:        /* return value != function opcode, to indicate it's implemented */
        !            98:        Regs[REG_D0] = 0;
        !            99:        return true;
        !           100: }
        !           101: 
        !           102: 
        !           103: /**
        !           104:  * XBIOS Scrdmp
        !           105:  * Call 20
        !           106:  */
        !           107: static bool XBios_Scrdmp(Uint32 Params)
        !           108: {
        !           109:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x14 Scrdmp() at PC 0x%X\n" , M68000_GetPC());
        !           110: 
        !           111:        if (!bXBiosCommands)
        !           112:                return false;
        !           113: 
        !           114:        ScreenSnapShot_SaveScreen();
        !           115: 
        !           116:        /* Scrdmp() doesn't have return value, but return something else than
        !           117:         * function number to indicate this XBios opcode was implemented
        !           118:         */
        !           119:        Regs[REG_D0] = 0;
        !           120:        return true;
        !           121: }
        !           122: 
        !           123: 
        !           124: /**
        !           125:  * XBIOS remote control interface for Hatari
        !           126:  * Call 255
        !           127:  */
        !           128: static bool XBios_HatariControl(Uint32 Params)
1.1.1.7   root      129: {
1.1.1.17! root      130:        const char *pText;
        !           131:        pText = (const char *)STMemory_STAddrToPointer(STMemory_ReadLong(Params));
        !           132:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02X HatariControl(%s) at PC 0x%X\n",
        !           133:                  HATARI_CONTROL_OPCODE, pText, M68000_GetPC());
        !           134: 
        !           135:        if (!bXBiosCommands)
        !           136:                return false;
        !           137: 
        !           138:        Control_ProcessBuffer(pText);
        !           139: 
        !           140:        /* return value != function opcode, to indicate it's implemented */
        !           141:        Regs[REG_D0] = 0;
        !           142:        return true;
        !           143: }
1.1       root      144: 
1.1.1.2   root      145: 
1.1.1.13  root      146: #if ENABLE_TRACING
1.1.1.17! root      147: 
1.1.1.7   root      148: /**
                    149:  * XBIOS Floppy Read
                    150:  * Call 8
                    151:  */
1.1.1.8   root      152: static bool XBios_Floprd(Uint32 Params)
1.1       root      153: {
1.1.1.12  root      154:        Uint32 pBuffer;
1.1.1.7   root      155:        Uint16 Dev,Sector,Side,Track,Count;
1.1       root      156: 
1.1.1.7   root      157:        /* Read details from stack */
1.1.1.13  root      158:        pBuffer = STMemory_ReadLong(Params);
                    159:        Dev = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG); /* skip reserved long */
                    160:        Sector = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD);
                    161:        Track = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD);
                    162:        Side = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    163:        Count = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    164: 
                    165:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x08 Floprd(0x%x, %d, %d, %d, %d, %d) at PC 0x%X for: %s\n",
1.1.1.16  root      166:                  pBuffer, Dev, Sector, Track, Side, Count, M68000_GetPC(),
                    167:                  Dev < MAX_FLOPPYDRIVES ? EmulationDrives[Dev].sFileName : "n/a");
1.1.1.10  root      168:        return false;
1.1       root      169: }
                    170: 
1.1.1.2   root      171: 
1.1.1.7   root      172: /**
                    173:  * XBIOS Floppy Write
                    174:  * Call 9
                    175:  */
1.1.1.8   root      176: static bool XBios_Flopwr(Uint32 Params)
1.1       root      177: {
1.1.1.12  root      178:        Uint32 pBuffer;
1.1.1.7   root      179:        Uint16 Dev,Sector,Side,Track,Count;
1.1       root      180: 
1.1.1.7   root      181:        /* Read details from stack */
1.1.1.13  root      182:        pBuffer = STMemory_ReadLong(Params);
                    183:        Dev = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG); /* skip reserved long */
                    184:        Sector = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD);
                    185:        Track = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD);
                    186:        Side = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    187:        Count = STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    188: 
                    189:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x09 Flopwr(0x%x, %d, %d, %d, %d, %d) at PC 0x%X for: %s\n",
1.1.1.16  root      190:                  pBuffer, Dev, Sector, Track, Side, Count, M68000_GetPC(),
                    191:                  Dev < MAX_FLOPPYDRIVES ? EmulationDrives[Dev].sFileName : "n/a");
1.1.1.13  root      192:        return false;
                    193: }
1.1       root      194: 
                    195: 
1.1.1.13  root      196: /**
1.1.1.7   root      197:  * XBIOS RsConf
                    198:  * Call 15
                    199:  */
1.1.1.8   root      200: static bool XBios_Rsconf(Uint32 Params)
1.1       root      201: {
1.1.1.17! root      202:        Sint16 Baud, Ctrl, Ucr, Rsr, Tsr, Scr;
1.1       root      203: 
1.1.1.13  root      204:        Baud = STMemory_ReadWord(Params);
                    205:        Ctrl = STMemory_ReadWord(Params+SIZE_WORD);
                    206:        Ucr = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD);
                    207:        Rsr = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    208:        Tsr = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD);
                    209:        Scr = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD);
1.1.1.15  root      210:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x0F Rsconf(%d, %d, %d, %d, %d, %d) at PC 0x%X\n",
1.1.1.17! root      211:                   Baud, Ctrl, Ucr, Rsr, Tsr, Scr, M68000_GetPC());
        !           212:        return false;
1.1.1.10  root      213: }
                    214: 
                    215: 
                    216: /**
1.1.1.17! root      217:  * XBIOS Devconnect
        !           218:  * Call 139
1.1.1.10  root      219:  */
1.1.1.17! root      220: static bool XBios_Devconnect(Uint32 Params)
1.1.1.10  root      221: {
1.1.1.17! root      222:        Uint16 src,dst,clk,prescale,protocol;
1.1.1.15  root      223: 
1.1.1.17! root      224:        /* Read details from stack */
        !           225:        src = STMemory_ReadWord(Params);
        !           226:        dst = STMemory_ReadWord(Params+SIZE_WORD);
        !           227:        clk = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD);
        !           228:        prescale = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD+SIZE_WORD);
        !           229:        protocol = STMemory_ReadWord(Params+SIZE_WORD+SIZE_WORD+SIZE_WORD+SIZE_WORD);
1.1.1.15  root      230: 
1.1.1.17! root      231:        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x8B Devconnect(%hd, 0x%hx, %hd, %hd, %hd) at PC 0x%X\n",
        !           232:                  src, dst, clk, prescale, protocol ,
        !           233:                  M68000_GetPC() );
        !           234:        return false;
1.1       root      235: }
                    236: 
1.1.1.2   root      237: 
1.1.1.11  root      238: /**
                    239:  * Map XBIOS call opcode to XBIOS function name
1.1.1.14  root      240:  *
                    241:  * Mapping is based on TOSHYP information:
                    242:  *     http://toshyp.atari.org/en/004014.html
1.1.1.11  root      243:  */
                    244: static const char* XBios_Call2Name(Uint16 opcode)
                    245: {
                    246:        static const char* names[] = {
                    247:                "Initmous",
                    248:                "Ssbrk",
                    249:                "Physbase",
                    250:                "Logbase",
                    251:                "Getrez",
                    252:                "Setscreen",
                    253:                "Setpalette",
                    254:                "Setcolor",
                    255:                "Floprd",
                    256:                "Flopwr",
                    257:                "Flopfmt",
                    258:                "Dbmsg",
                    259:                "Midiws",
                    260:                "Mfpint",
                    261:                "Iorec",
                    262:                "Rsconf",
                    263:                "Keytbl",
                    264:                "Random",
                    265:                "Protobt",
                    266:                "Flopver",
                    267:                "Scrdmp",
                    268:                "Cursconf",
                    269:                "Settime",
                    270:                "Gettime",
                    271:                "Bioskeys",
                    272:                "Ikbdws",
                    273:                "Jdisint",
                    274:                "Jenabint",
                    275:                "Giaccess",
                    276:                "Offgibit",
                    277:                "Ongibit",
                    278:                "Xbtimer",
                    279:                "Dosound",
                    280:                "Setprt",
                    281:                "Kbdvbase",
                    282:                "Kbrate",
                    283:                "Prtblk",
                    284:                "Vsync",
                    285:                "Supexec",
                    286:                "Puntaes",
                    287:                NULL,   /* 40 */
                    288:                "Floprate",
                    289:                "DMAread",
                    290:                "DMAwrite",
                    291:                "Bconmap",
                    292:                NULL,   /* 45 */
                    293:                "NVMaccess",
1.1.1.17! root      294:                "Waketime", /* TOS 2.06 */
1.1.1.11  root      295:                "Metainit",
1.1.1.17! root      296:                NULL,   /* 49: rest of MetaDOS calls */
1.1.1.11  root      297:                NULL,
                    298:                NULL,
                    299:                NULL,
                    300:                NULL,
                    301:                NULL,
                    302:                NULL,
                    303:                NULL,
                    304:                NULL,
                    305:                NULL,
                    306:                NULL,
                    307:                NULL,
                    308:                NULL,
                    309:                NULL,
                    310:                NULL,   /* 63 */
                    311:                "Blitmode",
1.1.1.17! root      312:                NULL,   /* 65: CENTScreen */
1.1.1.11  root      313:                NULL,
                    314:                NULL,
                    315:                NULL,
                    316:                NULL,
                    317:                NULL,
                    318:                NULL,
                    319:                NULL,
                    320:                NULL,
                    321:                NULL,
                    322:                NULL,
                    323:                NULL,
                    324:                NULL,
                    325:                NULL,
                    326:                NULL,   /* 79 */
                    327:                "EsetShift",
                    328:                "EgetShift",
                    329:                "EsetBank",
                    330:                "EsetColor",
                    331:                "EsetPalette",
                    332:                "EgetPalette",
                    333:                "EsetGray",
                    334:                "EsetSmear",
                    335:                "VsetMode",
                    336:                "VgetMonitor",
                    337:                "VsetSync",
                    338:                "VgetSize",
1.1.1.14  root      339:                "VsetVars",     /* TOS4 internal */
1.1.1.11  root      340:                "VsetRGB",
                    341:                "VgetRGB",
1.1.1.14  root      342:                "VcheckMode",   /* TOS4 internal (ValidMode()) */
1.1.1.11  root      343:                "Dsp_DoBlock",
                    344:                "Dsp_BlkHandShake",
                    345:                "Dsp_BlkUnpacked",
                    346:                "Dsp_InStream",
                    347:                "Dsp_OutStream",
                    348:                "Dsp_IOStream",
                    349:                "Dsp_RemoveInterrupts",
                    350:                "Dsp_GetWordSize",
                    351:                "Dsp_Lock",
                    352:                "Dsp_Unlock",
                    353:                "Dsp_Available",
                    354:                "Dsp_Reserve",
                    355:                "Dsp_LoadProg",
                    356:                "Dsp_ExecProg",
                    357:                "Dsp_ExecBoot",
                    358:                "Dsp_LodToBinary",
                    359:                "Dsp_TriggerHC",
                    360:                "Dsp_RequestUniqueAbility",
                    361:                "Dsp_GetProgAbility",
                    362:                "Dsp_FlushSubroutines",
                    363:                "Dsp_LoadSubroutine",
                    364:                "Dsp_InqSubrAbility",
                    365:                "Dsp_RunSubroutine",
                    366:                "Dsp_Hf0",
                    367:                "Dsp_Hf1",
                    368:                "Dsp_Hf2",
                    369:                "Dsp_Hf3",
                    370:                "Dsp_BlkWords",
                    371:                "Dsp_BlkBytes",
                    372:                "Dsp_HStat",
                    373:                "Dsp_SetVectors",
                    374:                "Dsp_MultBlocks",
                    375:                "Locksnd",
                    376:                "Unlocksnd",
                    377:                "Soundcmd",
                    378:                "Setbuffer",
                    379:                "Setmode",
                    380:                "Settracks",
                    381:                "Setmontracks",
                    382:                "Setinterrupt",
                    383:                "Buffoper",
                    384:                "Dsptristate",
                    385:                "Gpio",
                    386:                "Devconnect",
                    387:                "Sndstatus",
                    388:                "Buffptr",
                    389:                NULL,   /* 142 */
                    390:                NULL,
                    391:                NULL,
                    392:                NULL,
                    393:                NULL,
                    394:                NULL,
                    395:                NULL,
1.1.1.14  root      396:                NULL,   /* 149 */
                    397:                "VsetMask",
                    398:                NULL,   /* 151 */
1.1.1.11  root      399:                NULL,
                    400:                NULL,
                    401:                NULL,
                    402:                NULL,
                    403:                NULL,
                    404:                NULL,
                    405:                NULL,
                    406:                NULL,
                    407:                NULL,
                    408:                NULL,
                    409:                NULL,
                    410:                NULL,
                    411:                NULL,   /* 164 */
                    412:                "WavePlay"
                    413:        };
1.1.1.17! root      414:        if (opcode < ARRAY_SIZE(names) && names[opcode]) {
1.1.1.11  root      415:                return names[opcode];
                    416:        }
                    417:        return "???";
                    418: }
1.1.1.13  root      419: 
1.1.1.16  root      420: void XBios_Info(FILE *fp, Uint32 dummy)
1.1.1.13  root      421: {
                    422:        Uint16 opcode;
                    423:        for (opcode = 0; opcode < 168; ) {
1.1.1.16  root      424:                fprintf(fp, "%02x %-21s", opcode,
1.1.1.13  root      425:                        XBios_Call2Name(opcode));
                    426:                if (++opcode % 3 == 0) {
1.1.1.16  root      427:                        fputs("\n", fp);
1.1.1.13  root      428:                }
                    429:        }
                    430: }
1.1.1.17! root      431: 
1.1.1.13  root      432: #else /* !ENABLE_TRACING */
1.1.1.17! root      433: 
        !           434: #define XBios_Floprd(params)     false
        !           435: #define XBios_Flopwr(params)     false
        !           436: #define XBios_Rsconf(params)     false
        !           437: #define XBios_Devconnect(params) false
        !           438: 
1.1.1.16  root      439: void XBios_Info(FILE *fp, Uint32 bShowOpcodes)
1.1.1.13  root      440: {
1.1.1.16  root      441:                fputs("Hatari isn't configured with ENABLE_TRACING\n", fp);
1.1.1.13  root      442: }
1.1.1.17! root      443: 
1.1.1.13  root      444: #endif /* !ENABLE_TRACING */
1.1.1.11  root      445: 
                    446: 
1.1.1.7   root      447: /**
                    448:  * Check if we need to re-direct XBios call to our own routines
                    449:  */
1.1.1.8   root      450: bool XBios(void)
1.1       root      451: {
1.1.1.7   root      452:        Uint32 Params;
                    453:        Uint16 XBiosCall;
1.1       root      454: 
1.1.1.7   root      455:        /* Find call */
                    456:        Params = Regs[REG_A7];
                    457:        XBiosCall = STMemory_ReadWord(Params);
1.1.1.13  root      458:        Params += SIZE_WORD;
1.1.1.11  root      459: 
1.1.1.7   root      460:        switch (XBiosCall)
                    461:        {
1.1.1.13  root      462:                /* commands with special handling */
                    463:        case 8:
1.1.1.7   root      464:                return XBios_Floprd(Params);
1.1.1.13  root      465:        case 9:
1.1.1.7   root      466:                return XBios_Flopwr(Params);
1.1.1.17! root      467:        case 11:
        !           468:                return XBios_Dbmsg(Params);
1.1.1.13  root      469:        case 15:
1.1.1.7   root      470:                return XBios_Rsconf(Params);
1.1.1.13  root      471:        case 20:
1.1.1.7   root      472:                return XBios_Scrdmp(Params);
1.1.1.13  root      473:        case 139:
                    474:                return XBios_Devconnect(Params);
                    475:        case HATARI_CONTROL_OPCODE:
1.1.1.10  root      476:                return XBios_HatariControl(Params);
1.1.1.7   root      477: 
1.1.1.13  root      478:        case 2:         /* Physbase */
                    479:        case 3:         /* Logbase */
                    480:        case 4:         /* Getrez */
                    481:        case 17:        /* Random */
                    482:        case 23:        /* Gettime */
                    483:        case 24:        /* Bioskeys */
                    484:        case 34:        /* Kbdvbase */
                    485:        case 37:        /* Vsync */
                    486:        case 39:        /* Puntaes */
                    487:        case 81:        /* EgetShift */
                    488:        case 89:        /* VgetMonitor */
                    489:        case 103:       /* Dsp_GetWordSize */
                    490:        case 104:       /* Dsp_Lock */
                    491:        case 105:       /* Dsp_Unlock */
                    492:        case 113:       /* Dsp_RequestUniqueAbility */
                    493:        case 114:       /* Dsp_GetProgAbility */
                    494:        case 115:       /* Dsp_FlushSubroutines */
                    495:        case 121:       /* Dsp_Hf2 */
                    496:        case 122:       /* Dsp_Hf3 */
                    497:        case 125:       /* Dsp_Hstat */
                    498:        case 128:       /* Locksnd */
                    499:        case 129:       /* Unlocksnd */
                    500:                /* commands with no args */
1.1.1.15  root      501:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s() at PC 0x%X\n",
                    502:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    503:                          M68000_GetPC());
1.1.1.13  root      504:                return false;
                    505:                
                    506:        case 1:         /* Ssbrk */
                    507:        case 14:        /* Iorec */
                    508:        case 26:        /* Jdisint */
                    509:        case 27:        /* Jenabint */
                    510:        case 29:        /* Offgibit */
                    511:        case 30:        /* Ongibit */
                    512:        case 33:        /* Setprt */
                    513:        case 44:        /* Bconmap */
                    514:        case 64:        /* Blitmode */
                    515:        case 80:        /* EsetShift */
                    516:        case 82:        /* EsetBank */
                    517:        case 86:        /* EsetGray */
                    518:        case 87:        /* EsetSmear */
                    519:        case 88:        /* VsetMode */
                    520:        case 90:        /* VsetSync */
                    521:        case 91:        /* VgetSize */
1.1.1.17! root      522:        case 95:        /* VcheckMode */
1.1.1.13  root      523:        case 102:       /* Dsp_RemoveInterrupts */
                    524:        case 112:       /* Dsp_TriggerHC */
                    525:        case 117:       /* Dsp_InqSubrAbility */
                    526:        case 118:       /* Dsp_RunSubroutine */
                    527:        case 119:       /* Dsp_Hf0 */
                    528:        case 120:       /* Dsp_Hf1 */
                    529:        case 132:       /* Setmode */
                    530:        case 134:       /* Setmontracks */
                    531:        case 136:       /* Buffoper */
                    532:        case 140:       /* Sndstatus */
                    533:                /* ones taking single word */
1.1.1.15  root      534:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%hX) at PC 0x%X\n",
1.1.1.13  root      535:                          XBiosCall, XBios_Call2Name(XBiosCall),
1.1.1.15  root      536:                          STMemory_ReadWord(Params),
                    537:                          M68000_GetPC());
1.1.1.13  root      538:                return false;
                    539: 
                    540:        case 6:         /* Setpalette */
                    541:        case 22:        /* Settime */
                    542:        case 32:        /* Dosound */
                    543:        case 36:        /* Ptrblt */
                    544:        case 38:        /* Supexec */
                    545:        case 48:        /* Metainit */
                    546:        case 141:       /* Buffptr */
                    547:                /* ones taking long or pointer */
1.1.1.15  root      548:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%X) at PC 0x%X\n",
1.1.1.13  root      549:                          XBiosCall, XBios_Call2Name(XBiosCall),
1.1.1.15  root      550:                          STMemory_ReadLong(Params),
                    551:                          M68000_GetPC());
1.1.1.13  root      552:                return false;
                    553: 
                    554:        case 7:         /* Setcolor */
                    555:        case 21:        /* Cursconf */
                    556:        case 28:        /* Giaccess */
                    557:        case 35:        /* Kbrate */
                    558:        case 41:        /* Floprate */
                    559:        case 83:        /* EsetColor */
                    560:        case 130:       /* Soundcmd */
                    561:        case 133:       /* Settracks */
                    562:        case 137:       /* Dsptristate */
                    563:        case 135:       /* Setinterrupt */
                    564:        case 138:       /* Gpio */
                    565:                /* ones taking two words */
1.1.1.15  root      566:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%hX, 0x%hX) at PC 0x%X\n",
1.1.1.13  root      567:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    568:                          STMemory_ReadWord(Params),
1.1.1.15  root      569:                          STMemory_ReadWord(Params+SIZE_WORD),
                    570:                          M68000_GetPC());
1.1.1.13  root      571:                return false;
                    572: 
                    573:        case 12:        /* Midiws */
                    574:        case 13:        /* Mfpint */
                    575:        case 25:        /* Ikbdws */
1.1.1.14  root      576:                /* ones taking word length/index and pointer */
1.1.1.15  root      577:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(%hd, 0x%X) at PC 0x %X\n",
1.1.1.13  root      578:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    579:                          STMemory_ReadWord(Params),
1.1.1.15  root      580:                          STMemory_ReadLong(Params+SIZE_WORD),
                    581:                          M68000_GetPC());
1.1.1.13  root      582:                return false;
                    583: 
                    584:        case 84:        /* EsetPalette */
                    585:        case 85:        /* EgetPalette */
                    586:        case 93:        /* VsetRGB */
                    587:        case 94:        /* VgetRGB */
                    588:                /* ones taking word, word and long/pointer */
1.1.1.15  root      589:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%hX, 0x%hX, 0x%X) at PC 0x%X\n",
1.1.1.13  root      590:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    591:                          STMemory_ReadWord(Params),
                    592:                          STMemory_ReadWord(Params+SIZE_WORD),
1.1.1.15  root      593:                          STMemory_ReadLong(Params+SIZE_WORD+SIZE_WORD),
                    594:                          M68000_GetPC());
1.1.1.13  root      595:                return false;
                    596: 
                    597:        case 106:       /* Dsp_Available */
                    598:        case 107:       /* Dsp_Reserve */
                    599:        case 111:       /* Dsp_LodToBinary */
                    600:        case 126:       /* Dsp_SetVectors */
                    601:                /* ones taking two longs/pointers */
1.1.1.15  root      602:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%X, 0x%X) at PC 0x%X\n",
1.1.1.13  root      603:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    604:                          STMemory_ReadLong(Params),
1.1.1.15  root      605:                          STMemory_ReadLong(Params+SIZE_LONG),
                    606:                          M68000_GetPC());
1.1.1.13  root      607:                return false;
                    608: 
                    609:        case 5:         /* Setscreen */
1.1.1.14  root      610:                if (STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG) == 3) {
                    611:                        /* actually VSetscreen with extra parameter */
1.1.1.15  root      612:                        LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX VsetScreen(0x%X, 0x%X, 3, 0x%hX) at PC 0x%X\n",
1.1.1.14  root      613:                                  XBiosCall, STMemory_ReadLong(Params),
                    614:                                  STMemory_ReadLong(Params+SIZE_LONG),
1.1.1.15  root      615:                                  STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG+SIZE_WORD),
                    616:                                  M68000_GetPC());
1.1.1.14  root      617:                        return false;                   
                    618:                }
1.1.1.13  root      619:        case 109:       /* Dsp_ExecProg */
                    620:        case 110:       /* Dsp_ExecBoot */
                    621:        case 116:       /* Dsp_LoadSubroutine */
1.1.1.14  root      622:        case 150:       /* VsetMask */
1.1.1.13  root      623:                /* ones taking two longs/pointers and a word */
1.1.1.15  root      624:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX %s(0x%X, 0x%X, 0x%hX) at PC 0x%X\n",
1.1.1.13  root      625:                          XBiosCall, XBios_Call2Name(XBiosCall),
                    626:                          STMemory_ReadLong(Params),
                    627:                          STMemory_ReadLong(Params+SIZE_LONG),
1.1.1.15  root      628:                          STMemory_ReadWord(Params+SIZE_LONG+SIZE_LONG),
                    629:                          M68000_GetPC());
1.1.1.13  root      630:                return false;
                    631: 
                    632:        default:  /* rest of XBios calls */
                    633:                LOG_TRACE(TRACE_OS_XBIOS, "XBIOS 0x%02hX (%s)\n",
                    634:                          XBiosCall, XBios_Call2Name(XBiosCall));
1.1.1.10  root      635:                return false;
1.1.1.7   root      636:        }
1.1       root      637: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.