Jump to content
Sign in to follow this  
--- Ω ---

9938/9958 Discussion Forum

Recommended Posts

Thanks, artrag!

 

That is it, what I want to know. There are ports for writing purposes like >8C00, >8C02, >8C04 and >8C06 on the TI and ports to read from like >8800 and >8802. Interesting that the TI engineers used this way.

Share this post


Link to post
Share on other sites

On MSX there are only two ports involved in VRAM access (other ports are used for palette):

 

- port 0x99 is used to set VRAM addresses and to signal if the next operation will be read or write. As for the TMS9918, you need to access to port 0x99 twice, writing low and high bytes of the VRAM address on 14 bit

 

- port 0x98 is used for reading and writing the actual data from and to the VRAM, so you can read and write from the same port, if I understand your question

 

Port 0x99 is also used for writing the VDP registers (as for the TMS9918). On V9938 bits 14-16 of the VRAM address are stored in a VDP register above R7. If you need to change the current vram address passing the 16K limit of the current accessed area, you have to use 0x99 four times. Twice to set the VDP register that holds the upper bits of the address and twice to set the lower 14 bits.

There is also port 0x9b to write in a auto-increment way a block of vdp registers starting from one. Or to write multiple times directly a specific register, without the need of another out istruction for register n. specification. So multiple writes on 0x9b could do:

- write always the same register, as specificated by the register pointer value that is hold in another vdp register

- write the register, as specificated by the register pointer value that is hold in another vdp register, and setup the next write to the next register in a auto-increment fashion

 

port 0x9a is used to set palette registers

Share this post


Link to post
Share on other sites

Yeah, you are right!

UNTERP MOVB 13,*14     Videoregister 10010001 17 vorlegen
       MOV  *11+,0
       MOV  *11+,1     DATA Werte abholen
UNTER1 MOVB *0+,*15     Daten in Port 3 unterbringen
       DEC  1
       JNE  UNTER1     alle geschrieben?
       B    *11        Ja, dann geht es zurück

This code uses the auto-increment feature and I followed your advice with success using a "fixed" VR17 too as you are describing above. On a TI ports 0 and 1 are separated to four ports, while ports 2 and 3 are newly added with V9938/58 expansions. That is it what was confusing me in the past.

Share this post


Link to post
Share on other sites

I am reading up on the V9958 at the moment, but there is one thing I cannot find any information on: What will happen if I select 212 line and the GRAPHICS2 or GRAPHICS3 mode? Does it reuse the first character table, does it use a fourth undocumented table after the third one or does it just fill inn the extra lines with empty border?

 

From what I can find, all modes have 256 lines virtual display area, and the physical display is just 192 or 212 of these lines. From what I can guess, I assume most modes will function as described for all the lines in the virtual display area, which means that I should have to account for 256 total lines when setting up the Pattern Nametable or bitmap in non-pattern-based modes. Can someone tell me if my assumption is right, or if the lines outside the physical display area (with no scrolling) are treated differently?

Edited by per

Share this post


Link to post
Share on other sites

Under the border there is a 4th character bank that appears or when 212 lines are selected or when the vertical scroll register is used

Share this post


Link to post
Share on other sites

Thanks a bunch!

 

Going to make a V9958 card for a 4MHz Z80 desktop. It natively got a 32K bitmap display using a custom video cirquit, but 32K is way too much (pretty good image quality, but very slow to use). In addition to that, it can't easily be synced with the CPU without hardware mods. It will be very nice to have the ability to do flicker-free graphics with fast sprites!

Edited by per

Share this post


Link to post
Share on other sites

Thanks a bunch!

 

Going to make a V9958 card for a 4MHz Z80 desktop. It natively got a 32K bitmap display using a custom video cirquit, but 32K is way too much (pretty good image quality, but very slow to use). In addition to that, it can't easily be synced with the CPU without hardware mods. It will be very nice to have the ability to do flicker-free graphics with fast sprites!

