anchor.diff:  	print >>f, "    r = extra_setup(inst, extra_arg);"
   	print >>f, "    if(r != 0) return r;"
   
  -    for name, type, dir in pins:
  +    for name, type, dir, value in pins:
           print >>f, "    r = hal_pin_%s_newf(%s, &(inst->%s), comp_id," % (
               type, dirmap[dir], name)
           print >>f, "        \"%%s%s\", prefix);" % to_hal("." + name)
           print >>f, "    if(r != 0) return r;"
  +        if value is not None:
  +            print >>f, "    *(inst->%s) = %s;" % (name, value)
   
       for name, type, dir, value in params:
           print >>f, "    r = hal_param_%s_newf(%s, &(inst->%s), comp_id," % (
  
positive.code: 
      print >>f
      print >>f, "struct state {"
      for name, type, dir in pins:
          if names.has_key(name):
              raise RuntimeError, "Duplicate item name: %s" % name
          print >>f, "    hal_%s_t *%s;" % (type, name)
  
negative.code:     # When we start warning about s32/u32 this is where the warning goes
      return typemap.get(type, type)
      
  def pin(name, type, dir, doc, value):
      type = type2type(type)
      if name in names:
          Error("Duplicate item name %s" % name)
      docs.append(('pin', name, type, dir, doc, value))
      names[name] = None
      pins.append((name, type, dir, value))
  
  def param(name, type, dir, doc, value):
      type = type2type(type)
  