Jump to content
LX.NET

Atari Lynx programming tutorial

Recommended Posts

I really must grab a copy of this detailed work. Having these tutorial on a tablet as an eBook would be perfect!

 

I was not able to spot any flaws, yet.

 

-

Karri

Share this post


Link to post
Share on other sites

I really must grab a copy of this detailed work. Having these tutorial on a tablet as an eBook would be perfect!

 

I was not able to spot any flaws, yet.

 

-

Karri

 

Thanks Karri and GadgetUK. This is appreciated.

I've written the samples for the ComLynx to PC and will add some more. I checked the uploader in some of the games that were mentioned, then noticed that the uploader is also in CC65's Lynx library. Time to write part 2 of the ComLynx stuff, but I might experiment with some Lynx to Lynx communication.

 

Do either of you know how to send information back and forth between Lynx consoles, without getting framing errors because the consoles are trying to talk at the same time? I mean, the Epyx devkit used a messaging manager to do the lobby/logon thing, exchange messages and take care of dropping clients and all. How to do that with the comlynx driver in CC65? Or do we need to create a new one or port the Epyx library?

 

Hint taken about the ebook, Karri. I was thinking the same thing. Once it is finished I'll do some editing and create a book out of it. I hope this tutorial (and the book) will lower the learning curve so more hobby devs will be able to pick up developing for the Lynx.

Share this post


Link to post
Share on other sites

My personal opinion is not to care about clashes. I would just make every Lynx spam its data over and over again. If the reception is bad then discard the info.

 

This is pretty much how sensors work on a ship also. The compass broadcasts the heading and it really does not care if anyone gets it ;)

 

If I would write a pong game I would probably only broadcast the serve of a ball to get the game going.

 

Then I might broadcast my own paddle movement.

 

If I hit a ball I would broadcast the new "serve" or bounce. If I lose the ball I broadcast a "fail".

 

In this case the gameplay resonsible of a hit or fail transfers from my console to the other guys console whenever the ball leaves my racket.

 

It is possible to limit the clashes by transmitting directly after you received something, Perhaps in a round-robin fashion in case of many Lynxes.

 

Oh. Please make the ebook in a way that it works on Android tablets. I have one of these :)

 

--

Karri

Share this post


Link to post
Share on other sites

I think that come 2014, I will try to dabble into it myself. :)

The fast progress DerLuchs has made with coding really encourages me that it may be possible to get something worthwhile on the screen even for a beginner like me within a timely manner thanks to tutorials and help here at AA. :)

Edited by 108 Stars

Share this post


Link to post
Share on other sites

108 Stars: I can explain more to you personally this Saturday at the retro event in Elst. See you there!

Share this post


Link to post
Share on other sites

If others think it is useful to pin this thread, can somebody ask an admin of the (programming) forum to pin this thread and give me authorization to edit the first post?

Share this post


Link to post
Share on other sites

108 Stars: I can explain more to you personally this Saturday at the retro event in Elst. See you there!

Sadly there was no way for me to get a ride there, so I won't be able to attend after all. :( I hope I can work something out with my friends for next year.

Share this post


Link to post
Share on other sites

Part 15 has been added

Albert was kind enough to pin the topic and give me edit rights for the first post. I have updated the first entry, so you can go there for quick links to the tutorial parts.

Let me know what you think of part 15, please. Work on Part 16 (cartridges) is underway.

I will also upload the new sample code when I quality checked it.

  • Like 1

Share this post


Link to post
Share on other sites

The memory use explanation was great. The segments are very difficult to explain. I get it but a novice programmer might have a struggle to understand this.

 

Keep up the good work.

 

--

Karri

 

PS. I should really have a go for the uploader some time...

Share this post


Link to post
Share on other sites

Hi Karri,

Thanks for your comments. Yes, it is difficult to understand. It took me quite a while to get my head around it. It is intended as an advanced topic, but I was struggling with it, needed to sort it out and get it out of my head into writing, before my head explodes (or something fries). Just kidding, but I had to write it now or I wouldn't be doing it for a long time and I know that these things slip away from memory.

When I am done with the tutorial I will make a non-blog version, more of a book with chapters. I will do some rewriting and reorganizing in the order. E.g. a chapter on joystick and buttons is way overdue. It should be somewhere at the beginning. The chapter on memory will go further to the end. I do think it is necessary to understand at least some of it before you can move onto files and reading from cartridges. Do you agree?

