Just a few comments on some of these implementations.
Some of these programs will not work. This is only focusing on the console output aspect of things.
Thus, this is the issue of using the form
TSF
JMP .-1
TLS
as opposed to
TLS
TSF
JMP .-1
On Thu, Oct 5, 2017 at 10:33 AM, Vincent Slyngstad
> That ship
> has sailed, however, for these legacy systems.
P?S/8 predates OS/8, and is still "sailing".
I think the only ship that has long sailed is the notion of the might
not be there part. P?S/8 can run on a 4K family of 8 machine with a
storage device interface. With some work, the Kyle Owen serialdisk
handler and server [I heavily modified the latest version to be family
of 8 for OS/8] can make it work on just a CPU and an extra serial
port. There is virtually no reason today to be playing with
paper-tape. For us, that was true in 1967.
On Thu, Oct 5, 2017 at 2:17 PM, Vincent Slyngstad wrote:
> I don't think of P?S/8 as legacy code. In part because it is still being
> developed/maintained, and in part because I have never seen it. It
> has been "coming soon" for pretty much all of the 4+ decades I've
> been doing PDP-8 stuff.
The part that you've now had a glimpse into was completely functional
BEFORE they rejected it 40 years ago for no sound technical [or
business] reason. What you are saying is just implying that you
aren't open to it, and that's the typical response I got from others
as far back as 1972. Which applies more, I cannot say: Pearls before
swine, or you can lead a horse to water...
I fail to understand the notion of something being maintained doesn't
make it legacy in any sense of the word. Is it "better" that by bad
design OS/8 craps out totally on the date handling in 1977, and a faux
kludge that dies in 2001, while from the getgo P?S/8 could handle the
date until 2099?
On Thu, Oct 5, 2017 at 3:53 PM, CLASystems wrote:
> On Thu, Oct 5, 2017 at 2:17 PM, Vincent Slyngstad wrote:
>> That's a valid point. Though I also think it slightly distorts our
>> historical
>> perspective on the PDP-8, since for most of it's lifespan, mass storage
>> (and the operating system that goes with it) has been very much a
>> luxury item. (Likewise extended memory; hence the push to keep
>> P?S/8 runable in 4K.)
I find your remark totally bizarre. The PDP-8 was sans mass storage
for about 1.5 years; then DECtape camed out. Few if any machines past
that LACKED mass storage. Go check the sales figures; I think Doug
Jones has all of the statistics.
On Thu, Oct 5, 2017 at 8:29 PM, Vincent Slyngstad wrote:
> I'm using "legacy" here to specifically connote code and situations that
> cannot be changed or fixed. "Legacy" code is the code that's broken
> that we are having to live with. Since P?S/8 is being still under
> development, there exist opportunities to fix stuff.
Then we'll just forever have a semantic argument. By that notion, we
should all run the even more broken PS/8 code that took days to come
up with a system that usually never worked.
It's not my fault that DEC never took over P?S/8 from me [and I also
showed it to them again a couple years later; that time, the arrogant
manager ignored everyone totally; he just pretended to be "too busy"
to even have paid attention. this despite the reaction of everyone
else who was there.
FWIW, a neurophysiology lab at an Ivy League university in 1972 could only afford a PDP-8/L, 4Kw memory, high-speed PTR/PTP, AX08, and M33 ASR. Perhaps we *were* atypical, as the lab a floor below us had an 8/I, 32Kw memory, dual DF32, dual TU56, at least two AX08 and a bunch of specialized equipment (including CRT displays). I knew what I was missing, but only by word-of-mouth -- never had the opportunity to work on that machine, alas.
We used the three-pass assembler and high-speed paper-tape for program development, execution, and lots of fan-fold paper-tape for data storage/retrieval.
There simply wasn't research funding to buy better hardware. We (actually, I) did our own hardware maintenance. And when it became imperative that we acquire additional memory to hold real-time-acquired signals preparatory to statistical analysis we replicated the 8/I memory controller using wire-wrap and then drove an S100 bus loaded with standard 4K-byte 2102A-based (1K x1 -bit SRAM) boards. (I believe these: http://www.s100computers.com/Hardware%20Folder/Processor%20Technology/4K%20RAM/4K%20RAM.htm)
From: pid...@googlegroups.com [mailto:pid...@googlegroups.com] On Behalf Of Vincent Slyngstad
Sent: Friday, October 06, 2017 10:00 AM
To: PiDP-8
Subject: Re: [pidp8] Re: PDP-8 Programming Challenges
On Friday, October 6, 2017 at 5:56:24 AM UTC-7, Paul Birkel wrote:
FWIW, a neurophysiology lab at an Ivy League university in 1972 could only afford a PDP-8/L, 4Kw memory, high-speed PTR/PTP, AX08, and M33 ASR. Perhaps we *were* atypical, as the lab a floor below us had an 8/I, 32Kw memory, dual DF32, dual TU56, at least two AX08 and a bunch of specialized equipment (including CRT displays). I knew what I was missing, but only by word-of-mouth -- never had the opportunity to work on that machine, alas.
We used the three-pass assembler and high-speed paper-tape for program development, execution, and lots of fan-fold paper-tape for data storage/retrieval.
Actually, re-reading Doug Jones' FAQ, it seems our experience was not
that atypical. I didn't find numbers for DECtape systems, but there is
text there that implies that many systems prior to the mid 1970s had
limited memory and no mass storage.
[PAB] I don’t recall any “inclination” towards mass-storage on our part. We needed more memory, full stop. Unfortunately the lab being that of a relatively new junior faculty member we were poor-as-church-mice. Which is why they let a freshman undergraduate (not even an EE Major) “take charge”. Over in EECS (just EE at the time) if you were a *lucky* _graduate_ student you got to share some time on a PDP-11/20 or -11/10.
Certainly the Omnibus machines were a much different price point, and
did often come with more memory and mass storage. Those machines
also sold in much higher volumes, so I have to concede that numerically,
the majority of PDP-8s sold probably had mass storage (but not as nice
blinkenlights).
Hey, you at least had high speed paper tape :-).
[PAB] Yes. Oh yes … The basic lab-work would have been effectively impossible without it, even if we were to have tried to tough-it-out using the low-speed ASR for compiling.
There simply wasn't research funding to buy better hardware. We (actually, I) did our own hardware maintenance. And when it became imperative that we acquire additional memory to hold real-time-acquired signals preparatory to statistical analysis we replicated the 8/I memory controller using wire-wrap and then drove an S100 bus loaded with standard 4K-byte 2102A-based (1K x1 -bit SRAM) boards. (I believe these: http://www.s100computers.com/Hardware%20Folder/Processor%20Technology/4K%20RAM/4K%20RAM.htm)
Now that sounds like a fun hardware kludge :-).
[PAB] I thought that it was :->. All of those stacked 2102As certainly looked … kludgy. I had to hand-wire the S100 backplane in order to separate the boards for increased accessibility and air-flow (1” centers, maybe more). In retrospect it probably only worked because the 8/I memory controller was a sound design with good safety margins which I followed scrupulously. Apparently the noise tolerance/immunity on the cables that I hand-built from the accessory-chassis to the 8/L was acceptable; they were just standard IDC-ribbons with alternating ground lines. I scavenged a lot of the controller ICs; the S100-stuff was possible to mail-order. It was all pretty inexpensive, using a lot of surplus this-n-that that I scrounged. Parts ended up in the low hundred$. Labor was free. I am forever grateful to “my” professor for deciding to accept the proposal (which was unsolicited), and trusting that I could execute it. I still don’t know what possessed him. Wish that I had a few pictures :-<.
Vince
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To post to this group, send email to pid...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/6d86ae96-bb71-4a46-a16e-3a01a5a53d98%40googlegroups.com.
FWIW, a neurophysiology lab at an Ivy League university in 1972 could only afford a PDP-8/L, 4Kw memory, high-speed PTR/PTP, AX08, and M33 ASR. Perhaps we *were* atypical, as the lab a floor below us had an 8/I, 32Kw memory, dual DF32, dual TU56, at least two AX08 and a bunch of specialized equipment (including CRT displays). I knew what I was missing, but only by word-of-mouth -- never had the opportunity to work on that machine, alas.
I didn’t, just an 8/L. However, I *think* that the 8/I did. Aside from the fact that they had just about everything excepting facilities for handling cards (yes they had a plotter set up; I believe a CalComp), I did on an occasion or two get to peek inside the racks – there were 5 pretty full ones – and my recollection is that the 8/I was fully stuffed with modules.
You might have guessed that there was a (soon to be, if he wasn’t already) Full Professor involved :->.
From: pid...@googlegroups.com [mailto:pid...@googlegroups.com] On Behalf Of Vincent Slyngstad
Sent: Friday, October 06, 2017 1:22 PM
To: PiDP-8
Subject: Re: [pidp8] Re: PDP-8 Programming Challenges
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To post to this group, send email to pid...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/c04d9ce2-44cf-4ac4-9471-8f9993ccbe60%40googlegroups.com.
I didn’t, just an 8/L.
What I've done recently is to write my own PDP-8 emulator - primarily with
the aim to learn more about the PDP-8 instruction set...
... and what I've ended up with is a good knowledge of the instructions
but not how to actually write programs with them...
Anyway for your entertainment, a quick stab at a solution can be seen
here:
http://unicorn.drogon.net/pdp8/e1.pal
decimal
because that version of palbart doesn't truncate at 6 characters.
Changing the line to
decima
allowed the program to compile (and run) just fine.
Seems to work fine, but prints the answer in Octal (I ought to steal
Vincents print decimal code :)
And I know there are code optimisations to be made, coding styles to be
critical of, or to marvel at, but it'll do for now.
So as a learning exercise, it was fun - and going back to the "knowing the
word but not the order" idea - things I'm starting to appreciate are
having an "eye" for knowing the size of routines, variable/temp storage
placement
and maybe wondering if avoiding "links generated" is some form
of machismo or masochism... Especially as I'm sitting here with palbart on
my PiDP-8 with the ability to do an edit/assemble cycle in seconds rather
than actually feed a real PDP-8 with paper tape and go through the
punch/edit/assemble/run cycle via tape...
On Friday, October 6, 2017 at 12:01:53 PM UTC-7, Gordon Henderson wrote:What I've done recently is to write my own PDP-8 emulator - primarily with
the aim to learn more about the PDP-8 instruction set...
... and what I've ended up with is a good knowledge of the instructions
but not how to actually write programs with them...That's not surprising. It takes some practice to get the hang of using them well.Anyway for your entertainment, a quick stab at a solution can be seen
here:
http://unicorn.drogon.net/pdp8/e1.palCool! I went to https://github.com/pa28/PiDP-8-sim/blob/master/asm/palbart.cand got a copy of palbart, since the cross assembler that I am using on my PCdoesn't support the ASCII pseudo-op. Then I was able to assemble your code,but I got an "undefined" error on the line:decimalbecause that version of palbart doesn't truncate at 6 characters.Changing the line todecimaallowed the program to compile (and run) just fine.
Seems to work fine, but prints the answer in Octal (I ought to steal
Vincents print decimal code :)Feel free to improve on it :-). I feel it is actually kind of clunky.And I know there are code optimisations to be made, coding styles to be
critical of, or to marvel at, but it'll do for now.There's some interesting idiomatic code in there, which suggests you'vebeen reading the code of others, since you say this is an early effort foryou.I see "hlt" used at subroutine entries, for instance, whereas I use ".-." sortof generically for data whose compile time value is unimportant.
I also see the hack of putting an origin at the starting address last, whichthere was a DECUS self-starting loader or some such that used to encourage.
So as a learning exercise, it was fun - and going back to the "knowing the
word but not the order" idea - things I'm starting to appreciate are
having an "eye" for knowing the size of routines, variable/temp storage
placementI do see coding the equivalent offor (num=0; num < 1000; num++)instead offor (num=-1000; num; num++)which has a much more efficient implementation.I also try to leave out the NOP after ISZ if I know the ISZ can't skip.
All the skip OPRs can also be combined with CLA, and often should be.
As you point out, those optimizations aren't really important for somethingthis simple (except as exercise toward better habits).
and maybe wondering if avoiding "links generated" is some form
of machismo or masochism... Especially as I'm sitting here with palbart on
my PiDP-8 with the ability to do an edit/assemble cycle in seconds rather
than actually feed a real PDP-8 with paper tape and go through the
punch/edit/assemble/run cycle via tape...I don't think palbart is doing you any favors there. It makes generated linksmuch too easy, in my opinion. The assembler I use does generate the links,but also flags each generated link as an error (like palbart -e). Generally, itis easy enough to change eachmri foointomri I (foo)if that's really the best thing to do about the cross-page reference. Thinkingabout cross-page references is important to writing good PDP-8 code, though,when the code gets larger than a page or two.
Vince
--
You received this message because you are subscribed to a topic in the Google Groups "PiDP-8" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pidp-8/h7AKaN-hvEI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pidp-8+unsubscribe@googlegroups.com.
To post to this group, send email to pid...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/31aa9572-7bf6-4d7b-8a13-e6b94db11bbb%40googlegroups.com.
2. There's a pun in their somewhere about neurophysiologists, PDP-8s and brains, but I can't quite put it together :-)
And I know there are code optimisations to be made, coding styles to be
critical of, or to marvel at, but it'll do for now.
There's some interesting idiomatic code in there, which suggests you've
been reading the code of others, since you say this is an early effort for
you.
I've not really found a lot of well documented source code out there, so yes, I've looked at various sources - but there's seems to be a few different styles, etc.
I see "hlt" used at subroutine entries, for instance, whereas I use ".-."
sort
of generically for data whose compile time value is unimportant.
I thought it might be a good idea if I accidentally JMPed to it. Of-course it gets overwritten on the first go, however...
(And similarly I gave my emulator the ability to fill core with HLTs too, in-case that helped with some errant jumps - not sure it does, but hey)
I also see the hack of putting an origin at the starting address last,
which
there was a DECUS self-starting loader or some such that used to encourage.
A recent addition to my emulator is a tape loader - mostly because I did get bored with loading the RIM loader, using that to load the BIN loader then using that to load a BIN file, so I coded a direct BIN loader - although I have to do some searching for BIN file format and I eventually found a document called DEC-8E-XBINA-A-A - "Self-Starting Binary Loader" which I used - and in there, I noted that if a BIN file had an origin change instruction immediately before the checksum it was to instruct the loader to start the code at that address - so I implemneted it in my loader. That document is dated 1972, so somewhat "late" in terms of PDP-8, however it was the first thing I found and certianly decodes tapes correctly. (or at least all the ones I've been able to throw at it - 8K basic, chess, focal, etc. however most don't have the auto-start trick as I suspect these programs came before the SS Loader)
There is a lot of documentation out there - it's just a matter of finding it.
So as a learning exercise, it was fun - and going back to the "knowing the
word but not the order" idea - things I'm starting to appreciate are
having an "eye" for knowing the size of routines, variable/temp storage
placement
I do see coding the equivalent of
for (num=0; num < 1000; num++)
instead of
for (num=-1000; num; num++)
which has a much more efficient implementation.
I also try to leave out the NOP after ISZ if I know the ISZ can't skip.
You should define FIXMRI INC=2000 for use when you are sure ISZ cannot skip [which is nearly all usage when not uses as a counter].
Why do we keep getting comparisons to vaporware? (referring to P?S/8) That's not very helpful
--
You received this message because you are subscribed to a topic in the Google Groups "PiDP-8" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pidp-8/h7AKaN-hvEI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pidp-8+unsubscribe@googlegroups.com.
To post to this group, send email to pid...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/52a5d28f-3c97-4ecf-8ee3-0278092a4b48%40googlegroups.com.