188 161 301 B__WMCS_Link_Reference_Apr84 B WMCS Link Reference Apr84

188-161-301-B__WMCS_Link_Reference_Apr84 188-161-301-B__WMCS_Link_Reference_Apr84

User Manual: 188-161-301-B__WMCS_Link_Reference_Apr84

Open the PDF directly: View PDF PDF.
Page Count: 58

Download188-161-301-B__WMCS_Link_Reference_Apr84 188-161-301-B WMCS Link Reference Apr84
Open PDF In BrowserView PDF
WI CAT

Multi-user Control
System (WMCS)
LINK
Programmer Reference Manual
188-161~301

8

April 1984.

• Softvvare •

Publications
I

WICATsystems

I

Copyright Statanent
Copyright © 1981 by WICAT Systems Incorporated
All Rights Reserved
Printed in the United States of America
Receipt of this rranual must not be construed as any kind of
corranitrnent, on the tart of WICAT Systems Incorporated, regarding
delivery or ownership of items manufactured by WICAT.
This manual is subj ect to change without notice.

Revision History

First Printing
Second Printing

Septanber 1981
April 1984

The Purpose of This Manual
The manual explains how to use the LINK Program for
developnent.

Reader's Guide to MCS Publications
Instructions: Determine the audience to which you belong and
then read only the publications at an arrowncac.
Do:tted arrowheads indicate optional reading.

System
manager

Mes
user

Systems
programmer

Programmer Reference Mf5tmt~:::::;e.l
uals describing system utili1JeS::::·"s~~
Release Notices
Software Bulletins

I

Volume 1

II

Volume 2

II

iii

Volume 3

IjLy?I~~~ 4

II

program

An introductory user manual is a tutor ial introduction to a software
product.
In other words, use of the product is explained in a

step-by-step, user-friendly format· that walks you through same
fundamental
aspects of
the
product.
When you complete the
introductory manual, you have· the experiential basis for understanding
the products's user reference manual.
User reference manuals are written for those who are new to the
product (but who have read the introductory user manual) as well as
for the experienced user.
Systan manager reference manuals contain information for those who
perform administrative tasks associated with routine system operation.
Programmer reference manuals are written for programmers who at
understand programming fundamentals.

iv

least

WMCS LINK PrograIIlIIer Reference Manual
Table Of Contents

CHAPI'ER 1
1.1
1.1.1
1.1.2
1.2
1.2.1
1.2.2
CHAPI'ER 2
2.1
2.2
2.2.1
2.2.2
CHAPI'ER 3
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
CHAPI'ER 4

4.1
4.1.1
4.1.2
4.1.3
CHAPI'ER 5
5.1
5.2
5.3
5.3.1

OVERVIEW

'!HE RCLE OF THE LINKER
Program Modules • • • • • •
Compilation And Assembly
LINK FUNCTIONS
•••••
Executable-irrage File
Cross Reference Map File

· . . . . 1-1

••• 1-1
1-4
• 1-4
• 1-4
1-4

SYMBOLS AND REFERENCES

DEFINITION
TYPES

Local Symbols
Global Symbols

. .. . . . . . . . . .

•
•
•
• • • •

2-1
2-2
2-2
2-3

OBJECI' MJDULES

3-1
• • • • • • • • • • 3-5

DEFINITION
REroRD TYPES
Delimiter
• •
Code
• • •
Constants/labels
Global Symbols

· . . . .
• • • • •
• •
. . . . . . . . . . .

3-5
3-6
3-6
3-6

•
•
•
•

4-5
4-6
4-6
4-7

• • • • • • •
.,
., ••
• • • • • • •

5-1
5-2
5-3
5-3

IMAGE CREATION

BIT MAP

• • • • • • •

Disk Memory Correspondence
Initial Memory Allocation ••
Shared Memory Page
....,.

....

LIBRARIES
DEFINIro A LIBRARY
PR.EI,INK

• • • • • • • • •

REFERENCrnG LmRARIES
Default Library ••

v

....•

Table of Contents

5.3.2
APPENDIX A

Other Libraries

..............

5-3

'mOOBLESEOOl'ING

A.I

LINK DIAGOOsrIC MESSAGES

A.2
A.2.1
A.2.2

MISCELLANEaJS ERRORS

....
File Empty Or Does Not Exist
••

Invalid Symbol Address

••••

APPENDIX B

EXAMPLE OF PROGRAM DEVElDPMENl'

APPENDIX C

RELOCATABLE MJOULE FOR-mT

APPENDIX D

CROSS REFERENCE MAP LISTING

APPENDIX E

BIT MAPS AND RECORDS

vi

