Jump to content
Tursi

Classic99 Updates

Recommended Posts

It would be cool if Classic99 allowed you to load an E/A#3 object file (like those produced by WinAsm99) directly from Windows into TI memory without the need to go through E/A and the TI file system. This would also allow you to use the first >700 bytes of lower memory. If you had a shortcut key to load and run the last file again it would speed up the development-assemble-test cycle a lot.

 

I looked at doing an EA#3 loader before, and I just didn't want to do the linking. :) (I do have a command-line tool that will read an absolute EA#3 file and produce a PROGRAM image though). As far as load and run the last file again, you can sort of do that today in one of two ways - either create a cartridge entry in the INI with the steps you want (remember that a cartridge entry in Classic99 can include keyboard commands), or type the keystrokes you need into notepad and when you need to reload, just copy and paste them (that's what I usually end up doing).

 

This is an example of a cartridge entry that automatically selects Editor/Assembler as the cartridge, then jumps in and EA#5 runs "DSK1.AXELF" - it will automatically do it each time you reset the emulator.

 

 

[usercart32]
Name=E/A Menu Autostart
ROM0=O|0000|0002|AxelF Autostart
ROM1=K|0000|0000|..25DSK1.AXELF1\n

 

"O" means "other" and selects a cartridge entry from the built-in list. I'm not terribly fond of the fact that it uses indexes, but for now the first value is the group (apps=0, games=1) and the second is the zero-based entry in the list (EA is the third entry).

 

"K" means to put the text into the keyboard paste buffer, and the two numbers are ignored. "\n" is remapped to the enter key.

 

I use dots at the beginning of the string because it's sometimes a bit random whether it takes one or two keypresses to get off the master title page (probably a bug related to starting the paste buffer before the console is booted - it SHOULD take two because the console does a dummy KSCAN, but sometimes it gets through with one).. periods get it off the title page without selecting a cartridge so that the '2' always selects E/A.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks, I have used the cartridge trick a number of times, but I never get around to set it up until I have run the project in E/A a few hundred times. :) And it doesn't solve the issue of loading into all lower RAM, so for Jet Set Willy I used my own object loader to generate an E/A#5 file in every test cycle. I realize the linking would be difficult, but for what it's worth I never use REFs or relative origins or even multiple object files, and I always use auto-start. But I do understand if you don't want a loader in Classic99 to have those restrictions.

Share this post


Link to post
Share on other sites

No, I just haven't wanted to write it. ;) I've started a couple of times and decided that I use EA#3 too rarely to care.

 

Why not link outside of the emulator and just load a binary image, then?

 

Attached is a little "obj2bin" converter that will do that for EA#3 images to PROGRAM images as long as they are absolute data and have no external links. Don't know if it's helpful (or if the bin2obj in there even still works ;) )...

 

tiobj2bin.zip

Share this post


Link to post
Share on other sites

Thanks, I have used the cartridge trick a number of times, but I never get around to set it up until I have run the project in E/A a few hundred times. :) And it doesn't solve the issue of loading into all lower RAM, so for Jet Set Willy I used my own object loader to generate an E/A#5 file in every test cycle. I realize the linking would be difficult, but for what it's worth I never use REFs or relative origins or even multiple object files, and I always use auto-start. But I do understand if you don't want a loader in Classic99 to have those restrictions.

 

Why not just use RAG Linker? It only takes a few seconds.

I have it as a menu item in Funnelweb, so if I use the Funnelweb Editor and Assembler, I can quickly load RAG Linker for generating the image file. Easy Peasy. :)

 

Gazoo

  • Like 3

Share this post


Link to post
Share on other sites

 

Why not just use RAG Linker? It only takes a few seconds.

I have it as a menu item in Funnelweb, so if I use the Funnelweb Editor and Assembler, I can quickly load RAG Linker for generating the image file. Easy Peasy. :)

 

Gazoo

Same environment I use for the TI-specific code. Edit with F'Web's program editor; assemble and link with RAG assembler/linker.

 

The linker will even generate AORG code in places most linkers will not, i.e., 0x4000 DSR space.

 

