Jump to content
IGNORED

RXB - Rich Extended Basic


Bones-69

Recommended Posts

1 hour ago, SteveB said:

How would you know if a string "1100" is hex or dec? Or does it need to be ">1100" for hex, unlike in CALL CHAR?

XB 3 uses the > modifier like this:

PRINT VAL(>"1100") ! this would print 4352 

or

X=VAL(>"1100") ! this would make X=4352

 

************************************************************************

In RXB I have a much better solution as I try to make RXB as AI as possible.

 

X=HEX#("1100") ! X would equal 4352 decimal, results hex string to numeric variable

PRINT HEX#("1100") ! would print 4352 decimal, results hex string to numeric value

Thus hex to decimal conversion, it gives what you want in return from what you input.

 

X$=HEX$(4352) ! X$ would equal "1100" hexadecimal string, result numeric to hex string variable

PRINT HEX$(4352) ! would print "1100" hexadecimal string, result numeric to hex string value

Thus decimal to hex conversion, it gives what you want in return from what you input.

 

Notice much less complicated then then the XB 3 version previously posted.

 

This would open the door for additional BINARY conversions.

Edited by RXB
  • Like 2
Link to comment
Share on other sites

Making great progress on XB 3 GROMs.

Spoiler

***********************************************************
       GROM >6000
***********************************************************
* EQUATES *
PAD6   EQU  >8306
RAMPTR EQU  >830A            Pointer for crunching
BYTES  EQU  >830C            BYTE COUNTER
CURINC EQU  >830E            Increment for auto-num mode
TOPSTK EQU  >8310            Top of data stack pointer
LINUM  EQU  >8312            Used to determine end of scan
CURLIN EQU  >8314            Current line for auto-num
XFLAG  EQU  >8316            SCAN FLAG-BITS USED AS BELOW
DSRFLG EQU  >8317            INTERNAL=60, EXTERNAL=0 (1)
STRSP  EQU  >8318            String space begining
STREND EQU  >831A            String space ending
VARW   EQU  >8320            Screen address
ERRCOD EQU  >8322            Return error code from ALC
STVSPT EQU  >8324            Value-stack base
PGMPTR EQU  >832C            Program text pointer
EXTRAM EQU  >832E            Line number table pointer
STLN   EQU  >8330            Start of line number table
ENLN   EQU  >8332            End of line number table
DATA   EQU  >8334            Data pointer for READ
SUBTAB EQU  >833A            Subprogram symbol table
SYMTAB EQU  >833E            Symbol table pointer
FREPTR EQU  >8340            Free space pointer
CHAT   EQU  >8342            Current charater/token
BASE   EQU  >8343            OPTION BASE value
PRGFLG EQU  >8344            Program/imperative flag
FLAG   EQU  >8345            General 8-bit flag
BUFLEV EQU  >8346           Crunch-buffer destruction level
LSUBP  EQU  >8348            Last subprogram block on stack
FAC1   EQU  >834B
FAC2   EQU  >834C
FAC3   EQU  >834D
FAC4   EQU  >834E
FAC5   EQU  >834F
FAC6   EQU  >8350
FAC7   EQU  >8351
FAC8   EQU  >8352
FAC12  EQU  >8356
ARG1   EQU  >835D
ARG2   EQU  >835E
ARG3   EQU  >835F
ARG4   EQU  >8360
ARG5   EQU  >8361
ARG6   EQU  >8362
VSPTR  EQU  >836E            Value stack pointer
HIVDP  EQU  >8370            Highest VDP Avaliable
RAMTOP EQU  >8384            Highest address in ERAM
RAMFRE EQU  >8386            Free pointer in the ERAM
RAMFLG EQU  >8389            ERAM flag
STKMIN EQU  >83AF            Base of data stack
PRTNFN EQU  >83CE
***********************************************************
* VDP EQUATES *
NLNADD EQU  >02E2            New LiNe ADDress
LODFLG EQU  >0371            Auto-boot needed flag
START  EQU  >0372            Line to start execution at
SPGMPT EQU  >0382            Saved PGMPTR for continue
SBUFLV EQU  >0384            Saved BUFLEV for contiue
SAVEVP EQU  >0388
ERRLN  EQU  >038A
BUFSRT EQU  >038C             Edit recall start addr (VARW)
BUFEND EQU  >038E             Edit recall end addr (VARA)
SLSUBP EQU  >0396             Saved LSUBP for continue
SFLAG  EQU  >0398             Saved on-warning/break bits
* Added 6/8/81 for NOPSCAN feature
PSCFG  EQU  >03B7
*    Flag 0:  99/4  console, 5/29/81
*         1:  99/4A console
CONFLG EQU  >03BB
VROAZ  EQU  >03C0            Temporary VDP Roll Out Area
CHRCUR EQU  >03F0            Definition of CURSOR
CRNBUF EQU  >0820            CRuNch BUFfer address
VRAMVS EQU  >0958            Default base of value stack
***********************************************************
*                        GROM HEADER
***********************************************************
       GROM >6000
       AORG 0
       DATA >AA21      * VALID GROM / VERSION 33
       DATA >0100      * (FUTURE EXPANSION)
       DATA >9A80      * POWERUP
       DATA >60B2      * PROGRAMS
       DATA >0000      * DSR 
       DATA >0000      * CALL
       DATA >0000      * INTERUPT
       DATA >0000      * BASIC CALL
***********************************************************
G6010  BR    AUTON
G6012  BR    TOPL15
G6014  BR    INITPG
G6016  BR    SPRINT Initialize sprites
G6018  BR    G63BB
G601A  BR    TOPL10
G601C  BR    G6872      
G601E  BR    G622D
G6020  BR    $
G6022  BR    KILSYM
G6024  BR    $
G6026  BR    GETNB
G6028  BR    GETNB2
G602A  BR    GETCHR
G602C  BR    GETLN
G602E  BR    AUTO1
G6030  BS    TOPL02
G6032  BR    EDITLN
G6034  BR    GRSUB1  Read from ERAM (use GREAD/VDP)
G6036  BR    GWSUB   Write a few bytes to ERAM/VDP)
G6038  CLR   @>8344
ERRSYN  CALL  G6FE6
G603D  BYTE  >03
G603E  CALL  G6FE6
G6041  BACK  >0F
G6043  DNEG  @PAD6
G6045  BS    G6FE6
G6047  B     G8644
G604A 
******************************************************


