mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
409 lines
8.9 KiB
409 lines
8.9 KiB
/*
|
|
* VPC-XT Revision 1.0
|
|
*
|
|
* Title : BIOS definitions
|
|
*
|
|
* Description : Defintions for users of the BIOS
|
|
*
|
|
* Author : Henry Nash
|
|
*
|
|
* Notes : This is a copy of bios.h from henry/kernel taken on
|
|
* 17 dec 86. Several lines have been added to support
|
|
* the hard disk bios (marked HD-dr). See also bios.c.
|
|
*
|
|
* Mods: (r2.21): Added an external declaration of rom_basic().
|
|
*/
|
|
|
|
/* SccsID[]="@(#)bios.h 1.47 06/28/95 Copyright Insignia Solutions Ltd."; */
|
|
|
|
/*
|
|
* ============================================================================
|
|
* Structure/Data definitions
|
|
* ============================================================================
|
|
*/
|
|
|
|
/*
|
|
* The following define the BOP call numbers for the BIOS functions.
|
|
*/
|
|
|
|
#define BIOS_RESET 0x0
|
|
#define BIOS_DUMMY_INT 0x1
|
|
#define BIOS_UNEXP_INT 0x2
|
|
#define BIOS_DRIVER_INCOMPAT 0x7
|
|
#define BIOS_TIMER_INT 0x8
|
|
#define BIOS_KB_INT 0x9
|
|
#define BIOS_DISK_INT 0xD
|
|
#define BIOS_DISKETTE_INT 0xE
|
|
#define BIOS_PRINT_SCREEN 0x5
|
|
#define BIOS_VIDEO_IO 0x10
|
|
#define BIOS_EQUIPMENT 0x11
|
|
#define BIOS_MEMORY_SIZE 0x12
|
|
#define BIOS_DISK_IO 0x13
|
|
#define BIOS_RS232_IO 0x14
|
|
#define BIOS_CASSETTE_IO 0x15
|
|
#define BIOS_KEYBOARD_IO 0x16
|
|
#define BIOS_PRINTER_IO 0x17
|
|
#define BIOS_BASIC 0x18
|
|
#define BIOS_BOOT_STRAP 0x19
|
|
#define BIOS_TIME_OF_DAY 0x1A
|
|
#define BIOS_KEYBOARD_BREAK 0x1B
|
|
#define BIOS_USER_TIMER_INT 0x1C
|
|
#define BIOS_EXTEND_CHAR 0x1F
|
|
#define BIOS_DISKETTE_IO 0x40
|
|
#define EGA_FONT_INT 0x43 /* Pointer for the EGA graphics font */
|
|
|
|
/*
|
|
* Private bootstrap functions
|
|
*/
|
|
|
|
#define BIOS_BOOTSTRAP_1 0x90
|
|
#define BIOS_BOOTSTRAP_2 0x91
|
|
#define BIOS_BOOTSTRAP_3 0x92
|
|
|
|
/*
|
|
* Private diskette functions
|
|
*/
|
|
|
|
#define BIOS_FL_OPERATION_1 0xA0
|
|
#define BIOS_FL_OPERATION_2 0xA1
|
|
#define BIOS_FL_OPERATION_3 0xA2
|
|
#define BIOS_FL_RESET_2 0xA3
|
|
|
|
/*
|
|
* Private hard disk function
|
|
*/
|
|
|
|
#define BIOS_HDA_COMMAND_CHECK 0xB0
|
|
|
|
/*
|
|
* Mouse driver functions
|
|
*/
|
|
|
|
#define BIOS_MOUSE_INSTALL1 0xB8
|
|
#define BIOS_MOUSE_INSTALL2 0xB9
|
|
#define BIOS_MOUSE_INT1 0xBA
|
|
#define BIOS_MOUSE_INT2 0xBB
|
|
#define BIOS_MOUSE_IO_LANGUAGE 0xBC
|
|
#define BIOS_MOUSE_IO_INTERRUPT 0xBD
|
|
#define BIOS_MOUSE_VIDEO_IO 0xBE
|
|
|
|
/*
|
|
* Get date function
|
|
*/
|
|
|
|
#define BIOS_GETDATE 0xBF
|
|
|
|
/*
|
|
* Re-entrant CPU return function
|
|
*/
|
|
|
|
#define BIOS_CPU_RETURN 0xFE
|
|
|
|
/*
|
|
* The following defines the structure of the Bios internal storage area.
|
|
*/
|
|
|
|
#define BIOS_VAR_SEGMENT 0x40
|
|
#define BIOS_VAR_START ((sys_addr)BIOS_VAR_SEGMENT * 16L)
|
|
|
|
/*
|
|
* Address of memory size bios word variable.
|
|
*/
|
|
|
|
#define MEMORY_VAR (BIOS_VAR_START + 0x13)
|
|
|
|
/*
|
|
* The Bios FDC result data storage area
|
|
*/
|
|
|
|
#define BIOS_FDC_STATUS_BLOCK BIOS_VAR_START + 0x42
|
|
|
|
/*
|
|
* The BIOS hard disk data area. These variables are updated to their correct
|
|
* values before every exit from disk_io.c/disk.c to the cpu.
|
|
*/
|
|
|
|
#define CMD_BLOCK BIOS_VAR_START + 0x42
|
|
|
|
/*
|
|
* The Bios Reset Flag
|
|
*/
|
|
|
|
#define RESET_FLAG BIOS_VAR_START + 0x72
|
|
|
|
#define DISK_STATUS BIOS_VAR_START + 0x74
|
|
#define HF_NUM BIOS_VAR_START + 0x75
|
|
#define CONTROL_BYTE BIOS_VAR_START + 0x76
|
|
#define PORT_OFF BIOS_VAR_START + 0x77
|
|
|
|
/*
|
|
* Bios Buffer space
|
|
*/
|
|
|
|
typedef union {
|
|
word wd;
|
|
struct {
|
|
half_word scan;
|
|
half_word ch;
|
|
} byte;
|
|
} KEY_OCCURRENCE;
|
|
|
|
#define BIOS_KB_BUFFER_START (BIOS_VAR_START + 0x80)
|
|
#define BIOS_KB_BUFFER_END (BIOS_VAR_START + 0x82)
|
|
#define BIOS_KB_BUFFER_HEAD (BIOS_VAR_START + 0x1a)
|
|
#define BIOS_KB_BUFFER_TAIL (BIOS_VAR_START + 0x1c)
|
|
#define BIOS_KB_BUFFER 0x1e
|
|
#define BIOS_KB_BUFFER_SIZE 16
|
|
|
|
#define BIOS_VIRTUALISING_BYTE (BIOS_VAR_START + 0xAC)
|
|
|
|
#define SOFT_FLAG 0x1234 /* value indicating a soft reset */
|
|
|
|
/*
|
|
* The number of diskettes supported by the Bios
|
|
*/
|
|
|
|
#define MAX_DISKETTES 4
|
|
|
|
|
|
#define MODEL_BYTE 0xfc /* system model byte */
|
|
#define SUB_MODEL_BYTE 02 /* system sub model type byte */
|
|
#define BIOS_LEVEL 0 /* BIOS revision level */
|
|
|
|
/*
|
|
* ============================================================================
|
|
* External declarations and macros
|
|
* ============================================================================
|
|
*/
|
|
|
|
extern void (*BIOS[])();
|
|
|
|
#ifndef bop
|
|
#define bop(n) (*BIOS[n])()
|
|
#endif /* bop */
|
|
|
|
#ifdef PTY
|
|
extern void com_bop_pty();
|
|
#endif
|
|
|
|
#ifdef GEN_DRVR
|
|
extern void gen_driver_io();
|
|
#endif
|
|
|
|
#ifdef LIM
|
|
extern void emm_init();
|
|
extern void emm_io();
|
|
extern void return_from_call();
|
|
#endif
|
|
|
|
#ifdef SUSPEND
|
|
extern void send_script();
|
|
#endif
|
|
|
|
#ifdef CDROM
|
|
extern void cdrom_ord_fns();
|
|
extern void cdrom_ext_fns();
|
|
extern void bcdrom_io();
|
|
#endif /* CDROM */
|
|
|
|
extern void worm_init();
|
|
extern void worm_io();
|
|
|
|
extern void cmd_install();
|
|
extern void cmd_load();
|
|
|
|
#ifdef DPMI
|
|
extern void DPMI_2F();
|
|
extern void DPMI_31();
|
|
extern void DPMI_general();
|
|
extern void DPMI_int();
|
|
extern void DPMI_r0_int();
|
|
extern void DPMI_exc();
|
|
extern void DPMI_4B();
|
|
#endif
|
|
|
|
extern void reset();
|
|
extern void illegal_bop();
|
|
extern void illegal_op_int();
|
|
extern void illegal_dvr_bop();
|
|
extern void video_io();
|
|
extern void equipment();
|
|
extern void memory_size();
|
|
extern void diskette_io();
|
|
extern void diskette_int();
|
|
extern void disk_int();
|
|
extern void not_supported();
|
|
extern void rom_basic();
|
|
extern void keyboard_io();
|
|
extern void keyboard_int();
|
|
extern void printer_io();
|
|
extern void bootstrap();
|
|
extern void time_of_day();
|
|
extern void kb_idle_poll();
|
|
extern void time_int();
|
|
extern void disk_io();
|
|
extern void print_screen();
|
|
extern void rs232_io();
|
|
extern void dummy_int();
|
|
extern void unexpected_int();
|
|
extern void Get_build_id();
|
|
|
|
#ifdef WIN_VTD
|
|
extern void VtdTickSync IPT0();
|
|
#endif /* WIN_VTD */
|
|
|
|
#ifdef EGG
|
|
extern void ega_video_io();
|
|
#endif
|
|
|
|
extern void re_direct();
|
|
extern void D11_int();
|
|
extern void int_287();
|
|
|
|
extern void mouse_install1();
|
|
extern void mouse_install2();
|
|
extern void mouse_int1();
|
|
extern void mouse_int2();
|
|
extern void mouse_io_interrupt();
|
|
extern void mouse_io_language();
|
|
extern void mouse_video_io();
|
|
extern void mouse_EM_callback();
|
|
|
|
extern void host_mouse_install1();
|
|
extern void host_mouse_install2();
|
|
|
|
extern void time_of_day_init();
|
|
extern void keyboard_init();
|
|
|
|
extern void cassette_io();
|
|
|
|
extern void fl_operation1();
|
|
extern void fl_operation2();
|
|
extern void fl_operation3();
|
|
extern void fl_reset2();
|
|
extern void fl_dummy();
|
|
|
|
extern void hda_command_check(); /* HD-dr */
|
|
|
|
extern void host_unsimulate();
|
|
|
|
extern void bootstrap1();
|
|
extern void bootstrap2();
|
|
extern void bootstrap3();
|
|
|
|
#ifdef NOVELL
|
|
extern void DriverInitialize();
|
|
extern void DriverReadPacket();
|
|
extern void DriverSendPacket();
|
|
extern void DriverMulticastChange();
|
|
extern void DriverCloseSocket();
|
|
extern void DriverReset();
|
|
extern void DriverShutdown();
|
|
extern void DriverAddProtocol();
|
|
extern void DriverChangePromiscuous() ;
|
|
extern void DriverOpenSocket() ;
|
|
extern void DriverCloseSocket() ;
|
|
#ifdef NOVELL_CFM
|
|
extern void DriverCheckForMore() ;
|
|
#endif
|
|
#ifdef V4CLIENT
|
|
extern void DriverChangeIntStatus() ;
|
|
#endif /* V4CLIENT */
|
|
#endif
|
|
|
|
#ifdef MSWDVR
|
|
extern void ms_windows();
|
|
extern void msw_mouse();
|
|
extern void msw_copy();
|
|
extern void msw_copyInit();
|
|
extern void msw_keybd();
|
|
#endif
|
|
|
|
#ifdef NOVELL_IPX
|
|
extern void IPXResInit ();
|
|
extern void IPXResEntry ();
|
|
extern void IPXResInterrupt ();
|
|
#endif
|
|
|
|
#ifdef NOVELL_TCPIP
|
|
extern void TCPResInit ();
|
|
extern void TCPResEntry ();
|
|
#endif
|
|
|
|
#ifdef WINSOCK
|
|
extern void ISWSEntry();
|
|
#endif /* WINSOCK */
|
|
|
|
#ifdef SWINAPI
|
|
extern void User_call IPT0();
|
|
extern void Gdi_call IPT0();
|
|
extern void Swinapi_bop IPT0();
|
|
#endif /* SWINAPI */
|
|
|
|
#if defined(SOFTWIN_API) || defined(SWIN_HFX)
|
|
extern void SoftWindowsInit IPT0();
|
|
extern void SoftWindowsTerm IPT0();
|
|
#endif /* SOFTWIN_API or SWIN_HFX */
|
|
|
|
#if defined(SOFTWIN_API)
|
|
extern void SoftWindowsApi IPT0();
|
|
#endif /* SOFTWIN_API */
|
|
|
|
#ifdef SWIN_HAW
|
|
extern void msw_sound IPT0();
|
|
#endif /* SWIN_HAW */
|
|
|
|
#ifdef ANSI
|
|
extern void host_reset(void);
|
|
#ifndef NTVDM
|
|
extern void reboot(void);
|
|
#endif /* ! NTVDM */
|
|
extern void display_string(char *);
|
|
extern void clear_string(void);
|
|
#else
|
|
extern void host_reset();
|
|
#ifndef NTVDM
|
|
extern void reboot();
|
|
#endif /* ! NTVDM */
|
|
extern void display_string();
|
|
extern void clear_string();
|
|
#endif /* ANSI */
|
|
|
|
#ifdef ANSI
|
|
extern void smeg_collect_data(void);
|
|
extern void smeg_freeze_data(void);
|
|
#else
|
|
extern void smeg_collect_data();
|
|
extern void smeg_freeze_data();
|
|
#endif /* ANSI */
|
|
|
|
extern void softpc_version IPT0();
|
|
|
|
#ifdef NTVDM
|
|
/* MS bop stubs */
|
|
extern void MS_bop_0(void), MS_bop_1(void), MS_bop_2(void);
|
|
extern void MS_bop_3(void), MS_bop_4(void), MS_bop_5(void);
|
|
extern void MS_bop_6(void), MS_bop_7(void), MS_bop_8(void);
|
|
extern void MS_bop_9(void), MS_bop_A(void), MS_bop_B(void);
|
|
extern void MS_bop_C(void), MS_bop_D(void), MS_bop_E(void);
|
|
extern void MS_bop_F(void);
|
|
extern void switch_to_real_mode(void);
|
|
#endif /* NTVDM */
|
|
|
|
#ifdef GISP_CPU
|
|
extern void hg_bop_handler IPT0();
|
|
#endif /* GISP_CPU */
|
|
|
|
#ifdef HFX
|
|
extern void test_for_us IPT0();
|
|
#endif /* HFX */
|
|
|
|
#ifdef DOS_APP_LIC
|
|
extern void DOS_AppLicense IPT0();
|
|
#endif
|
|
|
|
IMPORT int soft_reset;
|
|
|
|
#if defined(SPC386) && defined(WDCTRL_BOP)
|
|
extern void wdctrl_bop IPT0();
|
|
#endif /* SPC386 && WDCTRL_BOP */
|