BNL787_defined_locations
It soon became clear that a number of defined locations in data memory would be highly desirable, so that all SSPs in the system would have various parameters at known fixed locations in memory. Locations DM200 to DM3FC have been reserved for these parameters. Thus the user code starts at DM400 in the BNL787 system. The three files described below contain these fixed locations.
o The file 787SSP:|BNL787.INC gives a list of the addresses in DM of the defined locations in the form of a list of parameters. This FORTRAN file is to be included in FORTRAN packages that need access to the defined locations. Note that the values of the parameters in BNL787.INC are the byte addresses in DM.
o 787SSP:|BNL787_DEF.MAR defines the BNL787 defined locations as symbols in a similar way to BNL787.INC in the FORTRAN case.
o The file 787SSP:|BNL787_RES.MAR contains exactly the same symbols as BNL787_DEF.MAR, but this file actually reserves the space in the SSP data memory.
Note that all the names of defined locations in BNL787_DEF.MAR begin with the symbol "$", in common with the BNLSYS "system" symbols.
If there are a lot of symbols to be resolved at link time, the code produced in the listing will bear little resemblance to that actually loaded into the SSP, making debugging tricky. The command "DCROSS" cross-assembles the source code, using symbols from BNL787_DEF.MAR to resolve globals, thus making the code in the list file easier to read.
Version 4.00 of the BNL cross-assembler includes support for resolving global symbols at link time, therefore the command "CROSS" may be used instead, if preferred. By default, the command "CROSS" does not produce a listing.
Also located in these files are four symbols defined as MS code symbols (see MS_CODE_CONVENTIONS).
The BNL787 fixed locations are described fully in 787DOC:|787_FIXED_LOCATIONS.MEM.
Marker (or common) blocks can be used to pass blocks of data either to or from the host program.
It is possible to set up marker blocks of data in an SSP-resident program that can easily be accessed by the host program. To do this, the control statement MARKER is used. The BNL787 convention is to set the first word of the marker
block to contain the length of the following data in words (i.e. the exclusive length).
An example of a marker block in an SSP resident program is given below:
NLEN: DC 5 ; length of marker block following NGO: DS 5 ; reserve 5 words of storage
MARKER NLEN,<Testblock for access by host>
This would be equivalent to a COMMON block in FORTRAN (say) COMMON TESTBLOCK/NLEN,NGO(5)/
The locations of MARKER blocks are accessible to the host by a call to the appropriate FORTRAN subroutine (see BNLSSP:|SSP_PROGRAMMER.MEM).
Converted from .HLP to .HTML by HLPTOHTML.