k, it looks like hoby cheated.
anyway, here is my 481 that works lot better than 480.
; begin PxMagic 
;
;!
Function PxMagic($)
pxmdisplay(pxmread($),createobject(kixtart.form),255,4)
EndFunction
;!
;!
; end PxMagix

; begin PxMRead 
;
;!
Function PxMRead($)
$=""+open(1,$)
do $=join(split($+" "+join(split(split(readline(1),#)[0], ))," ")) until instr($," ")=1+@error
$pxmread=split($)
$=close(1)
EndFunction
;!
;!
; end PxMRead

; begin PxMDisplay 
;
;!
Function PxMDisplay($,$a,$m,$k)

if 0+$[4] $k=5 $m=$m/$[4] endif

dim $3,$l,$!
for $!=$k to ubound($)-1
$3=2*($[1]=P3)
$l=($!-$k)/(1+$3)
$a.pset($l-$l/$[2]*$[2],$l/$[2],$a.rgb($m*$[$!],$m*$[$!+$3/2],$m*$[$!+$3]))
$!=$!+$3
next
$a.show(3)
sleep 10
EndFunction
;!
;!
; end PxMDisplay


now, wasn't the order said, pxmagic does the handling, reader does reading and display does the display?
in hoby's code, the reader does the reading and displaying and thus I would not accept it.
_________________________
!

download KiXnet