******************************************************
G60A8  BYTE  >09
G60A9  TEXT  'DSK1.LOAD'
******************************************************
G60B2  DATA  >0000
G60B4  DATA  >60CA
******************************************************
G60B6  BYTE  >13
G60B7  TEXT  'EXPANDED BASIC #3.0'
******************************************************
TOPLEV  CLR   V@>0370                 * SPRITES MOTION                      
G60CD  MOVE  >004D,V@>0370,V@LODFLG  * CLEAR LODFLG     
G60D4  DST   NLNADD,V@BUFSRT                  
G60D9  DST   NLNADD,V@BUFEND
G60DE  ST    >01,V@CONFLG                                   
G60E2  CLR   @>6000                                          
G60E6  DCLR  @PRGFLG                                         
G60E8  DCLR  @BUFLEV                                            
G60EA  DCLR  @DATA                                         
G60EC  ST    >88,@SUBSTK                                      
G60EF  DST   >3567,@>83C0 * Initialize random number gen                        
G60F4  CALL  GB7E6                                          
G60F7  DCLR  V@>039E                                        
G60FA  CALL  G8259                                          
G60FD  ALL   >80          * CLEAR SCREEN                                       
G60FF  CALL  G6872                                           
G6102  CALL  INITPG                                           
G6105  ST    >05,@KEYBRD  * Key board mode 5                               
G6108  SCAN                       
G6109  CLR   @KEYBRD                                          
G610B  CEQ   >FF,@KEY                                      
G610E  BS    TOPL02                                            
G6110  MOVE  >000B,G60A8,V@CRNBUF * >0B,"DSK1.LOAD"                        
G6117  DST   CRNBUF,@PGMPTR                                   
G611B  ST    >C7,@CHAT                                      
G611E  CALL  G625F                                         
TOPL02 CALL  G6FE6                                           
G6124  BYTE  >00                        
G6125  CALL  INITPG                                           
G6128  BR    TOPL15                                        
TOPL10 CALL  KILSYM                                            
TOPL15 AND   >F7,@FLAG                                     
G6130  ST    >05,@KEYBRD                                    
G6133  SCAN                       
G6134  CLR   @KEYBRD                                          
G6136  ST    >88,@SUBSTK                                    
G6139  DST   NLNADD,@VARW                                    
G613D  CLR   @RAMFLG                                     
G6140  CLR   @PRGFLG                                       
G6142  CLOG  >01,@FLAG                                  
G6145  BS    G616C                                            
G6147  DADD  @>CURINC,@CURLIN                                  
G614A  GT                         
G614B  BS    G6153                                          
G614D  AND   >FE,@FLAG                                      
G6150  B     G616C                                         
G6153  DCEQ  @ENLN, @STLN                                   
G6156  BS    G6160                                         
G6158  DST   @CURLIN,@FAC                                 
G615B  XML   >7E                                            
G615D  BYTE  >03                       
G615E  BS    G7E4E                                            
G6160  XML   >83                                            
G6162  DST   @CURLIN,@ARG2                         
G6165  CALL  G7E11                                            
G6168  DINC  @VARW                                       
G616A  BR    G616E                                         
G616C  XML   >83                                           
G616E  ST    >9E,V@>02E1                                   
G6172  CALL  G6A8C                                          
G6175  CALL  G7EDC                                          
G6178  CLR   @ERRCOD                                        
G617A  DST   CRNBUF,@RAMPTR                                    
G617E  XML   >7F                                                
G6180  RTN                        
G6181  CASE  @ERRCOD+1                                           
G6183  BR    TIPL45   No error detected                                           
G6185  BR    ERRSYN  *SYNTAX ERROR                                      
G6187  BR    ERRBLN  *BAD LINE NUMBER                                         
G6189  BR    ERRLTL  *LINE TOO LONG                                     
G618B  BR    ERRNTL  *NAME TOO LONG                                      
G618D  BR    ERRNQS  *UNMATCHED QUOTES                                           
G618F  BR    ERRCIP  *COMMAND ILLEGAL IN PROGRAM                                           
G6191  BR    ERRIVN  *UNRECOGNIZED CHARACTER                                         
TIPL45 XML   >03      Line # present                                          
G6195  BS    TOPL55                                              
G6197  CLOG  >01,@FLAG  Not AUTONUM                               
G619A  BR    G61A6                                         
G619C  CEQ   >0D,@KEY   Must be up or down                                   
G619F  BS    G61A6                                            
G61A1  CEQ   >01,@CHAT  Start EDIT mode                                  
G61A4  BS    G7E44                                             
G61A6  CALL  EDITLN                                          
G61A9  BS    G6136                                          
G61AB  BR    TOPL10                                          
TOPL55 CEQ   >01,@CHAT                                       
G61B0  BS    G6136                                            
G61B2  CH    >EA,V@CRNBUF                                 
G61B6  BS    G61DA                                         
G61B8  CH    >08,V@CRNBUF                                
G61BC  BS    G6288                                        
G61BE  DST   >0821,@PGMPTR                              
G61C2  XML   >79                                           
G61C4  CASE  V@CRNBUF                                       
G61C7  BR    TOPLEV                                            
G61C9  BR    G62B9                                          
G61CB  BR    G621A                                          
G61CD  BR    G6222                                       
G61CF  BR    G63D2                                           
G61D1  BR    G6228                                        
G61D3  BR    G6421                                         
G61D5  BR    G6212                                          
G61D7  B     G87ED                                         
G61DA  ST    V@CRNBUF,@RAMPTR                              
G61DE  CLOG  >01,@RAMPTR                                 
G61E1  BS    G6288                                      
G61E3  DST   >0821,@PGMPTR                                
G61E7  XML   >79                                            
G61E9  ADD   >15,@RAMPTR                                     
G61EC  SRL   >01,@RAMPTR                                  
G61EF  CASE  @RAMPTR                                         
G61F1  BR    G62F5                                       
G61F3  BR    G665E                                     
G61F5  BR    G64D0                                      
G61F7  BR    G6288                                   
G61F9  BR    G65E2                           
G61FB  BR    G6575                                
G61FD  BR    G620A                                     
G61FF  BR    G6557                                   
G6201  BR    G65BA                                   
G6203  BR    G6207                                     
G6205  BR    G6288                                           
G6207  B     G8A3C                                       
G620A  DCEQ  @ENLN,@STLN                                 
G620D  BS    G6094                                          
G620F  B     G8847                                        
G6212  DCEQ  @ENLN,@STLN                                 
G6215  BS    G6094                                           
G6217  B     G8516                                         
G621A  DCEQ  @ENLN,@STLN                             
G621D  BS    G6094                                           
G621F  B     G8911                                        
G6222  CALL  G8259                                     
G6225  B     >0020                                     
G6228  CALL  G869C                                          
G622B  BR    TOPL15                                         
G622D  CZ    @PRGFLG                                        
G622F  BR    G6234                                       
G6231  CALL  G6872                                         
G6234  CEQ   >C9,@CHAT                             
G6237  BR    G625A                                      
G6239  DCEQ  @ENLN,@STLN                            
G623C  BS    G6094                                    
G623E  XML   >79                                       
G6240  ST    @CHAT,@FAC                                 
G6243  XML   >79                                           
G6245  ST    @CHAT,@FAC1                             
G6248  XML   >79                                       
G624A  CALL  G68D4                                     
G624D  BR    ERRSYN                                         
G624F  XML   >7E                                          
G6251  BYTE  >03                       
G6252  BR    G6076                                         
G6254  DST   @EXTRAM,V@START                             
G6258  BR    G6270                                         
G625A  CALL  G68D4                                       
G625D  BS    G6262                                         
G625F  CALL  G869C                                              
G6262  DCEQ  @ENLN,@STLN                                     
G6265  BS    G6094                                             
G6267  DST   @ENLN,V@START                
G626B  DADD  >FFFD,V@START                                    
G6270  CLR   @PRGFLG                                   
G6272  CALL  G8259                                             
G6275  DEC   @PRGFLG                                           
G6277  DCLR  V@SEXTRM                                          
G627A  DCLR  V@ERRLN                                       
G627D  ST    >88, @SUBSTK                        
G6280  ST    @RAMTOP, @RAMFLG                         
G6285  CALL  KILSYM                                      
G6288  ST    >FF,V@>03B7                                
G628C  DCLR  @RAMPTR                                           
G628E  DCLR  @XFLAG                                            
G6290  DST   >000A,@PAD6                                   
G6294  CZ    @PRGFLG                                             
G6296  BR    G62AA                                            
G6298  DST   CRNBUF,@PGMPTR                                     
G629C  XML   >79                                              
G629E  XML   >83                                                
G62A0  CALL  G76A5                                           
G62A3  DST   V@SAVEVP,@VSTACK                                  
G62A7  B     GB188                                            
G62AA  CALL  G7680                                             
G62AD  AND   >90,@FLAG                                      
G62B0  DCLR  @LSUBP                                             
G62B2  DST   V@SAVEVP,@VSTACK                                 
G62B6  B     GB188                                            
G62B9  CALL  GETNB                                             
G62BC  BR    G6038                                            
G62BE  DCZ   V@SEXTRM                                       
G62C1  BS    G6084                                             
G62C3  XML   >83                                                
G62C5  DST   V@SEXTRM,@EXTRAM                                  
G62C9  DST   V@SPGMPT,@PGMPTR                                   
G62CD  DST   V@SBUFLV,@BUFLEV                                 
G62D1  DST   V@SLSUBP,@LSUBP                                   
G62D5  OR    V@SFLAG,@FLAG                                   
G62D9  DCH   V@SAVEVP,@VSTACK                                 
G62DD  BR    G62E3                                             
G62DF  XML   >78                                               
G62E1  BR    G62D9                                             
G62E3  ST    >FF, @PRGFLG                                       
G62E6  ST    @RAMTOP,@RAMFLG                                   
G62EB  DCLR  V@SEXTRM                                            
G62EE  DST   VRAMVS,V@SAVEVP                                
G62F3  XML   >81                                              
G62F5  CZ    V@>0821                                           
G62F8  BR    ERRSYN                                             
G62FA  MOVE  >0280,V@>0080,V@>0000                             
G6301  ST    >60,@ARG                                        
G6304  FMT                        
G6305  SCRO  @ARG                                           
G6307  ROW   >14                                            
G6309  COL   >00                                               
G630B  HCHA  >02, >1F                                          
G630D  HTEX  'VDP Memory 00000 Bytes free'                          
G632A  HCHA  >04,>1F
G632C  HTEX  'High Memory 00000 Bytes free'  
G6349  HCHA  >04,>1F
G634B  HTEX  'Low Memory not initialized'
G6368  HCHA  >04,>1F
G636A  HCHA  >1C,>20
G636C  HCHA  >02,>1F
G636E  COL+  >03
G636F  ROW   >17
G6371  FEND
G6372  XML   >70                                           
G6374  DCEQ  >AA55,@>2006                                
G637A  BR    G6394                                        
G637C  MOVE  >000F,V@>02AF,V@>02CF                       
G6383  DST   @>2004,@ARG2                                     
G6388  DSUB  @>2002,@ARG2                                    
G638D  DST   >02D2,@VARW                                      
G6391  CALL  G63BB                                              
G6394  DST   @STREND,@ARG2                                     
G6397  DSUB  @VSTACK,@ARG2                                    
G639A  DADD  >FFC1,@ARG2                                      
G639E  GT                         
G639F  BS    G63A3                                              
G63A1  DCLR  @ARG2                                             
G63A3  DST   >0292,@VARW                                      
G63A7  CALL  G63BB                                               
G63AA  DST   @RAMFRE,@ARG2                                      
G63AE  DADD  >5FC1,@ARG2                                      
G63B2  DST   >02B2,@VARW                                    
G63B6  CALL  G63BB                                               
G63B9  BR    G6136                                              
G63BB  DCLR  @ARG                                             
G63BD  DDIV  >000A,@ARG                                       
G63C1  ADD   >90,@ARG3                                        
G63C4  ST    @ARG3,V*VARW                                     
G63C8  DDEC  @VARW                                             
G63CA  DST   @ARG,@ARG2                                     
G63CD  DCZ   @ARG                                             
G63CF  BR    G63BB                                              
G63D1  RTN                    
G63D2  CLOG  >80, @FLAG                                        
G63D5  BR    G609E                                              
G63D7  CALL  AUTON                                              
G63DA  OR    >01,@FLAG                                        
G63DD  DST   NLNADD,@VARW                                      
G63E1  BR    G6153  
***********************************************************
* AUTON - scans the NUM, LIST and RES commands for line    
* numbers. Leaves 1st line number in CURLIN and 2nd line   
* number in CURINC. AUTON is entry point from NUM to defual
* to 100,10          AUTON is entry point for LIST.        
***********************************************************                                           
AUTON  DST   >03E8,@CURLIN                                      
G63E7  DST   >000A,@>CURINC                                      
G63EB  ST    >2C,@>8308                                        
AUTO1  DDEC  @VARW                                             
G63F0  CALL  GETNB                                              
G63F3  BS    G600E                                              
G63F5  CALL  GETLN                                              
G63F8  CZ    @BYTES                                             
G63FA  BS    >63FF                                              
G63FC  DST   @FAC,@CURLIN                                     
G63FF  CALL  GETNB2                                           
G6402  DCH   @>832A,@VARW                                     
G6405  BS    G600E                                              
G6407  CEQ   @>8308,@CHAT                                         
G640A  BR    G6038                                             
G640C  CALL  GETNB                                              
G640F  BS    G600E                                              
G6411  CALL  GETLN                                              
G6414  CZ    @BYTES                                             
G6416  BS    G641B                                              
G6418  DST   @FAC,@>CURINC                                     
G641B  CALL  GETNB2                                              
G641E  BR    G6038                                              
G6420  RTN                    
G6421  DCEQ  @ENLN,@STLN                       
G6424  BS    G6094                                             
G6426  CALL  AUTON                                              
G6429  DST   @ENLN,@FAC                                     
G642C  DSUB  @STLN,@FAC                                     
G642F  DSRL  >0002,@FAC                                      
G6433  DMUL  @>CURINC,@FAC                                     
G6436  XML   >03                                                
G6438  BR    ERRBLN                                              
G643A  DADD  @FAC2,@CURLIN                                     
G643D  CARRY                      
G643E  BS    ERRBLN                                              
G6440  CH    >7F,@CURLIN                                   
G6443  BS    ERRBLN                                               
G6445  DST   @STLN,@ARG                                    
G6448  AND   >7F,@>0000(@>5C)                                  
G644E  DADD  >0004,@ARG                                       
G6452  DCH   @ENLN,@ARG                                     
G6455  BR    G6448                                              
G6457  DST   @ENLN,@PGMPTR                                      
G645A  ST    @RAMTOP,@RAMFLG                                    
G645F  CLR   @ARG4                                             
G6461  DINCT @PGMPTR                                             
G6463  DCLR  @>83D6                                             
G6466  DCHE  @RAMTOP,@PGMPTR                                     
G646A  BS    G64B6                                              
G646C  XML   >79                                                 
G646E  CH    >C6,@CHAT                                         
G6471  BR    G6463                                              
G6473  CH    >C9,@CHAT                                        
G6476  BS    G6466                                          
G6478  CEQ   >C9,@CHAT                                       
G647B  BS    G6487                                              
G647D  XML   >79                                                
G647F  ST    @CHAT,@ARG5                                     
G6482  DADD  @ARG4,@PGMPTR                                     
G6485  BR    G6466                                              
G6487  DST   @>0000(@>2C),@FAC                               
G648D  DST   @CURLIN,@FAC                                     
G6490  DST   @STLN,@ARG                                      
G6493  DCEQ  @>0000(@>5C),@FAC                                
G6499  BS    G64AE                                              
G649B  DSUB  @>CURINC,@FAC                                     
G649E  DADD  >0004,@ARG                                       
G64A2  DCH   @ENLN,@ARG                                     
G64A5  BR    G6493                                               
G64A7  DST   >7FFF,@FAC                                      
G64AB  CALL  >0036                                              
G64AE  DST   @FAC,@>0000(@>2C)                               
G64B4  BR    G6461                                               
G64B6  DST   @STLN,@FAC                                     
G64B9  DST   @CURLIN,@>0000(@>4A)                               
G64BF  DSUB  @>CURINC,@CURLIN                                     
G64C2  DADD  >0004,@FAC                                      
G64C6  DCH   @ENLN,@FAC                                     
G64C9  BR    G64B9                                              
G64CB  CLR   @RAMFLG                                              
G64CE  BR    G6136                                          
G64D0  DCEQ  @ENLN,@STLN                                     
G64D3  BS    G6094                                               
G64D5  CZ    @CHAT                                        
G64D7  BS    ERRSYN                                               
G64D9  CEQ   >C2,@CHAT                                  
G64DC  BS    >64F8                                              
G64DE  CALL  G967A                                              
G64E1  DST   @FAC,@ARG                                     
G64E4  XML   >7E                                            
G64E6  BYTE  >00
G64E7  BYTE  >C2
G64E8  CZ    @>8342
G64EA  BS    G6502
G64EC  CALL  G967A                                          
G64EF  DST   @FAC,@BYTES                                     
G64F2  CZ    @CHAT                                             
G64F4  BS    G6508                                               
G64F6  BR    ERRSYN                                            
G64F8  DST   @>FFFD(@>32),@ARG                               
G64FE  XML   >79                                                
G6500  BR    G64EC                                              
G6502  DST   @>0000(@>30),@BYTES                               
G6508  DCH   @BYTES,@ARG                                     
G650B  BS    G608C                                          
G650D  DST   @ARG,@FAC                                     
G6510  DST   @STLN,@ARG                                     
G6513  AND   >7F,@>0000(@>5C)                              
G6519  DADD  >0004,@ARG                                      
G651D  DCH   @ENLN,@ARG                                  
G6520  BR    G6513                                              
G6522  XML   >7E                                                
G6524  BYTE  >03                       
G6525  DCHE  @>0000(@>2E),@BYTES                               
G652B  BR    TOPL10                                              
G652D  XML   >87                                                
G652F  DST   @EXTRAM,@PAD6                                   
G6532  DINC  @PAD6                                             
G6534  DDECT @EXTRAM                                             
G6536  DST   @EXTRAM,@FAC                                 
G6539  DDEC  @FAC                                             
G653B  DSUB  @STLN,@EXTRAM                                     
G653E  BS    G6545                                              
G6540  DST   @EXTRAM,@ARG                                     
G6543  XML   >88                                                
G6545  DADD  >0004,@STLN                                      
G6549  BS    G6125                                              
G654B  DCH   @RAMTOP,@STLN                                     
G654F  BS    >6125                                               
G6551  DCZ   @EXTRAM                                             
G6553  BR    G6522                                          
G6555  BR    TOPL10                                             
G6557  CZ    V@>0821                                            
G655A  BR    ERRSYN                                              
G655C  MOVE  >00D8,V@>0500,V@>0700                               
G6563  ST    >6C,@FAC2                                        
G6566  DST   >0700,@FAC                                       
G656A  DINV  V*FAC                                            
G656D  DINCT @FAC                                             
G656F  DEC   @FAC2                                             
G6571  BR    G656A                                              
G6573  BR    G6136                                         
G6575  DCEQ  >C701,V@>0821                                     
G657A  ST    V@>0823,@FAC1                                   
G657E  CH    >B7,@FAC1                                       
G6581  BS    G609A                                              
G6583  CH    >7F,@FAC1                                    
G6586  BR    G609A                                              
G6588  AND   >7F,@FAC1                                       
G658B  CH    >2F,@FAC1                                     
G658E  BR    G6593                                              
G6590  ADD   >F0,@FAC1                                     
G6593  CLR   @FAC                                             
G6595  DSLL  >0004,@FAC                                       
G6599  DCEQ  >B5C7,V@>0824                                     
G659E  CH    >0F,V@>0826                                        
G65A2  BS    G6080                                              
G65A4  CLR   @FAC2                                             
G65A6  ST    V@>0826,@FAC3                                    
G65AA  MOVE  >0010,V@>0826,G@>6D66(@>4A)                             
G65B2  CZ    V@>0827(@>4C)                                    
G65B6  BR    ERRSYN                                              
G65B8  BR    G6136                                              
G65BA  CEQ   >AD,@CHAT                                        
G65BD  BR    G65CD                                              
G65BF  ST    >02,V@CONFLG                                        
G65C3  CZ    V@>0822                                          
G65C6  BR    ERRSYN                                              
G65C8  CALL  G6872                                              
G65CB  BR    G6136                                             
G65CD  CEQ   >9B,@CHAT                                        
G65D0  BR    G65D8                                          
G65D2  ST    >01,V@CONFLG                                       
G65D6  BR    >65C3                                             
G65D8  CEQ   >EA,@CHAT                                        
G65DB  BR    ERRSYN                                              
G65DD  CLR   V@CONFLG                                          
G65E0  BR    >65C3                                              
G65E2  CZ    V@>0821                                            
G65E5  BR    ERRSYN                                              
G65E7  DST   @SYMTAB,@FAC                                     
G65EA  CLR   @>8304                                             
G65EC  XML   >83                                              
G65EE  DST   >B39A,V@>02CA                                  
G65F3  XML   >83                                                
G65F5  DCZ   @FAC                                             
G65F7  BS    G6136                                               
G65F9  ST    V*FAC,@>8302                                  
G65FD  ST    @>8302,@>8303                                     
G6600  AND   >07,@>8303                                        
G6603  ST    V@>0001(@>00),@>8305                               
G6608  AND   >0F,@>8305                                        
G660B  CLOG  >38,@>8302                                       
G660E  BR    G6657                                           
G6610  XML   >83                                                
G6612  CLOG  >40,@>8302                                        
G6615  BS    G6621                                              
G6617  DST   >A4A5,V@>02C4                                     
G661C  DST   >A69A,V@>02C6                                      
G6621  DST   V@>0004(@>00),@PAD6                                
G6626  MOVE  @>8304,V*PAD6,V@>02C9                               
G662C  CZ    @>8303                                             
G662E  BS    G6648                                               
G6630  ADD   @>8303,@>8305                                     
G6633  ST    >89,V@>02C9(@>04)                                 
G6638  ST    >8C,V@>02C8(@>04)                                 
G663D  DDEC  @>8304                                             
G663F  DEC   @>8303                                             
G6641  BR    G6638                                              
G6643  ADD   >FC,V@>02C9(@>04)                               
G6648  ADD   >60,V@>02C8(@>04)                                 
G664D  DDEC  @>8304                                             
G664F  BR    G6648                                              
G6651  SCAN                       
G6652  BR    G6657                                               
G6654  SCAN                       
G6655  BR    G6654                                              
G6657  DST   V@>0002(@>00),@FAC                               
G665C  BR    G65F5                                              
G665E  CZ    V@>0821                                           
G6661  BR    ERRSYN                                               
G6663  DST   @SUBTAB,@FAC                                 
G6666  XML   >83                                                
G6668  ST    >9A,V@>02C7                                       
G666C  XML   >83                                                
G666E  DCZ   @FAC                                             
G6670  BS    G6136                                               
G6672  DST   V*FAC,@>8302                                     
G6676  SRL   >04,@>8302                                        
G6679  CEQ   >04,@>8302                                        
G667C  BR    G66A8                                              
G667E  DAND  >000F,@>8302                                      
G6682  XML   >83                                               
G6684  DST   >A3A1,V@>02C4                                    
G6689  DST   >ACAC,V@>02C6                                     
G668E  DST   V@>0004(@>00),@>8304                               
G6693  MOVE  @>8302,V*>8304,V@>02C9                               
G6699  ADD   >60,V@>02C8(@>02)                                 
G669E  DDEC  @>8302                                             
G66A0  BR    G6699                                              
G66A2  SCAN                       
G66A3  BR    G66A8                                          
G66A5  SCAN                       
G66A6  BR    G66A5                                              
G66A8  DST   V@>0002(@>00),@FAC                            
G66AD  BR    G666E  
***********************************************************
*              EDIT a line into a program                  
*                                                          
* Must be called with the following set up:                
*    FAC    = line number of line to be edited into program
*    CHAT   = length of line                               
*    CRNBUF = crunched line                                
***********************************************************              
EDITLN  CLOG  >80,@FLAG
G66B2  BR    G609E
G66B4  CALL  G8259
G66B7  CALL  KILSYM
G66BA  CLR   @>8302
G66BC  ST    @CHAT,@>8303
G66BF  CEQ   >01,@CHAT
G66C2  BR    G6702
G66C4  CLOG  >01,@FLAG
G66C7  BS    G66D0
G66C9  AND   >FE,@FLAG
RTNSET  CEQ   @FAC,@FAC
G66CF  RTNC  
G66D0  DCEQ  @ENLN,@STLN
G66D3  BS    RTNSET
G66D5  XML   >7E
G66D7  BYTE  >03 
G66D8  BR    RTNSET
G66DA  XML   >87
G66DC  DST   @EXTRAM,@PAD6
G66DF  DINC  @PAD6
G66E1  DDECT @EXTRAM
G66E3  DST   @EXTRAM,@FAC
G66E6  DDEC  @FAC
G66E8  DSUB  @STLN,@EXTRAM
G66EB  BS    G66F2
G66ED  DST   @EXTRAM,@ARG
G66F0  XML   >88
G66F2  DADD  >0004,@STLN
G66F6  DCZ   @STLN
G66F8  BS    G6125
G66FA  DCH   @RAMTOP,@STLN
G66FE  BS    G6125
G6700  BR    KILSYM
G6702  DST   @ENLN,@EXTRAM
G6705  DCEQ  @ENLN,@STLN
G6708  BS    G674C
G670A  DINC  @EXTRAM
G670C  DADD  >FFFC,@EXTRAM
G6710  DST   @>0000(@EXTRAM),@FAC6
G6716  AND   >7F,@FAC6
G6719  DCEQ  @FAC6,@FAC
G671C  BS    G679F
G671E  H     
G671F  BR    G6728
G6721  DCEQ  @STLN,@EXTRAM
G6724  BR    G670C
G6726  BR    G674E
G6728  DST   @STLN,@ARG
G672B  DSUB  @>8302,@ARG
G672E  DCHE  >A044,@ARG
G6732  BR    G605A
G6734  DST   >0004,@ARG
G6738  DADD  @EXTRAM,@ARG
G673B  DSUB  @STLN,@ARG
G673E  DST   @STLN,@XFLAG
G6741  DADD  >FFFC,@STLN
G6745  DST   @FAC,@STLN
G6748  XML   >89
G674A  BR    G6761
G674C  DINC  @STLN
G674E  DST   @STLN,@ARG
G6751  DSUB  @>8302,@ARG
G6754  DCHE  >A044,@ARG
G6758  BR    G605A
G675A  DADD  >FFFC,@STLN
G675E  DST   @STLN,@EXTRAM
G6761  DST   @ENLN,@FAC2
G6764  DINC  @FAC2
G6766  DSUB  @>8302,@FAC2
G6769  MOVE  >0004,@FAC,@>0000(@EXTRAM)
G6771  DST   @ENLN,@ARG
G6774  DSUB  @STLN,@ARG
G6777  DINC  @ARG
G6779  DST   @STLN,@XFLAG
G677C  DINC  @>8302
G677E  DSUB  @>8302,@STLN
G6781  DSUB  @>8302,@ENLN
G6784  DST   @STLN,@FAC
G6787  XML   >89
G6789  DDEC  @>8302
G678B  ST    @>8303,@>FFFF(@FAC2)
G6791  DST   @FAC2,@FAC6
G6794  DST   @>8302,@FAC4
G6797  DST   CRNBUF,@FAC2
G679B  XML   >8A
G679D  BR    KILSYM
G679F  DST   @>0002(@EXTRAM),@ARG
G67A5  ST    @>FFFF(@ARG),@ARG1
G67AB  CLR   @ARG
G67AD  DSUB  @>8302,@ARG
G67B0  DADD  @STLN,@ARG
G67B3  DCHE  >A040,@ARG
G67B7  BR    G605A
G67B9  XML   >87
G67BB  DDECT @EXTRAM
G67BD  BR    G6761
***********************************************************
* SUBROUTINE TO GET A NON-BLANK CHARACTER FROM LINE        
***********************************************************
GETNB  CALL  GETCHR     Get a character
G67C2  BS    RTNSET     If end-of-line
GETNB2  CEQ   >20,@CHAT
G67C7  BS    GETNB
G67C9  RTN   
G67CA  DADD  >0004,@VARW
       DCH   @>832A,@VARW
