+Ksarul Posted January 23, 2021 Share Posted January 23, 2021 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. 5 1 Quote Link to comment Share on other sites More sharing options...
GDMike Posted January 23, 2021 Share Posted January 23, 2021 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. 3 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted January 24, 2021 Share Posted January 24, 2021 12 hours ago, RXB said: This is what frosts my balls. I just love Frosty balls! Spoiler ...Butt only at X-mas time! Quote Link to comment Share on other sites More sharing options...
RXB Posted February 6, 2021 Share Posted February 6, 2021 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. 6 Quote Link to comment Share on other sites More sharing options...
RXB Posted February 10, 2021 Share Posted February 10, 2021 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? 1 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted February 10, 2021 Share Posted February 10, 2021 On 1/24/2021 at 1:16 AM, HOME AUTOMATION said: I just love Frosty balls! We get those here in Canada. You can fix 'em with a hair dryer. ? Quote Link to comment Share on other sites More sharing options...
RXB Posted February 19, 2021 Share Posted February 19, 2021 RXB 2020 C DONE AND RELEASED! RXB 2020C.zip 6 4 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted February 19, 2021 Share Posted February 19, 2021 Thanks! 1 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted February 20, 2021 Share Posted February 20, 2021 FYI, I have RXB2020C up and running from the HSGPL Card in MAME. So far, it is doing great! 3 Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted February 20, 2021 Share Posted February 20, 2021 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 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted February 20, 2021 Share Posted February 20, 2021 UPDATE RXB 2020D RXB 202D.zip 6 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted February 21, 2021 Share Posted February 21, 2021 Feel better now Rich? Finally released? Beery 4 Quote Link to comment Share on other sites More sharing options...
RXB Posted February 22, 2021 Share Posted February 22, 2021 Well the dream is dead.....sad! Worked on making a ENDLESS XB program possible. Quote Link to comment Share on other sites More sharing options...
GDMike Posted February 23, 2021 Share Posted February 23, 2021 (edited) You would have to control the pointer that moves the table? Or is it just not going that way. Edited February 23, 2021 by GDMike Quote Link to comment Share on other sites More sharing options...
RXB Posted February 23, 2021 Share Posted February 23, 2021 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. 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted February 25, 2021 Share Posted February 25, 2021 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. 3 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted March 26, 2021 Share Posted March 26, 2021 Hi Rich, Time traveling back a few or more pages...? On 12/13/2018 at 3:38 PM, RXB said: Been looking over XB ROMs source code to see what modifications I can make in the future. Would like some help if possible on this project. On 12/18/2018 at 8:17 PM, RXB said: What is needed in XB ROMs is finding duplicate code and eliminating it or adding in better Assembly tricks then used by TI in XB ROMs. On 12/23/2018 at 4:20 PM, RXB said: There are 14 token that TI never used by the way. >80, >AB, >AC, >AD, >AE, >AF, >B9, >E2, >E3, >E4, >E5, >E6, >E7, >F2 Would be nice to add more tokens that work more like SEG$, INT, RND, POS, PI, and others. On 12/19/2018 at 12:51 PM, HOME AUTOMATION said: Abstract reasoning skills are high over here at HA. While reviewing commented source code, sometimes solutions just reach in... This has all finally started to coalesce in my mind somewhat... I have some new tricks/skills have improved a bit. I believe I'm finally making some progress, attempting to find ways to expand RXB... If you're still interested/no-one's beaten me to it... I have something to submit for review/testing. I can post here or PM. 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted March 27, 2021 Share Posted March 27, 2021 (edited) ** FAIR WARNING ** You are now entering into an area designated as: High degrees of CONJECTURE & ABSTRACTION ...Proceed at your own risk! 1. I've returned to only paging the upper 4k. 2. I've made the upper 4k, RAM. 3. I've made the GROM, GRAM. 4. I've patched some of the lower 4k code to another page(copy of 1st page), by transitioning through an intermediate page. Thus creating some free space on the first page, while also allowing for the sections of relocated code to perhaps be expanded somewhat within the intermediate page. I chose the initial code to patch out, so as to create some free space where a list of tokens are processed in immediate mode and during program execution, in hopes the token list can be expanded. This space could perhaps also be used for patches to yet another page for routines associated with the new tokens. I could use an example of a new routine, and a token to try to associate it with ...if you have. I think you mentioned having removed somethings in order to make room for others. The GRAM can be reloaded from RAM/ROM, by using trampoline code. This should allow you to add more GROM based software images, such as EXPLORER. Perhaps you can also make some of the extra RAM available to programmers... for loading graphics or blocks of data. Since I'm doing these experiments using the FinalGROM 99, and using RAM/4k paging, this doesn't seem to be directly compatible with other carts/emulators. But, I think the patching, new tokens, and code expansion can be adjusted for 8k, ROM pages. Since I've packed away my TIPI, and because my cassette input is out of order ...I haven't been able to test this out with more than a few lines of BASIC code. Perhaps you can run some better test programs to make sure my changes wont cause RXB to crash. Immediate mode should be tested more thoroughly as well. This is all quite preliminary... I haven't studied the GPL yet. I have some questions, hopefully you can illuminate. I have already spent the better part of a couple days on this, so I need to catch up on some neglected personal responsibilities. These experiments grew out from some of the work I'd been doing on the Tutankhamun cart issue, and also some realizations from 32k-expansion-question thread. I have been using a HEX EDITOR and OP-CODE scratch sheet, exclusively. So, there is no source code yet. Hopefully you can disassemble, and expand on my work! Though you've stated that you're not too experienced at assembly ...your commented code is seemingly insightful. Hopefully you will be able at some point to continue this by using an assembler and/or other tools. So far, I have only moved the main body from one section of code('LET' statement handler) I will need to go over it again to move it's entry point and/or the exit line and error trap. The error trap seems to eventually lead back to GPL. This is probably sometimes happening from the alternate first page, without my paging back first, so it seems that GPL is reverting back to page 1, or reentering ROM from a point that does. I'm guessing that the original XB module started up on PAGE 2, so it is switched back both initially and redundantly. If so, this should prove to be extremely convenient. Some other nearby routines(ON, GOSUB, RETURN...) also jump to this error trap address, so I may have to move them as well(if possible) in order to move that last line of code. Next, I will try to move the "Relational operators" routine. That should allow for the token list preceding it to be expanded on. That list doesn't seem to end with a delimiter, so I suppose there's a routine that scans the list, already knowing it's max. length. If so, that will need to be adjusted as well. ------------------------ So, I haven't added anything new here. Just chopped things up a bit. I'm hoping this wont cause any crashes! RXB PATCHED.rar P.S. ...Fingers crossed? Edited March 27, 2021 by HOME AUTOMATION 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted March 27, 2021 Share Posted March 27, 2021 Interesting can we add 4K upper RAM banks? I suppose I need to make another version of GROM that pages the upper 4K you turned into RAM. This would allow multiple 4K pages in upper what used to be ROM but is now RAM. That would allow us to use F18 features like XHI does with 9938 or 9958. I could add a RXB GROM list of routines like CALL LINK but rename it something using the new RAM routines for F18. Like CALL F18(graphics mode) This works great as currently in RXB 2020 you can move VDP STACK and Upper 24K locations now. 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted April 27, 2021 Share Posted April 27, 2021 Here is a list of what I found in XB ROMs and address Spoiler LIST OF XB XML TABELS IN EACH GROM AND ADDRESS IN XB ROM IN HEX A=XB ROM bank 1 B=XB ROM bank 2 If the name not the same in GROM as XB ROM the new name is listed. >6000 GROM * Equates for XMLs SYNCHK EQU >00 SYNCHK XML selector >6400 SEETWO EQU >03 SEETWO XML selector >6EF0 COMPCT EQU >70 PREFORM A GARBAGE COLLECTION >73D8 A MEMCHK EQU >72 MEMORY check routine: VDP >72D8 A PARSE EQU >74 Parse a value >6480 VPUSH EQU >77 Push on value stack >6BAA VPOP EQU >78 Pop off value stack >6C2A PGMCHR EQU >79 GET PROGRAM CHARACTER >6C74 SYM EQU >7A Find Symbol entry >6312 SMB EQU >7B Find Symbol table entry >61DC SCHSYM EQU >7D Search symbol table >618C FBSYMB SPEED EQU >7E SPEED UP XML >6EE2 CRUNCH EQU >7F Crunch an input line >7B88 B CONTIN EQU >81 Continue after a break >65CC SCROLL EQU >83 SCROLL THE SCREEN >7ADA A IO EQU >84 IO utility (KW table search) >7B48 A GREAD EQU >85 READ DATA FROM ERAM >7EB4 A GWRITE EQU >86 WRITE DATA TO ERAM >7ED8 A DELREP EQU >87 REMOVE CONTENT FROM VDP/ERAM >7EF4 A MVDN EQU >88 MOVE DATA IN >7F7E A >8000 GROM * Equates for XMLs SYNCHK EQU >00 SYNCHK XML selector >6400 FILSPC EQU >01 Fill-space utility >7BAA A CSTRIN EQU >02 Copy-string utility >7B72 A SEETWO EQU >03 SEETWO XML selector >6EF0 COMPCT EQU >70 PREFORM A GARBAGE COLLECTION >73D8 A GETSTR EQU >71 SYSTEM GET STRING >736C A MEMCHK EQU >72 MEMORY check routine: VDP >72D8 A XCNS EQU >73 Convert number to string >7016 B * Warning Default changed in >0073 PARSE EQU >74 Parse a value >6480 CONT EQU >75 Continue parsing >64C8 VPUSH EQU >77 Push on value stack >6BAA VPOP EQU >78 Pop off value stack >6C2A PGMCHR EQU >79 GET PROGRAM CHARACTER >6C74 SYM EQU >7A Find SYMBOL entry >6312 SMB EQU >7B Also for ARRAYS >61DC ASSGNV EQU >7C Assign VARIABLE >61AE SCHSYM EQU >7D Search symbol table >618C FBSYMB SPEED EQU >7E SPEED UP XML >6EE2 CRUNCH EQU >7F Crunch an input line >7B88 B CIF EQU >80 Convert INTEGER to FLOATING P >74AA A CONTIN EQU >81 Continue after a break >65CC SCROLL EQU >83 SCROLL THE SCREEN >7ADA A IO EQU >84 IO utility (KW table search) >7B48 A GREAD EQU >85 READ DATA FROM ERAM >7EB4 A GWRITE EQU >86 WRITE DATA TO ERAM >7ED8 A DELREP EQU >87 REMOVE CONTENT FROM VDP/ERAM >7EF4 A MVDN EQU >88 MOVE DATA IN VDP/ERAM >7F7E A MVUP EQU >89 MOVE DATA IN VDP/ERAM >6F98 VGWITE EQU >8A MOVE DATA FROM VDP TO ERAM >7FC0 A GVWITE EQU >8B WRITE DATA FROM GRAM TO VRAM >7FDA A GREAD1 EQU >8C READ DATA FROM ERAM >7EA6 A GDTECT EQU >8E ERAM DETECT&ROM PAGE 1 ENABLE >6050 SCNSMT EQU >8F SCAN STATEMENT FOR PRESCAN >7C56 A PSCAN >A000 GROM * Equates for XMLs SYNCHK EQU >00 SYNCHK XML selector >6400 PARCOM EQU >01 PARse to a COMma selector >7BAA A RANGE EQU >02 RANGE selector >7B72 A * FADD EQU >06 Floating ADD *RXB RND* FMUL EQU >08 Floating MULtiply FDIV EQU >09 Floating DIVide FCOMP EQU >0A Floating COMPare * SADD EQU >0B Stack ADD *RXB RND* SSUB EQU >0C Stack SUBtract CSNUM EQU >10 Convert String to Number CFI EQU >12 Convert to two byte integer FLTINT EQU >12 Convert floating to integer GETSTR EQU >71 SYSTEM GET STRING >736C A XCNS EQU >73 Convert number to string >7016 B * Warning Defualt changfd in >0079 PARSE EQU >74 Parse a value >6480 CONT EQU >75 Continue parsing >64C8 EXECG EQU >76 Execute a XB stmt or program >6500 VPUSH EQU >77 Push on value stack >6BAA VPOP EQU >78 Pop off value stack >6C2A PGMCHR EQU >79 GET PROGRAM CHARACTER >6C74 SYM EQU >7A Find SYMBOL entry >6312 SMB EQU >7B Find symbol table entry >61DC ASSGNV EQU >7C Assign VARIABLE >61AE SPEED EQU >7E SPEED UP XML >6EE2 CIF EQU >80 Convert INTEGER to FLOATING P >74AA A RTNB EQU >82 Return >6630 RTNG SCROLL EQU >83 SCROLL THE SCREEN >7ADA A GVWITE EQU >8B WRITE DATA FROM GRAM TO VRAM >7FDA A GREAD1 EQU >8C READ DATA FROM ERAM >7EA6 A >C000 GROM * Equates for XMLs SEETWO EQU >03 SEETWO XML selector >6EF0 ALSUP EQU >20 XML to user AssembLy SUBrouti COMPCT EQU >70 PREFORM A GARBAGE COLLECTION >73D8 A GETSTR EQU >71 SYSTEM GET STRING >736C A XBCNS EQU >73 Convert number to string >7016 B PARSE EQU >74 Parse a value >6480 VPUSH EQU >77 Push on value stack >6BAA VPOP EQU >78 Pop off value stack >6C2A PGMCHR EQU >79 GET PROGRAM CHARACTER >6C74 SYM EQU >7A Find SYMBOL entry >6312 SMB EQU >7B Find symbol table entry >61DC ASSGNV EQU >7C Assign VARIABLE >61AE SPEED EQU >7E SPEED UP XML >6EE2 CRUNCH EQU >7F Crunch an input line >7B88 B CIF EQU >80 Convert INTEGER to FLOATING P >74AA A SCROLL EQU >83 SCROLL THE SCREEN >7ADA A * GREAD EQU >85 READ DATA FROM ERAM >7EB4 A * MVDN EQU >88 MOVE DATA IN VDP/ERAM >7F7E A MVUP EQU >89 MOVE DATA IN VDP/ERAM >6F98 * GREAD1 EQU >8C READ DATA FROM ERAM >7EA6 A 1 Quote Link to comment Share on other sites More sharing options...
MikeV Posted May 4, 2021 Share Posted May 4, 2021 I have had some free time to study RXB2020 in more detail. To assist in this I made the RXBDOC2020 clickable for easier navigation. I ran this by Rich and got the ok to post here as others might find this useful. You can return to the TOC by either right click - select previous screen or go to the end of an entry and click TOC. RXBDOC2020.pdf 3 3 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted May 4, 2021 Share Posted May 4, 2021 56 minutes ago, MikeV said: I have had some free time to study RXB2020 in more detail. To assist in this I made the RXBDOC2020 clickable for easier navigation. I ran this by Rich and got the ok to post here as others might find this useful. You can return to the TOC by either right click - select previous screen or go to the end of an entry and click TOC. RXBDOC2020.pdf 418.35 kB · 4 downloads Very nice work indeed. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted May 10, 2021 Share Posted May 10, 2021 Well this is one weird result of testing. Using ROM 3 added to XB above ROM 1 and ROM 2 that XB normally has resulted in working but here is the strange result. Originally RXB has the Character Definition loaded from GROM into VDP tables using GPL. i.e. GROM to VDP speeds So I thought WOW if I loaded the Character Definitions from ROM it should be faster right? WRONG it was 10 minutes slower with a 10,000 loop test???? WTH? Yea moving the same Character Definition from ROM to VDP is slower by 10 minutes in a loop executing 10,000 times. So looking for a solution to both resulted in this thought: "How about using Assembly instead to do this, but how do you use a ROM routine from another ROM page?" I found this in XB ROMS: Spoiler 4132 ************************************************************ 4133 4134 7FDA AORG >7FDA 4136 4137 * Move data from ERAM to VDP (RAM to VDP) 4138 * @GSRC : Source address where the data stored on ERAM 4139 * @DEST : Destination address on VDP 4140 * @BCNT3 : byte count 4141 4142 7FDA C0A0 GVWITE MOV @DEST,R2 VDP address 99/4 ASSEMBLER GVWITES PAGE 0095 7FDC 8358 4143 7FDE D7E0 MOVB @R2LB,*R15 LSB of VDP address 7FE0 83E5 4144 7FE2 0262 ORI R2,WRVDP Enable VDP write 7FE4 4000 4145 7FE6 D7C2 MOVB R2,*R15 MSB of VDP address 4146 7FE8 C0E0 MOV @GSRC,R3 ERAM address 7FEA 8354 4147 7FEC D833 GVZ1 MOVB *R3+,@XVDPWD Move a byte 7FEE 8C00 4148 7FF0 0620 DEC @BCNT3 One less to move 7FF2 8356 4149 7FF4 16FB JNE GVZ1 If not done, loop for more 4150 7FF6 045B RT Return 4151 *************************************************************************** But of course it is in a another ROM so that is a problem, thus I came up with this: Spoiler ******************************************************************************** AORG >8300 TITL 'GVWITES' * * Move data from ERAM to VDP (RAM to VDP) * @>834A : Source address where the data stored on ERAM * @>834C : Destination address on VDP * @>834E : byte count * GVWITE MOV @>834C,R2 * VDP address MOVB @>83E5,*R15 * LSB R2 of VDP address ORI R2,>4000 * Enable VDP write MOVB R2,*R15 * MSB of VDP address MOV @>834A,R3 * ERAM address GVZ1 MOVB *R3+,@>8C00 * Move a byte DEC @>834E * One less to move JNE GVZ1 * If not done, loop for more RT * Return ******************************************************************************** END I load FAC (>834A, >834C and >834E) with values move this 30 byte program into Scratch Pad and use a GPL XML to run it. Now I can move anything from ROM 3 to a VDP location, but additionally from RAM to VDP also if wanted. This should speed up RXB slightly as the Character Definition is re-installed each time you exist Program mode or break or edit. Oh or if you use CALL CHARSET and RXB routine CALL CHARSET(ALL) that resets all characters from 30 to 159. 3 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted May 12, 2021 Share Posted May 12, 2021 Instead of moving that 30 byte program to >8300, why not leave it in rom3 and run it from there? Quote Link to comment Share on other sites More sharing options...
RXB Posted May 12, 2021 Share Posted May 12, 2021 (edited) On 5/12/2021 at 4:44 AM, senior_falcon said: Instead of moving that 30 byte program to >8300, why not leave it in rom3 and run it from there? Good idea though the registers are in Scratch Pad RAM and putting the program into Scratch Pad RAM would benefit some speed. Random Numbers with LFSR (Linear Feedback Shift Register) - Computerphile - YouTube Edited September 12, 2021 by RXB picture Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.