|
|
1.1 root 1: /* $Header: /src386/bin/db/RCS/i8086c.c,v 1.2 93/03/11 07:45:47 bin Exp Locker: bin $
2: *
3: * The information contained herein is a trade secret of Mark Williams
4: * Company, and is confidential information. It is provided under a
5: * license agreement, and may be copied or disclosed only under the
6: * terms of that agreement. Any reproduction or disclosure of this
7: * material without the express written authorization of Mark Williams
8: * Company or persuant to the license agreement is unlawful.
9: *
10: * COHERENT Version 2.3.35
11: * Copyright (c) 1982, 1983, 1984.
12: * An unpublished work by Mark Williams Company, Chicago.
13: * All rights reserved.
14: */
15: /*
16: * A debugger.
17: * Tables for the Intel 8086.
18: *
19: * $Log: i8086c.c,v $
20: * Revision 1.2 93/03/11 07:45:47 bin
21: * Hal: post NDP update that at least
22: * can st breakpoints.
23: *
24: * Revision 1.1 92/06/10 14:36:44 bin
25: * Initial revision
26: *
27: * Revision 1.1 88/10/17 04:04:02 src
28: * Initial revision
29: *
30: *
31: * Revision: 386 version 92/05/01
32: * Bernard Wald, Wald Software Consulting, Germany
33: *
34: */
35:
36: #include <stdio.h>
37: #include <sys/param.h>
38: #include <l.out.h>
39: #include "trace.h"
40: #include "i8086.h"
41:
42: /*
43: * Global variables.
44: */
45: int cacdata;
46: int cacaddr;
47: int cacsegn;
48: int sysflag;
49: BIN sin;
50: REG reg;
51:
52: /*
53: * Breakpoint instruction
54: */
55: BIN bin ={
56: 0xCC
57: };
58:
59: /*
60: * Table containing format strings.
61: */
62: char *formtab[4][4] ={
63: "%4d", /* 'b', 'd' */
64: "%3u", /* 'b', 'u' */
65: "%04o", /* 'b', 'o' */
66: "%02x", /* 'b', 'x' */
67: "%6d", /* 'w', 'd' */
68: "%5u", /* 'w', 'u' */
69: "%07o", /* 'w', 'o' */
70: "%04x", /* 'w', 'x' */
71: "%10ld", /* 'l', 'd' */
72: "%11lu", /* 'l', 'u' */
73: "%012lo", /* 'l', 'o' */
74: "%08lx", /* 'l', 'x' */
75: "%8ld", /* 'v', 'd' */
76: "%8lu", /* 'v', 'd' */
77: "%09lo", /* 'v', 'o' */
78: "%06lx" /* 'v', 'x' */
79: };
80:
81: /*
82: * Fault types.
83: */
84: char *signame[] ={
85: "Hangup",
86: "Interrupt",
87: "Quit",
88: "Illegal Instruction",
89: "Trace Trap",
90: "Abort",
91: "Emulator Trap",
92: "Floating Point Exception",
93: "Kill",
94: "Bus Error",
95: "Segmentation Violation",
96: "Invalid System Call Number",
97: "Write to Pipe with no Readers",
98: "Alarm",
99: "Termination",
100: "USR1",
101: "USR2",
102: "Death of Child",
103: "Restart",
104: "Window Change",
105: "Polled Event",
106: "Signal 23",
107: "Signal 24",
108: "Signal 25",
109: "Signal 26",
110: "Signal 27",
111: "Signal 28",
112: "Signal 29",
113: "Signal 30",
114: "Signal 31",
115: };
116:
117: /*
118: * Names of registers.
119: */
120: char regitab[] ={
121: 'b', 'p',
122: 'd', 'i',
123: 's', 'i',
124: '?', '\0',
125: 'e', 's',
126: 'c', 'x',
127: 'd', 'x',
128: 'a', 'x',
129: 'b', 'x',
130: 'd', 's',
131: 's', 'p',
132: 's', 's',
133: '?', '\0',
134: 'i', 'p',
135: 'c', 's',
136: 'f', 'w',
137: '\0', '\0'
138: };
139:
140: /*
141: * Table of system calls.
142: */
143: char *sysitab[NMICALL] ={
144: NULL,
145: "exit",
146: "fork",
147: "read",
148: "write",
149: "open",
150: "close",
151: "wait",
152: "creat",
153: "link",
154: "unlink",
155: "exece",
156: "chdir",
157: NULL,
158: "mknod",
159: "chmod",
160: "chown",
161: "brk",
162: "stat",
163: "lseek",
164: "getpid",
165: "mount",
166: "umount",
167: "setuid",
168: "getuid",
169: "stime",
170: "ptrace",
171: "alarm",
172: "fstat",
173: "pause",
174: "utime",
175: NULL,
176: NULL,
177: "access",
178: "nice",
179: "ftime",
180: "sync",
181: "kill",
182: NULL,
183: NULL,
184: NULL,
185: "dup",
186: "pipe",
187: "times",
188: "profil",
189: "unique",
190: "setgid",
191: "getgid",
192: "signal",
193: NULL,
194: NULL,
195: "acct",
196: NULL,
197: NULL,
198: "ioctl",
199: NULL,
200: "getegid",
201: "geteuid",
202: NULL,
203: NULL,
204: "umask",
205: "chroot",
206: "setpgrp",
207: "getpgrp",
208: "sload",
209: "suload",
210: "fcntl",
211: "poll",
212: "msgctl",
213: "msgget",
214: "msgrcv",
215: "msgsnd",
216: "alarm2",
217: "tick",
218: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.