Jump to content
IGNORED

TI-GROMmy, the system GROM replacement


Recommended Posts

I created brief instructions how to reprogram the flash of the TI-GROMmy2 boards. I don't have a new firmware available yet, but since I will send out several boards in the coming days I thought it would be useful to have these instructions available.

TI-GROMmy flashing.pdf

Edited by speccery
  • Like 5

Built some more GROMmy 2 boards. Half of them have been tested in a console, but all seem to work.

791140619_IMG_7192Large.thumb.jpeg.bc88314617902eee197ccfe7817a5c6f.jpeg

I have a simple test bench to validate that power regulation is working, i.e. producing 3.3V. I do this test before soldering the processor chips.

After soldering the processors, without firmware (i.e. running on-chip boot ROM), these three consumed about 11mA in total. After soldering the LED and programming the actual firmware, the power consumption seems to be 7.6mA when the LED is lit for a single GROMmy2. The firmware is running at the maximum speed of the chip, 64MHz. I don't know how this compares power consumption wise to an actual GROM chip - the GROMmy2 replaces three of them with the current firmware, it could easily facilitate 64K of GROM space, but that's not really what the board is for.

2089094012_IMG_7190Large.thumb.jpeg.d018dfa89cb2645f68554478e0564190.jpeg

Edited by speccery
  • Like 9
  • Thanks 1
  • 2 weeks later...

 

On 11/8/2022 at 9:08 PM, Tursi said:

f you want to know what a TI with a Z80 CPU runs like, just look at the ColecoVision/Adam.

 

 

Looking at the TMS7000 series, I think it would be a great performer compared to the Z80. The assembly looks great compared to Z80 code.

 

Appendix C -TMS70x1 Devices 

C.1 Key Features 

• Family member with 4K bytes of on-chip ROM as well as a ROMless version 
• 128-byte on-chip RAM Register File 
• Flexible on-chip serial port: Asynchronous, Isosynchronous, and Serial I/O modes Two multiprocessor communication formats Fully software programmable Internal or external baud-rate generator Separate baud-rate timer, useable as a third timer 
• 32 TTL-compatible I/O pins: 22 bidirectional pins 8 output pins 2  high-imp

edance input pins 
• Full-feature data/program stack 
• Memory-mapped ports for easy addressing 
• 256-byte Peripheral File 
• Memory expansion capability 64K-byte address space 
• 8-bit instruction word 
• Eight powerful addressing formats, including: Register-to-register arithmetic Indirect addressing on any register pair Indexed and indirect branches and calls 
• 2's complement arithmetic 
• Single-instruction binary-coded decimal (BCD) add  and subtract 
• Two external, mask-able interrupts 
• Flexible interrupt handling Priority servicing of simultaneous interrupts Software execution of hardware interrupts Precise timing of interrupts with the capture latch Software monitoring of Interrupt status 
• NMOS,5V ± 10% power supply 
• 40-pin, 600-mil, dual-in line package, 100-mil, pin-to-pin spacing packages 
 

  • Like 2
On 1/25/2023 at 9:40 AM, Archimedes5000 said:

I am interested in testing. Can you build it yourself or order it?

Greetings Axel

I have a few available, happy to sell & ship if you want. I have a couple other shipments to do as well, so need to get to it...

  • Like 1
On 1/6/2023 at 9:31 PM, speccery said:

I created brief instructions how to reprogram the flash of the TI-GROMmy2 boards. I don't have a new firmware available yet, but since I will send out several boards in the coming days I thought it would be useful to have these instructions available.

TI-GROMmy flashing.pdf 3.53 MB · 11 downloads

I am waiting for my T48/TL866 programmer with adaptor boards to arrive, is this usable for your boards?

  • Like 1
14 hours ago, Artoj said:

I am waiting for my T48/TL866 programmer with adaptor boards to arrive, is this usable for your boards?

I don't know. I have a TL866 I think, haven't used it much. A simple FTDI USB-to-serial dongle is all that's needed to program the GROMmy2. The StrangeCart appears as a USB drive in programming mode, so with it even the dongle is not needed. Actually I have been thinking that the StrangeCart could become the dongle for GROMmy2. The real solution is to make it programmable from the TI's side, I have been doing design and preparations for that. I've been having a flu for the past week or so, which has caused a slowdown with everything. I did do one interesting improvement last week, need to write about it later.

  • Like 2

I wanted to measure how much of the CPU capacity of the grommy2 goes into emulating a GROM chip. It appears to be approximately 4%.

 