•• A-I
• A-I
•• A-2
• A-2

TYroGRAPHlCAL CDNVENTIONS USED

rn

'!HIS MANUAL

Uppercase letters within text indicate sample command line character
strings, file designations, diagnostic messages, and reports. Such
samples are in upt:ercase when run into the text so that you can
distinguish what would be typed (or what would appear) on the screen.
Examples set off from the text are in lowercase.
Bold facing indicates what you should type onto the screen, i.e.,
whereas uppercase characters indicate sample character strtngs, etc.,
that are part of an example, bold faced characters indicate what you
must type as part of a procedure.
Square brackets, [], indicate a function key, the name of which
appears in uppercase within the brackets, e.g., [RETRN], [crRL], etc.
Underlining is used for emphasis.

vii

CHAPI'ER 1
OVERVIEW

The WICAT Multi-user Control Systen (WMCS) LrnK Program is a
programming tool used to prepare the output of a compiler or assembler
so that that output can be executed by the computer's hardware.
Therefore, LINK produces a file that is an executable inage.
The executable irrage has sharable and nonsharable segments.
segments can be shared by more than one process.

Sharable

LINK also creates a listing of symbols and addresses useful for
referencing.

cross

The description of the LINK Conmand, in the WIChT Mul ti-user Control
System (WMCS' ~ Reference ~1anual, tells you how to execute LINK.

1.1

'!HE ROLE OF THE LINKER

The object modules created by language translators (including
assemblers) are nonexecutable.
External symbol references are
unresolved.
Unresolved symbol references
include
run-time
modules
required by high level languages as well as
user-specified external declarations.
The linker binds the
symbol reference with the symbol definition and creates a memory
inage that can be read into memory and executed. Wi thout a
linker,
nodular prograrmning is irtp)ssible, and language
translators would be much more complex.

1.1.1 Program Modules

Modular programming, the process of combining separately
compiled or assembled modules into an executable iItage,
simplifies and enhances program development in the
following ways:
1. Smaller modules are easier to write and maintain
1-1

because it is easier to find and fix errors in a
smaller module.
2.

Many modules are applicable to more than one
task, and modules that have been used and tested
in other programs can be included
in
new
applications. This steeds program developnent.

3.

Complicated programming
requirements
are
simplified by breaking the requirements into
smaller tasks, each of which can be allocated to
a
different
person for implementation and
debugging.

4•

In sane cases, the best language for one module
may not be best for another part of the program.
Modular programming allows modules written in
different programming languages to be combined in
a single application. Thus the programmer can
use the language most suited to the application.

1-2

Figure 1.1 illustrates the role of the linker in modular
programming wherein TIME is a computer program that
interacts with the user to set the system clock on a WlCAT
system.
The interaction is achieved through a main
program written in WICAT Pascal. The clock is actually
set by an assembly language program written in WICAT
Assembler.

SET.ASM

TIME.PAS

Assembler

P."'_SCAL Compile!"

TIME.MRL

SET .MRL

LINK

TIME.EXE

Figure 1.1.

Modular Programming

1-3

1.1.2 Compilation And Assembly
LINK simplifies the work done by language translators
because it assigns code to executable p:iges.

1.2 LINK FUNCrIONS
LINK produces two files:
1. An executable-inage file (EXE is the file extension for
this file) •
2.

A cross reference-map file
for this file).

(Mrn

is the file

extension

These files are discussed in the following sections.

1.2.1

Executable-inage File
An executable-inage file

is file type number 1. The
record size of the file is 1024 bytes and the first record
of the image file contains bit maps. each of which is 256
bytes long.
These maps represent logical address stace.
Each of the bits in a map is a semaphore for a l-Kbyte
segment of address Stace.
The first map defines the
corresp)ooence between the records on the disk and their
ultimate location in memory. The secooo map defines the
initial memory allocation. The third map indicates which
pages can be shared.
The fourth map is not used on a WlCAT computer.

1.2.2 Cross Reference Map File
This file is a listing file
name and starting address.

1-4

that specifies each module

CHAPl'ER 2

SYMBOLS AND REFERENCES

LINK's primary responsibility is to resolve
between modules.

symbolic references

2.1 DEFINITION
A symbol is an identifying label or name associated with one or
more program statanents or data area. A reference is the use of
a symbol in a program statanent of data definition.
Figure 2.1 illustrates a sample program called TEST. The program
is written in Pascal and consists of one main routine and one
subroutine.

2-1

SYMBOLS AND REFERENCES

1 PRcx:;RAM TEST;
2
3 VM I
INl'EGER;

.

4
5

