From: usotsuki@buric.co (Steve Nickolas)
Subject: [TUHS] Happy birthday, PDP-8!
Date: Mon, 27 Mar 2017 19:33:35 -0400 (EDT) [thread overview]
Message-ID: <alpine.BSF.2.02.1703271932540.44054@frieza.hoshinet.org> (raw)
In-Reply-To: <0df17a82-af22-69b3-912e-88f3a4d51169@update.uu.se>
On Tue, 28 Mar 2017, Johnny Billquist wrote:
> Essentially, you pass parameters in memory, as a part of the code stream.
> Also, the PDP-8 certainly do have index registers.
>
> The first thing one must do is stop thinking of the AC as a register. The
> accumulator is the accumulator. Memory is registers.
>
> Some memory locations autoincrement when used indirectly, they are called
> index registers.
>
> That said, then. A simple example of a routine passing two parameters (well,
> three):
>
> First the calling:
>
> CLA
> TAD (42 / Setup AC with the value 42.
> JMS COUNT
> BUFPTR
> BUFSIZ
> . / Next instruction executed, with AC holding number
> of matching words in buffer.
> .
>
> Now, this routine is expected to count the number of occurances of a specific
> word in a memory buffer with a specific size.
> At calling, AC will contain the word to search for, while the address
> following the JMS holds the address, and the following address holds the
> size.
>
> The routine:
>
> COUNT, 0
> CIA
> DCA CHR / Save the negative of the word to search for.
> CMA
> TAD I COUNT
> DCA PTR / Setup pointer to the address before the buffer.
> ISZ COUNT / Point to next argument.
> TAD I COUNT
> CIA
> DCA CNT / Save negative value of size.
> DCA RESULT / Clear out result counter.
> LOOP, TAD I PTR / Get next word in buffer.
> TAD CHR / Compare to searched for word.
> SNA / Skip if they are not equal.
> ISZ RESULT / Equal. Increment result counter.
> ISZ CNT / Increment loop counter.
> JMP LOOP / Repeat unless end of buffer.
> CLA / All done. Get result.
> TAD RESULT
> JMP I COUNT / Done.
>
> PTR=10
> CNT=20
> CHR=21
> RESULT=22
>
>
> Addresses 10-17 are the index registers, so the TAD I PTR instruction will
> autoincrement the pointer everytime, and the increment happens before the
> defer, which is why the initial value should be one less than the buffer
> pointer.
>
> Hopefully this gives enough of an idea, but unless you know the PDP-8 well,
> you might be a little confused by the mnemonics.
>
> As you can see, the return address at the start is used for more than just
> doing a return. It's also your argument pointer.
>
> Johnny
>
>
Actually, that reminds me of ProDOS-8 on the Apple ][, which uses a
similar mechanism to pass parameters.
-uso.
next prev parent reply other threads:[~2017-03-27 23:33 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.1.1490580001.4973.tuhs@minnie.tuhs.org>
2017-03-27 23:30 ` Johnny Billquist
2017-03-27 23:33 ` Steve Nickolas [this message]
2017-03-27 23:49 ` Johnny Billquist
2018-03-21 21:52 Dave Horsfall
2018-03-21 21:59 ` George Michaelson
[not found] <mailman.659.1490686648.3779.tuhs@minnie.tuhs.org>
2017-03-28 22:10 ` Johnny Billquist
-- strict thread matches above, loose matches on Subject: below --
2017-03-28 2:38 Noel Chiappa
2017-03-27 1:24 Noel Chiappa
2017-03-27 14:07 ` Arthur Krewat
2017-03-27 0:31 Noel Chiappa
2017-03-27 0:37 ` Arthur Krewat
2017-03-27 12:05 ` Tim Bradshaw
2017-03-27 13:35 ` Tony Finch
2017-03-27 21:37 ` Terry Smith
2017-03-21 23:57 Atindra Chaturvedi
2017-03-21 21:34 Dave Horsfall
2017-03-22 16:34 ` Ron Natalie
2017-03-26 19:49 ` Dave Horsfall
2017-03-26 20:11 ` Paul Winalski
2017-03-26 22:20 ` Greg 'groggy' Lehey
2017-03-26 22:25 ` Greg 'groggy' Lehey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.BSF.2.02.1703271932540.44054@frieza.hoshinet.org \
--to=usotsuki@buric.co \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).