G67D1  BS    RTNSET
G67D3  ST    V*VARW,@CHAT
G67D7  CEQ   >7F,@CHAT
G67DA  BS    G67CA
G67DC  ADD   >A0,@CHAT
G67DF  DINC  @VARW
G67E1  RTN  
***********************************************************
* GETLN - Gets an line number after a command and puts it  
* into the FAC. If the character in CHAT when it is called 
* is not in the legal numeric range (0-9) then GETLN       
* GETLN returns with no other action.                      
*  Called by: AUTON, RUN, EDITLN                           
*********************************************************** 
GETLN  DCLR  @FAC
G67E4  CLR   @BYTES
GETLN2  ADD   >D0,@CHAT
G67E9  CH    >09,@CHAT
G67EC  BS    G6806
G67EE  DMUL  >000A,@FAC
G67F2  XML   >03
G67F4  BR    G6812
G67F6  ST    @CHAT,@FAC1
G67F9  DADD  @FAC2@FAC
G67FC  GT    
G67FD  BR    G6812
G67FF  INC   @BYTES
G6801  CALL  GETCHR
G6804  BR    GETLN2
G6806  CZ    @BYTES
G6808  BS    G680E
G680A  XML   >03
G680C  BS    G6812
G680E  ADD   >30,@CHAT
G6811  RTN 
G6812  X     >83
G6814  CLR   @PRGFLG
G6816  BR    ERRBLN
* Initialize program space    
INITPG  CLR   @RAMFLG          Reset RAMFLG
G681B  DST   >FFE7,@RAMTOP
G6820  DST   @RAMTOP,@STLN
G6824  DST   @RAMTOP,@ENLN
KILSYM  DST   @STLN,@RAMFRE
G682C  DCEQ  @RAMTOP,@RAMFRE
G6831  BS    G6836
G6833  DDEC  @RAMFRE
G6836  DST   @HIVDP,@FREPTR
G6839  DST   @HIVDP,@STRSP
G683C  DST   @HIVDP,@STREND
G683F  DCLR  @SYMTAB
G6841  DCLR  @SUBTAB
G6843  DCLR  V@SEXTRM
G6846  CLR   @BASE
G6848  CLR   @>6000
G684C  DST   >095A,@VSPTR
G6850  DST   VRAMVS,@STVSPT
G6854  DST   VRAMVS,V@SAVEVP
G6859  RTN   
*********************************************
* CURSOR & EDGE DEFINITION            
G685A   BYTE  >00,>7C,>7C,>7C,>7C,>7C,>7C,>7C
G6862   BYTE  >00,>00,>00,>00,>00,>00,>00,>00 
******************************************************
* VDP Registers
G686A  BYTE  >00,>E0,>00,>20,>00,>06,>00,>17
******************************************************
G6872  MOVE  >0008,G686A,#VR00   * VDP Registers
G6878  ST    >10,V@>080F
G687C  MOVE  >0010,V@>080F,V@>0810
G6883  CEQ   >01,V@CONFLG
G6887  BR    G689A
G6889  MOVE  >0010,@FAC,V@VROAZ
G688F  CALL  GBCD3
G6892  MOVE  >0010,V@VROAZ,@FAC
G6898  BR    SPRINT
G689A  MOVE  >0010,G685A,V@CHRCUR
G68A1  DST   >0400,@FAC
G68A5  CALL  G@>0018
G68A8  CZ    V@CONFLG
G68AB  BS    SPRINT
G68AD  DST   >0600,@FAC
G68B1  CALL  G@>004A
*
****** Initialization of sprites. Enable 28 sprites. ******
*
SPRINT  CLR   @>837A
G68B6  DCLR  V@>0780
G68B9  MOVE  >006E,V@>0781,V@>0782
G68C0  ST    >D0,V@>0370
G68C4  DST   >C000,V@>0300
G68C9  DCLR  V@>0302
G68CC  MOVE  >006C,V@>0300,V@>0304 
G68D3  RTN 
G68D4  CGT   >83,@CHAT
G68D7  BR    RTNSET
G68D9  CZ    @CHAT
G68DB  RTNC
***********************************************************
* SUBROUTINE TO READ 2 BYTES OF DATA FROM VDP OR ERAM      
*  (use GREAD)                                             
*********************************************************** 
GRSUB1  FETCH @FAC4
G68DE  DST   *FAC4,@FAC2
G68E2  DST   @>0000(@FAC2),@FAC6
G68E8  RTN   
***********************************************************
* SUBROUTINE TO WRITE A FEW BYTES OF DATA TO VDP OR ERAM 
*  (use GWRITE)                                            
***********************************************************
GWSUB  FETCH @FAC2
G68EB  DST   *FAC2,@FAC2
G68EF  CLR   @FAC6
G68F1  FETCH @FAC7
G68F3  CLR   @FAC4
G68F5  FETCH @FAC5
G68F7  XML   >86
G68F9  RTN  
*******************************************************
G68FA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6902  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G690A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6912  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G691A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6922  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G692A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6932  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G693A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6942  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G694A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6952  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G695A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6962  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G696A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6972  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G697A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6982  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G698A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6992  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G699A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69A2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69AA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69B2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69BA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69C2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69CA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69D2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00 
G69DA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69E2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69EA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69F2  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G69FA  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A02  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A0A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A12  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A1A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A22  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A2A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A32  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A3A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A42  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A4A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A52  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A5A  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A62  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G6A6A  BYTE   >00,>00,>00,>00,>00,>00
*******************************************************

 

