Jump to content
IGNORED

Classic99 Updates


Tursi

Recommended Posts

I get SYNTAX errors when I try to type this in OR put it at the start of a program.

 

CALL LOAD(-31868,0,0)

 

Hmmm.....

 

 

 

****EDIT*****

 

Forgot CALL INIT first. It's late. :D

 

 

Working now. Looks like I have 11,816 BYTES free. Should work just fine for me. Thanks!!

Edited by Opry99er
  • Like 1
Link to comment
Share on other sites

The memory is still there in that case, of course, it's just that you've changed the memory pointers such that XB thinks it's full. It's not quite the same as it being non-present and I can't say for sure that those values are 100% safe (some of the old CALL LOADs floating around only work halfway).

 

Classic99 doesn't have an intrinsic way to disable the 32k memory expansion, but the way that it works is that anything which is not ROM is RAM. Therefore, just create an entry in your Classic99.ini which gives you Extended BASIC /and/ loads ROM in the RAM space. The actual file you load can be anything, the important part is that XB can't write to it, so the memory test will fail and it will determine there is no 32k memory. An entry like this SHOULD work:

 

 

[usercart1]
Name=XB without 32k
rom0=o|0000|0004|XB
rom1=C|2000|2000|classic99.exe
rom2=C|A000|6000|classic99.exe

 

The tricks here are type 'o' which loads an "other" cart - group 0, entry 4, which happens to be Extended BASIC. rom1 and rom2 load the emulator itself as ROMs, selected just because I knew it would exist and be large enough. ;)

 

However, there's a bug in the currently released version of Classic99 where RAM is forced to exist in the 32k space even after it loads the data. I ran into this myself a couple of weeks ago testing XB27 without memory, so I have a fix that needs to be released first. I also have a file system regression to investigate, but work has me on crunch work schedule, so it may be a bit till I can get to it. I'll try again for this weekend. This trick won't work until then.

  • Like 1
Link to comment
Share on other sites

I can confirm that CALL LOAD -31868 screws things up really bad -- you can see it yourself by checking size after entering just a couple of lines. That's writing to >8384 which is the TOP of free RAM in the top 24k bank. It's >FFE7 by default. Setting it to zero seems to work against the SIZE command but isn't enough to correctly reinitialize the XB environment.

 

You CAN force it with the debugger, though. XB makes two checks for memory expansion, we can just defeat them both.

 

Start with XB at the READY prompt. Open the debugger and set a breakpoint on writes with ">FFE7", and another with ">DFFF".

Type 'NEW' to restart XB.

When it breaks the first time, change the value at >FFE7 to zero with the edit box at the bottom of the debugger ("CFFE7=0"). Press F1 to continue.

It will break again immediately (so be careful not to double tap). Now set >DFFF to zero with "CDFFF=0". Press F1 to continue.

 

(Interestingly, this suggests that XB was designed to work with a smaller memory expansion -- if you fail the first check but pass the second, XB initializes with 16k Program space free instead of 24k).

 

XB will start and when you do a SIZE you'll see the normal 11840 bytes free -- the difference is XB has set itself up for no memory expansion. This will survive until NEW. (and you can leave the breakpoints in place in case you need to do it again).

  • Like 4
Link to comment
Share on other sites

I have seen references to a 16K memory expansion somewhere or other, I'll have to go digging to see exactly where (it showed up in one of the many system specification documents, IIRC), so what you found out here just confirms that they actually had the hooks in place to implement it, Tursi. I doubt they ever actually "built" them though, as the incremental cost between the 32K sidecar and a downsized 16K device would have been minimal--even with the cost of memory chips back in early 1980.

  • Like 1
Link to comment
Share on other sites

 

 

Start with XB at the READY prompt. Open the debugger and set a breakpoint on writes with ">FFE7", and another with ">DFFF".

Type 'NEW' to restart XB.

