home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / asm / tchasm / vars.pas < prev   
Pascal/Delphi Source File  |  1986-01-25  |  3KB  |  89 lines

  1. CONST
  2.     Errorfile = 'TCHASM.MSG';      { File name for error messages}
  3. {flag values:           Bits 3-5 reserved for ext. values }
  4.   MACHOP : integer = 1;                    NEEDMODEBYTE : integer = 1024;
  5.   AUTOW  : integer = 4;                    NEEDIMMED8   : integer = 2048;
  6.   ADDREG : integer = 64;                   NEEDIMMED    : integer = 4096;
  7.   NEEDEXT: integer = 128;                  DIRECTION    : integer = 8192;
  8.   NEEDISP8  : integer = 256;               NEEDMEM      : integer = 16384;
  9.   NEEDISP16 : integer = 512;               AUTOC        : integer = $8000;
  10.  
  11. {operand types }
  12.   ACUM8   : integer = 1;                         MEMY    : integer = 128;
  13.   ACUM16  : integer = 2;                         IMMED8  : integer = 256;
  14.   REG8    : integer = 4;                         IMMED16 : integer = 512;
  15.   REG16   : integer = 8;                         NONE    : integer = 1024;
  16.   MEMREG  : integer = 16;                        STRG    : integer = 2048;
  17.   C_S     : integer = 32;                        NEAR    : integer = 4096;
  18.   SEGMNT  : integer = 64;                        FAR     : integer = 8192;
  19.                                                  CL      : integer = 16384;
  20.  
  21. {assembler constants for arrays }
  22.   MAXOBJ   = 50;
  23.   MAXSTK   = 10;
  24.   MAXNUMOP = 250;
  25.   MAXSYM   = 500;
  26.   OPCODEFILE = 'TChasm.Dat';
  27.  
  28. Type
  29.  
  30.   AnyString = String[255];
  31.   SetOfChar = Set of Char;
  32.   IOType    = (Disk,Memory,Scrn,Printer,NoIO); {Could add Macro to this list
  33.                                                 if you want a macro processor}
  34.   NumTypes  = (BaseTen,Hexadecimal,Binary);
  35.  
  36.   OpCodeRec = Record                    {Describes the OpCode records in  }
  37.                 Mnemonic  : String[6];  {TChasm.Dat, (modified Chasm.Dat) }
  38.                 OpCodeVal : integer;
  39.                 DstType   : integer;
  40.                 SrcType   : integer;
  41.                 Flagss    : integer;
  42.               End; {OpCodeRec }
  43.   SymbolRec = Record
  44.                 Symbol    : String[25];
  45.                 Val1,Val2 : integer;
  46.                 SymType   : integer;
  47.               End; {SymbolRec }
  48.  
  49. var
  50.   Obj      : Array[0..MAXOBJ] of byte;        {object code array }
  51.   ProcType : Array[0..MAXSTK] of integer;     {stack of procedures }
  52.   OpCodes  : Array[1..MAXNUMOP]  of OpCodeRec;{opcode table }
  53.   SymTable : Array[1..MAXSYM] of SymbolRec;   {symbol table }
  54.   ListLoc,SourceLoc : IOType;    { I hate to have all of these uncommented }
  55.   i,NumOp,Predef,                { global variables, but I'm too lazy to   }
  56.   CharVal,Offset,                { do anything about it.  I have tried to  }
  57.   OffsetType,OffsetVal,          { make most of the routines use fewer     }
  58.   MemAddr,RegVal,                { global variables, but I don't like      }
  59.   NumType,NumVal,                { to pass numerous variables all the time.}
  60.   Flag,Diag,
  61.   DVal1,DVal2,
  62.   SVal1,SVal2,
  63.   TargType,TargVal1,TargVal2,
  64.   Errs,NumSym,
  65.   OpPtr,SType,DType,
  66.   OpdPtr,TablePtr,
  67.   LinePtr,LinePtr2,
  68.   EndPtr,StrgEnd,
  69.   StkTop,Pass,
  70.   Loctr, ObjLen,
  71.   NeedOffset,
  72.   CodeSize,
  73.   LineNum    : integer;
  74.   SourceName,
  75.   LogDir,
  76.   TargetStr,
  77.   InpLine,FldStr,
  78.   LabelStr,SourceStr,
  79.   DestStr,OpStr,
  80.   ListName,ObjName : AnyString;
  81.   ListFile,
  82.   SourceFile,
  83.   ObjFile,
  84.   DataFile   : Text;
  85.   OK,Quitting,
  86.   Found,EndofSource,
  87.   Word,DSFlag : Boolean;
  88.   Quote,
  89.   ch : char;