If you don't mind sort of keep us apprised as to what your doing. I have a z80 foundation card for the TI, that I would like to add video to later on.

Share this post


Link to post
Share on other sites

If you don't mind sort of keep us apprised as to what your doing. I have a z80 foundation card for the TI, that I would like to add video to later on.

Will do!

 

Was thinking of basing it on this, but with some minor modifications. First of all, I need to add support for mode 2 interrupts, and then I can as well add a register for software-swapping between PAL and NTSC color carrier clock for the video amp/encoder as well!

.

http://primrosebank.net/computers/mtx/projects/mtxplus/video/Video%20Board%201.02.pdf

Edited by per
  • Like 1

Share this post


Link to post
Share on other sites

Does anyone have a good clear pdf or doc, of the procedure needed to convert a geneve to utilize a 9958.

 

I was supposed to get a 9938 from a source in china ( I know the last one was not a good experience, but they can't all be bad can they? Couldn't find a source here),

but they didn't have one so they substituted a 9958 instead. And as I have three of them now (9958's), plus the one mounted to my TIM.

 

I need to test them somehow to verify goodness, before I give feedback. Thanks for any help.

Share this post


Link to post
Share on other sites

To my knowledge, I have never known someone to interface a 9958 with a Geneve. I tried back in the 90's, but was never successful. As it turned out, I learned later on the 9958 I had was bad. What I do not know is if my testing destroyed the 9958, or if the 9958 that was given to me was bad.

At the time, I was trying to develop a frame grabber interface for the Geneve, but since I could not get the 9958 to work, I had to abandon my efforts.

 

If I recall correctly, it seems like someone may have commented sometime since the 9958 would also need something sent to it a bit different in one of the video registers during the initialization process at boot-up. Don't ask me what that may be as that was over 20 years ago.

Beery

Share this post


Link to post
Share on other sites

Take your brand-new V9958 (or a working pulled one)

 

Carefully bent out pins 4, 21, 26, 27 so they don't go into the socket.

 

Solder a wire from pin 58 on the Geneve (38) socket 5V power to one end of a filter cap/inductor setup and the other end goes to your new bent out pin 21 of your 58 to give its internal DAC the 5V supply line it needs.

(It should NOT be directly connected, should be filtered between the two see the underside of your TIM for circuit!

 

Original Geneve 0.98 eeprom should boot it up fine, but there was other versions which incorrectly setup R25 register.

 

Registers R25, R26, R27 if totally ZEROed which should be on normal RESET startup, the '58 will function like a '38.

 

The bit that causes problems is b5 on R25 when if 1 instead of 0 causes pin 8 to output VDS instead of CPUCLK

 

For more info, please review pages 5 and 12 of the V9958 technical manual (I attached it and v9938) manauls here to make it easier.

 

Since I am replying here and being a good mood, I decided to attach a 9938.ARK (and attached as .zip for PC emulators/editing) from my collection of private source codes, for your coding pleasure.

 

I hereby with this post on AtariAge on 4/11/2019 1:12pm give full permission for anyone to use the files inside it which are as follows:

 

 

#1 - ADJUST-S    v1.00.10/09/88  GENEVE 9938 SCREEN ADJUSTER
#2 - ART-S          v1.00.08/01/90  GENEVE/AVPC/TIM 3D STRING ART
#3 - FST-S          v1.00.08/01/90  9938 FAST GAT! 3D STRING ART
#4 - GDEMO-S    v1.00.10/11/88  GENEVE VDP 9938 DEMO
#5 - MOV-S         v1.00.08/03/90  MOVE 9938 GAT! 3D STRING ART
#6 - MYSHOW-s  v1.20 HFDC/TIM/32K - MY-ART/YAPP SLIDE SHOW (c)1990 OPA
#7 - TMP-S       v1.00.08/02/90  TEMP 9938 GAT! 3D STRING ART
#8 - TST-S       v1.00.08/03/90  MOVE 9938 GAT! 3D STRING ART
#9 - VDP-LIB    v1.00.07/30/90  9938/9958 VDP UTILITIES
#10 - VDP-UTIL1   v1.00.11/02/88  GENEVE VDP 9938 UTIL'S
#11 - XB-VDP-S   9938 UTILITES FOR EXTENDED BASIC

 

Please at least if you use any of the above source in your creative ideas, apps at least give credit for it. :)

 

