mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-14 23:46:14 +00:00
1858 lines
48 KiB
C
Executable File
1858 lines
48 KiB
C
Executable File
/* $Id: xc.c,v 1.4 2001/12/26 22:17:06 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
|
|
static char *id = "$Id: xc.c,v 1.4 2001/12/26 22:17:06 sybalsky Exp $ Copyright (C) Venue";
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* (C) Copyright 1989-95 Venue. All Rights Reserved. */
|
|
/* Manufactured in the United States of America. */
|
|
/* */
|
|
/* The contents of this file are proprietary information */
|
|
/* belonging to Venue, and are provided to you under license. */
|
|
/* They may not be further distributed or disclosed to third */
|
|
/* parties without the specific permission of Venue. */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#include "version.h"
|
|
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* M A I N D I S P A T C H L O O P */
|
|
/* */
|
|
/* This file contains the main dispatch loop for the emulator. */
|
|
/* */
|
|
/* */
|
|
/* */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#ifdef OSF1
|
|
#include "time.h"
|
|
#endif
|
|
|
|
#include <sys/types.h>
|
|
#ifdef DOS
|
|
#include <i32.h> /* Defines "#pragma interrupt" */
|
|
#include <stk.h> /* _XSTACK struct definition */
|
|
#include <dos.h> /* Defines REGS & other structs */
|
|
#else /* DOS */
|
|
#include <sys/time.h>
|
|
#endif /* DOS */
|
|
#include <stdio.h>
|
|
|
|
|
|
#include "lispemul.h"
|
|
#include "emlglob.h"
|
|
#include "address.h"
|
|
#include "adr68k.h"
|
|
#include "stack.h"
|
|
#include "dbprint.h"
|
|
|
|
#include "lspglob.h"
|
|
#include "lsptypes.h"
|
|
#include "lispmap.h"
|
|
#include "cell.h"
|
|
#include "initatms.h"
|
|
#include "gc.h"
|
|
#include "arith.h"
|
|
#include "stream.h"
|
|
|
|
#include "tos1defs.h"
|
|
#include "tosret.h"
|
|
#include "tosfns.h"
|
|
#include "inlineC.h"
|
|
|
|
#ifdef DOS
|
|
#include "iopage.h"
|
|
extern IOPAGE *IOPage68K;
|
|
#include "devif.h"
|
|
extern KbdInterface currentkbd;
|
|
extern DspInterface currentdsp;
|
|
extern MouseInterface currentmouse;
|
|
#endif /* DOS */
|
|
|
|
#ifdef SUN3_OS3_OR_OS4_IL
|
|
#include "inln68k.h"
|
|
#ifdef UNSAFE
|
|
#include "fastinln68k.h"
|
|
#endif
|
|
#endif
|
|
|
|
typedef struct conspage ConsPage;
|
|
typedef ByteCode *InstPtr;
|
|
|
|
|
|
#ifdef GCC386
|
|
register InstPtr pccache asm("si");
|
|
register LispPTR *cspcache asm("di");
|
|
register LispPTR tscache asm("bx");
|
|
#include "inlnPS2.h"
|
|
#elif (DOS && OPDISP)
|
|
#include "inlndos.h"
|
|
register InstPtr pccache asm("si");
|
|
register LispPTR *cspcache asm("di");
|
|
register LispPTR tscache asm("bx");
|
|
#endif /* DOS */
|
|
|
|
|
|
/* Used to just be ifdef sparc, but want to be able to turn */
|
|
/* off the inline code even on sparc machines. */
|
|
#ifdef SPARCDISP
|
|
#include "inlnSPARC.h"
|
|
#endif /* SPARCDISP */
|
|
|
|
|
|
#ifdef I386
|
|
#include "inln386i.h"
|
|
#endif
|
|
|
|
#include "fast_dsp.h"
|
|
#include "profile.h"
|
|
|
|
/* trick now is that pccache points one ahead... */
|
|
#define PCMAC (pccache-1)
|
|
#define PCMACL pccache
|
|
#define CSTKPTR ((LispPTR *) cspcache)
|
|
#define PVAR ((LispPTR *) PVar)
|
|
#define IVAR ((LispPTR *) IVar)
|
|
#define BCE_CURRENTFX ((struct frameex2 *)((DLword *) PVAR - FRAMESIZE))
|
|
|
|
#define CSTKPTRL (cspcache)
|
|
#define PVARL PVar
|
|
#define IVARL IVar
|
|
|
|
extern DLword *createcell68k(unsigned int type);
|
|
|
|
#ifdef DOS
|
|
extern unsigned char inchar;
|
|
extern unsigned short kn;
|
|
#endif
|
|
|
|
#ifdef XWINDOW
|
|
extern int Event_Req; /* != 0 when it's time to check X events
|
|
on machines that don't get them reliably
|
|
(e.g. Suns running OpenWindows) */
|
|
#endif /* XWINDOW */
|
|
|
|
#ifndef ISC
|
|
#ifndef DOS
|
|
#ifdef OPDISP
|
|
InstPtr optable[512];
|
|
#endif /* OPDISP */
|
|
#endif /* DOS */
|
|
#endif /* ISC */
|
|
|
|
|
|
|
|
#ifdef PCTRACE
|
|
/* For keeping a trace table (ring buffer) of 100 last PCs */
|
|
int pc_table[100], /* The PC */
|
|
op_table[100]; /* The opcode at that PC */
|
|
LispPTR fn_table[100]; /* The code block the PC is in (Lisp ptr) */
|
|
int pccounter = 0; /* ring-buffer counter */
|
|
#endif /* PCTRACE */
|
|
|
|
int dbgflag = 0;
|
|
|
|
int extended_frame; /*indicates if soft stack overflow */
|
|
|
|
|
|
int n_mask_array[16] = { 1, 3, 7, 0xf,
|
|
0x1f, 0x3f, 0x7f, 0xff,
|
|
0x1ff, 0x3ff, 0x7ff, 0xfff,
|
|
0x1fff, 0x3fff, 0x7fff, 0xffff};
|
|
|
|
extern int TIMER_INTERVAL;
|
|
|
|
|
|
dispatch(void)
|
|
{
|
|
register InstPtr pccache;
|
|
|
|
#ifdef I386
|
|
InstPtr *table;
|
|
#elif DOS
|
|
InstPtr * table;
|
|
#else
|
|
#if defined(OPDISP) || defined(SPARCDISP)
|
|
#ifdef ISC
|
|
InstPtr *table;
|
|
#else
|
|
register InstPtr *table;
|
|
#endif
|
|
#endif /* OPDISP */
|
|
#endif /* I386 */
|
|
|
|
#ifdef ISC
|
|
#elif (DOS && OPDISP)
|
|
#else
|
|
register LispPTR *cspcache;
|
|
register LispPTR tscache;
|
|
#endif /* ISC */
|
|
|
|
#ifdef sparc
|
|
register struct state *stateptrcache = MState;
|
|
#undef MState
|
|
#define MState stateptrcache
|
|
#endif
|
|
|
|
#if (defined(I386) || defined(ISC))
|
|
int SaveD6;
|
|
#else
|
|
#ifdef OPDISP
|
|
#ifndef DOS
|
|
register int SaveD6;
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef UNSAFE
|
|
register int Save_D5_shift_amount;
|
|
#endif
|
|
|
|
/* OP_FN_COMMON arguments */
|
|
|
|
DefCell *fn_defcell;
|
|
LispPTR fn_atom_index;
|
|
int fn_opcode_size;
|
|
int fn_num_args;
|
|
int fn_apply;
|
|
LispPTR fn_loc_defcell;
|
|
|
|
RET;
|
|
CLR_IRQ;
|
|
|
|
#ifndef ISC
|
|
#ifndef DOS
|
|
#ifdef OPDISP
|
|
table = optable;
|
|
#endif
|
|
#endif
|
|
#endif /* ISC */
|
|
|
|
|
|
#ifdef SPARCDISP
|
|
table = (InstPtr *) compute_dispatch_table();
|
|
#endif
|
|
|
|
#ifdef UNSAFE
|
|
Save_D5_shift_amount = 15;
|
|
#endif
|
|
|
|
#ifdef I386
|
|
goto setup_table;
|
|
#else
|
|
#ifdef OPDISP
|
|
#ifdef ISC
|
|
asm(" leal optable,%%eax \n\
|
|
movl %%eax,%0" : "=g" (table) : "0" (table));
|
|
goto nextopcode;
|
|
#elif (DOS && OPDISP)
|
|
asm(" lea eax,optable \n\
|
|
mov %0,%%eax" : "=g" (table) : "0" (table));
|
|
asm volatile("fldcw WORD PTR CODE32:FP_noint"); /* Turn off FP interrupts */
|
|
goto nextopcode;
|
|
#else
|
|
SaveD6 = 0;
|
|
goto setup_table;
|
|
#endif /* ISC */
|
|
|
|
#else
|
|
goto nextopcode;
|
|
#endif /* OPDISP */
|
|
|
|
#endif /* I386 */
|
|
|
|
|
|
|
|
|
|
/* INLINE OPCODE FAIL ENTRY POINTS, CALL EXTERNAL ROUTINES HERE */
|
|
OPCODEFAIL;
|
|
/* OPCODE FAIL ENTRY POINTS, CALL UFNS HERE */
|
|
|
|
UFN_CALLS;
|
|
|
|
op_ufn:
|
|
{
|
|
#ifdef ISC
|
|
UFN *entry68k;
|
|
#else
|
|
register UFN *entry68k;
|
|
#endif
|
|
entry68k = (UFN *)GetUFNEntry(Get_BYTE_PCMAC0);
|
|
fn_num_args = entry68k->arg_num;
|
|
fn_opcode_size = entry68k->byte_num+1;
|
|
fn_atom_index = entry68k->atom_name;
|
|
fn_defcell = (DefCell *) GetDEFCELL68k(fn_atom_index);
|
|
fn_apply = 2 + entry68k->byte_num; /* code for UFN entry */
|
|
goto op_fn_common;
|
|
};
|
|
|
|
/* FUNCTION CALL TAIL ROUTINE */
|
|
|
|
OP_FN_COMMON;
|
|
|
|
/* DISPATCH "LOOP" */
|
|
|
|
nextopcode :
|
|
#ifdef MYOPTRACE
|
|
if ((struct fnhead *)Addr68k_from_LADDR(0x2ed600) == FuncObj)
|
|
{
|
|
quick_stack_check();
|
|
#endif /* MYOPTRACE */
|
|
|
|
OPTPRINT(("Dispatch, PC = 0x%x, op = 0%o. TOS = 0x%x.\n", (int)PCMAC, Get_BYTE_PCMAC0, TOPOFSTACK));
|
|
#ifdef MYOPTRACE
|
|
}
|
|
#endif /* MYOPTRACE */
|
|
|
|
|
|
#ifdef PCTRACE
|
|
/* Tracing PC/Function/Opcode in a ring buffer */
|
|
pc_table[pccounter] = (int)PCMAC - (int)FuncObj;
|
|
fn_table[pccounter] = (LispPTR) LADDR_from_68k(FuncObj);
|
|
op_table[pccounter] = Get_BYTE_PCMAC0;
|
|
if (99 == pccounter++) pccounter = 0;
|
|
#endif /* PCTRACE */
|
|
|
|
/* quick_stack_check();*/ /* JDS 2/12/98 */
|
|
|
|
|
|
switch (Get_BYTE_PCMAC0) {
|
|
|
|
case 000 : CASE000: { goto op_ufn; } /* unused */
|
|
case 001 : CASE001: OPCAR;
|
|
case 002 : CASE002: OPCDR;
|
|
case 003 : CASE003: LISTP;
|
|
case 004 : CASE004: NTYPEX;
|
|
case 005 : CASE005: TYPEP(Get_BYTE_PCMAC1);
|
|
case 056 : CASE056:
|
|
case 006 : CASE006: DTEST(Get_AtomNo_PCMAC1);
|
|
case 007 : CASE007: UNWIND(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
|
|
#ifdef NATIVETRAN
|
|
ret_to_fn0: asm("_ret_to_fn0:");
|
|
asm(" .globl _ret_to_fn0");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 010 : CASE010: FN0;
|
|
#ifdef NATIVETRAN
|
|
ret_to_fn1: asm("_ret_to_fn1:");
|
|
asm(" .globl _ret_to_fn1");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 011 : CASE011: FN1;
|
|
#ifdef NATIVETRAN
|
|
ret_to_fn2: asm("_ret_to_fn2:");
|
|
asm(" .globl _ret_to_fn2");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 012 : CASE012: FN2;
|
|
#ifdef NATIVETRAN
|
|
ret_to_fn3: asm("_ret_to_fn3:");
|
|
asm(" .globl _ret_to_fn3");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 013 : CASE013: FN3;
|
|
#ifdef NATIVETRAN
|
|
ret_to_fn4: asm("_ret_to_fn4:");
|
|
asm(" .globl _ret_to_fn4");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 014 : CASE014: FN4;
|
|
#ifdef NATIVETRAN
|
|
ret_to_fnx: asm("_ret_to_fnx:");
|
|
asm(" .globl _ret_to_fnx");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 015 : CASE015: FNX;
|
|
#ifdef NATIVETRAN
|
|
ret_to_apply: asm("_ret_to_apply:");
|
|
asm(" .globl _ret_to_apply");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 016 : CASE016: APPLY;
|
|
|
|
case 017 : CASE017: CHECKAPPLY;
|
|
case 020 : CASE020: RETURN;
|
|
|
|
case 021 : CASE021: BIND;
|
|
case 022 : CASE022: UNBIND;
|
|
case 023 : CASE023: DUNBIND;
|
|
case 024 : CASE024: RPLPTR(Get_BYTE_PCMAC1);
|
|
case 025 : CASE025: GCREF(Get_BYTE_PCMAC1);
|
|
case 026 : CASE026: ASSOC;
|
|
case 027 : CASE027:
|
|
GVAR_(Get_AtomNo_PCMAC1);
|
|
case 030 : CASE030: RPLACA;
|
|
case 031 : CASE031: RPLACD;
|
|
case 032 : CASE032: CONS;
|
|
case 033 : CASE033: CLASSOC;
|
|
case 034 : CASE034: FMEMB;
|
|
case 035 : CASE035: CLFMEMB;
|
|
case 036 : CASE036: FINDKEY(Get_BYTE_PCMAC1);
|
|
case 037 : CASE037: CREATECELL;
|
|
case 040 : CASE040: BIN;
|
|
case 041 : CASE041: { goto op_ufn; } /* BOUT */
|
|
case 042 : CASE042: { goto op_ufn; } /* POPDISP - prolog only */
|
|
case 043 : CASE043: RESTLIST(Get_BYTE_PCMAC1);
|
|
case 044 : CASE044: MISCN(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
|
|
case 045 : CASE045: { goto op_ufn; } /* unused */
|
|
case 046 : CASE046: RPLCONS;
|
|
case 047 : CASE047: LISTGET;
|
|
case 050 : CASE050: { goto op_ufn; } /* unused */
|
|
case 051 : CASE051: { goto op_ufn; } /* unused */
|
|
case 052 : CASE052: { goto op_ufn; } /* unused */
|
|
case 053 : CASE053: { goto op_ufn; } /* unused */
|
|
case 054 : CASE054: EVAL;
|
|
#ifdef NATIVETRAN
|
|
ret_to_envcall: asm("_ret_to_envcall:");
|
|
asm(" .globl _ret_to_envcall");
|
|
RET_FROM_NATIVE;
|
|
#endif
|
|
case 055 : CASE055: ENVCALL;
|
|
|
|
/* case 056 : CASE056: @ 006 */
|
|
case 057 : CASE057: STKSCAN;
|
|
case 060 : CASE060: { goto op_ufn; } /* BUSBLT - DLion only */
|
|
case 061 : CASE061: { goto op_ufn; } /* MISC8 - no longer used */
|
|
case 062 : CASE062: UBFLOAT3(Get_BYTE_PCMAC1);
|
|
case 063 : CASE063: TYPEMASK(Get_BYTE_PCMAC1);
|
|
case 064 : CASE064: { goto op_ufn; } /* rdprologptr */
|
|
case 065 : CASE065: { goto op_ufn; } /* rdprologtag */
|
|
case 066 : CASE066: { goto op_ufn; } /* writeptr&tag */
|
|
case 067 : CASE067: { goto op_ufn; } /* writeptr&0tag */
|
|
case 070 : CASE070: MISC7(Get_BYTE_PCMAC1); /* misc7 (pseudocolor, fbitmapbit) */
|
|
case 071 : CASE071: { goto op_ufn; } /* dovemisc - dove only */
|
|
case 072 : CASE072: EQLOP;
|
|
case 073 : CASE073: DRAWLINE;
|
|
case 074 : CASE074: STOREN(Get_BYTE_PCMAC1);
|
|
case 075 : CASE075: COPYN(Get_BYTE_PCMAC1);
|
|
case 076 : CASE076: { goto op_ufn; } /* RAID */
|
|
case 077 : CASE077: { goto op_ufn; } /* \RETURN */
|
|
|
|
|
|
|
|
case 0100 : CASE100: IVARMACRO (0);
|
|
case 0101 : CASE101: IVARMACRO (1);
|
|
case 0102 : CASE102: IVARMACRO (2);
|
|
case 0103 : CASE103: IVARMACRO (3);
|
|
case 0104 : CASE104: IVARMACRO (4);
|
|
case 0105 : CASE105: IVARMACRO (5);
|
|
case 0106 : CASE106: IVARMACRO (6);
|
|
case 0107 : CASE107: IVARX (Get_BYTE_PCMAC1);
|
|
|
|
case 0110 : CASE110: PVARMACRO (0);
|
|
case 0111 : CASE111: PVARMACRO (1);
|
|
case 0112 : CASE112: PVARMACRO (2);
|
|
case 0113 : CASE113: PVARMACRO (3);
|
|
case 0114 : CASE114: PVARMACRO (4);
|
|
case 0115 : CASE115: PVARMACRO (5);
|
|
case 0116 : CASE116: PVARMACRO (6);
|
|
|
|
case 0117 : CASE117: PVARX(Get_BYTE_PCMAC1);
|
|
|
|
case 0120 : CASE120: FVAR(0);
|
|
case 0121 : CASE121: FVAR(2);
|
|
case 0122 : CASE122: FVAR(4);
|
|
case 0123 : CASE123: FVAR(6);
|
|
case 0124 : CASE124: FVAR(8);
|
|
case 0125 : CASE125: FVAR(10);
|
|
case 0126 : CASE126: FVAR(12);
|
|
case 0127 : CASE127: FVARX(Get_BYTE_PCMAC1);
|
|
|
|
case 0130 : CASE130: PVARSETMACRO (0);
|
|
case 0131 : CASE131: PVARSETMACRO (1);
|
|
case 0132 : CASE132: PVARSETMACRO (2);
|
|
case 0133 : CASE133: PVARSETMACRO (3);
|
|
case 0134 : CASE134: PVARSETMACRO (4);
|
|
case 0135 : CASE135: PVARSETMACRO (5);
|
|
case 0136 : CASE136: PVARSETMACRO (6);
|
|
|
|
case 0137 : CASE137: PVARX_(Get_BYTE_PCMAC1);
|
|
|
|
case 0140 : CASE140: GVAR(Get_AtomNo_PCMAC1);
|
|
case 0141 : CASE141: ARG0;
|
|
case 0142 : CASE142: IVARX_(Get_BYTE_PCMAC1);
|
|
case 0143 : CASE143: FVARX_(Get_BYTE_PCMAC1);
|
|
case 0144 : CASE144: COPY;
|
|
case 0145 : CASE145: MYARGCOUNT;
|
|
case 0146 : CASE146: MYALINK;
|
|
|
|
/******** Aconst ********/
|
|
case 0147 : CASE147: { PUSH(Get_AtomNo_PCMAC1); nextop_atom;}
|
|
case 0150 : CASE150: { PUSHATOM(NIL_PTR ); }
|
|
case 0151 : CASE151: { PUSHATOM(ATOM_T ); }
|
|
case 0152 : CASE152: { PUSHATOM(S_POSITIVE ); } /* '0 */
|
|
case 0153 : CASE153: { PUSHATOM(0xE0001 ); } /* '1 */
|
|
|
|
/********* SIC ********/
|
|
case 0154 : CASE154: {
|
|
PUSH(S_POSITIVE | Get_BYTE_PCMAC1);
|
|
nextop2;
|
|
}
|
|
|
|
/********* SNIC ********/
|
|
case 0155 : CASE155: {
|
|
PUSH(S_NEGATIVE | 0xff00 | Get_BYTE_PCMAC1);
|
|
nextop2;
|
|
}
|
|
|
|
/********* SICX ********/
|
|
case 0156 : CASE156:{
|
|
PUSH(S_POSITIVE | Get_DLword_PCMAC1);
|
|
nextop3;
|
|
}
|
|
|
|
/********* GCONST ********/
|
|
case 0157 : CASE157: {
|
|
PUSH(Get_Pointer_PCMAC1);
|
|
nextop_ptr;
|
|
}
|
|
|
|
case 0160 : CASE160: { goto op_ufn; } /* unused */
|
|
case 0161 : CASE161: { goto op_ufn; } /* readflags */
|
|
case 0162 : CASE162: { goto op_ufn; } /* readrp */
|
|
case 0163 : CASE163: { goto op_ufn; } /* writemap */
|
|
case 0164 : CASE164: { goto op_ufn; } /* readprinterport */
|
|
case 0165 : CASE165: { goto op_ufn; } /* writeprinterport */
|
|
|
|
case 0166 : CASE166: PILOTBITBLT;
|
|
case 0167 : CASE167: RCLK;
|
|
case 0170 : CASE170: { goto op_ufn; } /* MISC1, dorado only */
|
|
case 0171 : CASE171: { goto op_ufn; } /* MISC2, dorado only */
|
|
case 0172 : CASE172: RECLAIMCELL;
|
|
case 0173 : CASE173: GCSCAN1;
|
|
case 0174 : CASE174: GCSCAN2;
|
|
case 0175 : CASE175: { EXT; OP_subrcall(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2); RET; NATIVE_NEXTOP0; };
|
|
case 0176 : CASE176: { CONTEXTSWITCH; }
|
|
case 0177 : CASE177: { goto op_ufn; } /* RETCALL */
|
|
|
|
/* JUMP */
|
|
|
|
case 0200 : CASE200: { JUMPMACRO(2); }
|
|
case 0201 : CASE201: { JUMPMACRO(3); }
|
|
case 0202 : CASE202: { JUMPMACRO(4); }
|
|
case 0203 : CASE203: { JUMPMACRO(5); }
|
|
case 0204 : CASE204: { JUMPMACRO(6); }
|
|
case 0205 : CASE205: { JUMPMACRO(7); }
|
|
case 0206 : CASE206: { JUMPMACRO(8); }
|
|
case 0207 : CASE207: { JUMPMACRO(9); }
|
|
case 0210 : CASE210: { JUMPMACRO(10); }
|
|
case 0211 : CASE211: { JUMPMACRO(11); }
|
|
case 0212 : CASE212: { JUMPMACRO(12); }
|
|
case 0213 : CASE213: { JUMPMACRO(13); }
|
|
case 0214 : CASE214: { JUMPMACRO(14); }
|
|
case 0215 : CASE215: { JUMPMACRO(15); }
|
|
case 0216 : CASE216: { JUMPMACRO(16); }
|
|
case 0217 : CASE217: { JUMPMACRO(17); }
|
|
|
|
|
|
/* FJUMP */
|
|
|
|
case 0220 : CASE220: { FJUMPMACRO(2); }
|
|
case 0221 : CASE221: { FJUMPMACRO(3); }
|
|
case 0222 : CASE222: { FJUMPMACRO(4); }
|
|
case 0223 : CASE223: { FJUMPMACRO(5); }
|
|
case 0224 : CASE224: { FJUMPMACRO(6); }
|
|
case 0225 : CASE225: { FJUMPMACRO(7); }
|
|
case 0226 : CASE226: { FJUMPMACRO(8); }
|
|
case 0227 : CASE227: { FJUMPMACRO(9); }
|
|
case 0230 : CASE230: { FJUMPMACRO(10); }
|
|
case 0231 : CASE231: { FJUMPMACRO(11); }
|
|
case 0232 : CASE232: { FJUMPMACRO(12); }
|
|
case 0233 : CASE233: { FJUMPMACRO(13); }
|
|
case 0234 : CASE234: { FJUMPMACRO(14); }
|
|
case 0235 : CASE235: { FJUMPMACRO(15); }
|
|
case 0236 : CASE236: { FJUMPMACRO(16); }
|
|
case 0237 : CASE237: { FJUMPMACRO(17); }
|
|
|
|
/* TJUMP */
|
|
|
|
case 0240 : CASE240: { TJUMPMACRO(2); }
|
|
case 0241 : CASE241: { TJUMPMACRO(3); }
|
|
case 0242 : CASE242: { TJUMPMACRO(4); }
|
|
case 0243 : CASE243: { TJUMPMACRO(5); }
|
|
case 0244 : CASE244: { TJUMPMACRO(6); }
|
|
case 0245 : CASE245: { TJUMPMACRO(7); }
|
|
case 0246 : CASE246: { TJUMPMACRO(8); }
|
|
case 0247 : CASE247: { TJUMPMACRO(9); }
|
|
case 0250 : CASE250: { TJUMPMACRO(10); }
|
|
case 0251 : CASE251: { TJUMPMACRO(11); }
|
|
case 0252 : CASE252: { TJUMPMACRO(12); }
|
|
case 0253 : CASE253: { TJUMPMACRO(13); }
|
|
case 0254 : CASE254: { TJUMPMACRO(14); }
|
|
case 0255 : CASE255: { TJUMPMACRO(15); }
|
|
case 0256 : CASE256: { TJUMPMACRO(16); }
|
|
case 0257 : CASE257: { TJUMPMACRO(17); }
|
|
|
|
/******* JUMPX ********/
|
|
case 0260 : CASE260: {
|
|
CHECK_INTERRUPT;
|
|
PCMACL += Get_SBYTE_PCMAC1; nextop0;
|
|
}
|
|
|
|
/******* JUMPXX ********/
|
|
case 0261 : CASE261: {
|
|
CHECK_INTERRUPT;
|
|
PCMACL += (Get_SBYTE_PCMAC1<<8) | Get_BYTE_PCMAC2; nextop0;
|
|
}
|
|
|
|
/******* FJumpx *******/
|
|
case 0262 : CASE262: {
|
|
if(TOPOFSTACK != 0) {goto PopNextop2;}
|
|
CHECK_INTERRUPT;
|
|
POP;
|
|
PCMACL += Get_SBYTE_PCMAC1;
|
|
nextop0;
|
|
}
|
|
|
|
/******* TJumpx *******/
|
|
|
|
case 0263 : CASE263: {
|
|
if(TOPOFSTACK == 0) {goto PopNextop2;}
|
|
CHECK_INTERRUPT;
|
|
POP;
|
|
PCMACL += Get_SBYTE_PCMAC1;
|
|
nextop0;
|
|
}
|
|
|
|
/******* NFJumpx *******/
|
|
|
|
case 0264 : CASE264: {
|
|
if(TOPOFSTACK != 0) {goto PopNextop2;}
|
|
CHECK_INTERRUPT;
|
|
PCMACL += Get_SBYTE_PCMAC1;
|
|
nextop0;
|
|
}
|
|
|
|
/******* NTJumpx *******/
|
|
|
|
case 0265 : CASE265: {
|
|
if(TOPOFSTACK == 0) {goto PopNextop2;}
|
|
CHECK_INTERRUPT;
|
|
PCMACL += Get_SBYTE_PCMAC1;
|
|
nextop0;
|
|
}
|
|
|
|
case 0266 : CASE266: AREF1;
|
|
case 0267 : CASE267: ASET1;
|
|
|
|
case 0270 : CASE270: PVARSETPOPMACRO(0);
|
|
case 0271 : CASE271: PVARSETPOPMACRO(1);
|
|
case 0272 : CASE272: PVARSETPOPMACRO(2);
|
|
case 0273 : CASE273: PVARSETPOPMACRO(3);
|
|
case 0274 : CASE274: PVARSETPOPMACRO(4);
|
|
case 0275 : CASE275: PVARSETPOPMACRO(5);
|
|
case 0276 : CASE276: PVARSETPOPMACRO(6);
|
|
|
|
case 0277 : CASE277: { POP; nextop1; }
|
|
|
|
case 0300 : CASE300: POPN(Get_BYTE_PCMAC1);
|
|
case 0301 : CASE301: ATOMCELL_N(Get_BYTE_PCMAC1);
|
|
case 0302 : CASE302: GETBASEBYTE;
|
|
case 0303 : CASE303: INSTANCEP(Get_AtomNo_PCMAC1);
|
|
case 0304 : CASE304: BLT;
|
|
case 0305 : CASE305: {goto op_ufn; } /* MISC10 */
|
|
case 0306 : CASE306: {goto op_ufn; } /* P-MISC2 ??? */
|
|
case 0307 : CASE307: PUTBASEBYTE;
|
|
case 0310 : CASE310: GETBASE_N(Get_BYTE_PCMAC1);
|
|
case 0311 : CASE311: GETBASEPTR_N(Get_BYTE_PCMAC1);
|
|
case 0312 : CASE312: GETBITS_N_M(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
|
|
case 0313 : CASE313: {goto op_ufn; } /* unused */
|
|
case 0314 : CASE314: CLEQUAL;
|
|
case 0315 : CASE315: PUTBASE_N(Get_BYTE_PCMAC1);
|
|
case 0316 : CASE316: PUTBASEPTR_N(Get_BYTE_PCMAC1);
|
|
case 0317 : CASE317: PUTBITS_N_M(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
|
|
|
|
case 0320 : CASE320: N_OP_ADDBASE;
|
|
case 0321 : CASE321: N_OP_VAG2;
|
|
case 0322 : CASE322: N_OP_HILOC;
|
|
case 0323 : CASE323: N_OP_LOLOC;
|
|
case 0324 : CASE324: PLUS2; /* PLUS */
|
|
case 0325 : CASE325: DIFFERENCE; /* DIFFERENCE */
|
|
case 0326 : CASE326: TIMES2; /* TIMES2 */
|
|
case 0327 : CASE327: QUOTIENT /* QUOTIENT */
|
|
case 0330 : CASE330: IPLUS2; /* IPLUS2 only while PLUS has no float */
|
|
case 0331 : CASE331: IDIFFERENCE; /* IDIFFERENCE only while no float */
|
|
case 0332 : CASE332: ITIMES2; /* ITIMES2 only while no float */
|
|
case 0333 : CASE333: IQUOTIENT; /* IQUOTIENT */
|
|
case 0334 : CASE334: IREMAINDER;
|
|
case 0335 : CASE335: IPLUS_N(Get_BYTE_PCMAC1);
|
|
case 0336 : CASE336: IDIFFERENCE_N(Get_BYTE_PCMAC1);
|
|
case 0337 : CASE337: { goto op_ufn; } /* BASE-< */
|
|
case 0340 : CASE340: LLSH1;
|
|
case 0341 : CASE341: LLSH8;
|
|
case 0342 : CASE342: LRSH1;
|
|
case 0343 : CASE343: LRSH8;
|
|
case 0344 : CASE344: LOGOR;
|
|
case 0345 : CASE345: LOGAND;
|
|
case 0346 : CASE346: LOGXOR;
|
|
case 0347 : CASE347: LSH;
|
|
case 0350 : CASE350: FPLUS2;
|
|
case 0351 : CASE351: FDIFFERENCE;
|
|
case 0352 : CASE352: FTIMES2;
|
|
case 0353 : CASE353: FQUOTIENT;
|
|
case 0354 : CASE354: UBFLOAT2(Get_BYTE_PCMAC1);
|
|
case 0355 : CASE355: UBFLOAT1(Get_BYTE_PCMAC1);
|
|
case 0356 : CASE356: AREF2;
|
|
case 0357 : CASE357: ASET2;
|
|
|
|
case 0360 : CASE360: {
|
|
if(TOPOFSTACK == POP_TOS_1)
|
|
TOPOFSTACK = ATOM_T;
|
|
else TOPOFSTACK = NIL_PTR;
|
|
nextop1;
|
|
}
|
|
|
|
case 0361 : CASE361: IGREATERP; /* IGREATERP if no float */
|
|
case 0362 : CASE362: FGREATERP;
|
|
case 0363 : CASE363: GREATERP;
|
|
case 0364 : CASE364: ILEQUAL;
|
|
case 0365 : CASE365: MAKENUMBER;
|
|
case 0366 : CASE366: BOXIPLUS;
|
|
case 0367 : CASE367: BOXIDIFFERENCE;
|
|
case 0370 : CASE370: { goto op_ufn; } /* FLOATBLT */
|
|
case 0371 : CASE371: { goto op_ufn; } /* FFTSTEP */
|
|
case 0372 : CASE372: MISC3(Get_BYTE_PCMAC1);
|
|
case 0373 : CASE373: MISC4(Get_BYTE_PCMAC1);
|
|
case 0374 : CASE374: { goto op_ufn; } /* upctrace */
|
|
case 0375 : CASE375: SWAP;
|
|
case 0376 : CASE376: NOP;
|
|
case 0377 : CASE377: CLARITHEQUAL;
|
|
#ifdef OPDISP
|
|
#ifdef ISC
|
|
case 0400 : goto setup_table; /* to defeat optimizer, so optable exists */
|
|
#elif (DOS && OPDISP)
|
|
case 0400: goto setup_table;
|
|
#endif /* ISC */
|
|
|
|
#endif /* OPDISP */
|
|
|
|
|
|
|
|
#ifdef I386
|
|
/* to defeat the damn optimizer, make it look like */
|
|
/* we might branch to the error labels. */
|
|
case 0400 : goto plus_err;
|
|
case 0401 : goto iplus_err;
|
|
case 0402 : goto iplusn_err;
|
|
case 0403 : goto idiff_err;
|
|
case 0404 : goto diff_err;
|
|
case 0405 : goto idiffn_err;
|
|
case 0406 : goto greaterp_err;
|
|
case 0411 : goto igreaterp_err;
|
|
case 0407 : goto llsh8_err;
|
|
case 0410 : goto lrsh1_err;
|
|
case 0414 : goto lrsh8_err;
|
|
case 0417 : goto llsh1_err;
|
|
case 0413 : goto logor_err;
|
|
case 0412 : goto logand_err;
|
|
case 0416 : goto logxor_err;
|
|
case 0415 : goto addbase_err;
|
|
#endif
|
|
|
|
default: error("should not default");
|
|
|
|
} /* switch */
|
|
|
|
#ifdef NATIVETRAN
|
|
/************************************************************************/
|
|
/* NATIVE CODE INTERFACE */
|
|
/************************************************************************/
|
|
|
|
|
|
/* FORIEGN -> DISPATCH */
|
|
/* Return to current frame ext */
|
|
|
|
c_ret_to_dispatch:
|
|
asm(" .globl _c_ret_to_dispatch");
|
|
asm("_c_ret_to_dispatch:");
|
|
PCMACL = (ByteCode *) FuncObj + BCE_CURRENTFX->pc;
|
|
goto ret_to_dispatch; /* assume optimizer will remove */
|
|
|
|
/* NATIVE -> DISPATCH */
|
|
/* Return to current frame ext */
|
|
|
|
ret_to_dispatch:
|
|
asm(" .globl _ret_to_dispatch");
|
|
asm("_ret_to_dispatch:");
|
|
RET_FROM_NATIVE;
|
|
nextop0;
|
|
|
|
/* NATIVE -> DISPATCH */
|
|
/* Execute opcode in current frame ext */
|
|
|
|
ret_to_unimpl:
|
|
asm(" .globl _ret_to_unimpl");
|
|
asm("_ret_to_unimpl:");
|
|
SaveD6 = 0x100;
|
|
/* HACK. Reg. d6 is set to dispatch to native_check */
|
|
/* so need to do switch instead of dispatch! */
|
|
RET_FROM_NATIVE;
|
|
goto nextopcode;
|
|
|
|
/* NATIVE -> UFN(PC) */
|
|
|
|
ret_to_ufn:
|
|
asm(" .globl _ret_to_ufn");
|
|
asm("_ret_to_ufn:");
|
|
RET_FROM_NATIVE;
|
|
goto op_ufn;
|
|
|
|
/* DISPATCH -> NATIVE? */
|
|
/* Return to current frame ext? */
|
|
|
|
native_check:
|
|
SaveD6 = 0;
|
|
NATIVE_NEXTOP0;
|
|
|
|
/* NATIVE -> TIMER */
|
|
/* Return to Execute timer interrupt */
|
|
|
|
ret_to_timer:
|
|
asm("_ret_to_timer:");
|
|
asm(" .globl _ret_to_timer");
|
|
SaveD6 = 0x100;
|
|
RET_FROM_NATIVE;
|
|
goto check_interrupt; /* assume optimizer will remove */
|
|
|
|
#else
|
|
|
|
native_check:
|
|
|
|
#ifndef DOS
|
|
#ifdef OPDISP
|
|
SaveD6 = 0x000;
|
|
#endif
|
|
#endif /* DOS */
|
|
goto nextopcode;
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* TIMER INTERRUPT CHECK ROUTINE */
|
|
/************************************************************************/
|
|
check_interrupt:
|
|
#if (defined(NATIVETRAN) || defined(SUN3_OS3_OR_OS4_IL) || defined(I386) || defined(ISC))
|
|
asm_label_check_interrupt();
|
|
#endif
|
|
|
|
if ( (UNSIGNED)CSTKPTR > (UNSIGNED)EndSTKP )
|
|
{EXT;
|
|
error("Unrecoverable Stack Overflow");
|
|
RET;
|
|
}
|
|
|
|
/* Check for an IRQ request */
|
|
|
|
{register int need_irq;
|
|
static int period_cnt=60;
|
|
extern int KBDEventFlg;
|
|
extern int ETHEREventCount;
|
|
extern LispPTR DOBUFFEREDTRANSITION_index;
|
|
extern LispPTR INTERRUPTFRAME_index;
|
|
extern LispPTR *KEYBUFFERING68k;
|
|
extern LispPTR *PENDINGINTERRUPT68k;
|
|
extern LispPTR ATOM_STARTED;
|
|
extern LispPTR *PERIODIC_INTERRUPT68k;
|
|
extern LispPTR *PERIODIC_INTERRUPT_FREQUENCY68k;
|
|
extern LispPTR PERIODIC_INTERRUPTFRAME_index;
|
|
extern LispPTR *Reclaim_cnt_word;
|
|
extern LispPTR DORECLAIM_index;
|
|
extern int URaid_req;
|
|
|
|
/* Check for an Stack Overflow */
|
|
/* JDS 22 May 96 -- >= below used to be just >, changed because we got
|
|
stack oflows with last frame right at end of stack, leading to loops,
|
|
odd bugs, ... */
|
|
/**** Changed back to > 31 July 97 ****/
|
|
re_check_stack:
|
|
need_irq = 0;
|
|
if ( ((UNSIGNED)(CSTKPTR+1) > Irq_Stk_Check) &&
|
|
(Irq_Stk_End > 0) &&
|
|
(Irq_Stk_Check > 0) )
|
|
{
|
|
HARD_PUSH(TOPOFSTACK);
|
|
EXT;
|
|
extended_frame = NIL;
|
|
if (do_stackoverflow(NIL)) {
|
|
stackoverflow_help:
|
|
period_cnt=60; need_irq = T;
|
|
error("Stack Overflow, MUST HARDRESET!");
|
|
RET; TOPOFSTACK = NIL_PTR;
|
|
}
|
|
else { RET; POP; }
|
|
Irq_Stk_Check = (UNSIGNED)EndSTKP-STK_MIN(FuncObj);
|
|
need_irq = (Irq_Stk_End == 0) || extended_frame;
|
|
*PENDINGINTERRUPT68k |= extended_frame;
|
|
Irq_Stk_End = (UNSIGNED) EndSTKP;
|
|
}
|
|
|
|
/* Check for an IRQ request */
|
|
|
|
if ((Irq_Stk_End <= 0) || (Irq_Stk_Check <= 0) || need_irq) {
|
|
if (StkOffset_from_68K(CSTKPTR) > InterfacePage->stackbase) {
|
|
|
|
/* Interrupts not Disabled */
|
|
#ifndef KBINT
|
|
getsignaldata();
|
|
#endif
|
|
#ifdef OS4
|
|
getsignaldata();
|
|
#endif
|
|
EXT;
|
|
update_timer();
|
|
|
|
/*** If SPY is running, check to see if it ***/
|
|
/*** needs an interrupt; give it one, if so. ***/
|
|
if(*PERIODIC_INTERRUPT68k!=NIL)
|
|
{
|
|
if(period_cnt>0) period_cnt--;
|
|
else
|
|
{
|
|
cause_interruptcall(PERIODIC_INTERRUPTFRAME_index);
|
|
if(*PERIODIC_INTERRUPT_FREQUENCY68k==NIL)
|
|
period_cnt=0;
|
|
else
|
|
period_cnt=(*PERIODIC_INTERRUPT_FREQUENCY68k & 0xffff)
|
|
*(1000000/60) /TIMER_INTERVAL;
|
|
/* number of 1/60 second periods between interrupts.
|
|
TIMER_INTERVAL is the number of microseconds between
|
|
timer interrupts. The calculation here avoids some
|
|
overflow errors although there is some roundoff
|
|
if the interrupt frequency number is too low,
|
|
it will bottom out and just set period_cnt to 0 */
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef DOS
|
|
if(currentkbd->URaid == TRUE){
|
|
currentkbd->URaid = NIL;
|
|
(currentkbd->device.exit)(currentkbd); /* Install the original handler */
|
|
error("Call URaid by User Interrupt");
|
|
}
|
|
else if(currentmouse->Cursor.Moved){
|
|
union REGS regs;
|
|
|
|
currentdsp->device.locked++;
|
|
|
|
/* Remove the mouse from the old place on the screen */
|
|
(currentdsp->mouse_invissible)(currentdsp, IOPage68K);
|
|
|
|
/* Find the new delta */
|
|
regs.w.eax = 0x000B; /* Function 0xB = get delta mickeys */
|
|
int86(0x33, ®s, ®s);
|
|
currentmouse->Cursor.New.x += (short)regs.w.ecx;
|
|
currentmouse->Cursor.New.y += (short)regs.w.edx;
|
|
|
|
if(currentmouse->Cursor.New.x < 0)
|
|
currentmouse->Cursor.New.x = 0;
|
|
else if(currentmouse->Cursor.New.x > (currentdsp->Display.width - 1))
|
|
currentmouse->Cursor.New.x = currentdsp->Display.width - 1;
|
|
|
|
if(currentmouse->Cursor.New.y < 0)
|
|
currentmouse->Cursor.New.y = 0;
|
|
else if(currentmouse->Cursor.New.y > (currentdsp->Display.height - 1))
|
|
currentmouse->Cursor.New.y = currentdsp->Display.height - 1;
|
|
|
|
IOPage68K->dlmousex =
|
|
IOPage68K->dlcursorx =
|
|
currentmouse->Cursor.New.x;
|
|
IOPage68K->dlmousey =
|
|
IOPage68K->dlcursory =
|
|
currentmouse->Cursor.New.y;
|
|
|
|
/* Paint the mouse back up on the screen on the new place */
|
|
(currentdsp->mouse_vissible)( currentmouse->Cursor.New.x,
|
|
currentmouse->Cursor.New.y);
|
|
currentmouse->Cursor.Moved = FALSE;
|
|
currentdsp->device.locked--;
|
|
}
|
|
|
|
#else
|
|
if(URaid_req ==T){
|
|
URaid_req=NIL;
|
|
error("Call URaid by User Interrupt");
|
|
}
|
|
#endif /* DOS */
|
|
else if((KBDEventFlg>0)&&(*KEYBUFFERING68k==ATOM_T)) {
|
|
*KEYBUFFERING68k= ATOM_STARTED;
|
|
cause_interruptcall(DOBUFFEREDTRANSITION_index);
|
|
KBDEventFlg --;
|
|
}
|
|
else if(*Reclaim_cnt_word == S_POSITIVE) {
|
|
*Reclaim_cnt_word=NIL;
|
|
cause_interruptcall(DORECLAIM_index);
|
|
}
|
|
else if (*PENDINGINTERRUPT68k!=NIL)
|
|
{ INTSTAT2 * intstate = ((INTSTAT2 *)Addr68k_from_LADDR(*INTERRUPTSTATE_word));
|
|
unsigned char newints = (intstate->pendingmask) & ~(intstate->handledmask);
|
|
/* if (newints) */
|
|
{
|
|
intstate->handledmask |= intstate->pendingmask;
|
|
*PENDINGINTERRUPT68k=NIL;
|
|
cause_interruptcall(INTERRUPTFRAME_index);
|
|
}
|
|
}
|
|
else if (ETHEREventCount>0)
|
|
{ INTSTAT * intstate = ((INTSTAT *)Addr68k_from_LADDR(*INTERRUPTSTATE_word));
|
|
if (!(intstate->ETHERInterrupt) &&
|
|
!(((INTSTAT2 *)intstate)->handledmask & 0x40))
|
|
{
|
|
intstate->ETHERInterrupt=1;
|
|
((INTSTAT2 *)intstate)->handledmask |=
|
|
((INTSTAT2 *)intstate)->pendingmask;
|
|
cause_interruptcall(INTERRUPTFRAME_index);
|
|
ETHEREventCount--;
|
|
}
|
|
else *PENDINGINTERRUPT68k = ATOM_T;
|
|
}
|
|
RET;
|
|
CLR_IRQ;
|
|
} /* Interrupts not Disabled */
|
|
else {
|
|
/* Clear out IRQ (loses pending interrupt request
|
|
if interrupts are disabled) */
|
|
CLR_IRQ;
|
|
goto re_check_stack;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
nextop0;
|
|
|
|
|
|
/************************************************************************/
|
|
/* Common Jump Tails (they have to jump anyway, so use common Tail) */
|
|
/************************************************************************/
|
|
PopNextop1:
|
|
POP;
|
|
nextop1;
|
|
|
|
PopNextop2:
|
|
POP;
|
|
nextop2;
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* Set up the dispatch table for use when we do assembler */
|
|
/* optimization of the dispatch-jump sequence. */
|
|
/* */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#ifdef OPDISP
|
|
setup_table:
|
|
#ifndef ISC
|
|
SaveD6 = 0;
|
|
|
|
#ifdef UNSAFE
|
|
Save_D5_shift_amount = 15;
|
|
#endif
|
|
|
|
|
|
{int i; for (i = 0; i < 256; i++) { table[i] = (InstPtr) op_ufn; };}
|
|
{int i; for (i = 256; i < 512; i++)
|
|
{ table[i] = (InstPtr) native_check; };
|
|
}
|
|
table[001] = (InstPtr) case001;
|
|
table[002] = (InstPtr) case002;
|
|
table[003] = (InstPtr) case003;
|
|
table[004] = (InstPtr) case004;
|
|
table[005] = (InstPtr) case005;
|
|
table[006] = (InstPtr) case006;
|
|
table[007] = (InstPtr) case007;
|
|
table[010] = (InstPtr) case010;
|
|
table[011] = (InstPtr) case011;
|
|
table[012] = (InstPtr) case012;
|
|
table[013] = (InstPtr) case013;
|
|
table[014] = (InstPtr) case014;
|
|
table[015] = (InstPtr) case015;
|
|
table[016] = (InstPtr) case016;
|
|
table[017] = (InstPtr) case017;
|
|
table[020] = (InstPtr) case020;
|
|
table[021] = (InstPtr) case021;
|
|
table[022] = (InstPtr) case022;
|
|
table[023] = (InstPtr) case023;
|
|
table[024] = (InstPtr) case024;
|
|
table[025] = (InstPtr) case025;
|
|
table[026] = (InstPtr) case026;
|
|
table[027] = (InstPtr) case027;
|
|
table[030] = (InstPtr) case030;
|
|
table[031] = (InstPtr) case031;
|
|
table[032] = (InstPtr) case032;
|
|
table[033] = (InstPtr) case033;
|
|
table[034] = (InstPtr) case034;
|
|
table[035] = (InstPtr) case035;
|
|
table[036] = (InstPtr) case036;
|
|
table[037] = (InstPtr) case037;
|
|
table[040] = (InstPtr) case040;
|
|
table[041] = (InstPtr) case041;
|
|
table[042] = (InstPtr) case042;
|
|
table[043] = (InstPtr) case043;
|
|
table[044] = (InstPtr) case044;
|
|
table[045] = (InstPtr) case045;
|
|
table[046] = (InstPtr) case046;
|
|
table[047] = (InstPtr) case047;
|
|
|
|
table[054] = (InstPtr) case054;
|
|
table[055] = (InstPtr) case055;
|
|
table[056] = (InstPtr) case056;
|
|
table[057] = (InstPtr) case057;
|
|
|
|
table[062] = (InstPtr) case062;
|
|
table[063] = (InstPtr) case063;
|
|
|
|
table[070] = (InstPtr) case070;
|
|
|
|
table[072] = (InstPtr) case072;
|
|
table[073] = (InstPtr) case073;
|
|
table[074] = (InstPtr) case074;
|
|
table[075] = (InstPtr) case075;
|
|
|
|
table[0100] = (InstPtr) case100;
|
|
table[0101] = (InstPtr) case101;
|
|
table[0102] = (InstPtr) case102;
|
|
table[0103] = (InstPtr) case103;
|
|
table[0104] = (InstPtr) case104;
|
|
table[0105] = (InstPtr) case105;
|
|
table[0106] = (InstPtr) case106;
|
|
table[0107] = (InstPtr) case107;
|
|
table[0110] = (InstPtr) case110;
|
|
table[0111] = (InstPtr) case111;
|
|
table[0112] = (InstPtr) case112;
|
|
table[0113] = (InstPtr) case113;
|
|
table[0114] = (InstPtr) case114;
|
|
table[0115] = (InstPtr) case115;
|
|
table[0116] = (InstPtr) case116;
|
|
table[0117] = (InstPtr) case117;
|
|
table[0120] = (InstPtr) case120;
|
|
table[0121] = (InstPtr) case121;
|
|
table[0122] = (InstPtr) case122;
|
|
table[0123] = (InstPtr) case123;
|
|
table[0124] = (InstPtr) case124;
|
|
table[0125] = (InstPtr) case125;
|
|
table[0126] = (InstPtr) case126;
|
|
table[0127] = (InstPtr) case127;
|
|
table[0130] = (InstPtr) case130;
|
|
table[0131] = (InstPtr) case131;
|
|
table[0132] = (InstPtr) case132;
|
|
table[0133] = (InstPtr) case133;
|
|
table[0134] = (InstPtr) case134;
|
|
table[0135] = (InstPtr) case135;
|
|
table[0136] = (InstPtr) case136;
|
|
table[0137] = (InstPtr) case137;
|
|
table[0140] = (InstPtr) case140;
|
|
table[0141] = (InstPtr) case141;
|
|
table[0142] = (InstPtr) case142;
|
|
table[0143] = (InstPtr) case143;
|
|
table[0144] = (InstPtr) case144;
|
|
table[0145] = (InstPtr) case145;
|
|
table[0146] = (InstPtr) case146;
|
|
table[0147] = (InstPtr) case147;
|
|
table[0150] = (InstPtr) case150;
|
|
table[0151] = (InstPtr) case151;
|
|
table[0152] = (InstPtr) case152;
|
|
table[0153] = (InstPtr) case153;
|
|
table[0154] = (InstPtr) case154;
|
|
table[0155] = (InstPtr) case155;
|
|
table[0156] = (InstPtr) case156;
|
|
table[0157] = (InstPtr) case157;
|
|
table[0160] = (InstPtr) case160;
|
|
table[0161] = (InstPtr) case161;
|
|
table[0162] = (InstPtr) case162;
|
|
table[0163] = (InstPtr) case163;
|
|
table[0164] = (InstPtr) case164;
|
|
table[0165] = (InstPtr) case165;
|
|
table[0166] = (InstPtr) case166;
|
|
table[0167] = (InstPtr) case167;
|
|
table[0170] = (InstPtr) case170;
|
|
table[0171] = (InstPtr) case171;
|
|
table[0172] = (InstPtr) case172;
|
|
table[0173] = (InstPtr) case173;
|
|
table[0174] = (InstPtr) case174;
|
|
table[0175] = (InstPtr) case175;
|
|
table[0176] = (InstPtr) case176;
|
|
table[0177] = (InstPtr) case177;
|
|
table[0200] = (InstPtr) case200;
|
|
table[0201] = (InstPtr) case201;
|
|
table[0202] = (InstPtr) case202;
|
|
table[0203] = (InstPtr) case203;
|
|
table[0204] = (InstPtr) case204;
|
|
table[0205] = (InstPtr) case205;
|
|
table[0206] = (InstPtr) case206;
|
|
table[0207] = (InstPtr) case207;
|
|
table[0210] = (InstPtr) case210;
|
|
table[0211] = (InstPtr) case211;
|
|
table[0212] = (InstPtr) case212;
|
|
table[0213] = (InstPtr) case213;
|
|
table[0214] = (InstPtr) case214;
|
|
table[0215] = (InstPtr) case215;
|
|
table[0216] = (InstPtr) case216;
|
|
table[0217] = (InstPtr) case217;
|
|
table[0220] = (InstPtr) case220;
|
|
table[0221] = (InstPtr) case221;
|
|
table[0222] = (InstPtr) case222;
|
|
table[0223] = (InstPtr) case223;
|
|
table[0224] = (InstPtr) case224;
|
|
table[0225] = (InstPtr) case225;
|
|
table[0226] = (InstPtr) case226;
|
|
table[0227] = (InstPtr) case227;
|
|
table[0230] = (InstPtr) case230;
|
|
table[0231] = (InstPtr) case231;
|
|
table[0232] = (InstPtr) case232;
|
|
table[0233] = (InstPtr) case233;
|
|
table[0234] = (InstPtr) case234;
|
|
table[0235] = (InstPtr) case235;
|
|
table[0236] = (InstPtr) case236;
|
|
table[0237] = (InstPtr) case237;
|
|
table[0240] = (InstPtr) case240;
|
|
table[0241] = (InstPtr) case241;
|
|
table[0242] = (InstPtr) case242;
|
|
table[0243] = (InstPtr) case243;
|
|
table[0244] = (InstPtr) case244;
|
|
table[0245] = (InstPtr) case245;
|
|
table[0246] = (InstPtr) case246;
|
|
table[0247] = (InstPtr) case247;
|
|
table[0250] = (InstPtr) case250;
|
|
table[0251] = (InstPtr) case251;
|
|
table[0252] = (InstPtr) case252;
|
|
table[0253] = (InstPtr) case253;
|
|
table[0254] = (InstPtr) case254;
|
|
table[0255] = (InstPtr) case255;
|
|
table[0256] = (InstPtr) case256;
|
|
table[0257] = (InstPtr) case257;
|
|
table[0260] = (InstPtr) case260;
|
|
table[0261] = (InstPtr) case261;
|
|
table[0262] = (InstPtr) case262;
|
|
table[0263] = (InstPtr) case263;
|
|
table[0264] = (InstPtr) case264;
|
|
table[0265] = (InstPtr) case265;
|
|
table[0266] = (InstPtr) case266;
|
|
table[0267] = (InstPtr) case267;
|
|
table[0270] = (InstPtr) case270;
|
|
table[0271] = (InstPtr) case271;
|
|
table[0272] = (InstPtr) case272;
|
|
table[0273] = (InstPtr) case273;
|
|
table[0274] = (InstPtr) case274;
|
|
table[0275] = (InstPtr) case275;
|
|
table[0276] = (InstPtr) case276;
|
|
table[0277] = (InstPtr) case277;
|
|
table[0300] = (InstPtr) case300;
|
|
table[0301] = (InstPtr) case301;
|
|
table[0302] = (InstPtr) case302;
|
|
table[0303] = (InstPtr) case303;
|
|
table[0304] = (InstPtr) case304;
|
|
table[0305] = (InstPtr) case305;
|
|
table[0306] = (InstPtr) case306;
|
|
table[0307] = (InstPtr) case307;
|
|
table[0310] = (InstPtr) case310;
|
|
table[0311] = (InstPtr) case311;
|
|
table[0312] = (InstPtr) case312;
|
|
table[0313] = (InstPtr) case313;
|
|
table[0314] = (InstPtr) case314;
|
|
table[0315] = (InstPtr) case315;
|
|
table[0316] = (InstPtr) case316;
|
|
table[0317] = (InstPtr) case317;
|
|
table[0320] = (InstPtr) case320;
|
|
table[0321] = (InstPtr) case321;
|
|
table[0322] = (InstPtr) case322;
|
|
table[0323] = (InstPtr) case323;
|
|
table[0324] = (InstPtr) case324;
|
|
table[0325] = (InstPtr) case325;
|
|
table[0326] = (InstPtr) case326;
|
|
table[0327] = (InstPtr) case327;
|
|
table[0330] = (InstPtr) case330;
|
|
table[0331] = (InstPtr) case331;
|
|
table[0332] = (InstPtr) case332;
|
|
table[0333] = (InstPtr) case333;
|
|
table[0334] = (InstPtr) case334;
|
|
table[0335] = (InstPtr) case335;
|
|
table[0336] = (InstPtr) case336;
|
|
table[0337] = (InstPtr) case337;
|
|
table[0340] = (InstPtr) case340;
|
|
table[0341] = (InstPtr) case341;
|
|
table[0342] = (InstPtr) case342;
|
|
table[0343] = (InstPtr) case343;
|
|
table[0344] = (InstPtr) case344;
|
|
table[0345] = (InstPtr) case345;
|
|
table[0346] = (InstPtr) case346;
|
|
table[0347] = (InstPtr) case347;
|
|
table[0350] = (InstPtr) case350;
|
|
table[0351] = (InstPtr) case351;
|
|
table[0352] = (InstPtr) case352;
|
|
table[0353] = (InstPtr) case353;
|
|
table[0354] = (InstPtr) case354;
|
|
table[0355] = (InstPtr) case355;
|
|
table[0356] = (InstPtr) case356;
|
|
table[0357] = (InstPtr) case357;
|
|
table[0360] = (InstPtr) case360;
|
|
table[0361] = (InstPtr) case361;
|
|
table[0362] = (InstPtr) case362;
|
|
table[0363] = (InstPtr) case363;
|
|
table[0364] = (InstPtr) case364;
|
|
table[0365] = (InstPtr) case365;
|
|
table[0366] = (InstPtr) case366;
|
|
table[0367] = (InstPtr) case367;
|
|
table[0370] = (InstPtr) case370;
|
|
table[0371] = (InstPtr) case371;
|
|
table[0372] = (InstPtr) case372;
|
|
table[0373] = (InstPtr) case373;
|
|
table[0374] = (InstPtr) case374;
|
|
table[0375] = (InstPtr) case375;
|
|
table[0376] = (InstPtr) case376;
|
|
table[0377] = (InstPtr) case377;
|
|
goto nextopcode;
|
|
#elif GCC385
|
|
/* This is the optable for 386's under gcc */
|
|
|
|
asm volatile(" .data \n\
|
|
.align 4");
|
|
asm volatile("optable: \n\
|
|
.long _op000 \n\
|
|
.long _op001 \n\
|
|
.long _op002 \n\
|
|
.long _op003 \n\
|
|
.long _op004 \n\
|
|
.long _op005 \n\
|
|
.long _op006 \n\
|
|
.long _op007 \n\
|
|
.long _op010 \n\
|
|
.long _op011 \n\
|
|
.long _op012 \n\
|
|
.long _op013 \n\
|
|
.long _op014 \n\
|
|
.long _op015 \n\
|
|
.long _op016 \n\
|
|
.long _op017 \n\
|
|
.long _op020 \n\
|
|
.long _op021 \n\
|
|
.long _op022 \n\
|
|
.long _op023 \n\
|
|
.long _op024 \n\
|
|
.long _op025 \n\
|
|
.long _op026 \n\
|
|
.long _op027 \n\
|
|
.long _op030 \n\
|
|
.long _op031 \n\
|
|
.long _op032 \n\
|
|
.long _op033 \n\
|
|
");
|
|
|
|
asm volatile("\n\
|
|
.long _op034 \n\
|
|
.long _op035 \n\
|
|
.long _op036 \n\
|
|
.long _op037 \n\
|
|
.long _op040 \n\
|
|
.long _op041 \n\
|
|
.long _op042 \n\
|
|
.long _op043 \n\
|
|
.long _op044 \n\
|
|
.long _op045 \n\
|
|
.long _op046 \n\
|
|
.long _op047 \n\
|
|
.long _op050 \n\
|
|
.long _op051 \n\
|
|
.long _op052 \n\
|
|
.long _op053 \n\
|
|
.long _op054 \n\
|
|
.long _op055 \n\
|
|
.long _op056 \n\
|
|
.long _op057 \n\
|
|
.long _op060 \n\
|
|
.long _op061 \n\
|
|
.long _op062 \n\
|
|
.long _op063 \n\
|
|
.long _op064 \n\
|
|
.long _op065 \n\
|
|
.long _op066 \n\
|
|
.long _op067 \n\
|
|
.long _op070 \n\
|
|
.long _op071 \n\
|
|
.long _op072 \n\
|
|
.long _op073 \n\
|
|
.long _op074 \n\
|
|
.long _op075 \n\
|
|
.long _op076 \n\
|
|
.long _op077 \n\
|
|
.long _op100 \n\
|
|
.long _op101 \n\
|
|
.long _op102 \n\
|
|
.long _op103 \n\
|
|
.long _op104 \n\
|
|
.long _op105 \n\
|
|
.long _op106 \n\
|
|
.long _op107 \n\
|
|
.long _op110 \n\
|
|
.long _op111 \n\
|
|
.long _op112 \n\
|
|
.long _op113 \n\
|
|
.long _op114 \n\
|
|
.long _op115 \n\
|
|
.long _op116 \n\
|
|
.long _op117 \n\
|
|
.long _op120 \n\
|
|
.long _op121 \n\
|
|
.long _op122 \n\
|
|
.long _op123 \n\
|
|
.long _op124 \n\
|
|
.long _op125 \n\
|
|
.long _op126 \n\
|
|
.long _op127 \n\
|
|
.long _op130 \n\
|
|
.long _op131 \n\
|
|
.long _op132 \n\
|
|
.long _op133 \n\
|
|
.long _op134 \n\
|
|
.long _op135 \n\
|
|
.long _op136 \n\
|
|
.long _op137 \n\
|
|
.long _op140 \n\
|
|
.long _op141 \n\
|
|
.long _op142 \n\
|
|
.long _op143 \n\
|
|
.long _op144 \n\
|
|
.long _op145 \n\
|
|
.long _op146 \n\
|
|
.long _op147 \n\
|
|
.long _op150 \n\
|
|
.long _op151 \n\
|
|
.long _op152 \n\
|
|
.long _op153 \n\
|
|
.long _op154 \n\
|
|
.long _op155 \n\
|
|
.long _op156 \n\
|
|
.long _op157 \n\
|
|
.long _op160 \n\
|
|
.long _op161 \n\
|
|
.long _op162 \n\
|
|
.long _op163 \n\
|
|
.long _op164 \n\
|
|
.long _op165 \n\
|
|
.long _op166 \n\
|
|
.long _op167 \n\
|
|
.long _op170 \n\
|
|
.long _op171 \n\
|
|
.long _op172 \n\
|
|
.long _op173 \n\
|
|
.long _op174 \n\
|
|
.long _op175 \n\
|
|
.long _op176 \n\
|
|
.long _op177 \n\
|
|
.long _op200 \n\
|
|
.long _op201 \n\
|
|
.long _op202 \n\
|
|
.long _op203 \n\
|
|
.long _op204 \n\
|
|
.long _op205 \n\
|
|
.long _op206 \n\
|
|
.long _op207 \n\
|
|
.long _op210 \n\
|
|
.long _op211 \n\
|
|
.long _op212 \n\
|
|
.long _op213 \n\
|
|
.long _op214 \n\
|
|
.long _op215 \n\
|
|
.long _op216 \n\
|
|
.long _op217 \n\
|
|
.long _op220 \n\
|
|
.long _op221 \n\
|
|
.long _op222 \n\
|
|
.long _op223 \n\
|
|
.long _op224 \n\
|
|
.long _op225 \n\
|
|
.long _op226 \n\
|
|
.long _op227 \n\
|
|
.long _op230 \n\
|
|
.long _op231 \n\
|
|
.long _op232 \n\
|
|
.long _op233 \n\
|
|
.long _op234 \n\
|
|
.long _op235 \n\
|
|
.long _op236 \n\
|
|
.long _op237 \n\
|
|
.long _op240 \n\
|
|
.long _op241 \n\
|
|
.long _op242 \n\
|
|
.long _op243 \n\
|
|
.long _op244 \n\
|
|
.long _op245 \n\
|
|
.long _op246 \n\
|
|
.long _op247 \n\
|
|
.long _op250 \n\
|
|
.long _op251 \n\
|
|
.long _op252 \n\
|
|
.long _op253 \n\
|
|
.long _op254 \n\
|
|
.long _op255 \n\
|
|
.long _op256 \n\
|
|
.long _op257 \n\
|
|
.long _op260 \n\
|
|
.long _op261 \n\
|
|
.long _op262 \n\
|
|
.long _op263 \n\
|
|
.long _op264 \n\
|
|
.long _op265 \n\
|
|
.long _op266 \n\
|
|
.long _op267 \n\
|
|
.long _op270 \n\
|
|
.long _op271 \n\
|
|
.long _op272 \n\
|
|
.long _op273 \n\
|
|
.long _op274 \n\
|
|
.long _op275 \n\
|
|
.long _op276 \n\
|
|
.long _op277 \n\
|
|
.long _op300 \n\
|
|
.long _op301 \n\
|
|
.long _op302 \n\
|
|
.long _op303 \n\
|
|
.long _op304 \n\
|
|
.long _op305 \n\
|
|
.long _op306 \n\
|
|
.long _op307 \n\
|
|
.long _op310 \n\
|
|
.long _op311 \n\
|
|
.long _op312 \n\
|
|
.long _op313 \n\
|
|
.long _op314 \n\
|
|
.long _op315 \n\
|
|
.long _op316 \n\
|
|
.long _op317 \n\
|
|
.long _op320 \n\
|
|
.long _op321 \n\
|
|
.long _op322 \n\
|
|
.long _op323 \n\
|
|
.long _op324 \n\
|
|
.long _op325 \n\
|
|
.long _op326 \n\
|
|
.long _op327 \n\
|
|
.long _op330 \n\
|
|
.long _op331 \n\
|
|
.long _op332 \n\
|
|
.long _op333 \n\
|
|
.long _op334 \n\
|
|
.long _op335 \n\
|
|
.long _op336 \n\
|
|
.long _op337 \n\
|
|
.long _op340 \n\
|
|
.long _op341 \n\
|
|
.long _op342 \n\
|
|
.long _op343 \n\
|
|
.long _op344 \n\
|
|
.long _op345 \n\
|
|
.long _op346 \n\
|
|
.long _op347 \n\
|
|
.long _op350 \n\
|
|
.long _op351 \n\
|
|
.long _op352 \n\
|
|
.long _op353 \n\
|
|
.long _op354 \n\
|
|
.long _op355 \n\
|
|
.long _op356 \n\
|
|
.long _op357 \n\
|
|
.long _op360 \n\
|
|
.long _op361 \n\
|
|
.long _op362 \n\
|
|
.long _op363 \n\
|
|
.long _op364 \n\
|
|
.long _op365 \n\
|
|
.long _op366 \n\
|
|
.long _op367 \n\
|
|
.long _op370 \n\
|
|
.long _op371 \n\
|
|
.long _op372 \n\
|
|
.long _op373 \n\
|
|
.long _op374 \n\
|
|
.long _op375 \n\
|
|
.long _op376 \n\
|
|
.long _op377 \n\
|
|
.text");
|
|
|
|
#elif (DOS && OPDISP)
|
|
/* This is the optable for 386's under gcc & Turbo Assembler */
|
|
|
|
asm volatile(" align 4");
|
|
asm volatile("optable: \n\
|
|
DD _op000 \n\
|
|
DD _op001 \n\
|
|
DD _op002 \n\
|
|
DD _op003 \n\
|
|
DD _op004 \n\
|
|
DD _op005 \n\
|
|
DD _op006 \n\
|
|
DD _op007 \n\
|
|
DD _op010 \n\
|
|
DD _op011 \n\
|
|
DD _op012 \n\
|
|
DD _op013 \n\
|
|
DD _op014 \n\
|
|
DD _op015 \n\
|
|
DD _op016 \n\
|
|
DD _op017 \n\
|
|
DD _op020 \n\
|
|
DD _op021 \n\
|
|
DD _op022 \n\
|
|
DD _op023 \n\
|
|
DD _op024 \n\
|
|
DD _op025 \n\
|
|
DD _op026 \n\
|
|
DD _op027 \n\
|
|
DD _op030 \n\
|
|
DD _op031 \n\
|
|
DD _op032 \n\
|
|
DD _op033 \n\
|
|
");
|
|
|
|
asm volatile("\n\
|
|
DD _op034 \n\
|
|
DD _op035 \n\
|
|
DD _op036 \n\
|
|
DD _op037 \n\
|
|
DD _op040 \n\
|
|
DD _op041 \n\
|
|
DD _op042 \n\
|
|
DD _op043 \n\
|
|
DD _op044 \n\
|
|
DD _op045 \n\
|
|
DD _op046 \n\
|
|
DD _op047 \n\
|
|
DD _op050 \n\
|
|
DD _op051 \n\
|
|
DD _op052 \n\
|
|
DD _op053 \n\
|
|
DD _op054 \n\
|
|
DD _op055 \n\
|
|
DD _op056 \n\
|
|
DD _op057 \n\
|
|
DD _op060 \n\
|
|
DD _op061 \n\
|
|
DD _op062 \n\
|
|
DD _op063 \n\
|
|
DD _op064 \n\
|
|
DD _op065 \n\
|
|
DD _op066 \n\
|
|
DD _op067 \n\
|
|
DD _op070 \n\
|
|
DD _op071 \n\
|
|
DD _op072 \n\
|
|
DD _op073 \n\
|
|
DD _op074 \n\
|
|
DD _op075 \n\
|
|
DD _op076 \n\
|
|
DD _op077 \n\
|
|
DD _op100 \n\
|
|
DD _op101 \n\
|
|
DD _op102 \n\
|
|
DD _op103 \n\
|
|
DD _op104 \n\
|
|
DD _op105 \n\
|
|
DD _op106 \n\
|
|
DD _op107 \n\
|
|
DD _op110 \n\
|
|
DD _op111 \n\
|
|
DD _op112 \n\
|
|
DD _op113 \n\
|
|
DD _op114 \n\
|
|
DD _op115 \n\
|
|
DD _op116 \n\
|
|
DD _op117 \n\
|
|
DD _op120 \n\
|
|
DD _op121 \n\
|
|
DD _op122 \n\
|
|
DD _op123 \n\
|
|
DD _op124 \n\
|
|
DD _op125 \n\
|
|
DD _op126 \n\
|
|
DD _op127 \n\
|
|
DD _op130 \n\
|
|
DD _op131 \n\
|
|
DD _op132 \n\
|
|
DD _op133 \n\
|
|
DD _op134 \n\
|
|
DD _op135 \n\
|
|
DD _op136 \n\
|
|
DD _op137 \n\
|
|
DD _op140 \n\
|
|
DD _op141 \n\
|
|
DD _op142 \n\
|
|
DD _op143 \n\
|
|
DD _op144 \n\
|
|
DD _op145 \n\
|
|
DD _op146 \n\
|
|
DD _op147 \n\
|
|
DD _op150 \n\
|
|
DD _op151 \n\
|
|
DD _op152 \n\
|
|
DD _op153 \n\
|
|
DD _op154 \n\
|
|
DD _op155 \n\
|
|
DD _op156 \n\
|
|
DD _op157 \n\
|
|
DD _op160 \n\
|
|
DD _op161 \n\
|
|
DD _op162 \n\
|
|
DD _op163 \n\
|
|
DD _op164 \n\
|
|
DD _op165 \n\
|
|
DD _op166 \n\
|
|
DD _op167 \n\
|
|
DD _op170 \n\
|
|
DD _op171 \n\
|
|
DD _op172 \n\
|
|
DD _op173 \n\
|
|
DD _op174 \n\
|
|
DD _op175 \n\
|
|
DD _op176 \n\
|
|
DD _op177 \n\
|
|
DD _op200 \n\
|
|
DD _op201 \n\
|
|
DD _op202 \n\
|
|
DD _op203 \n\
|
|
DD _op204 \n\
|
|
DD _op205 \n\
|
|
DD _op206 \n\
|
|
DD _op207 \n\
|
|
DD _op210 \n\
|
|
DD _op211 \n\
|
|
DD _op212 \n\
|
|
DD _op213 \n\
|
|
DD _op214 \n\
|
|
DD _op215 \n\
|
|
DD _op216 \n\
|
|
DD _op217 \n\
|
|
DD _op220 \n\
|
|
DD _op221 \n\
|
|
DD _op222 \n\
|
|
DD _op223 \n\
|
|
DD _op224 \n\
|
|
DD _op225 \n\
|
|
DD _op226 \n\
|
|
DD _op227 \n\
|
|
DD _op230 \n\
|
|
DD _op231 \n\
|
|
DD _op232 \n\
|
|
DD _op233 \n\
|
|
DD _op234 \n\
|
|
DD _op235 \n\
|
|
DD _op236 \n\
|
|
DD _op237 \n\
|
|
DD _op240 \n\
|
|
DD _op241 \n\
|
|
DD _op242 \n\
|
|
DD _op243 \n\
|
|
DD _op244 \n\
|
|
DD _op245 \n\
|
|
DD _op246 \n\
|
|
DD _op247 \n\
|
|
DD _op250 \n\
|
|
DD _op251 \n\
|
|
DD _op252 \n\
|
|
DD _op253 \n\
|
|
DD _op254 \n\
|
|
DD _op255 \n\
|
|
DD _op256 \n\
|
|
DD _op257 \n\
|
|
DD _op260 \n\
|
|
DD _op261 \n\
|
|
DD _op262 \n\
|
|
DD _op263 \n\
|
|
DD _op264 \n\
|
|
DD _op265 \n\
|
|
DD _op266 \n\
|
|
DD _op267 \n\
|
|
DD _op270 \n\
|
|
DD _op271 \n\
|
|
DD _op272 \n\
|
|
DD _op273 \n\
|
|
DD _op274 \n\
|
|
DD _op275 \n\
|
|
DD _op276 \n\
|
|
DD _op277 \n\
|
|
DD _op300 \n\
|
|
DD _op301 \n\
|
|
DD _op302 \n\
|
|
DD _op303 \n\
|
|
DD _op304 \n\
|
|
DD _op305 \n\
|
|
DD _op306 \n\
|
|
DD _op307 \n\
|
|
DD _op310 \n\
|
|
DD _op311 \n\
|
|
DD _op312 \n\
|
|
DD _op313 \n\
|
|
DD _op314 \n\
|
|
DD _op315 \n\
|
|
DD _op316 \n\
|
|
DD _op317 \n\
|
|
DD _op320 \n\
|
|
DD _op321 \n\
|
|
DD _op322 \n\
|
|
DD _op323 \n\
|
|
DD _op324 \n\
|
|
DD _op325 \n\
|
|
DD _op326 \n\
|
|
DD _op327 \n\
|
|
DD _op330 \n\
|
|
DD _op331 \n\
|
|
DD _op332 \n\
|
|
DD _op333 \n\
|
|
DD _op334 \n\
|
|
DD _op335 \n\
|
|
DD _op336 \n\
|
|
DD _op337 \n\
|
|
DD _op340 \n\
|
|
DD _op341 \n\
|
|
DD _op342 \n\
|
|
DD _op343 \n\
|
|
DD _op344 \n\
|
|
DD _op345 \n\
|
|
DD _op346 \n\
|
|
DD _op347 \n\
|
|
DD _op350 \n\
|
|
DD _op351 \n\
|
|
DD _op352 \n\
|
|
DD _op353 \n\
|
|
DD _op354 \n\
|
|
DD _op355 \n\
|
|
DD _op356 \n\
|
|
DD _op357 \n\
|
|
DD _op360 \n\
|
|
DD _op361 \n\
|
|
DD _op362 \n\
|
|
DD _op363 \n\
|
|
DD _op364 \n\
|
|
DD _op365 \n\
|
|
DD _op366 \n\
|
|
DD _op367 \n\
|
|
DD _op370 \n\
|
|
DD _op371 \n\
|
|
DD _op372 \n\
|
|
DD _op373 \n\
|
|
DD _op374 \n\
|
|
DD _op375 \n\
|
|
DD _op376 \n\
|
|
DD _op377");
|
|
asm volatile("\n\
|
|
FP_noint: DW 003fh ;; No interrupts, round to closest, 24bit precision");
|
|
|
|
|
|
#endif /* ISC */
|
|
|
|
|
|
#endif /* OPDISP */
|
|
|
|
|
|
}
|
|
|
|
|
|
int retfun(void) {return(0);}
|
|
do_brk(void) {}
|
|
|