Jump to content
IGNORED

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


Recommended Posts

 

ok sure I'll look at it :) maybe just a command to call a script.. I just like versioning on github so say we're developing on the TI we could have version control native

 

Greg

 

I use git every day, and wouldn't want to touch it from the TI... but maybe for a single developer, private repository situation. You could also install telnetd on the PI :) and use my TI TELNET client :) LOL...

 

-M@

  • Like 2
Link to comment
Share on other sites

From a Geneve perspective, all I will say is that the current DSR is driven by sector IO and everything is built upon that foundation. We're not talking about a simple 4K DSR. That said, I have shared a few thoughts with Matt about how I am looking at the Geneve OS differently this time around, based on a review of his TIPI code. Not much sense for me to prognosticate until I've made more headway on my current research effort.

  • Like 4
Link to comment
Share on other sites

I saw Matt's 40/80col telnet client yesterday and the thing works! Logged into my bbs via TIPI!

 

Sent from my LG-H872 using Tapatalk

I've added OEM 437 characters so some of the ANSI art makes sense. I'm working on processing the ANSI CSI codes now. I'll ignore color for now, but get the cursor controls in place.

 

This is working through a simple 'TiSocket' extension I added to the TIPI services. My Telnet client lives in the open source repo under examples/telnet, currently still on a branch named 'telnet'. This proves out the simple socket abstraction as being usable.

 

I described it to the closed beta group with this:

 

I've added a new low level API for TCP, described in the source:

 

# Represent socket access from Raw extensions. This is registered as 0x22 in RawExtensions.py

# usage: send a message starting with 0x22 as the first byte.

# second byte should be socket handle number to use

# third byte is command for handle: 0x01 open, 0x02 close, 0x03 write, 0x04 read

#

# For 0x01 open / follow with string in the form of "hostname:port"

# Tipi will return a message of 255 if connected or 0 if failed to connect.

# For 0x02 close / no parameters

# Tipi will return 255

# For 0x03 write / follow with bytes to write to socket

# Tipi will return after bytes are written with 255 or 0 if failed to write.

# For 0x04 read / follow with max size to read as int (two bytes, [msb,lsb])

# Tipi will return message of available socket data no greater than max size.

#

# socket handle numbers are a single byte 0-255

#

 

So, from C or assembly you can use the tipi DSR rom routines for sending messages or getting messages... and just have to adhere to this little byte header...

 

So, create a message like:

0x22, 0x00, 0x01, "www.cwfk.net:80" as a byte array.

Send it to TIPI with the routines or assembly equivalent in tipi_msg.c from the TIPI mouse demo code.

Read a response... again with the recv routine in tipi_msg.c. Now we have opened socket 0 as a connection to www.cwfk.net port 80.

Create a message to send data:

0x22, 0x00, 0x03, "GET / HTTP/1.1\n\n" as a byte array...

Send it to TIPI,

Now loop reading the response, until you think you've got it all... The read request would look like:

0x22, 0x00, 0x04, 0x04, 0x00 as a byte array... the last two bytes should be the max you want to read from the socket, in this case 1024 bytes (0x0400)

any extra data you don't read will block in the socket, and be waiting for you to loop back and see if you got what you need.

If nothing is available, you'll get a 0 length array back.

If the socket is closed already, you'll get a 1 byte array back with the value 0 in byte 0.

silly.

You can close the socket too...

0x22, 0x00, 0x02

 

Now we should be able to write TELNET, FTP, Browsers, Updated term emulators... and not have to worry about how slow the TI is...

Oh, and the original PI.TCP stuff is still there for Level 3 file io access if you want to do this from BASIC. It has a lot more overhead, so if you are coding in some lower level language, this new model will be much better.

 

https://github.com/jedimatt42/tipi/blob/master/services/TiSocket.py

 

And the messaging routines are called from C with the embedded assembly you see here: https://github.com/jedimatt42/tipi/blob/master/examples/mouse/tipi_msg.c

 

-M@

  • Like 3
Link to comment
Share on other sites

  • 3 weeks later...

Oh karp, I'm at the bottom of the list.... I mean, I should give an update... it has been a while, since I've started the closed beta program.

 

1. I've gotten better at hand soldering the CPLD. Thanks to Ralph for seeding that thought a year ago... As I've tried to use the toaster oven technique to bake 4 at a time, I end up taking at least 6 hours per board. If I hand solder, I can fix as I go, and test for bridges as I go, and it just works when I'm done.

 

