• Please review our updated Terms and Rules here

Making TI-74 LOAD.PGM a bit more convenient

I'm not familiar - I don't own a CC40. I've seen one on a (Amiga!) vintage-meeting on a CC40. Found it very usefull to be mobile (otherwise always has to be connected to PC). Will check whtech.com tomorrow.
 
Found it, but it is ftp://whtech.com - http:// won't work - points to a web-hoster....
Uff, much stuff to read....
 
Just for interest:
I saw that EA.bin is 64KB in one file (if it's the right dump)?? Afaik cc40/TI74 32KB-Range on expansion-port can be multiplied up to 8 banks (256KB-Flash), but can handle only 32KB per bank. Never heard that CC40 can handle 64KB continuous. Or how does this work?
And additionally: Without source-code I cannot imagine how to translate that to TI-74 - ROMs are quite different...
 
Yes, the EA cartridge is a 64K ROM - The editor appears to be a version of TI’s

“MEMO PROCESSOR” text editor in one 32K Bank, with the other Bank contain-

Ing an Assembler & Linker. EA was made to work with a magnetic tape peripheral

called the “WAFERTAPE”, which was supposed to be the mass storage element of

the CC40 development system. TI eventually decided that the WAFERTAPE was too

unreliable & never offered it for sale, whereupon the whole CC40 project collapsed.

Or so the story goes - I know I was on the ground at the time talking to TI vendors,

trying to find a CC40 to buy (The system was being advertised in Scientific American

as all this went on) & most vendors had never heard of the product…

Oh well… “8(
 
Thank you for information. Now all these information-fragments about EA-Cartridge, out there in the web, begins to make sense.....
 
@ClassicHasClass:

There is a way to load all your extensions in one bunch to RAM: If you have a 8KB or 32KB RAM-cartridge! (I think you own a COMBO-cartridge....).

Load all assembler-extensions you need to TI-74 RAM and save it on cartridge by CALL PUT( n ) . This saves the whole(!) 8KB-RAM of the TI-74 as a "image". You can get it back by CALL GET( n ).
n: On 8KB-cartidge n=1. Meanwhile 32KB-cartridges you have 4 independent RAM-blocks (n=1 to 4). Negative n does an exchange between RAM and Cartridge. Be aware that the cartridge is not added as system-RAM-extension (CALL ADDMEM)!
But, I am sure you know that....
 
Duh! Harry, you’re a genius! Thank you !! I did not realize that PUT(n)/GET(n) had that functionality -

And I hope you’re right (I don’t have access to a 32K RAM at the moment, so have no way to test it).

Not to worry, if I’m misunderstanding you that’s the way PUT(n)/GET(n) _should_ work, & there are

such things as Extensions to BASIC in the 74 universe - Hmm… 👻 👻
 
And sorry about the emoticons - I’m using an IPad mini (under protest) to write this;

Not sure why its adding the Extra-Crispies to the mix…
 
@ClassicHasClass:

There is a way to load all your extensions in one bunch to RAM: If you have a 8KB or 32KB RAM-cartridge! (I think you own a COMBO-cartridge....).

Load all assembler-extensions you need to TI-74 RAM and save it on cartridge by CALL PUT( n ) . This saves the whole(!) 8KB-RAM of the TI-74 as a "image". You can get it back by CALL GET( n ).
n: On 8KB-cartidge n=1. Meanwhile 32KB-cartridges you have 4 independent RAM-blocks (n=1 to 4). Negative n does an exchange between RAM and Cartridge. Be aware that the cartridge is not added as system-RAM-extension (CALL ADDMEM)!
But, I am sure you know that....
Does this only work on the 74_S, i.e. later model with space between 74 and S? The early ROMs can't add a full 32K RAM with ADDMEM but perhaps they will still be able to access it in 8K blocks?
 
Hi Jeff!
I've tested it with your Combo-module on a TI-74 S! I loaded first LOAD.pgm and then a couple of assembler-extensions. This I put on cartridge. After removing cartridge and a NEW ALL, I could load it back and it works!
But should also work with older ROMs (TI-74 Basicalc and some TI-74S), but only with Bank 1 (first 8KB of 32KB-Cartridge) and with a 8KB-Cartridge of course. Have not tested it with BasiCalc-version. Maybe it works with bank 2,3,4 too - PUT/GET uses different codes opposite to CALL ADDMEM. And BasiCalc is capable to use full 32K range (see CALL MEMADD)
[Btw.: I have a TI-74S with new ROM (Prod.Nr. 9420396, I-0888) and I've heard even from later BasiCalc-versions with new ROM]

Nevertheless the better way is to build a 32KB-flash-cartidge - this doesn't need any system-RAM.
 
There’s a ROM call that toggles a bit in SYSRAM depending on RAM/ROM installed - In the

CC40, & also in the TI-74, IIRC - It’s been awhile…
 
@ClassicHasClass:

There is a way to load all your extensions in one bunch to RAM: If you have a 8KB or 32KB RAM-cartridge! (I think you own a COMBO-cartridge....).

Load all assembler-extensions you need to TI-74 RAM and save it on cartridge by CALL PUT( n ) . This saves the whole(!) 8KB-RAM of the TI-74 as a "image". You can get it back by CALL GET( n ).
n: On 8KB-cartidge n=1. Meanwhile 32KB-cartridges you have 4 independent RAM-blocks (n=1 to 4). Negative n does an exchange between RAM and Cartridge. Be aware that the cartridge is not added as system-RAM-extension (CALL ADDMEM)!
But, I am sure you know that....
Yes, I got that set up a few days ago, but thank you. What I'd like to do, though, is take that RAM dump and turn it into something I can burn to the flash, since I have one of @Jeff_Birt's 16K/32K RAM/ROM combo packs (and, once it arrives, a reversed PLCC programmer). Then I'll always have it.
 
It’s trivial to write code that’ll dump the whole calculator to PC, or any subset thereof;

whatever you want… The throttle is the Dockbus port, which can do a max of ~20 kB/sec

(with some pretty fancy code…); using standard IOS you’ll get ~5 kB/sec. You could even

do it with (augmented) 74BASIC, but you’d need plug-in power for the console if that’s the

plan…
 
It's unfortunately not that easy! A RAM-image, stored with CALL PUT (or dumped down with CALL PEEK) cannot be executed from cartridge. It must be loaded back to system-RAM before (all adresses and jumps are in memory at 2000-3FFF).
To run programs directly in cartridge-space (4000-BFFF), it has to be in a relocatable format and needs a header to find every program-location. The header has to be written in assembler. Additional to the programs which should be used, some additional programs for maintaining are necessary (like CATALOG or COMMON.OBJ and others). If you have a TI-cartridge (like Mathematics, etc.) type in CATALOG(1) and you will see what I mean.
All assembler-programs has to be in .OBJ-format, so that "BUILT"-program (SDS/DOS) can read it. The difficult part is to write the header - the rest is no big thing. The result is a binary, which can be stored with RWRAM.B74 to cartridge (ROM or RAM) and can then be executed directly from cartridge.

For understanding:
If you load assembler-progs in .SUB-format with LOAD.PGM, then LOAD cares for proper relocation always(!) in range 2000-3FFF and creates dir-table.
 
This could be work (but with issues):

CALL PUT is actually nothing else as a 8KB RAM dump from hex2000 to hex3FFF! And CALL GET puts it back at exactly the same address and I think, it makes (hopefully) no difference, whether it comes from RAM or ROM. (Maybe this RAM/ROM-bit has to be toggled as mentioned above)

Now the theory:
If RAM is saved with CALL PUT to a cartridge, it can(?) be dumped down with RWRAM.B74 to a PC (via TIIF or PCIF). This binary (eg."Image") can be flashed with RWRAM.B74 to a flash-cartride and, hopefully, handled back with CALL GET.... -> This has to be proved! (RWRAM.B74 needs the IOX.sub assembler extension program).
But it must be used a different type of flash-module then TI-originals, because the only type, which is directly flashable on TI-74/95, is the 256KB (and a few128KB) - cartridge (used by German insurances).
Unfortunately this type can't be flashed from byte 09 to byte 0F - for hardware reasons this range always contains FF! In our case this is equivalent to range hex2008 - 2000F! And CALL PUT doesn't know that! TI-74 uses this range (from hex2000 up) for system-pointers, etc.
(Btw.: That's also a big issue for using this type of flashrom on TI-95 for 3rd-party cartridges ).

All other TI flash-cartridges (32KB/64KB/128KB) needs a special programmer (as we know till yet) and are not suitable for this purpose.

But: It should work with COMBO-Cartridge. Jeff uses different EPROMs without this restrictions. Writing is done the same way as TI-256KB-cartridges: via PC-Interface, TIIF and RWRAM.B74
(Crazy thing: Theoreticaly it can also been done with CI-7 and RWCASS.B74 (needs PEEK&POKE), but I think it's much to slow for flashing [needs about 15min for 32KB!!]).

Nevertheless, in my opinion the easiest way (without TIIF), is to add a write protection (switch?) to battery-backed up RAM-cartridge (afaik this is possible with COMBO-cartridge too!).
And it is possible to have 4 scenarios in one 32KB-cartridge (bank 1-4) ....
 
Last edited:
What you _could_ do is…

1) NEW ALL : OLD “100.LOAD.PGM”
2) load RBUG.SUB 1st, then the rest off your subs, with Load.PGM
3) CALL RBUG. Load RBUGs PC with the address of the small Asm
routine you’ve previously created in cartridge RAM 😎 to OPEN a
Binary File on whatever your connected storage is & starting with
>3FFF Write the contents of SYSRAM to file, decrementing your
SYSRAM counter by 1 after each Write until >2000, inclusive.

Now you’ve got the SYSRAM binary image file on your PC for your
Flash pgmr. Depending on the pgmr, you might want to REVERSE
(.EXE) the image - Jeff can presumably advise about that.

I bet you a nickel it’ll work - At least until its time to FLASH your ROM;
Since I have no idea what’s on the inside, my suspicions there are…
undefined.

The file routine should be quite small - Small enough to load and run
by hand with RBUG, so no headers etc needed.
 
Back
Top