anchor.diff:  /obj/item/integrated_circuit/logic/binary/proc/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B)
   	return FALSE
   
  +/obj/item/integrated_circuit/logic/binary/proc/comparable(var/datum/integrated_io/A, var/datum/integrated_io/B)
  +	return (isnum(A.data) && isnum(B.data)) || (istext(A.data) && istext(B.data))
  +
   /obj/item/integrated_circuit/logic/unary
   	inputs = list("A")
   	activators = list("compare" = IC_PINTYPE_PULSE_IN, "on compare" = IC_PINTYPE_PULSE_OUT)
  
positive.code: 	spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
  
  /obj/item/integrated_circuit/logic/binary/greater_than_or_equal/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B)
  	return A.data >= B.data
  
  /obj/item/integrated_circuit/logic/unary/not
  	name = "not gate"
  
negative.code: 	spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
  
  /obj/item/integrated_circuit/logic/binary/greater_than/do_compare(var/datum/integrated_io/A, var/datum/integrated_io/B)
  	if(comparable(A, B))
  		return A.data > B.data
  
  /obj/item/integrated_circuit/logic/binary/greater_than_or_equal
  	name = "greater_than or equal gate"
  