home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
pascal
/
vdl020d.zip
/
VBIOS.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
15KB
|
486 lines
{
══════════════════════════════════════════════════════════════════════════════
Visionix BIOS Unit (VBIOS)
Copyright 1991,92,93 Visionix
ALL RIGHTS RESERVED
──────────────────────────────────────────────────────────────────────────────
Revision history in reverse chronological order:
Initials Date Comment
──────── ──────── ──────────────────────────────────────────────────────────
mep 02/13/93 Added various tables
mep 02/11/93 Cleaned up code for beta release
jrt 02/08/93 Sync with beta 0.12 release
jrt 12/07/92 Sync with beta 0.11 release
jrt 11/25/92 Created
──────────────────────────────────────────────────────────────────────────────
}
Unit VBIOS;
{──────────────────────────────────────────────────────────────────────────────}
{ Defination of abbreviated terms below:
Addr = Address
Alpha = Alphanumeric
Alt = Alternate
Attr = Attribute
Brdr = Border
Buf = Buffer
Cmd = Command
Col = Column
Com = Communications (serial)
Ctrl = Control
Curr = Current
DCC = Display Combination Code
Disp = Display
Dyn = Dynamic
Equip = Equipment on system
Err = Error
Ext = Extended
Gen = Generator
Grfx = Graphic
Idx = Index
Intr = Interrupt
Kbd = Keyboard
Lpt = Printer (parallel)
Mem = Memory
Ofs = Offset
Op = Operation
Pal = Palette
Param = Parameters
Prof = Profile
Ptr = Pointer
Reg = Register
Rsvp = Reserved for future use (unknown)
Sec = Secondary
Sect = Sector
Sel = Select
Stat = Status
Strt = Start
Trk = Track
Usr = User
VSPT = Video Save Pointer Table
Vid = Video
}
Type
TDiskAddrField = RECORD
Trk : BYTE;
Head : BYTE;
Sect : BYTE;
BytesPerSect : BYTE;
END;
{---}
TBiosMemMap = RECORD
ComAddr : Array[1..4] of WORD; {00}
LptAddr : Array[1..4] of WORD; {08}
Equip : WORD; {10}
Rsvp1 : BYTE; {12}
BaseMem : WORD; {13}
Rsvp2 : BYTE; {15}
Rsvp3 : BYTE; {16}
KbdFlag1 : BYTE; {17}
KbdFlag2 : BYTE; {18}
KbdAltKeypad : BYTE; {19}
KbdBufHead : WORD; {1A}
KbdBufTail : WORD; {1C}
KbdBuf : Array[1..16] of WORD; {1E}
DiskRecalStat : BYTE; {3E}
DiskMotorStat : BYTE; {3F}
DiskOffTimeout : BYTE; {40}
DiskLastOpStat : BYTE; {41}
DiskCmdStat : Array[1..7] of BYTE; {42}
VidCurrMode : BYTE; {49}
VidCurrCol : WORD; {4A}
VidPageSize : WORD; {4C}
VidCurrPageAddr : WORD; {4E}
VidCursorPos : Array[1..8] of WORD; {50}
VidCursorType : WORD; {60}
VidCurrPage : BYTE; {62}
VidCRTCtrlAddr : WORD; {63}
VidCurrModeSelReg : BYTE; {65}
VidCurrCGAPalReg : BYTE; {66}
PostRealModeAddr : POINTER; {67}
PostLastUnknownIntr : BYTE; {6B}
TimerTicksToday : LONGINT; {6C}
TimerOverflow : BOOLEAN; {70}
CtrlBreak : BYTE; {71}
PostReset : WORD; {72}
FixedDiskLastOp : BYTE; {74}
FixedDiskNumDrive : BYTE; {75}
FixedDiskCtrl : BYTE; {76}
FixedDiskIOPortOfs : BYTE; {77}
LptTimeout : Array[1..4] of BYTE; {78}
ComTimeout : Array[1..4] of BYTE; {7C}
KbdBufStartOfs : WORD; {80}
KbdBufEndOfs : WORD; {82}
VidVGACurrRow : BYTE; {84}
VidVGACharScanSize : WORD; {85}
VidVGACtrl : BYTE; {87}
VidVGASwitch : BYTE; {88}
VidVGAModeSetCtrl : BYTE; {89}
VidVGADCCBase : BYTE; {8A}
DiskMediaCtrl : BYTE; {8B}
FixedDiskCtrlStat : BYTE; {8C}
FixedDiskCtrlErrStat : BYTE; {8D}
FixedDiskIntrCtrl : BYTE; {8E}
DiskCtrlStat : BYTE; {8F}
Disk0MediaStat : BYTE; {90}
Disk1MediaStat : BYTE; {91}
Disk0MediaStrtOpStat : BYTE; {92}
Disk1MediaStrtOpStat : BYTE; {93}
Disk0MediaCurrTrk : BYTE; {94}
Disk1MediaCurrTrk : BYTE; {95}
KbdStat1 : BYTE; {96}
KbdStat2 : BYTE; {97}
TimerUsrWaitAddr : POINTER; {98}
TimerUsrWaitTimeout : LONGINT; {9C}
TimerWaitActiveStat : BYTE; {A0}
NetRsvp1 : Array[1..7] of BYTE; {A1}
VidVGAVSPTAddr : POINTER; {A8}
VidDynSaveAreaAddr : POINTER; {AC}
VidAlphaCharGenAddr : POINTER; {B0}
VidGrfxCharGenAddr : POINTER; {B4}
VidSecSaveAddr : POINTER; {B8}
Rsvp6 : Array[1..4] of BYTE; {BC}
Rsvp7 : Array[1..$E] of BYTE; {C0}
TimerDaysSinceBoot : WORD; {CE}
Rsvp8 : Array[1..$20] of BYTE; {D0}
UsrRsvp1 : Array[1..$10] of BYTE; {F0}
LptScrnStat : BYTE; {100}
END;
PBiosMemMap = ^TBiosMemMap;
{----}
TVidSavePtrTable = RECORD
VidParamTableAddr : POINTER;
ParamDynSaveAreaAddr : POINTER;
AlphaSetOverrideAddr : POINTER;
GrfxCharSetOverrideAddr : POINTER;
SecSavePtrTableAddr : POINTER;
Rsvp1 : LONGINT;
Rsvp2 : LONGINT;
END;
{----}
TSecVidSavePtrTable = RECORD
TableSize : WORD;
DCCTableAddr : POINTER;
SecAlphaSetOverrideAddr : POINTER;
UsrPalProfTableAddr : POINTER;
Rsvp1 : LONGINT;
Rsvp2 : LONGINT;
Rsvp3 : LONGINT;
END;
{----}
TEGAVGAVidParamElement = RECORD
CurrCol : BYTE;
CurrRow : BYTE;
CharScanSize : BYTE;
PageSize : WORD;
SequencerReg : Array[1..4] of BYTE;
MiscOutReg : BYTE;
CRTCReg : Array[0..$18] of BYTE;
AttrCtrlReg : Array[0..$13] of BYTE;
GrfxCtrlReg : Array[0..$8] of BYTE;
END;
TEGAVidParamTable = RECORD
VidMode : Array[0..$16] of TEGAVGAVidParamElement;
END;
TVGAVidParamTable = RECORD
VidMode : Array[0..$1C] of TEGAVGAVidParamElement;
END;
{----}
TMCGAVidParamElement = RECORD
CurrCol : BYTE;
CurrRow : BYTE;
CharScanSize : BYTE;
PageSize : WORD;
Rsvp1 : BYTE;
Port3D5VidDataReg : Array[0..$14] of BYTE;
Port3C6PELMask : BYTE;
Port3D8CGAModeCtrl : BYTE;
Port3D9CGABrdrCtrl : BYTE;
Port3DDExtModeCtrl : BYTE;
END;
TMCGAVidParamTable = RECORD
RGB_DACInfo : Array[1..$F, 1..3] of BYTE;
VidMode : Array[0..10] of TMCGAVidParamElement;
END;
{----}
TParamDynSaveArea = RECORD
LastAttrCtrlPalReg : Array[0..$F] of BYTE;
LastAttrCtrlOverscanReg : BYTE;
Rsvp1 : Array[$11..$FF] of BYTE;
END;
{----}
TAlphaSetOverride = RECORD
FontTableCharSize : BYTE;
CharGenRAMBank : BYTE;
NumFontTableChars : WORD;
FontTableCharCode : WORD;
FontTableAddr : POINTER;
DispRows : BYTE;
FontModes : Array[1..1] of BYTE; { !^! Needs to be a link-list }
EOFontModes : BYTE; { ends with an $FF }
END;
{----}
TSecAlphaSetOverride = RECORD
FontTableCharSize : BYTE;
CharGenRAMBank : BYTE;
Rsvp1 : BYTE;
FontTableAddr : POINTER;
FontModes : Array[1..1] of BYTE; { !^! Needs to be a link-list }
EOFontModes : BYTE; { !^! ends with an $FF }
END;
{----}
TGrfxCharSetOverride = RECORD
DispRows : BYTE;
FontTableCharSize : BYTE;
FontTableAddr : POINTER;
FontModes : Array[1..1] of BYTE; { !^! Needs to be a link-list }
EOFontModes : BYTE; { !^! ends with an $FF }
END;
{----}
TDCCEntry = RECORD
Case Boolean of
TRUE : ( DC : WORD );
FALSE : ( Hi,
Lo : BYTE );
End;
TDCCTable = RECORD { Display Combination Code Table }
NumEntries : BYTE;
Version : BYTE;
MaxDispTypeCode : BYTE;
Rsvp1 : BYTE;
{!^! List list? or 2 entries?}
DispComb : Array[1..1] of TDCCEntry;
END;
{----}
TUsrPalProfTable = RECORD
Global : BYTE;
Rsvp1 : BYTE;
Rsvp2 : WORD;
NumAttrCtrlReg : WORD;
AttrCtrlRegIdx : WORD;
AttrCtrlRegAddr : POINTER;
NumDACColorReg : WORD;
DACColorRegIdx : WORD;
DACColorRegAddr : POINTER;
ProfModes : Array[1..1] of BYTE; { !^! Needs to be a link-list }
EOProfModes : BYTE; { !^! ends with an $FF }
END;
{----}
TCharPixelMap = Array[0..7] of BYTE;
PCharPixelMap = ^TCharPixelMap;
{----}
Var
BIOSMemMap : PBIOSMemMap;
{──────────────────────────────────────────────────────────────────────────────}
{-----------------}
{ Keyboard Status }
{-----------------}
Function IsAltPressed : BOOLEAN;
Function IsLeftAltPressed : BOOLEAN;
Function IsRightAltPressed : BOOLEAN;
Function IsCtrlPressed : BOOLEAN;
Function IsLeftCtrlPressed : BOOLEAN;
Function IsRightCtrlPressed : BOOLEAN;
Function IsShiftPressed : BOOLEAN;
Function IsLeftShiftPressed : BOOLEAN;
Function IsRightShiftPressed : BOOLEAN;
Function IsInsertPressed : BOOLEAN;
Function IsInsertActive : BOOLEAN;
Function IsCapsLockPressed : BOOLEAN;
Function IsCapsLockActive : BOOLEAN;
Function IsNumLockPressed : BOOLEAN;
Function IsNumLockActive : BOOLEAN;
Function IsScrollLockPressed : BOOLEAN;
Function IsScrollLockActive : BOOLEAN;
Function IsPauseStateActive : BOOLEAN;
Function IsSysReqPressed : BOOLEAN;
Procedure ToggleCapsLock( OnOff : BOOLEAN );
Procedure ToggleInsert( OnOff : BOOLEAN );
Procedure ToggleNumLock( OnOff : BOOLEAN );
Procedure ToggleScrollLock( OnOff : BOOLEAN );
Function PrevReadKey : WORD;
{──────────────────────────────────────────────────────────────────────────────}
Function V13ResetDiskSystem( DriveNum : BYTE ) : BYTE;
Function V13ReadDiskStatus( DriveNum : BYTE ) : BYTE;
Function V13ReadDiskSectors( DriveNum : BYTE;
NumSectors : BYTE;
Track : BYTE;
Sector : BYTE;
Head : BYTE;
Buff : POINTER ) : WORD;
Function V13WriteDiskSectors( DriveNum : BYTE;
NumSectors : BYTE;
Track : BYTE;
Sector : BYTE;
Head : BYTE;
Buff : POINTER ) : WORD;
Function V13VerifyDiskSectors( DriveNum : BYTE;
NumSectors : BYTE;
Track : BYTE;
Sector : BYTE;
Head : BYTE;
Buff : POINTER ) : WORD;
Function V13FormatDiskTrack( DriveNum : BYTE;
Head : BYTE;
Track : BYTE;
AddrFieldBuff : POINTER ) : WORD;
Function V13ReadDiskParams( DriveNum : BYTE;
Var DriveType : BYTE;
Var MaxTrack : BYTE;
Var MaxSector : BYTE;
Var MaxHead : BYTE;
Var NumDrives : BYTE;
MaxDPT : POINTER ) : BYTE;
Function V13REadDriveType( DriveNum : BYTE ) : WORD;
Function V13DetectMediaChange( DriveNum : BYTE ) : WORD;
Function V13SetDiskType( DiskType : BYTE ) : WORD;
Function V13SetMediaType( DriveNum : BYTE;
MaxTracks : BYTE;
MaxSPT : BYTE;
DPT : POINTER ) : WORD;
Function V16ReadKeyboardInput : WORD;
Function V16ReadKeyboardStatus : WORD;
Function V16ReadShiftStatus : WORD;
Procedure V16SetTypematicParams( Rate : BYTE;
Delay : BYTE );
Procedure V16WriteKeyboardInput( ScanCode : BYTE;
ASCIIChar : BYTE );
Function V16ReadExtKeyboardInput : WORD;
Function V16ReadExtKeyboardStatus : WORD;
Function V16ReadExtShiftStatus : WORD;
Function GetCGAPixelMap( Ch : CHAR ) : PCharPixelMap;
{──────────────────────────────────────────────────────────────────────────────}