;****************************************************************************** ;* E E P R O M P A R A L L E L W R I T E * ;* * ;* Written by: JS Lim * ;* Location : Singapore Application Lab. * ;* Filename : EEPPWS6.asm * ;* Date : 17/04/91 * ;* Revision : 1.0 * ;****************************************************************************** ; ; ; Functional Description: ; ; PARALLEL MODE EEPROM WRITE ROUTINE. ; ; THIS ROUTINE READS THE DATA FROM PMD0-PMD7 AND WRITES THEM ; ; IN THE CORRESPONDING EEPROM ADDRESSES AS SPECIFIED BY ; ; PMA0-PMA7. THE VALUE IN PMNB REGISTER DETERMINES HOW MANY ; ; BYTES ARE TO BE WRITTEN. ; ; ONLY 1 ROW WILL BE WRITTEN AT ANY ONE TIME. ; ; IN A ROW, ONLY THE ADDRESSES WRITTEN TO WILL BE AFFECTED. ; ; ; ; DESTINATION ADDRESS IN PMA0-PMA7 ROW AFFECTED ; ; -------------------------------- ------------ ; ; 0000 0XXX 0 ; ; 0000 1XXX 1 ; ; 0001 0XXX 2 ; ; 0001 1XXX 3 ; ; : : ; ; 0011 1XXX 7 ; ; ; ; ; ; Register Definition: ; ; EECR .def ; EEPROM CONTROL REGISTER ; ; IOR .def ; INTERRUPT OPTION REGISTER ; ; DRAMWR .def ; DATA RAM WINDOW REGISTER ; ; A .def ; ST6 A-REG ; ; X .def ; ST6 X-REG ; ; Y .def ; ST6 Y-REG ; ; PMNB .def ; NUMBER OF BYTES TO BE WRITTEN ; ; PMD0-PMD7 .def ; 8 RAM SPACE CONTAINING DATA TO BE WRITTEN ; ; PMA0-PMA7 .def ; 8 RAM SPACE CONTAINING CORRESPONDING ; ; ; DESTINATION ADDRESSES OF THE SAME ROW. ; ; ; ; ; ; PMDD0 .EQU ; THE BASE ADDRESS OF THE SOURCE DATA ; ; PMAD0 .EQU ; THE BASE ADDRESS OF THE DESTINATION ; ; ; ; Input Parameters: ; ; PMNB : # BYTES TO WRITE (RESET TO ZERO ON EXIT). ; ; PMD0 - PMD7 : CONTAIN DATA (CORRESPONDING TO PMA0-PMA7 ; ; ADDRESSES) TO WRITE TO THE EEPROM. ; ; PMA0 - PMA7 : CONTAIN EEPROM DESTINATION ADDRESSES OF ; ; THE SAME ROW. ; ; ; ; Output Parameters: ; ; - none - ; ; ; ; ST6 Registers affected: ; ; A,X,Y,V REGISTERS ; ; ; ; Memory Size: xx ; ; ; ; Stack Level: 1 ; ; ; ; ** NOTE: ; ; 1) MAX. OF 8 BYTES OF THE "SAME ROW" ARE WRITTEN PARALLELLY . ; ; ; ; 2) THIS PROGRAM ALWAYS READ THE RAM SPACE IN ASCENDING ORDER. ; ; THEREFORE, IF LESS THAN 8 BYTES ARE TO BE WRITTEN IN PARALLEL,; ; THE DATA MUST OCCUPY THE LOWER OF THE RAM SPACE RESERVED FOR ; ; PARALLEL-WRITE DATA AND ADDRESSES. ; ; ; ; 3) CALLING PMWP0S6 WILL WRITE TO PAGE 0 OF EEPROM, AND ; ; CALLING PMWP1S6 WILL WRITE TO PAGE 1 OF EEPROM. ; ; ; ;****************************************************************************** PMWP0S6 LDI DRAMWR,1 ; SELECT PAGE 0 OF EEPROM JP PMW1S6 PMWP1S6 LDI DRAMWR,2 ; SELECT PAGE 1 OF EEPROM PMW1S6 RES 4,IOR ; DISABLE INTERRUPT PMW2S6 JRS 1,EECR,PMW2S6 ; BUSY ? SET 0,EECR ; ENABLE EEPROM WRITE PMW2BS6 JRS 1,EECR,PMW2BS6 ; BUSY ? SET 2,EECR ; ENABLE EEPROM PARALLEL WRITE LDI V,PMAD0 LDI Y,PMDD0 PMW3S6 LD A,V LD X,A LD A,(X) LD X,A LD A,(Y) PMW3AS6 JRS 1,EECR,PMW3AS6 ; BUSY ? LD (X),A INC V INC Y DEC PMNB JRNZ PMW3S6 PMW3BS6 JRS 1,EECR,PMW3BS6 ; BUSY ? LDI EECR,0DH ; PARALLEL WRITE START. PMW4S6 JRS 1,EECR,PMW4S6 ; BUSY ? LDI EECR,0 ; DISABLE EEPROM WRITE. SET 4,IOR ; ENABLE INTERRUPTS. RET ;==============={END OF EEPROM PARALLEL WRITE}================================