here is a program I created to face stock, you can adapt it to your needs to surface your table top.
You can make multiple light passes till it cleans up. Play/learn with it, till you understand what it can do for you.
(CUTS Top Face of stock)
(STARTED AT Z0 TOP OF rough PART)
M03 (start spindle)
G1G90X0Y0Z0.25F60. (Go to lower left corner of stock)
Z0 ( Feed to face of rough stock)
(load variables)
#1000=[2] (Length in X in this case inches)
#1001=[2] (Width in Y)
#1002=[-0.1] (depth each of cut pass)
#1004=0 (Top of part)
#1005=0.65 (offset cut distance smaller than .75 cutter diameter)
#1006=[#1005*2] (Compute step over)
#1007=[#1001/#1006] (Compute passes)
M98 P5 L8 (call subroutine CUT DOWN IN Z in this case 0.1 * 8 = .8")
M05 (stop spindle)
G0G90Z.25 (move back up)
X0Y0 (go home)
M30 (All done)
O5
M98 P10 L1 (call sub to feed down)
M98 P20 L1 (call sub to face part)
G0G90Z0 (Move out of the way)
X0Y0 (Go Home)
M99
O10
#1004=[#1004+#1002] (Calculate New cut depth)
G1Z[#1004] (MOVE TO CUT DEPTH)
M99
O20
M98 P30 L[#1007] (call sub to cut reps ACROSS)
M99
O30
(THIS IS THE SUB TO CUT FACE)
G1 G91Y[#1005] (Increment over in Y)
G90X[#1000]F80. (Cut across part)
G91Y[#1005] (again increment over)
G90X0 (Cut back across part)
M99