Jump to content
IGNORED

classic99 questions


dhe

Recommended Posts

10 minutes ago, OLD CS1 said:

@RXB  Yeah, unfortunately that does not have the build number.  But you can get that using the winver.exe command.

 

@arcadeshopper might be onto something.  Some AMD system OEMs build their systems with both Intel and AMD drivers to save time on imaging.  This has been known to cause various ridiculous problems.  Is yours home-built or is it an ASUS OEM build?

 

Another thing to consider is if your BIOS is up-to-date (cannot recall if you addressed this.)  BIOS updates will contain errata updates for CPUs, and some CPUs have silly little bugs (like the kind that can cause Excel spreadsheets to randomly crash -- hand to God, a BIOS update actually fixed this problem.)

yepyep.. this is why I always check updates.. and.. never use AMD ;) save 40 bucks.. waste 300 hours

Link to comment
Share on other sites

1 hour ago, arcadeshopper said:

in that capture you left out the build no :)  

I see your problem.. ryzen cpu's lock up running classic99..   :)

(joke)

 

I've run batch 3 times so far no lockups..   twice from rxb and one from the menu .. it does however stop after the copy to TEST3 command. not sure if the copy with classic99 is truncated or just ends abruptly

 

Yea the lock ups sometimes just are non responsive for a few minutes or just briefly like 1 minute, other times just nothing works, but you can get the Debugger running.

Trouble is when you get the Debugger screen nothing is moving and nothing works to get it to start running again.

Has to be something in Windows 10 doing this as everything else is fine with Windows 10 otherwise.

Like I said thousands of Apps in also get this problem, definitely a Microsoft created issue.

Link to comment
Share on other sites

38 minutes ago, arcadeshopper said:

yepyep.. this is why I always check updates.. and.. never use AMD ;) save 40 bucks.. waste 300 hours

Maybe... I built my PC 7 years ago on an AMD FX-8350, and it has been running smoothly ever since. (still on Windows 7.) It is my engineering workstation.

MS Office, LabView, Kicad, Virtualbench, CorelDraw, Diamond Lattice, Vivado, and of course Classic99, everything I throw at it.

 

 

Link to comment
Share on other sites

Maybe... I built my PC 7 years ago on an AMD FX-8350, and it has been running smoothly ever since. (still on Windows 7.) It is my engineering workstation.
MS Office, LabView, Kicad, Virtualbench, CorelDraw, Diamond Lattice, Vivado, and of course Classic99, everything I throw at it.
 
 
For every one person with no issues I have 10 with "weird behavior"

Sent from my LM-G820 using Tapatalk

Link to comment
Share on other sites

1 hour ago, FarmerPotato said:

I built my PC 7 years ago on an AMD FX-8350, and it has been running smoothly ever since. (still on Windows 7.) It is my engineering workstation.

YOU built it... that is the key.  OEMs have been historically just awful with their AMD systems.  This came to light several times regarding OS upgrades where the presence of Intel drivers caused Windows upgrades to fail.  Several Microsoft Knowledge Base articles existed (might still) on the matter.  I recall one such instance where it lead to computers which would not boot.

 

Lazy, lazy OEMs.

  • Like 3
Link to comment
Share on other sites

45 minutes ago, FarmerPotato said:

Maybe... I built my PC 7 years ago on an AMD FX-8350, and it has been running smoothly ever since. (still on Windows 7.) It is my engineering workstation.

MS Office, LabView, Kicad, Virtualbench, CorelDraw, Diamond Lattice, Vivado, and of course Classic99, everything I throw at it.

 

 

Reminds me of a friend who, like me, built his own machines.  Except that he always went for the cheap ram, cheaper parts, etc. I went for moderately priced, trusted components.  I swear he reloaded his machines every few weeks;  I usually get a few years out of my OS/system before I reload just to freshen things up on my own, except for the few times I've had a drive nosedive. So I always wonder if a lot of the problems people experience with corruption of OS are really manifestations of substandard hardware.

 

Anyway... I ran Classic99 on my Win10 machine yesterday and today, without restarting it, with no issues. 

  • Like 1
Link to comment
Share on other sites

54 minutes ago, OLD CS1 said:

YOU built it... that is the key.  OEMs have been historically just aweful with their AMD systems.  This came to light several times regarding OS upgrades where the presence of Intel drivers caused Windows upgrades to fail.  Several Microsoft Knowledge Base articles existed (might still) on the matter.  I recall one such instance where it lead to computers which would not boot.

 

