After looking at Howard's, I am not sure anything can be gained by viewing my effort but here is my final attempt.

code:
KiXtart
KiXtart Version = KiXtart 2001 4.22 Release Candidate 1
KiXforms Version = 2.3.0.41
KiXGolf Script = kixgolf_pxmagic.kix

Computer
OS = Windows 2000 Professional
CPU = AMD Duron(tm) Processor
Speed = 1095 MHz
Memory = 256 MB

KiXGolf Scoring Engine
Scoring Engine = 3.0.3

KiXtart Golf Score
Tournament = KiXtart Golf: PxMagic - Read & Display PxM Images
Processing Start = 2003/10/19 08:43:03.377
Processing End = 2003/10/19 08:43:28.323
Duration = 0000/00/00 00:00:24.945
# Images = 2
KiXGolf Score PxMagic = 60
KiXGolf Score PxMRead = 142
KiXGolf Score PxMDisplay = 474
KiXGolf Score Total = 676

Thank you for participating in KiXtart Golf!

code:
; begin PxMagic
;
;!
Function PxMagic($)
$PxMagic=PxMDisplay(PxMRead($))
EndFunction
;!
;!
; end PxMagic

code:
  ; begin PxMRead
;
;!
Function PxMRead($a)
Dim $
$a=Open(3,$a)
DO
$=$+' '+ReadLine(3)
$a=instr($,'#')
$=iif($a>0,left($,$a-1),$)
Until @ERROR<0
$PxMRead=$
$=close(3)
EndFunction
;!
;!
; end PxMRead

code:
; begin PxMDisplay
;
;!
Function PxMDisplay($)
Dim $t, $j, $w, $m, $f, $i, $y, $r, $a, $k
$f=CreateObject("Kixtart.Form")
$=split($)
FOR EACH $t in $
IF($t<>'')
$[$j]=$t
$j=$j+1
EndIf
NEXT
$t=right($[0],1)
$a=iif($t=3,3,1)
$k=iif($t=1,3,4)
$w=$a*$[1]
$m=(1.0/$[3])*255
For $i=$k to $j-1 Step $a
$y=($i-$k)/$w
$r=iif($t=1,255*(1-$[$i]),$m*$[$i])
$r=$r+256*iif($t=3,$m*$[$i+1],$r)+65536*iif($t=3,$m*$[$i+2],$r)
$f.PSet(($i-$y*$w)/$a,$y,$r)
Next
$t=$f.timer(9999)
$t.OnTimer="$f.hide"
$f.Show
While $f.Visible
$=Execute($f.DoEvents)
Loop

EndFunction
;!
;!
; end PxMDisplay

_________________________
Jack