Rasmus:

I believe you are looking for a simple way to link object code generated outside of the TI environment (i.e., assembled with the PC). Have you checked out Fred's L99 Linker?

 

From his website: "The L99 linker for the PC is part of the development environment of the TI994W emulator and can be found in the utility (TI994W/UTL/) directory. "

Share this post


Link to post
Share on other sites

Rasmus:

I believe you are looking for a simple way to link object code generated outside of the TI environment (i.e., assembled with the PC). Have you checked out Fred's L99 Linker?

 

From his website: "The L99 linker for the PC is part of the development environment of the TI994W emulator and can be found in the utility (TI994W/UTL/) directory. "

 

Thanks, I wrote my own PC side linker a while ago, but my suggestion for Tursi was to include a linker directly in Classic99, which would save a few seconds in the test cycle when you assemble on the PC. I have now built a linker into my own emulator, Js99er.net, so all is well.

Share this post


Link to post
Share on other sites

Thanks, I wrote my own PC side linker a while ago, but my suggestion for Tursi was to include a linker directly in Classic99, which would save a few seconds in the test cycle when you assemble on the PC. I have now built a linker into my own emulator, Js99er.net, so all is well.

 

Isn't full-blown linking slightly overengineered for 32 K of RAM? Are there cases where a simple COPY wouldn't do? (I could see namespaces being an issue, which is why I added local labels to xas99.)

 

And regarding fast test cycles, I ended up creating my own image format for xas99 that would load automatically with a special cart in emulators (pretty much like XB with a loader, but all generated and setup automatically from the assembler).

Share this post


Link to post
Share on other sites

RMSAAED

Hi,

 

what I really really painfully miss is a / the "Disk Manager 3" in the menu -> Cartridge -> Apps.

 

This is many extra-clicking every day to load it from the user-menue

(means coming from another recent folder, navigating to my diskmg3g.bin-file-folder, and "loosing" this recent folder, to have to navigate back there next time)

 

Is it eventually possible to internally swap some files i.e. from the integrated "Demonstration"-Cartridge (that I never use),

or "Financial Home Decisions" against the BIN-Files from the DiskManager3 ?

 

schmitzi

Share this post


Link to post
Share on other sites

Hi,

 

what I really really painfully miss is a / the "Disk Manager 3" in the menu -> Cartridge -> Apps.

 

This is many extra-clicking every day to load it from the user-menue

(means coming from another recent folder, navigating to my diskmg3g.bin-file-folder, and "loosing" this recent folder, to have to navigate back there next time)

 

Is it eventually possible to internally swap some files i.e. from the integrated "Demonstration"-Cartridge (that I never use),

or "Financial Home Decisions" against the BIN-Files from the DiskManager3 ?

 

schmitzi

 

It's easy enough to include it as a user cartridge in the Classic99.ini file. @Tursi’s Classic99 Manual shows you how. It will then appear on the Cartridge-->User menu.

 

...lee

  • Like 1

Share this post


Link to post
Share on other sites

RMSAAED

....after a bit reading & fiddling around:

 

for the 2 files post-41141-0-71494800-1442674364_thumb.jpg

 

I have entered

 

name="DiskManager3"
ROM0=G|6000|16000|MODS\diskmg3g.BIN
ROM1=X|6000|14000|MODS\diskmg3n.BIN

 

 

and it seems to work :) DiskManager3 appears as User-Cart and boots:

 

post-41141-0-86096200-1442674537_thumb.jpg

 

 

BUT, is this OK what I´ve intentionally done here ?

Share this post


Link to post
Share on other sites

Yes, that's what its for.

 

But... why are you using a Disk Manager inside of Classic99? What is it doing for you? One of the reasons I aim its focus more towards FIAD files (and TIFILES format at that) is because you have a much more powerful disk manager in Windows Explorer already. :)

 

Just curious what your use case is.

Share this post


Link to post
Share on other sites

