Category : Lotus and other Spreadsheets
Archive   : COLOR123.ZIP
Filename : COLORL.BAS
Output of file : COLORL.BAS contained in archive : COLOR123.ZIP
2 '
3 ' Symphony Lotus.Set & 123-IBM color card Driver color enhancer
4 ' The above names are trademarks of the Lotus And IBM companies respectively
5 '
6 ' by Ivor B. Miller
7 ' 231 Otonabee Avenue
8 ' Willowdale, Ontario
9 ' Canada, M2M 2S9
10 '
11 ' ****************************** NOTICE *********************************
12 DATA" If you received this program from another user and find it of
13 DATA" value, a contribution will be appreciated. ($25.00 - Suggested)
14 DATA" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
15 DATA" º Enhancers º It is suggested that companies contribute
16 DATA" º 231 Otonabee Avenue º more for use on more than one machine.
17 DATA" º Willowdale, Ontario º
18 DATA" º Canada, M2M 2S9 º I will leave its value to you
19 DATA" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
20 DATA" "
21 DATA" ** You are encouraged to copy this program as described here. Users
22 DATA" of this program are granted a limited license to make copies of this
23 DATA" program for trial use by others. This limited license includes posting
24 DATA" the program for public access via Bulletin Boards or similar means
25 DATA" but doesn't include distributing this program in connection with any
26 DATA" other product ( Unless it is clear that the purchaser of that product
27 DATA" is receiving this program for trial as described above. ), and doesn't
28 DATA" include distributing the program in modified form. Please co-operate.
29 DATA " "
30 DATA" Copyright (c) 1984, 1985 Ivor B. Miller
31 '**************************************************************************
32 '
33 ' These lines are a note of gratitude to Andrew Fluegelman for the idea of
34 ' this method of distribution and to many sources for ideas on the drivers.
35 ' and to Leslie Satenstein for ideas on BORDERS.COM
36 '
37 '
38 SCREEN 0,1,0: WIDTH 80 : FORE1% = 14: FORE2% =10:FORE3%=15: BACK1% = 1: BACK2% =4 :BACK3% = 5:BORDER1% = 1:BORDER2% = 1:COLOR FORE1%,BACK1%,BORDER1%:CLS:KEY OFF:LOCATE ,,0:
39 '
40 '
41 PRINT TAB(10) STRING$(11,205)" COLORL Version 1.0 (Nov 14,1985) "STRING$(11,205)
42 PRINT TAB(4) CHR$(214)STRING$(69,196)CHR$(183)
43 FOR I=1 TO 8:READ A$:PRINT TAB(4);CHR$(186);A$;SPACE$(69-LEN(A$));CHR$(186):NEXT I
44 PRINT TAB(4) CHR$(211)STRING$(69,196)CHR$(189);
45 FOR I=1 TO 11:READ A$:PRINT TAB(3);A$;SPACE$(76-LEN(A$));:NEXT I:PRINT
46 '
47 '
48 '
49 '
50 '
100 SCREEN 0,1,0: WIDTH 80 : FORE1% = 14: FORE2% =10:FORE3%=15: BACK1% = 1: BACK2% =4 :BACK3% = 5:BORDER1% = 1:COLOR FORE1%,BACK1%,BORDER1%:LOWER0=CSRLIN+1
120 DEFINT I,J
140 DIM FILEPART%(20),INPART%(20),Z$(20),BYTE$(40):FOR I = 1 TO 40 :BYTE$(I) = "":NEXT I
160 DIM COLOUR$(16),D$(30),ALA$(2):NOTFIRST%=0
180 MUST$ = " You must answer Y or N ":GOSUB 2740
200 LOCATE LOWER0,1:INPUT; " Do you wish to see available information or instructions? y/n ";YN$: IF YN$ ="N" OR YN$ = "n" THEN GOTO 260
220 IF(YN$="Y")OR(YN$="y")THEN GOTO 240:ELSE LOCATE LOWER0+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE LOWER0+1,1:PRINT MUST$;:COLOR FORE1%,BACK1%,BORDER1%:GOTO 200
240 CLS:GOSUB 2800
260 POSITIONS = 1:OFFSET =-14: BACKOFF =-21: INSIDE =-5 :BLOCK = 10:CLOSE
280 CLS:CLOSE:GOSUB 1920:PRINT TAB(40)"tm";STRING$(38,32):PRINT TAB(16) STRING$(14,205)" ENHANCERS "STRING$(14,205)" "
300 PRINT " A program to improve the colors available to users of "
320 PRINT " programs from Lotus Development Corporation ":PRINT " Note that this program is not supported by Lotus Development Corporation " :GOSUB 2380:PRINT
340 COLOR FORE3%,BACK3%,BORDER1%:PRINT " Make sure you keep a back-up copy of your drivers or programs !! ";:GOSUB 2380: TOP1 = CSRLIN +2
360 LOCATE 25,1:PRINT " Note - basic sometimes stalls for a minute or so to clean up strings ";:LOCATE TOP1,1:PRINT "Pick a number from the list.":PRINT
380 PRINT " 1 Symphony 1.0 to 1.1 2. Lotus 123 version 1 to 2"
400 PRINT " 3. Look at instructions 4. quit
420 MID1 = CSRLIN + 1
440 GOSUB 2700:LOCATE MID1,1:INPUT " Which do you wish ";NUM$:NUM% = VAL(NUM$): IF NUM$="Q" OR NUM$ = "q" THEN CLS:CLOSE:END:ELSE IF NUM$="L" OR NUM$="l"THEN GOTO 5400
460 IF NUM%<1 OR NUM%>4 THEN LOCATE MID1+4,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE MID1+4,1:PRINT "You must pick a number from 1 to 4";:COLOR FORE1%,BACK1%,BORDER1%:GOTO 360
480 ON NUM% GOTO 520,500,240,600
500 GOSUB 2120:GOSUB 620:GOTO 540
520 GOSUB 2220:GOSUB 620:GOTO 540
540 GOSUB 800:GOSUB 1800:IF NEXTONE%=2 THEN LOCATE LOWER2,1:INPUT "Do you wish to go to the next one ";YN$:IF YN$ ="Y" OR YN$ ="y" THEN GOTO 540:ELSE GOTO 260
560 IF NEXTONE% = 0 THEN GOTO 260
580 IF NEXTONE% = 1 THEN GOTO 540
600 CLOSE:SYSTEM
620 ON ERROR GOTO 720
640 LOCATE MID1+2,1:PRINT STRING$(78,32);:LOCATE MID1+2,1:INPUT " Enter name of your driver, driver set, or driver library. ";D$
660 IF D$="" THEN LOCATE MID1+4,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE MID1+4,1:INPUT; "You just hit Return do you wish to continue? if so Type Y ";YN$:COLOR FORE1%,BACK1%,BORDER1%:IF YN$ ="Y" OR YN$="y" THEN GOTO 620:ELSE GOTO 360
680 F$="":FOR I%=1 TO LEN(D$):A$=MID$(D$,I%,1): IF A$<>" " THEN F$=F$+A$: NEXT I%:' to eliminate blanks
700 NAME F$ AS F$:' test that file exists
720 IF ERR = 58 THEN RESUME 760
740 IF ERR = 53 THEN LOCATE MID1+4,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE MID1+4,1:PRINT " File ";F$;" not found! Try again. ":COLOR FORE1%,BACK1%,BORDER1%:RESUME 640:ELSE RESUME 640
760 ON ERROR GOTO 0
780 ERASE Z$:OPEN "R",1,F$,64:FIELD 1,64 AS Y$:FSIZE=LOF(1):DIM Z$((FSIZE/64)+1):RETURN
800 ITER% = ITER% + 3 :GET 1,(ITER% - 2):Z$(ITER%-2)=Y$:GET 1,(ITER% - 1):Z$(ITER%-1)=Y$
820 'The loop starts here
840 GET 1,ITER%:Z$(ITER%)=Y$:TRIAL$ = Z$(ITER%-2)+Z$(ITER%-1)+Z$(ITER%):IF ITER% >5 THEN Z$(ITER%-5)=""
860 V = INSTR(TRIAL$,FIRST$): IF V = 0 OR V > 128 THEN GOTO 920
880 W = V
900 GOTO 940
920 ITER% = ITER% +1 :LOCATE 23,1:PRINT " We are at location "STR$(ITER% * 64)" out of "STR$(FSIZE)" in the file ":IF NOT EOF(1) THEN GOTO 840:ELSE PRINT " We reached the end of the file and did not find the sequence! I QUIT! ":END
940 WORK$= MID$(TRIAL$,(V+OFFSET),(W-V)-(BACKOFF-2)):L = LEN(WORK$):PARTNO = 1 : IF L>BLOCK THEN PARTS = INT(L/BLOCK)+1:ELSE PARTS = 1:' can simplify w-v etc.
960 '
980 ' here follows the screen display
1000 '
1020 CLS:GOSUB 1960:MID2 = CSRLIN: ' set up display of color choices
1040 LOCATE MID2,1:PRINT " The selected bytes are ------Hex-Chr -- if colors they are ---------------"
1060 IF POSITIONS + (BLOCK-1) > L THEN ENDPOINT = L :ELSE ENDPOINT = POSITIONS + (BLOCK - 1)
1080 FOR I = POSITIONS TO ENDPOINT:M%=ASC(MID$(WORK$,I,1)):I$ = STR$(I):IF LEN(I$)<3 THEN I$ = LEFT$(" ",3-LEN(I$)) + I$
1100 IF LEN(I$)>3 THEN I$ = RIGHT$(I$,3)
1120 LH$=HEX$(M%):IF M%<16 THEN LH$="0"+LH$
1140 COLORL% = VAL("&H"+LEFT$(LH$,1)):COLORR% = VAL("&H"+RIGHT$(LH$,1))
1160 IF M%>32 AND M%<127 THEN LETTER$ = CHR$(M%):ELSE LETTER$ = " "
1180 PRINT "# "I$" "D$(I)" - "LH$" "LETTER$" ";
1200 IF COLORL%>7 THEN COLORREPR% = COLORR%:COLORREPL% = COLORL% - 8 :PREF$ = "Flashing ":ELSE COLORREPR% = COLORR%:COLORREPL% = COLORL% : PREF$ = " " : ' can add a +16 to colorr% in first part to get flash - but it will drive you wild
1220 COLOR COLORREPR%,COLORREPL%,BORDER1%:PRINT " "+LEFT$(COLOUR$(COLORREPL%),9)+ " with "+PREF$+COLOUR$(COLORR%):GOSUB 2380:'set color back to normal
1240 NEXT
1260 IF POSITIONS <> 1 THEN PRINT " "
1280 IF POSITIONS <> 1 THEN :PRINT "Please note that this part is only meaningful if you have an EGA and Driver! ": PRINT "Note: There is only one EGA driver in a set if colors are weird this is not it!"
1300 LOWER2 = CSRLIN +1
1320 IF POSITIONS =1 THEN GOTO 1340 :ELSE IF NOTFIRST%<>1 THEN LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type T
1340 IF NOTFIRST%<>1 THEN LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type G
1360 IF POSITIONS = 1 THEN GOTO 1380 :ELSE LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type T
1380 LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type G
1400 IF YN$ ="A" OR YN$ = "a" THEN :PRINT "we hit 1640":GOTO 1660
1420 IF YN$ ="T" OR YN$="t" OR YN$="G" OR YN$="g" THEN GOTO 2460 :'ELSE GOTO 1760
1440 IF YN$ ="S" OR YN$ = "s" THEN GOTO 1620
1460 IF YN$="0" THEN LOCATE LOWER2+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE LOWER2+1,1:PRINT " The number 0 is not a valid response ";:COLOR FORE1%,BACK1%,BORDER1%:GOTO 1320
1480 YN% = INT(VAL(YN$)): IF (YN% >POSITIONS-1) AND (YN%
1520 GOTO 1700
1540 LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:PRINT "# "STR$(YN%);:INPUT; " What hex$ do you wish (must be 2 characters)";HEXER$:IF LEN(HEXER$)<>2 THEN GOTO 1540:ELSE VALUE=VAL("&H"+HEXER$)
1560 IF VALUE=0 AND HEXER$<>"00" THEN LOCATE LOWER2+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT "I can't recognize your Hex$ try again.";:COLOR FORE1%,BACK1%,BORDER1%:GOTO 1540
1580 MID$(WORK$,YN%) = CHR$(VALUE):BYTE$(YN%) = CHR$(VALUE):GOTO 1040
1600 GOTO 1700
1620 FOR I=1 TO 10:IF BYTE$(I)<>"" THEN MID$(WORK$,I)=BYTE$(I)
1640 NEXT I:GOTO 1040
1660 FOR I=1 TO 10:IF AUTH$(I)<>"" THEN MID$(WORK$,I)=AUTH$(I)
1680 NEXT I:GOTO 1040
1700 LOCATE LOWER2,1:NOTFIRST%=1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Do you wish to write this out to the input file? y/n ";YN$: IF (YN$ ="Y") OR (YN$ = "y") THEN WRITEIT% = 1 :NEXTONE% = 2 :RETURN
1720 IF(YN$="N")OR(YN$="n")THEN GOTO 1740:ELSE LOCATE LOWER2+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE LOWER2+1,1:PRINT MUST$;:COLOR FORE1%,BACK1%,BORDER1%:GOTO 1700
1740 LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "C
1760 IF YN$="M" OR YN$="m" THEN CLS:NEXTONE%=0:WRITEIT% = 0:RETURN
1780 IF YN$="N" OR YN$="n" THEN CLS:NEXTONE%=1:WRITEIT% = 0:RETURN:ELSE LOCATE LOWER2+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE LOWER2+1,1:PRINT "Must answer C,N, or M";:COLOR FORE1%,BACK1%,BORDER1%:GOTO 1740
1800 IF WRITEIT% = 0 THEN RETURN
1820 MID$(TRIAL$,V+OFFSET) = WORK$:LSET Y$ = LEFT$(TRIAL$,64):PUT 1,ITER%-2:LSET Y$ = MID$(TRIAL$,65,64):PUT 1,ITER%-1::LSET Y$ = RIGHT$(TRIAL$,64):PUT 1,ITER%
1840 LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:PRINT "That should be that after the drives do their thing.";:CLS:RETURN
1860 '
1880 ' subroutines follow
1900 '
1920 COLOR FORE2%,BACK2%,BORDER1%:RETURN : ' puts up second color choice
1940 '
1960 PRINT " First of hex Second of hex will give color combination shown ": 'to show colors effect
1980 FOR I = 0 TO 7
2000 I$ = HEX$(I):II$ = HEX$(I+8):I$ = LEFT$(" ",3-LEN(I$)) + I$+" ":II$ = LEFT$(" ",3-LEN(II$)) + II$+" ":PRINT " "+I$+II$+" ";
2020 FOR J = 0 TO 15:J$ = HEX$(J):J$ = LEFT$(" ",3-LEN(J$)) + J$+" ":COLOR J,I:PRINT J$;:NEXT J:COLOR FORE1%,BACK1%:PRINT
2040 NEXT :COLOR FORE1%,BACK1%:PRINT "Regular-^ ^--Flashing text":RETURN
2060 '
2080 ' this sets up the search string and descriptions for 123 & Symphony
2100 '
2120 SEARCH1$ = "8DDD":L=40:SEARCH2$= "8DDD":ITER% = 0:'for lOTUS-123
2140 D$(1)= " Main & Help Body ": D$(2)= " Cursor Norm & Borders ": D$(3)= " Unprotect cell & Help " : D$(4)= " Cursor Unprot. & Help ":D$(5)= " Unknown ": D$(10)= " Wait Sign "
2160 BYTE$(1)=CHR$(&H1E):BYTE$(2)=CHR$(&H7F):BYTE$(3)=CHR$(&H1A):BYTE$(4)=CHR$(&H7A) :BYTE$(10)=CHR$(&HCA):BYTE$(5)=""
2180 AUTH$(1)=CHR$(&H1E):AUTH$(2)=CHR$(&H7F):AUTH$(3)=CHR$(&H1A):AUTH$(4)=CHR$(&H7A) :AUTH$(10)=CHR$(&HCA):AUTH$(5)=""
2200 GOTO 2300
2220 SEARCH1$ = "8DDD":L=40:SEARCH2$= "8DDD":ITER% = 0:' for SYMPHONY
2240 D$(1)= " Main & Help Body ": D$(2)= " Cursor Norm & Status ": D$(3)= " Borders & Unprotect ":D$(4)= " Cursor Unprot. & Help " :D$(5)=" Terminal Use ":D$(10)=" Wait Sign ":BYTE$(5)=CHR$(&H6E):AUTH$(5)=BYTE$(5)
2260 BYTE$(1)=CHR$(&H1E):BYTE$(2)=CHR$(&H7F):BYTE$(3)=CHR$(&H1A):BYTE$(4)=CHR$(&H7A) :BYTE$(10)=CHR$(&HCA)
2280 AUTH$(1)=CHR$(&H1E):AUTH$(2)=CHR$(&H7F):AUTH$(3)=CHR$(&H1A):AUTH$(4)=CHR$(&H7A) :AUTH$(10)=CHR$(&HCA)
2300 D$(17)= "Range X was 0F, 0F good": D$(18)= "Range A was 0E, 0E good": D$(19)= "Range B was 05, 0D good":D$(20)= "Range C was 01, 09 good" :D$(21)="Range D was 04, 0C good":D$(22)="Range E was 06, 0B good":D$(23)= "Range F was 02, 0A good"
2320 WOR$ = SEARCH1$:GOSUB 2420:FIRST$ = WORKIN$:WOR$ = SEARCH2$:GOSUB 2420:SECOND$ = WORKIN$ :RETURN : ' does the conversion to characters
2340 '
2360 '
2380 COLOR FORE1%,BACK1%,BORDER1%:RETURN :' to set & Reset default colors
2400 '
2420 LE=LEN(WOR$)/2:WORKIN$ = "":FOR I = 1 TO LE:HE$=MID$(WOR$,(I*2)-1,2):WORKIN$=WORKIN$+CHR$(VAL("&H"+HE$)): NEXT I: RETURN:' subroutine to convert hex description to Characters for processing
2440 '
2460 IF YN$ = "T" OR YN$ = "t" THEN POSITIONS = 1:GOTO 1040
2480 IF YN$="G" OR YN$="g" THEN POSITIONS = 17 : GOTO 1040
2500 'POSITIONS = ((PARTNO-1)*BLOCK)+1: GOTO 1340
2520 POSITIONS = 17: GOTO 1040
2540 '
2560 ' to write out to file
2580 IF WRITEIT% = 0 THEN RETURN:ELSE :LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT " Please confirm the write to disk y/n";YN$
2600 IF YN$ = "Y" OR YN$="y" THEN TRIAL$ = WORK$:ELSE RETURN
2620 IF LEN(TRIAL$)<>LASTONE THEN PRINT " length of trial$ is wrong the write is cancelled ":RETURN
2640 FOR I = 1 TO LASTONE:MID$(Z$(FILEPART%(I)),INPART%(I))=MID$(TRIAL$,I,1):IF FILEPART%(I)= FILEPART%(I+1) THEN Z$(FILEPART%(I+1))= Z$(FILEPART%(I)): GOTO 2680
2660 LSET Y$ = Z$(FILEPART%(I)):PUT 1,FILEPART%(I)
2680 NEXT I:LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:PRINT "after drives its done":CLOSE:RETURN
2700 ' rest before help sets up the color strings & unknown description strings
2720 FOR I = 1 TO 30:D$(I)= " unknown ":NEXT:RETURN
2740 COLOUR$(0)= "Black ":COLOUR$(1)= "Blue ":COLOUR$(2)="Green ":COLOUR$(3)= "Cyan ":COLOUR$(4)= "Red ":COLOUR$(5)= "Magenta "
2760 COLOUR$(6)= "Brown " :COLOUR$(7)= "White ":COLOUR$(8)="Gray ":COLOUR$(9)= "Light Blue ":COLOUR$(10)= "Light Green "
2780 COLOUR$(11)="Light Cyan ":COLOUR$(12)="Light Red ":COLOUR$(13)="Light Magenta":COLOUR$(14)="Yellow ":COLOUR$(15)= "Bright White ":RETURN
2800 CLS:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT " You have a choice of "
2820 PRINT " 1 - Instructions"
2840 PRINT " 2 - How program works & why"
2860 PRINT " 3 - Change MASTER.LBR or a SET ?"
2880 PRINT " 4 - Information on drivers & thoughts
2900 PRINT " 5 - Proceeding directly to work"
2920 PRINT:PRINT: INPUT "Please pick one of the above and type the number. ";NUM$:NUMVAL% = VAL(NUM$):IF NUMVAL% <1 OR NUMVAL%>5 THEN GOTO 2920
2940 ON NUMVAL% GOTO 2980,3360,3620,3960,5380
2960 END
2980 CLS:PRINT " Instructions are very easy to follow.":PRINT
3000 PRINT "1. Make sure you have a backup copy of the driver or set "
3020 PRINT " See Information on Drivers for help in locating the drivers."
3040 PRINT " Lotus drivers are ordinary files, there is no problem "
3060 PRINT " in making a backup copy of the drivers or MASTER.LBR "
3080 PRINT "2. You may put a copy on the default drive but pathnames are ok."
3100 PRINT "3. You will be asked the name of the file, it will go on "
3120 PRINT " to search for the start of the color controlling portion."
3140 PRINT "4. Once it is found you will be asked if you wish to change any
3160 PRINT "5. If yes just type in the number of the byte shown on the left."
3180 PRINT "6. Then you must choose colors as Background and Foreground. "
3200 PRINT "7. Type in the colors Byte value chosen."
3220 PRINT "8. The rest of the program is fairly self explantory "
3225 PRINT " In a driver set there may be more than one color control
3227 PRINT " area I find it best to change all and be sure.
3240 PRINT "9. Once you have completed your changes and have made sure that
3260 PRINT " you have a backup copy of the original driver, or set"
3280 PRINT " copy changed driver back to your program disk "
3300 PRINT " and then run Lotus-123 or Symphony in usual way"
3320 PRINT:PRINT:INPUT " Press return to go on. ";YN$
3340 GOTO 2800
3360 CLS:PRINT:PRINT:PRINT:PRINT
3380 PRINT " The program works by searching for a byte sequence which
3400 PRINT " occurs in all the drivers, and only in the color control byte
3420 PRINT " area (as far as I can tell). Once this sequence is found it then
3440 PRINT " gives a display to allow changes.
3460 PRINT "
3480 PRINT " The reason for this method rather than choosing a specific
3500 PRINT " location which would be much faster is that drivers move around
3520 PRINT " in the driver SET and in the MASTER.LBR depending on what drivers
3540 PRINT " you are using or have available.
3560 PRINT:PRINT:PRINT:PRINT
3580 PRINT:PRINT:INPUT " Press return to go on. ";YN$
3600 GOTO 2800
3620 CLS:PRINT:PRINT:PRINT:PRINT
3640 PRINT " The MASTER.LBR is the source that the install program uses
3660 PRINT " to create driver sets. It is a very long file being in the case
3680 PRINT " of Symphony 1.1 more than 360k bytes. An average driver set is
3700 PRINT " probably about 40k. Obviously if you run this program it is going
3720 PRINT " to take a long time to change the colors in the MASTER.LBR but
3740 PRINT " there is a reason to consider doing so. Whenever you run the
3760 PRINT " install program it will refresh its memory, as it were, from the
3780 PRINT " MASTER.LBR and throw away your current driver set when it creates
3800 PRINT " a new one. Thus while you save considerable time by changing the
3820 PRINT " color bytes in the driver set the disadvantage is that it will
3840 PRINT " not survive a trip through the install program.":PRINT
3860 PRINT " For most of us it is probably best to just change the set
3880 PRINT " but for those who change equipment and drivers it might be worth
3900 PRINT " the trouble to change the MASTER.LBR. ":PRINT:PRINT
3920 PRINT:PRINT:INPUT " Press return to go on. ";YN$
3940 GOTO 2800
3960 CLS:PRINT:PRINT:PRINT:PRINT:PRINT
3980 PRINT " Symphony 1.1 & 123 version 2 store their video drivers in
4000 PRINT " MASTER Libraries called MASTER.LBR, After installation the "
4020 PRINT " working set of drivers is called LOTUS.SET or 123.SET":PRINT
4040 PRINT " In each driver set you create there will be more than one
4060 PRINT " place where color control bytes are stored. KEEP THIS IN MIND
4080 PRINT " AND RESPOND y to the 'go to next occurrence prompt?'":PRINT
4082 PRINT " There are many color control sections in a SET - presumably
4084 PRINT " for different hardware. I have found it best to change all of
4086 PRINT " them and not worry which is the active one. ":PRINT
4100 PRINT " Lotus 123 versions prior to 2 did not have drivers in sets
4120 PRINT " and each driver is separate. The video driver is called TD.DRV
4140 PRINT "
4160 PRINT:PRINT:PRINT:PRINT:PRINT
4180 INPUT " Hit return to continue. ";CON$:CLS
4200 PRINT:PRINT:PRINT
4220 PRINT " Lotus Corp has made beautiful products which suffer"
4240 PRINT "from the fact everyone wants different colors on their display.
4260 PRINT "Lotus took the route that Henry Ford took and said you can have any
4280 PRINT "color you want as long as it is Black.
4300 PRINT " or in this case Dull White on Black.
4320 PRINT " I took serious exception to this because of the hours each day
4340 PRINT "that I watch television, - Symphony being a favourite program -
4360 PRINT "at least my employer's, I thus delved into the drivers.
4380 PRINT " I found that I could locate the color bytes and found
4400 PRINT "out how to change the display colors to my choice.
4420 PRINT " Because I wanted to try different colors easily I wrote
4440 PRINT "this program for my own use but felt others would like it as well
4460 PRINT " and so wrote it to be easy to use.
4480 PRINT "
4500 INPUT " Hit return to continue. ";CON$:CLS
4520 PRINT "
4540 PRINT " Since drivers move around in the file depending on what's included
4560 PRINT "I felt the best way to find the area of interest was to search for
4580 PRINT "a Byte sequence that indicates the area controlling colors and
4600 PRINT "then make it possible to change these and write them back to disk
4620 PRINT "when finished.
4640 PRINT "
4660 PRINT " I have noted those bytes which control certain colors but I have
4680 PRINT "not yet determined what all do. Changing the ones whose use is
4700 PRINT "noted should have the desired result. If you are a risk taker then
4720 PRINT "you might want to change others as well.
4740 PRINT "
4760 PRINT " It is unfortunately difficult to see a result with some as they
4780 PRINT "only appear under unusual circumstances. As example the Byte that I
4800 PRINT "refer to as # 5 only has an effect as far as I can see with use
4820 PRINT "as a terminal under receipt of a rare sequence from the mainframe
4840 PRINT "which my company uses. With others I have not seen any result
4860 PRINT "and others I have not changed.
4880 PRINT "
4900 INPUT " Hit return to continue. ";CON$:CLS
4920 PRINT "
4940 PRINT " Needless to say
4960 PRINT " ------------------
4980 PRINT "
5000 PRINT "This is a program which should work when changing only Bytes which
5020 PRINT "are known in their effects but results of experimentation can be
5040 PRINT "unpredictable.
5060 PRINT "
5080 PRINT " - Be on guard if you experiment. -
5100 PRINT " - Make backup and experimenting copies of your drivers -
5120 PRINT " - use program only on backup copies of your drivers "
5140 PRINT "
5160 PRINT "If you are going to experiment then be careful not to be left
5180 PRINT "without backup copies.
5200 PRINT :PRINT
5220 PRINT " If you have any comments or suggestions please contact
5240 PRINT " me either at Home in the evenings at (416) 226-9753"
5260 PRINT " or at the following BBS's PCanada (PC-1266) (416) 751-6337"
5280 PRINT " SGV-BBS (416) 673-0557"
5300 PRINT "
5320 PRINT " Ivor B. Miller
5340 INPUT " Hit return to continue. ";CON$:CLS
5360 GOTO 2800
5380 RETURN
5400 WIDTH "lpt1:",100
5420 LIST ,"lpt1:"
5440 WIDTH "lpt1:",80
5460 GOTO 260
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/