Image Map Image Map
Page 1 of 3 123 LastLast
Results 1 to 10 of 27

Thread: Hacking a bit with spacewar without EAE, detailed info about AX08 programming wanted.

  1. #1

    Question Hacking a bit with spacewar without EAE, detailed info about AX08 programming wanted.

    I've been playing a little bit with the Spacewar software for the LAB8 with AX08.
    The AX08 is an external unit for digital I/O, Analog I/O, programmable RTC and
    a point plot display. It is not compatible with a VC8E or other point plot hardware.

    But this version doesn't need the EAE option. So I thought let's try to get it to work on a VC8E
    with an DK8E RTC. With a few hours of experimenting (thanks to the PALBART assembler!)
    I got something on my screen and my RTC hack seems to work also...

    This is how it looks now on my oscilloscope at the moment. 4 times more or less the same image.
    Does anyone have detailed programming info about the AX08?

    I'm toggling the switches of my 8M here. I was surprised by the text "TWO WINS!"
    That text is only in that corner and not in the 'four' screens.



    So I've got to figure out some stuff here I'm not a real star in PDP8 programming.
    But I thought it is fun to try. And maybe others have ideas to make this version a success...

    Regards, Roland
    Last edited by Roland Huisman; October 15th, 2019 at 02:15 PM.
    WTB: Case for Altair 8800 ...... Rolands Github projects

  2. #2

    Default

    I've converted the 9 bits of the AX08 to 10 bits for the VC8E by just shifting the data one bit to the left.
    So the picture quality stays at 9 bit but the size matches the screen now.

    BUT... The AX08 seems to be a linear DAC and the VC8E is two complement.
    So the screen is not right yet. I have to invert bit 2 before writing to the VC8E.
    That is the most significant bit for the VC8E.

    CLL RAL /shift one bit to the left before writing to screen
    > code to invert bit 2 in AC<
    DILX /SET X VALUE
    Any PDP8 coding specialist here who can tell me how I can invert that bit in an easy way?

    I was thinking to just add 001 000 000 000. When the bit is "0" it becomes a "1" and
    if it is a "1" it becomes a "0". In the last case Bit 1 becomes a one but that bit doesn't
    affect the DAC... Now I've used TAD 1000 to invert the bit and that works at least...
    But there is probably a better way to do this... Suggestions are always welcome.

    ships.jpg

    Both ships show up now. I can already rotate them, shoot and the jet engine shows up.
    But I can't move them, I think I've killed something... Things to figure out... Fun
    Last edited by Roland Huisman; October 16th, 2019 at 01:13 AM.
    WTB: Case for Altair 8800 ...... Rolands Github projects

  3. #3
    Join Date
    Oct 2019
    Location
    Rapid City, SD USA
    Posts
    26

    Default

    Quote Originally Posted by Roland Huisman View Post
    I was thinking to just add 001 000 000 000. When the bit is "0" it becomes a "1" and
    if it is a "1" it becomes a "0". In the last case Bit 1 becomes a one but that bit doesn't
    affect the DAC... Now I've used TAD 1000 to invert the bit and that works at least...
    But there is probably a better way to do this... Suggestions are always welcome.
    A general purpose XOR takes 10 instructions so what you are doing is best for this situation. A specific case takes eight instructions, two constants and two variables.

    DCA TMP1
    TAD TMP1
    CMA
    AND C1000
    DCA TMP2
    TAD TMP1
    AND C6777
    TAD TMP2


    C1000, 1000
    C6777, 6777

    If the flipping of bit 1 turned out to be an issue the fastest way would be to build a lookup table of 1024 words and just look it up.

    TAD PTRTBL /BUILD POINTER INTO TABLE
    DCA TMP1 /STORE POINTER
    TAD I TMP1 /DE-REFERENCE THE POINTER

    TMP1, 0
    PTRTBL, TABLE /POINTER TO THE TABLE
    TABLE, 1000
    1001
    1002
    ...

    You could even incorporate the RAL into the table which would cut the table size in half. But your TAD solution is still faster.

    However, you might look at how they are generating the number. It could be that you can generate it correctly more quickly than having to fix it up.
    Last edited by DougIngraham; October 16th, 2019 at 07:01 AM.
    Doug Ingraham
    2nd owner of Straight 8 SN1173
    5 other PDP-8's including an 8/i and a DECSet 8000
    SOL-20

  4. #4

    Default

    Hi Doug,

    Thanks for the explanation! Good to know that I'm at least thinking in the right way.

    It seems I'm getting somewhere now The ships are flying, I can turn on the jet
    motors and shoot each other. Also collisions between ships works. There is a part of the
    software there I can't use the TAD 1000 because I have to backup the AC value first.
    That is why the text is now still very small...



    The picture still looks a bit ugly because I don't turn off the electron beam.
    The bright star is not in the middle yet and I have some more work to do.

    But it runs on my VC8E clone boards and with my DK8E RTC clone.

    Yesterday I got two M863 I/O boards which I want to use with two joysticks.
    (I've repaired already one board. The other needs a new DEC8251)

    When you don't have a M863 you can use the front panel switches
    which I had to do with one hand in the demo... I have to implement the M863 now.

    Maybe other people like to have this Spacewar program as well when I'm done...
    It is fun to see these ships fly

    Regards, Roland
    WTB: Case for Altair 8800 ...... Rolands Github projects

  5. #5
    Join Date
    Jun 2012
    Location
    UK - Worcester
    Posts
    3,179

    Default

    Roland,

    >>> Maybe other people like to have this Spacewar program as well when I'm done...

    Oh yes Sir!!!

    This was on my project list for next year - but if you are having a crack at it now ...

    Dave

  6. #6

    Default

    I built hand controls for using with the digital I/O part of the M8316, DKC8A in my 8a machine. Had to change one instruction than normally fetches the switch register to fetch the digital input of the DKC8A board to use them with Spacewar.

  7. #7

    Default

    Quote Originally Posted by Roland Huisman View Post
    Maybe other people like to have this Spacewar program as well when I'm done...
    Indeed! I can't wait to give this a try once I've got those VC8E boards you sent finished (I missed a few components when ordering, but it's 99% done!)
    Wanted: ASR33 Teletype, TU56, RK05, VT52/100, Altair 8800 CPU card, KD11-A, KE8E (M8340 M8340), memory for 11/40.
    Available for trade: AlphaStation DS10, DS15, Numerous PC ISA, PCI, and VLB boards and motherboards from the 5150 to P4 era, DEC Storageworks HDDs, misc DIP ICs, QBUS cards, 8080/85/86/88/Z80 CPUs, VT420, Misc radio valves (vacuum tubes), C64, Amiga 1200, Sinclair/TRS-80 spares, Mac Classic + Classic II.

  8. #8

    Default

    I found something which is strange to me in the original code btw...

    CRF=6072 and CCF=6052 are defined and I don't really understand why...
    The AX08 address is 63xx.

    The 605x and 607x are the IOT addresses for a primary and secondary VC8E.
    The 6052 and 6072 IOTs are "DISD, Display Skip if Done" on a VC8E.
    It is under a comment " /CLEAR OTHER REMAINING LIKELY FLAGS ".

    But why would you sent a VC8E command if it isn't even in the system?
    I've just removed it from the code but I wonder what was the meaning is of this...
    Or does the AX08 have an extra IOT address? I haven't found it.
    So if anyone knows the story behind it, please speak up
    Maybe a leftover from another version which was just made for the VC8E?

    In the meanwhile I've got the game writing to the screen in the official way.
    So write the data, intensify and check if it's done already... That looks much better.

    I have to fine tune the RTC clock a bit... Baby steps...

    Regards, Roland
    WTB: Case for Altair 8800 ...... Rolands Github projects

  9. #9

    Default

    Quote Originally Posted by anders_bzn View Post
    I built hand controls for using with the digital I/O part of the M8316, DKC8A in my 8a machine. Had to change one instruction than normally fetches the switch register to fetch the digital input of the DKC8A board to use them with Spacewar.
    Hi Anders,

    Do you know the switch functions of the EAE software version you have?
    In this version they are for the front switches:

    0 SHIP ONE ROTATES LEFT
    1 SHIP ONE ROTATES RIGHT
    2 SHIP ONE ACCELERATES
    3 SHIP ONE FIRES
    8 SHIP TWO ROTATES LEFT
    9 SHIP TWO ROTATES RIGHT
    10 SHIP TWO ACCELERATES
    11 SHIP TWO FIRES

    At the start of the program you can make a choice between the SR or
    the contingency inputs of the AX08. I want to edit the contingency
    input code to read the M863 board.

    If someone does not have that card, you can always use the front panel switches...

    Do you remember what inputs are used for the version that you are running?
    The front panel of this version uses 0-3 and 8-11 but the contingency inputs use 0-3 and 4-7.
    I think your version also uses 0-3 and 8-11? I think I'm going to change the M863 part to that.

    First I have to find the program instructions for the M863...

    It is all well documented, but sometimes hard to find in all those documents...
    So if anyone can point me to the programming documentation of that board?
    -found it-

    Regards, Roland
    Last edited by Roland Huisman; October 29th, 2019 at 12:37 PM.
    WTB: Case for Altair 8800 ...... Rolands Github projects

  10. #10

    Default

    spacewar-control.jpg
    0 Fire (Red)
    1 Rotate L
    2 Rotate R
    3 Thrust (Green)
    4 Yellow

    7 Yellow
    8 Fire (Red)
    9 Rotate L
    10 Rotate R
    11 Thrust (Green)

    My idea was to change the code so that the yellow triggered hyper space, but I never came to it. In the implementation I have hyper space is triggered by pushing both rotate L and rotate R at the same time. I wanted a hyper space button because I saw that there where one on the original Spacewar! control. Michel Thompson has made the same, but solved the problem by letting the hyper space button trigger both rotate buttons at the same time using two diodes in the control. I'll do the same any day...

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •