



! COPY this file to a empty DISK 2 or 3, named "BATCH"  then type:



! CALL USER("DSK1.BATCH")



! Print out a copy to follow



! along with the program



! PRESS ANY KEY



CALL KEY("",5,K,S)



NEW



! As you can see RXB KEY 



! has been modified to 



! accept empty strings



! PRESS ANY KEY



CALL KEY("",5,K,S)



NEW



CALL QUITON



! To follow along with this  



! demo print it out first



! Demo creates XB programs



! PRESS ANY KEY TO CONTINUE



! PRESS QUIT TO EXIT USER



CALL KEY("",5,K,S)



NEW 



90 ! ALPHALOCK CONTROL 

100 CALL ALPHALOCK(N)

110 PRINT N

120 IF N THEN CALL HONK

130 GOTO 100  



SAVE DSK1.ALPHALOCK,IV254



NEW



! RXB CALL KEY UPDATED

! Normal XB split keyboard



CALL KEY(1,A,X) :: CALL KEY(2,B,Y)



! RXB UPDATE split keyboard



CALL KEY(1,A,X,2,B,Y)



! See no double Colon needed 

! or RXB saves typing

! (HINT: press space bar)



CALL KEY(" ",5,K,S)



NEW



! RXB ADDS A STRING CHECK



! (HINT: press Y N y n)





CALL KEY("YyNn",5,K,S)



! (HINT: press a number)



CALL KEY("1234567890",5,K,S)



! (HINT: press ENTER)



CALL KEY(CHR$(13),5,K,S)



! (HINT: press a symbol)



V$="`~!@#$%^&*()-_=+[]\{}|"



CALL KEY(V$,5,K,S)



! Much less XB code in RXB 



! than in normal XB to do



! same thing





CALL KEY("",5,K,S)



NEW



100 ! Normal XB CALL KEY      routine vs RXBONKEY

110 CALL CLEAR

120 PRINT "XB CHOOSE A KEY:":"Yes, No, Maybe, End"

130 CALL KEY(3,K,S)

140 IF K=89 THEN PRINT "YES" :: GOTO 130

150 IF K=78 THEN PRINT "NO" :: GOTO 130

160 IF K=77 THEN PRINT "MAYBE" :: GOTO 130

170 IF K=69 THEN PRINT "END" :: GOTO 190

180 GOTO 130

190 ! RXB  CALL ONKEY routine

200 ! RXB CALL ONKEY

210 CALL CLEAR

220 PRINT "RXB CHOOSE A KEY:":"Yes, No, Maybe, End"

230 CALL ONKEY("YNME",3,K,S)GOTO 250,260,280,280

240 GOTO 230

250 PRINT "Yes!" :: GOTO 230

260 PRINT "No!" :: GOTO 230

270 PRINT "Maybe" :: GOTO 230

280 PRINT "End!"



SAVE DSK1.RXBONKEY,IV254



NEW 



! RXB can save files in     Internal Format on most XB  programs but the catch i
s   must be over 288 bytes in   size thus converted to IV254

! XB program are normally   Program Image format so can be confused with normall
y   Assembly Language Program   files

! RXB fixed this so you can save programs in Internal   Variable 254 format



CALL KEY("",5,K,S)



NEW



! This is done by how you   save those programs         EXAMPLE:



! SAVE DSK1.PRGMNAME,IV254



! See the comma and IV254?





CALL KEY("",5,K,S)



NEW



! RXB can save most files inINTERNAL VARIABLE 254 formatinstead of PROGRAM forma
t

! RXB makes cataloging filesbetter for you to use as    PROGRAM format is confus
ed  with Assembly Programs often, so  RXB fixed this!

! Tack a comma and IV254 to change from XB Program      Image to IV254 format

! EXAMPLE:                  SAVE "DSK1.IV-Format",IV254



CALL KEY("",5,K,S)



NEW



! See above comma and IV254 this is an added RXB option



! Now if the XB program is  smaller then 2 sectors it   will be saved in program
    image format instead the    reason is 254 filler bytes  waste space







CALL KEY("",5,K,S)



NEW



1 ! MERGE TO SHOW ADDRESS     AND LINE SIZE OF PROGRAMS

2 CALL CLEAR :: PRINT:"Output to Device? (Y/N)" :: CALL KEY("YN",3,K,S) :: IF K=
89 THEN INPUT "DEVICE:":Z$ :: OPEN #1:Z$,OUTPUT :: P=1

3 CALL CLEAR :: CALL PEEK(-31952,A,B,C,D) :: A=A*256+B-65536 :: C=C*256+D-65536 
:: PRINT #P:"    PROGRAM INFORMATION": :"Line Number Table" :: CALL HEX(A,A$,C,C
$)

4 PRINT #P: :"Start Address ";A$:"End   Address ";C$: : :"Line    Bytes Start":"
Number  Used  Address":"------  ----- -------"

5 FOR I=C-3 TO A STEP-4 :: CALL PEEK(I,B,D,E,F) :: B=B*256+D :: E=E*256+F-65536 
:: CALL PEEK(E-1,D) :: D=D+5 :: T=T+D :: CALL HEX(E,E$)

6 PRINT #P,USING "#####     ###  ######":B,D,E$ :: IF E THEN CALL SCREEN(6) :: G
OSUB 8

7 NEXT I :: A=(A-C-1)/-4 :: PRINT #P: : :TAB(8);"Total Bytes =";T:"   Number of 
lines =";A:"Average Bytes/Line =";INT(T/A) :: STOP

8 IF Z$="" THEN CALL KEY("",3,D,E) :: CALL SCREEN(8) :: RETURN ELSE RETURN



SAVE "DSK1.LINESHOW",MERGE



CALL KEY("",5,K,S)



NEW



100 ! CHAR HAS BEEN MODIFIEDIN RXB TO REPEAT AFTER A    COMMA

110 CALL CHAR(65,"FF00FFEE00FF8899") :: CALL CHAR(66,"454567656895439")! NORMAL 
XB

120 !

130 CALL CHAR(65,"FF00FFEE00FF8899",66,"454567656895439")! RXB CALL CHAR

140 !

150 CALL CHAR(ALL,"FFEEDDCCBBAA0099")! RXB ADDED ALL



SAVE DSK1.CHAR,IV254



NEW



100 ! HCHAR RXB VERSION HAS ADDED A AUTOREPEAT AFTER A  COMMA

110 CALL HCHAR(3,4,44,4) :: CALL HCHAR(6,8,47,8) :: CALL HCHAR(11,14,53,9) :: CA
LL HCHAR(20,8,77,11)! XB VERSION

120 CALL HCHAR(3,4,44,4,6,8,47,8,11,14,53,9,20,8,77,11)! THIS IS RXB VERSION



SAVE DSK1.HCHAR,IV254



NEW



100 ! GHCAR RXB VERSION HAS ADDED A AUTOREPEAT AFTER A  COMMA

110 CALL GCHAR(3,4,A) :: CALL GCHAR(6,8,B) :: CALL GCHAR(11,14,C) :: CALL GCHAR(
20,8,D)! XB VERSION

120 CALL GCHAR(3,4,A,6,8,B,11,14,C,20,8,D)! RXB VERSION



SAVE DSK1.GCHAR,IV254



NEW



100 ! HEX IS A RXB DECIMAL  TO HEX CONVERTER FOR ADDRESSIN TI

110 ! SEE THE HEXDECBIN PGM

120 FOR D=-32767 TO 32767

130 CALL HEX(D,H$)

140 PRINT D,H$

150 NEXT D



SAVE DSK1.HEX,IV254



NEW



100 ! HPUT IS A RXB PROGRAM THAT TAKES A STRING VARIABLEAND PUTS IT ON THE SCREE
N

105 CALL CLEAR

110 CALL HCHAR(9,9,44,3,9,12,45,3,9,15,46,3,9,18,47,3) ! RXB HCHAR

120 X$=",,,---...///" :: CALL HPUT(3,9,X$) !      HPUT PUTS AT 3,9 X$ ON THE  SC
REEN

