+
+#include <stdio.h>
+#include <setjmp.h>
+#include "sgtty.h"
+#include <sys/vm.h>
+#define PAGSIZ (CLSIZE*NBPG)
+#include "bio.h"
+#include "defs.h"
+
+/* input line decoding */
+char proc[30]; /* procedure name */
+int integ; /* count or number in input */
+char cmd; /* command letter */
+char re[128]; /* regular expression */
+char args[128]; /* arguments */
+char *argsp; /* pointer to args */
+char var[60]; /* variable name */
+int scallf; /* set to 1 iff procedure call */
+int reflag; /* set to 1 iff re */
+int redir; /* set to 1 iff forward search */
+int colonflag; /* set to 1 iff colon typed */
+
+/* source file i/o */
+char curfile[30]; /* name of file being edited */
+int fline; /* line number in file */
+int maxfline; /* maximum line number in file, 0 if unknown */
+struct brbuf fiobuf; /* file descriptor */
+char fbuf[256]; /* current line from file */
+char filework[128]; /* place to put filename */
+char *fp; /* pointer to it */
+int nolines; /* set to 1 iff no lines in file */
+
+/* returned by slookup */
+char sl_name[8];
+char sl_class;
+short sl_type;
+int sl_size, sl_addr;
+int subflag;
+
+/* procedure call information */
+int scallx; /* procedure call in progress */
+ADDR fps, aps, pcs; /* old stack frame */
+BKPTR bkpts; /* old breakpoint */
+int flagss; /* and its flags */
+char dschar; /* '/' if value should be displayed */
+
+/* symbol table info */
+long ststart; /* offset of symbol table in a.out */
+struct brbuf sbuf; /* buffer for symbol table */
+long extstart; /* offset of first external in a.out */
+
+/* address info */
+ADDR dot; /* current address */
+ADDR callpc, frame, argp; /* current stack frame */
+
+/* other */
+char odesc[10]; /* descriptor of last displayed variable */
+ADDR oaddr; /* address of last displayed variable */
+char otype; /* type of last displayed variable */
+char oclass; /* class of last displayed variable */
+char oincr; /* size of last displayed variable */
+struct sgttyb sdbttym, userttym;
+ /* tty modes for sdb and user */
+char oldargs[128];
+char prname[50]; /* print name used by outvar */
+jmp_buf env; /* environment for setjmp, longjmp */
+#define WINDOW 10 /* window size for display commands */
+#define COMMANDS "\004\"+-=!/BCDRSTabcdegklmpqrstwzVXY"
+ /* each sdb command must appear here */
+int debug; /* toggled by Y command */
+time_t symtime; /* modification time of symfil */
+
+#define STABMASK 0376
+
+#define NUMARGS 16 /* number of args allowed in sub call */
+#define SUBSTSP 512 /* length of space for sub args and strings */
+#define WORDSIZE 4 /* wordsize in bytes on this machine */
+
+#define BIGNUM 0x7fffffff
+#define MAXADDR 1L<<30
+
+struct filet {
+ char sfilename[31]; /* source file name */
+ char lineflag; /* set iff this is a '#line' file */
+ ADDR faddr; /* address in core */
+ long stf_offset; /* offset in a.out */
+} *files, *badfile;
+
+struct proct {
+ char pname[8]; /* procedure name */
+ ADDR paddr; /* address in core */
+ long st_offset; /* offset in a.out */
+ struct filet *sfptr; /* source file name pointer */
+ int lineno; /* line number in source file */
+ char entrypt; /* 1 iff a F77 entry */
+} *procs, *badproc;
+
+
+#define PROCINCR 20
+#define FILEINCR 10
+
+#define varchar(x) ((x>='A' && x<='Z') || (x>='a' && x<='z') || x == '_' || x == '.' || x == '[' || x == ']' || x == '-' || x == '>' || x == '*' || x == '?')
+#define number(x) (x >= '0' && x <= '9')
+
+char *readline(), readchar(), rdc();
+char *cpname();
+char *cpstr(), *cpall();
+char *sbrk();
+char *typetodesc();
+int octdigit(), decdigit(); hexdigit();
+int octconv(), decconv(); hexconv();
+long readint(), rint();
+long adrtostoffset();
+long getval(), argvalue();
+long slookup(), globallookup();
+ADDR varaddr(), dispvar();
+ADDR extaddr(), formaddr(), stackreg();
+struct proct *curproc();
+struct proct *findproc();
+struct proct *adrtoproc();
+struct proct *initframe(), *nextframe();
+struct filet *findfile(), *adrtofilep();