[Simh] HP2100 MSU BASIC
J. David Bryan
jdbryan at acm.org
Mon Feb 25 17:28:15 EST 2008
On 25 Feb 2008 at 14:06, Tim Riker wrote:
> I use the asm21-pl.txt perl assembler also in this directory.
Your assembler has a problem. It is emitting zeros for BSS statements, but
this is wrong. BSS should only advance the program counter. In other
words, BSS should "leave a hole" in the output stream.
The HP RTE-IV Assembler Manual (92067-90003) says in section 4-6:
"The BSS pseudo operation advances the program or base page location
counter according to the value of the operand. [...] The initial
content of the area set aside by the statement is unaltered by the
loader."
As an example, see locations 00060 and 00061 in your two listings. In
"22255.lst", we have:
00060 034062 DEF CARDS LINK TO CARD READER INITIATE
00061 000000 PTAP BSS 1
In "22255mon.lst", we have:
00060 000000 .CARD BSS 1
00061 002147 ?PTAP DEF PTAPE LINK TO PHOTOREADER INPUT
The intent is that when both tapes are loaded, both programs have access to
the card reader and photoreader drivers via locations 60 and 61,
respectively. That is, the "22255mon.abs" tape should have a "hole" at
location 60 that is filled in by the other tape, and vice-versa for
location 61.
But as it is now, the "22255mon.abs" tape has a defined 0 at location 60,
which overlays the card reader link. If you load the tapes the other way
around, the photoreader link is overlaid. There are several such
occurrences in the program. This is very likely the cause of your problem.
> Did you build from my sources?
Actually, I pulled the source and binaries from the HP LOCUS (a.k.a.
contributed library) tape. The sources compare to yours, except that you
have a few hard-coded 11B select codes in "22255.asm" that are coded as 00
in the LOCUS source. These aren't significant, though, as the I/O
instructions involved are reconfigured at run time for the TTY channel.
-- Dave
More information about the Simh
mailing list