|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.