Jump to content
FDOS

Super Space II bank selection help

Recommended Posts

13 hours ago, HOME AUTOMATION said:

O.K., I made CALL LINK("WRITE",x$) and CALL LINK("READ",x$).

They can write and read a 15 character string at >6FF8 respectively.
My tests using these, indicated pages 1,2 and 3 work!
Nothing more.:?
I wonder, is there a simple way to clear all banks?

 

FDOS2.dsk 180 kB · 6 downloads

I started this reply yesterday, but one of my grandsons came and told me I had to take him immediately to his football practice at the high school.  When I came back my in-process reply was gone.

 

How about BANK 0?  I'm still limited to BANKs 1 & 3, which always work, and easy to recover by re-inserting supersp2 over the one I just broke by selecting BANK 2, and trying to load a different TI Basic program.  Anyway, BCART auto erases selected BANK before saving.  I wonder if "auto erase" upsets the apple cart, so that the actual program is not "saved"? Another way to erase/clear a selected BANK is by using CART-CLEAR in the SUPERCART.dsk, which is also available on WHT.

 

Michael Zapf gets back tomorrow, but might not hear from him until Sunday night.

 

Bill

Share this post


Link to post
Share on other sites

Guys, I'm back from Madeira, but allow me some time to catch up with everything that happened during the last week.

  • Like 1

Share this post


Link to post
Share on other sites
On 9/11/2019 at 9:37 AM, HOME AUTOMATION said:


The images I found on WHTECH will not load on MAME for me.

 

fail1.thumb.jpg.e2ba007f2939cb5f880d0e339aa8e2f8.jpg

 

 

 

You cannot mount a "*.bin" file in MAME as a cartridge. Either you select a RPK file in the File Manager, or you can go via the Software List and locate "Super Space II".

 

In the command line, you either use "-cart supersp2" or "-cart superspace2_or_whatever_you_named_it.rpk"

Share this post


Link to post
Share on other sites
2 hours ago, mizapf said:

Guys, I'm back from Madeira, but allow me some time to catch up with everything that happened during the last week.

Glad to see you back Michael.  Even though I've been spending most of my hobby time dealing with the BANK selection issue with Super Space II, I did manage to install the HSGPL DSR update.  Both cited issues have been resolved (although I haven't thoroughly tested every possibility).  However, Harald did not "fix" the catalog issue in the expected way, it does work in a "tricky" way.  I'll explain later in an email.

 

Bill

Share this post


Link to post
Share on other sites

As far as I can see, this routine has an error, and I commented on it in the MAME source code (cartridges.cpp:832).

 

       DEF  BANK
       REF  NUMREF
BANK   CLR  R0
       LI   R1,1
       BLWP @NUMREF
       MOVB @>834B,R0
       SWPB R0
BANKSW LI   R12,>0800
       LI   R1,2
       SLA  R0,1
       SLA  R1,0
       LDCR R1,0
       SRL  R0,1
       RT
       END

 

The problem arises when selecting bank 0. When we assume that the bank number is in R0, and R0==0, then SLA R1,0 will left-shift R1 by 16 positions, that means, will clear it.

 

You should add a JEQ  $+4 between both SLA instructions.

 

I don't know where I got my information from, but I seem to remember I read about it somewhere. On the other hand, I'd certainly like to adapt the behavior of the emulation to the real behavior.

 

From what I can see here, when you select bank 0 in the above way (without the JEQ), this will yield a sequence of 0-writes to CRU, and as only 1-writes switch the banks, nothing happens. The previous bank will still be active.

 

Share this post


Link to post
Share on other sites
41 minutes ago, mizapf said:

As far as I can see, this routine has an error, and I commented on it in the MAME source code (cartridges.cpp:832).

 

 

       DEF  BANK
       REF  NUMREF
BANK   CLR  R0
       LI   R1,1
       BLWP @NUMREF
       MOVB @>834B,R0
       SWPB R0
BANKSW LI   R12,>0800
       LI   R1,2
       SLA  R0,1
       SLA  R1,0
       LDCR R1,0
       SRL  R0,1
       RT
       END

 

 

The problem arises when selecting bank 0. When we assume that the bank number is in R0, and R0==0, then SLA R1,0 will left-shift R1 by 16 positions, that means, will clear it.

 

You should add a JEQ  $+4 between both SLA instructions.

 

I don't know where I got my information from, but I seem to remember I read about it somewhere. On the other hand, I'd certainly like to adapt the behavior of the emulation to the real behavior.

 