Alex

Share this post


Link to post
Share on other sites

P.S. Yes, you should really have a look at the uploader. ;)

 

I thought of splitting the interrupt handler in two parts. One (in the resident segment) that checks if the interrupt is for timer 4 and calls the rest of the current handler in the UPLOAD segment. This way there is no need to write a new boot loader, and the lynx-uploader.cfg can have the segment definitions. The code uploader.s can put the two part into the different segments with .segment RAM and .segment UPLOAD.

What do you think?

Edited by LX.NET

Share this post


Link to post
Share on other sites

Hello everyone,

 

Part 16 on cartridges is online. You can find it here:

http://atarilynxdeveloper.wordpress.com/2014/01/02/programming-tutorial-part-16cartridges

 

Work on part 17, (working title: "files and segments") is commencing.

Again, any mistakes, flaws, unclear parts or questions are very welcome.

 

Thanks vince for your feedback on the UART part.

Edited by LX.NET
  • Like 1

Share this post


Link to post
Share on other sites

Great stuff. I'm working on getting a development environment up and running atm. It looks like CC65 is no longer maintained by the original owner? http://www.cc65.org/
I went to the FTP and got the archives mentioned, but now that I've unzipped everything, my directory list does not include the folder "targetutil" which is in the image in tutorial 2. There is no wbin folder either for extracting the unix utilities to, so I will just make one.

Edited by sirlynxalot

Share this post


Link to post
Share on other sites

Great stuff. I'm working on getting a development environment up and running atm. It looks like CC65 is no longer maintained by the original owner? http://www.cc65.org/

I went to the FTP and got the archives mentioned, but now that I've unzipped everything, my directory list does not include the folder "targetutil" which is in the image in tutorial 2. There is no wbin folder either for extracting the unix utilities to, so I will just make one.

 

Do let me know if you need any help getting started.

I do believe that the targetutil folder is not necessary. It only contains Apple2 and Apple GeOS related things.

Also, the unix utils are also only necessary if you want to have a small delta between your dev setup (in Windows presumably) and a Unix one. It has the rm.exe, make.exe and touch.exe that are used, even though the first two have DOS equivalents. So, actually you can do without the wbin folder. I have also put make_lnx.exe from the Handy zip folder in there and added the wbin to my PATH environment variable, so I can make_lnx from anywhere.

Share this post


Link to post
Share on other sites

Great stuff. I'm working on getting a development environment up and running atm. It looks like CC65 is no longer maintained by the original owner? http://www.cc65.org/

No, it is now at Oliver's website: http://oliverschmidt.github.io/cc65/

He has the latest tools compiled there plus the source code. I still have to investigate the latest version, but obschan and myself found that when using segments the latest build does weird things. I am using an slightly older but very stable version: 2.13.9 SVN 5944. You can run cc65.exe --version to check the version you have.

Have fun. ;)

BTW, if you need the 5944 version I can send you the archives for tools, sources, docs and samples.

Edited by LX.NET

Share this post


Link to post
Share on other sites

A good, stable version is exactly what we need. Could you put a snapshot of 5944 and Windows binaries at the end of the tutorial site?

 

-

Karri

Share this post


Link to post
Share on other sites

A good, stable version is exactly what we need. Could you put a snapshot of 5944 and Windows binaries at the end of the tutorial site?

 

-

Karri

 

+1 vote for an archive of the older version.

 

I have added the 5944 version to the first post of this thread.

Let me know if you have any problems with getting them working.

Share this post


Link to post
Share on other sites

Hello everyone,

Because I was busy looking into debugging facilities I took a detour into interrupts and added the 17th part of the tutorial. Any feedback (tips, errors, typos and other flaws) is appreciated.

Have fun reading. Let me know what you think of this part.

http://atarilynxdeveloper.wordpress.com/2014/05/22/programming-tutorial-part-17interrupts/

Thanks.

Share this post


Link to post
Share on other sites

well as said on the page, teh bit manipulation opcodes of the Lynx 2 are missing.

Do you mean that the SMBx, RMBx, BBRx, BBSx instructions are "in the Lynx, but not listed", or that they are "not in the Lynx"?

I always thought that the Lynx's Mikey is a modified version of the 65SC02 (not 65C02) and that the distinction was the missing of the bit testing instructions.

Share this post


Link to post
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.

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