def unpacked_picture_bytes
bitmap_lines=[]
colour_map=[]
(record_nos-[0]).each do |record_no|
record=@contents[record_no]
line=""
p=0
while p<record.length do
b=record[p]
p+=1
case b
when (0..0x3F) then
b.times do
line<<record[p].chr
p+=1
end
when (0x40..0x7F) then
pattern=record[p,8]
rep_count=b % 0x40
p+=8
line<<pattern*rep_count
when (0x80..0xff) then
rep_count=b - 0x80
b=record[p]
b = 0 if b.nil?
rep_count.times do
line<<b.chr
end
p+=1
else
raise "invalid code byte #{b}"
end
end
raise "malformed line (length was #{line.length}) at record ##{record_no}" unless line.length>=1448
bitmap_lines[(record_no-1)*2]=line[0,640]
bitmap_lines[1+(record_no-1)*2]=line[640,640]
colour_map[(record_no-1)*2]=line[1288,80]
colour_map[(record_no-1)*2+1]=line[1368,80]
end
[bitmap_lines,colour_map]
end