You're wrong about the VM processing tags differently. Tags are basically just a futile attempt by the compiler to make things other than cells. Once compiled, there are no tags - everything is processed by the VM as a cell.
EDIT: Also, bools CAN hold any number in Pawn, they just get a tag mismatch or something to that effect. Here is a proof of concept script:
Code:
#include <amxmodx>
public plugin_init()
{
new bool:mybool = bool:3
log_amx("mybool [%d]",_:mybool)
}
__________________