Leaked source code of windows server 2003
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.
|
|
;++ ; ; Module name ; ; su.inc ; ; Author ; ; Thomas Parslow (tomp) Mar-1-90 ; ; Description ; ; Include file for SU.ASM. ; ; ;--
.386
PAGE_SIZE equ 1000h MACHINE_TYPE_ISA equ 0 MACHINE_TYPE_EISA equ 1 MACHINE_TYPE_MCA equ 2
; ; Define the segment:offset address pair of the location to ; load detection module. ; N.B. This definition *MUST* be the same as the ones defined ; in ..\constant.h ;
DETECTION_ADDRESS_SEG equ 1000h DETECTION_ADDRESS_OFFSET equ 0
; ; Structure definitions and equates for INT 15 function E820 ;
E820Frame struc ErrorFlag dd ? Key dd ? DescSize dd ?
BaseAddrLow dd ? BaseAddrHigh dd ? SizeLow dd ? SizeHigh dd ? MemoryType dd ? E820Frame ends
MemoryDescriptorFramePointer struc E820FramePointer dd ? MemoryDescriptorFramePointer ends
;
BIOS_DISK_INTERRUPT equ 13h BIOS_READ_SECTOR equ 2 IDT_ENTRIES equ 100h
BIOS_KEYBOARD_INTERRUPT equ 16h
EXPORT_STACK equ 07ffeh RE_ENABLING equ 1 LOADER_STACK equ 061ffch
CR0_ET equ 10h
; ; Trap Number macro save eax on the stack and then pushes the ; number of the trap that's in progress. ;
TRAP_NUMBER macro num,addr IF num EQ 9 push eax ; push place holder for error code ENDIF IF num LE 7 push eax ; push place holder for error code ENDIF push eax ; save eax on stack first mov eax,num push eax jmp addr endm
;; ; ; GetSector Stack Frame Structure ; ; Stack frame definition for GetSector call from OS loader ; to 16bit routines. ; ;;
GetSectorFrame struc FunctionNumber dd ? DriveNumber dd ? HeadNumber dd ? TrackNumber dd ? SectorNumber dd ? NumberOfSectors dd ? BufferPointer dd ? GetSectorFrame ends
;; ; ; GetEddsSector Stack Frame Structure ; ; Stack frame definition for GetEddsSector call from OS loader ; to 16bit routines. ; ;;
GetEddsSectorFrame struc DriveNum dd ? LBNLow dd ? LBNHigh dd ? NumberOfBlocks dd ? BufPointer dd ? FunctionNum dd ? GetEddsSectorFrame ends
RebootFrame struc BootType dd ? RebootFrame ends
; ; ABIOS services Stack Frame Structure ; ; Stack frame definition for ABIOS services call from OS loader ; to 16 bit routine. ;
AbiosServicesFrame struc AbiosFunction dd ? CommonDataArea dd ? InitTable dd ? RamExtension dd ? AbiosRoutine dd ? LogicalId dd ? NumberLids dd ? AbiosServicesFrame ends
; ; Hardware detection frame structure ; ; Stack frame definition for DetectHardware call from OS loader ; to 16 bit routine. ;
DetectionFrame struc HeapStart dd ? HeapSize dd ? ConfigTree dd ? HeapUsed dd ? LoadOptions dd ? OptionsLength dd ? DetectionFrame ends
; ; HardwareCursor Stack Frame Structure ; ; Stack frame definition for HardwareCursor call from OS loader ; to 16 bit routine. ;
HardwareCursorFrame struc XCoord dd ? YCoord dd ? HardwareCursorFrame ends
; ; GetDateTime Stack Frame Structure ; ; Stack frame definition for GetDateTime call from OS loader ; to 16 bit routine. ;
GetDateTimeFrame struc DateDword dd ? TimeDword dd ? GetDateTimeFrame ends
; ; ComPort Stack Frame Structure ; ; Stack frame definition for ComPort call from OS loader ; to 16 bit routine. ;
ComPortFrame struc ComPortPort dd ? ComPortFunction dd ? ComPortArg dd ? ComPortFrame ends
; ; IsMcaMachine Stack Frame Structure ; ; Stack frame definition for IsMcaMachine call from OS loader ; to 16 bit routine. ;
IsMcaMachineFrame struc Dummy dd ? IsMcaMachineFrame ends
;; ; ; GetElToritoStatus Stack Frame Structure ; ; Stack frame definition for GetElToritoStatus call from OS loader ; to 16bit routines. ; ;;
GetElToritoStatusFrame struc SpecPacketPointer dd ? ETDriveNum dd ? GetElToritoStatusFrame ends
;; ; ; GetExtendedInt13Params Stack Frame Structure ; ; Stack frame definition for GetExtendedInt13Params call from OS loader ; to 16bit routines. ; ;;
GetExtendedInt13ParamsFrame struc ParamPacketPointer dd ? Int13UnitNumber dd ? ; really only a byte >= 0x80 GetExtendedInt13ParamsFrame ends
;; ; ; Memory Descriptor Structure. ; ; Passed to OS loader as part of the boot context record ; ;;
MemoryDescriptor struc BlockBase dd ? BlockSize dd ? MemoryDescriptor ends
;; ; ; File System Context Record Structure ; ;;
FsContextRecord struc BootDrive db ? FsContextRecord ends
;; ; ; IDT Descriptor Structure ; ;;
TrapDesc struc IDT_offset dw ? IDT_selector dw ? IDT_attribute dw ? IDT_reserved dw ? TrapDesc ends
;; ; ; GDT Descriptor Structure ;; ; ;;
GDTDesc struc GDT_limit dw 0 GDT_base1 dw 0 GDT_base2 db 0 GDT_access db 0 GDT_limacc db 0 GDT_base3 db 0 GDTDesc ends
;; ; ; GDT Selector Definitions ; ;;
NULL_Selector equ 0h KeCodeSelector equ 8h KeDataSelector equ 10h UsCodeSelector equ 18h UsDataSelector equ 20h TSS_Selector equ 28h PCR_Selector equ 30h TEP_Selector equ 38h BDA_Selector equ 40h KeLdtSelector equ 48h DblFltTskSelector equ 50h SuCodeSelector equ 58h SuDataSelector equ 60h VideoSelector equ 68h GDT_AliasSelector equ 70h DbCodeSelector equ 78h DbDataSelector equ 80h DebugUseSelector equ 88h ReservedSelector equ 90h
;; ; ; Exception Frame Structure ; Note, this absolutely must match the corresponding structure ; defined in "types.h" ; ;;
ExceptionFrame struc Ftr dw 0 Fdr6 dd 0 Fcr0 dd 0 Fcr2 dd 0 Fcr3 dd 0 Fss dw 0 Fgs dw 0 Ffs dw 0 Fes dw 0 Fds dw 0 Fedi dd 0 Fesi dd 0 Febp dd 0 Fesp dd 0 Febx dd 0 Fedx dd 0 Fecx dd 0 TrapNum dd 0 Feax dd 0 Error dd 0 Feip dd 0 Fcs dd 0 Feflags dd 0 ExceptionFrame ends
FUNCTION_ERROR equ -1
;; ; ; Register Frame Structure ; ; For bios int calls ; ;;
reg_frame struc intnum dw ? sfg dw ? sax dw ? sbx dw ? scx dw ? sdx dw ? ssi dw ? ses dw ? reg_frame ends
;; ;; Processor Flags ;;
PROT_MODE equ 000000001 ; Enable protect mode operation ENABLE_PAGING equ 80000000h ; Enable paging hardware PD_PHYSICAL_ADDRESS equ 99000h TSS_SIZE equ 80h OVERRIDE equ 66h
; ; Operand and Address size overrides ;
OPSIZE macro db 66h endm ADSIZE macro db 67h endm
; ; External Procedures for SUDATA.ASM ;
IFDEF SU_CODEMODULE extrn _SuMain:near extrn _ScreenStart:near extrn _vp:near extrn _putx:near extrn _TrapHandler:near extrn _GDTregister:fword extrn _IDTregister:fword extrn _IDTregisterZero:fword extrn saveDS:word extrn SuStack:word extrn _edata:word extrn _FileStart:dword ENDIF
; ; External Procedures for SUDATA.ASM ;
IFDEF SU_DATAMODULE extrn Trap0:far extrn Trap1:far extrn Trap2:far extrn Trap3:far extrn Trap4:far extrn Trap5:far extrn Trap6:far extrn Trap7:far extrn Trap8:far extrn Trap9:far extrn TrapA:far extrn TrapB:far extrn TrapC:far extrn TrapD:far extrn TrapE:far extrn TrapF:far extrn _edata:near ENDIF
; ; Segment declarations for "Small Model" 16 bit Su Module. ;
_TEXT segment para use16 public 'CODE' _TEXT ends
_DATA segment para use16 public 'DATA' _DATA ends
CONST segment para use16 public 'CONST' CONST ends
_BSS segment para use16 public 'BSS' _BSS ends
DGROUP group const, _BSS, _DATA
;;; END OF FILE ;;;
|