' $DYNAMIC DEFINT A-Z DECLARE SUB setmouse (ms()) DECLARE SUB readmouse (ms()) DECLARE SUB setmodex () DECLARE SUB copypage (BYVAL page1, BYVAL page2) DECLARE SUB setvispage (BYVAL page) DECLARE SUB drawsprite (pic(), pal(), BYVAL po, BYVAL x, BYVAL y, BYVAL page) DECLARE SUB getsprite (pic(), BYVAL x, BYVAL y, BYVAL w, BYVAL h, BYVAL page) DECLARE SUB putpixel (BYVAL x, BYVAL y, BYVAL c) DECLARE SUB readpixel (BYVAL x, BYVAL y, c()) DECLARE SUB setpal (pal()) DECLARE SUB setdiskpages (buf(), BYVAL l, BYVAL o) DECLARE SUB storepage (fil$, BYVAL i, BYVAL c) DECLARE SUB loadpage (fil$, BYVAL i, BYVAL c) DECLARE SUB rectangle (BYVAL x, BYVAL y, BYVAL w, BYVAL h, BYVAL c, BYVAL p) DIM typ(16000), tmp(8000), ms(4), newpal(767), c(1) nam$ = "bar" DEF SEG = VARSEG(newpal(0)) BLOAD "PALETTE.STO", VARPTR(newpal(0)) DEF SEG = VARSEG(typ(0)) BLOAD nam$ + ".whr", VARPTR(typ(0)) setmodex setdiskpages tmp(), 200, 0 setpal newpal() setmouse ms() loadpage nam$ + ".bck" + CHR$(0), 0, 3 copypage 3, 0 ctr = 0 FOR j = 0 TO 198 STEP 2 FOR i = 0 TO 318 STEP 2 IF typ(ctr) > 0 THEN rectangle i, j, 2, 2, typ(ctr), 3 ctr = ctr + 1 NEXT i: NEXT j cp = 3 ap = 2 vp = 1 a$ = "" x = 0: y = 0 c = 0 WHILE a$ <> CHR$(27) readmouse ms() setvispage vp copypage cp, ap x = INT(ms(0) / 2) * 2 y = INT(ms(1) / 2) * 2 rectangle x, y, 2, 2, 30, ap rectangle x + INT(RND(1) * 2), y + INT(RND(1) * 2), 1, 1, c, ap a$ = INKEY$ IF a$ = "-" THEN c = c - 1 - (c = 0) * 20 IF a$ = "+" OR a$ = "=" THEN c = c + 1 + (c = 20) * 21 tm = INT(x / 2) + INT(y / 2) * 160 IF ms(2) > 0 THEN typ(tm) = c IF ms(2) > 0 THEN rectangle INT(x / 2) * 2, INT(y / 2) * 2, 2, 2, typ(tm), cp IF ms(2) > 1 THEN GOSUB 10 SWAP ap, vp WEND DEF SEG = VARSEG(typ(0)) BSAVE nam$ + ".whr", VARPTR(typ(0)), 32000 SYSTEM 10 t = 0 WHILE t = 0 setvispage vp copypage cp, ap readmouse ms() a = INT(ms(0) / 2) * 2 b = INT(ms(1) / 2) * 2 rectangle a, b, 2, 2, 46, ap t = ms(3) SWAP ap, vp WEND FOR i = x TO a STEP SGN((a - x) * 2 + 1) * 2 FOR j = y TO b STEP SGN((b - y) * 2 + 1) * 2 rectangle i, j, 2, 2, c, cp typ(INT(i / 2) + INT(j / 2) * 160) = c NEXT j: NEXT i RETURN