# RXB - Rich Extended Basic

## 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

##### Share on other sites

Making great progress on XB 3 GROMs.

Spoiler

***********************************************************
GROM >6000
***********************************************************
* EQUATES *
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
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 *
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 >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
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
G6045  BS    G6FE6
G6047  B     G8644
G604A
******************************************************

******************************************************
G60A8  BYTE  >09
******************************************************
G60B2  DATA  >0000
G60B4  DATA  >60CA
******************************************************
G60B6  BYTE  >13
G60B7  TEXT  'EXPANDED BASIC #3.0'
******************************************************
TOPLEV  CLR   [email protected]>0370                 * SPRITES MOTION
G60CD  MOVE  >004D,[email protected]>0370,[email protected]  * CLEAR LODFLG
G60DE  ST    >01,[email protected]
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  [email protected]>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,[email protected] * >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
G613D  CLR   @RAMFLG
G6140  CLR   @PRGFLG
G6142  CLOG  >01,@FLAG
G6145  BS    G616C
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,[email protected]>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,[email protected]
G61B6  BS    G61DA
G61B8  CH    >08,[email protected]
G61BC  BS    G6288
G61BE  DST   >0821,@PGMPTR
G61C2  XML   >79
G61C4  CASE  [email protected]
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    [email protected],@RAMPTR
G61DE  CLOG  >01,@RAMPTR
G61E1  BS    G6288
G61E3  DST   >0821,@PGMPTR
G61E7  XML   >79
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,[email protected]
G6258  BR    G6270
G625A  CALL  G68D4
G625D  BS    G6262
G625F  CALL  G869C
G6262  DCEQ  @ENLN,@STLN
G6265  BS    G6094
G6267  DST   @ENLN,[email protected]
G6270  CLR   @PRGFLG
G6272  CALL  G8259
G6275  DEC   @PRGFLG
G6277  DCLR  [email protected]
G627A  DCLR  [email protected]
G627D  ST    >88, @SUBSTK
G6280  ST    @RAMTOP, @RAMFLG
G6285  CALL  KILSYM
G6288  ST    >FF,[email protected]>03B7
G628C  DCLR  @RAMPTR
G628E  DCLR  @XFLAG
G6294  CZ    @PRGFLG
G6296  BR    G62AA
G6298  DST   CRNBUF,@PGMPTR
G629C  XML   >79
G629E  XML   >83
G62A0  CALL  G76A5
G62A3  DST   [email protected],@VSTACK
G62A7  B     GB188
G62AA  CALL  G7680
G62B0  DCLR  @LSUBP
G62B2  DST   [email protected],@VSTACK
G62B6  B     GB188
G62B9  CALL  GETNB
G62BC  BR    G6038
G62BE  DCZ   [email protected]
G62C1  BS    G6084
G62C3  XML   >83
G62C5  DST   [email protected],@EXTRAM
G62C9  DST   [email protected],@PGMPTR
G62CD  DST   [email protected],@BUFLEV
G62D1  DST   [email protected],@LSUBP
G62D5  OR    [email protected],@FLAG
G62D9  DCH   [email protected],@VSTACK
G62DD  BR    G62E3
G62DF  XML   >78
G62E1  BR    G62D9
G62E3  ST    >FF, @PRGFLG
G62E6  ST    @RAMTOP,@RAMFLG
G62EB  DCLR  [email protected]
G62EE  DST   VRAMVS,[email protected]
G62F3  XML   >81
G62F5  CZ    [email protected]>0821
G62F8  BR    ERRSYN
G62FA  MOVE  >0280,[email protected]>0080,[email protected]>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,[email protected]>02AF,[email protected]>02CF
G6383  DST   @>2004,@ARG2
G6388  DSUB  @>2002,@ARG2
G638D  DST   >02D2,@VARW
G6391  CALL  G63BB
G6394  DST   @STREND,@ARG2
G6397  DSUB  @VSTACK,@ARG2
G639E  GT
G639F  BS    G63A3
G63A1  DCLR  @ARG2
G63A3  DST   >0292,@VARW
G63A7  CALL  G63BB
G63AA  DST   @RAMFRE,@ARG2
G63B2  DST   >02B2,@VARW
G63B6  CALL  G63BB
G63B9  BR    G6136
G63BB  DCLR  @ARG
G63BD  DDIV  >000A,@ARG
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
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
G643D  CARRY
G643E  BS    ERRBLN
G6440  CH    >7F,@CURLIN
G6443  BS    ERRBLN
G6445  DST   @STLN,@ARG
G6448  AND   >7F,@>0000(@>5C)
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
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
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
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)
G651D  DCH   @ENLN,@ARG
G6520  BR    G6513
G6522  XML   >7E
G6524  BYTE  >03
G6525  DCHE  @>0000(@>2E),@BYTES
G652B  BR    TOPL10
G652D  XML   >87
G6534  DDECT @EXTRAM
G6536  DST   @EXTRAM,@FAC
G6539  DDEC  @FAC
G653B  DSUB  @STLN,@EXTRAM
G653E  BS    G6545
G6540  DST   @EXTRAM,@ARG
G6543  XML   >88
G6549  BS    G6125
G654B  DCH   @RAMTOP,@STLN
G654F  BS    >6125
G6551  DCZ   @EXTRAM
G6553  BR    G6522
G6555  BR    TOPL10
G6557  CZ    [email protected]>0821
G655A  BR    ERRSYN
G655C  MOVE  >00D8,[email protected]>0500,[email protected]>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,[email protected]>0821
G657A  ST    [email protected]>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
G6593  CLR   @FAC
G6595  DSLL  >0004,@FAC
G6599  DCEQ  >B5C7,[email protected]>0824
G659E  CH    >0F,[email protected]>0826
G65A2  BS    G6080
G65A4  CLR   @FAC2
G65A6  ST    [email protected]>0826,@FAC3
G65AA  MOVE  >0010,[email protected]>0826,[email protected]>6D66(@>4A)
G65B2  CZ    [email protected]>0827(@>4C)
G65B6  BR    ERRSYN
G65B8  BR    G6136
G65BD  BR    G65CD
G65BF  ST    >02,[email protected]
G65C3  CZ    [email protected]>0822
G65C6  BR    ERRSYN
G65C8  CALL  G6872
G65CB  BR    G6136
G65CD  CEQ   >9B,@CHAT
G65D0  BR    G65D8
G65D2  ST    >01,[email protected]
G65D6  BR    >65C3
G65D8  CEQ   >EA,@CHAT
G65DB  BR    ERRSYN
G65DD  CLR   [email protected]
G65E0  BR    >65C3
G65E2  CZ    [email protected]>0821
G65E5  BR    ERRSYN
G65E7  DST   @SYMTAB,@FAC
G65EA  CLR   @>8304
G65EC  XML   >83
G65EE  DST   >B39A,[email protected]>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    [email protected]>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,[email protected]>02C4
G661C  DST   >A69A,[email protected]>02C6
G662C  CZ    @>8303
G662E  BS    G6648
G6633  ST    >89,[email protected]>02C9(@>04)
G6638  ST    >8C,[email protected]>02C8(@>04)
G663D  DDEC  @>8304
G663F  DEC   @>8303
G6641  BR    G6638
G664D  DDEC  @>8304
G664F  BR    G6648
G6651  SCAN
G6652  BR    G6657
G6654  SCAN
G6655  BR    G6654
G6657  DST   [email protected]>0002(@>00),@FAC
G665C  BR    G65F5
G665E  CZ    [email protected]>0821
G6661  BR    ERRSYN
G6663  DST   @SUBTAB,@FAC
G6666  XML   >83
G6668  ST    >9A,[email protected]>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,[email protected]>02C4
G6689  DST   >ACAC,[email protected]>02C6
G668E  DST   [email protected]>0004(@>00),@>8304
G6693  MOVE  @>8302,V*>8304,[email protected]>02C9
G669E  DDEC  @>8302
G66A0  BR    G6699
G66A2  SCAN
G66A3  BR    G66A8
G66A5  SCAN
G66A6  BR    G66A5
G66A8  DST   [email protected]>0002(@>00),@FAC
***********************************************************
*              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
G66E1  DDECT @EXTRAM
G66E3  DST   @EXTRAM,@FAC
G66E6  DDEC  @FAC
G66E8  DSUB  @STLN,@EXTRAM
G66EB  BS    G66F2
G66ED  DST   @EXTRAM,@ARG
G66F0  XML   >88
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
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
G673B  DSUB  @STLN,@ARG
G673E  DST   @STLN,@XFLAG
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
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
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
DCH   @>832A,@VARW
G67D1  BS    RTNSET
G67D3  ST    V*VARW,@CHAT
G67D7  CEQ   >7F,@CHAT
G67DA  BS    G67CA
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
G67E9  CH    >09,@CHAT
G67EC  BS    G6806
G67EE  DMUL  >000A,@FAC
G67F2  XML   >03
G67F4  BR    G6812
G67F6  ST    @CHAT,@FAC1
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
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  [email protected]
G6846  CLR   @BASE
G6848  CLR   @>6000
G684C  DST   >095A,@VSPTR
G6850  DST   VRAMVS,@STVSPT
G6854  DST   VRAMVS,[email protected]
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,[email protected]>080F
G687C  MOVE  >0010,[email protected]>080F,[email protected]>0810
G6883  CEQ   >01,[email protected]
G6887  BR    G689A
G6889  MOVE  >0010,@FAC,[email protected]
G688F  CALL  GBCD3
G6892  MOVE  >0010,[email protected],@FAC
G6898  BR    SPRINT
G689A  MOVE  >0010,G685A,[email protected]
G68A1  DST   >0400,@FAC
G68A5  CALL  [email protected]>0018
G68A8  CZ    [email protected]
G68AB  BS    SPRINT
G68B1  CALL  [email protected]>004A
*
****** Initialization of sprites. Enable 28 sprites. ******
*
SPRINT  CLR   @>837A
G68B6  DCLR  [email protected]>0780
G68B9  MOVE  >006E,[email protected]>0781,[email protected]>0782
G68C0  ST    >D0,[email protected]>0370
G68C4  DST   >C000,[email protected]>0300
G68C9  DCLR  [email protected]>0302
G68CC  MOVE  >006C,[email protected]>0300,[email protected]>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
***********************************************************
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
G6EF6  BYTE  >0E
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   [email protected]>039E
G6FE9  BS    G700B
G6FEB  MOVE  >001E,@FAC,[email protected]
G6FF1  DST   [email protected]>039E,@FAC12
G6FF5  ST    >01,[email protected]>0004(@FAC12)
G6FFE  CALL  [email protected]>0010
G7001  BYTE  >08
G7002  MOVE  >001E,[email protected],@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   [email protected]
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    [email protected]>0002(@>8304),@FAC3
G7062  OR    >80,@FAC1
G7065  DST   @>831E,@FAC4
G7068  DST   @EXTRAM,@FAC6
G706B  DST   @VSPTR,@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,[email protected]>02D0
G708A  BR    G70DD
G708C  XML   >77
G708E  DST   ERRLN,@EXTRAM
G7092  DST   >0000(@EXTRAM),@PGMPTR
G7098  DCLR  [email protected]
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,[email protected]
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   [email protected],@VSPTR
G70E1  BR    TOPL15
G70E3  CEQ   >01,@>8357
G70E6  BS    G70F5
G70E8  CALL  G6872
G70EB  XML   >83
G70ED  ST    >8A,[email protected]
G70F5  MOVE  >0001,[email protected]>0000(@>8354),@ARG1
G70FC  CLR   @ARG
G70FE  MOVE  *ARG,[email protected]>0001(@>8354),V*VARW
G7108  DCEQ  >7620,@>8354
G710C  BR    G7125
G710E  DINC  @VARW
G7110  CLR   @ARG2
G7112  ST    [email protected]>0004(@>8304),@ARG3
G7117  CALL  G7E11
G711A  ST    [email protected]>0005(@>8304),@ARG3
G711F  SRL   >05,@ARG3
G7122  CALL  G7E11
G7125  DCEQ  >73D5,@>8354
G7129  BS    G7151
G712B  CALL  [email protected]>0036
G712E  CZ    @PRGFLG
G7130  BS    G7151
G7132  DCH   >02F6,@VARW
G7136  BR    G713E
G7138  XML   >83
G713A  DST   >02E3,@VARW
G713E  DST   >C9CE,[email protected]>0001(@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
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,[email protected]>0002(@FAC8)
G7196  BS    G71B0
G7198  CEQ   >6A,[email protected]>0002(@FAC8)
G719D  BS    G7256
G719F  CEQ   >70,[email protected]>0002(@FAC8)
G71A4  BS    G71AC
G71AA  BR    G718C
G71B0  ST    @PRGFLG,@FAC12
G71B3  CLR   @PRGFLG
G71B5  CALL  G70E3
G71B8  ST    @FAC12,@PRGFLG
G71BB  DST   @PGMPTR,@ARG
G71BE  CALL  G7154
G71C1  DST   >C9CE,[email protected]>02E4
G71C6  DST   >02E7,@VARW
G71CA  CALL  G7E11
G71CD  XML   >83
G71CF  DST   V*FAC8,@ARG
G71D7  DCH   @STVSPT,@FAC8
G71DA  BR    G723B
G71DC  CEQ   >68,[email protected]>0002(@FAC8)
G71E1  BR    G7221
G71E3  DCEQ  @ARG,V*FAC8
G71E7  BR    G720C
G71E9  MOVE  >0014,G73A5,[email protected]>02E4
G71F0  XML   >83
G71F6  CEQ   >68,[email protected]>0002(@FAC8)
G71FB  BR    G7205
G71FD  DCEQ  @ARG,V*FAC8
G7201  BR    G71CF
G7203  BR    G71F2
G7205  CGT   >65,[email protected]>0002(@FAC8)
G720A  BR    G71F2
G720C  MOVE  >000B,G73B9,[email protected]>02E4
G7213  CALL  G7154
G7216  DST   >02F0,@VARW
G721A  CALL  G7E11
G721D  XML   >83
G721F  BR    G71CF
G7221  CHE   >66,[email protected]>0002(@FAC8)
G7226  BR    G71D3
G7228  DCH   >095A,@FAC8
G722C  BR    G723B
G722E  CEQ   >6A,[email protected]>0002(@FAC8)
G7233  BS    G7251
G7239  BR    G7228
G723B  CZ    @PRGFLG
G723D  BS    RTNSET
G723F  MOVE  >000B,G73B9,[email protected]>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,[email protected]>02E4
G7262  DST   >02E8,@FAC12
G7266  DST   V*FAC8,@>835A
G726A  CLR   @>8354
G726C  ST    [email protected]>0001(@>835A),@>8355
G7271  DST   [email protected]>0004(@>835A),@>835A
G7276  MOVE  *>8354,V*>835A,V*FAC12
G7280  DINC  @FAC12
G7282  DDEC  @>8354
G7284  BR    G727C
G7286  XML   >83
G7288  MOVE  >000B,G73B9,[email protected]>02E4
G728F  DST   @FAC8,@>8354
G7292  DST   [email protected]>0006(@FAC8),@FAC8
G7297  DCZ   @FAC8
G7299  BS    G72A1
G729B  DST   >02F1,@FAC12
G729F  BR    G7266
G72A1  DST   [email protected]>FFFA(@>8354),@ARG2
G72A7  DST   @>FFFE(@ARG2),@ARG2
G72B1  CALL  G7E11
G72B4  XML   >83
G72B6  CEQ   @FAC,@FAC
G72B9  RTNC
**************************************************
G72BA  XML   >78
G72BC  DST   @VSPTR,@FAC8
G72BF  BR    G72C9
G72C9  DCH   @STVSPT,@FAC8
G72CC  BR    G600E
G72CE  ST    [email protected]>0002(@FAC8),@>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
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    [email protected]>73E8.
7303   *   0A   GT    .
7304   *   01   RTNC  .
7305   s   73   BS    [email protected]>73F9.
7307   *   0E   PARSE >09.
7309   t   74   BS    [email protected]>7406.
730B   *   10   CONT  .
730C   *   09   H     .
730D   t   74   BS    [email protected]>741F.
730F   *   11   EXEC  .
7310   *   09   H     .
7311   t   74   BS    [email protected]>7430.
7313   *   13   RTGR  .
7314   *   09   H     .
7315   t   74   BS    [email protected]>743E.
7317   *   18   XGPL  .
7318   *   09   H     .
7319   t   74   BS    [email protected]>7455.
731B   *   19   XGPL  .
731C   *   09   H     .
731D   t   74   BS    [email protected]>7467.
731F   *   1C   XGPL  .
7320   *   09   H     .
7321   t   74   BS    [email protected]>747C.
7323   \$   24   MOVE  *>8309 BYTE  TO    [email protected]>7488 FROM  @>8327.
7328   *   09   H     .
7329   t   74   BS    [email protected]>7494.
732B   (   28   MOVE  *>8309 BYTE  TO    [email protected]>74A3 FROM  [email protected]>2B09.
7331   t   74   BS    [email protected]>74B4.
7333   ,   2C   MOVE  *>8309 BYTE  TO    [email protected]>74C5 FROM  @>832F.
7338   *   09   H     .
7339   t   74   BS    [email protected]>74DB.
733B   0   30   MOVE  *>8309 BYTE  TO    @>8374 FROM  [email protected]>F531.
7340   *   09   H     .
7341   u   75   BS    [email protected]>7504.
7343   3   33   MOVE  >0975 BYTE  TO    @>8319 FROM  [email protected]>3601(@>8375).
734A   *   2A   MOVE  *>8339 BYTE  TO    [email protected]>0975 FROM  [email protected]>3838(@>8309).
7351   u   75   BS    [email protected]>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    [email protected]>757C.
735F   C   43   BR    [email protected]>6309.
7361   u   75   BS    [email protected]>758B.
7363   E   45   BR    [email protected]>6509.
7365   u   75   BS    [email protected]>75A6.
7367   F   46   BR    [email protected]>6609.
7369   u   75   BS    [email protected]>75BC.
736B   J   4A   BR    [email protected]>6A09.
736D   u   75   BS    [email protected]>75C9.
736F   N   4E   BR    [email protected]>6E01.
7371   u   75   BS    [email protected]>75DC.
7373   O   4F   BR    [email protected]>6F09.
7375   u   75   BS    [email protected]>75E6.
7377   Q   51   BR    [email protected]>7109.
7379   u   75   BS    [email protected]>75FE.
737B   S   53   BR    [email protected]>7301.
737D   v   76   BS    [email protected]>760A.
737F   T   54   BR    [email protected]>7409.
7381   v   76   BS    [email protected]>7615.
7383   m   6D   BS    [email protected]>6D09.
7385   v   76   BS    [email protected]>7620.
7387   *   82   NEG   @>8301.
7389   v   76   BS    [email protected]>7620.
738B   *   82   NEG   @>8309.
738D   v   76   BS    [email protected]>762A.
738F   *   87   DCLR  @>8309.
7391   u   75   BS    [email protected]>754F.
7393   <   3C   MOVE  *>8301 BYTE  TO    VR76 FROM  @>833F.
7397   a   61   BS    [email protected]>6109.
7399   v   76   BS    [email protected]>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
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"
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"
G7488  BYTE >0B
* "Memory full"
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
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
G7550  BYTE >AC,>C9,>CE,>C5,>80,>CE,>CF,>D4,>80,>C6,>CF,>D5,>CE,>C4
G755E  BYTE >0F
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
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
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
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  [email protected]>06C5,*>83C5(@PRTNFN).
767E   *   C3   EX    @>88BD(@EXTRAM),>32A3.
7684   .   2E   MOVE  *FAC BYTE  TO    [email protected]>03BD FROM  @LINUM.
7689   0   30   MOVE  *>8395 BYTE  TO    @LINUM FROM  [email protected]>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    [email protected]>7703.
76AC   V   56   BR    [email protected]>76C8.
76AE   W   57   BR    [email protected]>77BD.
76B0   V   56   BR    [email protected]>76D7.
76B2   X   58   BR    [email protected]>7819.
76B4   Y   59   BR    [email protected]>7949.
76B6   Y   59   BR    [email protected]>7949.
76B8   W   57   BR    [email protected]>77B4.
76BA   @   40   BR    [email protected]>6090.
76BC   @   40   BR    [email protected]>6062.
76BE   @   40   BR    [email protected]>6066.
.        76C0   @   40   BR    [email protected]>606E.
76C2   @   40   BR    [email protected]>603A.
76C4   @   40   BR    [email protected]>605A.
76C6   @   40   BR    [email protected]>603E.
76C8   *   DA   CLOG  @XFLAG,>40.
76CB   @   40   BR    [email protected]>603A.
76CD   *   06   CALL  [email protected]>797E.
76D0   *   D6   CEQ   @CHAT,>B3.
76D3   v   76   BS    [email protected]>76CD.
76D5   Y   59   BR    [email protected]>7972.
76D7   *   DA   CLOG  @XFLAG,>40.
76DA   @   40   BR    [email protected]>603A.
76DC   *   8E   CZ    @PRGFLG.
76DE   `   60   BS    [email protected]>6090.
76E0   *   DA   CLOG  @XFLAG,>02.
76E3   @   40   BR    [email protected]>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  .
76F6   v   76   BS    [email protected]>76FE.
76F8   *   92   DEC   @CHAT.
76FA   @   40   BR    [email protected]>6052.
76FC   *   90   INC   @BASE.
76FE   *   B6   OR    @XFLAG,>02.
7701   Y   59   BR    [email protected]>7970.
7703   *   DA   CLOG  @XFLAG,>40.
7706   @   40   BR    [email protected]>603A.
7708   *   8E   CZ    @PRGFLG.
770A   `   60   BS    [email protected]>6090.
770C   *   B6   OR    @XFLAG,>84.
770F   *   06   CALL  [email protected]>797E.
7712   *   DA   CLOG  V*SYMTAB,>07.
7716   w   77   BS    [email protected]>77A4.
7718   *   B6   OR    @XFLAG,>80.
771B   *   B6   OR    @FLAG,>08.
771E   *   D2   CGE   @CHAT,>00.
7721   @   40   BR    [email protected]>603A.
7723   *   06   CALL  [email protected]>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  [email protected](@SUBTAB).
773A   5   35   MOVE  >001D BYTE  TO    [email protected] FROM  V*SYMTAB.
7741   *   BD   DST   @FAC,[email protected]>0824.
7745   *   A5   DSUB  @FAC,@SYMTAB.
774C   *   BD   DST   [email protected]>0824,@FAC.
7750   *   BD   DST   @FREPTR,[email protected]>0002(@SYMTAB).
7755   *   93   DDEC  @FREPTR.
7757   *   BF   DST   @SYMTAB,CRNBUF.
775B   *   CE   CGT   @CHAT,>83.
775E   W   57   BR    [email protected]>779D.
7760   *   8E   CZ    @CHAT.
7762   w   77   BS    [email protected]>779D.
7764   *   CE   CGT   @CHAT,>00.
7767   w   77   BS    [email protected]>7781.
7769   *   D6   CEQ   @CHAT,>C8.
776C   w   77   BS    [email protected]>7773.
776E   *   D6   CEQ   @CHAT,>C7.
7771   W   57   BR    [email protected]>777D.
.        7773   *   0F   XML   >79.
7775   *   86   CLR   @>8308.
7777   *   BC   ST    @>8309,@CHAT.
777D   *   0F   XML   >79.
777F   W   57   BR    [email protected]>775B.
7781   *   B6   OR    @XFLAG,>80.
7784   *   06   CALL  [email protected]>7985.
7787   *   D7   DCEQ  @SYMTAB,CRNBUF.
778B   w   77   BS    [email protected]>775B.
778D   *   BD   DST   [email protected]>0002(@SYMTAB),[email protected]>0822.
7793   *   BD   DST   [email protected]>0822,@SYMTAB.
7797   *   BF   DST   @SYMTAB,CRNBUF.
779B   W   57   BR    [email protected]>775B.
779D   *   BD   DST   @SYMTAB,[email protected]>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  [email protected](@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
*****************************************
G77CE  DCH   @>832A,@VARW
G77D1  BS    RTNSET
G77D3  ST    V*VARW,@CHAT
G77D7  CEQ   >7F,@CHAT
G77DA  BS    G67CA
G77DF  DINC  @VARW
G77E1  RTN
*****************************************
G77E2  DCLR  @FAC
G77E4  CLR   @BYTES
G77E9  CH    >09,@CHAT
G77EC  BS    G6806
G77EE  DMUL  >000A,@FAC
G77F2  XML   >03
G77F4  BR    G6812
G77F6  ST    @CHAT,@FAC1
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
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  [email protected]
G7846  CLR   @BASE
G7848  CLR   @>6000
G784C  DST   VRAMVS,@VSTACK
G7850  DST   VRAMVS,@STVSPT
G7854  DST   VRAMVS,[email protected]
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,[email protected]>080F
G787C  MOVE  >0010,[email protected]>080F,[email protected]>0810
G7883  CEQ   >01,[email protected]
G7887  BR    G689A
G7889  MOVE  >0010,@FAC,[email protected]
G788F  CALL  >BCD3
G7892  MOVE  >0010,[email protected],@FAC
G7898  BR    SPRINT
G789A  MOVE  >0010,G685A,[email protected]   Load CURSOR DEFintion
G78A1  DST   >0400,@FAC
G78A5  CALL  >0018
G78A8  CZ    [email protected]
G78AB  BS    SPRINT
G78B1  CALL  >004A
G78B4  CLR   @MOTION
G78B6  DCLR  [email protected]>0780
G78B9  MOVE  >006E,[email protected]>0781,[email protected]>0782
G78C0  ST    >D0,[email protected]>0370
G78C4  DST   >C000,[email protected]>0300
G78C9  DCLR  [email protected]>0302
G78CC  MOVE  >006C,[email protected]>0300,[email protected]>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
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

Nice flow

##### 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
*           8    9    A      B      C      D      E
*           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?

##### 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
*           8    9    A      B      C      D      E
*           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)

##### 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

##### Share on other sites

You might be missing nothing.

Sometimes code gets released because it works.

Perfection requires an infinite amount of time.

##### Share on other sites

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.

• 2
• 1

##### Share on other sites

Pretty cool.  I'll need to be able to do this on real hardware though.

##### Share on other sites
16 hours ago, matthew180 said:

Pretty cool.  I'll need to be able to do this on real hardware though.

You need to bug Arcadeshopper for a FinalGROM

Just patch the RXB image before you load it.

• 1
• 1
• 1

##### Share on other sites
1 hour ago, Tursi said:

You need to bug Arcadeshopper for a FinalGROM

Meee too. One day...

##### 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.

##### Share on other sites

Well did some investigation for CALL FILES(0) so if you open a file after using CALL FILES(0) you get:

##### 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.

##### Share on other sites

New video of RXB 2021 demo using CALL HCHAR, CALL VCHAR, CALL CLEAR and CALL CLEARPRINT all written in Assembly now.

##### Share on other sites

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.

##### Share on other sites

Very neat to see that hi performance XB.

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

• 1
• 1

##### 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.

##### 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.

##### Share on other sites
1 hour ago, RXB said:

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

Yes, I wouldn't mind.  I'll be around later , to start the game rolling and see what's what.

## 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.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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