 98ddbffe6e
			
		
	
	
		98ddbffe6e
		
	
	
	
	
		
			
			- it can disassemble object files (dis386o) and executables
    (dis386a)
  - only useful for as long as we still have ack
		
	
			
		
			
				
	
	
		
			213 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* type.h - types for db.
 | |
|  *
 | |
|  * $Id: type.h,v 1.1 1997/10/20 12:00:00 cwr Exp cwr $
 | |
|  */
 | |
| 
 | |
| typedef unsigned long bigcount_t;
 | |
| typedef unsigned long flags_t;
 | |
| typedef int bool_pt;
 | |
| typedef char bool_t;
 | |
| typedef int char_pt;
 | |
| typedef int char16_t;		/* ASCII character possibly with scan code */
 | |
| typedef unsigned count_t;
 | |
| typedef unsigned long offset_t;
 | |
| typedef unsigned opcode_pt;	/* promote to unsigned and not int */
 | |
| typedef int (*pfi_t)();
 | |
| typedef void (*pfv_t)();
 | |
| typedef unsigned long physoff_t;
 | |
| typedef unsigned peekboff_t;
 | |
| typedef unsigned peekoff_t;
 | |
| typedef int peekseg_t;
 | |
| typedef unsigned port_t;
 | |
| typedef int reg_pt;
 | |
| typedef unsigned char reg_t;
 | |
| typedef unsigned segment_t;
 | |
| typedef long soffset_t;
 | |
| typedef int su8_pt;
 | |
| typedef int su16_t;
 | |
| typedef unsigned u4_pt;		/* promote to unsigned and not int */
 | |
| typedef unsigned u8_pt;
 | |
| typedef unsigned u16_pt;
 | |
| 
 | |
| struct address_s
 | |
| {
 | |
|     offset_t off;
 | |
|     offset_t base;
 | |
| };
 | |
| 
 | |
| struct desctableptr_s {
 | |
|   u16_t limit;
 | |
|   u32_t base;			/* really u24_t + pad for 286 */
 | |
| };
 | |
| 
 | |
| struct regs_s
 | |
| {
 | |
|     offset_t ax;
 | |
|     offset_t bx;
 | |
|     offset_t cx;
 | |
|     offset_t dx;
 | |
|     offset_t si;
 | |
|     offset_t di;
 | |
|     offset_t bp;
 | |
|     offset_t sp;
 | |
|     offset_t dsbase;
 | |
|     offset_t esbase;
 | |
|     offset_t fsbase;
 | |
|     offset_t gsbase;
 | |
|     offset_t ssbase;
 | |
|     offset_t csbase;
 | |
|     offset_t ip;
 | |
|     flags_t f;
 | |
|     offset_t ds;
 | |
|     offset_t es;
 | |
|     offset_t fs;
 | |
|     offset_t gs;
 | |
|     offset_t ss;
 | |
|     offset_t cs;
 | |
| };
 | |
| 
 | |
| struct specregs_s
 | |
| {
 | |
|     u32_t cr0;			/* control regs, cr0 is msw + pad for 286 */
 | |
|     u32_t cr2;
 | |
|     u32_t cr3;
 | |
|     u32_t dr0;			/* debug regs */
 | |
|     u32_t dr1;
 | |
|     u32_t dr2;
 | |
|     u32_t dr3;
 | |
|     u32_t dr6;
 | |
|     u32_t dr7;
 | |
|     u32_t tr6;			/* test regs */
 | |
|     u32_t tr7;
 | |
|     u16_t gdtlimit;
 | |
|     u32_t gdtbase;		/* depend on 16-bit compiler so no long align */
 | |
|     u16_t gdtpad;
 | |
|     u16_t idtlimit;
 | |
|     u32_t idtbase;
 | |
|     u16_t idtpad;
 | |
|     u16_t ldtlimit;
 | |
|     u32_t ldtbase;
 | |
|     u16_t ldt;
 | |
|     u16_t tr;			/* task register */
 | |
|     u16_t trpad;
 | |
| };
 | |
| 
 | |
| /* prototypes */
 | |
| 
 | |
| #if __STDC__
 | |
| #define P(x)		x
 | |
| #else
 | |
| #define P(x)		()
 | |
| #endif
 | |
| 
 | |
| /* library, very few! */
 | |
| void *memcpy P((void *dst, const void *src, unsigned size));
 | |
| void *memmove P((void *dst, const void *src, unsigned size));
 | |
| unsigned strlen P((const char *s));
 | |
| char *strncpy P((char *dst, const char *src, unsigned size));
 | |
