; COLORS (LISTING 3)››MODULE:BYTE ARRAY dfault(5),CP› ,C7=[52 24 130 194 0]› ,C8=[52 26 0 194 208]› ,CM=[52 24 194 130 80]› ›PROC IncC():BYTE i›i=cnow:cnow==+1:Position(10,23)›IF i=3 THEN i=4:cnow=0 FI›Kolor(cnow):i=clor(i):PrintB(cnow)›Position(18,23):PrintB(i RSH 4)›Put(' ):Position(27,23)›PrintB(i & 14):Put(' ):RETURN››PROC IncHue():BYTE i,j›IF cnow=0 THEN i=4 ELSE i=cnow-1 FI›j=clor(i) RSH 4›j==+1:IF j>15 THEN j=0 FI›Position(18,23):PrintB(j):Put(' )›clor(i)=(j LSH 4)+(clor(i) & 14)›C7(i)=clor(i):RETURN››PROC IncLum():BYTE i,j›IF cnow=0 THEN i=4 ELSE i=cnow-1 FI›j=clor(i) & 14›j==+2:IF j>15 THEN j=0 FI›Position(27,23):PrintB(j):Put(' )›clor(i)=(clor(i) & 240)+j›C7(i)=clor(i):RETURN››PROC DfaultC():BYTE i›FOR i=0 TO 4 DO C7(i)=dfault(i)› clor(i)=C7(i)›OD RETURN››PROC SetDfault():BYTE i›FOR i=0 TO 4 DO dfault(i)=C7(i) OD:RETURN››PROC CPon():BYTE i›FOR i=0 TO 4 DO clor(i)=CP(i) OD:RETURN››PROC CMon():BYTE i›FOR i=0 TO 4 DO clor(i)=CM(i) OD:RETURN››PROC FixCol():IncC()›DO WHILE key=255 DO OD› IF key=18 THEN key=255:IncC()› ELSEIF key=57 THEN key=255:IncHue()› ELSEIF key=0 THEN key=255:IncLum()› ELSEIF key=58 THEN key=255:DfaultC()› ELSE EXIT FI›OD RETURN››