Jump to content
IGNORED

VDP registers in TI BASIC


senior_falcon

Recommended Posts

According to the E/A manual, in TI BASIC the VDP registers are:

R0=>00; R1=>E0; R2=>00; R3=>0C; R4=>00; R5=>06; R6=>00; R7=>17

But they actually are:

R0=>00; R1=>E0; R2=>F0; R3=>0C; R4=>F8; R5=>86; R6=>F8; R7=>07

R2, R4, R6 put the tables at >C000 - I assume the bits past 16K are dropped which would make this come out to >0000.

R5 puts the table at >4300 which would come out to >0300 if the above is true.

Anyone have an idea why these values were used and not the ones in the E/A manual?

Link to comment
Share on other sites

I got these values from the debugger in Classic 99. Since they seemed odd to me, I looked around in TI Intern and found this on page 145:

MOVE >0003 TO REG>02 FROM GROM >216C. This loads >F0, >0C, >F8 into registers 2, 3, and 4. I couldn't find the code that changes registers 5 - 7, but I believe Classic is accurately reporting what was sent to the VDP registers. When you select E/A or XB the values match what the book says they should be. So the question stands - why are they different in TI BASIC? There must have been a reason besides just confusing people 30 years down the road!

Link to comment
Share on other sites

As you say, "the bits past 16K are dropped", so it looks like the VDP tables are actually ending up in the same addresses as using the values from the manual. So the manual is keeping things simple, without the reader having to work out that bits are dropped. So why the 'complicated' values that are*actually* written? Is that data used elsewhere in the GROM for other purposes maybe?

Link to comment
Share on other sites

As you say, "the bits past 16K are dropped", so it looks like the VDP tables are actually ending up in the same addresses as using the values from the manual. So the manual is keeping things simple, without the reader having to work out that bits are dropped. So why the 'complicated' values that are*actually* written? Is that data used elsewhere in the GROM for other purposes maybe?

 

The reason is to foul up somebody's efforts to replace the VDP chip with a more advanced one. When the 9938 replacement devices came out with their expanded memory, a way had to be found to substitute compatible registers for the ones being set in Groms 0 and 1. So replacement groms were used for the devices like the TIM (SOB board) or an interrupt was used to 'catch' the VDP register setting and change it on the fly such as was done in the Digit AVPC card.

 

Gazoo

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...