Skip to main content

Full text of "fps :: FPS100 Linker"

See other formats


FLOATING POINT 
SYSTEMS, INC. 




FPS-iOO 

Linker 
CLIMKHOOJ 



Manual 

860-7441-000 



Publication No. 860-7441-000 
October, 1979 



NOTICE 



This edition applies to Release A of 
FPS-lOO software and all subsequent 
releases until superseded by a new 
edition* 



The material In this manual is for 
informational purposes only and is 
subject to change without notice* 



Floating Point Systems, Inc. assumes no 
responsibility for any errors which may 
appear in this publication. 



Copyright © 1979 by Floating Point Systems, Inc. 

Beaverton, Oregon 97005 



All rights reserved. No part of this publication 
may be reproduced Jii any form or by any means 
without permission in writing from the publisher. 



Printed in USA 



by FPS Technical Publications Staff 



FPS-^OO 

Linker 
CLIMKHOaS 



Manual 

860-7441-000 



Publication No. 860-7441-000 
October, 1979 



NOTICE 



This edition applies to Release A of 
FPS-lOO software and all subsequent 
releases until superseded by a new 
edition. 



The material in this manual is for 
informational purposes only and is 
subject to change without notice. 



Floating Point Systems, Inc. assumes no 
responsibility for any errors which may 
appear in this publication. 



Copyright © 1979 by Floating Point Systems, Inc. 

Beaver ton, Oregon 97005 



All rights reserved. No part of this publication 
may be reproduced :Ln any form or by any means 
without permission in writing from the publisher. 



JPrlnted in USA 



CONTENTS 



Page 



CHAPTER 1 


1. 


.1 


1. 


2 


CHAPTER 2 


2. 


1 


2. 


.2 


2. 


3 


2. 


4 


2. 


5 


2. 


6 


2. 


7 


2. 


8 


2. 


9 


2. 


10 


2. 


11 


2. 


12 


2. 


13 


2. 


.14 


CHAPTER 3 


3. 


1 


3. 


2 


3. 


3 


3. 


4 


3. 


5 


3. 


6 


3. 


7 


3. 


8 


3. 


9 


3. 


10 


3. 


11 


3. 


12 



OVERVIEW 

INTRODUCTION 
RELATED MANUALS 



OPERATING PROCEDURE 

SUMMARY 

CONVENTIONS 

LOAD (L) 

S-MBOLS (S) 

UNDEFINED (U) 

NE3Cr BASE (B) 

RESET (R) 

FORCE (F) 

MEMORY (M) 

END (E) 

END WITH ASSEMBLY CODE (A) 

NUMBER RADIX (N) 

EXIT (X) 

AN EXAMPLE LOADING SESSION 



OBJECT MODULES 

INTRODUCTION 

CODE BLOCK (0) 

END BLOCK (1) 

TITLE BLOCK (3) 

ENTRY BLOCK (4) 

EXTERNAL BLOCK (5) 

LIBRARY START BLOCK (6) 

LIBRARY END BLOCK (7) 

DATA BLOCK DESCRIPTOR BLOCK (10) 

DATA BLOCK INITIALIZATION BLOCK (11) 

FORMAL PARAMETER BLOCK (12) 

ALTERNATE ENTRY BLOCK (13) 



1-1 
1-2 



2-1 
2-2 
2-2 
2-3 
2-4 
2-4 
2-5 
2-5 
2-5 
2-6 
2-7 
2-7 
2-7 
2-8 



3-1 
3-2 
3-3 
3-4 
3-4 
3-5 
3-5 
3-5 
3-5 
3-6 
3-6 
3-6 



FPS 860-7441-000 



iii 



CHAPTER 4 



LNKIOO OUTPUT 



4.1 
4.2 
4.3 
4.4 
4.5 



INTRODUCTION 

SOURCE PROGRAM AND OBJECT MODULE 

LOAD SESSION 

OUTPUT FROM THE E COMMAND 

OUTPUT FROM THE A COMMAND 



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



Page 



CHAPTER 3 



ERROR MESSAGES 



5.1 
5.2 



GENERAL INFORMATION 
MESSAGES 



5-1 
5-2 



APPENDIX A 



SUMMARY OF LNKIOO COMMANDS 



INDEX 



ILLUSTRATIONS 



Figure No. 


Title 


