* as/mcs51/asdata.c: changed ctype['['] to BINOP
[fw/sdcc] / as / mcs51 / asm.h
1 /* asm.h */
2
3 /*
4  * (C) Copyright 1989-1995
5  * All Rights Reserved
6  *
7  * Alan R. Baldwin
8  * 721 Berkeley St.
9  * Kent, Ohio  44240
10  *
11  * 28-Oct-97 JLH:
12  *           - add proto for StoreString
13  *           - change s_id from [NCPS] to pointer
14  *           - change m_id from [NCPS] to pointer
15  *           - change NCPS to 80
16  *           - case sensitive
17  *           - add R_J11 for 8051 assembler
18  *           - add outr11 prototype for 8051 assembler
19  *           - always define "ccase"
20  *  2-Nov-97 JLH:
21  *           - add jflag for debug control
22  *           - prototypes for DefineNoICE_Line
23  * 30-Jan-98 JLH:
24  *           - add memory space flags to a_flag for 8051
25  *
26  *  3-Feb-00 KV:
27  *           - add DS80C390 flat mode support.
28  */
29
30 #define VERSION "V01.70 + NoICE + SDCC mods + Flat24 Feb-1999"
31
32 #if !defined(__BORLANDC__) && !defined(_MSC_VER)
33 #include <unistd.h>
34 #endif
35
36 /*
37  * Case Sensitivity Flag
38  */
39 #define CASE_SENSITIVE  1
40
41 /*)Module       asm.h
42  *
43  *      The module asm.h contains the definitions for constants,
44  *      structures, global variables, and ASxxxx functions
45  *      contained in the ASxxxx.c files.  The two functions
46  *      and three global variables from the machine dependent
47  *      files are also defined.
48  */
49
50 /*
51  *       compiler/operating system specific definitions
52  */
53
54 /* DECUS C void definition */
55 /* File/extension seperator */
56
57 #ifdef  decus
58 #define VOID    char
59 #define FSEPX   '.'
60 #endif
61
62 /* PDOS C void definition */
63 /* File/extension seperator */
64
65 #ifdef  PDOS
66 #define VOID    char
67 #define FSEPX   ':'
68 #endif
69
70 /* Default void definition */
71 /* File/extension seperator */
72
73 #ifndef VOID
74 #define VOID    void
75 #define FSEPX   '.'
76 #define OTHERSYSTEM
77 #endif
78
79 /*
80  * PATH_MAX
81  */
82 #include <limits.h>
83 #ifndef PATH_MAX                                /* POSIX, but not required   */
84 #if defined(_MSC_VER) || defined(__BORLANDC__)  /* Microsoft C or Borland C*/
85 #include <stdlib.h>
86 #define PATH_MAX        _MAX_PATH
87 #else
88 #define PATH_MAX                                /* define a reasonable value */
89 #endif
90 #endif
91
92 /*
93  * Assembler definitions.
94  */
95 #define LFTERM  '('                     /* Left expression delimeter */
96 #define RTTERM  ')'                     /* Right expression delimeter */
97
98 #define NCPS    80                      /* Chars. per symbol (JLH: change from 8) */
99 #define HUGE    1000                    /* A huge number */
100 #define NERR    3                       /* Errors per line */
101 #define NINPUT  1024                    /* Input buffer size (icodes need space) */
102 #define NCODE   128                     /* Listing code buffer size */
103 #define NTITL   64                      /* Title buffer size */
104 #define NSBTL   64                      /* SubTitle buffer size */
105 #define NHASH   64                      /* Buckets in hash table */
106 #define HMASK   077                     /* Hash mask */
107 #define NLPP    60                      /* Lines per page */
108 #define MAXFIL  6                       /* Maximum command line input files */
109 #define MAXINC  6                       /* Maximum nesting of include files */
110 #define MAXIF   10                      /* Maximum nesting of if/else/endif */
111
112 #define NLIST   0                       /* No listing */
113 #define SLIST   1                       /* Source only */
114 #define ALIST   2                       /* Address only */
115 #define BLIST   3                       /* Address only with allocation */
116 #define CLIST   4                       /* Code */
117 #define ELIST   5                       /* Equate only */
118
119 #define dot     sym[0]                  /* Dot, current loc */
120 #define dca     area[0]                 /* Dca, default code area */
121
122
123 /* NB: for Flat24 extentions to work, Addr_T must be at least 24
124  * bits. This is checked at runtime when the .flat24 directive
125  * is processed.
126  */
127 typedef unsigned int Addr_T;
128
129 /*
130  *      The area structure contains the parameter values for a
131  *      specific program or data section.  The area structure
132  *      is a linked list of areas.  The initial default area
133  *      is "_CODE" defined in asdata.c, the next area structure
134  *      will be linked to this structure through the structure
135  *      element 'struct area *a_ap'.  The structure contains the
136  *      area name, area reference number ("_CODE" is 0) determined
137  *      by the order of .area directives, area size determined
138  *      from the total code and/or data in an area, area fuzz is
139  *      a variable used to track pass to pass changes in the
140  *      area size caused by variable length instruction formats,
141  *      and area flags which specify the area's relocation type.
142  */
143 struct  area
144 {
145         struct  area *a_ap;             /* Area link */
146         char    a_id[NCPS];             /* Area Name */
147         int     a_ref;                  /* Ref. number */
148         Addr_T  a_size;                 /* Area size */
149         Addr_T  a_fuzz;                 /* Area fuzz */
150         int     a_flag;                 /* Area flags */
151 };
152
153 /*
154  *      The "A_" area constants define values used in
155  *      generating the assembler area output data.
156  *
157  * Area flags
158  *
159  *         7     6      5    4     3     2     1     0
160  *      +-----+-----+-----+-----+-----+-----+-----+-----+
161  *      | BIT |XDATA|DATA | PAG | ABS | OVR |     |     |
162  *      +-----+-----+-----+-----+-----+-----+-----+-----+
163  */
164
165 #define A_CON   0000                    /* Concatenating */
166 #define A_OVR   0004                    /* Overlaying */
167 #define A_REL   0000                    /* Relocatable */
168 #define A_ABS   0010                    /* absolute */
169 #define A_NOPAG 0000                    /* Non-Paged */
170 #define A_PAG   0020                    /* Paged */
171
172 /* Additional flags for 8051 address spaces */
173 #define A_DATA  0000                    /* data space (default)*/
174 #define A_CODE  0040                    /* code space */
175 #define A_XDATA 0100                    /* external data space */
176 #define A_BIT   0200                    /* bit addressable space */
177
178 /*
179  *      The "R_" relocation constants define values used in
180  *      generating the assembler relocation output data for
181  *      areas, symbols, and code.
182  *
183  * Relocation flags
184  *
185  *         7     6     5     4     3     2     1     0
186  *      +-----+-----+-----+-----+-----+-----+-----+-----+
187  *      | MSB | PAGn| PAG0| USGN| BYT2| PCR | SYM | BYT |
188  *      +-----+-----+-----+-----+-----+-----+-----+-----+
189  */
190
191 #define R_WORD  0x00                    /* 16 bit */
192 #define R_BYTE  0x01                    /*  8 bit */
193
194 #define R_AREA  0x00                    /* Base type */
195 #define R_SYM   0x02
196
197 #define R_NORM  0x00                    /* PC adjust */
198 #define R_PCR   0x04
199
200 #define R_BYT1  0x00                    /* Byte count for R_BYTE = 1 */
201 #define R_BYT2  0x08                    /* Byte count for R_BYTE = 2 */
202
203 #define R_SGND  0x00                    /* Signed Byte */
204 #define R_USGN  0x10                    /* Unsigned Byte */
205
206 #define R_NOPAG 0x00                    /* Page Mode */
207 #define R_PAG0  0x20                    /* Page '0' */
208 #define R_PAG   0x40                    /* Page 'nnn' */
209
210 #define R_LSB   0x00                    /* low byte */
211 #define R_MSB   0x80                    /* high byte */
212
213 #define R_BYT3  0x100                   /* if R_BYTE is set, this is a
214                                          * 3 byte address, of which
215                                          * the linker must select one byte.
216                                          */
217 #define R_HIB   0x200                   /* If R_BYTE & R_BYT3 are set, linker
218                                          * will select byte 3 of the relocated
219                                          * 24 bit address.
220                                          */
221
222 #define R_BIT   0x400                   /* Linker will convert from byte-addressable
223                                          * space to bit-addressable space.
224                                          */
225
226 #define R_J11   (R_WORD|R_BYT2)         /* JLH: 11 bit JMP and CALL (8051) */
227 #define R_J19   (R_WORD|R_BYT2|R_MSB)   /* 19 bit JMP/CALL (DS80C390)      */
228 #define R_C24   (R_WORD|R_BYT1|R_MSB)   /* 24 bit address (DS80C390)       */
229 #define R_J19_MASK (R_BYTE|R_BYT2|R_MSB)
230
231 #define IS_R_J19(x) (((x) & R_J19_MASK) == R_J19)
232 #define IS_R_J11(x) (((x) & R_J19_MASK) == R_J11)
233 #define IS_C24(x) (((x) & R_J19_MASK) == R_C24)
234
235 #define R_ESCAPE_MASK   0xf0            /* Used to escape relocation modes
236                                          * greater than 0xff in the .rel
237                                          * file.
238                                          */
239
240 /*
241  * Listing Control Flags
242  */
243
244 #define R_HIGH  0040000                 /* High Byte */
245 #define R_RELOC 0100000                 /* Relocation */
246
247 #define R_DEF   00                      /* Global def. */
248 #define R_REF   01                      /* Global ref. */
249 #define R_REL   00                      /* Relocatable */
250 #define R_ABS   02                      /* Absolute */
251 #define R_GBL   00                      /* Global */
252 #define R_LCL   04                      /* Local */
253
254 /*
255  *      The mne structure is a linked list of the assembler
256  *      mnemonics and directives.  The list of mnemonics and
257  *      directives contained in the device dependent file
258  *      xxxpst.c are hashed and linked into NHASH lists in
259  *      module assym.c by syminit().  The structure contains
260  *      the mnemonic/directive name, a subtype which directs
261  *      the evaluation of this mnemonic/directive, a flag which
262  *      is used to detect the end of the mnemonic/directive
263  *      list in xxxpst.c, and a value which is normally
264  *      associated with the assembler mnemonic base instruction
265  *      value.
266  */
267 struct  mne
268 {
269         struct  mne *m_mp;              /* Hash link */
270         char    *m_id;                  /* Mnemonic JLH: change from [NCPS] */
271         char    m_type;                 /* Mnemonic subtype */
272         char    m_flag;                 /* Mnemonic flags */
273         Addr_T  m_valu;                 /* Value */
274 };
275
276 /*
277  *      The sym structure is a linked list of symbols defined
278  *      in the assembler source files.  The first symbol is "."
279  *      defined in asdata.c.  The entry 'struct tsym *s_tsym'
280  *      links any temporary symbols following this symbol and
281  *      preceeding the next normal symbol.  The structure also
282  *      contains the symbol's name, type (USER or NEW), flag
283  *      (global, assigned, and multiply defined), a pointer
284  *      to the area structure defining where the symbol is
285  *      located, a reference number assigned by outgsd() in
286  *      asout.c, and the symbols address relative to the base
287  *      address of the area where the symbol is located.
288  */
289 struct  sym
290 {
291         struct  sym  *s_sp;             /* Hash link */
292         struct  tsym *s_tsym;           /* Temporary symbol link */
293         char    *s_id;                  /* Symbol: JLH change from [NCPS] */
294         char    s_type;                 /* Symbol subtype */
295         char    s_flag;                 /* Symbol flags */
296         struct  area *s_area;           /* Area line, 0 if absolute */
297         int     s_ref;                  /* Ref. number */
298         Addr_T  s_addr;                 /* Address */
299 };
300
301 #define S_GBL           01              /* Global */
302 #define S_ASG           02              /* Assigned */
303 #define S_MDF           04              /* Mult. def */
304 #define S_END           010             /* End mark for pst. */
305 #define S_BIT           020             /* address of bit in byte memory */
306
307 #define S_NEW           0               /* New name */
308 #define S_USER          1               /* User name */
309                                         /* unused slot */
310                                         /* unused slot */
311                                         /* unused slot */
312
313 #define S_BYTE          5               /* .byte */
314 #define S_WORD          6               /* .word */
315 #define S_ASCII         7               /* .ascii */
316 #define S_ASCIZ         8               /* .asciz */
317 #define S_BLK           9               /* .blkb or .blkw */
318 #define S_INCL          10              /* .include */
319 #define S_DAREA         11              /* .area */
320 #define S_ATYP          12              /* .area type */
321 #define S_AREA          13              /* .area name */
322 #define S_GLOBL         14              /* .globl */
323 #define S_PAGE          15              /* .page */
324 #define S_TITLE         16              /* .title */
325 #define S_SBTL          17              /* .sbttl */
326 #define S_IF            18              /* .if */
327 #define S_ELSE          19              /* .else */
328 #define S_ENDIF         20              /* .endif */
329 #define S_EVEN          21              /* .even */
330 #define S_ODD           22              /* .odd */
331 #define S_RADIX         23              /* .radix */
332 #define S_ORG           24              /* .org */
333 #define S_MODUL         25              /* .module */
334 #define S_ASCIS         26              /* .ascis */
335 #define S_FLAT24        27              /* .flat24 */
336 #define S_OPTSDCC       28              /* .optsdcc */
337
338
339 /*
340  *      The tsym structure is a linked list of temporary
341  *      symbols defined in the assembler source files following
342  *      a normal symbol.  The structure contains the temporary
343  *      symbols number, a flag (multiply defined), a pointer to the
344  *      area structure defining where the temporary structure
345  *      is located, and the temporary symbol's address relative
346  *      to the base address of the area where the symbol
347  *      is located.
348  */
349 struct  tsym
350 {
351         struct  tsym *t_lnk;            /* Link to next */
352 /* sandeep changed to 'int' from 'char' */
353 /* this will increase the number temp symbols
354    that can be defined from 255 to INT_MAX */
355         int t_num;                      /* 0-INT_MAX$ */
356         int t_flg;                      /* flags */
357
358         struct  area *t_area;           /* Area */
359         Addr_T  t_addr;                 /* Address */
360 };
361
362 /*
363  *      External Definitions for all Global Variables
364  */
365
366 extern  int     aserr;                  /*      ASxxxx error counter
367                                          */
368 extern  jmp_buf jump_env;               /*      compiler dependent structure
369                                          *      used by setjmp() and longjmp()
370                                          */
371 extern  int     inpfil;                 /*      count of assembler
372                                          *      input files specified
373                                          */
374 extern  int     incfil;                 /*      current file handle index
375                                          *      for include files
376                                          */
377 extern  int     cfile;                  /*      current file handle index
378                                          *      of input assembly files
379                                          */
380 extern  int     flevel;                 /*      IF-ELSE-ENDIF flag will be non
381                                          *      zero for false conditional case
382                                          */
383 extern  int     tlevel;                 /*      current conditional level
384                                          */
385 extern  int     ifcnd[MAXIF+1];         /*      array of IF statement condition
386                                          *      values (0 = FALSE) indexed by tlevel
387                                          */
388 extern  int     iflvl[MAXIF+1];         /*      array of IF-ELSE-ENDIF flevel
389                                          *      values indexed by tlevel
390                                          */
391 extern  char
392         afn[PATH_MAX];                  /*      afile() temporary filespec
393                                          */
394 extern  char
395         srcfn[MAXFIL][PATH_MAX];        /*      array of source file names
396                                          */
397 extern  int
398         srcline[MAXFIL];                /*      current source file line
399                                          */
400 extern  char
401         incfn[MAXINC][PATH_MAX];        /*      array of include file names
402                                          */
403 extern  int
404         incline[MAXINC];                /*      current include file line
405                                          */
406 extern  int     radix;                  /*      current number conversion radix:
407                                          *      2 (binary), 8 (octal), 10 (decimal),
408                                          *      16 (hexadecimal)
409                                          */
410 extern  int     line;                   /*      current assembler source
411                                          *      line number
412                                          */
413 extern  int     page;                   /*      current page number
414                                          */
415 extern  int     lop;                    /*      current line number on page
416                                          */
417 extern  int     pass;                   /*      assembler pass number
418                                          */
419 extern  int     lflag;                  /*      -l, generate listing flag
420                                          */
421 extern  int     cflag;                  /*      -c, generate sdcdb debug information
422                                          */
423 extern  int     gflag;                  /*      -g, make undefined symbols global flag
424                                          */
425 extern  int     aflag;                  /*      -a, make all symbols global flag
426                                          */
427 extern  int     jflag;                  /*      -j, generate debug information flag
428                                          */
429 extern  int     oflag;                  /*      -o, generate relocatable output flag
430                                          */
431 extern  int     sflag;                  /*      -s, generate symbol table flag
432                                          */
433 extern  int     pflag;                  /*      -p, enable listing pagination
434                                          */
435 extern  int     xflag;                  /*      -x, listing radix flag
436                                          */
437 extern  int     fflag;                  /*      -f(f), relocations flagged flag
438                                          */
439 extern  Addr_T  laddr;                  /*      address of current assembler line
440                                          *      or value of .if argument
441                                          */
442 extern  Addr_T  fuzz;                   /*      tracks pass to pass changes in the
443                                          *      address of symbols caused by
444                                          *      variable length instruction formats
445                                          */
446 extern  int     lmode;                  /*      listing mode
447                                          */
448 extern  struct  area    area[];         /*      array of 1 area
449                                          */
450 extern  struct  area *areap;            /*      pointer to an area structure
451                                          */
452 extern  struct  sym     sym[];          /*      array of 1 symbol
453                                          */
454 extern  struct  sym *symp;              /*      pointer to a symbol structure
455                                          */
456 extern  struct  sym *symhash[NHASH];    /*      array of pointers to NHASH
457                                          *      linked symbol lists
458                                          */
459 extern  struct  mne *mnehash[NHASH];    /*      array of pointers to NHASH
460                                          *      linked mnemonic/directive lists
461                                          */
462 extern  char    *ep;                    /*      pointer into error list
463                                          *      array eb[NERR]
464                                          */
465 extern  char    eb[NERR];               /*      array of generated error codes
466                                          */
467 extern  char    *ip;                    /*      pointer into the assembler-source
468                                          *      text line in ib[]
469                                          */
470 extern  char    ib[NINPUT];             /*      assembler-source text line
471                                          */
472 extern  char    *cp;                    /*      pointer to assembler output
473                                          *      array cb[]
474                                          */
475 extern  char    cb[NCODE];              /*      array of assembler output values
476                                          */
477 extern  int     *cpt;                   /*      pointer to assembler relocation type
478                                          *      output array cbt[]
479                                          */
480 extern  int     cbt[NCODE];             /*      array of assembler relocation types
481                                          *      describing the data in cb[]
482                                          */
483 extern  char    tb[NTITL];              /*      Title string buffer
484                                          */
485 extern  char    stb[NSBTL];             /*      Subtitle string buffer
486                                          */
487 extern  char    optsdcc[NINPUT];        /*      sdcc compile options
488                                         */
489 extern  int     flat24Mode;             /*      non-zero if we are using DS390 24 bit
490                                          *      flat mode (via .flat24 directive).
491                                          */
492 extern  char    symtbl[];               /*      string "Symbol Table"
493                                          */
494 extern  char    aretbl[];               /*      string "Area Table"
495                                          */
496 extern  char    module[NCPS];           /*      module name string
497                                          */
498 extern  FILE    *lfp;                   /*      list output file handle
499                                          */
500 extern  FILE    *ofp;                   /*      relocation output file handle
501                                          */
502 extern  FILE    *tfp;                   /*      symbol table output file handle
503                                          */
504 extern  FILE    *sfp[MAXFIL];           /*      array of assembler-source file handles
505                                          */
506 extern  FILE    *ifp[MAXINC];           /*      array of include-file file handles
507                                          */
508 extern  unsigned char   ctype[128];     /*      array of character types, one per
509                                         *       ASCII character
510                                         */
511
512 extern  char    ccase[128];             /* an array of characters which
513                                          * perform the case translation function
514                                          */
515 /*
516  * Definitions for Character Types
517  */
518 #define SPACE   0000
519 #define ETC     0000
520 #define LETTER  0001
521 #define DIGIT   0002
522 #define BINOP   0004
523 #define RAD2    0010
524 #define RAD8    0020
525 #define RAD10   0040
526 #define RAD16   0100
527 #define ILL     0200
528
529 #define DGT2    DIGIT|RAD16|RAD10|RAD8|RAD2
530 #define DGT8    DIGIT|RAD16|RAD10|RAD8
531 #define DGT10   DIGIT|RAD16|RAD10
532 #define LTR16   LETTER|RAD16
533
534 /*
535  *      The exp structure is used to return the evaluation
536  *      of an expression.  The structure supports three valid
537  *      cases:
538  *      (1)     The expression evaluates to a constant,
539  *              mode = S_USER, flag = 0, addr contains the
540  *              constant, and base = NULL.
541  *      (2)     The expression evaluates to a defined symbol
542  *              plus or minus a constant, mode = S_USER,
543  *              flag = 0, addr contains the constant, and
544  *              base = pointer to area symbol.
545  *      (3)     The expression evaluates to a external
546  *              global symbol plus or minus a constant,
547  *              mode = S_NEW, flag = 1, addr contains the
548  *              constant, and base = pointer to symbol.
549  */
550 struct  expr
551 {
552         char    e_mode;                 /* Address mode */
553         char    e_flag;                 /* Symbol flag */
554         Addr_T  e_addr;                 /* Address */
555         union   {
556                 struct area *e_ap;
557                 struct sym  *e_sp;
558         } e_base;                       /* Rel. base */
559         int     e_rlcf;                 /* Rel. flags */
560 };
561
562 /* C Library functions */
563 /* for reference only
564 extern  VOID            exit();
565 extern  int             fclose();
566 extern  char *          fgets();
567 extern  FILE *          fopen();
568 extern  int             fprintf();
569 extern  VOID            longjmp();
570 extern  VOID *          malloc();
571 extern  int             printf();
572 extern  char            putc();
573 extern  int             rewind();
574 extern  int             setjmp();
575 extern  int             strcmp();
576 extern  char *          strcpy();
577 extern  int             strlen();
578 extern  char *          strncpy();
579 */
580
581 /* Machine independent functions */
582
583 /* asmain.c */
584 extern  FILE *          afile();
585 extern  VOID            asexit();
586 extern  VOID            asmbl();
587 extern  int             main();
588 extern  VOID            newdot();
589 extern  VOID            phase();
590 extern  VOID            usage();
591
592 /* aslex.c */
593 extern  char            endline();
594 extern  char            get();
595 extern  VOID            getid();
596 extern  int             getline();
597 extern  int             getmap();
598 extern  char            getnb();
599 extern  VOID            getst();
600 extern  int             more();
601 extern  VOID            unget();
602 extern  VOID            chop_crlf();
603
604 /* assym.c */
605 extern  struct  area *  alookup();
606 extern  struct  mne *   mlookup();
607 extern  int             hash();
608 extern  struct  sym *   lookup();
609 extern  VOID *          new();
610 extern  int             symeq();
611 extern  VOID            syminit();
612 extern  VOID            symglob();
613 extern  VOID            allglob();
614
615 /* assubr.c */
616 extern  VOID            aerr();
617 extern  VOID            diag();
618 extern  VOID            err();
619 extern  VOID            warnBanner(void);
620 extern  char *          geterr();
621 extern  VOID            qerr();
622 extern  VOID            rerr();
623
624 /* asexpr.c */
625 extern  VOID            abscheck();
626 extern  Addr_T          absexpr();
627 extern  VOID            clrexpr();
628 extern  int             digit();
629 extern  int             is_abs();
630 extern  VOID            expr();
631 extern  int             oprio();
632 extern  VOID            term();
633
634 /* aslist.c */
635 extern  VOID            list();
636 extern  VOID            list1();
637 extern  VOID            list2();
638 extern  VOID            lstsym();
639 extern  VOID            slew();
640
641 /* asout.c */
642 extern  int             hibyte();
643 extern  int             lobyte();
644 extern  int             byte3(int);
645 extern  VOID            out();
646 extern  VOID            outab();
647 extern  VOID            outarea();
648 extern  VOID            outaw();
649 extern  VOID            outall();
650 extern  VOID            outdot();
651 extern  VOID            outbuf();
652 extern  VOID            outchk();
653 extern  VOID            outgsd();
654 extern  VOID            outrb();
655 extern  VOID            outrw(struct expr *, int);
656 extern  VOID            outr24(struct expr *, int);
657 extern  VOID            outsym();
658 extern  VOID            out_lb();
659 extern  VOID            out_lw();
660 extern  VOID            out_l24(int, int);
661 extern  VOID            out_rw();
662 extern  VOID            out_tw();
663 extern  VOID            out_t24(int);
664 extern  VOID            outr11();       /* JLH */
665 extern  VOID            outr19(struct expr *, int, int);
666
667 /* asstore.c */
668 extern char *StoreString( char *str );
669
670 /* asnoice.c */
671 extern void DefineNoICE_Line();
672 extern void DefineCDB_Line();
673
674 /* Machine dependent variables */
675
676 extern  char *          cpu;
677 extern  char *          dsft;
678 extern  int             hilo;
679 extern  struct  mne     mne[];
680
681 /* Machine dependent functions */
682
683 extern  VOID            minit();
684 extern VOID machine(struct mne *);