Patch title: Release 85 bulk changes
Abstract:
File: /pliant/graphic/sample/escp2status.pli
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/protocol/lpr/device.pli"

constant debug true # false
constant gimpprint false


constant escape character:27

function num2 i -> s
  arg Int i ; arg Str s
  s := "12" ; s:characters map uInt16_li := i

function escp2 command parameters -> s
  arg Str command parameters s
  s := escape+"("+command+(num2 parameters:len)+parameters

function remote command parameters -> s
  arg Str command parameters s
  s := command+(num2 parameters:len)+parameters


function unhexa s -> i
  arg Str s ; arg Int i
  i := 0
  for (var Int j) 0 s:len-1
    var Int c := s:j number
    if c>="0":0:number and c<="9":0:number
      i := i*16+(c-"0":0:number)
    eif c>="A":0:number and c<="F":0:number
      i := i*16+(c-"A":0:number+10)
    eif c>="a":0:number and c<="f":0:number
      i := i*16+(c-"a":0:number+10)
    else
      return undefined

function escp2_ink_level name -> stat
  arg Str name stat
  stat := ""
  var Str device := lpr_device_search name
  (var Stream s) open device in+out+safe
  if s=failure
    return "failed to open '"+device+"'"
  s writechars "[0][0][0]"
  s writechars escape+character:1+"@EJL 1284.4[lf]@EJL     [lf]"
  s writechars escape+"@"
  s writechars escape+"@"
  s writechars (escp2 "R" "[0]REMOTE1")
  s writechars (remote "ST" "[0]"+character:1)
  s writechars escape+"[0][0][0]"
  if gimpprint
    s writechars escape+"[0]"
    s writechars escape+"[0]"
    s writechars escape+"[0]"
    s writechars "tz[lf]"
  while { var Str l := s readline ; l<>"" }
    if debug
      console l eol
    if (l parse any ";IQ:" any:(var Str inks) ";" any)
      for (var Int i) 0 inks:len-2 step 2
        stat += (shunt i<>0 "[lf]" "")+(shunt i=0 "black" i=2 "cyan" i=4 "magenta" i=6 "yellow" i=8 "light cyan" i=10 "light magenta" i=12 "light black" "")+" "+(string unhexa:(inks i 2))


export escp2_ink_level