home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
progm
/
basicaid.zip
/
TRS2PC.BAS
< prev
next >
Wrap
BASIC Source File
|
1983-11-27
|
10KB
|
210 lines
100 'TRS TO IBM PC CONVERSION AID 12/31/82 REV. 1/23/83
120 'DAVE MCCOY 70040,1131
130 CLS:PRINT "TRS-80 to IBM-PC Conversion Program":PRINT"Version 2.0 - Dave McCoy - 70040,1131":PRINT
140 GOTO 510
200 '*******************************************************
210 '* ADDSPACE SUBROUTINES *
220 '*******************************************************
230 IF P=N THEN 3250 ELSE X$=MID$(B$,P+1,1) 'LOOK AT NEXT CHAR.
240 IF X$=" " OR X$=":" THEN 3250 ELSE N$=N$+" ":GOTO 3250 'ADD SPACE
250 X$=MID$(B$,P+1,1)
260 IF X$="@" OR X$=CHR$(34) OR X$=":" OR X$=" "THEN 3250 ELSE N$=N$+" ":GOTO 3250
270 X$=MID$(N$,LEN(N$)-L,1)
280 IF X$=" " OR X$=":" THEN 230 ELSE T2$=LEFT$(N$,LEN(N$)-L):T3$=RIGHT$(N$,L)
290 N$=T2$+" "+T3$:GOTO 230
300 X$=MID$(B$,P+1,3)
310 IF X$="INT" OR X$="SGN" OR X$="DBL" OR X$="STR" THEN 3250 ELSE 230
320 X$=MID$(B$,P-2,3)
330 IF X$="XOR" THEN L=3:GOTO 270 ELSE GOTO 270
340 X$=MID$(B$,P-3,4)
350 IF X$="GOTO" THEN L=4:GOTO 270 ELSE GOTO 270 'CHECK FOR SPACE
360 X$=MID$(B$,P+1,1)
370 IF X$="C" OR X$="$" THEN 3250 ELSE 270
380 X$=MID$(N$,LEN(N$)-L,1)
390 IF X$=" " OR X$=":" THEN 3250 ELSE T2$=LEFT$(N$,LEN(N$)-L):T3$=RIGHT$(N$,L)
400 N$=T2$+" "+T3$:GOTO 3250
410 ' LOCATE ABORT SUBROUTINE
420 IF LEN(B$)=>245 THEN LPRINT "Line";VAL(B$);"Locate aborted ..potential line too long":LPRINT B$:GOTO 3030
430 RETURN
500 '*******************************************************
510 '* INITIALIZE *
520 '*******************************************************
530 CLEAR 28000
540 DEFINT A-Z
550 ON ERROR GOTO 7010
560 DEF FNRW%(A1$,A2$,A3%)=(INSTR(A1$,LEFT$(A2$+STRING$(A3%," "),A3%))-1)/A3%+1
570 R6$="RETURN RESUME DEFINT DEFSNG DEFDBL DEFSTR "
580 R5$="PRINT INPUT GOSUB FIELD CLOSE ERROR CLEAR USING "
590 R4$="THEN ELSE READ DATA RSET LSET SWAP NEXT STEP KILL OPEN POKE LINE "
600 R3$="FOR AND NOT PUT GET DIM DEF LET "
610 R2$="IF OR TO ON AS "
620 DIM B1$(20) 'CONVERSION REPORT EXCEPTIONS
630 I=1
640 READ B1$(I):IF B1$(I)<>"*END*" THEN I=I+1:GOTO 640
650 MAX=I-1
660 DATA TIME$,PEEK,"POKE","CLEAR",USR,MEM,FRE(,"RANDOM"," %",CMD,"ERR/2+1","S TO P",CHR$(,ASC(,"RES TO RE",*END*
665 '------------------------------------------------------
670 C1$="N" '*** CHANGE TO Y FOR BATCH FILE PROCESSING
675 '------------------------------------------------------
680 IF C1$="Y" THEN 930
690 INPUT"Print@ converted to LOCATE r,c - IBM only (Y/N)";C2$
700 IF C2$<>"Y" AND C2$<>"N" THEN 690
710 INPUT"ADD SPACE between keywords (Y/N)";C3$
720 IF C3$<>"Y" AND C3$<>"N" THEN 710
730 INPUT"REPLACE commands for PC - IBM only (Y/N)";C4$
740 IF C4$<>"Y" AND C4$<>"N" THEN 730
750 INPUT"UPPER CASE converted to LOWER CASE (Y/N)";C5$
760 IF C5$<>"Y" AND C5$<>"N" THEN 750
770 INPUT"Conversion REPORT to printer - IBM only (Y/N)";C6$
780 IF C6$<>"Y" AND C6$<>"N" THEN 770
790 PRINT:INPUT"Edited lines to SCREEN (Y/N)";C7$
800 IF C7$<>"Y" AND C7$<>"N" THEN 790
810 GOTO 1730
900 '*******************************************************
910 '* BATCH PROCESSING *
920 '*******************************************************
930 PRINT"Batch file processing..":ON ERROR GOTO 950
940 OPEN"I",1,"COUNTER/DAT":INPUT#1,YF:CLOSE:GOTO 960
950 YF=1:OPEN"O",1,"COUNTER/DAT":PRINT#1,YF:CLOSE:GOTO 940
960 ON ERROR GOTO 7010
970 DIM FF$(20) 'BATCH PROCESSING FILENAME ARRAY
980 '------------------------------------------------------
990 'C1$=BATCH FLAG C2$=PRINT@-LOCATE C3$=ADDSPACE TO KEY
1000 'WORDS C4$=REPLACE COMMANDS C5$=UPPER TO LOWER CASE
1010 'C6$=REPORT EXCEPTIONS C7$=NEW FILE TO SCREEN
1020 '------------------------------------------------------
1030 J=1:C2$="Y":C3$="Y":C4$="Y":C5$="Y":C6$="Y":C7$="Y"
1040 READ FF$(J):IF FF$(J)="END" THEN 1100 ELSE J=J+1:GOTO 1040
1050 'ENTER 8 CHARACTER FILESPECS IN DATA STATEMENT BELOW
1060 'EXTENSION OF /ASC ASSUMED ON BATCH FILES - END DATA WITH WORD END
1070 '================= BATCH FILES =========================
1080 DATA DIRDUPS,DIRDUMP,END
1090 '======================================================
1100 IF FF$(YF)="END" THEN 1550
1110 FS$=FF$(YF) 'CURRENT FILE TO PROCESS
1120 F1$=FS$+"/ASC" 'ASSUMES /ASC INPUT FILE EXTENSION
1130 F2$=FS$+"/IBM" 'ASSIGNS /IBM OUTPUT FILE EXTENSION
1140 GOTO 1760
1500 '******************************************************
1510 '* END *
1520 '******************************************************
1530 PRINT:IF C6$="Y" THEN LPRINT STRING$(79,"="):LPRINT:LPRINT
1540 PRINT "Close ";F1$;" and ";F2$
1550 CLOSE:IF FF$(YF)="END" THEN PRINT "Done":KILL"COUNTER/DAT":CLEAR 50:END
1560 IF C1$="Y" THEN OPEN"O",1,"COUNTER/DAT":PRINT#1,YF+1:CLOSE
1570 RUN
1580 END
1700 '******************************************************
1710 '* KEYBOARD ENTRY OF FILESPEC *
1720 '******************************************************
1730 PRINT:LINE INPUT "Enter source ASCII filespec : ";F1$
1740 LINE INPUT "Enter output ASCII filespec : ";F2$
1750 '******************************************************
1760 OPEN "I",1,F1$
1770 OPEN "O",2,F2$
1780 CLS:PRINT"Source "F1$;" --> Target "F2$
1790 IF C6$="Y" THEN LPRINT "TRS-80 ";F1$;" CONVERSION TO IBM/PC ";F2$;" ";TIME$:LPRINT
1800 IF EOF(1) THEN 1530
1810 LINE INPUT #1,B$: IF B$="" THEN 1800
1820 PRINT:PRINT "Line";VAL(B$),
2000 '******************************************************
2010 '* CHANGE PRINT@ TO LOCATE R,C *
2020 '******************************************************
2030 IF C2$<>"Y" THEN 3030
2040 PRINT "Locate..";
2050 D=INSTR(B$,"PRINT@")
2060 IF D=0 THEN 2120
2070 PL=6
2080 C=INSTR(D,B$,",")
2090 IF C=0 THEN 2120
2100 A=VAL(MID$(B$,D+PL,(C-D+PL-1)))
2110 L=INT(A/64):B=A-(L*64):GOTO 2140
2120 D=INSTR(B$,"PRINT @")
2130 IF D=0 THEN 3030 ELSE PL=7:GOTO 2080
2140 C$=LEFT$(B$,D-1)
2150 GOSUB 410 :C$=C$+"LOCATE "+RIGHT$(STR$(L),LEN(STR$(L))-1)+","+RIGHT$(STR$(B),LEN(STR$(B))-1)
2160 C$=C$+":PRINT"+RIGHT$(B$,LEN(B$)-C)
2170 B$=C$
2180 GOTO 2050
3000 '******************************************************
3010 '* ADDSPACE TO KEY WORDS *
3020 '******************************************************
3030 IF C3$<>"Y" THEN N$=B$:GOTO 4030
3040 PRINT "Add Space..";
3050 D=INSTR(B$,"DATA"):IF D THEN 4030 'DON'T ADD SPACE TO DATA
3060 N=LEN(B$):N$="":F4=0:F1=0
3070 FOR P=1 TO N 'STRIP B$
3080 IF LEN(N$)=>255 THEN LPRINT "ADDSPACE ABORTED LINE TOO LONG":LPRINT N$:GOTO 4030
3090 D$=MID$(B$,P,1)
3100 N$=N$+D$
3110 IF D$=CHR$(34) AND F4=1 THEN F4=0: GOTO 3130
3120 IF D$=CHR$(34) AND F4=0 THEN F4=1
3130 IF D$="'" AND F4=0 THEN F1=1 'REMARK
3140 IF F4=1 OR F1=1 THEN 3250
3150 L=6: R%=FNRW%(R6$,RIGHT$(N$,L),L+1)
3160 ON R% GOTO 230 ,230 ,230 ,230 ,230 ,230 ,230
3170 L=L-1: R%=FNRW%(R5$,RIGHT$(N$,L),L+1)
3180 ON R% GOTO 250 ,250 ,270 ,230 ,230 ,230 ,230 ,250
3190 L=L-1: R%=FNRW%(R4$,RIGHT$(N$,L),L+1)
3200 ON R% GOTO 270 ,270 ,230 ,250 ,230 ,230 ,230 ,270 ,270 ,250 ,250 ,230 ,230
3210 L=L-1: R%=FNRW%(R3$,RIGHT$(N$,L),L+1)
3220 ON R% GOTO 230 ,270 ,270 ,230 ,230 ,230 ,300 ,230
3230 L=L-1: R%=FNRW%(R2$,RIGHT$(N$,L),L+1)
3240 ON R% GOTO 230 ,320 ,340 ,230 ,360
3250 NEXT
4000 '******************************************************
4010 '* REPLACEMENT COMMANDS *
4020 '******************************************************
4030 IF C4$<>"Y" THEN 5030
4040 PRINT "Replace..";
4050 D=INSTR(N$,"ERR/2+1")
4060 IF D=0 THEN 4080
4070 MID$(N$,D,7)=" ERR "
4080 D=INSTR(N$,"[")
4090 IF D=0 THEN 4110
4100 MID$(N$,D,1)=CHR$(94):GOTO 4080
4110 D=INSTR(N$,"STRING$(64,")
4120 IF D=0 THEN 4140
4130 MID$(N$,D+8,2)="80"
4140 D=INSTR(N$,"STRING$(63,")
4150 IF D=0 THEN 5030
4160 MID$(N$,D+8,2)="79"
5000 '******************************************************
5010 '* CONVERT UPPER TO LOWER CASE *
5020 '******************************************************
5030 IF C5$<>"Y" THEN 6030
5040 W=1:PRINT"UC to LC..";
5050 Y=INSTR(W,N$,CHR$(34)):IF Y<1 THEN 6030
5060 Z=INSTR(Y+1,N$,CHR$(34)):IF Z<1 THEN Z=LEN(N$)
5070 FOR I=Y+2 TO Z
5080 X$=MID$(N$,I,1):IF X$="" THEN 5120
5090 IF ASC(X$)<65 OR ASC(X$)>90 THEN 5120
5100 X$=CHR$(ASC(X$)+32)
5110 MID$(N$,I,1)=X$
5120 NEXTI
5130 W=I:GOTO 5050
6000 '******************************************************
6010 '* CONVERT AID REPORTER *
6020 '******************************************************
6030 IF C6$<>"Y" THEN 6140
6040 PRINT"Report..";
6050 FOR I=1 TO MAX
6060 C%=INSTR(N$,B1$(I)):CM=INSTR(N$,"'"):RM=INSTR(N$,"REM")
6070 IF C%=0 THEN 6120
6080 IF CM THEN IF CM<=C% THEN 6120
6090 IF RM THEN IF RM<=C% THEN 6120
6100 LPRINT N$
6110 LPRINT TAB(C%-1)"*"
6120 NEXT
6130 '******************************************************
6140 PRINT#2,N$:IF C7$="Y" THEN PRINT:PRINT N$ 'WRITE FILE
6150 '******************************************************
6160 GOTO 1800
7000 '******************************************************
7010 '* ERROR ROUTINE *
7020 '******************************************************
7030 PRINT "Error"ERR/2+1"in line"ERL
7040 CLOSE:STOP
7050 END
9000 '**************** SAVE PROGRAM ************************