Witaj,
Wiesz co, normalnie z ciekawości postanowiłem sprawdzić ile mi to zajmie. Nigdy nie pisałem w Action! traktowałem ten język jako ciekawostkę raczej, spokoju mi to nie dawało więc zajrzałem sobie tutaj:
http://atariki.krap.pl/index.php/Action!
potem trafiłem tutaj:
http://www.noniandjim.com/Jim/atari/Act … piler.html
a tam był odnośnik do tego:
http://www.noniandjim.com/Jim/atari/ACT … MANUAL.pdf
korzystając z tego PDF-a, w ciągu dosłownie 15 minut udało mi się napisać przykład który realizuje to o co pytasz. Nie jest to szybkie ani wydajne (korzysta z systemowej procedury PLOT i stawia pixel po pixel-u, czyli wolniej się chyba nie da) jednak wydaje mi się że jest przejrzyste i pozwoli ci zrozumieć jak działa:
PROC ZNAK(CARD X,BYTE Y,CARD CHR)
BYTE POINTER ADR
BYTE I
ADR=$E000+(CHR LSH 3)
FOR I=0 TO 7
DO
IF (ADR^ & $80) THEN PLOT(X+0,Y) FI
IF (ADR^ & $40) THEN PLOT(X+1,Y) FI
IF (ADR^ & $20) THEN PLOT(X+2,Y) FI
IF (ADR^ & $10) THEN PLOT(X+3,Y) FI
IF (ADR^ & $08) THEN PLOT(X+4,Y) FI
IF (ADR^ & $04) THEN PLOT(X+5,Y) FI
IF (ADR^ & $02) THEN PLOT(X+6,Y) FI
IF (ADR^ & $01) THEN PLOT(X+7,Y) FI
Y=Y+1
ADR=ADR+1
OD
RETURN
PROC KEY()
POKE($2FC,$FF)
WHILE(PEEK($2FC)=$FF) DO OD
RETURN
PROC MAIN()
BYTE X,Y,I,J
GRAPHICS(15)
POKE($2C4,$A8) POKE($2C5,$0F) POKE($2C6,$00)
COLOR=1
X=0 Y=0
FOR I=0 TO 7
DO
FOR J=0 TO 15
DO
ZNAK(X,Y,I*16+J)
X=X+8
OD
Y=Y+8 X=0
OD
PRINTE("PRESS ANY KEY TO EXIT")
KEY()
RETURN
Efekt działania tego prymitywnego kodu wygląda tak:
Chłopie, tak sobie myślę iż dłużej Ci zajmuje pisanie tych wszystkich pytań na forum niż próba samodzielnego rozwiązania problemu.