From what I can see here, when you select bank 0 in the above way (without the JEQ), this will yield a sequence of 0-writes to CRU, and as only 1-writes switch the banks, nothing happens. The previous bank will still be active.

 

Hi Michael, HOME AUTOMATION is doing the BANK selection coding using 32bit MAME, so I will wait on him.  Will there be a problem with 32/64bit MAME  BANK selection operation?  

 

Bill

Share this post


Link to post
Share on other sites

No, 32bit vs. 64bit is no reason for trouble, as long as the MAME version is the same (or not too far apart).

Share this post


Link to post
Share on other sites

Do we have a schematic for SuperSpace II cartridges? This would ensure that the emulated and the real behavior match.

Share this post


Link to post
Share on other sites
3 hours ago, mizapf said:

Do we have a schematic for SuperSpace II cartridges? This would ensure that the emulated and the real behavior match.

I know this isn't  the same as the commercial version, as it uses physical switching, but I haven't found the location of the actual DataBiotics, Inc version, yet.  I know I've seen it at some time or another.  I will keep looking.

 

Bill

supercart_4bank[1].html

Edited by FDOS
incorrect wording

Share this post


Link to post
Share on other sites
11 hours ago, mizapf said:

Guys, I'm back from Madeira,

Hi mizapf, glad you're back, how are the Portuguese doin'?:D

 

So, I tried this...

 

       DEF  BANK
       REF  NUMREF
BANK   CLR  R0
       LI   R1,1
       BLWP @NUMREF
       MOVB @>834B,R0
       SWPB R0
BANKSW LI   R12,>0800
       LI   R1,2
       SLA  R0,1
       JEQ  $+4
       SLA  R1,0
       LDCR R1,0
       SRL  R0,1
       RT
       END

 

my tests indicate that now, instead of selecting bank 0 resulting in no change, now selecting bank 0 ends up on bank 1!:roll:

 

 

Share this post


Link to post
Share on other sites
On 9/11/2019 at 9:22 PM, HOME AUTOMATION said:

O.K., I made CALL LINK("WRITE",x$) and CALL LINK("READ",x$).

They can write and read a 15 character string at >6FF8 respectively.
My tests using these, indicated pages 1,2 and 3 work!
Nothing more.:?
I wonder, is there a simple way to clear all banks?

 

FDOS2.dsk 180 kB · 8 downloads

I used the above... I didn't have to write, because the strings I wrote yesterday persisted, I just switched banks with the call link"bank", then I read the string back... selecting bank zero gave me back the string I had written to bank 1 with CALL LINK"READ" "qwertyuiopasdfg".

Share this post


Link to post
Share on other sites

Ok, Ran it through classic99 debugger... mizapf's correction was needed and did work! apparently I goofed the testing... I think I had managed to somehow write to bank 0 previously and I had written a similar pattern "qwertyuioplkjhg" but not noticed.

 

 

 

so... here it is:

 

SS2BNKSW.dsk

  • Like 1

Share this post


Link to post
Share on other sites

One thing I'd like to know is what happens with the real device when

- all bits written to the CRU selector are 0 (what happened with the previous implementation), i.e. no selection has been made

- several bits are set

 

Probably we can conceive a suitable test to be run by some owner of a SuperSpace II cartridge.

 

Share this post


Link to post
Share on other sites
4 hours ago, HOME AUTOMATION said:

Ok, Ran it through classic99 debugger... mizapf's correction was needed and did work! apparently I goofed the testing... I think I had managed to somehow write to bank 0 previously and I had written a similar pattern "qwertyuioplkjhg" but not noticed.

 

 

 

so... here it is:

 

SS2BNKSW.dsk 180 kB · 2 downloads

I have a little bit of good news to report; I can effectively save and access BCART Basic programs in BANKs 0, 1 & 3 now using SS2BNKSW, but saving to BANK 2 trashes the selection screen.  However, it's not locked up, as I can still access 1) For TI BASIC and 2) For Editor Assembler.  Therefore, I have three 8K RAM banks, that I can use for my purposes.  Thanks guys, but let's find out why BANK 2 gets trashed.  OK?

 

Bill

Share this post


Link to post
Share on other sites
48 minutes ago, HOME AUTOMATION said:

I guess I could try a more complete memory test...

 

...could it be that you're data is being interpreted as a cartridge header by TI's OS?

It wouldn't matter, as it doesn't make any difference which Basic program I save at Bank 2.  I can also shuffle the Basic programs and save them in different BANKs.  BANK 2 is the only BANK that gets trashed or occasionally I get the INSERT CARTRIDGE screen because BCART erases before it saves the Basic program, and BANKs 0,1 & 3 are always successfully saved and accessible when rotating BANK selections.

 

