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

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

unix.superglobalmegacorp.com

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