Lazy, lazy OEMs.

Maybe I got lucky. I went over to MicroCenter and talked to a sales clerk about what they had on the shelf.  I got the newest Gigabyte mobo supporting AM3+ socket.  I've had flaky mobos in the past, but not this one.

I think I have 16GB of Corsair RAM. I've upgraded the video card once (both ATI), moved to an SSD, and added that MemoryBoost thing on a stick.

 

The only complaint I have about the Gigabyte Mobo is that it still takes 3 tries to plug in a USB. Sometimes more, because of SATA plugs that look like USB.

 

 

 

  • Like 3
Link to comment
Share on other sites

19 hours ago, RXB said:

RXB 2020 GRAM unfinished? Really?

 

You can do same this with RXB 2015, just load the Object files into GRAM in Classic99  and use the CALL USER("DSK1.BATCH") file and after a few times Classic99 will lock up.

Or load the GRAMs and Assemble the DV80 files using GPL Assembler and at times it will lock up Classic99.

All of these are in RXB 2012 and RXB 2015 package including the GPL Assembler and GPL@LOADER

Tursi is right it has something to do with Keys but I have no idea what is the reason.

You said it has something to do with keys, I still have not drawn conclusions. ;)

 

I can't reproduce it - until I can, I can't investigate. I'm also suspicious that it's something on your machine because I also run 64-bit Windows and plenty of 32-bit apps without issue. However I don't accept that it's going to crash all the time, I don't permit that situation to persist. I remove the crashing software. ;)

 

You /do/ use Classic99 in a manner that most people do not, that's why I keep an open mind that it could be my bug. But we need to figure out what makes it happen more reliably. Or I need to get lucky, one or the other.

 

Link to comment
Share on other sites

19 hours ago, RXB said:

You can do same this with RXB 2015, just load the Object files into GRAM in Classic99  and use the CALL USER("DSK1.BATCH") file and after a few times Classic99 will lock up.

Just to be clear -- can I get the DSK1.BATCH file?

 

Also, anything disk related I need to know - are you using images or files?

 

Link to comment
Share on other sites

3 hours ago, Tursi said:

Just to be clear -- can I get the DSK1.BATCH file?

 

Also, anything disk related I need to know - are you using images or files?

 

DSK1.BATCH is included in the RXB 2015 package.

It is also in RXB 2000, 2001, 2011, and 2012 also.

No not using disk images just FAID files and folders.

 

I make a Text File in Windows Note Pad, use TIDIR to make it a DV80 file in a DSK 1 to 9 then use this XB program:

100 OPEN #1:"DSK8.USERDEMO",INPUT
110 OPEN #2:"DSK8.BATCH",OUTPUT
120 LINPUT #1:Z$
130 IF LEN(Z$)=80 THEN X$=X$&Z$ :: GOTO 120
140 IF LEN(Z$)<80 THEN PRINT #2:X$&Z$&CHR$(13)
150 X$,Z$="" :: GOTO 120

When it beeps or crashes take your pick I type:

CALL CLSALL 

From here you can type:

CALL XB

From Title screen push COMMA key on keyboard.

Then push number 8 on keyboard as that is disk USERDEMO is on and BATCH is the end result file.

Now you are running BATCH on RXB in 2001 to 2015 versions.

Link to comment
Share on other sites

Well this is the new BATCH file for RXB 2020 in case you want to see it, but of course only runs on RXB 2020.

! COPY this file to a empty
! DISK 1, under name "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

! PRESS ANY KEY TO CONTINUE

! PRESS QUIT TO EXIT USER

CALL KEY("",5,K,S)
NEW
! RXB CALL KEY UPDATED

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

! RXB UPDATE
CALL KEY(1,A,X,2,B,Y)

! See no double Colon needed 
! or added to RXB version

