10 PRINT CHR$(27)+CHR$(46)+CHR$(48)
20 GOTO 3000
30 REM * ASCII CONVERSIONS, By Ronleigh Dale, Box 70252, Reno Nevada 89570
40 REM * 702/825-6060, v1.1, 4/15/86
50 PRINT CHR$(26)
70 FOR Z=1 TO 1000:NEXT Z
80 PRINT"ASCII CHARACTER/DECIMAL CONVERSION 
90 PRINT
100 PRINT"SELECT:    (C) = CHARACTER TO DECIMAL"
110 PRINT"           (D) = DECIMAL TO CHARACTER"
120 PRINT"           (X) = E X I T
130 PRINT
140 C$=INKEY$
150 IF C$="D" THEN 190
160 IF C$="C" THEN 240
170 IF C$="X" THEN 300
180 GOTO 140
190 INPUT"DECIMAL VALUE    ";A
200 PRINT
210 PRINT"ASCII CHARACTER:   "CHR$(A)
220 GOSUB 320
230 PRINT CHR$(26):GOTO 70
240 INPUT"ASCII CHARACTER  ";CH$
250 PRINT
260 PRINT"DECIMAL VALUE:    "ASC(CH$)
270 GOSUB 320
280 PRINT CHR$(26):GOTO 70
300 PRINT CHR$(26)
310 GOTO 3000
320 LINE INPUT Z$
330 RETURN
340 REM * EASTER DATE by: Ronleigh Dale, v1.2, 7/25/86
350 PRINT CHR$(26):FOR Z=1 TO 500:NEXT Z
360 PRINT"EASTER SUNDAY YEAR/DATE CONVERSION":PRINT:PRINT:PRINT
370 PRINT"THIS PROGRAM WHEN GIVEN A YEAR, WILL FIND"
380 PRINT"THE DATE FOR EASTER SUNDAY
390 PRINT:PRINT"INPUT THE YEAR";
400 INPUT J:FOR Z=1 TO 1000:NEXT Z:PRINT CHR$(26)
410 IF J>99 THEN 430
420 J=J+1900
430 PRINT
440 LET A=J-INT(J/19)*19
450 LET B=J-INT(J/4)*4
460 LET C=J-INT(J/7)*7
470 LET T=19*A+24
480 LET D=T-INT(T/30)*30
490 LET T=2*B+4*C+6*D+5
500 LET E=T-INT(T/7)*7
510 LET F=D+E-9
520 IF F<0 THEN 550
530 IF F>0 THEN 580
540 GOTO 440
550 LET F=F+31
560 PRINT"EASTER FALLS ON MARCH"F""J
570 GOTO 670
580 IF F=26 THEN 630
590 IF F<>25 THEN 610
600 IF D=28 THEN 650
610 PRINT"EASTER FALLS ON APRIL"F""J
620 GOTO 670
630 PRINT"EASTER FALLS ON APRIL 19 "J
640 GOTO 670
650 PRINT"EASTER FALLS ON APRIL 18 "J
660 GOTO 670
670 PRINT:PRINT
680 INPUT "CHECK ANOTHER YEAR";A$:PRINT CHR$(26):FOR Z=1 TO 500:NEXT Z
690 IF LEFT$(A$,1)<>"Y" THEN 710
700 PRINT CHR$(26):GOTO 340
710 GOTO 3000
720 PRINT CHR$(27)+CHR$(46)+CHR$(50)
730 REM * MAILING LABEL DISPLAY/PRINT
740 REM * Revised for TeleVideo TPC-I/Osborne Executive by Ronleigh Dale,
750 REM *  Box 70252, Reno Nevada 89570, 702/825-6060, v1.3, 7/25/86
760 REM CHR$(26) *****  CLEARS SCREEN *****
770 REM
780 PRINT CHR$(26):FOR Z=1 TO 500:NEXT Z
790 PRINT"MAILING LABEL DISPLAY/PRINT
800 PRINT:PRINT:PRINT
810 LINE INPUT"ENTER DATA FOR LINE #1   ";A$
820 IF LEN(A$)>30 THEN PRINT"LINE TOO LONG":GOTO 810
830 LINE INPUT"ENTER DATA FOR LINE #2   ";B$
840 IF LEN(B$)>30 THEN PRINT"LINE TOO LONG":GOTO 830
850 LINE INPUT"ENTER DATA FOR LINE #3   ";C$
860 IF LEN(C$)>30 THEN PRINT "LINE TOO LONG":GOTO 850
870 LINE INPUT"ENTER DATA FOR LINE #4   ";D$
880 IF LEN(D$)>30 THEN PRINT "LINE TOO LONG":GOTO 870
890 PRINT:PRINT
900 INPUT "(P)RINTED-(V)IDEO OUTPUT";Z$
910 IF Z$="P" OR Z$="V" THEN GOTO 920 ELSE GOTO 900
920 INPUT "CENTERED LINES (Y/N)    ";X$
930 IF X$="Y" OR X$="N" THEN GOTO 940 ELSE GOTO 920
940 IF X$="Y" AND Z$="P" THEN GOTO 980:REM CENTERED AND PRINTED
950 IF X$="N" AND Z$="P" THEN GOTO 1090:REM FLUSH LEFT AND PRINTED
960 IF X$="N" AND Z$="V" THEN GOTO 1200:REM FLUSH LEFT AND VIDEO
970 IF X$="Y" AND Z$="V" THEN GOTO 1320: REM CENTERED AND VIDEO
980 REM   ***** CENTERED PRINTED LABELS *****
990 INPUT "HOW MANY LABELS         ";N
1000 FOR Q=1 TO N
1010 LPRINT SPC((26-LEN(A$))/2);A$
1020 LPRINT SPC((26-LEN(B$))/2);B$
1030 LPRINT SPC((26-LEN(C$))/2);C$
1040 LPRINT SPC((26-LEN(D$))/2);D$
1050 LPRINT:LPRINT
1060 NEXT Q
1070 GOTO 1190
1080 REM
1090 REM   ***** FLUSH LEFT PRINTED LABELS *****
1100 REM
1110 INPUT "HOW MANY LABELS         ";N
1120 FOR Q=1 TO N
1130 LPRINT;A$
1140 LPRINT;B$
1150 LPRINT;C$
1160 LPRINT;D$
1170 LPRINT:LPRINT
1180 NEXT Q
1190 GOTO 1430
1200 REM   ***** FLUSH LEFT VIDEO DISPLAY OF A LABEL *****
1210 PRINT:PRINT
1220 FOR Z=1 TO 1000:NEXT Z
1230 PRINT A$
1240 PRINT B$
1250 PRINT C$
1260 PRINT D$
1270 PRINT:PRINT
1280 INPUT"(P)RINT-(N)EW LABEL     ";F$
1290 IF F$="N" THEN GOTO 780
1300 IF F$="P" THEN GOTO 1090
1310 IF F$<>"N" OR F$<>"P" THEN 1430
1320 REM    ***** SHOW CENTERED LABEL ON VIDEO  *****
1330 PRINT:PRINT
1340 FOR Z=1 TO 1000:NEXT Z
1350 PRINT SPC((26-LEN(A$))/2);A$
1360 PRINT SPC((26-LEN(B$))/2);B$
1370 PRINT SPC((26-LEN(C$))/2);C$
1380 PRINT SPC((26-LEN(D$))/2);D$
1390 PRINT:PRINT
1400 INPUT"(P)RINT-(N)EW LABEL     ";G$
1410 IF G$="P" THEN 990
1420 IF G$="N" THEN 780 
1430 PRINT CHR$(27)+CHR$(46)+CHR$(50):PRINT CHR$(26)
1440 GOTO 3000
1450 REM * METRIC CONVERSIONS, By Ronleigh Dale, v1.1, 4/15/86
1460 PRINT CHR$(26)
1470 FOR Z=1 TO 500:NEXT Z
1480 REM ********** METRIC CONVERSION PROGRAM
1490 REM ********** DISPLAY THE MENU
1500 PRINT "METRIC CONVERSIONS
1510 PRINT:PRINT:PRINT:PRINT
1520 PRINT"MENU
1530 PRINT
1540 PRINT " 1.  MILES TO KILOMETERS
1550 PRINT " 2.  POUNDS TO KILOGRAMS"
1560 PRINT " 3.  GALLONS TO LITERS"
1570 PRINT " 4.  FAHRENHEIT TO CELCIUS"
1580 PRINT " 5.  KILOMETERS TO MILES"
1590 PRINT " 6.  KILOGRAMS TO POUNDS"
1600 PRINT " 7.  LITERS TO GALLONS"
1610 PRINT " 8.  CELCIUS TO FAHRENHEIT"
1620 PRINT " 0.  EXIT
1630 PRINT :PRINT :PRINT 
1640 REM ********** GET THE SELECTION
1650 INPUT "YOUR SELECTION";S
1660 PRINT :PRINT :PRINT 
1670 REM ********** DECIDE WHERE TO BRANCH
1680 IF S=1 THEN 1780
1690 IF S=2 THEN 1860
1700 IF S=3 THEN 1940
1710 IF S=4 THEN 2020
1720 IF S=5 THEN 2100
1730 IF S=6 THEN 2180
1740 IF S=7 THEN 2260
1750 IF S=8 THEN 2340
1760 IF S=0 THEN 2430 
1770 END
1780 REM ********** CONVERT MILES TO KILOMETERS
1790 PRINT:PRINT 
1800 INPUT "DISTANCE IN MILES";M
1810 PRINT :PRINT 
1820 GOSUB 2420
1830 LET K=1.609*M
1840 PRINT M;" MILES IS EQUAL TO ";K;" KILOMETERS
1850 GOTO 1480
1860 REM ********** CONVERT POUNDS TO KILOGRAMS
1870 PRINT:PRINT 
1880 INPUT "WEIGHT IN POUNDS";P
1890 PRINT :PRINT 
1900 GOSUB 2420
1910 LET K=.4536*P
1920 PRINT P;" POUNDS IS EQUAL TO ";K;" KILOGRAMS"
1930 GOTO 1480
1940 REM ********** CONVERT GALLONS TO LITERS
1950 PRINT:PRINT 
1960 INPUT "VOLUME IN GALLONS ";Q
1970 PRINT :PRINT 
1980 GOSUB 2420
1990 LET L=3.7852*Q
2000 PRINT  Q;" GALLONS IS EQUAL TO ";L;" LITERS"
2010 GOTO 1480
2020 REM ********** CONVERT FAHRENHEIT TO CELCIUS
2030 PRINT:PRINT 
2040 INPUT "FAHRENHEIT TEMPERATURE";F
2050 PRINT :PRINT 
2060 GOSUB 2420
2070 LET G=5/9*(F-32)
2080 PRINT F;" DEGREES FAHRENHEIT IS EQUAL TO ";G;" DEGREES CELCIUS"
2090 GOTO 1480
2100 REM ********** CONVERT KILOMETERS TO MILES
2110 PRINT:PRINT 
2120 INPUT "DISTANCE IN KILOMETERS";U
2130 PRINT :PRINT
2140 GOSUB 2420
2150 LET V=.621*U
2160 PRINT U;" KILOMETERS IS EQUAL TO";V;" MILES
2170 GOTO 1480
2180 REM ********** CONVERT KILOGRAMS TO POUNDS
2190 PRINT:PRINT 
2200 INPUT "WEIGHT IN KILOGRAMS";W
2210 PRINT :PRINT 
2220 GOSUB 2420
2230 LET X=2.2046*W
2240 PRINT W;" KILOGRAMS IS EQUAL TO";X;" POUNDS
2250 GOTO 1480
2260 REM ********** CONVERT LITERS TO GALLONS
2270 PRINT:PRINT 
2280 INPUT "VOLUME IN LITERS";Y
2290 PRINT :PRINT 
2300 GOSUB 2420
2310 LET Z=.26417*Y
2320 PRINT Y;" LITERS IS EQUAL TO";Z;" GALLONS"
2330 GOTO 1480
2340 REM ********** CONVERT CELCIUS TO FAHRENHEIT
2350 PRINT:PRINT 
2360 INPUT "CELCIUS TEMPERATURE";G
2370 PRINT :PRINT 
2380 GOSUB 2420
2390 LET F=(G*9/5)+32
2400 PRINT G;" DEGREES CELCIUS IS EQUAL TO ";F;" DEGREES FAHRENHEIT"
2410 GOTO 1480
2420 FOR Z=1 TO 1000:NEXT Z:RETURN
2430 GOTO 3000
2440 REM * ZIPCODE/STATE CONVERSIONS
2450 REM * Subroutine driver added by Jim Woolley,
2460 REM * FOG Disk Librarian, 11/82
2470 REM * Revised for TeleVideo TPC-I/Osborne Executive by Ronleigh Dale,
2480 REM * v/1.1, 7/25/86
2490 DIM ZIPDATA$(54), STATEDATA$(54)
2500 PRINT CHR$(26):PRINT CHR$(27)+CHR$(46)+CHR$(48)
2510 RESTORE
2520 GOSUB 2610
2530 PRINT"ZIPCODE/STATE CONVERSIONS"
2540 PRINT:INPUT"ENTER ZIPCODE  ",ZIP$
2550 PRINT CHR$(26)
2560 GOSUB 2890
2570 FOR Z=1 TO 500:NEXT Z
2580 PRINT"  ZIP = ";ZIP$:PRINT:PRINT"STATE = ";STATE$
2590 GOTO 2970
2600 GOTO 2530
2610 REM * ZIPCODE.BAS	This subroutine returns the STATE 
2620 REM		code when given a ZIP code - based
2630 REM		on the first 3 digits of the zip
2640 :
2650 :
2660 REM * Zip code data
2670 :
2680 DATA	008,	009,	010,	028,	030,	039,

	050,	060,	070,	090,	150,	197,

	200,	206,	220,	247,	270,	290,

	300,	320,	350,	370,	386,	400,

	430,	460,	480,	500,	530,	550,

	570,	580,	590,	600,	630,	660,

	680,	700,	716,	730,	750,	800,

	820,	832,	840,	850
