DOMUS/Reloc-Bin format

Fra DDHFwiki
Spring til navigation Spring til søgning

Supplement to:

   RCSL-42-I-833
   DOMAC - Domus macro assembler users guide
   Appendix C & D

Segment Size Block

Programs and Objects using "high memory", all we have seen so far are MUSIL programs, include a "9" block right after the title block, to inform the loader/linker how much space will be needed in the high segment.

       Word no.:       0       000011₈
       
                       1       word count = -3
       
                       2       000000₈
       
                       3       000000₈
       
                       4       000000₈
       
                       5       checksum
       
                       6       Probably: size of .ZREL segment
                               Only value seen is 177777₈
       
                       7       Optional size of .NREL segment
                               Often seen as 177777₈
        
                       8       Size of high memory segment.

Words relocated relative to the high segment uses relocation bits '111', and we have chosen to mark them with an asterix '*'.

Normal External Block (.EXTN)

The description in Appendix C shows "address of last reference".

All locations using the a particular .EXTN symbol form a linked list, terminated with the sentenniel 177777₈ and the head is recorded in the "address of last reference" field of the .EXTN record.

For instance this source code:

               .EXTN   FOO
               .ZREL
       B:
               1
               FOO
               2
               FOO
               3
               FOO
               4
               FOO
               5
               B*2
               .NREL
       C:
               FOO
               .END    B

Results in these records:

       07 00 fd ff   .REC    7d,  -3d, 00000o, 00000o, 00000o
       00 00 00 00           .TITL   0x0000⁰, .MAIN
       02 00 f5 ff   .REC    2d, -11d, 41114o, 14141o, 50000o
       98 84 c2 30           .DATA   0x0000- = 0x0001␣
       00 a0 98 aa           .DATA   0x0001- = 0xffff␣
       00 00 01 00           .DATA   0x0002- = 0x0002␣
       ff ff 02 00           .DATA   0x0003- = 0x0001-
       01 00 03 00           .DATA   0x0004- = 0x0003␣
       03 00 04 00           .DATA   0x0005- = 0x0003-
       05 00 05 00           .DATA   0x0006- = 0x0004␣
       00 00                 .DATA   0x0007- = 0x0005-
                             .DATA   0x0008- = 0x0005␣
                             .DATA   0x0009- = 0x0000=
       02 00 fe ff   .REC    2d,  -2d, 24000o, 00000o, 00000o
       00 50 00 00           .DATA   0x0000' = 0x0007-
       05 00 fd ff   .REC    5d,  -3d, 20000o, 00000o, 00000o
       00 40 00 00           .EXTN   0x0000', FOO
       06 00 ff ff   .REC    6d,  -1d, 40000o, 00000o, 00000o
       00 80 00 00           .END    0x0000-

In this case the singly linked list is:

       .EXTN   points to 0x0000'
       0x0000' points to 0x0007-
       0x0007- points to 0x0005-
       0x0005- points to 0x0003-
       0x0003- points to 0x0001-
       0x0001- has the sentenniel 0xffff␣