130 GOTO 130



SAVE DSK1.HPUT,IV254



NEW



100 ! HGET IS A RXB PROGRAM THAT GETS A STRING OFF THE  SCREEN AND PUTS IT INTO 
A   STRING VARIBLE

110 CALL GCHAR(3,9,A,3,10,B,3,11,C,3,12,D)! RXB GCHAR

120 CALL HGET(3,9,4,X$)!    HGET 4 CHARACTERS AT 3,9 ANDPUTS THEM INTO X$



SAVE DSK1.HGET,IV254



NEW



100 ! INIT IN RXB DOES NOT  HAVE TO BE USED BEFORE LINK OR LOAD

110 CALL INIT! FIXED INIT  AS IT LOADED TO MUCH UNUSED DATA IN LOWER 8K

120 ! ALSO THIS WAS NOTED   IN THE ORGINAL XB SOURCE    CODE I HAVE FROM TI



SAVE DSK1.INIT,IV254



NEW



100 ! PEEKG IS A RXB COMMANDFOR PEEKING GRAM/GROM

110 CALL PEEKG(24576,X)!   PEEK GRAM/GROM AT >6000



SAVE DSK1.PEEKG,IV254



NEW



100 ! PEEKV IS A RXB COMMANDFOR PEEKING VDP

110 FOR X=16370 TO 16383

120 CALL PEEKV(X,Y)! PEEK  VDP AT X AND PUT INTO Y

130 PRINT X,CHR$(Y);Y

140 NEXT X



SAVE DSK1.PEEKV,IV254



NEW



100 ! POKEG IS A RXB COMMANDFOR PUTTING VALUES INTO GRAM

120 CALL POKEG(-8,22)! PUT  22 >16 AT ADDRESS -8 >FFF8  IN GRAM



SAVE DSK1.POKEG,IV254



NEW



100 ! POKER IS A RXB COMMANDFOR PUTTING VALUES INTO THE VDP REGISTERS 0 TO 7

110 CALL POKER(7,244,1,240)! SET RXB TO TEXT MODE

120 CALL KEY("",5,K,S)

130 CALL POKER(1,232)!       SET RXB TO MULTI COLOR MODE

140 CALL KEY("",5,K,S)

150 CALL POKER(0,2,1,2)!    SET RXB TO BIT MAP MODE

160 CALL KEY("",5,K,S)

170 CALL POKER(0,224,0,32)! RXB NORMAL MODE



SAVE DSK1.POKER,IV254



NEW



100 ! POKEV IS A RXB COMMANDFOR PUTTING VALUES INTO VDP

120 CALL POKEV(512,65+96)!  PUT CHARACTER A AT ADDRESS  512 (32*16) ON SCREEN

130 ! A BIAS OF 96 MUST BE  ADDED TO CHARACTERS WHEN PUTON SCREEN



SAVE DSK1.POKEV,IV254



NEW



! RXB also has a catalog    routine CALL CAT(1) or

!  CALL CAT("DSK1.") or     CALL CAT(49) this would be  char 1 in ASCII

! RXB is smarter then most  other XB versions to catalogdrives

! RAMDISK can use           CALL CAT("DSKA.") or        CALL CAT(65) or CALL CAT
(A)



CALL KEY("",5,K,S)



NEW



CALL CAT(49)



! That was using            CALL CAT(49)                character 1 in ASCII



! Notice the LINESHOW 4     sectors long & MERGE format.





CALL KEY("",5,K,S)



NEW



! RXB CALL JOYST UPDATED



! NORMAL XB



CALL JOYST(1,A,B) :: CALL JOYST(2,C,D)



! RXB UPDATE less typing



CALL JOYST(1,A,B,2,C,D)



CALL KEY("",5,K,S)



NEW 



! JOYLOCATE is like you     combined 

! JOYST+LOCATE+KEY IF       key THEN LINE #

! JOYMOTION is like you     combined

! JOYST+MOTION+KEY IF       key THEN LINE #

! JOYMAP is like you        combined

! JOYST+MOTION+POSITION     +KEY IF key THEN 

! LINE #



CALL KEY("",5,K,S)



NEW



! RXB CALL COLOR UPDATED

! NORMAL XB

! FOR L=0 TO 14::CALL COLOR(L,2,11)::NEXT L



! RXB COLOR UPDATE

CALL COLOR(ALL,2,11)

! RXB is much faster





CALL KEY("",5,K,S)



NEW



! RXB CALL GCHAR UPDATED



! NORMAL XB



CALL GCHAR(22,3,A) :: CALL GCHAR(22,4,B) :: CALL GCHAR(22,5,C)



! RXB GCHAR UPDATE



CALL GCHAR(22,3,A,22,4,B,22,5,C)



! As you can see saves bytesand much faster 



CALL KEY("",5,K,S)



NEW



! RXB has HGET like GCHAR   but unlike multiple GCHAR   only 1 character at a ti
me 



! RXB has a huge advantage  for saving program space    and making faster progra
ms



CALL HGET(23,1,14,X$)



CALL VGET(21,3,4,Y$)



! The two lines above would take many lines of GCHAR to do same thing and slower
 too



CALL KEY("",5,K,S)





PRINT X$:Y$



! HGET & VGET are way betterthen GCHAR to use obviously





CALL KEY("",5,K,S)



NEW



! RXB CALL HCHAR UPDATED    ALSO VCHAR UPDATED    



! NORMAL XB



CALL HCHAR(10,25,33,5) :: CALL HCHAR(11,25,33,6) :: CALL HCHAR(12,25,33,7)



! RXB UPDATE



CALL HCHAR(18,25,33,5,19,25,33,6,20,25,33,7)



! NOTICE RXB version must   have number of characters   to repeat or errors out 




CALL KEY("",5,K,S)



NEW



! RXB has HPUT like HCHAR & VCHAR but like mulitple ones in a row





CALL KEY("",5,K,S)



NEW



CALL HPUT(15,1,"HPUT TEST")



CALL VPUT(15,1,"VPUT TEST")



! Better then DISPLAY AT as uses entire screen and does vertical + horizontal





CALL KEY("",5,K,S)





NEW



! RXB CALL VERSION UPDATED



CALL VERSION(A) :: PRINT A





CALL KEY("",5,K,S)



NEW



! NEW RXB SOUND SUBROUTINES



CALL BEEP



! NEW RXB SUBROUTINE



CALL HONK





CALL KEY("",5,K,S)



NEW



! Create a XB program



100 REM Test



110 PRINT "THIS IS A TEST PROGRAM"



120 CALL BEEP



130 END



! SAVE THE PROGRAM



SAVE DSK1.TEST





CALL KEY("",5,K,S)



NEW



! HOW TO EDIT IN USER



OLD DSK1.TEST



RES 1000,100



NUM 1010,111



! REMARK HERE



! SHOW IT



! LET THEM KNOW IT



! DONE



LIST



RES 100,5





CALL KEY("",5,K,S)



LIST



SAVE DSK1.TEST2





CALL KEY("",5,K,S)



NEW



! RUN PROGRAMS BUT GO BACK   TO USER





CALL KEY("",5,K,S)



RUN "DSK1.TEST"



RUN "DSK1.TEST2"





CALL KEY("",5,K,S)



NEW



! MERGE PROGRAMS AND RUN



OLD DSK1.TEST2



RES 3333,4



SAVE DSK1.TEST3,MERGE



LIST





CALL KEY("",5,K,S)



NEW



OLD DSK1.TEST



MERGE DSK1.TEST3



LIST





CALL KEY("",5,K,S)





SAVE DSK1.MPGM,IV254



LIST





CALL KEY("",5,K,S)



NEW



100 ! RXB COMMAND XB

110 ! CALL XB restarts XB

120 ! CALL XB("DSK4.PGM",2)

130 ! Like CALL FILES(2)::RUN "DSK4.PGM"

140 CALL XB("DSK1.TEST",4)



SAVE DSK1.XB,IV254



CALL KEY("",5,K,S)



NEW

  

! RXB IMPROVED SIZE



SIZE



CALL KEY("",5,K,S)



NEW



! NOW YOU SEE FREE SPACE ANDTHE FIRST FREE ADDRESS      LOCATION IN SIZE ALSO NO
W   ASSEMBLY SIZE AND LOCATIONS OF MEMORY





CALL KEY("",5,K,S)



10 CALL INIT :: CALL SIZE



20 CALL KEY("",5,K,S)



RUN



! SEE LOWER 8K CHANGED?





CALL KEY("",5,K,S)



NEW



! New RXB VDPSTACK MANAGER



! Changing VDPSTACK triggersreset VDP & Program space sodoes a NEW after changes


! 10 CALL VDPSTACK(2392)



! >0958 STACK 



!NORMAL VDP STACK LOCATION





CALL KEY("",5,K,S)



10 CALL VDPSTACK(2392)





CALL KEY("",5,K,S)



RUN



SIZE



CALL KEY("",5,K,S)



! New RXB VDPSTACK MANAGER



! CALL VDPSTACK(4096)



! >1000 VDP STACK LOCATION





CALL KEY("",5,K,S)



CALL VDPSTACK(4096)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB VDPSTACK MANAGER



! CALL VDPSTACK(6176)



! >1820 VDP STACK LOCATION





CALL KEY("",5,K,S)



CALL VDPSTACK(6176)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB VDPSTACK MANAGER



! CALL VDPSTACK(2392)



! >0958 STACK



!NORMAL STACK LOCATION





CALL KEY("",5,K,S)



CALL VDPSTACK(2392)



SIZE



CALL KEY("",5,K,S)



NEW



! RXB PROGRAM RAM MANAGER



! CALL PRAM(START-ADDRESS,  END-ADDRESS)

! Normal XB START >FFE7     (-25 DECIMAL)



! Normal XB END   >A040     (-24512 DECIMAL)

! 24K RAM minus 64 bytes



! CALL PRAM(-25,-24512)     (default previous value)



CALL KEY("",5,K,S)



CALL PRAM(-25,-24512)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! How about full 24K RAM

! START >FFFF               (24K+DEBUGGER)

! END >A000                 (24K+64 BYTES RAM)



! FULL 24K OF RAM FINALLY



! CALL PRAM(-1,-24576)



CALL KEY("",5,K,S)



CALL PRAM(-1,-24576)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! START >F000               (New high address)  

! END >B000                 (16K RAM)



! CALL PRAM(-4096,-20480)





CALL KEY("",5,K,S)



CALL PRAM(-4096,-20480)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! START >FFE7               (Normal XB address)

! END >E000                 (8K-8 BYTES RAM)



! CALL PRAM(-25,-8192)



CALL KEY("",5,K,S)



CALL PRAM(-25,-8192)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! START >D000               (New high address)

! END >C000                 (4K RAM)



! CALL PRAM(-12288,-16384)



CALL KEY("",5,K,S)



CALL PRAM(-12288,-16384)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! START >FFFF               (TI Debug area)

! END >FFE7                 (Normal XB High address)             



! (25 BYTES RAM)



! CALL PRAM(-1,-25)



CALL KEY("",5,K,S)



CALL PRAM(-1,-25)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! START >FFE7               (Normal XB High address)

! END >FFE6                 (1024 BYTES RAM)



! CALL PRAM(-25,-1048)



CALL KEY("",5,K,S)



CALL PRAM(-25,-1048)



SIZE 



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! OR this way too



! START >FFFF               (TI Debugger area)

! END >FF00                 (256 BYTES RAM)



! CALL PRAM(-1,-256)



CALL KEY("",5,K,S)



CALL PRAM(-1,-256)



SIZE



CALL KEY("",5,K,S)



NEW



! New RXB RAM MANAGER



! RESET RAM TO NORMAL START

! RESET RAM TO NORMAL END



! CALL PRAM(-25,-24512)



CALL KEY("",5,K,S)



CALL PRAM(-25,-24512)



SIZE



CALL KEY("",5,K,S)



NEW



10 ! If RXB has not blown   your mind watch this!

110 CALL FILES(0) 

120 ! You can do CALL FILES  from program mode now!

130 ! But notice 0 files?

140 ! RXB can do CALL FILES  with a modified 0 files!

150 ! RXB executes a NEW     after the CALL FILES so     you do not have to do t
hat  and in PROGRAM MODE or      EDIT MODE for you!



CALL KEY("",5,K,S)



SAVE "DSK1.CALLFILES",IV254



NEW



! RXB has CALL XB that will return to start title       screen or can be used li
ke  RUN programs. EXAMPLE:



! CALL XB("DSK1.XBFILE")



! Additonally CALL FILES is also built into CALL XB     EXMPLE:



