[Simh] A tutorial introduction to programming PDP-11 Macro-11 Assembly in RT-11 v5.3

Johnny Billquist bqt at softjar.se
Wed Jan 20 20:37:30 EST 2016


On 2016-01-20 19:32, Will Senn wrote:
> All,
>
> Please find a link to my most recent blog post. It is a tutorial on an
> assembly language programming workflow for RT-11 using SimH.
>
> In the tutorial, I walk the reader through the process of editing an
> assembly language program, assembling it, linking it, comparing it to a
> reference, fixing typos, syntax errors, symbol reference errors, and
> logic errors using the ODT debugger, etc. It is based on and heavily
> draws from the introduction to RT-11 document using the same assembly
> language statements and solution, but is a modernized narrative that is
> contextualized for a simulated environment (SimH). It is presented as a
> step-by-step for the relative novice.
>
> Here is the link:
>
> http://decuser.blogspot.com/2016/01/a-tutorial-introduction-to-programming.html
>
>
> Please take a look and as always, I look forward to hearing your
> comments, suggestions, and critiques.

I see you are having fun. :-)

A couple of comments:

ODT actually stands for On-line Debugging Tool, not Online Debugging 
Technique.

You display the map file after linking with /debug, but the actual map 
file included was not from linking with /debug. :-)

I might be wrong, but I thought ODT works the same under RT-11 as under 
RSX, in which case you have several errors when listing and explaining 
commands.

;B will not remove breakpoints. It will actually set a breakpoint at the 
current location, using the first "free" breakpoint register.
B will remove all breakpoints, and nB will remove an explicit breakpoint.
;nB will set a breakpoint using breakpoing register n.

G will run the program. The semicolon is not needed. An argument before 
G becomes the address where it starts. If no argument is given, it will 
start at the beginning of the program.
The same with P, you can give an argument, which means it will pass that 
many breakpoints before actually stopping.

S will singlestep, and if you give an argument, it will singlestep that 
many instructions.

Now, this is how it works in RSX, so it *might* be that RT-11 works 
differently, but I would not have thought so. Maybe recheck this? (It 
might also just be that you are using an older version of ODT than was 
is "current".)

Your illustrations for words and bytes are inconsistent.
For words, you say that the boundaries are bit 0 and 15, while for bytes 
they are 0, 7 and 15. As you are describing the values giving the low 
and high bits, the correct thing would be to sat that a word have the 
boundaries at bit 0 and 15, and when dealing with bytes, the low byte is 
boundaries at bit 0 and 7, while the high byte have boundaries at bit 8 
and 15.

"Current directory". RT-11 do not have a concept of a current directory, 
since there is only one directory on any device. However, unless I 
remember wrong, RT-11 do have the concept of the current device. This is 
given by the logical name DSK: You can assign DSK: to any device, and 
that will then be your default device.
The system has a logical name SYS:. And in additional you have the 
physical names for the different devices. And you can, of course, create 
your own names as well, if you want. Such as SRC: where you have source, 
if you want.

Now, I'm not an RT-11 expert, so you probably should search around and 
read some more documentation. But this might be some useful hints 
anyway. :-)

	Johnny

-- 
Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email: bqt at softjar.se             ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol


More information about the Simh mailing list