Jump to content
IGNORED

1 Meg Super AMS Discussion Thread


Omega-TI

Recommended Posts

On 5/3/2016 at 4:16 AM, arcadeshopper said:

2: other memory expansion is incompatible, so it doesn't work with any programs written for say the myarc 128/512k cards or the foundation cards or the corcomp cards.. This is really a limited issue since the only real useful thing written for those cards is XBII from Myarc. Some people enjoy using the ramdisk functionality of those cards but since they were volatile (no power = empty ram) they had limited usefulness for anything but temporary storage.

 
SAMS is also volatile memory, there's no battery backup or nvram.. and it is not a ramdisk though with software you can have some ramdisk"like" functionality (see below)

Kind of silly to implement the Myarc standard then, isn't it?  Only the one product using it?

On 2/10/2024 at 5:47 PM, arcadeshopper said:

Marketing... Ha This is hobby stuff at this point if people really want something.  Make it you may sell 10-100 

 

A ram board that can be compatible with all the different memory standards for the 4a would be the game changer. Add a DSR and make it switchable for sams and myarc at least to make it xbii capable and maybe partitions as a RAM disk with backup battery or nvram ..  but you better do it for the fun as the market is small and unless you make both peb and sidecar models it's even smaller

 

 

It's an interesting thought though...

 

image.thumb.png.bc5dc652633375e3b3a70e81c1b9a1f6.png

image.thumb.png.040e5c56387cc76c08f5fae3236e5002.png

image.thumb.png.2a396adaa3648ec35b9a235da1ea41bd.png

image.thumb.png.aa014579068c143afa85507810d80910.png

image.thumb.png.2324c57ed21bd1e6d8e7da7b93072f88.png

I guess I can add a runtime-switch?  Lots to sort out though with the Cart RAM on my device though, as I only really did the Mini Memory 4K RAM...  At the moment, I'm just running the global RAM enable mode which un-protects all the memory in my device.

 

I did also look at the XBII DSR loader, and the 2nd Cart RAM loader, and the 3rd Cart RAM loader from file (Foundation model, not Myarc, as it seemed a tad bit smaller).

 

Here's the last loader, as commented assembly:

 

Spoiler

            aorg >7c00

7c00 06a0   bl   @>7d28               Display '   LOADING EXTENDED BASIC II   '
7c04 0200   li   r0, >0f09            PAB Filename Length
7c08 0420   blwp @>7ff2               Read 1 byte from VDP
7c0c c081   mov  r1, r2               Save a copy in R2
7c0e 0221   ai   r1, >ff00            -1
7c12 0420   blwp @>7fee               Write 1 byte to VDP
7c16 0982   srl  r2, 8                Convert byte to int
7c18 0580   inc  r0                   PAB Filename
7c1a 0201   li   r1, >7d3a            Read PAB Filename into Cart RAM
7c1e 0420   blwp @>7fea               Read R2 bytes from VDP
7c22 0705   seto r5                   -1
7c24 0585   inc  r5                   0
7c26 9831   cb   *r1+, @>7d0e         Compare Cart RAM copy to '.'
7c2a 16fc   jne  >7c24                Keep counting until '.' is found
7c2c 0585   inc  r5                   Skip '.'
7c2e 0200   li   r0, >0f0a            PAB Filename
7c32 a005   a    r5, r0               Skip Device
7c34 0201   li   r1, >7d0f            'XBII'
7c38 0202   li   r2, >0004            Write our filename after the device '.'
7c3c 0420   blwp @>7fe6               Write R2 bytes to VDP
7c40 c140   mov  r0, r5               >0f0a
7c42 8d75   c    *r5+, *r5+           >0f0a+4 = >0f0e (skip XBII)
7c44 0204   li   r4, >3100            '1'
7c48 0206   li   r6, >7d13            Attributes for each of 7 files

7c4c c044   mov  r4, r1               Get File Number
7c4e c005   mov  r5, r0               Set file number in PAB
7c50 0420   blwp @>7fee               Write 1 byte to VDP
7c54 c820   mov  @>7cd2, @>8356       >0f09 into Scratch
7c5a 0420   blwp @>7ff6               CALL DSR
7c5e 0008   data >0008                DSR-For-LOAD
7c60 1319   jeq  >7c94                File Error, go to routine below