4-1 


ASMIOO Source 


4-2 


Object Module 


4-3 


E Conmiand Load Module 


4-4 


A Command Load Module 



4-1 
4-2 
4-3 

4-4 



TABLES 



Table No. 



Title 



1-1 
A-1 
A-2 



Related Msmuals 
Abbreviations 
Command Summary 



1-2 
A-1 
A-2 



FPS 860-7441-000 



Iv 



CHAPTER 1 



OVERVIEW 



1.1 INTRODUCTION 

LNKIOG links together separate object modules produced by ASMIOO into a 
single load module for execution by the FPS-lOO hardware or the 
simulator. 

The user can separately code and assemble a main line program and the 
associated subroutines and later link them together for execution. 
LNKIOG serves this purpose by performing the following tasks: 

• relocating each object module and assigning absolute addresses 

• linking the modules together by correlating global entry sjrmbols 
defined in one module with external symbols referenced in 
another module 

• selectively loading modules from program library 

• optionally producing a load map showing the layout of the load 
module 



FPS 860-7441-000 1 - 



1.2 RELATED MANUALS 

The manuals in Table 1-1 may also be of interest to the user. 



Table 1-1 Related Manuals 



MANUAL 


PUBLICATION NO. 


FPS-lOO Math Library Mimual 


FPS 860-7429-000 


ASMIOO Reference Manual 


FPS 860-7428-000 


SIMIOO/DBGIOO Reference Manual 


FPS "860-7424-000 


FPS-lOO Programmer's Reference Manual 


FPS 860-7427-000 


Volumes One and Two 




VFCIOO Manual 


FPS 860-7447-000 


APXIOO Manual 


FPS 860-7426-000 



FPS 860-7441-000 



1 - 



CHAPTER 2 



OiPERATING PROCEDURE 



2.1 SUMMARY 

Program modules are linked interactively via a dialogue between the 
user and LNKIOO. The user enters a series of commands which direct the 
linking process • 

When execution begins, LNKIOO displays: 

LNKIOO version date 
* 

The version is the version number of LNKIOO, and date is the release 
date of LNKIOO. The asterisk (*) indicates that the program is ready 
to accept commands. • After each user command, an * is displayed ^en 
that command has been executed and ASMIOO is ready for a new commaind. 
An illegal command causes a ? to be displayed. 

To load relocatable programs and prepare them for execution, the user 
would normally use the following procedure. 



1. Using the L (load) command, load the file or files 

containing the desired main program, required subroutines, 

and librairy subprograms, if any. If a fatal error occurs 

during this step, reinitialize using the R command and 
repeat this step. 



2. Using the U (undefined) command, check to see if any global 
symbols are still undefined. If nothing is listed from 
this command, continue to step 3. If any symbols are 
listed, it usually means that there was an error in one or 
more of the programs loaded or that the loading sequence 
was wrong. In these cases, correct the error and restart 
the loading operation from step 1. 



3. Obtain the memory limits of the loaded program or a loader 
map by using the M (memory) or S (symbols) command. 



FPS 860-7441-000 2 - 



4. Complete and generate the load module by using the E (end) 
command or the A command. Note the values of HIGH and 
START as well as the possible presence of any remaining 
undefined symbols. 

5. Rfiturn to the operating system with an X (exit) command. 

The individual LNKIOO commands are described in the following sections, 
and a complete example loading session is given in section 2.14. 



2.2 CONVENTIONS 

The following abbreviations are used in the remainder of this manual: 



Abbreviations Meaning 

(filename) A user-specified input or output file. The 

(filename) follows whatever naming conventions 
exist for the particular host computer 
operating systems. 

* This is the terminal prompt indicating that 

the terminal is ready for input. 



Indicates characters entered by the user. All 
user input is terminated with a carriage 
return. 



The examples given are illustrative only, as file and I/O device names 
vary from system to system. 



2.3 LOAD (L) 

To load a program module, or a program library, enter: 

L 
(filename) 

where (filename) is the name of the file containing the desired program 
or library. 



FPS 860-7441-000 2 - 



Example; 



L 
FFT.RB 



This example loads the program contained on file FFT.RB. 



In loading routines, the first entry point defined becomes the name of 
the host source output. An entry point can be made the first entry 
point by entering a force (F) command without having loaded an object 
module previously. 