*******************************************************
G6D66  BYTE  >0E
G6D67  TEXT  '                '   
G6D76  BYTE  >0A
G6D77  TEXT  'ACCEPT AT      '
G6D86  BYTE  >06
G6D87  TEXT  'BREAK          '
G6D96  BYTE  >05
G6D97  TEXT  'CALL           '   
G6DA6  BYTE  >0B
G6DA7  TEXT  'DISPLAY AT(    '
G6DB6  BYTE  >09
G6DB7  TEXT  'ERASE ALL      '
G6DC6  BYTE  >06
G6DC7  TEXT  'FOR I=         '
G6DD6  BYTE  >05
G6DD7  TEXT  'GOTO           '
G6DE6  BYTE  >0B
G6DE7  TEXT  'CALL HCHAR(    '
G6DF7  BYTE  >04
G6DF8  TEXT  'INT(           '
G6E06  BYTE  >0B
G6E07  TEXT  'CALL JOYST(    '
G6E16  BYTE  >09
G6E17  TEXT  'CALL KEY(      '
G6E26  BYTE  >08
G6E27  TEXT  'LINPUT #       '
G6E36  BYTE  >0D
G6E37  TEXT  'CALL MOTION(#  '
G6E46  BYTE  >06
G6E47  TEXT  'NEXT I         '
G6E56
G6E57  TEXT  >0PEN #         '
G6E66  BYTE  >06
G6E67  TEXT  'PRINT          '
G6E76  BYTE  >0D
G6E77  TEXT  'CALL QUIT OFF  '
G6E86  BYTE  >06
G6E87  TEXT  'RETURN         ' 
G6E96  BYTE  >0B
G6E97  TEXT  'CALL SOUND(    '
G6EA6  BYTE  >0D
G6EA7  TEXT  'CALL SPRITE(#  '
G6EB6  BYTE  >06
G6EB7  TEXT  'USING          '  
G6EC6  BYTE  >0B
G6EC7  TEXT  'CALL VCHAR(    '
G6ED6  BYTE  >0A
G6ED7  TEXT  'CALL WAIT(     '
G6EE6  BYTE  >0A
G6EE7  TEXT  'CALL LINK(     '
G6EF6  BYTE  >0E
G6EF7  TEXT  'RUN"DSK5.LOAD' '
G6F06  BYTE  >06
G6F07  TEXT  'SUBEND         '
G6F16  BYTE  >08
G6F17  TEXT  'CHR$(27)       '
G6F26  BYTE  >04
G6F27  TEXT  ' ::            '
G6F36  BYTE  >08
G6F37  TEXT  'CALL BYE       '
G6F46  BYTE  >0A
G6F47  TEXT  'RES 100,10     '
G6F56  BYTE  >09
G6F57  TEXT  'MERGE DSK      '
G6F66  BYTE  >0B
G6F67  TEXT  'OUTPUT "DSK    '
G6F76  BYTE  >0B
G6F77  TEXT  'DELETE "DSK    '
G6F86  BYTE  >07
G6F87  TEXT  'OLD DSK        '
G6F96  BYTE  >09
G6F97  TEXT  'CALL CLRS      '
G6FA6  BYTE  >08
G6FA7  TEXT  'RUN "DSK       '
G6FB6  BYTE  >0D
G6FB7  TEXT  '5.VOKAB/E/XR"  '
G6FC6  BYTE  >0F
G6FC7  TEXT  'RUN"DSK5.LISTP"'
G6FD6  BYTE  >09
G6FD7  TEXT  'RESTORE #      '
************************************************             
G6FE6  DCZ   V@>039E
G6FE9  BS    G700B
G6FEB  MOVE  >001E,@FAC,V@VROAZ
G6FF1  DST   V@>039E,@FAC12
G6FF5  ST    >01,V@>0004(@FAC12)
G6FFA  DADD  >000D,@FAC12
G6FFE  CALL  G@>0010
G7001  BYTE  >08
G7002  MOVE  >001E,V@VROAZ,@FAC
G700B  DCLR  @ERRCOD
G700D  DSUB  @>CURINC,@CURLIN
G7010  DCEQ  CRNBUF,@SYMTAB
G7014  BR    G701A
G7016  DST   @>0822,@SYMTAB
G701A  CLR   @>8376
G701C  FETCH @>8377
G701E  DSLL  >0002,@>8376
G7022  MOVE  >0004,G72F9(@>8376),@>8354
G7029  ST    >8A,@>8373
G702C  CZ    @>8357
G702E  BR    G703E
G7030  CALL  G70E8
G7033  DCEQ  >73D5,@>8354
G7037  BR    G70DA
G7039  CALL  G8259
G703C  BR    G70DA
G703E  CZ    @PRGFLG
G7040  BS    G7047
G7042  DCZ   V@ERRLN
G7045  BR    G704E
G7047  CALL  G7189
G704A  BS    G70DA
G704C  BR    G7030
G704E  CALL  G72BC
G7051  DST   @FAC,@FAC12
G7054  ST    >69,@FAC2
G7057  DCEQ  >7620,@>8354
G705B  BR    G7065
G705D  ST    V@>0002(@>8304),@FAC3
G7062  OR    >80,@FAC1
G7065  DST   @>831E,@FAC4
G7068  DST   @EXTRAM,@FAC6
G706B  DST   @VSPTR,@ARG
G706E  DADD  >0018,@ARG
G7072  DCH   @ARG,@STREND
G7075  BS    G708C
G7077  CALL  G70E8
G707A  DST   >7488,@>8354
G707E  CLR   @PRGFLG
G7080  CALL  G70E8
G7083  MOVE  >0008,G73C4,V@>02D0
G708A  BR    G70DD
G708C  XML   >77
G708E  DST   ERRLN,@EXTRAM
G7092  DST   >0000(@EXTRAM),@PGMPTR
G7098  DCLR  V@ERRLN
G709B  XML   >81
G709D  DCLR  @ERRCOD
G709F  CLR   @>8376
G70A1  FETCH @>8377
G70A3  DSLL  >0002,@>8376
G70A7  MOVE  >0004,G72F9(@>8376),@>8354
G70AE  CZ    @PRGFLG
G70B0  BS    G70B7
G70B2  CLOG  >02,@FLAG
G70B5  BR    G70D1
G70B7  XML   >83
G70B9  MOVE  >0009,G73CC,V@NLNADD
G70C0  XML   >83
G70C2  DST   >02E4,@VARW
G70C6  CALL  G7189
G70C9  BS    G70CE
G70CB  CALL  G70F5
G70CE  ST    >03,@>837F
G70D1  CLOG  >04,@FLAG
G70D4  BS    G600E
G70D6  CZ    @PRGFLG
G70D8  BS    G600E
G70DA  CALL  G72BC
G70DD  DST   V@SAVEVP,@VSPTR
G70E1  BR    TOPL15
G70E3  CEQ   >01,@>8357
G70E6  BS    G70F5
G70E8  CALL  G6872
G70EB  XML   >83
G70ED  ST    >8A,V@NLNADD
G70F1  DST   NLNADD,@VARW
G70F5  MOVE  >0001,G@>0000(@>8354),@ARG1
G70FC  CLR   @ARG
G70FE  MOVE  *ARG,G@>0001(@>8354),V*VARW
G7105  DADD  @ARG,@VARW
G7108  DCEQ  >7620,@>8354
G710C  BR    G7125
G710E  DINC  @VARW
G7110  CLR   @ARG2
G7112  ST    V@>0004(@>8304),@ARG3
G7117  CALL  G7E11
G711A  ST    V@>0005(@>8304),@ARG3
G711F  SRL   >05,@ARG3
G7122  CALL  G7E11
G7125  DCEQ  >73D5,@>8354
G7129  BS    G7151
G712B  CALL  G@>0036
G712E  CZ    @PRGFLG
G7130  BS    G7151
G7132  DCH   >02F6,@VARW
G7136  BR    G713E
G7138  XML   >83
G713A  DST   >02E3,@VARW
G713E  DST   >C9CE,V@>0001(@VARW)
G7144  DADD  >0004,@VARW
G7148  ST    @CHAT,@>8376
G714B  CALL  GB4FC
G714E  ST    @>8376,@CHAT
G7151  XML   >83
G7153  RTN 
*****************************************************
G7154  DST   @STLN,@ARG2
G7157  DINCT @ARG2
G7159  DST   @ARG2,@ARG4
G715C  DCLR  @ARG6
G715E  DCHE  @ENLN,@ARG4
G7161  BS    G717F
G7163  DST   @>0000(@ARG4),@>8358
G7169  DCGT  @ARG,@>8358
G716C  BS    G7179
G716E  DCH   @ARG6,@>8358
G7171  BR    G7179
G7173  DST   @ARG4,@ARG2
G7176  DST   @>8358,@ARG6
G7179  DADD  >0004,@ARG4
G717D  BR    G715E
G717F  DST   @>FFFE(@ARG2),@ARG2
G7185  AND   >7F,@ARG2
G7188  RTN   
******************************************************
G7189  DST   @VSPTR,@FAC8
G718C  DCH   @STVSPT,@FAC8
G718F  BR    G600E
G7191  CEQ   >68,V@>0002(@FAC8)
G7196  BS    G71B0
G7198  CEQ   >6A,V@>0002(@FAC8)
G719D  BS    G7256
G719F  CEQ   >70,V@>0002(@FAC8)
G71A4  BS    G71AC
G71A6  DADD  >FFF8,@FAC8
G71AA  BR    G718C
G71AC  DADD  >FFF8,@VSPTR
G71B0  ST    @PRGFLG,@FAC12
G71B3  CLR   @PRGFLG
G71B5  CALL  G70E3
G71B8  ST    @FAC12,@PRGFLG
G71BB  DST   @PGMPTR,@ARG
G71BE  CALL  G7154
G71C1  DST   >C9CE,V@>02E4
G71C6  DST   >02E7,@VARW
G71CA  CALL  G7E11
G71CD  XML   >83
G71CF  DST   V*FAC8,@ARG
G71D3  DADD  >FFF8,@FAC8
G71D7  DCH   @STVSPT,@FAC8
G71DA  BR    G723B
G71DC  CEQ   >68,V@>0002(@FAC8)
G71E1  BR    G7221
G71E3  DCEQ  @ARG,V*FAC8
G71E7  BR    G720C
G71E9  MOVE  >0014,G73A5,V@>02E4
G71F0  XML   >83
G71F2  DADD  >FFF8,@FAC8
G71F6  CEQ   >68,V@>0002(@FAC8)
G71FB  BR    G7205
G71FD  DCEQ  @ARG,V*FAC8
G7201  BR    G71CF
G7203  BR    G71F2
G7205  CGT   >65,V@>0002(@FAC8)
G720A  BR    G71F2
G720C  MOVE  >000B,G73B9,V@>02E4
G7213  CALL  G7154
G7216  DST   >02F0,@VARW
G721A  CALL  G7E11
G721D  XML   >83
G721F  BR    G71CF
G7221  CHE   >66,V@>0002(@FAC8)
G7226  BR    G71D3
G7228  DCH   >095A,@FAC8
G722C  BR    G723B
G722E  CEQ   >6A,V@>0002(@FAC8)
G7233  BS    G7251
G7235  DADD  >FFF8,@FAC8
G7239  BR    G7228
G723B  CZ    @PRGFLG
G723D  BS    RTNSET
G723F  MOVE  >000B,G73B9,V@>02E4
G7246  DST   >02F0,@VARW
G724A  CALL  GB4FC
G724D  XML   >83
G724F  BR    RTNSET
G7251  CZ    @PRGFLG.
G7253  BR    G725D
G7255  RTN
***************************************************
G7256  CALL  G70E3
G7259  CZ    @PRGFLG
G725B  BS    RTNSET
G725D  DST   >C9CE,V@>02E4
G7262  DST   >02E8,@FAC12
G7266  DST   V*FAC8,@>835A
G726A  CLR   @>8354
G726C  ST    V@>0001(@>835A),@>8355
G7271  DST   V@>0004(@>835A),@>835A
G7276  MOVE  *>8354,V*>835A,V*FAC12
G727C  ADD   >60,V*FAC12
G7280  DINC  @FAC12
G7282  DDEC  @>8354
G7284  BR    G727C
G7286  XML   >83
G7288  MOVE  >000B,G73B9,V@>02E4
G728F  DST   @FAC8,@>8354
G7292  DST   V@>0006(@FAC8),@FAC8
G7297  DCZ   @FAC8
G7299  BS    G72A1
G729B  DST   >02F1,@FAC12
G729F  BR    G7266
G72A1  DST   V@>FFFA(@>8354),@ARG2
G72A7  DST   @>FFFE(@ARG2),@ARG2
G72AD  DST   >02F1,@VARW
G72B1  CALL  G7E11
G72B4  XML   >83
G72B6  CEQ   @FAC,@FAC
G72B9  RTNC
**************************************************
G72BA  XML   >78
G72BC  DST   @VSPTR,@FAC8
G72BF  BR    G72C9
G72C1  DADD  >FFF8,@FAC8
G72C5  DADD  >FFF8,@FAC8
G72C9  DCH   @STVSPT,@FAC8
G72CC  BR    G600E
G72CE  ST    V@>0002(@FAC8),@>8358
G72D3  ADD   >9A,@>8358
G72D6  CH    >04,@>8358
G72D9  BS    G72BA
G72DB  CASE  @>8358
G72DD  BR    G72C5
G72DF  BR    G72EC
G72E1  BR    G72F2
G72E3  BR    G72E7
G72E5  BR    G72C1
G72E7  CALL  GAF89
G72EA  BR    G72C5
G72EC  DADD  >FFE0,@FAC8
G72F0  BR    G72C9
G72F2  DCLR  @FAC4
G72F4  CALL  GB3FC
G72F7  BR    G72C5
G72F9  BS    G73D5
G72FB  RTN 
***************************************************
 G72FC RTN