! CALL XB("DSK1.PGM",file#) 



! RXB allows 0 to 15 Files 





CALL KEY("",5,K,S)



NEW



! TRACE FROM USER



OLD DSK1.TEST



TRACE



RUN



UNTRACE





CALL KEY("",5,K,S)



NEW



! USER IGNORES ERRORS



NUM



! ERRORS IN USER



GOTO 1000



RUN



! SAME AS BREAK OR FCTN4    (By the way FCTN4 does not  work in USER)





CALL KEY("",5,K,S)



NEW



100 ! NEW IN RXB IS LIKE IN XB BUT CAN BE CALLED IN A   PROGRAM

110 CALL NEW! PROGRAM IS    ERASED AND DEFAULTS TO THE  COMMAND MODE

120 ! RXB DOCUMENTS SHOW    CALL NEW IS FOR THE USER    RXB COMMAND RUN THAT DEM
O



CALL KEY("",5,K,S)



SAVE DSK1.NEW,IV254



RUN



100 ! NORMAL XB CLOSE

110 OPEN #1:"DSK1.FILE1"

120 OPEN #2:"DSK1.FILE2"

130 CLOSE #1

140 CLOSE #2

200 ! RXB CLOSE ALL

210 OPEN #1:"DSK1.FILE1"

220 OPEN #2:"DSK1.FILE2"

230 CALL CLSALL





CALL KEY("",5,K,S)



SAVE DSK1.CLSALL,IV254



NEW 



1 ! Use this to convert       plain text to RXB USER files

100 ON ERROR 170

110 OPEN #1:"DSK1.USERDEMO",INPUT

120 OPEN #2:"DSK1.BATCH",OUTPUT

130 LINPUT #1:Z$

140 IF LEN(Z$)=80 THEN X$=X$&Z$ :: GOTO 130

150 IF LEN(Z$)<80 THEN PRINT #2:X$&Z$&CHR$(13)

160 X$,Z$="" :: GOTO 130

170 CALL CLSALL

180 END



SAVE DSK1.DV80TOUSER,IV254



NEW



! RXB Binary SAVE routine   called PSAVE and PLOAD have been changed to PSAVE an
d   PLOAD 

! The previous version 2015 were 8K sized files but 2020versions are 4K in size 
    files

! This change was for SAMS  support as any 4K page can  be loaded or saved      
    anywhere in RAM now

! To explain 2,3,A,B,C,D,E,Fis the HEX location of RAM  boundries thus RXB can l
oad 4K files into RAM for SAMS 



CALL KEY("",5,K,S)



NEW



100 CALL CLEAR

110 CALL MAGNIFY(2)

120 CALL SCREEN(15)

130 CALL COLOR(1,1,15)

140 FOR S=2 TO 8

150 CALL COLOR(S,2,15)

160 NEXT S

170 CALL SPRITE(#1,87,13,84,26)

180 CALL SPRITE(#2,73,13,58,58)

190 CALL SPRITE(#3,78,13,32,90)

200 CALL SPRITE(#4,68,13,58,122)

210 CALL SPRITE(#5,89,13,32,154)

220 CALL SPRITE(#6,88,13,58,186)

230 CALL SPRITE(#7,66,13,84,218)

240 CALL SPRITE(#8,51,12,128,90)

250 CALL SPRITE(#9,46,12,128,122)

260 CALL SPRITE(#10,48,12,128,154)

270 CALL SPRITE(#11,42,5,1,1,0,127)

280 CALL SPRITE(#12,42,5,1,243,127,0)

290 CALL SPRITE(#13,42,5,176,243,0,-127)

300 CALL SPRITE(#14,42,5,176,1,-127,0)

310 CALL SPRITE(#15,42,16,1,128,0,111)

320 CALL SPRITE(#16,42,16,96,243,111,0)

330 CALL SPRITE(#17,42,16,176,128,0,-111)

340 CALL SPRITE(#18,42,16,96,1,-111,0)

350 CALL SPRITE(#19,42,7,1,1,0,99)

360 CALL SPRITE(#20,42,7,1,243,99,0)

370 CALL SPRITE(#21,42,7,176,243,0,-99)

380 CALL SPRITE(#22,42,7,176,1,-99,0)

390 FOR R=3 TO 21

400 CALL HPUT(R,3,RPT$("a",28))

410 NEXT R

420 CALL CHAR(97,"00FF00FF00FF00FF")

430 ! THIS IS HOW THE TITLE SCREEN WAS CREATED AND WAS  SAVED

440 CALL HCHAR(3,3,96,28)

450 CALL VCHAR(3,3,96,20)

460 CALL HCHAR(22,3,96,28)

470 CALL VCHAR(3,30,96,20)

480 CALL HPUT(15,5,"RICHARD LYNN GILBERTSON")

490 CALL HPUT(20,9,"<<<PUSH A KEY>>>")

500 ! LOOP HERE FOR MOVEMENT

510 CALL CHAR(96,"FF818181818181FF")

520 IF RND>.5 THEN CALL COLOR(9,RND*15+1,15)

530 CALL CHAR(96,"00E7E7E7E7E7E700")

540 CALL KEY(0,K,S):: IF S=0 THEN 510

550 ! GET SPRITE MOTION IN N

560 CALL PEEK(-31878,N)

570 ! MOVE VDP TO LOW 8K RAM

580 CALL MOVES("VR",2079,0,8192)

590 ! SAVE RAM TO DISK

600 CALL PSAVE(2,"DSK1.SCREEN")

! SET UP SCREEN AND PSAVE IT



CALL KEY("",5,K,S)



SAVE DSK1.PSAVESCRN,IV254



RUN



100 ! RELOAD SAVED MEMORY

110 CALL PLOAD(2,"DSK1.SCREEN")

120 ! RESET MAGNIFICATION

130 CALL MAGNIFY(2) :: CALL SCREEN(15)

140 ! MOVE FROM RAM TO VDP

150 CALL MOVES("RV",2079,8192,0)

160 ! RESET SPRITE MOTION

170 CALL LOAD(-31878,22)

180 ! LOOP HERE FOR MOVEMENT.

190 CALL CHAR(96,"FF818181818181FF") :: IF RND>.5 THEN CALL COLOR(9,RND*16,15)

200 CALL CHAR(96,"00E7E7E7E7E7E700")

210 CALL KEY(5,K,S):: IF S=0 THEN 190

220 END



SAVE DSK1.PLOADSCRN,IV254



RUN



NEW



! RXB has built in support  for SAMS memory card or     sidecar up to 64 Meg SAM
S

! PSAVE and PLOAD are used  to SAVE and LOAD SAMS pages 4K at a time

! Access to SAMS is using   CALL SAMS(boundry,page#) 

! boundry = 2,3,A,B,C,D,E,F page# = 0 to 65536 4K pages

! Of course this requires   a SAMS memory card 



CALL KEY("",5,K,S)



NEW



! RXB has built in support  subprograms so this will    show them to you

! This RXB program uses     CALL PEEKG that is a        peek GROM routine

! This RXB program also     finds the address of that   subprogram in GROM

! Lastly it shows the link  to next subprogram and      the actual address in GR
OM



CALL KEY("",5,K,S)



NEW 



10 ! RXB EXAMPLE             RXB SUBPROGRAM FINDER

100 CALL CLEAR :: ADDRESS=-24538

110 RESTORE :: FOR I=1 TO 2 :: READ X$,Y$,Z$ :: PRINT X$;TAB(11);Y$;TAB(22);Z$ :
: NEXT I

120 CALL PEEKG(ADDRESS,B1,B2) :: CALL HEX(B1,B1$,B2,B2$) :: ADDRESS$=SEG$(B1$,3,
2)&SEG$(B2$,3,2)

130 CALL PEEKG(ADDRESS+2,LENGTH)

140 CALL MOVES("G$",LENGTH,ADDRESS+3,N$)

150 CALL PEEKG(ADDRESS+3+LENGTH,S1,S2) :: CALL HEX(S1,S1$,S2,S2$) :: S$=SEG$(S1$
,3,2)&SEG$(S2$,3,2)

160 CALL HEX(ADDRESS,A$) :: PRINT A$;"-";ADDRESS$;" ";TAB(11);N$;" ";TAB(22);S$ 
:: PRINT

170 DATA HEADER,SUBPROGRAM,START,*******,**********,*******

180 CALL HEX(ADDRESS$,ADDRESS) :: IF ADDRESS THEN 120



SAVE DSK1.SUBPGMFNDR,IV254



RUN



CALL KEY("",5,K,S)



NEW



! Lets create a USER file   while in USER running a     USER DV80 file?

! Yea that is right we are  going to create a DV80 file from DV80 and run it!



CALL KEY("",5,K,S)



! CREATE A USER FILE FROM   USER FILE



OPEN #1:"DSK1.TEST-USER",OUTPUT

PRINT #1:"1 CALL CLEAR ! TEST OF USER"&CHR$(13)

PRINT #1:"2 A$="&CHR$(34)&" RXB USER "&CHR$(34)&CHR$(13)

PRINT #1:"3 B$="&CHR$(34)&"   DEMO   "&CHR$(34)&CHR$(13)

PRINT #1:"4 C$="&CHR$(34)&" FINISHED "&CHR$(34)&CHR$(13)

PRINT #1:"5 CALL HPUT(12,11,A$,14,11,B$,16,11,C$)"&CHR$(13)

PRINT #1:"6 PRINT "&CHR$(34)&"ALL DONE!"&CHR$(34)&CHR$(13)

PRINT #1:"7 FOR Z=1 TO 3000 :: NEXT Z"&CHR$(13)

PRINT #1:"8 CALL CAT(1)"&CHR$(13)

print #1:"RUN"&CHR$(13) 

CLOSE #1



CALL KEY("",5,K,S)



NEW



! USER in this demo just    created files on DSK1

! USER CAN CALL USER FILES  IF IT IS THE LAST COMMAND

! OK NOW WE ARE GOING TO    MAKE A TON OF RXB PROGRAMS

! THIS IS GOING TO TAKE     SOMETIME TO MAKE THEM...



CALL KEY("",5,K,S)



NEW



100 ! Normal XB CALL KEY      routine vs RXBONKEY

110 CALL CLEAR

120 PRINT "XB CHOOSE A KEY:":"Yes, No, Maybe, End"

130 CALL KEY(3,K,S)

140 IF K=89 THEN PRINT "YES" :: GOTO 130

150 IF K=78 THEN PRINT "NO" :: GOTO 130

160 IF K=77 THEN PRINT "MAYBE" :: GOTO 130

170 IF K=69 THEN PRINT "END" :: GOTO 190

180 GOTO 130

190 ! RXB  CALL ONKEY routine

200 ! RXB CALL ONKEY

210 CALL CLEAR

220 PRINT "RXB CHOOSE A KEY:":"Yes, No, Maybe, End"

230 CALL ONKEY("YNME",3,K,S)GOTO 250,260,280,280

240 GOTO 230

250 PRINT "Yes!" :: GOTO 230

260 PRINT "Nn!" :: GOTO 230

270 PRINT "Maybe" :: GOTO 230

280 PRINT "End!"



SAVE DSK1.RXBONKEY,IV254



NEW



100 ! CATALOG ALL DISKS

110 N=49

120 ON ERROR 150

130 N=N+1

140 CALL CAT(N)

150 PRINT D$

160 IF N<128 THEN 120 ELSE END



SAVE DSK1.CATALL,IV254



NEW



100 ! JOYLOCATE              JOYST + LOCATE + IF KEY GOTOLINE NUMBER

110 ! As this does all this in asingle command should  be   used in place of nor
mal XB  more compliated version

120 CALL CLEAR

130 CALL CHAR(143,"FFFFFFFFFFFFFFFF")

140 CALL SPRITE(#1,143,2,9,190)

150 CALL JOYLOCATE(1,X,Y,8,8,#1,R,C,K)GOTO 180

160 PRINT X;Y;K;R;C

170 GOTO 150

180 PRINT X;Y;K;R;C;"FIRE"

190 GOTO 150



SAVE DSK1.JLOCATE,IV254



NEW



100 ! RXB CALL JMOTION

110 ! JOYMOTION              JOYST + MOTION + IF KEY GOTOLINE NUMBER

120 ! As this does all this in asingle command should  be   used in place of nor
mal XB  more compliated version

130 CALL CLEAR

140 CALL CHAR(143,"FFFFFFFFFFFFFFFF")

150 CALL SPRITE(#1,143,2,9,190,20,0)

160 CALL JOYMOTION(1,X,Y,#1,9,9,K)GOTO 190

170 PRINT X;Y,K

180 GOTO 160

190 PRINT X;Y,K;"FIRE"

200 GOTO 160



SAVE DSK1.JMOTION,IV254



NEW



100 ! RXB CALL JOYMAP

110 ! JOYMAP                 JOYST + MOTION + POSITION + IF KEY GOTOLINE NUMBER

120 ! As this does all this in asingle command should  be   used in place of nor
mal XB  more compliated version

130 CALL CLEAR

140 CALL CHAR(143,"FFFFFFFFFFFFFFFF")

150 CALL SPRITE(#1,143,2,9,190,20,0)

160 CALL JOYMAP(1,X,Y,#1,40,40,DR,DC,K)GOTO 190

170 PRINT X;Y;DR;DC;K

180 GOTO 160

190 PRINT X;Y;DR;DC;K;"FIRE"

200 GOTO 160



SAVE DSK1.JOYMAP,IV254



NEW



100 ! RUN FOR ONE HOUR AND    COMPARE PRINT X XB VS RXB

110 ! NORMAL XB DISTANCE

120 CALL CLEAR :: X=190

130 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

140 CALL DISTANCE(#1,#2,D)

150 CALL DISTANCE(#1,#3,E)

160 CALL DISTANCE(#2,#3,F)

170 X=X+1 :: PRINT D;E;F

180 GOTO 140! X IS COUNTER

190 !

200 ! RXB DISTANCE

210 CALL CLEAR :: X=190

220 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

230 CALL DISTANCE(#1,#2,D,#1,#3,E,#2,#3,F)

240 X=X+1 :: PRINT D;E;F

250 GOTO 230! X IS COUNTER

260 ! RUN FOR 1 HOUR TEST OF    NORMAL DISTANCE XB VS RXB



SAVE DSK1.DISTANCE,IV254



NEW



10 ! RXB EXAMPLE            CALL CHAR(ALL,string)

20 FOR L=0 TO 256 :: PRINT CHR$(L);:: NEXT L

30 S$="0123456789ABCDEF"

40 CALL CHAR(ALL,SEG$(S$,INT(RND*15)+1,INT(RND*15)+1))

50 Z=Z+1 :: IF Z=50 THEN END ELSE 40



SAVE DSK1.CHARALL,IV254



NEW



100 ! NORMAL XB CHARSET

110 CALL HCHAR(1,1,32,768) :: PRINT "NORMAL XB CALL CHARSET": :

120 FOR L=159 TO 30 STEP-1 :: PRINT CHR$(L);" "; :: CALL CHAR(L,"4567") :: NEXT 
L

130 FOR D=1 TO 600 :: NEXT D

140 CALL CHARSET

150 PRINT "XB CHARSET RESETS 32 TO 95": : :

160 FOR D=1 TO 900 :: NEXT D

170 ! RXB CHARSET(ALL)

180 CALL CHARSET(ALL)

190 PRINT "RXB CHARSET(ALL) 30 TO 159": :

200 PRINT "PRESS ANY KEY"



210 CALL KEY("",5,K,S)



SAVE DSK1.CHARSETALL,IV254



NEW



10 ! RXB EXAMPLE            CALL SWAPCHAR(char,char)    CALL SWAPCHAR(value#,val
ue#)

100 A(0)=-1 :: A(1)=1 :: CALL MOTION(GO)

110 CALL CLEAR :: CALL MAGNIFY(2):: CALL SCREEN(15)

120 FOR S=1 TO 28

130 CALL SPRITE(#S,64+S,INT(RND*16)+1,20+S,50+S,INT(A(RND*1))*INT(RND*20),INT(A(
RND*1))*INT(RND*20))

140 NEXT S

150 CALL SWAPCOLOR(#INT(RND*28)+1,#INT(RND*28)+1):: CALL SWAPCHAR(INT(RND*28)+64
,INT(RND*28)+64)

160 Z=Z+1 :: IF Z=50 THEN END ELSE 150



SAVE DSK1.SWAP,IV254



NEW



10 ! RXB EXAMPLE            CALL MAGNIFY(factor[,...])

100 A(0)=-1 :: A(1)=1 :: CALL MOTION(GO) 

110 CALL CLEAR :: CALL SCREEN(15)

120 FOR S=1 TO 28

130 CALL SPRITE(#S,64+S,2,20+S,50+S,INT(A(RND*1))*INT(RND*127),INT(A(RND*1))*INT
(RND*127))

140 NEXT S

150 CALL MAGNIFY(1,2,1) :: GOTO 150 

160 ! MAGNIFY changed



SAVE DSK1.MAGNIFY,IV254



NEW



100 CALL CLEAR

110 T$="HELLO WORLD"

120 B$=" "

130 CALL BIAS(1,T$,1,B$)

140 FOR X=757 TO 0 STEP-1

150 CALL MOVES("$V",11,T$,X,"$V",1,B$,X+10)

170 NEXT X



SAVE DSK1.MOVESHELLO,IV254



NEW



100 ! RXB EXAMPLE            CALL MOVES(GROM to screen)

110 FOR GA=0 TO 32767 STEP 768 :: CALL MOVES("GV",768,GA,0):: NEXT GA

120 ! RXB EXAMPLE            CALL MOVES (RIPPLE EXAMPLE)

130 CALL HCHAR(1,1,32)

140 CALL MOVES("VV",767,0,1)

150 ! RXB EXAMPLE            CALL MOVES (SCAN VDP)

160 FOR V=0 TO 16384 STEP 768 :: CALL MOVES("VV",768,V,0):: NEXT V

170 ! RXB EXAMPLE            CALL MOVES(RAM to screen)

180 FOR R=0 TO 8192 STEP 768 :: CALL MOVES("RV",768,R,0) :: NEXT R



SAVE DSK1.MOVES,IV254



NEW



10 ! RXB EXAMPLE       CALL MOVES(type$,bytes,from,to)

20  PRINT "Disk controller EPROM chip"

100 CALL CHAR(31,"F0F0F0F0F0F0F0F0")

110 CALL IO(3,8,2176,255) ! TURN ON EPROM

120 FOR A=16384 TO 24576 STEP 224

130 CALL MOVES("R$",224,A,T$)

140 CALL HEX(A,H$)

150 PRINT " ADDRESSS=";A;"HEX=";H$: :T$: :

160 FOR L=1 TO 400 :: NEXT L

170 NEXT A

180 CALL CHAR(31,"00")

190 CALL IO(3,8,2176,0) ! TURN OFF EPROM



SAVE DSK1.MOVESDSR,IV254



NEW



10 ! RXB EXAMPLE CALL BIAS

20 ! MOVES get VDP from     screen into a String         Variable X$

30 CALL MOVES("V$",255,511,X$)

40 ! CALL BIAS removes 96   screen bias from all         characters in String   
       Variable X$

50 CALL BIAS(0,X$)

60 ! After screen bias is   removed it can be printed    on screen

70 PRINT X$



SAVE DSK1.BIAS,IV254



NEW



100 ! CALL MOD

110 FOR N=-32768 TO 32767

120 IF N=0 THEN 160

130 D=INT(RND*1000)+1

140 IF D=0 THEN 130

150 CALL MOD(N,D,Q,R) :: PRINT N;D,Q;R

160 NEXT N



DSK1.MOD,IV254



NEW



10 ! RXB EXAMPLE            CALL POKER(register,value)

100 CALL CLEAR :: FOR I=0 TO 764 STEP 8 :: CALL POKEV(I,161,162,163,164,165,166,
167,168) :: NEXT I

110 CALL CLEAR :: FOR I=0 TO 758 STEP 16 :: CALL POKEV(I,161,162,163,164,165,166
,167,168,169,170,172,173,174,175,176) :: NEXT I

120 CALL CLEAR :: FOR I=126 TO 223 :: CALL POKEV(I,I+1,I+2,I+3,I+4,I+5,I+6,I+7) 
:: NEXT I

130 PRINT: :"SCREEN COLOR CHANGES" :: FOR T=1 TO 5 :: FOR I=0 TO 15 :: CALL POKE
R(7,1) :: NEXT I :: NEXT T :: CALL SCREEN(8)

140 A$="!@#$%^&*()+1234567890=-:><,.;/~_?'|{}\`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg
hijklmnopqrstuvwxyz" :: FOR I=1 TO 5 :: PRINT A$ :: NEXT I

150 PRINT: :"CHARACTER COLOR CHANGES" :: FOR I=30 TO 70 :: FOR T=2063 TO 2076 ::
 CALL POKEV(T,I) :: NEXT T :: NEXT I :: CALL CHARSET :: PRINT

160 PRINT "PRESS A KEY FOR TEXT MODE": : :: CALL BEEP

170 CALL KEY("",0,K,S) :: CALL POKER(7,244) :: CALL POKER(1,240)

180 PRINT "       PRESS A KEY FOR MULTI COLOR MODE": : :: CALL BEEP

190 CALL KEY("",0,K,S) :: CALL POKER(1,232) :: GOSUB 230 :: CALL POKER(1,224)

200 PRINT "PRESS A KEY FOR BIT MAP MODE": : :: CALL BEEP

210 CALL KEY("",0,K,S) :: CALL POKER(0,2) :: CALL POKER(1,224)

220 GOSUB 230 :: CALL POKER(0,0) :: END

230 FOR I=1 TO 800 :: NEXT I :: RETURN



SAVE DSK1.POKER,IV254



NEW



100 ! RXB EXAMPLE            CALL MOTION(STOP,GO)

110 CALL CLEAR :: CALL CHAR(128,RPT$("F",16)) :: CALL MAGNIFY(2)

120 A$="OUT" :: GOSUB 130 :: A$="" :: GOSUB 130 :: CALL QUITON :: END

130 CALL HPUT(1,3,"MOTION WITH"&A$&" RXB") :: IF A$="" THEN CALL MOTION(STOP)

140 FOR A=1 TO 11 :: CALL SPRITE(#A,128,2,A*16-7,1,0,30) :: NEXT A :: IF A$="" T
HEN CALL MOTION(GO)

150 CALL HPUT(24,4,"PRESS ANY KEY TO CONTINUE.") :: CALL KEY("",0,K,S) :: CALL D
ELSPRITE(ALL) :: CALL CLEAR :: RETURN



SAVE DSK1.MOTIONGO,IV254



NEW



10 ! RXB EXAMPLE            CALL MOTION(GO,STOP)

100 A(0)=-1 :: A(1)=1 :: CALL MOTION(GO)

110 CALL CLEAR :: CALL MAGNIFY(2) :: CALL SCREEN(15)

120 FOR S=1 TO 28

130 CALL SPRITE(#S,64+S,2,20+S,50+S,INT(A(RND*1))*INT(RND*127),INT(A(RND*1))*INT
(RND*127))

140 NEXT S

150 N=N+1 :: ON INT(RND*3)+1 GOSUB 160,170,180 :: IF N>50 THEN END ELSE 150

160 CALL MOTION(GO) :: RETURN

170 CALL MOTION(STOP) :: RETURN

180 FOR DELAY=0 TO 200 :: NEXT DELAY :: RETURN



SAVE DSK1.MOTIONSTOP,IV254



NEW



10 ! RXB EXAMPLE            CALL COLOR(ALL,fore,back)

20 FOR L=0 TO 256 :: PRINT CHR$(L);:: NEXT L

30 CALL COLOR(ALL,RND*15+1,RND*15+1)

40 Z=Z+1 :: IF Z=50 THEN END ELSE 30





SAVE DSK1.COLORALL,IV254



NEW



100 ! COLOR IN RXB HAS ALL  ADDED TO CHANGE ALL SETS    FROM 0 TO 16

120 FOR X=0 TO 255 :: PRINT CHR$(X);

130 NEXT X

140 CALL COLOR(ALL,1,2)! ALLSETS ALL TO TRANPARENT BLACK

150 FOR X=0 TO 2E2 :: NEXT X

160 CALL COLOR(ALL,1,2,ALL,2,1) :: GOTO 160! CREATES A  OPTICAL EFFECT

200 GOTO 200



SAVE DSK1.ALLCOLOR,IV254



NEW



10 ! RXB EXAMPLE            CALL MOTION(ALL,x,y)

100 A(0)=-127 :: A(1)=127 :: CALL MOTION(GO)

110 CALL CLEAR :: CALL MAGNIFY(2):: CALL SCREEN(15)

120 FOR S=1 TO 28

130 CALL SPRITE(#S,64+S,2,20+S,50+S,A(RND)*RND,A(RND)*RND)

140 NEXT S

150 CALL MOTION(ALL,A(RND)*RND,A(RND)*RND)

160 C=C+1 :: IF C<70 THEN 150

170 ! pretty cool huh?



SAVE DSK1.MOTIONALL,IV254



NEW



! RXB EXAMPLE               CALL HEX(number,string)

10 ! Decimal & Hexidecimal

11 FOR D=-32000 TO 30000 STEP 1000

12 CALL HEX(D,H$)

13 PRINT "DEC=";D,"HEX=";H$

100 ! Hexidecimal to Decimal

120 CALL HEX(H$,D)

130 PRINT "HEX=";H$,"DEC=";D

140 NEXT D



SAVE DSK1.HEX~DEC,IV254



NEW



100 ! NUMBERS VS STRINGS

110 DATA 200,124,97,249,140,77,81,173,254,78,93,12,38,65,55,6,0

120 READ N :: B$="BYTES"

130 CALL HEX(N,N$)

140 S$=S$&SEG$(N$,2,2)

150 IF N<>0 THEN 120

160 PRINT "DATA: ";8*16,B$

170 PRINT "STRING:";LEN(S$)+1,B$

180 PRINT "SAVED: ";(8*16)-(LEN(S$)+1),B$

190 ! 8 BYTES PER DATA       WHILE STRING IS 2 BYTES



SAVE DSK1.HEXSTRING,IV254



NEW



10 ! RXB EXAMPLE            CALL SWAPCHAR(char,char)    CALL SWAPCHAR(value#,val
ue#)

100 A(0)=-1 :: A(1)=1 :: CALL MOTION(GO)

110 CALL CLEAR :: CALL MAGNIFY(2):: CALL SCREEN(15)

120 FOR S=1 TO 28

130 CALL SPRITE(#S,64+S,INT(RND*16)+1,20+S,50+S,INT(A(RND*1))*INT(RND*20),INT(A(
RND*1))*INT(RND*20))

140 NEXT S

150 CALL SWAPCOLOR(#INT(RND*28)+1,#INT(RND*28)+1):: CALL SWAPCHAR(INT(RND*28)+64
,INT(RND*28)+64)

160 Z=Z+1 :: IF Z=50 THEN END ELSE 150



SAVE DSK1.SWAP,IV254



NEW



10 ! RXB EXAMPLE            CALL INVERSE(ALL)

100 CALL INVERSE(ALL)

110 A=A+1 :: IF A<8 THEN 100

120 ! Inverts all character definitions



SAVE DSK1.INVERSEALL,IV254 



NEW



100 ! INVERSE IS A RXB      COMMAND THAT INVERTS THE ALLTHE BITS IN A CHARACTER 
CODE

110 ! INVERSE HAS ANOTHER   USE FOR PROGRAMMERS

120 PRINT "CHARACTER # (32 TO 159)": :

130 ACCEPT AT(24,1)VALIDATE(DIGIT)SIZE(3)BEEP:X :: PRINT CHR$(X):

140 CALL CHARPAT(X,X$) :: PRINT X$;" NORMAL"

150 CALL INVERSE(X)

160 CALL CHARPAT(X,X$) :: PRINT X$;" INVERSED": :

170 GOTO 120



SAVE DSK1.INVERSED,IV254



NEW



1 ! RXB has improved a COINC  routine run this demo to seethe results!

100 ! RUN FOR 1 HOUR AND     AND PRINT X FOR XB VS RXB

110 ! NORMAL XB COINC

120 CALL CLEAR :: X=190

130 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

140 CALL COINC(ALL,A)

150 CALL COINC(#1,#2,12,B)

160 CALL COINC(#1,#3,12,C)

170 CALL COINC(#2,#3,12,D)

180 X=X+1 :: PRINT A;B;C;D

190 GOTO 140

200 !

210 ! RXB COINC

220 CALL CLEAR :: X=190

230 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

240 CALL COINC(ALL,A,#1,#2,12,B,#1,#3,12,C,#2,#3,12,D)

250 X=X+1 :: PRINT A;B;C;D

260 GOTO 240



SAVE DSK1.COINC,IV254



NEW



10 ! RXB EXAMPLE

100 ! This program gives the illusion of sprites that    bank 90% at a time

110 CALL MAGNIFY(2) :: CALL CLEAR :: CALL SCREEN(15) :: CALL MOTION(GO)

120 CALL SPRITE(#1,65,2,100,10,0,35,#2,66,16,10,140,25,0)

130 CALL COINC(ALL,V)

140 IF V THEN CALL SWAPCHAR(65,66) :: CALL RMOTION(#1) :: CALL SWAPCOLOR(#1,#2) 
:: GOSUB 160

150 GOTO 130 :: FOR L=1 TO 600 :: NEXT L

160 A=A+1 :: IF A<5 THEN RETURN



SAVE DSK1.SPRITESWAP,IV254



NEW



10 ! RXB EXAMPLE             CALL GMOTION(#sprite,x,y)

100 A(0)=-1 :: A(1)=1 :: CALL CLEAR :: CALL MAGNIFY(2):: CALL SCREEN(15) :: CALL
 MOTION(GO)

110 FOR S=1 TO 28

120 CALL SPRITE(#S,64+S,INT(RND*16)+1,20+S,50+S,INT(A(RND*1))*INT(RND*127),INT(A
(RND*1))*INT(RND*127))

130 NEXT S

140 S=INT(RND*28)+1 :: CALL GMOTION(#S,X,Y):: CALL HPUT(24,3,"CALL GMOTION(#"&ST
R$(S)&","&STR$(X)&","&STR$(Y)&")      ") :: FOR L=1 TO 1000 :: NEXT L

150 CALL MOTION(#S,Y,X):: Z=Z+1 :: IF Z<8 THEN 140



SAVE DSK1.GMOTION,IV254



NEW



10 ! RXB EXAMPLE            CALL GMOTION(#sprite,x,y)

100 A(0)=-1 :: A(1)=1 :: CALL CLEAR :: CALL MAGNIFY(2) :: CALL SCREEN(15) :: CAL
L MOTION(GO)

110 FOR S=1 TO 28

120 CALL SPRITE(#S,64+S,INT(RND*16)+1,20+S,50+S,INT(A(RND*1))*INT(RND*127),INT(A
(RND*1))*INT(RND*127))

130 NEXT S

140 S=INT(RND*28)+1 :: CALL GMOTION(#S,X,Y) :: CALL HPUT(24,3,"CALL GMOTION(#"&S
TR$(S)&","&STR$(X)&","&STR$(Y)&")      ") :: FOR L=1 TO 1000 :: NEXT L

150 CALL MOTION(#S,Y,X) :: Z=Z+1 :: IF Z<8 THEN 140

160 ! GMOTION gets motion   from one sprite and puts     into another sprite



SAVE DSK1.G~MOTION,IV254



NEW



10 ! RXB EXAMPLE            CALL RMOTION(#sprite)       CALL RMOTION(ALL)

100 A(0)=-1 :: A(1)=1 :: CALL CLEAR :: CALL MAGNIFY(2) :: CALL SCREEN(15)

110 FOR S=1 TO 28

120 CALL SPRITE(#S,64+S,INT(RND*16)+1,20+S,50+S,INT(A(RND*1))*INT(RND*32),INT(A(
RND*1))*INT(RND*32))

130 NEXT S

140 IF RND>.2 THEN CALL RMOTION(#INT(RND*28)+1)ELSE CALL RMOTION(ALL)

150 Z=Z+1 :: IF Z<200 THEN 140

160 ! As this does all this  in a single command should  be used in place of nor
mal  XB  more compliated version



SAVE DSK1.RMOTION,IV254



NEW



10 ! RXB EXAMPLE CALL IO      (SOUND LIST)

100 A=8191

110 DATA 5,159,191,223,255,227,1

120 DATA 9,142,1,164,2,197,1,144,182,211,6

130 DATA 3,145,183,212,5

140 DATA 3,146,184,213,4

150 DATA 5,167,4,147,176,214,5

160 DATA 3,148,177,215,6

170 DATA 3,149,178,216,7

180 DATA 5,202,2,150,179,208,6

190 DATA 3,151,180,209,5

200 DATA 3,152,181,210,4

210 DATA 5,133,3,144,182,211,5

220 DATA 3,145,183,212,6

230 DATA 3,146,184,213,7

240 DATA 5,164,2,147,176,214,6

250 DATA 3,148,177,215,5

260 DATA 3,149,178,216,4

270 DATA 5,197,1,150,179,208,5

280 DATA 3,151,180,209,6

290 DATA 3,152,181,210,7

300 DATA 3,159,191,223,0

310 A=A+1 :: READ B :: CALL POKEV(A,B)

320 IF B=0 THEN 330 ELSE 310

330 CALL IO(1,8192)



SAVE DSK1.IO~CHIMES,IV254



NEW



100 CALL CLEAR! CRASH

110 DATA 2,228,242,5

120 DATA 2,228,240,18

130 DATA 2,228,241,16

140 DATA 2,228,242,14

150 DATA 2,228,243,12

160 DATA 2,228,244,10

170 DATA 2,229,245,9

180 DATA 2,229,246,8

190 DATA 2,229,247,7

200 DATA 2,229,248,6

210 DATA 2,229,249,5

220 DATA 2,230,250,4

230 DATA 2,230,251,3

240 DATA 2,230,252,2

250 DATA 2,230,253,1

260 DATA 2,230,254,1

270 DATA 1,255,0,0

280 FOR AD=4096 TO 4160 STEP 4

290 READ V1,V2,V3,V4

300 CALL POKEV(AD,V1,V2,V3,V4)

310 NEXT AD

320 CALL IO(1,4096)

330 PRINT "CRASH": :"TYPE:":"CALL IO(1,4096)"



SAVE DSK1.IO~CRASH,IV254



NEW



100 ! RUN FOR 1 HOUR AND     AND PRINT X FOR XB VS RXB

110 ! NORMAL XB COINC

120 CALL CLEAR :: X=190

130 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

140 CALL COINC(ALL,A)

150 CALL COINC(#1,#2,12,B)

160 CALL COINC(#1,#3,12,C)

170 CALL COINC(#2,#3,12,D)

180 X=X+1 :: PRINT A;B;C;D

190 GOTO 140

200 !

210 ! RXB COINC

220 CALL CLEAR :: X=190

230 CALL SPRITE(#1,65,2,9,X,20,0,#2,66,2,9,X,30,0,#3,67,2,9,X,-20,0)

240 CALL COINC(ALL,A,#1,#2,12,B,#1,#3,12,C,#2,#3,12,D)

250 X=X+1 :: PRINT A;B;C;D

260 GOTO 240

270 ! 1 HOUR TEST XB VS RXB



SAVE DSK1.COINC,IV254



NEW



1 ! XBRAMDISK used for saving 8K or less XB programs.

100 !Saved program will stay  in memory as long as you do not CALL INIT or turn 
memory expansion off.

110 !It will even stay in     memory when switching       cartrides with a WIDGE
T.

200 CALL CLEAR

220 CALL CHAR(42,"AA55AA55AA55AA55",91,"7E8199A1A199817E")

230 CALL CHAR(45,RPT$("0",8)&"FF"&RPT$("0",10)&"10387CFEFE")

240 CALL CLEAR :: CALL HCHAR(2,4,42,26)

250 CALL VCHAR(3,4,42,5) :: CALL VCHAR(3,29,42,5)

260 DISPLAY AT(5,9)SIZE(12):"RAM-DISKETTE"

270 CALL HCHAR(8,4,42,26)

280 DISPLAY AT(12,4):"[ MARTIN KOTULLA 1985"

290 CALL HCHAR(13,6,45,22) :: DISPLAY AT(17,7):"DATAs CHECK?   Y"

296 DISPLAY AT(22,4):"CALL LINK("&CHR$(34)&" LOAD"&CHR$(34)&") retrieve"

300 ACCEPT AT(17,22)SIZE(-1)VALIDATE("YN")BEEP:JN$

310 IF JN$="N" THEN 360

320 FOR I=8192 TO 8458 STEP 2 :: READ A,B :: SUM=SUM+A+B :: NEXT I

330 DISPLAY AT(20,5):"THE DATA-LINES ARE"

340 IF SUM<>20638 THEN DISPLAY AT(22,10):"INCORRECT!" :: END

350 DISPLAY AT(22,11):"CORRECT!"

360 CALL INIT :: RESTORE

370 FOR I=8192 TO 8458 STEP 2 :: READ A,B :: CALL LOAD(I,A,B) :: NEXT I

380 CALL CLEAR :: STOP

390 DATA 032,068,255,255,000,000,170,085,000,000,041,097,032,056,033,126

400 DATA 032,056,033,226,032,056,035,076,032,056,036,050,032,056,036,110

410 DATA 032,056,036,132,032,056,036,144,247,147,248,118,255,231,247,146

420 DATA 255,255,076,079,065,068,032,032,032,196,083,065,086,069,032,032

430 DATA 032,122,000,000,002,001,032,050,002,129,032,066,027,014,192,001

440 DATA 002,002,131,074,140,176,022,006,140,176,022,004,140,176,022,002

450 DATA 192,048,004,080,002,033,000,008,016,239,002,000,037,000,200,000

460 DATA 131,034,002,224,131,224,004,096,000,206,002,224,032,008,192,032

470 DATA 131,132,096,032,131,048,002,032,033,012,002,128,064,000,026,003

480 DATA 002,000,011,000,016,236,007,032,032,048,192,032,131,048,002,001

490 DATA 033,012,220,112,136,000,131,132,018,252,200,032,131,048,032,040

500 DATA 200,032,131,050,032,042,200,032,131,132,032,044,200,032,131,134

510 DATA 032,046,016,029,002,224,032,008,200,032,032,048,032,048,022,003

520 DATA 002,000,029,000,016,204,192,032,032,040,002,001,033,012,220,049

530 DATA 136,000,032,044,018,252,200,032,032,040,131,048,200,032,032,042

540 DATA 131,050,200,032,032,044,131,132,200,032,032,046,131,134,004,192

550 DATA 216,000,131,124,002,224,131,224,004,096,000,112

560 END



SAVE DSK1.XBRAMDSK,IV254



NEW



100 ! COLLIDE SPRITES

110 CALL CLEAR! SPRITES

120 CALL SPRITE(#1,65,2,9,99,20,22,#2,66,2,64,99,30,25,#3,67,2,9,99,-20,-25)

130 CALL COLLIDE(#1,#2,8,R1,C1,#1,#3,8,R2,C2,#2,#3,8,R3,C3)

140 IF R1+C1+R2+C2+R3+C3 THEN 150 ELSE 130

150 PRINT "#1";R1;C1;"#2";R2;C2;"#3";R3;C3

160 R1,C1,R2,C2,R3,C3=0

170 GOTO 130



SAVE DSK1.COLLIDE#,IV254



NEW



100 ! COLLIDE LOCATION

110 CALL CLEAR! SPRITES

120 CALL SPRITE(#1,65,2,9,99,20,22,#2,66,2,64,99,30,25,#3,67,2,9,99,-20,-25)

130 CALL COLLIDE(#1,99,99,8,R1,C1,#2,99,99,8,R2,C2,#3,99,99,8,R3,C3)

140 IF R1+C1+R2+C2+R3+C3 THEN 150 ELSE 130

150 PRINT "#1";R1;C1;"#2";R2;C2;"#3";R3;C3

160 R1,C1,R2,C2,R3,C3=0

170 GOTO 130



SAVE DSK1.COLLIDELOC,IV254



NEW



100 ! HCHAR & VCHAR

110 ON INT(RND)+1 GOSUB 130,140

120 GOTO 100

130 CALL VCHAR(INT(RND*24)+1,INT(RND*32)+1,INT(RND*128)+1,INT(RND*768)+1) :: RET
URN

140 CALL HCHAR(INT(RND*24)+1,INT(RND*32)+1,INT(RND*128)+1,INT(RND*768)+1) :: RET
URN



SAVE DSK1.HCHARVCHAR,IV254



NEW



100 ! ROLL COMMANDS

110 CALL CLEAR :: PRINT "ROLL SCREEN"

120 ON INT(RND*4)+1 GOSUB 130,140,150,160 :: GOTO 120

130 CALL ROLLDOWN(INT(RND*24)+1) :: RETURN

140 CALL ROLLUP(INT(RND*24)+1) :: RETURN

150 CALL ROLLLEFT(INT(RND*32)+1) :: RETURN

160 CALL ROLLRIGHT(INT(RND*32)+1) :: RETURN



SAVE DSK1.ROLL,IV254



NEW



100 ! SCROLL COMMANDS

110 CALL CLEAR 

120 ON INT(RND*4)+1 GOSUB 130,140,150,160 :: GOTO 120

130 CALL SCROLLDOWN(INT(RND*32)+1,"SCROLL DOWN") :: RETURN

140 CALL SCROLLUP(INT(RND*32)+1,"SCROLL UP") :: RETURN

150 CALL SCROLLLEFT(INT(RND*24)+1,"SCROLL LEFT") :: RETURN

160 CALL SCROLLRIGHT(INT(RND*24)+1,"SCROLL RIGHT") :: RETURN



SAVE DSK1.SCROLL,IV254



NEW



100 ! PRINT TAB vs SCROLLUP

110 CALL CLEAR

120 ON INT(RND*2)+1 GOTO 130,140

130 PRINT TAB(INT(RND*28)+1);"PRINT" :: GOTO 120

140 CALL SCROLLUP(1,"SCROLL",INT(RND*32)+1) :: GOTO 120

150 ! PRINT only uses column  3 to 28 while SCROLLUP uses  columns 1 to 32



SAVE DSK1.TAB-SCROLL,IV254



NEW



90 ! CLEARPRINT 

100 FOR X=30 to 159

110 CALL HCHAR(1,1,X,768)

120 CALL CLEARPRINT

130 FOR Y=1 TO 200::NEXT Y

140 NEXT X 

150 GOTO 100



DSK1.CLEARPRINT,IV254



NEW



1 CALL USER("DSK1.TEST-USER")



RUN









