Jump to content
IGNORED

PLATOTERM 1.2 test release with FAST-IO!


tschak909

Recommended Posts

Hey, everybody.

 

Mr. Atari gave me a copy of a patched version of the upcoming 1.2 release, which does the following:

 

* Improves I/O throughput immensely, 2400 baud is stable now!

* embeds an R-Verter driver into the cartridge, which engages if an R: handler isn't loaded from disk, or bootstrapped from device. Very handy!

 

I've been testing here, and it works great, and would definitely love some feedback on it.

 

Sijmen will hand me a patch soon for the R: handler, so it can be incorporated upstream for CC65 use.

 

I've attached a cartridge ROM here, and you can file issues on the https://github.com/tschak909/platoterm64/issues page.

 

post-9462-0-09789900-1555258587_thumb.png

 

Enjoy,

-Thom

PLATOTERM-1.2-Atari-cart-No-Mouse-FASTIO.rom

  • Like 11
Link to comment
Share on other sites

This is fantastic! Great improvement.

Connected using my esp-01 powered Atari 1030 modem.

Thanks! Many thanks...

I don't suppose you'd be able to share details on the modified 1030? I'd love to do that with my old one! (It wasn't working anyway).

  • Like 2
Link to comment
Share on other sites

... and just out of curiosity, did you do something with the ST drive there?

Yep.. it is one of the coolest stuff so far. It has the xf551 circuit inside (thanks Dropcheck). Check bitsofthepast.com website. I plan to make a video soon , once I finish putting a tail (half) SIO cable on it. As you can see I did a cover for the hole, I am still painting it and then I'll be done.

I will point you to the right threads soon

Edited by manterola
  • Like 1
Link to comment
Share on other sites

I don't suppose you'd be able to share details on the modified 1030? I'd love to do that with my old one! (It wasn't working anyway).

I'd be very interested too. I've been planning on picking up an SX212 modem and hacking it into my 1030 case, but then that's still only 1200 baud, but at least it still has an SIO port and the two cases are just about the same size, so I was hoping for a pretty good fit. But maybe turning it into a wi-fi modem or whatever is a better idea. I just don't want to be tethered to a PC with SIO2PC and APE R: handler.

Edited by Gunstar
Link to comment
Share on other sites

post-30280-0-36096300-1555302781_thumb.jpgpost-30280-0-78679500-1555302867_thumb.jpgpost-30280-0-52911600-1555302927_thumb.jpg

 

 

This is my rendition with a esp8622 I did about a year ago. 19200 is pretty snappy on a 8bit. Both SIO ports work. The blue LED is activity. A free hand design, basically just an R-verter and esp with level shifter. I did steal someone else firmware.

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

ESP8266 use to connect to Plato and other services is subject of other thread. If you are interested in the topic I recommend to read the the document created by Dropcheck in post #397. It is a very quick guide of esp8266 annd Atari 8 bits.

http://atariage.com/forums/topic/262518-sio-wifi-modem-with-esp8266/page-16?hl=%20esp8266

Link to comment
Share on other sites

This is what he patched against the cartridge:

 

FASTIO_IO-only.asm

 

------------

 

This was the note attached to it:

 

Good morning Thom.
Lots of hits on my homepage this weekend, I wonder why.... 1f609.png

Here is the patch-code.
I setup a R: device table in ZP, using $Fx.
Then use these vectors directly.

Using libraries slow things down, and we don't have time for that when doing IO constantly.
That is why I avoid them and write my own subroutines.

Atari's-CIOV is bulky too, so doing a short-cut is the main trick.

I omitted my driver/terminal, still working on that.

You have to add the Xon/Xoff-protocol.


Question:
I have room left to include a R:downloader (for APE) users.
If no R:device is bootstrapped, nor a 850 kicks in, I can try a download first, then do my Rverter/ESP8266.
Just a thought, let me know what you think.
In the mean-time I start coding on that. 1f642.png
49438609_2085385514902361_58249608029095
I forgot to mention: You can setup a table anywhere you want, if you have free RAM elsewhere or ZP is occupied. I omitted open/close/special, since using CIOV is fine for that. But you can save code/time there too. Just put AUX1 in $2F push the vector to stack and do RTS. The advantage of ZP is that coding saves bytes and using it is faster then non-ZP RAM. That is why I used ZP in my code. I think that sums it up.
49438609_2085385514902361_58249608029095
Make that $2A, sorry, typo.

 

  • Like 4
