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

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

unix.superglobalmegacorp.com

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