***************************************************
G72FD  BS   G73DD
        72FF   *   00   RTN   .
        7300   *   00   RTN   .
        7301   s   73   BS    G@>73E8.
        7303   *   0A   GT    .
        7304   *   01   RTNC  .
        7305   s   73   BS    G@>73F9.
        7307   *   0E   PARSE >09.
        7309   t   74   BS    G@>7406.
        730B   *   10   CONT  .
        730C   *   09   H     .
        730D   t   74   BS    G@>741F.
        730F   *   11   EXEC  .
        7310   *   09   H     .
        7311   t   74   BS    G@>7430.
        7313   *   13   RTGR  .
        7314   *   09   H     .
        7315   t   74   BS    G@>743E.
        7317   *   18   XGPL  .
        7318   *   09   H     .
        7319   t   74   BS    G@>7455.
        731B   *   19   XGPL  .
        731C   *   09   H     .
        731D   t   74   BS    G@>7467.
        731F   *   1C   XGPL  .
        7320   *   09   H     .
        7321   t   74   BS    G@>747C.
        7323   $   24   MOVE  *>8309 BYTE  TO    G@>7488 FROM  @>8327.
        7328   *   09   H     .
        7329   t   74   BS    G@>7494.
        732B   (   28   MOVE  *>8309 BYTE  TO    G@>74A3 FROM  G@>2B09.
        7331   t   74   BS    G@>74B4.
        7333   ,   2C   MOVE  *>8309 BYTE  TO    G@>74C5 FROM  @>832F.
        7338   *   09   H     .
        7339   t   74   BS    G@>74DB.
        733B   0   30   MOVE  *>8309 BYTE  TO    @>8374 FROM  G@>F531.
        7340   *   09   H     .
        7341   u   75   BS    G@>7504.
        7343   3   33   MOVE  >0975 BYTE  TO    @>8319 FROM  G@>3601(@>8375).
        734A   *   2A   MOVE  *>8339 BYTE  TO    G@>0975 FROM  G@>3838(@>8309).
        7351   u   75   BS    G@>754F.
        7353   <   3C   MOVE  *>8309 BYTE  TO    VR75 FROM  @ARG2.
        7357   =   3D   MOVE  >0975 BYTE  TO    VR6E FROM  @SYMTAB.
        735C   *   09   H     .
        735D   u   75   BS    G@>757C.
        735F   C   43   BR    G@>6309.
        7361   u   75   BS    G@>758B.
        7363   E   45   BR    G@>6509.
        7365   u   75   BS    G@>75A6.
        7367   F   46   BR    G@>6609.
        7369   u   75   BS    G@>75BC.
        736B   J   4A   BR    G@>6A09.
        736D   u   75   BS    G@>75C9.
        736F   N   4E   BR    G@>6E01.
        7371   u   75   BS    G@>75DC.
        7373   O   4F   BR    G@>6F09.
        7375   u   75   BS    G@>75E6.
        7377   Q   51   BR    G@>7109.
        7379   u   75   BS    G@>75FE.
        737B   S   53   BR    G@>7301.
        737D   v   76   BS    G@>760A.
        737F   T   54   BR    G@>7409.
        7381   v   76   BS    G@>7615.
        7383   m   6D   BS    G@>6D09.
        7385   v   76   BS    G@>7620.
        7387   *   82   NEG   @>8301.
        7389   v   76   BS    G@>7620.
        738B   *   82   NEG   @>8309.
        738D   v   76   BS    G@>762A.
        738F   *   87   DCLR  @>8309.
        7391   u   75   BS    G@>754F.
        7393   <   3C   MOVE  *>8301 BYTE  TO    VR76 FROM  @>833F.
        7397   a   61   BS    G@>6109.
        7399   v   76   BS    G@>7654.

* "DEF refers "
G73A5  BYTE >A4,>A5,>A6,>80,>D2,>C5,>C6,>C5,>D2,>D3,>80
* " to itself"
G73B0  BYTE >D4,>CF,>80,>C9,>D4,>D3,>C5,>CC,>C6
* "called " 
G73B9  BYTE >C3,>C1,>CC,>CC,>C5,>C4,>80    *
* "from"
G73C0  BYTE >C6,>D2,>CF,>CD
* "in Error"
G73C4  BYTE >C9,>CE,>80,>A5,>D2,>D2,>CF,>D2 *
* "* "
G73CC  BYTE >8A,>80
* "Warning"
G73CE  BYTE >B7,>C1,>D2,>CE,>C9,>CE,C7
G73D5  BYTE >07
* "Ready *" 
G73D6  BYTE >B2,>C5,>C1,>C4,>D9,>80
G73DD  BYTE >0A
* "Breakpoint"
G73DE  BYTE >A2,>D2,>C5,>C1,>CB,>D0,>CF,>C9,>CE,>D4
G73E8  BYTE >10
* "numeric "
G73E9  BYTE >CE,>D5,>CD,>C5,>D2,>C9,>C3,>80
* "overflow"
G73F1  BYTE >AF,>D6,>C5,>D2,>C6,>CC,>CF,>D7
G73F9  BYTE >0C
* "syntax-"
G73FA  BYTE >B3,>D9,>CE,>D4,>C1,>D8,>8D
* "Error"
G7401  BYTE >A5,>D2,>D2,>CF,>D2,>CF,>D2
G7406  BYTE >18
* "illegal "
G7407  BYTE >C9,>CC,>CC,>C5,>C7,>C1,>CC,>80
* "after "
G740F  BYTE >C1,>C6,>D4,>C5,>D2,>80
* "Subprogram"
G7414  BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD
G741F  BYTE >10
* "unmatched "
G7420  BYTE >D5,>CE,>CD,>C1,>D4,>C3,>C8,>C5,>C4,>80
* "Quotes"
G742A  BYTE >B1,>D5,>CF,>D4,>C5,>D3
G7430  BYTE >0D
* "Name too "
G7431  BYTE >AE,>C1,>CD,>C5,>80,>D4,>CF,>CF,>80
* "long"
G743A  BYTE >CC,>CF,>CE,>C7
G743E  BYTE >16
* "String-"
G743F  BYTE >B3,>D4,>D2,>C9,>CE,>C7,>8D
* "Name "
G7446  BYTE >AE,>D5,>CD,>C2,>C5,>D2,>80
* "Mismatch"
G744D  BYTE >AD,>C9,>D3,>CD,>C1,>D4,>C3,>C8
G7455  BYTE >11
* "OPTION "
G7456  BYTE >AF,>B0,>B4,>A9,>AF,>AE,>80
* "BASE "
G745D  BYTE >A2,>A1,>B3,>A5,>80
* "Error"
G7462  BYTE >A5,>D2,>D2,>CF,>D2
G7467  BYTE >14
* "improperly"
G7468  BYTE >C9,>CD,>D0,>D2,>CF,>D0,>C5,>D2,>CC,>D9
* "used Name"
G7472  BYTE >80,>D5,>D3,>C5,>C4,>80,>AE,>C1,>CD,>C5
G747C  BYTE >0B
* "IMAGE-Error"
G747D  BYTE >A9,>AD,>A1,>A7,>A5,>8D,>A5,>D2,>D2,>CF,>D2
G7488  BYTE >0B
* "Memory full"
G7489  BYTE >AD,>C5,>CD,>CF,>D2,>D9,>80,>C6,>D5,>CC,>CC
G7494  BYTE >0E
* "Stack Overflow"
G7495  BYTE >B3,>D4,>C1,>C3,>CB,>80,>AF,>D6,>C5,>D2,>C6,>CC,>CF,>D7
G74A3  BYTE >10
* "NEXT without "
G74A4  BYTE >AE,>A5,>B8,>B4,>80,>D7,>C9,>D4,>C8,>CF,>D5,>D4,>80
* "FOR"
G74B1  BYTE >A6,>AF,>B2
G74B4  BYTE >10
* "FOR/NEXT "
G74B5  BYTE >A6,>AF,>B2,>8F,>AE,>A5,>B8,>B4,>80
* "Nesting"
G74BE  BYTE >AE,>C5,>D3,>D4,>C9,>CE,>C7
G74C6  BYTE >15
* "must be in "
G74C7  BYTE >CD,>D5,>D3,>D4,>80,>C2,>C5,>80,>C9,>CE,>80
* "Subprogram"
G74D1  BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD
G74DB  BYTE >19
* "recursive "
G74DC  BYTE >D2,>C5,>C3,>D5,>D2,>D3,>C9,>D6,>C5,>80
* "Subprogram "
G74E6  BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD,>80
* "CALL"
G74F1  BYTE >A3,>A1,>AC,>AC
G74F5  BYTE >0E
* "missing SUBEND"
G74F6  BYTE >CD,>C9,>D3,>D3,>C9,>CE,>C7,>80,>B3,>B5,>A2,>A5,>AE,>A4
G7504  BYTE >14
* "RETURN '
G7505  BYTE >B2,>A5,>B4,>B5,>B2,>AE,>80
* "without "
G750C  BYTE >D7,>C9,>D4,>C8,>CF,>D5,>D4,>80
* "GOSUB"
G7514  BYTE >A7,>AF,>B3,>B5,>A2 
G7519  BYTE >10
* "String "
G751A  BYTE >B3,>D4,>D2,>C9,>CE,>CE,>C7,>80
* "truncated
G7521  BYTE >D4,>D2,>D5,>CE,>C3,>C1,>D4,>C5,>C4
G752A  BYTE >0D
* "bad Subscript"
G752B  BYTE >C2,>C1,>C4,>80,>B3,>D5,>C2,>D3,>C3,>D2,>C9,>D0,>D4
G7538  BYTE >16
* "Speech-String "
G7539  BYTE >B3,>D0,>C5,>C5,>C3,>C8,>8D,>B3,>D4,>D2,>C9,>CE,>C7,>80
* "too long"
G7547  BYTE >D4,>CF,>CF,>80,>CC,>CF,>CE,>C7
G754F  BYTE >0E
* "Line not found"
G7550  BYTE >AC,>C9,>CE,>C5,>80,>CE,>CF,>D4,>80,>C6,>CF,>D5,>CE,>C4
G755E  BYTE >0F
* "bad Line-Number"
G755F  BYTE >C2,>C1,>C4,>80,>AC,>C9,>CE,>C5,>8D,>AE,>D5,>CD,>C2,>C5,>D2
G756E  BYTE >0D
* "Line too long"
G756F  BYTE >AC,>C9,>CE,>C5,>80,>D4,>CF,>CF,>80,>CC,>CF,>CE,>C7
G757C  BYTE >0E
* "can,t continue"
G757D  BYTE >C3,>C1,>CE,>87,>D4,>80,>C3,>CF,>CE,>D4,>C9,>CE,>D5,>C5
G758B  BYTE >1A
* "Command "
G758C  BYTE >A3,>CF,>CD,>CD,>C1,>CE,>C4,>80
* "illegal "
G7594  BYTE >C9,>CC,>CC,>C5,>C7,>C1,>CC,>80
* "in Program"
G759C  BYTE >C9,>CE,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD
G75A6  BYTE >15
* "only Program" 
G75A7  BYTE >CF,>CE,>CC,>D9,>80,>CC,>C5,>C7,>C1,>CC
* " in program"    
G75B1  BYTE >80,>C9,>CE,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD
G75BC  BYTE >0C
* "bad Argument"
G75BD  BYTE >C2,>C1,>C4,>80,>A1,>D2,>C7,>D5,>CD,>C5,>CE,>D4
G75C9  BYTE >12
* "no Program "
G75CA  BYTE >CE,>CF,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD,>80
* "present"
G75D5  BYTE >D0,>D2,>C5,>D3,>C5,>CE,>D4
G75DC  BYTE >09
* "bad Value"
G75DD  BYTE >C2,>C1,>C4,>80,>B6,>C1,>CC,>D5,>C5
G75E6  BYTE >17
* "incorrect "
G75E7  BYTE >C9,>CE,>C3,>CF,>D2,>D2,>C5,>C3,>D4,>80
* "Argument-List"
G75F1  BYTE >A1,>D2,>C7,>D5,>CD,>C5,>CE,>D4,>8D,>AC,>C9,>D3,>D4
G75FE  BYTE >0B
* "INPUT-Error"
G75FF  BYTE >A9,>AE,>B0,>B5,>B4,>8D,>A5,>D2,>D2,>CF,>D2
G760A  BYTE >0A
* "DATA-Error"
G760B  BYTE >A4,>A1,>B4,>A1,>8D,>A5,>D2,>D2,>CF,>D2
G7615  BYTE >0A
* "File-Error"
G7616  BYTE >A6,>C9,>CC,>C5,>8D,>A5,>D2,>D2,>CF,>D2
G7620  BYTE >09
* "I/O-Error"
G7621  BYTE >A9,>8F,>AF,>8D,>A5,>D2,>D2,>CF,>D2
G762A  BYTE >14
* "Subprogram "
G762B  BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD,>80
* "not found"
G7636  BYTE >CE,>CF,>D4,>80,>C6,>CF,>D5,>CE,>C4
G763F  BYTE >14
* "Protection "
G7640  BYTE >B0,>D2,>CF,>D4,>C5,>C3,>D4,>C9,>CF,>CE,>80
* "Violation"
G764B  BYTE >B6,>C9,>CF,>CC,>C1,>D4,>C9,>CF,>CE
G7654  BYTE >16
* "unrecognized"
G7655  BYTE >D5,>CE,>D2,>C5,>C3,>CF,>C7,>CE,>C9,>DA,>C5,>C4
* "Character"
G7661  BYTE >80,>A3,>C8,>C1,>D2,>C1,>C3,>D4,>C5,>D2
G766B  BYTE >14
* "unresolved "
G766C  BYTE >D5,>CE,>D2,>C5,>D3,>CF,>CC,>D6,>C5,>C4,>80
* "REFerence"
G7677  BYTE >B2,>A5,>A6,>C5,>D2,>C5,>CE,>C3,>C5


        766C   *   D5   DCEQ  @>91D2(@>83C5),*>83CF(@>83CC).
        7673   *   D6   CEQ   @>88C4(@>8380),>B2.
        7678   *   A5   DSUB  V@>06C5,*>83C5(@PRTNFN).
        767E   *   C3   EX    @>88BD(@EXTRAM),>32A3.
        7684   .   2E   MOVE  *FAC BYTE  TO    G@>03BD FROM  @LINUM.
        7689   0   30   MOVE  *>8395 BYTE  TO    @LINUM FROM  G@>BD80.
        768E   *   86   CLR   @STLN.
        7690   *   93   DDEC  @RAMFRE.
        7693   *   BD   DST   @FREPTR,@HIVDP.
        7696   *   BD   DST   @STRSP,@HIVDP.
        7699   *   BD   DST   @STREND,@HIVDP.
        769C   *   86   CLR   @BASE.
        769E   *   87   DCLR  @SYMTAB.
        76A0   *   87   DCLR  @SUBTAB.
        76A2   *   0F   XML   >8F.
        76A4   *   00   RTN   .
        76A5   *   0F   XML   >8F.
        76A7   *   02   RAND  >00.
        76A9   *   00   RTN   .
        76AA   W   57   BR    G@>7703.
        76AC   V   56   BR    G@>76C8.
        76AE   W   57   BR    G@>77BD.
        76B0   V   56   BR    G@>76D7.
        76B2   X   58   BR    G@>7819.
        76B4   Y   59   BR    G@>7949.
        76B6   Y   59   BR    G@>7949.
        76B8   W   57   BR    G@>77B4.
        76BA   @   40   BR    G@>6090.
        76BC   @   40   BR    G@>6062.
        76BE   @   40   BR    G@>6066.
.        76C0   @   40   BR    G@>606E.
        76C2   @   40   BR    G@>603A.
        76C4   @   40   BR    G@>605A.
        76C6   @   40   BR    G@>603E.
        76C8   *   DA   CLOG  @XFLAG,>40.
        76CB   @   40   BR    G@>603A.
        76CD   *   06   CALL  G@>797E.
        76D0   *   D6   CEQ   @CHAT,>B3.
        76D3   v   76   BS    G@>76CD.
        76D5   Y   59   BR    G@>7972.
        76D7   *   DA   CLOG  @XFLAG,>40.
        76DA   @   40   BR    G@>603A.
        76DC   *   8E   CZ    @PRGFLG.
        76DE   `   60   BS    G@>6090.
        76E0   *   DA   CLOG  @XFLAG,>02.
        76E3   @   40   BR    G@>6052.
        76E5   *   0F   XML   >79.
        76E7   *   0F   XML   >7E.
        76E9   *        BYTE  >00
        76EA   *   F1   XGPL  .
        76EB   *   0F   XML   >7E.
        76ED   *        BYTE  >00
        76EE   *   C8   CHE   @>830F,@>837E.
        76F1   *   00   RTN   .
        76F2   *   01   RTNC  .
        76F3   *   A2   ADD   @CHAT,>D0.
        76F6   v   76   BS    G@>76FE.
        76F8   *   92   DEC   @CHAT.
        76FA   @   40   BR    G@>6052.
        76FC   *   90   INC   @BASE.
        76FE   *   B6   OR    @XFLAG,>02.
        7701   Y   59   BR    G@>7970.
        7703   *   DA   CLOG  @XFLAG,>40.
        7706   @   40   BR    G@>603A.
        7708   *   8E   CZ    @PRGFLG.
        770A   `   60   BS    G@>6090.
        770C   *   B6   OR    @XFLAG,>84.
        770F   *   06   CALL  G@>797E.
        7712   *   DA   CLOG  V*SYMTAB,>07.
        7716   w   77   BS    G@>77A4.
        7718   *   B6   OR    @XFLAG,>80.
        771B   *   B6   OR    @FLAG,>08.
        771E   *   D2   CGE   @CHAT,>00.
        7721   @   40   BR    G@>603A.
        7723   *   06   CALL  G@>7985.
        7726   *   B2   AND   @FLAG,>F7.
        7729   *   0F   XML   >7E.
        772B   *        BYTE  >00 
        772C   *   B6   OR    @>830F,>7E.
        772F   *   00   RTN   .
        7730   *   BE   ST    @>9142,>60.
        7734   :   3A   MOVE  *PRTNFN BYTE  TO    VR42 FROM  G@FREPTR(@SUBTAB).
        773A   5   35   MOVE  >001D BYTE  TO    V@CRNBUF FROM  V*SYMTAB.
        7741   *   BD   DST   @FAC,V@>0824.
        7745   *   A5   DSUB  @FAC,@SYMTAB.
        7748   *   A3   DADD  @FAC,CRNBUF.
        774C   *   BD   DST   V@>0824,@FAC.
        7750   *   BD   DST   @FREPTR,V@>0002(@SYMTAB).
        7755   *   93   DDEC  @FREPTR.
        7757   *   BF   DST   @SYMTAB,CRNBUF.
        775B   *   CE   CGT   @CHAT,>83.
        775E   W   57   BR    G@>779D.
        7760   *   8E   CZ    @CHAT.
        7762   w   77   BS    G@>779D.
        7764   *   CE   CGT   @CHAT,>00.
        7767   w   77   BS    G@>7781.
        7769   *   D6   CEQ   @CHAT,>C8.
        776C   w   77   BS    G@>7773.
        776E   *   D6   CEQ   @CHAT,>C7.
        7771   W   57   BR    G@>777D.
.        7773   *   0F   XML   >79.
        7775   *   86   CLR   @>8308.
        7777   *   BC   ST    @>8309,@CHAT.
        777A   *   A1   DADD  @PGMPTR,@>8308.
        777D   *   0F   XML   >79.
        777F   W   57   BR    G@>775B.
        7781   *   B6   OR    @XFLAG,>80.
        7784   *   06   CALL  G@>7985.
        7787   *   D7   DCEQ  @SYMTAB,CRNBUF.
        778B   w   77   BS    G@>775B.
        778D   *   BD   DST   V@>0002(@SYMTAB),V@>0822.
        7793   *   BD   DST   V@>0822,@SYMTAB.
        7797   *   BF   DST   @SYMTAB,CRNBUF.
        779B   W   57   BR    G@>775B.
        779D   *   BD   DST   @SYMTAB,V@>0822.
        77A1   *   0F   XML   >8F.
        77A3   *   01   RTNC  .
        77A4   *   0F   XML   >7E.
        77A6   *        BYTE  >00
        77A7   *   BE   ST    @>9142,>60.
        77AB   :   3A   MOVE  *PRTNFN BYTE  TO    VR42 FROM  G@FREPTR(@SUBTAB).
        77B1   *   0F   XML   >8F.
        77B3   *   01   RTNC  .
***********************************************
G77B4  BR    G7CA0                                           
G77B6  BR    G6040                                           
G77B8  BR    G7A0F                                            
G77BA  DCLR  *>8A2E                                            
G77BD  BR    G6761                                              
G77BF  CALL  GETCHR                                          
G77C2  BS    RTNSET                                            
G77C4  CEQ   >20,@CHAT                                      
G77C7  BS    GETNB                                          
G77C9  RTN
*****************************************                        
G77CA  DADD  >0004,@VARW                                      
G77CE  DCH   @>832A,@VARW                                     
G77D1  BS    RTNSET                                              
G77D3  ST    V*VARW,@CHAT                                 
G77D7  CEQ   >7F,@CHAT                                     
G77DA  BS    G67CA                                              
G77DC  ADD   >A0,@CHAT                                        
G77DF  DINC  @VARW                                         
G77E1  RTN
*****************************************                        
G77E2  DCLR  @FAC                                       
G77E4  CLR   @BYTES                                          
G77E6  ADD   >D0,@CHAT                                  
G77E9  CH    >09,@CHAT                                    
G77EC  BS    G6806                                        
G77EE  DMUL  >000A,@FAC                                     
G77F2  XML   >03                                             
G77F4  BR    G6812                                           
G77F6  ST    @CHAT,@FAC1                                    
G77F9  DADD  @FAC2,@FAC                                    
G77FC  GT                         
G77FD  BR    G6812                                             
G77FF  INC   @BYTES                                          
G7801  CALL  GETCHR                                              
G7804  BR    GETLN2                                              
G7806  CZ    @BYTES                                            
G7808  BS    G680E                                              
G780A  XML   >03                                            
G780C  BS    >6812                                            
G780E  ADD   >30,@CHAT                                     
G781   RTN 
******************************************                       
G7812  XML   >83                                             
G7814  CLR   @PRGFLG                                          
G7816  BR    ERRBLN                                              
G7818  CLR   @RAMFLG                                             
G781B  DST   >FFE7,@RAMTOP                               
G7820  DST   @RAMTOP,@STLN                                     
G7824  DST   @RAMTOP,@ENLN                                   
G7828  DST   @STLN,@RAMFRE                                     
G782C  DCEQ  @RAMTOP,@RAMFRE                                 
G7831  BS    >6836                                             
G7833  DDEC  @RAMFRE                                             
G7836  DST   @MAXMEM,@FREPTR                                    
G7839  DST   @MAXMEM,@STRSP                               
G783C  DST   @MAXMEM,@STREND                                  
G783F  DCLR  @SYMTAB                               
G7841  DCLR  @SUBTAB                                         
G7843  DCLR  V@SEXTRM                                      
G7846  CLR   @BASE                                             
G7848  CLR   @>6000                                           
G784C  DST   VRAMVS,@VSTACK                                     
G7850  DST   VRAMVS,@STVSPT                                     
G7854  DST   VRAMVS,V@SAVEVP                                     
G7859  RTN   
***********************************************                     
G785A  RTN                        
G785B  BS    >7C7C                                        
G785D  BS    >7C7C                                           
G785F  BS    >7C7C                               
G7861  BS    >7C00                                         
G7863  RTN  
***********************************************                      
G7864  BYTE  >00,>00,>00,>00,>00,>00,>00                        
***********************************************                        
G786B  SLL   @VARW,@FAC                                    
G786E  RTN
***********************************************                        
G786F  CALL  >0017                                     
G7872  MOVE  >0008,G686A,#0                                 
G7878  ST    >10,V@>080F                                  
G787C  MOVE  >0010,V@>080F,V@>0810                               
G7883  CEQ   >01,V@CONFLG                                       
G7887  BR    G689A                                           
G7889  MOVE  >0010,@FAC,V@VROAZ                               
G788F  CALL  >BCD3                                             
G7892  MOVE  >0010,V@VROAZ,@FAC                               
G7898  BR    SPRINT                                             
G789A  MOVE  >0010,G685A,V@CHRCUR   Load CURSOR DEFintion                              
G78A1  DST   >0400,@FAC                                      
G78A5  CALL  >0018                                           
G78A8  CZ    V@CONFLG                                        
G78AB  BS    SPRINT                                          
G78AD  DST   >0600, @FAC                                      
G78B1  CALL  >004A                                          
G78B4  CLR   @MOTION                               
G78B6  DCLR  V@>0780                                          
G78B9  MOVE  >006E,V@>0781,V@>0782                               
G78C0  ST    >D0,V@>0370                                       
G78C4  DST   >C000,V@>0300                                 
G78C9  DCLR  V@>0302                                            
G78CC  MOVE  >006C,V@>0300,V@>0304                          
G78D3  RTN
**********************************************                        
G78D4  CGT   >83, @CHAT                                        
G78D7  BR    >66CC                                            
G78D9  CZ    @CHAT                                        
G78DB  RTNC
**********************************************                       
G78DC  FETCH @FAC4                                    
G78DE  DST   *FAC4,@FAC2                                     
G78E2  DST   @>0000(@>4C),@FAC6                           
G78E8  RTN
***********************************************                        
G78E9  FETCH @FAC2                                         
G78EB  DST   *FAC2, @FAC2                                     
G78EF  CLR   @FAC6                                             
G78F1  FETCH @FAC7                                             
G78F3  CLR   @FAC4                                             
G78F5  FETCH @FAC5                            
G78F7  XML   >86                                              
G78F9  RTN 
***********************************************


             
***********************************************
G7E11  CALL  >7DF3

************************************************                                      
G7E15  BYTE  >18                  
G7E16  BR    SPRINT                                          
G7E18  BR    G63BB                                          
G7E1A  BR    TOPL10                                              
G7E1C  BR    G6872                                            
G7E1E  BR    G622D                                          
G7E20  BR    >6020                                        
G7E22  BR    KILSYM                                      
G7E24  BR    >6024                   
G7E26  BR    GETNB                                            
G7E28  BR    GETNB2                                             
G7E2A  BR    GETCHR                                      
G7E2C  BR    GETLN                                       
G7E2E  BR    AUTO1                                            
G7E30  BS    TOPL02                                            
G7E32  BR    EDITLN                                       
G7E34  BR    GRSUB1                                          
G7E36  BR    GWSUB                                       
G7E38  CLR   @PRGFLG                                   
G7E3A  CALL  G6FE6                                             
G7E3D  SCAN                       
G7E3E  CALL  G6FE6                                         
G7E41  BACK  >0F                                               
G7E43  DNEG  @PAD6                                      
G7E45  BS    G6FE6                                      
G7E47  B     >8644                                             
G7E4A  CALL  G6FE6                                            
G7E4D  CALL  >066F                                            
G7E50  SRL   >06,@>8307                                      
G7E53  BS    G6FE6         
       
***********************************************

***********************************************
G7F21  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F29  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F21  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F39  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F41  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F49  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F51  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F59  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F61  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F69  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F71  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F79  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F81  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F89  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F91  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7F99  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FA1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FA9  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FB1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FB9  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FC1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FC9  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FD1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FD9  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FE1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FE9  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FF1  BYTE   >00,>00,>00,>00,>00,>00,>00,>00
G7FF9  BYTE   >00,>00,>00,>00,>00,>00,>00
************************************************
       END

 

  • Like 4
Link to comment
Share on other sites

Ok need someone in assembly to answer this curious thing done by Wilfred Winkler:

In XB or EA or Basic you can do in Assembly:

   XML  >16  * (Search Variable Name), leads back to GPL  

I got this from TI INTERN and this command resides in ROM 0 at >15D6

**************************************************************

But in XB 3 by Wilfred Winkler ROM 1 is the XML list is >7C the address for the routine is >15D6

 

Spoiler

***********************************************************
       AORG >6000
***********************************************************

6000 DATA >0004,>0008,>0010,>0018,>0020,>0028,>6500,>001C
*************************************************************
* XML table number 7 for Extended Basic - must have         *
*     it's origin at >6010                                  *
*************************************************************
*           0   1      2    3      4  5     6      7
6010 DATA >7438,>73D6,>60E2,>613A,>6550,>65A8,>65F2,>6446 
*           7      8    9     A    B    C      D
6020 DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,>15D6,>6EDC 
*           E     F
     DATA SPEED,CRNSEL 
*************************************************************
* XML table number 8 for Extended Basic - must have         *
*     it's origin at >6030                                  *
*************************************************************
*           0   1      2    3     4    5     6      7 
6030 DATA CIF,CONTIN,RTNG,SCROLL,IO,>GREAD,GWRITE,DELREP 
*           8    9    A      B      C      D      E 
6040 DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,>6156
*           F
     DATA PSCAN  
*

 

So why the heck did he do XML >7C for Assign a value to a variable?

 

When he could have just done XML >16 that does exactly the same thing?

Why do it this way? Why waste 2 bytes in ROM1 of XB 3 for this?

 

 

 

Link to comment
Share on other sites

1 hour ago, RXB said:

Ok need someone in assembly to answer this curious thing done by Wilfred Winkler:

In XB or EA or Basic you can do in Assembly:

   XML  >16  * (Search Variable Name), leads back to GPL  

I got this from TI INTERN and this command resides in ROM 0 at >15D6

**************************************************************

But in XB 3 by Wilfred Winkler ROM 1 is the XML list is >7C the address for the routine is >15D6

 

  Reveal hidden contents

***********************************************************
       AORG >6000
***********************************************************

6000 DATA >0004,>0008,>0010,>0018,>0020,>0028,>6500,>001C
*************************************************************
* XML table number 7 for Extended Basic - must have         *
*     it's origin at >6010                                  *
*************************************************************
*           0   1      2    3      4  5     6      7
6010 DATA >7438,>73D6,>60E2,>613A,>6550,>65A8,>65F2,>6446 
*           7      8    9     A    B    C      D
6020 DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,>15D6,>6EDC 
*           E     F
     DATA SPEED,CRNSEL 
*************************************************************
* XML table number 8 for Extended Basic - must have         *
*     it's origin at >6030                                  *
*************************************************************
*           0   1      2    3     4    5     6      7 
6030 DATA CIF,CONTIN,RTNG,SCROLL,IO,>GREAD,GWRITE,DELREP 
*           8    9    A      B      C      D      E 
6040 DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,>6156
*           F
     DATA PSCAN  
*

 

So why the heck did he do XML >7C for Assign a value to a variable?

 

When he could have just done XML >16 that does exactly the same thing?

Why do it this way? Why waste 2 bytes in ROM1 of XB 3 for this?

 

 

 

Is there much overhead to swapping ROM banks?

Maybe it removes the swapping while the program is running in ROM1.

Swapping time could be significant for simple/small routines

(just guessing)

Link to comment
Share on other sites

5 hours ago, TheBF said:

Is there much overhead to swapping ROM banks?

Maybe it removes the swapping while the program is running in ROM1.

Swapping time could be significant for simple/small routines

(just guessing)

Well it would be faster to just us the XML from GPL in first place that way XML >16 and no need for ROM switching at all after all the lower 4K ROM banks are the same!

It just makes no sense why he did this so why I asked.

 

Look he does this from GPL GROM in XB 3:

GPL command

XML >7C

GPL command

 

But he could have done this and not wasted 2 bytes in ROM with this instead:

GPL command

XML >16

GPL command

 

 

His goes an extra step to go to >601C loads >15D6 then runs routine at >15D6 so takes 2 steps more to do same exact thing?

There is no need for a delay as GPL runs interrupts all the time, so WHY did he do this? What am I missing here?

Edited by RXB
Link to comment
Share on other sites

  • 2 weeks later...

Last ZOOM yesterday 11/14/2021 Matt asked if RXB could load more VDP Registers from RXB command CALL POKER(vdp-register,value) for example:

         This sets text mode.             | >100 CALL POKER(7,244,1,240)
          This is a delay loop.             | >110 FOR L=1 TO 500 :: NEXT L
          This sets multi color mode    | >120 CALL POKER(1,232)
          This is a delay loop.             | >130 FOR L=1 TO 500 :: NEXT L
          This sets bit map mode.       | >140 CALL POKER(0,2,1,2)
          This is a delay loop.             | >150 FOR L=1 TO 500 :: NEXT L
          This sets normal XB mode.   | >160 CALL POKER(0,0)

 

If you do this change from Classic99 you can test F18 by loading registers from RXB 2020 at hex address >DB66 change the >08 to >40 

this will change max VDP register of >08 to >40 which is 64 max registers as Matt requested.

In Classic99 go to Options and select GRAM then check mark >C000 to change from GROM to GRAM in >C000 then got to RXB command mode and type:

CALL POKEG(-9370,64) ! This change allows you to change F18 VDP registers from RXB Edit or Program modes.

 

If you are using MESS you need to change the address at >DB66 from >08 to >40 as stated above.

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Ok new change to CALL CHAR(character-code,definition-string) similar but not same as XB 3 feature.

 

 

          CHAR           subprogram                            PAGE  C3
          -------------------------------------------------------------
 
          Format         CALL CHAR(character-code,pattern-identifier
                         [,...])

 
          Description
 
           See EXTENDED BASIC MANUAL page 56 for more data. Addition 
          characters 30 to 159 by redefined, but this affects sprites. 
          Now 30 (CURSOR) and 31 (EDGE CHARACTER) to be redefined. 
          Also 144 to 159 may be redefined if sprites are not used.
          Pattern-identifier increased from 64 to 240 string. Thus up
          to 15 characters may be defined in single command, 4 was old
          limit in XB allowed to be defined in XB manaual page 56

          Programs
 
          This line will define all the      | >100 CALL CHAR(ALL,"")
           characters as a empty string.|
          FOR NEXT loop 30 to 127       | >110 FOR X=30 to 127
          This line prints a character.     | >120 PRINT CHR$(X);
          NEXT to continue loop.           | >130 NEXT X
          Reset characters 32 to 127     | >140 CALL CHARSET(ALL)
          This line repeats the program.| >150 GOTO 100                              
                                        | 
          Sets variable A$ up.               | >100 A$="FF818181818181FF"
          Define all the characters same| >110 CALL CHAR(ALL,A$)                                    |       
          This line defines the cursor.    | >120 CALL CHAR(30,"FF81FF")
          This line defines the edge       | >130 CALL CHAR(31,"55")
          character.                             |             
                                                     |

          Options
          Sprites may not be used if characters 144 to 159 are being
          redefined for use. 15 characters now defined up from 4 in XB.

 

  • Like 1
Link to comment
Share on other sites

RXB 2021 UPDATE:

Added new features to CALL SCREEN

 

100 CALL SCREEN(16) ! Normal version in XB
110 CALL KEY("",5,K,S) ! waits for any key pressed
120 CALL SCREEN("OFF") ! Turns off screen
130 PRINT "OFF"
140 CALL KEY("",5,K,S) ! waits for any key pressed
150 CALL SCREEN("ON") ! Turns on screen
160 PRINT "ON"
170 CALL KEY("",5,K,S) ! waits for any key pressed
180 CALL SCREEN(16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) ! You can flip through colors quickly for some visual effects.

190 GOTO 180

 

Kind of cool if you use CALL SCREEN(7,5,7,5,7,5) you get a kind of blue purple screen with bands of red.

A new tool to play with for visual effects.

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Hi Rich

 

There seems to be some things in RXB 2021 that would interest me from a game point of view, I like the rapid colour switching and stuff like that, for the visuals.  When version 2021 is released I'd like to have a bash at making a game for it.  Some sort of shoot 'em 'up with nice visuals that sort of thing.  

 

  • Like 3
Link to comment
Share on other sites

8 hours ago, Retrospect said:

Hi Rich

 

There seems to be some things in RXB 2021 that would interest me from a game point of view, I like the rapid colour switching and stuff like that, for the visuals.  When version 2021 is released I'd like to have a bash at making a game for it.  Some sort of shoot 'em 'up with nice visuals that sort of thing.  

 

Sure maybe you could beta test what I got so far.

Link to comment
Share on other sites

8 hours ago, TheBF said:

Very neat to see that hi performance XB.

How much extra space did it take to add the ALC versus the old way?

So far I have added 1 8K bank of ROM from FinalGROM.

But nothing is stopping me from adding more like 3 more.

  • Like 3
Link to comment
Share on other sites

To my dismay I have found that RXB 2021 BETA has a bug, who knew...LOL!

CALL HCHAR, VCHAR and GCHAR share similar subprograms so if you use something like:

CALL HCHAR(ROW,COL,ASC(SEG$(X$,P,1))) 

it will crash with SYNTAX ERROR.

But you can use Y=ASC(SEG$(X$,P,1)) ::CALL HCHAR(ROW,COL,Y)

 

Yes I am working on fixing this....

 

  • Like 2
Link to comment
Share on other sites

Ok accidently changes a GPL command in ASC(string) from BS to BR

 

***********************************************************
* ASC(A$) - Takes the numeric value of the first character in A$. 
***********************************************************
ASC01  CALL PARFF             Insure left parenthesis & par
           BR   ERRSNM            If not string
           CZ   @FAC7             Empty string?
           BS   ERRBA             ERROR BAD ARGUMENT   <<<<<<<   Accidently changed the S to a R, once fixed it works again.
ASC02  ST   V*FAC4,@FAC1      Get the first character
           CLR  @FAC              Clear first byte
           BR   LEN02             USE COMMON CODE >>>JUMP ALWAY
***********************************************************

 

Please let me know if you guys find any BUGS?

  • Like 2
Link to comment
Share on other sites

If it was easy everybody would do it. :) 

Interesting that adding faster graphics routines broke that game. 

I am sure the game could be fixed to work properly but ya, side-effects are un-predictable.

 

HEX and MOD are nice additions to XB.  

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...