home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / rtty / rtty12 / rttyu.bas < prev    next >
BASIC Source File  |  1984-12-01  |  5KB  |  113 lines

  1. 10 REM $LINESIZE:132
  2. 20 '********************************************************************
  3. 30 '
  4. 40 ' RTTY UTILITY PROGRAM FOR THE IBM PERSONAL COMPUTER
  5. 50 '
  6. 60 ' BY   GLENN E. WELMAN  -  KF4NB   (FORMERLY WB0OWT)
  7. 70 '      3301 PASTERN CT.
  8. 80 '      LEXINGTON, KY 40513
  9. 90 '
  10. 100 '  (C) COPYRIGHT WELMAN SOFTWARE 1983, 1984
  11. 110 '********************************************************************
  12. 120 '
  13. 130 '  FEEL FREE TO GIVE COPIES OF THIS PROGRAM TO YOUR FRIENDS.
  14. 140 '
  15. 150 '  PLEASE, DON'T SELL OR BARTER THE PROGRAM TO OTHERS.
  16. 160 '
  17. 170 '  IF YOU FIND BUGS IN THE PROGRAM, FEEL FREE TO
  18. 180 '  CORRESPOND DIRECTLY WITH ME. (SASE REQUESTED)
  19. 190 '
  20. 200 '  WHEN YOU PASS ALONG THE PROGRAM, INCLUDE ONLY THE
  21. 210 '  ORIGINAL UNMODIFIED VERSION.
  22. 220 '
  23. 230 '  DO NOT REMOVE THESE GUIDELINES FROM THE PROGRAM
  24. 240 '  OR DOCUMENT.
  25. 250 '
  26. 260 '  IF YOU FIND THE PROGRAM OF VALUE, A SMALL CONTRIBUTION
  27. 270 '  FOR MY EFFORT WILL BE APPRECIATED ($25 SUGGESTED).
  28. 280 '
  29. 290 '                       73's
  30. 300 '                       Glenn - KF4NB
  31. 310 '
  32. 320 '********************************************************************
  33. 330 CPRGHT$="(C) COPYRIGHT WELMAN SOFTWARE 1983, 1984"
  34. 340 DEFINT A-Z
  35. 350 'DETERMINE SCREEN SIZE AND SET THE SCROLL PARAMETERS
  36. 360 A=CSRLIN:PRINT STRING$(60," ");:IF A=CSRLIN THEN CMAX=80 ELSE CMAX=40
  37. 370 CLS
  38. 380 'READ THE INITIALIZATION PARAMETERS
  39. 390 QBEL=0:RCNT=1:LPTR$="LPT1:"
  40. 400 ON ERROR GOTO 510
  41. 410 OPEN "PARMS.RTY" FOR INPUT AS #1
  42. 420 WHILE NOT EOF(1)
  43. 430 INPUT#1,P$:P$=LEFT$(P$,4)
  44. 440 FOR PL=1 TO LEN(P$)
  45. 450 P=ASC(MID$(P$,PL,1)):IF (P>&H60) AND (P<&H7B) THEN MID$(P$,PL,1)=CHR$(P-&H20)
  46. 460 NEXT PL
  47. 470 IF P$="LPT2" THEN LPTR$="LPT2:":GOTO 500
  48. 480 IF P$="LPT3" THEN LPTR$="LPT3:":GOTO 500
  49. 490 IF P$="QB" THEN QBEL=-1
  50. 500 WEND
  51. 510 CLOSE #1
  52. 520 REM $PAGE
  53. 530 'INITIALIZE PROGRAM VARIABLES
  54. 540 ON ERROR GOTO 0
  55. 550 INPUT "ENTER NAME OF FILE TO PROCESS";PF$
  56. 560 IF PF$="" THEN 550
  57. 570 OPEN PF$ FOR INPUT AS #2
  58. 580 INPUT "WOULD YOU LIKE TO SAVE THE RESULTS";P$
  59. 590 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN GOSUB 870
  60. 600 INPUT "DO YOU WANT TO PRINT THE FILE";P$
  61. 610 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN PRNTR=-1 ELSE PRNTR=0
  62. 620 CLS
  63. 630 WIDTH LPTR$,255
  64. 640 OPEN LPTR$ AS #1
  65. 650 'THIS IS THE MAIN PROGRAM LOOP
  66. 660 IF UNCOMP THEN GOSUB 1000:GOTO 690
  67. 670 IF EOF(2) THEN 700
  68. 680 TCH$=INPUT$(1,#2):GOSUB 1000
  69. 690 GOTO 660
  70. 700 CLOSE:END
  71. 710 'GET THE NEXT RECEIVED CHARACTER AND DISPLAY IT
  72. 720 B$=CHR$(BAU):IF BAU > 31 OR BAU=7 OR BAU=10 OR BAU=13 THEN 740 ELSE 850
  73. 730 'B$ CONTAINS THE ASCII CHARACTER
  74. 740 IF PRNTR THEN IF BAU<>7 THEN PRINT#1,B$;
  75. 750 CURIN=ASC(B$)
  76. 760 IF NOT COMP THEN 800
  77. 770 IF BFILE THEN IF CURIN=LASTIN THEN RCNT=RCNT+1:GOTO 800 ELSE IF LASTIN<>10 AND LASTIN<>13 THEN IF RCNT=1 THEN PRINT#3,CMP$;:GOTO 790 ELSE IF RCNT=2 THEN PRINT#3,CMP$;CMP$;:GOTO 790
  78. 780 IF BFILE THEN IF LASTIN<>10 AND LASTIN<>13 THEN IF RCNT=26 THEN PRINT#3,CMP$;CHR$(255);CHR$(25);CMP$; ELSE PRINT#3,CHR$(255);CHR$(RCNT);CMP$;
  79. 790 IF BFILE THEN CMP$=B$:RCNT=1
  80. 800 IF BFILE THEN IF CURIN=13 AND (LASTIN=10 OR LASTIN=13) THEN PRINT#3,
  81. 810 IF BFILE THEN IF CURIN=10 OR CURIN=13 THEN PRINT#3,CHR$(CURIN+10); ELSE IF LASTIN=10 OR LASTIN=13 THEN PRINT#3,
  82. 820 IF BFILE AND NOT COMP AND CURIN<>10 AND CURIN<>13 THEN PRINT#3,B$;
  83. 830 LASTIN = CURIN
  84. 840 GOSUB 950:'PUT CHARACTER ON SCREEN
  85. 850 RETURN
  86. 860 'SEND RECEIVED CHARACTERS TO SPECIFIED FILE
  87. 870 BFILE=0
  88. 880 INPUT "ENTER NAME OF NEW FILE";BF$
  89. 890 IF BF$="" THEN 930
  90. 900 OPEN BF$ FOR APPEND AS #3
  91. 910 BFILE=-1:INPUT "DO YOU WANT COMPRESSION (Y/N) ";P$
  92. 920 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN COMP=-1 ELSE COMP=0
  93. 930 RETURN
  94. 940 'PUT RECEIVED CHARACTER ON SCREEN
  95. 950 RCH=ASC(B$):IF RCH=13 THEN LOCATE CSRLIN,1,0:RETURN
  96. 960 PRINT B$;
  97. 970 RETURN
  98. 980 REM $PAGE
  99. 990 'PUT CHAR TO SEND ON SCREEN
  100. 1000 TCH=ASC(TCH$):IF UNCOMP THEN TCNT=TCNT-1:TCH=UTCH:TCH$=UTCH$:IF TCNT=0 THEN UNCOMP=0:GOTO 1060 ELSE GOTO 1060
  101. 1010 IF UCNT THEN UCNT=0:UNCOMP=-1:UTCH=TCH:IF TCH=13 THEN UTCH$=CHR$(23):RETURN ELSE UTCH$=TCH$:RETURN
  102. 1020 IF USTRT THEN USTRT=0:UCNT=-1:TCNT=TCH:RETURN
  103. 1030 IF CRLF THEN CRLF=0:IF TCH=10 THEN LTCH=10:RETURN
  104. 1040 IF QBL THEN QBL=0:IF TCH=7 THEN LTCH=7:RETURN
  105. 1050 IF TCH=255 THEN USTRT=-1:RETURN
  106. 1060 IF TCH=13 OR TCH=10 THEN IF LTCH=20 OR LTCH=23 THEN RETURN ELSE TCH$=CHR$(TCH+10)
  107. 1070 IF TCH=20 OR TCH=23 THEN BAU=TCH-10 ELSE BAU=TCH
  108. 1080 GOSUB 720
  109. 1090 LTCH=TCH
  110. 1100 IF TCH=13 THEN TCH=10:CRLF=-1:GOTO 1070
  111. 1110 IF QBEL AND TCH=39 THEN TCH=7:QBL=-1:GOTO 1070
  112. 1120 RETURN
  113.