Jump to content

Photo

Some 32k / SAMS memory questions

SAMS SuperAMS stack

42 replies to this topic

#1 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • 1,055 posts

Posted Wed Jun 25, 2014 1:49 PM

Hello again 99ers!  I've got some more noob questions to bring to the table :D.

Firstly, I noticed that when I dimension a string array in BASIC that stack is set aside for it.  However, it appears to be a weird ~2.8 bytes per element that it sets aside - what is it putting in memory at that point, the name, location, and dimensions of the array?  Also, if the stack fills up, will string variables/arrays start using the 'program' space, or is that when we get the infamous OUT OF MEMORY error?  And the stack is HIGH memory, is it not?

Now on to the SuperAMS.  I have not been able to find much more than a schematic for this - no user docs whatsoever (I've pretty well scoured whtech and the 'net).  The RXB manual mentions something about a 'MANUAL-AMS', but I haven't been able to find that.

What I'd like to do I make use of this new memory toy (1 Meg AMS) with a couple programs (R/XB) I've got on the burner, but, I don't know how to use it.  The AMS demo included with RXB appears to load screen dump files, but the two programs in the works use files of types
SEQUENTIAL,INTERNAL,FIXED 20
and
RELATIVE,INTERNAL,FIXED 108
so I'm not sure that the approach used in the Demo really applies, especially since I would like to be able to manipulate the data in AMS memory.  I would prefer (but perhaps may not be required for my purposes) to able to use arrays (and I mean big arrays :P) in conjunction with the AMS, if possible.

Well, I know I've asked a mouthful. But I think a good starting place would be to get my hands on a decent manual for the AMS card - I don't mind doing some reading :).  

Thanks for reading buddies!



#2 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 1:20 AM

Well, after some more research and some toying around I managed to figure out a few things.  I figured out stack=LOW memory (please correct me if I'm wrong).  I also wrote a small program to see how full I could fill the stack with string arrays, and answer my own question about whether HIGH memory becomes an overflow - indeed it does not. 

So disregard most of the above - the bottom line is, if I'm going to try load this data into RAM for faster access, I'm going to have to use the SAMS, so am I somehow missing more SAMS documentation on whtech? Perhaps it's with the RXB stuff? Specifically, I'd like to find the 'MANUAL-AMS' mentioned in the RXB manual (2012).

I must be tired - I didn't sleep well last night - anyway, I did find some more in-depth material on whtech, it was buried in a some .dsk images.


Edited by RobertLM78, Thu Jun 26, 2014 2:07 AM.


#3 Stuart OFFLINE  

Stuart

    Dragonstomper

  • 792 posts
  • Location:Southampton, UK

Posted Thu Jun 26, 2014 2:04 AM

I thought with XB, variables are stored in VDP RAM? So they don't encroach on the program in CPU RAM at all?



#4 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 2:20 AM

I believe it depends on what kind of variable - string variables are put in the stack (LOW) and I think numeric variables are put in 'program' (HIGH) memory. 

 

But yeah, once the LOW memory fills up, the program breaks:

100 CALL CLEAR
110 DIM A$(300,3),T$(300),S$(300),N$(300)
120 DISPLAY AT(3,1):"REC:"
130 OPEN #2:"WDS1.FILE",RELATIVE,INTERNAL,INPUT,FIXED 108
140 ROF=299 :: FOR I=1 TO ROF
150 DISPLAY AT(4,1):STR$(I)
160 INPUT #2,REC I:A$(I,0),A$(I,1),A$(I,2),T$(I),S$(I),N$(I)
170 IF EOF(2) THEN CLOSE #2 :: GOTO 200
180 IF A$(I,0)="" THEN CLOSE #2 :: GOTO 200
190 NEXT I
200 PRINT "RECORDS LOADED:";I
210 END

There are about 180 records in FILE - it gets to 154 before the MEMORY FULL error shows up.  Typing SIZE after running it gives about 64 bytes of stack free, and almost all the 'program' memory free (i.e., 24k, minus this little program, of course ;)).


Edited by RobertLM78, Thu Jun 26, 2014 2:22 AM.


#5 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 2:33 AM

