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
;
IFDEF NEC_98 IDT_ENTRIES equ 100h
BIOS_KEYBOARD_INTERRUPT equ 18h BIOS_DISK_INTERRUPT equ 1bh else ;NEC_98 BIOS_DISK_INTERRUPT equ 13h BIOS_READ_SECTOR equ 2 IDT_ENTRIES equ 100h
BIOS_KEYBOARD_INTERRUPT equ 16h endif ;NEC_98
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
;; ; ; NetPcRomServices Stack Frame Structure ; ; Stack frame definition for NetPcRomServices call from OS loader ; to 16bit routines. ; ;;
NetPcRomServicesFrame struc NetPcRomFunctionNumber dd ? NetPcRomCommandPacketPointer dd ? NetPcRomServicesFrame ends
;; ; ; BiosRedirectService Stack Frame Structure ; ; Stack frame definition for BiosRedirectService call from OS loader ; to 16bit routines. ; ;;
BiosRedirectServiceFrame struc Command dd ? BiosRedirectServiceFrame 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 MdlSelector 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
IFDEF NEC_98 gdpRegistors struc rAL db 0FFh FLG db ? rBX dw ? rCX dw ? rDX dw ? gdpRegistors ends
PartitionDescriptor struc BootableFlag db ? PartitionType db ? Reserved00 dw ? IPLSector db ? IPLTrack db ? IPLCylinder dw ? StartingSector db ? StartingTrack db ? StartingCylinder dw ? EndingSector db ? EndingTrack db ? EndingCylinder dw ? PartitionName db 16 dup(?) ; ASCII strings PartitionDescriptor ends
BIOS_FLAG equ 500h ; byte in ROM work segment BIOS_FLAG1 equ 480h ; byte in ROM work segment BIOS_FLAG4 equ 484h ; byte in ROM work segment BIOS_FLAG5 equ 458h ; byte in ROM work segment BIOS_FLAG6 equ 45Ah ; byte in ROM work segment AT_SWITCH equ 457h ; byte in ROM work segment DAUA equ 584h ; byte in ROM work segment DISK_EQUIP equ 55Ch ; byte in ROM work segment DISK_EQUIPS_SCSI equ 482h ; byte in ROM work segment EXPMMSIZ equ 401h ; byte in ROM work segment EXPMMSZ2 equ 594h ; word in ROM work segment DISK_RESULT equ 564h ; word in ROM work segment H_EQUIPS equ 47Dh ; byte in ROM work segment H_DISK_EQUIPS equ 47Eh ; word in ROM work segment EQUIPS_47Ch equ 47Ch ; byte in ROM work segment IC0 equ 10000000b IC1 equ 01000000b DAFloppy equ 00010000b ; floppy bit in DA DASCSI equ 00100000b ; SCSI bit in DA DASASI equ 00000000b ; SASI bit in DA DEVICEFORMAT equ 0FFFFh TRACKFORMAT equ 00000h MEMBANK08 equ 91h ; bank 08 MEMBANK0A equ 93h ; bank 0A
ROLLOVER_COUNT equ 45011 ; 1/18.2 * 2457.6KHz /3 TIMER_VECTOR equ (8*4) TIMER1_DATA_PORT0 equ 71h ; Timer1, channel 0 data port TIMER1_CONTROL_PORT0 equ 77h ; Timer1, channel 0 control port TIMER1_INTSHAREREG equ 879h ; PC-H98 TIMER INT SHARE REGISTER COMMAND_8254_COUNTER0 equ 00h ; Select count 0 COMMAND_8254_RW_16BIT equ 30h ; Read/Write LSB firt then MSB COMMAND_8254_MODE2 equ 4 ; Use mode 2
UR_DAT equ 030h ; data port UR_LCR equ UR_DAT+2 ; line control registers UR_LSR equ UR_DAT+2 ; line status register UR_IEN equ UR_DAT+5 ; Interrupt enable UR_TIMERSET equ 75h ; 8253 counter set UR_TIMERMODE equ 77h ; 8253 counter mode
UR_MODE equ 01001110B ; stop 1, disable p, 8 bpc, 1 stop, x16 UR_COMMAND equ 00110111B ; RTS, err reset, RXE, DTR, TXEN UR_RESET equ 01000000B ; internal reset command
RD_RDY equ 02h ; recieve data ready TX_RDY equ 01h ; transmitter empty if 1 endif ;NEC_98
;; ;; 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 ;;;
|