2. I think we've chased one of the ghosts out of my protocol between the TIPI board and the Raspberry PI. The PI is always a wildcard here since the GPIO timing is always irregular at the speed I'm trying to drive. We were having enough data messaging trouble that I spent the last two weeks looking at how it was done yesteryear... I wanted to add error detection to that interface, but anything that required the TI to execute an extra instruction was going to slow down my overall transmission rate significantly. Then I discovered why parity was so popular... My TIPI board is basically 4 select-able shift registers from the RPi's point of view. That's like an XT or PS/2 keyboard protocol... present a bit, then clk to signal the bit is available, then wait an agreed upon minimum time. :) repeat 8 times to send a byte. Adding a parity bit in the CPLD turned out to be so popular they have xor8 units built in, just waiting for me to want to do that. So the 9900 doesn't have to participate in the parity dance. And we keep our speed. In the process, of fixing this, parity errors don't appear to be happening at all anymore. I had one, but in developing the fix for that, I may have fixed another timing issue, and now the thing is stupid stable.

 

It is stable enough now that we are getting far enough without frustration to test more software.

 

I need to get this fix out to the rest of my beta-testers, which requires reprogramming the CPLD ( I didn't build in any dynamic approach to that ) so I have to recall the devices.

 

We also had gremlins at Greg's revealed today, in the form of a angry speech synthesizer in the middle. Crash crash crash on his system. Remove the speech synthesizer, and it became much more reliable. not 100% yet. But that could still be his 4A. Or it could be another ghost of of a gremlin that was fed after midnight... Building for old stuff... a mixed bag at best.

 

---

 

I am trying to figure out how to proceed into an open beta or release. Once we are confident in the CPLD fixes, we have upgrade mechanisms for the PI, and you'd need eprom erasers and programmers (or a surplus of eproms) to take updates to the DSR ROM. Given the free space in the DSR ROM, I could see the software side of this never being 'finished'... In fact, I'd hope it never is, and keeps evolving with new creative ideas. The software on the PI side is also easy to extend, and several classes of extension can be added without having to touch the DSR (such as the mechanisms ElectricLab used for multiplayer Combatti, which have been incorporated and upleveled to BASIC without a change to the DSR.)

 

So, can the community handle the concept that if they buy a TIPI, they are buying my time and materials for the little board, which is only a small part of TIPI. The rest of TIPI being the open-source project that will always be incomplete in one aspect and amazing in another ( at least to me )... ?

 

-M@

  • Like 8
Link to comment
Share on other sites

 

So, can the community handle the concept that if they buy a TIPI, they are buying my time and materials for the little board, which is only a small part of TIPI. The rest of TIPI being the open-source project that will always be incomplete in one aspect and amazing in another ( at least to me )... ?

 

-M@

 

This is a hobbyist project in its purest form, developed at great expense in time and effort, for a very small community of retro enthusiasts. So yeah, I think we can handle it :)

  • Like 6
Link to comment
Share on other sites

The scope of what you're doing here is astounding. It's not just a peripheral, but an entirely different way to use the computer. The board is only a small portion of the overall package, and I think those who understand what you're doing here appreciate that. I don't know that anyone will fully appreciate the amount of time and effort that has gone (and will go) into it as it develops and grows, but anyone who has done a large hardware or software project for this computer has an inkling. ;)

 

For me, it's like the GROM projects that have been undertaken in the past few years. It will open up a new facet to the hobby in a way that we haven't really had open access to before. For me, the Uber and flash cartridges have been the biggest revelation for the community since I got back to the TI in 2008. The UberGROM gave us the opportunity to have XB2.7 and RXB on physical cartridge, and opened our hobby up to all kinds of possibilities. The flash cartridges now offer the community a way to try new cartridges on their real computers with a few clicks of a mouse. In addition, the development of TIdBiT and further expansion of falcons compiler and programming suite have brought on some excellent software titles by some talented folks...

 

What I am beginning to understand, reading and re-reading the posts on this thread, is that this TIPI project is more than just a nanoPEB with wifi capabilities (which is how I originally saw it). It is a "widening of the lanes" and a newly paved interstate through virgin grounds. The off-site repository, the Telnet client, the chat functionality... You're creating an "internet" for the TI (so to speak) and the board itself can be viewed as a high-tech modem.

 

I am personally very excited to see it come out, but don't rush it... We'll all be here waving cash in your face as soon as you're ready. :)

Edited by Opry99er
  • Like 5
Link to comment
Share on other sites

I can say that it's going to knock your socks off. It is a whole new world. A major milestone was resolved this week and the disk buffer issue is next. With Harold and Mike's excellent responses it went from "screw that" to achievable in a short time.

 

I can't wait to see what others use it for as it's a truely open system. Much more than a modem. More like connecting the ti to the pi via a network connection.

 

One of the more exciting demos so far is the mouse demo need a mouse on your ti then connect one to the pi with usb. What's next? Need midi? Need robotics? Control your smart home devices? Online games.. You name it

 

Greg

 

Sent from my LG-H872 using Tapatalk

  • Like 5
Link to comment
Share on other sites

You have mad skills to do that with that little program... :) don't press the right mouse button... it'll erase it all. .

 

-M@

Well, all we need is a keypress to dump the VPD ram to a file for use later. *hint*hint*wink*wink* - Save the files names with incremental tipic01..tipic02... with each key press. *wink*wink*hint*hint* lol. :)

post-47352-0-92590700-1522365902_thumb.jpg