Actually, another question that came to mind - what about the larger video RAM of the EVPC?   Are programs designed for that setup the only way to make use of that extra memory?  (BTW, I should mention I'm running EVPC with SAMS in MESS).



#6 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 3:19 AM

I thought with XB, variables are stored in VDP RAM? So they don't encroach on the program in CPU RAM at all?

 

So my recollection was right, numeric variables do go get stored in 'program' memory.

100 CALL CLEAR
110 DIM A(300,3),B(300),C(300),D(300)
120 FOR I=1 TO 299
130 DISPLAY AT(3,1):STR$(I)
140 A(I,0)=I :: A(I,1)=I :: A(I,2)=I :: B(I)=I :: C(I)=I :: D(I)=I
150 NEXT I

Running SIZE  when this is finished gives about 7k program space left, while this time stack is essentially untouched (about 11k).



#7 Tursi OFFLINE  

Tursi

    Quadrunner

  • 5,290 posts
  • HarmlessLion
  • Location:BUR

Posted Thu Jun 26, 2014 2:20 PM

STACK is VDP memory, as far as I remember, and PROGRAM is high memory. The low 8k of memory expansion is reserved for assembly subprograms. That's in XB anyway.. you need to get Rich's attention to get a description of RXB (which I know has functions for AMS use!) As far as I know (which is not very), no XB dialects use the expanded video RAM of alternate video chips...?

#8 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 2:53 PM

Thanks Tursi!  As I was looking over the docs and some notes this morning I was wondering where VDP memory played in on the SIZE command.  So SIZE ignores the LOW memory - that would also explain why SIZE gives the amount of 11838 bytes (with nothing in memory), as opposed to something along the lines of 8192 bytes.


Edited by RobertLM78, Thu Jun 26, 2014 2:54 PM.


#9 jacquesg OFFLINE  

jacquesg

    Chopper Commander

  • 126 posts

Posted Thu Jun 26, 2014 3:34 PM

Hello again 99ers!  I've got some more noob questions to bring to the table :D.

What I'd like to do I make use of this new memory toy (1 Meg AMS) with a couple programs (R/XB) I've got on the burner, but, I don't know how to use it.  The AMS demo included with RXB appears to load screen dump files, but the two programs in the works use files of types
SEQUENTIAL,INTERNAL,FIXED 20
and
RELATIVE,INTERNAL,FIXED 108
so I'm not sure that the approach used in the Demo really applies, especially since I would like to be able to manipulate the data in AMS memory.  I would prefer (but perhaps may not be required for my purposes) to able to use arrays (and I mean big arrays :P) in conjunction with the AMS, if possible.

Well, I know I've asked a mouthful. But I think a good starting place would be to get my hands on a decent manual for the AMS card - I don't mind doing some reading :).  

Thanks for reading buddies!

 

Hello Robert,

 

Unless you have been there already, there is a lot of SAMS information in the FILES part of the SWPB section of Yahoo Groups. My SAMS card came with 3 dsk files containing mainly the SAMS manual written by Art Green. The three files which I subsequently uploaded are:

 

_sw99ams1.dsk

_sw99ams2.dsk

_sw99ams3.dsk

 

The  Yahoo Group contains both a SWPB and a swpb section. The above files are in SWPB and include programs that can run from a SAMS card. A game named TI-Nopoly written jn a SAMS adaption of c99 is also included but unfortunately is without source code.  I have these programs running on my real TI and on my MESS emulation. 

.

Art Green writes excellent manuals so you may have filled up your reading schedule for the rest of the summer. ;-)  RXB approach to deal with the contents of a SAMS memory card differs from Art's approach. Each has its purpose.

 

Regards,

 

Jacques



#10 RXB OFFLINE  

RXB

    River Patroller

  • 3,320 posts
  • Location:Vancouver, Washington, USA

Posted Thu Jun 26, 2014 3:43 PM

STACK is VDP memory, as far as I remember, and PROGRAM is high memory. The low 8k of memory expansion is reserved for assembly subprograms. That's in XB anyway.. you need to get Rich's attention to get a description of RXB (which I know has functions for AMS use!) As far as I know (which is not very), no XB dialects use the expanded video RAM of alternate video chips...?

Thanks for the plug Tursi.

RXB uses SAMS by putting 2 4K pages in Lower 8K 

 

>2000 and >3000 in Hex of the Lower 8K with a RXB command CALL AMSBANK(1,2) 

You can have up to 240 pages of 4K pages thus 960K used for Lower 8K Assembly Support.

 

I even have a RXB Built in Lower 8K loader that is much faster CALL LOAD("DSK#.XBASSM)

Here is a Demo of what you can do:



#11 RXB OFFLINE  

RXB

    River Patroller

  • 3,320 posts
  • Location:Vancouver, Washington, USA

Posted Thu Jun 26, 2014 3:46 PM

Here is the very last page of RXB documents:

PAGE AMS1
                              AMS MAPPER
     ******************************************************************
        The AMS 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 AMS2
     
     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 = >19 = 31 points to >2000 - >2FFF range
     >4006 = 16390 is MR03 = >01 = 01 points to >3000 - >3FFF range
 
     >4014 = 16404 is MR10 = >09 = 09 points to >A000 - >AFFF range
     >4016 = 16406 is MR11 = >00 = 00 points to >B000 - >BFFF range
     >4018 = 16408 is MR12 = >07 = 07 points to >C000 - >CFFF range
     >401A = 16410 is MR13 = >18 = 30 points to >D000 - >DFFF range
     >401C = 16412 is MR14 = >05 = 05 points to >E000 - >EFFF range
     >401E = 16414 is MR15 = >04 = 04 points to >F000 - >FFFF range
 
     (MR=Mapper Register)
                                                                
       As you can see you can switch pages around all you want.
 
       Each 4K page of the AMS memory can be engaged even into every
      4K section of the 32K at once. Thus giving multiple copies of
      the same 4K in every 4K chunk. Doing this has few uses but
      it demonstrates the flexibility of the AMS mapper.
 
       RXB limits the ability of the AMS slightly. All the memory of
      the AMS is used like this:
 
      1. 32K is used for pass mode. Think of it like a normal TI.
         24K for XB programs and variables, and lower 8K assembly
         support.
 
      2. 32K is used for future use. Stashed away for RXB future use.
         Pages 0,1,4,5,6,7,8,9 are for future use.         
 
      3. 4K pages of the rest of the AMS are for AMSBANK, a RXB
         routine that needs two (2) 4K pages of the AMS for the
         lower 8K of Assembly support. Pages 16 to 255 AMSBANK.
 
      4. If a 256K AMS is used by RXB then 32K PASS mode, 32K future
         use, and the rest for AMSBANK. So 32+32=64 and 256-64=192
         then 192K of AMS 4K pages would be 192/4=48 or 48 pages of
         AMSBANK. Now the lower 8K needs two 4K pages because of
         course 8/4=2 so 48/2=24 and that means 24  8K assembly
         support routines from one XB program.
 
      




                                                           PAGE AMS3

       5. BSAVE and BLOAD in RXB are subroutines to save or load the
          lower 8K as Program Image files. 33 sectors in length they
          are only used by BSAVE or BLOAD. The reasons for BSAVE is
          to save the lower 8K in one easy to load chunk. ALSAVE
          that creates hidden loaders has one huge disadvantage.
          ALSAVE can only save one assembly support program at a
          time. Also it can't load more than one support routine and
          XB program to run it. BLOAD can load many support routines
          into the AMS and control them from one XB program.
          BLOAD and BSAVE can do what ALSAVE can't. Also up to 1Meg
          can be loaded into the AMS from one XB program and the
          same program run the assembly support routines.
 
       6. ISR (Interrupt Service Routine) hooks are used by many XB
          programs so CALL ISROFF and CALL ISRON are for RXB to
          control the problems created by them. Also compatibility
          between software packages is ensured.

       7. AMSBANK is the primary way RXB manages memory. 
          pages 16 to 255 are numbers in AMSBANK as 0 to 240 so
          pages 2,3,10,11,12,13,14,15 are for pass mode and
          pages 0,1,4,5,6,7,8,9 are unused for future use.
          Thus 240*4=960K of AMS is in AMSBANK.


#12 RXB OFFLINE  

RXB

    River Patroller

  • 3,320 posts
  • Location:Vancouver, Washington, USA

Posted Thu Jun 26, 2014 3:57 PM

 

Hello Robert,

 

Unless you have been there already, there is a lot of SAMS information in the FILES part of the SWPB section of Yahoo Groups. My SAMS card came with 3 dsk files containing mainly the SAMS manual written by Art Green. The three files which I subsequently uploaded are:

 

_sw99ams1.dsk

_sw99ams2.dsk

_sw99ams3.dsk

 

The  Yahoo Group contains both a SWPB and a swpb section. The above files are in SWPB and include programs that can run from a SAMS card. A game named TI-Nopoly written jn a SAMS adaption of c99 is also included but unfortunately is without source code.  I have these programs running on my real TI and on my MESS emulation. 

.

Art Green writes excellent manuals so you may have filled up your reading schedule for the rest of the summer. ;-)  RXB approach to deal with the contents of a SAMS memory card differs from Art's approach. Each has its purpose.

 

