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

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

unix.superglobalmegacorp.com

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