
// C CODE VERSION

#define TABLE_SIZE 1024

char code table2[TABLE_SIZE]=       /* setup the table and */
                   {0x55, 0x34, 0xAA, 0x32, 0x99, 

                     /* ............ initialize part of it */

                    0x21, 0x32, 0x75, 0x54, 0xA3};

// subroutine to look up one element from the table2 of byte
// values and return the byte value. the entry argument is 
// a pointer to the index to fetch from.

char lookup2(unsigned int index)
{
    return(table2[index]);
}


; ASSEMBLER CODE VERSION

TABLE3:
    DB  055H, 034H, 0AAH, 032H, 099H
    DB  021H, 032H, 075H, 054H, 0A3H

    ; ......... initilize all the entries

    DB  000H, 000H, 000H, 000H, 000H

; SUBROUTINE TO LOOKUP ONE ELEMENT OF TABLE3 OF BYTE 
; VALUES AND RETURN THE BYTE VALUE IN THE A REGISTER
; THIS HAS THE INDEX OF THE ARRAY IN R6::R7

LOOKUP3:
    MOV     A,#LOW (TABLE3)  ; get address of table3 + R6::R7
    ADD     A,R7             ; into DPTR
    MOV     DPL,A
    MOV     A,#HIGH (TABLE3)
    ADDC    A,R6
    MOV     DPH,A
    CLR     A
    MOVC    A,@A+DPTR        ; fetch table element to A reg
    RET     
