Have MIDAS define the right constant area start symbol.
authorAdam Sampson <ats@offog.org>
Sat, 21 Apr 2018 23:33:03 +0000 (00:33 +0100)
committerAdam Sampson <ats@offog.org>
Sat, 21 Apr 2018 23:33:03 +0000 (00:33 +0100)
When building MUDDLE, I was seeing various unresolved symbols of the
form "$   42". These are used by MIDAS when it wants to refer to
something in a CONSTANTS area, but doesn't know the location at assembly
time (for example, because it's the other side of a LOC X where X is a
global). At the start of a CONSTANTS area, MIDAS should define this
symbol as .; however, it was defining it with the wrong name.

There's a special case in RPWRD1 to output these symbols as squoze
rather than symbol table numbers -- but the code in CNST2 that defines
the symbol was using PDEFPT, which always outputs the number.
Modify it to output the squoze instead.

<mdl.int>/midas.323

index bbb37e74b34e1890ed53cbf56af53ccec1589971..413ce8d9573a61e1bcf840ae4171ff76b8dddc78 100644 (file)
@@ -3857,7 +3857,10 @@ CNST2:   MOVEI D,(T)     ;STE IDX IN D FOR OUTSM0
        MOVE SYM,(T)    ;GET NAME OF AREA
        TLC SYM,400000#LCUDF    ;CLEAR LCUDF, SET HALF-KILL
        TRNE FF,FRGLOL
-       PUSHJ P,PDEFPT  ;DEFINE SYM FOR BEGINNING OF CONSTANTS AREA
+       JRST [  MOVEI A,CDEFPT  ;Define sym for beginning of constants area
+               PUSHJ P,P7X
+               PUSHJ P,OUTSM   ;As PDEFPT but punch squoze (see RPWRD1)
+               JRST .+1]
        MOVE A,CONTBA
 CNSTH: CAML A,PLIM
         JRST CNSTA     ;THRU