RXB Posted December 13, 2018 Share Posted December 13, 2018 If you write to >600C the cart will switch to ROM bank 7. For the bank switching it doesn't matter what word is in the ROM at >600C, so you can keep the lower 4K as it is. Cool that is what I wanted to know!!!! What cart uses this set up? FinalGROM? Or something else? Quote Link to comment Share on other sites More sharing options...
RXB Posted December 13, 2018 Share Posted December 13, 2018 I keep wondering what hardware are we considering here? On FG99 you can choose between 8K or 4K pages... or at least duplicate all the lower 4K pages looking at ksarul's comments regarding paging... and yours... You want to change from the current 4K bank switching system, to an 8K bank switching system? The pointers need to be static because the XML base addresses are in console ROM? Now you will read from, say... >600C from GPL, revealing a new set of pointers in the lower 4K as well as a new set of routines in the upper 4K? The new pointers and routines being an extension to those existing, and to be associated with more new TOKENS? Sorry no the TOKENs are in GROM not ROM, there are a few in XB ROMs but those are for ERRORs mostly to check what token crashed. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 13, 2018 Share Posted December 13, 2018 You cannot read directly from GROM (GPL). You read through a memory port (>9800+). What, here, is being switched (4 KiB or 8 KiB) and read directly is the 8 KiB from >6000 – >7FFF. Anything read or executed from an address in that space does not need a pointer to read/execute it. The programmer of the system (RXB, XB, ...) software is responsible for seeing to it that the correct bank is switched in by “writing” to the correct selector address (>6000, >6002, ..., for switching 8 KiB, ...). My fbForth 2.0 is ROM only with four 8 KiB banks. My trampoline code (code for switching banks) is placed in low RAM space so it is always visible to the system. I am guessing that RXB, XB, ... trampoline code is in the 4 KiB of ROM that never gets switched out. Rich and others more familiar with the code can verify this or correct me. ...lee Yep, but oddly in GPL it never knows which bank is being used or called. example is in GPL: XML SCROLL to scroll the screen up one line is in PAGE 1 XML PSCAN to prescan program is in PAGE 2 XB ROM just figures out which bank it is in and switches back and forth on own. GPL never has to know which bank to engage. Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 13, 2018 Share Posted December 13, 2018 (edited) Rephrase: Now you will read from, say... >600C from GPL, for the purposes of switching to bank/page 7, thus revealing a new set of pointers in the lower 4K, as well as a new set of routines in the upper 4K? Directly or not...if >600C is read the page is still switched... From the comments here, I believe I have gathered the following: On the XB module reads or writes from/to >600C will bank switch upper 4K. ...admittedly I may be floundering here. Edited December 13, 2018 by HOME AUTOMATION Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted December 13, 2018 Share Posted December 13, 2018 Rephrase: Now you will read from, say... >600C from GPL, for the purposes of switching to bank/page 7, thus revealing a new set of pointers in the lower 4K, as well as a new set of routines in the upper 4K? Directly or not...if >600C is read the page is still switched... From the comments here, I believe I have gathered the following: On the XB module reads or writes from/to >600C will bank switch upper 4K. ...admittedly I may be floundering here. No. Reads from the selector addresses (>6000 ...) of ROM (not GROM) do not cause bank switching. Only “writes” cause bank switching. I am not sure what you mean by “from GPL”. If you mean GPL code is issuing the ROM bank switching “writes”, then OK. But, again, reads from ROM do not cause bank switching. ...lee 2 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 13, 2018 Share Posted December 13, 2018 No. Reads from the selector addresses (>6000 ...) of ROM (not GROM) do not cause bank switching. Only “writes” cause bank switching. I am not sure what you mean by “from GPL”. If you mean GPL code is issuing the ROM bank switching “writes”, then OK. But, again, reads from ROM do not cause bank switching. ...lee I meant a read issued by a GPL instruction... I meant to specify >600C(CPU)... I have observed that only writes to FG99 cause bank switching... according to Rich, in post #895: "I am not a hardware guy but when you read or write to 6000 it engages page 1 of 8K in GRAMKRACKER FORMAT or in original XB upper 4K page, lower 4K never changes. When you read or write to 6002 you get page 2 of 8K in GRAMKRACKER FORMAT or in original XB upper 4K page, again lower 4K never changes." I don't have a GRAMKRACKER to test, I do have an XB cart But haven't thought of an extremely easy way to test reads for bank switching right now. So I am trying to understand these apparent contradictions. I wanted to help and or learn. I don't know if I accomplished either. Rich seems to be back on track... cool 2 Quote Link to comment Share on other sites More sharing options...
Asmusr Posted December 13, 2018 Share Posted December 13, 2018 Cool that is what I wanted to know!!!! What cart uses this set up? FinalGROM? Or something else? All comtemporary carts use this set up: FinalGROM99, FlashROM99, UberGROM, Ksarul's red boards, etc. 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 13, 2018 Share Posted December 13, 2018 I definitely need to get one, not that I have the hardware now to do that as it is all in my attic since everyone has moved in with me.... Thus all TI stuff is in Attic and even my computer is now in dinning Room as I gave my Computer Room to my Daughter instead. So I guess I can now create more ROMs for RXB....cool. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 13, 2018 Share Posted December 13, 2018 (edited) Did you know you can use GOTO or GOSUB with out them being one word? 10 GO TO 30 20 GO SUB 40 30 X=2 :: ON X GO TO 10 40 RETURN XB ROM SOURCE SHOWS WHY: * Normal "ON" statement * BL @PARSE PARSE the index value BYTE COMMAZ Stop on a comma or less CBH66 BYTE >66 Unused byte for constant BL @NUMCHK Ensure index is a number CLR @FAC10 Assume no error in CFI BL @CFI Convert Floating to Integer MOVB @FAC10,R0 Test error code JNE GOTO90 If overflow, BAD VALUE MOV @FAC,R3 Get the index JGT ON20 Must be positive GOTO90 LI R0,ERRIOR Negative, BAD VALUE GOTO95 JMP ERR Jump to error handler ON20 EQU $ Now check GO TO/SUB CI R8,GOZ*256 Bare "GO" token? JNE ON40 No, check other possibilities BL @PGMCHR Yes, get next token ON30 CI R8,TOZ*256 "GO TO" ? JEQ GOTO50 Yes, handle GO TO like GOTO CI R8,SUBZ*256 "GO SUB" ? JMP ON50 Merge to common code to test ON40 CI R8,GOTOZ*256 "GOTO" ? JEQ GOTO50 Yes, go handle it CI R8,GOSUBZ*256 "GOSUB" ? ON50 JNE ERRONE No, so is an error BL @PGMCHR Get next token JMP GOSUB2 Goto gosub code ERR1B JMP ERRONE Issue error message * NUD routine for "GOSUB" GOSUB CLR R3 Dummy index for "ON" code * Common GOSUB code GOSUB2 EQU $ Now build a FAC entry LI R1,FAC Optimize to save bytes MOV R3,*R1+ Save the "ON" index * in case of garbage collection MOVB @CBH66,*R1+ Indicate GOSUB entry on stack INC R1 Skip FAC3 MOV @PGMPTR,*R1 Save current ptr w/in line INCT *R1+ Skip line # to correct place MOV @EXTRAM,*R1 Save current line # pointer BL @VPUSH Save the stack entry MOV @FAC,R3 Restore the "ON" index JMP GOTO20 Jump to code to find the line * NUD routine for "GOTO" GOTO CLR R3 Dummy index for "ON" code * Common (ON) GOTO/GOSUB THEN/ELSE code to fine line * * Get line number from program GOTO20 CI R8,LNZ*256 Must have line number token JNE ERR1B Don't, so error GETL10 BL @PGMCHR Get MSB of the line number MOVB R8,R0 Save it BL @PGMCHR Read the character DEC R3 Decrement the "ON" index JGT GOTO40 Loop if not there yet 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. Edited December 13, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
+TheBF Posted December 13, 2018 Share Posted December 13, 2018 I did know that. But now I can try to figure out why. 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted December 13, 2018 Share Posted December 13, 2018 But now I can try to figure out why. Because! Because TI said so! 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 14, 2018 Share Posted December 14, 2018 (edited) I did know that. But now I can try to figure out why. The code explains it pretty well. GO is is used in both GOTO and GOSUB so if you find those two letters "GO" you know the only thing they could be are TO or SUB to follow. ON is only ever followed by a variable as in ON X GOTO or ON X GOSUB thus ON Is a precursor to GOTO or GOSUB. This saves time searching for keywords used by the USER, TO and SUB are used separately for FOR count TO value and SUB as a unique user named subroutine. Edited December 14, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
RXB Posted December 15, 2018 Share Posted December 15, 2018 OMG! The only change I can do with the XB list of characters is I can move the COMMA up in list but nothing else can be moved? I get * SYNTAX ERROR * for any other in the list that I move? Something in XB ROMs is causing this but for the life of me I can not figure out why? Quote Link to comment Share on other sites More sharing options...
RXB Posted December 16, 2018 Share Posted December 16, 2018 (edited) Well found the problem in XB ROMs and it is a listing FOR ASSEMBLY ONLY and is a freaking mess to deal with: 0365 612C AORG >612C 0367 0368 * 0369 * The CHARACTER PROPERTY TABLE 0370 * There is a one-byte entry for every character code 0371 * in the range LLC(lowest legal character) to 0372 * HLC(highest legal character), inclusive. 0373 0020 LLC EQU >20 0374 0000 CPNIL EQU >00 " $ % ' ? 0375 0002 CPDIG EQU >02 digit (0-9) 0376 0004 CPNUM EQU >04 digit, period, E 0377 0008 CPOP EQU >08 1 char operators(!#*+-/<=>^ ) 0378 0010 CPMO EQU >10 multiple operator ( : ) 0379 0020 CPALPH EQU >20 A-Z, @, _ 0380 0040 CPBRK EQU >40 ( ) , ; 0381 0080 CPSEP EQU >80 space 0382 0022 CPALNM EQU CPALPH+CPDIG alpha-digit 0383 *----------------------------------------------------------- 0384 * Following lines are for adding lowercase character set in 0385 * 99/4A, 5/12/81 0386 0001 CPLOW EQU >01 a-z 0387 0023 CPULNM EQU CPALNM+CPLOW Alpha(both upper and lower)+ 0388 * digit-legal variable character 0389 0021 CPUL EQU CPALPH+CPLOW Alpha(both upper and lower) 0390 *----------------------------------------------------------- 0391 610C CPTBL EQU $-LLC 0392 612C 80 BYTE CPSEP SPACE 0393 612D 08 BYTE CPOP ! EXCLAMATION POINT 0394 612E 00 BYTE CPNIL " QUOTATION MARKS 0395 612F 08 BYTE CPOP # NUMBER SIGN 0396 6130 00 BYTE CPNIL $ DOLLAR SIGN 0397 6131 00 BYTE CPNIL % PERCENT 0398 6132 08 BYTE CPOP & AMPERSAND 0399 6133 00 BYTE CPNIL ' APOSTROPHE 0400 6134 40 BYTE CPBRK ( LEFT PARENTHESIS 0401 6135 40 BYTE CPBRK ) RIGHT PARENTHESIS 0402 6136 08 BYTE CPOP * ASTERISK 0403 6137 0C BYTE CPOP+CPNUM + PLUS 0404 6138 40 BYTE CPBRK , COMMA 0405 6139 0C BYTE CPOP+CPNUM - MINUS 0406 613A 04 BYTE CPNUM . PERIOD 0407 613B 08 BYTE CPOP / SLANT 0408 613C 06 BYTE CPNUM+CPDIG 0 ZERRO 99/4 ASSEMBLER CPT PAGE 0009 0409 613D 06 BYTE CPNUM+CPDIG 1 ONE 0410 613E 06 BYTE CPNUM+CPDIG 2 TWO 0411 613F 06 BYTE CPNUM+CPDIG 3 THREE 0412 6140 06 BYTE CPNUM+CPDIG 4 FOUR 0413 6141 06 BYTE CPNUM+CPDIG 5 FIVE 0414 6142 06 BYTE CPNUM+CPDIG 6 SIX 0415 6143 06 BYTE CPNUM+CPDIG 7 SEVEN 0416 6144 06 BYTE CPNUM+CPDIG 8 EIGHT 0417 6145 06 BYTE CPNUM+CPDIG 9 NINE 0418 6146 10 LBCPMO BYTE CPMO : COLON 0419 6147 40 BYTE CPBRK : SEMICOLON 0420 6148 08 BYTE CPOP < LESS THAN 0421 6149 08 BYTE CPOP = EQUALS 0422 614A 08 BYTE CPOP > GREATER THAN 0423 614B 00 BYTE CPNIL ? QUESTION MARK 0424 614C 20 BYTE CPALPH @ COMMERCIAL AT 0425 614D 20 BYTE CPALPH A UPPERCASE A 0426 614E 20 BYTE CPALPH B UPPERCASE B 0427 614F 20 BYTE CPALPH C UPPERCASE C 0428 6150 20 BYTE CPALPH D UPPERCASE D 0429 6151 24 BYTE CPALPH+CPNUM E UPPERCASE E 0430 6152 20 BYTE CPALPH F UPPERCASE F 0431 6153 20 BYTE CPALPH G UPPERCASE G 0432 6154 20 BYTE CPALPH H UPPERCASE H 0433 6155 20 BYTE CPALPH I UPPERCASE I 0434 6156 20 BYTE CPALPH J UPPERCASE J 0435 6157 20 BYTE CPALPH K UPPERCASE K 0436 6158 20 BYTE CPALPH L UPPERCASE L 0437 6159 20 BYTE CPALPH M UPPERCASE M 0438 615A 20 BYTE CPALPH N UPPERCASE N 0439 615B 20 BYTE CPALPH O UPPERCASE O 0440 615C 20 BYTE CPALPH P UPPERCASE P 0441 615D 20 BYTE CPALPH Q UPPERCASE Q 0442 615E 20 BYTE CPALPH R UPPERCASE R 0443 615F 20 BYTE CPALPH S UPPERCASE S 0444 6160 20 BYTE CPALPH T UPPERCASE T 0445 6161 20 BYTE CPALPH U UPPERCASE U 0446 6162 20 BYTE CPALPH V UPPERCASE V 0447 6163 20 BYTE CPALPH W UPPERCASE W 0448 6164 20 BYTE CPALPH X UPPERCASE X 0449 6165 20 BYTE CPALPH Y UPPERCASE Y 0450 6166 20 BYTE CPALPH Z UPPERCASE Z 0451 6167 20 BYTE CPALPH [ LEFT SQUARE BRACKET 0452 6168 20 BYTE CPALPH \ REVERSE SLANT 0453 6169 20 BYTE CPALPH ] RIGHT SQUARE BRACKET 0454 616A 08 BYTE CPOP ^ CIRCUMFLEX 0455 616B 20 BYTE CPALPH _ UNDERLINE 0456 *----------------------------------------------------------- 0457 * Following "`" and lowercase characters are for 0458 * adding lowercase character set in 99/4A, 5/12/81 0459 *----------------------------------------------------------- 0460 616C 00 BYTE CPNIL ` GRAVE ACCENT 0461 616D 21 BYTE CPALPH+CPLOW a LOWERCASE a 0462 616E 21 BYTE CPALPH+CPLOW b LOWERCASE b 0463 616F 21 BYTE CPALPH+CPLOW c LOWERCASE c 0464 6170 21 BYTE CPALPH+CPLOW d LOWERCASE d 0465 6171 21 BYTE CPALPH+CPLOW e LOWERCASE e 0466 6172 21 BYTE CPALPH+CPLOW f LOWERCASE f 0467 6173 21 BYTE CPALPH+CPLOW g LOWERCASE g 99/4 ASSEMBLER CPT PAGE 0010 0468 6174 21 BYTE CPALPH+CPLOW h LOWERCASE h 0469 6175 21 BYTE CPALPH+CPLOW i LOWERCASE i 0470 6176 21 BYTE CPALPH+CPLOW j LOWERCASE j 0471 6177 21 BYTE CPALPH+CPLOW k LOWERCASE k 0472 6178 21 BYTE CPALPH+CPLOW l LOWERCASE l 0473 6179 21 BYTE CPALPH+CPLOW m LOWERCASE m 0474 617A 21 BYTE CPALPH+CPLOW n LOWERCASE n 0475 617B 21 BYTE CPALPH+CPLOW o LOWERCASE o 0476 617C 21 BYTE CPALPH+CPLOW p LOWERCASE p 0477 617D 21 BYTE CPALPH+CPLOW q LOWERCASE q 0478 617E 21 BYTE CPALPH+CPLOW r LOWERCASE r 0479 617F 21 BYTE CPALPH+CPLOW s LOWERCASE s 0480 6180 21 BYTE CPALPH+CPLOW t LOWERCASE t 0481 6181 21 BYTE CPALPH+CPLOW u LOWERCASE u 0482 6182 21 BYTE CPALPH+CPLOW v LOWERCASE v 0483 6183 21 BYTE CPALPH+CPLOW w LOWERCASE w 0484 6184 21 BYTE CPALPH+CPLOW x LOWERCASE x 0485 6185 21 BYTE CPALPH+CPLOW y LOWERCASE y 0486 6186 21 BYTE CPALPH+CPLOW z LOWERCASE z 0487 How about me make a permanent list that uses a table where everything equals everything else???? Worst way to deal with different characters I have ever seen!!!! An order of importance made my horrid programming. Any ideas on on to fix this MESS? Edited December 16, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted December 16, 2018 Share Posted December 16, 2018 Well found the problem in XB ROMs and it is a listing FOR ASSEMBLY ONLY and is a freaking mess to deal with: 0365 612C AORG >612C 0367 0368 * 0369 * The CHARACTER PROPERTY TABLE 0370 * There is a one-byte entry for every character code 0371 * in the range LLC(lowest legal character) to 0372 * HLC(highest legal character), inclusive. 0373 0020 LLC EQU >20 0374 0000 CPNIL EQU >00 " $ % ' ? 0375 0002 CPDIG EQU >02 digit (0-9) 0376 0004 CPNUM EQU >04 digit, period, E 0377 0008 CPOP EQU >08 1 char operators(!#*+-/<=>^ ) 0378 0010 CPMO EQU >10 multiple operator ( : ) 0379 0020 CPALPH EQU >20 A-Z, @, _ 0380 0040 CPBRK EQU >40 ( ) , ; 0381 0080 CPSEP EQU >80 space 0382 0022 CPALNM EQU CPALPH+CPDIG alpha-digit 0383 *----------------------------------------------------------- 0384 * Following lines are for adding lowercase character set in 0385 * 99/4A, 5/12/81 0386 0001 CPLOW EQU >01 a-z 0387 0023 CPULNM EQU CPALNM+CPLOW Alpha(both upper and lower)+ 0388 * digit-legal variable character 0389 0021 CPUL EQU CPALPH+CPLOW Alpha(both upper and lower) 0390 *----------------------------------------------------------- 0391 610C CPTBL EQU $-LLC 0392 612C 80 BYTE CPSEP SPACE 0393 612D 08 BYTE CPOP ! EXCLAMATION POINT 0394 612E 00 BYTE CPNIL " QUOTATION MARKS 0395 612F 08 BYTE CPOP # NUMBER SIGN 0396 6130 00 BYTE CPNIL $ DOLLAR SIGN 0397 6131 00 BYTE CPNIL % PERCENT 0398 6132 08 BYTE CPOP & AMPERSAND 0399 6133 00 BYTE CPNIL ' APOSTROPHE 0400 6134 40 BYTE CPBRK ( LEFT PARENTHESIS 0401 6135 40 BYTE CPBRK ) RIGHT PARENTHESIS 0402 6136 08 BYTE CPOP * ASTERISK 0403 6137 0C BYTE CPOP+CPNUM + PLUS 0404 6138 40 BYTE CPBRK , COMMA 0405 6139 0C BYTE CPOP+CPNUM - MINUS 0406 613A 04 BYTE CPNUM . PERIOD 0407 613B 08 BYTE CPOP / SLANT 0408 613C 06 BYTE CPNUM+CPDIG 0 ZERRO 99/4 ASSEMBLER CPT PAGE 0009 0409 613D 06 BYTE CPNUM+CPDIG 1 ONE 0410 613E 06 BYTE CPNUM+CPDIG 2 TWO 0411 613F 06 BYTE CPNUM+CPDIG 3 THREE 0412 6140 06 BYTE CPNUM+CPDIG 4 FOUR 0413 6141 06 BYTE CPNUM+CPDIG 5 FIVE 0414 6142 06 BYTE CPNUM+CPDIG 6 SIX 0415 6143 06 BYTE CPNUM+CPDIG 7 SEVEN 0416 6144 06 BYTE CPNUM+CPDIG 8 EIGHT 0417 6145 06 BYTE CPNUM+CPDIG 9 NINE 0418 6146 10 LBCPMO BYTE CPMO : COLON 0419 6147 40 BYTE CPBRK : SEMICOLON 0420 6148 08 BYTE CPOP < LESS THAN 0421 6149 08 BYTE CPOP = EQUALS 0422 614A 08 BYTE CPOP > GREATER THAN 0423 614B 00 BYTE CPNIL ? QUESTION MARK 0424 614C 20 BYTE CPALPH @ COMMERCIAL AT 0425 614D 20 BYTE CPALPH A UPPERCASE A 0426 614E 20 BYTE CPALPH B UPPERCASE B 0427 614F 20 BYTE CPALPH C UPPERCASE C 0428 6150 20 BYTE CPALPH D UPPERCASE D 0429 6151 24 BYTE CPALPH+CPNUM E UPPERCASE E 0430 6152 20 BYTE CPALPH F UPPERCASE F 0431 6153 20 BYTE CPALPH G UPPERCASE G 0432 6154 20 BYTE CPALPH H UPPERCASE H 0433 6155 20 BYTE CPALPH I UPPERCASE I 0434 6156 20 BYTE CPALPH J UPPERCASE J 0435 6157 20 BYTE CPALPH K UPPERCASE K 0436 6158 20 BYTE CPALPH L UPPERCASE L 0437 6159 20 BYTE CPALPH M UPPERCASE M 0438 615A 20 BYTE CPALPH N UPPERCASE N 0439 615B 20 BYTE CPALPH O UPPERCASE O 0440 615C 20 BYTE CPALPH P UPPERCASE P 0441 615D 20 BYTE CPALPH Q UPPERCASE Q 0442 615E 20 BYTE CPALPH R UPPERCASE R 0443 615F 20 BYTE CPALPH S UPPERCASE S 0444 6160 20 BYTE CPALPH T UPPERCASE T 0445 6161 20 BYTE CPALPH U UPPERCASE U 0446 6162 20 BYTE CPALPH V UPPERCASE V 0447 6163 20 BYTE CPALPH W UPPERCASE W 0448 6164 20 BYTE CPALPH X UPPERCASE X 0449 6165 20 BYTE CPALPH Y UPPERCASE Y 0450 6166 20 BYTE CPALPH Z UPPERCASE Z 0451 6167 20 BYTE CPALPH [ LEFT SQUARE BRACKET 0452 6168 20 BYTE CPALPH \ REVERSE SLANT 0453 6169 20 BYTE CPALPH ] RIGHT SQUARE BRACKET 0454 616A 08 BYTE CPOP ^ CIRCUMFLEX 0455 616B 20 BYTE CPALPH _ UNDERLINE 0456 *----------------------------------------------------------- 0457 * Following "`" and lowercase characters are for 0458 * adding lowercase character set in 99/4A, 5/12/81 0459 *----------------------------------------------------------- 0460 616C 00 BYTE CPNIL ` GRAVE ACCENT 0461 616D 21 BYTE CPALPH+CPLOW a LOWERCASE a 0462 616E 21 BYTE CPALPH+CPLOW b LOWERCASE b 0463 616F 21 BYTE CPALPH+CPLOW c LOWERCASE c 0464 6170 21 BYTE CPALPH+CPLOW d LOWERCASE d 0465 6171 21 BYTE CPALPH+CPLOW e LOWERCASE e 0466 6172 21 BYTE CPALPH+CPLOW f LOWERCASE f 0467 6173 21 BYTE CPALPH+CPLOW g LOWERCASE g 99/4 ASSEMBLER CPT PAGE 0010 0468 6174 21 BYTE CPALPH+CPLOW h LOWERCASE h 0469 6175 21 BYTE CPALPH+CPLOW i LOWERCASE i 0470 6176 21 BYTE CPALPH+CPLOW j LOWERCASE j 0471 6177 21 BYTE CPALPH+CPLOW k LOWERCASE k 0472 6178 21 BYTE CPALPH+CPLOW l LOWERCASE l 0473 6179 21 BYTE CPALPH+CPLOW m LOWERCASE m 0474 617A 21 BYTE CPALPH+CPLOW n LOWERCASE n 0475 617B 21 BYTE CPALPH+CPLOW o LOWERCASE o 0476 617C 21 BYTE CPALPH+CPLOW p LOWERCASE p 0477 617D 21 BYTE CPALPH+CPLOW q LOWERCASE q 0478 617E 21 BYTE CPALPH+CPLOW r LOWERCASE r 0479 617F 21 BYTE CPALPH+CPLOW s LOWERCASE s 0480 6180 21 BYTE CPALPH+CPLOW t LOWERCASE t 0481 6181 21 BYTE CPALPH+CPLOW u LOWERCASE u 0482 6182 21 BYTE CPALPH+CPLOW v LOWERCASE v 0483 6183 21 BYTE CPALPH+CPLOW w LOWERCASE w 0484 6184 21 BYTE CPALPH+CPLOW x LOWERCASE x 0485 6185 21 BYTE CPALPH+CPLOW y LOWERCASE y 0486 6186 21 BYTE CPALPH+CPLOW z LOWERCASE z 0487 How about me make a permanent list that uses a table where everything equals everything else???? Worst way to deal with different characters I have ever seen!!!! An order of importance made my horrid programming. Any ideas on on to fix this MESS? You do not want to mess with that table, Rich! It is as it says, a character property table. It is in ASCII order with flag bits for each character that tells XB what kind of character it is. ...lee Quote Link to comment Share on other sites More sharing options...
RXB Posted December 17, 2018 Share Posted December 17, 2018 (edited) You do not want to mess with that table, Rich! It is as it says, a character property table. It is in ASCII order with flag bits for each character that tells XB what kind of character it is. ...lee Lee This is the issue with XB ROMs it searches this list every single time you type in anything. Those most used characters like say comma or equal or times or words like TO or CALL are at bottom of list, while ones never used but just once like DIM are at top of list. To say this list is in any way optimized would be a great joke, it is horribly designed. Especially when you consider it searches every single character in a program line like this. When people do a comparison of timing commands this is why you get insane bad times for most often used commands or characters. P.S. Did you notice as it is SPACE to lower case z how much space this wastes as most are all the same value? Do you know anyone that uses FCTN SHIFT E as the break key? Edited December 17, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted December 18, 2018 Share Posted December 18, 2018 I think that last one may have been for 99/4 compatibility, Rich 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 18, 2018 Share Posted December 18, 2018 (edited) I think that last one may have been for 99/4 compatibility, Rich Yea most of the original TI99 and TI99/4 code was commented on and either * commented out or * removed in both XB ROMs and GPL Source. Edited December 18, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
RXB Posted December 18, 2018 Share Posted December 18, 2018 Anyway as it stands now with no offers to help me fix the XB ROMs guess I am just going to just release what I have an do something else. Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted December 18, 2018 Share Posted December 18, 2018 Anyway as it stands now with no offers to help me fix the XB ROMs guess I am just going to just release what I have an do something else. I certainly would like to help. I did not respond before because I had fbForth stuff to do (still do) and will need to spend a fair amount of time to work out what actually is going on in the RXB/XB code—especially when it comes to that last bit of code you posted. I am certain that table cannot be re-ordered because it is in precisely ASCII order and contains the property bits for each character. For example, ‘q’ is ASCII 113 and the property entry for ‘q’ is at location >617D, which is the 113th entry in the property table, i.e., it is 113 bytes from the beginning of the table, which is CPTBL at >610C. That is why this surely cannot be the search table for Basic tokens as is what I think you said. It merely tells what kind of character a particular ASCII code is. As I said, I may not have correct what it is you are saying or trying to do, but I am certainly willing to help. ...lee 3 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 19, 2018 Share Posted December 19, 2018 Currently adding a new routine to RXB. It looks like I have no problem adding HEX to the list in GPL so seems only Subprograms with less then 2 characters are NOT EVER TO MODIFIED. HEX(hex-string) or HEX(integer) is a new routing that returns a value needed. Example: PRINT HEX(8192) would print string 2000 and PRINT HEX("2000") would print number value 8192 And of course you could do this: CALL HCHAR(HEX("0004")*5,18,65) ! Thus HEX("0004") would be 4 in integer thus times 5 equals 20 This creates all kinds of solutions of dealing with Assembly and character values in HEX. 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. Quote Link to comment Share on other sites More sharing options...
+9640News Posted December 19, 2018 Share Posted December 19, 2018 Rich, I've followed this thread to some degree and have a question or two. Please note I am not trying to get something for free if it's not freely available. Does the Rich Extended Basic exist in a FinalGrom format? If so, do you distribute/sell the image? Finally, is there documentation somewhere for it? Thanks. Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted December 19, 2018 Share Posted December 19, 2018 Beery, it's in the pinned Development Resources thread. Rich has never charged for it although you can buy ready-made carts from arcadeshopper.com 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted December 19, 2018 Share Posted December 19, 2018 OK, I checked out the development thread and it leads back to this topic area of 35+ pages of posts. Thus far, I have found comments regarding RXB 2018, but have not seen an embedded file or link to where the file can be downloaded. Still searching...... Beery Quote Link to comment Share on other sites More sharing options...
+chue Posted December 19, 2018 Share Posted December 19, 2018 (edited) From what I can tell, 2015E is the last version Rich has put out: http://atariage.com/forums/topic/163627-rxb-rich-extended-basic/?p=3558025 Edited December 19, 2018 by chue 1 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.