Among the most popular hardware-hacking projects for the humble 6MHz TI-83+ and 15MHz TI-84+ series of graphing calculators have perenially been those involving the link port. Also called the I/O port or the serial port, it consists of two bidirectional data lines, both of which can be written and read directly by assembly programs. From quadraphonic music players to IR transceivers to networking protocols to modding PS/2 ports and touchpads into calculators, the port enables a variety of intriguing projects. It was of course with great excitement that the TI calculator enthusiast community and Cemetech approached the Casio Prizm, a calculator that appears to have a link cable and port matching the 2.5mm stereo arrangement of the TI calculators, backed by the power of a fast SH3 CPU and megabytes of memory.

Unfortunately, current experiments indicate that the Casio Prizm link port is not designed equivalently to the TI link port from an electronic perspective. The link cable is a crossover type, a strong indicator that the link ports all contain ground and unidirectional RX and TX data lines, respectively an input and an output. As far as trivial data transfer, Jonimus and Tari's Cemetech Prizm SDK has exposed three functions, Serial_Open(), Serial_DirectTransmitOneByte(), and Serial_Close() for point-to-point communication. On the minus side, if further exploration reveals that the port can indeed only perform unidirectional transfer on each data line, then music players will be restricted to monaural sound, a CALCnet 2.2 port to the Prizm will not be possible, and the potential for other point-to-multipoint networking protocols for the devices will be sorely limited. Of course, it may be that a more limited port could present additional positive engineering challenges to the community, especially to Cemetech, where we enjoy fleshing out our software hacking with hardware design. For example, the high throughput the Prizm can achieve could be exploited to hand off data to a helper microcontroller translating to calcNET or buffering audio data for output. And indeed, some hardware hacks like IR transception will work just as well with one input and one output line as with two bidirectional communication lines.

I encourage my fellow Cemetechians to continue to pursue this aspect of the Prizm and Casio Prizm coding in general, as the platform remains open to powerful C programs even as competing platforms continue to offer only limited programming tools, at least an improvement over offering no such tools whatsoever. What are you planning to do with your Prizm in the near future? Share in the topic below!

As a final note, the Casio enthusiast community did some similar research of the Casio FX-9860g link port, and drew many conclusions relevant to the Prizm's link port.

"Share in the topic below!"

Well, now that you said, it, I think it would be nice for people to share exactly what they're doing or will do here, to get a general sense of everything. Personally I'm:

- Working on a SimCity like game for a contest
- Probably make a decently sized RPG
- Looking into how to port GHC to the prizm
- make some libraries to aid in making GUI applications
- Port Pyyrix

^ my checklist by 2012.
Very nice! My personal checklist, in order of soon-ness and probability:

- Finish and release Prizm Obliterate 1.0: just pending me sitting down for an hour and solving the MENU issue.
- Work on an RTS of some sort.
- Work on a Prizm port of Doors CS.
Sounds very nice indeed Smile also, concerning the MENU error, is it that if you press MENU, it goes into 3-bit color mode? Because I seemed to have fixed that issue with PrizmCity. If you mean getting rid of the white borders around the screen, no idea about that.
Ashbad wrote:
Sounds very nice indeed Smile also, concerning the MENU error, is it that if you press MENU, it goes into 3-bit color mode? Because I seemed to have fixed that issue with PrizmCity. If you mean getting rid of the white borders around the screen, no idea about that.
The white border. My hack to get around the color issue forces you to double-tap MENU to get out now, though, which is the remaining issue.
Double tap? hmm, for some reason I'm not even able to bring up 3 bit color through pressing anymore, though I really just use Bdisp_EnableColor(1) one time. I'll be interested though to see what the fix is to the white border issue.
Ashbad wrote:
Double tap? hmm, for some reason I'm not even able to bring up 3 bit color through pressing anymore, though I really just use Bdisp_EnableColor(1) one time. I'll be interested though to see what the fix is to the white border issue.
For what it's worth, here's a relevant chunk of code:
Code:
   while(gameactive == 0) {
      Bdisp_AllCr_VRAM();
      //copy background
      //draw item selection bullet
      Bdisp_PutDisp_DD();
      do {
         lastkey = key;
         key = PRGM_GetKey();
      } while (key == 0 || key == lastkey);
      switch (key) {
         //unimportant cases
         case KEY_PRGM_MENU:
            key = 0;
            GetKey(&key);
            Bdisp_EnableColor(1);
            Bdisp_AllCr_VRAM();
            Bdisp_PutDisp_DD();
            break;
      }
   }
*bump* Someone on Youtube asked me if it's possible to connect a Prizm to a TI calculator, and I tend to think it is. Both calculators use TTL signalling voltages, and the TI's two bidirectional lines can compensate for the Casio Prizm's two unidirectional data lines. Jonimus has made me aware of the routines mentioned in the first post, and Prizm BASIC has Send38K and Receive38K routines. According to the Casio fx9860g Slim Hardware Guide (which you can peruse yourself if you so desire), somewhere between 38400 baud and 115200 baud may be in use. I tend to think the TI calculators would have some trouble with that. As a note to myself, I see that both speeds use 8-bit bytes, between 1 and 3 stop bits, and no hardware or software flow control. Benryves opines that the TIs can't handle it without simply using the greylink as an intermediary, but I'm not sure I'm convinced. What do you guys think?
I would say it is possible. Using the two unidirectional lines and a slow clock frequency to compensate for the TI calculator data transmission is possible. Do note that there is a difference between TI and Casio link cables with the TI cable switching the ring and tip but there's probably a way to determine in software which cable is being used and appropriately inverse the signal in real-time.

If you want a more hardware based approach the SCIF on the SH4A can handle synchronized and asynchronous formats. According to the documentation in asynchronous mode the device can communicate with any universal asynchronous receiver/transmitter (UART). If we can program a compliant protocol in the 83+ line then data communication by that method is available.
z80man: As I understand, it uses standard serial over a two-wire interface, namely RX-TX-Gnd with no hardware flow control and no in-band software flow control. I assume that you mean the SCIF can handle either synchronous (with XON/XOFF software flow control) or asynchronous communication? Also, I think you meant that the TI link cable is a tip-tip, ring-ring cable, whereas the Casio cable is tip-ring, ring-tip just as any good serial cable must do to connect RX1 to TX2 and TX1 to RX2. Smile
KermMartian wrote:
z80man: As I understand, it uses standard serial over a two-wire interface, namely RX-TX-Gnd with no hardware flow control and no in-band software flow control. I assume that you mean the SCIF can handle either synchronous (with XON/XOFF software flow control) or asynchronous communication? Also, I think you meant that the TI link cable is a tip-tip, ring-ring cable, whereas the Casio cable is tip-ring, ring-tip just as any good serial cable must do to connect RX1 to TX2 and TX1 to RX2. :)


I conclude now that my confusion was that I did not know that 3pin is a two-wire interface, presumably GND is taken for granted so not counted in for wire interface purposes.
Ahhh, that makes sense. Yes, when you refer to (for example) a "one-wire interface", that means one signal wire plus ground. SPI and I2C are "two-wire" interfaces, even though a third physical conductor is required for ground.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement