home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 338_02 / psdo1.c < prev    next >
Text File  |  1988-02-25  |  2KB  |  111 lines

  1. /* psdo.c, the psdo op code for the as68 assembler.
  2.  * 
  3.  *    (C) Copyright 1982 Steve Passe
  4.  *    All Rights Reserved
  5.  * 
  6.  * version 1.00
  7.  * created 11/25/82
  8.  * 
  9.  * version 1.01
  10.  * 
  11.  *    8/30/83 ver. 1.01 modified for Aztec ver. 1.05g smp
  12.  *    12/26/83    added include psdo  smp
  13.  * 
  14.  */
  15.  
  16. /* begincode */
  17.  
  18. /* includes */
  19.  
  20. #include <stdio.h>
  21. #include "as68.h"
  22.  
  23. /* externals */
  24.  
  25. extern char fatal;
  26. extern char pass;
  27. extern unsigned    line_count;
  28. extern long loc_counter;
  29. extern int loc_plus;
  30. extern FLAG abs_long;
  31. extern FLAG rorg;
  32. extern FLAG do_label;
  33. extern char label[];
  34. extern char instr[];
  35. extern char code[];
  36. extern int src_level;
  37. extern FILE *_src[];
  38. extern char *opfld_ptr;
  39. extern struct _oprnd op1;
  40. extern struct _symbol *symtbl;
  41. extern FLAG nolist;
  42.  
  43. /* types */
  44.  
  45. char *token();
  46.  
  47. /*** note - external pseudo-op table is defined    at the end of this file ***/
  48.  
  49. p1_equ(psdo, arg)
  50. char *psdo;
  51. int arg;
  52. {
  53.     do_label = NO;            /* don't process label in main */
  54. /** need work here to signal second pass of problem */
  55.     if (eval(4,    0) != _address)    return EQU_EVAL;    /* get a long value */
  56. /* determine whether to enter as absolute or relocatable from result */
  57.     if (symenter(label,    op1._addr, (op1._rel_lbl) ? 'r' : 'a')
  58.     == ERROR) {
  59.     puts("\007\nsymbol table FULL!\007");
  60.     fatal = TRUE;            /* mark a fatal system ERROR */
  61.     return SYMTFULL;
  62.     }
  63.     return OK;
  64. }
  65.  
  66. p1_set(psdo, arg)
  67. char *psdo;
  68. int arg;
  69. {
  70.     do_label = NO;            /* don't process label in main */
  71. /** need work here to signal second pass of problem */
  72.     if (eval(4,    0) != _address)    return SET_EVAL;    /* get a long value */
  73. /* determine whether to enter as absolute or relocatable from result */
  74.     if (symadd(label, op1._addr, (op1._rel_lbl)    ? 0x02 : 0, YES)
  75.     == ERROR) {
  76.     puts("\007\nsymbol table FULL!\007");
  77.     fatal = TRUE;            /* mark a fatal system ERROR */
  78.     return SYMTFULL;
  79.     }
  80.     return OK;
  81. }
  82.  
  83. p1_ifeq(psdo, arg)
  84. char *psdo;
  85. int arg;
  86. {
  87. }
  88.  
  89. p1_ifne(psdo, arg)
  90. char *psdo;
  91. int arg;
  92. {
  93. }
  94.  
  95. p1_endc(psdo, arg)
  96. char *psdo;
  97. int arg;
  98. {
  99. }
  100.  
  101. no_action(psdo,    arg)
  102. char *psdo;
  103. int arg;
  104. {
  105.     return OK;  /* no action required! */
  106. }
  107.  
  108. /* endcode */
  109.  
  110.  
  111.