;
;
;
WRITEEE:SETB    RNEDATA
        SETB    EE_CS
        SETB    EE_DOUT
        CLR     SCLK
;
        CLR     EE_CS           ;SELECT MEMORY
        MOV     47H,#06H        ;WREN INSTRUCTION
        CALL    EOUT8
        SETB    EE_CS           ;LATCH WREN INSTRUCTION
        NOP
        NOP
;
        CLR     EE_CS           ;SELECT MEMORY
        MOV     47H,#02H        ;WRITE COMMAND
        CALL    EOUT8
        MOV     47H,DPH         ;LOAD HIGH 8 BITS OF ADDRESS
        CALL    EOUT8
        MOV     47H,DPL         ;LOAD LOW 8 BITS OF ADDRESS
        CALL    EOUT8
        MOV     47H,48H         ;THE DATA TO BE WRITTEN
        CALL    EOUT8
        SETB    EE_CS           ;LATCH DATA INTO MEMORY
        CALL    ELOOP           ;LET CS SETTLE BEFORE WIPWAIT CHANGE
        CALL    WIPWAIT
        RET
;
;
;
;*****************************************
;*****************************************
;IF WIP FLAG = 1 A WRITE IS IN PROGRESS
;WAIT FOR THE WIP TO GO LOW BEFORE WRITING
;TO MEMORY AGAIN.
;TIMEOUT TO ERROR IF BOTH 38H AND 39H
;REACH ZERO BEFORE WIP FLAG CHANGE SEEN
;THE YELLOW FLASHING LED AT "BADMEM"
;INDICATES A PROBLEM WITH THE MEMORY CHIP
;*****************************************
;*****************************************
;
;
WIPWAIT:MOV     38H,#0FFH       ;SET UP 2 BYTE COUNT DOWN TIMER
FILOOP: MOV     39H,#0FFH       ;IF TIMER OVERFLOWS THEN MEMORY CHIP DID NOT RESPOND
SELOOP: CLR     EE_CS           ;SELECT MEMORY
        MOV     47H,#05H        ;READ STATUS REGISTER
        CALL    EOUT8
        NOP
        NOP
        CALL    EIN8            ;READ INTO 46H
        SETB    EE_CS           ;UNSELECT MEMORY
        MOV     A,46H
        JNB     ACC.0,WIPOK     ;IF WIP FLAG SET THEN WRITE OK
        DJNZ    39H,SELOOP
        DJNZ    38H,FILOOP
        JMP     BADMEM          ;COUNTDOWN TIMER TIMED OUT
WIPOK:  RET
;
;
;