PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #66)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “GINACO PROGRAMS”

This is a very popular group of utilities and games. Included are two
word processors, a printer control program, label and notepad routines,
and many other handy tools for getting those little detail jobs done
while we're at the computer.  All of the programs can be accessed from
the main menu.

Everything here is written in BASIC, which really doesn't enhance its
speed, but it does provide fertile ground for the burgeoning BASIC
programmer to analyze and blossom.

System Requirements:  Some programs require color graphics; BASIC.

How to Start:  For instructions on running BASIC programs, please refer
to the GETTING STARTED section in this catalog. To read DOC files simply
enter TYPE filename.ext and press <ENTER>.

File Descriptions:

ALPHAHEX BAS  Alpha to hex reference display
BLUEBERY DOC  Documentation for BLUEBERY.BAS
BLUEBERY BAS  Label creator, filer, record system - like LABELPRO.BAS
BOXINPUT BAS  Disables all input keys except those needed by program
BOXINBOX BAS  Displays border boxes on CRT - can be used as subrouti ne
BLUEMENU BAS  Menu for running programs on this disk
BLUEBRY2 DOC  Documentation for BLUEBRY2.BAS
BUSCHECK BAS  Checking or cash account reconciliation aid
CHEKFORM BAS  Check ledger & statement reconciliation form sheet
CALULATE BAS  Simple calculator
CHR$PRNT BAS  Prints you printers character set
CIRCLE   GRA  Hypnotic circle
COLORSEE CLR  Displays full-color range
D&CFORM  BAS  Debit/credit worksheet
COMPOUND BAS  Annual compounded value of a sum at end of each year
EASYWORD BAS  Simple text editor with no file storage
EASYRITE BAS  Word processor
ESCKEY   BAS  Converts ESC key to Continue key
EPSONSET BAS  Epson printer control and tester
HEXPRINT BAS  Hex/decimal display printout
HEADCLN  BAS  Diskette drive head cleaning utility
GASFORM  BAS  Mileage and trip log form
FILEDATE BAS  Date and time stamp on PC files
HEXSAY   BAS  Converts hex to decimal
IBMLABEL BAS  Label print routine
LABLFILE BAS  Label creator, notebook, record keeper, file system
KEYSET   BAS  BASIC function key settings
MENUPRNT BAS  Graphics print routine
LPT12SET BAS  Toggles between LPT1 and LPT2 if you have 2 printers
LISTSKIP 17P  17.5 pitch program listing
LISTSKIP 10P  10 pitch program listing
ZIPCLEAR BAS  Clears designated screen area
YOURMENU BAS  Menu subroutine
YESORNO  BAS  Yes/no response subroutine
WEIGHTFM BAS  Daily health record form
TIMESHOW BAS  Display, retains elapsed time
TESTWRIT DOC  Documentation for TESTWRIT.BAS
TASKLIST BAS  Daily phone call and to-do list
STARTUP  CLR  Example of menu display
STARTUP  BAS  Example of menu display
SIXBOXES BAS  Program example - 6 nested boxes
SHOWBOX  BAS  BASIC subroutine - border
PC-COLOR BAS  Color monitor test
NICELIST BAS  Print an ASCII file with page skip and header
SAVINGS  BAS  Display & print savings or checking account information
SAMPLE   TWD  Data for TESTWRIT.BAS
RANDSEED BAS  Random number generator
PCADD    GRA  Graphics print routine
QUICKBOX CLR  Part of showbox
PROGHEAD BAS  BASIC program heading
PRNTCALL BAS  Subroutine for printer control
PEEKPRNT BAS  Alpha to hex reference display
GENLEGER BAS  General Ledger program
DISKNAME      Used by BLUEMENU.BAS
README        Intro to GINACO Utilities
GLEGER   DAT  Test data for general ledger program
TESTWRIT BAS  Test making program for teachers

ALPHAHEX.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** ALPHANUMERIC HEX$ WORKSHEET PLAN ************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║             ALPHANUMERIC TO HEXADECIMAL WORKSHEET UTILITY               ║
20 '║                                                                         ║
22 '║    This program will printout, on the screen in color or monochrome, a  ║
24 '║ full easy-reference worksheet showing the hexadecimal conversions from  ║
26 '║ zero (0) to lowercase "z".  This is useful when using a debug or other  ║
28 '║ program in which you are inspecting or changing hexadecimal values on   ║
30 '║ disk sectors.  You can convert from ASCII directly to HEX.              ║
32 '║                                                                         ║
34 '║    The display is printed out in contrasting color columns. This is     ║
36 '║ controlled by line 670-90. If you wish to eliminate the color and use   ║
38 '║ BLACK/WHITE MONOCHROME, SIMPLY REM line 690  and remove the REM from    ║
40 '║ line 670.    The print out will be in emphasized print and the chart    ║
42 '║ is suitable for wall display or notebook use.                           ║
44 '║                                                                         ║
46 '║    This program may be used in whole or in part without license or      ║
48 '║ attribution.  (c)   G I N A C O  --  1983           Ver 5.1/160         ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ****** To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 *******
60 KEY OFF
100 CLS
110  SCREEN 0,0,0
120   WIDTH 80
130    CLEAR
140     FOR I! = 1 TO 10
150        KEY I!,""
160       NEXT
170 CLS
180  CLEAR 100
190   DIM A$(200)
200    CLEANUP$ = CHR$(27) + CHR$(64)
210     DARK$ = CHR$(27) + CHR$(69)
220      LOCATE 12,10
230       PRINT "THIS WILL PRINT OUT ALPHA/HEX CONVERSIONS FROM 0 TO LOWER CASE Z"
240        X! = 48
250         Y! = 126
260          FOR I! = X! TO Y!
270             A$(I!) = HEX$(I!)
280            NEXT
290 PRINT TAB( 4)"CHR"; TAB( 10)"═>"; TAB( 14)"HEX"; TAB( 24)"CHR"; TAB( 30)"═>"; TAB( 34)"HEX"; TAB( 44)"CHR"; TAB( 50)"═>"; TAB( 54)"HEX"; TAB( 64)"CHR"; TAB( 70)"═>"; TAB( 74)"HEX"
300 PRINT TAB( 4)"═════"; TAB( 14)"════"; TAB( 24)"═════"; TAB( 34)"════"; TAB( 44)"═════"; TAB( 54)"════"; TAB( 64)"═════"; TAB( 74)"════"
310  I! = X!
320   GOSUB 750
330    I! = X! + 4
340     GOSUB 750
350      I! = X! + 8
360       GOSUB 750
370        I! = X! + 12
380         GOSUB 750
390          I! = X! + 16
400           GOSUB 750
410            I! = X! + 20
420             GOSUB 750
430              I! = X! + 24
440               GOSUB 750
450                I! = X! + 28
460 GOSUB 750
470  I! = X! + 32
480   GOSUB 750
490    I! = X! + 36
500     GOSUB 750
510      I! = X! + 40
520       GOSUB 750
530        I! = X! + 44
540         GOSUB 750
550          I! = X! + 48
560           GOSUB 750
570            I! = X! + 52
580             GOSUB 750
590              I! = X! + 56
600               GOSUB 750
610                I! = X! + 60
620                 GOSUB 750
630                  I! = X! + 64
640                   GOSUB 750
650                    I! = X! + 60
660                     GOSUB 750
670                      I! = X! + 64
680                       GOSUB 750
690                        I! = X! + 68
700                         GOSUB 750
710                          I! = X! + 72
720                           GOSUB 750
730                            GOTO 960
740 REM ************** NEXT IS A MONOCHROME PRINTOUT LINE  ********************
750 REM PRINT TAB(6)CHR$(I);TAB(15)A$(I);TAB(26)CHR$(I+1);TAB(35)A$(I+1);TAB(46)CHR$(I+2);TAB(55)A$(I+2);TAB(66)CHR$(I+3);TAB(75)A$(I+3)
760 REM ************** NEXT IS THE COLOR PRINTOUT LINE ************************
770 COLOR 3,0
780  PRINT TAB( 6) CHR$(I!);
790   COLOR 6
800    PRINT TAB( 15)A$(I!);
810     COLOR 3
820      PRINT TAB( 26) CHR$(I! + 1);
830       COLOR 6
840        PRINT TAB( 35)A$(I! + 1);
850         COLOR 3
860          PRINT TAB( 46) CHR$(I! + 2);
870           COLOR 6
880            PRINT TAB( 55)A$(I! + 2);
890             COLOR 3
900              PRINT TAB( 66) CHR$(I! + 3);
910               COLOR 6
920                PRINT TAB( 75)A$(I! + 3)
930 COLOR 7,0
940  RETURN
950 END
960 COLOR 7,0
970  LOCATE 25,3
980   PRINT "TO RERUN  <ENTER 1>    TO PRINT  <ENTER 2>     TO LEAVE  PROGRAM   <ENTER 3>"
990    GOSUB 1010
1000     ON VAL(GO$) GOTO 60,1040,1510
1010 GO$ = INKEY$
1020  IF GO$ = "" THEN 1010
1030 IF (GO$ < "1" OR GO$ > "3") THEN 960 ELSE RETURN
1040 LPRINT CLEANUP$;DARK$;
1050  LPRINT "THIS WILL PRINT OUT ALPHA/HEX CONVERSIONS FROM 0 TO LOWER CASE Z"
1060 LPRINT TAB( 4)"CHR"; TAB( 10)"->"; TAB( 14)"HEX"; TAB( 24)"CHR"; TAB( 30)"->"; TAB( 34)"HEX"; TAB( 44)"CHR"; TAB( 50)"->"; TAB( 54)"HEX"; TAB( 64)"CHR"; TAB( 70)"->"; TAB( 74)"HEX"
1070 LPRINT TAB( 4)"====="; TAB( 14)"===="; TAB( 24)"====="; TAB( 34)"===="; TAB( 44)"====="; TAB( 54)"===="; TAB( 64)"====="; TAB( 74)"===="
1080  I! = X!
1090   GOSUB 1480
1100    I! = X! + 4
1110     GOSUB 1480
1120      I! = X! + 8
1130       GOSUB 1480
1140        I! = X! + 12
1150         GOSUB 1480
1160          I! = X! + 16
1170           GOSUB 1480
1180            I! = X! + 20
1190             GOSUB 1480
1200              I! = X! + 24
1210               GOSUB 1480
1220 I! = X! + 28
1230  GOSUB 1480
1240   I! = X! + 32
1250    GOSUB 1480
1260     I! = X! + 36
1270      GOSUB 1480
1280       I! = X! + 40
1290        GOSUB 1480
1300         I! = X! + 44
1310          GOSUB 1480
1320           I! = X! + 48
1330            GOSUB 1480
1340             I! = X! + 52
1350              GOSUB 1480
1360               I! = X! + 56
1370                GOSUB 1480
1380                 I! = X! + 60
1390                  GOSUB 1480
1400                   I! = X! + 64
1410                    GOSUB 1480
1420                     I! = X! + 68
1430                      GOSUB 1480
1440                       I! = X! + 72
1450                        GOSUB 1480
1460                         LPRINT CLEANUP$;
1470                          GOTO 960
1480 LPRINT TAB( 6) CHR$(I!); TAB( 15)A$(I!); TAB( 26) CHR$(I! + 1); TAB( 35)A$(I! + 1); TAB( 46) CHR$(I! + 2); TAB( 55)A$(I! + 2); TAB( 66) CHR$(I! + 3); TAB( 75)A$(I! + 3)
1490  RETURN
1500 END
1510 CLS
1520 END
65000 REM **********************  SAVE ROUTINE  ******************************
65100 SAVE "B:ALPHAHEX.BAS"

BLUEBERY.BAS

10 CLS
20 KEY OFF
30 SCREEN 0,0,0
40 WIDTH 80
50 CLEAR
60 FOR I = 1 TO 10
70   KEY I,""
80 NEXT
90 DEF SEG
100 POKE 91,25
110 POKE 92,25
120 FOR I! = 2 TO 23
130   LOCATE I,1
140   PRINT CHR$( 186 )
150   LOCATE I,79
160   PRINT CHR$( 186 )
170 NEXT
180 KEY 6, CHR$( 64 )
190 KEY 10, CHR$( 35 )
200 DIM MM$( 30 )
210 LOCATE 1,1,0
220 PRINT CHR$( 201 ); STRING$( 77,205 ); CHR$( 187 );
230 LOCATE 22,1,0
240 PRINT CHR$( 204 ); STRING$( 77,205 ); CHR$( 185 );
250 LOCATE 24,1,0
260 PRINT CHR$( 200 ); STRING$( 77,205 ); CHR$( 188 );
270 FOR I = 1 TO 20
280   LOCATE I,9
290   PRINT MM$( I )
300   MM$( 3 ) = "*** FULLY-FORMATED FILE-MANAMEMENT & LABEL PROGRAM FOR IBM PC ***"
310   MM$( 4 ) = "                                                               "
320   MM$( 5 ) = "   THIS IS A BONUS PROGRAM FOR BLUEBERRY PIE A LA MODE BUYERS."
330   MM$( 6 ) = " It is a combination LABEL, DATA FILE, WHAT HAVE YOU record. and"
340   MM$( 7 ) = " filing system.  It will print out 4 line labels on the EPSON or"
350   MM$( 8 ) = " GEMINI printer.  The 5th and 6th lines are held in file and are"
360   MM$( 9 ) = " only printed out in the final summary report.  This program has"
370   MM$( 10 ) = " been set up as a limited data management file for demonstration"
380   MM$( 11 ) = " purposes.  It is on this disk also as LABELPRO.BAS (in compiled"
390   MM$( 12 ) = " form) with a three line label set-up and  single line printout."
400   MM$( 13 ) = " BLUEBERY.BAS has been expanded so any basic programmers can see"
410   MM$( 14 ) = " the ease with which this program can be adapted for custom use."
420   MM$( 15 ) = " The program is completely INKEY$ format-protected and is multi-"
430   MM$( 16 ) = " MENU driven. When promted to <PRESS> do not use <ENTER> key. On"
440   MM$( 17 ) = " <ENTER> prompt, use the <ENTER> key.   See BLUEBERY.DOC, called"
450   MM$( 18 ) = " from DOS by <TYPE> command. The program may be used in whole or"
460   MM$( 19 ) = " part by BLUEBERY purchasers without license or attribution."
470   MM$( 20 ) = "   (c) G I N A C O --- 1983 (Bruno Larsen)     Ver 5.2/320/160"
480 NEXT
490 REM    ******* ADDITIONAL DOCUMENTATION UNDER BLUEBERY.DOC IN DOS ******
500 LOCATE 23,10,0
510 PRINT "<PRESS> F6 TO CONTINUE.              <PRESS> F10 FOR BLUEMENU";
520 IN$ = INKEY$
530 IF IN$ = "" THEN 520
540 IF IN$ = CHR$( 64 ) THEN 580
550 IF IN$ = CHR$( 35 ) THEN 570
560 GOTO 520
570 RUN "BLUEMENU.BAS"
580 CLS
590 SCREEN 0,0,0
600 WIDTH 80
610 CLEAR
620 FOR I = 1 TO 10
630   KEY I,""
640 NEXT
650 SCREEN 0,1,0,0
660 KEY OFF
670 DEF SEG
680 POKE 91,25
690 POKE 92,25
700 LOCATE 1,1,0,12,13
710 A$ = ""
720 B$ = ""
730 C$ = ""
740 D$ = ""
750 E$ = ""
760 F$ = ""
770 DEFINT A-Z
780 I = 0
790 I = 0
800 P = 0
810 P = 0
820 P = 0
830 I = 0
840 FILE$ = ""
850 DIM A$( 200 ),B$( 200 ),C$( 200 ),D$( 200 ),E$( 200 ),F$( 200 ),INPTR$( 50 ),FIN$( 50 ),AA$( 200 ),FILE$( 200 )
860 FINLEN = 0
870 P = 0
880 IN$ = ""
890 ON ERROR GOTO 10540
900 CLS
910 KEY OFF
920 BB$ = TIME$
930 GOSUB 1630
940 GOTO 1180
950 GOSUB 2020
960 DEF SEG = &H40
970 A = PEEK( &H8 )
980 B = PEEK( &H9 )
990 C = PEEK( &HA )
1000 D = PEEK( &HB )
1010 POKE &H8,C
1020 POKE &H9,D
1030 POKE &HA,A
1040 POKE &HB,B
1050 IF PEEK( &H9 ) = 3 THEN LPT$ = "1" ELSE LPT$ = "2"
1060 LOCATE 7,30,0
1070 PRINT "Primary Printer = LPT";LPT$ + ":";
1080 LOCATE 9,24
1090 PRINT "To continue with program <PRESS> 1";
1100 LOCATE 11,24,0
1110 PRINT "Reset LPT1 OR LPT2       <PRESS> 2";" ";
1120 GOSUB 2280
1130 LOW = 49
1140 HIGH = 50
1150 FINLEN = 1
1160 GOSUB 2680
1170 ON VAL( INPTR$ ) GOTO 2370,950
1180 CLS
1190 GOSUB 1330
1200 GOSUB 2340
1210 GOSUB 1570
1220 GOTO 4920
1230 REM =====  EMERGENCY REPAIR =====
1240 CLS
1250 GOSUB 1330
1260 GOSUB 2340
1270 GOTO 2370
1280 REM =====  PROGRAM FOR BOX PRINTOUT =======
1290 CLS
1300 GOSUB 1320
1310 GOTO 4530
1320 REM =====  PRINT BOX 1 =====
1330 COLOR 7,0
1340 WW = 76
1350 TL = 1
1360 LL = 24
1370 LC = 2
1380 GOSUB 1400
1390 RETURN
1400 REM  ===== ACTUAL PRINT ROUTINE =====
1410 LOCATE TL,LC,0
1420 PRINT TLC$; STRING$( WW,HL$ );TRC$;
1430 FOR I = ( TL + 1 ) TO ( LL - 1 )
1440   LOCATE I,LC,0
1450   PRINT VL$;
1460   LOCATE I, ( LC + WW + 1 ),0
1470   PRINT VL$;
1480 NEXT
1490 LOCATE LL,LC,0
1500 PRINT BLC$; STRING$( WW,HL$ );BRC$;
1510 RETURN
1520 REM ===== UPPER LINE IN DIRECTORY BOX ====
1530 LOCATE 18,2,0
1540 PRINT "╔"; STRING$( 76,"═" );"╗";
1550 RETURN
1560 REM =====  PRINT BOX 3 =====
1570 WW = 23
1580 TL = 20
1590 LL = 22
1600 LC = 50
1610 GOSUB 1400
1620 RETURN
1630 REM =====  INITIALIZATION ROUTINE =====
1640 TLC$ = CHR$( 201 )
1650 TRC$ = CHR$( 187 )
1660 HL$ = CHR$( 205 )
1670 BLC$ = CHR$( 200 )
1680 BRC$ = CHR$( 188 )
1690 VL$ = CHR$( 186 )
1700 PR$ = "\                                 \     \                     \"
1710 M1ST$ = "A ══" + CHR$( 16 ) + " Add  Records   C ══" + CHR$( 16 ) + " Choose Printer   D ══" + CHR$( 16 ) + " Disk Directories"
1720 M2ND$ = "E ══" + CHR$( 16 ) + " Edit Records   L ══" + CHR$( 16 ) + " Load Disk File   P ══" + CHR$( 16 ) + " Print Label Menu"
1730 M3RD$ = "Q ══" + CHR$( 16 ) + " Quit Program   R ══" + CHR$( 16 ) + " Review Records   S ══" + CHR$( 16 ) + " Save (Disk File)"
1740 :REM =====  ZIPCLEAR INPUT ROUTINES =====
1750 DIM A( 22 )
1760 FOR I = 0 TO 21
1770   READ A( I )
1780 NEXT
1790 DATA&h8B55
1800 DATA&hB8EC
1810 DATA&H0600
1820 DATA&H07B7
1830 DATA&H768B
1840 DATA&H8A0C
1850 DATA&H8B2C
1860 DATA&HA76
1870 DATA&HC8A
1880 DATA&H768B
1890 DATA&H8A08
1900 DATA&H8B34
1910 DATA&H676
1920 DATA&H148A
1930 DATA&HCDFE
1940 DATA&HC9FE
1950 DATA&HCEFE
1960 DATA&HCAFE
1970 DATA&H10CD
1980 DATA&HCA5D
1990 DATA&H8
2000 DATA&H0
2010 RETURN
2020 REM ==== ACTUAL ZIP ROUTINE =====
2030 DEF SEG
2040 SUBRT = VARPTR( A( 0 ) )
2050 CALL SUBRT( R1,C1,R2,C2 )
2060 RETURN
2070 REM =====  CLEAR TOP BOX FORM =====
2080 R1 = 2
2090 C1 = 3
2100 R2 = 17
2110 C2 = 78
2120 GOSUB 2020
2130 RETURN
2140 REM =====  CLEAR UPPER 1/2 SCREEN FOR DIRECTORY =====
2150 R1 = 1
2160 C1 = 1
2170 R2 = 17
2180 C2 = 80
2190 GOSUB 2020
2200 RETURN
2210 REM =====  CLEAR BOTTOM BOX FORM =====
2220 R1 = 19
2230 C1 = 3
2240 R2 = 23
2250 C2 = 49
2260 GOSUB 2020
2270 RETURN
2280 R1 = 19
2290 C1 = 3
2300 R2 = 23
2310 C2 = 78
2320 GOSUB 2020
2330 RETURN
2340 LOCATE 18,2,0
2350 PRINT "╠"; STRING$( 76,"═" );"╣";
2360 RETURN
2370 REM =====  QUERY CLEAR AND RETURN ROUTINE =====
2380 GOSUB 12760
2390 GOSUB 2080
2400 GOSUB 1320
2410 GOSUB 13630
2420 ON MS GOTO 11170,11170,950,950,13060,13060,6260,6260,4300,4300,7750,7750,10340,10340,4550,4550,4070,4070
2430 REM =====  FULL BOX FORM =====
2440 R1 = 2
2450 C1 = 3
2460 R2 = 17
2470 C2 = 78
2480 GOSUB 2020
2490 RETURN
2500 REM =====  INSERT AND BOTTOM BOXES =====
2510 LOCATE 21,52,0
2520 PRINT SPC( 22 );
2530 RETURN
2540 LOCATE 21,10,0
2550 PRINT SPC( 39 );
2560 RETURN
2570 REM =====  "SELECT" SUBROUTINE  =====
2580 LOCATE 21,51,0
2590 PRINT SPC( 22 );
2600 LOCATE 21,76
2610 LOCATE 21,53
2620 PRINT "SELECT               ║    ║"
2630 RETURN
2640 LOCATE 21,52,0
2650 PRINT SPC( 21 );
2660 LOCATE 21,76
2670 RETURN
2680 REM =====  INKEY$ ROUTINE FOR NUMBER RESPONSES =====
2690 FIN$ = ""
2700 IF INKEY$ > < "" THEN 2700
2710 INPTR$ = INKEY$
2720 IF INPTR$ = "" THEN 2710
2730 IF INPTR$ = CHR$( 13 ) THEN RETURN
2740 IF ( ASC( INPTR$ ) < LOW OR ASC( INPTR$ ) > HIGH ) THEN SOUND 400,4 : GOTO 2710
2750 FIN$ = FIN$ + INPTR$
2760 PRINT INPTR$;
2770 IF LEN( FIN$ ) = FINLEN THEN RETURN
2780 GOTO 2710
2790 CLS
2800 LOCATE ,,,0,7
2810 POKE 91,1
2820 POKE 92,25
2830 END
2840 IN$ = INKEY$
2850 IF IN$ = "" THEN 2840
2860 YN = 0
2870 IF ( IN$ = "Y" OR IN$ = "y" ) THEN YN = 1 : RETURN
2880 IF ( IN$ = "N" OR IN$ = "n" ) THEN YN = 2 : RETURN
2890 SOUND 400,4
2900 GOTO 2840
2910 IF INKEY$ > < "" GOTO 2910
2920 IN$ = INKEY$
2930 IF IN$ = "" THEN 2920
2940 IF IN$ < > CHR$( 13 ) THEN SOUND 400,4 : GOTO 2920
2950 RETURN
2960 REM =====  INPUT ROUTINE FOR LETTER RESPONSES =====
2970 FIN$ = ""
2980 IF FINLEN = 0 THEN FINLEN = 255
2990 IF INKEY$ > < "" THEN 2990
3000 INPTR$ = INKEY$
3010 IF INPTR$ = "" THEN 3000
3020 IF INPTR$ = CHR$( 13 ) THEN RETURN
3030 IF INPTR$ < > CHR$( 8 ) THEN 3080
3040 IF FIN$ = "" THEN SOUND 600,4 : GOTO 3000
3050 PRINT CHR$( 29 );"■"; CHR$( 29 );
3060 FIN$ = LEFT$( ( FIN$ ), LEN( FIN$ ) - 1 )
3070 GOTO 3000
3080 IF LEN( FIN$ ) = FINLEN THEN SOUND 600,4 : GOTO 3000
3090 IF ASC( INPTR$ ) < 31 OR ASC( INPTR$ ) > 125 THEN SOUND 400,4 : GOTO 3000
3100 PRINT INPTR$;
3110 FIN$ = FIN$ + INPTR$
3120 GOTO 3000
3130 CLS
3140 LOCATE ,,,0,7
3150 POKE 91,1
3160 POKE 92,25
3170 END
3180 REM =====  INITIAL FILE OR SINGLE LABEL INPUT PROGRAM  =====
3190 GOSUB 2080
3200 GOSUB 2210
3210 LOCATE 21,30,0
3220 PRINT "Make DATA Entries ";
3230 LOCATE 17,20
3240 PRINT "Do not use QUOTATION MARKS when entering data!";
3250 GOSUB 5880
3260 P = 200
3270 FOR I = 1 TO 200
3280   GOSUB 6130
3290   GOSUB 2510
3300   LOCATE 21,52,0
3310   PRINT "Record #:";
3320   LOCATE 21,64,0
3330   PRINT I;
3340   LOCATE 4,30,1,0,7
3350   FINLEN = 41
3360   GOSUB 2960
3370   A$( I ) = FIN$
3380   LOCATE 4,30,0
3390   PRINT A$( I );
3400   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P = I
3410   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN 3990
3420   LOCATE 6,30,1
3430   FINLEN = 41
3440   GOSUB 2960
3450   B$( I ) = FIN$
3460   LOCATE 6,30,0
3470   PRINT B$( I );
3480   LOCATE 8,30,1
3490   FINLEN = 41
3500   GOSUB 2960
3510   C$( I ) = FIN$
3520   LOCATE 8,30,0
3530   PRINT C$( I )
3540   LOCATE 10,30,1
3550   FINLEN = 41
3560   GOSUB 2960
3570   D$( I ) = FIN$
3580   LOCATE 10,30,0
3590   PRINT D$( I );
3600   LOCATE 12,30,1
3610   FINLEN = 41
3620   GOSUB 2960
3630   E$( I ) = FIN$
3640   LOCATE 12,30,0
3650   PRINT E$( I );
3660   LOCATE 14,30,1
3670   FINLEN = 41
3680   GOSUB 2960
3690   F$( I ) = FIN$
3700   LOCATE 14,30,0
3710   PRINT F$( I );
3720   GOSUB 2210
3730   LOCATE 21,20,0
3740   PRINT "Is this correct <Y/N> ";
3750   GOSUB 2840
3760   IF YN = 1 THEN 3920
3770   IF YN = 2 THEN 3780
3780   GOSUB 2210
3790   GOSUB 2510
3800   GOSUB 2540
3810   LOCATE 21,18
3820   PRINT "Re-enter what line? ";
3830   LOCATE 21,55
3840   PRINT " Line # ";
3850   FINLEN = 1
3860   LOW = 49
3870   HIGH = 54
3880   GOSUB 2680
3890   LOCATE 21,64
3900   PRINT VAL( INPTR$ );
3910   ON VAL( INPTR$ ) GOTO 5250,5280,5310,5340,5370,5400
3920   GOSUB 2210
3930   LOCATE 21,18
3940   PRINT "ENTER ";
3950   PRINT CHR$( 34 )"END" CHR$( 34 );
3960   PRINT " To CLOSE entries ";
3970 NEXT
3990 GOSUB 2210
4000 GOSUB 2080
4010 LOCATE 21,20
4020 PRINT "SAVE to DISK <Y/N> ";
4030 GOSUB 2840
4040 IF YN = 1 THEN 4060
4050 IF YN = 2 THEN 4530
4060 REM =====  DATA SAVE ROUTINE TO DISK  =====
4070 GOSUB 2280
4080 GOSUB 1570
4090 LOCATE 21,27,0
4100 PRINT "What is FILE name? ";
4110 GOSUB 2640
4120 FINLEN = 14
4130 LOCATE 21,52
4140 PRINT "DRIVE? ■:■■■■■■■■.■■■";
4150 LOCATE 21,59,0
4160 GOSUB 2960
4170 FILESPEC$ = FIN$
4180 GOSUB 2540
4190 OPEN "O",1,FILESPEC$
4200 WRITE #1,P
4210 FOR I = 1 TO P
4220   WRITE #1,A$( I ),B$( I ),C$( I ),D$( I ),E$( I ),F$( I )
4230   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P = I
4240   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN 4260
4250 NEXT
4260 CLOSE
4270 GOSUB 12760
4280 GOTO 4530
4290 REM =====  DISK DATA READ ROUTINE  =====
4300 GOSUB 2080
4310 GOSUB 2280
4320 GOSUB 1570
4330 LOCATE 21,27
4340 PRINT "What is FILE name? ";
4350 GOSUB 2640
4360 FINLEN = 14
4370 LOCATE 21,52
4380 PRINT "DRIVE? ■:■■■■■■■■.■■■";
4390 LOCATE 21,59,0
4400 GOSUB 2960
4410 FILESPEC$ = FIN$
4420 GOSUB 2540
4430 OPEN "I",1,FILESPEC$
4440 INPUT #1,P
4450 FOR I = 1 TO P
4460   INPUT #1,A$( I ),B$( I ),C$( I ),D$( I ),E$( I ),F$( I )
4470   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P = I
4480   IF ( A$( I ) = "END" OR A$( I ) = "END" ) THEN 4500
4490 NEXT
4500 CLOSE
4510 GOSUB 12760
4520 GOSUB 2070
4530 REM =====  CHANCE TO REVIEW NAMES =====
4540 GOTO 2370
4550 REM =====  STARTING OUTPUT LOOP =====
4560 GOSUB 2070
4570 GOSUB 2280
4580 GOSUB 2340
4590 K = 1
4600 NR = 13
4610 LOCATE 4,7
4620 FOR I = K TO P
4630   GOTO 4640
4640   LOCATE ,7
4650   PRINT I;" ";
4660   PRINT USING PR$;A$( I );B$( I )
4670   IF I = NR THEN 4690 ELSE 4680
4680 NEXT
4690 GOSUB 2280
4700 GOSUB 2340
4710 LOCATE 21,30
4720 PRINT "<PRESS> ENTER to Continue!";
4730 GOSUB 2910
4740 IF I = P THEN 4760
4750 IF I < P THEN K = I + 1 : NR = NR + 13 : GOSUB 2430 : GOTO 4610
4760 GOSUB 2280
4770 LOCATE 21,30
4780 PRINT "That is the last Record";
4790 FOR I = 1 TO 2000
4800 NEXT
4810 GOTO 2370
4820 PRINT "ADD RECORDS TO FILE  <PRESS> 3";
4830 COLOR 7,0
4840 LOCATE 21,50,0
4850 GOSUB 2580
4860 GOSUB 12760
4870 FINLEN = 1
4880 LOW = 49
4890 HIGH = 51
4900 GOSUB 2680
4910 ON VAL( INPTR$ ) GOTO 7740,6250,11160
4920 REM
4930 LOCATE 3,32
4940 PRINT "LABEL/FILE PROGRAM";
4950 LOCATE 4,32
4960 PRINT "══════════════════";
4970 LOCATE 6,35
4980 PRINT "C H O I C E S";
4990 LOCATE 7,35
5000 PRINT "═════════════";
5010 LOCATE 9,25
5020 PRINT "Recall Disk FILE              1";
5030 LOCATE 11,25
5040 PRINT "Open New FILE                 2";
5050 LOCATE 13,25
5060 PRINT "Make single label             3";
5070 LOCATE 15,25
5080 PRINT "CONTROL Menu                  4";
5090 LOCATE 21,20
5100 PRINT "Select & <PRESS> a Number";
5110 GOSUB 2580
5120 GOSUB 12760
5130 FINLEN = 1
5140 LOW = 49
5150 HIGH = 52
5160 GOSUB 2680
5170 ON VAL( INPTR$ ) GOTO 4290,3180,3180,2370
5180 REM =====  INDIVIDUAL LINE CORRECTION ROUTINE  =====
5190 CLEAR 570
5200 FOR I = 4 TO 14 STEP 2
5210   LOCATE I,28
5220   PRINT "  "; STRING$( 41,254 );
5230 NEXT
5240 GOTO 5430
5250 LOCATE 4,28
5260 PRINT "  "; STRING$( 41,254 );
5270 GOTO 5430
5280 LOCATE 6,28
5290 PRINT "  "; STRING$( 41,254 );
5300 GOTO 5520
5310 LOCATE 8,28
5320 PRINT "  "; STRING$( 41,254 );
5330 GOTO 5590
5340 LOCATE 10,28
5350 PRINT "  "; STRING$( 41,254 );
5360 GOTO 5660
5370 LOCATE 12,28
5380 PRINT "  "; STRING$( 41,254 );
5390 GOTO 5730
5400 LOCATE 14,28
5410 PRINT "  "; STRING$( 41,254 );
5420 GOTO 5800
5430 LOCATE 4,30,1
5440 FINLEN = 41
5450 GOSUB 2960
5460 A$( I ) = FIN$
5470 LOCATE 4,30,0
5480 PRINT A$( I );
5490 GOTO 3720
5500 IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P! = I
5510 IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN 3990
5520 LOCATE 6,30,1
5530 FINLEN = 41
5540 GOSUB 2960
5550 B$( I ) = FIN$
5560 LOCATE 6,30,0
5570 PRINT B$( I );
5580 GOTO 3720
5590 LOCATE 8,30,1
5600 FINLEN = 41
5610 GOSUB 2960
5620 C$( I ) = FIN$
5630 LOCATE 8,30,0
5640 PRINT C$( I );
5650 GOTO 3720
5660 LOCATE 10,30,1
5670 FINLEN = 41
5680 GOSUB 2960
5690 D$( I ) = FIN$
5700 LOCATE 10,30,0
5710 PRINT D$( I );
5720 GOTO 3720
5730 LOCATE 12,30,1
5740 FINLEN = 41
5750 GOSUB 2960
5760 E$( I ) = FIN$
5770 LOCATE 12,30,0
5780 PRINT E$( I );
5790 GOTO 3720
5800 LOCATE 14,30,1
5810 FINLEN = 41
5820 GOSUB 2960
5830 F$( I ) = FIN$
5840 LOCATE 14,30,0
5850 PRINT F$( I );
5860 GOTO 3720
5870 REM =====  LINE COLOR LINE ROUTINE =====
5880 LOCATE 4,14
5890 PRINT "Name/Co.   1: ";
5900 LOCATE 5,14
5910 PRINT "~~~~~~~~";
5920 LOCATE 6,14
5930 PRINT "Address 1  2: ";
5940 LOCATE 7,14
5950 PRINT "~~~~~~~~~";
5960 LOCATE 8,14
5970 PRINT "Address 2  3: ";
5980 LOCATE 9,14
5990 PRINT "~~~~~~~~~";
6000 LOCATE 10,14
6010 PRINT "City/S/ZIP 4: ";
6020 LOCATE 11,14
6030 PRINT "~~~~~~~~~~";
6040 LOCATE 12,14
6050 PRINT "Telephone  5: ";
6060 LOCATE 13,14
6070 PRINT "~~~~~~~~~";
6080 LOCATE 14,14
6090 PRINT "Comments   6: ";
6100 LOCATE 15,14
6110 PRINT "~~~~~~~~";
6120 RETURN
6130 REM =====  COLORS IN INPUT LINES  =====
6140 LOCATE 2,28
6150 PRINT "  " STRING$( 15,32 ) CHR$( 3 );
6160 LOCATE 2,22
6170 PRINT "MAX for EXPANDED PRINT";
6180 LOCATE 2,47
6190 PRINT "with 4 ½ inch labels"
6200 FOR Q = 4 TO 14 STEP 2
6210   LOCATE Q,30
6220   PRINT STRING$( 41,254 );
6230 NEXT
6240 RETURN
6250 REM =====  EDIT INDIVIDUAL RECORDS ROUTINE =====
6260 Z = 0
6270 GOSUB 2280
6280 GOSUB 1570
6290 LOCATE 20,18
6300 PRINT "What RECORD NUMBER To edit ";
6310 LOCATE 22,18
6320 PRINT "<ENTER> RECORD NUMBER ";
6330 FINLEN = 3
6340 LOW = 48
6350 HIGH = 57
6360 GOSUB 2580
6370 :REM SELECT SUBROUTINE
6380 LOCATE 21,61,0
6390 GOSUB 2680
6400 Z = VAL( FIN$ )
6410 GOSUB 12760
6420 IF P = 0 THEN 12990
6430 IF ( Z < 1 OR Z > P ) THEN 12990
6440 REM =====  DISPLAYING RECORDS TO BE EDITED =====
6450 ON Z GOSUB 2070
6460 GOSUB 5870
6470 GOSUB 6130
6480 GOSUB 2510
6490 LOCATE 21,53,0
6500 PRINT "Record #: ";
6510 LOCATE 21,65
6520 PRINT Z;
6530 LOCATE 4,30
6540 PRINT A$( Z );
6550 IF A$( 1 ) = "END" THEN P = Z : COLOR 7,0
6560 LOCATE 6,30
6570 PRINT B$( Z );
6580 LOCATE 8,30
6590 PRINT C$( Z );
6600 LOCATE 10,30
6610 PRINT D$( Z );
6620 LOCATE 12,30
6630 PRINT E$( Z );
6640 LOCATE 14,30
6650 PRINT F$( Z );
6660 GOSUB 2210
6670 GOSUB 2540
6680 LOCATE 21,20
6690 PRINT "Is this correct <Y/N> ";
6700 GOSUB 2840
6710 IF YN = 1 THEN 7660
6720 IF YN = 2 THEN 6730
6730 GOSUB 2210
6740 GOSUB 2510
6750 GOSUB 2540
6760 LOCATE 21,18
6770 PRINT "Re-enter what LINE? ";
6780 LOCATE 21,55
6790 PRINT " Line # ";
6800 FINLEN = 1
6810 LOW = 49
6820 HIGH = 54
6830 GOSUB 2680
6840 LOCATE 21,64
6850 PRINT VAL( INPTR$ );
6860 ON VAL( INPTR$ ) GOTO 6880,6930,6980,7030,7080,7130
6870 REM =====  INDIVIDUAL LINE ROUTINE FOR RECALLED RECORDS  =====
6880 COLOR 7,0
6890 LOCATE 4,30,1,0,7
6900 COLOR 0,7
6910 PRINT A$( Z )
6920 GOTO 7220
6930 COLOR 7,0
6940 LOCATE 6,30,1,0,7
6950 COLOR 0,7
6960 PRINT B$( Z )
6970 GOTO 7310
6980 COLOR 7,0
6990 LOCATE 8,30,1,0,7
7000 COLOR 0,7
7010 PRINT C$( Z )
7020 GOTO 7380
7030 COLOR 7,0
7040 LOCATE 10,30,1,0,7
7050 COLOR 0,7
7060 PRINT D$( Z )
7070 GOTO 7450
7080 COLOR 7,0
7090 LOCATE 12,30,1,0,7
7100 COLOR 0,7
7110 PRINT E$( Z )
7120 GOTO 7520
7130 COLOR 7,0
7140 LOCATE 14,30,1,0,7
7150 COLOR 0,7
7160 PRINT F$( Z )
7170 GOTO 7590
7180 FOR Q = 4 TO 14 STEP 2
7190   LOCATE Q,30,1,0,7
7200   PRINT STRING$( 41,254 );
7210 NEXT
7220 LOCATE 4,30,1
7230 FINLEN = 41
7240 GOSUB 2960
7250 A$( Z ) = FIN$
7260 LOCATE 4,30,0
7270 PRINT A$( Z );
7280 GOTO 6660
7290 IF A$( Z ) = "END" OR A$( Z ) = "end" THEN P = Z
7300 IF A$( Z ) = "END" OR A$( Z ) = "end" THEN 7670
7310 LOCATE 6,30,1
7320 FINLEN = 41
7330 GOSUB 2960
7340 B$( Z ) = FIN$
7350 LOCATE 6,30,0
7360 PRINT B$( Z );
7370 GOTO 6660
7380 LOCATE 8,30,1
7390 FINLEN = 41
7400 GOSUB 2960
7410 C$( Z ) = FIN$
7420 LOCATE 8,30,0
7430 PRINT C$( Z! );
7440 GOSUB 6660
7450 LOCATE 10,30,1
7460 FINLEN = 41
7470 GOSUB 2960
7480 D$( Z ) = FIN$
7490 LOCATE 10,30,0
7500 PRINT D$( Z );
7510 GOTO 6660
7520 LOCATE 12,30,1
7530 FINLEN = 41
7540 GOSUB 2960
7550 E$( Z ) = FIN$
7560 LOCATE 12,30,0
7570 PRINT E$( Z );
7580 GOTO 6660
7590 LOCATE 14,30,1
7600 FINLEN = 41
7610 GOSUB 2960
7620 F$( Z ) = FIN$
7630 LOCATE 14,30,0
7640 PRINT F$( Z! );
7650 GOSUB 6660
7660 REM =====  LOOK AT ANOTHER RECORD AFTER CORRECTION =====
7670 GOSUB 2070
7680 GOSUB 2220
7690 LOCATE 21,18
7700 COLOR 7,0
7710 PRINT "Edit another RECORD <Y/N> ";
7720 GOSUB 2840
7730 ON YN GOTO 6250,3990
7740 REM =====  LABEL PRINT ROUTINES =====
7750 GOSUB 12760
7760 GOSUB 2070
7770 LOCATE 3,32
7780 PRINT "LABEL/FILE PROGRAM";
7790 LOCATE 4,32
7800 COLOR 7,0
7810 PRINT "══════════════════";
7820 LOCATE 5,35
7830 PRINT "C H O I C E S"
7840 LOCATE 6,35
7850 PRINT "═════════════";
7860 LOCATE 8,25
7870 PRINT "1ST Line EXPANDED Print.......1";
7880 LOCATE 9,25
7890 PRINT "All lines EXPANDED Print......2";
7900 LOCATE 10,25
7910 PRINT "All lines ITALICS.. ..........3";
7920 LOCATE 11,25
7930 PRINT "All lines 10 PITCH............4";
7940 LOCATE 12,25
7950 PRINT "All lines COMPRESSED..........5";
7960 COLOR 7,0
7970 LOCATE 13,25
7980 PRINT "Return to CONTROL Menu........6";
7990 LOCATE 14,25
8000 PRINT "Disk Directories..............7";
8010 LOCATE 15,25
8020 PRINT "QUIT the program..............8";
8030 GOSUB 2280
8040 GOSUB 1570
8050 LOCATE 21,20
8060 PRINT "Select & <PRESS> a NUMBER ";
8070 GOSUB 2580
8080 GOSUB 12760
8090 FINLEN = 1
8100 LOW = 49
8110 HIGH = 56
8120 GOSUB 2680
8130 ON VAL( INPTR$ ) GOTO 8160,8200,8240,8280,8320,2370,13050,10330
8140 GOSUB 2070
8150 GOTO 4530
8160 REM =====  1ST LINE EXPANDED =====
8170 GOSUB 2070
8180 GOSUB 8360
8190 GOTO 9100
8200 REM =====  ALL LINES EXPANDED =====
8210 GOSUB 2070
8220 GOSUB 8360
8230 GOTO 9290
8240 REM =====  ALL LINES ITALICS =====
8250 GOSUB 2070
8260 GOSUB 8360
8270 GOTO 9460
8280 REM =====  10 PITCH (PICA) =====
8290 GOSUB 2070
8300 GOSUB 8360
8310 GOTO 9640
8320 REM =====  ALL LINES CONDENSED =====
8330 GOSUB 2070
8340 GOSUB 8360
8350 GOTO 9820
8360 LOCATE 6,35
8370 PRINT "C H O I C E S";
8380 LOCATE 7,35
8390 PRINT "═════════════";
8400 LOCATE 9,25
8410 PRINT "Check Printer ON and SELECTED.";
8420 COLOR 7,0
8430 LOCATE 10,25
8440 PRINT "CHECK LABELS LOADED AND ALIGNED";
8450 LOCATE 11,25
8460 PRINT "<ENTER> record RANGE to print";
8470 LOCATE 13,25
8480 PRINT "I.E. <ENTER> FIRST Record Number to Print";
8490 LOCATE 14,31
8500 PRINT "Then <ENTER> Last Record Number";
8510 GOSUB 2540
8520 LOCATE 21,20
8530 PRINT "<ENTER> Record Print Range ";
8540 LB = 0
8550 LE = 0
8560 GOSUB 2510
8570 :REM CLEAR INSERT AND BOTTOM BOXES
8580 LOCATE 21,52
8590 PRINT "First # ";
8600 LOCATE 21,62
8610 FINLEN = 3
8620 LOW = 49
8630 HIGH = 57
8640 GOSUB 2680
8650 LB = VAL( FIN$ )
8660 LOCATE 21,62
8670 PRINT LB;
8680 FOR I = 1 TO 2000
8690 NEXT
8700 GOSUB 2510
8710 LOCATE 21,52,0
8720 PRINT "Last # ";
8730 GOSUB 12760
8740 FINLEN = 3
8750 LOW = 48
8760 HIGH = 57
8770 LOCATE 21,62,0
8780 GOSUB 2680
8790 LE = VAL( FIN$ )
8800 IF LE > P THEN LOCATE 21,60 : PRINT "NO SUCH FILE!"; : FOR I = 1 TO 2000 : NEXT  : GOTO 7750
8810 LOCATE 21,62
8820 PRINT LE;
8830 FOR I = 1 TO 1000
8840 NEXT
8850 GOSUB 2070
8860 LOCATE 6,35
8870 PRINT "PRINT  LABELS";
8880 LOCATE 7,35
8890 PRINT "═════════════";
8900 LOCATE 12,30
8910 PRINT "How many of each labeL.    ";
8920 LOCATE 21,16
8930 PRINT "Indicate QUANTITY of each wanted";
8940 REM =====  NUMBER OF EACH LABEL =====
8950 GOSUB 2510
8960 LOCATE 21,52
8970 PRINT "# of each ";
8980 NL = 0
8990 FINLEN = 3
9000 LOW = 48
9010 HIGH = 57
9020 GOSUB 2680
9030 NL = VAL( FIN$ )
9040 LOCATE 21,62
9050 PRINT NL;
9060 FOR I = 1 TO 1000
9070 NEXT
9080 GOSUB 12760
9090 RETURN
9100 REM =====  1ST LINE ONLY EXPANDED/EMPHASIZED PRINT =====
9110 LPRINT CHR$( 27 ) + "@";
9120 LPRINT CHR$( 27 ) + "E";
9130 FOR M = 1 TO NL
9140   FOR N = LB TO LE
9150     LPRINT CHR$( 14 );
9160     LPRINT A$( N )
9170     LPRINT CHR$( 20 );
9180     LPRINT B$( N )
9190     LPRINT C$( N )
9200     LPRINT D$( N )
9210     LPRINT " "
9220 :REM E$(N!)
9230     LPRINT " "
9240 :REM F$(N)
9250   NEXT
9260 NEXT
9270 GOSUB 13900
9280 GOTO 9110
9290 REM =====  ALL LINES EXPANDED/EMPHASIZED PRINT  =====
9300 LPRINT CHR$( 27 ) + "@";
9310 LPRINT CHR$( 27 ) + "E";
9320 FOR N = LB TO LE
9330   FOR M = 1 TO NL
9340     LPRINT CHR$( 14 );A$( N! )
9350     LPRINT CHR$( 14 );B$( N! )
9360     LPRINT CHR$( 14 );C$( N! )
9370     LPRINT CHR$( 14 );D$( N! )
9380     LPRINT " "
9390 :REM CHR$(14);E$(N)
9400     LPRINT " "
9410 :REM CHR$(14);F$(N)
9420   NEXT
9430 NEXT
9440 GOSUB 13900
9450 GOTO 9300
9460 REM =====  ALL LINES ITACICS/EMPHASIZED  =====
9470 LPRINT CHR$( 27 ) + "@";
9480 LPRINT CHR$( 27 ); CHR$( 69 );
9490 LPRINT CHR$( 27 ) + CHR$( 52 );
9500 FOR M = 1 TO NL
9510   FOR N = LB TO LE
9520     LPRINT A$( N )
9530     LPRINT B$( N )
9540     LPRINT C$( N )
9550     LPRINT D$( N )
9560     LPRINT " "
9570 :REM E$(N)
9580     LPRINT " "
9590 :REM F$(N)
9600   NEXT
9610 NEXT
9620 GOSUB 13900
9630 GOTO 9470
9640 REM =====  10 PITCH (PICA) PRINT =====
9650 LPRINT CHR$( 27 ); CHR$( 64 );
9660 LPRINT CHR$( 27 ); CHR$( 69 );
9670 LPRINT CHR$( 27 ) + CHR$( 66 ) + CHR$( 1 );
9680 FOR M = 1 TO NL
9690   FOR N = LB TO LE
9700     LPRINT A$( N )
9710     LPRINT B$( N )
9720     LPRINT C$( N )
9730     LPRINT D$( N )
9740     LPRINT " "
9750 :REM E$(N)
9760     LPRINT " "
9770 :REM F$(N)
9780   NEXT
9790 NEXT
9800 GOSUB 13900
9810 GOTO 9650
9820 REM =====  ALL LINES CONDENSED =====
9830 LPRINT CHR$( 27 ) + "@";
9840 FOR M = 1 TO NL
9850   FOR N = LB TO LE
9860     LPRINT CHR$( 15 );A$( N )
9870     LPRINT B$( N )
9880     LPRINT C$( N )
9890     LPRINT D$( N )
9900     LPRINT " "
9910 :REM E$(N)
9920     LPRINT " "
9930 :REM F$(N)
9940     LPRINT CHR$( 27 ) + "@~;"
9950   NEXT
9960 NEXT
9970 GOSUB 13900
9980 GOTO 9830
9990 REM =====  PRINT OUT FIRST LINE OF EACH RECORD  =====
10000 CLS
10010 LOCATE 5,30
10020 PRINT "EXTRACT FROM:  ";FILESPEC$;
10030 LPRINT
10040 LPRINT
10050 PN = 0
10060 PN = 5
10070 CLS
10080 PRINT
10090 POKE 91,1
10100 POKE 92,25
10110 LOCATE 7,10
10120 PRINT "FILE SUMMARY REPORT ";FILESPEC$;"  AS OF "; DATE$ ;
10130 PRINT
10140 LPRINT CHR$( 15 );
10150 WIDTH "LPT1:",132
10160 PRINT
10170 LPRINT TAB( 45 )"FILE SUMMARY REPORT ";FILESPEC$;"  AS OF   "; DATE$
10180 LPRINT
10190 LPRINT TAB( 10 )"Name                City/S/ZIP                         Telephone                           Comments"
10200 LPRINT
10210 FOR I = 1 TO P
10220   PRINT TAB( 10 );I;A$( I )
10230   LPRINT TAB( 5 )I;""; LEFT$( A$( I ),20 ); TAB( 30 ) LEFT$( D$( I ),30 ); TAB( 65 ) LEFT$( E$( I ),25 ); TAB( 100 ) LEFT$( F$( I ),20 )
10240   PN = PN + 1
10250   IF PN = 55 THEN LPRINT CHR$( 140 ) : LPRINT STRING$( 10,5 ) : PN = 5
10260 NEXT
10270 GOSUB 12760
10280 LOCATE ,,,0,7
10290 POKE 91,1
10300 POKE 92,25
10310 CLS
10320 END
10330 REM =====  FINAL SCREEN DISPLAY =====
10340 GOSUB 2070
10350 GOSUB 2280
10360 GOSUB 12760
10370 LOCATE 8,23
10380 PRINT "Print first LINE & Summary    <PRESS> 1";
10390 LOCATE 9,33
10400 PRINT "<PAPER IN PRINTER>";
10410 LOCATE 11,23
10420 PRINT "Return to CONTROL Menu        <PRESS> 2";
10430 LOCATE 13,23
10440 PRINT "Thanks!  Bye!       To QUIT - <PRESS> 3";
10450 FINLEN = 1
10460 LOW = 49
10470 HIGH = 51
10480 GOSUB 2680
10490 ON VAL( INPTR$ ) GOTO 9990,2370,10280
10500 LOCATE ,,,0,7
10510 POKE 91,1
10520 POKE 92,25
10530 END
10540 REM =====  ERROR TRAP ROUTINE =====
10550 GOSUB 2540
10560 LOCATE 25,2
10570 PRINT SPC( 78 );
10580 KEY OFF
10590 LOCATE 25,28,0
10600 COLOR 24,4
10610 PRINT " ERROR ";
10620 COLOR 7,0
10630 PRINT " #"; ERR ;" IN LINE #"; ERL ;
10640 FOR T = 1 TO 1000
10650 NEXT
10660 IF ERR = 53 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10700
10670 LOCATE 20,10
10680 PRINT "File not found   ";
10690 PRINT " ** Load CORRECT Disk";
10700 IF ERR = 54 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10740
10710 LOCATE 20,10
10720 PRINT "Bad file mode    ";
10730 PRINT " ** Correct File Mode";
10740 IF ERR = 55 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10780
10750 LOCATE 20,10
10760 PRINT "File already OPEN ";
10770 PRINT " ** CLOSE and REOPEN";
10780 IF ERR = 61 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10820
10790 LOCATE 20,10
10800 PRINT "Disk FULL         ";
10810 PRINT " ** Install New Disk";
10820 IF ERR = 70 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10860
10830 LOCATE 20,10
10840 PRINT "Disk WRITE PROTECT  ";
10850 PRINT " ** Remove W/P Tab";
10860 IF ERR = 71 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10900
10870 LOCATE 20,10
10880 PRINT "Disk NOT READY    ";
10890 PRINT " ** CLOSE Drive Door";
10900 IF ERR = 24 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10940
10910 LOCATE 20,10
10920 PRINT "Printer OFF-LINE ";
10930 PRINT "  ** Set ON-LINE Mode";
10940 IF ERR = 25 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 10980
10950 LOCATE 20,10
10960 PRINT "Printer not ON    ";
10970 PRINT " ** Check Printer ON";
10980 IF ERR = 27 THEN LOCATE 20,10 : PRINT SPC( 30 ), ELSE 11070
10990 LOCATE 20,10
11000 PRINT "OUT OF PAPER!     ";
11010 PRINT " ** Check Paper Path";
11020 LOCATE 22,20
11030 GOSUB 2510
11040 GOSUB 2540
11050 GOSUB 1560
11060 RETURN
11070 GOSUB 11020
11080 LOCATE 22,10,0
11090 PRINT "Correct SYSTEM ERROR - <PRESS> ENTER";
11100 LOCATE 22,10,0
11110 GOSUB 2910
11120 KEY ON
11130 KEY OFF
11140 COLOR 7,0
11150 RESUME 2370
11160 REM =====  ADD TO LOADED FILE =====
11170 GOSUB 2070
11180 GOSUB 2280
11190 GOSUB 1560
11200 GOSUB 5870
11210 GOSUB 6130
11220 NP = 0
11230 NP = P
11240 P = 200
11250 GOSUB 2540
11260 LOCATE 21,30
11270 PRINT "MAKE DATA ENTRIES ";
11280 LOCATE 17,26
11290 PRINT "Do not use QUOTATION MARKS when entering data!";
11300 IF NP = 0 THEN NP = 1 : COLOR 7,0
11310 FOR I = NP TO P
11320   GOSUB 6130
11330   GOSUB 2510
11340   LOCATE 21,52,0
11350   PRINT "RECORD #: ";
11360   LOCATE 21,60,0
11370   PRINT I;
11380   LOCATE 4,30,1,0,7
11390   FINLEN = 41
11400   GOSUB 2960
11410   A$( I ) = FIN$
11420   LOCATE 4,30,1
11430   PRINT A$( I );
11440   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P = I
11450   IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN 3990
11460   LOCATE 6,30,1
11470   FINLEN = 41
11480   GOSUB 2960
11490   B$( I ) = FIN$
11500   LOCATE 6,30,0
11510   PRINT B$( I );
11520   LOCATE 8,30,1
11530   FINLEN = 41
11540   GOSUB 2960
11550   C$( I ) = FIN$
11560   LOCATE 8,30,0
11570   PRINT C$( I );
11580   LOCATE 10,30,1
11590   FINLEN = 41
11600   GOSUB 2960
11610   D$( I ) = FIN$
11620   LOCATE 10,30,0
11630   PRINT D$( I );
11640   LOCATE 12,30,1
11650   FINLEN = 41
11660   GOSUB 2960
11670   E$( I ) = FIN$
11680   LOCATE 12,30,0
11690   PRINT E$( I );
11700   LOCATE 14,30,1
11710   FINLEN = 41
11720   GOSUB 2960
11730   F$( I ) = FIN$
11740   LOCATE 14,30,0
11750   PRINT F$( I );
11760   GOSUB 2210
11770   GOSUB 2540
11780   LOCATE 21,20
11790   COLOR 7,0
11800   PRINT "Is this correct <Y/N> ";
11810   COLOR 7,0
11820   GOSUB 2840
11830   IF YN = 1 THEN 11990
11840   IF YN = 2 THEN 11850
11850   GOSUB 2210
11860   GOSUB 2510
11870   GOSUB 2540
11880   LOCATE 21,20
11890   PRINT "Re-enter what LINE? ";
11900   LOCATE 21,55
11910   PRINT " Line # ";
11920   FINLEN = 1
11930   LOW = 49
11940   HIGH = 54
11950   GOSUB 2680
11960   LOCATE 21,64
11970   PRINT VAL( INPTR$ );
11980   ON VAL( INPTR$ ) GOTO 12080,12110,12140,12170,12200,12230
11990   GOSUB 2210
12000   GOSUB 2540
12010   LOCATE 21,18
12020   PRINT "ENTER ";
12030   PRINT CHR$( 34 )"END" CHR$( 34 );
12040   PRINT " To CLOSE Entries ";
12050 NEXT
12060 :REM NEXT RUN
12070 REM =====  ADDED FILES -  INDIVIDUAL LINE CORRECTION ROUTINE  =====
12080 LOCATE 4,28
12090 PRINT "  "; STRING$( 41,254 );
12100 GOTO 12260
12110 LOCATE 6,28
12120 PRINT "  "; STRING$( 41,254 );
12130 GOTO 12350
12140 LOCATE 8,28
12150 PRINT "  "; STRING$( 41,254 );
12160 GOTO 12420
12170 LOCATE 10,28
12180 PRINT "  "; STRING$( 41,254 );
12190 GOTO 12490
12200 LOCATE 12,28
12210 PRINT "  "; STRING$( 41,254 );
12220 GOTO 12560
12230 LOCATE 14,28
12240 PRINT "  "; STRING$( 41,254 );
12250 GOTO 12630
12260 LOCATE 4,30,1
12270 FINLEN = 41
12280 GOSUB 2960
12290 A$( I ) = FIN$
12300 LOCATE 4,30,0
12310 PRINT A$( I );
12320 GOTO 11760
12330 IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN P = I
12340 IF ( A$( I ) = "END" OR A$( I ) = "end" ) THEN 3990
12350 LOCATE 6,30,1
12360 FINLEN = 41
12370 GOSUB 2960
12380 B$( I ) = FIN$
12390 LOCATE 6,30,0
12400 PRINT B$( I );
12410 GOTO 11760
12420 LOCATE 8,30,1
12430 FINLEN% = 41
12440 GOSUB 2960
12450 C$( I ) = FIN$
12460 LOCATE 8,30,0
12470 PRINT C$( I );
12480 GOTO 11760
12490 LOCATE 10,30,1
12500 FINLEN% = 41
12510 GOSUB 2960
12520 D$( I ) = FIN$
12530 LOCATE 10,30,0
12540 PRINT D$( I );
12550 GOTO 11760
12560 LOCATE 12,30,1
12570 FINLEN = 41
12580 GOSUB 2960
12590 E$( I ) = FIN$
12600 LOCATE 12,30,0
12610 PRINT E$( I );
12620 GOTO 11760
12630 LOCATE 14,30,1
12640 FINLEN = 41
12650 GOSUB 2960
12660 F$( I ) = FIN$
12670 LOCATE 14,30,0
12680 PRINT F$( I );
12690 GOTO 11760
12700 CLS
12720 LOCATE ,,,0,7
12730 POKE 91,1
12740 POKE 92,25
12750 END
12760 REM =====  ELAPSED TIME PRINTOUT SUBROUTINE =====
12770 N$ = TIME$
12780 DEF FN H( H$ ) = VAL( LEFT$( H$,2 ) )
12790 DEF FN M( M$ ) = VAL( MID$( M$,4,2 ) )
12800 DEF FN S( S$ ) = VAL( RIGHT$( S$,2 ) )
12810 TMH = ( FN H( N$ ) ) - FN H( BB$ )
12820 TMM = ( FN M( N$ ) - FN M( BB$ ) )
12830 TMS = ( FN S( N$ ) - FN S( BB$ ) )
12840 LOCATE 25,2
12850 PRINT SPC( 78 );
12860 KEY OFF
12870 LOCATE 25,5
12880 PRINT "Start Time ";BB$;
12890 LOCATE 25,30
12900 PRINT "End Time ";N$;
12910 LOCATE 25,53
12920 PRINT "Elapsed Time ";TMH;":"; ABS( TMM );":"; ABS( TMS );
12930 RETURN
12940 CLS
12950 LOCATE ,,,0,7
12960 POKE 91,1
12970 POKE 92,25
12980 END
12990 GOSUB 2070
13000 LOCATE 10,22,0
13010 PRINT "File Empty, or No Such Record in File!";
13020 FOR I = 1 TO 1000
13030 NEXT
13040 GOTO 2370
13050 REM =====  DISK DIRECTORY REVIEW ROUTINE =====
13060 GOSUB 2150
13070 GOSUB 2280
13080 GOSUB 1520
13090 GOSUB 1560
13100 GOSUB 2510
13110 LOCATE 21,20,0
13120 PRINT "What Drive (A,B,C,D)";
13130 KEY OFF
13140 MZ$ = ""
13150 MZ$ = "AaBbCcDd"
13160 GOSUB 2580
13170 GOSUB 1560
13180 GOSUB 13810
13190 LOCATE 21,65,0
13200 PRINT IN$;
13210 ON MS GOTO 13220,13220,13290,13290,13360,13360,13430,13430
13220 LOCATE 3,1
13230 FILES "A:*.*"
13240 COLOR 0,7
13250 LOCATE 2,32
13260 PRINT " Drive A: ";
13270 COLOR 7,0
13280 GOTO 13490
13290 LOCATE 3,1
13300 FILES "B:*.*"
13310 COLOR 0,7
13320 LOCATE 2,32
13330 PRINT " Drive B: ";
13340 COLOR 7,0
13350 GOTO 13490
13360 LOCATE 3,1
13370 FILES "C:*.*"
13380 COLOR 0,7
13390 LOCATE 2,32
13400 PRINT " Drive C: ";
13410 COLOR 7,0
13420 GOTO 13490
13430 LOCATE 3,1
13440 FILES "D:*.*"
13450 COLOR 0,7
13460 LOCATE 2,32
13470 PRINT " Drive D: ";
13480 COLOR 7,0
13490 GOSUB 2280
13500 COLOR 7,0
13510 LOCATE 20,24
13520 PRINT "Another Directory?      <PRESS 1>";
13530 LOCATE 22,24
13540 PRINT "Return to CONTROL Menu? <PRESS 2>";
13550 FINLEN = 1
13560 LOW = 49
13570 HIGH = 50
13580 GOSUB 2680
13590 ON VAL( INPTR$ ) GOTO 13600,13610
13600 GOTO 13050
13610 GOSUB 2150
13620 GOTO 2370
13630 REM =====  CONTROL MENU DISPLAY ROUTINE =====
13640 GOSUB 2280
13650 GOSUB 2340
13660 LOCATE 20,9,0
13670 PRINT M1ST$;
13680 LOCATE 21,9
13690 PRINT M2ND$;
13700 LOCATE 22,9,0
13710 PRINT M3RD$;
13720 LOCATE 18,25
13730 PRINT "  Select and <PRESS> a Letter  ";
13740 LOCATE 19,27
13750 PRINT STRING$( 27,"~" );
13760 MZ$ = ""
13770 MZ$ = "AaCcDdEeLlPpQqRrSs"
13780 GOSUB 13810
13790 GOSUB 2340
13800 RETURN
13810 IN$ = INKEY$
13820 IF IN$ = "" THEN 13810
13830 MS = INSTR( MZ$,IN$ )
13840 IF MS = 0 THEN SOUND 1000,4 : GOTO 13810
13850 RETURN
13860 LOCATE ,,,0,7
13870 POKE 91,1
13880 POKE 92,25
13890 END
13900 REM =====  OPTION SUBROUTINE IN PRINT SEQUENCE  =====
13910 LPRINT CHR$( 27 ) + "@";
13920 GOSUB 2070
13930 GOSUB 2210
13940 LOCATE 20,13
13950 PRINT "To REPRINT this label/s    <PRESS> 1";
13960 LOCATE 21,13
13970 PRINT "To print DIFFERENT label/s <PRESS> 2";
13980 LOCATE 22,13
13990 PRINT "To CONTROL Menu            <PRESS> 3";
14000 GOSUB 2580
14010 GOSUB 12760
14020 FINLEN = 1
14030 LOW = 49
14040 HIGH = 51
14050 GOSUB 2680
14060 NL = 1
14070 ON VAL( INPTR$ ) GOTO 14080,7740,2370
14080 RETURN
14090 END

BLUEBERY.DOC


BLUEBERY.BAS is a combination multi-font label and filing program which may
be  used  for  many  purposes. It may be used as a simple note-pad with six
lines  of text which can be filed and recalled. It prints various fonts and
combinations when used as a label program. These fonts are specified in the
print-routine   menu.  The  program  is  entirely  menu-driven  and  it  is
self-documenting. The program is compltetly input-protected with the INKEY$
function.  The  tones used are basically 400-600 with duration 4 and should
not  be  annoying.  When using the expanded print for a label, heed the in-
dicator  which  appears on the input format screen. In print option 1, this
restriction  applies  only  to  line  one. In option two, it applies to all
lines. In the other print options, this restriction does not apply.

The  print  routine prints out three lines of text. You may use the <enter>
or  CR  key to enter a blank line. If you wish to print out more than three
lines,  you  may  modify  the  print commands in lines 2940 thru 3650. As a
label  program  it  will  work with an EPSON/IBM printer or GEMINI 10 or 15
which  are  fully IBM/EPSON compatible. If you use another brand dot-matrix
printer,  it  may  be  necessary  to modify the control codes in lines 2940
through  3650.  Unfortunately, these codes are not standardized as yet. Use
of the print routines with another brand printer may result in some unusual
fonts  or  printer  action. If the printer should "lock up", turning it off
and on will re-intitialize the mechanism so that it will work normally.


BLUEBRY2.DOC

Bluebery.bas  is  written  in SCREEN 0,0,0 WIDTH 80. It will provide vivid
color  contract for various functions when used with a color monitor. with
the  color statements activated. Curently, they are all COLOR 7,0 with the
program  placement  being such that simple insertion of 1 thru 6 for the 7
in the color statement proceeding a print line will provide color for that
line, automatically terminated the the alreay inserted COLOR 7,0 statement
following  it. The program was originally colorized; however, it was over-
driving some composite video color monitors and green-screen monitors such
as  the  ZENITH or BMC. By providing the program with the color statements
in  place, but inactivated, it can be fully colorized in about one hour at
the  maximum.  Unless  you  have  a  RGB  monitor,  be careful of the high
intensity statements since they may overdrive and blur the screen.

LABELPRO.BAS is a compressed version of BLUEBERY.BAS except that it prints
five  label  lines  and  stores  one.  In the final print out -- an option
selection  from  the  QUIT  menu  --  it prints out the first line of each
record for filing purposes. This program, in whole or in part, may be used
by  any  purchaser  of  "BIG  BLUE"berry  Pie  a  la Mode without license,
restriction, or credit.

        Bruno M. Larsen -- G I N A C O -1983        Sun City, Arizona


BLUEMENU.BAS

2 LOCATE,,,0,7
10 REM ******************  BLUEMENU.BAS PROGRAM **************************
15 CLS:CLEAR :SCREEN 0,0,0: WIDTH 80:COLOR 7,0:FOR I=1 TO 10:KEY I,"":NEXT
20 DIM AA$(100),N(100):KEY OFF:DEF SEG:POKE 91,24:POKE 92,25
25 KEY 2,CHR$(64):KEY 6,CHR$(35):KEY 10,"GOTO 65100"+CHR$(13)
30 LOCATE 3,1:PRINT CHR$(1);STRING$(78,1);CHR$(1);
40 FOR I=4 TO 21:LOCATE I,1:PRINT CHR$(1);:LOCATE I,80:PRINT CHR$(1);:NEXT
50 LOCATE 22,1:PRINT CHR$(1);STRING$(78,1);CHR$(1);
60 LOCATE 5,20:PRINT "B L U E B E R R Y    P I E     M E N U         (Page 1)";
80 LOCATE 7,5:PRINT"The next page contains a menu of the programs on this disk.  This disk "
100 LOCATE 8,5:PRINT"does not have DOS or BASICA installed, nor is their room with DOS 2.0."
120 LOCATE 9,5:PRINT"To use this disk:  Use DOS to load  BASICA. Put this disk in Drive A:."
140 LOCATE 10,5:PRINT"Load and run STARTUP.BAS or STARTUP.CLR and follow prompts. The MENU will"
150 LOCATE 11,5:PRINT"come up. Programs load directly from the MENU.  Programs with the suffix"
160 LOCATE 12,5:PRINT".CLR will run in color or monochrome. Programs with the suffix .GRA use"
165 LOCATE 13,5:PRINT"the COLOR/GRAPHICS board.
170 LOCATE 15,5:PRINT"     To see MENU page 2, press < F2 >. To eliminate this Page 1 on future"
180 LOCATE 16,5:PRINT"callups of the MENU, remove WRITE PROTECT TAB. Put BLUEBERRY Pie in DRIVE"
182 LOCATE 17,5:PRINT"A: and Press  < F6 >.  When Break in 6100 appears, <ENTER> 25 GOTO 210."
184 LOCATE 18,5:PRINT"Then press < F10 >. Thereafter, only page 2 of BLUEMENU will appear."
190 LOCATE 20,28,0,14,0:PRINT"PRESS < F2 > TO CONTINUE"
192 IN$=INKEY$:IF IN$="" THEN 192
194 IF IN$=CHR$(64) THEN 210
196 IF IN$=CHR$(35) THEN 2640
200 SOUND 400,5:GOTO 192
210 FOR I=1 TO 10:KEY I,"":NEXT:KEY OFF: COLOR 7,0:LOCATE 24,25,0:PRINT"PLEASE STAND BY -- READING DATA";:GOSUB 1000:LOCATE 24,1,1,0,7:PRINT SPC(77);
220 CLS:LOCATE 2,1:PRINT CHR$(1);STRING$(78,1);CHR$(1);
230 FOR I = 3 TO 22:LOCATE I,1:PRINT CHR$(1);:LOCATE I,80:PRINT CHR$(1);:NEXT
240 LOCATE 23,1:PRINT CHR$(1);STRING$(78,1);CHR$(1);
250 LOCATE 4,20:PRINT "B L U E B E R R Y    P I E     M E N U ";
260 I=6:LOCATE I,4:PRINT AA$(1);CHR$(16);N(1):LOCATE I,23:PRINT AA$(2);CHR$(16);N(2):LOCATE I,42:PRINT AA$(3);CHR$(16);N(3):LOCATE I,61:PRINT AA$(4);CHR$(16);N(4)
270 I=7:LOCATE I,4:PRINT AA$(5);CHR$(16);N(5):LOCATE I,23:PRINT AA$(6);CHR$(16);N(6):LOCATE I,42:PRINT AA$(7);CHR$(16);N(7):LOCATE I,61:PRINT AA$(8);CHR$(16);N(8)
280 I=8:LOCATE I,4:PRINT AA$(9);CHR$(16);N(9):LOCATE I,23:PRINT AA$(10);CHR$(16);N(10):LOCATE I,42:PRINT AA$(11);CHR$(16);N(11):LOCATE I,61:PRINT AA$(12);CHR$(16);N(12)
290 I=9:LOCATE I,4:PRINT AA$(13);CHR$(16);N(13):LOCATE I,23:PRINT AA$(14);CHR$(16);N(14):LOCATE I,42:PRINT AA$(15);CHR$(16);N(15):LOCATE I,61:PRINT AA$(16);CHR$(16);N(16)
300 I=10:LOCATE I,4:PRINT AA$(17);CHR$(16);N(17):LOCATE I,23:PRINT AA$(18);CHR$(16);N(18):LOCATE I,42:PRINT AA$(19);CHR$(16);N(19):LOCATE I,61:PRINT AA$(20);CHR$(16);N(20)
310 I=11:LOCATE I,4:PRINT AA$(21);CHR$(16);N(21):LOCATE I,23:PRINT AA$(22);CHR$(16);N(22):LOCATE I,42:PRINT AA$(23);CHR$(16);N(23):LOCATE I,61:PRINT AA$(24);CHR$(16);N(24)
320 I=12:LOCATE I,4:PRINT AA$(25);CHR$(16);N(25):LOCATE I,23:PRINT AA$(26);CHR$(16);N(26):LOCATE I,42:PRINT AA$(27);CHR$(16);N(27):LOCATE I,61:PRINT AA$(28);CHR$(16);N(28)
330 I=13:LOCATE I,4:PRINT AA$(29);CHR$(16);N(29):LOCATE I,23:PRINT AA$(30);CHR$(16);N(30):LOCATE I,42:PRINT AA$(31);CHR$(16);N(31):LOCATE I,61:PRINT AA$(32);CHR$(16);N(32)
340 I=14:LOCATE I,4:PRINT AA$(33);CHR$(16);N(33):LOCATE I,23:PRINT AA$(34);CHR$(16);N(34):LOCATE I,42:PRINT AA$(35);CHR$(16);N(35):LOCATE I,61:PRINT AA$(36);CHR$(16);N(36)
350 I=15:LOCATE I,4:PRINT AA$(37);CHR$(16);N(37):LOCATE I,23:PRINT AA$(38);CHR$(16);N(38):LOCATE I,42:PRINT AA$(39);CHR$(16);N(39):LOCATE I,61:PRINT AA$(40);CHR$(16);N(40)
355 I=16:LOCATE I,4:PRINT AA$(41);CHR$(16);N(41):LOCATE I,23:PRINT AA$(42);CHR$(16);N(42):LOCATE I,42:PRINT AA$(43);CHR$(16);N(43): LOCATE I,61:PRINT AA$(44);CHR$(16);N(44)
356 I=17:LOCATE I,4:PRINT AA$(45);CHR$(16);N(45):LOCATE I,23:PRINT AA$(46);CHR$(16);N(46): LOCATE I,42:PRINT AA$(47);CHR$(16);N(47): LOCATE I,61:PRINT AA$(48);CHR$(16);N(48)
357 I=18:LOCATE I,4:PRINT AA$(49);CHR$(16);N(49):LOCATE I,23:PRINT AA$(50);CHR$(16);N(50):LOCATE I,42:PRINT AA$(51);CHR$(16);N(51): LOCATE I,61:PRINT AA$(52);CHR$(16);N(52)
359 I=19:LOCATE I,4:PRINT AA$(53);CHR$(16);N(53):LOCATE I,23:PRINT AA$(54);CHR$(16);N(54): LOCATE I,42:PRINT AA$(55);CHR$(16);N(55): LOCATE I,61:PRINT AA$(56);CHR$(16);N(56)
360 LOCATE 21,5:PRINT SPC(50);:LOCATE 20,5:PRINT SPC(50);:LOCATE 21,31:PRINT"SELECT A PROGRAM ";:LINE INPUT;PROGRAM$
370 N = VAL(PROGRAM$)
372 IF (N < 1 OR N > 56 ) THEN 360
374 POKE 91,2:POKE 92,24
380 ON N GOTO 2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420
385 ON N-43 GOTO 2430,2440,2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2550
390 ON ERROR GOTO 0
1000 ' ************************ MENU SELECTION LIST ************************
1010 P = 56
1020 FOR J=1 TO P
1030 READ AA$(J),N(J)
1040 DATA "ALPHAHEX.BAS",1:     REM LN  2000
1050 DATA "BLUEBERY.BAS",2:     REM     2010
1060 DATA "BLUEBERY.DOC",3:     REM     2020
1070 DATA "BLUEBRY2.DOC",4:     REM     2030
1080 DATA "BLUEMENU.BAS",5:     REM     2040
1090 DATA "BOXINBOX.BAS",6:     REM LN  2050
1100 DATA "BOXINPUT.BAS",7:     REM     2060
1110 DATA "BUSCHECK.BAS",8:     REM     2070
1120 DATA "CALULATE.BAS",9:     REM     2080
1130 DATA "CHEKFORM.BAS",10:    REM     2090
1140 DATA "CHR$PRNT.BAS",11:    REM LN  2100
1150 DATA "CIRCLE  .GRA",12:    REM     2110
1160 DATA "COLORSEE.CLR",13:    REM     2120
1170 DATA "COMPOUND.BAS",14:    REM     2130
1180 DATA "D&CFORM .BAS",15:    REM     2140
1190 DATA "EASYRITE.BAS",16:    REM     2145
1200 DATA "EASYWORD.BAS",17:    REM LN  2150
1210 DATA "EPSONSET.BAS",18:    REM     2160
1220 DATA "ESCKEY  .BAS",19:    REM     2170
1230 DATA "FILEDATE.BAS",20:    REM     2180
1240 DATA "GASFORM .BAS",21:    REM     2190
1250 DATA "GENLEGER.BAS",22:    REM     2195
1260 DATA "GLEGER.DAT  ",23:    REM     2197
1270 DATA "HEADCLN .BAS",24:    REM LN  2200
1280 DATA "HEXPRINT.BAS",25:    REM     2210
1290 DATA "HEXSAY  .BAS",26:    REM     2220
1300 DATA "IBMLABEL.BAS",27:    REM     2230
1310 DATA "KEYSET  .BAS",28:    REM     2240
1320 DATA "LABLFILE.BAS",29:    REM LN  2250
1330 DATA "LISTSKIP.10P",30:    REM     2252
1340 DATA "LISTSKIP,17P",31:    REM     2255
1350 DATA "LPT12SET.BAS",32:    REM     2260
1360 DATA "MENUPRNT.BAS",33:    REM     2270
1370 DATA "NICELIST.BAS",34:    REM     2290
1380 DATA "PC-COLOR.BAS",35:    REM LN  2300
1390 DATA "PCADD   .GRA",36:    REM     2310
1400 DATA "PEEKPRNT.BAS",37:    REM     2320
1410 DATA "PRNTCALL.BAS",38:    REM     2330
1420 DATA "PROGHEAD.BAS",39:    REM     2340
1430 DATA "QUICKBOX.CLR",40:    REM LN  2350
1440 DATA "RANDSEED.BAS",41:    REM     2360
1450 DATA "SAVINGS .BAS",42:    REM     2380
1460 DATA "SHOWBOX .BAS",43:    REM     2390
1470 DATA "SIXBOXES.BAS",44:    REM LN  2400
1480 DATA "STARTUP .BAS",45:    REM     2410
1490 DATA "STARTUP .CLR",46:    REM     2420
1500 DATA "TASKLIST.BAS",47:    REM     2430
1510 DATA "TESTWRIT.BAS",48:    REM     2462
1520 DATA "TESTWRIT.DOC",49:    REM     2464
1530 DATA "TIMESHOW.BAS",50:    REM     2460
1540 DATA "WEIGHTFM.BAS",51:    REM     2470
1550 DATA "YESORNO .BAS",52:    REM     2480
1560 DATA "YOURMENU.BAS",53:    REM     2510
1570 DATA "ZIPCLEAR.BAS",54:    REM     2520
1580 DATA "   README   ",55:    REM     2530
1590 DATA "     GO     ",56:    REM     2540
1600 DATA "--------.BAS",57:    REM LN  2550
1610 DATA "--------.BAS",58:    REM     2560
1620 DATA "--------.BAS",59:    REM     2590
1630 NEXT J
1640 RETURN
1650 GOTO 210
1990 ' ************************** GET PROGRAM SECTION ********************
2000 RUN "ALPHAHEX.BAS"
2010 RUN "BLUEBERY.BAS"
2020 POKE 91,24:POKE 92,25:GOTO 2590
2030 POKE 91,24:POKE 92,25:GOTO 2590
2040 RUN "BLUEMENU.BAS"
2050 RUN "BOXINBOX.BAS"
2060 RUN "BOXINPUT.BAS"
2070 RUN "BUSCHECK.BAS"
2080 RUN "CALULATE.BAS"
2090 RUN "CHEKFORM.BAS"
2100 RUN "CHR$PRNT.BAS"
2110 RUN "CIRCLE  .GRA"
2120 RUN "COLORSEE.CLR"
2130 RUN "COMPOUND.BAS"
2140 RUN "D&CFORM .BAS"
2150 RUN "EASYRITE.BAS"
2160 RUN "EASYWORD.BAS"
2170 RUN "EPSONSET.BAS"
2180 RUN "ESCKEY  .BAS"
2190 RUN "FILEDATE.BAS"
2200 RUN "GASFORM .BAS"
2210 RUN "GENLEGER.BAS"
2220 POKE 91,24:POKE 92,25:GOTO 2580
2230 RUN "HEADCLN .BAS"
2240 RUN "HEXPRINT.BAS"
2250 RUN "HEXSAY  .BAS"
2260 RUN "IBMLABEL.BAS"
2270 RUN "KEYSET  .BAS"
2280 RUN "LABLFILE.BAS"
2290 RUN "LISTSKIP.10P"
2300 RUN "LISTSKIP.17P"
2310 RUN "LPT12SET.BAS"
2320 RUN "MENUPRNT.BAS"
2330 RUN "NICELIST.BAS"
2340 RUN "PC-COLOR.BAS"
2350 RUN "PCADD   .GRA"
2360 RUN "PEEKPRNT.BAS"
2370 RUN "PRNTCALL.BAS"
2380 RUN "PROGHEAD.BAS"
2390 RUN "QUICKBOX.CLR"
2400 RUN "RANDSEED.BAS"
2410 RUN "SAVINGS .BAS"
2420 RUN "SHOWBOX .BAS"
2430 RUN "SIXBOXES.BAS"
2440 RUN "STARTUP .BAS"
2450 RUN "STARTUP .CLR"
2460 RUN "TASKLIST.BAS"
2470 RUN "TESTWRIT.BAS"
2480 POKE 91,24:POKE 92,25:GOTO 2610
2490 RUN "TIMESHOW.BAS"
2500 RUN "WEIGHTFM.BAS"
2510 RUN "YESORNO .BAS"
2520 RUN "YOURMENU.BAS"
2530 RUN "ZIPCLEAR.BAS"
2540 POKE 91,24:POKE 92,25:GOTO 2600
2550 POKE 91,24:POKE 92,25:GOTO 2620
2560 GOTO 210
2570 REM **************** CUT OFF FOR NON-BASIC SELECTION *******************
2580 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- DATA FILE TO BE LOADED BY GENLEGER.BAS.";:FOR I = 1 TO 4000:NEXT:GOTO 2630
2590 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- LOAD FROM DOS WITH 'TYPE' COMMAND.";:FOR I = 1 TO 4000:NEXT:GOTO 2630
2600 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- LOAD FROM DOS WITH 'TYPE' COMMAND.";:FOR I = 1 TO 4000:NEXT:GOTO 2630
2610 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- DATA FILE TO BE LOADED BY TESTWRIT.BAS.";:FOR I = 1 TO 4000:NEXT:GOTO 2630
2620 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- READ IN DOS BY ENTERING COMMAND 'GO'";:FOR I = 1 TO 4000!:NEXT:GOTO 2630
2630 LOCATE 25,10:PRINT SPC(65);:GOTO 360
2640 LOCATE,,,0,7:GOTO 2650
2650 STOP
2660 END
2670 REM **********************  SAVE	ROUTINE ****************************
2680 END
65100 COLOR 7,0:SAVE"A:BLUEMENU.BAS"
65200 GOTO 10

BOXINBOX.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '***************** FORMATTED BOXES FOR PROGRAM USE   ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║         FORMATTED BOXES WHICH CAN BE ALTERED OR MOVED BY CHANGES        ║
20 '║                                                                         ║
22 '║     This program provides four formatted "quick boxes" which may be     ║
24 '║  moved to any place on the screen by changing the coordinates.  They    ║
26 '║  may be changed in form by altering the CHR$ characters used for the    ║
28 '║  corners, the tops and the sides.  The appropriate CHR$ character       ║
30 '║  designation can be found in the table in Appendix G, IBM Basic Manual, ║
32 '║  pages C12 and C13.     A color monitor version using different format- ║
33 '║  ting is BOXINBOX.CLR (c) G I N A C O  -- 1983    Ver 5.1/160/320       ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 SCREEN 0,0,0: WIDTH 80: CLEAR: KEY OFF: COLOR 7,0:LOCATE ,,0
110 REM ************************* SMALL CENTER BOX ***************************
120 CLS:COLOR 7,0
130 LOCATE 10,40
140 PRINT CHR$(201); CHR$(205); CHR$(205); CHR$(187)
150 LOCATE 11,40
160 PRINT CHR$(186);"  "; CHR$(186);
170 LOCATE 12,40
180 PRINT CHR$(200); CHR$(205); CHR$(205); CHR$(188)
190
200 :REM ********************* BOX ROW 9-13, ROW 27-57 ***********************
210 FOR A! = 28 TO 56
220   COLOR 7,0
230   LOCATE 9,A!
240   PRINT CHR$(205)
250 NEXT
260 LOCATE 9,57
270 PRINT CHR$(187)
280 FOR B! = 10 TO 12
290   LOCATE B!,57
300   PRINT CHR$(186)
310 NEXT
320 LOCATE 13,57
330 PRINT CHR$(188)
340 FOR C! = 56 TO 28 STEP - 1
350   LOCATE 13,C!
360   PRINT CHR$(205)
370 NEXT
380 LOCATE 13,27
390 PRINT CHR$(200)
400 FOR D! = 12 TO 10 STEP - 1
410   LOCATE D!,27
420   PRINT CHR$(186)
430 NEXT
440 LOCATE 9,27
450 PRINT CHR$(201)
460
470 :REM ****************  BOX ROW 7-17, COLUMN 18-66 *************************
480 FOR A! = 18 TO 66
490   COLOR 7,0
500   LOCATE 6,A!
510   PRINT CHR$(205)
520 NEXT
530 LOCATE 6,67
540 PRINT CHR$(187)
550 FOR B! = 7 TO 15
560   LOCATE B!,67
570   PRINT CHR$(186)
580 NEXT
590 LOCATE 16,67
600 PRINT CHR$(188)
610 FOR C! = 66 TO 18 STEP - 1
620   LOCATE 16,C!
630   PRINT CHR$(205)
640 NEXT
650 LOCATE 16,17
660 PRINT CHR$(200)
670 FOR D! = 15 TO 7 STEP - 1
680   LOCATE D!,17
690   PRINT CHR$(186)
700 NEXT
710 LOCATE 6,17
720 PRINT CHR$(201)
730
740 :REM ********************* LARGEST OUTSIDE BOX ***************************
750 FOR A! = 10 TO 74
760   COLOR 7,0
770   LOCATE 3,A!
780   PRINT CHR$(205)
790 NEXT
800 LOCATE 3,75
810 PRINT CHR$(187)
820 FOR B! = 4 TO 18
830   LOCATE B!,75
840   PRINT CHR$(186)
850 NEXT
860 LOCATE 19,75
870 PRINT CHR$(188)
880 FOR C! = 74 TO 10 STEP - 1
890   LOCATE 19,C!
900   PRINT CHR$(205)
910 NEXT
920 LOCATE 19,9
930 PRINT CHR$(200)
940 FOR D! = 18 TO 4 STEP - 1
950   LOCATE D!,9
960   PRINT CHR$(186)
970 NEXT
980 LOCATE 3,9
990 PRINT CHR$(201)
1000  COLOR 7,0
1010 FOR I = 1 TO 100:NEXT
1020 LOCATE 4,20:PRINT"YOU CAN EXTRACT ANY BOX CODE AND USE IT ALONE."
1030 FOR I = 1 TO 900:NEXT
1040 LOCATE 5,17:PRINT"THE BEGINNING COLOR STATMENTS CAN BE SET AS DESIRED."
1050 FOR I = 1 TO 900:NEXT
1060 LOCATE 17,18:PRINT"THE COLOR WILL BE TURNED OFF BY THE END STATEMENT."
1070 FOR I = 1 TO 900:NEXT
1080 LOCATE 18,17:PRINT"BY CHANGING THE COORDINATES";CHR$(44);" YOU CAN MOVE THE BOXES."
1090 END
65000 REM ********************** SAVE ROUTINE ********************************
65100 SAVE"B:BOXINBOX.BAS"

BOXINPUT.BAS

5 CLS:KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT:KEY 6,"GOTO 4000"+CHR$(13):KEY 2,"GOTO 50"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 7-43
7 '**********************   SELECTED INPUT ROUTINE   *************************
10 '╔═════════════════════════════════════════════════════════════════════════╗
11 '║                Format-protecting Sting-input Routine                    ║
13 '║                                                                         ║
15 '║    This program provides a simple sub-routine which will permit selec-  ║
17 '║ tive keyboard input to a string or single element response prompt. The  ║
19 '║ ability to disable any and/or all keys except those absolutely essen-   ║
21 '║ tial to the input provide programming flexibilty and reduces operator   ║
23 '║ error opportunity.  This program is provided in two forms, color with   ║
25 '║ selective SCREEN Function demonstration, and monochrome which uses a    ║
27 '║ visible scroll method for printing and clearing. Both BLUEBERY.BAS and  ║
29 '║ LABELPRO.BAS use this protected input procedure as well as many other   ║
31 '║ programming techniques demonstrated on BLUEBERY Pie A La Mode.          ║
33 '║                                                                         ║
35 '║    MONO Version < F2 >   COLOR Version  < F6 >    BLUEMENU  < F10 >     ║
37 '║                                                                         ║
39 '║                       (u) G I N A C O  - 1983             Ver 5.2/320   ║
41 '╚═════════════════════════════════════════════════════════════════════════╝
43 '   ***** < F2 > MON0  ***** < F6 >  COLOR  ***** < F10 > BLUEMENU  *******
50 CLS:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 100"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):KEY 6,"GOTO 4000"+CHR$(13):LIST 51-69
51 '**************************   MONOCHROME VERSION  **************************
52 '╔═════════════════════════════════════════════════════════════════════════╗
53 '║                 Format-protecting Sting-input Routine                   ║
54 '║                                                                         ║
55 '║    The monochrome version is straight forward. Follow the prompts and   ║
56 '║ you will be participate in a deomonstration of protected keyboard in-   ║
57 '║ put. The TONES used to indicate an attempt to enter an illegal stroke   ║
58 '║ or command are somewhat exagerated for demonstation purposes only. When ║
59 '║ you patch this routine into your program, you may wish to alter the     ║
60 '║ various SOUND statements to a shorter duration and a single tone or     ║
61 '║ pitch in the vicinity of 2000.  Sound 2000,4 is a comfortable tone and  ║
62 '║ duration.  This version uses a single SCREEN statement.  The color ver- ║
63 '║ sion uses the multiple SCREEN technique for demonstation purposes.      ║
64 '║                                                                         ║
65 '║    CONTINUE     < F2 >   COLOR Version  < F6 >    BLUEMENU  < F10 >     ║
66 '║                                                                         ║
67 '║                       (u) G I N A C O  - 1983             Ver 5.2/320   ║
68 '╚═════════════════════════════════════════════════════════════════════════╝
69 '   ***** < F2 > MON0  ***** < F6 >  COLOR  ***** < F10 > BLUEMENU  *******
100 REM ===== MONO VERSION LEAD IN LINE =====
110 FOR I!=1 TO 10:KEY I!,"":NEXT:LOCATE,,,O,7:SCREEN 0,0,0:
120 A$ = ""
130 B$ = ""
140 C$ = ""
150 D$ = ""
160 DEFINT A-Z
170 I% = 0
180 DIM A$(200),B$(200),C$(200),INPTR$(50),FIN$(50)
190 FINLEN% = 0
200 P! = 0
210 IN$ = ""
220 CLS
230 KEY OFF
240 GOSUB 1490
250 GOSUB 1020
260 GOSUB 1170
270 GOSUB 1340
280 LOCATE 3,22
290 PRINT " Protected-Format String-Input Routine "
300 LOCATE 5,11
310 PRINT "This is an example of a limited keystoke input routine which"
320 LOCATE 6,11
330 PRINT "prevents keyboard input of destructive or unauthorized char-"
340 LOCATE 7,11
350 PRINT "acters or keys.  Note that the backspace key will not deface"
360 LOCATE 8,11
370 PRINT "the format border.  Also, the EDIT cursor keys on the numer-"
380 LOCATE 9,11
390 PRINT "ic key pad and the F(KEYS) are disabled.  The routine can be"
400 LOCATE 10,11
410 PRINT "easily modified by the call statement to accept any specific"
420 LOCATE 11,11
430 PRINT "characters or symbols using a CHR$ identification.   This is"
440 LOCATE 12,11
450 PRINT "demonstrated below by  accepting only the alpha characters A"
460 LOCATE 13,11
470 PRINT "through z in Line 1 and only 0 thru 9 in Line 2.  An examin-"
480 LOCATE 15,26
490 PRINT "  Press <ENTER> to Continue  ";
500 IN$ = INKEY$
510 IF IN$ = "" THEN 500
520 IF IN$ = CHR$(13) THEN 560
530 SOUND 300,3
540 SOUND 400,3
550 GOTO 500
560 LOCATE 3,20:PRINT STRING$(42,"═"):LOCATE 3,28:
570 PRINT "  Continued Description "
580 FOR I=4 TO 14:LOCATE I,7:PRINT SPC(65):NEXT
590 LOCATE 5,10:PRINT "ation of the call statements will show that acceptable input is"
600 LOCATE 6,10
610 PRINT "established by setting an upper and lower CHR$ range."
620 LOCATE 8,10
630 PRINT "This sub-routine is simple to extract and use. BLUEBERY.BAS and"
640 LOCATE 9,10
650 PRINT "and LABELPRO.BAS provide practical examples of this routine and"
660 LOCATE 10,10
670 PRINT "other programming techniques demonstrated on this disk."
680 LOCATE 15,26
690 PRINT "  Press <ENTER> to Continue  "
700 IN$ = INKEY$
710 IF IN$ = "" THEN 700
720 IF IN$ = CHR$(13) THEN 760
730 SOUND 300,3
740 SOUND 400,3
750 GOTO 700
760 FOR L% = 4 TO 14:LOCATE L%,10:PRINT SPC(65):NEXT
770 LOCATE 3,20:PRINT STRING$(50,"═")
780 LOCATE 3,22
790 PRINT " Protected-Format String-Input Routine "
800 LOCATE 17,20
810 PRINT "  ENTER APPROPRIATE KEYBOARD CHARACTERS  ";
820 LOCATE 23,29
830 PRINT "  Press < F6 > to Quit  "
840 LOCATE 19,10
850 PRINT "LINE 1: (A to z) <30 Max>"
860 LOCATE 19,40
870 PRINT STRING$(30,254)
880 LOCATE 21,10
890 PRINT "LINE 2: (#'S only) <10 Max>"
900 LOCATE 21,40
910 PRINT STRING$(10,254)
920 FOR I=8 TO 12:LOCATE I,7:PRINT SPC(68):NEXT
930 LOCATE 8,10
940 PRINT "Line #1 Printout: "
950 LOCATE 10,10
960 PRINT "line #2 Printout: "
970 GOTO 1780
980 LOCATE 8,40:PRINT STRING$(30,254):LOCATE 10,40:PRINT STRING$(10,254);
990 LOCATE 19,40:PRINT STRING$(30,254):LOCATE 21,40:PRINT STRING$(10,254);
1000 GOTO 1780
1010 =====  TOP BOX PRINTOUT =====
1020 WW% = 69
1030 TL% = 3
1040 LL% = 15
1050 LC% = 6
1060 LOCATE TL%,LC%,0,0,7
1070 PRINT TLC$; STRING$(WW%,HL$);TRC$;
1080 FOR I% = (TL% + 1) TO (LL% - 1)
1090   LOCATE I%,LC%,0
1100   PRINT VL$;
1110   LOCATE I%, (LC% + WW% + 1),0
1120   PRINT VL$;
1130 NEXT
1140 LOCATE LL%,LC%,0
1150 PRINT BLC$; STRING$(WW%,HL$);BRC$;
1160 RETURN
1170 REM =====  PRINT BOX 1 =====
1180 WW% = 76
1190 TL% = 1
1200 LL% = 24
1210 LC% = 2
1220 LOCATE TL%,LC%,0
1230 PRINT TLC$; STRING$(WW%,HL$);TRC$;
1240 FOR I% = (TL% + 1) TO (LL% - 1)
1250   LOCATE I%,LC%,0
1260   PRINT VL$;
1270   LOCATE I%, (LC% + WW% + 1),0
1280   PRINT VL$;
1290 NEXT
1300 LOCATE LL%,LC%,0
1310 PRINT BLC$; STRING$(WW%,HL$);BRC$;
1320 RETURN
1330 REM =====  PRINT BOX 2 =====
1340 WW% = 69
1350 TL% = 17
1360 LL% = 23
1370 LC% = 6
1380 LOCATE TL%,LC%,0
1390 PRINT TLC$; STRING$(WW%,HL$);TRC$;
1400 FOR I% = (TL% + 1) TO (LL% - 1)
1410   LOCATE I%,LC%,0
1420   PRINT VL$;
1430   LOCATE I%, (LC% + WW% + 1),0
1440   PRINT VL$;
1450 NEXT
1460 LOCATE LL%,LC%,0
1470 PRINT BLC$; STRING$(WW%,HL$);BRC$;
1480 RETURN
1490 REM =====  INITIALIZATION ROUTINE =====
1500 TLC$ = CHR$(201)
1510 TRC$ = CHR$(187)
1520 HL$ = CHR$(205)
1530 BLC$ = CHR$(200)
1540 BRC$ = CHR$(188)
1550 VL$ = CHR$(186)
1560 RETURN
1570 REM =====  INPUT ROUTINE FOR LETTER RESPONSES =====
1580 KEY 6, CHR$(64)
1590 FIN$ = ""
1600 IF FINLEN% = 0 THEN FINLEN% = 255
1610 IF INKEY$ > < "" THEN 1610
1620 INPTR$ = INKEY$
1630 IF INPTR$ = "" THEN 1620
1640 IF INPTR$ = CHR$(64) THEN 2000
1650 IF INPTR$ = CHR$(13) THEN RETURN
1660 IF INPTR$ < > CHR$(8) THEN 1710
1670 IF LEN(FIN$) = 0 THEN SOUND 400,3 : GOTO 1620
1680 PRINT CHR$(29);"■"; CHR$(29);
1690 FIN$ = LEFT$(FIN$, LEN(FIN$) - 1)
1700 GOTO 1620
1710 IF LEN(FIN$) = FINLEN% THEN SOUND 600,4 : GOTO 1620
1720 IF INPTR$ = CHR$(32) THEN 1740
1730 IF ( ASC(INPTR$) < ASC(BEGIN$) OR ASC(INPTR$) > ASC(BOTTOM$)) THEN SOUND 200,4 : SOUND 400,3 : SOUND 600,2 : GOTO 1620
1740 PRINT INPTR$;
1750 FIN$ = FIN$ + INPTR$
1760 GOTO 1620
1770 END
1780 REM =====  ACTUAL INPUT COMMAND ROUTINE =====
1790 REM =====  INPUT FOR ALPHA CHARACTERS ON LINE 1 =====
1800 LOCATE 19,40,1,0,7
1810 FINLEN% = 30
1820 BEGIN$ = CHR$(65)
1830 BOTTOM$ = CHR$(122)
1840 GOSUB 1570
1850 A$ = FIN$
1860 LOCATE 8,40,0
1870 PRINT A$
1880 REM =====  INPUT FOR NUMBERS ONLY ON LINE 2 =====
1890 LOCATE 21,40,1,0,7
1900 FINLEN% = 10
1910 BEGIN$ = CHR$(48)
1920 BOTTOM$ = CHR$(57)
1930 GOSUB 1570
1940 B$ = FIN$
1950 LOCATE 10,40,0
1960 PRINT B$
1970 FOR I% = 1 TO 3000
1980 NEXT
1990 GOTO 980
2000 CLS
2010 END
4000 CLS:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 4100"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):KEY 6,"GOTO 69"+CHR$(13):LIST 4002-4038
4002 '********************  COLOR/GRAPHICS VERSION  *************************
4004 '╔═════════════════════════════════════════════════════════════════════╗
4006 '║             Format-protecting Sting-input Routine                   ║
4008 '║                                                                     ║
4010 '║     The comments which appear on the Lead-in and Monochrome version ║
4012 '║ apply equally to this version. You will obtain more information as  ║
4014 '║ the program progresses.  One warning. This program is written in a  ║
4016 '║ Multi-screen format. Should you break out of the program when the   ║
4018 '║ active and visual screen are not the same, it will appear that you  ║
4020 '║ cannot control or regain your cursor.  Do not give up and BOOT the  ║
4022 '║ system.  Enter the following commands (even if you cannot see them  ║
4024 '║ on the screen) and you should regain control of the cursor. You can ║
4026 '║ then do as you wish and see the commands. Type and <ENTER> in this  ║
4027 '║ sequence. (You should gain control after one of them): SCREEN,,0    ║
4028 '║ SCREEN,,1 and SCREEN,,2                                             ║
4029 '║                                                                     ║
4030 '║   CONTINUE     < F2 >    MONO Version  < F6 >    BLUEMENU  < F10 >  ║
4032 '║                                                                     ║
4034 '║                   (u) G I N A C O  - 1983             Ver 5.2/320   ║
4036 '╚═════════════════════════════════════════════════════════════════════╝
4038 ' ***** < F2 > MON0  ***** < F6 >  COLOR  ***** < F10 > BLUEMENU  ****
4100 FOR I=1 TO 10:KEY I,"":NEXT:LOCATE,,,0,7:SCREEN 0,1,0,0:A$="":B$="":C$="":D$="":DEFINT A-Z:I=0:DIM A$(200),B$(200),C$(200),INPTR$(50),FIN$(50):FINLEN=0:P!=0:IN$="":SCREEN,,2:CLS:SCREEN,,1:CLS:SCREEN,,0:CLS
4110 CLS:KEY OFF:GOSUB 4470:GOSUB 4420:GOSUB 4440:GOSUB 4460
4120 LOCATE 3,22:PRINT" Protected-Format String-Input Routine ":LOCATE 5,11:PRINT"This is an example of a limited keystoke input routine which":LOCATE 6,11:PRINT"prevents keyboard input of destructive or unauthorized char-"
4130 LOCATE 7,11:PRINT"acters or keys.  Note that the backspace key will not deface":LOCATE 8,11:PRINT"the format border.  Also, the EDIT cursor keys on the numer-":LOCATE 9,11:PRINT"ic key pad and the F(KEYS) are disabled.  The routine can be"
4140 LOCATE 10,11:PRINT"easily modified by the call statement to accept any specific":LOCATE 11,11:PRINT"characters or symbols using a CHR$ identification.   This is":LOCATE 12,11:PRINT"demonstrated below by  accepting only the alpha characters A"
4150 LOCATE 13,11:PRINT"through z in Line 1 and only 0 thru 9 in Line 2.  An examin-":LOCATE 15,28:PRINT"  Press <ENTER> to Continue  "
4160 SCREEN,,2,0:GOSUB 4420:GOSUB 4440:GOSUB 4460
4170 IN$=INKEY$:IF IN$="" THEN 4170
4180 IF IN$=CHR$(13) THEN 4200
4190 SOUND 300,3:SOUND 400,3:GOTO 4170
4200 'SCREEN,,2,0:GOSUB 1040:GOSUB 1220:GOSUB 1400
4210 SCREEN,,2,2:LOCATE 3,28:PRINT"  Continued Description ":LOCATE 5,10:PRINT"ation of the call statements will show that acceptable input is":LOCATE 6,10:PRINT"established by setting an upper and lower CHR$ range."
4220 LOCATE 8,10:PRINT"This sub-routine is simple to extract and use. BLUEBERY.BAS and":LOCATE 9,10:PRINT"and LABELPRO.BAS provide practical examples of this routine and"
4230 LOCATE 10,10:PRINT"other programming techniques demonstrated on this disk.":LOCATE 12,10:PRINT"This program also demonstates use of multiple SCREEN statements":LOCATE 13,10:PRINT"which have specific use in color/graphic displays.
4240 SCREEN ,,0,2:FOR L=4 TO 14:LOCATE L,10:PRINT SPC(65):NEXT:LOCATE 15,21:PRINT"  ENTER APPROPRIATE KEYBOARD CHARACTERS  ";:LOCATE 23,31:PRINT"  Press < F6 > to Quit  ":SCREEN,,2,2
4250 LOCATE 15,28:PRINT"  Press <ENTER> to Continue  "
4260 IN$=INKEY$:IF IN$="" THEN 4260
4270 IF IN$=CHR$(13) THEN 4290
4280 SOUND 300,3:SOUND 400,3:GOTO 4260
4290 SCREEN,,0,0
4300 LOCATE 19,10:PRINT"LINE 1: (A to z)":LOCATE 19,40:PRINT STRING$(30,254):LOCATE 21,10:PRINT "LINE 2: (#'S only)":LOCATE 21,40:PRINT STRING$(10,254)
4310 SCREEN 0,1,0,0:COLOR 3,0:LOCATE 8,10:PRINT"Line #1 Printout: ":LOCATE 10,10:PRINT "line #2 Printout: ":COLOR 7,0
4320 SCREEN 0,1,1,0:CLS:COLOR 3,0:LOCATE 8,10:PRINT"Line #1 Printout: ":LOCATE 10,10:PRINT "line #2 Printout: ":LOCATE 20,30:PRINT"PRESS <ENTER> TO CONTINUE";:COLOR 7,0:SCREEN,,0,0
4330 SCREEN,,1,0:LOCATE 8,40:COLOR 4,0:PRINT STRING$(30,254);:LOCATE 10,40:PRINT STRING$(10,254);:COLOR 7,0:SCREEN,,0,0:'LOCATE 08,40:PRINT SPC(30):LOCATE 10,40:PRINT SPC(10);
4340 GOTO 4660
4350 SCREEN,,0,1:LOCATE 8,40:PRINT SPC(30):LOCATE 10,40:PRINT SPC(30);:SCREEN,,1,1
4360 SCREEN ,,1,1:LOCATE 8,20  'PRINT"PRESS <ENTER> TO CONTINUE";
4370 IN$=INKEY$:IF IN$="" THEN 4370
4380 IF IN$=CHR$(13) THEN 4400
4390 SOUND 600,4:SOUND 400,4:GOTO 4370
4400 SCREEN ,,0,0
4410 GOTO 4300
4420 COLOR 6,0:WW=69:TL=3:LL=15:LC=6:LOCATE TL,LC,0,0,7:PRINT TLC$;STRING$(WW,HL$);TRC$;:FOR I=(TL+1)TO(LL-1):LOCATE I,LC,0:PRINT VL$;:LOCATE I,(LC+WW+1),0:PRINT VL$;:NEXT:LOCATE LL,LC,0:PRINT BLC$;STRING$(WW,HL$);BRC$;:COLOR 7,0:RETURN
4430 REM =====  PRINT BOX 1 =====
4440 COLOR7,0:WW=76:TL=1:LL=24:LC=2:LOCATETL,LC,0:PRINTTLC$;STRING$(WW,HL$);TRC$;:FORI=(TL+1)TO(LL-1):LOCATEI,LC,0:PRINTVL$;:LOCATEI,(LC+WW+1),0:PRINTVL$;:NEXT:LOCATELL,LC,0:PRINTBLC$;STRING$(WW,HL$);BRC$;:COLOR7,0:RETURN
4450 REM =====  PRINT BOX 2 =====
4460 WW=69:TL=17:LL=23:LC=6:LOCATE TL,LC,0:PRINT TLC$;STRING$(WW,HL$);TRC$;:FOR I=(TL+1)TO(LL-1):LOCATE I,LC,0:PRINT VL$;:LOCATE I,(LC+WW+1),0:PRINT VL$;:NEXT:LOCATE LL,LC,0:PRINT BLC$;STRING$(WW,HL$);BRC$;:RETURN
4470 REM =====  INITIALIZATION ROUTINE =====
4480 TLC$=CHR$(201):TRC$=CHR$(187):HL$=CHR$(205):BLC$=CHR$(200):BRC$=CHR$(188):VL$=CHR$(186):RETURN
4490 REM =====  INPUT ROUTINE FOR LETTER RESPONSES =====
4500 KEY 6,CHR$(64)
4510 FIN$="":IFFINLEN=0 THENFINLEN=255
4520 IF INKEY$><""THEN 4520
4530 INPTR$=INKEY$:IF INPTR$=""THEN 4530
4540 IF INPTR$=CHR$(64)THEN 64000
4550 IF INPTR$=CHR$(13)THEN RETURN
4560 IF INPTR$<>CHR$(8)THEN 4610
4570 IF LEN(FIN$)=0 THEN SOUND 400,3:GOTO 4530
4580 PRINT CHR$(29);"■";CHR$(29);
4590 FIN$=LEFT$(FIN$,LEN(FIN$)-1)
4600 GOTO 4530
4610 IFLEN(FIN$)=FINLENTHENSOUND600,4:GOTO4530
4620 IF INPTR$=CHR$(32) THEN 4640
4630 IF (ASC(INPTR$)<ASC(BEGIN$) OR ASC(INPTR$)>ASC(BOTTOM$)) THEN SOUND 200,4:SOUND 400,3:SOUND 600,2:GOTO 4530
4640 PRINTINPTR$;:FIN$=FIN$+INPTR$:GOTO4530
4650 END
4660 REM ===== ACTUAL INPUT COMMAND ROUTINE =====
4670 LOCATE 19,40,1,0,7:FINLEN=30:BEGIN$=CHR$(65):BOTTOM$=CHR$(122):GOSUB 4490:A$=FIN$:COLOR 7,0:LOCATE 8,40,0:PRINT A$:SCREEN,,1,0:LOCATE 8,40,0:PRINT A$:SCREEN,,0
4680 LOCATE 21,40,1:FINLEN=10:BEGIN$=CHR$(48):BOTTOM$=CHR$(57):GOSUB 4490:B$=FIN$:COLOR 7,0:LOCATE 10,40,0:PRINT B$:SCREEN,,1,0:LOCATE 10,40,0:PRINT B$:FOR I=1 TO 3000:NEXT:GOTO 4350:
64000 CLS:END
65000 REM ===== SAVE ROUTINE =====
65100 SAVE"B:BOXINPUT.BAS"

BUSCHECK.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '╔═════════════════════════════════════════════════════════════════════════╗
12 '║                 BUSINESS ACCOUNT BALACING PROGRAM                       ║
14 '║                                                                         ║
16 '║    This program will provide a screen and printer output to reconcile   ║
18 '║ a business checking or other money account. It will record and print    ║
20 '║ out payee/payor, check or deposit number, and account number. If you    ║
22 '║ wish to ignore these input parameters, simply press <ENTER>. Added in-  ║
24 '║ structions will appear on the initial screen display when the program   ║
26 '║ is run.  For a less complex reconcilation program not needing payee/    ║
28 '║ payor, check number, et cetera, see SAVINGS.BAS on this disk.           ║
30 '║    This program may be used, in whole or in part, without license or    ║
32 '║ attribution.   (u)  G I N A C O  -  1983              Ver 5.2/320K      ║
34 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 CLS
110 SCREEN 0,0,0
120 WIDTH 80
130 CLEAR
140 DEFSTRS
150 KEY OFF
160 S1$ = CHR$(34)
170 LPRINT CHR$(27) CHR$(64)
180 LPRINT CHR$(27); CHR$(69)
190 CLS
200 LOCATE 5,15
210 PRINT "Q U I C K  BUSINESS CHECKBOOK  R E C O N C I L E R"
220 LOCATE 6,15
230 PRINT STRING$(50,42)
240 A$ = ""
250 B$ = ""
260 C$ = ""
270 B! = 0
280 A! = 0
290 LOCATE 8,15
300 PRINT TAB( 15)"DO NOT USE ANY <+> OR <-> SIGNS."
310 PRINT
320 PRINT TAB( 15)"ENTER ";S1$;"DEP";S1$;" FOR CHECK NUMBER TO RECORD DEPOSIT."
330 PRINT
340 PRINT TAB( 15)"IF YOU WANT A FINAL BALANCE PRINTOUT, <ENTER> "S1$"TOTAL"S1$
350 PRINT TAB( 15)"AT PAYEE OR PAYOR QUERY.  THIS WILL PERMIT FINAL EXIT."
360 PRINT
370 PRINT TAB( 15)"THE MAXIMUM NUMBER LENGTH IS $99,999.00."
380 PRINT
390 PRINT TAB( 15)"USE <ENTER> TO OMIT AN ENTRY. IF YOU DO THIS, THE"
400 PRINT TAB( 15)"FOLLOWING DOLLAR ENTRY WILL BE CONSIDERED A WITHDRAWAL."
410 GOSUB 910
420 U$ = "$###,###.##"
430 CLS
440 LOCATE 5,15
450 COLOR 7,0
460 INPUT "ENTER STARTING BALANCE";A!
470 COLOR 7,0
480 LOCATE 5,40
490 PRINT USING U$;A!
500 LPRINT TAB( 10)"BUSINESS CHECKBOOK BALANCING PROGRAM PRINTOUT"
510 LPRINT " "
520 LPRINT
530 LPRINT TAB( 40)"STARTING BALANCE: "; USING U$;A!
540 LPRINT
550 LPRINT
560 PRINT
570 PRINT TAB( 15)"PAYEE OR PAYOR:  ";
580 LINE INPUT C$
590 IF LEFT$(C$,3) = "TOT" THEN 830
600 PRINT TAB( 15)"CHECK NUMBER: <OR ENTER "S1$"DEP"S1$" >  ";
610 LINE INPUT D$
620 PRINT TAB( 15)"G.L. ACCOUNT #:  ";
630 LINE INPUT AN$
640 PRINT
650 PRINT TAB( 15)"CHECK OR DEPOSIT AMOUNT:  ";
660 LINE INPUT B$
670 B! = VAL(B$)
680 IF B$ = "" THEN B! = 0
690 IF LEFT$(D$,3) = "DEP" THEN B! = B! - 2 * B!
700 A! = A! - B!
710 PRINT
720 PRINT TAB( 60)"BAL: ";
730 PRINT USING U$;A!
740 PRINT
750 LPRINT TAB( 5)"PAYEE OR PAYOR: ";C$
760 LPRINT TAB( 5)"CHECK NUMBER  : ";D$
770 LPRINT TAB( 5)"G.L. ACCOUNT #: ";AN$;
780 LPRINT TAB( 55) USING U$;B!;
790 LPRINT TAB( 70) USING U$;A!
800 LPRINT " "
810 PRINT
820 GOTO 560
830 LPRINT
840 LPRINT TAB( 50)"FINAL BAL: ";
850 LPRINT USING U$;A!
860 PRINT
870 PRINT
880 PRINT TAB( 15)"DO YOU WISH TO RECONCILE ANOTHER ACCOUNT? <Y/N> ";
890 INPUT Z$
900 IF LEFT$(Z$,1) = "Y" THEN 140  ELSE END
910 KEY OFF
920 LOCATE 25,15
930 PRINT "PRESS ";
940 COLOR 0,7
950 PRINT "  ENTER  ";
960 COLOR 7,0
970 PRINT " TO CONTINUE PROGRAM...";
980 COLOR 7,0
990 INPUT X!
1000 RETURN
1010 END
65000 '************************* SAVE ROUTINE *****************************
65100 SAVE "B:BUSCHECK.BAS"

CALULATE.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  ELECTRONIC CALCULATOR MODE!  ***************************
12 '╔═════════════════════════════════════════════════════════════════════════╗
14 '║                     SIMPLE CALCULATOR PROGRAM                           ║
16 '║ This simple program will run in SCREEN 0,0,0 WIDTH 40 in either mono-   ║
18 '║ chrome or color.  The program has been expanded to show the structure   ║
20 '║ of multiple statements.  Some of the basic routines may be applicable   ║
22 '║ to your programming efforts. Note the use of INPUT$(n) in the RESPONSE  ║
24 '║ routine. This is an interesting programming feature.  You may increase  ║
26 '║ the screen width for use with a monochrome monitor, by changing the 40  ║
28 '║ to 80 in line 160. This program, or any part, may be used without any   ║
30 '║ license or attribution.   (c)  G I N A C O  -- 1983    Ver 5.1/160/320  ║
32 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 CLS
250 CLS
260 SCREEN 0,0,0
270 WIDTH 80
280 CLEAR
290 FOR I! = 1 TO 10
300   KEY I!,""
310 NEXT
320 S$ = "###,###.##"
330 X! = 0
340 Y! = 0
350 COLOR 7,0
360 SCREEN 0,0,0
370 WIDTH 40
380 LOCATE 10,10
390 PRINT "WHAT MODE?"
400 CLS
410 LOCATE 12,1
420 PRINT " -- ADD, SUBTRACT, MULTIPLY, DIVIDE -- "
430 LOCATE 14,10
440 PRINT "SELECT A, S, M, OR D"
450 LOCATE 16,1
460 PRINT SPC( 39)
470 LOCATE 16,16
480 INPUT A$
490 IF (A$ = "A" OR A$ = "a") THEN X! = 1
500 IF (A$ = "S" OR A$ = "s") THEN X! = 2
510 IF (A$ = "M" OR A$ = "m") THEN X! = 3
520 IF (A$ = "D" OR A$ = "d") THEN X! = 4
530 IF X! < 1 OR X! > 4 THEN 540 ELSE 600
540 CLS
550 COLOR 2,0
560 LOCATE 10,8
570 PRINT "A ,D, S OR M ONLY PLEASE"
580 COLOR 7,0
590 GOTO 430
600 ON X! GOTO 610,970,1150,790
610 REM ******************** ADDITION ROUTINE *****************************
620 CLS
630 LOCATE 6,16
640 PRINT "A D D I T I O N"
650 LOCATE 8,12
660 INPUT "1st NUMBER  ",AA!
670 LOCATE 10,12
680 INPUT "ADD         ",BB!
690 CC! = AA! + BB!
700 LOCATE 12,22
710 PRINT "_________"
720 LOCATE 14,14
730 COLOR 4,0
740 PRINT "SUM IS ";
750 PRINT USING S$;CC!
760 COLOR 7,0
770 GOSUB 1330
780 ON Y! GOTO 620,100
790 REM ******************** DIVISION ROUTINE *****************************
800 CLS
810 LOCATE 6,16
820 PRINT "D I V I S I O N"
830 LOCATE 8,13
840 INPUT "1st NUMBER  ",AA!
850 LOCATE 10,13
860 INPUT "DIVIDED BY  ",BB!
870 CC! = AA! / BB!
880 LOCATE 12,22
890 PRINT "_________"
900 LOCATE 14,7
910 COLOR 2,0
920 PRINT "QUOTIENT IS ";
930 PRINT USING S$;CC!
940 COLOR 7,0
950 GOSUB 1330
960 ON Y! GOTO 800,100
970 REM ******************** SUBTRACTION ROUTINE **************************
980 CLS
990 LOCATE 6,15
1000 PRINT "S U B T R A C T I O N"
1010 LOCATE 8,12
1020 INPUT "1st NUMBER  ",AA!
1030 LOCATE 10,12
1040 INPUT "SUBTRACT    ",BB!
1050 CC! = AA! - BB!
1060 LOCATE 12,22
1070 PRINT "_________"
1080 LOCATE 14,6
1090 COLOR 2,0
1100 PRINT "DIFFERENCE IS ";
1110 PRINT USING S$;CC!
1120 COLOR 7,0
1130 GOSUB 1330
1140 ON Y! GOTO 980,100
1150 REM ******************** MULTIPLY ROUTINE *****************************
1160 CLS
1170 LOCATE 6,8
1180 PRINT "M U L T I P L I C A T I O N"
1190 LOCATE 8,12
1200 INPUT "1st NUMBER  ",AA!
1210 LOCATE 10,12
1220 INPUT "TIMES       ",BB!
1230 CC! = AA! * BB!
1240 LOCATE 12,22
1250 PRINT "_________"
1260 LOCATE 14,8
1270 COLOR 3,0
1280 PRINT "PRODUCT IS ";
1290 PRINT USING S$;CC!
1300 COLOR 7,0
1310 GOSUB 1330
1320 ON Y! GOTO 1160,100
1330 REM ******************* RESPONSE SUBROUTINE ****************************
1340 LOCATE 20,10
1350 PRINT "PRESS SPACE BAR FOR REPEAT"
1360 LOCATE 22,10
1370 PRINT "PRESS ESC FOR NEW FUNCTION"
1380 LOCATE 24,20
1390 RSP$ = INPUT$(1)
1400 IF ( ASC(RSP$) = 27 OR ASC(RSP$) = 32) THEN 1410 ELSE 1480
1410 IF ASC(RSP$) = 27 THEN Y! = 2
1420 IF ASC(RSP$) = 32 THEN Y! = 1
1430 RETURN
1440 LOCATE 22,1
1450 PRINT SPC( 254)
1460 GOTO 1340
1470 RETURN
1480 LOCATE 24,11
1490 PRINT "ESC OR SPACE-BAR PLEASE";
1500 FOR I! = 1 TO 2000
1510 NEXT
1520 LOCATE 23,1
1530 PRINT SPC( 79)
1540 GOTO 1340
1550 END
65000 REM ===== SAVE ROUTINE =====
65100 SAVE"B:CALULATE.BAS"

CHEKFORM.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** CHECK RECORD AND RECONCILING SHEET  *********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║           CHECK LEDGER AND STATMENT RECONCILIATION SHEET                ║
20 '║                                                                         ║
22 '║   This program will print a check-ledger and reconciliation sheet       ║
24 '║ which can be used in a three-ring notebook or clipboard. The program    ║
26 '║ will open with a "How many Copies? " query.  Make certain printhead is  ║
28 '║ at perforation and printer in on-line before responding. The form can   ║
30 '║ be modified for several uses by changing headings and adjusting the     ║
32 '║ print spaces in the appropriate form-generating lines.                  ║
34 '║                                                                         ║
36 '║                       (c) G I N A C O  - 1983         Ver 5.2/160/320   ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 KEY OFF:COLOR 7,0:LOCATE ,,1,0,7
110 CLS:LOCATE 10,25:INPUT"How many copies ";N
120 WIDTH "LPT1:",80
130 LPRINT CHR$(27);CHR$(69);
140 LPRINT CHR$(27);CHR$(85) + CHR$(1)
150 LPRINT CHR$(27);CHR$(69);
160 FOR NUMBER = 1 TO N
170 LPRINT STRING$(4,10);
180 LPRINT TAB(15)"MONTH____________ YEAR 198______  CHECK WORK SHEET & RECORD"
190 LPRINT
200 LPRINT STRING$(78,"=");
210 LPRINT"| DATE   CHECK #  ITEM DESCRIPTION    AMOUNT $    DEPOSIT $   BALANCE $  CLR |"
220 LPRINT"|------|--------|-------------------|-----------|----------|-----------|-----|";
230 FOR I = 1 TO 26
240 LPRINT"|      |        |                   |           |          |           |     |";
250 LPRINT"|------|--------|-------------------|-----------|----------|-----------|-----|";
260 NEXT
270 LPRINT CHR$(12)
280 NEXT NUMBER
290 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:CHEKFORM.BAS"

CHR$PRNT.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '╔═════════════════════════════════════════════════════════════════════════╗
12 '║                EPSON/GEMINI CHR$/DECIMAL/HEX$ CHART                     ║
14 '║ Formatted printout of EPSON FX-80 (GRAFTRAX) Chr$ codes with decimal &  ║
16 '║ hexadecimal equivalents.  Set printer 1 space below perforation.        ║
17 '║                                                                         ║
18 '║ During printout, the line spacing is set purposely at less than 8 lines ║
19 '║ per inch so the chart will fit on a single sheet of paper. You may make ║
20 '║ an adjustment in Line CCCC to set the spacing you want.                 ║
21 '║                       G I N A C O -- 1968             Ver 5.2/160/320   ║
22 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:FOR I=1 TO 10:KEY I,"":NEXT
210  SCREEN 0,0,0
220   WIDTH 80
230    CLEAR
240     FOR I! = 1 TO 10
250        KEY I!,""
260       NEXT
270 KEY OFF
280  COLOR 7,0
290 CLS
300  FOR I! = 1 TO 6
310     PRINT "("I!")"; CHR$(I!),
320    NEXT
330     FOR I! = 14 TO 27
340        PRINT "("I!")"; CHR$(I!),
350       NEXT
360        FOR I! = 32 TO 143
370           PRINT "("I!")"; CHR$(I!),
380          NEXT
390           GOSUB 650
400            CLS
410             FOR I! = 144 TO 255
420                PRINT "("I!")"; CHR$(I!),
430               NEXT
440                GOSUB 650
450                 CLS
460                  GOTO 470
470 LPRINT CHR$(27) CHR$(64); CHR$(27) CHR$(69); CHR$(27); CHR$(48)
480  LPRINT TAB( 15)"ASCII PRINTING CODES - DEC > CHR$ > HEX$ - EPSON/GEMINI"
490   LPRINT TAB( 5) STRING$(74,"=")
500 LPRINT TAB( 6)"DEC  >  CHR$ > HEX$       DEC  >   CHR$ > HEX$       DEC  >  CHR$ >  HEX$"
510  LPRINT TAB( 5) STRING$(74,"=")
520   DIM A$(300)
530    FOR I! = 30 TO 255
540       A$(I!) = HEX$(I!)
550      NEXT
560 LPRINT
570  FOR I! = 31 TO 126 STEP 3
580     LPRINT TAB( 4)"(";I!;")"; TAB( 15); CHR$(I!); TAB( 22);A$(I!); TAB( 31)"(";I! + 1")"; TAB( 42); CHR$(I! + 1); TAB( 49);A$(I! + 1); TAB( 58)"("I! + 2")"; TAB( 69) CHR$(I! + 2); TAB( 76);A$(I! + 2)
590    NEXT
600 FOR I! = 160 TO 255 STEP 3
610    LPRINT TAB( 4)"(";I!;")"; TAB( 15); CHR$(I!); TAB( 22);A$(I!); TAB( 31)"(";I! + 1")"; TAB( 42); CHR$(I! + 1); TAB( 49);A$(I! + 1); TAB( 58)"("I! + 2")"; TAB( 69) CHR$(I! + 2); TAB( 76);A$(I! + 2)
620   NEXT
630    LPRINT
640     END
650 KEY OFF
660  LOCATE 25,1
670   PRINT SPACE$(79);
680    LOCATE 25,12
690     PRINT "  Press ENTER to continue OR PRINT. Press ESC key to Quit ";
700      ANS$ = INPUT$(1)
710       IF ASC(ANS$) = 13 THEN RETURN  ELSE 720
720 IF ASC(ANS$) = 27 THEN 730  ELSE 650
730 END
65000 REM ===== SAVE ROUTINE =====
65100 SAVE"B:CHR$PRNT.BAS"

COMPOUND.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  COMPOUND INTEREST COMPUTER $$$$$  **********************
12 '╔═════════════════════════════════════════════════════════════════════════╗
14 '║                   BASIC COMPOUND INTEREST PROGRAM                       ║
16 '║     This program will quickly display the annual compounded value of    ║
18 '║  a sum at the end of each year -- compounded monthly. Do not use comma  ║
20 '║  when entering initial dollar amount. Enter interest as whole number.   ║
22 '║  MAXIMUM NUMBER OF YEARS IS 30.  To increase, change DIM statements in  ║
24 '║  line 120 accordingly.  This program may be used without license or     ║
26 '║  attribution. (c) G I N A C O --  1983          Ver 5.1/160/320         ║
28 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
70  SCREEN 0,0,0
80   WIDTH 80
90    CLEAR
100     FOR I! = 1 TO 10
110        KEY I!,""
120       NEXT
130 ' ** VALUE OF X PRINCIPAL AFTER Y YEARLY PERIODS (COMPOUNDED MONTHLY) **
140 DIM PR!(30),MP1!(30),MP2!(30),MP3!(30),MP4!(30),MP5!(30),MP6!(30)
150  DIM MP7!(30),MP8!(30),MP9!(30),MP10!(30),MP11!(30),MP12!(30)
160   S$ = "$#,###,###.##"
170 CLS
180  LOCATE 10,20
190   INPUT "AMOUNT OF PRINCIPAL (NO COMMAS) ",X!
200    LOCATE 12,20
210     INPUT "NUMBER OF YEARS ",Y!
220      LOCATE 14,20
230       INPUT "ANNUAL PERCENTAGE (WHOLE NUMBER) ",Z!
240        PR!(1) = X!
250         AI! = ((Z!) * 0.01) / 12
260          FOR I! = 1 TO Y!
270             MP1!(I!) = (PR!(I!) * AI!) + PR!(I!)
280              MP2!(I!) = (MP1!(I!) * AI!) + MP1!(I!)
290   MP3!(I!) = (MP2!(I!) * AI!) + MP2!(I!)
300    MP4!(I!) = (MP3!(I!) * AI!) + MP3!(I!)
310     MP5!(I!) = (MP4!(I!) * AI!) + MP4!(I!)
320      MP6!(I!) = (MP5!(I!) * AI!) + MP5!(I!)
330       MP7!(I!) = (MP6!(I!) * AI!) + MP6!(I!)
340        MP8!(I!) = (MP7!(I!) * AI!) + MP7!(I!)
350         MP9!(I!) = (MP8!(I!) * AI!) + MP8!(I!)
360          MP10!(I!) = (MP9!(I!) * AI!) + MP9!(I!)
370           MP11!(I!) = (MP10!(I!) * AI!) + MP10!(I!)
380   MP12!(I!) = (MP11!(I!) * AI!) + MP11!(I!)
390    PR!(I! + 1) = MP12!(I!)
400   NEXT
410    CLS
420     LOCATE 2,30
430      PRINT "MONTHLY "
440       LOCATE 3,10
450        PRINT "COMPOUNDING $"X!"FOR "Y!"YEARS AT"Z!"PERCENT"
460         LOCATE 5,10
470          PRINT "YEAR    BEGINING PRINCIPAL     ENDING PRINCIPAL"
480           LOCATE 6,10
490 PRINT "====    ==================     ================"
500  PRINT
510   FOR I! = 1 TO Y!
520      PRINT TAB( 10)I!;
530       PRINT TAB( 22) USING S$;PR!(I!);
540        PRINT TAB( 44) USING S$;PR!(I! + 1);
550       NEXT
560        PRINT
570         PRINT
580          PRINT
590           PRINT TAB( 18)"<ENTER 1> FOR ANOTHER COMPUTATION"
600 PRINT TAB( 18)"<ENTER 2> TO LEAVE PROGRAM"
610  PRINT
620   PRINT TAB( 35)"";
630    INPUT X!
640     ON X! GOTO 170,650
650 END
65000 '*********************** SAVE ROUTINE **********************************
65100 SAVE "B:COMPOUND.BAS"

D&CFORM.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '*****************   DEBIT/CREDIT INPUT WORK FORM  *************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                      DEBIT CREDIT WORK SHEET                            ║
20 '║                                                                         ║
22 '║    This basic form can be used with WORKFILE.BAS as a manual D & C      ║ 24 '║ entry worksheet. When the program is run, you will be queried as to     ║
26 '║ the number of copies desired. Make certain the printhead is over the    ║
28 '║ perforation and the printer is on line before responding to the number  ║
30 '║ question. While the format for the form is for expenditures it may be   ║
32 '║ modified easily by changing the headings and changing the spacing in    ║
34 '║ the print lines (LINE 160 -- SPACING) which actually generate the form. ║
36 '║                       (c) G I N A C O - 1983          Ver 5.2/160/320   ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 KEY OFF
110 CLS:LOCATE 10,30:INPUT"HOW MANY COPIES ",N
120 WIDTH "LPT1:",80
125 FOR NUMBER = 1 TO N
130 LPRINT STRING$(4,10)
140 LPRINT TAB(30)"DEBIT CREDIT WORKSHEET"
150 LPRINT CHR$(27)"U"+CHR$(1);
160 LPRINT STRING$(80,42);
170 LPRINT" REF    DATE     CHECK#      DESCRIPTION      TO/FROM        D#    C#   AMOUNT";
180 LPRINT STRING$(80,45);
190 FOR I = 1 TO 32
200 LPRINT"I    I        I           I               I               I     I     I        I";
210 LPRINT"I____I________I___________I_______________I_______________I_____I_____I________I";
220 NEXT
230 LPRINT CHR$(12);
240 NEXT NUMBER
250 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:D&CFORM.BAS"

EASYRITE.BAS

10 CLS:REM EASYRITE -- A FULLY FORMATED WORD/MEMO PROCESSING SYSTEM FOR THE IBM
30 REM VERSION 1.5 -- REVISED 05/10/84
40 REM WRITTEN BY BRUNO M. LARSEN, SUN CITY AZ FOR G I N A C O (C) 1984
50 REM =====  INITIALIZATION ROUTINE =====
60 CLEAR:SCREEN0,0,0:COLOR7,0:WIDTH80:KEYOFF:FORKK=1 TO10:KEYKK,"":NEXTKK:DIMMM$(30),TT$(20),MN$(30):DIMA$(200),INPTR$(200),FIN$(200),FILE$(200),P1%(200):REM =====  BOX PARAMETER DEFINITION  =====
170 TLC$=CHR$(201):TLC2$=CHR$(218):TLC3$=CHR$(178):TRC$=CHR$(187):TRC2$=CHR$(191):TRC3$=CHR$(178):HL$=CHR$(205):HL2$=CHR$(196):HL3$=CHR$(178):BLC$=CHR$(200):BLC2$=CHR$(192):BLC3$=CHR$(178):BRC$=CHR$(188):BRC2$=CHR$(217):BRC3$=CHR$(178)
220 VL$=CHR$(186):VL2$=CHR$(179):VL3$=CHR$(178):PR$=" ###":PR2$=" ║###  \                                                                       \":FILLSTR2$="··································································░■■■ ║":DEFSEG:POKE91,25
280 POKE92,25:LOCATE1,1,0,12,13:A$="":LN=0:NL=0:FIN$="":LC=0:INTPR$="":DEFINTA-Z:I=0:P=1:FINLEN=0:P=1:IN$="":ONERRORGOTO5010
430 CLS:KEYOFF:BB$=TIME$:REM =====  INITIAL MASTHEAD DISPLAY  =====
470 GOSUB 2470:COLOR 15,0:LOCATE 9,30:PRINT"EasyRite Processor - 1.5":LOCATE 11,40:PRINT"(c)":COLOR 7,0:LOCATE 15,30:PRINT"User Supported Software":LOCATE 16,30:PRINT"~~~~ ~~~~~~~~~ ~~~~~~~~":LOCATE 17,24:PRINT"Developed by G I N A C O  --  1984
530 LOCATE 18,23:PRINT"          Sun City, Arizona ":REM =====  DO YOU NEED INSTRUCTIONS QUERY  =====
550 COLOR15:LOCATE22,26,0:PRINT"DO YOU NEED INSTRUCTIONS? (Y/N)":COLOR7,0:GOSUB6590:IFYN=1 THEN620
610 IFYN=2 THEN3990
620 REM =====  FIRST PAGE OF INSTRUCTIONS  =====
630 CLS:KEYOFF:SCREEN0,0,0:WIDTH80:FORKK!=1 TO10:KEYKK!,"":NEXT:DEFSEG:POKE91,25:POKE92,25:KEY6,CHR$(124):KEY2,CHR$(127):GOSUB2120:GOSUB3090:FORMM!=1 TO4:LOCATEMM!,9:PRINTMM$(MM!)
790 MM$(2)="      E a s y R i t e:   A basic Word Processing System":MM$(3)="Developed and Compiled for use on the IBM-PC (DOS 1.1 or 2.0)":MM$(4)="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~":NEXTMM!
830 COLOR15:LOCATE5,9:PRINT"CAUTION:   Exit EasyRite through the CONTROL or PRINT Menu ONLY!";:LOCATE6,10:PRINT"  Using Ctrl-Break will exit without CURSOR & SCROLL control
850 LOCATE7,10:PRINT"  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";:COLOR7,0
860 LOCATE8,10:PRINT"  When prompted to ";:COLOR15:PRINT"<PRESS>,";:COLOR7:PRINT" the ";:COLOR15:PRINT" ENTER (C/R) ";:COLOR7:PRINT"key ";:COLOR15:PRINT"IS NOT ";:COLOR7:PRINT"used";
870 LOCATE9,10:PRINT"    When prompted to ";:COLOR15:PRINT"<ENTER>,";:COLOR7:PRINT" the";:COLOR15:PRINT" ENTER (C/R) ";:COLOR7:PRINT"key ";:COLOR15:PRINT"IS";:COLOR7:PRINT" used!";:COLOR7,0
880 LOCATE10,10:PRINT"    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";:COLOR7,0:LOCATE11,10:PRINT"EasyRite is entirely MENU driven. In most cases, escape routes";
900 LOCATE12,10:PRINT"are provided to permit the operator to return to the safety of";:LOCATE13,10:PRINT"a MENU. An exception is the LOAD a file. Should you get to the";
920 LOCATE14,10:PRINT"LOAD phase in error, <ENTER> a non-existent FILE NAME and then":LOCATE15,10:PRINT"recover thru the ERROR routine. The FOUR operational phases of";
940 LOCATE16,10:PRINT"EasyRite are:  (1)  LOAD and REVIEW an existing EasyRite FILE;";:LOCATE17,10:PRINT"(2) CHANGE or CREATE a New EasyRite file; (3) EDIT an existing";
960 LOCATE18,10:PRINT"or new EasyRite file.  A change may be temporary and displayed";:LOCATE19,10:PRINT"using the REVIEW function.   Or, the file is saved permanently";
980 LOCATE20,10:PRINT"with the SAVE fuction on any DRIVE. Phase (4) is the HARD COPY";:LOCATE21,10:PRINT"or PRINT function. This provides a choice of three type styles";:LOCATE23,10,0
1010 PRINT"<PRESS> F-6 TO CONTINUE.          <PRESS> F-2 FOR CONTROL MENU";
1020 IN$=INKEY$:IFIN$=""THEN1020
1040 IFIN$=CHR$(124)THEN1070
1050 IFIN$=CHR$(127)THEN3990
1060 SOUND600,4:GOTO1020
1070 REM =====  SECOND PAGE OF INSTRUCTIONS =====
1080 CLS:KEYOFF:FORNK!=1 TO10:KEYNK!,"":NEXT:DEFSEG:POKE91,25:POKE92,25:KEY6,CHR$(124):KEY2,CHR$(127):GOSUB2120:GOSUB3090:LOCATE2,10:PRINT"and pitches. More detailed instructions follow on this and the";
1160 LOCATE3,10:PRINT"the following page.    When you LOAD an existing EasyRite file";:LOCATE4,10:PRINT"you may REVIEW it immediately.   The FILE will be displayed in";:LOCATE5,10:PRINT"up to 10 twenty-line pages.  You may move through the pages on";
1190 LOCATE6,10:PRINT"prompt, by pressing the ENTER key.  At the FILE end, a CONTROL";:LOCATE7,10:PRINT"MENU will appear.   The CHANGE option will permit you to WORD-";:LOCATE8,10:PRINT"PROCESS a LOADED or entirely NEW document,  up to 200 lines in";
1220 LOCATE9,10:PRINT"length,  using 20 line segments per page.  INPUT is protected.";:LOCATE10,10:PRINT"Only specified ALPHA-NUMERIC entries are acceptable  All other";
1240 LOCATE11,10:PRINT"key-strokes will be refused, announced with a REJECT TONE. The";:LOCATE12,10:PRINT"The CURSOR and EDIT keys are inoperative. Typing errors may be";
1260 LOCATE13,10:PRINT"corrected immediately -- before the ENTER key is pressed -- by";:LOCATE14,10:PRINT"use of the BACK SPACE key,  as with many self-correcting type-";
1280 LOCATE15,10:PRINT"writers. At the end of each 20-line page, you will be provided";:LOCATE16,10:PRINT"an opportunity to correct errors - before the page is changed.";
1300 LOCATE17,10:PRINT"The two correction modes will become evident quickly while you";:LOCATE18,10:PRINT"progress through the program. When the CURSOR is at the begin-";
1320 LOCATE19,10:PRINT"ning of a LINE in EITHER correction MODE, depressing the ENTER";:LOCATE20,10:PRINT"key will RE-ENTER the existing line without change. You cannot";
1340 LOCATE21,10:PRINT"EDIT just part of a line. You must completely re-enter a whole";:LOCATE23,10:PRINT"<PRESS> F-6 TO CONTINUE.       <PRESS> F-2 TO GO BACK ONE PAGE";
1370 IN$=INKEY$:IFIN$=""THEN1370
1390 IFIN$=CHR$(124)GOTO1420
1400 IFIN$=CHR$(127)GOTO620
1410 SOUND600,4:GOTO1370
1420 REM =====  THIRD PAGE OF INSTRUCTIONS  =====
1430 CLS:KEYOFF:FORNK!=1 TO10:KEYNK!,"":NEXT:DEFSEG:POKE91,25:POKE92,25:KEY6,CHR$(124):KEY2,CHR$(127):GOSUB2120:GOSUB3090:LOCATE2,10:PRINT"line. To leave a line blank, simply press the <ENTER> key.";
1510 LOCATE4,10:PRINT"EDIT:  This option will display a LOADED or CREATED file in the";:LOCATE5,10:PRINT"EDIT mode. The CURSOR appears at the first position of the page";
1530 LOCATE6,10:PRINT"where the EDITING starts.  Press ENTER to leave the line as is,";:LOCATE7,10:PRINT"and move the CURSOR to the next line.   At the end of the page,";
1550 LOCATE8,10:PRINT"you will have a chance to re-correct any line or lines.  If all";:LOCATE9,10:PRINT"lines are OK, pressing ENTER will call up the next page.    You";
1570 LOCATE10,10:PRINT"use 'END' or  'end' at the BEGINNING of any line to close out a";:LOCATE11,10:PRINT"file.  The word END will not print.  You may REVIEW a NEW or an";
1590 LOCATE12,10:PRINT"EDIT file immediately.    You need not SAVE a file to PRINT  or";:LOCATE13,10:PRINT"REVIEW it.  Conventional FILE SPECIFICATION protocol is used in";
1610 LOCATE14,10:PRINT"SAVING and LOADING all files.   The use of the DRIVE DESIGNATOR";:LOCATE15,10:PRINT"(A: B: C: OR D:)  is recommended to prevent inadverdently going";
1630 LOCATE16,10:PRINT"to an incorrect DRIVE.  The HARD COPY function offers you three";:LOCATE17,10:PRINT"pitch and type styles (Two are EPSON CODED.)  Page numbering is";
1650 LOCATE18,10:PRINT"automatic with 59 lines printed per page.  Text CENTERING is by";:LOCATE19,10:PRINT"manual spacing.   RIGHT justification is accomplished manually.";
1670 LOCATE20,10:PRINT"Entering TEXT in the shaded portions of the INPUT & EDIT format";:LOCATE21,10:PRINT"will reduce the RIGHT margin with the standard ELITE print-out.";:LOCATE23,10
1700 PRINT"<PRESS> F-6 TO CONTINUE.       <PRESS> F-2 TO GO BACK ONE PAGE";
1710 IN$=INKEY$:IFIN$=""THEN1710
1730 IFIN$=CHR$(124)GOTO1760
1740 IFIN$=CHR$(127)GOTO1070
1750 SOUND600,4:GOTO1710
1760 KEYOFF:FORNK!=1 TO10:KEYNK!,"":NEXT:KEY2,CHR$(127):GOTO3990
1770 REM =====  PRINTER SELECT ROUTINE  =====
1780 CLS:GOSUB2120:DEFSEG=&H40:A=PEEK(&H8):B=PEEK(&H9):C=PEEK(&HA):D=PEEK(&HB):POKE&H8,C:POKE&H9,D:POKE&HA,A:POKE&HB,B:IFPEEK(&H9)=3 THENLPT$="1"ELSELPT$="2
1900 LOCATE5,30,0:PRINT"Primary Printer = LPT";LPT$+":";:LOCATE8,24:PRINT"For Printer Test         <PRESS> 1":COLOR15:LOCATE10,11:PRINT"< Do not test printer if none installed at designated port! >":COLOR7:LOCATE12,24
1950 PRINT"Reset LPT1 OR LPT2       <PRESS> 2";:LOCATE14,24,0:PRINT"To continue with program <PRESS> 3";" ";:GOSUB3590:GOSUB2330
2000 GOSUB3730:LOCATE21,68,0:LOW=49:HIGH=51:FINLEN=1:GOSUB6240:IFINPTR$=CHR$(13)THENBEEP:GOTO2000
2070 ONVAL(INPTR$)GOTO2080,1770,2100
2080 LPRINTTAB(10)"This is a Printer test":GOTO1900
2100 RETURN
2110 REM =====  PROGRAM FOR BOX PRINTOUT SET 1 =======
2120 REM =====  PRINT BOX 1, SET 1 =====
2130 WW=76:TL=1:LL=24:LC=2:GOSUB3170:RETURN
2190 REM =====  PRINT BOX 2, SET 1 =====
2200 WW=76:TL=18:LL=24:LC=2:GOSUB3170:RETURN
2260 REM =====  PRINT BOX 2A, SET 1 =====
2270 WW=68:TL=4:LL=22:LC=6:GOSUB3170:RETURN
2330 REM =====  PRINT BOX 3, SET 1 =====
2340 WW=23:TL=20:LL=22:LC=50:GOSUB3170:RETURN
2400 REM =====  PRINT BOX 4, SET 1 =====
2410 WW=76:TL=1:LL=24:LC=2:GOSUB3170:RETURN
2470 REM =====  PRINT BOX 5, SET 1 =====
2480 WW=30:TL=7:LL=13:LC=25:GOSUB3170:RETURN
2540 REM =====  PROGRAM FOR BOX PRINTOUT SET 2 =======
2550 REM =====  PRINT BOX 1, SET 2 =====
2560 COLOR7,0:WW=76:TL=1:LL=24:LC=2:GOSUB3290:RETURN
2630 REM =====  PRINT BOX 2, SET 2 =====
2640 WW=76:TL=18:LL=24:LC=2:GOSUB3290:RETURN
2700 REM =====  PRINT BOX 2A, SET 2 =====
2710 WW=76:TL=6:LL=19:LC=2:GOSUB3290:RETURN
2770 REM =====  PRINT BOX 3, SET 2 =====
2780 WW=23:TL=20:LL=22:LC=50:GOSUB3290:RETURN
2840 REM =====  PRINT BOX 4, SET 2 =====
2850 WW=76:TL=1:LL=24:LC=2:GOSUB3290:RETURN
2910 REM =====  PRINT BOX 5, SET 2 =====
2920 WW=30:TL=7:LL=13:LC=25:GOSUB3290:RETURN
2980 REM =====  PRINT MIDDLE BOX CONNECTING LINE VERT/HORZ #1 =====
2990 LOCATE18,2,0:PRINT"╠";STRING$(76,"═");"╣";:RETURN
3020 REM =====  PRINT PAGE "CENTER LINE" MARKER ON INPUT FORM =====
3030 LOCATE1,33:PRINT" Center ";:COLOR15:LOCATE1,41:PRINT CHR$(25);:COLOR7,0:LOCATE1,42:PRINT" Marker ";:RETURN
3050 REM =====  PRINT MIDDLE BOX CONNECTING LINE VERT/HORZ #2 =====
3060 LOCATE22,1,0:PRINT"╠";STRING$(77,"═");"╣";:RETURN
3090 REM =====  PRINT MIDDLE BOX CONNECTING LINE VERT/HORZ #3 ====
3100 LOCATE22,2,0:PRINT"╟";STRING$(76,"─");"╢";:RETURN
3130 REM =====  PRINT MIDDLE BOX CONNTECTING LINE VERT/HORZ #4 ====
3140 LOCATE22,2,0:PRINT"├";STRING$(76,"─");"┤";:RETURN
3170 REM =====  BOX PRINT PRINT ROUTINE, VERSION #1 =====
3180 LOCATETL,LC,0:PRINTTLC$;STRING$(WW,HL$);TRC$;:FORBD=(TL+1)TO(LL-1):LOCATEBD,LC,0:PRINTVL$;:LOCATEBD,(LC+WW+1),0:PRINTVL$;:NEXT:LOCATELL,LC,0:PRINTBLC$;STRING$(WW,HL$);BRC$;:RETURN
3290 REM =====  BOX PRINT PRINT ROUTINE, VERSION #2 =====
3300 LOCATETL,LC,0:PRINTTLC2$;STRING$(WW,HL2$);TRC2$;:FORBD=(TL+1)TO(LL-1):LOCATEBD,LC,0:PRINTVL2$;:LOCATEBD,(LC+WW+1),0:PRINTVL2$;:NEXT:LOCATELL,LC,0:PRINTBLC2$;STRING$(WW,HL2$);BRC2$;:RETURN
3410 REM =====  CLEAR TOP BOX FORM =====
3420 FORCS=2 TO17:LOCATETL,3,0:PRINT SPC(76):NEXT:RETURN
3470 REM =====  CLEAR UPPER 1/2 SCREEN FOR DIRECTORY  =====
3480 FORCS=1 TO17:LOCATECS,1,0:PRINT SPC(79):NEXT:RETURN
3530 REM =====  CLEAR BOTTOM BOX FORM EXCEPT FOR INSERT  =====
3540 FORCS=19 TO23:LOCATECS,3,0:PRINT SPC(47):NEXT:RETURN
3590 REM =====  CLEAR BOTTOM BOX INCLUDING INSERT  =====
3600 FORCS=19 TO23:LOCATECS,3,0:PRINT SPC(75):NEXT:RETURN
3650 REM =====  CLEAR THE RESPONSE INPUT BOX  =====
3660 LOCATE21,52,0:PRINT SPC(22);:RETURN
3690 REM =====  CLEAR THE RESPONSE LINE BEFORE INSERT BOX  =====
3700 LOCATE21,10,0:PRINT SPC(40);:RETURN
3730 REM =====  CLEAR RESPONSE BOX AND SET "SELECT" ROUTINE  =====
3740 LOCATE21,10,0:PRINT SPC(22);
3760 LOCATE21,53:PRINT"SELECT               ║    ║":RETURN
3790 REM =====  CLEAR INPUT BOX LINE  =====
3800 LOCATE21,52,0:PRINT SPC(21);:LOCATE21,76:RETURN
3840 REM =====  CLEAR EasyRite INPUT FORM BOTTOM LINE =====
3850 LOCATE23,3:PRINT SPC(75):RETURN
3870 REM =====  CLEAR EasyRite INPUT FORM FIRST HALF BOTTOM LINE =====
3880 LOCATE23,3:PRINT SPC(37):RETURN
3900 REM =====  CLEAR EasyRite INPUT FORM LAST HALF BOTTOM LINE =====
3910 LOCATE23,41:PRINT SPC(37):RETURN
3930 REM =====  CLEAR TOP FORM DOWN TO HORIZONTAL LINE  =====
3940 FORCS=3 TO17:LOCATECS,3,0:PRINT SPC(75):NEXT:RETURN
3990 REM =====  QUERY & CLEAR SETUP FOR CONTROL MENU =====
4000 CLS:GOSUB2260:COLOR15:LOCATE3,31,0,13,12:PRINT"<< CONTROL MENU >> ":COLOR7,0:LOCATE4,6:PRINT CHR$(201);STRING$(23,205);CHR$(209);STRING$(9,205);CHR$(203);STRING$(24,205);CHR$(209);STRING$(9,205);CHR$(187);:FORLN=5 TO6:LOCATELN,6
4020 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE7,6
4030 PRINT CHR$(199);STRING$(23,196);CHR$(197);STRING$(9,196);CHR$(215);STRING$(24,196);CHR$(197);STRING$(9,196);CHR$(182);:FORLN=8 TO9:LOCATELN,6
4040 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE10,6
4050 PRINT CHR$(199);STRING$(23,196);CHR$(197);STRING$(9,196);CHR$(215);STRING$(24,196);CHR$(197);STRING$(9,196);CHR$(182);:FORLN=11 TO12:LOCATELN,6
4060 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE13,6
4070 PRINT CHR$(199);STRING$(23,196);CHR$(197);STRING$(9,196);CHR$(215);STRING$(24,196);CHR$(197);STRING$(9,196);CHR$(182);:FORLN=14 TO15:LOCATELN,6
4080 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE16,6
4090 PRINT CHR$(199);STRING$(23,196);CHR$(197);STRING$(9,196);CHR$(215);STRING$(24,196);CHR$(197);STRING$(9,196);CHR$(182);:FORLN=17 TO18:LOCATELN,6
4100 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE19,6
4110 PRINT CHR$(199);STRING$(23,196);CHR$(197);STRING$(9,196);CHR$(215);STRING$(24,196);CHR$(197);STRING$(9,196);CHR$(182);:FORLN=20 TO21:LOCATELN,6
4120 PRINT CHR$(186);STRING$(23,32);CHR$(179);STRING$(9,32);CHR$(186);STRING$(24,32);CHR$(179);STRING$(9,32);CHR$(186);:NEXT:LOCATE22,6
4130 PRINT CHR$(200);STRING$(23,205);CHR$(207);STRING$(9,205);CHR$(202);STRING$(24,205);CHR$(207);STRING$(9,205);CHR$(188);:LOCATE4,25:PRINT"  Select and <PRESS> a letter  ";:LOCATE6,11:PRINT"F U N C T I O N";:COLOR15:LOCATE6,32:PRINT"<PRESS>";
4140 COLOR7:LOCATE6,46:PRINT"F U N C T I O N";:COLOR15:LOCATE6,67:PRINT"<PRESS>";:COLOR7:LOCATE9,11:PRINT"DISK Directory":LOCATE9,35:PRINT"D":LOCATE9,46:PRINT"LOAD File":LOCATE9,70:PRINT"L";:LOCATE12,11:PRINT"CHANGE File":LOCATE12,35:PRINT"C
4150 LOCATE12,46:PRINT"SAVE File":LOCATE12,70:PRINT"S";:LOCATE15,11:PRINT"REVIEW File":LOCATE15,35:PRINT"R":LOCATE15,46:PRINT"EDIT File":LOCATE15,70:PRINT"E";:LOCATE18,11:PRINT"TEST Printer":LOCATE18,35:PRINT"T":LOCATE18,46
4160 PRINT"PRINT Hard Copy":LOCATE18,70:PRINT"P";:LOCATE21,11:PRINT"QUIT Program":LOCATE21,35:PRINT"Q":LOCATE21,46:PRINT"ZAP (CLEAR) File":LOCATE21,70:PRINT"Z";:LOCATE23,25:COLOR15:PRINT"To Review INSTRUCTIONS <PRESS> I":COLOR7
4180 MZ$="":MZ$="DdLlCcSsRrEeTtPpQqZzIi":GOSUB4830:GOSUB6180:ONMSGOTO4260,4260,5910,5910,4240,4240,9640,9640,9750,9750,4250,4250,4220,4220,11020,11020,13260,13260,6890,6890,620,620
4220 GOSUB1770:GOTO3990
4230 RETURN
4240 MSQ$="":MSQ$="ZEBRA":GOTO6910
4250 MSQ$="":MSQ$="LION":GOTO8060
4260 REM =====  DISK DIRECTORY REVIEW ROUTINE =====
4270 CLS:GOSUB2330:GOSUB2190:LOCATE21,20,0:PRINT"What Drive (A,B,C,D)";:KEYOFF:MZ$="":MZ$="AaBbCcDd":GOSUB3760:GOSUB6180:LOCATE21,65,0:PRINTIN$;:ONMSGOTO4400,4400,4470,4470,4540,4540,4610,4610
4400 LOCATE3,1:FILES"A:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive A: ";:COLOR7,0:GOTO4670
4470 LOCATE3,1:FILES"B:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive B: ";:COLOR7,0:GOTO4670
4540 LOCATE3,1:FILES"C:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive C: ";:COLOR7,0:GOTO4670
4610 LOCATE3,1:FILES"D:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive D: ";:COLOR7,0
4670 GOSUB3590:GOSUB2190:LOCATE20,24:PRINT"Another Directory?      <PRESS 1>";:LOCATE21,24:PRINT"Put File in EasyRite?   <PRESS 2>";:LOCATE22,24:PRINT"Return to CONTROL Menu? <PRESS 3>";:LOCATE21,65,0:FINLEN=1:LOW=49:HIGH=51:GOSUB6240
4780 ONVAL(INPTR$)GOTO4790,4820,4800
4790 GOTO4260
4800 CLS:GOTO3990
4820 FORLC=19 TO22:LOCATELC,10:PRINT SPC(50):NEXT:GOTO5930
4830 REM =====  ELAPSED TIME PRINTOUT ROUTINE =====
4840 N$=TIME$:DEFFNH(H$)=VAL(LEFT$(H$,2)):DEFFNM(M$)=VAL(MID$(M$,4,2)):DEFFNS(S$)=VAL(RIGHT$(S$,2)):TMH=(FNH(N$))-FNH(BB$):TMM=(FNM(N$)-FNM(BB$)):TMS=(FNS(N$)-FNS(BB$)):LOCATE25,2:PRINT SPC(78);:KEYOFF:LOCATE25,8:PRINT"Start Time ";BB$;
4960 LOCATE25,30:PRINT"End Time ";N$;:LOCATE25,50:PRINT"Elapsed Time "TMHCHR$(58)ABS(TMM)CHR$(58)(TMS);:RETURN
5010 REM =====  ERROR TRAP ROUTINE =====
5020 GOSUB3690:LOCATE25,2:PRINT SPC(78);:KEYOFF:LOCATE25,28,0:COLOR24,4:PRINT" ERROR ";:COLOR7,0:PRINT" #";ERR;" IN LINE #";ERL;:FORT=1 TO1000:NEXT:IFERR=53 THENLOCATE20,10:PRINT SPC(30),ELSE5170
5140 LOCATE20,10:PRINT"File not found   ";:PRINT" ** Load CORRECT Disk";
5170 IFERR=54 THENLOCATE20,10:PRINT SPC(30),ELSE5210
5180 LOCATE20,10:PRINT"Bad file mode    ";:PRINT" ** Correct File Mode";
5210 IFERR=55 THENLOCATE20,10:PRINT SPC(30),ELSE5250
5220 LOCATE20,10:PRINT"File already OPEN ";:PRINT" ** CLOSE and REOPEN";
5250 IFERR=61 THENLOCATE20,10:PRINT SPC(30),ELSE5290
5260 LOCATE20,10:PRINT"Disk FULL         ";:PRINT" ** Install New Disk";
5290 IFERR=70 THENLOCATE20,10:PRINT SPC(30),ELSE5330
5300 LOCATE20,10:PRINT"Disk WRITE PROTECT  ";:PRINT" ** Remove W/P Tab";
5330 IFERR=71 THENLOCATE20,10:PRINT SPC(30),ELSE5370
5340 LOCATE20,10:PRINT"Disk NOT READY    ";:PRINT" ** CLOSE Drive Door";
5370 IFERR=24 THENLOCATE20,10:PRINT SPC(30),ELSE5410
5380 LOCATE20,10:PRINT"Printer OFF-LINE ";:PRINT"  ** Set ON-LINE Mode";
5410 IFERR=25 THENLOCATE20,10:PRINT SPC(30),ELSE5450
5420 LOCATE20,10:PRINT"Printer not ON    ";:PRINT" ** Check Printer ON";
5450 IFERR=27 THENLOCATE20,10:PRINT SPC(30),ELSE5540
5460 LOCATE20,10:PRINT"OUT OF PAPER!     ";:PRINT" ** Check Paper Path";
5490 LOCATE22,20:GOSUB2330:GOSUB3650:GOSUB3690:RETURN
5540 GOSUB5490:LOCATE22,10,0:PRINT"Correct SYSTEM ERROR - <PRESS> ENTER";:LOCATE22,10,0:GOSUB6670:KEYON:KEYOFF:COLOR7,0:RESUME3990
5630 REM =====  DATA SAVE ROUTINE TO DISK  =====
5640 CLS:GOSUB2190:GOSUB2330:LOCATE21,27,0:COLOR15:PRINT"What is FileName? ";:COLOR7,0:GOSUB3650:FINLEN=14:LOCATE21,51:COLOR15:PRINT"FileName ·|········.···";:COLOR7,0:LOCATE21,60,0:GOSUB6400:FILESPEC$=FIN$:GOSUB3690:OPEN "O",1,FILESPEC$
5820 WRITE#1,P:FORI=1 TOP:WRITE#1,A$(I):IF(A$(I)="END"ORA$(I)="end")THENP=I
5860 IF(A$(I)="END"ORA$(I)="end")THEN5880
5870 NEXT
5880 CLOSE:GOSUB4830:GOTO9730
5910 REM =====  DISK READ ROUTINE FROM DISK  =====
5920 CLS
5930 FORI=1 TO60:A$(I)="":NEXT:GOSUB2190:GOSUB2330:LOCATE21,27:COLOR15:PRINT"What is FileName? ";:COLOR7,0:GOSUB3650:FINLEN=14:LOCATE21,51:COLOR15:PRINT"FileName ·|········.···";:COLOR7,0:LOCATE21,60,0:GOSUB6400:FILESPEC$=FIN$:GOSUB3690
6100 OPEN "I",1,FILESPEC$:INPUT#1,P:FORI=1 TOP:INPUT#1,A$(I):IF(A$(I)="END"ORA$(I)="end")THENP=I
6150 IF(A$(I)="END"ORA$(I)="END")THEN6170
6160 NEXT
6170 CLOSE:GOTO3990
6180 REM =====  INKEY$ RESPONSE FOR DIRECTORY SELECTION  =====
6190 IN$=INKEY$:IFIN$=""THEN6180
6210 MS=INSTR(MZ$,IN$):IFMS=0 THENSOUND1000,4:GOTO6180
6230 RETURN
6240 REM =====  INKEY$ ROUTINE FOR NUMBER RESPONSES =====
6250 FIN$="
6260 IFINKEY$><""THEN6260
6270 INPTR$=INKEY$:IFINPTR$=""THEN6270
6290 IFINPTR$=CHR$(13)THENRETURN
6300 IFINPTR$<>CHR$(8)THEN6350
6310 IFFIN$=""THENSOUND600,4:GOTO6270
6320 PRINT CHR$(29);" ";CHR$(29);:FIN$=LEFT$((FIN$),LEN(FIN$)-1):GOTO6270
6350 IF(ASC(INPTR$)<LOWORASC(INPTR$)>HIGH)THENSOUND400,4:GOTO6270
6360 FIN$=FIN$+INPTR$:PRINTINPTR$;:IFLEN(FIN$)=FINLENTHENRETURN
6390 GOTO6270
6400 REM =====  INKEY$ ROUTINE FOR LETTER RESPONSES =====
6410 COLOR7,0:FIN$="":IFFINLEN=0 THENFINLEN=255
6440 IFINKEY$><""THEN6440
6450 IFINKEY$=CHR$(127)THEN3990
6460 INPTR$=INKEY$:IFINPTR$=""THEN6460
6480 IFINPTR$=CHR$(13)THENRETURN
6490 IFINPTR$<>CHR$(8)THEN6540
6500 IFFIN$=""THENSOUND600,4:GOTO6460
6510 PRINT CHR$(29);"·";CHR$(29);:FIN$=LEFT$((FIN$),LEN(FIN$)-1):GOTO6460
6540 IFLEN(FIN$)=FINLENTHENSOUND600,4:GOTO6460
6550 IFASC(INPTR$)<31 ORASC(INPTR$)>126 THENSOUND400,4:GOTO6460
6560 PRINTINPTR$;:FIN$=FIN$+INPTR$:GOTO6460
6590 REM =====  INKEY$ RESPONSE FOR YES/NO ROUTINE  =====
6600 IN$=INKEY$:IFIN$=""THEN6590
6620 YN=0:IF(IN$="Y"ORIN$="y")THENYN=1:RETURN
6640 IF(IN$="N"ORIN$="n")THENYN=2:RETURN
6650 SOUND400,4:GOTO6590
6670 REM =====  INKEY$ CHECK FOR CARRIAGE RETURN INPUT  =====
6680 IFINKEY$><""GOTO6670
6690 IN$=INKEY$:IFIN$=""THEN6690
6710 IFIN$<>CHR$(13)THENSOUND400,4:GOTO6690
6720 RETURN
6730 REM =====  PRINT IN EasyRite BOTTOM BOX END AND QUOTE INSTRUCTIONS =====
6740 GOSUB3840:LOCATE23,6,0:PRINT"Enter ";:COLOR15:PRINT CHR$(34)"END"CHR$(34);:COLOR7,0:PRINT" to close entries ";:LOCATE23,41:PRINT"No ";:COLOR15:PRINT"QUOTATION MARKS";:COLOR7,0:PRINT" permitted in TEXT!";:RETURN
6790 REM =====  STRING INPUT CONTROL/DIRECTION SUBROUTINE  =====
6800 LOCATELN,8,1:COLOR15:PRINTA$(I);:COLOR7,0:LOCATELN,8,1,0,7:FINLEN=70:GOSUB6400:IFFIN$=""THENA$(I)=A$(I)ELSEA$(I)=FIN$
6840 LOCATELN,8,0,13,12:COLOR7,0:PRINT STRING$(70,"·");:LOCATELN,8,0:PRINTA$(I);:IF(A$(I)="END"ORA$(I)="end")THENP=I
6870 IF(A$(I)="END"ORA$(I)="end")THENGOSUB9010:GOTO9640
6880 RETURN
6890 REM =====  ZAP (CLEAR) FILE TO CREATE NEW FILE =====
6900 FORI=1 TO200:A$(I)="":NEXT:GOSUB13510:GOTO3990
6910 REM =====  START OF LOADED FILE CHANGE ROUTINE, PAGE SELECTOR  =====
6920 CLS:GOSUB 2400:GOSUB 2470:LOCATE 9,27:PRINT"Change From Page 1 <PRESS 1>":LOCATE 11,27:PRINT"Change From Page ? <PRESS 2>":LOCATE 21,40,0:FINLEN=1:LOW=49:HIGH=50:GOSUB 6240:ON VAL(INPTR$)GOTO 7020,6980
6980 LOCATE 16,25:PRINT"Start at what Page? <ENTER> Pg #";:LOCATE 18,27:PRINT"<Select from Pages 2 thru 9>";:LOCATE 21,40,0:FINLEN=1:LOW=50:HIGH=57:GOSUB 6240:ON VAL(INPTR$)-1 GOTO 7130,7230,7330,7440,7540,7640,7750,7850
7020 REM =====  START OF LOADED FILE CHANGE ROUTINE, PAGE ONE  =====
7030 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=1 TO20:LOCATEI+1,3:PRINT USINGPR$;I;:LOCATEI+1,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI+1,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=1:PG#=0:PG#=1:LN=0:FORI=1 TO20:LN=I+1:GOSUB6790
7110 IFLN=21 THENI=20:GOSUB9010:GOTO7130
7120 NEXT
7130 REM =====  START OF SECOND CHANGE PAGE  =====
7140 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=21 TO40:LOCATEI-19,3:PRINT USINGPR$;I;:LOCATEI-19,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-19,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=20:PG#=0:PG#=2:LN=0:FORI=21 TO40:LN=I-19:GOSUB6790
7210 IFLN=21 THENI=40:GOSUB9010:GOTO7230
7220 NEXT
7230 REM =====  START OF THIRD CHANGE PAGE  =====
7240 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=41 TO60:LOCATEI-39,3:PRINT USINGPR$;I;:LOCATEI-39,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-39,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=40:PG#=0:PG#=3:LN=0:FORI=41 TO60:LN=I-39:GOSUB6790
7310 IFLN=21 THENI=60:GOSUB9010:GOTO7330
7320 NEXT
7330 REM =====  START OF FOURTH CHANGE PAGE  =====
7340 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=61 TO80:LOCATEI-59,3:PRINT USINGPR$;I;:LOCATEI-59,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-59,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=1:PG#=0:PG#=4:LN=0:FORI=61 TO80:LN=I-59:GOSUB6790
7420 IFLN=21 THENI=80:GOSUB9010:GOTO7440
7430 NEXT
7440 REM =====  START OF FIFTH CHANGE PAGE  =====
7450 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=81 TO100:LOCATEI-79,3:PRINT USINGPR$;I;:LOCATEI-79,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-79,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=20:PG#=0:PG#=5:LN=0:FORI=81 TO100:LN=I-79:GOSUB6790
7520 IFLN=21 THENI=100:GOSUB9010:GOTO7540
7530 NEXT
7540 REM =====  START OF SIXTH CHANGE PAGE  =====
7550 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=101 TO120:LOCATEI-99,3:PRINT USINGPR$;I;:LOCATEI-99,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-99,8:PRINTA$(I);:NEXT:GOSUB6730:P=60:I=200:PG#=0:PG#=6:LN=0:FORI=101 TO120:LN=I-99:GOSUB6790
7620 IFLN=21 THENI=120:P=I:GOSUB9010:GOTO7640
7630 NEXT
7640 REM =====  START OF SEVENTH CHANGE PAGE  =====
7650 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=121 TO140:LOCATEI-119,3:PRINT USINGPR$;I;:LOCATEI-119,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-119,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=1:PG#=0:PG#=7:LN=0:FORI=121 TO140:LN=I-119:GOSUB6790
7730 IFLN=21 THENI=140:GOSUB9010:GOTO7750
7740 NEXT
7750 REM =====  START OF EIGTH CHANGE PAGE  =====
7760 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=141 TO160:LOCATEI-139,3:PRINT USINGPR$;I;:LOCATEI-139,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-139,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=20:PG#=0:PG#=8:LN=0:FORI=141 TO160:LN=I-139:GOSUB6790
7830 IFLN=21 THENI=140:GOSUB9010:GOTO7850
7840 NEXT
7850 REM =====  START OF NINTH CHANGE PAGE  =====
7860 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=161 TO180:LOCATEI-159,3:PRINT USINGPR$;I;:LOCATEI-159,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-159,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=160:PG#=0:PG#=9:LN=0:FORI=161 TO180:LN=I-159:GOSUB6790
7930 IFLN=21 THENI=180:GOSUB9010:GOTO7950
7940 NEXT
7950 REM =====  START OF TENTH CHANGE PAGE  =====
7960 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=181 TO200:LOCATEI-179,3:PRINT USINGPR$;I;:LOCATEI-179,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-179,8:PRINTA$(I);:NEXT:GOSUB6730:P=200:I=1:PG#=0:PG#=10:LN=0:FORI=181 TOP:LN=I-179:GOSUB6790
8040 IFLN=21 THENI=200:P=I:GOSUB9010:GOTO9640
8050 NEXT
8060 REM =====  START OF IN-MEMORY EDIT ROUTINE, PAGE SELECTOR  =====
8070 CLS:GOSUB2400:GOSUB2470:LOCATE9,28:PRINT"Edit From Page 1 <PRESS 1>":LOCATE11,28:PRINT"Edit from Page ? <PRESS 2>":LOCATE21,40,0:FINLEN=1:LOW=49:HIGH=50:GOSUB6240:ONVAL(INPTR$)GOTO8170,8130
8130 LOCATE 16,25:PRINT"Start at what Page? <ENTER> Pg #";:LOCATE 18,27:PRINT"<Select from Pages 2 thru 9>";:LOCATE 21,40,0:FINLEN=1:LOW=50:HIGH=57:GOSUB 6240:ON VAL(INPTR$)-1 GOTO 8260,8340,8420,8510,8590,8670,8760,8840
8170 REM =====  START OF IN-MEMORY EDIT ROUTINE, PAGE ONE  =====
8180 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=1 TO20:LOCATEI+1,3:PRINT USINGPR$;I;:LOCATEI+1,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI+1,8:PRINTA$(I);:NEXT:P=200:I=1:PG#=0:PG#=1:LN=0:FORI=1 TO20:LN=I+1:IFLN=21 THENI=20:GOSUB9010:GOTO8260
8250 NEXT
8260 REM =====  START OF SECOND EDIT PAGE  =====
8270 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=21 TO40:LOCATEI-19,3:PRINT USINGPR$;I;:LOCATEI-19,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-19,8:PRINTA$(I);:NEXT:P=200:I=20:PG#=0:PG#=2:LN=0:FORI=21 TO40:LN=I-19
8320 IFLN=21 THENI=40:GOSUB9010:GOTO8340
8330 NEXT
8340 REM =====  START OF THIRD EDIT PAGE  =====
8350 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=41 TO60:LOCATEI-39,3:PRINT USINGPR$;I;:LOCATEI-39,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-39,8:PRINTA$(I);:NEXT:P=200:I=40:PG#=0:PG#=3:LN=0:FORI=41 TO60:LN=I-39
8400 IFLN=21 THENI=60:GOSUB9010:GOTO8420
8410 NEXT
8420 REM =====  START OF FOURTH PAGE  =====
8430 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=61 TO80:LOCATEI-59,3:PRINT USINGPR$;I;:LOCATEI-59,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-59,8:PRINTA$(I);:NEXT:P=200:I=1:PG#=0:PG#=4:LN=0:FORI=61 TO80:LN=I-59
8490 IFLN=21 THENI=80:GOSUB9010:GOTO8510
8500 NEXT
8510 REM =====  START OF FIFTH EDIT PAGE  =====
8520 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=81 TO100:LOCATEI-79,3:PRINT USINGPR$;I;:LOCATEI-79,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-79,8:PRINTA$(I);:NEXT:P=200:I=20:PG#=0:PG#=5:LN=0:FORI=81 TO100:LN=I-79
8570 IFLN=21 THENI=100:GOSUB9010:GOTO8590
8580 NEXT
8590 REM =====  START OF SIXTH EDIT PAGE  =====
8600 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=101 TO120:LOCATEI-99,3:PRINT USINGPR$;I;:LOCATEI-99,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-99,8:PRINTA$(I);:NEXT:P=60:I=200:PG#=0:PG#=6:LN=0:FORI=101 TO120:LN=I-99
8650 IFLN=21 THENI=120:P=I:GOSUB9010:GOTO8670
8660 NEXT
8670 REM =====  START OF SEVENTH EDIT PAGE  =====
8680 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=121 TO140:LOCATEI-119,3:PRINT USINGPR$;I;:LOCATEI-119,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-119,8:PRINTA$(I);:NEXT:P=200:I=1:PG#=0:PG#=7:LN=0:FORI=121 TO140:LN=I-119
8740 IFLN=21 THENI=140:GOSUB9010:GOTO8760
8750 NEXT
8760 REM =====  START OF EIGTH EDIT PAGE  =====
8770 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=141 TO160:LOCATEI-139,3:PRINT USINGPR$;I;:LOCATEI-139,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-139,8:PRINTA$(I);:NEXT:P=200:I=20:PG#=0:PG#=8:LN=0:FORI=141 TO160:LN=I-139
8820 IFLN=21 THENI=140:GOSUB9010:GOTO8840
8830 NEXT
8840 REM =====  START OF NINTH EDIT PAGE  =====
8850 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=161 TO180:LOCATEI-159,3:PRINT USINGPR$;I;:LOCATEI-159,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-159,8:PRINTA$(I);:NEXT:P=200:I=160:PG#=0:PG#=9:LN=0:FORI=161 TO180:LN=I-159
8900 IFLN=21 THENI=180:GOSUB9010:GOTO8920
8910 NEXT
8920 REM =====  START OF TENTH PAGE  =====
8930 CLS:GOSUB2840:GOSUB3130:GOSUB3020:FORI=181 TO200:LOCATEI-179,3:PRINT USINGPR$;I;:LOCATEI-179,8:PRINT STRING$(66,"·");"░";"■■■";:LOCATEI-179,8:PRINTA$(I);:NEXT:P=200:I=1:PG#=0:PG#=10:LN=0:FORI=181 TOP:LN=I-179
8990 IFLN=21 THENI=200:P=I:GOSUB9010:GOTO9640
9000 NEXT
9010 REM =====  IS THIS CORRECT QUERY SUBROUTINE  =====
9020 GOSUB3840:LOCATE23,28,0:COLOR15:PRINT"Is this PAGE correct <Y/N> ";:COLOR7,0:GOSUB6590:IFYN=1 ANDMSQ$="ZEBRA"THENGOSUB9530:RETURN
9080 IFYN=1 ANDMSQ$="LION"THENGOSUB9580:RETURN
9090 IFYN=2 THEN9100
9100 GOSUB3840:LOCATE23,20:COLOR15:PRINT"Re-enter what line? ";:COLOR7,0:LOCATE23,50:PRINT" Line # ";:IFPG#<5 THENFINLEN=2
9180 IFPG#>5 THENFINLEN=3
9190 LOW=48:HIGH=57:GOSUB6240:GOSUB3840:L=VAL(FIN$):IFPG#=1 ANDL>20 THENBEEP:GOTO9010
9250 IFPG#=2 AND(L<21 ORL>40)THENBEEP:GOTO9010
9260 IFPG#=3 AND(L<41 ORL>60)THENBEEP:GOTO9010
9270 IFPG#=4 AND(L<61 ORL>80)THENBEEP:GOTO9010
9280 IFPG#=5 AND(L<81 ORL>100)THENBEEP:GOTO9010
9290 IFPG#=6 AND(L<101 ORL>120)THENBEEP:GOTO9010
9300 IFPG#=7 AND(L<121 ORL>140)THENBEEP:GOTO9010
9310 IFPG#=8 AND(L<141 ORL>160)THENBEEP:GOTO9010
9320 IFPG#=9 AND(L<161 ORL>180)THENBEEP:GOTO9010
9330 IFPG#=10 AND(L<181 ORL>200)THENBEEP:GOTO9010
9340 IFPG#=1 THENNL=L
9350 IFPG#=2 THENNL=L-20
9360 IFPG#=3 THENNL=L-40
9370 IFPG#=4 THENNL=L-60
9380 IFPG#=5 THENNL=L-80
9390 IFPG#=6 THENNL=L-100
9400 IFPG#=7 THENNL=L-120
9410 IFPG#=8 THENNL=L-140
9420 IFPG#=9 THENNL=L-160
9430 IFPG#=10 THENNL=L-180
9440 I=L:LOCATE23,60:PRINTINPTR$;:LOCATE23,60:PRINTL;:LOCATENL+1,8,1:COLOR15:PRINTA$(I);:COLOR7,0:LOCATENL+1,8,1,0,7:FINLEN=70:GOSUB6400:IFFIN$=""THENA$(I)=A$(I)ELSEA$(I)=FIN$
9500 LOCATENL+1,8,0,13,12:COLOR7,0:PRINT STRING$(70,"·");:LOCATENL+1,8,0:PRINTA$(I);:GOTO9010
9530 REM =====  QUERY ON NEXT PAGE OR QUIT INPUT =====
9540 GOSUB3840:LOCATE23,7,0:COLOR15:PRINT"<PRESS 1> To Continue Processing";:LOCATE23,46,0:PRINT"<PRESS 2> To Terminate Input";:COLOR7:LOCATE23,40,0:FINLEN=1:LOW=49:HIGH=50:GOSUB6240:ONVAL(INPTR$)GOTO9570,9630
9570 RETURN
9580 REM =====  QUERY ON NEXT PAGE OR QUIT EDIT =====
9590 GOSUB3840:LOCATE23,7,0:COLOR15:PRINT"<PRESS 1> To Continue Editing";:LOCATE23,46,0:PRINT"<PRESS 2> To Terminate Edit";:COLOR7:LOCATE23,40,0:FINLEN=1:LOW=49:HIGH=50:GOSUB6240:ONVAL(INPTR$)GOTO9570,9630
9620 RETURN
9630 GOTO9640
9640 REM =====  SAVE TO DISK QUERY ROUTINE  =====
9650 CLS:GOSUB2190:LOCATE21,20:COLOR15:PRINT"SAVE to DISK <Y/N> ";:COLOR7,0:GOSUB6590:IFYN=1 THEN5630
9720 IFYN=2 THEN9730
9730 REM =====  CHANCE TO REVIEW INPUT FILES  =====
9740 GOTO3990
9750 REM =====  STARTING OUTPUT LOOP =====
9760 REM =====  DISPLAYS PAGE 1 - 1ST 20 LINES =====
9770 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=1 TO20:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<20 THENGOSUB3840:GOTO10950
9860 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 2 - 2ND 20 LINES =====
9910 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=21 TO40:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<40 THENGOSUB3840:GOTO10950
9980 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 3 - 3rd 20 LINES =====
10030 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=41 TO60:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<60 THENGOSUB3840:GOTO10950
10100 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 4 - 4th 20 LINES =====
10150 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=61 TO80:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<80 THENGOSUB3840:GOTO10950
10220 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 5 - 5th 20 LINES =====
10270 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=81 TO100:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<100 THENGOSUB3840:GOTO10950
10340 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 6 - 6th 20 LINES =====
10390 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=101 TO120:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<120 THENGOSUB3840:GOTO10950
10460 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 7 - 7th 20 LINES =====
10510 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=121 TO140:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<140 THENGOSUB3840:GOTO10950
10580 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 8 - 8th 20 LINES =====
10630 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=141 TO160:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<160 THENGOSUB3840:GOTO10950
10700 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 9 - 9th 20 LINES =====
10750 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=161 TO180:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<180 THENGOSUB3840:GOTO10950
10820 GOSUB3840:LOCATE23,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB6670:REM =====  DISPLAYS PAGE 10 - LAST 20 LINES =====
10870 CLS:GOSUB2840:GOSUB3130:LOCATE2,7,0:FORI=181 TO200:LOCATE,7:PRINTA$(I):NEXT:IFP-1=<200 THENGOSUB3840:GOTO10950
10940 GOSUB3840
10950 LOCATE23,10:PRINT"End of ";:COLOR15:PRINTFILESPEC$;:COLOR7,0:PRINT" File":LOCATE23,45:PRINT"<PRESS> ANY KEY to Continue";
10990 RES$=INKEY$:IFRES$=""THEN10990
11010 GOTO3990
11020 REM =====  EasyRite HARD COPY OPTIONS =====
11030 CLS:GOSUB2120:GOSUB2980:LOCATE3,27:PRINT"EasyRite HARD COPY SELECTOR";:LOCATE4,27:COLOR7,0:PRINT"═══════════════════════════";:LOCATE5,34:PRINT"C H O I C E S":LOCATE6,34:PRINT"═════════════";
11150 REM =====  MODIFIED PRINT OPTIONS INCLUDING DOUBLE SPACE =====
11160 LOCATE8,23:PRINT"Standard ELITE (10 Char/Inch).....1";:LOCATE9,23:PRINT"Emphasized ELITE (10 Char/Inch)...2";:LOCATE10,23:PRINT"Emphasised ELITE (Double Space)...3";:LOCATE11,23:PRINT"ITALICS Print.(EPSON CODE)........4";
11200 LOCATE12,23:PRINT"COMPRESSED Print.(EPSON CODE).....5";:LOCATE13,23:PRINT"Read DISK DIRECTORIES.............6";:LOCATE14,23:PRINT"Reset Parallel Printer Port.......7";:LOCATE15,23:PRINT"Return to CONTROL Menu............8";:LOCATE16,23
11280 PRINT"QUIT the program..................9";:GOSUB2330:LOCATE21,20:PRINT"Select and <PRESS> a Number";
11320 GOSUB3760:GOSUB4830:FINLEN=1:LOW=49:HIGH=57:GOSUB6240:IFINPTR$=CHR$(13)THENSOUND400,3:GOTO11320
11390 ONVAL(INPTR$)GOTO11410,11460,11510,11560,11610,4260,11400,3990,13260
11400 GOSUB1770:GOTO11020
11410 REM =====  STANDARD ELITE (10 PITCH) PRINT =====
11420 CLS:WIDTH"LPT1:",80:GOSUB2700:GOSUB11660:GOTO12100
11460 REM =====  EMPHASIZED ELITE (10 PITCH) PRINT =====
11470 CLS:WIDTH"LPT1:",80:GOSUB2700:GOSUB11660:GOTO12270
11510 REM =====  EMPHASIZED ELITE (DOUBLE SPACE) =====
11520 CLS:WIDTH"LPT1:",80:GOSUB2700:GOSUB11660:GOTO12440
11560 REM =====  ALL LINES ITALICS =====
11570 CLS:WIDTH"LPT1:",132:GOSUB2700:GOSUB11660:GOTO12610
11610 REM =====  ALL LINES COMPRESSED =====
11620 CLS:WIDTH"LPT1:",132:GOSUB2700:GOSUB11660:GOTO12800
11660 REM =====  QUERY ON PRINTED PAGE NUMBERS =====
11670 LOCATE10,23:PRINT"DO YOU WANT PRINTED PAGES NUMBERED":LOCATE13,33:PRINT"<PRESS> Y or N":GOSUB6590:IFYN=1 THENLLN$="TRUE
11710 IFYN=1 THENLLK$="PAGER":GOSUB2700:GOTO11840
11720 IFYN=2 THENLLN$="FALSE
11730 GOSUB2700:REM =====  QUERY ON GOING TO TOP OF FORM AFTER PRINTING =====
11750 FORE=9 TO15:LOCATEE,10:PRINT SPC(50):NEXT:LOCATE10,13:PRINT"AFTER PRINTING, DO YOU WANT PAPER ADVANCED TO TOP OF FORM":LOCATE13,33:PRINT"<PRESS> Y or N":GOSUB6590:FORE=9 TO15:LOCATEE,10:PRINT SPC(60):NEXT:IFYN=1 THENLLK$="PAGER
11810 IFYN=2 THENLLK$="STOPPG
11820 CLS:GOSUB2700:REM =====  LIST PRINT CHOICE MENU  =====
11840 FORE=9 TO15:LOCATEE,20:PRINT SPC(50):NEXT:LOCATE6,33:PRINT"  R E A D Y  ";:LOCATE7,33:PRINT"  ═════════  ";:LOCATE9,25:COLOR15:PRINT"Check Printer ON and SELECTED!";:COLOR7,0:LOCATE10,10:PRINT STRING$(50,32);:LOCATE11,25
11940 PRINT"CHECK Paper: TOP of FORM (TOF)";:LOCATE13,25:PRINT"  <PRESS> Space Bar:  PRINT";:LOCATE15,25:PRINT"  <PRESS> Return:      MENU";
11990 RES$=INKEY$:IFRES$=""THEN11990
12010 IFRES$=CHR$(32)THENRETURN
12020 IFRES$=CHR$(13)THEN11020
12030 REM =====  PRIMARY LINE COUNTER AND PAGE ADVANCE  =====
12040 IFLLN$="TRUE"ANDLLK$="PAGER"THEN12070
12050 IFLLN$="FALSE"ANDLLK$="PAGER"THEN12080
12060 IFLLN$="FALSE"ANDLLK$="STOPPG"THEN12090
12070 IFPL=>59 THENLPRINT:LPRINTTAB(PTC)PN:PN=PN+1
12080 IFPL=>59 THENLPRINTCHR$(12);:FORLA=1 TO5:LPRINT:NEXT:PL=5
12090 RETURN
12100 REM =====  STANDARD 10 PITCH ELITE PRINT =====
12110 PT=8:PTC=40:LPRINTCHR$(27)+"@";:PN=1:PL=0:FORLA=1 TO5:LPRINT:NEXT:WIDTH"LPT1:",80:PL=5:FORI=1 TOP:IFA$(I)="END"ORA$(I)="end"THEN12210
12180 LPRINTTAB(PT)A$(I):PL=PL+1:GOSUB12030:NEXT
12210 IFLLN$="TRUE"THEN12230
12220 IFLLN$="FALSE"THEN12240
12230 FORPA=1 TO61-PL:LPRINT:NEXT:LPRINTTAB(PTC)PN;:LPRINTCHR$(12);:GOSUB12980:GOTO12100
12240 IFLLK$="STOPPG"THENGOSUB12980:GOTO12100
12250 LPRINTCHR$(12);:GOSUB12980:GOTO12100
12270 REM =====  EMPHASIZED 10 PITCH PRINT =====
12280 PT=8:PTC=40:LPRINTCHR$(27)CHR$(64);CHR$(27)CHR$(69);:PN=1:PL=0:FORLA=1 TO5:LPRINT:NEXT:WIDTH"LPT1:",132:PL=5:FORI=1 TOP:IFA$(I)="END"ORA$(I)="end"THEN12380
12350 LPRINTTAB(PT)A$(I):PL=PL+1:GOSUB12030:NEXT
12380 IFLLN$="TRUE"THEN12400
12390 IFLLN$="FALSE"THEN12410
12400 FORPA=1 TO61-PL:LPRINT:NEXT:LPRINTTAB(PTC)PN;:LPRINTCHR$(12);:GOSUB12980:GOTO12270
12410 IFLLK$="STOPPG"THENGOSUB12980:GOTO12270
12420 LPRINTCHR$(12);:GOSUB12980:GOTO12270
12440 REM =====  STANDARD 10 PITCH ELITE/EMPHASIZED DOUBLE SPACE PRINT =====
12450 PT=8:PTC=40:LPRINTCHR$(27)CHR$(64);CHR$(27)CHR$(69);:PN=1:PL=0:FORLA=1 TO5:LPRINT:NEXT:WIDTH"LPT1:",80
12490 PL=5:FORI=1 TOP:IFA$(I)="END"ORA$(I)="end"THEN12550
12520 LPRINTTAB(PT)A$(I):LPRINT:PL=PL+2:GOSUB12030:NEXT
12550 IFLLN$="TRUE"THEN12570
12560 IFLLN$="FALSE"THEN12580
12570 FORPA=1 TO61-PL:LPRINT:NEXT:LPRINTTAB(PTC)PN;:LPRINTCHR$(12);:GOSUB12980:GOTO12440
12580 IFLLK$="STOPPG"THENGOSUB12980:GOTO12440
12590 LPRINTCHR$(12);:GOSUB12980:GOTO12440
12610 REM =====  STANDARD ITALICS/EMPHASISED PRINT (EPSON CODE) =====
12620 PT=8:PTC=40:LPRINTCHR$(27)+"@";:LPRINTCHR$(27)+"E";:LPRINTCHR$(27);CHR$(52):PN=1:PL=0:FORLA=1 TO5:LPRINT:NEXT:WIDTH"LPT1:",132:PL=5:FORI=1 TOP:IFA$(I)="END"ORA$(I)="end"THEN12740
12710 LPRINTTAB(PT)A$(I):PL=PL+1:GOSUB12030:NEXT
12740 IFLLN$="TRUE"THEN12760
12750 IFLLN$="FALSE"THEN12770
12760 FORPA=1 TO61-PL:LPRINT:NEXT:LPRINTTAB(PTC)PN;:LPRINTCHR$(12);:GOSUB12980:GOTO12610
12770 IFLLK$="STOPPG"THENGOSUB12980:GOTO12610
12780 LPRINTCHR$(12);:GOSUB12980:GOTO12610
12800 REM =====  COMPRESSED PRINT -16.5 Char/Inch (EPSON CODE) =====
12810 PT=35:PTC=65:LPRINTCHR$(27)+"@";:LPRINTCHR$(15);:PN=1:PL=0:FORLA=1 TO5:LPRINT:NEXT:WIDTH"LPT1:",132:PL=5:FORI=1 TOP:IFA$(I)="END"ORA$(I)="end"THEN12920
12890 LPRINTTAB(PT)A$(I):PL=PL+1:GOSUB12030:NEXT
12920 IFLLN$="TRUE"THEN12490
12930 IFLLN$="FALSE"THEN12950
12940 FORPA=1 TO61-PL:LPRINT:NEXT:LPRINTTAB(PTC)PN;:LPRINTCHR$(12);:GOSUB12980
12950 IFLLK$="STOPPG"THENGOSUB12980:GOTO12800
12960 LPRINTCHR$(12);:GOSUB12980:GOTO12800
12980 REM =====  OPTION SUBROUTINE IN PRINT SEQUENCE  =====
12990 LPRINTCHR$(27)+"@";:CLS:GOSUB2190:GOSUB2330:LOCATE20,13:PRINT"To REPRINT this Choice     <PRESS> 1";:LOCATE21,13:PRINT"For a DIFFERENT Choice     <PRESS> 2";:LOCATE22,13:PRINT"To CONTROL Menu            <PRESS> 3";
13090 GOSUB3760:GOSUB4830:FINLEN=1:LOW=49:HIGH=51:GOSUB6240:NL=1:IFINPRT$=CHR$(13)THENSOUND400,3:GOTO13090
13170 ONVAL(INPTR$)GOTO13180,11020,3990
13180 RETURN
13190 END
13200 REM =====  QUIT PROGRAM & REINSTATE CURSOR CONTROL =====
13210 LOCATE,,,0,7:DEFSEG:POKE91,1:POKE92,25:CLS:END
13260 REM =====  FINAL SCREEN DISPLAY =====
13270 CLS:GOSUB2120:GOSUB2980:GOSUB2330:GOSUB3730:GOSUB4830:LOCATE6,19:COLOR15:PRINT"Have you SAVED your OLD, NEW, or EDITED File?":LOCATE8,19:PRINT"Your FILE will be erased from Memory on QUIT!":COLOR7,0:LOCATE11,19
13380 PRINT"    Return to CONTROL Menu    <PRESS>   1";:LOCATE13,19:PRINT"    Run LablFile Program      <PRESS>   2";:LOCATE15,19:PRINT"    Thanks!  Bye!      QUIT - <PRESS>   3";:LOCATE21,65,0
13420 FINLEN=1:LOW=49:HIGH=51:GOSUB6240:IFINTPRT$=CHR$(13)THENSOUND400,3:GOTO13420
13470 ONVAL(INPTR$)GOTO3990,13500,13200
13480 LOCATE,,,0,7:END
13500 RUN"LABLFILE
13510 REM =====  CLEAR FILE AND RETURN TO CONTROL MENU =====
13520 CLS:LOCATE 10,30:PRINT"FILE CLEARED":FOR TD=1 TO 1000:NEXT:RETURN
13570 END

EASYWORD.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
7 '***************************************************************************
9 '*****************  POOR MAN WORD PROCESSOR ROUTINE  ***********************
13 '╔═════════════════════════════════════════════════════════════════════════╗
15 '║                EPSON/GEMINI 10/15 SIMPLE WORD PROCESSOR                 ║
17 '║                                                                         ║
19 '║    This is a simple, high-speed, no-file word-processing program with   ║
21 '║ a six print style option. If you do not like the print styles, you      ║
23 '║ can modify the appropriate line with the codes contained in the print   ║
25 '║ control subroutine at line 5000.   If you do make this change, you      ║
27 '║ may wish to change the input menu.  The DIM statement is set to give    ║
29 '║ you a fifty line printed page. ENTER will give you a blank line feed.   ║
31 '║ To break out of the program when done "typewriting", use Ctrl/BREAK.    ║
32 '║    When using print expanded print styles, remember to reduce the num-  ║
33 '║ ber of characters entered in a line or you will get wrap-around print.  ║
34 '║    This program, in whole or part, may be used without license or       ║
35 '║ attribution.  (c) G I N A C O  -  1983               Ver 5.2/320        ║
37 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 FOR I=1 TO 10:KEY I,"":NEXT:KEY OFF
100 CLS
110 SCREEN 0,0,0
120 WIDTH 80
130 CLEAR
140 GOSUB 5030
150 ON ERROR GOTO 6000
160 LPRINT CLEANUP$;
170 CLS
180 DIM A$(60)
190 GOSUB 5000
200 LOCATE 5,25
210 PRINT "SELECT PRINT SIZE AND STYLE"
220 LOCATE 7,20
230 PRINT "   PRINT SIZE             SELECTION"
240 LOCATE 8,20
250 PRINT "   ==========             =========="
260 LOCATE 10,20
270 PRINT "10 PITCH ITALICS              1"
280 LOCATE 11,20
290 PRINT "10 PITCH EMPHASIZED           2"
300 LOCATE 12,20
310 PRINT "10 PITCH TINYPRINT            3"
320 LOCATE 13,20
330 PRINT "CONDENSED EXPANDED            4"
340 LOCATE 14,20
350 PRINT "ITALICS EXPANDED              5"
360 LOCATE 15,20
370 PRINT "EXPANDED DOUBLE-STRIKE        6"
380 LOCATE 19,35
390 INPUT XX!
400 LOCATE 19,25
410 INPUT "DESIRED MARGIN ",M!
420 ON XX! GOSUB 440,480,520,560,600,640
430 GOTO 670
440 REM***************  10 PITCH ITALICS  *********************************
450 WIDTH "LPT1:",80
460 LPRINT CLEANUP$ + ITALIC$ + DARK$
470 RETURN
480 REM**************** 10 PITCH EMPHASIZED  ****************************
490 WIDTH "LPT1:",80
500 LPRINT CLEANUP$ + DARK$
510 RETURN
520 REM***************  10 PITCH TINYPRINT ROUTINE ***********************
530 WIDTH "LPT1:",80
540 LPRINT CLEANUP$ + TINYLINE$
550 RETURN
560 REM*************** CONDENSED EXPANDED ********************************
570 WIDTH "LPT1:",80
580 LPRINT CLEANUP$ + CHR$(27) CHR$(87) + CHR$(1) + EXPAND.SMALL$ + DARK$
590 RETURN
600 REM*************** ITALICS EXPANDED CONDENSED EMPHASIZED *************
610 WIDTH "LPT1:",80
620 LPRINT CLEANUP$ + CHR$(27) CHR$(87) + CHR$(1) + ITALIC.EXP.CON$ + DARK$
630 RETURN
640 REM*************** EXPANDED DSTRIKE **********************************
650 LPRINT CLEANUP$ + CHR$(27) CHR$(87) + CHR$(1) + START.DSTRIKE$
660 RETURN
670 CLS
680 KEY OFF
690 LOCATE 25,20
700 PRINT "TO LEAVE WHEN DONE TYPING, USE CTRL/BREAK";
710 :REM ******* INPUT OUTPUT ROUTINE *********************************
720 LOCATE 1,10
730 PRINT "MAXIMUM CHARACTERS PER LINE <INCLUDING MARGIN> IS SET AT 80 ";
740 PRINT "0--------1---------2---------3---------4---------5---------6---------7---------8";
750 PRINT
760 FOR I! = 1 TO 55
770   PRINT TAB( M! - 2)I!;
780   LINE INPUT A$(I!)
790   LPRINT TAB( M!);A$(I!)
800 NEXT
810 CLS
820 LOCATE 10,20
830 PRINT "THAT IS THE END OF THE PAGE"
840 FOR I! = 1 TO 6000
850 NEXT
860 RUN
5000 REM**************** PRINTER INITIALIZATION ***************************
5030 REM **** PRINTER SUBROUTINES ***
5060 SMALL$ = CHR$(15)
5090 UNSMALL$ = CHR$(18)
5120 EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5150 CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5180 EXPAND$ = CHR$(14)
5210 EXPAND.END$ = CHR$(20)
5240 DARK$ = CHR$(27) + CHR$(69)
5270 ITALIC$ = CHR$(27) + CHR$(52)
5300 ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5330 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5360 END.ITALIC$ = CHR$(27) + CHR$(53)
5390 START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5420 END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5450 PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5480 END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5510 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5540 END.DSTRIKE$ = CHR$(27) + CHR$(72)
5570 TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5600 END.TINY$ = CHR$(27) + CHR$(84)
5630 ESC$ = CHR$(27)
5660 CLEANUP$ = CHR$(27) + CHR$(64)
5690 RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150 BEEP
6180 BEEP
6210 LOCATE 25,1
6240 PRINT SPC( 79)
6270 LOCATE 25,20
6300 PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY OFF
6390 RESUME
6420 END
65000  '************************ SAVE ROUTINE *******************************
65100 SAVE"B:EASYWORD.BAS

EPSONSET.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  PRINTER STYLES AND CONTROL CODES  **********************
12 '╔═════════════════════════════════════════════════════════════════════════╗
14 '║                EPSON/GEMINI 10/15 PRINT CONTROL PRINTOUT                ║
16 '║                                                                         ║
18 '║    This program establishes a series of standard control codes for      ║
20 '║ the MX-80 and GEMINI series printers. If the controls are entered in    ║
22 '║ your program as a subroutine and read on initializing, they may be      ║
24 '║ used for printer control from your program in single or combined form.  ║
26 '║ Run this program for an example of the print formats and then check out ║
28 '║ the referenced line numbers to see the code make up and 'call code.'    ║
30 '║ For an easy merge task, call up PRNTCALL.BAS on this disk.              ║
32 '║    The error routine will take care of printer 'off' or 'off line'. It  ║
34 '║ will go to Basic error-handling for 'paper-out' or others.  This pro-   ║
36 '║ gram may be used in whole or part without license or attribution.       ║
38 '║                    (c) G I N A C O   1983            Ver 5.1/160/320    ║
40 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS
300  SCREEN 0,0,0
310   WIDTH 80
320    CLEAR
330     FOR I! = 1 TO 10
340        KEY I!,""
350       NEXT
360 GOSUB 900
370  GOSUB 5000
380   CLS
390    LOCATE 6,20
400     PRINT "TURN PRINTER ON AND SET PAPER FOR PRINTOUT"
410      LOCATE 8,20
420       PRINT "THIS WILL PRINTOUT A TEST OF ALL SETTINGS"
430        LOCATE 10,20
440         PRINT "YOU CAN THEN CHECK OUTPUT WITH CODES USED"
450 LOCATE 12,20
460  PRINT "FOR YOUR OWN PROGRAMMING & PRINTING WORK."
470   LOCATE 16,28
480    PRINT "PRESS ANY KEY TO CONTINUE"
490 IF INKEY$ = "" THEN 490 ELSE 500
500 GOSUB 900
510  LPRINT SMALL$;"THIS IS CONDENSED -- LINE 5030"
520   GOSUB 900
530    LPRINT UNSMALL$;"THIS IS CONDENSED CLEARED -- LINE 5060"
540     GOSUB 900
550      LPRINT EXPAND.SMALL$;"THIS IS CONDENSED EXPANDED  -- LINE 5090"
560       GOSUB 900
570        CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
580 GOSUB 900
590  LPRINT EXPAND$;"EXPANDED SINGLE LINE  -- LINE 5150"
600   GOSUB 900
610    LPRINT EXPAND.END$;"THIS CLEARS EXPANDED -- LINE 5180"
620     GOSUB 900
630      LPRINT DARK$;"THIS IS EMPHASIZED PRINT -- LINE 5210"
640       GOSUB 900
650 LPRINT ITALIC$;"THIS IS ITALICS MODE -- LINE 5240"
660  GOSUB 900
670   LPRINT ITALIC.EXP.CON$;"ITALICS EXPAND CONDENSED -- LINE 5270"
680    GOSUB 900
690     LPRINT ITALIC.EXP$;"THIS IS ITALICS EXPANDED -- LINE 5300"
700      GOSUB 900
710 LPRINT END.ITALIC$;"THIS CLEARS ALL ITALICS -- LINE 5330"
720  GOSUB 900
730   LPRINT START.ULINE$;"THIS STARTS UNDERLINE -- LINE 5360"
740    GOSUB 900
750     LPRINT END.ULINE$;"THIS ENDS UNDERLINE -- LINE 5390"
760      GOSUB 900
770 LPRINT PERM.EXPAN$;"SETS PERMANENT EXPAND -- LINE 5420"
780  GOSUB 900
790   LPRINT END.PERMEXP$;"THIS CLEARS PERMANENT EXPAND -- LINE 5450"
800    GOSUB 900
810     LPRINT START.DSTRIKE$;"STARTS DOUBLE STRIKE -- LINE 5480"
820      GOSUB 900
830 LPRINT END.DSTRIKE$;"TERMINATES DOUBLE STRIKE -- LINE 5510"
840  GOSUB 900
850   LPRINT TINYLINE$;"PRINTS SUBSCRIPT TINYLINE -- LINE 5540"
860    GOSUB 900
870     LPRINT END.TINY$;"CLEARS SUBSCRIPT MODE -- LINE 5570"
880      LLIST 5000 - 5660
890       END
900 ON ERROR GOTO 6030
910 LPRINT CLEANUP$
920  RETURN
5000 REM **** PRINTER SUBROUTINES ***
5030 SMALL$ = CHR$(15)
5060 UNSMALL$ = CHR$(18)
5090 EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5120 CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5150 EXPAND$ = CHR$(14)
5180 EXPAND.END$ = CHR$(20)
5210 DARK$ = CHR$(27) + CHR$(69)
5240 ITALIC$ = CHR$(27) + CHR$(52)
5270 ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5300 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5330 END.ITALIC$ = CHR$(27) + CHR$(53)
5360 START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5390 END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5420 PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5450 END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5480 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5510 END.DSTRIKE$ = CHR$(27) + CHR$(72)
5540 TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5570 END.TINY$ = CHR$(27) + CHR$(84)
5600 CLEANUP$ = CHR$(27) + CHR$(64)
5630 ESC$ = CHR$(27)
5660 RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150  BEEP
6180   BEEP
6210    LOCATE 25,1
6240     PRINT SPC( 79)
6270      LOCATE 25,20
6300       PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY ON
6390  RESUME
6420   LLIST 5000 - 5600
6450    END
65000 REM****************** SAVE ROUTINE **************************************
65100 SAVE "B:EPSONSET.BAS"

ESCKEY.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):KEY OFF:LIST 10-57
13 '*****************  ESCAPE KEY RESPONSE SUBROUTINE  ************************
19 '╔═════════════════════════════════════════════════════════════════════════╗
22 '║ This will establish 'ESC' key as a 'CONTINUE' inkey response.  To use,  ║
25 '║ delete lines 05-45, renumber to fit your program, save with the 'A'     ║
28 '║ option and then merge in your program. Go to the subroutine with        ║
31 '║ a 'GOSUB' if you intend to use the procedure more than once.            ║
34 '║ If you do not want the F-KEY line ON, delete 'KEY-ON' from line 140.    ║
37 '║ If you want the prompt 'TO CONTINUE, PRESS ESC KEY' higher on screen.   ║
40 '║ Change the LOCATE 25 in the appropriate program lines.                  ║
41 '║                 (c) G I N A C O  -1983                 Ver 5.1/160/320  ║
44 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 '****** ESCAPE KEY RESPONSE SUBROUTINE FOLLOWS ***************************
105 KEY OFF: LOCATE 25,1:PRINT SPC(79):LOCATE 25,27:COLOR 3,0:PRINT"TO CONTINUE, PRESS ESC KEY";:COLOR 7,0
120 ESC$=INPUT$(1):IF ASC(ESC$) <> 27 THEN 125 ELSE 140
125 SOUND 500,4:GOTO 130
130 LOCATE 25,1:PRINT SPC(79):GOTO 105
140 LOCATE 25,1:PRINT SPC(79):KEY ON: REM DELETE IF YOU DO NOT WANT KEY ON
150 CLS:LOCATE 10,35:PRINT"YOU GOT IT RIGHT ":RETURN
160 END
65000 '************************** SAVE ROUITINE ******************************
65100 SAVE"B:ESCKEY.BAS"

FILEDATE.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
13 '***************** FILE DATE AND TIME STAMP PROGRAM  ***********************
17 '╔═════════════════════════════════════════════════════════════════════════╗
19 '║           PROGRAM TO CHANGE DATE AND HOUR OF DISK FILES                 ║
21 '║                                                                         ║
23 '║     This great basic program was written by Clay Jones of Tolleson, AZ. ║
25 '║ You may have noticed that all of the files on the DOS Disk show the     ║
27 '║ same date and hour. It might seem as if the internal clock had failed   ║
29 '║ or there were some mighty fast and prolific programmers. This program   ║
31 '║ permits you to put a new "time/date stamp" on PC disk files. It is an   ║
33 '║ easy program to use. It is self-documenting.  The DIM statement has     ║
35 '║ been set at 20. It is recommended that you limit the update to only     ║
37 '║ 10 files in one "run" of the program. This will keep your input list    ║
39 '║ at a reasonable level.  This program will work on .COM files also.      ║
41 '║                                                                         ║
43 '║     This program may be used in whole or in part without license or     ║
45 '║ attribution.         (c) G I N A C O  -- 1983      Ver 5.1 160/320      ║
47 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 FOR I=1 TO 10:KEY I,"":NEXT
100 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR
110 ON ERROR GOTO 580
150 PRINT"FILEDATE.BAS    a program to change the date and time of disk files":DIM FILE$(20)
170 LOCATE 5,1:INPUT"What date do you want on the files (MM/DD/YY)";IDATE$
190 DATE$=IDATE$:LOCATE5,1:PRINT SPC(70)
220 LOCATE5,1:INPUT"What time do you want on the files (HH:MM)";ITIME$
240 TIME$=ITIME$:LOCATE5,1:PRINT SPC(70):LOCATE5,1,0:PRINT"Which disk drive are the files on";:COLOR23:PRINT"?":COLOR7
320 DRIVE$=INKEY$:IFDRIVE$=""THEN320
340 IFLEN(DRIVE$)>1 THENDRIVE$="
350 IF(ASC(DRIVE$)<65 ORASC(DRIVE$)>90)AND(ASC(DRIVE$)<97 ORASC(DRIVE$)>122)THENDRIVE$=""ELSEDRIVE$=DRIVE$+":
360 LOCATE5,1:PRINT SPC(70):LOCATE3,1:IFDRIVE$=""THENPRINT"Printing files on default drive"ELSEPRINT"Printing files on drive "DRIVE$
400 LOCATE5,1:IFDRIVE$<>""THENFILESDRIVE$+"*.*"ELSEFILES
420 I=0:PRINT
440 INPUT"Filename";FILENAME$:IFFILENAME$<>""THENI=I+1:FILE$(I)=FILENAME$:GOTO440
460 FORL=1 TOI:OPEN DRIVE$+FILE$(L) AS 1 LEN=1:DATE$=IDATE$:TIME$=ITIME$:GET#1,1:PUT#1,1:CLOSE:NEXTL:CLS:LOCATE5,1:PRINT"Your date and time are now set to ";IDATE$;" and ";ITIME$:END
580 IFERR<>5 ORERL<>190 THEN630
590 LOCATE6,1:PRINT"Not a valid date":GOSUB690:RESUME170
630 IFERR<>5 ORERL<>240 THEN680
640 LOCATE6,1:PRINT"Not a valid time":GOSUB690:RESUME220
680 ONERRORGOTO0
690 LOCATE25,10:PRINT"Press space to continue";
710 IFINKEY$<>" "THEN710
720 LOCATE5,1:PRINT SPC(70):LOCATE6,1:PRINT SPC(70):LOCATE25,1:PRINT SPC(70);:RETURN
730 END
65000 REM ******************* SAVE ROUTINE ***********************************
65100 SAVE"B:FILEDATE.BAS

FILES66.TXT

--------------------------------------------------------------------------
Disk No 66    GINACO Programs                                        v3.1
--------------------------------------------------------------------------
This is a very popular and well-liked disk full of useful utilities and
games.  All programs may be accessed by running the main menu program
BLUEMENU.BAS.

ALPHAHEX BAS  Alpha to hex reference display
BLUEBERY BAS  Label creator, filer, record system - simular to LABELPRO.BAS
BLUEBERY DOC  Documentation for BLUEBERY.BAS
BLUEBRY2 DOC  Documentation for BLUEBRY2.BAS
BLUEMENU BAS  Menu for running programs on this disk
BOXINBOX BAS  Displays border boxes on CRT - can be used as subroutine
BOXINPUT BAS  Disables all input keys except those needed by your program
BUSCHECK BAS  Checking or cash account reconciliation aid
CALULATE BAS  Simple calculator
CHEKFORM BAS  Check ledger & statement reconciliation form sheet
CHR$PRNT BAS  Prints you printers character set
CIRCLE   GRA+ Hypnotic circle
COLORSEE CLR+ Displays full-color range
COMPOUND BAS  Annual compounded value of a sum at end of each year
D&CFORM  BAS  Debit/credit worksheet
EASYRITE BAS  Word processor
EASYWORD BAS  Simple text editor with no file storage
EPSONSET BAS  Epson printer control and tester
ESCKEY   BAS  Converts ESC key to Continue key
FILEDATE BAS  Date and time stamp on PC files
GASFORM  BAS  Mileage and trip log form
HEADCLN  BAS  Diskette drive head cleaning utility
HEXPRINT BAS  Hex/decimal display printout
HEXSAY   BAS  Converts hex to decimal
IBMLABEL BAS  Label print routine
KEYSET   BAS  BASIC function key settings
LABLFILE BAS  Label creator, notebook, record keeper, file system
LISTSKIP 10P  10 pitch program listing
LISTSKIP 17P  17.5 pitch program listing
LPT12SET BAS  Toggles between LPT1 and LPT2 if you have 2 printers
MENUPRNT BAS+ Graphics print routine
NECLABEL BAS  NEC 8023A label printer
NICELIST BAS  Print an ASCII file with page skip and header
PC-COLOR BAS+ Color monitor test
PCADD    GRA+ Graphics print routine
PEEKPRNT BAS  Alpha to hex reference display
PRNTCALL BAS  Subroutine for printer control
PROGHEAD BAS  BASIC program heading
QUICKBOX CLR  Part of showbox
RANDSEED BAS  Random number generator
SAMPLE   TWD  Data for TESTWRIT.BAS
SAVINGS  BAS  Display & print savings or checking account information
SHOWBOX  BAS  BASIC subroutine - border
SIXBOXES BAS  Program example - 6 nested boxes
STARTUP  BAS  Example of menu display
STARTUP  CLR  Example of menu display
TASKLIST BAS  Daily phone call and to-do list
TESTWRIT DOC  Documentation for TESTWRIT.BAS
TIMESHOW BAS  Display, retains elapsed time
WEIGHTFM BAS  Daily health record form
WORKFILE BAS  General ledger - daily journal entry form
WORKFILE DAT  Part of WORKFILE
YESORNO  BAS  Yes/no response subroutine
YOURMENU BAS  Menu subroutine
ZIPCLEAR BAS  Clears designated screen area

PC-SIG
1030D East Duane Avenue
Sunnyvale CA 94086
(408) 730-9291
(c) copyright 1986,87 PC-SIG

GASFORM.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************   GAS/DIESEL MILEAGE CHART  *****************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║     AUTOMOBILE AND RECREATIONAL VEHICLE MILEAGE AND TRIP RECORD         ║
20 '║                                                                         ║
22 '║   This program produces a chart and record which is suitable for re-    ║
24 '║ cording daily & trip mileage in an automobile or R.V.  It is suitable   ║
26 '║ for tax records, if appropriate. The headings include: Octane, location ║
28 '║ of fuel purchase, date, odometer reading, cost/gallon; # of gallons     ║
30 '║ purchased, total $$$ paid, total mileage between fill ups; and miles    ║
32 '║ per gallon.  The daily trip portion indicates the location of the over- ║
34 '║ night stop, the odometer reading, and the total daily (trip) mileage.   ║
35 '║   Try this form on your next trip.  The results are interesting.        ║
36 '║                     (c) G I N A C O  -- 1983          Ver 5.2/160/320   ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS
100 SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
110 LPRINT CHR$(27);CHR$(64);
120 LPRINT CHR$(15);
130 WIDTH "LPT1:",132
140 CLS:LOCATE 10,25:INPUT"Number of copies ",N
150 FOR NUMBER = 1 TO N
160 LPRINT STRING$(4,10);
170 LPRINT TAB(35)"AUTO & REC-V MILEAGE/FUEL RECORD -- DAILY AND TRIP MILEAGE";
180 LPRINT CHR$(27);"U"+CHR$(1);
190 LPRINT CHR$(27);CHR$(50)
200 LPRINT "__________________________________________________________________________________________________________________________________";
210 LPRINT "I OCT  I   LOCATION    I  DATE    I  ODOMETER  I $$/GAL  I T/GALS. I  T/$$$   I TOT/M I  M/GAL II  O'NITE   I  ODOMETER  I MILES I";
220 LPRINT CHR$(27);CHR$(48)
230 LPRINT "I------I---------------I----------I------------I---------I---------I----------I-------I--------II-----------I------------I-------I";
240 FOR I = 1 TO 34
250 LPRINT "I      I               I          I            I         I         I          I       I        II           I            I       I";
260 LPRINT "I------I---------------I----------I------------I---------I---------I----------I-------I--------II-----------I------------I-------I";
270 NEXT
280 LPRINT "I  T O T A L S:        I          I            I         I         I          I       I        II           I            I       I";
290 LPRINT "I______________________I__________I____________I_________I_________I__________I_______I________II___________I____________I_______I"
300 LPRINT CHR$(12)
310 NEXT NUMBER
320 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:GASFORM.BAS"

GENLEGER.BAS

1 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 2-47
2 ' ╔═════════════════════════════════════════════════════════════════════════╗
3 ' ║           GENERAL LEDGER WORKFILE ENTRY SHEET WITH MONTH SORT           ║
5 ' ║    This program provides a formatted Record Form for General Ledger or  ║
6 ' ║ daily journal input. The file can be saved under your FILESPEC$.  A     ║
7 ' ║ sample file for retrieval, review, and printout is named GLEGER.DAT.    ║
8 ' ║ User may select annual or monthly printouts of a wide variety.  It is   ║
9 ' ║ necessary to input the month with three capital letters as the print    ║
10 '║ sort looks for the first three letters of the month name; i.e.:, JAN,   ║
11 '║ FEB, MAR, etc.  The ENTRY under CHECK # may be as desired;i.e. NUMBER,  ║
12 '║ INCOME, CASH, NAME, etc.  INCOME entries under CODE column may be user  ║
13 '║ specified with different codes (101,102, etc) to show separate income   ║
14 '║ classes (Load GLEGER.DAT to demonstrate).  The PRINT REPORT routine is  ║
15 '║ able to discriminate and print out different categories.  DIM size may  ║
16 '║ be decreased (lines 390-400) for smaller memory machines.  300 is OK    ║
17 '║ for 64K.  Print this documentation with LLIST 1-45.  Delete line #1 to  ║
18 '║ start program with basic menu.   When <PRESS> is directed, do not use   ║
19 '║ <ENTER>   When <ENTER> is directed, press letter/number then <ENTER>.   ║
20 '║                          (c) G I N A C O -- 1987           Ver 5.871    ║
21 '╚═════════════════════════════════════════════════════════════════════════╝
45 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
47 ' === To avoid DOCUMENTATION BOX, REM or DELETE line 1. Resave Program.===
60 ' ===== GENERAL ACCOUNTING JOURNAL ENTRY PROGRAM FOR PC/XT/AT (IBM)
70 ' ===== DEVELOPED BY BRUNO LARSEN, GINACO, NOVEMBER 1984
80 ' ===== MODIFIED AND UPDATED JANUARY, 1987.   COPYRIGHT 1987.
90 ' ===== SAVED AS GENLEGER.BAS  TEST FILE TO RETREIVE IS GLEGER.DAT
100 KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT
110 CLS:LOCATE ,,0:WIDTH 80:CLEAR
120 GOTO 180
130 GOSUB 150
140 GOTO 470
150 CLS
160 RETURN
170 ' ===== WORKFILE TO ESTABLISH BASIC JOURNAL ENTRIES FOR BOOKEEPING SYSTEM
180 DEFDBL G,V,T:DEFSTR S:S=CHR$(219):DEFINT I,J:Q$=CHR$(34)
190 ON ERROR GOTO 8660
200 GOSUB 7490
210 GOSUB 240
220 FOR DL = 1 TO 3000:NEXT
230 GOTO 470
240 ' ===== INITIAL LOGO SCREEN BUILDUP
250 WIDTH 80:CLS:COLOR 15:LOCATE,,0
260 PRINT "        ╔═══════════════════════════════════════════════════════════════╗
270 PRINT "        ║                                                               ║
280 PRINT "        ║                                                               ║
290 PRINT "        ║        ▄▄▄▄▄  ▄▄▄▄ ▄▄   ▄ ▄    ▄▄▄▄ ▄▄▄▄▄  ▄▄▄▄ ▄▄▄▄▄         ║
300 PRINT "        ║        █  ▄█  █    ██▄  █ █    █    █  ▄█  █    █   █         ║
310 PRINT "        ║        █  ▄▄▄ █▀▀  █ ▀█▄█ █    █▀▀  █  ▄▄▄ █▀▀  █▀█▀▀         ║
320 PRINT "        ║        █▄▄▄█  █▄▄▄ █   ██ █▄▄▄ █▄▄▄ █▄▄▄█  █▄▄▄ █  ▀▄         ║
330 PRINT "        ║                                                               ║
340 PRINT "        ║        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         ║
350 PRINT "        ║           A Single-entry Expense, Income, & Check             ║
360 PRINT "        ║              Recording System with Multi-format               ║
370 PRINT "        ║                Display, Retrieval and Printout                ║
380 PRINT "        ║                                                               ║
390 PRINT "        ║                        Bruno M. Larsen                        ║
400 PRINT "        ║                                                               ║
410 PRINT "        ║      G I N A C O         Ver 8.715        (C) January 1987    ║
420 PRINT "        ║                                                               ║
430 PRINT "        ╠═══════════════════════════════════════════════════════════════╣
440 PRINT "        ║                      One Moment Please !                      ║
450 PRINT "        ╚═══════════════════════════════════════════════════════════════╝":COLOR 7
460 COLOR 7:RETURN
470 ' ===== START AND INITIALIZE MAIN PROGRAM
480 DIM A$(600),B$(600),C$(600),D$(600),E$(600),F$(600),G$(600),G(600)
490 A$(I)="":B$(I)="":C$(I)="":D$(I)="":E$(I)="":F$(I)="":G$(I)=""
500 I=1:J=0:N1=600:X=0:NF=0:D=0:CN=0:CLN=0
510 GOTO 1280
520 ' ===== DISPLAY MAIN PROGRAM MENU SCREEN BUILDUP
530 CLS:LOCATE ,,0
540 COLOR 15:CLS:LOCATE 3,25:PRINT "GENLEGER -- JOURNAL ENTRY PROGRAM ";
550 PRINT TAB(22)STRING$(39,CHR$(220));
560 PRINT TAB(22);S;TAB(60);S;
570 PRINT TAB(22);S;"   <1> Start New Journal Records";TAB(60);S;
580 PRINT TAB(22);S;"   <2> Load Records from Disk";TAB(60);S;
590 PRINT TAB(22);S;"   <3> Review File Records";TAB(60);S;
600 PRINT TAB(22);S;"   <4> Change Records in File";TAB(60);S;
610 PRINT TAB(22);S;"   <5> Add new records to file"TAB(60);S;
620 PRINT TAB(22);S;"   <6> Save Records on Disk";TAB(60);S;
630 PRINT TAB(22);S;"   <7> Display TOTALS To Date";TAB(60);S;
640 PRINT TAB(22);S;"   <8> PRINT Reports "TAB(60);S;
650 PRINT TAB(22);S;"   <9> FILES in Directory "TAB(60);S
660 PRINT TAB(22);S;"   <0> EXIT Program  "TAB(60);S;
670 PRINT TAB(22);S;TAB(60);S;
680 PRINT TAB(22);STRING$(39,CHR$(223));
690 PRINT:PRINT TAB(31);" <  Your choice  > ";
700 RETURN
710 ' ===== FULL YEAR PRINTOUTS --  SUB MENU SCREEN BUILDUP
720 GOSUB 7490
730 CLS:LOCATE 4,,0
740 COLOR 15:PRINT:PRINT:PRINT TAB(22)STRING$(39,220);
750 PRINT TAB(22);S;TAB(60);S;
760 PRINT TAB(22);S;"          FULL YEAR PRINTOUTS";TAB(60);S;
770 PRINT TAB(22);S;TAB(60);S;
780 PRINT TAB(22);S;"   <1>  Both Income and Expenses";TAB(60);S;
790 PRINT TAB(22);S;"   <2>  Income Only"TAB(60);S;
800 PRINT TAB(22);S;"   <3>  Expenses Only"TAB(60);S;
810 PRINT TAB(22);S;"   <4>  Expense By Code/Category"TAB(60);S;
820 PRINT TAB(22);S;"   <5>  Income By Code/Category"TAB(60);S;
830 PRINT TAB(22);S;"   <6>  Check Ledger to Date"TAB(60);S;
840 PRINT TAB(22);S;"   <7>  Printer Form Feed"TAB(60);S;
850 PRINT TAB(22);S;"   <8>  Monthly Report Menu"TAB(60);S;
860 PRINT TAB(22);S;"   <9>  Exit to Main Menu"TAB(60);S;
870 PRINT TAB(22);S;TAB(60);S;
880 PRINT TAB(22)STRING$(39,223);
890 PRINT:PRINT TAB(31);" < Your Choice > ";
900 LOCATE 20,20
910 RETURN
920 ' ===== MONTH PRINTOUTS  -- SUBMENU SCREEN BUILDUP
930 GOSUB 7490
940 CLS:LOCATE 4,,0
950 COLOR 15:PRINT:PRINT:PRINT TAB(22)STRING$(39,220);
960 PRINT TAB(22);S;TAB(60);S;
970 PRINT TAB(22);S;"          PRINTOUT BY MONTH";TAB(60);S;
980 PRINT TAB(22);S;TAB(60);S;
990 PRINT TAB(22);S;"   <1>  Both Income and Expenses";TAB(60);S;
1000 PRINT TAB(22);S;"   <2>  Income Only"TAB(60);S;
1010 PRINT TAB(22);S;"   <3>  Expenses Only"TAB(60);S;
1020 PRINT TAB(22);S;"   <4>  Expense By Code/Category"TAB(60);S;
1030 PRINT TAB(22);S;"   <5>  Income By Code/Category"TAB(60);S;
1040 PRINT TAB(22);S;"   <6>  Monthly Check Register";TAB(60);S;
1050 PRINT TAB(22);S;"   <7>  Printer Form Feed"TAB(60);S;
1060 PRINT TAB(22);S;"   <8>  Annual Report Menu"TAB(60);S;
1070 PRINT TAB(22);S;"   <9>  Exit to Main Menu"TAB(60);S;
1080 PRINT TAB(22);S;TAB(60);S;
1090 PRINT TAB(22)STRING$(39,223);
1100 PRINT:PRINT TAB(32);" < Your Choice > ";
1110 LOCATE 20,20
1120 RETURN
1130 ' ===== MAIN PRINT MENU SCREEN SETUP
1140 GOSUB 7490
1150 CLS:LOCATE 4,,0
1160 PRINT:PRINT:PRINT:PRINT TAB(22)STRING$(39,220)
1170 PRINT TAB(22);S;TAB(60);S
1180 PRINT TAB(22);S;"   <1> Full Year Printouts";TAB(60);S
1190 PRINT TAB(22);S;TAB(60);S
1200 PRINT TAB(22);S;"   <2> Printout by Month";TAB(60);S
1210 PRINT TAB(22);S;TAB(60);S
1220 PRINT TAB(22);S;"   <3> Exit to Main Menu";TAB(60);S
1230 PRINT TAB(22);S;TAB(60);S
1240 PRINT TAB(22)STRING$(39,223)
1250 PRINT TAB(31)" < Your Choice >"
1260 LOCATE 20,20
1270 RETURN
1280 ' ===== PROTECTED NUMBER SELECT ROUTINE,  MAIN MENU
1290 GOSUB 520
1300  WIDTH 80:LOCATE ,,0
1310  LOW=48
1320  HA=58
1330  FA=1
1340  GOSUB 8040
1350  WIDTH 80:COLOR 7:ON VAL(IA$)GOTO 1370,2720,3210,3370,3750,2970,3810,3970,7970,8320
1360  GOTO 8320
1370 ' ===== CHECK TO SEE IF RECORDS ARE ALREADY IN FILE
1380  IF A$(1)<>"" GOTO 1390 ELSE 1480
1390  CLS:LOCATE 4,10:COLOR 15:PRINT"CAUTION!  The FILE is not EMPTY. Use SELECTION 5 to Add records.":COLOR 7
1400  LOCATE 8,19:PRINT "Press 1 to Erase File and Start New File."
1410  LOCATE 10,19:PRINT" Press 2 to Return to Main Control Menu."
1420  LOW=49
1430  HA=50
1440  FA=1
1450  GOSUB 8040
1460  WIDTH 80:COLOR 7:ON VAL(IA$)GOTO 1470,1290
1470  FOR I=1 TO N1:A$(I)="":B$(I)="":C$(I)="":D$(I)="":E$(I)="":F$(I)="":NEXT
1480  I=1:N1=600
1490  CLS:GOSUB 1530
1500  FOR I=I TO N1:GOSUB 1750
1510 NEXT
1520 GOTO 1290
1530 ' ===== FORMAT FOR INITIAL DATA FILE INPUT ROUTINE
1540 WIDTH 80:LOCATE,,0
1550 COLOR 15:LOCATE 3,5:PRINT"Enter DATA in UPPER CASE only.  Wrong characters will be rejected by tone.":COLOR 7
1560 LOCATE 5,15:PRINT"DATE (MMM,DD): ":LOCATE 5,50:PRINT"■■■-■■
1570 LOCATE 7,15:PRINT"Check # or Income: ":LOCATE 7,50:PRINT"■■■■■■
1580 LOCATE 9,15:PRINT"DESCRIPTION: ":LOCATE 9,50:PRINT"■■■■■■■■■■■■■■■
1590 LOCATE 11,15:PRINT"TO/FROM: ":LOCATE 11,50:PRINT"■■■■■■■■■■■■■■■
1600 LOCATE 13,15:PRINT"ACCOUNT (CODE) #: ":LOCATE 13,50:PRINT"■■■■
1610 LOCATE 15,15:PRINT"I or E: ":LOCATE 15,50:PRINT"■
1620 LOCATE 17,15:PRINT"$ AMOUNT: ":LOCATE 17,50:PRINT"■■■■■■■■■■"
1630 LOCATE  22,1:PRINT WT$:LOCATE 23,1:PRINT WU$
1640 RETURN
1650 ' ===== OUTLINE FOR INITIAL DATA FILE INPUT ROUTINE
1660 LOCATE 5,15:PRINT"DATE (MMM,DD): ":LOCATE 5,70:PRINT SPC(8)
1670 LOCATE 7,15:PRINT"CHECK # or INCOME: ":LOCATE 7,70:PRINT SPC(8)
1680 LOCATE 9,15:PRINT"DESCRIPTION: ":LOCATE 9,70:PRINT SPC(8)
1690 LOCATE 11,15:PRINT"TO/FROM: ":LOCATE 11,70:PRINT SPC(8)
1700 LOCATE 13,15:PRINT"ACCOUNT (CODE) #: ":LOCATE 13,70:PRINT SPC(8)
1710 LOCATE 15,15:PRINT"I or E: ":LOCATE 15,70:PRINT SPC(8)
1720 LOCATE 17,15:PRINT"$ AMOUNT: ":LOCATE 17,70:PRINT SPC(10)
1730 LOCATE  22,1:PRINT WT$:LOCATE 23,1:PRINT WU$
1740 RETURN
1750 ' ===== RECORD 1: MONTH AND DAY
1760 LOCATE 5,4:PRINT I:LOCATE 5,47:PRINT"1.
1770 FA=6:LOW=32:HA=90
1780 COLOR 15:LOCATE 5,50:PRINT"■■■-■■":COLOR 7
1790 LOCATE 5,70:PRINT"<ENTER>
1800 LOCATE 5,50
1810 GOSUB 7240
1820 IF FIN$="" THEN A$(I)=A$(I) ELSE A$(I)=FIN$
1830 GOTO 1900
1840 IF A$(I)="END" THEN N1=I:GOTO 1280
1850 LOCATE 5,50
1860 COLOR 15:PRINT A$(I):COLOR 7
1870 LOCATE 24,2:PRINT SPC(6);:LOCATE 24,2:PRINT I;
1880 LOCATE 24,7:PRINT SPC(8);:LOCATE 24,7:PRINT A$(I);
1890 GOTO 1950
1900 ' ===== INITIAL FILE INPUT MONTH CAPITAL CHECK
1910 MN$=LEFT$(A$(I),3)
1920 IF(MN$="JAN")OR(MN$="FEB")OR(MN$="MAR")OR(MN$="APR")OR(MN$="MAY")OR(MN$="JUN")OR(MN$="JUL")OR(MN$="AUG")OR(MN$="SEP")OR(MN$="OCT")OR(MN$="NOV")OR(MN$="DEC")OR(MN$="END")THEN 1840 ELSE 1930
1930 SOUND 440,4:SOUND 600,4:SOUND 800,4:SOUND 600,4:SOUND 440,4:GOTO 1750
1940 RETURN
1950 ' ===== RECORD 2: CHECK NUMBER OR INCOME
1960 LOCATE 7,47:PRINT"2.
1970 FA=6:LOW=32:HA=90
1980 COLOR 15:LOCATE 7,50:PRINT"■■■■■■":COLOR 7
1990 LOCATE 7,70:PRINT"<ENTER>
2000 LOCATE 7,50
2010 GOSUB 7240
2020 IF FIN$="" THEN B$(I)=B$(I) ELSE B$(I)=FIN$
2030 LOCATE 7,50
2040 COLOR 15:PRINT B$(I):COLOR 7
2050 LOCATE  24,14:PRINT SPC(8);:LOCATE 24,15:PRINT B$(I);
2060 ' ===== RECORD 3: DESCRIPTION
2070 LOCATE 9,47:PRINT"3.
2080 FA=15:LOW=32:HA=90
2090 COLOR 15:LOCATE 9,50:PRINT"■■■■■■■■■■■■■■■":COLOR 7
2100 LOCATE 9,70:PRINT"<ENTER>
2110 LOCATE 9,50
2120 GOSUB 7240
2130 IF FIN$="" THEN C$(I)=C$(I) ELSE C$(I)=FIN$
2140 LOCATE 9,50
2150 COLOR 15:PRINT C$(I):COLOR 7
2160 LOCATE 24,22:PRINT SPC(12);:LOCATE 24,23:PRINT C$(I);
2170 ' ===== RECORD 4: TO/FROM
2180 LOCATE 11,47:PRINT"4.
2190 FA=15:LOW=32:HA=90
2200 COLOR 15:LOCATE 11,50:PRINT"■■■■■■■■■■■■■■■":COLOR 7
2210 LOCATE 11,70:PRINT"<ENTER>
2220 LOCATE 11,50
2230 GOSUB 7240
2240 IF FIN$="" THEN D$(I)=D$(I) ELSE D$(I)=FIN$
2250 LOCATE 11,50
2260 COLOR 15:PRINT D$(I):COLOR 7
2270 LOCATE 24,39:PRINT SPC(12);:LOCATE 24,40:PRINT D$(I);
2280 ' ===== RECORD 5" ACCOUNT OR CODE NUMBER
2290 LOCATE 13,47:PRINT"5.
2300 FA=4:LOW=48:HA=57
2310 COLOR 15:LOCATE 13,50:PRINT"■■■■":COLOR 7
2320 LOCATE 13,70:PRINT"<ENTER>
2330 LOCATE 13,50
2340 GOSUB 7240
2350 IF FIN$="" THEN E$(I)=E$(I) ELSE E$(I)=FIN$
2360 LOCATE 13,50
2370 COLOR 15:PRINT E$(I):COLOR 7
2380 LOCATE 24,56:PRINT SPC(6);:LOCATE 24,57:PRINT E$(I);
2390 ' ===== RECORD 6: EXPENSE OR INCOME (E/I)
2400 LOCATE 15,47:PRINT"6.
2410 FA=1:LOW=69:HA=78
2420 COLOR 15:LOCATE 15,50:PRINT"■":COLOR 7
2430 LOCATE 15,70:PRINT"<ENTER>
2440 LOCATE 15,50
2450 GOSUB 7240
2460 IF FIN$="" THEN F$(I)=F$(I) ELSE F$(I)=FIN$
2470 LOCATE 15,50
2480 COLOR 15:PRINT F$(I):COLOR 7
2490 LOCATE 24,64:PRINT SPC(5);:LOCATE 24,65:PRINT F$(I);
2500 ' ===== RECORD 7: $$ AMOUNT
2510 LOCATE 17,47:PRINT"7.
2520 FA=10:LOW=45:HA=57
2530 COLOR 15:LOCATE 17,50:PRINT"■■■■■■■■■■":COLOR 7
2540 LOCATE 17,70:PRINT"<ENTER>
2550 LOCATE 17,50
2560 GOSUB 7240
2570 IF FIN$="" THEN G$(I)=G$(I) ELSE G$(I)=FIN$
2580 LOCATE 17,50
2590 COLOR 15:PRINT USING "$##,###.##";VAL(G$(I)):COLOR 7
2600 LOCATE 24,67:PRINT SPC(12);:LOCATE 24,68:PRINT USING "$##,###.##";VAL(G$(I));
2610 ' ===== CORRECT QUESTION ON INITIAL INPUT
2620 COLOR 15:LOCATE 19,20:PRINT SPC(50):LOCATE 19,25:PRINT "Is this correct <Y or N>":COLOR 7
2630 GOSUB 8170
2640 IF YN=1 THEN 2690
2650 IF YN=2 THEN 2660
2660 GOSUB 1650:COLOR 15:LOCATE 19,20:PRINT SPC(50);
2670 COLOR 15:LOCATE 19,20:PRINT"Press <ENTER> if the ENTRY is CORRECT.":COLOR 7
2680 GOTO  1760
2690 GOSUB 1530:LOCATE 19,1:PRINT SPC(79);
2700 LOCATE 24,1:PRINT SPC(79);
2710 RETURN
2720 ' ===== LOAD RECORDS FROM DISK
2730 WIDTH 80:LOCATE,,0
2740 GOSUB 150
2750 GOSUB 7490
2760 COLOR 15:PRINT:PRINT:PRINT:PRINT TAB((80-LEN(WW$))*0.5);WW$
2770 PRINT:PRINT TAB((80-LEN(WD$))*0.5);WD$
2780 PRINT:PRINT TAB((80-LEN(WE$))*0.5);WE$
2790 PRINT:PRINT TAB((80-LEN(WF$))*0.5);WF$:COLOR 7
2800 ' ===== PROTECTED NUMBER SELECT ROUTINE, LOAD FROM DISK
2810 COLOR 15:LOW=49
2820 HA=50
2830 FA=1
2840 GOSUB 8040
2850 ON VAL(IA$)GOTO 2860,1280
2860 GOSUB 150:GOSUB 7490:PRINT:PRINT:PRINT:PRINT TAB((80-LEN(WH$))*0.5);WH$
2870 PRINT:PRINT TAB(38)" ";:INPUT FS$
2880 GOSUB 150:PRINT:PRINT:PRINT:PRINT TAB((80-LEN(WY$))*0.5);WY$:COLOR 7:FOR DL=1 TO 1000:NEXT
2890 ' ===== ACTUAL WRITE ROUTINE
2900 OPEN "I",1,FS$
2910 INPUT#1,N1
2920 FOR I=1 TO N1
2930 INPUT#1,A$(I),B$(I),C$(I),D$(I),E$(I),F$(I),G$(I)
2940 IF EOF(1)THEN CLOSE:GOTO 1280
2950 IF(A$(I)="end"OR A$(I)="END")THEN CLOSE
2960 NEXT
2970 ' ===== SAVE DATA FILE ON DISK
2980 GOSUB 150:GOSUB 7490
2990 IF A$(1)=""THEN 7190
3000 GOSUB 150:GOSUB 7490:PRINT:PRINT:PRINT:PRINT TAB((80-LEN(WW$))*0.5);WW$
3010 COLOR 15:PRINT:PRINT TAB((80-LEN(WC$))*0.5);WC$:PRINT
3020 PRINT TAB((80-LEN(WE$))*0.5);WE$:PRINT:PRINT TAB((80-LEN(WF$))*0.5);WF$
3030 ' ===== PROTECTED NUMBER SELECT ROUTINE, SAVE TO DISK
3040 LOW=48
3050 HA=58
3060 FA=1
3070 GOSUB 8040
3080 ON VAL(IA$)GOTO 3090,1290
3090 GOSUB 150:GOSUB 7490:PRINT:PRINT:PRINT TAB(30)" ";WH$:PRINT:PRINT TAB(38);:INPUT FS$:COLOR 7
3100 OPEN "O",1,FS$
3110 GOSUB 150:GOSUB 7490
3120 PRINT TAB((80-LEN(WB$)) *0.5);WB$
3130 WRITE#1,N1
3140 FOR I=1 TO N1:WRITE#1,A$(I),B$(I),C$(I),D$(I),E$(I),F$(I),G$(I)
3150 IF(A$(I)="END")OR(A$(I)="end")THEN CLOSE:GOTO 3180
3160 NEXT
3170 GOTO 1290
3180 GOSUB 150:GOSUB 7490
3190 PRINT:PRINT:PRINT:PRINT TAB((80-LEN(WZ$))*0.5);WZ$:FOR DL=1 TO 10000:NEXT
3200 GOTO 1290
3210 ' ===== REVIEW OLD FILES
3220 IF A$(1)=""THEN 7190
3230 GOSUB 7410
3240 NF=1
3250 FOR I=1 TO N1
3260 PRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
3270 PRINT TAB(57);E$(I);TAB(65);F$(I);
3280 PRINT TAB(68);USING "$##,###.##";VAL(G$(I))
3290 NF=NF+1
3300 IF A$(I)="END"OR A$(I)="end"THEN 3350
3310 IF NF=20 THEN NF=1
3320 IF NF=1 THEN PRINT TAB((80-LEN(XC$))*0.5);WG$
3330 IF NF=1 THEN PRINT:GOSUB 8250:GOSUB 7410
3340 NEXT
3350 PRINT:PRINT TAB((80-LEN(XC$))*0.5);WG$
3360 GOSUB 8250:GOTO 1290
3370 ' ===== CHANGE A RECORD
3380 IF A$(1)=""THEN 7190
3390 GOSUB 150:GOSUB 7490
3400 COLOR 15:PRINT:PRINT TAB((80-LEN(XD$))*0.5)XD$
3410 PRINT:PRINT TAB(30)" ";:INPUT RN:COLOR 7
3420 IF RN > N1 THEN GOTO 3430 ELSE 3450
3430 SOUND 600,4:SOUND 800,4:SOUND 600,4
3440 PRINT TAB(21) "There are only ";N1;"records in the file.":GOTO 3400
3450 GOSUB 150:GOSUB 7410:GOSUB 3460:GOTO 3500
3460 COLOR 15:PRINT TAB(2);RN;TAB(7);A$(RN);TAB(15);B$(RN);TAB(23);C$(RN);TAB(40);D$(RN);
3470 PRINT TAB(57);E$(RN);TAB(65);F$(RN);
3480 PRINT TAB(68);USING "$##,###.##";VAL(G$(RN));
3490 RETURN
3500 PRINT:PRINT:PRINT TAB((80-LEN(XE$))*0.5);XE$
3510 PRINT
3520 PRINT:PRINT TAB((80-LEN(WE$))*0.5);WE$
3530 PRINT:PRINT TAB((80-LEN(WF$))*0.5);WF$
3540 PRINT:PRINT TAB((80-LEN(XC$))*0.5);XC$:COLOR 7
3550 ' ===== PROTECTED NUMBER SELECT ROUTINE,  CHANGE A RECORD
3560 LOW=49
3570 HA=51
3580 FA=1
3590 GOSUB 8040
3600 ON VAL(IA$)GOTO 3610,3730,3390
3610 CLS:GOSUB 1530
3620 LOCATE  22,1:PRINT WT$:LOCATE 23,1:PRINT WU$
3630 LOCATE 24,1:PRINT TAB(2);RN;TAB(7);A$(RN);TAB(15);B$(RN);TAB(23);C$(RN);
3640 PRINT TAB(40);D$(RN);TAB(58);E$(RN);TAB(65);F$(RN);TAB(68);USING"$##,###.##";VAL(G$(RN));
3650 LOCATE 5,4:PRINT RN:LOCATE 5,47:PRINT"1":LOCATE 5,50:PRINT A$(RN)
3660 LOCATE 7,47:PRINT "2.":LOCATE 7,50:PRINT B$(RN)
3670 LOCATE 9,47:PRINT "3.":LOCATE 9,50:PRINT C$(RN)
3680 LOCATE 11,47:PRINT "4.":LOCATE 11,50:PRINT D$(RN)
3690 LOCATE 13,47:PRINT "5.":LOCATE 13,50:PRINT E$(RN)
3700 LOCATE 15,47:PRINT "6.":LOCATE 15,50:PRINT F$(RN)
3710 LOCATE 17,47:PRINT "7.":LOCATE 17,50:PRINT USING "$##,###.##";VAL(G$(RN))
3720 I=RN:GOSUB 2610
3730 CLS:GOTO 1290
3740 END
3750 ' ===== ADD NEW RECORDS TO RECALLED FILE
3760 IF A$(N1-1)=""THEN 7190
3770 I=N1
3780 N1=600
3790 CLS:GOSUB 1530
3800 GOTO 1500
3810 ' ===== DISPLAY FILE TOTALS TO DATE
3820 GOSUB 150:GOSUB 7490
3830 IF A$(N1-1)=""THEN 7190
3840 G=0:TE=0:TI=0
3850 FOR I=1 TO N1:G(I)=VAL(G$(I)):IF F$(I)="I"THEN TI=TI+G(I)
3860 LOCATE 13,1:PRINT USING "$##,###.##";G(I)
3870 LOCATE 13,65:PRINT USING "$##,###.##";TI:NEXT
3880 ET=0:FOR I=1 TO N1:IF F$(I)="E"THEN TE=TE+G(I)
3890 LOCATE 14,1:PRINT USING "$##,###.##";G(I)
3900 LOCATE 14,65:PRINT USING "$##,###.##";TE:NEXT
3910 PL=0:PL=TI-TE
3920 LOCATE 4,20:PRINT "Total Income through   ";N1;"is: ";USING "$##,###.##";TI
3930 LOCATE 6,20:PRINT "Total Expense through  ";N1;"is: ";USING "$##,###.##";TE
3940 LOCATE 8,53:PRINT "~~~~~~~~~~~~
3950 LOCATE 10,20:PRINT "P or L Balance through ";N1;"is: ";USING "$##,###.##";PL:COLOR 7
3960 PRINT:LOCATE 18,29:PRINT WG$:GOSUB 8250:GOTO 1290
3970 ' ===== REPORT PRINT ROUTINES MAIN MENU EXECUTE
3980 LPRINT CHR$(27);CHR$(78);CHR$(10);
3990 COLOR 15:GOSUB 7490:LOCATE ,,0
4000 IF A$(N1-1)=""THEN 7190
4010 GOSUB 1130
4020 LOW=49
4030 HA=51
4040 FA=1
4050 GOSUB 8040
4060 LOCATE 20,20,0
4070 COLOR 7:ON VAL(IA$)GOTO 4080,4160,1290
4080 ' ===== FULL YEAR PRINTOUTS --  SUB MENU RESPONSES
4090 COLOR 15:GOSUB 710:LOCATE ,,0
4100 LOW=49
4110 HA=57
4120 FA=1
4130 GOSUB 8040
4140 LOCATE 20,20,0
4150 COLOR 7:ON VAL(IA$)GOTO 4240,4470,4640,4800,4980,6650,7160,4170,1290
4160 ' ===== MONTH PRINTOUTS  -- SUBMENU  RESPONSE
4170 COLOR 15:GOSUB 920:LOCATE ,,0
4180 LOW=49
4190 HA=57
4200 FA=1
4210 GOSUB 8040
4220 LOCATE 20,20,0
4230 COLOR 7:ON VAL(IA$)GOTO 5280,5550,5720,5890,6080,6820,7130,4090,1290
4240 ' ===== FULL YEAR PRINTOUT BOTH I & E
4250 I=1:LN=0:GOSUB 150:GOSUB 7490
4260 LPRINT TAB(((80-LEN(XF$))*0.5)-6);XF$;" ";RIGHT$(DATE$,4);
4270 LPRINT TAB(((80-LEN(XG$))*0.5)-5);XG$:LPRINT;
4280 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5:I=1
4290 TE=0:TI=0:TI=0:PL=0:G=0
4300 FOR I=I TO N1:G(I)=VAL(G$(I))
4310 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
4320 LPRINT TAB(57);E$(I);TAB(65);F$(I);
4330 LPRINT TAB(68);USING "$##,###.##";G(I);
4340 LN=LN+1
4350 IF F$(I)="I"THEN TI=TI+G(I)
4360 IF F$(I)="E"THEN TE=TE+G(I)
4370 LOCATE 10,1:PRINT USING "$##,###.##";TI:LOCATE 10,65:PRINT USING "$##,###.##";G(I);
4380 LOCATE 12,1:PRINT USING "$##,###.##";TE:LOCATE 12,65:PRINT USING "$##,###.##";G(I);
4390 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
4400 NEXT
4410 PL=0:PL=TI-TE
4420 LPRINT:LPRINT TAB(20);"Total Income through   ";N1-1;"is: ";USING "$###,###.##";TI;
4430 LPRINT:LPRINT TAB(20);"Total Expense through  ";N1-1;"is: ";USING "$###,###.##";TE;
4440 LPRINT:LPRINT TAB(53);"~~~~~~~~~~~
4450 LPRINT TAB(20)"P or L Balance through ";N1-1;"is: ";USING "$###,###.##";PL
4460 LPRINT CHR$(12);:GOTO 4080
4470 ' ===== FULL YEAR PRINTOUT -- INCOME ONLY
4480 I=1:LN=0:G=0:GOSUB 150:GOSUB 7490
4490 LPRINT TAB(((80-LEN(XJ$))*0.5)-6);XJ$;" ";RIGHT$(DATE$,4)
4500 LPRINT TAB(((80-LEN(XK$))*0.5)-6);XK$:LPRINT
4510 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
4520 FOR I=I TO N1:IF F$(I)="I"THEN 4530 ELSE 4600
4530 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
4540 LPRINT TAB(57);E$(I);TAB(65);F$(I);
4550 LPRINT TAB(68);USING "$##,###.##";G(I);
4560 LN=LN+1:V=V+G(I)
4570 LOCATE 13,1:PRINT USING "$##,###.##";G(I);
4580 LOCATE 13,65:PRINT USING "$##,###.##";V;
4590 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
4600 NEXT
4610 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
4620 LPRINT CHR$(12);
4630 GOTO 4080
4640 ' ===== FULL YEAR PRINTOUT BY EXPENSE ONLY
4650 I=1:LN=0:G=0:GOSUB 150:GOSUB 7490
4660 LPRINT TAB(((80-LEN(XH$))*0.5)-6);XH$;" ";RIGHT$(DATE$,4);
4670 LPRINT TAB(((80-LEN(XI$))*0.5)-7);XI$;
4680 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
4690 FOR I=I TO N1:G(I)=VAL(G$(I)):IF F$(I)="E"THEN 4700 ELSE 4770
4700 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
4710 LPRINT TAB(57);E$(I);TAB(65);F$(I);
4720 LPRINT TAB(68);USING "$##,###.##";G(I);
4730 LN=LN+1:V=V+G(I)
4740 LOCATE 13,1:PRINT USING "$##,###.##";G(I);
4750 LOCATE 13,65:PRINT USING "$##,###.##";V;
4760 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
4770 NEXT
4780 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
4790 LPRINT CHR$(12);:GOTO 4080
4800 ' ===== FULL YEAR PRINTOUT BY EXPENSE CODE NUMBER
4810 I=1:LN=0:G=0:GOSUB 150:GOSUB 7490
4820 GOSUB 6410
4830 CN=0:GOSUB 7010
4840 IF CN=0 THEN 4080
4850 LPRINT TAB(((80-LEN(XR$))*0.5)-6);(XR$);" ";RIGHT$(DATE$,4);" # ";CN
4860 LPRINT TAB(((80-LEN(XS$))*0.5)-6);(XS$)
4870 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
4880 FOR I=I TO N1:G(I)=VAL(G$(I)):IF VAL(E$(I))=CN AND F$(I)="E" THEN 4890 ELSE 4940
4890 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
4900 LPRINT TAB(57);E$(I);TAB(65);F$(I);
4910 LPRINT TAB(68);USING "$##,###.##";G(I);
4920 LN=LN+1:V=V+G(I)
4930 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
4940 NEXT
4950 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
4960 LPRINT;:LPRINT;
4970 GOTO 4080
4980 ' ===== FULL YEAR PRINTOUT BY INCOME CODE NUMBERR
4990 I=1:LN=0:G=0:GOSUB 150:GOSUB 7490
5000 GOSUB 6270
5010 CN=0:GOSUB 7010
5020 IF CN=0 GOTO 4080
5030 LPRINT TAB(((80-LEN(XV$))*0.5)-6);(XV$);" ";RIGHT$(DATE$,4);" # ";CN
5040 LPRINT TAB(((80-LEN(XW$))*0.5)-6);(XW$)
5050 LPRINT:LPRINT:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
5060 FOR I=I TO N1:G(I)=VAL(G$(I)):IF VAL(E$(I))=CN AND F$(I)="I" THEN 5070 ELSE 5120
5070 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
5080 LPRINT TAB(57);E$(I);TAB(65);F$(I);
5090 LPRINT TAB(68);USING "$##,###.##";G(I);
5100 LN=LN+1:V=V+G(I)
5110 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
5120 NEXT
5130 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V
5140 LPRINT;:LPRINT;:LPRINT;
5150 GOTO 4080
5160 ' ===== ESTABLISH MONTH FOR REPORT
5170 I=1:CN=0:MN$="":LOCATE 2,25:PRINT SPC(35);
5180 CLS:COLOR 15:LOCATE 3,25:PRINT"WHAT MONTH (3 CAPITAL LETTERS): ";:COLOR 7
5190 LOCATE 5,28:PRINT" (ENTER ";CHR$(34);"END";CHR$(34);" FOR MENU.)"
5200 LOCATE 7,38
5210 FA=3:LOW=65:HA=90
5220 GOSUB 7240
5230 MN$=FIN$
5240 IF(MN$="JAN")OR(MN$="FEB")OR(MN$="MAR")OR(MN$="APR")OR(MN$="MAY")OR(MN$="JUN")OR(MN$="JUL")OR(MN$="AUG")OR(MN$="SEP")OR(MN$="OCT")OR(MN$="NOV")OR(MN$="DEC")OR(MN$="END")THEN 5250 ELSE 5270
5250 IF MN$="END" THEN MN$=""
5260 RETURN
5270 SOUND 440,4:SOUND 600,4:LOCATE 5,27:COLOR 31:PRINT"MONTH WAS SPELLED INCORRECTLY":COLOR 7:GOSUB 7460:GOSUB 8250:GOTO 5170
5280 ' ===== MONTH PRINTOUT, BOTH I & E
5290 GOSUB 150:GOSUB 7490
5300 I=1:LN=0:CN=0:G=0:MN$="":GOSUB 5160
5310 IF MN$="" THEN 4160
5320 LPRINT TAB(((80-LEN(XP$))*0.5)-6);XP$;" ";MN$;" ";RIGHT$(DATE$,4);
5330 LPRINT TAB(((80-LEN(XQ$))*0.5)-7);XQ$:LPRINT;
5340 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5:I=1
5350 TI=0:TE=0:PL=0
5360 FOR I=I TO N1:G(I)=VAL(G$(I))
5370 IF LEFT$(A$(I),3)=MN$ THEN 5380 ELSE 5470
5380 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
5390 LPRINT TAB(57);E$(I);TAB(65);F$(I);
5400 LPRINT TAB(68);USING "$##,###.##";G(I);
5410 LN=LN+1
5420 IF LEFT$(A$(I),3)=MN$ AND F$(I)="I" THEN TI=TI+G(I)
5430 IF LEFT$(A$(I),3)=MN$ AND F$(I)="E" THEN TE=TE+G(I)
5440 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
5450 LOCATE 10,1:PRINT USING "$##,###.##";TI:LOCATE 10,65:PRINT USING "$##,###.##";G(I);
5460 LOCATE 12,1:PRINT USING "$##,###.##";TE:LOCATE 12,65:PRINT USING "$##,###.##";G(I);
5470 NEXT
5480 PL=0:PL=TI-TE
5490 LPRINT:LPRINT:LPRINT TAB(11);"Total Income for month through  ";N1-1;"is: ";USING "$##,###.##";TI;
5500 LPRINT:LPRINT TAB(11);"Total Expense for month through ";N1-1;"is: ";USING "$##,###.##";TE;
5510 LPRINT:LPRINT TAB(53);"~~~~~~~~~~~~~"
5520 LPRINT TAB(20)"P or L Balance through ";N1-1;"is: ";USING "$##,###.##";PL;
5530 LPRINT:LPRINT:LPRINT;
5540 GOTO 4160
5550 ' ===== MONTH PRINTOUT -- INCOME ONLY
5560 G=0:I=1:LN=0:GOSUB 150:GOSUB 7490
5570 COLOR 15:CN=0:GOSUB 5160
5580 IF MN$="" THEN 4160
5590 LPRINT TAB(((80-LEN(XN$))*0.5)-6);XN$;" ";MN$;" ";RIGHT$(DATE$,4);
5600 LPRINT TAB(((80-LEN(XO$))*0.5)-6);XO$;:LPRINT;
5610 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5:I=1:V=0
5620 FOR I =I TO N1:IF LEFT$(A$(I),3)=MN$ AND F$(I)="I" THEN 5630 ELSE 5680
5630 G(I)=VAL(G$(I)):LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
5640 LPRINT TAB(57);E$(I);TAB(65);F$(I);
5650 LPRINT TAB(68);USING "$##,###.##";G(I);
5660 LN=LN+1:V=V+G(I)
5670 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
5680 NEXT
5690 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
5700 LPRINT:LPRINT:LPRINT;
5710 GOTO 4160
5720 ' ===== MONTH PRINTOUT BY EXPENSE ONLY
5730 LN=0:G=0:GOSUB 150:GOSUB 7490
5740 COLOR 15:CN=0:MN$="":GOSUB 5160
5750 IF MN$="" THEN 4160
5760 LPRINT TAB(((80-LEN(XL$))*0.5)-6);XL$;" ";MN$;" ";RIGHT$(DATE$,4);
5770 LPRINT TAB(((80-LEN(XM$))*0.5)-6);XM$;
5780 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
5790 FOR I=I TO N1:G(I)=VAL(G$(I)):IF LEFT$(A$(I),3)=MN$ AND F$(I)="E" THEN 5800 ELSE 5850
5800 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
5810 LPRINT TAB(57);E$(I);TAB(65);F$(I);
5820 LPRINT TAB(68);USING "$##,###.##";G(I);
5830 LN=LN+1:V=V+G(I)
5840 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
5850 NEXT
5860 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V
5870 LPRINT:LPRINT:LPRINT;
5880 GOTO 4160
5890 ' ===== MONTH PRINTOUT BY EXPENSE CODE NUMBER
5900 LN=0:G=0:GOSUB 150:GOSUB 7490
5910 CN=0:COLOR 15:GOSUB 5160
5920 IF MN$=""THEN 4160 ELSE 5930
5930 GOSUB 6480:GOSUB 7010:COLOR 7
5940 IF CN=0 THEN 4160 ELSE 5950
5950 LPRINT TAB(((80-LEN(XT$))*0.5)-6);(XT$);" ";MN$;" ";RIGHT$(DATE$,4);" # ";CN;
5960 LPRINT TAB(((80-LEN(XU$))*0.5)-6);(XU$);
5970 LPRINT:LPRINT:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
5980 FOR I=I TO N1:G(I)=VAL(G$(I)):IF VAL(E$(I))=CN AND F$(I)="E" AND LEFT$(A$(I),3)=MN$ THEN 5990 ELSE 6040
5990 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
6000 LPRINT TAB(57);E$(I);TAB(65);F$(I);
6010 LPRINT TAB(68);USING "$##,###.##";G(I);
6020 LN=LN+1:V=V+G(I)
6030 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
6040 NEXT
6050 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
6060 LPRINT:LPRINT:LPRINT;
6070 GOTO 4160
6080 ' ===== MONTH PRINTOUT BY INCOME CODE NUMBER
6090 LN=0:G=0:GOSUB 150:GOSUB 7490
6100 CN=0:COLOR 15:GOSUB 5160
6110 IF MN$="" THEN 4160 ELSE 6120
6120 GOSUB 6340:GOSUB 7010:COLOR 7
6130 IF CN=0 THEN 4160 ELSE 6150
6140 LPRINT TAB(((80-LEN(ZR$))*0.5)-6);(ZR$);" ";MN$;" ";RIGHT$(DATE$,4);" #";CN;
6150 LPRINT TAB(((80-LEN(ZS$))*0.5)-6);(ZS$);
6160 LPRINT;:LPRINT;:LPRINT WT$;:LPRINT WU$:LPRINT;:LN=5:I=1:V=0
6170 FOR I=I TO N1:G(I)=VAL(G$(I)):IF VAL(E$(I))=CN AND F$(I)="I" AND LEFT$(A$(I),3)=MN$ THEN 6180 ELSE 6230
6180 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
6190 LPRINT TAB(57);E$(I);TAB(65);F$(I);
6200 LPRINT TAB(68);USING "$##,###.##";G(I);
6210 LN=LN+1:V=V+G(I)
6220 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
6230 NEXT
6240 LPRINT TAB(67)"_____________";:LPRINT TAB(68);USING "$##,###.##";V;
6250 LPRINT:LPRINT:LPRINT;
6260 GOTO 4160
6270 ' ===== INCOME CODES IN USE IN CURRENT FULL=YEAR FILE
6280 CLS:LOCATE 10,5:PRINT"The following INCOME-CODE numbers are used in ";FS$;
6290 I=1:PRINT:FOR I=I TO N1: IF LEFT$(F$(I),1)="I" THEN 6300 ELSE 6310
6300 PRINT VAL(E$(I));
6310 NEXT
6320 LOCATE 20,17:PRINT ZH$;
6330 RETURN
6340 ' ===== INCOME CODES IN USE IN CURRENT FILE FOR MONTH SELECTED
6350 I=1:LOCATE 10,5:PRINT"The following INCOME-CODE numbers are used in ";FS$;" for ";MN$
6360 PRINT:FOR I=I TO N1: IF LEFT$(F$(I),1)="I" AND LEFT$(A$(I),3)=MN$ THEN 6370 ELSE 6380
6370 PRINT VAL(E$(I));
6380 NEXT
6390 LOCATE 20,17:PRINT ZH$;
6400 RETURN
6410 ' ===== EXPENSE CODES IN USE IN CURRENT FULL-YEAR FILE
6420 CLS:LOCATE 10,7:PRINT"The following EXPENSE-CODE Numbers are used in ";FS$
6430 PRINT:FOR I=1 TO N1:IF LEFT$(F$(I),1)="E"THEN 6440 ELSE 6450
6440 PRINT VAL(E$(I));
6450 NEXT
6460 LOCATE 20,16:PRINT ZH$;
6470 RETURN
6480 ' ===== EXPENSE CODES IN USE IN CURRENT FILE FOR THE MONTH SELECTED
6490 I=1:CLS:LOCATE 10,7:PRINT"The following EXPENSE-CODE Numbers are used in ";FS$;" for ";MN$
6500 PRINT:FOR I=I TO N1:IF LEFT$(F$(I),1)="E" AND LEFT$(A$(I),3)=MN$ THEN 6510 ELSE 6520
6510 PRINT VAL(E$(I));
6520 NEXT
6530 LOCATE 20,17:PRINT ZH$;
6540 RETURN
6550 ' ===== ESTABLISH CHECK NUMBER FOR REGISTER REPORT
6560 CN=0:CLN=0
6570 CLS:COLOR 15:LOCATE 3,25:PRINT"STARTING CHECK NUMBER: ";:COLOR 7
6580 LOCATE 5,24:PRINT" (ENTER ";CHR$(34);"999";CHR$(34);" FOR MENU)"
6590 FA=4:LOW=48:HA=57
6600 LOCATE 7,34
6610 GOSUB 8040
6620 CLN=VAL(FIN$)
6630 IF CLN=999 THEN CLN=0
6640 RETURN
6650 ' ===== YEARLY CHECK REGISTER TO DATE FROM SPECIFIED NUMBER
6660 CLS:GOSUB 7490
6670 CN=0:CLN=0:LN=0:V=0:G(I)=0:GOSUB 6550
6680 IF CLN=0 THEN 4080 ELSE 6710
6690 LPRINT TAB(((80-LEN(XF$))*0.5)-6);(XZ$);RIGHT$(DATE$,4);" From Check # ";CLN;
6700 LPRINT TAB(((80-LEN(XF$))*0.5)-6);(ZA$);
6710 LPRINT:LPRINT:LPRINT;WT$:LPRINT WU$:LN=9:I=1:V=0
6720 FOR I=1 TO N1:G(I)=VAL(G$(I)):IF VAL(B$(I))>CLN THEN 6730 ELSE 6780
6730 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
6740 LPRINT TAB(57);E$(I);TAB(65);F$(I);
6750 LPRINT TAB(68);USING "$##,###.##";G(I);
6760 LN=LN+1:V=V+G(I)
6770 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
6780 NEXT
6790 LPRINT TAB(67);"______________";:LPRINT TAB(68);USING "$##,###.##";V;
6800 LPRINT CHR$(12);
6810 GOTO 4080
6820 ' ===== MONTHLY CHECK REGISTER TO DATE FROM SPECIFIED NUMBER
6830 CLS:GOSUB 7490
6840 CN=0:MN$="":GOSUB 5160
6850 IF MN$="" THEN 4160 ELSE 6860
6860 CN=0:CLN=0:LN=0:V=0:G(I)=0:GOSUB 6550
6870 IF CLN=0 THEN 4160 ELSE 6880
6880 LPRINT TAB(((80-LEN(ZB$))*0.5)-10);(ZB$);" ";MN$;" ";RIGHT$(DATE$,4);" From Check # ";CLN;
6890 LPRINT TAB(((80-LEN(ZC$))*0.5)-10);(ZC$);
6900 LPRINT:LPRINT:LPRINT;WT$;:LPRINT WU$;:LN=9:I=1:V=0
6910 FOR I=1 TO N1:G(I)=VAL(G$(I)):IF VAL(B$(I))>CLN AND LEFT$(A$(I),3)=MN$ THEN 6920 ELSE 6970
6920 LPRINT TAB(2);I;TAB(7);A$(I);TAB(15);B$(I);TAB(23);C$(I);TAB(40);D$(I);
6930 LPRINT TAB(57);E$(I);TAB(65);F$(I);
6940 LPRINT TAB(68);USING "$##,###.##";G(I);
6950 LN=LN+1:V=V+G(I)
6960 IF LN=>55 THEN LPRINT CHR$(12);:LPRINT WT$;:LPRINT WU$;:LPRINT;:LN=5
6970 NEXT
6980 LPRINT TAB(67)"______________";:LPRINT TAB(68);USING "$##,###.##";V;
6990 LPRINT:LPRINT:GOTO 4160
7000 END
7010 ' ===== ESTABLISH CATEGORY/CODE NUMBER FOR REPORT
7020 CN=0:WIDTH 80:LOCATE,,0
7030 COLOR 15:LOCATE 2,25:PRINT"WHAT CATEGORY/CODE NUMBER: ";:COLOR 7
7040 FA=4:LOW=48:HA=57
7050 LOCATE 4,26:PRINT" (ENTER ";CHR$(34);"999";CHR$(34);" FOR MENU)"
7060 LOCATE 6,37
7070 GOSUB 7240
7080 CN=VAL(FIN$)
7090 IF CN=999 THEN CN=0
7100 RETURN
7110 END
7120 ' ===== TOP OF FORM COMMANDS FOR PRINTOUTS
7130 LPRINT CHR$(12);
7140 GOTO 4160
7150 END
7160 LPRINT CHR$(12);
7170 GOTO 4080
7180 END
7190 ' ===== EMPTY FILE CHECK
7200 GOSUB 150:WIDTH 80:LOCATE,,0
7210 COLOR 15:LOCATE 10,30:PRINT"NO RECORDS IN FILE ":COLOR 7
7220 FOR I= 1 TO 2000:NEXT
7230 GOTO 1290
7240 ' ===== FULL NUMBER AND LETTER PROTECTED INPUT ROUTINE
7250 FIN$="
7260 IF FA=0 THEN FA=255
7270 IF INKEY$><""THEN 7270
7280 IA$=INKEY$
7290 IF IA$=""THEN 7280
7300 IF IA$=CHR$(13)THEN RETURN
7310 IF IA$<>CHR$(8)THEN 7360
7320 IF FIN$=""THEN SOUND 600,4:GOTO 7280
7330 PRINT CHR$(29);"■";CHR$(29);
7340 FIN$=LEFT$((FIN$),LEN(FIN$)-1)
7350 GOTO 7280
7360 IF LEN(FIN$)=FA THEN SOUND 600,4:GOTO 7280
7370 IF(ASC(IA$)<LOW OR ASC(IA$)>HA)THEN SOUND 400,4:GOTO 7280
7380 PRINT IA$;
7390 FIN$=FIN$+IA$
7400 GOTO 7280
7410 ' ===== HEADING ROUTINE FOR PRINTOUT
7420 GOSUB 150:WIDTH 80:LOCATE,,0
7430 PRINT WT$;
7440 PRINT WU$;
7450 RETURN
7460 ' ===== PRESS <ENTER> TO CONTINUE HEADING ROUTINE
7470 PRINT TAB(28);WG$;
7480 RETURN
7490 ' ===== PRINT AND LPRINT HEADING AND TEXT INITIALIZATION
7500 ESC$=CHR$(27)
7510 WW$="W A R N I N G
7520 WY$="L O A D I N G
7530 WZ$="LOADED TO EOF
7540 WA$="SAVED TO EOF
7550 WB$="S A V I N G
7560 WC$="THIS WILL WRITE OVER SAME FILE ON THE DISK
7570 WD$="THIS WILL REPLACE FILE IN MEMORY
7580 WE$="<PRESS 1> TO CONTINUE
7590 WF$="<PRESS 2> FOR MENU
7600 WH$="WHAT IS FILESPEC?
7610 WG$="Press <ENTER> TO CONTINUE
7620 ZH$="Type CATEGORY/CODE number, then <ENTER>.
7630 WT$=" REF#  DATE  CHECK #  DESCRIPTION      TO/FROM         CODE    E/I     AMOUNT
7640 WU$=" ~~~~  ~~~~  ~~~~~~~  ~~~~~~~~~~~      ~~~~~~~         ~~~~    ~~~     ~~~~~~
7650 XD$="Enter REF # of Record to Change
7660 XC$="<PRESS 3> Select another Record
7670 XE$="If this is the CORRECT RECORD, then CONTINUE
7680 XF$="FULL YEAR PRINTOUT EXPENSE AND INCOME: "
7690 XG$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7700 XH$="FULL YEAR PRINTOUT EXPENSES ONLY: "
7710 XI$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7720 XJ$="FULL YEAR PRINTOUT INCOME ONLY: "
7730 XK$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7740 XL$="EXPENSE PRINTOUT FOR THE MONTH OF: "
7750 XM$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7760 XN$="INCOME PRINTOUT FOR THE MONTH OF:"
7770 XO$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
7780 XP$="INCOME AND EXPENSE PRINTOUT FOR MONTH OF: "
7790 XQ$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7800 XR$="FULL-YEAR PRINTOUT BY EXPENSE-CODE NUMBER: "
7810 XS$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7820 XV$="FULL-YEAR PRINTOUT BY INCOME-CODE NUMBER: "
7830 XW$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7840 XT$="PRINTOUT BY EXPENSE-CODE NUMBER FOR MONTH: "
7850 XU$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7860 XX$="PRINTOUT BY INCOME-CODE NUMBER FOR MONTH: "
7870 XY$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "
7880 XZ$="ANNUAL CHECK REGISTER TO DATE: "
7890 ZA$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7900 ZB$="CHECK REGISTER TO DATE FOR MONTH: "
7910 ZC$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7920 ZD$="INCOME CODE NUMBER USED IN FILE TO DATE: "
7930 ZE$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7940 ZF$="EXPENSE CODE NUMBER USED IN FILE TO DATE: "
7950 ZG$="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7960 RETURN
7970 ' ===== DIRECTORY CHECK ROUTINE
7980 CLS
7990 FILES
8000 PRINT:PRINT TAB(20);WG$;
8010 COLOR 15:GOSUB 8250:COLOR 7
8020 GOTO 1290
8030 END
8040 ' ===== INKEY$ ROUTINE FOR NUMBER RESPONSES
8050 FIN$="
8060 IF INKEY$><""THEN 8060
8070 IA$=INKEY$
8080 IF IA$=""THEN 8070
8090 IF IA$=CHR$(13)THEN RETURN
8100 IF(ASC(IA$)<LOW OR ASC(IA$)>HA)THEN SOUND 400,4:GOTO 8070
8110 FIN$=FIN$+IA$
8120 PRINT IA$;
8130 IF LEN(FIN$)=FA THEN RETURN
8140 GOTO 8070
8150 CLS
8160 RETURN
8170 ' ===== YES/NO PROTECTED RETURN ROUTINE
8180 IN$=INKEY$
8190 IF IN$=""THEN 8180
8200 YN=0
8210 IF(IN$="Y"OR IN$="y")THEN YN=1:RETURN
8220 IF(IN$="N"OR IN$="n")THEN YN=2:RETURN
8230 SOUND 400,4
8240 GOTO 8180
8250 ' ===== <ENTER> PROTECTED INPUT ROUTINE
8260 IF INKEY$><""GOTO 8260
8270 IN$=INKEY$
8280 IF IN$=""THEN 8270
8290 IF IN$<>CHR$(13)THEN SOUND 400,4:GOTO 8270
8300 RETURN
8310 GOTO 4080
8320 ' ===== LEAVE PROGRAM ROUTINE
8330 CLS
8340 LOCATE 15,20:PRINT"DO YOU WISH TO SAVE FILE (Y OR N)
8350 GOSUB 8170:COLOR 7
8360 IF YN=1 THEN 1300
8370 IF YN=2 THEN 8380
8380 GOTO 8390
8390 ' ===== TERMINATE PROGRAM AND SHOW SHAREWARE BOX
8400 GOSUB 8430
8410 FOR DL = 1 TO 3000:NEXT
8420 END
8430 CLS:COLOR 15
8440 PRINT "        ╔═══════════════════════════════════════════════════════════════╗
8450 PRINT "        ║                       THANKS FOR USING                        ║
8460 PRINT "        ║                       ~~~~~~ ~~~ ~~~~~                        ║
8470 PRINT "        ║        ▄▄▄▄▄  ▄▄▄▄ ▄▄   ▄ ▄    ▄▄▄▄ ▄▄▄▄▄  ▄▄▄▄ ▄▄▄▄▄         ║
8480 PRINT "        ║        █  ▄█  █    ██▄  █ █    █    █  ▄█  █    █   █         ║
8490 PRINT "        ║        █  ▄▄▄ █▀▀  █ ▀█▄█ █    █▀▀  █  ▄▄▄ █▀▀  █▀█▀▀         ║
8500 PRINT "        ║        █▄▄▄█  █▄▄▄ █   ██ █▄▄▄ █▄▄▄ █▄▄▄█  █▄▄▄ █  ▀▄         ║
8510 PRINT "        ║                                                               ║
8520 PRINT "        ║       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ║
8530 PRINT "        ║           If you find it of value in your work or             ║
8540 PRINT "        ║              home a SHAREWARE donation of your                ║
8550 PRINT "        ║                choice would be appreciated !!!                ║
8560 PRINT "        ║                                                               ║
8570 PRINT "        ║                          G I N A C O                          ║
8580 PRINT "        ║                      10708 Santa Fe Drive                     ║
8590 PRINT "        ║                      Sun City   AZ  85351                     ║
8600 PRINT "        ║                         <602> 977-5511                        ║
8610 PRINT "        ╠═══════════════════════════════════════════════════════════════╣
8620 PRINT "        ║";:COLOR 31:PRINT"        Support SHAREWARE.   It increases your choice!";:COLOR 15:PRINT"         ║
8630 PRINT "        ╚═══════════════════════════════════════════════════════════════╝
8640 RETURN
8650 END
8660 ' ===== ERROR TRAP ROUTINE
8670 WIDTH 80:LOCATE,,0
8680 LOCATE 25,1:PRINT SPC(78);:KEY OFF:LOCATE 25,28:COLOR 31:PRINT" ERROR ";:COLOR 7:PRINT" #";ERR;" IN LINE #";ERL;:FOR DL=1 TO 1000:NEXT:IF ERR=53 THEN LOCATE 20,10:PRINT SPC(30),ELSE 8700
8690 LOCATE 20,10:PRINT"File not found   ";:PRINT" ** Check Path or Name";
8700 IF ERR=54 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8720
8710 LOCATE 20,10:PRINT"Bad file mode    ";:PRINT" ** Correct File Mode";
8720 IF ERR=55 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8740
8730 LOCATE 20,10:PRINT"File already OPEN ";:PRINT" ** CLOSE and REOPEN";
8740 IF ERR=61 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8760
8750 LOCATE 20,10:PRINT"Disk FULL         ";:PRINT" ** Install New Disk";
8760 IF ERR=57 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8780
8770 LOCATE 20,10:PRINT"Drive Door is Open";:PRINT" ** CLOSE Drive Door";
8780 IF ERR=71 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8800
8790 LOCATE 20,10:PRINT"Disk NOT READY    ";:PRINT" ** CLOSE Drive Door";
8800 IF ERR=24 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8820
8810 LOCATE 20,10:PRINT"Printer OFF-LINE ";:PRINT"  ** Press ON-LINE on";
8820 IF ERR=25 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8840
8830 LOCATE 20,10:PRINT"Printer not ON    ";:PRINT" ** Check Printer ON";
8840 IF ERR=27 THEN LOCATE 20,10:PRINT SPC(30) ELSE 8870
8850 LOCATE 20,10:PRINT"OUT OF PAPER!     ";:PRINT" ** Check Paper Path";
8860 LOCATE 22,20:GOSUB 8900:GOSUB 8920:RETURN
8870 GOSUB 8860:LOCATE 22,10:PRINT"Correct SYSTEM ERROR - <PRESS> ENTER";:GOSUB 8250:LOCATE 22,10:COLOR 7:CLS:CLOSE:RESUME 1280
8880 ON ERROR GOTO 0
8890 END
8900 ' ===== CLEARS THE RESPONSE LINE BEFORE INSERT BOX
8910 WIDTH  80:LOCATE 21,10:PRINT SPC(39);:RETURN
8920 ' ===== CLEARS THE RESPONSE INPUT BOX
8930 WIDTH 80:LOCATE 21,52:PRINT SPC(22);:RETURN
8940 END

HEADCLN.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 RUN
13 '*****************  DISK HEAD CLEANING PROGRAM *****************************
17 '╔═════════════════════════════════════════════════════════════════════════╗
19 '║              DISK HEAD CLEAN PROGRAM WITH DRIVE SELECTION               ║
21 '║                                                                         ║
23 '║     This simple program is a modification of a long-standing public     ║
25 '║ domain program. The modification allows selection of different disk     ║
27 '║ drives.  When you finish cleaning the second drive, you will receive    ║
29 '║ an error message.  The work will already be done at that time.          ║
31 '║                                                                         ║
33 '║     There is some concern that "over cleaning" of the double-sided      ║
35 '║ drives can cause premature failure of the upper head. This head is      ║
37 '║ a "floater", unlike the lower head which is usually pedestal-mounted.   ║
39 '║ Undue friction loads & flexing of the upper head might cause premature  ║
41 '║ failure of the small ribbon cable connecting the upper head. Repair     ║
43 '║ involves a difficult and precise soldering job. Clean the heads when    ║
45 '║ necessary, and not just because you have a cleaning disk available.     ║
47 '║ Some individuals prefer careful use of a Q-tip cleaner.  USE CARE!      ║
49 '║                  (c)  G I N A C O    --  1983         Ver 5.2/160/320   ║
51 '╚═════════════════════════════════════════════════════════════════════════╝
54 '************ PROGRAM ALLOWS USER TO SELECT DRIVE FOR CLEANING *************
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 FOR I=1 TO 10:KEY I,"":NEXT
100 CLS:SCREEN0,0,0:WIDTH80:CLEAR:LOCATE10,10:PRINT"INSERT HEAD CLEANING DISK IN DESIRED DRIVE":PRINT TAB(10)"<ENTER> A FOR DRIVE A":PRINT TAB(10)"<ENTER> B FOR DRIVE B":PRINT:PRINT TAB(10)"";:INPUTA$:IFASC(A$)=65 ORASC(A$)=97 THENX=1
110 ON ERROR GOTO 330
210 IFASC(A$)=66 ORASC(A$)=98 THENX=2
220 ONXGOTO230,270
230 FOR Z=1 TO 40:FILES"A:*.*"
260 NEXTZ
270 RESTORE:FOR Z=1 TO 40:FILES"B:*.*"
310 NEXT Z:RESTORE
330 GOTO100
65000 REM ********************** SAVE ROUTINE *********************************
65100 SAVE"B:HEADCLN.BAS"

HEXPRINT.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** PROGRAMMERS TABULAR HEX PRINTOUT  ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║             TABLUAR HEX$ DECIMAL PRINTOUT FOR REFERENCE                 ║
20 '║                                                                         ║
22 '║     This program will provide an orderly, paged screen or hard copy     ║
24 '║ printout of HEX$/DEC conversions. It displays the conversions in color  ║
26 '║ on a color monitor and white on a monochrome. The printout is suitable  ║
28 '║ for wall display or a note book.  It will provide progammers or others  ║
30 '║ a ready hex/dec reference when reading many of the advanced articles    ║
32 '║ in the Computer Magazines.  A companion program is ALPHAHEX.BAS.        ║
34 '║                                                                         ║
35 '║     This program, in whole or in part, may be used without license or   ║
36 '║ attribution.   (c)  G I N A C O   --  1983             Ver 5.1/160/320  ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:DIM A$(1000)
70 CLEANUP$ = CHR$(27) + CHR$(64)
80 LOCATE 10,8
90 PRINT "INDICATE START NUMBER FOR PRINTOUT (DECIMAL) ";
100 INPUT X!
110 LOCATE 12,10
120 PRINT "THIS WILL PRINT OUT DECIMAL/HEX CONVERSIONS FROM ";X!;" TO ";X! + 75
130 FOR I! = X! TO X! + 80
140   A$(I!) = HEX$(I!)
150 NEXT
160 PRINT TAB( 4)"DEC"; TAB( 10)"═>"; TAB( 14)"HEX"; TAB( 24)"DEC"; TAB( 30)"═>"; TAB( 34)"HEX"; TAB( 44)"DEC"; TAB( 50)"═>"; TAB( 54)"HEX"; TAB( 64)"DEC"; TAB( 70)"═>"; TAB( 74)"HEX"
170 PRINT TAB( 4)"═════"; TAB( 14)"════"; TAB( 24)"═════"; TAB( 34)"════"; TAB( 44)"═════"; TAB( 54)"════"; TAB( 64)"═════"; TAB( 74)"════"
180 I! = X!
190 GOSUB 570
200 I! = X! + 4
210 GOSUB 570
220 I! = X! + 8
230 GOSUB 570
240 I! = X! + 12
250 GOSUB 570
260 I! = X! + 16
270 GOSUB 570
280 I! = X! + 20
290 GOSUB 570
300 I! = X! + 24
310 GOSUB 570
320 I! = X! + 28
330 GOSUB 570
340 I! = X! + 32
350 GOSUB 570
360 I! = X! + 36
370 GOSUB 570
380 I! = X! + 40
390 GOSUB 570
400 I! = X! + 44
410 GOSUB 570
420 I! = X! + 48
430 GOSUB 570
440 I! = X! + 52
450 GOSUB 570
460 I! = X! + 56
470 GOSUB 570
480 I! = X! + 60
490 GOSUB 570
500 I! = X! + 64
510 GOSUB 570
520 I! = X! + 68
530 GOSUB 570
540 I! = X! + 72
550 GOSUB 570
560 GOTO 750
570 COLOR 3,0
580 PRINT TAB( 4)I!;
590 COLOR 6,0
600 PRINT TAB( 15)A$(I!);
610 COLOR 3,0
620 PRINT TAB( 24)I! + 1;
630 COLOR 6,0
640 PRINT TAB( 35)A$(I! + 1);
650 COLOR 3,0
660 PRINT TAB( 44)I! + 2;
670 COLOR 6,0
680 PRINT TAB( 55)A$(I! + 2);
690 COLOR 3,0
700 PRINT TAB( 64)I! + 3;
710 COLOR 6,0
720 PRINT TAB( 75)A$(I! + 3)
730 RETURN
740 END
750 COLOR 7,0
760 LOCATE 25,1
770 PRINT "TO RERUN <ENTER 1>   TO PRINT OUT <ENTER 2>   TO LEAVE PROGRAM   <ENTER 3>";
780 IN$=INKEY$:IF IN$="" THEN 780
790 IF (ASC(IN$)<49 OR ASC(IN$)>51) THEN SOUND 400,4:GOTO 780
800 ON VAL(IN$) GOTO 10,80,1270
810 LPRINT CLEANUP$;DARK$;
820 LPRINT "THIS WILL PRINT OUT DECIMAL/HEX CONVERSIONS FROM ";X!;" TO ";X! + 75
830 LPRINT
840 LPRINT TAB( 4)"DEC"; TAB( 10)"->"; TAB( 14)"HEX"; TAB( 24)"DEC"; TAB( 30)"->"; TAB( 34)"HEX"; TAB( 44)"DEC"; TAB( 50)"->"; TAB( 54)"HEX"; TAB( 64)"DEC"; TAB( 70)"->"; TAB( 74)"HEX"
850 LPRINT TAB( 4)"====="; TAB( 14)"===="; TAB( 24)"====="; TAB( 34)"===="; TAB( 44)"====="; TAB( 54)"===="; TAB( 64)"====="; TAB( 74)"===="
860 I! = X!
870 GOSUB 1250
880 I! = X! + 4
890 GOSUB 1250
900 I! = X! + 8
910 GOSUB 1250
920 I! = X! + 12
930 GOSUB 1250
940 I! = X! + 16
950 GOSUB 1250
960 I! = X! + 20
970 GOSUB 1250
980 I! = X! + 24
990 GOSUB 1250
1000 I! = X! + 28
1010 GOSUB 1250
1020 I! = X! + 32
1030 GOSUB 1250
1040 I! = X! + 36
1050 GOSUB 1250
1060 I! = X! + 40
1070 GOSUB 1250
1080 I! = X! + 44
1090 GOSUB 1250
1100 I! = X! + 48
1110 GOSUB 1250
1120 I! = X! + 52
1130 GOSUB 1250
1140 I! = X! + 56
1150 GOSUB 1250
1160 I! = X! + 60
1170 GOSUB 1250
1180 I! = X! + 64
1190 GOSUB 1250
1200 I! = X! + 68
1210 GOSUB 1250
1220 I! = X! + 72
1230 GOSUB 1250
1240 GOTO 750
1250 LPRINT TAB( 4)I!; TAB( 15)A$(I!); TAB( 24)I! + 1; TAB( 35)A$(I! + 1); TAB( 44)I! + 2; TAB( 55)A$(I! + 2); TAB( 64)I! + 3; TAB( 75)A$(I! + 3)
1260 RETURN
1270 CLS
1280 END
65000 REM  ********************  SAVE  ROUTINE  *****************************
65100 SAVE "B:HEXPRINT.BAS"

HEXSAY.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** HEX TO DEC/DEC TO HEX CONVERTER *************************
15 '╔═════════════════════════════════════════════════════════════════════════╗
17 '║                    CONVERT HEX TO DEC & VICE VERSA                      ║
19 '║                                                                         ║
21 '║    This simple program can be used effectively to convert hexadecimal   ║
23 '║ numbers to decimal and decimal to hexadecimal. This is of value when    ║
25 '║ working with some poke-peek values or converting some CHR$(&Hnn) to     ║
27 '║ decimal values, such as when zapping disk sectors.                      ║
29 '║                                                                         ║
31 '║    At the prompt, enter the decimal number as "20" w/o quotes and the   ║
33 '║ HEX$ value will be displayed.  Enter a HEX number as "&H234" also w/o   ║
35 '║ quotes and both the decimal and HEX$ will be displayed.                 ║
37 '║                                                                         ║
39 '║    This program is based on the program in the IBM (c) BASIC MANUAL     ║
41 '║ under HEX$.  (c) G I N A C O   - 1983                 Ver 5.1/160/320   ║
43 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 CLS
110 SCREEN 0,0,0
120 WIDTH 80
130 COLOR 7,0
140 KEY OFF
150 LOCATE 2,4
160 PRINT "╔"
170 LOCATE 2,5
180 PRINT STRING$(71,"═")
190 LOCATE 2,76
200 PRINT "╗";
210 FOR I! = 3 TO 22
220   LOCATE I!,4
230   PRINT "║"
240   LOCATE I!,76
250   PRINT "║"
260 NEXT
270 LOCATE 23,4
280 PRINT "╚"
290 LOCATE 23,5
300 PRINT STRING$(71,"═")
310 LOCATE 23,76
320 PRINT "╝";
330 FOR I! = 3 TO 19 STEP 2
340   LOCATE 3,8,0,0,7
350   PRINT SPC( 50)
360   LOCATE 3,25
370   INPUT "DEC # OR &HXXX #  ";X!
380   A$ = HEX$(X!)
390   LOCATE I! + 2,24
400   PRINT X!"DECIMAL IS "A$"  HEX "
410 NEXT
420 FOR I! = 3 TO 22
430   LOCATE I!,10
440   PRINT SPC( 60)
450 NEXT
460 GOTO 330
65000 REM************************** SAVE ROUTINE *****************************
65100 SAVE "B:HEXSAY.BAS"

IBMLABEL.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 ' *************** EPSON/GEMINI MULITI-LABEL PROGRAM ************************
12 '╔═════════════════════════════════════════════════════════════════════════╗
14 '║           MULTI-LABEL PROGRAM FOR EPSON/GEMINI - (NON FILE)             ║
16 '║                                                                         ║
18 '║       This program is designed to use the IBM/EPSON dot matrix printer. ║
20 '║  Codes may be modified to use other printers.  Print statements are     ║
22 '║  directed to LPT1:. If you are using LPT2, change the LPTn: reference   ║
24 '║  in line 420.  A NEC 8023A version is included elsewhere on this disk.  ║
26 '║  The error routine at 6000 will function for a printer 'off' or 'off    ║
28 '║  line' status. Other errors are processed by the BASIC error routine.   ║
30 '║       A more complex file and label program is on the disk as BLUE-     ║
32 '║  BERY.BAS and/or LABELPRO.BAS. It has a full file and revision capa-    ║
34 '║  bility.  The 320K disk contains both BLUEBERY.BAS and LABELPRO.BAS     ║
36 '║       All or part of this program may be used by purchaser without      ║
38 '║  license or attribution.  (c) G I N A C O  -- 1983   Ver 5.1/160/320    ║
40 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 REM
300 FOR I! = 1 TO 10
310    KEY I!,""
320   NEXT
330 CLS
340  SCREEN 0,0,0
350   WIDTH 80
360    CLEAR
370     GOSUB 5000
380      ON ERROR GOTO 6000
390 LPRINT CLEANUP$;
400  CLOSE
410   GOSUB 5000
420    OPEN "LPT1:" FOR OUTPUT AS #2
430     CLS
440      LOCATE 6,16
450       PRINT "THIS WILL PRINT LABELS ON STANDARD LABEL STOCK."
460        PRINT TAB( 10)"YOU MAY PRINT AT 7,10,OR 17 CPI BASED ON YOUR SELECTION."
470         PRINT
480          PRINT
490 PRINT TAB( 22)"SELECT PITCH AND <ENTER> CHOICE"
500  PRINT
510   PRINT TAB( 22)"PICA -- 10 CPS................1"
520    PRINT TAB( 22)"ITALICS -- 10 CPS.............2"
530     PRINT TAB( 22)"CONDENSED --- 17.0 CPS........3"
540      PRINT TAB( 22)"FIRST LINE ONLY EXPANDED......4"
550 PRINT TAB( 22)"ALL LINES EXPANDED............5"
560  PRINT TAB( 22)"END PROGRAM...................6"
570   PRINT
580    PRINT
590     PRINT TAB( 22)"CHOOSE........";
600      INPUT X!
610       ON X! GOTO 620,640,660,1470,1870,2310
620 PRINT #2,DARK$;
630  GOTO 680
640 PRINT #2,ITALIC$ + DARK$;
650  GOTO 680
660 PRINT #2,EXPAND.SMALL$;
670  GOTO 680
680 CLS
690  LOCATE 10,10
700   PRINT "WAS THAT PITCH SETTING OK "
710    GOSUB 1310
720     IF Q! = 1 THEN 740
730 IF Q! = 2 THEN 390
740 CLS
750  LOCATE 8,10
760   LINE INPUT "LINE 1:> ";L1$
770    LOCATE 9,10
780     LINE INPUT "LINE 2:> ";L2$
790      LOCATE 10,10
800       LINE INPUT "LINE 3:> ";L3$
810        LOCATE 11,10
820         LINE INPUT "LINE 4:> ";L4$
830          LOCATE 12,10
840           LINE INPUT "LINE 5:> ";L5$
850            PRINT
860             PRINT TAB( 10)"IS INPUT CORRECT ? "
870              GOSUB 1310
880 IF Q! = 1 THEN 900
890 IF Q! = 2 THEN 740
900 REM *************** LABEL PRINT ROUTINE ******************************
910 CLS
920  LOCATE 11,10
930   INPUT "HOW MANY LABELS ";X!
940    LOCATE 13,10
950     INPUT "LEFT PRINT MARGIN ";Z!
960      LOCATE 15,10
970       PRINT "ARE THESE SETTINGS CORRECT? "
980        GOSUB 1310
990         IF Q! = 1 THEN 1010
1000 IF Q! = 2 THEN 900
1010 REM
1020 CLS
1030  LOCATE 10,10
1040   INPUT "PRESS ENTER WHEN PRINTER READY. ";R!
1050    ON R! GOTO 1060
1060 FOR NL! = 1 TO X!
1070    PRINT #2, CHR$(13);
1080     PRINT #2, TAB( Z!);L1$
1090      PRINT #2, TAB( Z!);L2$
1100       PRINT #2, TAB( Z!);L3$
1110        PRINT #2, TAB( Z!);L4$
1120         PRINT #2, TAB( Z!);L5$; CHR$(13);
1130        NEXT NL!
1140 :REMPRINT #2, CHR$(27); CHR$(76);"000";
1150 CLS
1160 :REM *********************  TERMINATION ROUTE  ********************
1170 LOCATE 10,10
1180  PRINT "REPRINT THIS LABEL "
1190   GOSUB 1310
1200    IF Q! = 1 THEN 1220
1210 IF Q! = 2 THEN 1250
1220 X! = 0
1230  Z! = 0
1240   GOTO 910
1250 CLS
1260  LOCATE 12,10
1270   PRINT "ENTER ANOTHER LABEL "
1280    GOSUB 1310
1290     IF Q! = 1 THEN 390
1300 IF Q! = 2 THEN 1440
1310 COLOR 0,7
1320  LOCATE 20,10
1330   PRINT " YES OR NO <Y/N> ? "
1340    COLOR 7,0
1350     A$=INKEY$:IF A$="" THEN 1350
1360 IF (LEFT$(A$,1)=CHR$(89) OR LEFT$(A$,1)=CHR$(121)) THEN Q! = 1 : RETURN
1370 IF (LEFT$(A$,1)=CHR$(78) OR LEFT$(A$,1)=CHR$(110)) THEN Q! = 2 : RETURN
1375 SOUND 400,4:GOTO 1350
1440 CLOSE
1450  CLS
1460   END
1470 REM PRINT #2, CLEANUP$;
1480 CLS
1490  LOCATE 9,20
1500   COLOR 7,0
1510    PRINT "CHECK LABEL POSITION IN PRINTER"
1520     COLOR 7,0
1530      FOR I! = 1 TO 2000
1540       NEXT
1550 CLS
1560  LOCATE 8,20
1570   PRINT "THIS WILL PRINT FIRST LINE ONLY IN EXPANDED PRINT"
1580    LOCATE 11,20
1590     LINE INPUT "LINE ONE    ";A$(1)
1600      LOCATE 12,20
1610       LINE INPUT "LINE TWO    ";A$(2)
1620        LOCATE 13,20
1630         LINE INPUT "LINE THREE  ";A$(3)
1640          LOCATE 14,20
1650           LINE INPUT "LINE FOUR   ";A$(4)
1660 LOCATE 15,20
1670  LINE INPUT "LINE FIVE   ";A$(5)
1680   PRINT
1690 LOCATE 17,20
1700  PRINT "ENTER <1> IF OK <2> TO REDO ";
1710   INPUT X!
1720    ON X! GOTO 1730,1550
1730 CLS
1740 LOCATE 19,20
1750  INPUT "HOW MANY LABELS ";PN!
1760   FOR K! = 1 TO PN!
1770      PRINT #2,EXPAND$ + DARK$;A$(1);EXPAND.END$
1780       FOR I! = 2 TO 5
1790          PRINT #2,A$(I!)
1800         NEXT
1810          PRINT #2, CHR$(13);
1820         NEXT K!
1830          LOCATE 19,20
1840           PRINT "TO REPRINT ENTER <1> FOR NEW <2> ";
1850            INPUT X!
1860             ON X! GOTO 1690,2290
1870 REM
1880 CLS
1890  LOCATE 9,20
1900   COLOR 7,0
1910    PRINT "CHECK LABEL POSITION IN PRINTER"
1920     COLOR 7,0
1930      FOR I! = 1 TO 2000
1940       NEXT
1950        CLS
1960         LOCATE 8,20
1970          PRINT "THIS WILL PRINT ALL LINES IN EXPANDED PRINT."
1980           LOCATE 12,20
1990            LINE INPUT "LINE ONE    ";A$(1)
2000             LOCATE 13,20
2010 LINE INPUT "LINE TWO    ";A$(2)
2020  LOCATE 14,20
2030   LINE INPUT "LINE THREE  ";A$(3)
2040    LOCATE 15,20
2050     LINE INPUT "LINE FOUR   ";A$(4)
2060      LOCATE 16,20
2070       LINE INPUT "LINE FIVE   ";A$(5)
2080        PRINT
2090 LOCATE 18,20
2100  PRINT "ENTER <1> IF OK <2> TO REDO ";
2110   INPUT X!
2120    ON X! GOTO 2130,1880
2130 LOCATE 20,20
2140  INPUT "HOW MANY LABELS ";PN!
2150   FOR K! = 1 TO PN!
2160      PRINT #2,EXPAND$ + DARK$;A$(1)
2170       PRINT #2,EXPAND$;A$(2)
2180        PRINT #2,EXPAND$;A$(3)
2190         PRINT #2,EXPAND$;A$(4)
2200          PRINT #2,EXPAND$;A$(5)
2210           PRINT #2," "
2220            PRINT #2,EXPAND.END$;
2230           NEXT K!
2240            LOCATE 22,20
2250 PRINT "TO REPRINT ENTER <1> FOR NEW <2> ";
2260  INPUT X!
2270   CLS
2280    ON X! GOTO 2090,2290
2290 PRINT #2,CLEANUP$;
2300  GOTO 390
2310 CLOSE
2320  END
5000 REM **** PRINTER SUBROUTINES ***
5030 SMALL$ = CHR$(15)
5060  UNSMALL$ = CHR$(18)
5090   EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5120    CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5150     EXPAND$ = CHR$(14)
5180      EXPAND.END$ = CHR$(20)
5210       DARK$ = CHR$(27) + CHR$(69)
5240        ITALIC$ = CHR$(27) + CHR$(52)
5270         ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5300 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5330  END.ITALIC$ = CHR$(27) + CHR$(53)
5360   START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5390    END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5420     PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5450      END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5480 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5510  END.DSTRIKE$ = CHR$(27) + CHR$(72)
5540   TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5570    END.TINY$ = CHR$(27) + CHR$(84)
5600     ESC$ = CHR$(27)
5630      CLEANUP$ = CHR$(27) + CHR$(64)
5660       RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150  BEEP
6180   BEEP
6210    LOCATE 25,1
6240     PRINT SPC( 79)
6270      LOCATE 25,20
6300       PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY OFF
6390  RESUME
6420   END
65000 REM********************** SAVE ROUTINE *********************************
65100 SAVE "B:IBMLABEL.BAS"

KEYSET.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '***************** PROGRAMMERS BASIC F-KEY SETTINGS  ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║            PROGRAMMERS FUNCTION KEY SETTING COMBINATION                 ║
20 '║  F1: CLS -- CLEARS THE SCREEN      F2: RUNS RESIDENT PROGRAM            ║
22 '║  F3: CLEARS SCREEN, LISTS PROGRAM  F4: SETS UP LOAD FROM DRIVE A:       ║
24 '║  F5: SETS UP LOAD FROM DRIVE B:    F6: CLEARS & LISTS SPECIFIED LINES   ║
26 '║  F7: READS DIRECTORY IN DRIVE A:   F8: READS DIRECTORY IN DRIVE B:      ║
28 '║  F9: SETS UP SAVE TO DRIVE B:      F10: STEPS THRU LISTING.  JUST PUT   ║
30 '║                                         IN NEXT NUMBER.  OLD WILL SHOW. ║
31 '║                    (c) G I N A C O  1983           Ver 5.2/160/320      ║
32 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 REM
100 SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
110 KEY 1,"CLS" + CHR$(13)   'CLEARS SCREEN
120 KEY 2,"RUN" + CHR$(13)   'RUNS RESIDENT PROGRAM
130 KEY 3,"CLS:LIST" + CHR$(13) 'CLEARS SCREEM AND LISTS RESIDENT PROGRAM
140 KEY 4,"LOAD" + CHR$(34) + "A" + CHR$(58) 'SETS UP LOAD FROM A:
150 KEY 5,"LOAD" + CHR$(34) + "B" + CHR$(58) 'SETS UP LOAD FROM B:
160 KEY 6,"CLS:LIST " 'CLEARS SCREEN AND LISTS DESIGNATED LINES
170 KEY 7,"FILES" + CHR$(13) ' LISTS DIRECTORY OF DRIVE A:
180 KEY 8,"FILES" + CHR$(34) + "B" + CHR$(58) + "*.*" + CHR$(13) ' DIR OF B:
190 KEY 9,"SAVE" + CHR$(34) + "A" + CHR$(58)                    ' SAVE ON A:
200 KEY 10,"LIST . -"  'STEP THRU A LISTING -- ENTER NEW LINE OLD WILL SHOW
210 KEY ON
220 CLS
230  KEY LIST
240 PRINT
250  FILES
260 END
65000 '*********************** SAVE ROUTINE **********************************
65100 SAVE"B:KEYSET.BAS"

LABLFILE.BAS

10 CLS:REM LABLFILE BY GINACO: BRUNO LARSEN, SUN CITY, ARIZONA
30 REM (C) 1984 BY BRUNO M. LARSEN, G I N A C O
40 CLS:KEYOFF:CLEAR:DIMMM$(30),TT$(20),USER$(50):DIMA$(200),B$(200),C$(200),D$(200),E$(200),F$(200),INPTR$(50),FIN$(50),AA$(200),FILE$(200),P1%(200):SCREEN0,0,0:COLOR7,0:WIDTH80:FORKK=1 TO10:KEYKK,"":NEXTKK:GOSUB170:GOTO210
170 USER$(4)="NAME":USER$(6)="ADDRESS":USER$(8)="ADDRESS":USER$(10)="ADDRESS":USER$(12)="FILE DATA":USER$(14)="FILE DATA"
180 RETURN
210 LOCATE2,2,0:PRINT"┌";STRING$(76,"─");"┐":PRINT" │                                                                            │":TT$(1)=" │        █         ██     █▀▀▀▀▀█ █      █▀▀▀▀    ô    █       █▀▀▀▀▀█       │
250 TT$(2)=" │        █        █  █    █     █ █      █        █    █       █             │":TT$(3)=" │        █       █▀▀▀▀█   █▀▀▀▀▀█ █      █▀▀▀     █    █       █▀▀▀▀         │
270 TT$(4)=" │        █      █      █  █     █ █      █        █    █       █             │":TT$(5)=" │        █▄▄▄█ █        █ █▄▄▄▄▄█ █▄▄▄▄█ █      ▄▄█▄▄  █▄▄▄▄▄█ █▄▄▄▄▄█       │":FORPL=1 TO5:PRINTTT$(PL):NEXT
320 PRINT" │                                                                            │":PRINT" │                User Supported Software   by   Bruno M. Larsen              │
340 PRINT" │                                                                            │":PRINT" │              (C) G I N A C O -- 1985         Ver 3.5 (PC-JR)               │
360 PRINT" │                                                                            │":PRINT" │                                                                            │":LOCATE14,2:PRINT"└";STRING$(76,"─");"┘
400 REM ===== INPUT FROM USER ON LABEL SIZE AND LINES TO PRINT  =====
410 LOCATE16,36:COLOR15:PRINT"LABEL SIZE":COLOR7,0:LOCATE18,4,0:PRINT"<PRESS>";:COLOR15:PRINT" 6 ";:COLOR7:PRINT"FOR 1.0 INCH 6 LINE label":LOCATE18,43,0:PRINT"<PRESS>";:COLOR15:PRINT" 9 ";:COLOR7:PRINT"FOR 1.5 INCH 9 LINE label
570 LZ$=INKEY$:IFLZ$=""THEN570
590 IFVAL(LZ$)=6 THEN610
600 IFVAL(LZ$)<>9 THENBEEP:GOTO570
610 LOCATE20,19,0:PRINT"Select <PRESS> ";:COLOR15:PRINT" 3, 4, 5,";:COLOR7,0:PRINT" or ";:COLOR15:PRINT" 6 ";:COLOR7,0:PRINT" PRINTED LINES.
710 NRLB$=INKEY$:IFNRLB$=""THEN710
730 IFVAL(NRLB$)<3 ORVAL(NRLB$)>6 THENBEEP:BEEP:GOTO710
740 REM ==== DO YOU NEED INSTRUCTIONS QUERY  =====
750 COLOR15:LOCATE24,25,0:PRINT"DO YOU NEED INSTRUCTIONS (Y/N)":COLOR7,0
790 QQ$=INKEY$:LOCATE23,20,0,8,7:IFQQ$=""THEN790
820 IFQQ$="y"ORQQ$="Y"THEN840
830 IFQQ$="n"ORQQ$="N"THEN1400
840 CLS:KEYOFF:SCREEN0,0,0:WIDTH80:FORKK=1 TO10:KEYKK,"":NEXT:DEFSEG:POKE91,25:POKE92,25:KEY6,CHR$(64):KEY2,CHR$(35):FORFB=2 TO23:LOCATEFB,1:PRINT CHR$(186):LOCATEFB,79:PRINT CHR$(186):NEXT:LOCATE1,1,0
1030 PRINT CHR$(201);STRING$(77,205);CHR$(187);:LOCATE22,1,0:PRINT CHR$(204);STRING$(77,205);CHR$(185);:LOCATE24,1,0:PRINT CHR$(200);STRING$(77,205);CHR$(188);:FORMM=1 TO20:LOCATEMM,9:PRINTMM$(MM)
1110 MM$(2)="CAUTION: Exit LABLFILE through the CONTROL or PRINT Menu ONLY!":MM$(3)="  Using Ctrl-Break will exit without cursor & scroll control":MM$(4)="  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1140 MM$(5)="   LABLFILE is a rapid-response, flexible file management pro-":MM$(6)="gram which can be used for many purposes. It's default config-":MM$(7)="ured with a three-line  label-print routine which can be modi-
1170 MM$(8)="fied on startup by responding to the label size and # of lines":MM$(9)="promts as desired.  These selections may be changed from Menus":MM$(10)="during program execution. INKEY$ response is used extensively.
1200 MM$(11)="Use <ENTER> key when instructed.  A <PRESS> PROMPT evokes auto-":MM$(12)="matic entry. When selecting files to print, <ENTER> 1st #, wait":MM$(13)="for a prompt and <ENTER> the last file # to print. For a single
1230 MM$(14)="file, enter the same # each time at the prompt.  Four different":MM$(15)="print styles are available with EPSON & IBM coded printers, and":MM$(16)="are selected from the PRINT Menu.   LABEL SIZE, number of lines
1260 MM$(17)="to be printed,  and file INPUT-HEADINGS may be modified during":MM$(18)="program execution from the CONTROL Menu and PRINT menus. Every":MM$(19)="effort has been made to provide <ESCAPE ROUTES> back to a MENU
1290 MM$(20)="for reselection during all program functions. G I N A C O-1985":NEXT MM:LOCATE 23,9,0:PRINT"<PRESS> F-6 TO CONTINUE.        <PRESS> F-2 TO RESET LABEL SIZE";
1330 IN$=INKEY$:IFIN$=""THEN1330
1350 IFIN$=CHR$(64)THEN1400
1360 IFIN$=CHR$(35)THEN1380
1370 GOTO1330
1380 CLS:GOSUB2480:GOSUB13900
1400 CLS:SCREEN0,0,0:WIDTH80:FORNK=1 TO10:KEYNK,"":NEXT:SCREEN0,1,0,0:KEYOFF:DEFSEG:POKE91,25:POKE92,25:LOCATE1,1,0,12,13:A$="":B$="":C$="":D$="":E$="":F$="":DEFINTA-Z:I=0:P=1:FINLEN=0:P=1:IN$="":ONERRORGOTO11890
1650 CLS:KEYOFF:BB$=TIME$:GOSUB2480:GOTO2010
1700 REM =====  PRINTER SELECT ROUTINE  =====
1710 CLS:GOSUB2070:DEFSEG=&H40:A=PEEK(&H8):B=PEEK(&H9):C=PEEK(&HA):D=PEEK(&HB):POKE&H8,C:POKE&H9,D:POKE&HA,A:POKE&HB,B:IFPEEK(&H9)=3 THENLPT$="1"ELSELPT$="2
1830 LOCATE7,30,0:PRINT"Primary Printer = LPT";LPT$+":";:LOCATE9,24:PRINT"To continue with program <PRESS> 1";:LOCATE11,24,0:PRINT"Reset LPT1 OR LPT2       <PRESS> 2";" ";:GOSUB2790:GOSUB2410:GOSUB3110:LOCATE21,68,0:LOW=49:HIGH=50:FINLEN=1
1960 GOSUB3220:ONVAL(INPTR$)GOTO2890,1700
1980 GOTO2890
1990 GOSUB3220:REM  ===== INITIAL FORMAT AND BOX MENU  =====
2010 CLS:GOSUB2070:GOSUB2850:GOSUB2410:GOTO5690
2060 REM =====  PROGRAM FOR BOX PRINTOUT =======
2070 REM =====  PRINT BOX 1 =====
2080 COLOR7,0:WW=76:TL=1:LL=24:LC=2:GOSUB2290:RETURN
2150 REM =====  PRINT BOX 2 =====
2160 WW=76:TL=18:LL=24:LC=2:GOSUB2290:RETURN
2220 REM =====  PRINT BOX 2A =====
2230 WW=76:TL=14:LL=24:LC=2:GOSUB2290:RETURN
2290 REM =====  ACTUAL PRINT ROUTINE =====
2300 LOCATETL,LC,0:PRINTTLC$;STRING$(WW,HL$);TRC$;:FORBD=(TL+1)TO(LL-1):LOCATEBD,LC,0:PRINTVL$;:LOCATEBD,(LC+WW+1),0:PRINTVL$;:NEXT:LOCATELL,LC,0:PRINTBLC$;STRING$(WW,HL$);BRC$;:RETURN
2410 REM =====  PRINT BOX 3 =====
2420 WW=23:TL=20:LL=22:LC=50:GOSUB2290:RETURN
2480 REM =====  INITIALIZATION ROUTINE =====
2490 TLC$=CHR$(201):TRC$=CHR$(187):HL$=CHR$(205):BLC$=CHR$(200):BRC$=CHR$(188):VL$=CHR$(186):PR$="###  \                                  \     \                     \
2560 M1ST$="A ══"+CHR$(16)+" Add  Records   C ══"+CHR$(16)+" Choose Printer   D ══"+CHR$(16)+" Disk Directories":M2ND$="E ══"+CHR$(16)+" Edit Records   L ══"+CHR$(16)+" Load Disk File   P ══"+CHR$(16)+" Print Label Menu
2580 M3RD$="Q ══"+CHR$(16)+" Quit Program   R ══"+CHR$(16)+" Review Records   S ══"+CHR$(16)+" Save (Disk File)":M4TH$="Z ══"+CHR$(16)+" Re-set Sizes   N ══"+CHR$(16)+" Rename Records   X ══"+CHR$(16)+" Empty:  ONE File":RETURN
2610 REM =====  CLEAR TOP BOX FORM  =====
2620 FORCS=2 TO17:LOCATETL,3,0:PRINT SPC(76):NEXT:RETURN
2670 REM =====  CLEAR UPPER 1/2 SCREEN FOR DIRECTORY  =====
2680 FORCS=1 TO17:LOCATECS,1,0:PRINT SPC(79):NEXT:RETURN
2730 REM =====  CLEAR BOTTOM BOX FORM EXCEPT FOR INSERT  =====
2740 FORCS=19 TO23:LOCATECS,3,0:PRINT SPC(47):NEXT:RETURN
2790 REM =====  CLEAR BOTTOM BOX INCLUDING INSERT  =====
2800 FORCS=19 TO23:LOCATECS,3,0:PRINT SPC(75):NEXT:RETURN
2850 REM =====  PRINT MIDDLE BOX CONNECTING LINE VERT/HORZ  =====
2860 LOCATE18,2,0:PRINT"╠";STRING$(76,"═");"╣";:RETURN
2890 REM =====  QUERY CLEAR AND RETURN ROUTINE =====
2900 CLS:GOSUB 2220:GOSUB 13410:GOSUB 12510:ON MS GOTO 3700,3700,1700,1700,12840,12840,7160,7160,5010,5010,8840,8840,11650,11650,5290,5290,4740,4740,2950,2950,14430,14430,15190,15190
2950 GOSUB13900:GOTO2890
2960 REM =====  CLEARS TOP FORM DOWN TO HORIZONTAL LINE  =====
2970 FORCS=3 TO17:LOCATECS,3,0:PRINT SPC(75):NEXT:RETURN
3020 REM =====  CLEARS THE RESPONSE INPUT BOX  =====
3030 LOCATE21,52,0:PRINT SPC(22);:RETURN
3060 REM =====  CLEARS THE RESPONSE LINE BEFORE INSERT BOX  =====
3070 LOCATE21,10,0:PRINT SPC(39);:RETURN
3100 REM =====  "SELECT" SUBROUTINE  =====
3110 LOCATE21,51,0:PRINT SPC(22);:LOCATE21,76:LOCATE21,53:PRINT"SELECT               ║    ║":RETURN
3170 REM =====  CLEARS INPUT BOX LINE  =====
3180 LOCATE21,52,0:PRINT SPC(21);:LOCATE21,76:RETURN
3220 REM =====  INKEY$ ROUTINE FOR NUMBER RESPONSES =====
3230 FIN$="
3240 IFINKEY$><""THEN3240
3250 INPTR$=INKEY$:IFINPTR$=""THEN3250
3270 IFINPTR$=CHR$(13)THENRETURN
3280 IFINPTR$<>CHR$(8)THEN3330
3290 IFFIN$=""THENSOUND600,4:GOTO3250
3300 PRINT CHR$(29);" ";CHR$(29);:FIN$=LEFT$((FIN$),LEN(FIN$)-1):GOTO3250
3330 IF(ASC(INPTR$)<LOWORASC(INPTR$)>HIGH)THENSOUND400,4:GOTO3250
3340 FIN$=FIN$+INPTR$:PRINTINPTR$;:IFLEN(FIN$)=FINLENTHENRETURN
3370 GOTO3250
3380 REM =====  YES OR NO INKEY$ RESPONSE ROUTINE  =====
3390 IN$=INKEY$:IFIN$=""THEN3380
3410 YN=0:IF(IN$="Y"ORIN$="y")THENYN=1:RETURN
3430 IF(IN$="N"ORIN$="n")THENYN=2:RETURN
3440 SOUND400,4:GOTO3380
3460 REM =====  CHECK FOR CARRIAGE RETURN INPUT  =====
3470 IFINKEY$><""GOTO3460
3480 IN$=INKEY$:IFIN$=""THEN3480
3500 IFIN$<>CHR$(13)THENSOUND400,4:GOTO3480
3510 RETURN
3520 REM =====  INPUT ROUTINE FOR LETTER RESPONSES =====
3530 COLOR7,0:FIN$="":IFFINLEN=0 THENFINLEN=255
3560 IFINKEY$><""THEN3560
3570 INPTR$=INKEY$:IFINPTR$=""THEN3570
3590 IFINPTR$=CHR$(13)THENRETURN
3600 IFINPTR$<>CHR$(8)THEN3650
3610 IFFIN$=""THENSOUND600,4:GOTO3570
3620 PRINT CHR$(29);"■";CHR$(29);:FIN$=LEFT$((FIN$),LEN(FIN$)-1):GOTO3570
3650 IFLEN(FIN$)=FINLENTHENSOUND600,4:GOTO3570
3660 IFASC(INPTR$)<31 ORASC(INPTR$)>125 THENSOUND400,4:GOTO3570
3670 PRINTINPTR$;:FIN$=FIN$+INPTR$:GOTO3570
3700 REM =====  INITIAL FILE OR SINGLE LABEL INPUT PROGRAM  =====
3710 GOSUB15210:CLS:GOSUB2070:GOSUB2850:GOSUB2410:LOCATE21,30,0:PRINT"Make DATA Entries ";:LOCATE17,20:COLOR15:PRINT"Do not use QUOTATION MARKS when entering data!";:COLOR7,0:GOSUB6630:IFP>=1 THENP1=P:P=200
3840 FORI=P1TOP:GOSUB7010:GOSUB3020:LOCATE21,52,0:PRINT"Record #:";:LOCATE21,64,0:PRINTI;:LOCATE4,30,1,0,7:FINLEN=41:GOSUB3520:A$(I)=FIN$:LOCATE4,30,0:PRINTA$(I);:IF(A$(I)="END"ORA$(I)="end")THENP=I
3980 IF(A$(I)="END"ORA$(I)="end")THEN4620
3990 LOCATE6,30,1:FINLEN=41:GOSUB3520:B$(I)=FIN$:LOCATE6,30,0:PRINTB$(I);:LOCATE8,30,1:FINLEN=41:GOSUB3520:C$(I)=FIN$:LOCATE8,30,0:PRINTC$(I):LOCATE10,30,1:FINLEN=41:GOSUB3520:D$(I)=FIN$:LOCATE10,30,0:PRINTD$(I);:LOCATE12,30,1:FINLEN=41
4190 GOSUB3520:E$(I)=FIN$:LOCATE12,30,0:PRINTE$(I);:LOCATE14,30,1:FINLEN=41:GOSUB3520:F$(I)=FIN$:LOCATE14,30,0
4280 GOSUB2730:LOCATE21,20,0:COLOR15:PRINT"Is this correct <Y/N> ";:COLOR7,0:GOSUB3380:IFYN=1 THEN4540
4350 IFYN=2 THEN4360
4360 GOSUB2070:GOSUB2850:GOSUB3020:GOSUB3060:LOCATE21,18:COLOR15:PRINT"Re-enter what line? ";:COLOR7,0:LOCATE21,55:PRINT" Line # ";:FINLEN=1:LOW=49:HIGH=54:GOSUB3220:GOSUB3020:LOCATE21,62:PRINT VAL(INPTR$);
4530 ONVAL(INPTR$)GOTO6010,6040,6070,6100,6130,6160
4540 GOSUB2730:LOCATE21,18:PRINT"ENTER ";:COLOR15:PRINT CHR$(34)"END"CHR$(34);:COLOR7,0:PRINT" To CLOSE entries ";:NEXT
4620 CLS:COLOR7,0:GOSUB2150:GOSUB2410:LOCATE21,20:COLOR15:PRINT"SAVE to DISK <Y/N> ";:COLOR7,0:GOSUB3380:IFYN=1 THEN4730
4720 IFYN=2 THEN5270
4730 REM =====  DATA SAVE ROUTINE TO DISK  =====
4740 CLS
4750 GOSUB2150:GOSUB2410:LOCATE21,27,0:COLOR15:PRINT"What is FILE name? ";:COLOR7,0:GOSUB3170:FINLEN=14:LOCATE21,52:COLOR15:PRINT"DRIVE? ■:■■■■■■■■.■■■";:COLOR7,0:LOCATE21,59,0:GOSUB3520:FILESPEC$=FIN$:GOSUB3060:OPEN "O",1,FILESPEC$
4920 WRITE#1,P:FORI=1 TOP:WRITE#1,A$(I),B$(I),C$(I),D$(I),E$(I),F$(I):IF(A$(I)="END"ORA$(I)="end")THENP=I
4960 IF(A$(I)="END"ORA$(I)="end")THEN4980
4970 NEXT
4980 CLOSE:GOSUB12510:GOTO5270
5010 REM =====  DISK DATA READ ROUTINE  =====
5015 CLS
5020 GOSUB 2150:GOSUB 2410:LOCATE 21,27:COLOR 15:PRINT"What is FILE name? ";:COLOR 7,0:GOSUB 3170:FINLEN=14:LOCATE 21,52:COLOR 15:PRINT"DRIVE? ■:■■■■■■■■.■■■";:COLOR 7,0:LOCATE 21,59,0:GOSUB 3520:FILESPEC$=FIN$:GOSUB 3060:OPEN "I",1,FILESPEC$
5200 INPUT#1,P:FORI=1 TOP:INPUT#1,A$(I),B$(I),C$(I),D$(I),E$(I),F$(I):IF(A$(I)="END"ORA$(I)="end")THENP=I
5240 IF(A$(I)="END"ORA$(I)="END")THEN5260
5250 NEXT
5260 CLOSE
5270 REM =====  CHANCE TO REVIEW INPUT FILES  =====
5280 GOTO2890
5290 REM =====  STARTING OUTPUT LOOP =====
5300 CLS:GOSUB2070:GOSUB2850:K=1:NR=13
5350 LOCATE4,7:FORI=KTOP:GOTO5380
5380 LOCATE,7:PRINT SPC(70):LOCATE,7:PRINT USING PR$;I;A$(I);RIGHT$(E$(I),12):IF A$(I)="END"OR A$(I)="end"THEN 5510
5430 IFI=NRTHEN5450 ELSE5440
5440 NEXT
5450 GOSUB2790:LOCATE21,30:PRINT"<PRESS> ENTER to Continue!";:GOSUB3460:IFI=PTHEN5510
5500 IFI<PTHENK=I+1:NR=NR+13:GOTO5350
5510 GOSUB2790:LOCATE21,13:PRINT"Last Record in File";:LOCATE21,45:PRINT"<PRESS> ANY KEY to Continue";
5560 RES$=INKEY$:IFRES$=""THEN5560
5580 GOTO2890
5590 PRINT"ADD RECORDS TO FILE  <PRESS> 3";:COLOR7,0:LOCATE21,50,0:GOSUB3110:GOSUB12510:FINLEN=1:LOW=49:HIGH=51:GOSUB3220:ONVAL(INPTR$)GOTO8830,7150,3700
5690 REM =====  PRINT IN INITIAL MENU SELECTION ITEMS  =====
5700 LOCATE3,32:PRINT"LABEL/FILE PROGRAM";:LOCATE4,32:PRINT"══════════════════";:LOCATE6,35:PRINT"C H O I C E S";:LOCATE7,35:PRINT"═════════════";:LOCATE9,25:PRINT"Recall Disk FILE              1";:LOCATE11,25
5810 PRINT"Open New FILE                 2";:LOCATE13,25:PRINT"Make single label             3";:LOCATE15,25:PRINT"CONTROL Menu                  4";:LOCATE21,20:PRINT"Select & <PRESS> a Number";:GOSUB3110:GOSUB12510:FINLEN=1:LOW=49:HIGH=52
5930 GOSUB3220:ONVAL(INPTR$)GOTO5010,3700,3700,2890
5950 REM =====  INDIVIDUAL LINE CORRECTION ROUTINE  =====
5960 FORI=4 TO14 STEP2:LOCATEI,28:PRINT"  ";STRING$(41,254);:NEXT:GOTO6190
6010 LOCATE4,28:PRINT"  ";STRING$(41,254);:GOTO6190
6040 LOCATE6,28:PRINT"  ";STRING$(41,254);:GOTO6280
6070 LOCATE8,28:PRINT"  ";STRING$(41,254);:GOTO6350
6100 LOCATE10,28:PRINT"  ";STRING$(41,254);:GOTO6420
6130 LOCATE12,28:PRINT"  ";STRING$(41,254);:GOTO6490
6160 LOCATE14,28:PRINT"  ";STRING$(41,254);:GOTO6560
6190 LOCATE4,30,1:FINLEN=41:GOSUB3520:A$(I)=FIN$:LOCATE4,30,0:PRINTA$(I);:GOTO4280
6260 IF(A$(I)="END"ORA$(I)="end")THENP=I
6270 IF(A$(I)="END"ORA$(I)="end")THEN4620
6280 LOCATE6,30,1:FINLEN=41:GOSUB3520:B$(I)=FIN$:LOCATE6,30,0:PRINTB$(I);:GOTO4280
6350 LOCATE8,30,1:FINLEN=41:GOSUB3520:C$(I)=FIN$:LOCATE8,30,0:PRINTC$(I);:GOTO4280
6420 LOCATE10,30,1:FINLEN=41:GOSUB3520:D$(I)=FIN$:LOCATE10,30,0:PRINTD$(I);:GOTO4280
6490 LOCATE12,30,1:FINLEN=41:GOSUB3520:E$(I)=FIN$:LOCATE12,30,0:PRINTE$(I);:GOTO4280
6560 LOCATE14,30,1:FINLEN=41:GOSUB3520:F$(I)=FIN$:LOCATE14,30,0:PRINTF$(I);:GOTO4280
6630 REM =====  FILL IN LINE INPUT TITLE BLOCKS  =====
6640 LOCATE4,14:PRINTUSER$(4);:LOCATE,27:PRINT"1:";:LOCATE5,14:PRINT STRING$(LEN(USER$(4)),"~");:LOCATE6,14:PRINTUSER$(6);:LOCATE,27:PRINT"2:";:LOCATE7,14:PRINT STRING$(LEN(USER$(6)),"~");:LOCATE8,14:PRINTUSER$(8);:LOCATE,27:PRINT"3:";
6800 LOCATE9,14:PRINT STRING$(LEN(USER$(8)),"~");:LOCATE10,14:PRINTUSER$(10);:LOCATE,27:PRINT"4:";:LOCATE11,14:PRINT STRING$(LEN(USER$(10)),"~");:LOCATE12,14:PRINTUSER$(12);:LOCATE,27:PRINT"5:";:LOCATE13,14:PRINT STRING$(LEN(USER$(12)),"~");
6940 LOCATE14,14:PRINTUSER$(14);:LOCATE,27:PRINT"6:";:LOCATE15,14:PRINT STRING$(LEN(USER$(14)),"~");:RETURN
7010 REM =====  COLORS IN INPUT LINES  =====
7020 LOCATE2,28:COLOR31:PRINT"  "STRING$(15,32)CHR$(25);:COLOR7,0:LOCATE2,22:PRINT"MAX for EXPANDED PRINT";:LOCATE2,47:PRINT"with 4 ½ inch labels":FORQ=4 TO14 STEP2:LOCATEQ,30:PRINT STRING$(41,254);:NEXT:RETURN
7150 REM =====  EDIT INDIVIDUAL RECORDS ROUTINE =====
7160 Z=0:CLS:GOSUB2150:GOSUB2410:LOCATE20,18:COLOR15:PRINT"What RECORD NUMBER To edit ";:COLOR7,0:LOCATE22,18:PRINT"<ENTER> RECORD NUMBER ";:FINLEN=3:LOW=48:HIGH=57:GOSUB2070:GOSUB2410:GOSUB3100:LOCATE21,64,0:GOSUB3220:Z=VAL(FIN$):GOSUB12510
7360 IFP=0 THEN12740
7370 IF(Z<1 ORZ>P)THEN12740
7380 REM =====  DISPLAYING RECORDS TO BE EDITED =====
7390 ONZGOSUB2070:GOSUB2850:GOSUB2410:GOSUB6630:GOSUB7010:GOSUB3020:LOCATE21,53,0:PRINT"Record #: ";:LOCATE21,64:PRINTZ;:LOCATE4,30:PRINTA$(Z);:IFA$(1)="END"THENP=Z:COLOR7,0
7520 LOCATE6,30:PRINTB$(Z);:LOCATE8,30:PRINTC$(Z);:LOCATE10,30:PRINTD$(Z);:LOCATE12,30:PRINTE$(Z);:LOCATE14,30:PRINTF$(Z);
7620 GOSUB2730:COLOR7,0:GOSUB3060:COLOR7,0:LOCATE21,20:PRINT"Is this correct <Y/N> ";:COLOR7,0:GOSUB3380:IFYN=1 THEN8730
7710 IFYN=2 THEN7720
7720 COLOR7,0:GOSUB2730:GOSUB3020:GOSUB3060:LOCATE21,18:COLOR15:PRINT"Re-enter what LINE? ";:COLOR7,0:LOCATE21,55:PRINT" Line # ";:FINLEN=1:LOW=49:HIGH=54:GOSUB3220:GOSUB3020:LOCATE21,55:PRINT" Line # ";:LOCATE21,64:PRINT VAL(INPTR$);
7910 ONVAL(INPTR$)GOTO7930,7980,8030,8080,8130,8180
7920 REM =====  INDIVIDUAL LINE ROUTINE FOR RECALLED RECORDS  =====
7930 COLOR7,0:LOCATE4,30,1,0,7:COLOR0,7:PRINTA$(Z):GOTO8280
7980 COLOR7,0:LOCATE6,30,1,0,7:COLOR0,7:PRINTB$(Z):GOTO8370
8030 COLOR7,0:LOCATE8,30,1,0,7:COLOR0,7:PRINTC$(Z):GOTO8440
8080 COLOR7,0:LOCATE10,30,1,0,7:COLOR0,7:PRINTD$(Z):GOTO8510
8130 COLOR7,0:LOCATE12,30,1,0,7:COLOR0,7:PRINTE$(Z):GOTO8580
8180 COLOR7,0:LOCATE14,30,1,0,7:COLOR0,7:PRINTF$(Z):GOTO8650
8230 COLOR7,0:FORQ=4 TO14 STEP2:LOCATEQ,30,1,0,7:PRINT STRING$(41,254);:NEXT
8280 LOCATE4,30,1:FINLEN=41:GOSUB3520:A$(Z)=FIN$:LOCATE4,30,0:PRINTA$(Z);:GOTO7620
8350 IFA$(Z)="END"ORA$(Z)="end"THENP=Z
8360 IFA$(Z)="END"ORA$(Z)="end"THEN8740
8370 LOCATE6,30,1:FINLEN=41:GOSUB3520:B$(Z)=FIN$:LOCATE6,30,0:PRINTB$(Z);:GOTO7620
8440 LOCATE8,30,1:FINLEN=41:GOSUB3520:C$(Z)=FIN$:LOCATE8,30,0:PRINTC$(Z);:GOTO7620
8510 LOCATE10,30,1:FINLEN=41:GOSUB3520:D$(Z)=FIN$:LOCATE10,30,0:PRINTD$(Z);:GOTO7620
8580 LOCATE12,30,1:FINLEN=41:GOSUB3520:E$(Z)=FIN$:LOCATE12,30,0:PRINTE$(Z);:GOTO7620
8650 LOCATE14,30,1:FINLEN=41:GOSUB3520:F$(Z)=FIN$:LOCATE14,30,0:PRINTF$(Z);:COLOR7,0:GOTO7620
8730 REM =====  LOOK AT ANOTHER RECORD AFTER CORRECTION =====
8740 CLS:COLOR 7,0:GOSUB 2150:GOSUB 2410:LOCATE 21,18:COLOR 7,0:PRINT"Edit another RECORD <Y/N> ";:GOSUB 3380:ON YN GOTO 7150,4620
8830 REM =====  LABEL PRINT ROUTINES =====
8840 CLS:GOSUB 2070:GOSUB 2850:LOCATE 3,32:PRINT"LABEL/FILE PROGRAM";:LOCATE 4,32:COLOR 7,0:PRINT"══════════════════";:LOCATE 5,35:PRINT"C H O I C E S":LOCATE 6,35:PRINT"═════════════";:LOCATE 8,26:PRINT"1ST Line BOLD Print...........1";:LOCATE 9,26
8990 PRINT"All lines BOLD Print..........2";:LOCATE 10,26:PRINT"All Lines NORMAL 10 pitch.....3"
9000 LOCATE 11,26:PRINT"All lines CONDENSED Print.....4":LOCATE 12,26
9070 PRINT"Return to CONTROL Menu........5";:LOCATE 13,26:PRINT"Read DISK DIRECTORIES.........6";:LOCATE 14,26: PRINT"Reset LABEL SIZE..............7";:LOCATE 15,26:PRINT"QUIT the program..............8";:GOSUB 2410:LOCATE 21,20
9160 PRINT"<PRESS> a NUMBER SELECTION ";:GOSUB 3110:GOSUB 12510:FINLEN=1:LOW=49:HIGH=56:GOSUB 3220:ON VAL(INPTR$)GOTO 9250,9320,9460,9530,2890,12830,9240,11640
9240 GOSUB 13900:GOTO 8830
9250 REM =====  1ST LINE BOLD =====
9260 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 9600:GOTO 10410
9320 REM =====  ALL LINES BOLD =====
9330 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 9600:GOTO 10600
9390 REM =====  ALL LINES ITALICS =====
9400 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 9600:GOTO 10770
9460 REM =====  10 PITCH (PICA) =====
9470 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 9600:GOTO 10960
9530 REM =====  ALL LINES CONDENSED =====
9540 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 9600:GOTO 11130
9600 REM =====  LIST PRINT CHOICE MENU  =====
9610 LOCATE 6,35:PRINT"C H O I C E S";:LOCATE 7,35:PRINT"═════════════";:LOCATE 9,25:PRINT"Check Printer ON and SELECTED.";:COLOR 7,0:LOCATE 10,25:PRINT"CHECK LABELS LOADED AND ALIGNED";:LOCATE 11,25:PRINT"<ENTER> record RANGE to print";:LOCATE 13,25
9730 PRINT"I.E. <ENTER> FIRST Record Number to Print";:LOCATE 14,31:PRINT"Then <ENTER> Last Record Number";:GOSUB 3060:LOCATE 21,20:PRINT"<ENTER> Record Print Range ";:LB=0:LE=0:GOSUB 3020:LOCATE 21,52:PRINT"First # ";:LOCATE 21,62:FINLEN=3:LOW=48
9870 HIGH=57:GOSUB3220:LB=VAL(FIN$):LOCATE21,61:PRINTLB;:FORI=1 TO500:NEXT:GOSUB3020:LOCATE21,52,0:PRINT"Last # ";:GOSUB12510:FINLEN=3:LOW=48:HIGH=57:LOCATE21,62,0:GOSUB3220:LE=VAL(FIN$):IFLE=<PTHEN10090
10050 IFLE>PTHENLOCATE21,52:COLOR15:PRINT"NO SUCH FILE!";:LOCATE21,10:PRINT SPC(30):LOCATE21,20:PRINT"<PRESS> Any Key to Continue.":COLOR7
10060 RES$=INKEY$:IFRES$=""THEN10060
10080 GOTO8830
10090 LOCATE21,61:PRINTLE;:FORTM=1 TO500:NEXTTM:CLS:GOSUB2070:GOSUB2850:GOSUB2410:LOCATE6,35:PRINT"PRINT  LABELS";:LOCATE7,35:PRINT"═════════════";:LOCATE12,30:PRINT"How many of each labeL.    ";:LOCATE21,16
10240 PRINT"Indicate & <ENTER> Quantity ";:REM =====  NUMBER OF EACH LABEL =====
10260 GOSUB3020:LOCATE21,52:PRINT"# of each  ";:NL=0:FINLEN=3:LOW=48:HIGH=57:GOSUB3220:NL=VAL(FIN$):LOCATE21,62:PRINTNL;:FORI=1 TO500:NEXT:GOSUB12510:RETURN
10410 REM =====  1ST LINE ONLY SHADOW ON  IBM GRAPHICS PRINTER =====
10420 FOR N=LB TO LE:FOR M=1 TO NL:LPRINT CHR$(27);CHR$(69);:LPRINT A$(N):LPRINT CHR$(27);CHR$(70);:LPRINT B$(N):LPRINT C$(N):IF VAL(NRLB$)>3 THEN LPRINT D$(N)ELSE LPRINT"
10520 IF VAL(NRLB$)>4 THEN LPRINT E$(N)ELSE LPRINT"
10530 IF VAL(NRLB$)>5 THEN LPRINT F$(N)ELSE LPRINT"
10540 IF VAL(LZ$)=6 THEN 10560
10550 IF VAL(LZ$)=9 THEN LPRINT:LPRINT:LPRINT
10560 NEXT:NEXT:GOSUB 13690:GOTO 10420
10600 REM =====  ALL LINES BOLD PRINT ON IBM GRAPHICS PRINTER =====
10610 LPRINT CHR$(27)+"E";:FOR N=LB TO LE:FOR M=1 TO NL:LPRINT A$(N):LPRINT B$(N):LPRINT C$(N):IF VAL(NRLB$)>3 THEN LPRINT D$(N)ELSE LPRINT"
10690 IF VAL(NRLB$)>4 THEN LPRINT E$(N)ELSE LPRINT"
10700 IF VAL(NRLB$)>4 THEN LPRINT F$(N)ELSE LPRINT"
10710 IF VAL(LZ$)=6 THEN 10730
10720 IF VAL(LZ$)=9 THEN LPRINT:LPRINT:LPRINT
10730 NEXT:NEXT:GOSUB 13690:LPRINT CHR$(27);CHR$(70);:GOTO 10600
10770 REM =====  ALL LINES ITACICS/EMPHASIZED  =====
10780 LPRINTCHR$(27)+"@";:LPRINTCHR$(27)+CHR$(69);:LPRINTCHR$(27)+CHR$(52);:FORN=LBTOLE:FORM=1 TONL:LPRINTA$(N):LPRINTB$(N):LPRINTC$(N):IFVAL(NRLB$)>3 THENLPRINTD$(N)ELSELPRINT"
10870 IFVAL(NRLB$)>4 THENLPRINTE$(N)ELSELPRINT"
10880 IFVAL(NRLB$)>5 THENLPRINTF$(N)ELSELPRINT"
10890 IFVAL(LZ$)=6 THEN10910
10900 IFVAL(LZ$)=9 THENLPRINT:LPRINT:LPRINT
10910 NEXT:NEXT:GOSUB13690:GOTO10770
10950 IFVAL(LZ$)=6 THEN10910
10960 REM =====  10 PITCH (PICA) PRINT =====
10970 LPRINT CHR$(27);CHR$(70);
10975 LPRINT CHR$(18);:FOR N=LB TO LE:FOR M=1 TO NL:LPRINT A$(N):LPRINT B$(N):LPRINT C$(N):IF VAL(NRLB$)>3 THEN LPRINT D$(N)ELSE LPRINT"
11050 IFVAL(NRLB$)>4 THENLPRINTE$(N)ELSELPRINT"
11060 IFVAL(NRLB$)>5 THENLPRINTF$(N)ELSELPRINT"
11070 IFVAL(LZ$)=6 THEN11090
11080 IFVAL(LZ$)=9 THENLPRINT:LPRINT:LPRINT
11090 NEXT:NEXT:GOSUB13690:GOTO10960
11130 REM =====  ALL LINES CONDENSED =====
11140 FOR N=LB TO LE:FOR M=1 TO NL:LPRINT CHR$(15);A$(N):LPRINT B$(N):LPRINT C$(N):IF VAL(NRLB$)>3 THEN LPRINT D$(N)ELSE LPRINT"
11210 IFVAL(NRLB$)>4 THENLPRINTE$(N)ELSELPRINT"
11220 IFVAL(NRLB$)>5 THENLPRINTF$(N)ELSELPRINT"
11230 IFVAL(LZ$)=6 THEN11240
11240 IFVAL(LZ$)=9 THENLPRINT:LPRINT:LPRINT
11250 NEXT:NEXT:LPRINT CHR$(18);:GOSUB 13690:GOTO 11130
11300 REM =====  PRINT OUT FIRST LINE OF EACH RECORD  =====
11310 CLS:LOCATE 5,30:PRINT"EXTRACT FROM: ";FILESPEC$;:POKE 91,1:POKE 92,25:LOCATE 7,15:PRINT"FILE SUMMARY REPORT ";FILESPEC$;" AS OF ";DATE$;:PRINT:PRINT
11320 FOR FL=1 TO P:PRINT TAB(10);A$(FL):NEXT FL
11480 LPRINT TAB(10)"FILE SUMMARY REPORT ";FILESPEC$;"  AS OF   ";DATE$:LPRINT
11490 FOR FL=1 TO P:
11540 LPRINT TAB(8);;LEFT$(A$(FL),20);TAB(30)LEFT$(B$(FL),20):PN=PN+1:IF PN=55 THEN LPTINT CHR$(140):LPRINT STRING$(10,5):PN=5
11570 NEXT FL:GOSUB 12510
11590 LOCATE,,,0,7:DEFSEG:POKE91,1:CLS:END
11640 REM =====  FINAL SCREEN DISPLAY =====
11650 CLS:GOSUB 2070:GOSUB 2850:GOSUB 2410:GOSUB 3100:GOSUB 12510:LOCATE 6,23:PRINT"Open New File                 <PRESS> 1"
11655 LOCATE 8,23:PRINT"Print first LINE & Summary    <PRESS> 2";:LOCATE 9,33:PRINT"<PAPER IN PRINTER>";:LOCATE 11,23:PRINT"Return to CONTROL Menu        <PRESS> 3";
11770 LOCATE 13,23:PRINT"Run EasyRite Word Processor   <PRESS> 4":LOCATE 15,23:PRINT"Thanks!  Bye!       To QUIT - <PRESS> 5";:LOCATE 21,65,0:FINLEN=1:LOW=49:HIGH=53:GOSUB 3220:ON VAL(INPTR$)GOTO 1400,11300,2890,15580,11590
11850 LOCATE,,,0,7:POKE 91,1:POKE 92,25:END
11890 REM =====  ERROR TRAP ROUTINE =====
11900 GOSUB3060:LOCATE25,2:PRINT SPC(78);:KEYOFF:LOCATE25,28,0:COLOR24,4:PRINT" ERROR ";:COLOR7,0:PRINT" #";ERR;" IN LINE #";ERL;:FORT=1 TO1000:NEXT:IFERR=53 THENLOCATE20,10:PRINT SPC(30),ELSE12050
12020 LOCATE20,10:PRINT"File not found   ";:PRINT" ** Load CORRECT Disk";
12050 IFERR=54 THENLOCATE20,10:PRINT SPC(30),ELSE12090
12060 LOCATE20,10:PRINT"Bad file mode    ";:PRINT" ** Correct File Mode";
12090 IFERR=55 THENLOCATE20,10:PRINT SPC(30),ELSE12130
12100 LOCATE20,10:PRINT"File already OPEN ";:PRINT" ** CLOSE and REOPEN";
12130 IFERR=61 THENLOCATE20,10:PRINT SPC(30),ELSE12170
12140 LOCATE20,10:PRINT"Disk FULL         ";:PRINT" ** Install New Disk";
12170 IFERR=70 THENLOCATE20,10:PRINT SPC(30),ELSE12210
12180 LOCATE20,10:PRINT"Disk WRITE PROTECT  ";:PRINT" ** Remove W/P Tab";
12210 IFERR=71 THENLOCATE20,10:PRINT SPC(30),ELSE12250
12220 LOCATE20,10:PRINT"Disk NOT READY    ";:PRINT" ** CLOSE Drive Door";
12250 IFERR=24 THENLOCATE20,10:PRINT SPC(30),ELSE12290
12260 LOCATE20,10:PRINT"Printer OFF-LINE ";:PRINT"  ** Set ON-LINE Mode";
12290 IFERR=25 THENLOCATE20,10:PRINT SPC(30),ELSE12330
12300 LOCATE20,10:PRINT"Printer not ON    ";:PRINT" ** Check Printer ON";
12330 IFERR=27 THENLOCATE20,10:PRINT SPC(30),ELSE12420
12340 LOCATE20,10:PRINT"OUT OF PAPER!     ";:PRINT" ** Check Paper Path";
12370 LOCATE22,20:GOSUB2410:GOSUB3020:GOSUB3060:RETURN
12420 GOSUB12370:LOCATE22,10,0:PRINT"Correct SYSTEM ERROR - <PRESS> ENTER";:LOCATE22,10,0:GOSUB3460:KEYON:KEYOFF:COLOR7,0:RESUME2890
12510 REM =====  ELAPSED TIME PRINTOUT SUBROUTINE =====
12520 N$=TIME$:DEFFNH(H$)=VAL(LEFT$(H$,2)):DEFFNM(M$)=VAL(MID$(M$,4,2)):DEFFNS(S$)=VAL(RIGHT$(S$,2)):TMH=(FNH(N$))-FNH(BB$):TMM=(FNM(N$)-FNM(BB$)):TMS=(FNS(N$)-FNS(BB$)):LOCATE25,2:PRINT SPC(78);:KEYOFF:LOCATE25,5:PRINT"Start Time ";BB$;
12640 LOCATE25,30:PRINT"End Time ";N$;:LOCATE25,53:PRINT"Elapsed Time ";TMH;":";ABS(TMM);":";ABS(TMS);:RETURN
12690 CLS:LOCATE,,,0,7:POKE91,1:POKE92,25:END
12740 CLS:GOSUB2070:LOCATE10,22,0:PRINT"File Empty, or No Such Record in File!";:LOCATE12,27,0:PRINT"<PRESS> Any Key to Continue";
12800 RES$=INKEY$:IFRES$=""THEN12800
12820 GOTO2890
12830 REM =====  DISK DIRECTORY REVIEW ROUTINE =====
12840 CLS:GOSUB2410:GOSUB2150:GOSUB3020:LOCATE21,20,0:PRINT"What Drive (A,B,C,D)";:KEYOFF:MZ$="":MZ$="AaBbCcDd":GOSUB3110:GOSUB13590:LOCATE21,65,0:PRINTIN$;:ONMSGOTO12980,12980,13050,13050,13120,13120,13190,13190
12980 LOCATE3,1:FILES"A:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive A: ";:COLOR7,0:GOTO13250
13050 LOCATE3,1:FILES"B:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive B: ";:COLOR7,0:GOTO13250
13120 LOCATE3,1:FILES"C:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive C: ";:COLOR7,0:GOTO13250
13190 LOCATE3,1:FILES"D:*.*":COLOR0,7:LOCATE2,32:PRINT" Drive D: ";:COLOR7,0
13250 GOSUB2790:GOSUB2150:LOCATE20,24:PRINT"Another Directory?      <PRESS 1>";:LOCATE21,24:PRINT"Put File into LablFile? <PRESS 2>";:LOCATE22,24:PRINT"Return to CONTROL Menu? <PRESS 3>";:LOCATE21,65,0:FINLEN=1:LOW=49:HIGH=51:GOSUB3220
13360 ONVAL(INPTR$)GOTO13370,13400,13380
13370 GOTO12830
13380 CLS:GOTO2890
13400 FOR LC=19 TO 22:LOCATE LC,10:PRINT SPC(50):NEXT:GOTO 5020
13410 REM =====  CONTROL MENU DISPLAY ROUTINE =====
13420 LOCATE16,9,0:PRINTM1ST$;:LOCATE18,9,0:PRINTM2ND$;:LOCATE20,9,0:PRINTM3RD$;:LOCATE22,9,0:PRINTM4TH$;:LOCATE14,25:PRINT"  Select and <PRESS> a Letter  ";:LOCATE15,27:PRINT STRING$(27,"~");:GOSUB12510:MZ$="":MZ$="AaCcDdEeLlPpQqRrSsZzXxNn
13570 GOSUB13590:RETURN
13590 REM =====  INKEY RESPONSE FOR DIRECTORY SELECTION  =====
13600 IN$=INKEY$:IFIN$=""THEN13590
13620 MS=INSTR(MZ$,IN$):IFMS=0 THENSOUND1000,4:GOTO13590
13640 RETURN
13650 LOCATE,,,0,7:POKE91,1:POKE92,25:END
13690 REM =====  OPTION SUBROUTINE IN PRINT SEQUENCE  =====
13700 LPRINTCHR$(27)+"@";:CLS:GOSUB2150:GOSUB2410:LOCATE20,13:PRINT"To REPRINT this label/s    <PRESS> 1";:LOCATE21,13:PRINT"To print DIFFERENT label/s <PRESS> 2";:LOCATE22,13:PRINT"To CONTROL Menu            <PRESS> 3";:GOSUB3110:GOSUB12510
13820 FINLEN=1:LOW=49:HIGH=51:GOSUB3220:NL=1:ONVAL(INPTR$)GOTO13880,8830,2890
13880 RETURN
13890 END
13900 REM =====  IN PROGRAM  RESET OF LABEL SIZE  =====
13910 IFVAL(LZ$)=6 THENSIZE$="1 INCH
13920 IFVAL(LZ$)=9 THENSIZE$="1½ INCH
13930 CLS:GOSUB2070:LOCATE8,9:PRINT"PRINT ROUTINE CURENTLY SET FOR ";:COLOR15:LOCATE8,40:PRINTSIZE$:COLOR7,0:LOCATE8,47:PRINT" LABELS and ";:COLOR15:PRINT;NRLB$;:COLOR7,0:PRINT" PRINT LINES.":LZ$="":NRLB$="":LOCATE12,25:COLOR15:COLOR7,0
14120 LOCATE14,25,0:PRINT"<PRESS>";:COLOR15:PRINT" 6 ";:COLOR7:PRINT"FOR 1.0 INCH 6 LINE label":LOCATE16,25,0:PRINT"<PRESS>";:COLOR15:PRINT" 9 ";:COLOR7:PRINT"FOR 1.5 INCH 9 LINE label
14240 LZ$=INKEY$:IFLZ$=""THEN14240
14260 IFVAL(LZ$)=6 THEN14280
14270 IFVAL(LZ$)<>9 THENBEEP:GOTO14240
14280 LOCATE20,19,0:PRINT"Select <PRESS> ";:COLOR15:PRINT" 3, 4, 5,";:COLOR7,0:PRINT" or ";:COLOR15:PRINT" 6 ";:COLOR7,0:PRINT" PRINTED LINES.
14380 NRLB$=INKEY$:IFNRLB$=""THEN14380
14400 IFVAL(NRLB$)<3 ORVAL(NRLB$)>6 THENBEEP:BEEP:GOTO14380
14410 RETURN
14420 END
14430 REM =====  EMPTY OUT A SINGLE RECORD/FILE  =====
14440 CLS:GOSUB2150:GOSUB2410:GOSUB3100:LOCATE21,10,0:PRINT"WHICH FILE DO YOU WISH TO EMPTY":FINLEN=3:LOW=48:HIGH=57:LOCATE21,62,0:GOSUB3220:GOSUB3020:XR=VAL(FIN$):LOCATE21,62,0:LOCATE21,62,0:PRINTXR:IFXR<=PTHEN14690
14610 IFXR>PTHENGOSUB3020:COLOR15:LOCATE21,52:PRINT"NO SUCH FILE!";:COLOR7
14620 LOCATE21,10,0:PRINT SPC(35):LOCATE10,27:PRINT"<PRESS> Any Key to Continue.
14660 RES$=INKEY$:IFRES$=""THEN14660
14680 GOTO2890
14690 ONVAL(INPTR$)GOTO14700
14700 GOSUB2070:LOCATE4,20:PRINT"FILE RECORD ";:COLOR15:PRINTXR;:COLOR7,0:PRINT" READS:":LOCATE6,20:PRINTA$(XR):LOCATE7,20:PRINTB$(XR):LOCATE8,20:PRINTC$(XR):LOCATE9,20:PRINTD$(XR):LOCATE10,20:PRINTE$(XR):LOCATE11,20:PRINTF$(XR):COLOR15
14900 LOCATE21,10:PRINT"DO YOU WANT TO EMPTY THIS FILE (Y/N)":COLOR7:GOSUB3380:IFYN=1 THEN14960
14950 IFYN=2 THEN2890
14960 LOCATE21,10:PRINT SPC(40):A$(XR)="<<═ E M P T Y ═>>":B$(XR)="":C$(XR)="":D$(XR)="":E$(XR)="":F$(XR)="":LOCATE13,20:PRINT"FILE RECORD ";:COLOR15:PRINTXR;:COLOR7,0:PRINT" HAS BEEN EMPTIED":LOCATE15,20
15110 PRINT"YOU MAY REFILL THIS RECORD USING EDIT FUNCTION":LOCATE21,10,0:PRINT SPC(30):LOCATE21,20,0:PRINT"<PRESS> ANY KEY TO CONTINUE
15160 A$=INKEY$:IFA$=""THEN15160
15180 GOTO2890
15190 GOSUB15210:GOTO2890
15210 REM =====  OPTIONAL RESET OF INPUT HEADINGS  =====
15220 CLS:GOSUB2070:GOSUB2850:GOSUB6630:LOCATE21,18:PRINT"ARE THE CURRENT FILE HEADINGS SATISFACTORY  (Y/N)":GOSUB3380:IFYN=1 THENRETURN
15300 IFYN=2 THEN15310
15310 LOCATE 21,10:PRINT SPC(60):LOCATE 21,18:PRINT"INPUT NEW HEADINGS (10 CHARACTERS MAX)"
15320 LOCATE 4,14,0
15330 FOR LINEIN%=4 TO 14 STEP 2
15340 LOCATE LINEIN%,50
15350 PRINT STRING$(10,254)
15360 NEXT
15370 FOR LINEOUT%=4 TO 14 STEP 2
15375 LOCATE LINEOUT%,50,1,0,7
15380 FINLEN%=10
15385 GOSUB 3520
15390 USER$(LINEOUT%)=FIN$
15400 LOCATE LINEOUT%,50,0
15410 PRINT USER$(UN%)
15420 NEXT
15440 REM ===== CHECK ON CORRECT INPUT =====
15450 LOCATE 21,4
15460 PRINT SPC(60)
15470 LOCATE 21,20,0
15480 PRINT"Are These Correct? <Y/N>"
15490 GOSUB 3380
15500 IF YN%=1 THEN RETURN
15510 IF YN%=2 THEN 15310
15520 END
15580 RUN"EASYRITE.BAS"

LPT12SET.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '********************* LPT1 AND LPT2 TOGGLE PROGRAM ************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║         PROGRAM TO DIRECT OUTPUT LPT1: OR LPT2: (PARALLEL)              ║
20 '║                                                                         ║
22 '║     When you purchase an expansion board for the IBM with a second      ║
24 '║ parallel port (LPT2:), the accompanying documentation usually states    ║
26 '║ that you can "address" the port with appropriate software; however,     ║
28 '║ the software is hard to find.  This program will toggle the computer    ║
30 '║ output between LPT1: and LPT2:. You can use the routine in an AUTOEXEC  ║
32 '║ program with a word-processor.  If you use it in this fashion, return   ║
34 '║ to SYSTEM before calling up a .COM or .EXE word processor file. You     ║
36 '║ may "REM" or DELETE all of the PRINT lines from 220 on to eliminate the ║
38 '║ statements which report the state of the appropriate address ports.     ║
40 '║ Run BLUEBERY.BAS or LABELPRO.BAS for an example of this routine being   ║
42 '║ worked into an application program.  This program may be used in whole  ║
44 '║ or in part without attribution or license.                              ║
46 '║                 (c) G I N A C O  -- 1968            Ver 5.2/320/160     ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT:CLEAR
110 DEF SEG = &H40
120 PRINT PEEK(&H8), PEEK(&H9), PEEK(&HA), PEEK(&HB)
130 PRINT "&H8";" ="; PEEK(&H8),"&H9";" ="; PEEK(&H9),"&HA";" ="; PEEK(&HA),"&HB";" ="; PEEK(&HB)
140 A! = PEEK(&H8)
150 B! = PEEK(&H9)
160 C! = PEEK(&HA)
170 D! = PEEK(&HB)
180 POKE &H8,C!
190 POKE &H9,D!
200 POKE &HA,A!
210 POKE &HB,B!
220 PRINT PEEK(&H8), PEEK(&H9), PEEK(&HA), PEEK(&HB)
230 PRINT "&H8";" ="; PEEK(&H8),"&H9";" ="; PEEK(&H9),"&HA";" ="; PEEK(&HA),"&HB";" ="; PEEK(&HB)
240 IF PEEK(&H9) = 3 THEN LPT$ = "1" ELSE LPT$ = "2"
250 PRINT:PRINT "PRIMARY PRINTER =LPT";LPT$ + ":"
260 PRINT:PRINT;CHR$(34);"R U N";CHR$(34);" again to change primary printer."
270 :REMPRINT"A";A,"B";B,"C";C,"D";D
280 FOR I! = 1 TO 1000
290 NEXT
300 PRINT:PRINT"Change LINE 180 to ";CHR$(34);"SYSTEM";CHR$(34);" when used in an AUTOEXEC.BAT program."
310 END
65000 '***********************  SAVE ROUTINE  *******************************
65100 SAVE"B:LPT12SET.BAS"
5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** GRAPHICS PRINT ROUTINE -- BASIC *************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                      80 COLUMN GRAPHICS PRINTOUT                        ║
20 '║                                                                         ║
22 '║     This program will make a graphics printout of screen to a EPSON     ║
24 '║ GRAFTRAK or GEMINI 10/15 printer. The quality and detail of the print   ║
26 '║ are excellent.  Simply insert desired printout text in between lines    ║
28 '║ 510  and  830.  You may add or subtract lines as desired.  To get an    ║
30 '║ idea of the amount of text you can put in the designated program area,  ║
31 '║ run this program. It prints out the 160k Blueberry Pie a la Mode disk   ║
32 '║ menu.  You can input any data you want into the appropriate lines.      ║
34 '║     Before you run the program, ascertain that your printer is on-line  ║
35 '║ and the paper is about five spaces below the perforation. PC-ADD.BAS    ║
36 '║ is similar, allowing EITHER a 40 or 80 column display. When building    ║
37 '║ up the menu or test, remove the REM marks from lines 505 and 830. This  ║
38 '║ will permit you to run the program for test without a printout.         ║
39 '║     This program, in whole or in part, may be used without license or   ║
40 '║ attribution.   G I N A C O    -  1983.                  REV 5.2/320     ║
41 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 FOR I=1 TO 10:KEY I,"":NEXT
110 CLS
120 SCREEN 0,0,0
130 WIDTH 80
140 CLEAR
150 KEY OFF
160 DEFINTA,Q,F,I,E,H,K,W
170 DIM E%(200)
180 Q% = 0
190 F% = 0
200 E% = 0
210 I% = 0
220 W% = 0
230 H% = 0
240 K% = 0
250 A$ = ""
280 SCREEN 1
290 WIDTH 80
300 ' ******* THE MESSAGE TO PRINT STARTS HERE ** ADD LINES AS NEEDED *******
310 ' ******* PRINT YOUR BORDER AND THEN PUT IN TEST WITH LOCATE " " ********
320 LOCATE 2,2
330 FOR I% = 1 TO 38
340   PRINT CHR$(17)CHR$(16);
350 NEXT
360 FOR I% = 2 TO 23
370   LOCATE I%,2
380   PRINT CHR$(17)CHR$(16)
390   LOCATE I%,78
400   PRINT CHR$(17)CHR$(16)
410 NEXT
420 LOCATE 24,2
430 FOR I% = 1 TO 39
440   PRINT CHR$(17)CHR$(16);
450 NEXT
460 LOCATE 4,10
470 PRINT CHR$(3)
480 LOCATE 4,70
490 PRINT CHR$(4)
500 LOCATE 3,31
505 'GOTO 505
510 PRINT CHR$(34)"BIG BLUE" CHR$(34)" berry Pie"
520 LOCATE 4,27
530 PRINT "          a la Mode"
540 LOCATE 6,28
550 PRINT "BASIC UTILITIES & PROGRAMS"
570 LOCATE 8,5
580 PRINT "AlphaHex.Bas  1   Bluebery.Bas  2   BlueMenu.Bas   3   BoxInBox.Bas   4"
590 LOCATE 9,5
600 PRINT "BoxInput.Bas  5   BusCheck.Bas  6   Calulate.Bas   7   ChekForm.Bas   8"
610 LOCATE 10,5
620 PRINT "Chr$Prnt.Bas  9   Circle  .Gra  10  ColorSee.Bas   11  Compound.Bas  12"
630 LOCATE 11,5
640 PRINT "D&CForm .Bas  13  EasyWord.Bas  14  EpsonSet.Bas   15  Esckey  .Bas  16"
650 LOCATE 12,5
660 PRINT "FileDate.Bas  17  GasForm .Bas  18  HeadCln .Bas   19  HexPrint.Bas  20"
670 LOCATE 13,5
680 PRINT "HexSay  .Bas  21  IBMLabel.Bas  22  KeySet  .Bas   23  LabelPro.Bas  24"
690 LOCATE 14,5
700 PRINT "Lpt12Set.Bas  25  MenuPrnt.Bas  26  NecLabel.Bas   27  NiceList.Bas  28"
710 LOCATE 15,5
720 PRINT "PC-Color.Bas  29  PC-Add  .Bas  30  PeekPrnt.Bas   31  PrntCall.Bas  32"
730 LOCATE 16,5
740 PRINT "ProgHead.Bas  33  QuickBox.Clr  34  RandSeed.Bas   35  Sample  .Twd  36"
750 LOCATE 17,5
760 PRINT "Savings .Bas  37  ShowBox .Bas  38  SixBoxes.Bas   39  Startup .Bas  40"
770 LOCATE 18,5
780 PRINT "Startup .Clr  41  Tasklist.Bas  42  Test2Wrt.Bas   43  TestWrit.Doc  44"
781 LOCATE 19,5
782 PRINT "Timeshow.Bas  45  WeightFm.Bas  46  WorkFile.Bas   47  YesorNo .Bas  48"
783 LOCATE 20,5
784 PRINT "YourMenu.Bas  49  ZipCLear.Bas  50  ListSkip.10P   51  Listskip.17P  52"
790 LOCATE 22,10:PRINT CHR$(5)
800 LOCATE 22,34:PRINT"MAKE SELECTION"
810 LOCATE 22,70
820 PRINT CHR$(6)
825 DEF SEG:POKE 91,25:POKE 92,25
830 ' GOTO 830
840 ' ****** END OF THE TEXT/GRAPHIC INPUT AREA ** ADD LINES AS NEEDED *****
850 ' ****************  GRAPHICS SCREEN/PRINT ROUTINE **********************
860 ' ********* WILL PRINT WITH EPSON GRAFTEX OR GEMENI STAR ***************
870 LPRINT START.DSTRIKE$;
880 WIDTH "LPT1:",255
890 DEF SEG = - 18432
900 LPRINT CHR$(13); CHR$(10); CHR$(27); CHR$(65); CHR$(8); CHR$(10);
910 FOR I% = 0 TO 79
920 ' ********************* SET BI-IMAGE-COLUMN-SCAN MODE ********************
930   LPRINT CHR$(10); CHR$(27); CHR$(76); CHR$(32); CHR$(3);
940   FOR K% = 0 TO 99
950     H% = I% + (80 * K%)
960     F% = PEEK(H%)
970     Q% = PEEK(8192 + H%)
980     IF F% = 13 THEN F% = 9
990     IF Q% = 13 THEN Q% = 9
1000     E%(K%) = F%
1010     E%(K% + 100) = Q%
1020   NEXT
1030   FOR K% = 99 TO 0 STEP - 1
1040     LPRINT STRING$(4,E%(K% + 100)); STRING$(4,E%(K%));
1050   NEXT
1060 NEXT
1070 LPRINT CHR$(27); CHR$(64)
1080 SCREEN 0,0,0
1090 WIDTH 80
1100 DEF SEG:POKE 91,1:POKE 92,24:END
65000 '  ************************* SAVE ROUTINE ****************************
65100 SAVE"B:MENUPRNT.BAS"

NICELIST.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  Pretty listing Program  BASIC **************************
12 '╔═════════════════════════════════════════════════════════════════════════╗
14 '║               FORMATTED PROGRAM LISTING PROGRAM        Ver 5.1/160      ║
16 '║                                                                         ║
18 '║   This program, or versions of it, has been around for many years. It   ║
20 '║ will send a formatted listing to the EPSON/GEMINI printer. It provides  ║
22 '║ 55 lines per page with a heading, date, and name at the top of each     ║
24 '║ page.  This program, in whole or part, may be used without license or   ║
26 '║ attribution.  Listed program must be  saved with "A" option.            ║
28 '║     IF YOU HAVE A CLOCK BOARD INSTALLED, REMOVE REM ' FROM LINE 360.    ║
29 '║                   (c)  G I N A C O  -- 1983        Ver 5.3/160/320      ║
30 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 REM
100 FOR I! = 1 TO 10
110   KEY I!,""
120 NEXT
130 CLS
140 KEY OFF
150 SCREEN 0,0,0
160 WIDTH 80
170 CLEAR
180 PAGE! = 0
190 LENGTH! = 0
200 LINECOUNT! = 0
210 K! = 0
220 LOCATE 8,25
230 PRINT "POSITION PAPER 1 SPACE BELOW PERFORATION"
240 LOCATE 10,19
250 PRINT "NOTE: The Program to be listed must already be saved"
260 LOCATE 11,34
270 PRINT "with "; CHR$(34); CHR$(65); CHR$(34);" OPTION (ASCII)"
280 LOCATE 13,35
290 PRINT "ENTER DATE (MM-DD-YY)"
300 LOCATE 13,60
310 LINE INPUT D$
320 LOCATE 14,35
330 PRINT "ENTER TIME (HH:MM)"
340 LOCATE 14,60
350 LINE INPUT T$
360 REM D$=DATE$:T$=TIME$:REM ***** REMOVE "REM" IF YOU HAVE CLOCK BOARD ****
370 LOCATE 16,35
380 PRINT "FILESPEC OF PROGRAM "
390 LOCATE 16,55
400 LINE INPUT ;FILESPEC$
410 FILESPEC$ = FILESPEC$
420 OPEN FILESPEC$ FOR INPUT AS 1
430 PAGE! = PAGE! + 1
440 WIDTH "LPT1:",132
450 LPRINT CHR$(15);
460 LPRINT STRING$(3,10)
470 LPRINT TAB( 15)"* FORMATTED LISTING OF ";
480 LPRINT TAB( 45);FILESPEC$;"       ";D$;"     ";T$;"    ";"PAGE ";PAGE!
490 LPRINT
500 LINECOUNT! = LINECOUNT! + 5
510 DEL$ = INPUT$(1,1)
520 IF EOF(1) THEN K! = 1 : GOTO 690
530 LN$ = LN$ + DEL$
540 IF DEL$ < > ":" AND DEL$ < > CHR$(10) THEN 510
550 IF DEL$ = CHR$(10) THEN LN$ = LEFT$(LN$, LEN(LN$) - 2)
560 IF VAL( LEFT$(LN$,1)) > 0 THEN 570 ELSE 590
570 LPRINT TAB( 7);LN$;
580 GOTO 610
590 LPRINT TAB( 15);LN$;
600 GOTO 610
610 LN$ = ""
620 LINECOUNT! = LINECOUNT! + 1
630 IF LINECOUNT! = > 60 THEN 650
640 GOTO 510
650 LPRINT CHR$(12)
660 PAGE! = PAGE! + 1
670 LINECOUNT! = O!
680 GOTO 460
690 IF K! = 1 THEN 710
700 GOTO 560
710 CLOSE
720 LPRINT CHR$(12)
730 LPRINT CHR$(27); CHR$(64);
740 END
65000 REM ********************** SAVE ROUTINE *****
65100 SAVE"B:NICELIST.BAS"

PC-COLOR.BAS

5 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '*****************  COLOR PALETTES AND COLOR CHIPS  ************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                    PC-COLOR PROGRAM DELUXE                              ║
20 '║                                                                         ║
22 '║    This program was keyed in from the November 1982 PC-Magazine. It     ║
24 '║ was provided in an article entiled "Color Palettes and Color Chips" by  ║
26 '║ Karl Koessell. The article started on page 305.  The program allows     ║
28 '║ users to test monitors before purchasing them. It checks the brilliance ║
30 '║ of the screen, and demonstrates the color combinations which are avail- ║
32 '║ able on the IBM-PC. It permits the viewer to determine the clarity and  ║
34 '║ resolution of the WIDTH 80 presentation -- important if you plan to do  ║
35 '║ extensive word-processing or detailed programming. This program has no  ║
36 '║ commercial application and is provided as a service for personal use    ║
37 '║ and color monitor evaluation.   Author: Karl Koessell, address unknown. ║
38 '║                G  I  N  A  C  O -- 1983                   Ver 5.2/320k  ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 KEY OFF
110 DEFINT A-Z
120 GOSUB 230               ' define pointers for function keys
130 FK=7                    ' Initialize variables
140 PALETTE = 1
150 '* * * * MAIN LOOP * * * * * * * * * *
160 GOSUB 490 ' change display?
170           ' change background color or ....
180 IF SCR THEN GOSUB 1990 ELSE GOSUB 1210 '.. change border color
190 FOR PAUSE=1 TO 2000  'Pause a while
200 NEXT
210 GOTO 160 'Go thru main loop again
220 '*************************************************************
230 ON KEY(1) GOSUB 380
240 ON KEY(2) GOSUB 390
250 ON KEY(3) GOSUB 400
260 ON KEY(4) GOSUB 410
270 ON KEY(5) GOSUB 420
280 ON KEY(6) GOSUB 430
290 ON KEY(7) GOSUB 440
300 ON KEY(8) GOSUB 450
310 ON KEY(9) GOSUB 460
320 ON KEY(10) GOSUB 470
330 FOR FK=1 TO 10  ' Activate all
340     KEY(FK) ON    ' ten function keys
350 NEXT
360 RETURN
370 '****** Flag FK set by function key
380 FK=1:RETURN
390 FK=2:RETURN
400 FK=3:RETURN
410 FK=4:RETURN
420 FK=5:RETURN
430 FK=6:RETURN
440 FK=7:RETURN
450 FK=8:RETURN
460 FK=9:RETURN
470 FK=10:RETURN
480 ' If FK, change display accordingly
490 ON FK GOSUB 520,600,640,640,690,740,790,880,970,1020
500 RETURN
510 '****** DISPLAYS AVAILABLE *******
520 FK=0  'Toggle between screens 0 & 1
530      SCR = (SCR+1) MOD 2
540 ' Either prepare text mode or...
550      IF SCR=0 THEN GOSUB 790: RETURN
560 ' ... Prepare med. res. graphics mode
570      W=0    'Clear text mode flag
580 GOSUB 1560
590 RETURN
600 FK=0 'Change palette, graphics only
610      PALETTE=(PALETTE+1) MOD 2
620      GOSUB 2030 'Update palette info
630      RETURN
640 ON FK GOTO 680,650,640,670  ' PAUSE
650      GOSUB 490  ' Change display
660      GOTO 640   ' Still pausing
670      FK=0 'Continue background/border cycle
680      RETURN
690 FK=0 'Rowed foreground
700      IF RB=0 OR W=41 THEN RETURN
710      RB=0 'Clear rowed background flag
720      GOSUB 1300 'Print text display
730      RETURN
740 FK=0 'Rowed background
750      IF RB=1 OR W=41 THEN RETURN
760      RB=1 'Set rowed background
770      GOSUB 1300
780      RETURN
790 FK=0 'Width 40 text
800      IF W=1 THEN RETURN
810      WIDTH 40
820      W=1 'Flag set to middle of column
830      V=9 'First line of text
840      GOSUB 1080 'Prepare text mode
850      GOSUB 1240 'Update border information
860      GOSUB 1300
870      RETURN
880 FK=0 'Width 80 text
890      IF W=41 THEN RETURN
900      WIDTH 80
910      W=41 'Flag set to middle column
920      V=1 'First line of text
930      GOSUB 1080
940      GOSUB 1240
950      GOSUB 1300
960      RETURN
970 FK=0 'Standard characters
980      IF BLINK=0 THEN RETURN
990      BLINK=0 'CLEAR BLINKING FLAG
1000      GOSUB 1300
1010      RETURN
1020 FK=0 'Blinking Characters
1030      IF BLINK=1 THEN RETURN
1040      BLINK=1 'Set blinking flag
1050      GOSUB 1300
1060      RETURN
1070 '******** Text Mode ***********
1080 SCREEN 0,1,0,0
1090 FOR FK=5 TO 10 'Activate last six function keys
1100      KEY(FK) ON
1110 NEXT
1120 KEY(2) OFF 'Deactivate key 2
1130 COLOR 7,0
1140 CLS
1150 LOCATE ,8,0
1160 PRINT "COLOR TEXT (SCREEN 0,1,,)"
1170 PRINT
1180 GOSUB 2120 'Print instructions
1190 RETURN
1200 '********* Change Border Color **********
1210 BORDER=(BORDER+1) MOD 16
1220 GOSUB 1240
1230 RETURN
1240 LOCATE 25,9+W/2
1250 COLOR BORDER,0,BORDER
1260 IF BORDER MOD 8=0 THEN COLOR ,7
1270 PRINT USING " Border is color _,_,## ";BORDER;
1280 RETURN
1290 '********* Print text display ************
1300 LOCATE V,W
1310 IF RB=1 AND W=1 THEN 1390
1320 FOR F=0 TO 15 'Rowed background
1330    LOCATE V+F,W
1340    FOR B=0 TO 7
1350       GOSUB 1510 'Print text
1360 NEXT B,F
1370 IF W=1 THEN 1440 'Skip if WIDTH 40
1380 PRINT " ";
1390 FOR B=0 TO 7 'Rowed background
1400    FOR F=0 TO 15
1410       GOSUB 1510  'Print text
1420 NEXT F,B
1430 'Using monochrome display adapter
1440 DEF SEG=0
1450 IF (PEEK(1040) AND 48)=48 THEN 1490 'If so then all done, otherwise
1460 'color monitor needs a white space in last column of 24th monitor line
1470 DEF SEG=&HB800
1480 POKE 80*24*(1-1*(W=41))-1,64+32+16
1490 RETURN
1500 '********* Text printing routine *********
1510 FG=F+16*BLINK
1520 COLOR FG,B 'SET NEW FORGROUND/BACKGROUND
1530 IF F=15 AND B=7 THEN PRINT "15,7";:GOTO 1550
1540 PRINT USING "##_,# ";FG;B;
1550 RETURN
1560 SCREEN 1,0,0,0
1570 FOR FK=5 TO 10 'Deactivate last six function keys
1580    KEY(FK) OFF
1590 NEXT
1600 KEY(2) ON 'Activate F2 key
1610 LOCATE ,5,0
1620 PRINT "MEDIUM RESOLUTION COLOR GRAPHICS"
1630 PRINT SPC(13)"(SCREEN 1,0,,)"
1640 GOSUB 2120 'Print instructions
1650 LOCATE 9,1
1660 PRINT "Changing palette changes"
1670 PRINT "the 4 foreground colors"
1680 PRINT "displayed at one time."
1690 FOR F=0 TO 3 'Boxes of color
1700    LOCATE 10+F*4,30
1710    PRINT F;"="
1720    TOP=65+F*32  'Top line
1730    BOT=TOP+23   'Bottom line
1740    LINE (272,TOP)-(319,BOT),F,BF
1750 NEXT
1760 LOCATE 13,1
1770 PRINT "For the background and"
1780 PRINT "palette chosen by the"
1790 PRINT "statement COLOR "
1800 PRINT "a foreground number of {"
1810 LOCATE 18,1
1820 PRINT "Text (for SCREEN 1,0,,)"
1830 PRINT "is printed in foreground"
1840 PRINT "color 3, Text is invisible"
1850 PRINT "for COLOR 6,0 and COLOR 7,1"
1860 PRINT "and COLOR 14,0 and COLOR 15,1"
1870 LOCATE 24,12
1880 PRINT "Pallete is COLOR ";
1890 LOCATE 25,10
1900 PRINT "Background is COLOR ";
1910 FOR BRKT=25 TO 31 'Extend brackets
1920    LOCATE 40-BRKT,BRKT
1930    PRINT "/"
1940    LOCATE BRKT-8,BRKT
1950    PRINT "\"
1960 NEXT
1970 RETURN
1980 '********* Change Background Color *********
1990 BACKGROUND=(BACKGROUND+1) MOD 16
2000 GOSUB 2030
2010 RETURN
2020 '********* Update background/palette info ********
2030 LOCATE 15,17
2040 PRINT USING "##_,#";BACKGROUND,PALETTE
2050 LOCATE 24,29
2060 PRINT USING "##_, ";PALETTE;
2070 LOCATE 25,30
2080 PRINT USING "##_, ";BACKGROUND;
2090 COLOR BACKGROUND,PALETTE
2100 RETURN
2110 '******** Function Key Instructions **********
2120 PRINT "[F1] = To Change Mode (TEXT or GRAPHICS)"
2130 IF SCR=0 THEN LOCATE 4,1:GOTO 2150
2140 PRINT SPC(19)"[F2] = Change Palette"
2150 PRINT "[F3] = To Pause    ";
2160 IF SCR=0 THEN PRINT "  ";
2170 PRINT "[F4] = To Continue"
2180 IF SCR THEN 2250
2190 IF W=41 THEN 2210 ' WIDTH 80 has both rowed foreground and rowed background
2200 PRINT "[F5] = Rowed Frgrnd  [F6]= Rowed Bkgrnd"
2210 LOCATE 6,1
2220 PRINT "[F7] = WIDTH 40      [F8] = WIDTH 80"
2230 PRINT "        Foreground chartacter choices:"
2240 PRINT "[F9] = Normal   or   [F10] = Blinking"
2250 RETURN
2260 END
65000 REM ===== SAVE ROUTINE =====
65100 SAVE"B:PC-COLOR.BAS"

PEEKPRNT.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '*****************  MEMORY PEEKER/HEX CONVERTER IBM  ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║               R.A.M/R.O.M PEEK ROUTINE & HEX$ CONVERTER                 ║
20 '║                                                                         ║
22 '║    This dual purpose program will peek into designated RAM and ROM      ║
24 '║ areas and return the decimal value at the location. You may specify     ║
26 '║ the range in either HEX$ or DECIMAL.  The range is entered as two #'s   ║
28 '║ separated by a comma. I.E:, &H34,&H49 or 234,400.  The appropriate      ║
30 '║ memory values will be displayed on the screen in an array.              ║
31 '║    The HEX$/DEC converter also allows input in either HEX$ or DECIMAL.  ║
32 '║ The range requested will be printed on the screen and then routed to    ║
33 '║ the printer. Certain HEX$ ranges can cause the printer to do strange    ║
34 '║ things.  If this happens during the printout, turn the printer OFF/ON   ║
36 '║ and the situation will be corrected.  This program may be used in whole ║
37 '║ or in part without attribution. (c) G I N A C O -- 1983 Ver 5.2/160/320 ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:KEY OFF
70  SCREEN 0,0,0
80   WIDTH 80
90    CLEAR
100     FOR I! = 1 TO 10
110        KEY I!,""
120       NEXT
130 CLEAR
140  LPRINT CHR$(27); CHR$(64);
150   PRINT
160    PRINT
170     LOCATE 12,20
180      PRINT "FOR PEEK-POKE DISPLAY AND PRINTOUT <ENTER> 1"
190       LOCATE 14,20
200        PRINT "FOR DEC/HEX CONVERSION & PRINTOUT <ENTER> 2"
210         LOCATE 17,40
220          INPUT X!
230           ON X! GOTO 240,530
240 CLS
250  WIDTH "LPT1:",80
260   LOCATE 10,21
270    PRINT "INDICATE RANGE OF PEEK-READ AND PRINTOUT"
280     LOCATE 12,24
290      PRINT "ENTER RANGE IN DECIMAL OR HEX FORM"
300       LOCATE 14,28
310        PRINT "i.e;, 300,310  or  &H20,&H30"
320         LOCATE 16,21
330          PRINT "THE PRINTOUT WILL SHOW THE DECIMAL VALUE"
340 LOCATE 17,18
350  PRINT "OF THE DESIGNATED (DEC OR HEX) MEMORY LOCATION"
360   LOCATE 19,40
370    INPUT A!,B!
380     CLS
390      FOR I! = A! TO B!
400         PRINT I!;" "; PEEK(I!),
410        NEXT
420         FOR I! = A! TO B!
430            LPRINT I!;" "; PEEK(I!),
440           NEXT
450            LOCATE 24,2
460             PRINT "<ENTER 1> FOR ANOTHER PEEK DISPLAY";
470 LOCATE 24,44
480  PRINT "<ENTER 2> FOR A HEX/DEC CONVERSION";
490 LPRINT CHR$(13)
500  INPUT Y!
510   ON Y! GOTO 240,530
520 CLS
530 REM ********** DECIMAL/HEXIDECIMAL CONVERSION -- TWO WAY *****************
540 CLS
550  LOCATE 6,20
560   PRINT "INDICATE RANGE OF DESIRED HEX$/DEC DISPLAY"
570    LOCATE 8,20
580     PRINT "YOU MAY ENTER RANGE IN DECIMAL OR HEX FORM"
590      LOCATE 10,28
600       PRINT "i.e;, 300,310  or  &H20,&H30"
610        LOCATE 12,23
620         PRINT "THE PRINTOUT SHOWS THE DECIMAL VALUES"
630 LOCATE 13,30
640  PRINT "OF THE RANGE REQUESTED."
650   LOCATE 15,26
660    PRINT "TURN PRINTER ON AND SET PAPER"
670     LOCATE 17,31
680      PRINT "DEC/HEX NUMBER RANGE "
690       LOCATE 19,40
700        INPUT A!,B!
710         CLS
720          FOR X! = A! TO B!
730             A$ = HEX$(X!)
740              PRINT TAB( 25)"DEC    "X!"  IS    "A$"   HEX$"
750             NEXT
760 FOR X! = A! TO B!
770    A$ = HEX$(X!)
780     LPRINT TAB( 10)"DEC    "X!"  IS    "A$"   HEX$"
790    NEXT
800     LOCATE 24,2
810      PRINT "<ENTER 1> FOR ANOTHER CONVERSION";
820       LOCATE 24,46
830        PRINT "<ENTER 2> FOR PEEK/PRINT DISPLAY ";
835         LOCATE   23,30
836          PRINT "<ENTER 3> TO QUIT";
840     INPUT Y!
850      ON Y! GOTO 530,240,860
860 CLS
870  END
65000 REM ***********************    SAVE ROUTINE    **************************
65100 SAVE"B:PEEKPRNT.BAS"

PRNTCALL.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  PRINTER CONTROL SUB-ROUTINE IBM  ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                EPSON/GEMINI 10/15 PRINT CONTROL ROUTINE                 ║
20 '║                                                                         ║
22 '║    Delete lines 110-200 and save the remaining program with the ASCII   ║
24 '║ option 'A ' so it can be merged into your program. GOSUB 5000 to set    ║
26 '║ up printer control in your program. If you are proficient in the use    ║
28 '║ of printer codes, you may wish to make the title shorter. If you only   ║
30 '║ use codes occasionally, you may appreciate the more descriptive name.   ║
31 '║                                                                         ║
32 '║    The error routine will take care of printer off or 'off line'. It    ║
33 '║ will go to Basic error handling for paper out or other.  This program   ║
34 '║ or any part thereof may be used without license or attribution.         ║
36 '║                   (c) G I N A C O    1983              Ver 5.1/160/320  ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 REM
100 GOSUB 5030
110  CLS
120   LOCATE 10,23
130    PRINT "YOUR PRINTER HAS BEEN INITIALIZED"
140     LOCATE 12,20
150      PRINT "FOR A SAMPLE PRINTOUT RUN EPSONSET.BAS"
160       FOR I! = 1 TO 3000
170        NEXT
180         PRINT
190          LIST 5000 - 5480
200           END
5000 '********************** PRINTER CONTROL SUBROUTINE ************************
5030 SMALL$ = CHR$(15)
5060  UNSMALL$ = CHR$(18)
5090   EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5120    CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5150     EXPAND$ = CHR$(14)
5180      EXPAND.END$ = CHR$(20)
5210       DARK$ = CHR$(27) + CHR$(69)
5240        ITALIC$ = CHR$(27) + CHR$(52)
5270         ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5300 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5330  END.ITALIC$ = CHR$(27) + CHR$(53)
5360   START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5390    END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5420     PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5450      END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5480 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5510  END.DSTRIKE$ = CHR$(27) + CHR$(72)
5540   TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5570    END.TINY$ = CHR$(27) + CHR$(84)
5600     ESC$ = CHR$(27)
5630      CLEANUP$ = CHR$(27) + CHR$(64)
5660       RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150  BEEP
6180   BEEP
6210    LOCATE 25,1
6240     PRINT SPC( 79)
6270      LOCATE 25,20
6300       PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY OFF
6390  RESUME
6420   END
65000 '************************ SAVE ROUTINE *********************************
65100 SAVE "B:PRNTCALL.BAS"

PROGHEAD.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '*****************   PUT TITLE HERE #############  *************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                                                                         ║
20 '║                                                                         ║
22 '║                                                                         ║
24 '║                                                                         ║
25 '║                                                                         ║
26 '║                                                                         ║
27 '║                                                                         ║
28 '║                                                                         ║
30 '║                                                                         ║
31 '║                                                                         ║
32 '║                                                                         ║
33 '║                                                                         ║
35 '║                                                                         ║
36 '║                                                       Ver 5.2/160/320   ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
54 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
55 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
56 '**** ADD THE WORDS YOU WANT IN THE BOX AND DELETE EXTRA LINES TO BRING ****
57 '*** THE BOX DOWN TO SIZE.   SAVE THIS WITH THE "A" OPTION TO RUN "MERGE" **
58 '** START YOUR PROGRAM NUMBERING AT 100 FOR MERGE PURPOSES. RENUMBER LATER.*
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 GOTO 5
64900 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:PROGHEAD.BAS",A

RANDSEED.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '***************** VARIABLE RANDOM SEED GENERATOR **************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║          USE OF TIME$ TO STIMULATE RANDOM NUMBER GENERATOR              ║
20 '║                                                                         ║
22 '║    This simple program will do a better job of RANDOMIZING than the old ║
24 '║ procedure of assigning a random seed number on a prompt.   This pro-    ║
26 '║ cedure is recommended on page 4-236 of the IMB (c) BASIC (1.1/2.0)      ║
28 '║ Manual.  This program is but an implementation of the procedure. To use,║
30 '║ eliminate the printout & timer loop.  Simply put lines 110 to 130 at    ║
31 '║ the start of your program. The random 'seed' will change with the TIME$ ║
32 '║ second advance.   G I N A C O  -- 1983                Ver 5.2/160/320   ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 COLOR 7,0
110 '************************ RANDOMIZE PROCEDURE *****************************
120 NN = VAL(RIGHT$(TIME$,2))
130 RANDOMIZE NN
140 '********** DO NOT USE LINES 140,150,160, OR 170 IN YOUR PROGRAM **********
150 PRINT TIME$,,NN ,,RND
160 FOR I = 1 TO 1000:NEXT
170 GOTO 120
180 END
65000 '*********************** SAVE ROUTINE ***********************************
65100 SAVE"B:RANDSEED.BAS"

SAVINGS.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************** SAVINGS/CHECKING BALANCE PROGRAM  ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                 SAVINGS OR PERSONAL CHECK RECONCILER                    ║
20 '║                                                                         ║
22 '║    This is a simple progam to provide a screem display and printout of  ║
24 '║ a savings or personal checking account. Sometimes the hand-held calcu-  ║
26 '║ lator just does not do the job.  Check numbers, account numbers, or a   ║
28 '║ payee/payor is not entered. Simply enter "W or D" for withdrawal and/or ║
30 '║ deposit.  Enter " END " for a final balance. If you wish a more compre- ║
32 '║ hensive printout showing payee/payor, check number and account number,  ║
34 '║ see BUSCHECK.BAS on this disk.  This program will "timeout" if printer  ║
35 '║ is not on-line.  To eliminate printer output, delete LPRINT lines.      ║
36 '║    This program may be used in whole or in part without attribution or  ║
37 '║ license.      (c) G I N A C O  -- 1983                Ver 5.2/320       ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT
100 SCREEN 0,0,0: WIDTH 80: CLEAR
110 KEY OFF
120 S1$ = CHR$(34)
130 LPRINT CHR$(27); CHR$(69)
140 CLS
160 LOCATE 5,15
170 PRINT "Q U I C K  SAVINGS ACCOUNT  R E C O N C I L E R"
180 LOCATE 6,15
190 PRINT STRING$(47,42)
200 A$ = ""
210 B$ = ""
220 C$ = ""
230 B! = 0
240 A! = 0
250 LOCATE 8,15
260 PRINT "A SAVINGS ACCOUNT RECONCILING ROUTINE."
270 LOCATE 10,15
280 PRINT "ENTER WITHDRAWAL OR DEPOSIT AS A POSITIVE NUMBER."
290 PRINT TAB( 15)"DO NOT USE <+> OR <-> SIGNS."
300 PRINT
310 PRINT TAB( 15)"IF YOU WANT A FINAL TOTAL, <ENTER> ";S1$;"END";S1$;" AT W/D QUERY."
320 PRINT
330 PRINT TAB( 15)"THE MAXIMUM NUMBER LENGTH IS $99,999.00."
340 GOSUB 780
350 U$ = "$###,###.##"
360 CLS
370 LOCATE 5,15
380 COLOR 7!
390 INPUT "ENTER BALANCE: ";A!
400 LOCATE 5,40
410 PRINT USING U$;A!
420 LPRINT TAB( 10)"SIMPLE CHECK-ADDING PROGRAM FOR CHECKBOOKS"
430 LPRINT " "
440 LPRINT
450 LPRINT TAB( 40);"STARTING BALANCE: ";USING U$;A!
460 LPRINT
470 LPRINT
480 PRINT
490 PRINT TAB( 15)"W  OR  D:  ";
495 AN$=INKEY$:IF AN$="" THEN 495
496 WD = 0:IF (AN$="W" OR AN$="w") THEN WD=1:GOTO 520
497 IF (AN$="D" OR AN$="d") THEN WD=2:GOTO 520
500 IF ( LEFT$(AN$,1) = "E" OR LEFT$(AN$,1) = "e") THEN 690
510 SOUND 400,4:GOTO 495
520 PRINT
530 PRINT TAB( 15)"$$$.$$ AMOUNT:  ";
540 LINE INPUT B$
550 B! = VAL(B$)
560 IF B$ = "" THEN B! = 0
570 IF WD=2 THEN B! = B! - 2 * B!
580 A! = A! - B!
590 PRINT
600 PRINT TAB( 60)"BAL: ";
610 PRINT USING U$;A!
620 PRINT
630 LPRINT TAB( 5)"W  OR  D ";AN$;
640 LPRINT TAB( 55) USING U$;B!;
650 LPRINT TAB( 70) USING U$;A!
660 LPRINT " "
670 PRINT
680 GOTO 480
690 LPRINT
700 LPRINT TAB( 50)"FINAL BAL: ";
710 LPRINT USING U$;A!
720 CLS
730 LOCATE 15,25
740 PRINT "FINAL BAL: ";
750 PRINT USING U$;A!
760 GOSUB 780
770 GOTO 140
780 LOCATE 22,15
790 PRINT "PRESS ";
800 COLOR 0,7
810 PRINT "  ENTER  ";
820 COLOR 7,0
830 PRINT " TO CONTINUE PROGRAM...";
840 PRINT " ";
850 INPUT X!
860 RETURN
64900 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:SAVINGS.BAS"

SHOWBOX.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 5"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13)
10 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:COLOR 7,0:KEY OFF
18 COLOR 3,0
20 LOCATE 1,3:PRINT"╔═════════════════════════════════════════════════════════════════════════╗"
23 PRINT"  ║                         YOU CAN PRINT LINES HERE                        ║"
24 FOR I = 3 TO 9:LOCATE I,3:PRINT "║":LOCATE I,77:PRINT"║":NEXT
36 LOCATE 10,3:PRINT"╚═════════════════════════════════════════════════════════════════════════╝"
38 COLOR 7,0:LOCATE 5,23:PRINT"**** See Text in Program listing ***"
40 LOCATE 7,33:PRINT"S T A N D    B Y "
42 ' This can be used to start any program or MERGED into any subroutine.
44 ' The box can be expanded by simply renumbering and typing in a new number
46 ' for range of the PRINT LOOP, and renumbering the locate line for the
48 ' bottom and/or top line to move the box up and down the screen.
52 '* * * * * * * * * * * * * NOTE   NOTE   NOTE * * * * * * * * * * * * * * *
54 ' You may PRINT WITHIN THE BOX by eliminating LOOP LINE 24.  Then inserting
56 ' any number of the lines printed out by line 23. This is a slower listing.
58 ' Or, you may print the box, then words inside by using LOCATE statements.
60 ' The later method would be appropriate if you were programming in color
62 ' and wanted the box and printing to be different colors without too many
64 ' color statements.                           Ver 5.1/160 and Ver 5.2/320
65 '********* <F2> to RUN again ******** <F10> for BLUEMENU  **********
66 FOR I=1 TO 4000:NEXT
68 CLS:LIST 42-65
69 END
200 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
65000 REM ********************* SAVE ROUTINE ********************************
65100 SAVE"B:SHOWBOX.BAS"

SIXBOXES.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 12-57
12 '***************** THIS IS A SIX NESTING BOX DISPLAY ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                  FOUR-CORNER COORDINATE BOX ROUTINE                     ║
20 '║                                                                         ║
22 '║    This is another program showing the techniques for programming a     ║
24 '║ series of screen boxes.  You may use any of the subroutines alone to    ║
25 '║ place a box anywhere on the screen. Note that INITIALIZATION statement  ║
26 '║ establishes the four corner coordinates for the box.  You can easily    ║
28 '║ put a box where you wish by the simple and FAST insertion of only four  ║
30 '║ numbers.  The technique for programming the SOFT keys for a particular  ║
32 '║ qualified response is also demonstrated.  This uses the INKEY$ function ║
34 '║ to to examine the character returned.  All other returns (except that   ║
36 '║ from the key which would normally return the CHR$ character specified)  ║
38 '║ will be rejected by a tone and a return to the orininal prompt.         ║
40 '║         ** (c) G I N A C O   1983 **          Ver 5.2/160/320           ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR
100 REM =====  BOX PRINTOUT =====
110 CLS
120 FOR I! = 1 TO 10
130   KEY I!,""
140 NEXT
150 GOSUB 300
160 REM =====  TERMINATION AND KEY CALL =====
170 KEY 6, CHR$(64)
180 KEY 2, CHR$(60)
190 LOCATE 12,25
200 PRINT "<F2> - AGAIN         <F6> - QUIT"
210 LOCATE 13,32
220 PRINT "SIX BOXES IN COLOR"
230 LOCATE 25,40,0
240 IN$ = INKEY$
250 IF IN$ = "" THEN 240
260 IF IN$ = CHR$(60) THEN 110
270 IF IN$ = CHR$(64) THEN CLS  : END
280 SOUND 400,4
290 GOTO 240
300 REM ======  INITIALIZATION: CORNER COORDINATES =====
310 TLC$ = CHR$(201)
320 TRC$ = CHR$(187)
330 HL$ = CHR$(205)
340 BLC$ = CHR$(200)
350 BRC$ = CHR$(188)
360 VL$ = CHR$(186)
370 FOR I! = 1 TO 10
380   KEY I!,""
390 NEXT
400 REM ====== PRINT BOX 1 =====
410 WW! = 76
420 TL! = 1
430 LL! = 24
440 LC! = 2
450 COLOR 2,0
460 LOCATE TL!,LC!,0
470 PRINT TLC$; STRING$(WW!,HL$);TRC$;
480 FOR I! = (TL! + 1) TO (LL! - 1)
490   LOCATE I!,LC!,0
500   PRINT VL$;
510   LOCATE I!, (LC! + WW! + 1),0
520   PRINT VL$;
530 NEXT
540 LOCATE LL!,LC!,0
550 PRINT BLC$; STRING$(WW!,HL$);BRC$;
560 REM ====== PRINT BOX 2 =====
570 WW! = 68
580 TL! = 3
590 LL! = 22
600 LC! = 6
610 COLOR 3,0
620 LOCATE TL!,LC!,0
630 PRINT TLC$; STRING$(WW!,HL$);TRC$;
640 FOR I! = (TL! + 1) TO (LL! - 1)
650   LOCATE I!,LC!,0
660   PRINT VL$;
670   LOCATE I!, (LC! + WW! + 1),0
680   PRINT VL$;
690 NEXT
700 LOCATE LL!,LC!,0
710 PRINT BLC$; STRING$(WW!,HL$);BRC$;
720 REM ====== PRINT BOX 3 =====
730 WW! = 60
740 TL! = 5
750 LL! = 20
760 LC! = 10
770 COLOR 4,0
780 LOCATE TL!,LC!,0
790 PRINT TLC$; STRING$(WW!,HL$);TRC$;
800 FOR I! = (TL! + 1) TO (LL! - 1)
810   LOCATE I!,LC!,0
820   PRINT VL$;
830   LOCATE I!, (LC! + WW! + 1),0
840   PRINT VL$;
850 NEXT
860 LOCATE LL!,LC!,0
870 PRINT BLC$; STRING$(WW!,HL$);BRC$;
880 REM ====== PRINT BOX 4 =====
890 WW! = 52
900 TL! = 7
910 LL! = 18
920 LC! = 14
930 COLOR 5,0
940 LOCATE TL!,LC!,0
950 PRINT TLC$; STRING$(WW!,HL$);TRC$;
960 FOR I! = (TL! + 1) TO (LL! - 1)
970   LOCATE I!,LC!,0
980   PRINT VL$;
990   LOCATE I!, (LC! + WW! + 1),0
1000   PRINT VL$;
1010 NEXT
1020 LOCATE LL!,LC!,0
1030 PRINT BLC$; STRING$(WW!,HL$);BRC$;
1040 REM ====== PRINT BOX 5 =====
1050 WW! = 44
1060 TL! = 9
1070 LL! = 16
1080 LC! = 18
1090 COLOR 6,0
1100 LOCATE TL!,LC!,0
1110 PRINT TLC$; STRING$(WW!,HL$);TRC$;
1120 FOR I! = (TL! + 1) TO (LL! - 1)
1130   LOCATE I!,LC!,0
1140   PRINT VL$;
1150   LOCATE I!, (LC! + WW! + 1),0
1160   PRINT VL$;
1170 NEXT
1180 LOCATE LL!,LC!,0
1190 PRINT BLC$; STRING$(WW!,HL$);BRC$;
1200 REM ====== PRINT BOX 6 =====
1210 WW! = 36
1220 TL! = 11
1230 LL! = 14
1240 LC! = 22
1250 COLOR 7,0
1260 LOCATE TL!,LC!,0
1270 PRINT TLC$; STRING$(WW!,HL$);TRC$;
1280 FOR I! = (TL! + 1) TO (LL! - 1)
1290   LOCATE I!,LC!,0
1300   PRINT VL$;
1310   LOCATE I!, (LC! + WW! + 1),0
1320   PRINT VL$;
1330 NEXT
1340 LOCATE LL!,LC!,0
1350 PRINT BLC$; STRING$(WW!,HL$);BRC$;
1360 COLOR 7,0
1370 RETURN
65000 REM ===== SAVE ROUTINE =====
65100 SAVE"B:SIXBOXES.BAS"

STARTUP.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
12 '*****************  START UP PROGRAM FOR BLUEBERRY   ***********************
14 '╔═════════════════════════════════════════════════════════════════════════╗
15 '║      BLUEBERRY PIE A LA MODE DISK START UP PROGRAM -- MONO!             ║
16 '║                                                                         ║
17 '║     This is a basic box-formatted introductory program for BLUEBERRY    ║
18 '║  PIE A LA MODE using a High Resolution composite video green monitor    ║
19 '║  or IBM monochrome monitor.  There are some programming techniques      ║
20 '║  which may be of interest to the user.  The various subroutines may     ║
21 '║  be extracted and modified for your own programming use.                ║
22 '║                                                                         ║
23 '║     A COLOR version of this program is filed under STARTUP.CLR. If      ║
24 '║  you are using an 80 column / RGB color monitor, use the color version. ║
25 '║  This is USER SUPPORTED software. If you use the BLUEBERRY PIE programs,║
26 '║  your contribution ($15.00 suggested) is welcome. Please copy and pass  ║
27 '║  BLUEBERRY to your friends. Send to GINACO,  10708 Santa Fe Drive,      ║
28 '║  Sun City  AZ  85351    (C) G I N A C O   1983      Ver 5.2/160/320     ║
31 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:FOR I=1 TO 10:KEY I,"":NEXT
100 KEY OFF:CLEAR:SCREEN 0,0,0:WIDTH 80:GOTO 140
110 COLOR 7,0
120 AKEY$=INKEY$:IF AKEY$=""THEN 120
130 RETURN
140 CLS:PRINT STRING$(80,219):COLOR7,0:FORA=1 TO22:LOCATEA,1:PRINT"█":LOCATEA,80:PRINT"█":NEXT:LOCATE23,1:PRINT STRING$(80,219);:LOCATE5,10:PRINT"██████████   ███    ███     ██     ██      █████████  ████████":LOCATE6,10
150 PRINT"██                  ███     ██    █  █     ██         ██    ██":LOCATE7,10:PRINT"██           ███    ██ █    ██   █    █    ██         ██    ██":LOCATE8,10:PRINT"██           ███    ██  █   ██  █      █   ██         ██    ██":LOCATE9,10
160 PRINT"██           ███    ██   █  ██ ██      ██  ██         ██    ██":LOCATE10,10:PRINT"██     ███   ███    ██    █ ██ ██████████  ██         ██    ██":LOCATE11,10:PRINT"██      ██   ███    ██     ███ ██      ██  ██         ██    ██":LOCATE12,10
170 PRINT"██████████   ███    ██     ███ ██      ██  █████████  ████████":COLOR7,0:LOCATE15,27:PRINT"***  G  I  N  A  C  O   ***":COLOR7,0:COLOR7,0:LOCATE18,15:PRINT"D E M O N S T R A T I O N    S T A R T   U P   U N I T ":LOCATE19,15
180 PRINT"═════════════════════════    ═════════   ═══   ═══════":COLOR7,0:FORI=1 TO3000:NEXT:FORI=3 TO20:LOCATEI,10:PRINT SPC(66):NEXT:LOCATE4,13:PRINT STRING$(11,178);STRING$(11,32);STRING$(11,178);STRING$(11,32);STRING$(11,178):FORI=5 TO18
190 COLOR7,0:LOCATEI,10:PRINT CHR$(178);STRING$(59,32);CHR$(178):NEXT:COLOR7,0:LOCATE19,13:COLOR7,0:PRINT STRING$(11,178);STRING$(11,32);STRING$(11,178);STRING$(11,32);STRING$(11,178):COLOR7,0:LOCATE8,22:COLOR7,0
200 PRINT"BLUEBERRY PIE A La MODE STARTUP ROUTINE":COLOR 7,0:LOCATE 10,28:COLOR 7,0:PRINT"DEMONSTRATING SCREEN BOXES":COLOR 7,0:LOCATE 13,22:COLOR 7,0:PRINT"FUNCTION KEY SETUP AND LEAD IN TO MENU":LOCATE 14,22
210 PRINT"════════ ═══ ═════ ═══ ════ ══ ══ ════":COLOR7,0:LOCATE3,8:COLOR7,0:PRINT"!!!":LOCATE20,8:PRINT"!!!":LOCATE3,70:PRINT"!!!":LOCATE20,70:PRINT"!!!":COLOR7,0:LOCATE17,26:PRINT"**** STANDBY FOR F KEYSET ****":FORI=1 TO3000:NEXT
220 FORI=3 TO20:LOCATEI,7:PRINT SPC(66):NEXT:FORA=18 TO66:COLOR7,0:LOCATE6,A:PRINT CHR$(205):NEXT:LOCATE6,67:PRINT CHR$(187):FORB=7 TO15:LOCATEB,67:PRINT CHR$(186):NEXT:LOCATE16,67:PRINT CHR$(188):FORC=66 TO18 STEP-1:LOCATE16,C
230 PRINT CHR$(205):NEXT:LOCATE 16,17:PRINT CHR$(200):FOR D=15 TO 7 STEP-1:LOCATE D,17:PRINT CHR$(186):NEXT:LOCATE 6,17:PRINT CHR$(201):COLOR 7,0:COLOR 7,0:LOCATE 8,37:PRINT"Developed by:":LOCATE 10,35:PRINT"G  I  N  A  C  O":COLOR 7,0:LOCATE 12,32
240 COLOR 7,0:PRINT"10708 Santa Fe Drive.":COLOR 7,0:LOCATE 13,30:COLOR 7,0:PRINT"SUN CITY,  ARIZONA  85351":COLOR 7,0:LOCATE 15,35:COLOR 7,0:PRINT"(602)  977-5511":COLOR 7,0:FOR I=1 TO 3000:NEXT:FOR I=3 TO 20:LOCATE I,7:PRINT SPC(66):NEXT
250 REM *** HEADER ***
260 LOCATE5,30:COLOR7,0:PRINT"BLUEBERRY PIE A La MODE":COLOR7,0:LOCATE8,27:COLOR7,0:PRINT"GENERAL STARTUP DEMONSTRATION":COLOR7,0:LOCATE11,19:COLOR7,0:PRINT"MAKE SURE THIS DISK IS IN DRIVE A: TO USE MENU ":COLOR7,0:LOCATE12,19:COLOR7,0
270 REMPRINT"════ ════ ════ ════ ══ ══ ════  ═  ══ ═══ ════ ":COLOR 7,0
280 LOCATE15,21:COLOR7,0:PRINT"DO YOU WISH TO REVIEW THE F-KEY FUNCTIONS?":COLOR7,0:LOCATE18,20:PRINT SPC(40):LOCATE18,36:COLOR7,0:PRINT;CHR$(34)"Y"CHR$(34)" OR "CHR$(34)"N"CHR$(34):COLOR7,0:GOSUB110:IF(AKEY$="y"ORAKEY$="Y")THEN310 ELSE290
290 IF(AKEY$="n"ORAKEY$="N")THEN380 ELSE300
300 LOCATE18,29:PRINT CHR$(34)"Y"CHR$(34)" OR "CHR$(34)"N"CHR$(34)" ONLY, PLEASE":FORI=1 TO1500:NEXT:SOUND1200,5:SOUND800,5:GOTO280
310 REM DESCRIPTION OF CUSTOM STARTUP
320 FOR I=3 TO 20:LOCATE I,7:PRINT SPC(66):NEXT:LOCATE 3,11:COLOR 7,0:PRINT"I: FUNCTION KEYS <10 KEYS AT LEFT SIDE OF KEYBOARD>":COLOR 7,0:LOCATE 5,15:COLOR 7,0:PRINT"<F1> = ";:COLOR 7,0:PRINT"CLEARS THE SCREEN -- DO NOT USE "CHR$(34)"<ENTER>"CHR$(34)
330 COLOR7,0:LOCATE6,15:COLOR7,0:PRINT"<F2> = ";:COLOR7,0:PRINT"RUN RESIDENT BASIC PROGRAM -- DO NOT USE "CHR$(34)"<ENTER>"CHR$(34):COLOR7,0:LOCATE7,15:COLOR7,0:PRINT"<F3> = ";:COLOR7,0:PRINT"CLEAR SCREEN AND LIST RESIDENT PROGRAM .":COLOR7,0
340 LOCATE8,15:COLOR7,0:PRINT"<F4> = ";:COLOR7,0:PRINT"SET UP FORMAT TO LOAD PROGRAM FROM DRIVE A: ":COLOR7,0:LOCATE10,15:COLOR7,0:PRINT"<F5> = ";:COLOR7,0:PRINT"SET UP FORMAT TO LOAD PROGRAM FROM DRIVE B: ":COLOR7,0:LOCATE11,15:COLOR7,0
350 PRINT"<F6> = ";:COLOR7,0:PRINT"CLEAR SCREEN AND LIST DESIGNATED LINES ":COLOR7,0:LOCATE13,15:COLOR7,0:PRINT"<F7> = ";:COLOR7,0:PRINT"LIST FILES ON DRIVE A:":LOCATE14,15:COLOR7,0:PRINT"<F8> = ";:COLOR7,0:PRINT"LIST FILES ON DRIVE B:
360 COLOR7,0:LOCATE16,15:COLOR7,0:PRINT"<F9> = ";:COLOR7,0:PRINT"FORMAT COMMAND TO SAVE A FILE ON DRIVE A:":COLOR7,0:LOCATE18,15:COLOR7,0:PRINT"<F10> = ";:COLOR7,0:PRINT"SET UP A "CHR$(34)" LIST . FORMAT"CHR$(34)" TO PAGE THRU A LISTING.
370 COLOR7,0:LOCATE20,23:COLOR7,0:PRINT"  PRESS ANY LETTER-KEY TO CONTINUE  ";:COLOR7,0:SOUND1000,5:GOSUB110:GOTO380
380 CLS:LOCATE10,24:COLOR7,0:SOUND1200,2:SOUND800,2:PRINT"CALLING UP BLUEBERRY A LA MODE MENU":FORI=1 TO2000:NEXT:COLOR7,0:REM PRINTER LINE 6
390 REM **********************   KEY SET ROUTINE  ***************************
400 FOR I=1 TO 10:KEY I,"":NEXT:KEY 1,"CLS"+CHR$(13):KEY 2,"RUN"+CHR$(13):KEY 3,"CLS:LIST" + CHR$(13):KEY 4,"LOAD"+CHR$(34)+"A"+CHR$(58):KEY 5,"LOAD"+CHR$(34)+"B"+CHR$(58):KEY 6,"CLS:LIST ":KEY 7,"FILES"+CHR$(13)
410 KEY 8,"FILES"+CHR$(34)+"B"+CHR$(58)+"*.*"+CHR$(34)+CHR$(13):KEY 9,"SAVE"+CHR$(34)+"A"+CHR$(58):KEY 10,"LIST . -":KEY ON:ON ERROR GOTO 450
420 GOTO440
440 KEY OFF:LOAD"A:BLUEMENU.BAS",R
445 ON ERROR GOTO 450
450 FORI=3 TO20:LOCATEI,10:PRINT SPC(66):NEXT:CLS:PRINT STRING$(80,219):COLOR7,0:FORA=1 TO22:LOCATEA,1:PRINT"█":LOCATEA,80:PRINT"█":NEXT:LOCATE23,1:PRINT STRING$(80,219);:LOCATE5,30:COLOR7,0:PRINT"N   O   T   I   C   E ":COLOR7,0
460 LOCATE6,30:COLOR7,0:PRINT"=   =   =   =   =   =":COLOR7,0:LOCATE10,11:COLOR7,0:PRINT"THE BLUEBERRY A LA MODE MENU IS NOT ON THE DISK IN DRIVE A:":COLOR7,0:KEYON:LOCATE15,21:COLOR7,0:SOUND1200,5:SOUND800,5
470 PRINT"PLEASE MOUNT PROPER DISK AND HIT RETURN ":LOCATE 17,39:PRINT"x";:LINE INPUT A$:COLOR 7,0:RESUME 440
480 END
65000 REM ************************  SAVE ROUTINE  *****************************
65100 SAVE"B:STARTUP.BAS

TASKLIST.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************************************************************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                  DAILY PHONE CALL AND "DO-LIST" FORM                    ║
20 '║                                                                         ║
22 '║    The form generated by this program can be used to record daily or    ║
24 '║ other period phone calls and projects.  This type of form has been a    ║
26 '║ legal and acceptable evidential exhibit to the IRS and the courts if it ║
28 '║ can be shown that keeping track of these events on a regular, orderly   ║
30 '║ basis is a habit.  The form can be modified easily to increase or de-   ║
31 '║ crease the number of phone calls and/or projects by making an appropr-  ║
32 '║ iate change in the number of loops printed. The loop size entries are   ║
33 '║ in lines  230 and 330. By deleting lines 190 thru 280, the phone call   ║
34 '║ portion can be eliminated completely. Set print head on first line be-  ║
35 '║ low the perforation and make certain printer is ON LINE. Press <F2>.    ║
36 '║                   (c) G I N A C O    1983              Ver 5.1/160/320  ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
80 REM ===== INITIALIZE PRINTER CODES =====
90 GOSUB 5000
100 ON ERROR GOTO 6000
110 REM ===== PUT IN FORM HEADING =====
120 LPRINT CLEANUP$;
130 WIDTH "LPT1:",96
140 LPRINT DARK$;
150 LPRINT STRING$(4,10);
160 LPRINT EXPAND$; TAB( 17);START.ULINE$"DO  LIST  FORM"END.ULINE$
170 LPRINT STRING$(2,10);
180 LPRINT TAB( 3);EXPAND$"DATE:"START.ULINE$"_        _"END.ULINE$"          DAY"START.ULINE$"_        _"END.ULINE$
190 LPRINT
200 LPRINT EXPAND$; TAB( 16);START.ULINE$"PHONE CALLS";END.ULINE$
210 LPRINT
220 LPRINT TAB( 3);EXPAND$"   "START.ULINE$"NAME"END.ULINE$"        "START.ULINE$"NUMBER"END.ULINE$"       "START.ULINE$"RESULTS"END.ULINE$
230 LPRINT
240 FOR I! = 1 TO 4
250   LPRINT TAB( 2);START.ULINE$"<_                _>"END.ULINE$"     "START.ULINE$"(     )-               _"END.ULINE$"    "START.ULINE$"                       "END.ULINE$
260   LPRINT
270 NEXT
280 LPRINT
290 LPRINT
300 LPRINT EXPAND$; TAB( 14);START.ULINE$"P R O J E C T S"END.ULINE$
310 LPRINT
320 LPRINT EXPAND$; TAB( 5);START.ULINE$"IDENTIFICATION"END.ULINE$"          "START.ULINE$"COMPLETED"END.ULINE$
330 LPRINT
340 FOR I! = 1 TO 11
350   LPRINT TAB( 2);START.ULINE$"<_                                           _>"END.ULINE$"    "START.ULINE$"<_                     _>"END.ULINE$
360   LPRINT
370   LPRINT
380 NEXT
390 LPRINT
400 LPRINT EXPAND$; TAB( 2)"COMMENTS: "START.ULINE$"<_                       _>"
410 LOCATE 10,30:PRINT"THE FORM IS PRINTING"
420 LPRINT CHR$(12):END
5000 '========== PRINTER CONTROL SUBROUTINE ==========
5030 SMALL$ = CHR$(15)
5060  UNSMALL$ = CHR$(18)
5090   EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5120    CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5150     EXPAND$ = CHR$(14)
5180      EXPAND.END$ = CHR$(20)
5210       DARK$ = CHR$(27) + CHR$(69)
5240        ITALIC$ = CHR$(27) + CHR$(52)
5270         ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5300 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5330  END.ITALIC$ = CHR$(27) + CHR$(53)
5360   START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5390    END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5420     PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5450      END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5480 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5510  END.DSTRIKE$ = CHR$(27) + CHR$(72)
5540   TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5570    END.TINY$ = CHR$(27) + CHR$(84)
5600     ESC$ = CHR$(27)
5630      CLEANUP$ = CHR$(27) + CHR$(64)
5660       RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150  BEEP
6180   BEEP
6210    LOCATE 25,1
6240     PRINT SPC( 79)
6270      LOCATE 25,20
6300       PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY OFF
6390  RESUME
6420   END
65000 REM ==========  SAVE ROUTINE  ==========
65100 SAVE "B:TASKLIST.BAS"

TESTWRIT.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '******************* EDUCATOR'S TOOLBOX SPECIAL ****************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║         TEACHER'S / EDUCATOR'S TESTWRITER & GRADE SHEET PROGRAM         ║
20 '║                                                                         ║
22 '║     This program was written and developed over a period of several     ║
24 '║ years by Bill Alton, 4201 W Carol Avenue. Phoenix, AZ  85021.  It is    ║
26 '║ a superbly crafted and implemented program with application far be-     ║
28 '║ ond test writing and grading. The program is expanded on the 360K disc. ║
30 '║ Big Blueberry Pie purchasers may examine the programming techniques in- ║
31 '║ volved.  Please call up the TESTWRIT.DOC program with a "type" command  ║
32 '║ in DOS.  Load the SAMPLE.TWD program when running this program for an   ║
33 '║ example of the TESTWRITERS capability. Bill Alton will welcome letters  ║
34 '║ with comments and applications of this program from educators or other  ║
35 '║ users. The program has been modified to work on Drive A. To use the     ║
36 '║ program for production, change Drive A references in Lines 1840, 2410,  ║
37 '║ and 3200 to Drive B. DO NOT OVERWRITE THE DRIVE A DISK. USE WRITE TAB!  ║
38 '║ NOTE:!  If you distribute this program, please leave Bill Alton's name  ║
39 '║ in the lead-in REMARKS as shown.                                        ║
40 '║     An expanded version is on the 320K disk as TEST2WRT.BAS             ║
41 '║                       (c) G I N A C O -- 1983       Ver 5.3/320         ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 COLOR 7,0
110 '***    T E S T W R I T E R    ***
120 '***      BILL ALTON        ***
130 '***    VERSION 1.0  05/15/83    ***
140 '*** FOR EPSON FX-80 PRINTER ***
160 CLEAR 1000:DIM Q$(100),Q1$(100),Q2$(100),A$(100,4),B$(100,4):UU$="##.":CLS:GOSUB 3230:LOCATE 12,26:PRINT"*** TESTWRITER ***":FOR X=1 TO 500:NEXT X:PG=2:GOTO 2280
270 ' *** WRITE TEST ***
280 CLS:LOCATE 8,15:LINE INPUT"SUBJECT ";TT$:IF TT$=""THEN TT$="U. S. HISTORY":CLS
320 CLS:LOCATE10,1:PRINT"INPUT A REFERENCE CODE (EG. CHAPTER 12 SECTON 1 --> ";:COLOR1:PRINT"C12S1";:COLOR7:PRINT" ) ";:LINEINPUT;S$:N=100:M=1
420 FORA=MTON
430 CLS:LOCATE8,15:PRINT"(TYPE 'END' IF LAST QUESTION)":PRINT"***  TYPE OUT QUESTION # ";A;"  ***":PRINT STRING$(80,196):LOCATE11,10:COLOR0,7:PRINT SPACE$(62):COLOR7,0:LOCATE11,10:LINEINPUTQ$(A):IFQ$(A)="END"THENN=A-1:GOTO2280
550 LOCATE12,10:COLOR0,7:PRINT SPACE$(62):COLOR7,0:LOCATE12,10:LINEINPUTQ1$(A):IFQ1$(A)=""THENQ1$(A)="XX
620 IFQ$(A)="X"THENA=(A-1):Q$(A)="  ":CLS:GOTO430
630 IFQ1$(A)="XX"THENQ2$(A)="XX"ELSELOCATE13,10:COLOR0,7:PRINT SPACE$(62):COLOR7,0:LOCATE13,10:LINEINPUTQ2$(A)
640 IFQ2$(A)=""THENQ2$(A)="XX
650 IFQ1$(A)="X"THENPRINT"RETYPING LAST QUESTION ";A:Q1$(A)="  ":CLS:GOTO430
660 IFQ2$(A)="X"THENQ2$(A)="  ":GOTO430
670 FORB=1 TO4
680 CLS:PRINT"QUESTION #";A:PRINT STRING$(80,223):PRINTQ$(A):IFQ1$(A)<>"XX"THENPRINTQ1$(A)
730 IFQ2$(A)<>"XX"THENPRINTQ2$(A)
740 PRINT STRING$(80,177):PRINT"ANSWER # ";B;:IFB=1 THENCOLOR17:PRINT"   *** ENTER CORRECT ANSWER *** ":COLOR7,0
770 PRINT:PRINT"TYPE 'X' TO REDO ANSWERS":LOCATE14,15:COLOR0,7:PRINT SPACE$(12):COLOR7,0:LOCATE14,15:LINEINPUTA$(A,B):IFA$(A,B)="X"THENB=1:CLS:GOTO680
870 IF B=1 THEN A$(A,1)="*"+A$(A,1)
880 CLS:NEXTB,A:GOTO2280
910 ' *** START OF PRINT ROUTINE ***
920 CLS:X$="":INPUT"HIT ENTER TO PRINT -- 'R' TO RETURN TO MENU";X$:IFX$="R"ORX$="r"THEN2280
960 PRINT:PRINT:PRINT:INPUT"DO YOU WANT TO RANDOMIZE THE ANSWERS ";X$:IFLEFT$(X$,1)="Y"ORLEFT$(X$,1)="y"THENV=1 ELSEV=0
1010 PRINT:INPUT"INPUT 'CODE' SYMBOL TO SEPERATE TEST VERSIONS (EG. #,*,@)";KK$:CLS:REM *** START PRINTING TO PRINTER ***
1050 PRINT"PRINTING":LPRINT DATE$;TAB(57)"Name ";STRING$(16,95):LPRINT S$;KK$;:LPRINT TAB(57)"Date/Rm _________ (   )":LPRINT STRING$(79,61):Y=40-(LEN(TT$)/2):LPRINT TAB(Y)TT$:LPRINT STRING$(79,CHR$(42))
1130 LPRINT SU$;"INSTRUCTIONS:";EU$;SI$;" Choose the best answer and fill in the letter of the answer in":LPRINT TAB(15)"the blank to the left of the question.";EI$:LPRINT" ":LC=8:FOR A=1 TO N:CLS:IF Q$(A)=""THEN 1360
1200 PRINT"WORKING ON QUESTION ";A;TAB(65)"LINECOUNT = ";LC:LPRINT STRING$(5,95);:LPRINT TAB(7)USING UU$;A;:LPRINT TAB(11)Q$(A):LC=LC+1:IF Q1$(A)<>"XX"THEN LPRINT TAB(11)Q1$(A):LC=LC+1
1260 IFQ2$(A)<>"XX"THENLPRINTTAB(11)Q2$(A):LC=LC+1
1270 IFV=1 THENGOSUB2510
1280 CLS:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(9);"A) ";RIGHT$(A$(A,1),(LEN(A$(A,1))-1));ELSELPRINTTAB(9)"A) ";A$(A,1);
1300 IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(45);"B) ";RIGHT$(A$(A,2),(LEN(A$(A,2))-1))ELSELPRINTTAB(45)"B) ";A$(A,2)
1310 IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(9);"C) ";RIGHT$(A$(A,3),(LEN(A$(A,3))-1));ELSELPRINTTAB(9)"C) ";A$(A,3);
1320 IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(45);"D) ";RIGHT$(A$(A,4),(LEN(A$(A,4))-1))ELSELPRINTTAB(45)"D) ";A$(A,4)
1330 LPRINT" ":LC=LC+4:IFLC>62 THENGOSUB3100
1360 NEXTA:LPRINTCHR$(12):CLS:PG=2:PRINT"DO YOU WANT AN ANSWER KEY ":X$=INPUT$(1):IFLEFT$(X$,1)="N"ORLEFT$(X$,1)="n"THEN2280
1430 CLS:PRINT CHR$(23):PRINT"PRINTING ANSWER KEY":LPRINTDATE$;TAB(45)SEC$"* T E A C H E R'S  C O P Y *";EEC$:LPRINTS$;:IFV=1 THENLPRINTKK$;
1490 LPRINTTAB(50)SEX$;"---> K E Y <---";EEX$:LPRINTSTRING$(79,"*"):Y=40-(LEN(TT$)/2):LPRINTTAB(Y)TT$:LPRINTSTRING$(79,"*"):LPRINT" ":LPRINT" ":LPRINT" ":LC=10:FORA=1 TON:IFQ$(A)=""THEN2280
1600 PRINT"WORKING ON QUESTION ";A:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(3);"A <--";:GOTO1660
1620 IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(3);"B <--";:GOTO1660
1630 IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(3);"C <--";:GOTO1660
1640 IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(3);"D <--";:GOTO1660
1650 LPRINTTAB(3)"- <--";
1660 LPRINTA;". ";:LPRINTQ$(A):LC=LC+1:IFQ1$(A)<>"XX"THENLPRINTTAB(15)Q1$(A):LC=LC+1
1700 IFQ2$(A)<>"XX"THENLPRINTTAB(15)Q2$(A):LC=LC+1
1710 LPRINTTAB(9)"A) ";A$(A,1);TAB(45)"B) ";A$(A,2):LPRINTTAB(9)"C) ";A$(A,3);TAB(45)"D) ";A$(A,4):LPRINT" ":LC=LC+4:IFLC>60 THENGOSUB3100
1760 NEXTA:LPRINT" ":LPRINTTAB(40)"EACH QUESTION IS WORTH ";100/N;" POINTS":LPRINTCHR$(12):GOTO2280
1810 ' *** INPUT SAVED TEST ***
1820 CLS:ONERRORGOTO3400
1840 FILES"A:*.TWD":LINEINPUT"INPUT FILE NAME  (NO .TWD)";DF$:IFDF$=""THEN2280
1870 DF$=DF$+".TWD":OPEN"I",1, DF$:INPUT#1,N:LINEINPUT#1,TT$:LINEINPUT#1,S$:LOCATE1,10:PRINTTT$,S$:FORA=1 TON:INPUT#1,Q$(A),Q1$(A),Q2$(A),A$(A,1),A$(A,2),A$(A,3),A$(A,4):LOCATE24,5:PRINTQ$(A):NEXTA:CLOSE
2000 INPUT"DO YOU WANT TO ADD ON TO THIS TEST ";X$:IFLEFT$(X$,1)<>"Y"THEN920
2020 M=N:M=M+1:CLS:PRINT"GET READY TO ADD TO TEST":FORX=1 TO300:NEXTX:N=100:GOTO420
2100 ' *** SAVE PROGRAM ***
2110 CLS:LINEINPUT"OUTPUT FILE NAME # ";DF$:DF$=DF$+".TWD":OPEN"O",1, DF$:PRINT#1,N:PRINT#1,TT$:PRINT#1,S$:FORA=1 TON
2190 PRINT#1,CHR$(34);Q$(A);CHR$(34);CHR$(34);Q1$(A);CHR$(34);CHR$(34);Q2$(A);CHR$(34);CHR$(34);A$(A,1);CHR$(34);CHR$(34);A$(A,2);CHR$(34);CHR$(34);A$(A,3);CHR$(34);CHR$(34);A$(A,4)CHR$(34):PRINTTT$,Q$(A):NEXTA:CLOSE:CLS:PRINT"THE TEST HAS BEEN SAVED
2250 FORX=1 TO300:NEXTX:REM *** MENU ***
2280 CLS
2290 PRINT TAB(60)N" QUESTIONS READY
2300 PRINT STRING$(80,205):PRINT:PRINT TAB(23);:COLOR0,7:PRINT" M A K E  A  S E L E C T I O N ":COLOR7,0:PRINT:PRINT:PRINT TAB(25)"1  -  WRITE TEST":PRINT TAB(25)"2  -  INPUT SAVED TEST":PRINT TAB(25)"3  -  SAVE PROGRAM
2410 PRINT TAB(25)"4  -  PRINT TEST":PRINT TAB(25)"5  -  RECALL TEST QUESTION":PRINT TAB(25)"6  -  READ DIRECTORY ON DISK A
2440 W$=INKEY$:IFW$=""GOTO2440
2460 W=VAL(W$):IFW<1 ORW>6 THEN2440
2480 ONWGOTO280,1820,2110,920,2780,3200
2490 '*** RANDOMIZE ANSWERS ROUTINE ***
2500 X=VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2))
2510 RANDOMIZEX
2520 X=INT(RND*(5)):IFX=0 THEN2520
2540 N(1)=X
2550 X=INT(RND*(5)):IFX=0 THEN2550
2570 N(2)=X:IFN(2)=N(1)THEN2550
2590 X=INT(RND*(5)):IFX=0 THEN2590
2610 N(3)=X:IFN(3)=N(2)ORN(3)=N(1)THEN2590
2630 X=INT(RND*(5)):IFX=0 THEN2630
2650 N(4)=X:IFN(4)=N(3)ORN(4)=N(2)ORN(4)=N(1)THEN2630
2670 PRINTN(1),N(2),N(3),N(4):B$(A,N(1))=A$(A,1):B$(A,N(2))=A$(A,2):B$(A,N(3))=A$(A,3):B$(A,N(4))=A$(A,4):A$(A,1)=B$(A,1):A$(A,2)=B$(A,2):A$(A,3)=B$(A,3):A$(A,4)=B$(A,4):RETURN
2770 ' *** RECALL TEST QUESTION ***
2780 PRINT"INPUT QUESTION # ...
2790 INPUT ;V
2810 LOCATE 5,30:PRINT"QUESTION #";V:PRINT STRING$(80,177):CLS:PRINT Q$(V):PRINT Q1$(V):PRINT Q2$(V):PRINT STRING$(80,205):PRINT TAB(15)A$(V,1);TAB(40)A$(V,2):PRINT TAB(15)A$(V,3);TAB(40)A$(V,4):PRINT"NEW QUESTION # ";V:PRINT:PRINT
2950 INPUT"--> ";QQ$(V):IFQQ$(V)=""THEN2300
2970 Q$(V)=QQ$(V):INPUTQ1$(V):IFQ1$(V)=""THENQ1$(V)="XX
3000 IFQ1$(V)="XX"THENQ2$(V)="XX"ELSEINPUTQ2$(V)
3010 IFQ2$(V)=""THENQ2$(V)="XX
3020 FORB=1 TO4:CLS:PRINT"ANSWER #  ";B:PRINT STRING$(12,140):INPUTA$(V,B):IFA$(V,B)="X"THENB=1:CLS:GOTO3020
3080 NEXTB:GOTO2300
3100 LPRINTCHR$(12):LPRINTSTRING$(79,"="):LPRINTTT$;TAB(70)"PAGE ";PG:LPRINTSTRING$(79,"*"):LPRINT:LPRINT:PG=PG+1:LC=8:RETURN
3190 ' *** READ DIR FOR DISK A ***
3200 FILES"A:*.*":GOTO 2290
3220 REM **** PRINTER SUBROUTINES ***
3230 SC$=CHR$(15):EC$=CHR$(18):SEC$=CHR$(14)+CHR$(15):EEC$=CHR$(18)+CHR$(20):SE$=CHR$(14):EE$=CHR$(20):SLG$=CHR$(27)+CHR$(32):SI$=CHR$(27)+CHR$(52):EI$=CHR$(27)+CHR$(53):SU$=CHR$(27)+CHR$(45)+CHR$(1):EU$=CHR$(27)+CHR$(45)+CHR$(0)
3340 SEX$=CHR$(27)+CHR$(87)+CHR$(1):EEX$=CHR$(27)+CHR$(87)+CHR$(0):SD$=CHR$(27)+CHR$(71):ED$=CHR$(27)+CHR$(72):RETURN
3390 ' *** ERROR RECOVERY FROM NULL FILES ***
3400 LOCATE12,30:COLOR26:PRINT"NO TESTWRITER FILES ON DISK A":FORX=1 TO1400:NEXTX:COLOR7:GOTO2280
65000 '*********************** SAVE ROUTINE **********************************
65100 SAVE"B:TESTWRIT.BAS"

TESTWRIT.DOC

This is a program designed for teachers and others who need to make
up multiple choice tests and answer keys.  The tests can be saved and
later individual questions can be changed or added.

This is designed to be run on an Epson FX-80 but the printer routines
can be changed to operated with almost any printer.  The remark state-
ments have been left in so that modification can be made easier.

Feel free to use, copy, and change the program as your needs dictate.  I
ask only that you do not remove my name from the beginning of the listing.

I suggest that you start by running the program and loading the SAMPLE
data file (an actual test I use with my classes).  Follow the prompts and
print out a sample test and answer sheet.  The 'code' on the second line
in the upper left-hand part of the page is used for keeping track of the
information covered on your test and also for being able to tell which
version of the test you are using.  A test can be run as many times
as desired, using the random option, to make identical tests with only
the answers (and Keys) mixed up for the benfit of those students who sit
next to each other and like to "borrow" answers.

The answer key is an overlay type that should make it very easy to do the
grading yourself.  I hope that you enjoy the program.  Bill Alton 4/16/83


TIMESHOW.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '*****************  ELAPSED TIME DISPLAY ROUTINE  **************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                ELAPSED TIME DISPLAY SUBROUTINE FOR MERGE                ║
20 '║                                                                         ║
22 '║    Frequently, we wish to know how long we have been working on a par-  ║
24 '║ ticular operation in a program (Data entry, etc). This is calculated    ║
26 '║ and displayed with the following subroutine. You can "GOTO 10000" at    ║
28 '║ any functional break (enter data , etc) in your program and the total   ║
30 '║ elapsed time since program start will display in line 25. Make certain  ║
31 '║ you put the BB$=TIME$ (line 130) in the beginning of your program so    ║
32 '║ that the start time is recorded.  You may decrease or eliminate the     ║
33 '║ delay loop in line 10090 as desired.  This program may be used without  ║
34 '║ license or attribution (c) G I N A C O    -- 1983  Ver 5.2/160/320      ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 KEY OFF:COLOR 7,0
130 BB$=TIME$
140 GOSUB 10000
145 LOCATE 15,20: PRINT"PRESS ANY KEY TO SEE AGAIN == PLUS INCREASED TIME"
150 A$ = INKEY$: IF A$ = "" THEN 150 ELSE 160
160 LOCATE 15,1:PRINT SPC(70):GOTO 140
10000 REM ********* ELAPSED TIME PRINTOUT SUBROUTINE *****************
10010 N$=TIME$
10020 DEF FNH(H$)=VAL(LEFT$(H$,2))
10030 DEF FNM(M$)=VAL(MID$(M$,4,2))
10040 DEF FNS(S$)=VAL(RIGHT$(S$,2))
10050 TMH=(FNH(N$))-FNH(BB$):TMM=(FNM(N$)-FNM(BB$)):TMS=(FNS(N$)-FNS(BB$))
10060 KEY ON:KEY OFF: LOCATE 25,3:PRINT "START TIME ";BB$;
10070 LOCATE 25,30:PRINT"END TIME ";N$;
10080 LOCATE 25,55:PRINT "ELAPSED TIME ";TMH;":";ABS(TMM);":";ABS(TMS);
10090 FOR I= 1 TO 5000:NEXT
10100 LOCATE 25,50:PRINT SPC(30);
10110 LOCATE 25,52:PRINT TMH;":";ABS(TMM);":";ABS(TMS);:COLOR 3,0:PRINT " (AT LAST CHECK)";:COLOR 7,0
10120 RETURN
10130 REM **** REMOVE LINES 140-150 TO INSTALL IN YOUR PROGRAM ***************
65000 REM ****************** SAVE ROUTINE ************************************
65100 SAVE"B:TIMESHOW.BAS"

WEIGHTFM.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************************************************************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                  DAILY WEIGHT RECORD "MOTIVATION" FORM                  ║
20 '║                                                                         ║
22 '║    The form generated by this program can be used to maintain daily or  ║
24 '║ other periodic health records.  The form is designed primarily for a    ║
26 '║ weight record; however, the word "WEIGHT" can be replaced easily by any ║
28 '║ other word or dimension for which a daily or periodic record might be   ║
30 '║ appropriate.  The form can be modified easily to increase or decrease   ║
31 '║ the number of lines by making an appropriate change in the number of    ║
32 '║ loops printed.  The loop size entry 27 and is currently set at 24 to    ║
33 '║ make the form the right length with its present format and content.     ║
34 '║ To run the form as designed, simply set print head at the first line    ║
35 '║ below the perforation and ascertain the printer is ON LINE. Press <F2>. ║
36 '║                   (c) G I N A C O    1983              Ver 5.1/160/320  ║
38 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
80 REM ===== INITIALIZE PRINTER CODES =====
90 GOSUB 5000
100 ON ERROR GOTO 6000
110 REM ===== PUT IN FORM HEADING =====
120 LPRINT CLEANUP$;
130 WIDTH "LPT1:",96
140 LPRINT DARK$;
150 LPRINT STRING$(4,10);
160 LPRINT EXPAND$;STRING$(39,42)
170 LPRINT
180 LPRINT EXPAND$; TAB( 2);"D A I L Y    W E I G H T    C H A R T"
190 LPRINT
200 LPRINT EXPAND$;STRING$(39,42)
210 LPRINT
220 LPRINT TAB( 3);EXPAND.SMALL$"START WEIGHT:"START.ULINE$"_         _";END.ULINE$"_           _";"DESIRED WEIGHT:"START.ULINE$"_         _";END.ULINE$
230 LPRINT CLEANUP$;
240 LPRINT DARK$
250 LPRINT EXPAND$;STRING$(39,"=")
260 LPRINT ONEWAY$;
270 FOR I = 1 TO 22
280 LPRINT EXPAND.SMALL$;"DATE: "START.ULINE$"_      _"END.ULINE$;"   ";"WEIGHT: "START.ULINE$"_     _"END.ULINE$;" || ";"DATE: "START.ULINE$"_     _"END.ULINE$;"   ";"WEIGHT: "START.ULINE$"_     _"END.ULINE$
290 LPRINT EXPAND$;TAB(34);"||"
300 NEXT
310 LPRINT
320 LPRINT EXPAND$;TAB(15)"MONTH: "START.ULINE$"_        _"END.ULINE$;"        ";"YEAR: "START.ULINE$"_        _"END.ULINE$
330 LOCATE 10,30:PRINT"THE FORM IS PRINTING"
340 LPRINT CHR$(12):END
5000 '========== PRINTER CONTROL SUBROUTINE ==========
5030 SMALL$ = CHR$(15)
5060  UNSMALL$ = CHR$(18)
5090   EXPAND.SMALL$ = CHR$(14) + CHR$(15)
5120    CANX.EXP.COMP$ = CHR$(18) + CHR$(20)
5150     EXPAND$ = CHR$(14)
5180      EXPAND.END$ = CHR$(20)
5210       DARK$ = CHR$(27) + CHR$(69)
5240        ITALIC$ = CHR$(27) + CHR$(52)
5270         ITALIC.EXP.CON$ = CHR$(14) + CHR$(15) + CHR$(27) + CHR$(52)
5300 ITALIC.EXP$ = CHR$(27) + CHR$(52) + CHR$(14)
5330  END.ITALIC$ = CHR$(27) + CHR$(53)
5360   START.ULINE$ = CHR$(27) + CHR$(45) + CHR$(1)
5390    END.ULINE$ = CHR$(27) + CHR$(45) + CHR$(0)
5420     PERM.EXPAN$ = CHR$(27) + CHR$(87) + CHR$(1)
5450      END.PERMEXP$ = CHR$(27) + CHR$(87) + CHR$(0)
5480 START.DSTRIKE$ = CHR$(27) + CHR$(71)
5510  END.DSTRIKE$ = CHR$(27) + CHR$(72)
5540   TINYLINE$ = CHR$(27) + CHR$(83) + CHR$(0)
5570    END.TINY$ = CHR$(27) + CHR$(84)
5600     ESC$ = CHR$(27)
5630      ONEWAY$ = CHR$(27) + CHR$(85) + CHR$(1)
5660       END.ONEWAY$ = CHR$(27) +CHR$(85) + CHR$(0)
5680        CLEANUP$ = CHR$(27) + CHR$(64)
5690         RETURN
6000 REM ********* PRINTER ERROR ROUTINE ***************
6030 IF ERR = 24 THEN 6120 ELSE 6060
6060 IF ERR = 25 THEN 6120 ELSE 6090
6090 ON ERROR GOTO 0
6120 KEY OFF
6150  BEEP
6180   BEEP
6210    LOCATE 25,1
6240     PRINT SPC( 79)
6270      LOCATE 25,20
6300       PRINT "CHECK PRINTER - PRESS ANY KEY TO CONTINUE"
6330 IF INKEY$ = "" THEN 6330
6360 KEY OFF
6390  RESUME
6420   END
65000 REM ==========  SAVE ROUTINE  ==========
65100 SAVE "B:WEIGHTFM.BAS"

YESORNO.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***********************   YES/NO <Y/N> SUBROUTINE   ***********************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║            YES/NO SUBROUTINE USING INKEY$ & QUALIFIERS                  ║
20 '║                                                                         ║
22 '║     This program will assign a value of Q=1 or Q=2 to the response      ║
24 '║ (Y or y) or (N or n). The value is returned to the main program and     ║
26 '║ may be used as the condition for a subsequent command or function.      ║
27 '║                                                                         ║
28 '║     Lines 5020 and 5030 demonstrate the optional method of testing the  ║
30 '║ response by "CHR$(xx)" or by the literal string (Y,y,N,or n). Either    ║
32 '║ conditional qualifier may be used effectively. Take your choice. Use    ║
34 '║ GOSUB from your main program and assign program tasks using the value   ║
38 '║ of "Q" returned.         (c) G I N A C O              Ver 5.2/160/320   ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS
100 CLS
110 SCREEN 0,0,0
120 WIDTH 80
130 CLEAR
140 COLOR 7,0
150 KEY OFF
160 '************   GOSUB FROM MAIN PROGRAM TO Y/N SUBROUTINE  ****************
170 GOSUB 5000
180 CLS
190 IF Q! = 1 THEN LOCATE 10,30 : PRINT "RESPONSE WAS " CHR$(34)"Y or y" CHR$(34) ;: LOCATE 12,30 : PRINT "PRESS <F2> TO RUN AGAIN";: END
200 CLS
210 IF Q! = 2 THEN LOCATE 10,30 : PRINT "RESPONSE WAS " CHR$(34)"N or n" CHR$(34);: LOCATE 12,30 : PRINT "PRESS <F2> TO RUN AGAIN";: END
5000 REM  **************   YES/NO ROUTINE FOR MERGE  ********************
5010 COLOR 7,0
5020 KEY OFF
5030 LOCATE 25,32
5040 PRINT " YES OR NO <Y/N>  ";A$
5050 COLOR 7,0
5060
5070 A$ = INKEY$
5080 IF A$ = "" THEN 5070
5090 REM  ********** QUALIFYING RESPONSE AS CHR$ OR STRING **************
5100 IF ( LEFT$(A$,1) = CHR$(89) OR LEFT$(A$,1) = CHR$(121)) THEN Q! = 1 : GOTO 5250
5110 IF ( LEFT$(A$,1) = "n" OR LEFT$(A$,1) = "N") THEN Q! = 2 : GOTO 5250
5120 SOUND 500,4
5130 REM  *********** CLEARING LINE 25 AND REVERSING FIELD **************
5140 LOCATE 25,15
5150 PRINT SPC( 79)
5160 LOCATE 25,35
5170 COLOR 0,7
5180 PRINT SPC( 12);
5190 LOCATE 25,36
5200 PRINT " TRY AGAIN. ";
5210 COLOR 7,0
5220 FOR I! = 1 TO 1000
5230 NEXT
5240 GOTO 5000
5250 RETURN
5260 END
65000 REM   ******************* SAVE ROUTINE ****************************
65100 SAVE "B:YESORNO.BAS"

YOURMENU.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '***************************************************************************
16 '╔═════════════════════════════════════════════════════════════════════════╗
18 '║                  BASIC DISK MENU PROGRAM (BLANK)                        ║
20 '║                                                                         ║
22 '║    This is the basic Blueberry.bas Menu program without any data state- ║
24 '║ ments or program names inserted. You may insert the program names at    ║
26 '║ the appropriate places in the the DATA and RUN routines. To keep all    ║
28 '║ the blank numbers from coming up, you may REM at the appropriate place  ║
30 '║ in lines 250 to 395.  If you do not mind the full 64 numbers coming up  ║
32 '║ on the MENU, you can make a single loop statement at line 250 and de-   ║
34 '║ lete lines 260 through 395. The multi-statement method provides some    ║
35 '║ flexibility when adding single programs.  For non-basic program MENU    ║
36 '║ entries, you can make an appropriate statement at lines 2700 and those  ║
37 '║ following. Direct the program to one of these lines with a RUN state-   ║
38 '║ ment at the appropriate line between 2000 and 2690. (See BLUEMENU.BAS.) ║
39 '║     This program may be used, in whole or in part, without license or   ║
40 '║ attribution.                                                            ║
42 '║               (c) G I N A C O -- 1983                      Ver 5.2/320  ║
50 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
100 CLS:SCREEN 0,0,0: WIDTH 80: COLOR 7,0: KEY OFF: CLEAR
120 DIM AA$(100),N(100):DEF SEG:POKE 91,24:POKE 92,25
200 KEY OFF: LOCATE 25,25: PRINT"PLEASE STAND BY -- READING DATA";:GOSUB 1000:LOCATE 25,1:PRINT SPC(77);
210 CLS:LOCATE 2,1:PRINT CHR$(201);STRING$(78,205);CHR$(187);
220 FOR I = 3 TO 22:LOCATE I,1:PRINT CHR$(186);:LOCATE I,80:PRINT CHR$(186);:NEXT
230 LOCATE 23,1:PRINT CHR$(200);STRING$(78,205);CHR$(188);
240 LOCATE 3,20:PRINT "Put  Y O U R M E N U  Name In This Space";
250 I=5:LOCATE I,4:PRINT AA$(1);CHR$(16);N(1):LOCATE I,23:PRINT AA$(2);CHR$(16);N(2):LOCATE I,42:PRINT AA$(3);CHR$(16);N(3):LOCATE I,61:PRINT AA$(4);CHR$(16);N(4)
260 I=6:LOCATE I,4:PRINT AA$(5);CHR$(16);N(5):LOCATE I,23:PRINT AA$(6);CHR$(16);N(6):LOCATE I,42:PRINT AA$(7);CHR$(16);N(7):LOCATE I,61:PRINT AA$(8);CHR$(16);N(8)
270 I=7:LOCATE I,4:PRINT AA$(9);CHR$(16);N(9):LOCATE I,23:PRINT AA$(10);CHR$(16);N(10):LOCATE I,42:PRINT AA$(11);CHR$(16);N(11):LOCATE I,61:PRINT AA$(12);CHR$(16);N(12)
280 I=8:LOCATE I,4:PRINT AA$(13);CHR$(16);N(13):LOCATE I,23:PRINT AA$(14);CHR$(16);N(14):LOCATE I,42:PRINT AA$(15);CHR$(16);N(15):LOCATE I,61:PRINT AA$(16);CHR$(16);N(16)
290 I=9:LOCATE I,4:PRINT AA$(17);CHR$(16);N(17):LOCATE I,23:PRINT AA$(18);CHR$(16);N(18):LOCATE I,42:PRINT AA$(19);CHR$(16);N(19):LOCATE I,61:PRINT AA$(20);CHR$(16);N(20)
300 I=10:LOCATE I,4:PRINT AA$(21);CHR$(16);N(21):LOCATE I,23:PRINT AA$(22);CHR$(16);N(22):LOCATE I,42:PRINT AA$(23);CHR$(16);N(23):LOCATE I,61:PRINT AA$(24);CHR$(16);N(24)
310 I=11:LOCATE I,4:PRINT AA$(25);CHR$(16);N(25):LOCATE I,23:PRINT AA$(16);CHR$(16);N(26):LOCATE I,42:PRINT AA$(27);CHR$(16);N(27):LOCATE I,61:PRINT AA$(28);CHR$(16);N(28)
320 I=12:LOCATE I,4:PRINT AA$(29);CHR$(16);N(29):LOCATE I,23:PRINT AA$(30);CHR$(16);N(30):LOCATE I,42:PRINT AA$(31);CHR$(16);N(31):LOCATE I,61:PRINT AA$(32);CHR$(16);N(32)
330 I=13:LOCATE I,4:PRINT AA$(33);CHR$(16);N(33):LOCATE I,23:PRINT AA$(34);CHR$(16);N(34):LOCATE I,42:PRINT AA$(35);CHR$(16);N(35):LOCATE I,61:PRINT AA$(36);CHR$(16);N(36)
340 I=14:LOCATE I,4:PRINT AA$(37);CHR$(16);N(37):LOCATE I,23:PRINT AA$(38);CHR$(16);N(38):LOCATE I,42:PRINT AA$(39);CHR$(16);N(39):LOCATE I,61:PRINT AA$(40);CHR$(16);N(40)
350 I=15:LOCATE I,4:PRINT AA$(41);CHR$(16);N(41):LOCATE I,23:PRINT AA$(42);CHR$(16);N(42):LOCATE I,42:PRINT AA$(43);CHR$(16);N(43):LOCATE I,61:PRINT AA$(44);CHR$(16);N(44)
360 I=16:LOCATE I,4:PRINT AA$(45);CHR$(16);N(45):LOCATE I,23:PRINT AA$(46);CHR$(16);N(46):LOCATE I,42:PRINT AA$(47);CHR$(16);N(47):LOCATE I,61:PRINT AA$(48);CHR$(16);N(48)
370 I=17:LOCATE I,4:PRINT AA$(49);CHR$(16);N(49):LOCATE I,23:PRINT AA$(50);CHR$(16);N(50):LOCATE I,42:PRINT AA$(51);CHR$(16);N(51):LOCATE I,61:PRINT AA$(52);CHR$(16);N(52)
380 I=18:LOCATE I,4:PRINT AA$(53);CHR$(16);N(53):LOCATE I,23:PRINT AA$(54);CHR$(16);N(54):LOCATE I,42:PRINT AA$(55);CHR$(16);N(55): LOCATE I,61:PRINT AA$(56);CHR$(16);N(56)
390 I=19:LOCATE I,4:PRINT AA$(57);CHR$(16);N(57):LOCATE I,23:PRINT AA$(58);CHR$(16);N(58):LOCATE I,42:PRINT AA$(59);CHR$(16);N(59):LOCATE I,61:PRINT AA$(60);CHR$(16);N(60);
395 REM:I=20:LOCATE I,4:PRINT AA$(61);CHR$(16);N(61):LOCATE I,23:PRINT AA$(62);CHR$(16);N(62):LOCATE I,42:PRINT AA$(63);CHR$(16);N(63):LOCATE I,61:PRINT AA$(64);CHR$(16);N(64);
400 LOCATE 20,5:PRINT SPC(50);:LOCATE 21,5:PRINT SPC(50);:LOCATE 21,31:PRINT"SELECT A PROGRAM ";:LINE INPUT;PROGRAM$
410 N = VAL(PROGRAM$)
415 IF (N < 1 OR N > 60 ) THEN 400
420 IF N<45 THEN 430
425 IF N>46 THEN GOTO 440
430 ON N GOTO 2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420,2430,2440
440 ON N-45 GOTO 2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2560,2570,2580,2590,2600,2610,2620,2630,2640
450 ON ERROR GOTO 15000
1000 REM *****************  DATA INPUT FOR MENU *****************************
1010 P = 60
1020 FOR J=1 TO P
1030 READ AA$(J),N(J)
1040 DATA "--------.---",1:     REM LN  2000
1050 DATA "--------.---",2:     REM     2010
1060 DATA "--------.---",3:     REM     2020
1070 DATA "--------.---",4:     REM     2030
1080 DATA "--------.---",5:     REM     2040
1090 DATA "--------.---",6:     REM LN  2050
1100 DATA "--------.---",7:     REM     2060
1110 DATA "--------.---",8:     REM     2070
1120 DATA "--------.---",9:     REM     2080
1130 DATA "--------.---",10:    REM     2090
1140 DATA "--------.---",11:    REM LN  2100
1150 DATA "--------.---",12:    REM     2110
1160 DATA "--------.---",13:    REM     2120
1170 DATA "--------.---",14:    REM     2130
1180 DATA "--------.---",15:    REM     2140
1190 DATA "--------.---",16:    REM LN  2150
1200 DATA "--------.---",17:    REM     2160
1210 DATA "--------.---",18:    REM     2170
1220 DATA "--------.---",19:    REM     2180
1230 DATA "--------.---",20:    REM     2190
1240 DATA "--------.---",21:    REM LN  2200
1250 DATA "--------.---",22:    REM     2210
1260 DATA "--------.---",23:    REM     2220
1270 DATA "--------.---",24:    REM     2230
1280 DATA "--------.---",25:    REM     2240
1290 DATA "--------.---",26:    REM LN  2250
1300 DATA "--------.---",27:    REM     2260
1310 DATA "--------.---",28:    REM     2270
1320 DATA "--------.---",29:    REM     2280
1330 DATA "--------.---",30:    REM     2290
1340 DATA "--------.---",31:    REM     2300
1350 DATA "--------.---",32:    REM     2310
1360 DATA "--------.---",33:    REM     2320
1370 DATA "--------.---",34:    REM     2330
1380 DATA "--------.---",35:    REM     2340
1390 DATA "--------.---",36:    REM LN  2350
1400 DATA "--------.---",37:    REM     2360
1410 DATA "--------.---",38:    REM     2370
1420 DATA "--------.---",39:    REM     2380
1430 DATA "--------.---",40:    REM     2390
1440 DATA "--------.---",41:    REM LN  2400
1450 DATA "--------.---",42:    REM     2410
1460 DATA "--------.---",43:    REM     2420
1470 DATA "--------.---",44:    REM     2430
1480 DATA "--------.---",45:    REM     2440
1490 DATA "--------.---",46:    REM LN  2450
1500 DATA "--------.---",47:    REM     2460
1510 DATA "--------.---",48:    REM     2470
1520 DATA "--------.---",49:    REM     2480
1530 DATA "--------.---",50:    REM     2490
1540 DATA "--------.---",51:    REM LN  2500
1550 DATA "--------.---",52:    REM     2510
1560 DATA "--------.---",53:    REM     2520
1570 DATA "--------.---",54:    REM     2530
1580 DATA "--------.---",55:    REM     2540
1590 DATA "--------.---",56:    REM LN  2550
1600 DATA "--------.---",57:    REM     2560
1610 DATA "--------.---",58:    REM     2570
1620 DATA "--------.---",59:    REM     2580
1630 DATA "--------.---",60:    REM     2590
1640 DATA "--------.---",61:    REM LN  2600
1650 DATA "--------.---",62:    REM     2610
1660 DATA "--------.---",63:    REM     2620
1670 DATA "--------.---",64:    REM     2630
1700 NEXT J
1710 RETURN
1900 '****************** PROGRAM SELECTION RUN STATEMENTS *********************
2000 RUN"--------.---"
2010 RUN"--------.---"
2020 RUN"--------.---"
2030 RUN"--------.---"
2040 RUN"--------.---"
2050 RUN"--------.---"
2060 RUN"--------.---"
2070 RUN"--------.---"
2080 RUN"--------.---"
2090 RUN"--------.---"
2100 RUN"--------.---"
2110 RUN"--------.---"
2120 RUN"--------.---"
2130 RUN"--------.---"
2140 RUN"--------.---"
2150 RUN"--------.---"
2160 RUN"--------.---"
2170 RUN"--------.---"
2180 RUN"--------.---"
2190 RUN"--------.---"
2200 RUN"--------.---"
2210 RUN"--------.---"
2220 RUN"--------.---"
2230 RUN"--------.---"
2240 RUN"--------.---"
2250 RUN"--------.---"
2260 RUN"--------.---"
2270 RUN"--------.---"
2280 RUN"--------.---"
2290 RUN"--------.---"
2300 RUN"--------.---"
2310 RUN"--------.---"
2320 RUN"--------.---"
2330 RUN"--------.---"
2340 RUN"--------.---"
2350 RUN"--------.---"
2360 RUN"--------.---"
2370 RUN"--------.---"
2380 RUN"--------.---"
2390 RUN"--------.---"
2400 RUN"--------.---"
2410 RUN"--------.---"
2420 RUN"--------.---"
2430 RUN"--------.---"
2440 RUN"--------.---"
2450 RUN"--------.---"
2460 RUN"--------.---"
2470 RUN"--------.---"
2480 RUN"--------.---"
2490 RUN"--------.---"
2500 RUN"--------.---"
2510 RUN"--------.---"
2520 RUN"--------.---"
2530 RUN"--------.---"
2540 RUN"--------.---"
2550 RUN"--------.---"
2560 RUN"--------.---"
2570 RUN"--------.---"
2580 RUN"--------.---"
2590 RUN"--------.---"
2600 RUN"--------.---"
2610 RUN"--------.---"
2620 RUN"--------.---"
2630 RUN"--------.---"
2640 RUN"--------.---"
2690 END
2700 REM **************** CUT OFF FOR NON-BASIC SELECTION *******************
2710 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- DATA FILE TO BE LOADED BY XXXXXXXX.XXX.";:FOR I = 1 TO 3000:NEXT:GOTO 2560
2720 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- DATA FILE TO BE LOADED BY XXXXXXX2.BAS.";:FOR I = 1 TO 3000:NEXT:GOTO 2560
2730 LOCATE 25,10:PRINT SPC(65);:LOCATE 25,10:PRINT"NOT A BASIC PROGRAM -- LOAD FROM DOS WITH 'TYPE' COMMAND.";:FOR I = 1 TO 3000:NEXT:GOTO 2560
2740 LOCATE 25,10:PRINT SPC(65);:GOTO 400
2750 END
15000 ON ERROR GOTO 0
64900 END
65000 '************************* SAVE ROUTINE ********************************
65100 SAVE"B:YOURMENU.BAS"

ZIPCLEAR.BAS

5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
10 '******************** ZIPCLEAR OF FORMATTED SCREEN ************************
15 '╔═════════════════════════════════════════════════════════════════════════╗
17 '║                IMMEDIATE CLEAR OF DESIGNATED SCREEN AREA                ║
19 '║                                                                         ║
21 '║    This simple program is a modification of a program contained in the  ║
23 '║ Letters to the Editor, PC Magazine. It may not work consistently in a   ║
25 '║ memory size of 64K or less. It will work in 128K. The program will      ║
27 '║ demonstate a "slow screen wash" and then ask for coordinate inputs to   ║
29 '║ clear the screen rapidly.  You can extract the routine and use in your  ║
31 '║ programs. It is very  effective.  Instead of putting in the corners of  ║
33 '║ the clear area with an prompt input statement, you can pre-program the  ║
35 '║ area you want cleared before you go to the ZIPCLEAR subroutine.         ║
37 '║ See LABELPRO.BAS and BLUEBERY.BAS for examples of routine in use.       ║
39 '║    This program may be used without license or attribution.             ║
41 '║                     (c) G I N A C O   - 1983           Ver 5.2/320/160  ║
43 '╚═════════════════════════════════════════════════════════════════════════╝
55 '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
60 CLS
100 CLS
110 CLEAR
120 SCREEN 0,0,0
130 WIDTH 80
140 LOCATE 1,4
150 PRINT "╔"
160 LOCATE 1,5
170 PRINT STRING$(72,"═")
180 LOCATE 1,77
190 PRINT "╗";
200 FOR I! = 2 TO 22
210   LOCATE I!,4
220   PRINT "║"
230   LOCATE I!,77
240   PRINT "║";
250 NEXT
260 LOCATE 23,4
270 PRINT "╚"
280 LOCATE 23,5
290 PRINT STRING$(72,"═")
300 LOCATE 23,77
310 PRINT "╝";
320 KEY OFF
330 GOSUB 550
340 GOSUB 610
350 LOCATE 12,25
360 PRINT "THAT WAS AN EXAMPLE OF "; CHR$(34);"SLOW"; CHR$(34);" CLEAR"
370 FOR I! = 1 TO 3000
380 NEXT
390 LOCATE 12,12
400 PRINT SPC( 60)
410 LOCATE 6,20
420 PRINT "INDICATE CLEAR SPACE FOUR CORNER COORDINATES?"
430 LOCATE 7,23
440 PRINT "(ENTERED IN ROW,COLUMN FORMAT AS SHOWN)"
450 LOCATE 9,28
460 INPUT "UPPER LEFT ROW <i.e.; 6> ",UP.LEFT.ROW%
470 LOCATE 11,28
480 INPUT "UPPER LEFT COLUMN <i.e.; 10> ",UP.LEFT.COL%
490 LOCATE 13,28
500 INPUT "LOWER LEFT ROW <i.e.; 18> ",LOW.LEFT.ROW%
510 LOCATE 15,28
520 INPUT "RIGHT COLUMN <i.e.; 70> ",RIGHT.COL%
530 GOSUB 550
540 GOSUB 670
550 REM ***************** FILL SCREEN ROUTINE *******************************
560 FOR I! = 2 TO 22
570   LOCATE I!,6
580   PRINT STRING$(71,3);
590 NEXT
600 RETURN
610 REM ***************** SLOW CLEAR ROUTINE *******************************
620 FOR I! = 5 TO 19
630   LOCATE I!,11
640   PRINT SPC( 61);
650 NEXT
660 RETURN
670 REM ************* ZIPCLEAR INPUT PARAMETERS ***************************
680 DIM A%(22)
690 FOR I! = 0 TO 21
700   READ A%(I!)
710 NEXT
720 DATA&h8B55
730 DATA&hB8EC
740 DATA&H0600
750 DATA&H07B7
760 DATA&H768B
770 DATA&H8A0C
780 DATA&H8B2C
790 DATA&HA76
800 DATA&HC8A
810 DATA&H768B
820 DATA&H8A08
830 DATA&H8B34
840 DATA&H676
850 DATA&H148A
860 DATA&HCDFE
870 DATA&HC9FE
880 DATA&HCEFE
890 DATA&HCAFE
900 DATA&H10CD
910 DATA&HCA5D
920 DATA&H8
930 DATA&H0
940 R1% = UP.LEFT.ROW%
950 C1% = UP.LEFT.COL%
960 R2% = LOW.LEFT.ROW%
970 C2% = RIGHT.COL%
980 GOSUB 1010
990 GOTO 1060
1000 END
1010 REM **********  THE ACTUAL ZIPCLEAR SUBROUTINE IS HERE ******************
1020 DEF SEG
1030 SUBRT% = VARPTR(A%(0))
1040 CALL SUBRT%(R1%,C1%,R2%,C2%)
1050 RETURN
1060 LOCATE 12,25
1070 PRINT "THAT WAS AN EXAMPLE OF "; CHR$(34);"ZIPCLEAR"; CHR$(34)
1080 LOCATE 16,30
1090 PRINT "PRESS ANY KEY TO RERUN"
1100 A$ = INKEY$
1110 IF A$ = "" THEN 1080  ELSE 1120
1120 GOTO 100
1130 END
65000 ' ************************  SAVE ROUTINE  *******************************
65100 SAVE "B:ZIPCLEAR.BAS"

Directory of PC-SIG Library Disk #0066

 Volume in drive A has no label
 Directory of A:\

ALPHAHEX BAS      6144   2-15-87  12:02p
BLUEBERY BAS     26789   2-15-87  12:02p
BLUEBERY DOC      1612   2-15-87  12:02p
BLUEBRY2 DOC      1386   2-15-87  12:02p
BLUEMENU BAS      8483   2-15-87  12:02p
BOXINBOX BAS      3328   2-15-87  12:02p
BOXINPUT BAS     13824   2-15-87  12:02p
BUSCHECK BAS      3345   2-15-87  12:02p
CALULATE BAS      3840   2-15-87  12:02p
CHEKFORM BAS      2176   2-15-87  12:02p
CHR$PRNT BAS      2688   2-15-87  12:02p
CIRCLE   GRA      1920   2-15-87  12:02p
COLORSEE CLR      1792   2-15-87  12:02p
COMPOUND BAS      3200   2-15-87  12:02p
D&CFORM  BAS      2048   2-15-87  12:02p
DISKNAME           128   2-15-87  12:02p
EASYRITE BAS     30592   2-15-87  12:02p
EASYWORD BAS      4992   2-15-87  12:02p
EPSONSET BAS      4736   2-15-87  12:02p
ESCKEY   BAS      1792   2-15-87  12:02p
FILEDATE BAS      2944   2-15-87  12:02p
GASFORM  BAS      2944   2-15-87  12:02p
GENLEGER BAS     32337   2-15-87  12:02p
GLEGER   DAT      2489   2-15-87  12:02p
GO       BAT       456   2-15-87  12:02p
HEADCLN  BAS      2372   2-15-87  12:02p
HEXPRINT BAS      4060   2-15-87  12:02p
HEXSAY   BAS      2304   2-15-87  12:02p
IBMLABEL BAS      7424   2-15-87  12:02p
KEYSET   BAS      2048   2-15-87  12:02p
LABLFILE BAS     23069   2-15-87  12:02p
LISTSKIP 10P      2688   2-15-87  12:02p
LISTSKIP 17P      2606   2-15-87  12:02p
LPT12SET BAS      2688   2-15-87  12:02p
MENUPRNT BAS      4992   2-15-87  12:02p
NICELIST BAS      2816   2-15-87  12:02p
PC-COLOR BAS      7424   2-15-87  12:02p
PCADD    GRA      4480   2-15-87  12:02p
PEEKPRNT BAS      3814   2-15-87  12:02p
PRNTCALL BAS      3072   2-15-87  12:02p
PROGHEAD BAS      2099   2-15-87  12:02p
QUICKBOX CLR      3712   2-15-87  12:02p
RANDSEED BAS      1792   2-15-87  12:02p
README             894   2-15-87  12:02p
SAMPLE   TWD      3187   2-15-87  12:02p
SAVINGS  BAS      3200   2-15-87  12:02p
SHOWBOX  BAS      1792   2-15-87  12:02p
SIXBOXES BAS      4096   2-15-87  12:02p
STARTUP  BAS      6237   2-15-87  12:02p
STARTUP  CLR      6332   2-15-87  12:02p
TASKLIST BAS      4224   2-15-87  12:02p
TESTWRIT BAS      8064   2-15-87  12:02p
TESTWRIT DOC      1347   2-15-87  12:02p
TIMESHOW BAS      2304   2-15-87  12:02p
WEIGHTFM BAS      3968   2-15-87  12:02p
YESORNO  BAS      2560   2-15-87  12:02p
YOURMENU BAS      9344   2-15-87  12:02p
ZIPCLEAR BAS      3584   2-15-87  12:02p
FILES66  TXT      3061   1-16-87   2:20p
       59 file(s)     313639 bytes
                       21504 bytes free