home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / basic / basicprt.lzh / BASICPRT.BAS
Encoding:
BASIC Source File  |  1982-03-26  |  5.1 KB  |  109 lines

  1. 10 REM==================================================================
  2. 20 REM==============  Print a BASIC source program   ===================
  3. 30 REM===   This program prints a source listing of a BASIC program ====
  4. 40 REM===   and prints all remarks statements (REM) in emphasized  =====
  5. 50 REM===   font.  ALSO, certain printer control statements are    =====
  6. 60 REM===   recognized when they are the only comment on a REM stmt=====
  7. 70 REM===      For example:                                        =====
  8. 80 REM===         REM $s4     will space 4 lines on the printer    =====
  9. 90 REM===         REM $pa     will eject to top of next page       =====
  10. 100 REM==================================================================
  11. 110 REM $s1                                 '
  12. 120 ON ERROR GOTO 900                       '
  13. 130 TIMEOUT.COUNT=0                         '
  14. 140 PTIME$ = TIME$
  15. 150 CLS : KEY OFF                           ' Clear screen
  16. 160 LOCATE 12,10 : PRINT "Note:  Drive B and filetype of BAS is assumed"
  17. 170 LOCATE 13,10 : PRINT "Also:  Pgm must have been saved using ASCII option"
  18. 180 LOCATE 10,10 : COLOR 0,7                ' Center query for file name
  19. 190 LINE INPUT " Enter the name of the BASIC source program: ";AAA$
  20. 200 COLOR 7,0
  21. 210 GOSUB 380
  22. 220 OPEN "b:"+AAA$+".bas" FOR INPUT AS 1
  23. 230 LC = -1
  24. 240 IF EOF(1) THEN 290
  25. 250   LINE INPUT#1,REC$
  26. 260   GOSUB 770     ' check for enough vertical space
  27. 270   GOSUB 500     ' check for print control and print line if required
  28. 280 GOTO 240
  29. 290 CLOSE 1
  30. 300 CLS : KEY ON : LPRINT CHR$(12)     ' Final page skip
  31. 310 END
  32. 320 REM $S3
  33. 330 REM==================================================================
  34. 340 REM======================  SUBROUTINE  ==============================
  35. 350 REM=========  Convert lower case letters to upper case  =============
  36. 360 REM==================================================================
  37. 370 REM $s1                                 '
  38. 380 FOR I = 1 TO LEN(AAA$)
  39. 390   AA$ = MID$(AAA$,I,1)
  40. 400     IF ASC(AA$)=>97 AND ASC(AA$)<= 122 THEN AA$ = CHR$(ASC(AA$)-32)
  41. 410     MID$(AAA$,I,1) = AA$
  42. 420 NEXT I
  43. 430 FOR I = 1 TO 8-LEN(AAA$)
  44. 440   AAA$ = AAA$+" "
  45. 450 NEXT I
  46. 460 RETURN
  47. 470 REM $pa
  48. 480 REM==================================================================
  49. 490 REM=========================  SUBROUTINE  ===========================
  50. 500 REM============= Check for special printer control rem's  ===========
  51. 510 REM==================================================================
  52. 520 REM $s1                                 '
  53. 530   FOR I = 1 TO 8
  54. 540      AA$ = MID$(REC$,I,3)
  55. 550      IF AA$="REM" THEN GOTO 580
  56. 560   NEXT I
  57. 570   GOTO 730
  58. 580   AA$ = MID$(REC$,I+4,1)
  59. 590   PC$= CHR$(27)+CHR$(69)           '  Turn ON emphasized for rem stmt
  60. 600   IF AA$ <> "$" THEN 730           '  Check for REM $ format
  61. 602   AA$=MID$(REC$,I+5,1)             '  If so, pick up next character
  62. 610   IF AA$ <> "S" AND AA$ <> "s" THEN 700 'Check for Line Space cmd
  63. 620   AA = VAL(MID$(REC$,I+6,1))
  64. 630   IF AA<1 OR AA>9 THEN RETURN           '
  65. 640   FOR I = 1 TO AA
  66. 650      LPRINT " "
  67. 660      LC = LC-1
  68. 670   NEXT I
  69. 680   PC$= CHR$(27)+CHR$(70)           '  Turn OFF emphasized font
  70. 690   RETURN
  71. 700     IF AA$<>"p" AND AA$<>"P" THEN 730   ' Check for page eject
  72. 710     GOSUB 840                           ' Issue page eject
  73. 720     RETURN                              '
  74. 730   LPRINT PC$;REC$
  75. 740   PC$=CHR$(27)+CHR$(70)
  76. 750   RETURN
  77. 760 REM $S3
  78. 770 REM==================================================================
  79. 780 REM=========================  SUBROUTINE  ===========================
  80. 790 REM================  Check for vertical spacing   ===================
  81. 800 REM==================================================================
  82. 810 REM $s1                                 '
  83. 820 IF LC > 0 THEN 880
  84. 830 IF LC < 0 THEN 850
  85. 840   LPRINT CHR$(12)          ' skip to top of page
  86. 850  LC = 55
  87. 860 LPRINT CHR$(14)+CHR$(27)+CHR$(71)+DATE$+STRING$(4,32)+"PGM: "+AAA$+STRING$(4,32)+PTIME$
  88. 870 LPRINT CHR$(27)+CHR$(72)+CHR$(27)+CHR$(20)+" ":LPRINT" " : LPRINT " "
  89. 880 LC = LC-1
  90. 890 RETURN
  91. 900 REM $pa                                     '
  92. 910 REM ===============================================================
  93. 920 REM ==  Error trapping routine, intended primarily to handle  =====
  94. 930 REM ==  device timeout on the printer when too much page      =====
  95. 940 REM ==  ejecting is done.                                     =====
  96. 950 REM ===============================================================
  97. 960 REM $s1                                 '
  98. 970    IF ERR <> 24 THEN 1030                   '
  99. 980    TIMEOUT.COUNT=TIMEOUT.COUNT+1           ' Incr number of timeouts
  100. 990    IF TIMEOUT.COUNT<10 THEN RESUME NEXT    ' give it 10
  101. 1000      CLS : BEEP : BEEP                  '
  102. 1010      PRINT "Program aborted due to too many device timeouts"
  103. 1020      END                                '
  104. 1030    CLS : BEEP :BEEP                     '
  105. 1040    PRINT "Program aborted due to error code = ";ERR
  106. 1050    END                                  '
  107.                   '
  108. 1040    PRINT "Program aborted due to error code = ";ERR
  109. 1050    END