2.4 SYMBOLS (S) 

To list the global (external and entry) symbols, enter: 

S 
(filename) 

where (filename) is the name of the file (or I/O device) to receive the 
symbol listing. The output of the loader map is as follows. 



HIGH - aaaaaa 
SYMBOL TABLE 
SYMBOL 



VALUE 



ssssss 



nnnnnn 



where: 



aaaaaa Highest program address so far loaded. Normally, 
the next program is loaded starting at location 
HIGH+1. 



ssssss 
nnnnnn 



U 



Symbol name. 

Symbol value. If undefined, this is the last 
location loaded which referenced this symbol. If 
defined as a constant (with the $GLOBAL pseudo-op), 
this is Che value of the constant. If defined as an 
entry symbol, this is the program source address of 
the entry symbol. 

If present, this indicates that the symbol is as yet 
undefined . 



FPS 860-7441-000 



2 - 



Example: 

TTY 

This example lists the loader symbol table at the terminal. (Some 
systems, however, may require a different parameter to indicate the 
user terminal.) 



2.5 UNDEFINED (U) 

To list at the terminal any presently undefined global symbols, enter: 

U 
(filename) 

where (filename) is the file to receive the list of undefined symbols. 
The list format is: 

ssssss nnnnnn 

where ssssss is the symbol name, and nnnnnn is the location of the last 
program instruction which referenced the symbol. 



Example: 

* 

U 
TTY 

This example lists the names of any undefined symbols at the terminal. 

2.6 NEXT BASE (B) 

To specify a base address at which to load the next program, enter: 

B 
(loc) 

where (loc) is the location specified. 

Example: 

B 
200 

This example sets the next location loaded to location 200. 
FPS 860-7441-000 2-4 



2.7 RESET (R) 

To reset LNKIOO, enter: 

R 

This reinitializes the program to Its Initial state* The symbol table 
Is cleared, any previously loaded programs are disregarded, and the 
next location Is set to zero. This command mtist be given following a 
fatal error. 



2.8 FORCE (F) 

To force loi^dlng of a program module from a library, enter: 

F 
(name) 

where (name) Is the n.ame of the symbol to be forced. This command 
enters (name) Into the symbol table as an external symbol. This causes 
the loading of a library program which has (name) as an entry symbol. 



Example : 

F 
DOTPRD 

This example forces the loading, from any subsequently loaded library 
file, of any program that defines the symbol DOTPRD as an entry symbol. 



2.9 MEMORY (M) 

To get the address of the highest program source memory location so far 
loaded, enter: 

M 
The information is printed as follows: 

HIGH « aaaaaa 
where aaaaaa is the highest address so far loaded. 



FPS 860-7441-000 2 - 



2.10 END (E) 

To end a load module and generate the completed load module for use 
with DBG 100 or SIM 100, enter: 

E 
(filename) 

where (filename) is the name of the file to receive the loader output. 
The output is a core image which can be loaded by DBGIOO and executed 
by either the simulator SIMIOO or the hardware. 

LNKIOO lists the following information at the user terminal; 

HIGH - aaaaaa 

where aaaaaa is the highest program address loaded* If any symbols 
were still undefined, LNKIOO lists: 

(num) UNDEFINED S'ZMBOLS 

where (num) is the number still undefined. A value of is used in 
linking these undefined symbols. 



Example : 



E 
SAVE 



This example stores the completed load module into file SAVE. 



The E (or A) command causes links between global symbols in the 
completed load module to be frozen. The load module can be generated 
again (with another E or A command), but no further links can be added 
(with an L command) . 

To work on another load module, a reset (R) command must be given to 
clear the linker. 



FPS 860-7441-000 2 - 



2.11 END WITH ASSEMBLY CODE (A) 

To end a load module and generate the completed load module as host 
computer code (for use with APXIOO), enter: 

A 
(filename) 

where (filename) is the name of the file to receive the loader output. 
This output is a host FORTRAN (or possibly assembly) language 
subroutine, which is the linkage between host computer FORTRAN calls 
and the FPS-lOO executive. The FPS-lOO code in the load module follows 
the host subroutine and is in the form of data statements. 

Information concerning the highest address loaded into, and any 
undefined symbols, are listed at the user terminal as described 
previously for the E command. 



2.12 NUMBER RADIX (N) 

