as i mentioned before, there might be a problem on the following lines.

SERIN2 portb.1, 84, [WAIT($0A),STR buf\12]

what is this value doing in here $0A is that the first digit of the tag?

pause 500
high portb.1 ' deactivate reader

Check_List:
FOR tagNum = 1 to 2 ' scan through known tags
FOR idx = 0 TO 11 ' scan bytes in tag
READ (((tagNum-1)*12 ) + idx), char ' get tag data from table

what is this value after tagnum -1 is doing? is this the number of the digits of the tag?

IF (char <> buf(idx)) THEN Bad_Char ' compare tag to table