RXB Posted November 27, 2018 Share Posted November 27, 2018 New RXB demo of CALL PRAM(address) Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted November 27, 2018 Share Posted November 27, 2018 New RXB demo of CALL PRAM(address) this video is unavailable.. it says did you make it private? 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 28, 2018 Share Posted November 28, 2018 (edited) No I do not know why this happening will look into it! Well turns out Youtube has a new editor and it requires a double check on Public Youtubes. Edited November 28, 2018 by RXB 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 29, 2018 Share Posted November 29, 2018 (edited) UPDATE ON RXB WORK IN PROGRESS: What do you guys think about this new feature I am working on: CALL LOAD(hex address,hex value,hex value) ! Hex values in strings all begin with > CALL LINK(hex address,hex value,hex value) ! Hex values in strings all begin with > Example: 100 A$=">29FD" :: B$=">AA" :: C$=">00" 110 CALL LOAD(A$,B$,C$) ! This would load >AA00 at RAM address >29FD CALL LINK(">3FFE") ! Would execute address link with out needing to look up the link name and checking stack which is slower. Also you could use Decimal values CALL LINK(16382) also works or nomral XB coninues to work CALL LINK("TESTER") This feature would work with all address routines like CALL VDPSTACK(adddrss), CALL PRAM(address), CALL POKEG(address), CALL POKEV(address)... and all others.... AGAIN ANY FEED BACK ON THIS IDEA? Edited November 29, 2018 by RXB 3 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 2, 2018 Share Posted December 2, 2018 Well couple of days with no reply so going with a new command instead: HEX(hex$) or HEX(dec#) So commands like CALL LOAD(HEX("2000"),HEX("FE")) would load >FE at RAM address >2000 Or commands like PRINT HEX(8192) would print 2000 If HEX has a String or String Variable it puts Decimal Integer into FAC If HEX has a Decimal Floating Point number in it it creates a string for that value to use. The previous post to this had issues with the > sign on input and output that this new version does not create. Also the new version is much faster and more compact allowing use in complicated XB program lines. 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted December 2, 2018 Share Posted December 2, 2018 Well couple of days with no reply so going with a new command instead: HEX(hex$) or HEX(dec#) So commands like CALL LOAD(HEX("2000"),HEX("FE")) would load >FE at RAM address >2000 Or commands like PRINT HEX(8192) would print 2000 If HEX has a String or String Variable it puts Decimal Integer into FAC If HEX has a Decimal Floating Point number in it it creates a string for that value to use. The previous post to this had issues with the > sign on input and output that this new version does not create. Also the new version is much faster and more compact allowing use in complicated XB program lines. I like this factoring much better Rich. By keeping it simple you have made a more generally useful function. This will clarify a lot of BASIC code where there are negative decimal numbers used for addresses. (yuk) Well done. Chuck Moore would be proud of you. :-) 2 Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted December 2, 2018 Share Posted December 2, 2018 Also note, sometimes we may not make a comment, but we do post a like--that is just as much a positive endorsement of the idea as the comment would be, Rich. I do agree that the second solution to the problem is even more elegantly simple than the first one was. I like it. 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 3, 2018 Share Posted December 3, 2018 I like this factoring much better Rich. By keeping it simple you have made a more generally useful function. This will clarify a lot of BASIC code where there are negative decimal numbers used for addresses. (yuk) Well done. Chuck Moore would be proud of you. :-) Thanks HEX does not work with anything but two bytes i.e. >1234 or >4321 or >38A7 Thus only is for address use like CALL LOAD or CALL PEEK Quote Link to comment Share on other sites More sharing options...
RXB Posted December 3, 2018 Share Posted December 3, 2018 Also note, sometimes we may not make a comment, but we do post a like--that is just as much a positive endorsement of the idea as the comment would be, Rich. I do agree that the second solution to the problem is even more elegantly simple than the first one was. I like it. Thanks. Say how would I put more ROMs into RXB I was thinking of Explorer and adding another ROM of Assembly to speed up XB. Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted December 3, 2018 Share Posted December 3, 2018 Rich, When can we expect a release - or is RXB a "moving target"? Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted December 3, 2018 Share Posted December 3, 2018 It is a matter of updating the bank switching tables, Rich. Right now, XB has two banks, but is actually only switching half of the ROM (4K). The other half needs to be present at all times, based on the pointers to the various ROM routines. I am not sure how much space remains in that constant 4K to allow you to add additional pointers to new banks, but that is where you'd have to start looking. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 3, 2018 Share Posted December 3, 2018 It is a matter of updating the bank switching tables, Rich. Right now, XB has two banks, but is actually only switching half of the ROM (4K). The other half needs to be present at all times, based on the pointers to the various ROM routines. I am not sure how much space remains in that constant 4K to allow you to add additional pointers to new banks, but that is where you'd have to start looking. I was thinking of making numerous ROMs for RXB (XB) current switch method could up updated... 0207 ************************************************************ 0208 6000 AORG >6000 0210 0211 * PAGE SELECTOR FOR PAGE 1 0212 6000 PAGE1 EQU $ >6000 0213 6000 0002 C2 DATA 2 0 0214 * PAGE SELECTOR FOR PAGE 2 0215 6002 PAGE2 EQU $ >6002 0216 6002 00 C7 BYTE >00 0217 6003 07 CBH7 BYTE >07 2 0218 6004 0A CBHA BYTE >0A 0219 6005 94 CBH94 BYTE >94 4 0220 6006 0028 C40 DATA 40 6 0221 6008 0064 C100 DATA 100 8 0222 600A 1000 C1000 DATA >1000 A 0223 600C 0000 DATA 0 C 0224 600E 4001 FLTONE DATA >4001 E 0225 ************************************************************ 0226 * XML table number 7 for Extended Basic - must have 0227 * it's origin at >6010 0228 ************************************************************ 0229 * 0 1 2 3 4 5 6 0230 6010 619C DATA COMPCG,GETSTG,MEMCHG,CNSSEL,PARSEG,CONTG,EXECG 6012 61A2 6014 72CE 6016 6070 6018 6470 601A 64C4 601C 6500 0231 * 7 8 9 A B C D 0232 601E 61BA DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,ASSGNV,FBSYMB 6020 6C2A 99/4 ASSEMBLER XML359 PAGE 0005 6022 6410 6024 61B4 6026 61A8 6028 61AE 602A 618C 0233 * E F 0234 602C 6EE2 DATA SPEED,CRNSEL 602E 6076 0235 ************************************************************ 0236 * XML table number 8 for Extended Basic - must have 0237 * it's origin at >6030 0238 ************************************************************ 0239 * 0 1 2 3 4 5 6 7 0240 6030 74AA DATA CIF,CONTIN,RTNG,SCROLL,IO,GREAD,GWRITE,DELREP 6032 65CC 6034 6630 6036 7ADA 6038 7B48 603A 7EB4 603C 7ED8 603E 7EF4 0241 * 8 9 A B C D E 0242 6040 7F7E DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,GDTECT 6042 6F98 6044 7FC0 6046 7FDA 6048 7EA6 604A 7ECA 604C 6050 0243 * F 0244 604E 7C56 DATA PSCAN 0245 0246 * Determine if and how much ERAM is present 0247 6050 D80B GDTECT MOVB R11,@PAGE1 First enable page 1 ROM 6052 6000 0248 *----------------------------------------------------------- 0249 * Replace following line 6/16/81 0250 * (Extended Basic must be made to leave enough space at 0251 * top of RAM expansion for the "hooks" left by the 99/4A 0252 * for TIBUG.) 0253 * SETO R0 Start at >FFFF 0254 * with 0255 6054 0200 LI R0,>FFE7 Start at >FFE7 6056 FFE7 0256 *----------------------------------------------------------- 0257 6058 D40B MOVB R11,*R0 Write a byte of data 0258 605A 940B CB R11,*R0 Read and compare the data 0259 605C 1306 JEQ DTECT2 If matches-found ERAM top 0260 *----------------------------------------------------------- 0261 * Change the following line 6/16/81 0262 * AI R0,->2000 Else drop down 8K 0263 605E 0200 LI R0,>DFFF Else drop down 8K 6060 DFFF 0264 *----------------------------------------------------------- 0265 6062 D40B MOVB R11,*R0 Write a byte of data 0266 6064 940B CB R11,*R0 Read and compare the data 0267 6066 1301 JEQ DTECT2 If matches-found ERAM top 0268 6068 04C0 CLR R0 No match so no ERAM 0269 606A C800 DTECT2 MOV R0,@RAMTOP Set the ERAM top 99/4 ASSEMBLER XML359 PAGE 0006 606C 8384 0270 606E 045B RT And return to GPL Now >6010 and >6030 have to remain in exact location for Lower 8K assembly programs and EA manual using Assembly in XB, but >6000 to >600F could be used for bank switching 14 more banks of 8K banks or upper 4K banks. I can move >6004 to >600F to some where else in XB ROMs there is 20 bytes open in XB ROMS, or use exiting values. For additional XB ROMs that upgrade XB the lower 4K of XB ROM would have to be duplicates for a 8K switching. Thus instead of a write to >6002 being bank 2 of 8K XB ROMs, we could write to >600A and that would be a new XB 8K ROM page. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 5, 2018 Share Posted December 5, 2018 Rich, When can we expect a release - or is RXB a "moving target"? Well the only thing left for me to finish is HEX(string) or HEX(decimal) then I can work on demos and documentation. Delay so far is figuring out the changes to XB ROMs to allow for a new value HEX to be added with a token of maybe >CA NUDTAB in GPL and ROM is a branch table searched for in GPL and used by XB ROMs: [0686] *********************************************************** [0687] * NUD / STATEMENT BRANCH TABLE [0688] *********************************************************** [0689] A147 41,89 NUDTB BR RECX 'RECORD' 0 [0690] A149 46,8B BR NBREAK 'BREAK' 0 [0691] A14B 46,9D BR NUNBRK 'UNBREAK' 0 [0692] A14D 46,81 BR NTRACE 'TRACE' 0 [0693] A14F 46,86 BR NUNTRC 'UNTRACE' 0 [0694] A151 41,8C BR NREADX 'READ' 0 [0695] A153 41,8F BR PRINTX 'PRINT' 0 [0696] A155 41,86 BR SZRUNX 'RUN' 0 [0697] A157 41,A7 BR LINPUX Reserved for LINPUT 1 [0698] A159 41,92 BR RESTOX 'RESTORE' 1 [0699] A15B 43,7F BR NRNDMZ 'RANDOMIZE' 1 [0700] A15D 41,95 BR INPUTX 'INPUT' 1 [0701] A15F 41,98 BR OPENX 'OPEN' 1 [0702] A161 41,9B BR CLOSEX 'CLOSE' 1 [0703] A163 42,48 BR NPI 'PI' 1 [0704] A165 42,58 BR NMAX 'MAX' 1 [0705] A167 42,65 BR NMIN 'MIN' 2 [0706] A169 46,28 BR RPTZ01 'RPT$' 2 [0707] A16B 41,9E BR ACCEPX 'ACCEPT' 2 [0708] A16D 41,83 BR EOFX 'EOF' 2 [0709] A16F 45,1A BR ASC01 'ASC' 2 [0710] A171 45,BD BR POS01 'POS' 2 [0711] A173 45,55 BR VAL01 'VAL' 2 [0712] A175 45,2B BR STRZ01 'STR$' 2 [0713] A177 44,90 BR SEGZ01 'SEG$' 3 [0714] A179 41,A4 BR DELETX 'DELETE' 3 [0715] A17B 41,A1 BR DISPLX 'DISPLAY' 3 [0716] A17D 44,F3 BR LEN01 'LEN' 3 [0717] A17F 44,FF BR CHRZ01 'CHR$' 3 [0718] *RXB PATCH CODE FOR BASIC RND REPLACEMENT *********** [0719] A181 42,AF BR NRND 'RND' 3 [0720] * The following are long branches to another GROM [0721] A183 05,80,1C EOFX B EOF [0722] A186 05,60,1E SZRUNX B SZRUN [0723] A189 05,80,22 RECX B REC [0724] A18C 05,80,0E NREADX B NREAD [0725] A18F 05,80,04 PRINTX B PRINT [0726] A192 05,80,0C RESTOX B RESTOR [0727] A195 05,80,06 INPUTX B INPUT [0728] A198 05,80,08 OPENX B OPEN [0729] A19B 05,80,0A CLOSEX B CLOSE [0730] A19E 05,80,1E ACCEPX B ACCEPT [0731] A1A1 05,80,00 DISPLX B DISPL1 [0732] A1A4 05,80,02 DELETX B DELET [0733] A1A7 05,80,30 LINPUX B LINPUT [0734] *********************************************************** So putting it in XB ROM presents a address problem as ERRTAB will not allow for insertion of 4 bytes: [2152] AORG >0B00 [2153] *********************************************************** [2154] * BASIC KEYWORD TABLE [2155] * THE TOKEN IS ITS LEFT BINDING POWER [2156] *********************************************************** [2157] CB00 CB,14,CB KEYTAB DATA CHAR1,CHAR2,CHAR3,CHAR4,CHAR5 CB03 35,CB,4E CB06 CB,EF,CC CB09 59 [2158] CB0A CC,A8,CC DATA CHAR6,CHAR7,CHAR8,CHAR9,CHARA CB0D F6,CD,2F CB10 CD,5D,CD CB13 68 [2159] CB14 21 CHAR1 TEXT '!' [2160] CB15 83 BYTE TREMZ * ! [2161] CB16 23 TEXT '#' [2162] CB17 FD BYTE NUMBEZ * # [2163] CB18 26 TEXT '&' [2164] CB19 B8 BYTE CONCZ * & [2165] CB1A 28 TEXT '(' [2166] CB1B B7 BYTE LPARZ * ( [2167] CB1C 29 TEXT ')' [2168] CB1D B6 BYTE RPARZ * ) [2169] CB1E 2A TEXT '*' [2170] CB1F C3 BYTE MULTZ * * [2171] CB20 2B TEXT '+' [2172] CB21 C1 BYTE PLUSZ * + [2173] CB22 2C TEXT ',' [2174] CB23 B3 BYTE COMMAZ * , [2175] CB24 2D TEXT '-' [2176] CB25 C2 BYTE MINUSZ * - [2177] CB26 2F TEXT '/' [2178] CB27 C4 BYTE DIVIZ * / [2179] CB28 3A TEXT ':' [2180] CB29 B5 BYTE COLONZ * : [2181] CB2A 3B TEXT ';' [2182] CB2B B4 BYTE SEMICZ * ; [2183] CB2C 3C TEXT '<' [2184] CB2D BF BYTE LESSZ * < [2185] CB2E 3D TEXT '=' [2186] CB2F BE BYTE EQUALZ * = [2187] CB30 3E TEXT '>' [2188] CB31 C0 BYTE GREATZ * > [2189] CB32 5E TEXT '^' [2190] CB33 C5 BYTE CIRCUZ * ^ [2191] CB34 FF BYTE >FF [2192] CB35 3A,3A CHAR2 TEXT '::' [2193] CB37 82 BYTE SSEPZ * :: [2194] CB38 41,54 TEXT 'AT' [2195] CB3A F0 BYTE ATZ * AT 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0039 EQUATES ALCS-359 [2196] CB3B 47,4F TEXT 'GO' [2197] CB3D 85 BYTE GOZ * GO * RXB MOTION [2198] CB3E 49,46 TEXT 'IF' [2199] CB40 84 BYTE IFZ * IF [2200] CB41 4F,4E TEXT 'ON' [2201] CB43 9B BYTE ONZ * ON * ONKEY [2202] CB44 4F,52 TEXT 'OR' [2203] CB46 BA BYTE ORZ * OR [2204] CB47 50,49 TEXT 'PI' [2205] CB49 DD BYTE PIZ * PI [2206] CB4A 54,4F TEXT 'TO' [2207] CB4C B1 BYTE TOZ * TO [2208] CB4D FF BYTE >FF [2209] CB4E 41,42,53 CHAR3 TEXT 'ABS' [2210] CB51 CB BYTE ABSZ * ABS [2211] CB52 41,4C,4C TEXT 'ALL' [2212] CB55 EC BYTE ALLZ * ALL [2213] CB56 41,4E,44 TEXT 'AND' [2214] CB59 BB BYTE ANDZ * AND [2215] CB5A 41,53,43 TEXT 'ASC' [2216] CB5D DC BYTE ASCZ * ASC [2217] CB5E 41,54,4E TEXT 'ATN' [2218] CB61 CC BYTE ATNZ * ATN [2219] CB62 42,59,45 TEXT 'BYE' [2220] CB65 03 BYTE >03 * BYE [2221] CB66 43,4F,4E TEXT 'CON' [2222] CB69 01 BYTE >01 * CONtinue [2223] CB6A 43,4F,53 TEXT 'COS' [2224] CB6D CD BYTE COSZ * COS [2225] CB6E 44,45,46 TEXT 'DEF' [2226] CB71 89 BYTE DEFZ * DEF [2227] * GKXB added token [2228] CB72 44,45,4C TEXT 'DEL' [2229] CB75 09 BYTE >09 * DEL [2230] CB76 44,49,4D TEXT 'DIM' [2231] CB79 8A BYTE DIMZ * DIM [2232] CB7A 45,4E,44 TEXT 'END' [2233] CB7D 8B BYTE ENDZ * END [2234] CB7E 45,4F,46 TEXT 'EOF' [2235] CB81 CA BYTE EOFZ * EOF [2236] CB82 45,58,50 TEXT 'EXP' [2237] CB85 CE BYTE EXPZZ * EXP [2238] CB86 46,4F,52 TEXT 'FOR' [2239] CB89 8C BYTE FORZ * FOR [2240] CB8A 49,4E,54 TEXT 'INT' [2241] CB8D CF BYTE INTZ * INT [2242] CB8E 4C,45,4E TEXT 'LEN' [2243] CB91 D5 BYTE LENZ * LEN [2244] CB92 4C,45,54 TEXT 'LET' [2245] CB95 8D BYTE LETZ * LET [2246] CB96 4C,4F,47 TEXT 'LOG' [2247] CB99 D0 BYTE LOGZ * LOG [2248] CB9A 4D,41,58 TEXT 'MAX' [2249] CB9D DF BYTE MAXZ * MAX [2250] CB9E 4D,49,4E TEXT 'MIN' [2251] CBA1 E0 BYTE MINZ * MIN [2252] CBA2 4E,45,57 TEXT 'NEW' [2253] CBA5 00 BYTE >00 * NEW * RXB CALL NEW [2254] CBA6 4E,4F,54 TEXT 'NOT' [2255] CBA9 BD BYTE NOTZ * NOT [2256] CBAA 4E,55,4D TEXT 'NUM' [2257] CBAD 04 BYTE >04 * NUMber [2258] CBAE 4F,4C,44 TEXT 'OLD' [2259] CBB1 05 BYTE >05 * OLD 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0040 EQUATES ALCS-359 [2260] CBB2 50,4F,53 TEXT 'POS' [2261] CBB5 D9 BYTE POSZ * POS [2262] CBB6 52,45,43 TEXT 'REC' [2263] CBB9 DE BYTE RECZ * REC [2264] CBBA 52,45,4D TEXT 'REM' [2265] CBBD 9A BYTE REMZ * REMark [2266] CBBE 52,45,53 TEXT 'RES' [2267] CBC1 06 BYTE >06 * RESequence [2268] CBC2 52,4E,44 TEXT 'RND' [2269] CBC5 D7 BYTE RNDZ * RND [2270] * RXB PATCH CODE [2271] CBC6 52,41,4E TEXT 'RAN' [2272] CBC9 E2 BYTE RANZ * RAN * RXB RND [2273] CBCA 52,55,4E TEXT 'RUN' [2274] CBCD A9 BYTE RUNZ * RUN [2275] CBCE 53,47,4E TEXT 'SGN' [2276] CBD1 D1 BYTE SGNZZ * SGN [2277] CBD2 53,49,4E TEXT 'SIN' [2278] CBD5 D2 BYTE SINZ * SIN [2279] CBD6 53,51,52 TEXT 'SQR' [2280] CBD9 D3 BYTE SQRZ * SQR [2281] CBDA 53,55,42 TEXT 'SUB' [2282] CBDD A1 BYTE SUBZ * SUB [2283] CBDE 54,41,42 TEXT 'TAB' [2284] CBE1 FC BYTE TABZ * TAB [2285] CBE2 54,41,4E TEXT 'TAN' [2286] CBE5 D4 BYTE TANZ * TAN [2287] CBE6 56,41,4C TEXT 'VAL' [2288] CBE9 DA BYTE VALZ * VAL [2289] CBEA 58,4F,52 TEXT 'XOR' [2290] CBED BC BYTE XORZ * XOR [2291] CBEE FF BYTE >FF [2292] CBEF 42,41,53 CHAR4 TEXT 'BASE' CBF2 45 [2293] CBF3 F1 BYTE BASEZ * BASE [2294] CBF4 42,45,45 TEXT 'BEEP' CBF7 50 [2295] CBF8 EE BYTE BEEPZ * BEEP [2296] CBF9 43,41,4C TEXT 'CALL' CBFC 4C [2297] CBFD 9D BYTE CALLZ * CALL [2298] CBFE 43,48,52 TEXT 'CHR$' CC01 24 [2299] CC02 D6 BYTE CHRZZ * CHR$ [2300] * GKXB added token [2301] CC03 43,4F,50 TEXT 'COPY' CC06 59 [2302] CC07 0A BYTE >0A * COPY [2303] CC08 44,41,54 TEXT 'DATA' CC0B 41 [2304] CC0C 93 BYTE DATAZ * DATA [2305] CC0D 45,4C,53 TEXT 'ELSE' CC10 45 [2306] CC11 81 BYTE ELSEZ * ELSE [2307] CC12 47,4F,54 TEXT 'GOTO' CC15 4F [2308] CC16 86 BYTE GOTOZ * GOTO * RXB ONKEY [2309] CC17 4C,49,53 TEXT 'LIST' CC1A 54 [2310] CC1B 02 BYTE >02 * LIST [2311] * GKXB added token [2312] CC1C 4D,4F,56 TEXT 'MOVE' CC1F 45 [2313] CC20 0B BYTE >0B * MOVE 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0041 EQUATES ALCS-359 [2314] CC21 4E,45,58 TEXT 'NEXT' CC24 54 [2315] CC25 96 BYTE NEXTZ * NEXT [2316] CC26 4F,50,45 TEXT 'OPEN' CC29 4E [2317] CC2A 9F BYTE OPENZ * OPEN [2318] CC2B 52,45,41 TEXT 'READ' CC2E 44 [2319] CC2F 97 BYTE READZ * READ [2320] CC30 52,50,54 TEXT 'RPT$' CC33 24 [2321] CC34 E1 BYTE RPTZZ * RPT$ [2322] CC35 53,41,56 TEXT 'SAVE' CC38 45 [2323] CC39 07 BYTE >07 * SAVE * RXB SAVE IV254 [2324] CC3A 53,45,47 TEXT 'SEG$' CC3D 24 [2325] CC3E D8 BYTE SEGZZ * SEG$ [2326] CC3F 53,49,5A TEXT 'SIZE' CC42 45 [2327] CC43 EB BYTE SIZEZ * SIZE * RXB CALL SIZE [2328] CC44 53,54,45 TEXT 'STEP' CC47 50 [2329] CC48 B2 BYTE STEPZ * STEP [2330] CC49 53,54,4F TEXT 'STOP' CC4C 50 [2331] CC4D 98 BYTE STOPZ * STOP * RXB MOTION [2332] CC4E 53,54,52 TEXT 'STR$' CC51 24 [2333] CC52 DB BYTE STRZZ * STR$ [2334] CC53 54,48,45 TEXT 'THEN' CC56 4E [2335] CC57 B0 BYTE THENZ * THEN [2336] CC58 FF BYTE >FF [2337] CC59 42,52,45 CHAR5 TEXT 'BREAK' CC5C 41,4B [2338] CC5E 8E BYTE BREAKZ * BREAK [2339] CC5F 43,4C,4F TEXT 'CLOSE' CC62 53,45 [2340] CC64 A0 BYTE CLOSEZ * CLOSE [2341] CC65 44,49,47 TEXT 'DIGIT' CC68 49,54 [2342] CC6A E9 BYTE DIGITZ * DIGIT [2343] CC6B 45,52,41 TEXT 'ERASE' CC6E 53,45 [2344] CC70 EF BYTE ERASEZ * ERASE [2345] CC71 45,52,52 TEXT 'ERROR' CC74 4F,52 [2346] CC76 A5 BYTE ERRORZ * ERROR [2347] CC77 46,49,58 TEXT 'FIXED' CC7A 45,44 [2348] CC7C FA BYTE FIXEDZ * FIXED [2349] CC7D 47,4F,53 TEXT 'GOSUB' CC80 55,42 [2350] CC82 87 BYTE GOSUBZ * GOSUB [2351] CC83 49,4D,41 TEXT 'IMAGE' CC86 47,45 [2352] CC88 A3 BYTE IMAGEZ * IMAGE [2353] CC89 49,4E,50 TEXT 'INPUT' CC8C 55,54 [2354] CC8E 92 BYTE INPUTZ * INPUT [2355] CC8F 4D,45,52 TEXT 'MERGE' CC92 47,45 [2356] CC94 08 BYTE >08 * MERGE 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0042 EQUATES ALCS-359 [2357] CC95 50,52,49 TEXT 'PRINT' CC98 4E,54 [2358] CC9A 9C BYTE PRINTZ * PRINT [2359] CC9B 54,52,41 TEXT 'TRACE' CC9E 43,45 [2360] CCA0 90 BYTE TRACEZ * TRACE [2361] CCA1 55,53,49 TEXT 'USING' CCA4 4E,47 [2362] CCA6 ED BYTE USINGZ * USING [2363] CCA7 FF BYTE >FF [2364] CCA8 41,43,43 CHAR6 TEXT 'ACCEPT' CCAB 45,50,54 [2365] CCAE A4 BYTE ACCEPZ * ACCEPT [2366] CCAF 41,50,50 TEXT 'APPEND' CCB2 45,4E,44 [2367] CCB5 F9 BYTE APPENZ * APPEND [2368] CCB6 44,45,4C TEXT 'DELETE' CCB9 45,54,45 [2369] CCBC 99 BYTE DELETZ * DELETE [2370] CCBD 4C,49,4E TEXT 'LINPUT' CCC0 50,55,54 [2371] CCC3 AA BYTE LINPUZ * LINPUT [2372] CCC4 4E,55,4D TEXT 'NUMBER' CCC7 42,45,52 [2373] CCCA 04 BYTE >04 * NUMBER [2374] CCCB 4F,50,54 TEXT 'OPTION' CCCE 49,4F,4E [2375] CCD1 9E BYTE OPTIOZ * OPTION [2376] CCD2 4F,55,54 TEXT 'OUTPUT' CCD5 50,55,54 [2377] CCD8 F7 BYTE OUTPUZ * OUTPUT [2378] CCD9 52,45,54 TEXT 'RETURN' CCDC 55,52,4E [2379] CCDF 88 BYTE RETURZ * RETURN [2380] CCE0 53,55,42 TEXT 'SUBEND' CCE3 45,4E,44 [2381] CCE6 A8 BYTE SUBNDZ * SUBEND [2382] CCE7 55,41,4C TEXT 'UALPHA' CCEA 50,48,41 [2383] CCED EA BYTE UALPHZ * UALPHA [2384] CCEE 55,50,44 TEXT 'UPDATE' CCF1 41,54,45 [2385] CCF4 F8 BYTE UPDATZ * UPDATE [2386] CCF5 FF BYTE >FF [2387] CCF6 44,49,53 CHAR7 TEXT 'DISPLAY' CCF9 50,4C,41 CCFC 59 [2388] CCFD A2 BYTE DISPLZ * DISPLAY [2389] CCFE 4E,55,4D TEXT 'NUMERIC' CD01 45,52,49 CD04 43 [2390] CD05 E8 BYTE NUMERZ * NUMERIC [2391] CD06 52,45,53 TEXT 'RESTORE' CD09 54,4F,52 CD0C 45 [2392] CD0D 94 BYTE RESTOZ * RESTORE [2393] CD0E 53,55,42 TEXT 'SUBEXIT' CD11 45,58,49 CD14 54 [2394] CD15 A7 BYTE SUBXTZ * SUBEXIT [2395] CD16 55,4E,42 TEXT 'UNBREAK' CD19 52,45,41 CD1C 4B [2396] CD1D 8F BYTE UNBREZ * UNBREAK 99/4 GPL-ASSEMBLER (Pass 3) correct PAGE 0043 EQUATES ALCS-359 [2397] CD1E 55,4E,54 TEXT 'UNTRACE' CD21 52,41,43 CD24 45 [2398] CD25 91 BYTE UNTRAZ * UNTRACE [2399] CD26 57,41,52 TEXT 'WARNING' CD29 4E,49,4E CD2C 47 [2400] CD2D A6 BYTE WARNZ * WARNING [2401] CD2E FF BYTE >FF [2402] CD2F 43,4F,4E CHAR8 TEXT 'CONTINUE' CD32 54,49,4E CD35 55,45 [2403] CD37 01 BYTE >01 * CONTINUE [2404] CD38 49,4E,54 TEXT 'INTERNAL' CD3B 45,52,4E CD3E 41,4C [2405] CD40 F5 BYTE INTERZ * INTERNAL [2406] CD41 52,45,4C TEXT 'RELATIVE' CD44 41,54,49 CD47 56,45 [2407] CD49 F4 BYTE RELATZ * RELATIVE [2408] CD4A 56,41,4C TEXT 'VALIDATE' CD4D 49,44,41 CD50 54,45 [2409] CD52 FE BYTE VALIDZ * VALIDATE [2410] CD53 56,41,52 TEXT 'VARIABLE' CD56 49,41,42 CD59 4C,45 [2411] CD5B F3 BYTE VARIAZ * VARIABLE [2412] CD5C FF BYTE >FF [2413] CD5D 52,41,4E CHAR9 TEXT 'RANDOMIZE' CD60 44,4F,4D CD63 49,5A,45 [2414] CD66 95 BYTE RANDOZ * RANDOMIZE [2415] CD67 FF BYTE >FF [2416] CD68 53,45,51 CHARA TEXT 'SEQUENTIAL' CD6B 55,45,4E CD6E 54,49,41 CD71 4C [2417] CD72 F6 BYTE SEQUEZ * SEQUENTIAL [2418] CD73 FF BYTE >FF [2419] *********************************************************** [2420] * RXB PATCH CODE FILLER BYTE ****************************** [2421] CD74 00,00,00 BYTE >00,>00,>00 [2422] * GROM ADDRESS >CD77 FOR ERRTAB [2423] *********************************************************** [2424] * ERRTAB - Error table containing all of the error messages [2425] * error numbers and the severity code for each [2426] * error. The error call number is the data byte [2427] * that must follow the CALL ERRZZ or CALL WARNZZ. [2428] * Messages with severity of zero are system [2429] * messages and not error messages. [2430] * [2431] * Message, Error #, Severity CALL # [2432] *********************************************************** Thus I am going to have to move some stuff in GPL and add HEX to XB ROMs. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 6, 2018 Share Posted December 6, 2018 Looking at other commands that can be added like HEX(string) or HEX(decimal) it occured to me I could add: BEEP does same as CALL BEEP HONK does same as CALL HONK BIAS(-string) or BIAS(+string) this removes or adds screen bias from a string off screen or put on screen INVERSE(character-code) this will inverse the definition of a character from on dots to off dots Also: BASIC justs goes to TI Basic BYE same as CALL BYE FILES(number) same as CALL FILES(number) NEW same as CALL NEW SIZE same as CALL SIZE XB("pathname.filename") or XB this is like RUN but works with strings. These are all RXB commands so a new RXB Manual will be required and new Demo programs re-written. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 7, 2018 Share Posted December 7, 2018 Well post I put up before this showed the listing XB ROMs use to find the KEYWORD you put in like say PRINT or CALL CLEAR as it looks for PRINT or CALL in the list first. Previously in new version of RXB I have changed all routines under CALL "whatever" to put the most often called at top of list to speed up execution of RXB in XB programs. Now here is the new XB ROMs keyword search list and you will notice that it is no longer alphabetically listed like from Texas Instruments anymore. It is ordered by most often used or searched commands at top and least at bottom so should provide a slight speed increase in RXB vs XB. CHAR1 TEXT '!' BYTE TREMZ * ! TEXT '=' BYTE EQUALZ * = TEXT '(' BYTE LPARZ * ( TEXT ')' BYTE RPARZ * ) TEXT '#' BYTE NUMBEZ * # TEXT ':' BYTE COLONZ * : TEXT ';' BYTE SEMICZ * ; TEXT '*' BYTE MULTZ * * TEXT '+' BYTE PLUSZ * + TEXT ',' BYTE COMMAZ * , TEXT '-' BYTE MINUSZ * - TEXT '/' BYTE DIVIZ * / TEXT '<' BYTE LESSZ * < TEXT '>' BYTE GREATZ * > TEXT '^' BYTE CIRCUZ * ^ BYTE >FF CHAR2 TEXT '::' BYTE SSEPZ * :: TEXT 'IF' BYTE IFZ * IF TEXT 'ON' BYTE ONZ * ON * RXB ONKEY TEXT 'TO' BYTE TOZ * TO TEXT 'OR' BYTE ORZ * OR TEXT 'PI' BYTE PIZ * PI BYTE >FF CHAR3 TEXT 'RND' BYTE RNDZ * RND * RXB CHANGED TEXT 'FOR' BYTE FORZ * FOR TEXT 'INT' BYTE INTZ * INT TEXT 'SUB' BYTE SUBZ * SUB TEXT 'REM' BYTE REMZ * REMark TEXT 'AND' BYTE ANDZ * AND TEXT 'NOT' BYTE NOTZ * NOT TEXT 'XOR' BYTE XORZ * XOR TEXT 'LEN' BYTE LENZ * LEN TEXT 'ASC' BYTE ASCZ * ASC TEXT 'POS' BYTE POSZ * POS TEXT 'VAL' BYTE VALZ * VAL TEXT 'SGN' BYTE SGNZZ * SGN TEXT 'TAB' BYTE TABZ * TAB TEXT 'ALL' BYTE ALLZ * ALL TEXT 'MAX' BYTE MAXZ * MAX TEXT 'MIN' BYTE MINZ * MIN TEXT 'ABS' BYTE ABSZ * ABS TEXT 'SQR' BYTE SQRZ * SQR TEXT 'TAN' BYTE TANZ * TAN TEXT 'ATN' BYTE ATNZ * ATN TEXT 'SIN' BYTE SINZ * SIN TEXT 'LOG' BYTE LOGZ * LOG TEXT 'EXP' BYTE EXPZZ * EXP TEXT 'COS' BYTE COSZ * COS TEXT 'ALL' BYTE EOFZ * EOF TEXT 'REC' BYTE RECZ * REC TEXT 'DIM' BYTE DIMZ * DIM TEXT 'DEF' BYTE DEFZ * DEF TEXT 'RUN' BYTE RUNZ * RUN TEXT 'CON' BYTE >01 * CONtinue TEXT 'RES' BYTE >06 * RESequence TEXT 'NUM' BYTE >04 * NUMber * GKXB added token TEXT 'DEL' BYTE >09 * DEL TEXT 'NEW' BYTE >00 * NEW * RXB CALL NEW TEXT 'END' BYTE ENDZ * END TEXT 'OLD' BYTE >05 * OLD * RXB SAMS TEXT 'BYE' BYTE >03 * BYE BYTE >FF CHAR4 TEXT 'CALL' BYTE CALLZ * CALL TEXT 'GOTO' BYTE GOTOZ * GOTO * RXB ONKEY TEXT 'NEXT' BYTE NEXTZ * NEXT TEXT 'THEN' BYTE THENZ * THEN TEXT 'STEP' BYTE STEPZ * STEP TEXT 'ELSE' BYTE ELSEZ * ELSE TEXT 'SEG$' BYTE SEGZZ * SEG$ TEXT 'CHR$' BYTE CHRZZ * CHR$ TEXT 'STR$' BYTE STRZZ * STR$ TEXT 'RPT$' BYTE RPTZZ * RPT$ TEXT 'BEEP' BYTE BEEPZ * BEEP TEXT 'DATA' BYTE DATAZ * DATA TEXT 'READ' BYTE READZ * READ TEXT 'OPEN' BYTE OPENZ * OPEN TEXT 'BASE' BYTE BASEZ * BASE TEXT 'STOP' BYTE STOPZ * STOP * RXB MOTION TEXT 'SIZE' BYTE SIZEZ * SIZE * RXB CALL SIZE TEXT 'LIST' BYTE >02 * LIST TEXT 'SAVE' BYTE >07 * SAVE * RXB SAVE IV254 * GKXB added token TEXT 'COPY' BYTE >0A * COPY * GKXB added token TEXT 'MOVE' BYTE >0B * MOVE BYTE >FF CHAR5 TEXT 'GOSUB' BYTE GOSUBZ * GOSUB TEXT 'PRINT' BYTE PRINTZ * PRINT TEXT 'INPUT' BYTE INPUTZ * INPUT TEXT 'ERROR' BYTE ERRORZ * ERROR TEXT 'DIGIT' BYTE DIGITZ * DIGIT TEXT 'ERASE' BYTE ERASEZ * ERASE TEXT 'USING' BYTE USINGZ * USING TEXT 'IMAGE' BYTE IMAGEZ * IMAGE TEXT 'CLOSE' BYTE CLOSEZ * CLOSE TEXT 'FIXED' BYTE FIXEDZ * FIXED TEXT 'BREAK' BYTE BREAKZ * BREAK TEXT 'TRACE' BYTE TRACEZ * TRACE TEXT 'MERGE' BYTE >08 * MERGE BYTE >FF CHAR6 TEXT 'RETURN' BYTE RETURZ * RETURN TEXT 'SUBEND' BYTE SUBNDZ * SUBEND TEXT 'ACCEPT' BYTE ACCEPZ * ACCEPT TEXT 'LINPUT' BYTE LINPUZ * LINPUT TEXT 'NUMBER' BYTE >04 * NUMBER TEXT 'UALPHA' BYTE UALPHZ * UALPHA TEXT 'OUTPUT' BYTE OUTPUZ * OUTPUT TEXT 'APPEND' BYTE APPENZ * APPEND TEXT 'UPDATE' BYTE UPDATZ * UPDATE TEXT 'OPTION' BYTE OPTIOZ * OPTION TEXT 'DELETE' BYTE DELETZ * DELETE BYTE >FF CHAR7 TEXT 'DISPLAY' BYTE DISPLZ * DISPLAY TEXT 'NUMERIC' BYTE NUMERZ * NUMERIC TEXT 'SUBEXIT' BYTE SUBXTZ * SUBEXIT TEXT 'RESTORE' BYTE RESTOZ * RESTORE TEXT 'UNBREAK' BYTE UNBREZ * UNBREAK TEXT 'UNTRACE' BYTE UNTRAZ * UNTRACE TEXT 'WARNING' BYTE WARNZ * WARNING BYTE >FF CHAR8 TEXT 'INTERNAL' BYTE INTERZ * INTERNAL TEXT 'RELATIVE' BYTE RELATZ * RELATIVE TEXT 'VALIDATE' BYTE VALIDZ * VALIDATE TEXT 'VARIABLE' BYTE VARIAZ * VARIABLE TEXT 'CONTINUE' BYTE >01 * CONTINUE BYTE >FF CHAR9 TEXT 'RANDOMIZE' BYTE RANDOZ * RANDOMIZE BYTE >FF CHARA TEXT 'SEQUENTIAL' BYTE SEQUEZ * SEQUENTIAL BYTE >FF *********************************************************** 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 10, 2018 Share Posted December 10, 2018 Ok update CRASHED OVER AND OVER....???? Well in XB ROMs it turns out: 1) Keyword search list first single token must be ! (REMARK) others are like # or , or : or ; or & .... 2) Keyword search list two token must be TO (as in for x=2 TO y) others are like IF or ON or OR or PI or :: or AT ... So clearly I need to remake XB ROMs and wish I had some help as Assembly is not my thing! Anyhow here is something I did not know XB ROMs do at every statement it scans keyboard for BREAK KEY. 1013 6542 EXEC15 EQU $ 1014 6544 C3 EQU $+2 Constant data 3 1015 6545 CB3 EQU $+3 Constant byte 3 1016 6542 0300 LIMI 3 Let interrupts loose 6544 0003 1017 6548 C0 EQU $+2 Constant data 0 99/4 ASSEMBLER PARSES PAGE 0022 1018 6546 0300 LIMI 0 Shut down interrupts 6548 0000 1019 654A 04E0 CLR @>83D6 Reset VDP timeout 654C 83D6 1020 654E 020C LI R12,>24 Load console KBD address in CR 6550 0024 1021 6552 30E0 LDCR @C0,3 Select keyboard section 6554 6548 1022 6556 020C LI R12,6 Read address 6558 0006 1023 655A 3600 STCR R0,8 SCAN the keyboard 1024 655C 2420 CZC @C1000,R0 Shift-key depressed? 655E 600A 1025 6560 160A JNE EXEC16 No, execute the Basic statemen 1026 6562 020C LI R12,>24 Test column 3 of keyboard 6564 0024 1027 6566 30E0 LDCR @CB3,3 Select keyboard section 6568 6545 1028 656A 020C LI R12,6 Read address 656C 0006 1029 656E 3600 STCR R0,8 SCAN the keyboard 1030 6570 2420 CZC @C1000,R0 Shift-C depressed? 6572 600A 1031 6574 132E JEQ BRKP1L Yes, so take Basic breakpoint 1032 6576 C820 EXEC16 MOV @PGMPTR,@SMTSRT Save start of statement 6578 832C 657A 831E 1033 657C 05C9 INCT R9 Get subroutine stack space 1034 657E C660 MOV @EXRTNA,*R9 Save the GPL return address 6580 6466 1035 6582 06A0 BL @PGMCHR Now get 1st character of stmt 6584 6C74 1036 6586 1320 JEQ EXRTN3 If EOL after EOS 1037 6588 1102 EXEC17 JLT EXEC20 If top bit set->keyword 1038 658A 0460 B @NLET If not->fake a 'LET' stmt 658C 6948 1039 658E C1C8 EXEC20 MOV R8,R7 Save 1st token so can get 2nd 1040 6590 05A0 INC @PGMPTR Increment the perm pointer 6592 832C 1041 6594 D21A MOVB *R10,R8 Read the character 1042 6596 0977 SRL R7,7 Convert 1st to table offset 1043 6598 0227 AI R7,->AA*2 Check for legal stmt token 659A FEAC 1044 659C 1558 JGT ERRONE Not in range -> error 1045 659E C1E7 MOV @STMTTB(R7),R7 Get address of stmt handler 65A0 69FC 1046 65A2 118F JLT P17L If top bit set -> GROM code 1047 65A4 0457 B *R7 If 9900 code, goto it! 1048 65A6 83 EXRTN BYTE >83 Unused bytes for data constant 1049 65A7 65 CBH65 BYTE >65 since NUDEND skips precedence 1050 65A8 0288 CI R8,SSEPZ*256 EOS only? 65AA 8200 1051 65AC 13CA JEQ EXEC15 Yes, continue on this line 1052 65AE D020 EXRTN2 MOVB @PRGFLG,R0 Did we execute an imperative 65B0 8344 1053 65B2 1351 JEQ EXEC50 Yes, so return to top-level 1054 65B4 6820 S @C4,@EXTRAM No, so goto the next line 65B6 6A80 65B8 832E 99/4 ASSEMBLER PARSES PAGE 0023 1055 65BA 8820 C @EXTRAM,@STLN Check to see if end of program 65BC 832E 65BE 8330 1056 65C0 14A6 JHE EXEC10 No, so loop for the next line 1057 65C2 1049 JMP EXEC50 Yes, so return to top-level 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 10, 2018 Share Posted December 10, 2018 While exploring why my *REM w/CTRL CHARS deviation* operates as such... I was reviewing GROM 0 in TI INTERN... I speculated that the type of entries a user might make in a REM statement would be misinterpreted by the previous routines of the interpreter if the REM routine were repositioned after those routines. It seems as though the different ranges of ASCII chars are considered in order of groupings e.g. (0-31)(31-127)(128-255). I noticed a similar handling of codes in the speech allophone table. Hmm... Just some abstract observations... bear in mind that I am not very familiar with the GPL op-codes.I have a strong aversion to TI BASIC and XP, I once wrote all my AUTOMATION PROGRAMING in TI BASIC making heavy use of ARRAYS, NUMERIC and STRING FUNCTIONS and one extremly long and complex USER DEFINED FUNCTION(to DISPLAY the time in the desired format). TI might have mentioned somwhere in all the literature... that TI basic did not offer anywhere near the level of performance which could be observed in most of their SOLID STATE SOFTWARE. I was very young... working without the benefit of any tutelage... and became convinced the limitations imposed were my own. It was all too slow... I ran out of MEMORY and was discouraged by the prattle from salesman and TIs over the phone help(completely ridiculous in the early years)... Personal and family matters prevailed and all my work was lost(more than once).One thing that I clearly see as a problem between the TI BASICs and ASSY has been the constant need to convert between DECIMAL and HEX. I Think it's a good move that you are addressing this issue. I do like the direction your going in!... I have just had to laugh at the results of my own assessment of XBs early attempts to control/detect sprites(considering how slowly XB STATEMENTS EXECUTE reletive to MACHINE LANGUAGE)... however as of late, programmers here seem to be getting some decent results.I'm trying to follow your issue with MEMORY PAGING, as I have no experience with this and am now confronting muti-page PROGRAMMING on the FG99. I am just inventing my own system now... but you have to operate within an established set of rules. Keep up the good work! P.S. I hope I didn't go to far O.T. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 10, 2018 Share Posted December 10, 2018 (edited) The GPL listing for search of what you typed into XB for routines is not Alpha Numeric or any any given order. Example is frist tokens are not in any give order but just pretty random: [2159] CB14 21 CHAR1 TEXT '!' [2160] CB15 83 BYTE TREMZ * ! [2161] CB16 23 TEXT '#' [2162] CB17 FD BYTE NUMBEZ * # [2163] CB18 26 TEXT '&' [2164] CB19 B8 BYTE CONCZ * & [2165] CB1A 28 TEXT '(' [2166] CB1B B7 BYTE LPARZ * ( [2167] CB1C 29 TEXT ')' [2168] CB1D B6 BYTE RPARZ * ) [2169] CB1E 2A TEXT '*' [2170] CB1F C3 BYTE MULTZ * * [2171] CB20 2B TEXT '+' [2172] CB21 C1 BYTE PLUSZ * + [2173] CB22 2C TEXT ',' [2174] CB23 B3 BYTE COMMAZ * , [2175] CB24 2D TEXT '-' [2176] CB25 C2 BYTE MINUSZ * - [2177] CB26 2F TEXT '/' [2178] CB27 C4 BYTE DIVIZ * / [2179] CB28 3A TEXT ':' [2180] CB29 B5 BYTE COLONZ * : [2181] CB2A 3B TEXT ';' [2182] CB2B B4 BYTE SEMICZ * ; [2183] CB2C 3C TEXT '<' [2184] CB2D BF BYTE LESSZ * < [2185] CB2E 3D TEXT '=' [2186] CB2F BE BYTE EQUALZ * = [2187] CB30 3E TEXT '>' [2188] CB31 C0 BYTE GREATZ * > [2189] CB32 5E TEXT '^' [2190] CB33 C5 BYTE CIRCUZ * ^ [2191] CB34 FF BYTE >FF [2192] CB35 3A,3A CHAR2 TEXT '::' The list goes from >83 the ! to >FD the # which is second to >B8 the & which is third in list so no order at all. But I did discover that the XB ROMs are picky about some of the order used, thus I have to be careful as to changing the rankings. As for SAMS RAM paging I am using GPL that has the advantage of not needing a RAM address to remember pages being used or switched. Edited December 10, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 10, 2018 Share Posted December 10, 2018 I was thinking of making numerous ROMs for RXB (XB) current switch method could up updated... 0207 ************************************************************ 0208 6000 AORG >6000 0210 0211 * PAGE SELECTOR FOR PAGE 1 0212 6000 PAGE1 EQU $ >6000 0213 6000 0002 C2 DATA 2 0 0214 * PAGE SELECTOR FOR PAGE 2 0215 6002 PAGE2 EQU $ >6002 0216 6002 00 C7 BYTE >00 0217 6003 07 CBH7 BYTE >07 2 0218 6004 0A CBHA BYTE >0A 0219 6005 94 CBH94 BYTE >94 4 0220 6006 0028 C40 DATA 40 6 0221 6008 0064 C100 DATA 100 8 0222 600A 1000 C1000 DATA >1000 A 0223 600C 0000 DATA 0 C 0224 600E 4001 FLTONE DATA >4001 E 0225 ************************************************************ 0226 * XML table number 7 for Extended Basic - must have 0227 * it's origin at >6010 0228 ************************************************************ 0229 * 0 1 2 3 4 5 6 0230 6010 619C DATA COMPCG,GETSTG,MEMCHG,CNSSEL,PARSEG,CONTG,EXECG 6012 61A2 6014 72CE 6016 6070 6018 6470 601A 64C4 601C 6500 0231 * 7 8 9 A B C D 0232 601E 61BA DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,ASSGNV,FBSYMB 6020 6C2A 99/4 ASSEMBLER XML359 PAGE 0005 6022 6410 6024 61B4 6026 61A8 6028 61AE 602A 618C 0233 * E F 0234 602C 6EE2 DATA SPEED,CRNSEL 602E 6076 0235 ************************************************************ 0236 * XML table number 8 for Extended Basic - must have 0237 * it's origin at >6030 0238 ************************************************************ 0239 * 0 1 2 3 4 5 6 7 0240 6030 74AA DATA CIF,CONTIN,RTNG,SCROLL,IO,GREAD,GWRITE,DELREP 6032 65CC 6034 6630 6036 7ADA 6038 7B48 603A 7EB4 603C 7ED8 603E 7EF4 0241 * 8 9 A B C D E 0242 6040 7F7E DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,GDTECT 6042 6F98 6044 7FC0 6046 7FDA 6048 7EA6 604A 7ECA 604C 6050 0243 * F 0244 604E 7C56 DATA PSCAN 0245 0246 * Determine if and how much ERAM is present 0247 6050 D80B GDTECT MOVB R11,@PAGE1 First enable page 1 ROM 6052 6000 0248 *----------------------------------------------------------- 0249 * Replace following line 6/16/81 0250 * (Extended Basic must be made to leave enough space at 0251 * top of RAM expansion for the "hooks" left by the 99/4A 0252 * for TIBUG.) 0253 * SETO R0 Start at >FFFF 0254 * with 0255 6054 0200 LI R0,>FFE7 Start at >FFE7 6056 FFE7 0256 *----------------------------------------------------------- 0257 6058 D40B MOVB R11,*R0 Write a byte of data 0258 605A 940B CB R11,*R0 Read and compare the data 0259 605C 1306 JEQ DTECT2 If matches-found ERAM top 0260 *----------------------------------------------------------- 0261 * Change the following line 6/16/81 0262 * AI R0,->2000 Else drop down 8K 0263 605E 0200 LI R0,>DFFF Else drop down 8K 6060 DFFF 0264 *----------------------------------------------------------- 0265 6062 D40B MOVB R11,*R0 Write a byte of data 0266 6064 940B CB R11,*R0 Read and compare the data 0267 6066 1301 JEQ DTECT2 If matches-found ERAM top 0268 6068 04C0 CLR R0 No match so no ERAM 0269 606A C800 DTECT2 MOV R0,@RAMTOP Set the ERAM top 99/4 ASSEMBLER XML359 PAGE 0006 606C 8384 0270 606E 045B RT And return to GPL Now >6010 and >6030 have to remain in exact location for Lower 8K assembly programs and EA manual using Assembly in XB, but >6000 to >600F could be used for bank switching 14 more banks of 8K banks or upper 4K banks. I can move >6004 to >600F to some where else in XB ROMs there is 20 bytes open in XB ROMS, or use exiting values. For additional XB ROMs that upgrade XB the lower 4K of XB ROM would have to be duplicates for a 8K switching. Thus instead of a write to >6002 being bank 2 of 8K XB ROMs, we could write to >600A and that would be a new XB 8K ROM page. HI again, I'm not sure I'll be of any direct help to you with ASSEMBLY as I am not experienced with interpreter design... but there are aspects of the system I have delved into somewhat. I'm redoing all my AUTOMATION programming in ASSY now. I suppose I'm not a very experienced programmer. I do however have some troubleshooting skills, when rested... a greater question indeed. I was not clear... but I was referring to the MEMORY PAGING (BANK SWITCHING TABLES?) used on the XB ROMS. If I can't help, I would still like to learn more about this technique. P.S. I think your SAMS support will go far with programmers, elevating applications(games) performance expectations. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 11, 2018 Share Posted December 11, 2018 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. So what I am suggesting for new XB ROMs is >6000 to >600F remain the same and this would give XB a total of 8 pages of 8K or 8 pages of upper 4K. Even at 4K each that is 32K of XB ROM which is 20K more then we have now. Examples are Sprites could be upgraded using XB ROM instead of GPL, and additional graphics modes could be created. Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 12, 2018 Share Posted December 12, 2018 I've spent some time looking over your code yesterday and now... It's beginning to drink in... there's a lot of competition for my attention where I am... it sounds to me like you have most of what you need to know... I'm having trouble identifying your dilemma... I know you want to add more routines... it looks like they are organized into look-up tables(XML)... So you want to add more pages of ROM memory to accommodate them... Is the issue adding more physical I.C's to a particular module design or is it reworking the page switching routine(s) for an existing design or to be run from EMUs.I went back to page 1 of this thread and was somewhat overwhelmed by the different directions captioned.Not too sure what you meant by; "remain the same" in the statement: So what I am suggesting for new XB ROMs is >6000 to >600F remain the same and this would give XB a total of 8 pages of 8K or 8 pages of upper 4K. cool. Quote Link to comment Share on other sites More sharing options...
RXB Posted December 12, 2018 Share Posted December 12, 2018 (edited) Yea just need to know how to access to hardware changes work. I have assumed that if the ROM mapping could be expanded by 8 pages of 8K then I could use the additional pages from >6004 to >600E (Two bytes per word) 0211 * PAGE SELECTOR FOR PAGE 1 0212 6000 PAGE1 EQU $ >6000 0213 6000 0002 C2 DATA 2 0 0214 * PAGE SELECTOR FOR PAGE 2 0215 6002 PAGE2 EQU $ >6002 0216 6002 00 C7 BYTE >00 0217 6003 07 CBH7 BYTE >07 2 0218 6004 0A CBHA BYTE >0A 0219 6005 94 CBH94 BYTE >94 4 0220 6006 0028 C40 DATA 40 6 0221 6008 0064 C100 DATA 100 8 0222 600A 1000 C1000 DATA >1000 A 0223 600C 0000 DATA 0 C 0224 600E 4001 FLTONE DATA >4001 E So say GPL calls page 7 by reading >600C it should engage that ROM page 7? Edited December 12, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
Asmusr Posted December 12, 2018 Share Posted December 12, 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. 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted December 12, 2018 Share Posted December 12, 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 pageslooking 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 addressesare 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? Quote Link to comment Share on other sites More sharing options...
+Lee Stewart 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? 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 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.