Jump to content

Photo

9938/9958 Discussion Forum

9938 9958 Video

108 replies to this topic

#101 eck OFFLINE  

eck

    Space Invader

  • 44 posts

Posted Sun Jan 12, 2014 8:46 AM

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.



#102 microprocessor OFFLINE  

microprocessor

    Space Invader

  • 38 posts

Posted Sat Feb 1, 2014 2:35 PM

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



#103 eck OFFLINE  

eck

    Space Invader

  • 44 posts

Posted Sun Feb 2, 2014 1:16 PM

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. 



#104 artrag OFFLINE  

artrag

    Dragonstomper

  • 708 posts

Posted Mon Apr 6, 2015 1:36 PM

The v9938 lacks of HW horizontal scrolling, never the less try this rom on any msx 2

https://sites.google...redirects=0&d=1



#105 per OFFLINE  

per

    Moonsweeper

  • 329 posts

Posted Thu Aug 3, 2017 9:58 PM

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, Thu Aug 3, 2017 9:59 PM.


#106 artrag OFFLINE  

artrag

    Dragonstomper

  • 708 posts

Posted Fri Aug 4, 2017 12:30 AM

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

#107 per OFFLINE  

per

    Moonsweeper

  • 329 posts

Posted Sat Aug 5, 2017 3:18 AM

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, Sat Aug 5, 2017 3:21 AM.


#108 RickyDean ONLINE  

RickyDean

    Dragonstomper

  • 686 posts

Posted Mon Aug 7, 2017 5:44 AM

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.



#109 per OFFLINE  

per

    Moonsweeper

  • 329 posts

Posted Wed Aug 9, 2017 10:45 AM

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.... Board 1.02.pdf


Edited by per, Wed Aug 9, 2017 10:46 AM.






Also tagged with one or more of these keywords: 9938, 9958, Video

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users