Link to comment
Share on other sites

I would pre-increment the pointers and JSR to JMP(abs). Frees up ZP space and saves 5-9 cycles per call.

 

The fast I/O routines do not set up the zero-page I/O control block (ZIOCB). This is OK if the ZIOCB has already been set up previously, such as from opening the R: device, but not if another device has been used in the interim or if the OPEN call has been skipped. The variable that is critical for 850-based handlers is ICDNOZ since it is used by the handler's GET/PUT BYTE routines to determine which of the 850's four I/O ports is targeted by an IOCB. The R: device validates this in order to issue an error if a port other than the one opened for concurrent access is used.

  • Like 5
Link to comment
Share on other sites

I'd be very interested too. I've been planning on picking up an SX212 modem and hacking it into my 1030 case, but then that's still only 1200 baud, but at least it still has an SIO port and the two cases are just about the same size, so I was hoping for a pretty good fit. But maybe turning it into a wi-fi modem or whatever is a better idea. I just don't want to be tethered to a PC with SIO2PC and APE R: handler.

 

Not a lot of SX-212s out in the wild any more; I bought Best's last one a year or two ago.

 

I believe they still have SX 212 shells in stock, though.

 

EDIT: And they've got the XM301 in stock at $19.95 each. (http://www.best-electronics-ca.com/modems.htm)

  • Like 1
Link to comment
Share on other sites

This seems to be a patch for the binary. Which assembler was used to compile it and how do I apply it?

 

I had expected a source-code patch, since both cc65 and PLATOterm (AFAIK) are available in source.

 

FYI, in case you don't know: If you want to modify some part of the cc65 runtime library (I think the serial driver is changed by this patch, at least), you can copy the relevant source file from the cc65 library, modify it to your needs, and use this version. So copy e.g. libsrc/atari/ser/atrrdev.s to your directory, modify it to your needs, and compile like this

cl65 -t atari .... atrrdev.s ...

As long as you don't change the exported symbol names, the linker will pick up your modified version instead of the version contained in the lib.

 

Remember, the cc65 lib must work for general programs. You know what your program does. And if the official cc65 lib version is suboptimal (because of checks for things which cannot happen in your program), it's perfectly valid to use a local tweaked version of the lib file(s) affected.

 

regards,

chris

  • Like 1
Link to comment
Share on other sites

I do not know which assembler he used to apply it. Hopefully he will chime in.

 

*nod* I understand, and I did try to steer Mr. Atari to make the change in a non-binary way, but he didn't want to work that way. I take the contributions as they come to me. ;)

 

So I guess, for now, the plan is to reverse-patch his changes into the atrrdev.s and keep a local copy.

 

-Thom

Edited by tschak909
  • Like 1
Link to comment
Share on other sites

If you're going to use a changed atrrdev.s it might be worth a try to increase the receive buffer size from 256 to 512, 1K, or maybe even more. See RECVBUF_SZ define.

 

Maybe we can get 4800 baud working... :)

Edited by sanny
Link to comment
Share on other sites

it's worth a try. :)

 

I'll be able to dig back into this after my work situation clears up at the end of May. :)

 

Sijmen did this patch, and it made such a huge difference, I wanted to get it out to everybody.

 

(I also need to get his ESP8266 driver that he embedded, as well)

 

-Thom

  • Like 1
Link to comment
Share on other sites

No sweat, if you forward me the conflicting library, I can modify.

 

-mouse (need to change the timer#id)

-Xon/Xoff

-serial

 

I just said, some parts are in c++, is not my cup of tea...

 

6502 I code in TASM, since uh, before Christ I guess....

The new code is simply cut/paste in Thom's 1.2 release.

Nothing fancy.

 

---

 

I have a better working version at my place at he moment "1.2.1"

That first tries to download the R: driver if it was not booted.

If that fails, it uses the internal ESP/Rverter-driver.

This enables APE users to work with the cartridge.

I even added a tiny terminal for ESP users to get connected outside PLATO's TTY mode, ESP-connection is a pita and this is an easy short-cut for me.

 

For testing I even have a loadable version as XEX file. ;-)

 

Later!

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