*** EEPROM programmer for 68HC11E1. PS, 8-oct-93 * This program runs in RAM of the HC11E1 and expects binary code * from SCI (9600,8,N,1) relocated for EEPROM address $b600. * Each byte is echoed with the value read back from the EEPROM cell. * End of code is assumed if no more data is received within 500ms. org RAM jmp main *** set SCI parameters initsci ldaa scsr anda #$40 transmit complete? beq initsci ldaa #$30 staa baud 9600 baud ldaa #$0c staa sccr2 enable sci rts *** poll for receive on SCI rxavl ldaa scsr anda #$20 receive buf full? rts return 0 if not *** wait for receive and read byte from SCI read ldaa scsr anda #$20 receive buf full? beq read no, try again... ldaa scdr read from buf rts *** write A to SCI write tst scsr transmit buf empty? bpl write no, try again... staa scdr write to buf rts *** program eeprom byte A at X eewrite tab erasing if necessary andb 0,x cba beq eewr1 ldab #$16 byte erase stab pprog stab 0,x ldab #$17 high voltage stab pprog jsr dly10 clr pprog eewr1 cmpa 0,x burning if necessary beq eewr2 ldab #$02 eelat = 1, eepgm = 0 stab pprog staa 0,x ldab #$03 eelat = 1, eepgm = 0 stab pprog jsr dly10 clr pprog ldaa 0,x read programmed data eewr2 rts *** delay 10ms dly10 ldy #2857 2857 * 3.5us dly10a dey bne dly10a rts main lds #$00ff init stack clr bprot jsr initsci ldx #EEPROM jsr read receive byte jsr eewrite first byte to EEPROM jsr write acknowledge byte loop1 inx ldy #$ffff loop2 dey beq done timeout: end of code jsr rxavl byte received? beq loop2 jsr read receive byte jsr eewrite next byte to EEPROM jsr write acknowledge byte bra loop1 done ldaa #$1f staa bprot jmp EEPROM execute the program