Jump to content
IGNORED

TI-GROMmy, the system GROM replacement


speccery
 Share

Recommended Posts

Posted (edited)

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 8
  • Thanks 1
Link to comment
Share on other sites

  • 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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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 1
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...