Regards,

 

Jacques

This is a RXB version of the original AMS disk that came with the 128K AMS card modified to use RXB commands instead of Assembly.

It works with any size AMS or SAMS and uses no Assembly at all.

10 ! THIS PROGRAM HAS BEEN
11 ! MODIFIED SO NO ASSEMBLY
12 ! IS USED. RXB COMMANDS
13 ! ARE THE ONLY COMMANDS
14 ! USED. THAT MEANS THE
15 ! AMS CAN HAVE ANY PAGE
16 ! SWAPED FROM RXB.
17 !*********************
18 !*                   *
19 !*    XB AMS CARD    *
20 !*   QUERY PROGRAM   *
21 !*                   *
22 !*********************
23 !VERSION 1.07.951206
24 !BY P. E. SCHIPPNICK
25 !MODIFIED FOR RXB
26 !BY RICH GILBERTSON
27 CALL CLEAR :: GOSUB 28 :: GOTO 29
28 CALL VCHAR(1,31,31,96) :: RETURN
29 FOR I=1 TO 14 :: CALL COLOR(I,2,8) :: NEXT I
30 CALL SCREEN(15)
31 GOTO 33
32 DISPLAY AT(ROW,(28-LEN(TEXT$))/2):TEXT$ :: RETURN
33 ROW=10 :: TEXT$="TI EXTENDED BASIC" :: GOSUB 32
34 ROW=11 :: TEXT$="AMS CARD" :: GOSUB 32
35 ROW=12 :: TEXT$="QUERY PROGRAM" :: GOSUB 32
36 ROW=13 :: TEXT$="VERSION 1.07" :: GOSUB 32
37 ROW=15 :: TEXT$="BY P. E. SCHIPPNICK" :: GOSUB 32
38 ROW=17 :: TEXT$="MODIFIED FOR RXB" :: GOSUB 32
39 ! SET-UP ASSEM SUPPORT
40 GOSUB 109
41 ! TEST MAP/PASS
42 GOSUB 112
43 ! TEST FOR AMS SIZE
44 GOSUB 91
45 ! MAPPED PAGES
46 GOSUB 60
47 IF M2=M3 THEN CALL CLEAR :: GOSUB 28 :: PRINT:"* NO AMS CARD" :: CALL SOUND(150,219,5) :: END
48 CALL CLEAR :: GOSUB 28
49 ROW=1 :: TEXT$=" *** AMS QUERY PROGRAM ***" :: GOSUB 32 :: ROW=2 :: TEXT$="VERSION 1.07" :: GOSUB 32
50 AMSSIZE$=STR$(AMSSIZE)&"K RAM"
51 ROW=8 :: TEXT$=" AMS MEMORY = "&AMSSIZE$ :: GOSUB 32
52 IF MAPON=0 THEN ROW=12 :: TEXT$=" AMS CARD 32K PASS MODE" :: GOSUB 32 :: GOTO 59
53 ROW=9 :: TEXT$=" AMS IN MAPPED MEMORY MODE" :: GOSUB 32
54 ROW=12 :: TEXT$="PAGES 8K MEMORY:" :: GOSUB 32
55 ROW=13 :: TEXT$=STR$(M2+O*(M2>=O))&" "&STR$(M3+O*(M3>=O)) :: GOSUB 32
56 ROW=15 :: TEXT$="PAGES 24K MEMORY:" :: GOSUB 32
57 ROW=16 :: TEXT$=STR$(MA+O*(MA>=O))&" "&STR$(MB+O*(MB>=O))&" "&STR$(MC+O*(MC>=O))&" "&STR$(MD+O*(MD>=O))&" "&STR$(ME+O*(ME>=O))&" "&STR$(MF+O*(MF>=O)) :: GOSUB 32
58 ROW=18 :: TEXT$="1-"&STR$(AMSSIZE/4)&" PAGES AVAILBLE." :: GOSUB 32
59 END
60 ! MAPPED AT 23ABCDEF
61 CALL AMSON
62 CALL PEEK(24548,M2) :: CALL PEEK(24550,M3) :: CALL PEEK(24564,MA) :: CALL PEEK(24566,MB) :: CALL PEEK(24568,MC) :: CALL PEEK(24570,MD) :: CALL PEEK(24572,ME)
63 CALL PEEK(24574,MF)
64 CALL AMSOFF
65 RETURN
66 ! MAP 2,3,A,B,C,D,E,F
67 CALL AMSON
68 CALL LOAD(24548,2) :: CALL LOAD(24550,3) :: CALL LOAD(24564,10) :: CALL LOAD(24566,11) :: CALL LOAD(24568,12) :: CALL LOAD(24570,13) :: CALL LOAD(24572,14)
69 CALL LOAD(24574,15)
70 CALL AMSOFF
71 RETURN
72 ! MAP 23 ABCDEF
73 GOSUB 66
74 CALL AMSMAP
75 RETURN
76 ! MAP 23 ABCDEF
77 GOSUB 66
78 CALL AMSPASS
79 RETURN
80 ! MAP MODE ON/OFF
81 CALL AMSON :: CALL PEEK(-31804,H1,H2) :: IF H1+H2 THEN CALL ISROFF(ADDRESS)
82 CALL PEEK(24548,M2) :: CALL PEEK(24550,M3) :: CALL LOAD(24550,M2) :: CALL PEEK(8198,A1,B1) :: CALL PEEK(12294,A2,B2)
83 IF A1=A2 AND B1=B2 THEN MAPON=1 ELSE MAPON=0
84 CALL LOAD(24550,M3)
85 IF H1+H2 THEN CALL ISRON(ADDRESS)
86 CALL AMSOFF
87 RETURN
88 CALL PEEK(12288,OLDV) :: NEWV=255-OLDV :: CALL LOAD(12288,NEWV) :: CALL PEEK(12288,TESTV) :: IF TESTV<>OLDV AND TESTV=NEWV THEN MEM=1 ELSE MEM=0
89 IF MEM=1 THEN CALL LOAD(12288,OLDV)
90 RETURN
91 ! FIND AMS SIZE
92 GOSUB 80 :: IF MAPON=0 THEN GOSUB 72
93 CALL PEEK(-31804,H1,H2) :: IF H1+H2 THEN CALL ISROFF(ADDRESS)
94 ! MAP LOWER PAGES 23
95 CALL AMSON :: CALL PEEK(24548,M2) :: CALL PEEK(24550,M3)
96 CALL LOAD(24548,2,"",24550,3) :: GOSUB 109
97 CALL PEEK(8194,MB1,LB1,MB2,LB2) :: CALL LOAD(8194,MB2,LB2,MB1,LB1)
98 ! 1024K/4=240 PAGES
99 E=256 :: CALL PEEK(24550,M3)
100 CALL LOAD(24550,2+E) :: CALL PEEK(12290,A,B,C,D) :: IF A=MB2 AND B=LB2 AND C=MB1 AND D=LB1 THEN AMSSIZE=E*4 :: GOTO 104
101 GOSUB 88 :: IF MEM=0 THEN AMSSIZE=E*4 :: GOTO 104
102 E=E+32 :: IF E<255 THEN 100
103 AMSSIZE=E*4
104 CALL LOAD(24550,2) :: CALL LOAD(8194,MB1,LB1,MB2,LB2) :: CALL LOAD(24548,M2,"",24550,M3)
105 IF MAPON=0 THEN CALL AMSPASS
106 IF H1+H2 THEN CALL ISRON(ADDRESS)
107 CALL AMSOFF
108 RETURN
109 ! EXPANSION MEMORY?
110 CALL PEEK(-31863,A) :: IF A<>231 THEN CALL SOUND(150,218,0) :: PRINT "* NO EXPANSION MEMORY" :: STOP
111 RETURN
112 ! TEST MAP/PASS MODE?
113 CALL AMSON :: CALL PEEK(24544,M0) :: CALL LOAD(24544,0) :: CALL PEEK(24544,O) :: CALL LOAD(24544,M0) :: CALL AMSOFF :: RETURN
114 END