When it breaks the first time, change the value at >FFE7 to zero with the edit box at the bottom of the debugger ("CFFE7=0"). Press F1 to continue.

It will break again immediately (so be careful not to double tap). Now set >DFFF to zero with "CDFFF=0". Press F1 to continue.

This is precisely what I have done and it works great!

I noticed that you indicated you have added additional support for disabling 32k... I did not see anything in the manual on how to do this or any new setting in the ini file or Options submenu.

I do not mind doing it manually as you have laid out above, I was just curious if there was a quick option for it now. :)

Nice update. Love having 2.7 on my stock dropdown.

Link to comment
Share on other sites

I noticed that you indicated you have added additional support for disabling 32k... I did not see anything in the manual on how to do this or any new setting in the ini file or Options submenu.

I do not mind doing it manually as you have laid out above, I was just curious if there was a quick option for it now. :)

 

No, I didn't have time to do any new code changes -- the fix was done a few weeks ago. But the fix was just to enable the hack I described above... it was always wrong that it didn't work anyway, you're supposed to be able to load ROM anywhere. ;) (The bug was that it didn't check the rom status before writing in the 32k spaces).

Link to comment
Share on other sites

I'm running virtual box on a linux laptop with a windows vm guest... So, due to pressures to provide IT support at home, I let Windows 10 happen to this vm... Classic99 just gives me an empty display...

 

Anyone able to run Classic99 in Windows 10? Any compatibility mode tricks that are known?

Link to comment
Share on other sites

I'm running virtual box on a linux laptop with a windows vm guest... So, due to pressures to provide IT support at home, I let Windows 10 happen to this vm... Classic99 just gives me an empty display...

 

Anyone able to run Classic99 in Windows 10? Any compatibility mode tricks that are known?

 

Classic99 works on everything i've tried including wine under linux :-) you might need DirectX additional stuff if you have a non upgrade install.. Those of us that came from 7 have that already..

 

Greg

Link to comment
Share on other sites

But, to demonstrate, this INI entry runs Gazoo's XB27 cart. Type 'U' is UberGROM Flash (GROM) data, and type 'T' is the UberGROM EEPROM space. Type '8' is the standard 378-style non-inverted cart ROM.

 

Tursi, does this mean that a file with name [binary]8.bin should load as a ROM-only 378 style cart when loading from the Cartridge -> User menu? Is there a default bank in which these carts start up in Classic99?

Link to comment
Share on other sites

 

Tursi, does this mean that a file with name [binary]8.bin should load as a ROM-only 378 style cart when loading from the Cartridge -> User menu? Is there a default bank in which these carts start up in Classic99?

 

Yes, User->load supports '3' for 379 style (inverted) and '8' for 378 style (non-inverted).

 

The highest bank selection is set as the default. (So for inverted ROMs, the first page on the EPROM, for non-inverted the last. Pretty sure on that... that's what the code says but I don't have time to prove it. I also don't guarantee that to never change, since the real hardware doesn't guarantee it, but if it changes it'll at least be an option.)

Link to comment
Share on other sites

Yes, User->load supports '3' for 379 style (inverted) and '8' for 378 style (non-inverted).

 

The highest bank selection is set as the default. (So for inverted ROMs, the first page on the EPROM, for non-inverted the last. Pretty sure on that... that's what the code says but I don't have time to prove it. I also don't guarantee that to never change, since the real hardware doesn't guarantee it, but if it changes it'll at least be an option.)

 

Cool, thanks. That explains why alexkidd wouldn't run in classic99, I don't have a header in the last bank (I haven't put headers in the banks that are only padding). That's easy enough to fix.

Link to comment
Share on other sites

A note on 378s. I've tested about 500 of them now and most of them start in either the first or the last bank (I use the ones that hit other start addresses for UberGROM boards), so it is probably a good idea to have your startup code in both of those banks, as that will hit successfully on every cartridge board I build.

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...
  • Recently Browsing   0 members

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