Jump to content
IGNORED

TIPI - TI-99/4A to Raspberry PI interface development


Recommended Posts

On the progress side, I was able to get the TIPI-PEB version working Friday, and then the last issue fixed today. There are 2 issues with the pcb design, both fairly easily worked around.

 

Woot!

 

-M@

 

 

Great progress. Curiosity here with a question. Will the TIPI-PEB design allow the TIPI to be mounted on the card in the PEB, then it being just a matter to supply the extra cabling to the TIPI? I'm assuming this will take up 2 (3??) slots due to the extra width if you are going that route?

 

 

Beery

 

Beery

Link to comment
Share on other sites

 

 

Great progress. Curiosity here with a question. Will the TIPI-PEB design allow the TIPI to be mounted on the card in the PEB, then it being just a matter to supply the extra cabling to the TIPI? I'm assuming this will take up 2 (3??) slots due to the extra width if you are going that route?

 

 

Beery

 

Beery

 

 

http://atariage.com/forums/topic/265136-tipi-ti-994a-to-raspberry-pi-interface-development/?p=4013120

 

-M@

Link to comment
Share on other sites

Thanks for the link to the image. Are the "Ref" holes on the board for securing the Raspberry PI?

 

One thing I saw was the orientation of the LED. Maybe I am missing something, but I would have thought you would have wanted to rotate the legs 90 degrees so they would bend in an L shape to face the LED panel without touching. Maybe you have something else in mind not obvious to me. Just thought I would comment.

 

Beery

  • Like 1
Link to comment
Share on other sites

Yep, the LED mistake slipped by... This was a rendering... The holes do indeed line up for a PI 3. I still have to stop at the hardware store and find some nylon to test mount it with.

 

Here are real pictures of the first board. I do have a few changes to make:

 

Fits in the PEB well:

 

post-42954-0-12392200-1527615085_thumb.jpg

 

I think you can see I bent my LED creatively...

 

post-42954-0-37763500-1527615098_thumb.jpg

 

I thought I read that SCLK/AMD is LOW on a 4A, but I read 2.5 volts which confused my 74'138, where I have it attached with a pull-down resister to enable the decoding. That finally answers the question I asked months ago about why the genmod decoding jumpered. For the prototype, I just cut the trace and let the pull-down do its job.

 

post-42954-0-26254100-1527615111_thumb.jpg

 

The signal strength from the CPLD isn't good enough to get to the PI 3... Worked fine with a PI Zero attached right to the back, but the extra struggle of getting through the transmission wires was too much... so I added a 10k ohm pull-up on the single data-to-PI line (r_din). That worked like a charm.

 

post-42954-0-84864100-1527615122_thumb.jpg

 

---

 

So, 2 alterations are required before we start selling these... I'm a little ahead of my self though... I have to build a couple more manually altered instances to be tested in ElectricLab and Arcadeshoppers machines.

 

---

 

My first reaction to getting it working this weekend was: I'm done. I've achieved stage 2 of my goal.

 

But I'll carry on and get this built for everyone to enjoy. ( Oh and to make my life easier, I need to annotate all over the silk screen layer... KiCad decided SMD parts don't need to have their values printed... cause good reasons, like the density is usually such that there is no pcb space for it. )

 

---

 