2690 DATA	870,	890,	900,	967,	969,	970,

	980,	995
2700 :
2710 REM * Read in zip code ranges
2720 :
2730 FOR I% = 1 TO 54
2740 READ ZIPDATA$(I%)
2750 NEXT I%
2760 :
2770 REM * State data
2780 :
2790 DATA	PR,	VI,	PR,	MA,	RI,	NH,

	MA,	VT,	CT,	NJ,	NY,	PA,

	DE,	DC,	MD,	VA,	WV,	NC,

	SC,	GA,	FL,	AL,	TN,	MS,

	KY,	OH,	IN,	MI,	IA,	WI,

	MN,	SD,	ND,	MT,	IL,	MO,

	KS,	NE,	LA,	AK,	OK,	TX,

	CO,	WY,	ID,	UT
2800 DATA	AZ,	NM,	NV,	CA,	HI,	GU,

	OR,	WA	
2810 :
2820 REM * Read in state data to array
2830 :
2840 FOR I% = 1 TO 54
2850 READ STATEDATA$(I%)
2860 NEXT I%
2870 RETURN
2880 :
2890 ZIP3$ = LEFT$(ZIP$,3)
2900 FOR I% = 1 TO 54
2910 IF ZIP3$ < ZIPDATA$(I%) GOTO 2940
2920 NEXT I%
2930 STATE$ = "AK" :GOTO 2960
2940 REM * Zip has been found
2950 STATE$ = STATEDATA$(I%)
2960 RETURN
2970 LINE INPUT Z$:INPUT"FIND ANOTHER STATE FROM ZIPCODE";Z$
2980 IF Z$="Y" THEN 2500
2990 GOTO 3000
3000 PRINT CHR$(26):FOR Z=1 TO 1000:NEXT Z:PRINT"USEFUL UTILITIES
3010 PRINT:PRINT:PRINT
3020 PRINT"MENU
3030 PRINT:PRINT
3040 PRINT" 1. ASCII/DECIMAL CHARACTERS CONVERSIONS
3050 PRINT" 2. EASTER SUNDAY YEAR/DATE CONVERSIONS
3060 PRINT" 3. MAILING LABELS DISPLAY/PRINT
3070 PRINT" 4. METRIC CONVERSIONS
3080 PRINT" 5. ZIPCODES/STATES CONVERSIONS
3090 PRINT" 0. EXIT
3100 PRINT:PRINT
3110 INPUT X
3120 IF X=0 THEN 3140
3130 ON X GOTO 30,340,720,1450,2440
3140 PRINT CHR$(27)+CHR$(46)+CHR$(50):PRINT CHR$(26):END
INPUT X
3120 IF X=0 THEN 3140
3130 ON X GOTO 30,340,720,1450,2440
3140 PRINT CHR$(27)+CHR$(46)+CHR$(50):PRINT CHR$(26