PROCEDURE INCREl-1ENT ;
6 BOO IN
7
I := I + 1;
8 END;
9
10 BEGm

11
12
13

I := 0;
INCRao1ENT ;
END.

Fig 2.1

Sample Program

These are the symbols used in TEST:
TEST

The name of the main routine

INCREl-1ENT

The name of the subroutine

I

The name of a data area or variable

These are the references used in TEST:
line 7

2.2

I is referenced twice

line 11

I is referenced once

line 12

The subroutine

IN~~

is called

'lYPES

Symbols are one of two types:
type differently.

2.2.1

local or global.

LINK treats each

Local Symbols
Local symbols can be referenced only
which the local symbols are defined.

in

the

routine

in

Note that for a program such as that in figure 2.1 (where
there are no local symbols) the compiler or assembler
resolves all references to local symbols.

2-2

SYMBOLS AND REFERENCES

2.2.2

Global Symbols
G100al symbols can be referenced by

routines other than
the routine that defines them. For example, in figure 2.1
all symbols are global because they are def ined by TES!'
(the main routine) and are therefore global to all
subroutines. LINK resolves global symbol references (see
chapter 4).

Global symbols are of two types:
1.

Internally defined symbols, defined in
program.

2.

Externally def ined symbols, def ined in a routine
that
is external to the main program, and
independently compiled (e.g., runtime routines
used by Pascal) •

2-3

the

main

CHAPrER 3
OBJECr MJDULES

3 .1

DEFINITION

The output (or object) file for the compiler or assembler is the
input file for LINK. An object file consists of modules. In the
case of the Pascal compiler, a discrete module is created for
each procedure in the program along with one for the main program
itself. An additional module is created for gldJal variables.
In chapter 2, figure 2.1, we examined a simple Pascal program.
Figure 3.1 illustrates the modules created by the compiler.
Incranent

Fig. 3.1

Test

Modules Created

By PASCAL

Globals

Compiler For

TEST

Program

A module can contain several records. An object record has
following hexadecimal format displayed in bytes:

I

IByte I

I Code I Code I

1Type ICount 1Relative AddresslByte IIByte 21

Fig. 3.2

the

I Code ICheck I
IByte nl Sum I

Object Record Format

This is an explanation of the terms aPt:earing in figure 3.2:
Type of object record described in
a label.

Byte Count

3.2,

Number of bytes in the record following
the record type (not including the byte
3-1

OBJECT M:>DULES

count itself) •
Relative Address

Relative address of the
the module.

code

bytes

Code Byte

In the case of a code type record, the
code
bytes
contain
the
actual
hexadecinal code for the module; in the
case of a symbol, the code bytes contain

in

a name.
Checksum

The checksum is the one I s complanent
the sum of the bytes.

Diagrams showing the format of each type of record are
app:ndix D.

found

of
in

Figure 3.3 shows the hexadecimal object file created by the
Pascal compiler for program TEST (shown in figure 2.1). Note,
the ~ree modules relating to figure 3.1.

3-2

OBJECl' MJOOLES

Relative

Tfl:e Coont Address
RP
Rl

05

R7

OA

R8

05

00000000
00000000
00000000
00000002
00000006

R2

OB

RP

05
OF
17
16
05

00000000
00000000
00000000
00000008
00000012

05
25
OB
16
16
OB
16
OF
OB
05

00000000
00000000
00000000
00000020
00000002
00000008
OOOOOOOE
00000014
0000001C
00000022
00000026

05
16
05
05

00000000
00000000
0000004C
00000000

Rl
R2

R7
R8

OC

Code/ASCII String/Checksum

FA
2E53544152542E09
4EF900000000AD
544553 543083
F4

Branch to start
of main progran

I FA
INCRE%ttENT roodule
I 494E4352454D454E5431lA
I 4E56FFFC2DOD527go00000~E4E5E4E7503
I 2450415343414C2D474C4F42414C242D32A8
lEa
I

RP
Rl

R2
R2

R7
R7
R7
R7
R7
R7
R8

OA

I
I
I
I
I
I
I
I
I
I
I

TESl' module

2450415343414C2D474C4F42414C242D32AE
2450415343414C2D474C4F42414C242D32A8
52525230303060
2450415343414C2D474C4F42414C242D329C
494E43524s4D454E5431FE
5252523030314B
D4

I

RI

Rl
R8
R9

Fig. 3.3

GIDBAL module
I FA
I 2450415343414C2D474C4F42414C242D32B0

lAB

IFA

Object File For TEST Program

