Subject: Making cartridge code?

From: "Matthew" <[email-masked]>
Date: Tue, 16 Feb 2010 20:39:12 -0000

Can someone point me to the info on how to format your assembly language program to work as a ROM cartridge image?  I remember reading somewhere (can't find it now though) about how to set up the name that will appear in the master title screen selection and all that.

Thanks,
Matthew

---

From: "hexbus" <[email-masked]>
Date: Tue, 16 Feb 2010 21:22:24 -0000

You can find one at the bottom of this webpage:

http://www.avjd51.dsl.pipex.com/ti/ti.htm

Of course, there's some assembly you can lob off at the bottom of it. :-)

---

From: tursi <[email-masked]>
Date: Tue, 16 Feb 2010 13:35:18 -0800 (PST)

> Can someone point me to the info on how to format your assembly language 
> program to work as a ROM cartridge image?  I remember reading somewhere 
> (can't find it now though) about how to set up the name that will appear 
> in the master title screen selection and all that.

Thierry's page remains an excellent resource. :) He has a whole page on 
the headers. http://nouspikel.group.shef.ac.uk/ti99/headers.htm

To summarize though:

In summary:
Peripheral cards ROMs cannot contain programs, nor translators.
GROMs cannot contain ISRs.
Cartridge ROMs can only contain programs.

>AAxx - must start with AA, xx is a version number and can be anything
>xx00 - number of programs in high byte (optional?) Low byte unused
>xxxx - pointer to power up list, >0000 if unused
>xxxx - pointer to program list, >0000 if unused
>xxxx - pointer to DSR list, >0000 if unused
>xxxx - pointer to subprogram list, >0000 if unused

Program, subprogram and DSR lists are formatted like so:
>xxxx - address of next item, or >0000 if no more
>xxxx - address of code entry point
>xx   - (byte) length of name
????  - text of name, specified by previous length byte

Power Up and ISR lists:
>xxxx - address of next item, or >0000 if no more
>xxxx - address of code entry point

(basically just skips the name part)

ROM carts apparently can only contain programs, I guess ROMs are not 
searched anywhere but the master selection list. I've never tried to 
verify that one!

---

From: "Matthew" <[email-masked]>
Date: Wed, 17 Feb 2010 01:05:00 -0000

You know, I searched on Thierry's page for this information...  Thanks for pointing it out.  Do you know if carts can have a subprogram list?

Matthew

---

From: "Matthew" <[email-masked]>
Date: Wed, 17 Feb 2010 01:09:34 -0000

Nice info, thanks for the link!

Question about the code though, in the E/A manual (pg 240) it states that SFIRST must point to an executable instruction.  Maybe that is only when using them with the SAVE feature of the E/A, but I don't think using those labels for other than their documented use is a good idea (creates confusion).  Can someone elaborate?

Matthew

--- In [email-masked], "hexbus" <jon@...> wrote:
> --- In [email-masked], "Matthew" <matthew@> wrote:
> >

---

From: tursi <[email-masked]>
Date: Tue, 16 Feb 2010 18:55:28 -0800 (PST)

> Question about the code though, in the E/A manual (pg 240) it states 
> that SFIRST must point to an executable instruction.  Maybe that is only 
> when using them with the SAVE feature of the E/A, but I don't think 
> using those labels for other than their documented use is a good idea 
> (creates confusion).  Can someone elaborate?

All SAVE does is copy the data from SFIRST to SLAST into VDP memory, 8k at 
a time, write the 6 byte header, and dump the data to disk. It needs those 
names because they are the names it links to with REF. :)

---

From: tursi <[email-masked]>
Date: Tue, 16 Feb 2010 18:56:43 -0800 (PST)

> You know, I searched on Thierry's page for this information...  Thanks 
> for pointing it out.  Do you know if carts can have a subprogram list?

According to Thierry's page, GROM cart yes, ROM cart no. I haven't looked 
myself, you can try it with an emulator quickly, or read through TI Intern 
to see if it checks cart ROM for subprograms.

---

From: fdos <[email-masked]>
Date: Tue, 16 Feb 2010 21:24:26 -0700

Matthew,

David R. Romer's Supercart  disk contains programs that enable one to 
load any EA3 8K or less program into a Super Cart and be selectable from 
the main Ti menu.  He even provided a way to provide the EA utilities, 
including BSCSUP, in low memory if required.  This might be helpful in 
your endeavor.  This disk is somewhere on WHTECH which has been 
rearranged, so I can't provide a specific location.

Bill S

---

From: mark wills <[email-masked]>
Date: Tue, 16 Feb 2010 21:03:44 -0800 (PST)

Sometimes all you need is an actual physical example, so here's one:

        aorg    >6000            ; console rom

        data >aa01,0,0,menu,0    ; standard identifier
menu    data 0,start            ; definition of menu item
        byte 15                    ; length of text
mtext    text 'TURBOFORTH V0.1 (c) Mark Wills 2010'
        even    ; the text above is used for the menu screen
                ; AND the boot message ;-) saves a few bytes

...your code here....
start    limi 0                ; no interrupts thank-you, we're British