To set the radix for numeric input/output to and from the user 
terminal, enter: 

N 
(radix) 

where (radix) is either 8 (for octal), 10 (for decimal), or 16 (for 
hexadecimal). The default radix for user I/O is set to one of these 
choices at installation. 



2.13 EXIT (X) 

To exit to the operating system, enter: 

X 

Notice that the X command does not cause any output. The E or A 
command must be used to generate a load module. 



FPS 860-7441-000 2 - 



2. 14 AN EXAMPLE LOADING SESSION 



This section contains an example loading session^ 



LNKIOO 



Call Linker 



LNKIOO REL. 1.00 , 9/01/79 



000004 U 



PROG 1. OB J 

U 

TTY 
DIV 
* 

L 
APLIB 

LOAD COMPLETE 
* 

S_ 
TTY 

HIGH-000042 



Load PROGl.OBJ 

List any undefined symbols 
at the terminal 

DIV subroutine is undefined 
Load DIV from subroutine 
library 



List global external and entry sjnnbols 



SYMBOL TABLE 

SYMBOL VALUE 
PROGl 000000 
DIV 000007 



PROGl .SIMIOO 



PROGl 



HIGH-000042 



Create PROGl. SIMIOO to run on the simulator 



PROGl. SOURCE 



PROGl 



HIGH-000042 



Create PROGl. SOURCE (host FORTRAN or assembler) 
to run on host system 

End (return to the operating system) 



END LNKIOO 



FPS 860-7441-000 



2 - 



CHAPTER 3 



OBJECT MODULES 



3.1 INTRODUCTION 

The relocatable object modules produced by the ASMIOO assembler, which 
are used as Input to LNKIOC, consist o£ numbers written as octal 
characters. Unlike most relocatable binary code, this code can be 
displayed at a terminal and edited with an ordinary text editor. 

The relocatable object code is divided into a series of blocks. The 
order in which the blocks appear, if each type is present, is generally 
as follows (the octal block type number is in parentheses): 



1. library start block (6) 

2. title block (3) 

3. data block descriptor blocks (10) 
A. parameter block (12) 

5. data block initialization blocks (11) 

6. alternate entry block (13) 

7. entry block (4) 

8. code blocks (0) 

9> external block (5) 

10. end block (1) 

11. library end block (7) 

NOTE 

The data block description, parameter, data block 
initialization, and relocatable entry blocks are 
not processed by LNKIOO. If encountered, LNKIOO 
ignores these blocks. 



FPS 860-7441-000 3 - 



An object module must contain, a title block and an end block. The 
presence and ordering of other types of blocks depend on the particular 
program. 

The first line of each block is a block header, which describes the 
remainder of the block. The block header is easily identified because 
it contains the characters "***" followed by the name of the block. 
The remainder of the block contains data records. 

Blocks are described in the following paragraphs , in order of their 
block type numbers (again, in octal). 



3.2 CODE BLOCK (0) 

Header : 

count location ***CODE 

count This specifies the number of data records 
that follow. 

location This specifies the address relative to the 

start of the routine where the code is loaded. 



Data record: 



* code, code- code, code^ flddes type arg ...flddes type arg 

* The asterisk at the beginning of the line 

is optional, but it is present if any field of 
the Instruction is to be relocated or contains 
an e^cternal reference. 

code.- These are four 16-bit unsigned octal numbers, 

code. They make up the code for one FPS-lOO 



'4 



instruction word. 



FPS 860-7441-000 3 - 



The optional triples at the end of the data record are used to define 
the fields in the instruction word that are to be relocated. 



flddes 



type 



arg 



This is the field designator, specifying 
which field to relocate. Possible values 
are: 

value field 

This specifies the type of relocation. 
Possible values are: 

1 program source relocatable 

2 external reference (absolute) 

3 DB reference 

4 relocation via the .LOCAL block 
of a subroutine 

5 external reference (relative) 

Type 5 is the only type processed by LNKlOO. 

The value of arg depends on the type 
specification. If type is 2, 4, or 5, arg 
specifies an external. If type is 3, arg 
specifies a data block. If type is 1, arg 
is ignored. Type 5 is the only 
type processed by LNKlOO. 



3.3 END BLOCK (1) 
Header : 

1 ***END 



Data record: 
title 

title 