! (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
! Normal XB CALL KEY routine

100 PRINT "CHOOSE A KEY: Yes, No, Maybe, END"
110 CALL KEY(3,K,S)
120 IF K=89 THEN PRINT "YES" :: GOTO 110
130 IF K=78 THEN PRINT "NO" :: GOTO 110
140 IF K=77 THEN PRINT "MAYBE" :: GOTO 110
150 IF K=69 THEN PRINT "END" :: END
160 GOTO 110

! HINT: (press any key)
CALL KEY("",5,K,S)
RUN
SAVE "DSK1.XBKEYSCAN",IV254
NEW
! RXB  CALL ONKEY routine

100 ! RXB CALL ONKEY
110 PRINT "CHOOSE A KEY: Yes, No, Maybe, END"
120 CALL ONKEY("YNME",3,K,S) GOTO 140,150,160,170
130 GOTO 120
140 PRINT "YES!" :: GOTO 120
150 PRINT "NO!" :: GOTO 120
160 PRINT "MAYBE!" :: GOTO 120
170 PRINT "END!"

! (HINT: press any key)
CALL KEY("",5,K,S)
RUN
SAVE "DSK1.RXBONKEY",IV254
NEW
! RXB can save most files inINTERNAL VARIABLE 254 formatinstead of PROGRAM format
! RXB makes cataloging filesbetter for you to use as    PROGRAM format is confused
! 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)
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) :: GOSUB 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",IV254

! 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
! 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)
CALL CAT(49)
! That was using            CALL CAT(49)                character 1 in ASCII

! Hey notice the            IV254 LINESHOW 6 sectors    long?

CALL KEY("",5,K,S)
NEW
! RXB CALL JOYST UPDATED

! NORMAL XB

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

! RXB UPDATE

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

CALL KEY("",5,K,S)
NEW
100 ! JOYLOCATE              JOYST + LOCATE + IF KEY GOTOLINE NUMBER
110 ! As this does all this  in a single command should  be used in pllace of normal 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
CALL KEY("",5,K,S)
NEW
100 ! RXB CALL JMOTION
110 ! JOYMOTION              JOYST + MOTION + IF KEY GOTOLINE NUMBER
120 ! As this does all this  in a single command should  be used in pllace of normal 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
CALL KEY("",5,K,S)
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

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

SAVE "DSK1.DISTANCE",IV254
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)

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 bytes
! and much faster

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

! RXB has HGET like GCHAR   but like multiple HCHAR &   VCHAR in a row unlike GCHAR 1 character at a time 
! RXB has a huge advantage  for saving program space    and making faster programs

CALL HGET(23,1,14,X$)
CALL VGET(21,3,4,Y$)

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(9,25,33,5) :: CALL HCHAR(10,25,33,6) :: CALL HCHAR(11,25,33,7)

! RXB UPDATE
CALL HCHAR(9,25,33,5,10,25,33,6,11,25,33,7)

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

CALL KEY("",5,K,S)
NEW
! RXB has reverse HCHAR &   VCHAR now

100 CALL VCHAR(24,32,32,768)
110 CALL HCHAR(24,32,65,-384,1,1,66,384)
120 CALL VCHAR(24,32,66,-384,1,1,65,384)
130 CALL HCHAR(24,32,67,-384,1,1,68,384)
140 CALL HCHAR(24,32,32,-768)
150 END

CALL KEY("",5,K,S)
RUN
SAVE "DSK1.HCHARVCHAR",IV254
NEW
! RXB has HPUT like HCHAR & VCHAR but like multiple ones in a row

CALL KEY("",5,K,S)
NEW
CALL HPUT(4,9,"THIS IS HPUT TEST")
CALL VPUT(4,9,"THIS IS 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

NUM 1,2
REM Test
PRINT "THIS IS A TEST PROGRAM"
CALL BEEP
END

! SAVE THE PROGRAM

SAVE "DSK1.TEST",IV254

CALL KEY("",5,K,S)
NEW
! HOW TO EDIT IN USER

OLD "DSK1.TEST"

RES 10,10
NUM 9,10
! REMARK HERE
! SHOW IT
! LET THEM KNOW IT
! DONE

RES 100,5

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

SAVE "DSK1.TEST2",IV254

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)

! MERGE PROGRAMS AND RUN

SAVE "DSK1.TESTM",MERGE

OLD "DSK1.TEST"
LIST
MERGE "DSK1.TESTM"
LIST
SAVE "DSK1.TEST4",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 NOW   ASSEMBLY SIZE AND LOCATIONS OF MEMORY

CALL KEY("",5,K,S)
10 CALL INIT
20 CALL SIZE
30 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
! New RXB RAM MANAGER

! CALL PRAM(ADDRESS)
! Normal XB RAM >A040
! 24K RAM minus 64 bytes

CALL KEY("",5,K,S)
NEW
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! >A000 - 24K RAM"
! CALL PRAM(-24576)

CALL KEY("",5,K,S)
CALL PRAM(-24576)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! >B000 - 20K RAM
! CALL PRAM(-20480)