Each record begins with a record label, 'R', followed by an
integer ,between 0 and 9 or one of the alphabet characters 'I' or
'P'. References to global symbols (subroutines. variables, etc.)
must be made using the M68000 absolute long addressing mode. In
the object file, using figure 3.3 as an illustration, all
references to internally and externally defined global symbols
(refer to chapter 2) are enclosed in a box. Note, all references
to internally def ined global symbols have an offset into the
global module while all references to externally def ined global
symbols have an address value of O. These global references can
be better understood by studying a listing of the assembly code
generated by the compiler for TEST. This listing is illustrated
in figure 3.4.

3-3

OBJECT

mDULES

WICAT Pascal Version 1.3
iprocedure: increment ( 1)
0000
4E56
a6,i-4
link
FFFC
0004
2DOD
move. 1 as ,-(a6)
0006
5279
il,74
ad~.w
0000
glcbal
004A
OOOC
2A5E
(a6) +,a5
IOOve.l
OOOE
4ESE
unlk
a6
0010
4E75
rts
iprocedure: test ( 0)
0000
2F3C
move. 1
0000
0006
0006
2F3C
move. 1
0000
0028
OOOC
4EB9
jsr
0000
0000
0012
4279
clr.w
0000
004A
0018
2A4E
IOOve.l
OOlA
4EB9
jsr
0000
0000
0020
4EB9
jsr
0000
0000
Fig. 3.4

i6,-(sp)
global
i40,-(sp}
global
xxxxxx
RRROOO
74
global
a6,aS
xxxxxx
INCREMENTI

xxxxxx
RRROOI

Assembly Code Generated By Compiler For TEsr Program

Note the following:
1.

Global reference for

I

following address 0006 in module:

INCREMENT

2.

Global references for
address 0012.

TEsr,

following

3.

External reference for runtime routine RRROOO
address C.

following

4.

External reference for
address lA.

following

3-4

I

in

module:

INCREMENT

module

5.

3 .2

External reference of runtime routine
address 20.

RRROOI

following

REXDRI) TYPES

There are four broad categories
records can be classified:

into which

1.

Delimiter.

2.

Code.

3.

Constant/label definitions.

4.

References to global symbols.

3.2.1

all

cbject module

Delimiter
There are six record t~s in this category, as defined by
the secooo character in the type field:
RP

Delimits a sharable segment;

RI

Delimits a nonsharable segment;

RO

Identifies the main program. The program name
is
coded in the code bytes.
This record
delimits the sequence of records pertaining to
the main program.

Rl

Identifies a module or subroutine.
The module
name is coded in the code bytes. This record
delimits the sequence of records pertaining to a
module.

R8

This record marks the end of a module.
'!he
address of the first free location };ast the end
of the module. LINK uses this offset from the
start of the rodule to determine where it can
start loading the next module.
'Ihl.s record
contains the amount of sp9.ce used by the module.

R9

This record marks the end of

pure storage.

the

irrpure storage.

cbject

An object file can contain several modules.

3-5

file.

0BJECr r-DDULES

3.2.2

Code
An R2 label indicates that

the

record

contains

program

code.

3.2.3

Constants/labels
There are four types
category:

3.2.4

of

object

records

found

in

this

R3

Identifies a local constant. The name is coded
in the code bytes. The relative address field
contains the value of the constant.

R4

Identifies a local label. The name is coded in
the code bytes.
The relative address field
contains an offset p:>inting to the labeled
location.

R5

Identifies a global constant.
in the code bytes.

R6

Identif ies a global label.
the code bytes.

The name is coded

The name is coded in

Global Symbols
Record type R7 identifies a reference to any global
symbol.
The relative address field is the location
(within the module) of the reference to the global symbol.

3-6

CHAPI'ER 4
I~E

CREATION

LINK reads relocatable object modules, resol ves references between
modules, and creates an image file that the operating systen can load
and execute.
relocatable modules are read in, they are placed in a virtual
address sI=Sce that resembles the address s{:Bce the program uses dur ing
execution. By convention, this address sI;ace is divided in half with
the lower half reserved for program code and constants. The upt;er
half is reserved for the stack and other variables.
'!he purpose of
this convention is to allow the non-changing or pure portions of
programs to be shared among several users. See figure 4.1.

As

4-1

I~E

CREATION

000000
Interrupt and Exception Vectors
(This page physically resides in
RCM and is shared by all users.)
001000
Pure Section
(This area contains constants and
code which may be shared between
users. )

100000
Impure Section
(This area contains variables and
data which may not be shared.)

lFEFFF
Fig. 4.1

User Stack
(The stack starts at lFEFFF and
grows towards low memory.)

I

I
I

Memory Map Of The 2-Mbyte Virtual Address Space

Space is allocated consecutively in these two segments. Allocation in
each area is controlled by a base };X)inter that };X)ints to the lowest
unallocated memory location. The };X)inter into the lower tlalf of the
address space is called Pure-Base and has an initial value of 1000
Hex. The };X)inter into the up~r half of the address sJ;Bce is called
Impure-Base and has an initial value of 100000 Hex.
As the relocatable modules are read