| 
 | |
| /* db.c */
 | |
| void db_main P((void));
 | |
| void get_kbd_state P(());
 | |
| void get_scr_state P(());
 | |
| void info P((void));
 | |
| void reboot P((void));
 | |
| void reset_kbd_state P(());
 | |
| 
 | |
| /* getline.c */
 | |
| char *getline P((char *startline, unsigned maxlength, unsigned offset));
 | |
| 
 | |
| /* ihexload.c */
 | |
| void ihexload P((void));
 | |
| 
 | |
| /* io.c */
 | |
| void can_itty P((void));
 | |
| void can_keyboard P((void));
 | |
| void can_otty P((void));
 | |
| void can_screen P((void));
 | |
| void closeio P((void));
 | |
| void closestring P((void));
 | |
| void enab_itty P((void));
 | |
| void enab_keyboard P((void));
 | |
| void enab_otty P((void));
 | |
| void enab_screen P((void));
 | |
| void flipcase P((void));
 | |
| u8_pt get8 P((void));
 | |
| u16_pt get16 P((void));
 | |
| u32_t get32 P((void));
 | |
| char16_t inchar P((void));
 | |
| char_pt mytolower P((char_pt ch));
 | |
| void openio P((void));
 | |
| void openstring P((char *string, int length));
 | |
| void outbyte P((char_pt byte));
 | |
| void outcomma P((void));
 | |
| void outh4 P((u4_pt num));
 | |
| void outh8 P((u8_pt num));
 | |
| void outh16 P((u16_pt num));
 | |
| void outh32 P((u32_t num));
 | |
| bool_pt outnl P((void));
 | |
| count_t outsegaddr P((struct address_s *ap, offset_t addr));
 | |
| count_t outsegreg P((offset_t num));
 | |
| void outspace P((void));
 | |
| void outstr P((char *s));
 | |
| void outtab P((void));
 | |
| void outustr P((char *s));
 | |
| void set_tty P((void));
 | |
| void show_db_screen P((void));
 | |
| void show_user_screen P((void));
 | |
| count_t stringpos P((void));
 | |
| count_t stringtab P((void));
 | |
| char_pt testchar P((void));
 | |
| 
 | |
| /* lib88.s */
 | |
| int get_privilege P((void));
 | |
| unsigned get_processor P((void));
 | |
| unsigned in16portb P((port_t port));
 | |
| physoff_t linear2addr P((segment_t segment, u16_pt offset));
 | |
| void oportb P((port_t port, u8_pt value));
 | |
| u8_pt peek_byte P((physoff_t offset));
 | |
| u16_pt peek_word P((physoff_t offset));
 | |
| u32_t peek_dword P((physoff_t offset));
 | |
| void poke_byte P((physoff_t offset, u8_pt value));
 | |
| void poke_word P((physoff_t offset, u16_pt value));
 | |
| #ifdef N_TEXT
 | |
| void symswap P((struct nlist *left, struct nlist *right,
 | |
| 		 segment_t tableseg, unsigned length));
 | |
| #endif
 | |
| 
 | |
| /* pcio.c */
 | |
| void kbdclose P((void));
 | |
| char_pt kbdin P((void));
 | |
| void kbdioctl P((int command));
 | |
| void kbdopen P((void));
 | |
| void kbdout P((int c));
 | |
| 
 | |
| /* screen.s */
 | |
| void scrclose P((void));
 | |
| void scrioctl P((int command));
 | |
| char_pt scrin P((void));
 | |
| void scropen P((void));
 | |
| void scrout P((char_pt c));
 | |
| 
 | |
| /* sym.c */
 | |
| #ifdef N_TEXT
 | |
| struct nlist *findsname P((char *name, int where, bool_pt allflag));
 | |
| struct nlist *findsval P((offset_t value, int where));
 | |
| struct nlist *findrval P((offset_t value, int where));
 | |
| void outsym P((struct nlist *sp, offset_t off));
 | |
| void outrel P((struct nlist *sp, offset_t off));
 | |
| #endif
 | |
| void setproc P((char_pt c, struct address_s *pdptr, struct address_s *pmptr));
 | |
| void syminit P((void));
 | |
| 
 | |
| /* tty.s */
 | |
| void ttyclose P((void));
 | |
| void ttyioctl P((int command));
 | |
| char_pt ttyin P((void));
 | |
| void ttyopen P((void));
 | |
| void ttyout P((char_pt c));
 | |
| 
 | |
| /* unasm.c */
 | |
| bool_pt puti P((void));
 | |
| 
 |