Trial and error led me to this code after my description just below. It works just like I need it to but there has to be a better way. The formula provided is this:
Code:
0.125*(M1*256+M2-0x0FA0)
Seems simple, right? Not for me.....

So if M1=15 and M2=160 the result is 0. Both are byte variables so a rollover from M2 will increase M1 by 1. Increasing this number will provide a positive number and decreasing it will provide a negative number. In addition to the difficulty I was having with the formula, I had to account for formatting on my screen so triple digit numbers needed to be formatted differently than double digit numbers. Any comments are appreciated!

B1=256
B2=4000
MULT=125
G3T and G4T are byte sized variables
Code:
SELECT CASE G3T 
        CASE 15
            SELECT CASE G4T                    
                CASE IS < 160
                    DUMMY =MULT*((G3T*B1)+(G4T+B2))
                    MG2_NM = DIV32 100
                    MG2_NM=10000-MG2_NM
                    IF MG2_NM > 999 THEN
                        LCDOUT $FE, POS4-1,"-",DEC MG2_NM/10,".",DEC MG2_NM DIG 0
                    ELSE
                        LCDOUT $FE, POS4-1,"-",DEC MG2_NM/10,".",DEC MG2_NM DIG 0," "
                    ENDIF 
                CASE IS >= 160
                    MG2_NM=(G4T*125)-20000
                    IF MG2_NM > 9999 THEN
                        LCDOUT $FE,POS4-1," ",DEC MG2_NM/100,".",DEC MG2_NM DIG 0 
                    ELSE 
                        LCDOUT $FE,POS4-1," ",DEC MG2_NM/100,".",DEC MG2_NM DIG 0," " 
                    ENDIF
            END SELECT
        CASE IS < 15
            DUMMY =MULT*((G3T*B1)+(G4T+B2))' GOOD FOR NEGATIVE NM, INCLUDING ZERO
            MG2_NM = DIV32 100
            MG2_NM=10000-MG2_NM
            IF MG2_NM > 999 THEN
                LCDOUT $FE, POS4-1,"-",DEC MG2_NM/10,".",DEC MG2_NM DIG 0 
            ELSE
               LCDOUT $FE, POS4-1,"-",DEC MG2_NM/10,".",DEC MG2_NM DIG 0," "
            ENDIF 
        CASE ELSE
            DUMMY = MULT*((G3T*B1)+(G4T-B2)) 
            MG2_NM = DIV32 100
            IF MG2_NM > 999 THEN
                LCDOUT $FE,POS4-1," ",DEC MG2_NM/10,".",DEC MG2_NM//10
            ELSE
                LCDOUT $FE,POS4-1," ",DEC MG2_NM/10,".",DEC MG2_NM//10," "               
            ENDIF              
    END SELECT
If someone comes up with a one-line code I'm going to slit my wrists.....

I have another issue that I'm having difficulty solving. I'm viewing data that comes at a very fast rate. The number is very jumpy because it changes quickly. I know I can average it but if I average say 5 measurements, it would seem good for those five measurements but when compared with the next five measurements I would think the number would still appear jumpy. What is a good way to make a measurement look smooth? It looks like the data is sent about 90 times a second.