5. The routine then determines whether an address has already been
saved for possible use as the end-of-Ioad branch address. If an
address has been saved, the routine performs operation 7; if
not, the routine performs operation 6.
6. The routine determines whether the text address is below
location 128. If the address is below location 128, it should
not be saved for use as a possible end-of-Ioad branch address,
and the routine performs operation 1; otherwise the routine
saves the address and then perforas operation 1.
1. The routine then stores the text at the address specified
(absolute or relocated) and branches to location RD in the
initial and resume loading routine to read another card. Exits ---rhe routine exits to two locations, as follows:
1. The routine exits to location RD in the initial and resu.e
loading routine if it is being used to process a TXT card.
2. The routine exits to location APRIL in the REP card routine if
it is being used for REP card address inspection. REP CARD ROUTINE - C4A13
Function ---rbIs-routine places text corrections in storage. This routine has one entry point, location C4AA3. The routine is
entered from the TXT card routine. 1. This routine begins its operation with a test of card type. If
the card being processed is not a REP card, the routine branches
to the RLD card routine; otherwise, processing continues in this
routine.
2. The routine then links to the HEXB conversion rcutine to convert
the REP card-specified correction address from hexadecimal to
binary.
3. The rcutine then links to the HEXE conversion routine again to
convert the REP card-specified ESID from hexadeciaal to binary.
4. The routine then determines whether the 2-byte correction being
processed is the first such correction on the REP card. If it
is the first correction, the routine performs operation 5;
otherwise, the routine performs operation 6.
5. When the routine is processing the first correction, it links to
location REPENT in the TXT card routine, where the REP card-specified correction address is inspected for loader
overlay and for end-of-Ioad branch address saving; in addition,
if the loading process is relocating, the relocated address is
calculated and checked for reference table overlay. The routine
then performs operation 7.
6. When the correction being processed is not the
correction on the REP card, the routine branches APR1 in the TXT card routine for address inspection.
first such
to location
2-78 IB! VM/310 Syste. Logic and Program Determination--Volume 2
7. The routine then links to the HEXB conversion routine to convert
the correction from hexadecimal to binary, places the correction
in storage at the absolute (card-specified) or relocated
address, and determines whether there is another correction
entry on the REP card. If there is another entry, the routine
repeats its processing from operation 4, above; otherwise, the
routine branches to location RD in the initial and resume loading routine.
Exits ---When all the REP-card corrections have been processed, this routine
exits to location RD in the initial and resume loading routine.
Function processes RLD cards, which are produced by the assembler
when it encounters address constants within the program being
assembled. This routine places the current storage address (absolute
or relocated) of a given defined symbol or expression into the
storage location indicated by the assembler. The routine must
calculate the proper value of the defined symbol or expression and
the proper address at which to store that value. This routine has two entry points, locations C5AA1 and PASSTWO. .
1. Location C5AA1 writes each RLD card into a work file (D"SLDR CMSUT1). Exit to RD to process the next card.
Location PASSTWO reads an RLD card from the work file. At EeF
got to C6AB6 to finish this file.
2. The routine uses the relocation header CRH ESID) on the card to
obtain the current address (absolute or relocated) of the symbql referred to by the RLD card. This address is found in the
relocation factor section of the proper reference table entry.
If the RH ESID 0, the routine branches to the LDRIO routine (invalid ESD). 3. The routine uses the position header (PH ESID) on the card to
obtain the relocation factor of the control segment in which the
DEFINE CONSTANT assembler instruction occurred. If the PH ESID is 0, the routine branches to BADCRD in the REFTBL search
routine (invalid ESID). If the ESIDTAB entry is negative
(duplicate CSEeT), the RLD entry is skipped.
4. The routine next decrements the card-specified byte count by 4
and tests it for O. If the count is now 0, the routine branches
to location RD in the initial and resume loading routine;
otherwise, processing continues in this routine. 5* The routine determines the length, in bytes, of the address
constant referred to in the RLD card. This length is specified
on the RLD card.
6. The routine then adds the relocation factor obtained in
operation 3 (relocation factor of the control segment in which
the current address of the symbol must be stored), and the
card-specified address. The sum is the current address of the
location at which the symbol address must be stored. CMS Method of Operation and Program Organization 2-79
Previous Page Next Page