Category : Assembly Language Source Code
Archive   : CUG292.ZIP
Filename : ASM.H

 
Output of file : ASM.H contained in archive : CUG292.ZIP
/* asm.h */

/*
* (C) Copyright 1989,1990
* All Rights Reserved
*
* Alan R. Baldwin
* 721 Berkeley St.
* Kent, Ohio 44240
*/

#define VERSION "V01.50"

/* DECUS C void definition */
/* File/extension seperator */

#ifdef decus
#define VOID char
#define FSEPX '.'
#endif

/* PDOS C void definition */
/* File/extension seperator */

#ifdef PDOS
#define VOID char
#define FSEPX ':'
#endif

/* Default void definition */
/* File/extension seperator */

#ifndef VOID
#define VOID void
#define FSEPX '.'
#endif

/*
* Case Sensitivity Flag
*/
#define CASE_SENSITIVE 1

/*
* Assembler definitions.
*/
#define LFTERM '(' /* Left expression delimeter */
#define RTTERM ')' /* Right expression delimeter */

#define NCPS 8 /* Chars. per symbol */
#define HUGE 1000 /* A huge number */
#define NERR 3 /* Errors per line */
#define NINPUT 128 /* Input buffer size */
#define NCODE 128 /* Listing code buffer size */
#define NTITL 64 /* Title buffer size */
#define NSBTL 64 /* SubTitle buffer size */
#define NHASH 64 /* Buckets in hash table */
#define HMASK 077 /* Hash mask */
#define NLPP 60 /* Lines per page */
#define MAXFIL 6 /* Maximum command line input files */
#define MAXINC 6 /* Maximum nesting of include files */
#define MAXIF 10 /* Maximum nesting of if/else/endif */
#define FILSPC 15 /* Chars. in filespec */

#define NLIST 0 /* No listing */
#define SLIST 1 /* Source only */
#define ALIST 2 /* Address only */
#define CLIST 3 /* Code */

#define dot sym[0] /* Dot, current loc */
#define dca area[0] /* Dca, default code area */

typedef unsigned int addr_t;

struct area
{
struct area *a_ap; /* Area link */
char a_id[NCPS]; /* Area Name */
int a_ref; /* Ref. number */
addr_t a_size; /* Area size */
addr_t a_fuzz; /* Area fuzz */
int a_flag; /* Area flags */
};

#define A_CON 000 /* Concatenating */
#define A_OVR 004 /* Overlaying */
#define A_REL 000 /* Relocatable */
#define A_ABS 010 /* absolute */
#define A_NOPAG 000 /* Non-Paged */
#define A_PAG 020 /* Paged */

#define R_WORD 0000 /* 16 bit */
#define R_BYTE 0001 /* 8 bit */

#define R_AREA 0000 /* Base type */
#define R_SYM 0002

#define R_NORM 0000 /* PC adjust */
#define R_PCR 0004

#define R_BYT1 0000 /* Byte count for R_BYTE = 1 */
#define R_BYT2 0010 /* Byte count for R_BYTE = 2 */

#define R_SGND 0000 /* Signed Byte */
#define R_USGN 0020 /* Unsigned Byte */

#define R_NOPAG 0000 /* Page Mode */
#define R_PAG0 0040 /* Page '0' */
#define R_PAG 0100 /* Page 'nnn' */

#define R_HIGH 0040000 /* High Byte */
#define R_RELOC 0100000 /* Relocation */

#define R_DEF 00 /* Global def. */
#define R_REF 01 /* Global ref. */
#define R_REL 00 /* Relocatable */
#define R_ABS 02 /* Absolute */
#define R_GBL 00 /* Global */
#define R_LCL 04 /* Local */

struct mne
{
struct mne *m_mp; /* Hash link */
char m_id[NCPS]; /* Mnemonic */
char m_type; /* Mnemonic subtype */
char m_flag; /* Mnemonic flags */
addr_t m_valu; /* Value */
};

struct sym
{
struct sym *s_sp; /* Hash link */
struct tsym *s_tsym; /* Temporary symbol link */
char s_id[NCPS]; /* Symbol */
char s_type; /* Symbol subtype */
char s_flag; /* Symbol flags */
struct area *s_area; /* Area line, 0 if absolute */
int s_ref; /* Ref. number */
addr_t s_addr; /* Address */
};

#define S_GBL 01 /* Global */
#define S_ASG 02 /* Assigned */
#define S_MDF 04 /* Mult. def */
#define S_END 010 /* End mark for pst. */

#define S_NEW 0 /* New name */
#define S_USER 1 /* User name */
/* unused slot */
/* unused slot */
/* unused slot */

