[Simh] Macro-11 Macro library question (RT11 running in SimH PDP11)

Will Senn will.senn at gmail.com
Fri Feb 5 17:38:41 EST 2016


I should have been more clear. I was inconsistent in my use of the dot. 
If I had used it everywhere, it would have been fine, to Timothe's point 
about it being a symbol. I didn't, so instead of fixing it in that 
direction, I chose the recommended path of not using dot for 
user-defined symbols.

You're right that the macro expansion didn't show anything because the 
symbol was undefined. I'll have to try the other list options later. I 
was able to get my textbook example (pascal like macros) working, so I'm 
good for the time being.

By the way, other than it's reliance on macros for I/O in the first 7 
chapters, the book, "The Digital Way: Macro-11 Assembly Language 
Programming (PDP-11", by J. F. Peters, III, is pretty awesome. it covers 
PDP-11 architecture and includes information on how to work with 
assembly language using RT11, RSTS, and RSX-11 tools.

At the end of the day, my issues are a bit of pilot error combined with 
a huge helping of ignorance about the underlying systems that is only 
slowly being overcome. One day, I'm using RT11 (cuz it's simpler, 
generally), the next I'm using RSX-11 cuz it's got more software), 
slowly, it's all beginning to make sense ( which is slightly ironic, 
because really, I'm only trying to learn the PDP-11 well enough to 
understand Unix internals :), talk about the long way 'round, but fun, 
if sometimes a bit exasperating! ).

Thanks,

Will

