|
|
1.1 ! root 1: /* ! 2: * A debugger. ! 3: * Tables for the Intel 8086. ! 4: */ ! 5: #include <stdio.h> ! 6: #include <sys/const.h> ! 7: #include <l.out.h> ! 8: #include "trace.h" ! 9: #include "i8086.h" ! 10: ! 11: /* ! 12: * Global variables. ! 13: */ ! 14: int cacdata; ! 15: int cacaddr; ! 16: int cacsegn; ! 17: int sysflag; ! 18: BIN sin; ! 19: REG reg; ! 20: ! 21: /* ! 22: * Breakpoint instruction ! 23: */ ! 24: BIN bin ={ ! 25: 0xCC ! 26: }; ! 27: ! 28: /* ! 29: * Table containing format strings. ! 30: */ ! 31: char *formtab[4][4] ={ ! 32: "%4d", /* 'b', 'd' */ ! 33: "%3u", /* 'b', 'u' */ ! 34: "%04o", /* 'b', 'o' */ ! 35: "%02x", /* 'b', 'x' */ ! 36: "%6d", /* 'w', 'd' */ ! 37: "%5u", /* 'w', 'u' */ ! 38: "%07o", /* 'w', 'o' */ ! 39: "%04x", /* 'w', 'x' */ ! 40: "%10ld", /* 'l', 'd' */ ! 41: "%11lu", /* 'l', 'u' */ ! 42: "%012lo", /* 'l', 'o' */ ! 43: "%08lx", /* 'l', 'x' */ ! 44: "%8ld", /* 'v', 'd' */ ! 45: "%8lu", /* 'v', 'd' */ ! 46: "%09lo", /* 'v', 'o' */ ! 47: "%06lx" /* 'v', 'x' */ ! 48: }; ! 49: ! 50: /* ! 51: * Fault types. ! 52: */ ! 53: char *signame[] ={ ! 54: "Hangup", ! 55: "Interrupt", ! 56: "Quit", ! 57: "Alarm clock", ! 58: "Termination signal", ! 59: "Restart", ! 60: "Bad argument to system call", ! 61: "Write on open pipe", ! 62: "Kill", ! 63: "Breakpoint", ! 64: "Segmentation violation", ! 65: "Divide error", ! 66: "Overflow", ! 67: "Signal 14", ! 68: "Signal 15", ! 69: "Signal 16", ! 70: }; ! 71: ! 72: /* ! 73: * Names of registers. ! 74: */ ! 75: char regitab[] ={ ! 76: 'b', 'p', ! 77: 'd', 'i', ! 78: 's', 'i', ! 79: '?', '\0', ! 80: 'e', 's', ! 81: 'c', 'x', ! 82: 'd', 'x', ! 83: 'a', 'x', ! 84: 'b', 'x', ! 85: 'd', 's', ! 86: 's', 'p', ! 87: 's', 's', ! 88: '?', '\0', ! 89: 'i', 'p', ! 90: 'c', 's', ! 91: 'f', 'w', ! 92: '\0', '\0' ! 93: }; ! 94: ! 95: /* ! 96: * Byte registers. ! 97: */ ! 98: char *regbtab[] ={ ! 99: "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh" ! 100: }; ! 101: ! 102: /* ! 103: * Word registers. ! 104: */ ! 105: char *regwtab[] ={ ! 106: "ax", "cx", "dx", "bx", "sp", "bp", "si", "di" ! 107: }; ! 108: ! 109: /* ! 110: * Indirect mode table. ! 111: */ ! 112: char *indmtab[] ={ ! 113: "(bx)(si)", ! 114: "(bx)(di)", ! 115: "(bp)(si)", ! 116: "(bp)(di)", ! 117: "(si)", ! 118: "(di)", ! 119: "(bp)", ! 120: "(bx)" ! 121: }; ! 122: ! 123: /* ! 124: * Jump table. ! 125: */ ! 126: char *jumptab[] ={ ! 127: "jo", ! 128: "jno", ! 129: "jb", ! 130: "jae", ! 131: "je", ! 132: "jne", ! 133: "jbe", ! 134: "ja", ! 135: "js", ! 136: "jns", ! 137: "jp", ! 138: "jnp", ! 139: "jl", ! 140: "jge", ! 141: "jle", ! 142: "jg" ! 143: }; ! 144: ! 145: /* ! 146: * Table of system calls. ! 147: */ ! 148: char *sysitab[NMICALL] ={ ! 149: NULL, ! 150: "exit", ! 151: "fork", ! 152: "read", ! 153: "write", ! 154: "open", ! 155: "close", ! 156: "wait", ! 157: "creat", ! 158: "link", ! 159: "unlink", ! 160: "exece", ! 161: "chdir", ! 162: NULL, ! 163: "mknod", ! 164: "chmod", ! 165: "chown", ! 166: "brk", ! 167: "stat", ! 168: "lseek", ! 169: "getpid", ! 170: "mount", ! 171: "umount", ! 172: "setuid", ! 173: "getuid", ! 174: "stime", ! 175: "ptrace", ! 176: "alarm", ! 177: "fstat", ! 178: "pause", ! 179: "utime", ! 180: NULL, ! 181: NULL, ! 182: "access", ! 183: "nice", ! 184: "ftime", ! 185: "sync", ! 186: "kill", ! 187: NULL, ! 188: NULL, ! 189: NULL, ! 190: "dup", ! 191: "pipe", ! 192: "times", ! 193: "profil", ! 194: "unique", ! 195: "setgid", ! 196: "getgid", ! 197: "signal", ! 198: NULL, ! 199: NULL, ! 200: "acct", ! 201: NULL, ! 202: NULL, ! 203: "ioctl", ! 204: NULL, ! 205: "getegid", ! 206: "geteuid", ! 207: NULL, ! 208: NULL, ! 209: "umask", ! 210: "chroot", ! 211: NULL, ! 212: NULL, ! 213: "sload", ! 214: "suload", ! 215: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.