home *** CD-ROM | disk | FTP | other *** search
- 10 REM==================================================================
- 20 REM============== Print a BASIC source program ===================
- 30 REM=== This program prints a source listing of a BASIC program ====
- 40 REM=== and prints all remarks statements (REM) in emphasized =====
- 50 REM=== font. ALSO, certain printer control statements are =====
- 60 REM=== recognized when they are the only comment on a REM stmt=====
- 70 REM=== For example: =====
- 80 REM=== REM $s4 will space 4 lines on the printer =====
- 90 REM=== REM $pa will eject to top of next page =====
- 100 REM==================================================================
- 110 REM $s1 '
- 120 ON ERROR GOTO 900 '
- 130 TIMEOUT.COUNT=0 '
- 140 PTIME$ = TIME$
- 150 CLS : KEY OFF ' Clear screen
- 160 LOCATE 12,10 : PRINT "Note: Drive B and filetype of BAS is assumed"
- 170 LOCATE 13,10 : PRINT "Also: Pgm must have been saved using ASCII option"
- 180 LOCATE 10,10 : COLOR 0,7 ' Center query for file name
- 190 LINE INPUT " Enter the name of the BASIC source program: ";AAA$
- 200 COLOR 7,0
- 210 GOSUB 380
- 220 OPEN "b:"+AAA$+".bas" FOR INPUT AS 1
- 230 LC = -1
- 240 IF EOF(1) THEN 290
- 250 LINE INPUT#1,REC$
- 260 GOSUB 770 ' check for enough vertical space
- 270 GOSUB 500 ' check for print control and print line if required
- 280 GOTO 240
- 290 CLOSE 1
- 300 CLS : KEY ON : LPRINT CHR$(12) ' Final page skip
- 310 END
- 320 REM $S3
- 330 REM==================================================================
- 340 REM====================== SUBROUTINE ==============================
- 350 REM========= Convert lower case letters to upper case =============
- 360 REM==================================================================
- 370 REM $s1 '
- 380 FOR I = 1 TO LEN(AAA$)
- 390 AA$ = MID$(AAA$,I,1)
- 400 IF ASC(AA$)=>97 AND ASC(AA$)<= 122 THEN AA$ = CHR$(ASC(AA$)-32)
- 410 MID$(AAA$,I,1) = AA$
- 420 NEXT I
- 430 FOR I = 1 TO 8-LEN(AAA$)
- 440 AAA$ = AAA$+" "
- 450 NEXT I
- 460 RETURN
- 470 REM $pa
- 480 REM==================================================================
- 490 REM========================= SUBROUTINE ===========================
- 500 REM============= Check for special printer control rem's ===========
- 510 REM==================================================================
- 520 REM $s1 '
- 530 FOR I = 1 TO 8
- 540 AA$ = MID$(REC$,I,3)
- 550 IF AA$="REM" THEN GOTO 580
- 560 NEXT I
- 570 GOTO 730
- 580 AA$ = MID$(REC$,I+4,1)
- 590 PC$= CHR$(27)+CHR$(69) ' Turn ON emphasized for rem stmt
- 600 IF AA$ <> "$" THEN 730 ' Check for REM $ format
- 602 AA$=MID$(REC$,I+5,1) ' If so, pick up next character
- 610 IF AA$ <> "S" AND AA$ <> "s" THEN 700 'Check for Line Space cmd
- 620 AA = VAL(MID$(REC$,I+6,1))
- 630 IF AA<1 OR AA>9 THEN RETURN '
- 640 FOR I = 1 TO AA
- 650 LPRINT " "
- 660 LC = LC-1
- 670 NEXT I
- 680 PC$= CHR$(27)+CHR$(70) ' Turn OFF emphasized font
- 690 RETURN
- 700 IF AA$<>"p" AND AA$<>"P" THEN 730 ' Check for page eject
- 710 GOSUB 840 ' Issue page eject
- 720 RETURN '
- 730 LPRINT PC$;REC$
- 740 PC$=CHR$(27)+CHR$(70)
- 750 RETURN
- 760 REM $S3
- 770 REM==================================================================
- 780 REM========================= SUBROUTINE ===========================
- 790 REM================ Check for vertical spacing ===================
- 800 REM==================================================================
- 810 REM $s1 '
- 820 IF LC > 0 THEN 880
- 830 IF LC < 0 THEN 850
- 840 LPRINT CHR$(12) ' skip to top of page
- 850 LC = 55
- 860 LPRINT CHR$(14)+CHR$(27)+CHR$(71)+DATE$+STRING$(4,32)+"PGM: "+AAA$+STRING$(4,32)+PTIME$
- 870 LPRINT CHR$(27)+CHR$(72)+CHR$(27)+CHR$(20)+" ":LPRINT" " : LPRINT " "
- 880 LC = LC-1
- 890 RETURN
- 900 REM $pa '
- 910 REM ===============================================================
- 920 REM == Error trapping routine, intended primarily to handle =====
- 930 REM == device timeout on the printer when too much page =====
- 940 REM == ejecting is done. =====
- 950 REM ===============================================================
- 960 REM $s1 '
- 970 IF ERR <> 24 THEN 1030 '
- 980 TIMEOUT.COUNT=TIMEOUT.COUNT+1 ' Incr number of timeouts
- 990 IF TIMEOUT.COUNT<10 THEN RESUME NEXT ' give it 10
- 1000 CLS : BEEP : BEEP '
- 1010 PRINT "Program aborted due to too many device timeouts"
- 1020 END '
- 1030 CLS : BEEP :BEEP '
- 1040 PRINT "Program aborted due to error code = ";ERR
- 1050 END '
- '
- 1040 PRINT "Program aborted due to error code = ";ERR
- 1050 END