Enjoy!

 

-=(Gary from O.P.A.)=-

yamaha_v9958_ocr.pdf

Yamaha_V9938_MSX-Video_Technical_Data_Book_Aug85.pdf

OPA-2019-04-11-V9938-Source-Examples.zip

OPA-2019-04-11-V9938-Source-Examples.ARK

  • Like 7

Share this post


Link to post
Share on other sites

Take your brand-new V9958 (or a working pulled one)

 

Carefully bent out pins 4, 21, 26, 27 so they don't go into the socket.

 

Solder a wire from pin 58 on the Geneve (38) socket 5V power to one end of a filter cap/inductor setup and the other end goes to your new bent out pin 21 of your 58 to give its internal DAC the 5V supply line it needs.

(It should NOT be directly connected, should be filtered between the two see the underside of your TIM for circuit!

 

Original Geneve 0.98 eeprom should boot it up fine, but there was other versions which incorrectly setup R25 register.

 

Registers R25, R26, R27 if totally ZEROed which should be on normal RESET startup, the '58 will function like a '38.

 

The bit that causes problems is b5 on R25 when if 1 instead of 0 causes pin 8 to output VDS instead of CPUCLK

 

For more info, please review pages 5 and 12 of the V9958 technical manual (I attached it and v9938) manauls here to make it easier.

 

Since I am replying here and being a good mood, I decided to attach a 9938.ARK (and attached as .zip for PC emulators/editing) from my collection of private source codes, for your coding pleasure.

 

I hereby with this post on AtariAge on 4/11/2019 1:12pm give full permission for anyone to use the files inside it which are as follows:

#1 - ADJUST-S    v1.00.10/09/88  GENEVE 9938 SCREEN ADJUSTER
#2 - ART-S          v1.00.08/01/90  GENEVE/AVPC/TIM 3D STRING ART
#3 - FST-S          v1.00.08/01/90  9938 FAST GAT! 3D STRING ART
#4 - GDEMO-S    v1.00.10/11/88  GENEVE VDP 9938 DEMO
#5 - MOV-S         v1.00.08/03/90  MOVE 9938 GAT! 3D STRING ART
#6 - MYSHOW-s  v1.20 HFDC/TIM/32K - MY-ART/YAPP SLIDE SHOW (c)1990 OPA
#7 - TMP-S       v1.00.08/02/90  TEMP 9938 GAT! 3D STRING ART
#8 - TST-S       v1.00.08/03/90  MOVE 9938 GAT! 3D STRING ART
#9 - VDP-LIB    v1.00.07/30/90  9938/9958 VDP UTILITIES
#10 - VDP-UTIL1   v1.00.11/02/88  GENEVE VDP 9938 UTIL'S
#11 - XB-VDP-S   9938 UTILITES FOR EXTENDED BASIC

Please at least if you use any of the above source in your creative ideas, apps at least give credit for it. :)

 

Enjoy!

 

-=(Gary from O.P.A.)=-

Thanks Gary, appreciate it. Wish you were still 'cookin' TI Hardware.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks Gary, appreciate it. Wish you were still 'cookin' TI Hardware.

I been busy cooking up alot of other hardware projects over the decades for various companies and gaming system. and recently worked on two retro projects -- And I have tabled 2020 for some cool retro TI projects, we see how that develops as the rest of the year 2019 unfolds, and i survive my 50th birthday next month! :)

Edited by Gary from OPA
  • Like 5

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...