1 ' WARNING!!! DO NOT ALTER, BYPASS OR REMOVE LINES 1-50 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, #, enter ";YN$:GOTO 1400 1340 IF NOTFIRST%<>1 THEN LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type G, #, A, enter ";YN$:GOTO 1400 1360 IF POSITIONS = 1 THEN GOTO 1380 :ELSE LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type T, #, enter ";YN$:IF YN$ ="S" OR YN$="s" THEN GOTO 1620:ELSE GOTO 1400 1380 LOCATE LOWER2,1:PRINT STRING$(78,32);:LOCATE LOWER2,1:INPUT; "Type G, #, S, enter ";YN$:IF YN$ ="S" OR YN$="s" THEN GOTO 1620 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%0 THEN LOCATE LOWER2+1,1:COLOR FORE3%,BACK3%,BORDER1%:PRINT STRING$(78,32);:LOCATE LOWER2+1,1:PRINT "Your number must be between "STR$(POSITIONS)" & "STR$(ENDPOINT);:COLOR FORE1%,BACK1%,BORDER1%:GOTO 1320 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, M, N ";YN$: IF YN$="C" OR YN$="c" THEN GOTO 1020 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