This specifies the title of the routine 
(the same as appears in the title block) 



FPS 860-7441-000 



3 - 



3.4 TITLE BLOCK (3) 
Header : 

3 ***TITLE 



Data record: 
title 

title 



This specifies the title of the routine. 



3.5 ENTRY BLOCK (4) 
Header : 

4 count ***ENTRY 
count 



This specifies the number of data 
records that follow. 



Data record: 

symbol value 
symbol 
value 

type 



paramnum 



type paramnum 

This is a six-character entry symbol. 

This specifies the value of the S3nnbol. If the 
symbol is relocatable, this v£due is relative 
to the start of this routine. 

This indicates the type of symbol. Possible 
values are: 

absolute 

1 relocatable (ignored by LNKIOO) 

This indicates the number of parameters 
assoc:Lated with the entry point. It is not 
present if type is 0. 



FPS 860-7441-000 



3 - 



3.6 EXTERNAL BLOCK (5) 
Header : 

5 count ***EXr 



count This specifies the number of data records 
that follow. 



Data record: 
symbol 

symbol This is a six-character external sjnnbol name. 

3.7 LIBRARY START BLOCK (6) 
Header : 

6 ***LSB 

3.8 LIBRARY END BLOCK (7) 
Header : 

7 ***LEB 

3.9 DATA BLOCK DESCRIPTOR BLOCK (10) 
Header : 

10 count symbol dest ***DBDB 

Data record: 

type number 



FPS 860-7441-000 3-5 



3. 10 DATA BLOCK INITIALIZATION BLOCK (11) 
Header: 

11 count ***DBIB 



Data record: 

Id location type re value 



3.11 FORMAL PARAMETER BLOCK (;L2) 
Header : 

12 count ***FPB 



Data record: 

type dest size 



3.12 ALTERNATE ENTRY BLOCK (13 ) 
Header : 

13 count ***AENTRY 
count 



Data record: 

symbol value 
symbol 
value 

type 



paramnum 



This stpecifies the number of 
data records that follow. 



type paramnum 

This is a six-character entry symbol. 

This specifies the value of the symbol. If the 
S3nnbol is relocatable, this value is relative 
to thti start of this routine. 

This indicates the type of symbol. Possible 
values) are: 

absolute 

1 relocatable 

This indicates the number of parameters 
associated with the entry point. It is not 
present if type is 0. 



FPS 860-7441-000 



3 - 



CHAPTER 4 



GENERATING LNKIOO OUTHJT 



4.1 INTRODUCTION 

LNKIOO generates two types of output. The E command generates a load 
module for use with SIMIOO and DBGIOO; the A command generates a load 
module for use with APXIOO. This chapter shows how to produce each. 



4.2 SOURCE PROGRAM AND OBJECT MODULE 

Figure 4-1 contains an ASM10O subroutine for which both A and E output 
is to be generated. This subroutine is used as input to the ASMIOO 
assembler. ASMIOO generates the object module contained in Figure 4-2. 
The object module is used as input to LNKIOO. 



$TITLE VCADD 

$ENTRY VCADD, 4 
"VECTOR ADD 

"ADDS VECTOR A TO VECTOR B MD PUTS THE RESULT INTO VECTOR C 
"C(M) - B(M) + A(M) FOR M - TO N-1 



"S-PAD PARAMETERS 

A $EQU 

B $EQU 1 

C $EQU 2 

N $EQU 3 



"BASE ADDRESS OF VECTOR A 
"BASE ADDRESS OF VECTOR B 
"BASE ADDRESS OF C 
"NUMBER OF ELEMENTS IN C 



VCADD! MOV A, A; SETMA 
MOV B,B; SETMA 
DEC C; DPX(0)<MD 
LOOP: INC A; SETMA 
INC B; SETMA; 

FADD DPX(0),MD 
DPX(0)<MD; 

DEC N; FADD 
MKFA; INC C; SETMA; 

BNE LOOP 
RETURN 
$END 



"FETCH A(0) 
"FETCH B(0) 
"SAVE A(0) 
"FETCH A(M+1) 
"FETCH B(M+1) 
"B(M) + A(M) 
"SAVE A(M+1) 
" SEE IF DONE????? 
"STORE C(M) 
"BRANCH IF NOT DONE 



Figure 4-1 ASMIOO Source 



