1000 ! MNUPRT - Menu print program 1010 ! 1020 ! Program to print formatted screen output of SHELL menu. 1030 ! 1040 ! 5/12/86 JS 5/22/86 MM 1050 ! 1060 ! The following subroutines are needed by this program: 1070 ! NOECHO.SBR 1080 ! DAYTIM.SBR 1090 ! CMDLIN.SBR 1100 ! SPOOL.SBR 1110 ! 1120 ! Use the following command to start this program: 1130 ! RUN MNUPRT filename (filename = menu name without .MNU extension). 1140 ! 1150 MAP1 WORK 1160 MAP2 STRDTE,S,8 1170 MAP2 STRTIM,S,8 1180 MAP2 INLINE,S,70 1190 MAP2 PLINE,S,78 1200 MAP2 FILNAM,S,10 1210 MAP2 PRTNAM,S,10 1220 MAP2 DASH,S,77 1230 MAP2 SPACES,S,78,SPACE(78) 1240 MAP2 TITLE,S,70 1250 MAP2 HEADER(6),S,25 1260 MAP2 ITEM(6,6),S,22 1270 START: 1280 XCALL NOECHO 1290 XCALL DAYTIM,STRDTE,STRTIM 1300 XCALL CMDLIN,INLINE 1310 FOR NUM=1 TO 10 : DASH = DASH+"--------" : NEXT 1320 ! 1330 PRTNAM = INLINE[12,-1]+".PRT" 1340 OPEN #14,PRTNAM,OUTPUT 1350 ! 1360 FILNAM = INLINE[12,-1]+".MNU" 1370 OPEN #911,FILNAM,INPUT 1380 LEV=1 : CNT=1 1390 ! 1400 GET'LINE: 1410 INPUT LINE #911,INLINE 1420 IF EOF(911)<>0 THEN GOTO ANOTHER 1430 STRIP: 1440 CHAR = ASC(INLINE[1,1]) 1450 IF CHAR=9 OR CHAR=32 THEN INLINE = INLINE[2,-1] : GOTO STRIP 1460 IF CHAR=LEV+47 THEN GOTO PRINT'IT 1470 IF CNT>6 THEN GOTO EXTRA'1 1480 IF CHAR<>LEV+48 THEN GOTO ITEM 1490 PRINT INLINE 1500 HEADER(CNT) = INLINE[3,-1] : CNT = CNT+1 : ITM=1 1510 ITEM: 1520 IF ITM>6 OR CNT<2 THEN GOTO EXTRA'2 1530 IF CHAR<>LEV+49 THEN GOTO GET'LINE 1540 PRINT INLINE 1550 ITEM(ITM,CNT-1) = INLINE[3,-1] : ITM = ITM+1 1560 GOTO GET'LINE 1570 EXTRA'1: 1580 IF CHAR<>LEV+48 THEN GOTO ITEM 1590 PRINT #14,"EXTRA LEVEL ";STR(LEV);": ";INLINE 1600 GOTO GET'LINE 1610 EXTRA'2: 1620 IF CHAR<>LEV+49 THEN GOTO GET'LINE 1630 PRINT #14,"EXTRA LEVEL ";STR(LEV+1);": ";INLINE 1640 GOTO GET'LINE 1650 ! 1660 PRINT'IT: 1670 PRINT INLINE 1680 IF CNT=1 THEN GOTO ADVANCE 1690 PAGE = PAGE+1 1700 PRINT #14,CHR(12); 1710 PLINE[1,5] = "Date:" 1720 PLINE[7,14] = STRDTE 1730 PLINE[24,56] = "TekTone Sound & Signal Mfg.,Inc." 1740 PLINE[70,74] = "Page:" 1750 PLINE[76,78] = PAGE USING "##" 1760 CALL PRINT : PRINT #14 1770 PLINE[15,37] = "MENU PRINTOUT OF FILE:" 1780 PLINE[39,48] = FILNAM 1790 PLINE[55,60] = "LEVEL:" 1800 PLINE[62,63] = LEVEL USING "##" 1810 CALL PRINT : PRINT #14 1820 PRINT #14,DASH 1830 NUM=LEN(TITLE) : POS=40-(NUM/2) 1840 PLINE[POS,POS+NUM] = TITLE 1850 CALL PRINT 1860 ! 1870 PLINE[1,9] = STRDTE 1880 PLINE[70,77] = STRTIM 1890 CALL PRINT 1900 PRINT #14,DASH 1910 ! 1920 FOR CNT=1 TO 2 1930 FOR POS=1 TO 3 1940 PLINE[COL,COL] = "|" 1950 COL = (POS-1)*26 1960 ITM = POS+((CNT-1)*3) 1970 XCALL STRIP,HEADER(POS) 1980 NUM = (25-LEN(HEADER(POS)))/2 USING "##" 1990 HEADER(ITM) = SPACE(NUM)+HEADER(ITM) 2000 PLINE[COL+1,COL+24] = HEADER(ITM) 2010 NEXT : CALL PRINT 2020 PRINT #14,DASH 2030 FOR NUM=1 TO 6 2040 FOR POS=1 TO 3 2050 COL = (POS-1)*26 2060 ITM = POS+((CNT-1)*3) 2070 PLINE[COL,COL] = "|" 2080 SEL = NUM+ITM*10 2090 PLINE[COL+1,COL+2] = SEL USING "##" 2100 PLINE[COL+4,COL+25] = ITEM(NUM,ITM) 2110 NEXT POS 2120 CALL PRINT 2130 NEXT NUM 2140 PRINT #14,DASH 2150 NEXT CNT 2160 PRINT #14 2170 PRINT #14,"Enter menu selection (type ? for help) 10" 2180 PRINT #14,DASH 2190 PRINT #14 2200 ! 2210 ADVANCE: 2220 TITLE = INLINE[3,-1] 2230 LEVEL=LEV 2240 FOR NUM=1 TO 6 : HEADER(NUM) = SPACES 2250 FOR POS=1 TO 6 : ITEM(NUM,POS) = SPACES 2260 NEXT POS 2270 NEXT NUM 2280 CNT=1 : ITM=1 2290 GOTO GET'LINE 2300 ! 2310 ANOTHER: 2320 CLOSE #911 2330 OPEN #911,FILNAM,INPUT 2340 LEV = LEV+2 2350 IF LEV<8 THEN GOTO STRIP 2360 ! 2370 FINISH: 2380 PRINT #14,CHR(12); 2390 CLOSE #14 2400 CLOSE #911 2410 ! XCALL SPOOL,PRTNAM,"PRINT5" 2420 ! XCALL SPOOL,PRTNAM,"PRNT2" 2430 END 2440 ! 2450 PRINT: 2460 PRINT #14,PLINE 2470 PLINE = SPACES 2480 RETURN 2490