in, they are placed into the
virtual address spice relative to one of these two bases. The base
p::>inter chosen depends on the I RP I or I RI' type record that must be
the first record in a module. If the record is type 'RP' the module
goes into the lower half of the address spice. If the record is type
'RI' the module goes into the uP};:er half of the address sJ;Bce.
The end of a module is delimited by an IRS' type of a record.
The
address field of an ' RS I type record contains a count of the number of
bytes of memory used by the module. When a module has been completely
read in, the base };X)inter is incremented by the value of the address

4-2

I~E

field in the R8 record.
botton of free memory.

Thus the pointer oree

again

CREATION

points

to

the

Between the start and end of a module, three classes of records may be
encountered.
'nle first class causes data to be entered into the
virtual memory address space. The second class causes ~bols to
become defined. The third class marks a reference to a symbol.
There is only one instance of the first record class.
rrbis is the
'R2' type of record. This record causes bytes of data to be stored in
the virtual memory sp:lce.
The secooo and third record classes affect the linker symbol table
that is defined by the series of Pascal statements in figure 4.2.
TYPE

Symbol-Table
Next
Name
Value
Referenced

= Record
Symbol-Table;
Packed Array [1 •• 20] of Char;
Address
List-of-Undefined;

End;

List-of-Undefined = Record
List-of-Undefined;
Next
Value
: Address;
End;

Fig. 4.2

PASCAL Definition Of Linker Symbol Table

Pictorially, the symbol table corresponds to
4.3.

4-3

the

diagram

in

figure

I~ ~TION

I Syrnhead
List-hea~ Next

~
/'

4t1

Name

I Value

I Referenced

\

~

List-head I Next, I Value

I

I

t

I

4

I .Main.O

I FFFFFFFF I

"

I
~

~

~. 111111111111

I

o I 00001002 I

t

t

I

o I

Start

I 00001000 I

" """

I

"

I

r-

It

I

~.

I First

I 00001010 I

~

r+f
I
I

Fig. 4.3

Pictorial Representation of LINK Symbol

4-4

~ 111111111111

~. 111111111111
u

I 00001050 I

• I 00001058 I

IMAGE CREATION

The second record class consists of types ' RQ', 'Rl', , R5', and ' R6 ' •
These result in a symbol table entry being built if one does not yet
exist and cause the value field of the symbol table entry to become
defined.
The third record class consists of only record type 'R7 ' •
An
occurence of a type 'R7 I record causes a symbol table entry to be
buil t if one does not yet exist. An entry is then made into a list of
locations of undefined symbols that is associated with the symbol
table entry.
After all of the relocatable modules are read in, LINK procedes to add
the value field of each symbol table entry to all of the locations
where it is referenced as s~cified in the associated list of
references to undefined symbols.
After the undefined references
image file is created.

4.1

have

been

resolved,

the

executable

BIT MAP
The executable inage file has a record length of 1024 bytes. The
first record of this file contains bit maps each of which is 256
bytes long. These bit maps are:
1. Disk Memory Cor resI;X)ndence •
2.

Initial Memory Allocation.

3•

Shared Memory Page.

4. IDT USED.
These maps are arranged as shown in figure 4.4.

4-5

disk-rnemory corresIX'Dlence map

record 1

$OOa-OFF
initial memory allocation map
$lOa-lFF
shared memory page map
$200-2FF
(not used)
$30a-3FF
record 2
$400-???

Fig. 4.4

4.1.1

]mage File Format

Disk Memory CorresIX'ndence
The first bit map defines the relationship between the
2-Mbyte logical address st;:ace and the records of the
executable inage file. Each bit of this map corresIX'oos
to 1024 bytes of memory.
If the bit is set, the next
record from the executable inage file is read into memory
at the location corresIX'ooing to the bit position.

4.1.2

Initial Memory Allocation
The second bit map indicates which pages of memory should
be
allocated to the new process.
Again, each bit
corresIX'DlS to 1024 bytes in the 2-r-tJyte address spice.
The operating systen allocates memory to 4096-byte pages.
Therefore, the setting of any of the bits on the tBge
causes the full 4096 bytes to be allocated.

4-6

IMl'GE CREATION

4.1.3

