Instructs the compiler that LCALL statements must be used.
Internally when a subroutine is called the ACALL statement is used.
The ACALL instruction needs only 2 bytes (the LCALL needs 3 bytes)
The ACALL statement however can only address routines with a maximal offset of 2048 within the page. AT89C2051 chips will have no problems with that.
When code is generated for another uP, the subroutine being called can be further away and you will receive an error. With the $LARGE statement you instruct the compiler to use the LCALL statement which can address the full 64K address space.
$LARGE 'I received an error 148 so I need this option