Jump to content
Sign in to follow this  
FarmerPotato

What would you do with dual screens on a 99/4A?

Recommended Posts

 
So Stuart sent me a 9958 with the challenge to re-create a plug in video board upgrade.
 
I built a 9938+9995 standalone wirewrap 30 years ago, so this is just fun, but it has been done before (OPA SoB, Dijit.)
 
I got to thinking, what about a DUAL 9958?
 
The VDP RAM ports could be switched to mirrored, or just one screen getting focus, or operated independently as two ports.
 
That's seriously weird. What would anyone do with it? Support for a second graphics screen would be easy to add in environments like FORTH. Imagine instead of split-screen bitmap mode, you had one screen for text and coding and another for graphics.
 
Or two TI BASIC programs operating out of separate VDP RAM, switchable with a button. 
 
Or the ultimate, a Munch-Man with a super wide screen.
 

Share this post


Link to post
Share on other sites

I was playing around with 2 screens using Tera Term over RS232 for the Forth command line and the VDP display on my real iron for some graphics stuff.

I still have more work to do to make it completely practical (a DV80 file editor) but it's a fun way to work, with coding on one screen and the final product on the other.

Share this post


Link to post
Share on other sites

Interesting concept, but I've never given it much thought because with the TI's limited memory, there is little chance of running two programs/windows at the same time and with the stock VDP... questions arise.  Now having a dual video display, one in the TI and one in the P-Box could be interesting, but then again, application to cost benefit or even availability of programs is another impediment... and of course you still have a single CPU.  Now being able to switch back and forth quickly using paged memory in a SAMs' might be a nice trick, but, again I dunno enough about it to know if it's practical or actually doable..

 

Now, the TIPI's RPi has a video output and a TI program could work as some sort of interface for a secondary program working in the background on the Rpi, but I figure the programming would be a nightmare for minimal gain.

 

In the end I'm content using my TI for a single application at a time.  This all being said, who knows what the future could bring.

Share this post


Link to post
Share on other sites

If the graphics on each screen could be off-set just the right way then yeah, crossed eyes and play Hunt The Wumpus in 3D. ;)

 

Stereo Wumpus hunting.

Share this post


Link to post
Share on other sites

Interesting concept, but I've never given it much thought because with the TI's limited memory, there is little chance of running two programs/windows at the same time and with the stock VDP... questions arise.  Now having a dual video display, one in the TI and one in the P-Box could be interesting, but then again, application to cost benefit or even availability of programs is another impediment... and of course you still have a single CPU.  Now being able to switch back and forth quickly using paged memory in a SAMs' might be a nice trick, but, again I dunno enough about it to know if it's practical or actually doable..

 

Now, the TIPI's RPi has a video output and a TI program could work as some sort of interface for a secondary program working in the background on the Rpi, but I figure the programming would be a nightmare for minimal gain.

 

In the end I'm content using my TI for a single application at a time.  This all being said, who knows what the future could bring.

 

????

 

What are you going on about?  Erik is talking about VRAM for a 9958 VDP in place of the stock 9918A.  The 9958 can have upwards of 128 KiB VRAM, easily handling screen paging.

 

...lee

Share this post


Link to post
Share on other sites

 

????

 

What are you going on about?  Erik is talking about VRAM for a 9958 VDP in place of the stock 9918A.  The 9958 can have upwards of 128 KiB VRAM, easily handling screen paging.

 

...lee

 

What am I going on about?  Hmm, let me see... he's talking about dual monitors for a 9958 and asked what anyone would do with it.  I threw in my two cents and mentioned a few cheaper alternatives, and their drawbacks, after all this is all hypothetical right?  

Share this post


Link to post
Share on other sites

Interesting concept, but I've never given it much thought because with the TI's limited memory, there is little chance of running two programs/windows at the same time and with the stock VDP... questions arise.  Now having a dual video display, one in the TI and one in the P-Box could be interesting, but then again, application to cost benefit or even availability of programs is another impediment... and of course you still have a single CPU.  Now being able to switch back and forth quickly using paged memory in a SAMs' might be a nice trick, but, again I dunno enough about it to know if it's practical or actually doable..

 

