$NOMOD166 $EXTEND $SEGMENTED $STDNAMES(reg167b.def) NAME BOOT ; Loader, zwischen 0F600h und 0F7FFh im int. RAM SSKDEF 0 ; Empf„ngt Applikation, zuerst Command Byte: REGDEF R0-R5 ; 'p' Programmieren, danach 4 Adreá- u. 1 Datenbyte SEC1 SECTION CODE AT 0F600h ; 'e' Ende des Ladevorganges und ; 'l' L”schen des Flashes MAIN PROC NEAR ; der Sendung, Handshake durch Zurcksenden des ASSUME DPP3: SYSTEM ; Wertes 2 und abschlieáender Software-Reset Init: MOV SYSCON,#0085h ; ext. Speicher aktivieren ;MOV ADDRSEL1,#0004h ; 64 kB ext. RAM ;MOV BUSCON1,#04AFh ; Buskonfiguration fuer RAM: 0 Waitstates... ;MOV BUSCON0,#04AFh ; Buskonfiguration fuer restl. Bereiche ;NOP ;NOP JMPS 0,Next ; Dummy Jump zum n„chsten Befehl Next: FAR ; notwendig bei Žnderung der Speicherkonfig. MOV DPP0,#0 ; Data Page Pointer Update MOV DPP1,#1 MOV DPP2,#2 MOV DPP3,#3 NOP EINIT ; Ende der Initialisierungsphase CmdR: JNB S0RIR,CmdR BCLR S0RIR CMP S0RBUF,#70h ; Befehl p: Programmieren JMP cc_EQ,Adr4 CMP S0RBUF,#65h ; Befehl e: Ende JMP cc_EQ,End1 CMP S0RBUF,#6Ch ; Befehl l: Ende JMP cc_EQ,Erase JMP CmdR Adr4: JNB S0RIR,Adr4 ; Empfang A31-A24 BCLR S0RIR Adr3: JNB S0RIR,Adr3 ; Empfang A16-A23 BCLR S0RIR MOVB RL0,S0RBUF Adr2: JNB S0RIR,Adr2 ; Empfang A15-A8 BCLR S0RIR MOVB RH1,S0RBUF Adr1: JNB S0RIR,Adr1 ; Empfang A7-A0 BCLR S0RIR MOVB RL1,S0RBUF Dat1: JNB S0RIR,Dat1 ; Empfang D7-D0 BCLR S0RIR MOVB RL2,S0RBUF AND R0,#00FFh MOV R4,R1 ; R4=A0 AND R4,#0001h CALL Unlock MOV R3,#05555h ; Befehl programmieren: 5555/A0 MOV RL5,#0A0h SHL R3,#01 ADD R3,R4 EXTS R0,#1 MOVB [R3],RL5 EXTS R0,#1 ; Segmentierung umgehen MOVB [R1],RL2 ; Kopieren des empfangenen Datenbytes auf die Adr. JMP CmdR ; N„chster Frame Erase: MOV R4,#0 MOV R2,#0 Erase1: CALL Unlock MOV R3,#05555h ; Befehl loeschen: 5555/80 MOV RL5,#080h SHL R3,#01 ADD R3,R4 EXTS R0,#1 MOVB [R3],RL5 CALL Unlock MOV R3,#05555h ; Befehl Chip Erase: 5555/10 MOV RL5,#010h SHL R3,#01 ADD R3,R4 EXTS R0,#1 MOVB [R3],RL5 ADD R4,#1 CMP R4,#1 ; 2. Flash l”schen JMP cc_EQ,Erase1 ELop: SUB R3,#1 EXTS R0,#1 ; Abfrage, ob mit L”schen fertig MOVB RL4,[R3] ADD R3,#1 EXTS R0,#1 MOVB RH4,[R3] AND R4,#8080h CMP R4,#8080h JMP cc_EQ,EOk JMP ELop EOk: MOV S0TBUF,#04 ; Sende Handshake zum PC JMP CmdR End1: MOV S0TBUF,#02 ; Sende Handshake zum PC TrR1: JNB S0TIR,TrR1 BCLR S0TIR MOV S0TBUF,#03 ; Sende Dummy - Wort zum PC, um obige Sendung TrR2: JNB S0TIR,TrR2 ; nicht durch Software-Reset zu unterbrechen SRST Unlock: MOV R3,#05555h ; Erster Unlock-Cycle 5555/AA MOV RL5,#0AAh SHL R3,#01 ADD R3,R4 EXTS R0,#1 MOVB [R3],RL5 MOV R3,#02AAAh ; Zweiter Unlock-Cycle 2AAA/55 MOV RL5,#055h SHL R3,#01 ADD R3,R4 EXTS R0,#1 MOVB [R3],RL5 RET RETV MAIN ENDP SEC1 ENDS END