This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/BIOS.H

157 lines
3.6 KiB
C++
Raw Permalink Normal View History

/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
#if __SC__ || __RCC__
#pragma once
#endif
#ifndef __BIOS_H
#define __BIOS_H 1
#ifndef __NT__
#if __cplusplus
extern "C" {
#endif
#define _KEYBRD_READ 0
#define _KEYBRD_READY 1
#define _KEYBRD_SHIFTSTATUS 2
#define _NKEYBRD_READ 0x10
#define _NKEYBRD_READY 0x11
#define _NKEYBRD_SHIFTSTATUS 0x12
#ifndef _WINDOWS
unsigned short __cdecl _bios_keybrd(unsigned);
unsigned short __cdecl bioskey(int);
#endif
#if M_UNIX || M_XENIX
void __cdecl _bios_keybrd_close(void);
int __cdecl _bios_keybrd_open(void);
#else /* M_UNIX || M_XENIX */
#pragma pack(1)
struct diskinfo_t {
unsigned drive;
unsigned head;
unsigned track;
unsigned sector;
unsigned nsectors;
void __far *buffer;
};
#define _diskinfo_t diskinfo_t
#pragma pack()
#define _COM_INIT 0
#define _COM_SEND 1
#define _COM_RECEIVE 2
#define _COM_STATUS 3
#define _COM_CHR7 2
#define _COM_CHR8 3
#define _COM_STOP1 0
#define _COM_STOP2 4
#define _COM_NOPARITY 0
#define _COM_ODDPARITY 8
#define _COM_EVENPARITY 24
#define _COM_110 0
#define _COM_150 32
#define _COM_300 64
#define _COM_600 96
#define _COM_1200 128
#define _COM_2400 160
#define _COM_4800 192
#define _COM_9600 224
#define _DISK_RESET 0
#define _DISK_STATUS 1
#define _DISK_READ 2
#define _DISK_WRITE 3
#define _DISK_VERIFY 4
#define _DISK_FORMAT 5
#define _PRINTER_WRITE 0
#define _PRINTER_INIT 1
#define _PRINTER_STATUS 2
#define _TIME_GETCLOCK 0
#define _TIME_SETCLOCK 1
unsigned __cdecl _bios_equiplist(void);
unsigned __cdecl _bios_memsize(void);
#ifndef _WINDOWS
unsigned __cdecl _bios_printer(unsigned, unsigned, unsigned);
#define biosprint(cmd,abyte,port) _bios_printer(cmd,port,abyte)
unsigned __cdecl _bios_serialcom(unsigned, unsigned, unsigned);
#define bioscom _bios_serialcom
#endif
unsigned __cdecl _bios_timeofday(unsigned, long *);
long __cdecl biostime(int , long);
#ifndef DOS386
unsigned __cdecl _bios_disk(unsigned, struct diskinfo_t *);
int __cdecl biosdisk(int, int, int, int, int, int, void *);
#endif /* DOS386 */
#define biosmemory() _bios_memsize()
#define biosequip() _bios_equiplist()
#endif /* M_UNIX || M_XENIX */
#ifndef __REGS_DEFINED
#define __REGS_DEFINED
#ifndef __NT__
#if __INTSIZE == 4
#pragma pack(1)
struct _DWORDREGS
{ unsigned eax,ebx,ecx,edx,esi,edi,cflag,flags;
};
#define DWORDREGS _DWORDREGS
struct _WORDREGS
{ unsigned short ax,eaxmsw,bx,ebxmsw,cx,ecxmsw,dx,edxmsw,
si,esimsw,di,edimsw;
unsigned cflag,flags;
};
#define WORDREGS _WORDREGS
struct _BYTEREGS
{ unsigned char al,ah,ax2,ax3,bl,bh,bx2,bx3,
cl,ch,cx2,cx3,dl,dh,dx2,dx3;
};
#define BYTEREGS _BYTEREGS
union _REGS { struct _DWORDREGS e; struct _WORDREGS x; struct _BYTEREGS h; };
#define REGS _REGS
struct _SREGS { unsigned short es,cs,ss,ds,fs,gs; };
#define SREGS _SREGS
#pragma pack()
#else /* __INTSIZE == 4 */
#pragma pack(1)
struct WORDREGS { unsigned ax,bx,cx,dx,si,di,cflag,flags; };
struct BYTEREGS {unsigned char al,ah,bl,bh,cl,ch,dl,dh; };
union REGS { struct WORDREGS x; struct BYTEREGS h; };
struct SREGS { unsigned es,cs,ss,ds; };
#pragma pack()
#define _REGS REGS
#define _SREGS SREGS
#define _WORDREGS WORDREGS
#define _BYTEREGS BYTEREGS
#endif /* __INTSIZE == 4 */
#endif /* __NT__ */
#endif /* __REGS_DEFINED */
int __cdecl int86(int,union REGS *,union REGS *);
int __cdecl int86x(int,union REGS *,union REGS *,struct SREGS *);
#define _int86 int86
#define _int86x int86x
#if __cplusplus
}
#endif
#endif /* __NT__ */
#endif