home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
jËzyki_programowania
/
oberon
/
loader
/
oloaddata.def
< prev
next >
Wrap
Text File
|
1977-12-31
|
4KB
|
126 lines
DEFINITION MODULE OLoadData;
(*
This module allows the access to the data structures Module and
TypeDescriptor, which are used also in the Oberon System.
The access is done through procedures. These procedures are
written in concordance to the aligning rules of the oberon
compiler.
Thus this module has to be revised whenever the oberon compiler
is changed.
*)
(*FROM SYSTEM IMPORT ADDRESS;*)
CONST
descSizeAligned=92; (* Descriptor size, long word aligned *)
CONST
nameLen=24;
TYPE
Absolute=LONGINT;
Offset=LONGINT;
OldCardinal=CARDINAL;
OldLongCard=LONGCARD;
CARDINAL=INTEGER;
LONGCARD=LONGINT;
CodeBase=Absolute;
ConstBase=Absolute;
CommandBase=Absolute;
Count=CARDINAL;
DataBase=Absolute;
Entry=Offset;
EntryBase=Absolute;
Key=LONGCARD;
ImportBase=Absolute;
Index=CARDINAL;
Module=Absolute;
Name=ARRAY [0..nameLen-1] OF CHAR;
PointerBase=Absolute;
RefBase=Absolute;
Size=LONGCARD;
Tag=LONGCARD;
TypeDescriptor=Absolute;
VAR
module255:ARRAY [0..255] OF Absolute;
(*
module255 has to be prefilled with the absolute addresses of
special funtions. The compiler encodes them as functions belonging
to the module with module number 255. Whenever fixup encounters
a reference to (mno=255, eno), it will translate this entry
using this array.
*)
PROCEDURE commandG(mod:Module):CommandBase;
PROCEDURE commandP(mod:Module; command:CommandBase);
PROCEDURE commandsEntryG(mod:Module; index:Index):Entry;
PROCEDURE commandsEntryP(mod:Module; index:Index; entry:Entry);
PROCEDURE commandsNameG(mod:Module; index:Index; VAR name:Name);
PROCEDURE commandsNameP(mod:Module; index:Index; name:Name);
PROCEDURE codeG(mod:Module):CodeBase;
PROCEDURE codeP(mod:Module; code:CodeBase);
PROCEDURE codeSizeG(mod:Module):Size;
PROCEDURE codeSizeP(mod:Module; size:Size);
PROCEDURE constG(mod:Module):ConstBase;
PROCEDURE constP(mod:Module; const:ConstBase);
PROCEDURE constSizeG(mod:Module):Size;
PROCEDURE constSizeP(mod:Module; size:Size);
PROCEDURE dataG(mod:Module):DataBase;
PROCEDURE dataP(mod:Module; data:DataBase);
PROCEDURE dataSizeG(mod:Module):Size;
PROCEDURE dataSizeP(mod:Module; size:Size);
PROCEDURE entriesG(mod:Module; index:Index):Entry;
PROCEDURE entryG(mod:Module):EntryBase;
PROCEDURE entryP(mod:Module; entry:EntryBase);
PROCEDURE importG(mod:Module):ImportBase;
PROCEDURE importP(mod:Module; import:ImportBase);
PROCEDURE importsG(mod:Module; index:Index):Module;
PROCEDURE importsP(mod:Module; index:Index; module:Module);
PROCEDURE keyG(mod:Module):Key;
PROCEDURE keyP(mod:Module; key:Key);
PROCEDURE nameG(mod:Module; VAR name:Name);
PROCEDURE nameP(mod:Module; name:Name);
PROCEDURE nextG(mod:Module):Module;
PROCEDURE nextP(mod:Module; next:Module);
PROCEDURE nofCommandsG(mod:Module):Count;
PROCEDURE nofCommandsP(mod:Module; count:Count);
PROCEDURE nofEntriesG(mod:Module):Count;
PROCEDURE nofEntriesP(mod:Module; count:Count);
PROCEDURE nofImportsG(mod:Module):Count;
PROCEDURE nofImportsP(mod:Module; count:Count);
PROCEDURE nofPointersG(mod:Module):Count;
PROCEDURE nofPointersP(mod:Module; count:Count);
PROCEDURE pointerG(mod:Module):PointerBase;
PROCEDURE pointerP(mod:Module; pointer:PointerBase);
PROCEDURE refG(mod:Module):RefBase;
PROCEDURE refP(mod:Module; ref:RefBase);
PROCEDURE refCntG(mod:Module):Count;
PROCEDURE refCntP(mod:Module; refCnt:Count);
PROCEDURE refSizeG(mod:Module):Size;
PROCEDURE refSizeP(mod:Module; size:Size);
PROCEDURE tagP(mod:Module; tag:Tag);
PROCEDURE tdExtensionLevelG(td:TypeDescriptor):Count;
PROCEDURE tdModuleP(td:TypeDescriptor; mod:Module);
PROCEDURE tdNumberOfMethodsG(td:TypeDescriptor):Count;
PROCEDURE tdSizeG(td:TypeDescriptor):Size;
PROCEDURE tdSizeP(td:TypeDescriptor; size:Size);
PROCEDURE tdTagP(td:TypeDescriptor; tag:Tag);
PROCEDURE Address(mod:Module; mno,eno:SHORTCARD):Absolute;
PROCEDURE AllocateMod(nofEntries:Count; nofCommands:Count; nofPtrs:Count; nofImports:Count; constSize:Size; dataSize:Size; codeSize:Size; refSize:Size):Module;
PROCEDURE CompleteTypeDescs(mod:Module);
PROCEDURE DeallocateMod(mod:Module);
PROCEDURE EqualName(mod:Module; name:ARRAY OF CHAR):BOOLEAN;
PROCEDURE Fixup(mod:Module; link:CARDINAL);
PROCEDURE GetName(base:Absolute; offset:LONGINT; VAR name:Name);
PROCEDURE PutName(base:Absolute; offset:LONGINT; name:Name);
PROCEDURE MakeAbsolute(mod:Module; base:Absolute; entry:Entry);
PROCEDURE SetupPointers(mod:Module);
END OLoadData.