This is the update I alluded to in the previous message. I've been wondering for a while if the StrangeCart could run the GROM service routine as an interrupt instead of polling. On the StrangeCart cart it is not as important as it is faster and anyway needs to poll the bus to support ROM / RAM accesses, but on the grommy2 it could be interesting to see if interrupt based approach would work.

 

And it did, I configured the STM32 EXTI interrupt system so that whenever the /GROMCS goes low, the grommy2 gets an interrupt and handles the GROM services in the service routine (ISR). The reason I wanted to go to this direction was to be able to measure how much of the CPU capacity of the grommy2 goes into emulating a GROM chip, and also to reduce power consumption by halting the CPU if nothing is happening (the power consumption is anyway tiny). I configured one of the many timers on the STM32 chip as a timer counting 500ns intervals, and my ISR resets the timer in the beginning of processing and reads the count at the end. I then store the current, minimum and maximum values of the ISR processing time. The main loop is mostly just sleeping and waiting for interrupts. Every 5 seconds it prints out using the statistics using the serial port, the statistics contains the number of GROM reads, GROM writes, CPU usage.

 

The code is not by any means optimized, but further optimisation is not really necessary since the 4% level is so small. The 4% applies to handling GROM services when running TI Basic, of course this is application dependent. Parsec seems to use around 10% during its peak time at the start of the game when it's probably transferring data from GROM to VDP RAM. Once the game runs, it's consuming only around 0.5% of the grommy2's CPU since it's doing very few GROM accesses at run time.

 

Now this approach also means that the grommy2 could run some other software most of the time. I'm still thinking about "porting" Mecrisp Forth over... Not entirely sure what would be the use case for that, other than it would be cool to have it in there.

Edited by speccery
  • Like 2
1 hour ago, speccery said:

Now this approach also means that the grommy2 could run some other software most of the time. I'm still thinking about "porting" Mecrisp Forth over... Not entirely sure what would be the use case for that, other than it would be cool to have it in there.

You use Mecrisp for eveything of course. :) (just kidding)

 

It might be useful to have Mecrisp for testing the boards. Lot's of Forth shops use it that way with a few scripts that can be shot into the board and confirm things are working properly.

Much handier than the old " debug monitor" programs that embedded stuff used to use. 

 

  • Like 1
5 hours ago, TheBF said:

You use Mecrisp for eveything of course. :) (just kidding)

 

It might be useful to have Mecrisp for testing the boards. Lot's of Forth shops use it that way with a few scripts that can be shot into the board and confirm things are working properly.

Much handier than the old " debug monitor" programs that embedded stuff used to use. 

 

It indeed would be possible to run everything in Forth. My productivity using C or C++ is probably 100x compared to what I would do in Forth :) 

 

For testing and bring up of hardware projects Forth indeed is great, as for other hardware tinkering. The nice thing about mecrisp is that it supports storing programs into flash very easily, you basically just turn on programming mode, and it will compile and store directly to flash.

 

Of course it would be simple to implement in GROM space something akin to a serial port, which would make it possible to interact with mecrisp from the TI, i.e. use the TI as a terminal for it.

  • Like 5
On 1/28/2023 at 8:35 AM, speccery said:

I have a few available, happy to sell & ship if you want. I have a couple other shipments to do as well, so need to get to it...

Hi, sorry for beeing late. Yes I am interesset, if it is not too late. How can I get them ?

Greetings Axel

  • 2 weeks later...
  • 7 months later...
  • 2 weeks later...

I was just browsing eBay and looking at the Jupiter Ace's and their $1500 asking price (on average).  Thought back to this project.   Perhaps a "TI-99/4ACE" that boots to Forth instead of BASIC could be a reality someday?  

On 9/28/2023 at 6:23 PM, Kchula-Rrit said:

Sorry to revive old conversations, but I just ran across this just now, while searching for info about GROMs.  Are these for sale?  I would love to get one that duplicates the Editor/Assembler cartridge GROM.

K-R.

Hi and sorry for the very slow reply, I have been absent from the forums for a while. Yes the devices are for sale, I have some PCBs and ready constructed boards too. I do need to work a bit on the software though, since I want to make it upgradeable while plugged in. For your use case, are you looking for basically a system GROM which would also include the E/A GROM? That certainly is doable but not implemented in the present software build. Not difficult to change and include that support.

  • Like 1
On 10/11/2023 at 9:02 PM, Switch1995 said:

I was just browsing eBay and looking at the Jupiter Ace's and their $1500 asking price (on average).  Thought back to this project.   Perhaps a "TI-99/4ACE" that boots to Forth instead of BASIC could be a reality someday?  