7c62 c320   mov  @>7ffa, r12          Get device's CRU address
7c66 0200   li   r0, >0f32            VDP RAM address
7c6a 04c1   clr  r1                   Clear bottom byte
7c6c 04c2   clr  r2                   Clear bottom byte
7c6e d076   movb *r6+, r1             Get Parm
7c70 d0b6   movb *r6+, r2             Get Parm
7c72 d0f6   movb *r6+, r3             Get Parm - Page Number
7c74 0983   srl  r3, 8                Convert page byte to int
7c76 3123   ldcr @>7ffc(r3), 4        Set correct 32KB page
7c7a 0420   blwp @>7fea               Read R2 bytes from VDP
7c7e 3120   ldcr @>7ffc, 4            Back to Page 0
7c82 0224   ai   r4, >0100            Next file '2'
7c86 0284   ci   r4, >3800            Stop once '7' is done
7c8a 16e0   jne  >7c4c                Do Next File

7c8c 3120   ldcr @>7fff, 4            Set Page 3
7c90 0460   b    @>a000               ****************** RUN! ******************

7c94 0200   li   r0, >0100            
7c98 0201   li   r1, >7cd4            Display '     CAN'T ACCESS FILE XBII'
7c9c 0202   li   r2, >001b            
7ca0 0420   blwp @>7fe6               Write R2 bytes to VDP
7ca4 d804   movb r4, @>8c00           Write R4 byte to VDP RAM (after "..FILE XBII")

7ca8 0200   li   r0, >0f01            Clear PAB Status Byte
7cac 04c1   clr  r1                   
7cae 0420   blwp @>7fee               Write 1 byte to VDP

7cb2 02e0   lwpi gplws                Wait for Key Press
7cb6 0300   limi >0003                Someone got excited
7cba 0300   limi >0000                
7cbe 06a0   bl   @>000e               Scan Keyboard
7cc2 02e0   lwpi >83a0                
7cc6 d060   movb @>837c, r1           
7cca 13f3   jeq  >7cb2                
7ccc 06a0   bl   @>7d28               Display '   LOADING EXTENDED BASIC II   '
7cd0 10bd   jmp  >7c4c                

7cd2 0f09  Address in VDP RAM where filename length goes
7cd4 2020  '     CAN'T ACCESS FILE XBII'
7cee 4920  '   LOADING EXTENDED BASIC II   '
7d0e 2e58  '.XBII

7d13 23 1d 01  =  XBII1 : 2300, 1d00, 01 (Fill page 1 content)
7d16 20 20 02  =  XBII2 : 2000, 2000, 02 (Fill page 2 content)
7d19 20 20 03  =  XBII3 : 2000, 2000, 03 (Fill page 3 content...  All 4 8KB segments)
7d1c a0 20 03  =  XBII4 : A000, 2000, 03 (...)
7d1f c0 20 03  =  XBII5 : C000, 2000, 03 (...)
7d22 e0 20 03  =  XBII6 : E000, 2000, 03 (...)
7d25 60 1c 00  =  XBII7 : 6000, 1C00, 00 (Cart RAM, but also resets page to standard 32KB)

7d28 0200   li   r0, >0100            
7d2c 0201   li   r1, >7cef            '   LOADING EXTENDED BASIC II   '
7d30 0202   li   r2, >001f            
7d34 0420   blwp @>7fe6               Write R2 bytes to VDP
7d38 045b   rt                        

7d3a f0f0                             Space to read from VDP

... A whole lotta other initial loader stuff ...

7ffa 1e02                             CRU Address of config bits
7ffc 0001                             CRU for 4 pages...
7ffe 0203

 

 

  • Like 3
Link to comment
Share on other sites

29 minutes ago, JasonACT said:

Kind of silly to implement the Myarc standard then, isn't it?  Only the one product using it?

It's an interesting thought though...

 

image.thumb.png.bc5dc652633375e3b3a70e81c1b9a1f6.png

image.thumb.png.040e5c56387cc76c08f5fae3236e5002.png

image.thumb.png.2a396adaa3648ec35b9a235da1ea41bd.png

image.thumb.png.aa014579068c143afa85507810d80910.png

image.thumb.png.2324c57ed21bd1e6d8e7da7b93072f88.png

I guess I can add a runtime-switch?  Lots to sort out though with the Cart RAM on my device though, as I only really did the Mini Memory 4K RAM...  At the moment, I'm just running the global RAM enable mode which un-protects all the memory in my device.

 

I did also look at the XBII DSR loader, and the 2nd Cart RAM loader, and the 3rd Cart RAM loader from file (Foundation model, not Myarc, as it seemed a tad bit smaller).

 

Here's the last loader, as commented assembly:

 

  Reveal hidden contents

            aorg >7c00

7c00 06a0   bl   @>7d28               Display '   LOADING EXTENDED BASIC II   '
7c04 0200   li   r0, >0f09            PAB Filename Length
7c08 0420   blwp @>7ff2               Read 1 byte from VDP
7c0c c081   mov  r1, r2               Save a copy in R2
7c0e 0221   ai   r1, >ff00            -1
7c12 0420   blwp @>7fee               Write 1 byte to VDP
7c16 0982   srl  r2, 8                Convert byte to int
7c18 0580   inc  r0                   PAB Filename
7c1a 0201   li   r1, >7d3a            Read PAB Filename into Cart RAM
7c1e 0420   blwp @>7fea               Read R2 bytes from VDP
7c22 0705   seto r5                   -1
7c24 0585   inc  r5                   0
7c26 9831   cb   *r1+, @>7d0e         Compare Cart RAM copy to '.'
7c2a 16fc   jne  >7c24                Keep counting until '.' is found
7c2c 0585   inc  r5                   Skip '.'
7c2e 0200   li   r0, >0f0a            PAB Filename
7c32 a005   a    r5, r0               Skip Device
7c34 0201   li   r1, >7d0f            'XBII'
7c38 0202   li   r2, >0004            Write our filename after the device '.'
7c3c 0420   blwp @>7fe6               Write R2 bytes to VDP
7c40 c140   mov  r0, r5               >0f0a
7c42 8d75   c    *r5+, *r5+           >0f0a+4 = >0f0e (skip XBII)
7c44 0204   li   r4, >3100            '1'
7c48 0206   li   r6, >7d13            Attributes for each of 7 files

7c4c c044   mov  r4, r1               Get File Number
7c4e c005   mov  r5, r0               Set file number in PAB
7c50 0420   blwp @>7fee               Write 1 byte to VDP
7c54 c820   mov  @>7cd2, @>8356       >0f09 into Scratch
7c5a 0420   blwp @>7ff6               CALL DSR
7c5e 0008   data >0008                DSR-For-LOAD
7c60 1319   jeq  >7c94                File Error, go to routine below

7c62 c320   mov  @>7ffa, r12          Get device's CRU address
7c66 0200   li   r0, >0f32            VDP RAM address
7c6a 04c1   clr  r1                   Clear bottom byte
7c6c 04c2   clr  r2                   Clear bottom byte
7c6e d076   movb *r6+, r1             Get Parm
7c70 d0b6   movb *r6+, r2             Get Parm
7c72 d0f6   movb *r6+, r3             Get Parm - Page Number
7c74 0983   srl  r3, 8                Convert page byte to int
7c76 3123   ldcr @>7ffc(r3), 4        Set correct 32KB page
7c7a 0420   blwp @>7fea               Read R2 bytes from VDP
7c7e 3120   ldcr @>7ffc, 4            Back to Page 0
7c82 0224   ai   r4, >0100            Next file '2'
7c86 0284   ci   r4, >3800            Stop once '7' is done
7c8a 16e0   jne  >7c4c                Do Next File

7c8c 3120   ldcr @>7fff, 4            Set Page 3
7c90 0460   b    @>a000               ****************** RUN! ******************

7c94 0200   li   r0, >0100            
7c98 0201   li   r1, >7cd4            Display '     CAN'T ACCESS FILE XBII'
7c9c 0202   li   r2, >001b            
7ca0 0420   blwp @>7fe6               Write R2 bytes to VDP
7ca4 d804   movb r4, @>8c00           Write R4 byte to VDP RAM (after "..FILE XBII")

7ca8 0200   li   r0, >0f01            Clear PAB Status Byte
7cac 04c1   clr  r1                   
7cae 0420   blwp @>7fee               Write 1 byte to VDP

7cb2 02e0   lwpi gplws                Wait for Key Press
7cb6 0300   limi >0003                Someone got excited
7cba 0300   limi >0000                
7cbe 06a0   bl   @>000e               Scan Keyboard
7cc2 02e0   lwpi >83a0                
7cc6 d060   movb @>837c, r1           
7cca 13f3   jeq  >7cb2                
7ccc 06a0   bl   @>7d28               Display '   LOADING EXTENDED BASIC II   '
7cd0 10bd   jmp  >7c4c                

7cd2 0f09  Address in VDP RAM where filename length goes
7cd4 2020  '     CAN'T ACCESS FILE XBII'
7cee 4920  '   LOADING EXTENDED BASIC II   '
7d0e 2e58  '.XBII

7d13 23 1d 01  =  XBII1 : 2300, 1d00, 01 (Fill page 1 content)
7d16 20 20 02  =  XBII2 : 2000, 2000, 02 (Fill page 2 content)
7d19 20 20 03  =  XBII3 : 2000, 2000, 03 (Fill page 3 content...  All 4 8KB segments)
7d1c a0 20 03  =  XBII4 : A000, 2000, 03 (...)
7d1f c0 20 03  =  XBII5 : C000, 2000, 03 (...)
7d22 e0 20 03  =  XBII6 : E000, 2000, 03 (...)
7d25 60 1c 00  =  XBII7 : 6000, 1C00, 00 (Cart RAM, but also resets page to standard 32KB)

7d28 0200   li   r0, >0100            
7d2c 0201   li   r1, >7cef            '   LOADING EXTENDED BASIC II   '
7d30 0202   li   r2, >001f            
7d34 0420   blwp @>7fe6               Write R2 bytes to VDP
7d38 045b   rt                        

7d3a f0f0                             Space to read from VDP

... A whole lotta other initial loader stuff ...

7ffa 1e02                             CRU Address of config bits
7ffc 0001                             CRU for 4 pages...
7ffe 0203

 

 

Hmm RXB has built in support for SAMS up to 16 Meg!

That is quite a bit more then 128K Foundation card or 256K Myarc memory card.

I have demoed a game IN THE DARK using 960K before.

  • Like 2
Link to comment
Share on other sites

4 hours ago, Tursi said:

I wonder, how well written is XB2? Maybe it'd be easier to patch it to know AMS? (I don't know how different the Myarc 512k was)

 

 

Probably the most important thing to remember with Myarc XB-II is that development stopped before they'd shaken all of the bugs out of it. It has a lot of potential, but IIRC, some of the bugs could seriously bite you when writing complex programs. Commented source code isn't in the wild, unfortunately, so the only way to improve it now would be a careful disassembly/bug hunt. . .unless Lou Philips still has a copy of the source stashed somewhere, which would still leave the bug-hunting exercise.

  • Like 3
Link to comment
Share on other sites

48 minutes ago, hhos said:

How does the Myarc memory expansion card work?  Did it have DSR ROM?  Where can I read about how they paged the memory in that unit?

Ooohh.  That's very different..... Never mind.

 

https://web.archive.org/web/20070203221436/http://pw2.netcom.com/~mjmw/myarc512.pdf

 

If anyone wants to design a new memory expansion board, I would like to place my vote for NOT using the Myarc solution as its basis.  Look at page 23(29) of this PDF for a short synopsis of the Myarc paging scheme.

Edited by hhos
Added page # to look at in PDF
  • Like 1
Link to comment
Share on other sites

19 hours ago, hhos said:

Ooohh.  That's very different..... Never mind.

Ahh... so it swaps out the entire 32k space with two CRU control bits. That's awkward to simulate with the AMS though it could be done if we can make some ROM space for a larger paging function.

 

But, if XB2 was never really finished and there's no pressing software that needs it, maybe it best remains a historical artifact...

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

8 hours ago, Tursi said:

Ahh... so it swaps out the entire 32k space with two CRU control bits.

My internal 64 K expansion did that too, to begin with. But then I realized it was a bad idea, and changed to eight CRU bits each controlling 8 Kbytes of RAM being paged in or out. It's a lot easier to handle if not all your program's memory disappears for you when you switch a bank.

  • Like 4
Link to comment
Share on other sites

1 hour ago, JasonACT said:

 

Run Myarc XBII from SAMS in Classic99 - if all the planets are aligned.

 

Whoa, that's very exciting, but I must be missing something because when I press 2 for MYARC XBII-212 I just get an empty screen. I have the files on DSK1. Do I also need the Myarc DSR ROM? 

  • Like 3
Link to comment
Share on other sites

6 hours ago, Asmusr said:

Whoa, that's very exciting, but I must be missing something because when I press 2 for MYARC XBII-212 I just get an empty screen. I have the files on DSK1. Do I also need the Myarc DSR ROM? 

I didn't think Myarc had a ROM on its memory expansion board.  TI started it with its own board, I guess.  They only had to map 32K worth of memory into 32K of memory space, though.  They didn't need DSR ROM to do that.  While I would agree that they should have a DSR, I don't think they do, but if I'm wrong I would be pleased.  The Super AMS does not have a ROM.

 

HH

Link to comment
Share on other sites

1 hour ago, hhos said:

I didn't think Myarc had a ROM on its memory expansion board.  TI started it with its own board, I guess.  They only had to map 32K worth of memory into 32K of memory space, though.  They didn't need DSR ROM to do that.  While I would agree that they should have a DSR, I don't think they do, but if I'm wrong I would be pleased.  The Super AMS does not have a ROM.

 

HH

The SAMS does not need a ROM as the DSR space is all Mapper Registers.

                                                                PAGE S3
                              SAMS MAPPER
     ******************************************************************
     The SAMS card has tons of documents as to its function and use.
     So to re-explain these docs would be pointless. Read the docs or
     find some, sorry but the RXB package is already huge.
     In PASS mode the mapper register setup is equivalent to:

     mapper address  mapper  page num            address range
     --------------  ------  --------            -------------
      HEX     Dec            HEX  Dec            memory area
      ---     ---            ---  ---            -----------
     >4004 = 16388 is MR02 = >02 = 02 points to >2000 - >2FFF range
     >4006 = 16390 is MR03 = >03 = 03 points to >3000 - >3FFF range
     >4014 = 16404 is MR10 = >0A = 10 points to >A000 - >AFFF range
     >4016 = 16406 is MR11 = >0B = 11 points to >B000 - >BFFF range
     >4018 = 16408 is MR12 = >0C = 12 points to >C000 - >CFFF range
     >401A = 16410 is MR13 = >0D = 13 points to >D000 - >DFFF range
     >401C = 16412 is MR14 = >0E = 14 points to >E000 - >EFFF range
     >401E = 16414 is MR15 = >0F = 15 points to >F000 - >FFFF range
     (MR=Mapper Register)

     In MAP mode the mapper register setup is equivalent to: EXAMPLE1

     mapper address  mapper  page num            address range
     --------------  ------  --------            -------------
      HEX     Dec            HEX  Dec            memory area
      ---     ---            ---  ---            -----------
     >4004 = 16388 is MR02 = >10 = 16 points to >2000 - >2FFF range
     >4006 = 16390 is MR03 = >11 = 17 points to >3000 - >3FFF range
     >4014 = 16404 is MR10 = >12 = 18 points to >A000 - >AFFF range
     >4016 = 16406 is MR11 = >13 = 19 points to >B000 - >BFFF range
     >4018 = 16408 is MR12 = >14 = 20 points to >C000 - >CFFF range
     >401A = 16410 is MR13 = >15 = 21 points to >D000 - >DFFF range
     >401C = 16412 is MR14 = >16 = 22 points to >E000 - >EFFF range
     >401E = 16414 is MR15 = >17 = 23 points to >F000 - >FFFF range

     (MR=Mapper Register)
                                                            PAGE    S4
                              SAMS MAPPER
     *****************************************************************
 
     In map mode the mapper register setup is equivalent to: EXAMPLE2
 
     mapper address  mapper  page num            address range
     --------------  ------  --------            -------------
      HEX     Dec            HEX  Dec             memory area
      ---     ---            ---  ---             -----------
     >4004 = 16388 is MR02 = >62 =  98 points to >2000 - >2FFF range
     >4006 = 16390 is MR03 = >63 =  99 points to >3000 - >3FFF range
 
     >4014 = 16404 is MR10 = >64 = 100 points to >A000 - >AFFF range
     >4016 = 16406 is MR11 = >65 = 101 points to >B000 - >BFFF range
     >4018 = 16408 is MR12 = >66 = 102 points to >C000 - >CFFF range
     >401A = 16410 is MR13 = >67 = 103 points to >D000 - >DFFF range
     >401C = 16412 is MR14 = >68 = 104 points to >E000 - >EFFF range
     >401E = 16414 is MR15 = >69 = 105 points to >F000 - >FFFF range
 
     (MR=Mapper Register)
 
     In MAP mode the mapper register setup is equivalent to: EXAMPLE3
 
     mapper address mapper  page num             address range
     -------------- ------  --------             -------------
      HEX   Dec            HEX    Dec             memory area
      ---   ---            ---    ---             -----------
     >4004=16388 is MR02 =>1FF9 = 8185 points to >2000 - >2FFF range
     >4006=16390 is MR03 =>1FFA = 8186 points to >3000 - >3FFF range
 
     >4014=16404 is MR10 =>1FFB = 8187 points to >A000 - >AFFF range
     >4016=16406 is MR11 =>1FFC = 8188 points to >B000 - >BFFF range
     >4018=16408 is MR12 =>1FFD = 8189 points to >C000 - >CFFF range
     >401A=16410 is MR13 =>1FFE = 8190 points to >D000 - >DFFF range
     >401C=16412 is MR14 =>1FFF = 8191 points to >E000 - >EFFF range
     >401E=16414 is MR15 =>2000 = 8192 points to >F000 - >FFFF range
 
     (MR=Mapper Register)

I try to explain how it works as much as possible in RXB documents. Originally RXB 2001 had AMS (SAMS) support.

  • Like 1
Link to comment
Share on other sites

8 hours ago, Asmusr said:

Whoa, that's very exciting, but I must be missing something because when I press 2 for MYARC XBII-212 I just get an empty screen. I have the files on DSK1. Do I also need the Myarc DSR ROM? 

Have you configured the Classic99 ini file (using details in the ini.txt) so the cartridge is in RAM instead of ROM?

Link to comment
Share on other sites

10 minutes ago, JasonACT said:

Have you configured the Classic99 ini file (using details in the ini.txt) so the cartridge is in RAM instead of ROM?

Now it works like a charm. I guess the reason you say SAMS is slow is that it takes a while longer to set up 8 memory words than 2 CRU bits?

  • Like 3
Link to comment
Share on other sites

4 minutes ago, Asmusr said:

Now it works like a charm. I guess the reason you say SAMS is slow is that it takes a while longer to set up 8 memory words than 2 CRU bits?

Yes, along with Myarc XBII constantly swapping pages, which you can see in the debugger.  It runs a fair bit slower than the real thing.

  • Like 1
Link to comment
Share on other sites

1 minute ago, JasonACT said:

Yes, along with Myarc XBII constantly swapping pages, which you can see in the debugger.  It runs a fair bit slower than the real thing.

It's still quite fast. And quite an accomplishment that you managed to get this to work.

  • Like 4
Link to comment
Share on other sites

52 minutes ago, Asmusr said:

Now it works like a charm. I guess the reason you say SAMS is slow is that it takes a while longer to set up 8 memory words than 2 CRU bits?

Which is the reason in RXB I put the program in FAST RAM SCRATCH PAD to change or set up SAMS pages.

  • Like 1
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...