Patch title: Release 84 bulk changes
Abstract:
File: /pliant/graphic/sample/listing.pli
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"

function printer_listing filename
  arg Str filename
  (var Stream s) open filename in+safe
  var CBool first := true ; var CBool lf := false
  while not s:atend
    s raw_read addressof:(var Char ch) 1
    if lf and ch<>"[cr]" and ch<>"[lf]"
      console eol ; first := true ; lf := false
    if ch=character:27 and not first
      console eol ; first := true
    if ch:number>=32 and ch:number<128 and ch<>"[lb]" and ch<>"[rb]"
      console ch
    eif ch=character:27
      console "[lb]esc[rb]"
    eif ch="[cr]"
      console "[lb]cr[rb]"
    eif ch="[lf]"
      console "[lb]lf[rb]"
    else
      console "[lb]" ch:number "[rb]"
    first := false
    if ch="[cr]" or ch="[lf]"
      lf := true

export printer_listing