#13 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 6:17 PM

 

Hello Robert,

 

Unless you have been there already, there is a lot of SAMS information in the FILES part of the SWPB section of Yahoo Groups. My SAMS card came with 3 dsk files containing mainly the SAMS manual written by Art Green. The three files which I subsequently uploaded are:

 

_sw99ams1.dsk

_sw99ams2.dsk

_sw99ams3.dsk

 

The  Yahoo Group contains both a SWPB and a swpb section. The above files are in SWPB and include programs that can run from a SAMS card. A game named TI-Nopoly written jn a SAMS adaption of c99 is also included but unfortunately is without source code.  I have these programs running on my real TI and on my MESS emulation. 

.

Art Green writes excellent manuals so you may have filled up your reading schedule for the rest of the summer. ;-)  RXB approach to deal with the contents of a SAMS memory card differs from Art's approach. Each has its purpose.

 

Regards,

 

Jacques

Heya Jacques, indeed, I found those disks late last night - that documentation is a little buried.  I was expecting the docs to have been converted to pdf by this point ;).  Having glanced through the disks, I would have to agree, the documentation is quite thorough.  It looks like it's all assembly support, so RXB will probably be the most direct approach.

 

 

Rich - thanks for chiming in buddy! :D  So, am I understanding you correctly then that RXB SAMS support is assembly program files only, or can one use it for variable space?  If variables can be used, how might I adapt my program above to start passing the stack into pages of AMS memory?  I've figured I'd need 9  4K pages to load all the data this program needs, the problem is, I just don't know what I'm doing, or if it's even possible.



