LOAD state CMPEQ DL[0] JMPT caseSleepInit CMPEQ DL[10] JMPT caseStartInitTest CMPEQ DL[11] JMPT caseWaitInitTest CMPEQ DL[12] JMPT caseReadInitTest CMPEQ DL[20] JMPT caseStartInitWrite1 CMPEQ DL[21] JMPT caseWaitInitWrite1 CMPEQ DL[22] JMPT caseReadInitWrite1 CMPEQ DL[30] JMPT caseStartInitWrite2 CMPEQ DL[31] JMPT caseWaitInitWrite2 CMPEQ DL[32] JMPT caseReadInitWrite2 CMPEQ DL[60] JMPT caseCloseInit ### Auf eine 0 warten ### caseSleepInit: LOAD DL[0] STORE t0 LOAD clk CMPEQ DL[1] JMPF caseSleepInitDoNothing LOAD DL[10] # Status auf naechsten Block setzen STORE state caseSleepInitDoNothing: JMP endSwitchInit ### Fuehre den ersten 1-Wire Befehl aus: Lesen der 3. Seite ### caseStartInitTest: LOAD DL[1] # Busy Flag setzen STORE busy LOAD BL[h55] # ReadRom STORE t0 LOAD addr1 STORE t1 LOAD addr2 STORE t2 LOAD addr3 STORE t3 LOAD addr4 STORE t4 LOAD addr5 STORE t5 LOAD addr6 STORE t6 LOAD addr7 STORE t7 LOAD addr8 STORE t8 LOAD BL[hAA] # Read Page STORE t9 LOAD BL[h18] # Seite 3 STORE t10 LOAD BL[h00] STORE t11 PUSH BL[h10] PUSH &t0 PUSH BL[12] PUSH BL[10] CALL WL[hFF0A] LOAD S LOAD DL[11] # Wechsel zu naechstem Status STORE state JMP endSwitchInit ### Warte darauf, dass das erste 1-Wire Signal fertig gesendet wurde ### caseWaitInitTest: PUSH BL[h11] PUSH &t0 PUSH BL[12] PUSH BL[10] CALL WL[hFF0A] LOAD S CMPEQ BL[h10] # h10 - noch am arbeiten JMPT caseWaitInitTestDoNothing LOAD DL[12] # Wechsel zu naechstem Status STORE state caseWaitInitTestDoNothing: JMP endSwitchInit ### Lese die Daten aus ### caseReadInitTest: LOAD t4 CMPEQ DL[h40] JMPF caseStartInitWrite1 LOAD DL[60] # Wechsel zu naechstem Status STORE state JMP endSwitchInit caseStartInitWrite1: LOAD BL[h55] # ReadRom STORE t0 LOAD addr1 STORE t1 LOAD addr2 STORE t2 LOAD addr3 STORE t3 LOAD addr4 STORE t4 LOAD addr5 STORE t5 LOAD addr6 STORE t6 LOAD addr7 STORE t7 LOAD addr8 STORE t8 LOAD BL[h55] # Write Page STORE t9 LOAD BL[h1C] # Seite 3 - Eintrag 1C STORE t10 LOAD BL[h00] STORE t11 LOAD BL[h40] # 64 schreiben STORE t12 PUSH BL[h10] PUSH &t0 PUSH BL[13] PUSH BL[2] CALL WL[hFF0A] LOAD S LOAD DL[21] # Wechsel zu naechstem Status STORE state JMP endSwitchInit ### Lese die Daten aus ### caseWaitInitWrite1: PUSH BL[h11] PUSH &t0 PUSH BL[13] PUSH BL[2] CALL WL[hFF0A] LOAD S CMPEQ BL[h10] # h10 - noch am arbeiten JMPT caseWaitInitWrite1DoNothing LOAD DL[22] # Wechsel zu naechstem Status STORE state caseWaitInitWrite1DoNothing: JMP endSwitchInit ### Lese die Daten aus ### caseReadInitWrite1: JMP caseStartInitWrite2 caseStartInitWrite2: LOAD BL[h55] # ReadRom STORE t0 LOAD addr1 STORE t1 LOAD addr2 STORE t2 LOAD addr3 STORE t3 LOAD addr4 STORE t4 LOAD addr5 STORE t5 LOAD addr6 STORE t6 LOAD addr7 STORE t7 LOAD addr8 STORE t8 LOAD BL[h55] # Write Page STORE t9 LOAD BL[h08] # Seite 1 - Eintrag 8 - 11 STORE t10 LOAD BL[h00] STORE t11 LOAD BL[h00] # 00 schreiben STORE t12 LOAD BL[h00] # 00 schreiben STORE t13 LOAD BL[h00] # 00 schreiben STORE t14 LOAD BL[h00] # 00 schreiben STORE t15 LOAD BL[h00] # 00 schreiben STORE t16 LOAD BL[h00] # 00 schreiben STORE t17 LOAD BL[h00] # 00 schreiben STORE t18 LOAD BL[h00] # 00 schreiben STORE t19 PUSH BL[h10] PUSH &t0 PUSH BL[16] PUSH BL[2] CALL WL[hFF0A] LOAD S LOAD DL[31] # Wechsel zu naechstem Status STORE state JMP endSwitchInit ### Lese die Daten aus ### caseWaitInitWrite2: PUSH BL[h11] PUSH &t0 PUSH BL[16] PUSH BL[2] CALL WL[hFF0A] LOAD S CMPEQ BL[h10] # h10 - noch am arbeiten JMPT caseWaitInitWrite2DoNothing LOAD DL[32] # Wechsel zu naechstem Status STORE state caseWaitInitWrite2DoNothing: JMP endSwitchInit ### Lese die Daten aus ### caseReadInitWrite2: # Nix zu tun ### Warten bis Takt vorbei ### caseCloseInit: LOAD DL[0] # Busy Flag setzen STORE busy LOAD clk CMPEQ DL[0] JMPF caseCloseInitDoNothing LOAD DL[0] STORE state caseCloseInitDoNothing: JMP endSwitchInit endSwitchInit: