Jump to content
IGNORED

StrangeCart


speccery

Recommended Posts

Off-topic, but hey it's my thread and I will probably also create a cartridge case for the StrangeCart.
Here are a couple 3D printed "base boards" I've been lately working on. The pictures are not great, I didn't care to setup my proper light. As you can see in these examples there are mounting screw posts for the circuit boards, some wiring holes and places for Cherry MX mechanical switches. These designs keep evolving, but at least so far they're in my opinion pretty great for noodling around. 

IMG_9044Large.thumb.jpeg.5f05ddb5b9ad8fcc8554493896003d44.jpeg

This bigger design below has two "base boards" and some supporting rods connecting the two below the display. The display is an Adafruit 3.5" 480x320px display. Then there is the CPU board, MIDI interface board and the audio DAC board. I'm still working on the software, but the display works (actually both of them work simultaneously), and the DAC board outputs a stereo saw wave at 48kHz sample rate. It uses double buffered DMA for audio output and interrupt based audio generation. The buttons don't yet do anything, I am actually just now printing another button mount to support more buttons. I'm going to use this setup to build a software synthesiser, which is something I've thinking about a long time.

IMG_9045Large.thumb.jpeg.e14f14a0bc452b28faeda35e153dda78.jpeg

  • Like 2
Link to comment
Share on other sites

I been reading thru this thread @speccery and I was wondering if you have any strangecart boards available, and if possible would you be willing to ship one to Canada and for what cost, I love to see how it works in person, and possibly use it for some of my own cartridge software projects I been working on. Thanks.

  • Like 1
Link to comment
Share on other sites

12 hours ago, Gary from OPA said:

I been reading thru this thread @speccery and I was wondering if you have any strangecart boards available, and if possible would you be willing to ship one to Canada and for what cost, I love to see how it works in person, and possibly use it for some of my own cartridge software projects I been working on. Thanks.

Thanks for the interest - and looking at the thread, it is a very long one by now...
I'd be happy to deliver you a board, I should have a few immediately available and if not I can put together a couple over the weekend. The price is 50 EUR + shipping. Please note that all boards are hand assembled by me so should be treated as prototypes. Having said that, I take all boards I've sent through an extensive test list and my understanding is that they all have worked fine.

You have probably seen the wiki at GitHub , it should give you a pretty good idea what to expect.

Link to comment
Share on other sites

3 minutes ago, speccery said:

Thanks for the interest - and looking at the thread, it is a very long one by now...
I'd be happy to deliver you a board, I should have a few immediately available and if not I can put together a couple over the weekend. The price is 50 EUR + shipping. Please note that all boards are hand assembled by me so should be treated as prototypes. Having said that, I take all boards I've sent through an extensive test list and my understanding is that they all have worked fine.

You have probably seen the wiki at GitHub , it should give you a pretty good idea what to expect.

Thanks I will send you a private message with my address and info tomorrow so we can figure out shipping costs and go from there.

  • Like 1
Link to comment
Share on other sites

7 hours ago, speccery said:

Thanks for the interest - and looking at the thread, it is a very long one by now...
I'd be happy to deliver you a board, I should have a few immediately available and if not I can put together a couple over the weekend. The price is 50 EUR + shipping. Please note that all boards are hand assembled by me so should be treated as prototypes. Having said that, I take all boards I've sent through an extensive test list and my understanding is that they all have worked fine.

You have probably seen the wiki at GitHub , it should give you a pretty good idea what to expect.

Hi, if you are building additional ones. Would you consider selling me one as well? I’m located in Germany. 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
Posted (edited)

A quick update. I have been testing the boards for shipment. I still need to do a little more testing - the boards have worked fine but I updated my testing procedure a little and found a couple more boards.

 

While I was at this, I also started to work on the StrangeCart firmware some more. I needed to review how I test the boards, which lead to reading the source code, which lead to working on the software...

 

I have added a couple of features, the more interesting of which I will discuss later when I am a bit further, but I think it is pretty interesting - well for me at least.

 

The smaller and less interesting new feature is a helper: during testing I couldn't immediately locate my serial to USB FTDI dongles. On searching I did find a few (I am sure I have more), but they were all connected to various projects and I didn't want to detach them. I was thinking I should not have this problem, since I literally have dozens of microcontroller boards, many of which I have designed and support both USB and serial interfaces. I got hit by the not invented here syndrome, so I added USB to serial conversion capability into the StrangeCart firmware.  For background information, I use the virtual serial port over USB connection to the StrangeCart all the time. For example, when I am testing the boards, I download BASIC programs to the flash memory of the StrangeCart using XMODEM over the USB serial port:

dl_fs DIM.BAS  

xmodem receive to SPIFFS
CCCCCCCCC
xmodem return code: 128

The dl_fs command expects a filename and then XMODEM transmission, and the StrangeCart writes the received data to the flash chip. That enables me to see that things work properly with the flash chip. [In this case it was a very small BASIC program which can then either be loaded from TI Basic using "OLD SCD1.DIM.BAS" or directly loaded to the StrangeCart's own BASIC interpreter with "old DIM.BAS" on the StrangeCart serial console. Save SCD1.DIM.BAS also works for saving if there is another method of getting the BASIC program into the TI.]

 

I now added a new command usb2serial:

usb2serial

Entering USB to serial converter mode. Exit pressing S2 or S3.

 

After this, the StrangeCart will pipe data from the virtual USB port to a physical UART (there is a pin header on board, the serial port is a 3.3V port but I think it's 5V tolerant) and vice versa. Currently the settings are fixed to 115200, 8N1. The buttons S2 and S3 are buttons used to change cartridge images normally, but in this case pushing one of them will terminate the USB to serial conversion mode.

 

This is a small feature, but now I only need two StrangeCarts to test the UART pins on the boards :) 

Edited by speccery
  • Like 7
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

A short update: I have been glad to see that multiple people have had interest in the StrangeCart project, and I've been on the past several evenings building boards. Also testing a new method for these boards - I bought a bigger hot plate for board assembly. However I couldn't find the stencil for the boards, so I applied solder paste manually, and quite expectedly there was way too much paste and quite a lot cleaning work to be done as a result. I also have been testing a new flux - which works great but is super easy to over apply. I also learned that it was not a good idea to put the USB connectors and 32768Hz clock crystals in at this phase. I had to remove them from all the boards, clean all the flux and reflow them with a hot air. My TI-99/4A has also been a bit temperamental, so I will need to continue testing with that. On the positive side my test and assembly processes have been improved. At some point I will make a revision of the board to make them a little easier to build. For instance right now there are a few components on the underside, mainly bypass capacitors. I want to bring all the components to the top and I will also order a new stencil at that point, that will greatly increase the assembly speed in the future.

 

I was planning to send out boards this week, but that is not going to happen as I have business trip starting on Saturday and not enough time get these tested before that. But hopefully next week I will be able to ship some boards. 

image.thumb.jpeg.be6415d195d9bca64f75c85cfcfdafb8.jpeg

StrangeCart barbecue on-going.

  • Like 10
  • Thanks 2
Link to comment
Share on other sites

1 hour ago, speccery said:

image.thumb.jpeg.be6415d195d9bca64f75c85cfcfdafb8.jpeg

StrangeCart barbecue on-going.

PCboard BBQ looking good. I am sure you figure out everything. Enjoy your business trip and looking forward to seeing one in person soon once you have ironed out the issues and shipped them out later on this month.

  • Like 1
Link to comment
Share on other sites

Thanks @Gary from OPA. Yes I am not concerned about getting them working; two of the boards I tested already earlier completely and they are were working. My test TI-99/4A is just not a happy camper right now. Even so some of the carts do work on it already. I need to take it apart and clean the connectors. I have done that in the past and I have several other consoles as well.

  • Like 3
Link to comment
Share on other sites

A short update. I’ve been consumed by work, now a stretch of 10 days without pauses, worked through the weekend, and long days.
 

Anyway today after work i took a bit of time to checkout where I was with the strangecarts I was working on before, and I now have 3 which pass all tests. Ready to ship. I think the remaining I built will likely also work after potential minor tweaks. It’s a bit odd what kind of issues I had, my automatic test routines scan for shorts and check each pin - that meant that the dominant problem was lack of connection, on one board address line A5 was not connected even if with good magnification I was sure it was ok. On another board D6 and D7 were “in the air”, a bit of solder fixed those.

  • Like 6
Link to comment
Share on other sites

  • 4 weeks later...

So far I was able to quickly test out the TI99 console GROM override and load in my O.P.A. Micro-Manager originally from my S.O.B. device and since the cartridge can also act as GRAM it will allow me to now improve my upgraded O.S. for new devices like TIPI & SAMS and add in many new cool features as well, since I can use the extra 2k of GROM 2 which I didn't have before with my S.O.B. device, plus of course the next release will work on the grommy2 as well once I figure it out more, need to read that thread tomorrow.

 

 

Edited by Gary from OPA
as usual after a few days, atariage deleted my video, so added my youtube version instead.
  • Like 6
Link to comment
Share on other sites

On 7/17/2024 at 8:08 AM, Gary from OPA said:

My strangecart board arrived yesterday, looking forward to putting it to usage later on this week.

 

Very impressive board, great to see it up close finally in my hands.

PXL_20240716_215043826.jpg

Great to see @Gary from OPA that the boards arrived safe and sound! Very happy to see that you can use them with your O.P.A. Micro-manager. It sounds you're a GPL wizard as well. There are so many cool TI projects I have never discovered so far, this is definitely one of them.

  • Like 1
Link to comment
Share on other sites

@Gary from OPA asked me a bunch of good questions, I'll share them here with his permission as I think these may be of interest to others here as well. I did edit the discussion a bit in an effort to make the questions and answers easier to read.

 

Q: So far I tested out the call gram(263) and then used my universal memory image loader to load the 3 groms from sob into the gram. The only thing I noticed is if I power off the console it disappears totally, so I guess I have to put the image into the flash using the flash creator program.
A:  Yes, currently the contents are not saved anywhere. As I recall putting the contents to flash does not change the situation. What would be the behaviour useful for you? I could try to add something like CALL GRAM("DEFAULTG.BIN") to save contents of GRAM to the onboard filesystem and have it look for such file on boot up and automatically enable system GROM override with the contents of that file.

 

Q: What do I need to compile the flash creator program for windows or Linux?
A: The flash creator source code is available at github https://github.com/Speccery/StrangeCart-Doc/tree/main/src.
The flash creator is a simple command line app, using only standard APIs. I have compiled it both on macOS and Linux.  On linux, compiling it should be as simple as:
g++ -o flash_creator flash_creator.cpp
And that should create the flash_creator binary for you. I haven't compiled it on windows but it should be very similar, I guess using the "cl" command line compiler.
 
Q: Second what is the limit for flash image total size? And each one can have 5 groms and at least 4 ROMs right? Or more?
A: The MCU has 192K of RAM. The maximum cartridge size is probably around 150K of ROM+GROM combined. 
The maximum size of the cartridge image file is 10 megs. Currently the 16 meg flash memory layout is such that cartridges start from address zero, and the file system is at 10 megs (address 0xA00000 to 0xBFFFFF). The top 4 megs are unused for now.
In terms of how many images you can include, there should not be a real limit, the limit really comes from the UX how to select a cart image. The current cartridge loading mechanism with CALL CARTS is a bit clumsy with many cartridges. I have already created an alternative but that needs more work.
On the default cartridge flash image there are a few large cartridges:

  • Image 11) RXB2020D with 40K of GROM and 8K of ROM.
  • Image 15) force command with 128K of ROM and 8K of GROM. This is the largest cartridge I have tested, i.e. 128K of ROM area. 
  • Image 16) Bad Apple demo with 4508K of ROM, i.e. 4.5 megs of ROM. This is a proof of concept and uses what I call "streaming mode". With these huge cartridge images the StrangeCart uses some heuristics to decide that streaming mode is required. It loads the first 128k of cartridge ROM data into RAM, and assumes a linear access pattern when paging in further 8K cartridge ROM pages. Basically it preloads the next 8K ROM page into RAM, and while that is accessed it preloads the next page. The cartridge port has no "wait" signal to stop the CPU while loading a new page in from the external flash chip, so things have to be preloaded (for GROMs there is the GREADY signal but unfortunately not the same signal for regular ROMs). While looking at that piece of code I can confirm to that the max ROM size is currently 128K.

Q: If I put the system grom in the flash image, it is always there from power up, no matter what cartridge I select right?
A: As I wrote above in point 1, that's not how it works, but I can modify this behaviour. To be honest I don't remember how it works with system GROM files. Let me check that. I think there is a missing piece of functionality here, but not hard to add. I think it would be simpler to have a feature to save and load the system GROM image to the filesystem instead of the cartridge image file.
 
Q: Fourth, then when I use call gram, does it take the flash image and copy it to and make it writable?
A: CALL GRAM(x): Call GRAM's parameter x is a bit mask:
bit 0: when high GROM area 0000-1FFF is writable
bit 1: when high GROM area 2000-3FFF is writable
bit 2: when high GROM area 4000-5FFF is writable
bit 8: when high the system GROM is copied to GRAM and the system GROM override mode is enabled.
When call GRAM is called with a non-zero value, the system GROM mode is enabled. I think it remains on even if you call CALL GRAM(0) to write protect the GRAM. So the pattern is:

  • CALL GRAM(263) - initialise GRAM with system GROM contents and make it writable
  • use your software to write stuff to system GRAM area
  • CALL GRAM(0)  - write protect the system GROM area.

So it seems once enabled, system GROM mode cannot be disabled (except by resetting the strangecart). I probably need to add a feature to completely turn off the system GROM override as well.
Note that if the system GROM override is enabled, 24K of RAM is allocated for the system GROM and thus the max size of cartridge ROM will be reduced. I'm not sure if there is robust error checking for this. 
 
Q: Fifth and last question, how do I use the scd1 device, is that a certain size and limited and the files stay after power off right? --- one thing I run into with it the CALL  DIR doesn't work as I have myarc disk controllers in both systems so it fails as they use the same name. Could it be changed to call scdir?
A:  The SCD1 drive uses internally the SPIFFS filesystem with a 2 megabyte storage area. Please find attached a new version of the firmware with this change, i.e. now CALL SCDIR works and DIR is not implemented by the StrangeCart. 
I recently have noticed that at least with macOS, before copying the new firmware, I have to delete firmware.bin from the mass storage volume which appears when the strangecart is in firmware update mode. So boot strangecart in firmware update mode (USB cable connected), delete firmware.bin, copy new firmware.bin, unmount the strangecart drive and reset the board. I think firmware file must be called firmware.bin when copying it over.
 
Now as I write this, I again remember that I was thinking of a change to the code so that all GROM data, when in read-only state, could originate from the external flash chip. It would still be faster than access to regular GROM chips and RAM could be saved for more important stuff.

  • Like 4
Link to comment
Share on other sites

sadly, i don't have a 3d printer, and my drill is too big, and my knife is crap, but i hacked together, an old original cartridge, to put the strangecart board in, as pushing on the buttons sometimes would cause lockups from it moving around. i know its not beautiful, but it works, and i not trying to win any custom art awards.

PXL_20240718_220049931.jpg

Edited by Gary from OPA
  • Like 4
  • Haha 1
Link to comment
Share on other sites

2 hours ago, Gary from OPA said:

sadly, i don't have a 3d printer, and my drill is too big, and my knife is crap, but i hacked together, an old original cartridge, to put the strangecart board in, as pushing on the buttons sometimes would cause lockups from it moving around. i know its not beautiful, but it works, and i not trying to win any custom art awards.

PXL_20240718_220049931.jpg

A little JB weld goes a long way!!

  • Like 1
Link to comment
Share on other sites

39 minutes ago, RickyDean said:

A little JB weld goes a long way!!

Nothing broken, so no need for glue. What I need is some fine sandpaper to make the holes all the same size and shape and smooth out the edges and then print a nice label for the front.

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