Now, the TIPI's RPi has a video output and a TI program could work as some sort of interface for a secondary program working in the background on the Rpi, but I figure the programming would be a nightmare for minimal gain.

 

In the end I'm content using my TI for a single application at a time.  This all being said, who knows what the future could bring.

 

I can't of a way that two VDPs would help you run two programs, except for TI BASIC which might be flippable between two programs (however PAD contains some important info.)

 

Also I foresee that two VDPs would need to coordinate (for instance only one can return data to the CPU at  a time). I think two identical VDPs on one board would be simpler to build. 

Share this post


Link to post
Share on other sites
 
On an 80s workstation, a second display might have been a dedicated frame buffer, especially if the primary display was monochrome (or low color) and the second was 24-bit color. 
 
Imagine that the two VDPs start up in mirroring mode - they always show the same thing.
 
Technically, in mirroring mode, VDP 2 would accept the writes to VDP 1 but do nothing on reads. It would always be up to date with the same image as VDP 1.

Normal equates - call these VDP 1


VDPRD  EQU  >8800           ; VDP read data
VDPSTA EQU  >8802           ; VDP status register
VDPWD  EQU  >8C00           ; VDP write data
VDPWA  EQU  >8C02           ; VDP set read/write address

Additional equates -  VDP 1 only

VDPRD  EQU  >8810           ; VDP read data
VDPSTA EQU  >8812           ; VDP status register
VDPWD  EQU  >8C10           ; VDP write data
VDPWA  EQU  >8C12           ; VDP set read/write address

Additional equates -  VDP 2 only

VDPRD  EQU  >8820           ; VDP 2 read data
VDPSTA EQU  >8822           ; VDP 2 status register
VDPWD  EQU  >8C20           ; VDP 2 write data
VDPWA  EQU  >8C12           ; VDP 2 set read/write address
 
Once there has been an access to VDP 1 or 2 specifically at one of the new addresses, mirroring mode ends, VDP 2 becomes independent and responds only at
its own addresses. VDP 1 responds at both the base address or the new VDP 1 address.
 
Imagine this demo:
 
1. A utility makes a copy of your favorite EA3 or EA5 program, substituting VDP addresses with VDP2. External references to E/A utilities like VMBW are replaced with VDP2 versions.
 
You open your favorite program loader, load the program. So far VDP2 has been in mirrored mode, so it shows exactly the same thing as VDP 1. But as soon as the program starts, it begins writing to VDP2 so VDP2 enters dual mode. The image on VDP1 shows the program loader screen as if frozen while the program runs on VDP2. 
 
You quit the program. The TI title screen appears on VDP1 while the program you quit leaves a frozen screen behind on VDP2.
 
2. A special EA3 or EA5 program loader has an option to choose which VDP to use. See #1.
 
3. Screen dump. While VDP 2 retains a mirrored copy of the previous program output, you run a screen dump program that retrieves the image from VDP 2. This would work even if you didn't have a second monitor plugged in. For instance, Super Sketch or TI Artist runs in mirrored mode, then you push a button to freeze VDP 2, quit the program, and run a utility to retrieve the image from VDP 2.
 
4. A specially written program uses both VDP1 and VDP2 for different purposes. Examples:
4a. help is displayed on one screen.
4b. a picture viewer puts the image on VDP 2. 
4c. the FORTH cursor runs on VDP 1 while bitmap graphics go to VDP 2.
 
5. User switch. After viewing one screen of a program, press a button to freeze that display and switch to the other one.
It's the same program, just captured at different moments.

Share this post


Link to post
Share on other sites

Or the ultimate, a Munch-Man with a super wide screen.
 

