Jump to content
Bones-69

RXB - Rich Extended Basic

Recommended Posts

One other general note: you can't use the SAMS cards in a Geneve, so there are no byte reversal issues--you only have to make sure it works in a 99/4A.

 

On SAMS memory, my original post covers how it works--no matter how big (or small) the SAMS card is. The key to wrapping your mind around memory use is all in the bytes.

 

The first byte written is IGNORED by SAMS cards up to 1M in size, as they don't use the four high-order bits being written to. Even though they are ignored, SOMETHING has to be written there, as it is used to populate the top four bits of the bank registers. The 74LS612 then takes the second byte and uses it to set up the 8 low-order register bits. Some of these bits may also be ignored by the SAMS card, specifically when the card is smaller than 1M. A 256K SAMS card ignores the two highest-order bits in the second byte, a 128K AEMS card ignores the three highest-order bits in the second byte, and the earliest, 64K AEMS boards (these do exist, as I have actually seen/held one BITD) would ignore the four highest-order bits of the second byte. 

 

This behavior changes a bit with 4M and larger SAMS cards, as that first, high-order byte now has meaning to the entire card (and not just the 74LS612). The last two bits of the first btye select between four different 1M zones (with further subdivision within each 1M zone being controlled by the 8 bits of the low-order byte) on a 4M card. On a 16M card, all four of the high-order bits of relevance to the 74LS612 are used to select between 16 different 1M zones, again, with the low-order byte controlling paging within the currently visible 1M zone. The bits in the high-order byte set the 1M zone, and the bits in the low-order byte select the pages within that zone.

 

If you have been following that convention, I don't think you'll need to do a rewrite, Rich.

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

It only took me 6 months to understand SAMS...not bad..whihooo. I'm on a roll...

Oops, just got passed by another turtle....

I think someone has a geneve booting from tipi though, but yeah, cannot use SAMs ram. So bad...I hope someone takes care of that issue.

  • Like 3

Share this post


Link to post
Share on other sites

RXB 2020 C DONE!

Just fixing things I forgot to put in package like this:

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 SAMS("ON")
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 SAMS("OFF")
65 RETURN
66 ! MAP 2,3,A,B,C,D,E,F
67 CALL SAMS("ON")
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 SAMS("OFF")
71 RETURN
72 ! MAP 23 ABCDEF
73 GOSUB 66
74 CALL SAMS("MAP")
75 RETURN
76 ! MAP 23 ABCDEF
77 GOSUB 66
78 CALL SAMS("PASS")
79 RETURN
80 ! MAP MODE ON/OFF
81 CALL SAMS("ON") :: 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 SAMS("OFF")
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 SAMS("ON") :: 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+16 PAGES or 4096K/4=1008+16 PAGES or     65536K/4=16384 PAGES 
99 E=16384 :: 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<16384 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 SAMS("PASS")
106 IF H1+H2 THEN CALL ISRON(ADDRESS)
107 CALL SAMS("OFF")
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 SAMS("ON") :: CALL PEEK(24544,M0) :: CALL LOAD(24544,0) :: CALL PEEK(24544,O) :: CALL LOAD(24544,M0) :: CALL SAMS("OFF") :: RETURN
114 END

This RXB 2020C SAMS test works on any AMS or SAMS card and handles up to 32Meg SAMS size.

Works on a 32K AMS or 1Meg AMS or 1Meg SAMS or even Classic99 32Meg SAMS.

  • Like 6

Share this post


Link to post
Share on other sites

Update fixed the issue with SAMS now working with SIZE command and works great now.

 

Currently found that REA 2020 (Editor Assembly) does not catalog TIPI. correctly so working on why?

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
On 1/24/2021 at 1:16 AM, HOME AUTOMATION said:

I just love :lust: Frosty balls!

We get those here in Canada. You can fix 'em with a hair dryer.  🤣

Share this post


Link to post
Share on other sites
11 minutes ago, atrax27407 said:

FYI, I have RXB2020C up and running from the HSGPL Card in MAME. So far, it is doing great!

Great. Can you point me to the files that I need for this ?

I want to try in the SNUG machine

 

  • Like 1

Share this post


Link to post
Share on other sites

Well the dream is dead.....sad!

Worked on making a ENDLESS XB program possible.

 

 

Share this post


Link to post
Share on other sites

You would have to control the pointer that moves the table? Or is it just not going that way.

Edited by GDMike

Share this post


Link to post
Share on other sites
1 hour ago, GDMike said:

You would have to control the pointer that moves the table? Or is it just not going that way.

It would have worked if the address of lines would remain the same, but add a variable or change a line length or do  garbage collection....

All things that just mess up any predictions or sense of sameness for next block to replace last block.

  • Like 1

Share this post


Link to post
Share on other sites

Rich,

 

I'm going to say I rarely do anything in Extended Basic, or even ABASIC on the Geneve so what I am saying, outside of a couple of times on the FinalGrom, I haven't used RXB and this isn't a request from me.

 

I was going through some of the issues of 9640 News yesterday, and I came across the XHI source code for utilities that could be used in Extended Basic.  Basically, it gave Graphics Mode 6 capability to Extended Basic.  Granted, it was for a 9938 video processor.  I'm not sure what all the F18 and MK2 potential is, but if you wanted to incorporate some of that functionality into RXB, go for it.  I know you like GPL, so what I was thinking was even though the source is assembly, it had the flow which may assist in any GPL coding.  I noticed there was even code to load MyArt images within Extended Basic.

 

PC99 users I think can use your RXB, and what I could tell with Classic 99, it has only 80 column text mode capability. Not sure  how many EVPC users are out there or when CADD will release their 9938 card.

 

I don't know where the next generation F18MK2 is going to know if it will have full graphics (9938) capability or not.

 

Anyways, just wanted to point it out to you if you were wondering where you might go next with RXB.

 

  • Like 3

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