DECLARE SUB ChangeColor (ClrNum%, red%, green%, blue%) DECLARE SUB GetColorPalette (ClrNum%, red%, green%, blue%) ' COLORING.BAS - modify/restore colors in text mode (SCREEN 0) ' Author : Egbert Zijlema (E.Zijlema@uni4nn.iaf.nl) ' (up)Date : 14 November 1996 ' Copyright status: Public Domain ' Language : Power Basic / QBasic ' LEGEND: ' Color numbers and their registers: ' 0-5 point to registers 0-5 ' 6 points to register 20 ' 7 points to register 7 ' 8 through 15 point to registers 56 through 63 (= color + 48) ' DISCLAIMER: This demo is ment for use with VGA cards only! ' Use it on your own risk. DEFINT A-Z ' demo calling module CLS brown = 6: yello = 14 COLOR brown, 0 PRINT "This demo modifies brown in real yellow" PRINT "Press any key to see the change" GetColorPalette brown, BRred, BRgreen, BRblue ' save RGB for BR(own) GetColorPalette yello, YLred, YLgreen, YLblue ' get RGB for yellow SLEEP ' wait for keypress ChangeColor brown, YLred, YLgreen, YLblue ' let it happen COLOR 7, 0 PRINT "Now press again to restore brown" SLEEP ChangeColor brown, BRred, BRgreen, BRblue ' restore brown END SUB ChangeColor (ClrNum, red, green, blue) SELECT CASE ClrNum CASE 6: RegNum = 20 CASE 8 TO 15: RegNum = ClrNum + 48 CASE ELSE: RegNum = ClrNum END SELECT OUT &H3C8, RegNum OUT &H3C9, red OUT &H3C9, green OUT &H3C9, blue END SUB SUB GetColorPalette (ClrNum, red, green, blue) SELECT CASE ClrNum CASE 6: RegNum = 20 CASE 8 TO 15: RegNum = ClrNum + 48 CASE ELSE: RegNum = ClrNum END SELECT OUT &H3C7, RegNum red = INP(&H3C9) green = INP(&H3C9) blue = INP(&H3C9) END SUB