Oh, and now I have the ultimate case for my TIPI :) ( A PEB, in case that wasn't obvious )

 

-M@

  • Like 11
Link to comment
Share on other sites

Matt,

 

I've asked this before and you pointed me towards a direction with some C code. I'm more assembly, than C, so hopefully you can point/create an example piece of code.

 

When the PEBox version of TIPI comes out, I am hoping to be able alter some existing RS232 code for the MDOS terminal program My-Term to use it. I know you have mentioned there are some ports for transferring characters.

 

If you could show an example in assembly (TI-99/4A source is fine) where you turn on the card, execute any code for a telnet session, and to then be able to send/receive characters through ports however it is done, it would be appreciated,

 

Is it possible to have an overflow on the port if you are not scanning often enough?

 

At this point, I am trying to understand what is or is not possible. Obviously, a lot is possible, I just do not have a suitable code base I can easily follow the logic.

 

Anyways, food for thought if you get the time.

 

Thanks.

Beery

  • Like 1
Link to comment
Share on other sites

Omega,

 

The design is that going to the TI title screen signals with a dedicated line, that the services on the PI are restarted. My current implementation of that is occasionally unresponsive, as I signal a watchdog process that then instructs the primary process to exit.

 

I have been testing an improvement where when signaled, the watchdog does not ask, it instead forces the termination and relaunch of the primary service process.

 

This should fix it.

 

If you want a PI reset button, there are many solutions out there on the internet. But after I release the next update, if anyone still has this issue, I ask that you report it, so that it can be addressed, and the community doesn't suffer.

 

Workarounds are to software usability, how you kill a frog by acclimating it to boiling water.

 

-M@

Link to comment
Share on other sites

Beery,

 

Eventually, yes, I will create a TCP example is assembly.

 

The PI buffers the socket. And TCP does all of its glorious things so there isn't data loss. All the handshakey and flow controlly issues are handled by linux.

 

On the TI, you send a block of data, or you request to read a block into a buffer. You will get at most your buffer size back. If you get less than your buffer size, then there is no more data ready.

 

The wiki has something describing the TCP messaging protocol.

 

The TI-Artist mouse driver shows how to message TIPI in assembly. Including how to discover the crubase.

 

The actual messaging send and receive routines are in the TIPI ROM, tipi-io.a99

 

-M@

Link to comment
Share on other sites

Beery,

 

Eventually, yes, I will create a TCP example is assembly.

 

The PI buffers the socket. And TCP does all of its glorious things so there isn't data loss. All the handshakey and flow controlly issues are handled by linux.

 

On the TI, you send a block of data, or you request to read a block into a buffer. You will get at most your buffer size back. If you get less than your buffer size, then there is no more data ready.

 

The wiki has something describing the TCP messaging protocol.

 

The TI-Artist mouse driver shows how to message TIPI in assembly. Including how to discover the crubase.

 

The actual messaging send and receive routines are in the TIPI ROM, tipi-io.a99

 

-M@

 

Thanks for the information. When I get some free time, I will explore it. I've marked this page to come back to it later.

Beery

Link to comment
Share on other sites

Omega,

 

The design is that going to the TI title screen signals with a dedicated line, that the services on the PI are restarted. My current implementation of that is occasionally unresponsive, as I signal a watchdog process that then instructs the primary process to exit.

 

 

Okay. In this example shown below, I'm bypassing the title screen, which could be an issue. This only occurs when I'm using 4A/DOS with the autobooting cartridge and the disk version of PALEA5. Sometimes it locks up the TIPI forcing me to reset it by the cellphone or PC, sometimes not, it's weird. I does screw up the screen at least once though.

 

https://www.youtube.com/watch?v=nzkpRFBL4sg&feature=youtu.be

  • Like 1
Link to comment
Share on other sites

 

Okay. In this example shown below, I'm bypassing the title screen, which could be an issue. This only occurs when I'm using 4A/DOS with the autobooting cartridge and the disk version of PALEA5. Sometimes it locks up the TIPI forcing me to reset it by the cellphone or PC, sometimes not, it's weird. I does screw up the screen at least once though.

 

https://www.youtube.com/watch?v=nzkpRFBL4sg&feature=youtu.be

 

So my guess is the TI crashes while in the middle of an IO call to the TIPI. I think that is what I have a fix for.

 

But I have to ask, what is PALEA5? What is the expected behavior? You aren't complaining that PALEA5 crashes, so I'm guessing you don't expect it to work. Is that right?

 

-M@

  • Like 1
Link to comment
Share on other sites

 

So my guess is the TI crashes while in the middle of an IO call to the TIPI. I think that is what I have a fix for.

 

But I have to ask, what is PALEA5? What is the expected behavior? You aren't complaining that PALEA5 crashes, so I'm guessing you don't expect it to work. Is that right?

 

-M@

 

PALEA5 is a program written by Rasmus for users of the F18A. What it does is enhances the contrast (especially in text mode) of the display. Basically all it does is changes some display settings and then reboots the computer. Of course once the computer is rebooted, my auto-booting cartridge takes over. I think it might all be a little bit too fast for the old TI to handle.

 

I have to add PALEA5 works without a hitch in every other scenario, whether it be in DSK format or FlashROM image.

Link to comment
Share on other sites

 

PALEA5 is a program written by Rasmus for users of the F18A. What it does is enhances the contrast (especially in text mode) of the display. Basically all it does is changes some display settings and then reboots the computer. Of course once the computer is rebooted, my auto-booting cartridge takes over. I think it might all be a little bit too fast for the old TI to handle.

 

I have to add PALEA5 works without a hitch in every other scenario, whether it be in DSK format or FlashROM image.

 

 

Ok, PALEA5 alone, works fine when loaded from TIPI. ( Opinion - Ick... :) funny story: Someone brought a TI monitor to the meetup last weekend, and was frustrated that the colors looked kind of like these, instead of our fresh looking F18A and Classic99 matching colors... sorry, I'm just a retro newb that doesn't really remember what a CRT looks like )

 

