This page (revision-7) was last changed on 03-Feb-2023 15:21 by Gromit 

This page was created on 19-Dec-2010 21:31 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
7 03-Feb-2023 15:21 14 KB Gromit to previous
6 27-May-2011 09:54 13 KB Gromit to previous | to last
5 27-May-2011 09:54 13 KB Gromit to previous | to last
4 27-May-2011 09:47 7 KB Gromit to previous | to last
3 27-May-2011 09:46 7 KB Gromit to previous | to last
2 19-Dec-2010 21:32 150 bytes Carsten Strotmann to previous | to last
1 19-Dec-2010 21:31 108 bytes Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 9 changed one line
A tutorial with four demonstration programs. For BASIC programmers who want to know about the ACTION! programming language, and for ACTION! users who want to pick up some tips. The first BASIC listing will run on any Atari computer The remaining listings are written in ACTION! and require the ACTION! cartridge. But BASIC programmers can compare these printed listings with the first listing and get some idea why the year-old ACTION! is increasingly becoming the language of choice for serious Atari programmers. NOTE. Antic Disk subscribers can run listing 4 without ACTION! We have provided a runtime binary file. Use the "L" option from DOS for the file, SPLASH.EXE.
''A tutorial with four demonstration programs. For BASIC programmers who want to know about the ACTION! programming language, and for ACTION! users who want to pick up some tips. The first BASIC listing will run on any Atari computer The remaining listings are written in ACTION! and require the ACTION! cartridge. But BASIC programmers can compare these printed listings with the first listing and get some idea why the year-old ACTION! is increasingly becoming the language of choice for serious Atari programmers. NOTE. Antic Disk subscribers can run listing 4 without ACTION! We have provided a runtime binary file. Use the "L" option from DOS for the file, SPLASH.EXE.''
At line 12 added one line
At line 17 changed one line
Type in listing 1, check it with TYPO II and SAVE a copy. When you RUN it, use your joystick to choose a point on the GR.8 screen. Pressing the trigger puts a "splash" of lines emanating from this center to all borders. The step size between lines can be changed by simply pressing [5]. The program lets you put as many splashes on the screen as you wish before clearing to start over. It's kind of fun-no violence, no winning score, just pretty.
Type in listing 1, check it with TYPO II and SAVE a copy. When you RUN it, use your joystick to choose a point on the GR.8 screen. Pressing the trigger puts a "splash" of lines emanating from this center to all borders. The step size between lines can be changed by simply pressing [[5]. The program lets you put as many splashes on the screen as you wish before clearing to start over. It's kind of fun-no violence, no winning score, just pretty.
At line 45 changed one line
The program SPLASH4 will let you put splashes on the screen in any of the four available colors. I've also made it easy to alter these. Simply press [H] [L] to alter the Hue and Luminence of the current color.
The program SPLASH4 will let you put splashes on the screen in any of the four available colors. I've also made it easy to alter these. Simply press [[H] [[L] to alter the Hue and Luminence of the current color.
At line 51 changed one line
Listing 1
!Listing 1
At line 53 changed one line
10 REM SPLASH 1
12 REM BY PAUL CHABOT
14 REM ANTIC MAGAZINE
20 REM MAIN LOOP
22 GOSUB 200
24 GOSUB 100:GOSUB 50
26 POKE 656,3:POKE 657,2
28 ? "[A]-Another [C]-Clear";
30 K=PEEK(764):IF K=255 THEN 30
32 POKE 764,255
34 IF K=18 THEN 20
36 GOTO 24
50 REM SPLASH
52 POKE 712,16*INT(RND(0)*16)+2
60 FOR I=0 TO 319 STEP S
62 PLOT X,Y:DRAWTO I,0:PLOT X,Y
64 DRAWTO I,159:NEXT I
66 FOR I=0 TO 159 STEP S
68 PLOT X,Y:DRAWTO 319,I:PLOT X,Y
70 DRAWTO 0,I:NEXT I
72 RETURN
100 REM JOYSTICK
102 POKE 656,3:POKE 657,2
104 ? "[trigger] - SPLASH ";
110 POKE 656,1:POKE 657,9
112 ? X;" , ";Y;" ";
120 ST=STICK(0):IF STRIG(0)=0 THEN 140
122 IF PEEK(764)<255 THEN POKE 764,255:GOSUB 150
124 IF ST=15 THEN 120
130 IF ST=7 AND X<319 THEN X=X+1
132 IF ST=11 AND X>0 THEN X=X-1
134 IF ST=13 AND Y<159 THEN Y=Y+1
136 IF ST=14 AND Y>0 THEN Y=Y-1
138 GOTO 110
140 RETURN
150 REM INC STEP
152 S=S+1:IF S>16 THEN S=1
154 POKE 656,1:POKE 657,25:? S;" ";
156 POKE 712,16*INT(RND(0)*16)+2
158 RETURN
200 REM SETUP
202 GRAPHICS 8:POKE 710,0:POKE 709,14
204 POKE 712,16*INT(RND(0)*16)+2
206 POKE 752,1:COLOR 1:X=120:Y=60:S=7
210 ? " GR.8 S P L A S H "
212 ? "CENTER 120 , 60 STEP 7 "
214 ? " [joystick] [S] "
222 RETURN
At line 55 changed one line
Listing 2
!Listing 2
At line 170 added 10 lines
!Listing 3
{{{
; SPLASH 3
;------------------------------------
; Gr8
; Paul Chabot
;
MODULE
BYTE ARRAY mask=[128 64 32 16 8 4 2 1]
CARD ARRAY adrow(160)
At line 181 added 6 lines
PROC Clor(BYTE c)
BYTE i
FOR i=0 TO 7 DO
mask(7-i)=c:c==LSH 1
OD
RETURN
At line 188 added 7 lines
PROC Dot(CARD x,BYTE y)
BYTE xb,xr
BYTE ARRAY row
,premask=[127 191 223 239 247 251 253 254]
xb=x RSH 3:xr=x AND 7:row=adrow(y)
row(xb)==& premask(xr) % mask(xr)
RETURN
At line 196 added 257 lines
PROC BLine(CARD x1,BYTE y1,CARD x2,BYTE y2)
BYTE y,xf,yf,j
CARD x,i
INT a,b,t,dx,dy
Dot(x1,y1):Dot(x2,y2)
IF x2>x1 THEN dx=x2-x1:xf=0
ELSE dx=x1-x2:xf=1 FI
IF y2>y1 THEN dy=y2-y1:yf=0
ELSE dy=y1-y2:yf=1 FI
IF dx<2 AND dy<2 THEN RETURN FI
x=x1:y=y1
IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx
FOR i=2 TO dx DO
IF xf=0 THEN x==+1 ELSE x==-1 FI
IF t<0 THEN t==+a
ELSE t==+b
IF yf=0 THEN y==+1 ELSE y==-1 FI
FI Dot(x,y)
OD
ELSE a=dx+dx:t=a-dy:b=t-dy
FOR j=2 TO dy DO
IF yf=0 THEN y==+1 ELSE y==-1 FI
IF t<0 THEN t==+a
ELSE t==+b
IF xf=0 THEN x==+1 ELSE x==-1 FI
FI Dot(x,y)
OD
FI
RETURN
PROC Gr8()
BYTE bor=710,i
CARD sa=88
Graphics(8):bor=18:adrow(0)=sa
FOR i=1 TO 159 DO
adrow(i)=adrow(i-1)+40
OD
RETURN
;------------------------------------
; Variant of SPLASH
;
MODULE
BYTE c1=709,c2=710,bor=712,cur=752
,key=764,trow=656,tcol=657,y,s
CARD x
PROC Setup()
Gr8():c2=0:c1=14:cur=1:x=120:y=60:s=7
bor=16*Rand(16)+2
PrintE(" GR.8 S P L A S H ")
PrintE("CENTER 120 , 60 STEP 7 ")
PrintE(" [joystick] [S] ")
RETURN
PROC Splash()
CARD i
bor=16*Rand(16)+2
FOR i=0 TO 319 STEP s DO
BLine(x,y,i,0):BLine(x,y,i,159)
OD
FOR i=0 TO 159 STEP s DO
BLine(x,y,0,i):BLine(x,y,319,i)
OD
RETURN
PROC IncStep()
s==+1:bor=16*Rand(16)+2
IF s>16 THEN s=1 FI
trow=1:tcol=25:PrintB(s):Print(" ")
RETURN
PROC Joystick()
BYTE st
trow=3:tcol=2
Print("[trigger] - SPLASH ")
DO trow=1:tcol=9:st=Stick(0)
PrintC(x):Print(" , "):PrintB(y):Print(" ")
WHILE Stick(0)=15 DO
IF Strig(0)=0 THEN RETURN FI
IF key<255 THEN key=255:IncStep() FI
OD st=Stick(0)
IF st=7 AND x<319 THEN x==+1
ELSEIF st=11 AND x>0 THEN x==-1
ELSEIF st=13 AND y<159 THEN y==+1
ELSEIF st=14 AND y>0 THEN y==-1
FI
OD
RETURN
PROC Main()
DO key=255:Setup()
DO Joystick():Splash()
trow=3:tcol=2
Print("[A]-Another [C]-Clear")
WHILE key=255 DO OD
IF key=18 THEN EXIT FI
key=255
OD
OD
RETURN
}}}
!Lisiting 4
{{{; SPLASH4
;------------------------------------
; Gr7plus
; Paul Chabot
;
MODULE
BYTE ARRAY mask=[64 16 4 1]
CARD ARRAY adrow(160)
PROC Clor(BYTE c)
mask(3)=c:mask(2)=c LSH 2
mask(1)=c LSH 4:mask(0)=c LSH 6
RETURN
PROC Dot(BYTE x,y)
BYTE xb,xr
BYTE ARRAY row
,premask=[63 207 243 252]
xb=x RSH 2:xr=x AND 3:row=adrow(y)
row(xb)==& premask(xr) % mask(xr)
RETURN
PROC BLine(BYTE x1,y1,x2,y2)
BYTE x,y,xf,yf,i
INT a,b,t,dx,dy
Dot(x1,y1):Dot(x2,y2)
IF x2>x1 THEN dx=x2-x1:xf=0
ELSE dx=x1-x2:xf=1 FI
IF y2>y1 THEN dy=y2-y1:yf=0
ELSE dy=y1-y2:yf=1 FI
IF dx<2 AND dy<2 THEN RETURN FI
x=x1:y=y1
IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx
FOR i=2 TO dx DO
IF xf=0 THEN x==+1 ELSE x==-1 FI
IF t<0 THEN t==+a
ELSE t==+b
IF yf=0 THEN y==+1 ELSE y==-1 FI
FI Dot(x,y)
OD
ELSE a=dx+dx:t=a-dy:b=t-dy
FOR i=2 TO dy DO
IF yf=0 THEN y==+1 ELSE y==-1 FI
IF t<0 THEN t==+a
ELSE t==+b
IF xf=0 THEN x==+1 ELSE x==-1 FI
FI Dot(x,y)
OD
FI
RETURN
PROC Gr7plus()
BYTE i
BYTE ARRAY dl
CARD sa=88,dlist=560
Graphics(8):adrow(0)=sa
FOR i=1 TO 159 DO
adrow(i)=adrow(i-1)+40
OD
dl=dlist:dl(3)=78:dl(99)=78
FOR i=6 TO 98 DO dl(i)=14 OD
FOR i=102 TO 166 DO dl(i)=14 OD
RETURN
;------------------------------------
; COLOR SPLASH
;
MODULE
BYTE cur=752,key=764,trow=656,tcol=657
,x,y,s,c,i,j
BYTE ARRAY creg=708
,dfault=[54 26 194 0 80]
PROC Splash()
FOR i=0 TO 159 STEP s DO
BLine(x,y,i,0):BLine(x,y,i,159)
BLine(x,y,0,i):BLine(x,y,159,i)
OD
RETURN
PROC IncStep()
s==+1:IF s>16 THEN s=1 FI
trow=1:tcol=26:PrintB(s):Print(" ")
RETURN
PROC IncColor()
i=c:c==+1
IF c>3 THEN c=0:i=4 FI
Clor(c):i=creg(i)
trow=1:tcol=37:PrintB(c):Print(" ")
trow=2:tcol=36:PrintB(i RSH 4):Print(" ")
trow=3:tcol=36:PrintB(i & 14):Print(" ")
RETURN
PROC IncHue()
IF c=0 THEN i=4 ELSE i=c-1 FI
j=creg(i) RSH 4:j==+1
IF j>15 THEN j=0 FI
trow=2:tcol=36:PrintB(j):Print(" ")
creg(i)=(j LSH 4)+(creg(i) & 14)
RETURN
PROC IncLum()
IF c=0 THEN i=4 ELSE i=c-1 FI
j=creg(i) & 14:j==+2
IF j>15 THEN j=0 FI
trow=3:tcol=36:PrintB(j):Print(" ")
creg(i)=(creg(i) & 240)+j
RETURN
PROC Joystick()
BYTE st,k
DO trow=1:tcol=9
PrintC(x):Print(" , "):PrintB(y):Print(" ")
WHILE Stick(0)=15 DO
IF Strig(0)=0 THEN Splash() FI
IF key<255 THEN k=key:key=255
IF k=62 THEN IncStep() ;S
ELSEIF k=18 THEN IncColor() ;C
ELSEIF k=57 THEN IncHue() ;H
ELSEIF k=0 THEN IncLum() ;L
ELSEIF k=35 THEN RETURN ;N
FI
FI
OD st=Stick(0)
IF st=7 AND x<159 THEN x==+1
ELSEIF st=11 AND x>0 THEN x==-1
ELSEIF st=13 AND y<159 THEN y==+1
ELSEIF st=14 AND y>0 THEN y==-1
FI
OD
RETURN
PROC Setup()
Gr7plus():cur=1
FOR i=0 TO 4 DO creg(i)=dfault(i) OD
PrintE(" Gr7plus S P L A S H ")
PrintE("CENTER 80 , 60 [S]tep 7 [C]OLOR")
PrintE(" [joystick] [H]ue")
Print("[trig]-SPLASH [N]ew Screen [L]um")
x=80:y=60:s=7:c=0:IncColor()
RETURN
PROC OpenScene()
Setup():x=20:y=20:s=9:Splash()
IncColor():x=50:y=110:s=7:Splash()
IncColor():x=120:y=60:s=9:Splash()
IncColor():x=80:y=130:s=9:Splash()
IncColor():x=140:y=130:s=7:Splash()
RETURN
PROC Main()
OpenScene():Joystick()
DO Setup():Joystick() OD
RETURN
}}}