Microsurgeon with a full-screen playfield and all the status boxes on the second screen(with a high-color ICU graphic, since we're not limited by the 9918 palette anymore either).

Share this post


Link to post
Share on other sites

Microsurgeon with a full-screen playfield and all the status boxes on the second screen(with a high-color ICU graphic, since we're not limited by the 9918 palette anymore either).

 

Microsurgeon is one of my favorites! Great idea, its due for a remake. 

Share this post


Link to post
Share on other sites

ZeroZap with a double-wide playfield and less obstacles, so you can watch your arrow up to a minute long - without any control, of course.

Share this post


Link to post
Share on other sites

Using a 1 meg SAMS makes this even more possible, and 4 meg SAMS and 9958 with 192K would be boss.

Share this post


Link to post
Share on other sites

ZeroZap with a double-wide playfield and less obstacles, so you can watch your arrow up to a minute long - without any control, of course.

This is an even better idea.

Share this post


Link to post
Share on other sites

Couldn't this also work using one as the external input to the other to build a much more detailed screen in overlay mode?

Share this post


Link to post
Share on other sites

In MSX land, there is the V9990 Powergraph series of expansions, that is a second VDP on a card. The original version from the late 80s supported the graphics overlay mode so the output from the internal / builtin VDP can be fed as input into the second VDP.   This allowed convential use as 1 screen... 

 

The 2 VDPs are mapped into memory at different addresses ( well, those are Z80 systems, so different io-ports )  -- so a program can instruct them independently. 

 

Today, the reproduction V9990's don't have the video input / overlay feature, so it gets you into a dual screen situation... 

 

What would I be interested in doing with a second screen?

 

With 2 screens I can write games that put the status and score and player inventory or whatever on one screen, and keep the second 'immersive' ---

or...   there could be online gameplay with room for 'party' chat on the second screen.

or...   If overlay was supported, I could see writing some video titling for the second screen, that left controls and status up on the native screen so you don't have to memorize hot-keys... Even without overlay mode ( using post processing in a digital environment ) it could be usable.  I've day dreamed about using the actual 4A to produce overlays for future youtube videos.

and... I would send debugging information to the second screen when developing on hardware. 

 

-M@

 

 

Share this post


Link to post
Share on other sites

In MSX land, there is the V9990 Powergraph series of expansions, that is a second VDP on a card. The original version from the late 80s supported the graphics overlay mode so the output from the internal / builtin VDP can be fed as input into the second VDP.   This allowed convential use as 1 screen... 

 

The 2 VDPs are mapped into memory at different addresses ( well, those are Z80 systems, so different io-ports )  -- so a program can instruct them independently. 

 

Today, the reproduction V9990's don't have the video input / overlay feature, so it gets you into a dual screen situation... 

 

What would I be interested in doing with a second screen?

 

With 2 screens I can write games that put the status and score and player inventory or whatever on one screen, and keep the second 'immersive' ---

or...   there could be online gameplay with room for 'party' chat on the second screen.

or...   If overlay was supported, I could see writing some video titling for the second screen, that left controls and status up on the native screen so you don't have to memorize hot-keys... Even without overlay mode ( using post processing in a digital environment ) it could be usable.  I've day dreamed about using the actual 4A to produce overlays for future youtube videos.

and... I would send debugging information to the second screen when developing on hardware. 

 

-M@

 

 

 

Those are all good reasons to build this! 

 

I bet we could get Doug to patch MG Explorer to use two screens.

 

I looked on page 104 of the V9938 manual, External Synchronization. I don't understand how to build the GenLock. I get that it is a PLL circuit. VDP1 HSYNC is input to the PLL.  I don't get where the VDP2 crystal goes (is HSYNC from VDP1 already fXTAL=21.48 MHz? No, it's fXTAL/2.)

 

[sharedmedia=gallery:images:30789]
 

Is there a suitable PLL IC you can just buy off the shelf? I see TI makes a bunch under $2. The SN74LV4046ANSR is a PLL and VCO  . Combined with LT1675 high bandwidth switch, that seems to be a modern solution to external superimpose, for $10 in chips.

 

Internal superimpose seems to be much easier. You need a single clock oscillator, but,

 

"V9958 is more straightfoward on this, you just connect /VRESET and /HRESET to VSYNC and HSYNC signals coming from the other VDP/video source and you're good to go"

 

according to this thread on msx.org 

 

So I imagine the following Superimpose use cases
 
  1. Twin 9958: superimpose VDP2 over VDP1, giving extra scrolling planes and sprites, or titling
  2. Video Production: superimpose VDP2 over external RGB for titling
  3. (No superimpose)
 
These can combine with mirror and dual mode which are:
 
  • Mirror Mode: VDP1 and VDP2 have the same graphics.
  • Dual screen: VDP1 and VDP2 showing independent graphics screens.
 
in either case, VDP1 is the console's default VDP.
 

 

 

Share this post


Link to post
Share on other sites

Another thing. The 9958 has 15KHz analog RGB output. Monitors to display that on are scarce. I wonder if there is an inexpensive IC that would do the job of converting analog RGB to DVI?

 

This one costs $45:

https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7403.pdf

 

Old $4 TVP7002 from TI takes analog RGB (multiplexed! superimpose!) but outputs 24 bit digital color. You need another chip to code that into a DVI signal.

Share this post


Link to post
Share on other sites

I spent May working on IceTea 0.2, now while I wait for boards from OSH Park I started laying out:

 

Gemini - A Twin 9958 board to replace 9918.

 

I started wondering how to best move data between screens, some kind of DMA maybe...

 

I got the crazy idea to use 128K DRAM on each 9958, but, make the expansion 64K switchable.

 

  1. The first 9958 would use a block copy to move its data from main RAM to the expansion 64K.
  2. When the command finishes, the CPU would switch all the access lines to the other 9958. 
  3. Hopefully this doesn't hurt the refresh cycle of the DRAM.
  4. The second 9958 would move from expansion RAM to the frame buffer in RAM.

 

This would provide a way to flip a big chunk of data from one 9958 to the other.

 

It's been 25 years since I programmed the 9938, so I forget whether there even is a block copy to expansion DRAM.

 

Oh yeah,

V9938 MSX-VIDEO USER'S MANUAL p 62

4.3 HMMM (High-speed move VRAM to VRAM 

The HMMM command transfers data in a specified rectangular area from the VRAM or the expansion RAM to the VRAM or the expansion RAM. 

Share this post


Link to post
Share on other sites

I've identified the LT1675 as the switch for RGB superimpose. 1675-3 costs $7.88 in quantity 1, comes in SSOP-16 package (0.5 mm spacing, terrifying.) To get it in a reasonable package like SO-8 (1.27mm spacing), you need 3x of the 1675-1 which costs $3.21 in quantity 10. For sanity's sake I prefer the SO-8 packages.

 

https://www.analog.com/en/products/lt1675.html

Share this post


Link to post
Share on other sites
Schematics drawn up...
 
Superimpose is a lot harder than I can do in my coming spare time. External sync is the hardest part. I have no experience with analog video debugging.
 
However a single 9958 board is quite doable (Stuart wants this).
 
Or not as tricky, a twin 9958 board with one clock source (no PLL) with superimpose.
 
 
Options:
  • Twin+EXT: VDP2 can superimpose on VDP1 or EXT (ie EXT or VDP1 can be under the VDP2 image)
  • Twin+Sup: VDP2 can superimpose on VDP1 
  • Twin: just two screens, no superimpose
  • Single: basic VDP upgrade
 
I have dropped the expansion VRAM completely.
 
Pro: 
  • VGA out (or SCART?) as well as composite, s-video
  • upgrades a console to 80-column
  • Plugs into 9918A socket
 
Con: 
  • Bulky? or external
  • 15KHz monitor required http://15khz.wikidot.com/
  • Requires 3 wires soldered (except Single)
  • Obsolete when F18A mk2 comes out.
  • EXT must also be an analog RGB, 15khz signal
     
 
BOM (Bill of Materials)
Part        Description         price   source  package Twin+EXT  Twin+Sup Twin   Single
CD74HC4060  oscillator, counter 0.65    mouser  SOIC-16     1       1       0       0
LT1675-1    RGB switch          3.21    mouser  SO-8        3       3       0       0
SN74LV4046  VCO and PLL         1.36    mouser  SO-16       1       0       0       0
LM1881      sync separator      0.70    ebay    SO-16       1       1       1       1
CXA1645     composite encoder   1.13    ebay    SO-16       2       2       2       1
41464       DRAM                1.79    unicorn DIP-16      8       8       8       4
V9958       VDP                10.00    ebay    DIP-64      2       2       2       1
ATF16V8     logic               0.88    mouser  PLCC-20     1       1       0       0
PCB         PCB                 1.00    oshpark sq in      20      15      15      10
crystal     crystal             0.59    mouser  TO-2        1       1       2       1
transistors linear              0.10    mouser  TO-3        0       0       0       0
caps        discrete            0.01    mouser  SMD1206    21      19      19      11
resistors   discrete            0.01    mouser  SMD1206    12      12      12       9
DE-15       CORAS15SHD vga      0.84    unicorn rt angle    3       2       2       1  
 
Total BOM Cost           
Twin+EXT    73.23   
Twin+Super  66.01   
Twin        56.32
Single      30.65
 
Based on 10 unit run.
 
Trivia: Single VDP option can't be rightly be called Gemini, therefore it defaults to the name of VDP1: Cautes.
 
 

Share this post


Link to post
Share on other sites

Single VDP option is still setup as a second VDP in the system, correct?  based on the title of the thread and all? 

 

Is this a PEB design? or on the side? 

 

-M@

Share this post


Link to post
Share on other sites

Single VDP option is still setup as a second VDP in the system, correct?  based on the title of the thread and all? 

 

Is this a PEB design? or on the side? 

 

-M@

Oh..  I hadn't thought of it that way. Coexisting with a 9918A means there is no way to separate the write addresses in >8C00 to keep data away from the 9918A.

So, thinking through that, a side port or PEB vdp could be in mirror mode (accepting writes at >8C00 but not reads) until accessed at some other base like >8500 (sorry, Mr. sound chip.. I'd move you to the VDP card.)

 

My plan was one board, 1 or 2 VDP, goes in the console. First prototype will have a 40 pin ribbon cable socket to replace the 9918A (plus 3 wires A10,A11,A13 = 17 signals) and two PMOD connectors to plug into IceTea (16 pins.. no RESET) .

A step down from there is a single VDP for less money.

 

 

I think the most sensible path for me is to 1.) lay out the Twin+EXT PCB but populate it and debug it for Twin+SUP.  A smaller spinoff would be 2) a single 9958 upgrade (what Stuart wanted.) The sale prices would be like $100 and $50 that way.

 

 

9918A socket pins used:

 

MODE (A14)

CSW*

CSR*

INT1*

RESET*

CPUCLK/GROMCLK (output)

CD0-CD7 (cpu data)

 
wires needed to decode additional addreses:
 
A10,A11,A13
A13 is optional if you don't mind losing the palette register write and indirect register write (at >8C04 and >8C06)
A10 and A11 would be set to select just VDP1 or VDP2 read/write.
 
So installing  a Twin board is harder, you need to solder 3 wires (I'll provide jumpers.)
But installing a Single board would be a plain swap for the 9918A.

Share this post


Link to post
Share on other sites

Single VDP option is still setup as a second VDP in the system, correct?  based on the title of the thread and all? 

 

Is this a PEB design? or on the side? 

 

-M@

 

 
Question: what video connectors would you care about?
  • DE-15HD (VGA) + jumper for RGB-Csync or VGA-Hsync-Vsync
  • SCART with jumper to choose RGB-S or composite
  • S-Video (basically free with CXA2075 encoder)
  • RCA composite (basically free with CXA2075 encoder)
  • 99/4A Din-5 composite
  • Commodore 1084S 6-pin DIN
  • Apple DB-15 RGB-S port (Apple IIgs, Mac era)
 
I consider SCART because some of us recommend Samsung 910MP with SCART.
I'm not sure what DE-15HD to SCART cable is available unless you wire your own.
I think Apple passive adaptors are generally available.
 
I think there should be a separate PCB for connectors, with a ribbon cable.
Pros: relieves stress, allows connectors to change without major rework.
Cons: impact on impedance, crosstalk

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...