Edited by Sinphaltimus
  • Like 3
Link to comment
Share on other sites

Well, all we need is a keypress to dump the VPD ram to a file for use later. *hint*hint*wink*wink* - Save the files names with incremental tipic01..tipic02... with each key press. *wink*wink*hint*hint* lol. :)

attachicon.gif2018-03-29 19.19.13.jpg

Ti artist already does this just need to port the mouse driver.

 

Sent from my LG-H872 using Tapatalk

  • Like 1
Link to comment
Share on other sites

Full Disclosure:

The Mouse Demo is just that, a tech demo to show a USB mouse connected to a pi can work on the TI. It's far from an art package and very difficult to use with minor mouse movement. My comment about dumping the VPD ram to save the "art" was definitely a me kidding around. That stuff I did is hardly worth saving beyond a screenshot with a phone camera lol. But, it shows a proof of concept for others to work from. A "mouse driver" for certain TI applications (art or web browser) is certainly the way to approach this. I was just having too much fun actually drawing on a real TI console for the first time ever.

And I hope my intended purpose of drumming up some excitement succeeded. :) And the TELNET, whoa, that is fantastic. responsive and working nicely especially in 80COL mode with an F18A.

I hope ya'll are as excited about this as i am. It really is opening the door to so many more possibilities, bringing very difficult things within reach and making them achievable.

Link to comment
Share on other sites

...especially, if I can help an enthusiastic programmer write a PLATO terminal for IRATA.ONLINE, there's a whole world of stuff in there; a unique experience for everybody.

 

-Thom

 

 

My TELNET TCP client code is open source. And we have ubergrom / ESP8266 wifimodems in the works, and the legacy UDS-10 setup... So there is no reason for this to be about TIPI.

 

I have to say ( my thread, my rant ) I'm tired of things I have to create an account on before I can see if it has value. We live in a world now where my identity as a target for marketing impressions is perceived as having monetary value. So I cannot trust any service with my privacy. I won't create an account up front. You say the service is free, but 'sign up now' means I still have to pay with an identity.

 

And the linux binary for the existing PTERM is in the wrong package format. ?rpm? rpm is for work. deb is for play. alien is for making my computer dirty.

 

take it to a new thread... so I can ignore it (this isn't my thing). feel free to point at TIPI tech / source for reference. Creating a P(lato)TERM for the 4A looks like it could be a fun niche for someone else. Point people directly at this url: https://youtu.be/NM7T2G-V3So?t=2516 ( your video demonstration starting with the atari-800 experience ) Lead with that. cause all the PC client noise is in the way.

 

-M@

Link to comment
Share on other sites

Some people might know this already, but I was surprised yesterday when I ran this simple code in stock TI BASIC:

10 CALL KEY(0,K,S)
20 PRINT K
30 GOTO 10

The TIPI light flashed on every time through the loop. The TIPI light will be on anytime the TIPI ROM is mapped into memory. My first thought was that the CPLD synthesized wrong and now the card is responding to CRU when the keyboard scan ran...

 

I knew that TI BASIC 'CALL' statements could call routines in DSR ROMs (unlike XB unless in immediate mode). But I always assumed it would look there last. After first looking in BASIC, and then in cartridge GROM for extensions ( like EA )

 

So I fired up the PEB, and sure enough, it is more subtle, but the TIFDC, and SAMS cards flash while they are being scanned by BASIC for the 'KEY' routine. Apparently TI BASIC looks to expansions first... I suppose we could override 'KEY' if we wanted. :)

 

( I have my back turned to the 4A most of the time when I'm using it... So things like this can go unnoticed for quite a while... )

 

Anyway, just a heads-up, that the BlinkenLights are business as usual lights.

 

-M@

  • Like 1
Link to comment
Share on other sites

I was being a dick, and it overshadowed my attempts to also be constructive. I apologize.

 

I am selfish. And what I wanted was to not talk about Plato anymore. But I didn't want Plato to not be talked about.

 

I think it merits serious discussion if you can find enthusiasts for the 4A. There are technologies people already have ( TIPI doesn't ship yet ) that can be used for this. Many have UDS-10s, and there are those WiModems. A few have another new homebrew internet device... So truly, the discussion of Plato should go get a thread, and pull in as many interested parties through as many devices as possible. There is also the enhanced video processor, F18A, that could play a real part here in building an accelerated client since all the graphics requests look like they have to be scaled from 512x512 to the 4A's 256x192. Our 16bit CPU could do that fine, but there is still a lot of possibility for F18A enhancement.

 

You might ask: "How related is this Plato, to the Plato learning system many of us experienced on the 4A back in the day?" I grew up with what seemed like a 100 disk set of lessons for the 4A's Plato cartridge.

 

You have a 'summit' coming up soon... That might be a chance for someone to jump in and get a real discussion going.

 

Seriously, go create a thread: "IRATA.ONLINE, updated PLATO terminal protocol, and internet enabled 4As", it might be rewarding.

 

-M@

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