Jump to content
IGNORED

Lynx Multi Cart


SainT

Recommended Posts

Open source is fine with me. It is also ok to have many programmers on it.

 

In bitbucket we already have a public tools repository. There is also a contrib directory where different programs and libraries could live. One nice library would be SD filesystem with open, read, write, seek, close and exec.

Then we have the game selector program. We could agree on a crossbar and split up the tasks or make a few different ones.

 

I don't believe there is a need for any management here. If someone starts coding and contributing it is always fine. You can get write access to the repository from LX.NET or me.

 

https://bitbucket.org/atarilynx/lynx/src

 

The SD stuff could go into contrib. Perhaps into SDfilesystem and SDmenu.

Edited by karri
Link to comment
Share on other sites

Sounds great! I'll flesh out an api and add it for reference. If anyone wanted they could write the menu stuff using hard coded test info returned by a the api funcs then it'll 'just work' when I finish the hardware. If someone could grant me write privileges, my login is jamesboulton, that'd be much appreciated. :)

  • Like 1
Link to comment
Share on other sites

Sounds great! I'll flesh out an api and add it for reference. If anyone wanted they could write the menu stuff using hard coded test info returned by a the api funcs then it'll 'just work' when I finish the hardware. If someone could grant me write privileges, my login is jamesboulton, that'd be much appreciated. :)

 

Done. Welcome on board and as an admin you are free to invite others as well ;)

This is an members owned repository. Not "my" repository.

 

--

Karri

Link to comment
Share on other sites

  • 2 weeks later...

Nice. Do you have ideas of what kind of functions the SD filesystem supports?

 

Is it standard stuff like this?

/* Files */
int __fastcall__ write (int fd, const void* buf, unsigned count);
int __fastcall__ read (int fd, void* buf, unsigned count);
off_t __fastcall__ lseek (int fd, off_t offset, int whence);
int __fastcall__ unlink (const char* name);	/* Same as remove() */

/* Directories */
int __fastcall__ chdir (const char* name);
char* __fastcall__ getcwd (char* buf, size_t size);
int mkdir (const char* name, ...);	  	/* May take a mode argument */
int __fastcall__ rmdir (const char* name);

/* Others */
unsigned __fastcall__ sleep (unsigned seconds);
int __fastcall__ getopt (int argc, char* const* argv, const char* optstring);

/* Non standard: */
#if __CC65_STD__ == __CC65_STD_CC65__
int __fastcall__ exec (const char* progname, const char* cmdline);
#endif

DIR* __fastcall__ opendir (const char* name);

struct dirent* __fastcall__ readdir (DIR* dir);

int __fastcall__ closedir (DIR* dir);

long __fastcall__ telldir (DIR* dir);

void __fastcall__ seekdir (DIR* dir, long offs);

void __fastcall__ rewinddir (DIR* dir);
Edited by karri
Link to comment
Share on other sites

Ok, I have something working. My reflow skills are not great, so the first board didn't work and then I killed the PIC chip figuring out why. So I tried again and after a bit of debugging and fixing some bad solder joints it's finally loading up a game. It just loads "lynx.rom" directly from the memory card into the SRAM, then hands control over to the Lynx. So it sits on the "Insert Game" screen for a few seconds, then the game appears. Jiimmy Connors Tennis starts up just fine now. :D

 

I can't play it yet, though, as I'm driving the Lynx bus directly all the time through the 245 chip to test everything. The bus ends up getting shared by the control pad and buttons, so it's interfering with the controls currently. The next job will be hooking up one of the configurable logic cells in the PIC so the bus is only driven when the chip strobe is low then I should be able to actually play something.

 

I'm just about at the proof of concept stage now. Just a couple more things to sort and this will be properly working. :grin:

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

Not quite time to buy yet... :)

 

I'll see if I can get the game playable tonight, then the next step is to install the latch chip to let me capture data sent from the Lynx to the cartridge then go from there on the comms side of things. I'm very happy with the progress though, everything has worked as expected, apart from dry solder joints.

  • Like 2
Link to comment
Share on other sites

Ok, got some code running on the Lynx to test the CE1 strobe output to the cartridge. I have an interrupt setup on the PIC to trigger on the falling edge of CE1 which seems to be working fine, but I just need to know how to set the AUDIN pin high as I'm using this to determine the data transfer direction on CE1 (0=read, 1=write). Lynx coders help please. :)

 

Something like --

 

lda #16
sta $FD8B
But is $FD8A setup correctly for output on AUDIN at boot? If not what value should I use here? And what should the other bits be set to in $FD8B normally?
I would test this but I need some sleep. Any help appreciated. :)
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...