GFA punchs were small Basic GFA programs 20 lines long at the max. Everybody could participate and try to publish them in the famous ST Magazine.
' ---------------------------------------------------------
'
' RASTERSCROLL 50 Hz Low Resolution - 20 Lignes
'
' ---------------------------------------------------------
'
super%=0*XBIOS(5,L:TRUE,L:TRUE,W:FALSE)+GEMDOS(32,L:FALSE)
PRINT AT(1,1);" ABCDEFGHIJKLMNOPQRSTUVWXYZ PLEASE WAIT";
a$=MKL$(1)+MKL$(&H20003)+MKL$(&H40005)+MKL$(&H60007)+MKL$(&H70107)+MKL$(&H2070307)+MKL$(&H4070507)+MKL$(&H6070707)+MKL$(-1)+SPACE$(9964)+STRING$(1000,MKL$(XBIOS(2)))+"SALUT
JE SUIS METAL AGES FROM THE CYBERNETICS ENJOY THIS RASTER SCROLL "
FOR l2&=FALSE TO 3239
INT{ADD(V:a$+36+SHL&(MOD(l2&,120),1),MUL(DIV(l2&,120),240))}=OR(AND(PTST(ADD(AND(MOD(MOD(l2&,120),15),7),SHL&(DIV(l2&,120),3)),DIV(MOD(l2&,120),15))<>FALSE,MUL(MIN(ADD(DIV(MOD(l2&,120),15),2),7),&H10)),INT{ADD(V:a$,SHL&(MOD(MOD(l2&,120),15),1))})
ALINE ADD(106,ROUND(l2&/30.39)),8,ROUND(l2&/10.13),199,ADD(l2&*3/648,1),65535,1
NEXT l2&
PRINT AT(1,1);SPACE$(40);
{&HFFFA06}=FALSE
CARD{&H452}=FALSE
CARD{&HFF8240}=FALSE
DO
VSYNC
BMOVE ADD(V:a$,10004),ADD(V:a$,10000),200
{ADD(V:a$,10200)}=ADD(ADD(MUL(MAX(SUB(ASC(MID$(a$,ADD(SHR&(cpt&,4),14000),1)),64),FALSE),240),ADD(V:a$,36)),MUL(AND(SHR&(cpt&,1),7),30))
FOR t&=10000 TO 10200 STEP 4
BMOVE {ADD(V:a$,t&)},&HFF8242,30
NEXT t&
cpt&=MOD(ADD(cpt&,1),1280)
LOOP
' -------------------------------------------------------
'
' MEDIUM RESOLUTION 50HZ SCROLLTEXT 1 VBL
'
' -------------------------------------------------------
'
a$="[[SALUT[[THIS[IS[METAL[AGES[FROM[CYBERNETICS[AVEC[CE[SCROLL[JBLOURKS[[[[AUJOURDH[UI[ON[EST[LE[SEIZE[FEVRIER[MILLE[NEUF[CENT[QUATRE[VINGT[DIX[[[TIDOU[TIDOU[[[TAGADA[[TAGADA[[[CRADABOUIYOUMZOUM[[[SIBUGE[[[GUIGUITOTO[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
c$=MKL$(&H3FFFC000)+MKL$(&H7FFFFFFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HFFFF7FFE)+MKL$(&HAAAA0000)+MKI$(FALSE)+MKI$(&H334)+MKI$(&H667)+MKI$(&H0)
ecran%=XBIOS(2)
super%=XBIOS(6,L:ADD(V:c$,40))*0+XBIOS(5,L:TRUE,L:TRUE,W:1)*0+GEMDOS(32,L:FALSE)
PRINT AT(1,1);"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
FOR t&=FALSE TO 9
LONG{ADD(ADD(ecran%,1280),MUL(t&,160))}=LONG{ADD(V:c$,MUL(t&,4))}
NEXT t&
BYTE{&HFFFF820A}=2
REPEAT
VSYNC
BMOVE ADD(ecran%,16004),ADD(ecran%,16000),11196
cpt%=MOD(ADD(cpt%,1),2000)
i&=ADD(MOD(cpt%,8),MUL(SUB(ASC(MID$(a$,DIV(cpt%,8),1)),65),8))
FOR t&=FALSE TO 6
INT{&HFF8246}=SUB(6,t&)
RC_COPY ecran%,AND(SUB(SGN(PTST(i&,t&)),1),32),8,16,10 TO ecran%,624,ADD(MUL(t&,10),100)
NEXT t&
UNTIL INP(-2)
~GEMDOS(32,L:super%)
ATARI2.ZIP |