home *** CD-ROM | disk | FTP | other *** search
- {
- ══════════════════════════════════════════════════════════════════════════════
-
- 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;
-
- {──────────────────────────────────────────────────────────────────────────────}
-
-