DECLARE SUB PaletteBar () DECLARE SUB MakeGrid (Acuracy!) DECLARE SUB Solarize (r!, g!, B!) DECLARE SUB Negative () DECLARE SUB Mosaic (sz!) DECLARE SUB ChangePal (Red%, Green%, Blue%, syscolor%) DECLARE SUB ShowBitmap (f$, mde!) DECLARE FUNCTION FillIn$ (t$, num!) DECLARE SUB ReadPal (Red%, Green%, Blue%) DECLARE FUNCTION Exist! (fle$) CLS CLEAR , , 15000 '==== All code above the line above this one is ignored ==== CONST mx = 20 CONST Bmp$ = "C:\PSP\DEATH1.BMP" ShowBitmap Bmp$, 2 SUB ChangePal (Red%, Green%, Blue%, syscolor%) palmask = &H3C6 palregrd = &H3CF palregwr = &H3C8 paldata = &H3C9 OUT palmask, &HFF OUT palregwr, syscolor% OUT paldata, Red% OUT paldata, Green% OUT paldata, Blue% END SUB FUNCTION Exist (fle$) OPEN fle$ FOR BINARY AS #4 IF LOF(4) = 0 THEN Exist = 0 ELSE Exist = 1 CLOSE 4 END FUNCTION FUNCTION FillIn$ (t$, num) FillIn$ = STRING$(num - LEN(t$), ASC("0")) + t$ END FUNCTION SUB MakeGrid (Acuracy) sz = Acuracy FOR x = 0 TO 320 STEP sz FOR y = 0 TO 200 STEP sz c = POINT(x + sz, y) LINE (x, y)-(x + sz - 1, y + sz - 1), c, B NEXT y NEXT x END SUB SUB Mosaic (sz) IF sz <= 1 THEN EXIT SUB FOR x = 0 TO 320 STEP sz FOR y = 0 TO 200 STEP sz c = POINT(x, y) LINE (x, y)-(x + sz - 1, y + sz - 1), c, BF NEXT y NEXT x END SUB SUB Negative Solarize 255, 255, 255 END SUB SUB PaletteBar FOR q = 0 TO 255 LINE (q, 0)-(q, 8), q NEXT q END SUB SUB ReadPal (Red%, Green%, Blue%) palmask = &H3C6 paldata = &H3C9 IF INT(Colr% / 2) = Colr% / 2 THEN Red% = INP(paldata): Green% = INP(paldata): Blue% = INP(paldata) Red% = INP(paldata) Green% = INP(paldata) Blue% = INP(paldata) END SUB SUB ShowBitmap (f$, mde) DIM Red AS STRING * 1 DIM Green AS STRING * 1 DIM Blue AS STRING * 1 DIM PicType AS STRING * 1 OPEN f$ FOR BINARY AS #1 GET #1, 29, PicType mxcol = ASC(PicType) SCREEN 13 IF mde = 2 THEN FOR i% = 0 TO 255 GET #1, 55 + (i% * 4), Red GET #1, 55 + (i% * 4) + 1, Green GET #1, 55 + (i% * 4) + 2, Blue CCHex1% = INT(ASC(Red)) / 8 CCHex2% = INT(ASC(Green)) / 8 CCHex3% = INT(ASC(Blue)) / 8 ChangePal CCHex3%, CCHex2%, CCHex1%, i% NEXT i% END IF DEF SEG = &HA000 DIM v AS STRING * 10000 Inc = 10000 pt1$ = CHR$(253) + CHR$(0) + CHR$(160) pt2$ = CHR$(VAL("&H" + MID$(FillIn$(HEX$(Inc), 4), 3, 2))) + CHR$(VAL("&H" + MID$(FillIn$(HEX$(Inc), 4), 1, 2))) FOR q = 1079 TO LOF(1) STEP Inc GET #1, q, v OPEN "1.TMP" FOR BINARY AS #3 pt3$ = CHR$(VAL("&H" + MID$(FillIn$(HEX$(x1), 4), 3, 2))) + CHR$(VAL("&H" + MID$(FillIn$(HEX$(x1), 4), 1, 2))) PUT #3, , pt1$ PUT #3, , pt3$ PUT #3, , pt2$ PUT #3, , v CLOSE 3 BLOAD "1.TMP", x1 KILL "1.TMP" x1 = x1 + Inc NEXT q IF mde = 1 THEN FOR i% = 0 TO 255 GET #1, 55 + (i% * 4), Red GET #1, 55 + (i% * 4) + 1, Green GET #1, 55 + (i% * 4) + 2, Blue CCHex1% = INT(ASC(Red)) / 8 CCHex2% = INT(ASC(Green)) / 8 CCHex3% = INT(ASC(Blue)) / 8 ChangePal CCHex3%, CCHex2%, CCHex1%, i% NEXT i% END IF CLOSE 1, 2, 3 END SUB SUB Solarize (r, g, B) FOR i% = 0 TO 255 ReadPal CCHex3%, CCHex2%, CCHex1% ChangePal ABS(CCHex3% - r), ABS(CCHex2% - g), ABS(CCHex1% - B), i% NEXT i% END SUB