Source code for /engineering/bos/rewrite/ALLOPS.HOriginal file ALLOPS.H
   1 /*
   2 	BattleOS : Engage battling programs.
   3 
   4 	Copyright (C) 1993 Erich P Gatejen    ALL RIGHTS RESERVED
   5 
   6 
   7 	File     : ALLOPS.H
   8 	Purpose  : Program code for the BattleOS Assembler
   9 
  10 	!! Program code for the allowable operations table	    !!
  11 
  12 */
  13 
  14 
  15 // --------------------------------------------------------------------------
  16 // ---- INCLUDE files -------------------------------------------------------
  17 
  18 // --------------------------------------------------------------------------
  19 // ---- Local Classes -------------------------------------------------------
  20 
  21 
  22 // --------------------------------------------------------------------------
  23 // ---- Global Variables ----------------------------------------------------
  24 
  25 // - Allowable operands table
  26 BOOLEAN	AllowableMoves[4][4] = {
  27 
  28         // LEFT OPERAND
  29 	// REGISTER - REFERENCE - MEMORY - IMMEDIATE
  30 							 // RIGHT OPERAND
  31 	{  TRUE,      TRUE, 	  FALSE,   FALSE     },  // REGISTER
  32 	{  TRUE,      FALSE, 	  FALSE,   FALSE     },  // REFERENCE
  33 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // MEMORY
  34 	{  TRUE,      TRUE, 	  FALSE,   FALSE     },  // IMMEDIATE
  35 
  36 };
  37 
  38 
  39 // - Allowable operands table
  40 BOOLEAN	AllowRightOps[20][4] = {
  41 
  42 	// REGISTER - REFERENCE - MEMORY - IMMEDIATE
  43 
  44 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // DAT
  45 	{  TRUE,      TRUE,  	  TRUE,    TRUE      },  // MOV
  46 	{  TRUE,      FALSE,	  TRUE,    TRUE      },  // CMP
  47 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // JE
  48 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // JB
  49 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // JA
  50 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // JMP
  51 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // INC
  52 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // DEC
  53 	{  TRUE,      FALSE,	  TRUE,    TRUE      },  // ADD
  54 	{  TRUE,      FALSE,	  TRUE,    TRUE      },  // SUB
  55 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // CALL
  56 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // RET
  57 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // PUSH
  58 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // POP
  59 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // RND
  60 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // WT
  61 	{  TRUE,      FALSE,	  FALSE,   TRUE      },  // TMR
  62 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // HLT
  63 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // INT - Not used
  64 
  65 };
  66 
  67 // - Allowable operands table
  68 BOOLEAN	AllowLeftOps[20][4] = {
  69 
  70 	// REGISTER - REFERENCE - MEMORY - IMMEDIATE
  71 
  72 	{  FALSE,     FALSE,	  FALSE,   TRUE      },  // DAT
  73 	{  TRUE,      TRUE,  	  FALSE,   FALSE     },  // MOV
  74 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // CMP
  75 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // JE
  76 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // JB
  77 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // JA
  78 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // JMP
  79 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // INC
  80 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // DEC
  81 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // ADD
  82 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // SUB
  83 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // CALL
  84 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // RET
  85 	{  TRUE,      FALSE,	  FALSE,   TRUE,     },  // PUSH
  86 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // POP
  87 	{  TRUE,      FALSE,	  FALSE,   FALSE     },  // RND
  88 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // WT
  89 	{  TRUE,      FALSE,	  TRUE,    FALSE     },  // TMR
  90 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // HLT
  91 	{  FALSE,     FALSE,	  FALSE,   FALSE     },  // INT - Not used
  92 
  93 };
  94 
  95 // - Has operand left
  96 BOOLEAN HasOperandLeft[] = {
  97 
  98 	TRUE,	// DAT
  99 	TRUE,   // MOV
 100 	TRUE,   // CMP
 101 	TRUE,   // JE
 102 	TRUE,   // JB
 103 	TRUE,   // JA
 104 	TRUE,   // JMP
 105 	TRUE,   // INC
 106 	TRUE,   // DEC
 107 	TRUE,   // ADD
 108 	TRUE,   // SUB
 109 	TRUE,   // CALL
 110 	FALSE,  // RET
 111 	TRUE,   // PUSH
 112 	TRUE,   // POP
 113 	TRUE,   // RND
 114 	TRUE,   // WT
 115 	TRUE,   // TMR
 116 	FALSE,  // HLT
 117 	FALSE   // INT
 118 
 119 };
 120 
 121 // - Has operand right
 122 BOOLEAN HasOperandRight[] = {
 123 
 124 	FALSE,	// DAT
 125 	TRUE,   // MOV
 126 	TRUE,   // CMP
 127 	FALSE,  // JE
 128 	FALSE,  // JB
 129 	FALSE,  // JA
 130 	FALSE,  // JMP
 131 	FALSE,  // INC
 132 	FALSE,  // DEC
 133 	TRUE,   // ADD
 134 	TRUE,   // SUB
 135 	FALSE,  // CALL
 136 	FALSE,  // RET
 137 	FALSE,  // PUSH
 138 	FALSE,  // POP
 139 	FALSE,  // RND
 140 	TRUE,   // WT
 141 	TRUE,   // TMR
 142 	FALSE,  // HLT
 143 	FALSE   // INT
 144 
 145 };