home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / szadb21b / source / src / adb.h < prev    next >
C/C++ Source or Header  |  1992-01-09  |  5KB  |  222 lines

  1. /* Copyright (c) 1988 by Sozobon, Limited.  Authors: Johann Ruegg, Don Dugger
  2.  *
  3.  * Permission is granted to anyone to use this software for any purpose
  4.  * on any computer system, and to redistribute it freely, with the
  5.  * following restrictions:
  6.  * 1) No charge may be made other than reasonable charges for reproduction.
  7.  * 2) Modified versions must be clearly marked as such.
  8.  * 3) The authors are not responsible for any harmful consequences
  9.  *    of using this software, even if they result from defects in it.
  10.  *
  11.  *    adb.h
  12.  */
  13.  
  14. #define LINESZ  78        /* leave space for a two character prompt */
  15.  
  16. #define NUMERIC        3
  17. #define HEX        7
  18. #define ALPHA        5
  19. #define SPECCMD        8
  20. #define SPECX        16
  21.  
  22. #define ALPHANUM    1
  23. #define HEXDIG        2
  24. #define ALPHAONLY    4
  25.  
  26. #define BSIZE        512
  27. #define LOGBS        9
  28. #define SYMSZ        10
  29.  
  30. /*
  31.  *    Error types
  32.  */
  33. #define ACCESS        0    /* access outside address map */
  34. #define UNBAL        1    /* unbalanced parenthesis */
  35. #define UNKNOWN        2    /* unknown command */
  36. #define BADCMD        3    /* bad command at this time */
  37. #define BADNAME        4    /* cant find symbol */
  38. #define BADRNAME    5    /* cant find register */
  39.  
  40. #define sreg(a)    ((a) & 7)
  41. #define smod(a)    (((a) >> 3) & 7)
  42. #define dreg(a)    (((a) >> 9) & 7)
  43. #define dmod(a)    (((a) >> 6) & 7)
  44.  
  45. struct symbol {
  46.     unsigned long    value;
  47.     struct symbol  *next;
  48.     char        name[0]; /* strorage will be allocated by addsym() */
  49. };
  50.  
  51. struct file {
  52.     int    fid;
  53.     char   *name;
  54.     struct symbol *symptr;
  55. };
  56.  
  57. #define SUBPCS    1
  58.  
  59. /*
  60.  *    Base page layout
  61.  */
  62.  
  63. typedef struct basepg {
  64.     char *        p_lowtpa;    /* base address of TPA */
  65.     char *        p_hitpa;    /* end of TPA */
  66.     char *        p_tbase;    /* base address of text */
  67.     unsigned long    p_tlen;        /* length of text */
  68.     char *        p_dbase;    /* base of data */
  69.     unsigned long    p_dlen;        /* length of data */
  70.     char *        p_bbase;    /* base of bss */
  71.     unsigned long    p_blen;        /* length of bss */
  72.     char *        p_dta;
  73.     struct basepg * p_parent;
  74.     long        p_res;
  75.     char *        p_env;        /* ptr to environment string */
  76.     long        p_fill[20];
  77.     char        p_cmdlin[0x80];    /* command line image */
  78. } base_page;
  79.  
  80. typedef struct regs {
  81.     char *        name;
  82.     unsigned long *    value;
  83. } registers;
  84.  
  85. #define TRBUFSZ    0x2000
  86. typedef struct {
  87.     int             buffered;
  88.     int             buf_len;
  89.     char            storage[TRBUFSZ];
  90. } w_buf;
  91.  
  92. typedef struct {
  93.     short           code;
  94.     short           mask;
  95.     int             len;    /* distance to next instrunction in shorts */
  96. } next_step;
  97.  
  98. /*
  99.  * There only one instance of this structure and its fields
  100.  * are initialized in a startup code
  101.  */
  102.  
  103. typedef struct window {
  104.     unsigned short  curc;      /* current character position on a line */
  105.     unsigned long   curl;      /* offset in bytes to the current line  */
  106.     short           res;      /* resolution  as returned by Getrez()  */
  107.     unsigned short  cols, lines;  /* my window size in characters      */
  108.     unsigned short  fontsz;      /* height of alpha cell in pixels      */
  109.     unsigned short  csz;      /* value from 'skips' below          */
  110.     unsigned short  lsz;      /* width of a screen row in bytes      */
  111.     unsigned short  fsz;      /* width in bytes of a row of pixels      */
  112.     char           *font;      /* pointer to font data (shapes)      */
  113. };
  114.  
  115. #define TBITS    0xc000
  116. #define ITRACE    0x8000
  117.  
  118. #define PC    0
  119. #define SR    1
  120. #define XSP    2
  121. #define D0    3
  122. #define A0    11
  123. #define FP    (A0 + 6)
  124. #define SP    (A0 + 7)
  125.  
  126. /* colums to align for printing after address */
  127. #define ALIGN_A  28
  128. #define ALIGN_OP 9   /* offset for operands printing */
  129.  
  130. #define NO_TRANS  (-4)
  131.  
  132. #define START_DBG    0
  133. #define RD_TEXT        1
  134. #define RD_DATA        2
  135. #define RD_USER        3
  136. #define WR_TEXT        4
  137. #define WR_DATA        5
  138. #define WR_USER        6
  139. #define CONTINUE    7
  140. #define KILL_PID    8
  141. #define SSTEP        9
  142.  
  143. long ptrace();
  144.  
  145. struct fheader {
  146.     short    magic;
  147.     long    tsize;
  148.     long    dsize;
  149.     long    bsize;
  150.     long    ssize;
  151.     long    stksize;
  152.     long    entry;
  153.     short    flag;
  154. };
  155.  
  156. #define MAGIC    0x601a
  157.  
  158. struct filsym {
  159.     char    name[8];
  160.     short    flag;
  161.     long    value;
  162. };
  163.  
  164. struct mwfilsym {
  165.     char    name[16];
  166.     short    flag;
  167.     union sval {
  168.         long    value;
  169.         char    got[4];
  170.     } sval;
  171. };
  172.  
  173. #define S_DEF    0100000
  174. #define S_EQU    0040000
  175. #define S_EXT    0020000
  176. #define S_REG    0010000
  177. #define S_REF    0004000
  178. #define S_DATA    0002000
  179. #define S_TEXT    0001000
  180. #define S_BSS    0000400
  181. #define S_FIL    0000200
  182. #define S_LNAM  0000110
  183. #define S_EXTEND  (S_TEXT|S_EQU)
  184.  
  185. #define FALSE   0
  186. #define TRUE    (!FALSE)
  187.  
  188. typedef int bool;
  189.  
  190. #define MAXBPTS         10
  191.  
  192. /* kinds of stepping commands */
  193.  
  194. #define CM_CONT         0
  195. #define CM_STEP        (CM_CONT+1)
  196. #define CM_NEXT        (CM_STEP+1)
  197. #define CM_FINISH    (CM_NEXT+1)
  198.  
  199. /* stepping.c */
  200.  
  201. extern void PrBptList();
  202. extern bool SetBpt(/* short* addr */);
  203. extern bool ClrBpt(/* short* addr */);
  204. extern void SingleStep(/* short* addr, int kind */);
  205. extern void FullStep(/* short* addr, short* target, int kind */);
  206. extern void NextStep(/* short* addr, next_step *skip_list */);
  207. extern void FuncStep(/* short* addr */);
  208.  
  209. /* execution status for commands on breakpoints */
  210.  
  211. #define SILENT    (-1)
  212. #define BLANK      0
  213. #define DOWN      1
  214. #define ON        2
  215. #define REVERT    3
  216. #define IGNORE    4
  217. #define NEW       5
  218.  
  219. #define PUSHC(c)    (lastc = (c))
  220. #define PEEKC        PUSHC(nb())
  221. /* end */
  222.