On 2020-03-06 04:59 PM, Johnny Billquist wrote:
On 2020-03-07 01:52, Don North wrote:
On 2020-03-06 02:53 PM, Robert Armstrong wrote:
   Another macro11 question - do the apostrophes in the listing indicate
relocatable references, as they do in the DEC version?

   If so, then I don't think it's assembling this code correctly -


        1                                        .TITLE  TEST RELOCATABLE
REFERENCES
        2 000000                                 .ASECT
        3        001000                          .=1000
        4
        5        001234                  X == 1234
        6
        7 001000 005067  001234'                 CLR     X
        8

   X should be an absolute address, not relocatable.

Bob

_______________________________________________
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh

The apostrophe trailing on the octal word indicates that it is a computed target
address. It is not what you would actually see in the .obj or .bin files.

If you want to force all references to be absolute instead of relocatable you
can add an ' .ENABL AMA'  pseudo-op before the .ASECT pseudo-op. This will
force all relative mode instruction references to become absolute mode. Or
of course you could just do ' CLR @#X' for that instruction.

In the end, that is a different thing. Absolute addressing is not what Bob was thinking about here...

Here is what MACRO-11 does:

      1 000000                                  .ASECT
      2         001000                          .=1000
      3         001234                  X=1234
      4
      5 001000  005067  000230                  CLR     X
      6

Note that the addressing is still relative. But the actual offset required can be computed by MACRO-11 at compile time.

  Johnny

Correct. I provided an answer to a slightly different question, I believe after rereading my response.

The .ASECT says put this code/data starting at the given absolute address, but it says nothing about how addresses are computed in instructions. They can still be done using relative 67 mode or absolute (37) mode.

The tick on the address in the listing does indicate that this address is being computed using a relative mode. The octal word shown is (always) the target address, not the inline values after the instruction word.

As I noted above the way to force all instruction address computations to be absolute vs relative is to add the .ENABL AMA  (ISTR that means Address Mode Absolute or some such) pseudo-op at the beginning.

Don

_______________________________________________
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to