' HR_64000.LST
' assign a colour value to every four pixels
' of a 640*400 picture
' -----------------------
DIM n|(63999)
s$=SPACE$(32034)
BLOAD "KARIN.PI3",V:s$
s$=RIGHT$(s$,32000)
SPUT s$
s%=V:s$
d%=V:n|(0)
'
ALERT 2,"Convert high-res pic|into colour values: |in GFA BASIC|orGFA ASSEMBLER?",1,"BASIC|Ass.",question%
t=TIMER
'
' GFA-Basic
IF question%=1
  z%=0
  FOR m%=s% TO s%+31999 STEP 160
    FOR n%=m% TO m%+79
      o%=BYTE{n%}
      u%=BYTE{n%+80}
      n|(z%)=-BTST(o%,7)-BTST(o%,6)-BTST(u%,7)-BTST(u%,6)
      n|(z%+1)=-BTST(o%,5)-BTST(o%,4)-BTST(u%,5)-BTST(u%,4)
      n|(z%+2)=-BTST(o%,3)-BTST(o%,2)-BTST(u%,3)-BTST(u%,2)
      n|(z%+3)=-BTST(o%,1)-BTST(o%,0)-BTST(u%,1)-BTST(u%,0)
      ADD z%,4
    NEXT n%
  NEXT m%
ENDIF
'
' GFA-Assembler
IF question%=2
  INLINE hr_ass%,76
  ' Call assembler program, with
  ' s% and d% being the addresses of the graphics data
  VOID C:hr_ass%(L:s%,L:d%)
ENDIF
'
tt=(TIMER-t)/200
t$=STR$(tt)
IF question%=1
  ALERT 1,"Convert high-res pic|into colour values: |in GFA BASIC takes|"+t$+" seconds.",1," OK ",d%
ELSE
  ALERT 1,"Convert high-res pic|into colour values: |in GFA ASSEMBLER takes|"+t$+" seconds.",1," OK ",d%
ENDIF
'
ALERT 2,"|Save colour values |as 'KARIN.ZAL'?",1,"YES|NO",d%
IF d%=1
  BSAVE "KARIN.ZAL",V:n|(0),64000
ENDIF
'
EDIT