CALL KEY("",5,K,S)
CALL PRAM(-20480)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! >C000 - 16K RAM
! CALL PRAM(-16384)

CALL KEY("",5,K,S)
CALL PRAM(-16384)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER
 
! >D000 - 12K RAM
! CALL PRAM(-12288)

CALL KEY("",5,K,S)
CALL PRAM(-12288)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! >E000 - 8K RAM
! CALL PRAM(-8192)

CALL KEY("",5,K,S)
CALL PRAM(-8192)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! >FFBE - 298 BYTES RAM
! CALL PRAM(-322)

CALL KEY("",5,K,S)
CALL PRAM(-322)
SIZE
CALL KEY("",5,K,S)
NEW
! New RXB RAM MANAGER

! RESET RAM TO NORMAL XB RAM
! CALL PRAM(-24512)

CALL KEY("",5,K,S)
CALL PRAM(-24512)
SIZE
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 ! RXB NEW IN PROGRAM
110 CALL NEW

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

SAVE "DSK1.CLSALL",IV254

CALL KEY("",5,K,S)
RUN
CALL KEY("",5,K,S)
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 CHARSETALL
180 CALL CHARSETALL
190 PRINT "RXB CHARSETALL 30 TO 159": :
200 PRINT "PRESS ANY KEY"
210 CALL KEY("",5,K,S)

CALL KEY("",5,K,S)
RUN
SAVE "DSK1.CHARSETALL",IV254
NEW
! CALL MOVES COMMAND moves  any memory to any memory RAMor VDP or GROM or GRAM
! Works with Music files andCRU control of devices and  CRU control of devices
! This demo show CALL MOVES with VDP Addresses

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

CALL KEY("",5,K,S)
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

CALL KEY("",5,K,S)
RUN
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
CALL KEY("",5,K,S)
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$

CALL KEY("",5,K,S)
SAVE "DSK1.BIAS",IV254
NEW
! RXB Binary SAVE routine   called BSAVE and BLOAD have been changed to PSAVE and   PLOAD 
! The previous version 2015 were 8K sized files but 2020versions are 4K in size     files
! This change was for SAMS  support as any 4 key 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 load 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

SAVE "DSK1.PSAVESCRN",IV254
CALL KEY("",5,K,S)
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")
200 IF RND>.5 THEN CALL COLOR(9,RND*15+1,15)
210 CALL CHAR(96,"00E7E7E7E7E7E700")
220 CALL KEY(0,K,S):: IF S=0 THEN 190

SAVE "DSK1.PLOADSCRN",IV254
CALL KEY("",5,K,S)
RUN
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
CALL KEY("",5,K,S)
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 POKER(7,1) :: NEXT I :: NEXT T :: CALL SCREEN(8)
140 A$="!@#$%^&*()+1234567890=-:><,.;/~_?'|{}\`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" :: 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
CALL KEY("",5,K,S)
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$="" THEN CALL MOTION(GO)
150 CALL HPUT(24,4,"PRESS ANY KEY TO CONTINUE.") :: CALL KEY("",0,K,S) :: CALL DELSPRITE(ALL) :: CALL CLEAR :: RETURN

