System Type Definitions
Here are listed all Turbo Pascal elementary types that are defined in the System
unit (using the boot-strap symbol table SYSTEM.TPS
).
With NoTypeDefinition do
begin
BaseType := btUntyped;
DataType := [];
Size := 0;
TypeIdentifierOffset := 0;
W06_ := 1;
end;
With FileTypeDefinition do
begin
BaseType := btFile;
DataType := [];
Size := $0080;
TypeIdentifierOffset := 0;
W06_ := $0019;
BaseFileTypeOffset.TypeOffset := 0;
BaseFileTypeOffset.UnitIdentifierData := 0;
end;
With TextTypeDefinition do
begin
BaseType := btText;
DataType := [];
Size := $0100;
TypeIdentifierOffset := Text_TypeNameOffset;
W06_ := $0018;
BaseFileTypeOffset.TypeOffset := Char_TypeOffset;
BaseFileTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With EmptySetTypeDefinition do
begin
BaseType := btSet;
DataType := [it32Bytes];
Size := 32;
TypeIdentifierOffset := 0;
W06_ := 0;
BaseSetTypeOffset.TypeOffset := 0;
BaseSetTypeOffset.UnitIdentifierData := 0;
end;
With PointerTypeDefinition do
begin
BaseType := btPointer;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := Pointer_TypeNameOffset;
W06_ := $001A;
PointerBaseTypeOffset.TypeOffset := Untyped_TypeOffset;
PointerBaseTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With StringTypeDefinition do
begin
BaseType := btString;
DataType := [];
Size := $0100;
TypeIdentifierOffset := 0;
W06_ := $001B;
ElementTypeOffset.TypeOffset := Char_TypeOffset;
ElementTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
IndexTypeOffset.TypeOffset := Byte_TypeOffset;
IndexTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With OpenStringTypeDefinition do
begin
BaseType := btString;
DataType := [];
Size := 0;
TypeIdentifierOffset := OpenString_NameOffset;
W06_ := $001B;
ElementTypeOffset.TypeOffset := Char_TypeOffset;
ElementTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
IndexTypeOffset.TypeOffset := Byte_TypeOffset;
IndexTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With SingleTypeDefinition do
begin
BaseType := btExtended;
DataType := [];
Size := 4;
TypeIdentifierOffset := Single_TypeNameOffset;
W06_ := $000E;
end;
With DoubleTypeDefinition do
begin
BaseType := btExtended;
DataType := [fpDouble];
Size := 8;
TypeIdentifierOffset := Double_TypeNameOffset;
W06_ := $000F;
end;
With CompTypeDefinition do
begin
BaseType := btExtended;
DataType := fpComp;
Size := 8;
TypeIdentifierOffset := Comp_TypeNameOffset;
W06_ := $0015;
end;
With ExtendedTypeDefinition do
begin
BaseType := btExtended;
DataType := [fpExtended];
Size := 10;
TypeIdentifierOffset := Extended_TypeNameOffset;
W06_ := $0010;
end;
With RealTypeDefinition do
begin
BaseType := btReal;
DataType := [fpDouble];
Size := 6;
TypeIdentifierOffset := Real_TypeNameOffset;
W06_ := $0011;
end;
With ShortIntTypeDefinition do
begin
BaseType := btInteger;
DataType := [itSigned];
Size := 1;
TypeIdentifierOffset := ShortInt_TypeNameOffset;
W06_ := $0002;
LowerLimit := Integer ($FFFFFF80);
UpperLimit := $0000007F;
OrdinalType.TypeOffset := LongInt_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With ByteTypeDefinition do
begin
BaseType := btInteger;
DataType := [itUnsigned];
Size := 1;
TypeIdentifierOffset := Byte_TypeNameOffset;
W06_ := $0008;
LowerLimit := $00000000;
UpperLimit := $000000FF;
OrdinalType.TypeOffset := LongInt_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With IntegerTypeDefinition do
begin
BaseType := btInteger;
DataType := [it16Bit, itSigned];
Size := 2;
TypeIdentifierOffset := Integer_TypeNameOffset;
W06_ := $0004;
LowerLimit := Integer ($FFFF8000);
UpperLimit := $00007FFF;
OrdinalType.TypeOffset := LongInt_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With WordTypeDefinition do
begin
BaseType := btInteger;
DataType := itWord;
Size := 2;
TypeIdentifierOffset := Word_TypeNameOffset;
W06_ := $000A;
LowerLimit := $00000000;
UpperLimit := $0000FFFF;
OrdinalType.TypeOffset := LongInt_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With LongIntTypeDefinition do
begin
BaseType := btInteger;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := LongInt_TypeNameOffset;
W06_ := $0006;
LowerLimit := LongInt ($80000000);
UpperLimit := $7FFFFFFF;
OrdinalType.TypeOffset := LongInt_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With SetOfByteTypeDefinition do
begin
BaseType := btSet;
DataType := [it32Bytes];
Size := 32;
TypeIdentifierOffset := 0;
W06_ := 0;
BaseSetTypeOffset.TypeOffset := Byte_TypeOffset;
BaseSetTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With BooleanTypeDefinition do
begin
BaseType := btBoolean;
DataType := [];
Size := 1;
TypeIdentifierOffset := Boolean_TypeNameOffset;
W06_ := $0012;
LowerLimit := $00000000;
UpperLimit := $00000001;
OrdinalType.TypeOffset := LongBool_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With ByteBoolTypeDefinition do
begin
BaseType := btBoolean;
DataType := [it32Bytes];
Size := 1;
TypeIdentifierOffset := ByteBool_TypeNameOffset;
W06_ := $0012;
LowerLimit := $00000000;
UpperLimit := $00000001;
OrdinalType.TypeOffset := LongBool_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With WordBoolTypeDefinition do
begin
BaseType := btBoolean;
DataType := [it32Bytes, it16Bit];
Size := 2;
TypeIdentifierOffset := WordBool_TypeNameOffset;
W06_ := $0021;
LowerLimit := $00000000;
UpperLimit := $00000001;
OrdinalType.TypeOffset := LongBool_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With LongBoolTypeDefinition do
begin
BaseType := btBoolean;
DataType := [it32Bytes, it32Bit, it16Bit];
Size := 4;
TypeIdentifierOffset := LongBool_TypeNameOffset;
W06_ := $0022;
LowerLimit := $00000000;
UpperLimit := $00000001;
OrdinalType.TypeOffset := LongBool_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With SetOfBooleanTypeDefinition do
begin
BaseType := btSet;
DataType := [it32Bytes];
Size := 32;
TypeIdentifierOffset := 0;
W06_ := 0;
BaseSetTypeOffset.TypeOffset := Boolean_TypeOffset;
BaseSetTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With CharTypeDefinition do
begin
BaseType := btChar;
DataType := [itUnsigned];
Size := 1;
TypeIdentifierOffset := Char_TypeNameOffset;
W06_ := $0013;
LowerLimit := $00000000;
UpperLimit := $000000FF;
OrdinalType.TypeOffset := Char_TypeOffset;
OrdinalType.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With SetOfCharTypeDefinition do
begin
BaseType := btSet;
DataType := [it32Bytes];
Size := 32;
TypeIdentifierOffset := 0;
W06_ := 0;
BaseSetTypeOffset.TypeOffset := Char_TypeOffset;
BaseSetTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With PCharTypeDefinition do
begin
BaseType := btPointer;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := PChar_TypeNameOffset;
W06_ := $0023;
PointerBaseTypeOffset.TypeOffset := Char_TypeOffset;
PointerBaseTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
end;
With ProcedureTypeDefinition do
begin
BaseType := btFunctionProcedure;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := 0;
W06_ := 0;
ResultTypeOffset.TypeOffset := Pointer_TypeOffset;
ResultTypeOffset.UnitIdentifierData := SystemUnitIdentifierDataOffset;
NumberOfParameters := 1;
end;
With ProcedureParameterData do
begin
UnitTypeOffsets.TypeOffset := Word_TypeOffset;
UnitTypeOffsets.UnitIdentifierData := SystemUnitIdentifierDataOffset;
VarFlags := LocalStackVariable;
end;
With FunctionTypeDefinition do
begin
BaseType := btFunctionProcedure;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := 0;
W06_ := 0;
ResultTypeOffset.TypeOffset := 0;
ResultTypeOffset.UnitIdentifierData := 0;
NumberOfParameters := 1;
end;
With FunctionParameterData do
begin
UnitTypeOffsets.TypeOffset := Pointer_TypeOffset;
UnitTypeOffsets.UnitIdentifierData := SystemUnitIdentifierDataOffset;
VarFlags := LocalStackVariable;
end;
With Function2TypeDefinition do
begin
BaseType := btFunctionProcedure;
DataType := itLongInt;
Size := 4;
TypeIdentifierOffset := 0;
W06_ := 0;
ResultTypeOffset.TypeOffset := 0;
ResultTypeOffset.UnitIdentifierData := 0;
NumberOfParameters := 2;
end;
With Function2ParameterData1 do
begin
UnitTypeOffsets.TypeOffset := Pointer_TypeOffset;
UnitTypeOffsets.UnitIdentifierData := SystemUnitIdentifierDataOffset;
VarFlags := LocalStackVariable;
end;
With Function2ParameterData2 do
begin
UnitTypeOffsets.TypeOffset := Word_TypeOffset;
UnitTypeOffsets.UnitIdentifierData := SystemUnitIdentifierDataOffset;
VarFlags := LocalStackVariable;
end;