• Keine Ergebnisse gefunden

ERROR MESSAGES .1 EXPAND Error Messages

Im Dokument for the (Seite 148-153)

THE ASSEMBLY PROCESS

E: MOV #D,ABLE

5.9 ERROR MESSAGES .1 EXPAND Error Messages

The following messages are caused by fatal errors detected by EXPAND. They print on the terminal and cause EXPAND to restart:

Message

?BAD SWITCH?

?INPUT ERROR?

?INSUFFICIENT MEMORY?

?MISSING END IN MACRO?

?NO INPUT FILE?

?OUTPUT DEVICE FULL?

Explanation

An unrecognized command string switch was specified.

Hardware error in reading an input file.

Not enough memory to store macro defmitions.

End of input was encountered while storing a macro definition; probably missing an .ENDM.

There must be at least one input file.

No room to continue writing output; try to compress the device with PIP.

The following errors are non-fatal but indicate that something is wrong in the input me(s). These errors appear in the output me as a line in the following form:

?*** ERROR U . message

After each run of EXPAND, the total number of non-fatal errors is printed on the terminal.

Message BAD MACRO ARG LINE TOO LONG

MACRO ALREADY DEFINED MACRO(S) NOT FOUND

MISSING COMMA IN MACRO ARG

MISSING DOT

NAME DOESN'T MATCH

NESTED MACROS

NO NAME SYNTAX

TOO MANY ARGS

5.9.2 ASEMBL/CREF Error Messages

Explanation

The macro argument is not formatted correctly.

A line has become longer than 132 characters.

A macro was defmed more than once.

Macros listed in an .MCALL statement were not found in SYSMAC.SML (make sure

SYSMAC.SML is present on system).

Found spaces or tabs within a macro argument when a comma was expected; try using brackets around the arguments, e.g., <arg with spaces>.

A macro name or argument name does not begin with a dot.

Optional name given in .ENDM directive does not match name given in corresponding .MACRO directive.

A macro is being defmed or invoked within another macro.

A macro definition has no name.

A macro directive is not constructed correctly.

A macro directive has more than 30 arguments.

ASEMBL error messages enclosed in question marks are output on the terminal. The single-letter error codes are printed in the assembly listing.

In terminal mode these error codes are printed following a field of six asterisk characters and on the line preceding the source line containing the error. For example:

******

A

2600236000002' .WORD REL1+REL2

Error Code A

B

D

E I

L

M

N

o

P

Q

R

T

U

z

Meaning

Addressing error. An address within the instruction is incorrect. Also may indicate a relocation error. The addition of two relocatable symbols is flagged as an A error. May also indicate that a local symbol is being defined more than 128 words from the beginning of a local symbol block.

Bounding error. Instructions or word data would be assembled at an odd address in memory. The location counter is updated by + 1.

Multiply-defmed symbol referenced. Reference was made to a label (not a local label) that is defmed more than once.

End directive not found. (A .END is generated.)

illegal character detected. illegal characters which are also non-printing are replaced by a ? on the listing. The character is then ignored.

Line buffer overflow, i.e., input line greater than 132 characters. Extra characters on a line are ignored in terminal mode.

Multiple defmition of a label. A label was encountered which was equivalent (in the first six characters) to a previously encountered label.

Number containing 8 or 9 has decimal point missing.

Opcode error. Directive out of context.

Phase error. A label's defmition or value varies from one pass to another or a local symbol occurred twice within a local symbol block.

Questionable syntax. There are missing arguments or the instruction scan was not completed or a carriage return was not immediately followed by a line feed or form feed.

Register-type error. An invalid use of or reference to a register has been made.

Truncation error. A number generated more than 16 bits of significance or an expression generated more than 8 bits of significance during the use of the .BYTE directive.

Undefmed symbol. An undefmed symbol was encountered during the evaluation of an expression. Relative to the expression, the undefmed symbol is assigned a value of zero.

Instruction which is not compatible among all members of the PDP-II family.

Error Message

?BAD SWITCH?

?INSUFFICIENT MEMORY?

?I/O ERROR ON CHANNEL n?

?NO INPUT FILE?

?OUTPUT DEVICE FULL?

TOO MANY OUTPUT FILES

Explanation

The switch specified was not recognized by the program.

There are too many symbols in the program being assembled.

Try dividing program into separately-assembled subprograms.

A hardware error occurred while attempting to read from or write to the device on the channel specified in the message. (Channel numbers (O<=n<=l0 octal) are assigned to mes in the manner described in Section 9.4.4, Chapter 9.) Note that the CREF temporary me is on channel 2 even if it was not specified in the command string (Le., if the default me DK:CREF.TMP is used).

No input me was specified and there must be at least one input file.

No room to continue writing output. Try to compress device with PIP.

Too many output mes were specified.

All CREF error message begin with C- to distinguish them from ASEMBL error messages. When a CREF error occurs, the error message is printed on the terminal and CREF chains back to ASEMBL; ASEMBL prints an asterisk, at which time another command line may be entered.

Error Message

?C-CHAIN-ONLY -CUSP?

?C-CRF FILE ERROR?

?C-DEVICE?

?C-LST FILE ERROR?

Explanation

An attempt was made either to "R CREF" or to "START"

a copy of CREF which was in memory. CREF can only be "chained" to.

An output error occurred while accessing "DK:CREF .TMP" , the temporary me passed to CREF.

An invalid device was specified to CREF.

An output error occurred while attempting to write the cross-reference table to the listing me.

6.1 INTRODUCTION

LINKER

The HT-II Linker converts object modules produced by the HT-II assembler or FORTRAN N into a format suitable for loading and execution. This allows the user to separately assemble a main program and each ofits subroutines without assigning an absolute load address at assembly time. The object modules of the main pro-gram and subroutines are processed by the Linker to:

1. Relocate each object module and assign absolute addresses

2. Link the modules by correlating global symbols defined in one module and referenced in another module

3. Create the initial control block for the linked program

4. Create an overlay structure if specified and include the necessary run-time overlay handlers and tables 5. Search user specified libraries to locate unresolved globals

6. Optionally produce a load map showing the layout of the load module

The HT-II Linker requires two or three passes over the input modules. During the first pass it constructs the global symbol table, including all control section names and global symbols in the input modules. If library mes are to be linked with input modules, an intermediate pass is needed to force the modules resolved from the library me into the root segment (that part of the program which is never overlaid). During the final pass, the Linker reads the object modules, performs most of the functions listed above, and produces a load module (.LOA for use with the Absolute Loader and save image (.SAV) for the system).

The Linker runs in a minimal HT-II system of 8K; any additional memory is used to facilitate efficient linking and to extend the symbol table. Input is accepted from any random-access device on the system; there must be at least one random-access device (disk) for save image.

6.2 CALLING AND USING THE LINKER

Im Dokument for the (Seite 148-153)