SAVE "DSK1.MOTIONGO",IV254
CALL KEY("",5,K,S)
RUN
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
CALL KEY("",5,K,S)
RUN
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
CALL KEY("",5,K,S)
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
CALL KEY("",5,K,S)
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
CALL KEY("",5,K,S)
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
CALL KEY("",5,K,S)
NEW
10 ! RXB EXAMPLE            CALL CHAR(S,char,char)
CALL CHAR(S,value#,value#)
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 COLOR(S,#INT(RND*28)+1,#INT(RND*28)+1):: CALL CHAR(S,INT(RND*28)+64,INT(RND*28)+64)
160 Z=Z+1 :: IF Z=50 THEN END ELSE 150

SAVE "DSK1.SWAP",IV254
CALL KEY("",5,K,S)
NEW
10 ! RXB EXAMPLE            CALL CHAR(I,ALL)
100 CALL CHAR(I,ALL)
110 A=A+1 :: IF A<8 THEN 100
120 ! Inverts all character definitions

SAVE "DSK1.INVERSEALL",IV254
CALL KEY("",5,K,S) 
NEW
! RXB has improved 
! a COINC routine
! run this demo to see results!

CALL KEY("",5,K,S) 
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

CALL KEY("",5,K,S) 
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 CHAR(S,65,66):: CALL RMOTION(#1):: CALL COLOR(S,#1,#2)::GOSUB 160 ELSE 130

150 GOTO 130
160 FOR L=1 TO 600 :: NEXT L
170 A=A+1 :: IF A<5 THEN RETURN

SAVE "DSK1.SPRITESWAP",IV254
CALL KEY("",5,K,S)
NEW
10 ! RXB EXAMPLE            CALL GMOTION(#sprite,x,y)
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*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(#"&STR$(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 "DSK2.GMOTION",IV254
CALL KEY("",5,K,S)
RUN
NEW
10 ! RXB EXAMPLE            CALL GMOTION/MOTION
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 S=INT(RND*28)+1 :: CALL GMOTION(#S,X,Y):: CALL MOTION(#S,Y,X)
150 Z=Z+1 :: IF Z<300 THEN 140
160 ! GMOTION gets motion   from one sprite and puts     into another sprite

SAVE "DSK1.G~MOTION",IV254
CALL KEY("",5,K,S)
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 pllace of normal XB more compliated version

SAVE "DSK1.RMOTION",IV254
CALL KEY("",5,K,S)
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
RUN
CALL KEY("",5,K,S)
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
RUN
CALL KEY("",5,K,S)
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
CALL KEY("",5,K,S)
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

! 1 HOUR TEST XB VS RXB
SAVE "DSK1.CONICTEST",IV254

CALL KEY("",5,K,S)
NEW
! CREATE 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$="&""""&" RXB USER "&""""&CHR$(13)
PRINT #1:"3 B$="&""""&"   DEMO   "&""""&CHR$(13)
PRINT #1:"4 C$="&""""&" FINISHED "&""""&CHR$(13)
PRINT #1:"5 CALL HPUT(12,11,A$,14,11,B$,16,11,C$)"&CHR$(13)
PRINT #1:"SAVE DSK1.END-DEMO"&CHR$(13)
PRINT #1:"RUN"&CHR$(13)
CLOSE #1

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

CALL CAT("DSK1.")

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

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

FOR L=0 TO 3000 :: NEXT L

CALL USER("DSK1.TEST-USER")

 

Link to comment
Share on other sites

Windows Defender has always been questionable.  Its rankings bounce up-and-down like a yo-yo.  It is better than nothing, but I would not trust my system to it, solely.  It does have its place, even when going with a commercial security and protection product.  At the very least, being it is a Microsoft product and now integrated into Windows, it "knows" quite a bit about the system and can provide a good level of monitoring and protection supplemental to a third-party product.

  • Like 2
Link to comment
Share on other sites

4 hours ago, GDMike said:

BTW..I saw a msg in my news feed earlier today saying Microsoft broke defender and Win 10 users need the new patch asap.

https://www.techradar.com/amp/news/microsoft-has-just-broken-windows-10s-antivirus-protection-apply-this-fix-straight-away

AVG is terrible as it slows a computer down by 30% sometimes. Also it makes problems with the firewall constantly.

Stay away from Porn and never open anything with out being scanned using Defender works fine.

Link to comment
Share on other sites

17 hours ago, RXB said:

DSK1.BATCH is included in the RXB 2015 package.

It is also in RXB 2000, 2001, 2011, and 2012 also.

No not using disk images just FAID files and folders.

 

I make a Text File in Windows Note Pad, use TIDIR to make it a DV80 file in a DSK 1 to 9 then use this XB program:


100 OPEN #1:"DSK8.USERDEMO",INPUT
110 OPEN #2:"DSK8.BATCH",OUTPUT
120 LINPUT #1:Z$
130 IF LEN(Z$)=80 THEN X$=X$&Z$ :: GOTO 120
140 IF LEN(Z$)<80 THEN PRINT #2:X$&Z$&CHR$(13)
150 X$,Z$="" :: GOTO 120

When it beeps or crashes take your pick I type:

CALL CLSALL 

From here you can type:

CALL XB

From Title screen push COMMA key on keyboard.

Then push number 8 on keyboard as that is disk USERDEMO is on and BATCH is the end result file.

Now you are running BATCH on RXB in 2001 to 2015 versions.

I'll give it a try.

 

Since you're using Classic99 and FIAD anyway, remember you can read the Windows text file directly, without converting it to DV80. Just make sure it has a .txt extension and open normally (OPEN #1:"DSK8.USERDEMO.TXT",INPUT).

Link to comment
Share on other sites

I ran CALL USER("DSK1.BATCH") for over 3 hours without issue here (using paste to queue up the needed keypresses to keep it running).

 

Let's try this. Windows 10 has minidump capability built in.

 

I need you to run THIS version of Classic99 - it's the only one I have a PDB for:

classic99debug.zip

 

When it hangs, ideally WHILE it is still hung, bring up task manager and right-click to create a dump file:

 

image.thumb.png.a8604afa29feb9e4c308c0c7bf977147.png

 

The resulting file will be big - perhaps as much as 300MB. If you zip it, it should drop down to about 80MB. We'll need a way to get that file to me, then I should be able to examine the state of the emulator. I'm not sure what options we have for large file transfer - my email will reject a file that large. But let's get the file first - at worst I can set up a temporary FTP for you.

 

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

9 hours ago, Tursi said:

I'll give it a try.

 

Since you're using Classic99 and FIAD anyway, remember you can read the Windows text file directly, without converting it to DV80. Just make sure it has a .txt extension and open normally (OPEN #1:"DSK8.USERDEMO.TXT",INPUT).

Sorry each line read by USER subprogram has to end with a CR (Enter) or it just assumes you keep typing and you get the same thing when you overrun XB Edit Buffer on a line.

 

My FIX XB program just loads the TEXT (DV80) file and looks for a end of line then tacks a CR at end of it.

If I wrote the DV80 file in TI Writer it would be the same type of file, of course LF would be added too.

Edited by RXB
comment added
Link to comment
Share on other sites

  • 2 months later...

Hey Rich! ( @RXB ), I've just discovered the Rich Editor and Assembler V=2015. Cool. I'm using it on my latest project. Much preferred to the old standard E/A cartridge.

 

Observations:  1. The directory menu option with the seemingly automatic load-and-run feature is great. 

                      2. I like using the arrow keys to select my program to run after loading is complete. Very nice interface here.

                      

                      This interface is a nice improvement over the old TI EA cart. Is it any faster at loading?

 

 

 

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

2 hours ago, Airshack said:

Hey Rich! ( @RXB ), I've just discovered the Rich Editor and Assembler V=2015. Cool. I'm using it on my latest project. Much preferred to the old standard E/A cartridge.

 

Observations:  1. The directory menu option with the seemingly automatic load-and-run feature is great. 

                      2. I like using the arrow keys to select my program to run after loading is complete. Very nice interface here.

                      

                      This interface is a nice improvement over the old TI EA cart. Is it any faster at loading?

 

 

 

Thanks some people are not used to it.

Like after you do set up you can just push A to Assemble a program or load Editor and that file.

 

Faster then typing? (Yea)

No it is not written in Assembly but GPL like RXB and EA carts.

Now the EA Load and Run feature is even better then Boot or Menu for using keys to select start up routine.

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

  • 2 weeks later...

I can't figure this out.

 

I get this debug warning:

 

Warning: PC >A072 reading VDP with LIMI 2

 

When this code runs:

******************************************************
* Warning: PC >A072 reading VDP with LIMI 2
******************************************************
A070  A072  a    *R2+,R1      * THIS IS A POINTER. but the code runs
A072  0646  dect R6           * THIS IS CODE THAT RUNS  
A074  C584  mov  R4,*R6         
A076  02A4  stwp R4             
A078  A118  a    *R8,R4         
A07A  045A  b    *R10         * branch to Forth interpreter

* The Forth interpreter when the above is interpreted 
838A  C239  mov  *R9+,R8      * POP Instruction pointer (A070) to R8 w/autoinc
838C  C178  mov  *R8+,R5      * move contents (A072) of R8 to R5, w/autoinc
838E  0455  b    *R5          * branch to the code address (A072) in R5

Explanation Note:

The code at >A072 is computing the address of a "workspace" variable. ie: a variable that is referenced with the WP register so that difference contexts can have the same variable name but with unique values.  I got the same results when a simple variable ie: a routine that simply returned an address to R4,  occupied this address space >A070.

 

I have also now seen that this is occurring in all the Forth routines because they all use this indirect interpretation method. The difference is that the value >A072 is incrementing R2 so if put in a loop it will touch every address.

 

There seems to be no side effects except the error message.  I see no problems on real hardware but I don't have the tools to see the CPU in such detail on the TI-99.

 

One Canadian penny for anyone's thoughts. Oops, we don't have pennies anymore.

Ok 5 cents then.

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

Loading...
  • Recently Browsing   0 members

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