FPS 860-7441-000 



4 - 



3 


***t: 


[TLE 




VCADD 








13 


1 


***AENTRY 


VCADD 





2 


4 





].0 





***CODE 


40000 








60 


40104 








60 


1210 





45004 





1100 








60 


1105 


124000 


400 


60 


1215 


100000 


45004 





1110 


655 





160 





340 








1 


***END 




VCADD 









Figure 4-2 Object Module 



4.3 LOAD SESSION 

The following procedure is used to load the object module shown in 
Figure 4-2. (The procedure to call LNKIOO varies according to the host 
operating system but normally consists of entering the name LNKIOO.) 



LNKIOO 



LNKIOO 


Version Date 


* 




L 

VCADD .0 
LOAD COMPLETE 

* 


E 

SIMMOD 
VCADD 


HIGH-000007 


* 




A 

LMOD 
VCADD 


HIGH-000007 


* 





Call LNKIOO 



Load the object module which 
resides on file VCADD. 0. 



Generate a load module for 
use with SIM100A)BG100. 



Generate a load module 
for use with APXIOO. 



Exit to the host operating 
system. 



END LNKIOO 



FPS 860-7441-000 



4 - 



4.4 OUTPUT FROM THE E COMMAND 

The load session showa in section 4.3 generated a file SIMMOD with the 
E command. This file is a load module which can be used with a 
simulated FPS-lOG (SIMIOO) or with the actual hardware for debugging 
(DBGIOO). Figure 4-3 contains this load module. The first line 
indicates that the program contains eight program words. 



8. 








16384. 


00000. 


00000. 


00048 


16452. 


00000. 


00000. 


00048 


00648. 


00000. 


18948. 


00000 


00576. 


00000. 


00000. 


00048 


00581. 


43008. 


00256. 


00048 


00653. 


32768. 


18948. 


00000 


00584. 


00429. 


00000. 


00112, 


00000. 


00224. 


00000. 


00000, 



Figure 4-3 E Command Load Module 



4.5 OUTPUT FROM THE A COMMAND 

The load session shown in section 4.3 generated a file LMOD with the A 
command. This file is a load module which can be transferred to the 
FPS-lOO with APXIOO routines for execution there. This load module, 
which was produced on a Prime computer system, is shown in Figure 4-4. 
However, output is different for different host operating systems. For 
some systems, assembly code output is produced. 



FPS 860-7441-000 



4 - 



C* VCADD 

X 
X 



SUBROUTINE VCADD 
1,1 2,1 3,1 
4) 



(I 



33) 



INTEGER CODE( 
INTEGER I 1,J 
INTEGER I 2, J 
INTEGER I 3, J 
INTEGER I 4, J 
INTEGER S LI ST (16) 
COMMCM /SPARY/SLIST 
EQUIVALENCE (J 1,SLIST( 
EQUIVALENCE (J 
EQUIVALENCE (J 
EQUIVALENCE (J 
DATA CODE(l) / 
DATA CODEC 



1 
2 
3 
4 



2, SLIST ( 

3, SLIST ( 

4, SLIST ( 
8/ 

2), CODEC 



D) 
2)) 
3)) 

4)) 



3), CODEC 
000060/ 
7), CODEC 



X : 040000,: 000000, : 000000, 

DATA CODEC 6), CODEC 

X : 040 104,: 000000,: 000000, : 000060/ 

DATA CODEC 10), CODEC 11), CODEC 
X :001210, :000000, :045004, : 000000/ 

DATA CODEC 14), CODEC 15), CODEC 
X : 001 100, :000000,: 000000, :000060/ 

DATA CODEC 18), CODEC 19), CODEC 
X : 001105,: 124000, :000400,: 000060/ 

DATA CODEC 22), CODEC 23), CODEC 
X :001215, : 100000, :045004,:000000/ 

DATA CODEC 26), CODEC 2 7), CODEC 
X : 001 1 10, : 000655, : 000000, : 000160/ 

DATA CODEC 30) .CODEC 31), CODEC 
X : 000000, : 000340,: 000000,: 000000/ 

J l-I 1 

J 2-1 2 

J 3-1 3 

J 4-1 4 

CALL APEXCCODE, 0, SLIST, 4) 

RETURN 

END 



4), CODEC 
8), CODEC 
12), CODEC 
16), CODEC 
20), CODEC 
24), CODEC 
28), CODEC 
32), CODEC 



5)/ 
9)/ 
13)/ 
17)/ 
21)/ 
25)/ 
29)/ 
33)/ 



Figure 4-4 A Connnand Load Module 



•nie source code generated by LNKIOO consists of four basic parts: the 
SUBROUTINE statement, SLIST array, CODE array, and the APXIOO call. 



FPS 860-7441-000 



4 - 



The subroutine statement contains the routine's arguments, the number 
of which corresponds to the s-pad parameter on the first $ENTRY 
psendo-op in the corresponding ASMIOO code. The subroutine name is the 
same as the symbol on the $ENTRY pseudo-op in the corresponding ASMIOO 
source code. When the user calls VCADD, control is passed to this host 
source routine. The arguments are transferred to the SLIST array. 
These are addresses of data already transferred to the FPS-lOO via 
APPUT calls in the user-written host FORTRAN program. The code array 
contains the load module created by the user, in this case, VCADD. The 
first element of the array is the number of FPS-lOO program source 
words; the following values correspond to the actual microcode. 

The APXIOO calls cause the microcode to be loaded into FPS-lOO program 
source memory unless it still resides there from a previous call. The 
argument values are placed in their respective s-pad registers (16 is 
maximum), and control is transferred to the routine entry point in the 
FPS-lOO. 



FPS 860-7441-000 4 - 



CHAPTER 5 



ERROR MESSAGES 



5.1 GENERAL INFORMATION 

Any deviation from the prescribed command syntax causes LNKIOO to 
display a ? at the user terminal. The Illegal command Is ignored, and 
LNKIOO displays a * to Indicate its readiness to accept a new command. 

If a specified file cannot be found or is otherwise unavailable for 
use, the message: 



FILE NOT FOUND ! ! 1 



is displayed and the command is Ignored. 

The specific error messages displayed by LNKIOO are the result of 
loading errors detected during execution of an L (load) command. There 
are two classes of loading errors: 



F - Fatal Reinitialization of the loader (the R command) 
is required before loading can continue. 

W - Warning An advisory message indicating a possible 
error . 



Any fatal error detected during loading causes immediate termination of 
the L (load) command following the error message. If the user attempts 
to execute another L command, the program displays the message: 

RESET 1 > 1 



and ignores the command. After reinitializing the loader (R command), 
the user must reload any programs loaded up to that point. 



FPS 860-7441-000 5 - 



5.2 MESSAGES 



Following are the error messages, along with notes of explanation for 
each: 



F S'ZMBOL TABLE OVERFLOW 

The loader symbol table is full. The only recourse is to 
recompile LNKIOO with a longer symbol table. 



F PROGRAM MEMORY OVERFLOW nnnnnn 

An attempt was made to load the upper limit of program source 
memory. The load module is too large to fit in program source 
memory, nnnnnn is the memory location involved. 



F OVERWRITE nnnnnn 

An attempt was made to overwrite a previously loaded program 
memory location. The loader does not permit any given program 
memory location to be loaded more than once, nnnnnn is the 
program memory location Involved. 



F ILLEGAL BLOCK TYPE nnnnnn 

An illegal relocatable object code block type was encountered. 
The file specified does not contain legal object code, nnnnnn is 
the illegal block type, as read from the block header in question. 



F TOO MANY EXTERNALS 

The loader table of links is full. The only recourse is 
to recompile LNKIOO with a longer LINKS array. 



FPS 860-7441-000 5 - 



W MULTIPLE ENTRY 

An $ENTRY symbol having the same name as one already defined was 
encountered during a load. The name and value of the symbol is 
listed at the terminal as follows: 

ssssss nnnnnn 

where ssssss is the symbol name and nnnnnn the symbol value (refer 
to sfction 2.4). The loader proceeds by ignoring the latest 
definition. 



W MISSING OR IMPROPER ENTRY 

The user attempted to produce host assembly code (an A command) 
from a load module and the load module did not have any entry 
points (defined entry global symbols). 



