PDP-10 / klh10

Community maintained version of Kenneth L. Harrenstien's PDP-10 emulator.
Other
60 stars 8 forks source link

Add support for USB Panda Display #21

Closed DavidGriffith closed 5 years ago

DavidGriffith commented 7 years ago

Since most people have machines with internal USB ports now, I created a USB-based Panda Display (see https://github.com/DavidGriffith/panda-display) in imitation of the old parallel-port Panda Display from Spare Time Gizmos (see http://sparetimegizmos.com/Hardware/Panda.htm). I made three boards, built two of them, and sold the third. It works as far as directly manipulating it with a Linux test program. I cannot get Mark Crispin's pdp10 program for exercising the Panda Display to compile. The machine-monitoring functionality I added to my fork of klh10 doesn't seem to use the display correctly.

I will start adding to this repo my changes and then delete my klh10 repo.

DavidGriffith commented 7 years ago

I got this test program from Jan de Rie who got it from Mark Crispin. This program is controlling the parallel port Panda Display in this video: https://www.youtube.com/watch?v=g_LcQ5apODg

        TITLE HACK
        SEARCH MONSYM

HACK:   SKIPA 4,[^D4]
HACK0:   SOJL 4,TRAILL
        SETZB 1,3
HACK1:  TLNE 1,777777
         JRST HACK0
        MOVE 2,1
        CIRC 2,-^D18
        SKIPN 4
         SKIPA 1,3
          IOR 1,3
        LITES%
         HALT
        HRRZ 2,1
        MOVEI 1,30
        DISMS%
        MOVE 1,2
        AOJA 1,HACK1

TRAILL: SETZ 1,
TRALL0: LITES%
         HALT
        MOVE 2,1
        MOVEI 1,30
        DISMS%
        JUMPL 2,TRAILR
        LSHC 1,^D37
        AOJA 1,TRALL0

TRAILR: MOVSI 1,400000
TRALR0: LITES%
         HALT
        MOVE 2,1
        MOVEI 1,30
        DISMS%
        MOVE 1,2
        TRNE 1,1
         JRST HACK
        ASH 1,-1
        JRST TRALR0

        END HACK
Rhialto commented 7 years ago

Such an addition sounds useful, especially if people can get that display for their own use. And it is configurable to co-exist with the current lights (at least compile-time configurable; even cleaner would probably be if it is run-time configurable).

DavidGriffith commented 7 years ago

I think the most practical would be to have the type of Panda Display configurable at compile time.

DavidGriffith commented 6 years ago

Is anyone interested in investigating this problem? I have one completely built USB Panda Display available to whoever will do it.

larsbrinkhoff commented 6 years ago

I'm really too busy, but maybe if no one else has the spare cycles, I can chip in. I'd be testing it from ITS.

frink0 commented 6 years ago

I'd be willing to have a look. Like Lars, it would be from ITS, though I suppose I could try TOPS-20 afterward too.

larsbrinkhoff commented 6 years ago

Hello @frink0 and @DavidGriffith,

If you want a more interactive conversation about ITS and/or PDP-10s, there is an IRC cannel called # PDP-10 at freenode.net.

DavidGriffith commented 6 years ago

I think I'll make up some more Panda Display boards. Besides @larsbrinkhoff and @frink0, who else wants one (or more)?

larsbrinkhoff commented 6 years ago

This may not be the best place to reach the intended audience. I think a post to the its-hackers mailing list would reach more people.

larsbrinkhoff commented 6 years ago

I took the offer to help with testing.

larsbrinkhoff commented 6 years ago

@DavidGriffith, I think I have all parts now except the Maxim display drivers. Maybe that's enough to do some testing?

DavidGriffith commented 6 years ago

No. You'll need the Maxim chip otherwise you won't know if any of your testing is doing anything useful.

frink0 commented 6 years ago

@DavidGriffith, I forgot to say back in May: I much appreciate your offer to make some, as I lack the skills needed to do it myself presently. But I wouldn't want to put you out of pocket, so I'm willing to pay for the parts required and shipping afterward, and if you would like some sort of remuneration for your time besides, I'm sure we could work that out too.

DavidGriffith commented 6 years ago

@frink0 I can work with that. However, I'm not going to do a new run of boards until I finalize the design for a 3D-printed carrier to allow the board to easily be mounted in a 5.25-inch drive bay (see https://github.com/PDP-10/its/issues/1127)

frink0 commented 6 years ago

@DavidGriffith No worries, this is hardly pressing. Thanks again!

larsbrinkhoff commented 6 years ago

I will have to remind the Hong Kong dealer they were supposed to deliver the Maxim part today.

larsbrinkhoff commented 5 years ago

The last part arrived just now! I think I'll be able to test it tonight.

larsbrinkhoff commented 5 years ago

Got the firmware programmed. Setting LEDs with ptest works.

larsbrinkhoff commented 5 years ago

I'm not sure how this should be accessed from KLH10. The KL10 doesn't have any front panel, just a PDP-11/40 front end. The KS10 similarly has an 8080 front end and no lights.

The MIT MC KL10 had a custom KL-UDGE board attached as an I/O bus device. But we don't have an emulator that can run KL10 ITS.

The most straigtforward option is @rcornwell's KA10 simulator.

I wonder how the Panda TOPS-20 could get access to the Panda Display?

Rhialto commented 5 years ago

src/dvlites.c has code to access it.

larsbrinkhoff commented 5 years ago

Thanks @Rhialto, I'll examine that file.

I see the old display could have four units attached! It had 36 main lights, and 3 auxiliary. The USB display has 40 + 4.

CONO do the "host" device sets the aux lights. DATAO PI, sets the main lights. As far as I can see this should work on both KL and KS!

larsbrinkhoff commented 5 years ago

I have the HACK sample program running in ITS now, using the KA10 simulator though.

Something in ITS is interfering.

larsbrinkhoff commented 5 years ago

These.


SEAREP+13/   DATAO PI,B
SCHDN2+5/   DATAO PI,116057
QSETUP+56/   DATAO PI,
CKML1A+1/   DATAO PI,
larsbrinkhoff commented 5 years ago

To make ITS leave lights alone: MIPGDS/ -1

larsbrinkhoff commented 5 years ago

The KS10 of course has a completely different set of I/O instructions, but fortunately the opcode occupied by DATAO PI, is free!

larsbrinkhoff commented 5 years ago

I made this branch:
https://github.com/PDP-10/klh10/commits/lars/lights

As you can see, it's at the hacking stage still.

larsbrinkhoff commented 5 years ago

I suppose we should retain support for the old parallel port display?

I think adding to the existing dvlites.c is the way to go, rather than adding a new file. But I'm open to suggestions.

Should this be a runtime option? Or a configure "--enable" option?

larsbrinkhoff commented 5 years ago

This isn't quite ready for merging yet, but almost.

I made it a runtime option. If you give the command lights usb, it'll try to use the USB Panda Display.

It doesn't work on a KS10, and I still don't know why.

larsbrinkhoff commented 5 years ago

Now checked with KS10 and ITS.

larsbrinkhoff commented 5 years ago

Ok, merging this then.