#14 jacquesg OFFLINE  

jacquesg

    Chopper Commander

  • 126 posts

Posted Thu Jun 26, 2014 8:34 PM

I think the point that Rich was making is that RXB uses SAMS memory without using assembly. He is correct considering that RXB commands resemble an Extended Basic program by the use of line numbers with its command statements. However, I wonder if we are getting into a question of semantics with the extensive use of CALL LOAD and CALL PEEK statements in the Query Program example. 

 

It has been a few years since I last used either SAMS or RXB. These are now on my 'To Do' list as I slowly work my way back into using my real iron TI-99/4A and its MESS emulator.

 

In considering Robert's FILES question, you must remember that the SAMS memory card loses its contents when the computer is turned off. Perhaps this is why I have never seen a SAMS program that retains contents when turned off. Art Green's Menu Loader program allowed you to place a number of .assembly programs in SAMS memory and they could be instantly accessed as long as the TI was still on. There is also a SAMS program that played XB music programs temporarily loaded on a SAMS card.

 

Robert, you should be able to place your arrays on the SAMS card while you update them but you will have to save their content to external storage before shutting down your TI or emulator. Of course, your arrays could be put on HRD or even on hard disks. Mess can handle pretty large ram or hard disks and these do not lose contents when MESS is turned off.

 

Just some thoughts to consider,

 

Jacques

 

.



#15 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Thu Jun 26, 2014 9:13 PM

Robert, you should be able to place your arrays on the SAMS card while you update them but you will have to save their content to external storage before shutting down your TI or emulator. Of course, your arrays could be put on HRD or even on hard disks. Mess can handle pretty large ram or hard disks and these do not lose contents when MESS is turned off.

 

Just some thoughts to consider,

 

Jacques

Hi Jacques - you're reading my mind bud.  Loading the arrays from disk, updating them, and then saving them back to hard disk is exactly what I have in mind, so I don't mind if the data is lost after shutting down ;).  That said, I've not played with any kind of RAMdisk on MESS yet, but if one can be reasonably accessed through BASIC for use with the program, I'd sure give the device consideration.   I have a version a program that keeps all this data on the disk, even when updating, but I'd like to speed up its performance by making use of the whopping memory offered by SAMS, as well as adding some features - a new program using SAMS might even make for a good demonstration, in the end :).


