[Simh] pdp11 i/o addressing

Mike Stramba mikestramba at gmail.com
Fri Feb 16 10:44:45 EST 2018


Thanks Guys.

I *had* downloaded a handbook... but it was the *oldest* one (1969)
;),  hence no mention of virtual memory in it ;)

Mike

On 2/16/18, Clem Cole <clemc at ccc.com> wrote:
> +1 Paul's comments
>
> some resources - cut and pasted from a message to a young
> engineer/mentee/student I have at the moment ;-)
>
> PDP11 Processor Handbook 1979
> <http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf>
>
> AA-5075A-TC PDP-11 MACRO-11 Language Reference Manual (RT-11)
> <http://www.bitsavers.org/www.computer.museum.uq.edu.au/RT-11/AA-5075A-TC%20PDP-11%20MACRO-11%20Language%20Reference%20Manual.pdf>
>
> $5 used on Amazon:  https://www.amazon.com/Introduction-Assembly-
> Language-Prentice-Hall-software/dp/0134917049
>
>
>
>>
> On Fri, Feb 16, 2018 at 10:15 AM, Paul Koning <paulkoning at comcast.net>
> wrote:
>
>> Mike,
>>
>> You should get yourself a good intro to the PDP-11, for example one of
>> the
>> PDP-11 Processor Handbook copies you can find on Bitsavers.  It answers
>> that question and many others.
>>
>> The key point is that you have to distinguish virtual addresses from
>> physical ones.  The I/O device addresses are physical addresses.  The
>> program uses virtual addresses.  Physical addresses can be 16, 18, or 22
>> bits depending on the model; virtual addresses are always 16 bits.
>>
>> The power on default mapping is that physical addresses 0-157777 map to
>> physical addresses with leading zeroes; virtual addresses 160000 and up
>> map
>> to physical adddresses with leading ones.  So, for example,
>>
>>         mov     #101, @#177566
>>
>> moves the value 0101 (decimal 65, the ASCII code for "A") to physical
>> address 17 777 566 which should result in A appearing on the console
>> output.
>>
>> On machines with an MMU (which is most of them) the mapping from virtual
>> to physical can be changed, and for example the "I/O page" (top 4kW of
>> physical memory) might not be accessible.  But by universal software
>> convention, in kernel mode 160000 and up (MMU page 7) are always mapped
>> to
>> the physical I/O page address range.
>>
>>         paul
>>
>>
>> > On Feb 16, 2018, at 10:05 AM, Mike Stramba <mikestramba at gmail.com>
>> wrote:
>> >
>> > Greetings,
>> >
>> > I'm trying to figure out how console I/O works with the PD11.
>> >
>> > Or more generally I/O addressing
>> >
>> > E.g.
>> > A  "sh TTO"  gives :
>> >
>> > TTO, address=17777564-17777567, vector=64, 7p
>> >
>> > And 17777564 (octal) is 4,194,164 dec, which is obviously out of range
>> > of the 64K addressable by any MOV instruction.
>> >
>> > But various diagnostic routines, e.g. below, are using
>> >     movb rX,@#177566       ; output to console
>> >
>> > https://www.ak6dn.com/PDP-11/M9312/23-248F1/23-248F1.mac
>> >
>> > Are I/O devices always at the "top 64k" of memory ?
>> >
>> > If so, why doesn't  SH DEV display :
>> >
>> > xxx xxx-177 777  ?
>> >
>> > Mike
>> > _______________________________________________
>> > 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