W $DBIB(S) I(2I0RED IN BINARY 

The user attempted to load an FTNIOO binary or a binary loaded 
from a library containing FTNIOO entry points. 



W $DBDB(S) IGNORED IN BINARY 

The user attempted to load an FTNIOO binary or a binary loaded 
from a library containing FTNIOO entry points. 



FPS 860-7441-000 5 - 



APPENDIX A 



SIJMMARY OF LNKIOO COMMANDS 



This appendix contains a summary of LNKIOO commands. The abbreviations 
used in this section are listed in Table A-1. The commands are listed 
in Table A-2. 



Table A-1 Abbreviations 



Abbreviation 



Meaning 



(filename) 

(loc) 
(name) 



Name of a file, as appropriate for the host 
operating system being used. 

A location, octal or hexadecimal, as appropriate. 

A symbol name, six characters or less. 



FPS 860-7441-000 



A - 



Table A-2 Command Summary 



Command 



Effect 



(filename) 



(filename) 



Load the program in file (filename); link with 
previoijaly loaded programs. 

Copy the loader symbol table to file 
(filename) . 



U 
(filename) 

B 
(loc) 



Copy any undefined symbols to file 
(filename) . 

Set LNKIOO to load the next program at 
location (loc) . 



R 



Reset the loader. 



F 
(name) 

M 



(filename) 



(filename) 



Force loading of a program defining symbol (name) 
from any subsequent program libraries loaded. 

list the highest program memory location used. 

End the loading session; store the resultant load 
module into file (filename) • 

End the loading session; generate host computer 
assembly code for use with APXIOO into file 
(filename) . 



N 
(number) 



Set the radix for numeric user console 1/0 to 
either 8, 10, or 16. 



Exit to the operating system. 



FPS 860-7441-000 



A - 



INDEX 



A command 2-2, 7 

A command output 4-3 

Assembly code generation 2-7 

B command 2-4 
Sase address 2-4 
Blocks 3-1 

Code block 3-2 
Command summary A-1 
Conventions 2-2 

E command 2-2,6 

E command output 4-3 

End block 3-3 

End command 2-2, 6 

End with assembly code 2-7 

Entry block 3-4 

Error messages 5-1 

Example loading session 2-8 

Exit command 2-7 

External block 3-5 

F command 2-3,5 
Force command 2-3, 5 

Generating LNKIOO output 4-1 
Generating load modules 2-6 

L command 2-1,2 

Library end block 3-5 

Library start block 3-5 

Load command 2-1 , 2 

Load module generation 2-6 



Load session 2-8; 4-2 

M command 2-1,5 
Memory command 2-1,5 
Messages 5-1 

N corfmand 2-7 

Next base command 2-4 

Number Radix 2-7 

Object blocks 3-1 

Object Module 3-1; 4-1 

Operating procedures 2-1 

Output 4-1 

Output from the A command 4-3 

Output from the E command 4-3 

Procedure summary 2-1 

R command 2-5,6 

Relocatable object modules 3-1 

Reset command 2-5,6 

S command 2-1,3 
Sample loading session 2-8 
Summary of commands A-1 
Symbols command 2-1,3 

Title block 3-4 

U command 2-1,4 
Undefined command 2-1,4 

X command 2-2, 7 



IPS 860-7441-000 



I - 



READERS COMMENT FORM 



Your comments will help us improve the quality and usefulness of our 
publications. To mail: fold the form in three parts so that 
Floating Point Systems mailing address is visible, then seal. 



Title of document. 

Name/Title 

Firm 



Date. 



Department . 



Address . 



Telephone . 



I used this manual... 

□ as an introduction to the subject 
D as an aid for advanced training 
n to instruct a class 

□ to learn operating procedures 

□ as a reference manual 

□ other 



I found this material... 

Yes 

accurate /complete 
written clearly 
well illustrated 
well indexed 



No 



D 


n 


D 


□ 


D 


D 


D 


a 



Please indicate below, listing the pages, any errors you found in the 
manual. Also indicate if you would have liked more information on a 
certain subject. 




BUSINESS REPLY 

No postage stamp necessary if mailed in the United States 




Postage will be paid by: 

FLOATING POINT SYSTEMS, INC. 

P.O. Box S348S 
Portland, Oregon 97SS3 




Attn: Technical Publicatione 



FF5 



FLOATING POINT 
SYSTEMS, INC. 



CALL TOLL FREE 800-547-1445 

RO. Box 23489, Portland, OR 97223 

(503] 641 -31 51 , TLX; 360470 FLOATPOINT PTL