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
7. The routine then coaputes the arithaetic value (symbol address
or expression value) that aust be placed in storage at the
address calculated in operation 6, above, and places that value
at the indicated address. If the value is undefined, the
routine branches to location DftSLSBB, where the constant is
added to a string of constants that are to be defined later.
8. The routine again decrements the byte count of information on
the RLD card and tests the result for zero. If the result is
zero, go to operation 2; otherwise, processing continues in this
routine.
9. The routine next checks the continuation flag, a part of the
data placed on the RLD card by the assembler. If the flag is
on, the routine repeats its processing for a new address only;
the processing is repeated froa operation 4. If the flag is
off, the routine repeats its processing for a new syabol; the
processing is repeated from operation 2. This routine exits to location RD in the initial and resume loading
routine. END CARD ROUTINE - C6AA1
Function saves the END card address under certain circumstances,
and initializes the loader to load another control segment. !Btry This routine has one entry point, location C6AA1. The routine is
entered from the RLD card routine.
1. This routine begins its operation with
the card being processed is not an
branches to the LDT card routine;
continues in this routine.
a test of card type. If
END card, the routine
otherwise, processing 2. The routine then determines whether the END card contains an
address. If the card contains no address, the routine performs operation 7, below; otherwise, the routine performs operation 3.
3. The routine next checks the end-address-saved switch. If this
switch is on, an address has already been saved, and the routine
perforas operation 7. If the switch is off, the routine performs operation 4. 4. The routine deteraines whether loading is absolute or relocated.
5.
If the loading process is absolute, the routine perforas
operation 6; otherwise, the routine perforas operation 5.
The routine links to the REFADR
relocation factor, and adds this
address.
routine to obtain the current
factor to the card-specified
6. The routine stores the address (absolute or relocated) in area
BRAD, for possible use at the end-of-Ioad transfer of control to
the problem program. 2-80 IBM VM/310 System Logic and Program Determination--Voluae 2
Previous Page Next Page