Shared Memory Page
The third bit map is the memory-protection bit map.
'!be
setting of any of the bits within the range corresp:>rrling
to a 4096-byte page causes the full 4096 bytes to be write
protected by the operating systan. This process makes the
page sharable because the contents cannot be changed.
There is sI:Bce for a fourth bit map that is unused at this
time and is assumed to be zero.

4-7

CHAPl'ER 5

LmRARIES

LINK uses
undefined
input.

5.1

the content of a libraty definition file to resolve
references after all the user-s~ified files have been

DEFINING A LIBRARY
To define a library, you create a file containing a list of
equivalences.
An entry in this file is a symbolic name that can
be referenced followed by the filename of an object module that
def ines the symbolic name.
You can create this file as a normal text file by using the VEW
Program (read the Virtual Editing Window (YEW) ~ Reference
~.anual).
The standard extension for a library definition file is
.DEF.
When referencing a file in an entry, you should enter the
filename in upt:ercase and include the file extension.
A line that begins with an ampersand, @, indicates indirection
through another library definition file.
In this case, LINK
resJ:X)rxls as though the contents of the other file had been
inse rted at this J:X)int.
Figure 5.1 is an example of a library definition file.

5-1

LIBRARIES

••• Symbolic Name ••• I •••••••••• File Name ••••••••••
1

2

3

12345678901234567890

4

5

123456789012345678901234567890
I

RRRCCO
I J)SO/PRTLm/INIT.MRL
RRROOI
I J)SO/PRTLm/EXIT.MRL
JU'I'S'I'Iillli
I J)SO/PRTLm.5VC/PUTSTR.MRL
LDSO/RLm/AID'IHER-DEF

Fig. 5.1

5.2

Libra~

Definition File

PRELINK
When LINK is ready to use a file, it must translate the name of
the file to get the File Control Block (PCB) number assigned to
the file. You can often save time during the linking process by
performing this translation as a separate step. The PRELINK
Program does this. Execute PRELINK by typing either of the
following command-line character strings and then striking
[RE'mN] :

> prelink linklib.def
or

> prelink _dsO/syslib/linklib.def
PRELINK assumes the file has a .DEF extension if no file
extension is specified in the PRELINK command-line character
string.
PRELINK adds another column to the list of equivalences in the
.DEF file.
This column consists of the PCB numbers of the
specified files. See figure 5.2 for an example of a libra~
definition file after processing by PRELINK •
••• Symbolic Name •• ~I •••••••••• File Name ••••••••••• 1••••• PCB Number ••••••
I

1

I

3

21

4

51

6

7

12345678901234567890 I 123456789012345678901234567890 I 12345678901234567890

------------------·~I--------------------------+-----------------

RRRCCO
I J)SO/PRI'Lm/INIT.MRL
I J)SO//#96.1
RRROOI
I J)SO/PRTLm/EXIT.MRL
I J)SO//#97 .3
.....PUTSTRnX;
I J)SO/PRI'Lm.5VC/PUTSTR.MRL
I ,.])SO//#106.1
LI:M)/RLm/AID'IHER.DEF
Fig. 5.2 Libra~ Definition File After Processing By Prelink

Note:

PRELINK creates a new version of the library definition
file in the same directory as the original file. To
5-2

LIBRARIES

conserve disk stBce, you may want to purge
definition files after running PRELINK.

5.3

old

library

REFERENCING LIBRARIES
5.3.1

Default Library
LINK always references the file LINKLm.DEF, found in
directory /SYSLm/
on
the
systan
disk.
OUr ing
initialization, LINK reads the contents of this file to
make the names of library routines available to programs.

5.3.2

Other Libraries
To reference another library definition file, use
: LmRARY switch on the command line. For example:

the

> link one,two,three :library=test
The foregoing command tells LINK to link files ONE,
and THREE and reference TEST.DEF as a library file.

5-3

'IWO ,

APmNDIX A
TRaJBLESBJOrING

A.I

LINK DIAGNJSl'IC MESSAGES
These are the diagnostic message associated with LINK:
Display Undefined Symbols
Checksum Error In Reading Relocatable Module
Unexpected End of File While Reading Relocatable Module
Address Of Undefined Reference Accesses Unallocated Disk
Page
Open Error (WMCS diagnostic message number)
Read Error (WMCS diagnostic message number)
Write Error (WMCS diagnostic message number)
Close Error (WMCS diagnostic message number)
Delete Error (WMCS diagnostic message number)

A.2

MISCELLANEClJS ERRORS

Certain conditions lead to errors that do not give the preceding
error messages.
Same of these conditions are discussed in this
section.

A-I

TRaJBLESHOal'ING

A.2.l

