Image Map Image Map
Page 2 of 2 FirstFirst 12
Results 11 to 16 of 16

Thread: Video output over parallel port?

  1. #11
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    36,416
    Blog Entries
    18

    Default

    If you have more CPU and memory than bandwidth, you could also get fancy and take a cue from the video compression people--just transmit the "differences" if the content of adjacent frames is similar.

    But given an 8088, I suspect that simply is not the case here.

  2. #12

    Default

    Quote Originally Posted by jhhoward View Post
    I am imagining is something like a Pi Zero connected to the parallel port of the PC and a custom TSR continuously sending a copy of the PC's video memory.
    I have a very very still-buggy prototype of a contraption that works similarly, but it talks to the Pi through an 8255 PPI chip on an ISA card, which the Pi plugs onto as a daughtercard. Very similar to working with an ECP parallel port. One could accomplish the same thing with an oldskool parallel port, but it would be much slower as you'd have to transfer a nybble at a time instead of a byte, at least when going Pi->XT, and you'd have to bit-bang a clock signal on the port I think (assuming I am correctly remembering how PLIP works).

    My use-case is to use the host computer as display and keyboard IO (as well as eventually also allowing the Pi to access the host computer's physical disk drives), rather than the other way around as you describe, though. The idea is to be able to emulate a 486 (or whatever other vintage architecture, perhaps) on the Pi, but it would pass the display/keyboard/mouse/disks etc IO back through the host system. Kinda like running a Mach 20 sort of card, but not having to pay hundreds of dollars for it and getting better performance (386 protected mode, etc).

    According to my figuring, which I can't remember the details of and I may have done wrong, because I am an idiot, I should be able to transfer 4-bit EGA video at at least 30 frames per second, but 256 color MCGA/VGA mode may have to drop frames sometimes. I think I can improve that, though, assuming that the 8237 DMA controller can read a stream of bytes from an IO port quickly into the video memory during the vertical blanking interval, but that is something I need to learn more about and goes beyond my crappy little initial prototyping just to see if it's at all feasible. This is all assuming that the Pi's GPIO can keep up with the DMA controller on the XT bus well enough to transfer a full 64k during vblank, which I have no idea about yet.

    Kind of a solution in search of a problem, but I do think it would be pretty keen to be able to emulate a bunch of different old systems on my Heathkit XT and/or PS/2 Model 25. :3
    Last edited by bladamson; March 6th, 2021 at 07:48 AM.
    -- Lee
    If you get super-bored, try muh crappy YouTube channel: Old Computer Fun!
    Looking to Buy/Trade For (non-working is fine): Mac IIci hard drive sled and one bottom rubber foot, Multisync VGA CRTs, Decent NuBus video card, PC-era Tandy stuff, Weird Old Unix Stuff, Aesthetic Old Serial Terminals (HP and Data General in particular)

  3. #13
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    36,416
    Blog Entries
    18

    Default

    8 bit DMA transfer isn't as fast as many think, because it takes several cycles to complete a single transfer. This is one of the reasons that AT-class disk controllers used programmed I/O, rather than even 16-bit DMA--an INSW instruction is faster. I found it a struggle with an 8 MHz ISA bus to accommodate 1MB/sec transfer rates--this is why high-end open-reel magtape controllers require buffer RAM--the standard Pertec interface has no handshaking. It's "here's the data and I don't care if you're there to catch it" protocol.

    Busmastering-type DMA can be much faster, if the architecture permits it--basically wrest control of the bus from the CPU and handle the transfer yourself.

  4. #14

    Default

    Quote Originally Posted by Chuck(G) View Post
    Busmastering-type DMA can be much faster, if the architecture permits it--basically wrest control of the bus from the CPU and handle the transfer yourself.
    Shoot, I was hoping that was exactly what the 8237 could do. IIRC there's a mode of the Z8410 DMA controller where you can program it to repeatedly read a certain number of bytes from an IO port and write those bytes sequentially to memory. Then it forces the CPU off the bus does the transfer in fewer clock cycles than the CPU would be capable of on its own (as there's no need for next instruction fetch or loop control and such). I was assuming that the 8237 would have some similar sort of functionality, but hadn't looked into it yet. I guess not.

    I guess the other option would be some kind of shared memory block above 640k. Maybe something that looked like EMS on the XT side, for compatibility's sake. Solving the contention issues elegantly requires more head-scratching than I am capable of after 4 beers tonight, though. D:

    I'm also still not convinced that the Pi's GPIO is fast enough, but I haven't actually done any speed tests yet. Although I believe there is some way to access it as a pair of 32 bit words or something rather than individual bits. Gotta reread the docs......
    Last edited by bladamson; March 6th, 2021 at 04:48 PM.
    -- Lee
    If you get super-bored, try muh crappy YouTube channel: Old Computer Fun!
    Looking to Buy/Trade For (non-working is fine): Mac IIci hard drive sled and one bottom rubber foot, Multisync VGA CRTs, Decent NuBus video card, PC-era Tandy stuff, Weird Old Unix Stuff, Aesthetic Old Serial Terminals (HP and Data General in particular)

  5. #15
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    36,416
    Blog Entries
    18

    Default

    If you want wide GPIO, the Pi may not be the right platform. A more general-purpose MCU, such as a PIC32 or STM32 might be better, even if the CPU clock isn't as fast.

  6. #16

    Default

    Quote Originally Posted by Chuck(G) View Post
    If you want wide GPIO, the Pi may not be the right platform. A more general-purpose MCU, such as a PIC32 or STM32 might be better, even if the CPU clock isn't as fast.
    My main reason for wanting to use the Pi is the plethora of old computer emulators that will run on it with very little effort. But yeah, I agree.
    -- Lee
    If you get super-bored, try muh crappy YouTube channel: Old Computer Fun!
    Looking to Buy/Trade For (non-working is fine): Mac IIci hard drive sled and one bottom rubber foot, Multisync VGA CRTs, Decent NuBus video card, PC-era Tandy stuff, Weird Old Unix Stuff, Aesthetic Old Serial Terminals (HP and Data General in particular)

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
  •