The could be done with system GROM changes for sure, but I think it could also be done with power up routines in the cartridge space. There are already multiple cartridge Forth implementations. If you're thinking about not requiring the cartridge port i.e. keeping it available, the grommy2 could include code in GROM space which could be copied to 32K RAM expansion and execution transferred there. It does not make sense to implement a Forth in the GROM GPL, you really want to be running a machine code Forth.

  • Like 1
7 hours ago, speccery said:

Hi and sorry for the very slow reply, I have been absent from the forums for a while. Yes the devices are for sale, I have some PCBs and ready constructed boards too. I do need to work a bit on the software though, since I want to make it upgradeable while plugged in. For your use case, are you looking for basically a system GROM which would also include the E/A GROM? That certainly is doable but not implemented in the present software build. Not difficult to change and include that support.

That's okay; I have only recently been back to the forum, as well.  I have been looking for information about GROMs to try and emulate one with a ROM chip, and maybe add some RAM to it.  I have been experimenting with KiCAD to draw some schematics.  TI did seem to cram a lot into those little chips!

When I saw your article about the GROMmy, my first thought was a backup for my Editor/Assembler cartridge.  They seem to be as rare as the proverbial hens' teeth, from what I have seen.  Now, if I could make a PC board to plug in to the cartridge port...

K-R.

Edited by Kchula-Rrit
1 minute ago, Kchula-Rrit said:

Now, if I could make a PC board to plug in to the cartridge port...

 

Perhaps I misunderstand you and you already know this, but @Ksarul makes cartridge boards (blank or populated) for EPROMs (EEPROMs, PROMs can also be used) and @arcadeshopper sells them. I don’t remember if any have RAM. There are varying sizes of EPROMs that can be used to get 32KiB (4 8KiB banks), 64KiB, 128KiB, 256KiB, .... For normal (not inverted) address latching, bank switching is effected by writing (CLR is fastest) to the even addresses at the beginning of ROM space: >6000, >6002, >6004, ..., which switch to bank 0, bank 1, bank2, ....

 

...lee

  • Like 1
7 hours ago, Kchula-Rrit said:

That's okay; I have only recently been back to the forum, as well.  I have been looking for information about GROMs to try and emulate one with a ROM chip, and maybe add some RAM to it.  I have been experimenting with KiCAD to draw some schematics.  TI did seem to cram a lot into those little chips!

When I saw your article about the GROMmy, my first thought was a backup for my Editor/Assembler cartridge.  They seem to be as rare as the proverbial hens' teeth, from what I have seen.  Now, if I could make a PC board to plug in to the cartridge port...

K-R.

 

The Bunyard Manual is a excellent trove of information on the inner workings of the TI-99/4A.  There is a section on GROM simulation in Appendix D.

 

 

YN_05_03_BUNYARD.pdf

  • Like 1
17 hours ago, Kchula-Rrit said:

That's okay; I have only recently been back to the forum, as well.  I have been looking for information about GROMs to try and emulate one with a ROM chip, and maybe add some RAM to it.  I have been experimenting with KiCAD to draw some schematics.  TI did seem to cram a lot into those little chips!

When I saw your article about the GROMmy, my first thought was a backup for my Editor/Assembler cartridge.  They seem to be as rare as the proverbial hens' teeth, from what I have seen.  Now, if I could make a PC board to plug in to the cartridge port...

K-R.

Perhaps you already know it, but the FinalGROM cartridge could be what you're looking for, it plugs to the cartridge port and includes GROM support. It loads both ROM and GROM contents from a SD card and writes that data to the RAM chip. That board has a CPLD chip which emulates the GROM logic.

 

The grommy boards are meant to be a replacement for the internal GROM.

 

I have implemented GROM support in the StrangeCart and Picocart cartridges, in both cases using microcontrollers. 

  • Like 2

I must have missed that the GROMmys (GROMmies?) were meant to go into a console.  Sorry for the misunderstanding.

Torrax was kind enough to send me the Bunyard PDF; I am going to try building the GROM emulator in the back.  If it works, I my try my (probably) hare-brained idea for a cartridge.

I have a FinalGROM, but it seemed kind of iffy so I have not used very much.  Put it into a box and forgot I even had it.  The console I had it in starting having some problems, so I do not know if it was the console or the FinalGROM.  The Final seemed a little tilted inside the cartridge, so it might have had intermittent contact with the console port.

Oh, and I forgot to thank Torrax for the Bunyard.

 

K-R.

  • Like 4

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