home *** CD-ROM | disk | FTP | other *** search
- 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 C1$ = "Y"
- 685 IF C1$ = "Y" THEN 930
- 690 INPUT "PRINT@ CONVERTED TO LOCATE R,C - IBM ONLY (Y/N)"; C2$
- 695 IF C2$ = "y" THEN C2$ = "Y"
- 698 IF C2$ = "n" THEN C2$ = "N"
- 700 IF C2$ <> "Y" AND C2$ <> "N" THEN 690
- 710 INPUT "ADD SPACE BETWEEN KEYWORDS (Y/N)"; C3$
- 711 IF C3$ = "y" THEN C3$ = "Y"
- 712 IF C3$ = "n" THEN C3$ = "N"
- 720 IF C3$ <> "Y" AND C3$ <> "N" THEN 710
- 730 INPUT "REPLACE COMMANDS FOR PC - IBM ONLY (Y/N)"; C4$
- 741 IF C4$ = "y" THEN C4$ = "Y"
- 742 IF C4$ = "n" THEN C4$ = "N"
- 740 IF C4$ <> "Y" AND C4$ <> "N" THEN 730
- 750 INPUT "UPPER CASE CONVERTED TO LOWER CASE (Y/N)"; C5$
- 751 IF C5$ = "y" THEN C5$ = "Y"
- 752 IF C5$ = "n" THEN C5$ = "N"
- 760 IF C5$ <> "Y" AND C5$ <> "N" THEN 750
- 770 INPUT "CONVERSION REPORT TO PRINTER - IBM ONLY (Y/N)"; C6$
- 771 IF C6$ = "y" THEN C6$ = "Y"
- 772 IF C6$ = "n" THEN C6$ = "N"
- 780 IF C6$ <> "Y" AND C6$ <> "N" THEN 770
- 790 PRINT : INPUT "EDITED LINES TO SCREEN (Y/N)"; C7$
- 791 IF C7$ = "y" THEN C7$ = "Y"
- 792 IF C7$ = "n" THEN C7$ = "N"
- 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 NEXT I
- 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 ************************
-
-