Oh.. except your sizes are incorrect -- way too large. The numbers in the INI lines are in hexadecimal. 16KB is "2000", as for the 14kb one, that's an odd size (and odd looking file...), you'd need to exact correct size rather than the Windows rounding. Or just specify it as 16K too ("2000")... too big is okay, Classic99 will just complain a little when it loads it. (Which is why your huge sizes also work).

 

That said, I don't know what an "n.bin" file is. You are loading it as the second bank of a 16KB XB-style bank switching cartridge, which is probably incorrect (and only has 8k available anyway). If it has worked in the past with User->Open, then that n.bin file probably was never being loaded at all. :)

 

There's sadly no magic to determining the entries for an INI file, you have to know something about the cart you are loading. I suspect in this case that only the GROM file is being used, though, that's why it's working for you. :) Extra data won't hurt anything in this case though.

Share this post


Link to post
Share on other sites

Hi,

RMSAAED

that N-file, I don´t know. I just deleted it, still OK :)

(But I also now deleted the other, concerning file)

 

Here are my files I am using now, both 14 KB. (the 2nd BIN here with capital letters now comes from an RPK/Mess)

I had to enter them both with about "3000" to get them running stable (I´ve tested from 2000 in 100er-steps and gave up at 2600 )

 

DISK-MGRs-III.zip

 

 

[userCart0]
name="DiskManager3-14K"
ROM0=G|6000|3000|MODS\DSKMGR3G.BIN

[userCart1]
name="DiskManager3-New-RPK-14K"
ROM0=G|6000|3000|MODS\phm3230g.BIN

 

 

Classic99 is really amazing, all seems to work so easy. Maybe I can fiddle around with the INI-files and a Batch :)

I have also read out some of my eproms these days, so maybe I can get them a quick try here :)

 

Ah, I need the DiskManager because I only work with DSK-Files. No FIAD.

 

thanks a lot

Ralf

Share this post


Link to post
Share on other sites

Here are my files I am using now, both 14 KB. (the 2nd BIN here with capital letters now comes from an RPK/Mess)

I had to enter them both with about "3000" to get them running stable (I´ve tested from 2000 in 100er-steps and gave up at 2600 )

 

Ah, I need the DiskManager because I only work with DSK-Files. No FIAD.

 

Well... someday I'll add write support, but I just didn't expect it to be terribly useful without that, and tools like TI99Dir seem to work. Good to know what people are using though. :)

 

Determining the length is straight forward, just right click the file in Windows and select properties - it will tell you exactly how big the file is.

 

post-12959-0-79684700-1442727655_thumb.png

 

So this file is "14336 bytes" (you want the actual size, not the "size on disk"). Then just convert that size to hexadecimal. You can do that in Windows calculator if you switch it to "Programmer" mode (also in earlier versions of calc):

 

post-12959-0-64682700-1442727797_thumb.jpg

 

In this case, we see that 14336 is hex 3800 (which, in retrospect, is not actually a strange size for a GROM). So that's the size you need to enter into the INI.

  • Like 1

Share this post


Link to post
Share on other sites

I suppose I can add that now, sure. I'll take a note to add it to the next release. Elsewhere I did note how to add it to Classic99.ini

  • Like 5

Share this post


Link to post
Share on other sites

May be a dumb question, but is there a way to disable the 32k memory expansion and run solely on the console RAM? I'm doing some real-iron development right now, and I'd like to transfer and test in Classic99, maybe tweak something if I need to, but want to make absolutely sure I can run on an unexpanded console if I need to tweak anything. I looked in the manual, and I did not see anything under section 7.7 or in the .ini file settings descriptions.

 

Thanks. :)

Share this post


Link to post
Share on other sites

May be a dumb question, but is there a way to disable the 32k memory expansion and run solely on the console RAM? I'm doing some real-iron development right now, and I'd like to transfer and test in Classic99, maybe tweak something if I need to, but want to make absolutely sure I can run on an unexpanded console if I need to tweak anything. I looked in the manual, and I did not see anything under section 7.7 or in the .ini file settings descriptions.

 

Thanks. :)

You can do a CALL LOAD to zero out the Memory expansion memory. Or just turn it off with a CALL LOAD

Share this post


Link to post
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...