Bill

Edited by FDOS
typo

Share this post


Link to post
Share on other sites

So do we have users of the real SuperSpace 2? If I understood you correctly, Bill, your cartridge has a hardware switch. I'd need someone with a real one to compare with the emulation.

Share this post


Link to post
Share on other sites
On 9/15/2019 at 4:32 AM, mizapf said:

So do we have users of the real SuperSpace 2? If I understood you correctly, Bill, your cartridge has a hardware switch. I'd need someone with a real one to compare with the emulation.

Yes, I understand that.  Unfortunately, I don't have one nor do I know anyone that has one.  Wait, not true, as I'm sure that Brad Snyder, the author of BCART has two; but the only email address I have for him is @Delphi.com, so a bit doubtful as current.  I'll give it a shot, and see if he responds, as we only communicated twice BITD.

 

Bill

Share this post


Link to post
Share on other sites

Testing didn't reveal much... everything seems to work as expected.

I changed the "WRITE" program so it would fill >6000 thru >7FFF with the value from R3. I filled Page 2 with twos, then I switched the GROM from E/A to MINIMEM and I manually inspected groups of addresses, finding only twos. I than changed the value written, from twos to zeros (>A003,>A004=0) and filled Page 0 with zeros (EA000,(Execute >A000)), I did the same for Pages 1 and 3. I than inspected the "superspace.nv" file with a hex editor, finding  all to be correct, including the single >0F left at >6FF8 on Page 2 by the CALL LINK routine.

Maybe you should check/replace your NV file, try alternate "super_space_2.rpk" or upgrade to 213b.:cool:

 

Here is what I used...

 

db_super_space_2.rpk db_supermini_space_2.rpk

call link src.txt superspace.nv

 

Note that disk loading doesn't function on the "db_supermini_space_2.rpk" because MINIMEM wants it's ROM at >6000. Tape loading (L) should work though.

Share this post


Link to post
Share on other sites
19 minutes ago, HOME AUTOMATION said:

Testing didn't reveal much... everything seems to work as expected.

I changed the "WRITE" program so it would fill >6000 thru >7FFF with the value from R3. I filled Page 2 with twos, then I switched the GROM from E/A to MINIMEM and I manually inspected groups of addresses, finding only twos. I than changed the value written, from twos to zeros (>A003,>A004=0) and filled Page 0 with zeros (EA000,(Execute >A000)), I did the same for Pages 1 and 3. I than inspected the "superspace.nv" file with a hex editor, finding  all to be correct, including the single >0F left at >6FF8 on Page 2 by the CALL LINK routine.

Maybe you should check/replace your NV file, try alternate "super_space_2.rpk" or upgrade to 213b.:cool:

 

Here is what I used...

 

db_super_space_2.rpk 6.65 kB · 1 download   db_supermini_space_2.rpk 6.1 kB · 1 download

call link src.txt 338 B · 1 download   superspace.nv 32 kB · 1 download

 

Note that disk loading doesn't function on the "db_supermini_space_2.rpk" because MINIMEM wants it's ROM at >6000. Tape loading (L) should work though.

This is a lot for me to consider, as the MAME v2.10b, that I'm currently using was provided by Michael Zapf, so not the one I originally downloaded myself.  It probably just included some specific batch files for me to better understand the differences between TI-99/4A, 9640 Geneve and SNUG TI-99/4P types.  So it will be awhile before I make this decision.  I surfe sdo appreciate your efforts to resolve these supersp2 BANK selection issues.

 

Bill

  • Thanks 1

Share this post


Link to post
Share on other sites
On 9/15/2019 at 4:32 AM, mizapf said:

So do we have users of the real SuperSpace 2? If I understood you correctly, Bill, your cartridge has a hardware switch. I'd need someone with a real one to compare with the emulation.

As I expected, I got a User unknown reply for Brad Snyder.  So, no luck.

 

Share this post


Link to post
Share on other sites
8 hours ago, HOME AUTOMATION said:

I than changed the value written, from twos to zeros (>A003,>A004=0) and filled Page 0 with zeros (EA000,(Execute >A000)), I did the same for Pages 1 and 3.

I meant to mention how to switch pages from EASYBUG.

 

To activate a page write a one to the corresponding CRU address.

 

Using the C command.

 

>0802 - Page 0

>0806 - Page 1

>080A - Page 2

>080E - Page 3

 

ex.

C0802(enter)

C0802 =00 ->1(enter)

Will switch to Page 0.

:!:

 

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.

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