File Empty Or Does Not Exist
If a s}:ecified file is empty or cbes not exist', the
message I Unexpected end of file encountered while reading I
is displayed followed by the name of the file.
'nle
solution is to use the ~PE Command to display the
contents of the file. Be certain to sI;Ecify the filename
given in the diagnostic message.

A.2.2

Invalid Symbol Address
LINK does not check the validity of symbol addresses.
If
for sane reason, a symbol has an offset beyond the end of

its module, this error can hapI;En to be caught during the
process of adding the actual address to the location of an
undefined reference.
'nle solution is to examine the
source modules for unreasonable address offsets.

A-2

APmIDIX B

EXAMPLE OF

PR~

DEVELOPMENr

. The diagram on the next page shows how files produced by the assembler
and
higher-level language compilers nay be linked to form an
executable inage. A number of relocatable code (.MRL) files can be
linked in one operation.

B-1

EXAMPLE OF PRCX'.iRAM DEVELOPMENT

Assembly
Source

Pascal
Source

PRCGl.ASM

PRCG2.PAS

Assembler

Pascal
Ccmpiler

Print File

Print File

PRCGl.PRN

PRinter to form the
address of the first free location :t;Bst the end of the module. The
address of the first free location p:lst the end of the roodule then
becomes the new location pointer.

C-3

RELOCATABLE K:>DULE FORMAT

ROC

BYTE

