Jump to content

Photo

RXB - Rich Extended Basic


715 replies to this topic

#701 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Tue Jun 6, 2017 9:39 PM

RXB 2017 or 2018 update progress:

 

(Removing all commands so the XB commands are smaller in number for each CALL done, thus they do double or triple duty for more speed.)

 

1. Removed CALL XBPGM and now CALL XB or CALL XB("DSK#.FILENAME") replaced this command.

 

2. Removed CALL EAPGM, CALL EALR  and CALL EAED now CALL EA or CALL EA("DSK#.FILENAME") replaced these commands.

    (Rich Editor Assembler figures out what kind of file is selected to loads and runs that menu automatically.)    

 

3. Removed CALL AMSBANK and now CALL SAMS(lowbank#,highbank#) replaced this command.

  a. Removed CALL AMSON and now CALL SAMS("ON") replaced this command.

  b. Removed CALL AMSOFF and  now CALL SAMS("OFF") replaced this command.

  c. Removed CALL AMSMAP and now CALL SAMS("MAP") replaced this command.

  d. Removed CALL AMSPASS and now CALL SAMS("PASS") replaced this command.

 

4. Removed CALL AMSINIT as now when RXB boots it sets up SAMS now.

 

5. Removed for lack of use:

    a. CALL DUPCHAR

    b. CALL DUPCOLOR

    c. CALL SWAPCHAR

    d. CALL SWAPCOLOR 

 

6. Repaired CALL FCOPY("DEVICE PATH',"FILENAME","DEVICE PATH","FILENAME") introduced a error in source code I did not see.



#702 Vorticon OFFLINE  

Vorticon

    River Patroller

  • 2,622 posts
  • Location:Eagan, MN, USA

Posted Wed Jun 7, 2017 6:30 AM

RXB 2017 or 2018 update progress:

 

(Removing all commands so the XB commands are smaller in number for each CALL done, thus they do double or triple duty for more speed.)

 

 

5. Removed for lack of use:

    a. CALL DUPCHAR

    b. CALL DUPCOLOR

    c. CALL SWAPCHAR

    d. CALL SWAPCOLOR 

 

 

Rich, I think these commands have a lot of potential and should be preserved. My 2 cents.


  • RXB likes this

#703 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Wed Jun 7, 2017 2:21 PM

 

Rich, I think these commands have a lot of potential and should be preserved. My 2 cents.

Well I could make them 1 command:

 

CALL CHAR(character-code,D or S,character-code)

{ "D" for Duplicate patterns or "S"  for Swap character patterns}

 

CALL COLOR(character-set,D or S,character-set)

{ "D" for Duplicate character-set colors or "S" for Swap character-set colors}

or

CALL COLOR(Spirte#,D or S,Sprite#) 

{ "D" for Duplicate Sprite color and "S" for Swap Sprite colors}

 

This would continue to reduce command numbers in list and not have a huge effect on performance for CHAR or COLOR.

 

NOTE: It occurred I could add in R for REVERSE PATTERN in CALL CHAR, or I for INVERSE turning off pixels that are on and off pixels on.

Example:

CALL CHAR(character-code,R) or CALL CHAR(character-code,I)


Edited by RXB, Wed Jun 7, 2017 2:57 PM.


#704 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Fri Jun 9, 2017 12:22 PM

 

Rich, I think these commands have a lot of potential and should be preserved. My 2 cents.

Ok finished the new version sticking with your request kinda...

 

Normal XB or RXB:

CALL CHAR(char#,pattern-string)

 

RXB 2012 introduced:

CALL CHAR(ALL,pattern-string) ! The replaces all characters from 30 to 159 with the pattern-string

 

RXB current beta

CALL CHAR(DUPLICATE,char#,char#) ! You can use D or DUP or Duplicate the first letter only matters and this duplicates a string-pattern from first char# to second char#

 

CALL CHAR(SWAP,char#,char#) ! You can use S or SWAP or Swap the first letter only matters and this swaps a string-pattern from first char# with second char#



#705 Vorticon OFFLINE  

Vorticon

    River Patroller

  • 2,622 posts
  • Location:Eagan, MN, USA

Posted Fri Jun 9, 2017 4:20 PM

Great! Thanks! When will the new binaries be available?



#706 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Fri Jun 9, 2017 5:27 PM

Great! Thanks! When will the new binaries be available?

Well have a portion of XB ROMs that I am really puzzled about. 

You can find this section in the SOURCE of XB ROMs I posted several times now.....

* R8 (CHAT) = 10 ?                
LN7F8C MOV  R11,R3           *# Save Return address in R3             
LN7F8E MOV  R8,R0            * Put R8 into R0          
LN7F90 LI   R2,>000A         * Put >000A into R2 (>000A = 10)            
LN7F94 AI   R0,>FFD0         * Add >FFD0 into R0              
LN7F98 C    R0,R2            * R0 = R2 ?          
LN7F9A JL   LN7FAC           * Lower jump           
LN7F9C CLR  R0               * Zero out R0         
LN7F9E B    *R3              * RETURN
*                    
LN7FA0 MPY  R2,R0            *# Muliply R2 by R0                
LN7FA2 MOV  R0,R0            * Set status byte?         
LN7FA4 JNE  LN7F48           * Not Equal Error       
LN7FA6 MOV  R1,R0            * PUt R1 into R0          
LN7FA8 A    R8,R0            * Add R8 into R0          
LN7FAA JLT  LN7F48           * Lower Than jump           
LN7FAC BL   @LN6FBA          *# Put word at VARW at VDP Address in R15              
LN7FB0 MOVB R1,*R4           Put MSB R1 into Address MSB R4          
LN7FB2 JEQ  LN7FC0           * Equal jump           
LN7FB4 AI   R8,>FFD0         * Add >FFD0 into R8          
LN7FB8 C    R8,R2            * R8 = R2 ?          
LN7FBA JL   LN7FA0           *# Lower jump             
LN7FBC DEC  @VARW            * VAR0  - 1         
LN7FC0 CLR  R8               *# Zero out R8               
LN7FC2 MOV  R0,R0            *# Set Status byte?              
LN7FC4 JEQ  LN7F48           * Equal jump           
LN7FC6 B    *R3              * RETURN
* 
* TOKEN LIST                 
LN7FC8 BYTE >81              *# (ELSE Token) 12 bytes Called from LN7D38  
LN7FC9 BYTE >85              * (GO Token)
LN7FCA BYTE >86              * (GOTO Token) 
LN7FCB BYTE >87              * (GOSUB Token)      
LN7FCC BYTE >88              * (RETURN Token) 
LN7FCD BYTE ?8E              * (BREAK Token) 
LN7FCE BYTE >8F              * (UNBREAK Token)
LN7FCF BYTE >94              * (RESTORE Token)       
LN7FD0 BYTE >A5              * (ERROR Token)
LN7FD1 BYTE >A9              * (RUN Token)
LN7FD2 BYTE >B0              * (THEN Token) 
LN7FD3 BYTE >ED              * (USING Token) 
*         
LN7FD4 BYTE >FF
LN7FD5 BYTE >00              * #        
LN7FD6 DATA >020C
LN7FD8 DATA >0528             
LN7FDA DATA >0728              
LN7FDE DATA >0828         
LN7FE0 DATA >8200              
LN7FE2 DATA >833C
LN7FE4 DATA >9328        
LN7FE6 DATA >9A3C
LN7FE8 DATA >9D6C     
LN7FEA DATA >A15C
LN7FEC DATA >A322
*
LN7FD4 SOCB R0,*R12+                    >FF00              '..'           7FD4
LN7FD6 LI   R12,>0528                   >020C,>0528        '...('         7FD6
LN7FDA SETO @>0828(R8)                  >0728,>0828        '.(.('         7FDA
LN7FDE C    R0,R8                       >8200              '..'           7FDE
LN7FE0 C    *R12+,R12                   >833C              '.<'           7FE0
LN7FE2 CB   @>9A3C(R8),R12              >9328,>9A3C        '.(.<'         7FE2
LN7FE6 CB   @>A15C(R12),*R5+            >9D6C,>A15C        '.l.\'         7FE6
LN7FEA A    @>FF00(R2),R12              >A322,>FF00        '."..'         7FEA
LN7FEE ANDI R0,>0100                    >0240,>0100        '.@..'         7FEE
LN7FF2 JEQ  >7FF8                       >1302              '..'           7FF2
LN7FF4 SB   @>7D65,*R4                  >7520,>7D65        'u }e'         7FF4
LN7FF8 B    *R11                        >045B              '.['           7FF8
       AORG >7FFE                                                             
LN7FFE                                                                    7FFE
LN7FFE MOV  R12,*R10                    >C68C              '..'           7FFE
SLAST  END                                                                    
                               
* ANDI R0,>0100 or Subract byte MSB from Address at R4        
LN7FEE ANDI R0,>0100         *# Set only the 0's          
LN7FF2 JEQ  LN7FF8           * Equal jump           
LN7FF4 SB   @LN7D65,*R4      * Subtract >20 from Address at MSB of R4                 
LN7FF8 B    *R11             *# RETURN
*                 
LN7FFA DATA >0000
LN7FFC DATA >0000                          
LN7FFE DATA >9226                   
SLAST  END     

Really puzzled about this section and what is going on.



#707 JamesD OFFLINE  

JamesD

    Quadrunner

  • 7,300 posts

Posted Fri Jun 9, 2017 6:10 PM

That looks like the disassembler went off the rails somewhere.
Are all entry points into that range accounted for?
 

Well have a portion of XB ROMs that I am really puzzled about. 

You can find this section in the SOURCE of XB ROMs I posted several times now.....

* R8 (CHAT) = 10 ?                
LN7F8C MOV  R11,R3           *# Save Return address in R3             
LN7F8E MOV  R8,R0            * Put R8 into R0          
LN7F90 LI   R2,>000A         * Put >000A into R2 (>000A = 10)            
LN7F94 AI   R0,>FFD0         * Add >FFD0 into R0              
LN7F98 C    R0,R2            * R0 = R2 ?          
LN7F9A JL   LN7FAC           * Lower jump           
LN7F9C CLR  R0               * Zero out R0         
LN7F9E B    *R3              * RETURN
*                    
LN7FA0 MPY  R2,R0            *# Muliply R2 by R0                
LN7FA2 MOV  R0,R0            * Set status byte?         
LN7FA4 JNE  LN7F48           * Not Equal Error       
LN7FA6 MOV  R1,R0            * PUt R1 into R0          
LN7FA8 A    R8,R0            * Add R8 into R0          
LN7FAA JLT  LN7F48           * Lower Than jump           
LN7FAC BL   @LN6FBA          *# Put word at VARW at VDP Address in R15              
LN7FB0 MOVB R1,*R4           Put MSB R1 into Address MSB R4          
LN7FB2 JEQ  LN7FC0           * Equal jump           
LN7FB4 AI   R8,>FFD0         * Add >FFD0 into R8          
LN7FB8 C    R8,R2            * R8 = R2 ?          
LN7FBA JL   LN7FA0           *# Lower jump             
LN7FBC DEC  @VARW            * VAR0  - 1         
LN7FC0 CLR  R8               *# Zero out R8               
LN7FC2 MOV  R0,R0            *# Set Status byte?              
LN7FC4 JEQ  LN7F48           * Equal jump           
LN7FC6 B    *R3              * RETURN
* 
* TOKEN LIST                 
LN7FC8 BYTE >81              *# (ELSE Token) 12 bytes Called from LN7D38  
LN7FC9 BYTE >85              * (GO Token)
LN7FCA BYTE >86              * (GOTO Token) 
LN7FCB BYTE >87              * (GOSUB Token)      
LN7FCC BYTE >88              * (RETURN Token) 
LN7FCD BYTE ?8E              * (BREAK Token) 
LN7FCE BYTE >8F              * (UNBREAK Token)
LN7FCF BYTE >94              * (RESTORE Token)       
LN7FD0 BYTE >A5              * (ERROR Token)
LN7FD1 BYTE >A9              * (RUN Token)
LN7FD2 BYTE >B0              * (THEN Token) 
LN7FD3 BYTE >ED              * (USING Token) 
*         
LN7FD4 BYTE >FF
LN7FD5 BYTE >00              * #        
LN7FD6 DATA >020C
LN7FD8 DATA >0528             
LN7FDA DATA >0728              
LN7FDE DATA >0828         
LN7FE0 DATA >8200              
LN7FE2 DATA >833C
LN7FE4 DATA >9328        
LN7FE6 DATA >9A3C
LN7FE8 DATA >9D6C     
LN7FEA DATA >A15C
LN7FEC DATA >A322
*
LN7FD4 SOCB R0,*R12+                    >FF00              '..'           7FD4
LN7FD6 LI   R12,>0528                   >020C,>0528        '...('         7FD6
LN7FDA SETO @>0828(R8)                  >0728,>0828        '.(.('         7FDA
LN7FDE C    R0,R8                       >8200              '..'           7FDE
LN7FE0 C    *R12+,R12                   >833C              '.<'           7FE0
LN7FE2 CB   @>9A3C(R8),R12              >9328,>9A3C        '.(.<'         7FE2
LN7FE6 CB   @>A15C(R12),*R5+            >9D6C,>A15C        '.l.\'         7FE6
LN7FEA A    @>FF00(R2),R12              >A322,>FF00        '."..'         7FEA
LN7FEE ANDI R0,>0100                    >0240,>0100        '.@..'         7FEE
LN7FF2 JEQ  >7FF8                       >1302              '..'           7FF2
LN7FF4 SB   @>7D65,*R4                  >7520,>7D65        'u }e'         7FF4
LN7FF8 B    *R11                        >045B              '.['           7FF8
       AORG >7FFE                                                             
LN7FFE                                                                    7FFE
LN7FFE MOV  R12,*R10                    >C68C              '..'           7FFE
SLAST  END                                                                    
                               
* ANDI R0,>0100 or Subract byte MSB from Address at R4        
LN7FEE ANDI R0,>0100         *# Set only the 0's          
LN7FF2 JEQ  LN7FF8           * Equal jump           
LN7FF4 SB   @LN7D65,*R4      * Subtract >20 from Address at MSB of R4                 
LN7FF8 B    *R11             *# RETURN
*                 
LN7FFA DATA >0000
LN7FFC DATA >0000                          
LN7FFE DATA >9226                   
SLAST  END     

Really puzzled about this section and what is going on.



#708 InsaneMultitasker OFFLINE  

InsaneMultitasker

    Stargunner

  • 1,640 posts

Posted Fri Jun 9, 2017 7:45 PM

I would search for references to the section 7fd4 to 7fea.  You may be looking at artifacts from the original assembly where space was reserved with BSS or by virtue of its address.  Random code can be placed in these locations during linkage and loading.  The code in its current forms doesn't make any sense, it's either unused or referenced for some purpose.  

 

The code from 7fee-7ff8 is testing one bit in R0 then returning or adjusting the address at R4 based on whether it was set(1) or reset(0).  Without knowing what R0 and R4 represent, it's hard to determine the routine's purpose. 

 

(A personal preference I thought I'd mention for future:  whenever I disassemble code, I use the second pass so that only the referenced addresses and labels are generated.  Having labels on every line makes code more difficult to read, IMHO.  The address is included at the end of each line, so you can keep things 'cleaner' this way.  )



#709 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Fri Jun 9, 2017 7:47 PM

I have multiple places where I have disassembled to figure out and some worse then others for what is going on.



#710 JamesD OFFLINE  

JamesD

    Quadrunner

  • 7,300 posts

Posted Fri Jun 9, 2017 10:24 PM

I have multiple places where I have disassembled to figure out and some worse then others for what is going on.

keep in mind it might be data.

The FF at LN7FD4 is an end of table marker and the 00 that follows is probably filler to align to 16 bits.

What are the values that precede that table up to 
LN7F9E? 



#711 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Fri Jun 9, 2017 10:34 PM

keep in mind it might be data.

The FF at LN7FD4 is an end of table marker and the 00 that follows is probably filler to align to 16 bits.

What are the values that precede that table up to 
LN7F9E

The source has been posted several times now:

The LN7F9E is in CODPAGE2 called from this: 

* CALLED FROM CRUNCH *           
LN7B88 MOV  R11,R12         * Save Retrun Address in R12            
LN7B8A MOVB *R13,R3         * GROM Data into MSB R3             (GROM AUTO INCREMENTS)    
LN7B8C BL   @LN60F2         *# SUBSTACK+2,read GROM Data                
LN7B90 CLR  @FAC            * Zero out FAC               
LN7B94 LI   R4,LR8          * PUt LR8 into R4  (LR8 is LSB of R8)        
LN7B98 CLR  R8              * Zero out R8               
LN7B9A BL   @LN6FAC         * Write VARW to Address int R15, R1 = >2000 ?             
LN7B9E MOVB R1,*R4          * Put MSB R1 into Address location MSB R4           
LN7BA0 JEQ  LN7C94          * Equal jump            
LN7BA2 SRL  R3,8            * Strip High Byte from Word           
LN7BA4 JEQ  LN7BB4          * Equal jump                
LN7BA6 LI   R2,LN7E5A       * Put >7E5A into R2            
LN7BAA LI   R10,LN7E28      * Load Return Address in R10            
LN7BAE LI   R7,LN7E7A       * Load Return Address in R7               
LN7BB2 JMP  LN7BF2          * jump   
*                  
LN7BB4 INC  @BUFLEV         *# BUFLEV + 1            
LN7BB8 CLR  @LENCST         * Zero out LENCST            
LN7BBC MOVB R8,@PRGFLG      * Put MSB R8 into MSB PRGFLG           
LN7BC0 BL   @LN7F8C         * R8 (CHAT) = 10 ?            
LN7BC4 MOV  R0,@FAC         * Put FAC into R0           
LN7BC8 JEQ  LN7BD2          * Equal jump           
LN7BCA BL   @LN6FAC         * Write VARW to Address int R15, R1 = >2000 ?            
LN7BCE MOVB R1,*R4          * Put MSB R1 into Address MSB R4           
LN7BD0 JEQ  LN7C94          * Equal jump            
LN7BD2 LI   R7,LN7C1E       * Put >7C1E into R7            
LN7BD6 LI   R6,LN7ED4       * Put >7ED4 into R6                  
LN7BDA JMP  LN7BF2          * jump

And called from here:

LN7F08 MOV  R8,R8            * Put R8 into R8 (Set Status bit)             
LN7F0A JEQ  LN7F50           * Equal jump           
LN7F0C BL   @LN7F8C          * R8 (CHAT) = 10 ?           
LN7F10 MOV  R0,R0            * Put R0 into R0 (Set status bit)          
LN7F12 JEQ  LN7F28           * Equal jump           
LN7F14 LI   R8,>00C9         * R8 = (Line Number Constant token) ?            
LN7F18 BL   @LN7F6E          * Check for Crunch Buffer end, Write R1 to VDP           
LN7F1C MOV  R0,R8            * Put R0 into R8          
LN7F1E SWPB R8               * Swap bytes in R8          
LN7F20 BL   @LN7F6E          * Check for Crunch Buffer end, Write R1 to VDP           
LN7F24 SRL  R8,8             * Strip High byte of word          
LN7F26 JMP  LN7EA4           * jump

As you can see there is a lot of code involved.



#712 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Wed Jun 21, 2017 3:07 AM

Update changes just finished instead of using strings I added tokens to XB for OFF, MAP, PASS for SAMS support.

Also added DUP and SWAP for CALL COLOR and CALL CHAR support.

 

  Removed CALL AMSBANK and now CALL SAMS(lowbank#,highbank#) replaced this command.

  a. Removed CALL AMSON and now CALL SAMS(ON) replaced this command.

  b. Removed CALL AMSOFF and  now CALL SAMS(OFF) replaced this command.

  c. Removed CALL AMSMAP and now CALL SAMS(MAP) replaced this command.

  d. Removed CALL AMSPASS and now CALL SAMS(PASS) replaced this command.

 

Also allows you to do something like this CALL SAMS(ON,lowbank#,highbank#,OFF)

 

More changes add XB tokens for DUP and SWAP:

    a. CALL DUPCHAR removed and replaced with CALL CHAR(DUP,char#,char#)

    b. CALL DUPCOLOR removed and replaced with CALL COLOR(DUP,colorset#,colorset#)

    c. CALL SWAPCHAR removed and replaced with CALL CHAR(SWAP,char#,char#)

    d. CALL SWAPCOLOR removed and replaced with CALL COLOR(SWAP,colorset#,colorset#)

 

Add a new set of choices like

CALL CHAR(128,"FF00FF",DUP,128,129,SWAP,43,87)

The above puts "FF00FF" into character 128, duplicates that definition in 129, swaps character definitions 43 and 87 in one command.



#713 Airshack ONLINE  

Airshack

    Moonsweeper

  • 379 posts
  • Location:Phoenix, AZ

Posted Thu Jun 22, 2017 1:45 AM

I have used ALL of the XB compilers and not a single one can you convert and compile with any speed, it is even slower than Assembly to do that as all the extra steps.
 
XB is good for what it is designed for which is quickly type in a program and test as you go with the interpreter.
 
Why are you even writing in XB if your goal is Assembly?
I mean talk about doing something totally unnecessary to end up someplace else.
Why not just write it in Assembly in the first place?
Or for that matter C that is 100% designed around that idea in the first place.


I'm a big fan of the XB256/BASIC Compiler package because it allowed my to increase the speed of my XB code 20-times. That's nowhere near the speed of Assembly code but still pretty good.

Actually, a twenty times performance enhancement with zero knowledge of Assembly Language programming and zero required investment in TI-99/4 architecture knowledge is extremely impressive.

The XB256 BASIC compiler workflow has also served as a nice bridge between BASIC and learning Assembly Language programming.

It prepared me (a TI novice) by Introducing me to:

A. Using an Assembler on Threaded Assembly code.
B. Using modern PC based editors to edit code.
C Learning the differences between assembly source code and an object file.
D. Converting obj files to bin for FlashROM99
E. Exposure to Graphics II Mode and the TI's enhanced character and sprite capabilities.
F. Exposure to multiple screen swapping.
G. Memory management issues beyond what BASIC coding alone offers.

Etc...


Compiled BASIC opened up the entire Assembly paradigm for me. That's a big deal and may be why others may want to use it, even if "your goal is Assembly."

As I learn more about system architecture and Assembly programming I consider my time spent with XB256 Compiled BASIC as invaluable. It rocked my world to see my BASIC code spring to life at speeds well beyond anything (known to me) short of Assembly Language itself.

Best Part: The cost of entry for this non TI programmer elite -- minimal!

"Why not just write it in Assembly in the first place?"

Hopefully I've provided an answer. Using the compiler also motivated me to learn more and dig deeper into the TI-99/4A hobby.

That's something?

Hopefully this post can bring you down to my level for a moment. What may seem "unnecessary" to you was fascinating for me.

#714 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Thu Jun 22, 2017 3:39 AM

Hopefully this post can bring you down to my level for a moment. What may seem "unnecessary" to you was fascinating for me.

 

Not ever did I say it was "unnecessary" so do not make up stuff I never once said please.

 

I maintain that the Original XB or other versions of XB are faster to draft programs and test them, this is just a fact!

 

Writing with compiler alone is many times slower for obvious reasons of the number of steps involved of using a compiler.

 

Also XB256 is based on XB so you have it assbackwards on which one came first, XB came first by many years.

 

Yea XB256 is a great way to make XB programs fast as it is Assembly, good fast product to use but it is compiled.

 

And what is your level? RXB is a XB version how is this higher then your level of using Assembly?

 

I write in GPL and Assembly all the time for RXB which is my product, do you suggest I should just quit?

 

Just so you know RXB has been around since Rich GKXB was introduced in 1991.


Edited by RXB, Thu Jun 22, 2017 3:41 AM.


#715 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 848 posts
  • Location:Lansing, NY, USA

Posted Thu Jun 22, 2017 5:49 AM

Rich, you keep repeating a misconception that you (and probably others) have about XB256.  You are conflating XB256 and the compiler.  They are separate, independent programs.

 XB256 is just that: Extended BASIC, but with two unique screens, one of which has all 256 characters available.  Programs are written in Extended BASIC.  Programs run in Extended BASIC.  Programs are saved as XB and can be listed normally as in XB.  It is fully compatible with Extended BASIC because it is Extended BASIC.  It consists of a number of assembly language extensions that unlock much of the potential of the 9918A video processor but at its core it remains XB, warts and all.  Floating point numbers? No problem.  Named subprograms? No problem.  Any faster than XB? Nope.  

It is not necessary, but if desired you can compile an XB program written using XB256.  All the extra assembly routines are supported.  Then you can get a 30-40x increase in speed, but then too the compiler restrictions kick in - no floating point numbers, no named subprograms, etc.



#716 RXB OFFLINE  

RXB

    River Patroller

  • 2,586 posts
  • Location:Vancouver, Washington, USA

Posted Thu Jun 22, 2017 11:15 PM

True have not ever invested into research of XB256 and only ran a few demos so my misconceptions are outstanding or wrong.

 

I have put quite a lot of time into TML and how it works.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users