#! lua
local sys, dim, !, $ in require "riscos"
local task = require "wimp.task"
local CRC = task:spawn "CRC"
CRC.mask = 3|(7<<4)|(1<<8)|(7<<11)|(7<<22)
local icon = require "wimp.icon"
CRC.create = icon.create
CRC:init { 3; } -- Message_DataLoad
CRC:create {-2,0,0,80,80,2,0x454c4946,0x5858585f,0}
local info = "size = %d bytes, CRC = %d"
local handler in CRC
handler.mesg[3] = \ (self)
      local b in self
      local name = b + 44
      local r0,r1,r2,r3,size = sys (8, 17, name) -- OS_File
      if r0 ~= 1 then
         =>  self:report ("not a file", 19) == 2
      end -- if
      local buf = dim (size) -- temporary buffer
      sys (8, 16, name, buf, 0) -- load
      local crc = sys ("OS_CRC", 0, buf, buf + size, 1)
      => self:report (info:format (size, crc), 19) == 2
      end
CRC:run ( )