Image noise: Difference between revisions

Content added Content deleted
m (→‎{{header|Z80 Assembly}}: typo fix and clarification)
(Added solution for Action!)
Line 41: Line 41:
inx ;next X
inx ;next X
jmp Snow ;loop forever</lang>
jmp Snow ;loop forever</lang>

=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
<lang Action!>INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit

DEFINE TEXT_SIZE="40"
BYTE ARRAY text(TEXT_SIZE)

CARD FUNC GetFrame()
BYTE RTCLOK1=$13,RTCLOK2=$14
CARD res
BYTE lsb=res,msb=res+1

lsb=RTCLOK2
msb=RTCLOK1
RETURN (res)

PROC CalcFPS(CARD frames REAL POINTER fps)
BYTE PALNTSC=$D014
REAL ms,r1000

IF PALNTSC=15 THEN
frames==*60
ELSE
frames==*50
FI

IntToReal(1000,r1000)
IntToReal(frames,ms)
RealDiv(r1000,ms,fps)
RETURN

PROC FillNoise()
BYTE POINTER ptr
BYTE x,y,rnd=$D20A

ptr=PeekC(88)
FOR y=0 TO 191
DO
FOR x=0 TO 39
DO
ptr^=rnd
ptr==+1
OD
OD
RETURN

PROC PrepareScreen()
BYTE COLOR1=$02C5,COLOR2=$02C6
CARD SDLSTL=$0230,ptr
BYTE i,v
BYTE ARRAY dlist(205)

Graphics(8+16)
COLOR1=$0F
COLOR2=$00

;prepare text
FOR i=0 TO TEXT_SIZE-1
DO
text(i)=0
OD
text(6)='F-32
text(7)='P-32
text(8)='S-32

;modify display list to add one row with text on the top
dlist(0)=$70
dlist(1)=$70
dlist(2)=$42
PokeC(dlist+3,text)
ptr=SDLSTL
ptr==+3
FOR i=5 TO 202
DO
dlist(i)=Peek(ptr)
ptr==+1
OD
PokeC(dlist+203,dlist)

SDLSTL=dlist
RETURN

PROC PrintFPS(REAL POINTER fps)
CHAR ARRAY tmp(20)
BYTE i

StrR(fps,tmp)
FOR i=1 TO 5
DO
text(i-1)=tmp(i)-32
OD
RETURN

PROC Main()
BYTE CH=$02FC
CARD beg,end
REAL fps

PrepareScreen()
beg=GetFrame()
DO
FillNoise()
end=GetFrame()
CalcFPS(end-beg,fps)
PrintFPS(fps)
beg=end
UNTIL CH#$FF
OD
CH=$FF
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Image_noise.png Screenshot from Atari 8-bit computer]


=={{header|Ada}}==
=={{header|Ada}}==