I could be wrong but I have to ask about using "CALL" instead of GOSUB for the sub routines CHECK and achizitie.

From the MCS Help section:
CALL Label

Execute the assembly language subroutine named Label. GOSUB is normally used to execute a PicBasic subroutine. The main difference between GOSUB and CALL is that with CALL, the existence of Label is not checked until assembly time. Using CALL, a Label in an assembly language section can be accessed that is otherwise inaccessible to PicBasic.

Example

CALL pass ' Execute assembly language subroutine named _pass
I've never used it in place of GOSUB so don't know if a RETURN works the same in this case.