#define S_BYTE 5 /* .byte */
#define S_WORD 6 /* .word */
#define S_ASCII 7 /* .ascii */
#define S_ASCIZ 8 /* .asciz */
#define S_BLK 9 /* .blkb or .blkw */
#define S_INCL 10 /* .include */
#define S_DAREA 11 /* .area */
#define S_ATYP 12 /* .area type */
#define S_AREA 13 /* .area name */
#define S_GLOBL 14 /* .globl */
#define S_PAGE 15 /* .page */
#define S_TITLE 16 /* .title */
#define S_SBTL 17 /* .sbttl */
#define S_IF 18 /* .if */
#define S_ELSE 19 /* .else */
#define S_ENDIF 20 /* .endif */
#define S_EVEN 21 /* .even */
#define S_ODD 22 /* .odd */
#define S_RADIX 23 /* .radix */
#define S_ORG 24 /* .org */
#define S_MODUL 25 /* .module */

struct tsym
{
struct tsym *t_lnk; /* Link to next */
char t_num; /* 0-255$ */
char t_flg; /* flags */
struct area *t_area; /* Area */
addr_t t_addr; /* Address */
};

extern jmp_buf jump_env;
extern int inpfil;
extern int incfil;
extern int cfile;
extern int flevel;
extern int tlevel;
extern int ifcnd[];
extern int iflvl[];
extern int radix;
extern VOID *new();
extern int line;
extern int page;
extern int lop;
extern int pass;
extern int lflag;
extern int gflag;
extern int aflag;
extern int oflag;
extern int sflag;
extern int xflag;
extern int fflag;
extern addr_t laddr;
extern addr_t fuzz;
extern int lmode;
extern struct area area[];
extern struct area *areap;
extern struct sym sym[];
extern struct sym *symp;
extern struct sym *symhash[NHASH];
extern struct mne *mnehash[NHASH];
extern char *ep;
extern char eb[NERR];
extern char *ip;
extern char ib[NINPUT];
extern char *cp;
extern char cb[NCODE];
extern int *cpt;
extern int cbt[NCODE];
extern char tb[NTITL];
extern char stb[NSBTL];
extern char symtbl[];
extern char aretbl[];
extern char module[NCPS];
extern FILE *lfp;
extern FILE *ofp;
extern FILE *tfp;
extern FILE *sfp[];
extern FILE *ifp[];
extern char ctype[];

#if CASE_SENSITIVE
#else
extern char ccase[];
#endif

#define SPACE 0000
#define ETC 0000
#define LETTER 0001
#define DIGIT 0002
#define BINOP 0004
#define RAD2 0010
#define RAD8 0020
#define RAD10 0040
#define RAD16 0100
#define ILL 0200

#define DGT2 DIGIT|RAD16|RAD10|RAD8|RAD2
#define DGT8 DIGIT|RAD16|RAD10|RAD8
#define DGT10 DIGIT|RAD16|RAD10
#define LTR16 LETTER|RAD16

/*
* Expression.
*/
struct expr
{
char e_mode; /* Address mode */
char e_flag; /* Symbol flag */
addr_t e_addr; /* Address */
union {
struct area *e_ap;
struct sym *e_sp;
} e_base; /* Rel. base */
};

/* C Library functions */
/* for reference only
extern int fclose();
extern char * fgets();
extern FILE * fopen();
extern int fprintf();
extern VOID longjmp();
extern VOID * malloc();
extern int printf();
extern char putc();
extern int rewind();
extern int setjmp();
extern int strcmp();
extern char * strcpy();
extern int strlen();
extern char * strncpy();
*/

/* Machine independent functions */

/* asmain.c */
extern VOID asmbl();
extern VOID main();
extern VOID newdot();
extern VOID phase();
extern VOID usage();

/* aslex.c */
extern char endline();
extern char get();
extern VOID getid();
extern int getline();
extern char getmap();
extern char getnb();
extern int more();
extern VOID unget();

/* assym.c */
extern struct area * alookup();
extern struct mne * mlookup();
extern int hash();
extern struct sym * lookup();
extern VOID * new();
extern int symeq();
extern VOID syminit();
extern VOID symglob();
extern VOID allglob();

/* assubr.c */
extern VOID aerr();
extern VOID diag();
extern VOID err();
extern VOID qerr();
extern VOID rerr();

/* asexpr.c */
extern VOID abscheck();
extern addr_t absexpr();
extern int digit();
extern VOID expr();
extern int oprio();
extern VOID term();

/* aslist.c */
extern VOID list();
extern VOID list1();
extern VOID list2();
extern VOID lstsym();
extern VOID slew();

/* asout.c */
extern int hibyte();
extern int lobyte();
extern VOID out();
extern VOID outab();
extern VOID outarea();
extern VOID outaw();
extern VOID outall();
extern VOID outbuf();
extern VOID outchk();
extern VOID outgsd();
extern VOID outrb();
extern VOID outrw();
extern VOID outsym();
extern VOID out_lb();
extern VOID out_lw();
extern VOID out_rw();
extern VOID out_tw();


/* Machine dependent variables */

extern char * cpu;
extern char * dsft;
extern int hilo;
extern struct mne mne[];

/* Machine dependent functions */

extern VOID machin();
extern VOID minit();



  3 Responses to “Category : Assembly Language Source Code
Archive   : CUG292.ZIP
Filename : ASM.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/