home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 1: Collection A
/
17Bit_Collection_A.iso
/
files
/
36.dms
/
36.adf
/
screentool.bas
< prev
next >
Wrap
BASIC Source File
|
1988-05-22
|
11KB
|
276 lines
10 'screentool - v. 1.0 - Robert Sawdey - 11/26/85
20 for i%=0 to 15:rgb i%,0,0,0:next
30 screen 0,4,0:font 1:pena%=1:mode%=1
40 erase screen%:dim screen%(8002)
50 'Set Palette
60 erase rgb%:dim rgb%(16,3):restore
70 for i%=0 to 15:for j%=0 to 2:read rgb%(i%,j%):next j%,i%
80 data 00,00,00, 08,05,04, 11,09,07, 10,00,00
90 data 15,07,07, 12,05,00, 15,10,03, 13,13,01
100 data 15,15,06, 00,07,00, 03,15,07, 00,00,10
110 data 06,07,15, 08,00,08, 15,08,15, 15,15,15
120 'Set Lines
130 erase lines%:dim lines%(16)
140 for i%=0 to 7:read lines%(i%):next i%
150 data &B1111111111111111
160 data &B0000111111110000
170 data &B0011110000111100
180 data &B0110011001100110
190 data &B1010101010101010
200 data &B0100111001001110
210 data &B0011000011111100
220 data &B0010001000100010
230 'Set Patterns
240 erase pattern%:dim pattern%(4)
250 erase pattern0%,pattern1%,pattern2%,pattern3%
260 erase pattern4%,pattern5%,pattern6%,pattern7%
270 dim pattern0%(4),pattern1%(4),pattern2%(4)
280 dim pattern3%(4),pattern4%(4),pattern5%(4)
290 dim pattern6%(4),pattern7%(4)
300 for j%=0 to 3:read pattern0%(j%):next j%
310 'solid
320 data &B1111111111111111
330 data &B1111111111111111
340 data &B1111111111111111
350 data &B1111111111111111
360 for j%=0 to 3:read pattern1%(j%):next j%
370 'hor. stripe 1
380 data &B1111111111111111
390 data &B0000000000000000
400 data &B1111111111111111
410 data &B0000000000000000
420 for j%=0 to 3:read pattern2%(j%):next j%
430 'hor. stripe 2
440 data &B0000000000000000
450 data &B1111111111111111
460 data &B1111111111111111
470 data &B0000000000000000
480 for j%=0 to 3:read pattern3%(j%):next j%
490 'vert. stripe 1
500 data &B1010101010101010
510 data &B1010101010101010
520 data &B1010101010101010
530 data &B1010101010101010
540 for j%=0 to 3:read pattern4%(j%):next j%
550 'vert. stripe 2
560 data &B1100110011001100
570 data &B1100110011001100
580 data &B1100110011001100
590 data &B1100110011001100
600 for j%=0 to 3:read pattern5%(j%):next j%
610 'diag 1
620 data &B0101010101010101
630 data &B1010101010101010
640 data &B0101010101010101
650 data &B1010101010101010
660 for j%=0 to 3:read pattern6%(j%):next j%
670 'right diag 2
680 data &B0011001100110011
690 data &B0110011001100110
700 data &B1100110011001100
710 data &B1001100110011001
720 for j%=0 to 3:read pattern7%(j%):next j%
730 'left diag 2
740 data &B1100110011001100
750 data &B0110011001100110
760 data &B0011001100110011
770 data &B1001100110011001
780 'diag 2
790 data &B1100110011001100
800 data &B0011001100110011
810 data &B1100110011001100
820 data &B0011001100110011
830 data &B1100110011001100
840 'init
850 for i%=0 to 3:pattern%(i%)=pattern0%(i%):next i%
860 pena pena%:penb pena%:peno 2:linepat 65535
870 scnclr:print " ";inverse(1);"End Screen Color Modes Styles ";at(1,1);
880 'menu 1
890 erase menu1%,save1%:dim menu1%(422),save1%(422)
900 print at(7,2);"clear";at(7,3);"load";at(7,4);"save "
910 print at(7,5);"memory";at(7,6);"recall"
920 box(40,7;104,48),0:sshape(40,8;105,49),menu1%
930 'menu 2
940 erase menu2%,save2%:dim menu2%(210),save2%(210)
950 print at(15,2);"brush";at(15,3);"cycle"
960 box(104,7;160,25),0:sshape(104,8;161,26),menu2%
970 'menu 3
980 erase menu3%,save3%:dim menu3%(422),save3%(422)
990 print at(22,2);"draw";at(22,3);"line";at(22,4);"box";at(22,5);"circle";at(22,6);"fill"
1000 box(160,7;224,48),0:sshape(160,8;225,49),menu3%
1010 'menu 4
1020 erase menu4%,save4%:dim menu4%(262),save4%(262)
1030 print at(30,2);"brush";at(30,3);"line";at(30,4);"fill"
1040 box(224,7;287,33),0:sshape(224,8;288,34),menu4%
1050 peno pena%:scnclr:print " ";
1060 print at(1,1);" ";inverse(1);"End Screen Color Modes Styles ";at(1,1);
1070 'fade in
1080 for i%=1 to 3:for j%=0 to 15:ask rgb i%,r%,g%,b%
1090 if r%< rgb%(i%,0) then r%=r%+1
1100 if g%< rgb%(i%,1) then g%=g%+1
1110 if b%< rgb%(i%,2) then b%=b%+1
1120 rgb i%,r%,g%,b%
1130 next j%,i%
1140 for i%=4 to 15:rgb i%,rgb%(i%,0),rgb%(i%,1),rgb%(i%,2):next i%
1150 goto 1270
1160 'menu loop
1170 ask mouse x%,y%,b%:if b%<>0 then goto 1170
1180 ask mouse x%,y%,b%:if b%=0 then goto 1180
1190 if y%>9 then goto 1270
1200 if (x%<296 and x%>224) then menu%=4:sshape(224,8;289,34),save4%:gshape(224,8),menu4%
1210 if (x%<224 and x%>160) then menu%=3:sshape(160,8;226,50),save3%:gshape(160,8),menu3%
1220 if (x%<160 and x%>104) then menu%=2:sshape(104,8;162,34),save2%:gshape(104,8),menu2%
1230 if (x%<104 and x%>040) then menu%=1:sshape(040,8;106,50),save1%:gshape(40,8),menu1%
1240 if x%<40 then screen 1,2,0:end
1250 on menu% gosub 1350,1520,1480,2190
1260 print " ";inverse(1);"End Screen Color Modes Styles "; at (1,1);
1270 on mode% gosub 1720,1820,1930,2040,2140
1280 goto 1190
1290 'get menu selection
1300 ask mouse x%,y%,b%:if b%<>0 then goto 1300
1310 ask mouse x%,y%,b%:if b%=0 then goto 1310
1320 if x%<xl% or x%>xr% or y%>yl% then goto 1300
1330 sel%=int(y%/8)
1340 return
1350 'get screen
1360 xl%=40:xr%=104:yl%=48:gosub 1290:screen%=sel%
1370 gshape(40,8),save1%:if screen%=0 then return
1380 on screen% gosub 1400,1440,1450,1460,1470
1390 return
1400 scnclr:return:' clear
1410 print at (1,1);space$(39);at (1,1);
1420 input "Filename: ",filename$:filename$=filename$+".scn"
1430 print at (1,1);:return
1440 gosub 1410:bload filename$,varptr(screen%(0)):gshape(0,0),screen%:return:' load
1450 sshape(0,0;319,199),screen%:gosub 1410:bsave filename$,varptr(screen%(0)),32008:return:' save
1460 sshape(0,0;319,199),screen%:return:' memory
1470 gshape(0,0),screen%:return:'recall
1480 'get mode
1490 xl%=160:xr%=224:yl%=48:gosub 1290
1500 gshape(160,8),save3%:if sel%=0 then return
1510 mode%=sel%:return
1520 'get pen, then color into pen
1530 xl%=104:xr%=160:yl%=32:gosub 1290:pen%=sel%
1540 gshape(104,8),save2%:if pen%=0 then return
1550 gosub 1610
1560 if pen%=1 then pena%=c%
1570 if pen%=2 then penb%=c%
1580 rem if pen%=3 then peno%=c%
1590 pena pena%:penb penb%:peno pena%
1600 return
1610 drawmode 0:pattern 4,pattern0%:' COLOR
1620 for i%=0 to 15
1630 peno 1:pena i%:box(i%*18+7,0;i%*18+25,7),1
1640 next
1650 ask mouse x%,y%,b%:if b%<>0 then goto 1650
1660 ask mouse x%,y%,b%:if b%=0 then goto 1660
1670 if y%>9 then goto 1650
1680 c%=fix((x%-8)/18):if c%=16 then c%=0
1690 pattern 4,pattern%
1700 return
1710 'draw
1720 drawmode 0:linepat 65535
1730 ask mouse x%,y%,b%:if b%<>0 then goto 1730
1740 ask mouse x%,y%,b%
1750 if y%<9 then goto 1790
1760 if b%=0 then drawmode 2:box(x%,y%;x%-bw%,y%-bh%):box(x%,y%;x%-bw%,y%-bh%)
1770 if b%=4 then drawmode 0:box(x%,y%;x%-bw%,y%-bh%)
1780 goto 1740
1790 ask mouse x%,y%,b%:if b%=0 then goto 1790
1800 return
1810 'line
1820 drawmode 2:linepat lines%(pat%)
1830 ask mouse x2%,y2%,b%:if b%<>0 then goto 1830
1840 ask mouse x1%,y1%,b%:if b%=0 then goto 1840
1850 ask mouse x1%,y1%,b%:if b%<>0 then goto 1850
1860 if y1%<9 then x%=x1%:y%=y1%:return
1870 draw(x1%,y1%;x2%,y2%):draw(x1%,y1%;x2%,y2%)
1880 ask mouse x2%,y2%,b%
1890 if y2%<9 then goto 1820
1900 if b%=0 then goto 1870
1910 drawmode 0:draw(x1%,y1%;x2%,y2%):goto 1820
1920 'box
1930 drawmode 2:linepat lines%(pat%)
1940 ask mouse x2%,y2%,b%:if b%<>0 then goto 1940
1950 ask mouse x1%,y1%,b%:if b%=0 then goto 1950
1960 ask mouse x1%,y1%,b%:if b%<>0 then goto 1960
1970 if y1%<9 then x%=x1%:y%=y1%:return
1980 box(x1%,y1%;x2%,y2%):box(x1%,y1%;x2%,y2%)
1990 ask mouse x2%,y2%,b%
2000 if y2%<9 then goto 1930
2010 if b%=0 then goto 1980
2020 drawmode 0:box(x1%,y1%;x2%,y2%):goto 1930
2030 'circle
2040 drawmode 2
2050 ask mouse x2%,y2%,b%:if b%<>0 then goto 2050
2060 ask mouse x1%,y1%,b%:if b%=0 then goto 2060
2070 if y1%<9 then x%=x1%:y%=y1%:return
2080 circle(x1%,y1%),sqr((((x1%-x2%)^2)+((y1%-y2%)^2))),.9:circle(x1%,y1%),sqr((((x1%-x2%)^2)+((y1%-y2%)^2))),.9
2090 ask mouse x2%,y2%,b%
2100 if y2%<9 then goto 2050
2110 if b%=0 then goto 2080
2120 drawmode 0:circle(x1%,y1%),sqr((((x1%-x2%)^2)+((y1%-y2%)^2))),.9:goto 2040
2130 'fill
2140 drawmode 0:pattern 4,pattern%
2150 ask mouse x%,y%,b%:if b%<>0 then goto 2150
2160 ask mouse x%,y%,b%:if b%=0 then goto 2160
2170 if y%<9 then return
2180 paint(x%,y%),1:goto 2150
2190 ' Get Styles
2200 drawmode 0:xl%=224:xr%=296:yl%=32:gosub 1290:styles%=sel%
2210 gshape(224,8),save4%:if styles%=0 then return
2220 pattern 4,pattern0%:linepat 65535:pena 0:peno 1
2230 for i%=0 to 7:box(i%*36+7,0;i%*36+43,7),1:next
2240 peno 2:pena 2:on styles% gosub 2270,2430,2520
2250 pena pena%:penb pena%:peno pena%
2260 return
2270 ' brush
2280 box(25,4;25,4):box(61,3;62,4):box(97,4;99,4):box(134,3;134,5)
2290 box(168,3;170,5):box(204,3;206,4):box(240,3;241,5):box(275,2;278,5)
2300 ask mouse x%,y%,b%:if b%<>0 then goto 2300
2310 ask mouse x%,y%,b%:if b%=0 then goto 2310
2320 if y%>9 then goto 2300
2330 brush%=fix((x%-8)/36):if brush%>7 then brush%=0
2340 if brush%=0 then bw%=0:bh%=0
2350 if brush%=1 then bw%=1:bh%=1
2360 if brush%=2 then bw%=2:bh%=0
2370 if brush%=3 then bw%=0:bh%=2
2380 if brush%=4 then bw%=2:bh%=2
2390 if brush%=5 then bw%=2:bh%=1
2400 if brush%=6 then bw%=1:bh%=2
2410 if brush%=7 then bw%=3:bh%=3
2420 return
2430 ' line
2440 for i%=0 to 7:linepat lines%(i%)
2450 locate ((i%*36+9),4):draw(to (i%*36+40),4):next i%
2460 ask mouse x%,y%,b%:if b%<>0 then goto 2460
2470 ask mouse x%,y%,b%:if b%=0 then goto 2470
2480 if y%>9 then goto 2460
2490 pat%=fix((x%-8)/36):if pat%>7 then pat%=0
2500 linepat lines%(pat%)
2510 return
2520 ' fill
2530 pattern 4,pattern0%:paint(12,2),1
2540 pattern 4,pattern1%:paint(48,2),1
2550 pattern 4,pattern2%:paint(84,2),1
2560 pattern 4,pattern3%:paint(120,2),1
2570 pattern 4,pattern4%:paint(156,4),1
2580 pattern 4,pattern5%:paint(192,4),1
2590 pattern 4,pattern6%:paint(228,4),1
2600 pattern 4,pattern7%:paint(264,4),1
2610 ask mouse x%,y%,b%:if b%<>0 then goto 2610
2620 ask mouse x%,y%,b%:if b%=0 then goto 2620
2630 fpat%=fix((x%-8)/36)+1:if fpat%>8 then fpat%=1
2640 on fpat% goto 2650,2660,2670,2680,2690,2700,2710,2720
2650 for i%=0 to 3:pattern%(i%)=pattern0%(i%):next i%:goto 2730
2660 for i%=0 to 3:pattern%(i%)=pattern1%(i%):next i%:goto 2730
2670 for i%=0 to 3:pattern%(i%)=pattern2%(i%):next i%:goto 2730
2680 for i%=0 to 3:pattern%(i%)=pattern3%(i%):next i%:goto 2730
2690 for i%=0 to 3:pattern%(i%)=pattern4%(i%):next i%:goto 2730
2700 for i%=0 to 3:pattern%(i%)=pattern5%(i%):next i%:goto 2730
2710 for i%=0 to 3:pattern%(i%)=pattern6%(i%):next i%:goto 2730
2720 for i%=0 to 3:pattern%(i%)=pattern7%(i%):next i%
2730 pattern 4,pattern%
2740 return
2750 end