Files
linuxcnc/5i24/utils/dos/source/HM2ID.PAS
Thaddeus-Maximus f3953d66ae ?
2026-04-03 15:58:58 -05:00

333 lines
15 KiB
Plaintext
Executable File

const
IDROMSize = 256;
IDROMHeaderSize = 16;
MaxModules = 32;
MaxPins = 144;
IDROMStyle0 = 2;
IDROMStyle1 = 3;
Boards = 16;
MaxConns = 6;
type
IDROMAsArrayType = Array[0 ..IDROMSize-1] of longint;
IDROMHeaderAsArrayType = Array[0 ..IDROMHeaderSize-1] of longint;
ModulesAsArrayType = array[0.. MaxModules*3-1] of longint;
ModuleType = array[0 .. MaxModules-1] of record
GTag : byte;
Version : byte;
Clock : byte;
NumInstances : byte;
BaseAddr : word;
NumRegisters : byte;
Strides : byte;
MultRegs : longint;
end;
PinDescType = array[1..MaxPins] of record
PNumber : byte;
GTag : byte;
Chan : byte;
PTag : byte;
end;
PinDescAsArrayType = array[0..MaxPins-1] of longint;
FNameType = record
FName : string[40];
FTag : byte;
end;
PinNameType = record
FTag : byte;
Names : array[1..10] of string[20];
end;
IDROMHeaderType = record
IDROMType : longint;
ModulePointer : longint;
PinDescPointer : longint;
BoardNameLow : longint;
BoardNameHigh : longint;
FPGASize : longint;
FPGAPins : longint;
IOPorts : longint;
IOWidth : longint;
PortWidth : longint;
ClockLow : longint;
ClockHigh : longint;
InstStride0 : longint;
InstStride1 : longint;
RegStride0 : longint;
RegStride1 : longint;
end;
ConnectorNamesType = array[1..Boards] of record
BoardName : longint;
ConName : array[1..MaxConns] of string[20];
end;
const
HM2Cookie : longint = $55AACAFE;
HostMotName = 'HOSTMOT2';
IDOffset = $100;
HM2CookieOffset = IDOffset + 0;
HostMotNameLowOffset = IDOffset+4;
HostMotNameHighOffset = IDOffset+8;
IDROMPointer = IDOffset+ 12;
HostMotClockLowOffset = $428;
HostMotClockHighOffset = $42C;
ClockLowTag= $01;
ClockHighTag= $02;
MaxTags = 33;
NullTag = $00;
IRQLogicTag = $01;
WatchDogTag = $02;
IOPortTag = $03;
QCountTag = $04;
StepGenTag = $05;
PWMTag = $06;
SPITag = $07;
SSITag = $08;
UARTTXTag = $09;
UARTRXTag = $0A;
AddrXTag = $0B;
MuxedQCountTag = $0C;
MuxedQCountSelTag =$0D;
BSPITag = $0E;
DBSPITag = $0F;
MuxedQCountMIMTag = $11;
MuxedQCountSelMIMTag =$12;
TPPWMTag = $13;
WaveGenTag = $14;
DAQFIFOTag =$15;
BinOscTag =$16;
DMDMATag =$17;
BISSTag =$18;
FAbsTag =$19;
DPLLTag = $1A;
PktUARTTXTag = $1B;
PktUARTRXTag = $1C;
SSDATag = $1E;
ResModTag = $C0;
SSerialTag = $C1;
TwiddlerTag = $C2;
LEDTag = $80;
BoardName4I65 = $35364934; { 4I65 }
BoardName4I74 = $34374934; { 4I74 }
BoardName4I68 = $38364934; { 4I68 }
BoardName4I69 = $39364934; { 4I69 }
BoardName5I20 = $30324935; { 5I20 }
BoardName5I22 = $32324935; { 5I22 }
BoardName5I23 = $33324935; { 5I23 }
BoardName5I24 = $34324935; { 5I24 }
BoardName5I25 = $35324935; { 5I25 }
BoardName6I25 = $35324936; { 6I25 }
BoardName7I43 = $33344937; { 7I43 }
BoardName7I90 = $30394937; { 7I90 }
BoardName7I80 = $30384937; { 7I80 }
BoardName7I76 = $36374937; { 7I76 }
BoardName7I60 = $30364937; { 7I60 }
BoardName3X20 = $30325833; { 3X20 }
OutputMarker = $80;
GlobalMarker = $80;
OutputMask = $7F;
FNames : array[1..MaxTags] of FNameType =
(
(FName : 'Null'; Ftag : NullTag),
(FName : 'IRQLogic'; Ftag : IRQLogicTag),
(FName : 'WatchDog'; Ftag : WatchDogTag),
(FName : 'IOPort'; Ftag : IOPortTag),
(FName : 'QCount'; Ftag : QCountTag),
(FName : 'StepGen'; Ftag : StepGenTag),
(FName : 'PWMGen'; Ftag : PWMTag),
(FName : 'SPI'; Ftag : SPITag),
(FName : 'SSI'; Ftag : SSITag),
(FName : 'UARTTX'; Ftag : UARTTXTag),
(FName : 'UARTRX'; Ftag : UARTRXTag),
(FName : 'AddrX'; Ftag : AddrXTag),
(FName : 'MuxedQCount'; Ftag : MuxedQCountTag),
(FName : 'MuxedQCountSel'; Ftag : MuxedQCountSelTag),
(FName : 'BufSPI'; Ftag : BSPITag),
(FName : 'DBufSPI'; Ftag : DBSPITag),
(FName : 'DPLL'; Ftag : DPLLTag),
(FName : 'PktUARTTX'; Ftag : PktUARTTXTag),
(FName : 'PktUARTRX'; Ftag : PktUARTRXTag),
(FName : 'MuxQCntM'; Ftag : MuxedQCountMIMTag),
(FName : 'MuxQSelM'; Ftag : MuxedQCountSelMIMTag),
(FName : 'TPPWM'; Ftag : TPPWMTag),
(FName : 'WaveGen'; Ftag : WaveGenTag),
(FName : 'DAQFIFO'; Ftag : DAQFIFOTag),
(FName : 'SSDA'; Ftag : SSDATag),
(FName : 'BinOsc'; Ftag : BinOscTag),
(FName : 'DMDMA'; Ftag : DMDMATag),
(FName : 'BISS'; Ftag : BISSTag),
(FName : 'FanucAbs'; Ftag : FAbsTag),
(FName : 'ResolverMod'; Ftag : ResModTag),
(FName : 'SSerial'; Ftag : SSerialTag),
(FName : 'Twiddler'; Ftag : TwiddlerTag),
(FName : 'LED'; Ftag : LEDTag)
);
FNamesX : array[1..MaxTags] of FNameType =
(
(FName : 'Null'; Ftag : NullTag),
(FName : 'IRQLogic'; Ftag : IRQLogicTag),
(FName : 'Watchdog'; Ftag : WatchDogTag),
(FName : 'IOPort'; Ftag : IOPortTag),
(FName : 'Encoder'; Ftag : QCountTag),
(FName : 'StepGen'; Ftag : StepGenTag),
(FName : 'PWMGen'; Ftag : PWMTag),
(FName : 'SPI'; Ftag : SPITag),
(FName : 'SSI'; Ftag : SSITag),
(FName : 'UARTTX'; Ftag : UARTTXTag),
(FName : 'UARTRX'; Ftag : UARTRXTag),
(FName : 'AddrX'; Ftag : AddrXTag),
(FName : 'MuxedQCount'; Ftag : MuxedQCountTag),
(FName : 'MuxedQCountSel'; Ftag : MuxedQCountSelTag),
(FName : 'BufSPI'; Ftag : BSPITag),
(FName : 'DBufSPI'; Ftag : DBSPITag),
(FName : 'DPLL'; Ftag : DPLLTag),
(FName : 'PktUARTTX'; Ftag : PktUARTTXTag),
(FName : 'PktUARTRX'; Ftag : PktUARTRXTag),
(FName : 'MuxQCntM'; Ftag : MuxedQCountMIMTag),
(FName : 'MuxQSelM'; Ftag : MuxedQCountSelMIMTag),
(FName : 'TPPWM'; Ftag : TPPWMTag),
(FName : 'WaveGen'; Ftag : WaveGenTag),
(FName : 'DAQFIFO'; Ftag : DAQFIFOTag),
(FName : 'SSDA'; Ftag : SSDATag),
(FName : 'BinOsc'; Ftag : BinOscTag),
(FName : 'DMDMA'; Ftag : DMDMATag),
(FName : 'BISS'; Ftag : BISSTag),
(FName : 'FanucAbs'; Ftag : FAbsTag),
(FName : 'ResolverMod'; Ftag : ResModTag),
(FName : 'SSerial'; Ftag : SSerialTag),
(FName : 'Twiddler'; Ftag : TwiddlerTag),
(FName : 'LED'; Ftag : LEDTag)
);
PNames : array[1..MaxTags] of PinNameType =
(
(FTag : NullTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : IRQLogicTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : WatchdogTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : IOPortTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : QCountTag; Names : ('Quad-A','Quad-B','Quad-IDX','Quad-IDXM','Quad-Probe','Null6','Null7','Null8','Null9','Null10')),
(FTag : MuxedQCountTag; Names : ('MuxQ-A','MuxQ-B','MuxQ-IDX','MuxQ-IDXM','Quad-ProbeM','Null6','Null7','Null8'
,'Null9','Null10')),
(FTag : MuxedQCountSelTag; Names : ('MuxSel0','MuxSel1','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : MuxedQCountMIMTag; Names : ('MuxQ-A','MuxQ-B','MuxQ-IDX','MuxQ-IDXM','Quad-ProbeM','Null6','Null7','Null8'
,'Null9','Null10')),
(FTag : MuxedQCountSelMIMTag; Names : ('MuxSel0','MuxSel1','Null3','Null4','Null5','Null6','Null7','Null8'
,'Null9','Null10')),
(FTag : StepGenTag; Names : ('Step','Dir','Table3','Table4','Table5','Table6','SGindex','SGProbe'
,'Null9','Null10')),
(FTag : PWMTag; Names : ('PWM','Dir','/Enable','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : TPPWMTag; Names : ('PWMA','PWMB','PWMC','NPWMA','NPWMB','NPWMC','/ENA','FAULT','Null9','Null10')),
(FTag : WaveGenTag; Names : ('PDMA','PDMB','Trig0','Trig1','Trig2','Trig3','Null7','Null8','Null9','Null10')),
(FTag : DAQFIFOTag; Names : ('Data','Strobe','Full','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : SSDATag; Names : ('ICK','DI','ILD','SY','SClk','SData','Null7','Null8','Null9','Null10')),
(FTag : BinOscTag; Names : ('OscOut','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : DMDMATag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : BISSTag; Names : ('Clock','ClockEn','Data','DAv','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : FAbsTag; Names : ('Req','ReqEn','Data','DAv','TestClk','Null6','Null7','Null8','Null9','Null10')),
(FTag : ResModTag; Names : ('PwrEn','PDMP','PDMM','ADChan0','ADChan1','ADChan2','SPICS','SPIClk','SPIDI0','SPIDI1')),
(FTag : SSerialTag; Names : ('RXData','TXData','TXEn','TestPin','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : TwiddlerTag; Names : ('InBit','IOBit','OutBit','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : SPITag; Names : ('/Frame','DOut','SClk','DIn','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : BSPITag; Names : ('/Frame','DOut','SClk','DIn','CS0','CS1','CS2','CS3','Null9','Null10')),
(FTag : DBSPITag; Names : ('Null1','DOut','SClk','DIn','/CS-FRM0','/CS-FRM1','/CS-FRM2','/CS-FRM3','Null9','Null10')),
(FTag : DPLLTag; Names : ('Syncin','RefOut','Timer1','Timer2','Timer3','Timer4','Null7','Null8','Null9','Null10')),
(FTag : SSITag; Names : ('SClk','SClkEn','Data','DAv','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : UARTTXTag; Names : ('TXData','TXEna','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : UARTRXTag; Names : ('RXData','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : PktUARTTXTag; Names : ('TXData','TXEna','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : PktUARTRXTag; Names : ('RXData','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : AddrxTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : LEDTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')));
PNamesXML : array[1..MaxTags] of PinNameType =
(
(FTag : NullTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : IRQLogicTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : WatchdogTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : IOPortTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : QCountTag; Names : ('Phase A','Phase B','Index','Quad-IDXM','Quad-Probe','Null6','Null7','Null8','Null9','Null10')),
(FTag : MuxedQCountTag; Names : ('Muxed Phase A','Muxed Phase B','Muxed Index','MuxQ-IDXM',
'Quad-ProbeM','Null6','Null7','Null8','Null9','Null10')),
(FTag : MuxedQCountSelTag; Names : ('Muxed Encoder Select 0','Muxed Encoder select 1','Null3','Null4',
'Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : MuxedQCountMIMTag; Names : ('MuxQ-A','MuxQ-B','MuxQ-IDX','MuxQ-IDXM','Quad-ProbeM','Null6','Null7','Null8'
,'Null9','Null10')),
(FTag : MuxedQCountSelMIMTag; Names : ('MuxSel0','MuxSel1','Null3','Null4','Null5','Null6','Null7','Null8'
,'Null9','Null10')),
(FTag : StepGenTag; Names : ('Step','Dir','Table3','Table4','Table5','Table6','SGindex','SGProbe'
,'Null9','Null10')),
(FTag : PWMTag; Names : ('PWM/Up','Dir/Down','/Enable','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : TPPWMTag; Names : ('PWMA','PWMB','PWMC','NPWMA','NPWMB','NPWMC','/ENA','FAULT','Null9','Null10')),
(FTag : WaveGenTag; Names : ('PDMA','PDMB','Trig0','Trig1','Trig2','Trig3','Null7','Null8','Null9','Null10')),
(FTag : DAQFIFOTag; Names : ('Data','Strobe','Full','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : SSDATag; Names : ('ICK','DI','ILD','SY','SClk','SData','Null7','Null8','Null9','Null10')),
(FTag : BinOscTag; Names : ('OscOut','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : DMDMATag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : BISSTag; Names : ('Clock','ClockEn','Data','DAv','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : FAbsTag; Names : ('Req','ReqEn','Data','DAv','TestClk','Null6','Null7','Null8','Null9','Null10')),
(FTag : ResModTag; Names : ('PwrEn','PDMP','PDMM','ADChan0','ADChan1','ADChan2','SPICS','SPIClk','SPIDI0','SPIDI1')),
(FTag : SSerialTag; Names : ('RXData','TXData','TXEn','TestPin','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : TwiddlerTag; Names : ('InBit','IOBit','OutBit','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : SPITag; Names : ('/Frame','DOut','SClk','DIn','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : BSPITag; Names : ('/Frame','DOut','SClk','DIn','CS0','CS1','CS2','CS3','Null9','Null10')),
(FTag : DBSPITag; Names : ('Null1','DOut','SClk','DIn','/CS-FRM0','/CS-FRM1','/CS-FRM2','/CS-FRM3','Null9','Null10')),
(FTag : DPLLTag; Names : ('Syncin','RefOut','Timer1','Timer2','Timer3','Timer4','Null7','Null8','Null9','Null10')),
(FTag : SSITag; Names : ('SClk','SClkEn','DIn','DAv','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : UARTTXTag; Names : ('TXData','TXEna','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : UARTRXTag; Names : ('RXData','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : PktUARTTXTag; Names : ('TXData','TXEna','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : PktUARTRXTag; Names : ('RXData','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : AddrxTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')),
(FTag : LEDTag; Names : ('Null1','Null2','Null3','Null4','Null5','Null6','Null7','Null8','Null9','Null10')));
ConnectorNames : ConnectorNamesType =
(
(BoardName : BoardName4I65; ConName : ('P1','P3','P4','Null1','Null2','Null3')),
(BoardName : BoardName4I68; ConName : ('P1','P2','P3','Null1','Null2','Null3')),
(BoardName : BoardName4I69; ConName : ('P1','P3','P4','Null1','Null2','Null3')),
(BoardName : BoardName4I74; ConName : ('PX','PY','PZ','Null1','Null2','Null3')),
(BoardName : BoardName5I20; ConName : ('P2','P3','P4','Null1','Null2','Null3')),
(BoardName : BoardName5I22; ConName : ('P2','P3','P4','P5','Null1','Null2')),
(BoardName : BoardName5I23; ConName : ('P2','P3','P4','Null1','Null2','Null3')),
(BoardName : BoardName5I24; ConName : ('P2','P3','P4','Null1','Null2','Null3')),
(BoardName : BoardName5I25; ConName : ('P3','P2','Null1','Null2','Null3','Null4')),
(BoardName : BoardName6I25; ConName : ('P3','P2','Null1','Null2','Null3','Null4')),
(BoardName : BoardName7I43; ConName : ('P4','P3','Null1','Null2','Null3','Null4')),
(BoardName : BoardName7I90; ConName : ('P1','P2','P3','Null2','Null3','Null4')),
(BoardName : BoardName7I80; ConName : ('P1','P2','P3','Null2','Null3','Null4')),
(BoardName : BoardName7I80; ConName : ('P1','P2','P3','P4','Null3','Null4')),
(BoardName : BoardName7I60; ConName : ('P7','P8','P5','P4','Null1','Null3')),
(BoardName : BoardName3X20; ConName : ('P4','P5','P6','P9','P8','P7')));
var
Modules : ModuleType;
PinDescs : PinDescType;
PinDescsAsArray : PinDescAsArrayType;
IDROMOffset : longint;
ModuleOffset : longint;
PinDescOffset : longint;
IDROMAsArray : IDROMAsArrayType;
IDROMHeaderAsArray : IDROMHeaderAsArrayType;
ModulesAsArray : ModulesAsArrayType;
IDROMHeader : IDROMHeaderType;
ClockLow : longint;
ClockHigh : longint;
Outputmasks : array[0..MaxConns-1] of longint;