TYPE NV
A7 x IP P/(B'
50 HnIN@ IL P
A7/(B'HnIN@B'
4F B'B'HnIN@'-(O
OC B 1nD /
FC n8 lQ@11
04 n*Jo& f
20 S'rB(So
06 fvS'SHhR'V
4F 2F 2C ,?HoB'B'B' ,0/,
00 48 E7 /,/,NVHg
3C 00 01 I/.Bg'?<'?<
67
OC
B9
B9
7C
04
00
04
24
55
OE
6E

N9R/.HzBg
N9$ IL •
/.Bg'?<'?HzN9
-'-EXECUTING "J

4F 4F UMP TO HERE" LOO

4E 54 P IN PASCAL pr--n
FO CO IMENVlHgp@

BIT MAPS AND REXDRDS

OOOOOSAO 20 6E
000008BO 42 53
000008CO 00 OF
00000800 52 83
000008EO B2 83
000008FO 4A 81

ReCord

00
24
OC
4A
6C
67

OE
2E
01
82
OC
28

70
00
00
66
22
B6

14
OA
09
E2
4E
81

22
22
6F
32
20
6A

4E
4E
02
2E
01
08

13
22
5E
00
13
11

3C
02
01
08
3C
7C

00
E8
06
48
00
00

20
SA
01
Cl
2A
20

53
02
00
6A
53
00

80
81
30
02
80
20

66
00
13
22
6E
60

F8
00
01
03
F8
04

npnN< Sfx
B$.nNnh
OAO
PJfb2 .HAj n
21 nN <*Snx
Jg(6jl '

00000900 11 59 00 20 11 7C 00 01 00 00 11 7C 00 01 00 01
00000910 2F 08 4E B9 00 00 15 30 53 81 60 D4 2D 6E 00 04
00000920 00 OE 4C DF 03 OF 4E 5E DF FC 00 00 00 OA 4E 75
00000930 4E 56 FF EE 2F 08 20 6E 00 08 4A 28 00 00 67 IE
00000940 61 00 00 92 52 A8 00 10 42 28 00 00 42 28 00 01
00000950 2D 6E 00 04 00 08 20 SF 4E 5E 58 SF 4E 75 48 7A
00000960 00 lC 60 04 48 7A 00 4C 4E B9 00 00 13 FE 2F 08
00000970 4E B9 00 00 13 9E 4E F9 00 00 14 50 52 52 52 30
00000900 32 32 20 2D 2D 20 50 55 54 20 2D 2D 20 20 46 49
00000990 4C 45 20 43 4F 4D 50 4F 4E 45 4E 54 20 44 41 54
000009AO 41 20 49 53 20 4E 4F 54 20 56 41 4C 49 44 OD OA
000009BO 00 00 52 52 52 30 32 32 20 20 2D 2D 20 50 55 54
000009C0 20 2D 2D 20 20 57 52 49 54 45 20 46 41 49 4C 45
000009DO 440D OA 00 48 E7 80 60 42 AE FF FC 4A 28 00 OC
000009EO 67 08 2D 7C 00 00 00 03 FF FC 4A 68 00 18 67 00
000009FO 00 SA 42 6E FF EE 3D 68 00 18 FF FO 42 6E FF F2

Y 1I
/N90S'T-n
k$'_INu
NVn/ nJ(g
aR(B(B(
-n ~uHz
'HzLN9-/
N9NyPRRRO
22 - PUT -

FI
LE CDMIDNENT DAT
A IS NOT VALID
RRB022 -- PUT

WRITE FAILE
DHg'B.IJ(
g-I IJhg
Bnn=hpBnr

2

OOOOOAOO 3D 68 00 14 FF F4 20 28 00 10 90 A8 00 lC 52
OOOOOAlO BO AE FF EE 5C EE FF FA CO E8 00 14 43 E8 00
00000A20 24 49 D5 CO 20 2E FF F2 60 02 14 D9 51 C8 FF
00000A30 4A 2E FF FA 67 00 00 3E 2F 28 00 08 2F 28 00
00000A40 2F 2E FF FC 2F 3C FF FF FF FF 48 68 00 20 20
OOOOOASO FF F2 D1 97 2F 2E FF EE 48 6E FF F6 48 68 00
00000A60 4E 40 00 05 4A A8 00 04 66 00 FE FA 20 2E FF
00000A70 Dl A8 00 lC 4C DF 06 01 4E 75 2F 28 00 08 2F
00000A80 00 10 2F 2E FF FC 2F 3C FF FF FF FF 48 68 00
00000A90 2F 3C 00 00 00 01 48 6E FF F6 48 68 00 04 4E
OOOOOAAO 00 OS· 4A A8 00 04 67 CC 60 00 FE BA 4E 56 00
OOOOOABO 2F 08 20 6E 00 08 4A 28 00 02 66 24 4A 28 00
OOOOOACO 66 08 2F 08 4E B9 00 00 17 28 42 28 00 00 52
OOOOOADO 00 10 2D 6E 00 04 00 08 20 SF 4E 5E 58 SF 4E
OOOOOAEO 48 7A 00 16 4E B9 00 00 13 FE 2F 08 4E B9 00
OOOOOAFO 13 9E 4E F9 00 00 14 50 52 52 52 30 32 31 20

20
FC
lC
2E
04
EE
28
20
40
00
00
A8
75
00
20

80 =ht «R

OOOOOBOO
OOOOOBlO
00000B20
00000B30
00000B40
OOOOOBSO
00000B60
00000B70

6E
00
03
lC
OC
03

O.n\nz@hCh
$IU@ .r'YQHI
J.zg>/(/(
/ .I/-d
&,0
6HR
TAj

rxFf
nt08
>$,
2

BIT MAPS AND RmJlIDS

00001700 00 00 00 00 00
00001710 00 00 00 00 00
00001720 00 00 00 00 00
00001730 00 00 00 00 00
00001740 00 00 00 00 00
00001750 00 00 00 00 00
00001760 00 00 00 00 00
00001770 00 00 00 00 00
00001780 00 00 00 00 00
00001790 00 00 00 00 00
000017AO 00 00 00 00 00
000017B0 00 00 00 00 00
000017CO 00 00 00 00 00
00001700 00 00 00 00 00
000017EO 00 00 00 00 00
000017F0 00 00 00 00 00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

E-10

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
0000
00 00
00 00
00 00
00 00
00 00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

WICAT Systems, Inc.
Product-documentation Comment Form
'IVe are constantly improving our documentation. and we welcome scecific comments on this manual.

Cccument Title: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

~

Part Number:

Your Position:

CJ

Experienced user

o System manager
o Systems analyst

a

AJ:)plications programmer

o

0 Novice user

Hardware technician

Questions and Comments
Brieffy describe examcles. illustrations. or information that you think should be added
to this manual.

What would you delete from the manual and wny?

What areas need greater emphasis'?

Ust any terms or symbols used incorrectly.

,7a~o, -009 a

Page No.

First Fold

NC ::lCSiAGE
NECESs;.~y

IF MAILED
IN rHE

UNITEe SiATES

BUSINESS REPLY MAIL
~,~

CL,;.SS

~SI'AGi Wlu.,

~MIT

ae

~IO

ae

NO. 00028

C~EM.

ufAI-4

AOO~Essee

WICAT Systems, Inc.
Attn: Corporate Communications
1875 S. State St.
Orem, UT 84058

Second Fold

Tace

-

........



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2011:08:02 13:58:27-08:00
Modify Date                     : 2011:08:02 16:56:49-07:00
Metadata Date                   : 2011:08:02 16:56:49-07:00
Producer                        : Adobe Acrobat 9.45 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:496b5476-2265-41ef-a57d-a91a751cc0ea
Instance ID                     : uuid:b08cb4bf-64fe-4baa-9a5c-203442bb231b
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 58
EXIF Metadata provided by EXIF.tools

Navigation menu