The 12F629 has a RETLW xx instruction at 03ffh.

Using DEFINE OSCCAL_1K 1 causes PBP to generate the following .asm code fragment;
Code:
 
        call    03ffh           ; Get oscillator calibration for 1K
        MOVE?AB OSCCAL          ; Set oscillator calibration
All this does is call location 03ffh. The RETLW instruction returns the factory oscillator calibration value in the W register, then it's placed in the osccal register by MOVE?AB OSCCAL.

If you have erased location 03ffh in this PIC, then you don't use DEFINE OSCCAL_1K 1 since there's no RETLW or xx value there,
and now there's no reason to call location 03ffh.

You can check this by placing your 12F629 in your programmer, and reading it, then viewing the .HEX file read from it.

Location 03ffh should have something like 3478.

34 = RETLW
78 = the factory osccal calibration value

Note that 78h is an arbitrary # that will vary from PIC to PIC. This is the factory oscccal calibration value. The 34 is always there if not erased.

If you have erased your 12F629 part including location 03ffh - you can still set the osccal register up for "center frequency" by loading it with 128d on power up.

Just drop OSCCAL = 128 in the top section of your code.

You can fine tune the osccal value by placing a scope on GP4, and tweaking the osccal value until you see a 1MHz signal output on GP4.

Setup GP4 to output the system clock Fosc/4 like this;

@ DEVICE INTRC_OSC_CLKOUT

If you're really hard-core, and want to use DEFINE OSCCAL_1K 1 each time, but you've erased this location, you can use;

POKECODE @$3FF, $78

Where you just replace $78 with your own osccal value you've determined outputs 1MHz on GP4.

If you're using MeLabs serial programmer, be sure to have Erase & Program Calibration selected. Otherwise the serial programmer will not erase or re-program this location.