Законченный TaskHeader
- - - Добавлено - - -Код:[Macro("HDRDF$")] public class TaskHeader { [Map("H.CSP: .BLKW 1")] public UInt16 CurrentStackPointer; // Current stack pointer [Map("H.HDLN: .BLKW 1")] public UInt16 HeaderLength; // Header length [Map("H.EFLM: .BLKW 1")] public UInt16 EventFlagMask; // Event flag mask [Set(".=.-2")] [Map("H.SMAP: .BLKB 1")] public byte SupervisorModeMappingMask; // Supervisor mode mapping mask [Map("H.DMAP: .BLKB 1")] public byte IDSpaceModeMappingMask; // I- and D-space mode mapping mask [Map("H.EFLA: .BLKW 1")] public UInt16 EventFlagAddress; // Event flag address [Set(".=.-2")] [Map("H.FMAP: .BLKW 1")] public UInt16 H_FMAP; // ?? [Map("H.CUIC: .BLKW 1")] public UInt16 CurrentUIC; // Current UIC [Map("H.DUIC: .BLKW 1")] public UInt16 DefaultUIC; // Default UIC [Map("H.IPS: .BLKW 1")] public UInt16 InitialPS; // Initial PS [Map("H.IPC: .BLKW 1")] public UInt16 InitialPC; // Initial PC [Map("H.ISP: .BLKW 1")] public UInt16 InitialSP; // Initial SP [Map("H.ODVA: .BLKW 1")] public UInt16 ODTSSTVectorAddress; // ODT SST vector address [Map("H.ODVL: .BLKW 1")] public UInt16 ODTSSTVectorLength; // ODT SST vector length [Map("H.TKVA: .BLKW 1")] public UInt16 TaskSSTVectorAddress; // Task SST vector address [Map("H.TKVL: .BLKW 1")] public UInt16 TaskSSTVectorLength; // Task SST vector length [Map("H.PFVA: .BLKW 1")] public UInt16 PowerFailASTControlBlock; // Power fail AST control block [Map("H.FPVA: .BLKW 1")] public UInt16 FloatingPointASTControlBlock; // Floating-point AST control block [Map("H.RCVA: .BLKW 1")] public UInt16 ReceiveASTControlBlock; // Receive AST control block [Map("H.EFSV: .BLKW 1")] public UInt16 EventFlagContextAddress; // Address of event flag context [Map("H.FPSA: .BLKW 1")] public UInt16 FloatingPointContextAddress; // Address of floating-point context [Map("H.WND: .BLKW 1")] public UInt16 PointerToNumberOfWindowBlock; // Pointer to number of window block [Map("H.DSW: .BLKW 1")] public UInt16 DirectiveStatusWord; // Directive status word [Map("H.FCS: .BLKW 1")] public UInt16 FCSImpureStorageAddress; // Address of FCS impure storage [Map("H.FORT: .BLKW 1")] public UInt16 FORTRANImpureStorageAddress; // Address of FORTRAN impure storage [Map("H.OVLY: .BLKW 1")] public UInt16 OverlayImpureStorageAddress; // Address of overlay impure storage [Map("H.VEXT: .BLKW 1")] public UInt16 ImpureVectorsAddress; // Address of impure vectors [Map("H.SPRI: .BLKB 1")] public byte SwappingPriority; // Swapping priority [Map("H.NML: .BLKB 1")] public byte MailboxLUN; // Mailbox LUN [Map("H.RRVA: .BLKW 1")] public UInt16 ReceiveByReferenceASTControlBlock; // Receive by reference AST control block [Map("H.X25: .BLKB 1")] public byte X25; // H_X25 [Map("H.RES1: .BLKB 1")] public byte H_Reserved1; // Reserved [Map("H.RES2: .BLKW 1")] public UInt16 H_Reserved2; // Reserved [Map("H.LUTE: .BLKW 1")] public UInt16 H_LUTE; // Reserved [Map("H.GARD: .BLKW 1")] public UInt16 HeaderGuardWordPointer; // Header guard word pointer [Map("H.NLUN: .BLKW 1")] public UInt16 NumberOfLUNs; // Number of luns [Map("H.LUN: .BLKW ?H.NLUN")] public LUNDescriptor[] LUNTable; // LUN table (2 words per LUN) // Check RSX names! [Map("H.NWIN: .BLKW 1")] public UInt16 NumberOfWindows; // Number of Window blocks [Map("H.WIN: .BLKW ?H.NWIN")] public WindowBlock[] WindowBlocks; // Window Blocks [Map("H.CPS: .BLKW 1")] public UInt16 CurrentPS; // Current PS [Map("H.CPC: .BLKW 1")] public UInt16 CurrentPC; // Current PC [Map("H.CR5: .BLKW 1")] public UInt16 CurrentR5; // Current R5 Initial value - Relative block number of header [Map("H.CR4: .BLKW 1")] public UInt16 CurrentR4; // Current R4 Initial value - Ident word #2 [Map("H.CR3: .BLKW 1")] public UInt16 CurrentR3; // Current R3 Initial value - Ident word #1 [Set(".=.-4")] [Map("H.IDENT:.BLKW 2", PDP11Type.InvertRadix50)] public string Ident; // Ident [Map("H.CR2: .BLKW 1")] public UInt16 CurrentR2; // Current R2 Initial value - Task name word #2 (if include debugger) [Map("H.CR1: .BLKW 1")] public UInt16 CurrentR1; // Current R1 Initial value - Task name word #1 (if include debugger) [Set(".=.-4")] [Map("H.IDENT:.BLKW 2", PDP11Type.InvertRadix50)] public string TaskName; // Task name [Map("H.CR0: .BLKW 1")] public UInt16 CurrentR0; // Current R0 Initial value - Program transfer address (if include debugger) [Map("H.GRD: .BLKW 1")] public UInt16 HeaderGuardWord; // Header guard word //public static readonly UInt16 H_FPSL=25.*2; static TaskHeader() => Helpers.Mapper<TaskHeader>(); public TaskHeader(byte[] data, uint baseOffset = 0) => this.Mapper(data, baseOffset); }
В основном возня с аттрибутами закончена, осталось описать ещё один класс на инфу из служебной части .TSK (на данном этапе ни на что не влияет), теперь буду разбираться с отображением на резидентные библиотеки и с инфой о перекрытиях - пока понимания, особенно о первом - не сильно много![]()




Ответить с цитированием