OK, I cannot get multicalc to run on any machine I have. It tells me there is a dll missing. I go get the dll, put it in the same folder, system32, windows, system, root, doesn't matter, it wont work.

As advised, I started over from scratch, inserting one section of code at a time. Since I could not ever solve the serial issues, I scrapped DT's interrupts. I guess they have many applications where it wouldn't matter, but it seems his interrupts, while probably faster and more reliable, seem to act on a lower layer and keep screwing with the layer above. Maybe I don't quite comprehend it yet, maybe I will someday, but for now, I'm tired of looking at this GD thing and I want it to work and be gone from me...

Now my problem has reversed itself. The serial is screwing with the interrupt. Go figure. The interrupt quits firing while serin waits for input. Can I fix this? I don't see anything obvious in the datasheet in the registers... The only this I could see was uart interrupt instead of serin command. But am I then back to having to get the hardware serial running again? Or will it work from any pin?

Code:
'****************************************************************
'*  Name    : GALAXYFINALBUILD.BAS                              *
'*  Author  : After 9 wks, Who the hell cares?                  *
'*  Notice  : Copyright (c) 2014                                *
'*          : You have the right to STFU!                       *
'*  Date    : 6/7/2014                                          *
'*  Version : 43046721.11                                       *
'*  Notes   : "Remember to fill the gas can in case it fails    *
'*          :  while showing boss how to operate..."            *
'****************************************************************

#CONFIG
    __config _CONFIG1, _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF &  _CLKOUTEN_OFF & _IESO_OFF
    __config _CONFIG2, _PLLEN_OFF & _LVP_OFF
#ENDCONFIG

DEFINE OSC 20

ANSELA = 0
ANSELB = 0
INTCON.7 = 1
INTCON.4 = 1
OPTION_REG.6 = 1

LED var PORTC.7
TRISC.7 = 0
LED = 0
DOWN var PORTB.4
TRISB.4 = 0
DOWN = 0
EAST var PORTB.5
TRISB.5 = 0
EAST = 0
WEST var PORTB.6
TRISB.6 = 0
WEST = 0
RX var PORTC.4
TRISC.4 = 1          
TX var PORTC.1
TRISC.1 = 0
UP var PORTB.7
TRISB.7 = 0
UP = 0

a0 var byte
a1 var byte
i var byte
VerboseMode var byte
cereal var byte
Aencoder0Pos var word
Eencoder0Pos var word

ON INTERRUPT GOTO DoEncoder

VerboseMode = 1

goto MainMenu

DISABLE
doEncoder:
    if UP = 1 then 
        Eencoder0Pos = Eencoder0Pos + 1
        if VerboseMode = 1 then serout TX, 2, ["Eencoder0Pos = ", #Eencoder0Pos, 13, 10]
    endif
    if DOWN = 1 then 
        Eencoder0Pos = Eencoder0Pos - 1
        if VerboseMode = 1 then serout TX, 2, ["Eencoder0Pos = ", #Eencoder0Pos, 13, 10]
    endif
    if EAST = 1 then 
        if a0 = 5 then 
            Aencoder0Pos = Aencoder0Pos + 1
            A0 = 0
            if VerboseMode = 1 then serout TX, 2, ["Aencoder0Pos = ", #Aencoder0Pos, 13, 10]
        endif
        a0 = a0 + 1
    endif
    if WEST = 1 then 
        if a1 = 5 then 
            Aencoder0Pos = Aencoder0Pos - 1
            a1 = 0
            if VerboseMode = 1 then serout TX, 2, ["Aencoder0Pos = ", #Aencoder0Pos, 13, 10]
        endif
        a1 = a1 + 1
    endif
RESUME
ENABLE

MainMenu:
    gosub CLR
    serout TX, 2, ["******** MAIN MENU ********", 13, 10, 10]
    serout TX, 2, [" 1. Start Homing Sequence", 13, 10]
    serout TX, 2, [" 2. Manual JOG Mode", 13, 10]
    serout TX, 2, [" 3. Auto-Acquire Satellite", 13, 10]
    serout TX, 2, [" 4. Stow Dish for Travel", 13, 10, 10]
    serout TX, 2, ["Enter Your Selection:"]
    serin RX, 2, cereal
    if VerboseMode = 1 then serout tx, 2, [#cereal,13,10]
'    If cereal = "1" then goto HomeDish 
    If cereal = "2" then goto JogMenu
'    If cereal = "3" then goto TEST1
'    If cereal = "4" then goto Startup
goto MainMenu

JogMenu:
    gosub CLR
    pause 250
    serout TX, 2, ["***** JOG MENU *****", 13, 10, 10]
    serout TX, 2, ["U - UP", 13, 10]
    serout TX, 2, ["D - DOWN", 13, 10]
    serout TX, 2, ["E - EAST", 13, 10]
    serout TX, 2, ["W - WEST", 13, 10]
    serout TX, 2, ["S - ALL STOP", 13, 10]
    serout TX, 2, ["X - MAIN MENU", 13, 10, 10]
    serin RX, 2, cereal
    if cereal = "U" Then
        gosub allSTOP
        HIGH UP
    endif
    if cereal = "D" then
        gosub allSTOP
        HIGH DOWN
    endif
    if cereal = "E" then
        gosub allSTOP
        high EAST
    endif
    if cereal = "W" then
        gosub allSTOP
        HIGH WEST
    endif
    if cereal = "S" then gosub allSTOP
    if cereal = "X" then 
        gosub allSTOP
        goto MainMenu
    endif
goto JOGMenu

allSTOP:
    EAST = 0
    UP = 0
    DOWN = 0
    WEST = 0
    if VerboseMode = 1 then GOSUB POS
return

CLR:
    if VerboseMode = 0 then
        For i = 0 to 30
            serout TX, 2, [10]
        next i
    endif
return

abort:
    gosub allSTOP
    gosub clr
    serout TX, 2, ["USER STOP! -- MOVE ABORTED!", 13, 10]
    PAUSE(5000)
goto MainMenu

moveerror:
    gosub allSTOP
    gosub clr
    serout TX, 2, ["SYSTEM ERROR! -- MOVE ABORTED!", 13, 10]
    PAUSE(5000)
goto MainMenu

POS:
    pause 100
    serout TX, 2, ["  EL -- ", #Eencoder0Pos, "  AZ -- ", #Aencoder0Pos, 13, 10]
    pause 2000
return