10 DEFSTR A-D: DEFINT E-Z : Q$=CHR$(34) 11 REM MYRS2MB (v) 1.0 28 May 1983 by Ed Mahoney 12 REM ******************************************************************* 13 REM This program will convert a Radio Shack BASIC program to a 14 REM Microsoft MBASIC 5.1 program. 15 REM Instructions are given as the program runs. 16 REM INSTALLATION: The conversion process will make certain Radio Shack 17 REM statements into printable 'escape codes'. You must now the two 18 REM escape code sequences for your computer (or terminal): *********************************************************** 19 REM 1) clear the screen and home the cursor 20 CLS$=CHR$(27)+"*" : REM For the MAX-80 22 REM CLS$=CHR$(27)+"E" : REM For the Heath 23 A1="1 CLS$=CHR$(27)+"+Q$+"*"+Q$ : REM For the MAX-80 24 REM A1="1 CLS$=CHR$(27)+Q$+"E"+Q$ : REM For the Heath 25 REM ********************************************************************* 26 REM 2) print at a screen location (Row,Column) 27 DEF FNAT$(R9,C9)=CHR$(27)+"="+CHR$(R9+32)+CHR$(C9+32) : REM For MAX-80 28 REM DEF FNAT$(R9,C9)=CHR$(27)+"Y"+CHR$(R9+32)+CHR$(C9+32) :REM FOR HEATH 29 A2="2 DEF FNAT$(AT%)=CHR$(27)+"+Q$+"="+Q$+"+CHR$(INT(AT%/64)+32)+CHR$((AT% MOD 64)+32)" : REM For the MAX-80 30 REM A2="2 DEF FNAT$(AT%)=CHR$(27)+"+Q$+"Y"+Q$+"+CHR$(INT(AT%/64)+32)+CHR$((AT% MOD 64)+32)" : REM For the Heath 31 REM ******************END OF INSTALLATION****************************** 45 GOSUB 60000:PRINT CLS$;"Initializing..............." 50 SP=0:RP=0 60 DIM Z(1000),C(130),L(130),D(130),B(9) 61 READ A: IF A="XXXX" THEN 91 62 RP=RP+1: C(RP)=A: M=LEN(A):L(RP)=M:B="" 63 FOR I=1 TO M:V=ASC(MID$(A,I)):IF V>64 THEN B=B+CHR$(V+32) ELSE B=B+CHR$(V) 64 NEXT I:D(RP)=B 65 GOTO 61 70 REM 71 REM RESERVED WORDS 72 REM 73 DATA ABS,AND,ASC,AS,ATN,AUTO,CDBL,CHR$,CINT,CLEAR,CLOSE,CONT 74 DATA COS,CSNG,CVD,CVI,CVS,DATA 75 DATA DEFDBL,DEFINT,DEFSNG,DEFSTR,DEFUSR,DEF,DELETE,DIM 76 DATA EDIT,ELSE,END,EOF,ERL,ERR,EXP,FIELD,FILES,FOR 77 DATA FRE,GET,GOSUB,GOTO,HEX$ 78 DATA IF,IMP,INPUT,INP,INSTR,KILL,LEFT$,LEN,LET,LINE 79 DATA LIST,LLIST,LOAD,LOC,LOF,LOG,LPRINT,LSET,MERGE,MID$,MKD$,MKI$ 80 DATA MKS$,NEW,NEXT,NOT,ON,OPEN,OR,OUT 81 DATA POS,PRINT,PUT 82 DATA READ,REM,RESTORE,RESUME,RETURN,RIGHT$,RND,RSET,RUN 83 DATA SAVE,SGN,SIN,SQR,STEP,STOP,STR$,STRING$ 84 DATA TAB(,TAN,THEN,TO,TROFF,TRON 85 DATA USING,USR,VAL,VARPTR 90 DATA XXXX 91 READ A: IF A="XXXX" THEN 100 92 QP=QP+1: B(QP)=A:GOTO 91 95 DATA PEEK,POKE,SET(,RESET,POINT 96 DATA XXXX 100 LINE INPUT"WHAT IS RADIO SHACK PROGRAM ...... > ";R$ 110 LINE INPUT"WHAT WILL BE THE MICROSOFT PROGRAM'S NAME > ";M$ 120 OPEN"I",1,R$ 130 OPEN"O",2,M$ 132 A1=A1+" : WIDTH(64)":PRINT A1: PRINT#2,A1 136 PRINT A2: PRINT#2,A2 140 IF EOF(1) THEN 20000 150 LINE INPUT#1, A 500 PRINT LL$;A;HL$ 1000 REM LOOK FOR THE RANDOM FUNCTION 1010 P=1 1020 R=INSTR(P,A,"RND(") 1030 IF R=0 THEN 2000 1040 V=VAL(MID$(A,R+4)) 1060 Q=INSTR(R,A,")") 1065 IF V>0 THEN 1500 1070 A=LEFT$(A,R-1)+"RND"+MID$(A,Q+1) 1080 P=R+1:GOTO 1020 1500 A=LEFT$(A,R-1)+"INT(RND*"+STR$(V)+"+1)"+MID$(A,Q+1):P=P+6:GOTO 1020 2000 REM CLS TO PRINT CLS$ 2010 P=1 2020 R=INSTR(P,A,"CLS") 2030 IF R=0 THEN 3000 2040 A=LEFT$(A,R-1)+"PRINT CLS$;"+MID$(A,R+3): P=R+9: GOTO 2020 3000 REM PRINT @###, 3010 P=1 3020 R=INSTR(P,A,"PRINT@"): IF R=0 THEN R=INSTR(P,A,"PRINT @") 3030 IF R=0 THEN 4000 3040 Q=INSTR(R,A,","):S=INSTR(R,A,"@") 3050 A=LEFT$(A,S-1)+" FNAT$("+MID$(A,S+1,Q-S-1)+");"+MID$(A,Q+1): GOTO 3020 4000 REM WARNINGS 4005 F=0 4010 FOR I=1 TO QP:IF INSTR(A,B(I)) THEN F=1 4020 NEXT I 4030 IF F THEN SP=SP+1: Z(SP)=VAL(A): A=A+":REM WARNING!" 5000 REM SPACES 5010 FOR I=1 TO RP 5020 P=1 5030 R=INSTR(P,A,C(I)): IF R=0 THEN 5500 5035 MID$(A,R)=D(I) 5040 IF MID$(A,R-1,1)<>" " THEN A=LEFT$(A,R-1)+" "+MID$(A,R):R=R+1 5050 R=R+L(I) 5060 IF MID$(A,R,1)<>" " THEN A=LEFT$(A,R-1)+" "+MID$(A,R) 5070 P=R:GOTO 5030 5500 NEXT I 10000 PRINT A 11000 PRINT #2,A 15000 GOTO 140 20000 CLOSE 30000 IF SP=0 THEN END 40000 PRINT:PRINT:PRINT"WARNING - THE FOLLOWING LINES STILL HAVE EITHER RADIO SHACK GRAPHICS":PRINT" OR HAVE EITHER PEEKS AND POKES." 40100 FOR I=1 TO SP:PRINT Z(I),:NEXT 49999 END 50000 I$=INKEY$:IF I$="" THEN 50000 ELSE RETURN 60000 PRINT CLS;"MYRS2MB My Radio Shack to Microsoft BASIC conversion utility" 60010 PRINT"By Ed Mahoney 28 May 83 Version 1.0 " 60020 PRINT:PRINT"This program will convert a Radio Shack Model I or Model 3 BASIC (or 60030 PRINT"Disk BASIC) program to a Microsoft BASIC 5.1 program." 60040 PRINT:PRINT"REQUIREMENTS:":PRINT"1) Your computer that will be running the Microsoft program 60050 PRINT" must be able to 'print at' specific locations on your screen." 60060 PRINT"2) The Radio Shack program that is to be converted, must exist on disk 60070 PRINT" and be stored in ASCII format." 60080 PRINT" a) This program must not have line numbers 1 or 2 (the conversion 60090 PRINT" process will place statements in these positions)" 60100 PRINT" b) The statements in the Radio Shack program must not be extreemly 60110 PRINT" long, say greater than 220 characters long. (The program will 60120 PRINT" expand each line.)" 60130 PRINT" c) The Radio Program should not have the following statements: 60140 PRINT" PEEK POKE SET(x,y) RESET(x,y) POINT(x,y) 60150 PRINT" (These statements are machine dependent) 60160 PRINT" If these 5 statements are present, they will be passed on to the MBASIC" 60170 PRINT" with a REM statement appended to the end that warns you that you will 60180 PRINT" have to do some additional conversion (good luck!)." 60190 PRINT"3) FINAL WARNING: This is only version 1.0. This utility has not been 60200 PRINT" extensivly tested."; 60250 GOSUB 50000:PRINT CLS$; 60300 PRINT"WHAT IT DOES: 60310 PRINT"1) converts the RND function to MBASIC standards 60320 PRINT"2) converts Radio Shack's CLS statement to a print code 60330 PRINT"3) converts Radio Shack's PRINT @ ##, to a printable code 60340 PRINT"4) 'pads' all statements with spaces which MBASIC requires (and Radio 60350 PRINT" Shack does not). 60360 PRINT"5) Identifies statements that are machine dependent (ex. PEEK or SET 60370 PRINT" with a warning at the end of the statement and provides a table of 60380 PRINT" the bad statements oa the end of execution. 60430 GOSUB 50000:RETURN