mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 17:04:19 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1 @@
|
||||
.fo 'REGULUS Reference Manual'- % -'FILES'
|
||||
@@ -0,0 +1,27 @@
|
||||
.so macro
|
||||
.he 'AR68''AR68'
|
||||
.n NAME AR68
|
||||
ar68 - archive format
|
||||
.d DESCRIPTION
|
||||
The first word in an archive file is a magic number which
|
||||
defines the type of archive file.
|
||||
Magic number (0177545) archives are maintained on REGULUS.
|
||||
Each constituent file in an archive file is preceeded by a file header.
|
||||
The structure of the file header is:
|
||||
.sp
|
||||
.in +5
|
||||
.nf
|
||||
.na
|
||||
struct arhdr {
|
||||
char a_fname[14]; // file name
|
||||
long a_modti; // last modified time
|
||||
char a_userid; // user id (uid)
|
||||
char a_gid; // group id (gid)
|
||||
int a_fimode; // mode word
|
||||
long a_fsize; // file size
|
||||
};
|
||||
.fi
|
||||
.ad
|
||||
.in -5
|
||||
.sa SEE ALSO
|
||||
ar68 (cmnd), lo68 (cmnd)
|
||||
165
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v103/doc/files/c.out
Normal file
165
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v103/doc/files/c.out
Normal file
@@ -0,0 +1,165 @@
|
||||
.so macro
|
||||
.he 'C.OUT''C.OUT'
|
||||
.n NAME c.out
|
||||
c.out - 68000 loader output
|
||||
.d DESCRIPTION
|
||||
'c.out' is the output file of the loader 'ld68 (cmnd)'.
|
||||
The loader makes 'c.out' executable if there were no
|
||||
errors and no unresolved external references.
|
||||
The *.o relocatable object files which are produced by the assembler
|
||||
'as68 (cmnd)' have this same format.
|
||||
.sp
|
||||
This file has four sections:
|
||||
a header, the program and data text, a symbol table, and relocation bits
|
||||
(in that order).
|
||||
The last two may be empty if the program was loaded
|
||||
with the '-s' option of 'ld68 (cmnd)'.
|
||||
.sp
|
||||
There are two formats of the header.
|
||||
The first header format starts
|
||||
with the identifying number 601A hex and contains 14 words in the
|
||||
following format:
|
||||
.sp
|
||||
.nf
|
||||
.na
|
||||
.in +5
|
||||
struct hdr {
|
||||
int magic; //c.out magic number = 601A hex
|
||||
long tsize; //# bytes in program text segment
|
||||
long dsize; //# bytes in program data segment
|
||||
long bsize; //# bytes in program bss segment
|
||||
long ssize; //# bytes in symbol table
|
||||
long stksize; //initial stack size
|
||||
long entry; //entry point
|
||||
int rlbflg; //relocation bits suppressed flag
|
||||
};
|
||||
.fi
|
||||
.ad
|
||||
.sp
|
||||
.in -5
|
||||
The second header format is used when noncontiguous text, data,
|
||||
and bss segments are specified to the loader using the -T, -D,
|
||||
and -B flags.
|
||||
This header begins with the identifying number
|
||||
601B hex and contains 18 words in the following format:
|
||||
.sp
|
||||
.in +5
|
||||
.nf
|
||||
.na
|
||||
struct hdr {
|
||||
int magic; //c.out magic number = 601B hex
|
||||
long tsize; //# bytes in program text segment
|
||||
long dsize; //# bytes in program data segment
|
||||
long bsize; //# bytes in program bss segment
|
||||
long ssize; //# bytes in symbol table
|
||||
long stksize; //initial stack size
|
||||
long entry; //entry point--address of text segment
|
||||
int rlbflg; //relocation bits suppressed flag
|
||||
long dstart; //address of data segment
|
||||
long bstart; //address of bss segment
|
||||
};
|
||||
.fi
|
||||
.ad
|
||||
.sp
|
||||
.in -5
|
||||
The sizes of each segment are in bytes but are even.
|
||||
The size of the header is not included in any of the other sizes.
|
||||
.sp
|
||||
When a file produced by the loader is loaded into memory for execution,
|
||||
three logical segments are set up:
|
||||
the text segment, the data segment
|
||||
(with uninitialized data,
|
||||
which starts off as all 0, following initialized),
|
||||
and a stack.
|
||||
The text segment begins at the address contained in "entry"
|
||||
in the core image; the header is not loaded.
|
||||
If the magic number (word 0) is 601A hex, it indicates that the text
|
||||
segment is not to be write-protected and shared,
|
||||
so the data segment is immediately contiguous
|
||||
with the text segment.
|
||||
If the magic number is 601C hex, it indicates that the text segment is
|
||||
to be write protected and shared and that the beginning of the data
|
||||
segment is at the first 2K byte boundary beyond the text segment.
|
||||
If the magic number is 601D hex, it indicates that the text segment and
|
||||
the data segment are both loaded with virtual addresses beginning
|
||||
at 0 (I and D split).
|
||||
If the magic number is 601E hex, it indicates that the text segment is
|
||||
to be write protected and shared and that the beginning of the data
|
||||
segment is at the first 4K byte boundary beyond the text segment.
|
||||
.sp
|
||||
The symbol table consists of 7-word entries.
|
||||
The first four words contain the ASCII name of the symbol, null-padded.
|
||||
The next word is a flag indicating the type of symbol.
|
||||
The following values are possible:
|
||||
.sp
|
||||
.in +5
|
||||
.nf
|
||||
.na
|
||||
0100000 defined
|
||||
0040000 equated
|
||||
0020000 global - entry or external
|
||||
0010000 equated register
|
||||
0004000 external reference
|
||||
0002000 DATA based relocatable
|
||||
0001000 TEXT based relocatable
|
||||
0000400 BSS based relocatable
|
||||
.in -5
|
||||
.fi
|
||||
.ad
|
||||
.sp
|
||||
These values are bit flags which may be or'ed together to indicate
|
||||
completely a symbol type such as 0122000 for a defined global data
|
||||
segment relocatable symbol.
|
||||
.sp
|
||||
The last two words (long) of a symbol table
|
||||
entry contain the value of the symbol.
|
||||
.sp
|
||||
If the symbol's type is undefined external,
|
||||
and the value field is non-zero,
|
||||
the symbol is interpreted by the loader
|
||||
ld
|
||||
as the name of a common region
|
||||
whose size is indicated by the value of the symbol.
|
||||
.sp
|
||||
The value of a word in the text or data portions which is not
|
||||
a reference to an undefined external symbol
|
||||
is exactly that value which will appear in memory
|
||||
when the file is executed.
|
||||
If a word in the text or data portion
|
||||
involves a reference to an undefined external symbol,
|
||||
as indicated by the relocation bits for that word,
|
||||
then the value of the word as stored in the file
|
||||
is an offset from the associated external symbol.
|
||||
When the file is processed by the
|
||||
loader and the external symbol becomes
|
||||
defined, the value of the symbol will
|
||||
be added into the word in the file.
|
||||
.sp
|
||||
If relocation information is present, it amounts to one word per
|
||||
word of program text or initialized data.
|
||||
There is no relocation information if the "suppress relocation"
|
||||
flag in the header is on.
|
||||
.sp
|
||||
Bits 2-0 of a relocation word indicate the segment referred
|
||||
to by the text or data word associated with the relocation word:
|
||||
.sp
|
||||
.nf
|
||||
.na
|
||||
.in +5
|
||||
00 indicates the reference is absolute
|
||||
01 indicates the reference is data segment relocatable
|
||||
02 indicates the reference is text segment relocatable
|
||||
03 indicates the reference is bss segment relocatable
|
||||
04 indicates the reference is to an undefined external symbol
|
||||
05 indicates the reference is to the upper word of a long
|
||||
07 indicates the absolute first word of an instruction
|
||||
.fi
|
||||
.ad
|
||||
.in -5
|
||||
.sp
|
||||
The remainder of the relocation word (bits 15-3)
|
||||
contains a symbol number in the case of external
|
||||
references, and is unused otherwise.
|
||||
The first symbol is numbered 0, the second 1, etc.
|
||||
.sa "SEE ALSO"
|
||||
as68 (cmnd), ld68 (cmnd)
|
||||
Reference in New Issue
Block a user