Announcement

Collapse
1 of 2 < >

Welcome back!

If you're seeing this then welcome to the NEW Vintage Computer Forums.

The forums have been updated to the latest version of the software which means new features and some changes to old ones.

Please don't be alarmed. Change is good!
2 of 2 < >

Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

What did I do to my PDP-8 today.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    So many PDP-8 related projects...

    Finish getting P?S/8 running on the PDP-8/I at the RICM.

    Paint the switches on my very early version of the PiPDP-8 and finish the assembly. Need to update the software to the latest version.

    Repair and modify the really old EAE boards for the PDP-8/e and see if they can be made to work with the newer CPU boards.

    Finish repairing the programmer's front panel for the PDP-8/a at the RICM. I need find a rattle can paint color that is close to the original color so I can repaint the metal part of the front panel. I need to repaint and reassemble both of my 8/a programmer's panels too.

    Fix the power supply in my WT78 and see what else is broken. Get an RX01 working, installed in a desktop case, and connected to the WT78. Impress my wife by booting her decades old WPS diskettes and read her master's thesis. Get a LQP02 working and connected to the WT78.

    Install the hex-serial board in my PDP-8/a #1 and get that working.

    Repair the RK8E and an RK05 and add it to my 8/a #1.

    Assemble PDP-8/a #2 from the pile of parts and boards.

    Assemble PDP-8/e #2 from the pile of parts and boards.

    Add a paper tape reader to my 8/e #1.

    Install and test the VT8E boards in my 8/e #1, connect a composite monitor, and find a way to connect a parallel keyboard. Install the OS/8 drivers and have a really fast terminal.

    And many more PDP-8 projects to do.
    Member of the Rhode Island Computer Museum
    http://www.ricomputermuseum.org

    Comment


    • #17
      Originally posted by Roland Huisman View Post
      A computer using tubes would be high on the wish list. But even a small hybrid machine like the LGP30
      is not really suitable to handle at home. So I have some Anita calculators which are hybrid with diode/Tube logic
      and diode/tube/transistor logic. Really fun to have a calculator with over 200 tubes in it

      My fun is restoring and developing hardware. My biggest wish is to have a discrete computer
      like the Straight 8 or a PDP8/S. Just because the beauty of the technique with discrete transistors...
      I think it is fine to post as much or as little as you like here. If you have a restoration thread elsewhere you might post a couple of lines here mentioning the progress and then a detailed posting on your main thread. My intention for this is to post little updates that don't need their own thread. But it is all good.

      Tubes! That would be ambitious. I almost immediately get overwhelmed thinking of all the engineering issues you would need to overcome. The power and cooling issues would be difficult problems to overcome.

      On the other hand it would not be all that difficult to make replica flipchip modules and wire up a Straight 8. My own version of this would be to design an 8 CPU using FETs instead of transistors.

      My update on the DECmate is that I continued the sun bleaching of the case. Progress is slow but it looks quite a bit better. I need to take some photos.

      I also researched VGA signals thinking I could rig up a cable from the DECmate to a VGA monitor but that is not really practical. The DECmate presents a composite monochrome NTSC like video signal but VGA wants separate horizontal and vertical sync signals. Those signals exist in the DECmate but I am not ready to try to bring them out of the machine. I do have the Sanyo monitor from my SOL-20 which accepts a composite signal so it might work to feed it into that. It is looking for interlaced video but it would probably still lock up and work. Something to think about.

      Doug
      Doug Ingraham
      2nd owner of Straight 8 SN1173
      5 other PDP-8's including an 8/i and a DECSet 8000
      SOL-20

      Comment


      • #18
        >>> On the other hand it would not be all that difficult to make replica flipchip modules and wire up a Straight 8. My own version of this would be to design an 8 CPU using FETs instead of transistors.

        A while ago I had the very same thought.

        Looked at getting some PCBs made using Vince's GERBER's - my problem was finding suitable PNP transistors. I was working on a SPICE model of the straight-8 at the time. I coded the schematics into EXCEL and wrote some VB to identify the errors in the schematics. It found a few. Only just (finally) got round to resolving all of the errors. I am now left with a load of unconnected flip-chip pins. These may (of course) be correct - so I will have to work through each flip-chip at a time looking at the individual gate usage to see if the unconnected pins should really be connected to something - or really left unconnected.

        I have already modelled the individual flip-chips in SPICE, so the plan was to use EXCEL VB to generate the main logic linking all of the flip-chip sub-circuits together.

        I also looked at a FET implementation - based upon an 8/e. I had originally coded a -8 up in LOGISIM and got that to work with the MAINDECS, Chess etc. I managed to get the main data paths (registers, adder etc.) done - but eventually broke LOGISIM! Too complex a project me thinks... Not bothered since to find another circuit simulator though.

        Recently come across the EDDA3. This was a transistorised process control computer. Much simpler than the -8 but using relatively common (for the time) NPN transistors (e.g. BFY51, BSX52, 2N3055 etc.). Currently working on a SPICE implementation of that (one board every week at current progress).

        I had some problems with the initial cycle generator logic, so what I learnt here regarding initial conditions in SPICE would have caused me issues with the SPICE straight-8 implementation anyhow. Useful learning...

        Anyhow - not considering a transistorised -8 for many years (unless someone can find a large stock of suitable PNP transistors of course )...

        Dave

        Comment


        • #19
          Well.... now you did it. You rekindled some interest in Fortran IV. I actually stayed up late to try some examples. I wanted to see what kind of error codes I would get if my program encountered an integer larger than what the DEC Fortran IV would handle.

          Code:
          .R EDIT
          *TEST.FT<TEST.FT
          
          #R
          
          #L
          10      I=10
          20      WRITE(4,100)I
          100     FORMAT(" MAX= ",I3)
                  STOP
                  END
          
          #
          All this program does is assign I =10 and then prints it out.

          I found that the max integer for the DEC PDP8E Fortran IV is +/- 8,388,608. So I tried 10,000,000 for I and assembled it. The compiler did not report anything wrong, nor did the assembler or loader. Then when I ran it via FRTS, the program ran, but the out put was I=******. Anyway this is the kind of stuff I want to do with my PDP8E, but it will have to wait until the snow flies/ Mike

          Comment


          • #20
            Wait until the snow... It’s just too hot outside...

            It is quite interesting what you have done. The implication being that the constant itself may be stored as text until it is actually required?

            This would be unusual for a compiler...

            I would expect that the compiler should have performed some form of semantic check on the source rather than just a syntax check so that an out-of-bounds check on a constant should have been flagged by the compiler rather than leave it to the runtime library.

            Darn it, you’ve got me hooked now. Unfortunately, I have had to shut the machine down as we have now got a storm hit us!

            Too hot, followed by thunder, lightening and rain...

            Dave

            Comment


            • #21
              Originally posted by daver2 View Post
              Wait until the snow... Itís just too hot outside...

              It is quite interesting what you have done. The implication being that the constant itself may be stored as text until it is actually required?

              This would be unusual for a compiler...

              I would expect that the compiler should have performed some form of semantic check on the source rather than just a syntax check so that an out-of-bounds check on a constant should have been flagged by the compiler rather than leave it to the runtime library.

              Darn it, youíve got me hooked now. Unfortunately, I have had to shut the machine down as we have now got a storm hit us!

              Too hot, followed by thunder, lightening and rain...

              Dave
              Actually, it's not stored in text, but it is complicated. First of all, integers are 24 bit. (Obvious, if you look at the range.)
              Second, it's actually done in sortof FPP mode. The parsing/processing of integers goes through mostly the same code path as floating points. The FPP essentially just expects the exponent to be 0 when doing DP, and does actually detect overflows.

              And no, there is no overflow checking in the input stage of the compiler. It just collects the data. However, since this actually goes the same way as FP, it also does not wrap, as you could possibly otherwise have expected.

              I haven't touched any of this code in close to 30 years. Gah! Anyway, the sources can be seen at ftp://ftp.update.uu.se/pub/pdp8/os8/fiv. The relevant bits and pieces can be seen in F412K.PA or F416K.PA, depending you your preferences. The 16K version was done by me, since I didn't really see much of a point of having it tailored to fit in a 12K machine. Once it went above 8K, I figured I might as well assume 16K.

              (And I only did various hacking on it, I was not at all involved in the original development. In addition to the expansion to 16K to allow for a larger symbol table, I also hacked in so that .AND. and so on could also be applied to integers, and not only logicals. I was trying at the time to port DUNGEON to the PDP-8, but I gave up at some point... ).

              Oh yeah, http://www.bitsavers.org/pdf/dec/pdp...D_F4swSupp.pdf is also very useful to look at.
              Last edited by bqt; August 12, 2020, 12:19 PM.

              Comment


              • #22
                I've been working on a fun little research project over the last few weeks. It is a continuation of a project I last worked on about 5 and half years ago. That project is a set of subroutines that allow somewhat efficient use of the PDP-8 as a stack machine. Of course we all know that the PDP-8 does not have a stack (except for the 6120 CPU which has two). I decided to document my work and go over it all again. I have a google doc which I will post a link to here at some point. What I did today was revisit the idea of using one of the auto-index registers (10 through 17 octal) as the stack pointer. My conclusion 5 years ago was that I couldn't see any way to make it an advantage. Although the pop type operations are faster the push ops are slower. You can think of all stack operations as symmetrical in that for every call there is a return and for every push there is a pop. So it becomes easy to compare the execution times of the pairs of operations. I will show the call and return functions here for both with and without auto index register.

                CALL=JMS I ZCALL
                RET=JMP I ZRET

                *20
                SP, 7600 /INITIAL STACK POINTER
                ZCALL, ICALL /POINTER TO THE CALL SUBROUTINE.
                ZRET, IRET /POINTER TO THE RETURN CODE

                *200 /CURSORY TEST
                CLA
                LP, CALL; INCAC /CALL THE SUBROUTINE TO INCREMENT THE AC
                HLT
                JMP LP

                /KIND OF A LAME EXAMPLE IF I SAY SO MYSELF.
                INCAC, IAC /INCREMENT THE AC
                RET /AND RETURN TO CALLER


                *2000 /PUT CODE SOMEWHERE.
                ICALL, .-.
                DCA SAVAC /SAVE THE AC
                CLA CMA /SP <- SP-1
                TAD SP
                DCA SP
                CLA IAC /AC <- 1
                TAD ICALL /AC <- REAL RETURN ADDRESS
                DCA I SP /PUT ON STACK
                TAD I ICALL /GET CALLED ROUTINE ADDRESS
                DCA ICALL /SAVE SO WE CAN JMP TO THE ACTUAL ADDR??
                TAD SAVAC /RESTORE AC
                JMP I ICALL /TRANSFER TO THE REAL SUBROUTINE

                IRET, DCA SAVAC /SAVE THE AC
                TAD I SP /GET THE RETURN ADDRESS
                ISZ SP /SP <- SP+1
                DCA ICALL /USE THE CALL ENTRY POINT AS A TEMP
                TAD SAVAC /RESTORE THE AC
                JMP I ICALL /TRANSFER CONTROL BACK TO THE CALLER

                SAVAC, .-. /TEMP STORAGE FOR AC
                $
                Had to fix up the formatting by hand, hope I didn't mess anything up. The above code is the version of call/return which does not place the SP in an auto-index register. The Stack Pointer points at the top of the stack and grows downward.

                CALL=JMS I ZCALL
                RET=JMP I ZRET

                *17
                SP, 7600-2 /INITIAL STACK POINTER
                ZCALL, ICALL /POINTER TO THE CALL SUBROUTINE.
                ZRET, IRET /POINTER TO THE RETURN CODE

                *200 /CURSORY TEST
                CLA
                LP, CALL; INCAC /CALL THE SUBROUTINE TO INCREMENT THE AC
                HLT
                JMP LP

                INCAC, IAC /INCREMENT THE AC
                RET /AND RETURN TO CALLER


                *2000 /PUT CODE SOMEWHERE.
                ICALL, .-. DCA SAVAC /SAVE THE AC
                TAD SP /MAKE A COPY OF SP. IT ALREADY POINTS
                DCA TSP /AT THE PUSH ADDRESS
                CLA IAC /AC <- 1 (DOES NOT AFFECT THE LINK)
                TAD ICALL /AC <- REAL RET ADDR
                DCA I TSP /PUT ON STACK
                CLA CMA /SP <- SP-1
                TAD SP
                DCA SP
                TAD I ICALL /GET CALLED ROUTINE ADDRESS
                DCA ICALL /SAVE CALL OR RET ADDR FOR IND JMP
                TAD SAVAC /RESTORE AC
                JMP I ICALL /GO TO CORRECT PLACE

                RET, DCA SAVAC /SAVE THE AC
                TAD I SP /GET THE RETURN ADDRESS
                DCA ICALL /USE THE CALL ENTRY POINT AS A TEMP
                TAD SAVAC /RESTORE THE AC
                JMP I ICALL /TRANSFER CONTROL BACK TO THE CALLER

                SAVAC, .-. /TEMP STORAGE FOR AC
                TSP, .-. /COPY OF SP TO AVOID THE AUTO INDEX
                $



                The version that does not use the auto index register takes 25 cycles for the call and 15 cycles for the return for a total of 40 cycles. The version that uses the auto index register takes 29 cycles for the call and 13 cycles for the return for a total of 42 cycles. This is a 2 cycle improvement over my best from 5 years ago. And that 2 cycle difference is found in all the paired operations. Except it gets a little more complicated when I realized that there are now operations that do not need to be implemented by a JMS subroutine but can be placed inline as a single instruction. For example you can perform an AND against the top of the stack and get the pop for free by using AND I SP if the SP is in an auto index register. This takes only three cycles where the conventional routine looks like this:

                STKAND, .-.
                AND I SP /AC <- AC & TOS
                ISZ SP /SP <- SP+1
                JMP I STKAND /RETURN

                This will be 9 cycles if called indirectly. POP and ADD are very similar being 6 cycles faster most of the time. I don't know if this is enough to make using the auto index register a plus but it makes the answer a lot less certain.

                Still sun bleaching the VR210 case. The rate of change appears to have slowed but since I have to wait for the CRT glass to separate I can afford to keep putting it out.

                Ok, There is clearly something I don't understand about this editor. The formatting looked fine until I posted it. Sorry it looks so broken

                Doug
                Last edited by DougIngraham; August 12, 2020, 07:32 PM. Reason: added an apology for the program formatting.
                Doug Ingraham
                2nd owner of Straight 8 SN1173
                5 other PDP-8's including an 8/i and a DECSet 8000
                SOL-20

                Comment


                • #23
                  bqt,

                  Thanks for the background information. Very interesting insights.

                  I used to write compilers and assemblers for a job, so I find it interesting to see how it was done before the days that I got involved with computers...

                  I will take a look.

                  Dave

                  Comment


                  • #24
                    The cataract ridden VR201 CRT for the DECmate has been soaking in water for a week. And the answer is that this is not going to do it. I know that PVA will dissolve in water but this stuff doesn't seem to have softened at all. Doesn't look like it dissolves in acetone in spite of the fact that all the videos on this topic seem to use it. I understand why many of them complain about that part of the process. I will try isopropyl and denatured alcohols next. I would rather not use a lot of heat. Anyone know how they were assembled originally?

                    Doug
                    Doug Ingraham
                    2nd owner of Straight 8 SN1173
                    5 other PDP-8's including an 8/i and a DECSet 8000
                    SOL-20

                    Comment


                    • #25
                      Originally posted by Mike_Z View Post
                      I found that the max integer for the DEC PDP8E Fortran IV is +/- 8,388,608. So I tried 10,000,000 for I and assembled it. The compiler did not report anything wrong, nor did the assembler or loader. Then when I ran it via FRTS, the program ran, but the out put was I=******. Anyway this is the kind of stuff I want to do with my PDP8E, but it will have to wait until the snow flies/ Mike
                      The integers are 24 bit signed two's complement numbers. Strictly speaking the range should be -8388608 through +8388607. If the arithmetic is done in a 24 bit space then adding 1 to 8388607 will give -8388608. The reason it printed the asterisks was because you specified the field width as I3. I would have expected the actual output to be MAX= *** from the program example given. You would need I7 to print a max width positive number and I8 to print the negative.

                      It has been a long time since I wrote anything in Fortran.

                      Doug
                      Doug Ingraham
                      2nd owner of Straight 8 SN1173
                      5 other PDP-8's including an 8/i and a DECSet 8000
                      SOL-20

                      Comment


                      • #26
                        Originally posted by DougIngraham View Post
                        I would rather not use a lot of heat.
                        I think a thin braided steel cable (like those used to keep stuff from dissappearing in stores) could perhaps be used as a blade to saw through the goo? Might rough it up enough to get some solvent in there, too.

                        Vince

                        Comment


                        • #27
                          Or a wire-wound guitar or bass string.
                          Julian Bream, RIP.
                          Jack
                          www.computerarium.org

                          Comment


                          • #28
                            Yes RIP Julian, I have a few of his CDs
                            Dragging a wire between like a cheesecutter sounds very workable. Perhaps a piece of fine piano wire with a bit of current through it to warm it up a bit?
                            Or, a strand of Kevlar (everyone should have some of this wonder material in their workshop) or maybe even a few strands of dental floss twisted together. Whatever sort of strand it is, a bodged-up frame from steel or plywood to hold it taut would really help.

                            Comment


                            • #29
                              I took a break from the unpleasantness that is CRT cataracts. Thanks for the suggestions everyone. I do have a hot wire setup I use for cutting foam wing cores for RC aircraft modeling. I don't like the idea of the metal wire potentially scratching the curved glass face of the CRT. Something else to consider.

                              Instead I read through the reverse assembled source code that Charles Lasner made available for the DECmate II. I learned that even though they had stacks available on the 6120 CPU they didn't use them. When the 6120 wakes up it starts executing at 7777 and the DECmate wakes up executing in the ROM. The first thing it does is to copy the ROM to RAM and then jump into the RAM copy. That was their solution to JMS not working when executing in ROM.

                              I watched a bunch more YouTube videos showing CRT cataract repair. So far all of them use the heat lamp followed by heat gun method. Even on larger color TV CRT's.

                              I am still putting the VR201 case out in the sun. Not seeing much more visible improvement. It may have reached the limit of what sun bleaching will do. It is not quite as good as I was hoping for. Have to think about this some more. While I am not overly burdened with OCD I do suffer from it a little. Hopefully I can get to the good enough point.

                              Doug
                              Doug Ingraham
                              2nd owner of Straight 8 SN1173
                              5 other PDP-8's including an 8/i and a DECSet 8000
                              SOL-20

                              Comment


                              • #30
                                Interesting...I should reassess one of these days, but I remember at one point in my -8 stack-machine project looking over the 6120 manual to see if it was worth the trouble to create a machine-specific version using those instructions, and it really didn't look like it was.
                                Computers: Amiga 1200, DEC VAXStation 4000/60, DEC MicroPDP-11/73
                                Synthesizers: Roland JX-10/SH-09/MT-32/D-50, Yamaha DX7-II/V50/TX7/TG33/FB-01, Korg MS-20 Mini/ARP Odyssey/DW-8000/X5DR, Ensoniq SQ-80, E-mu Proteus/2, Moog Satellite, Oberheim SEM
                                "'Legacy code' often differs from its suggested alternative by actually working and scaling." - Bjarne Stroustrup

                                Comment

                                Working...
                                X