Edited by RobertLM78, Thu Jun 26, 2014 9:14 PM.


#16 jacquesg OFFLINE  

jacquesg

    Chopper Commander

  • 126 posts

Posted Fri Jun 27, 2014 6:54 AM

Robert,

 

As you know I set up MESS using QM2C. If it is of any help to you I have listed the slot settings that I have used for a basic TI-99/4A configuration with 4 RML choices and one with changes to support HSGPL.

                             FWB                               HSGPL             EVPC HSGPL

grom port          multi                                   none                   not used

joy port              twin joy                               twin joy               twin joy       

peb: slot 2         samsmem                           samsmem          evpc

        slot 3          horizon                               horizon               horizon

        slot 4          tirs232                                tirs232                samsmem

        slot 5          not used                             hsgpl                  hsgpl

        slot 6          speech                               speech               tirs232

        slot 7          not used                             not used             not used

 

Until I looked this morning I could have sworn that slot 7 contained hfdc. I will have to look into this because the MESS configuration seems to run without hfdc. Over the last week or so I have been reorganizing things on my real TI-99/4a.

 

 

Bye for now,

 

Jacques

.


Edited by jacquesg, Fri Jun 27, 2014 1:11 PM.


#17 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 11:45 AM

Bonjour Jacques.  This question is slightly off-topic, but, the HSPGL needs to have a machine with no grom port?  (I've tried to get it to work before and had trouble, so I suspect that might be the reason). 

 

Here's my slot setup:

ti99_4ev:

-peb:slot3 speech

-peb:slot4 samsmem

-peb:slot5 pcode

-peb:slot6 tirs232

-peb:slot8 hfdc

 

The SAMS is definitely working where it is, as I've ran Rich's AMSLDRDEMO, as well as checked its availability with SIZE.  I just don't know how to load variables there, but I think I might know where to start trying - I have a hunch VDP memory map (Stack) and the RXB commands MOVES and AMSBANK are going to be key (if, of course, loading variables into SAMS is possible at all).


Edited by RobertLM78, Fri Jun 27, 2014 1:07 PM.


#18 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 12:10 PM

Is XBASIC stack (11838 bytes) somewhere in the >0800 to >37D7 (about 12k bytes) range of VDP RAM?



#19 Gazoo OFFLINE  

Gazoo

    Stargunner

  • 1,507 posts
  • Location:Downingtown, PA

Posted Fri Jun 27, 2014 1:09 PM

Bonjour Jacques.  This question is slightly off-topic, but, the HSPGL needs to have a machine with no grom port?  (I've tried to get it to work before and had trouble, so I suspect that might be the reason). 

 

 

Yes, plugging in a cartridge disables the HSGPL, just like with a real TI.

 

Gazoo



#20 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 1:12 PM

 

Yes, plugging in a cartridge disables the HSGPL, just like with a real TI.

 

Gazoo

Thanks Gazoo - I don't have an HSGPL for the real iron ;).  I've wanted to check out all the available hardware for the TI in MESS.

 

(BTW, the specs to my real iron setup are in my signature :)).


Edited by RobertLM78, Fri Jun 27, 2014 1:13 PM.


#21 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 1:25 PM

I've been POKEVing addresses >0800 to >37D7 after running the program that loads the data file, it's hard to say if that's where my arrays are located.  The first field of the first record (A$(1,0)) has the name 'ADAMS' in it, I found a 65 and 68 close to the beginning for the POKEV routine, but it didn't have another 65 following the 68 (although the RXB manual says something about offset of 96 - but that would give -96 for the first 20 bytes or so, which are currently all zeros).



#22 jacquesg OFFLINE  

jacquesg

    Chopper Commander

  • 126 posts

Posted Fri Jun 27, 2014 1:26 PM

Bonjour Jacques.  This question is slightly off-topic, but, the HSPGL needs to have a machine with no grom port?  (I've tried to get it to work before and had trouble, so I suspect that might be the reason). 

 

Here's my slot setup:

ti99_4ev:

-peb:slot3 speech

-peb:slot4 samsmem

-peb:slot5 pcode

-peb:slot6 tirs232

-peb:slot8 hfdc

 

The SAMS is definitely working where it is, as I've ran Rich's AMSLDRDEMO, as well as checked its availability with SIZE.  I just don't know how to load variables there, but I think I might know where to start trying - I have a hunch VDP memory map (Stack) and the RXB commands MOVES and AMSBANK are going to be key (if, of course, loading variables into SAMS is possible at all).

 

 

I edited my previous message to show the slot settings for my MESS EVPC HSGPL set up.

 

QM2C numbers slots from 0 to 7. I seem to remember Michael saying that evpc had to be in slot 2. Is that what you have?

 

I also do not know how to load variables in a SAMS card. When I last programmed with the SAMS card I used the supplied c99 program. It has been a number of years since I last programmed using c99 and in particular the version for use with the SAMS card.

 

Regards,

 

Jacques



#23 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 1:37 PM

I edited my previous message to show the slot settings for my MESS EVPC HSGPL set up.
 
QM2C numbers slots from 0 to 7. I seem to remember Michael saying that evpc had to be in slot 2. Is that what you have?

 Absolutely - I have the EVPC running with all the mentioned slot devices (I had just copied the line from my start script, which only requires slot2 to be free ;))
 

I also do not know how to load variables in a SAMS card. When I last programmed with the SAMS card I used the supplied c99 program. It has been a number of years since I last programmed using c99 and in particular the version for use with the SAMS card.
 
Regards,
 
Jacques

C99 is a C compiler isn't it? I don't know much C yet. I think using RXB and loading the variables into SAMS is the way I'd like to go, if possible. It would probably make for a good example too, as I mentioned earlier, since the examples in the RXB manual don't do anything with variables.

Edited by RobertLM78, Fri Jun 27, 2014 1:37 PM.


#24 Lee Stewart ONLINE  

Lee Stewart

    River Patroller

  • 3,763 posts
  • Location:Silver Run, Maryland

Posted Fri Jun 27, 2014 1:39 PM

Is XBASIC stack (11838 bytes) somewhere in the >0800 to >37D7 (about 12k bytes) range of VDP RAM?

 

Here's what Thierry Nouspikel says:  VDP RAM in XB

 

...lee



#25 RobertLM78 OFFLINE  

RobertLM78

    Stargunner

  • Topic Starter
  • 1,055 posts

Posted Fri Jun 27, 2014 1:51 PM

So would this be the place (bold and italics)?

>0000 +-------------------------+ <--- VR2=00, VR4=00, VR6=00
| Screen image table |
| Also char + sprite |
| (not used) patterns |
>0300 +-------------------------+ <--- VR5=06
| Sprite attributes table |
>0370 +-------------------------+
| XB system area |
>03F0 +-------------------------+
| Char patterns >2E-8F |
| Also sprite patterns |
>0780 +-------------------------+
| Sprite motion table |
>0800 +-------------------------+ <--- VR3=20
| Color table |
>0820 +-------------------------+
| Crunch buffer |
>08C0 +-------------------------+
| Edit/recall buffer |
>0958 +-------------------------+ <--- VR4=01
| Value stack | <--- @>8324
| | <--- @>836E
| PAB list | <--- @>833C
| |
| String space | <--- @>831A
| | <--- @>8318

| Symbol table | <--- @>833E (if no mem exp)
| |
| Line number table | <--- @>8330 (if no mem exp)
| | <--- @>8332
| Statement list |
>37D8 +-------------------------+ <--- @>8370
| File buffers (3 files) |
>3FFF +-------------------------+ VR0=0, VR1=E0, VR7=07

What's up with those addresses - aren't they out of range (831A and 8318)?  (Sorry for my naiveté :P). 
 
Now, I would imagine variables names have to be kept somewhere, too, and would have to 'come along for the ride' when moving between pages of SAMS and stack(?).  This also makes me wonder if I would need separately named arrays for each page of SAMS, or if one name may be used for all pages...

Edited by RobertLM78, Fri Jun 27, 2014 1:52 PM.






Also tagged with one or more of these keywords: SAMS, SuperAMS, stack

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users