Anyway... this might be a completely different problem than what I suspected. Probably more of an issue with your fast boot trying to load data before the tipi service has restarted. I don't actually wait for it in the power up routine... cause that would be complicated, and hasn't seemed necessary... most of the time if the service is down, IO routines just block on the TI side until the service starts and responds.

 

Maybe you can point me at what is run when your console reboots?

 

-M@

Link to comment
Share on other sites

 

Maybe you can point me at what is run when your console reboots?

 

-M@

 

Sure. In << THIS MESSAGE >> you'll find all the information and even source code on what is happening.

Essentially the routines in the 1284P bypass the menu, and immediately load 4A/DOS from the 49F040... and to make things quicker, it even loads CHARA1 off the 1284P. This sucker fast, maybe too fast, but I love it! I'm super happy with it. In fact I had to add an extra batch file just to keep it from freaking out with the sound when it tried to load a large batch file immediately.

Link to comment
Share on other sites

Also, I assume you have tried removing your cartridge and resetting the TI console before resorting to rebooting the PI? If not, next time it hangs on you, try that. It might re-enforce some theories.

 

 

Will do, but yeah, I tried everything, removed the cartridge, reset (multiple times), even unplugged power from the TIPI/32K. Nohting worked, except the remote reset.

 

-- edit --

Oh yeah, I even cycled power on the TI itself.

Edited by --- Ω ---
Link to comment
Share on other sites

FYI: This is the source code of the PALEA5 program. It just sets up the palette and then quits.

VDPWD  EQU  >8C00			   * VDP write data
VDPWA  EQU  >8C02			   * VDP set read/write address

START  LIMI	0
           LWPI	WRKSP
*	   F18A Unlock
	   LI   R0,>391C			* VR1/57, value 00011100
	   BL   @VWTR				* Write once
	   BL   @VWTR				* Write twice, unlock
	   LI   R0,>01E0			* VR1, value 11100000, a real sane setting
	   BL   @VWTR				* Write reg
*	   Load color paletttes
	   LI   R0,>2FC1			* Reg 47, DPM = 1, AUTO INC = 1, start PR1
       BL   @VWTR
*      Every two bytes written to the VDP now go to the palette registers.
       LI   R0,PAL
       LI   R2,30				* Each 12-bit palette entry requires 2 bytes
UPDPAL MOVB *R0+,@VDPWD
       DEC  R2
       JNE  UPDPAL
       LI   R0,>2F00			* Reg 47, exit DMP
       BL   @VWTR
*	   F18A Lock
	   LI   R0,>391C			* VR1/57, value 00011100
	   BL   @VWTR				* Write once
*	   Return
	   BLWP @>0000

*********************************************************************
*
* VDP Write To Register
*
* R0 MSB		VDP register to write to
* R0 LSB		Value to write
*
VWTR   SWPB	R0
	   MOVB R0,@VDPWA		* Send low byte (value) to write to VDP register
	   SWPB	R0
	   ORI  R0,>8000			* Set up a VDP register write operation (10)
	   MOVB R0,@VDPWA			* Send high byte (address) of VDP register
	   B	*R11
*// VWTR	   

*********************************************************************
*
*	   Palette
PAL    DATA >0000,>00B0,>00F0     
       DATA >0008,>000F,>0700,>00FF     
       DATA >0C00,>0F00,>0BB0,>0FF0     
       DATA >0060,>0C0B,>0CCC,>0FFF

*	   Workspace	   
WRKSP  BSS	32	   

	   END	START
  • Like 1
Link to comment
Share on other sites

Thanks, I don't believe there is anything about PALEA5 that is at issue.

 

I suspect it is just the attempt to load a 4ADOS script before the tipi.service has rrstarted. I suspect that the load starts then the service gets terminated in the middle, and we're hung.

 

I don't have an ubergrom to test with... We'll see what I can do to reduce the race condition window.

 

-M@

  • Like 1
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...