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