On 2/5/16 3:59 PM, Johnny Billquist wrote:
> He provided the listing in the original post.
> He had one error on .MCALL line, and one on the .TIN line
>
> U on .MCALL, and UQ on .TIN, if I remember right.
>
> I also find it extremely strange that it would not be possible to 
> start a user defined macro with '.', but if it works without, that's a 
> strong indication that the dot was the problem.
>
> Or else Will was not actually using a dot, but only something that 
> looked like one, or something else funny...?
>
> As for listing the macro expansions in the list file, that can be 
> interesting, but if the symbol is considered undefined, you're not 
> going to see anything more.
>
>     Johnny
>
> On 2016-02-05 22:41, Timothe Litt wrote:
>> Too many loose ends to declare victory.
>>
>> The RT-11 librarian doesn't have a list command for macros; they were
>> second class citizens.  It's available on other DEC OS's librians, so I
>> must have crossed a memory.
>>
>> Names with a '.'  or '$' are reserved to DEC.  But I don't think this
>> should impact how the search is conducted.  I'm pretty sure I had
>> private libraries with .foo names (legal, as I was in DEC :-)
>>
>> In .FOO, '.' is part of the symbol name.
>>
>> See
>> http://bitsavers.informatik.uni-stuttgart.de/www.computer.museum.uq.edu.au/RT-11/AA-5075A-TC%20PDP-11%20MACRO-11%20Language%20Reference%20Manual.pdf 
>>
>> Page 3-6; also chapter 7, section 7.8.
>>
>> http://bitsavers.trailing-edge.com/pdf/dec/pdp11/rt11/v5.6_Aug91/AA-PDU0A-TC_RT-11_Commands_Manual_Aug91.pdf 
>>
>>
>> describes the DCL:
>> e.g. EXECUTE MYLIB/LIBRARY+C.MAC/LIST/OBJECT
>>
>> I don't suppose that you got it trouble for explicitly specifying .MLB?
>> That would be strange.  But DCL for RT11 came after I stopped using 
>> RT11.
>>
>> You didn't provide the .LST file, which is where the real error should
>> turn up.
>> Also,  .list MD, MC and ME will often shed some light on these sorts of
>> issues.  (Of these, ME is the only one not defaulted on)
>>
>>
>>
>> On 05-Feb-16 16:05, Will Senn wrote:
>>> I got it working :).
>>>
>>> However, It doesn't look like macro files can be listed - from the
>>> system utilities manual:
>>> The .MACRO directive produces the entries in the library directory
>>> (macro names). LIBR does not maintain a directory listing file for
>>> macro libraries; you can print the ASCII input file to list the macros
>>> in the library.
>>>
>>> I did a bunch more reading and figured out that the issue was around
>>> inconsistent/improper use of the leading dot. Interestingly, no
>>> diagnostic I could find was helpful in tracking this down. Y'alls tips
>>> and hints were much more useful.
>>>
>>> So, here's how it went down (don't use a leading dot for user-defined
>>> macros, but if you do use them, use them everywhere):
>>>
>>> .type et2.mac
>>>     .TITLE  ETTYIN
>>>     .MCALL    .TTYOUT,TIN
>>>
>>> START:    MOV    #BUFFER,R1
>>>     CLR    R2
>>> INLOOP:    TIN    (R1)+
>>>     INC    R2
>>>     CMPB    #12,R0
>>>     BNE    INLOOP
>>>     MOV    #BUFFER,R1
>>> OUTLOOP:.TTYOUT    (R1)+
>>>     DEC    R2
>>>     BEQ    START
>>>     BR    OUTLOOP
>>> BUFFER:    .BLKW    64.
>>>     .END    START
>>> .
>>>
>>> .type tin.mac
>>> .MACRO    TIN    CHAR
>>>     EMT    ^O340
>>>     BCS    .-2.
>>> .IF NB <CHAR>
>>> .IF DIF <CHAR>,R0
>>>     MOVB    R0,CHAR
>>> .ENDC
>>> .ENDC
>>> .ENDM
>>>
>>> .lib/mac/c tin tin
>>>
>>> .macro et2/list/cross+tin.mlb/lib
>>>
>>> .link et2
>>>
>>> .run et2
>>> THIS IS A TEST
>>> THIS IS A TEST
>>> ^C
>>>
>>> .
>>>
>>> I really appreciate y'alls assistance.
>>>
>>> Thanks,
>>>
>>> Will
>>>
>>> On 2/5/16 12:19 PM, Timothe Litt wrote:
>>>> Try the obvious:
>>>>
>>>> lib/mac/list tin.mlb
>>>>
>>>> I don't remember exactly, but I think there's a /detail or /names or
>>>> /list=names that will list the macro names in the library.
>>>>
>>>> That will at least determine if MAC *should* find the macro.
>>>>
>>>> On 05-Feb-16 13:05, Will Senn wrote:
>>>>> On 2/5/16 10:20 AM, Paul Koning wrote:
>>>>>>> On Feb 5, 2016, at 10:48 AM, Will Senn<will.senn at gmail.com>  wrote:
>>>>>>>
>>>>>>> All,
>>>>>>>
>>>>>>> A couple of questions:
>>>>>>>
>>>>>>> ...
>>>>>>> lib/mac/c tin tin
>>>>>>> macro et2/list/cross+tin.mlb/lib
>>>>>>> ?MACRO-E-Errors detected:  2
>>>>>>> DK:ET2,DK:ET2/C=DK:ET2,DK:TIN.SML
>>>>>> Try putting the macro library earlier in the command line.  I 
>>>>>> believe
>>>>>> MACRO processes command arguments as it encounters them, so here
>>>>>> you're asking it to assemble ET2 before you've given it the macro
>>>>>> library it needs to understand the .MCALL.
>>>>>>
>>>>>>      paul
>>>>>>
>>>>> I tried the command with the filespecs switched with the same result:
>>>>> .macro tin.MLB/lib+et2/list/cross
>>>>> ?MACRO-E-Errors detected:  2
>>>>> DK:TIN,DK:ET2/C=DK:TIN.MLB/M,DK:ET2
>>>>>
>>>>> And then I ran it via run macro:
>>>>> .run macro
>>>>> *ET2.OBJ,ET2.LST,ET2.LST=TIN.MLB/M,ET2
>>>>> ?MACRO-E-Errors detected:  2
>>>>> ET2.OBJ,ET2.LST,ET2.LST=TIN.MLB/M,ET2
>>>>> *
>>>>>
>>>>> And then I edited the macro file to include a LIBRARY directive:
>>>>>      .TITLE  ETTYIN
>>>>>      .LIBRARY /TIN.MLB/
>>>>>      .MCALL    .TTYOUT,.TIN
>>>>>
>>>>> START:    MOV    #BUFFER,R1
>>>>>      CLR    R2
>>>>> INLOOP:    .TIN    (R1)+
>>>>>      INC    R2
>>>>>      CMPB    #12,R0
>>>>>      BNE    INLOOP
>>>>>      MOV    #BUFFER,R1
>>>>> OUTLOOP:.TTYOUT    (R1)+
>>>>>      DEC    R2
>>>>>      BEQ    START
>>>>>      BR    OUTLOOP
>>>>> BUFFER:    .BLKW    64.
>>>>>      .END    START
>>>>>
>>>>> and recompiled:
>>>>> .macro et2/list/cross
>>>>> ?MACRO-E-Errors detected:  2
>>>>> DK:ET2,DK:ET2/C=DK:ET2
>>>>>
>>>>> It looks to me like it is finding the file, but not "seeing" the 
>>>>> macro
>>>>> definition?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Will
>>>>>
>>>>> _______________________________________________
>>>>> Simh mailing list
>>>>> Simh at trailing-edge.com
>>>>> http://mailman.trailing-edge.com/mailman/listinfo/simh
>>>>
>>>>
>>>> _______________________________________________
>>>> Simh mailing list
>>>> Simh at trailing-edge.com
>>>> http://mailman.trailing-edge.com/mailman/listinfo/simh
>>>
>>>
>>>
>>> _______________________________________________
>>> Simh mailing list
>>> Simh at trailing-edge.com
>>> http://mailman.trailing-edge.com/mailman/listinfo/simh
>>
>>
>>
>> _______________________________________________
>> Simh mailing list
>> Simh at trailing-edge.com
>> http://mailman.trailing-edge.com/mailman/listinfo/simh
>>
>
>



More information about the Simh mailing list