diff options
| author | Ján Sučan <sucanjan@fit.cvut.cz> | 2017-05-10 15:13:29 +0200 |
|---|---|---|
| committer | Ján Sučan <sucanjan@fit.cvut.cz> | 2017-05-10 15:13:29 +0200 |
| commit | 02e24f0f533fe904c3a5275c4060c10c38d7c17a (patch) | |
| tree | 19d05c60e3d6a6782c4712de960a8f6705054063 /firmware/include/SHELL.INC | |
Uvodny commit, subory su rovnake ako na CD prilozenom k vytlacenemu texu bakalarskej prace, naviac je pridany len subor LICENCIA
Diffstat (limited to 'firmware/include/SHELL.INC')
| -rwxr-xr-x | firmware/include/SHELL.INC | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/firmware/include/SHELL.INC b/firmware/include/SHELL.INC new file mode 100755 index 0000000..f951a7f --- /dev/null +++ b/firmware/include/SHELL.INC @@ -0,0 +1,51 @@ +CMDLOOP:
+ ; Receive command safely, EXCEPT zero word
+ CALL REC_BYTE
+ CMP R14,#0
+ JMPR CC_NE,CMDLOOP_ERROR
+ CMP R15,#CMD_PING
+ JMPR CC_NE,CMDLOOP_NO_PING
+ ; Respond to ping
+ MOV R15,#SHELL_ACK
+ CALL SEND_BYTE
+ JMP CMDLOOP
+CMDLOOP_NO_PING:
+ MOV R13,#SEND_BYTE
+ MOV R12,#REC_BYTE
+ CALL ACK_DATA
+ CMP R14,#0
+ JMPR CC_EQ,CMDLOOP_OK
+CMDLOOP_ERROR:
+ MOV R15,R14
+ CALL SEND_BYTE
+ JMP CMDLOOP
+CMDLOOP_OK:
+ PUSH R15
+ MOV R15,#0
+ CALL SEND_BYTE ; Send zero byte
+ POP R15 ; Restore command number
+
+ CMP R15,#CMD_ERASE_BLOCKS
+ JMPR CC_NE,CMDLOOP_1
+ CALL ERASE_BLOCKS
+ JMP CMDLOOP
+CMDLOOP_1:
+ CMP R15,#CMD_READ
+ JMPR CC_NE,CMDLOOP_2
+ CALL READ
+ JMP CMDLOOP
+CMDLOOP_2:
+ CMP R15,#CMD_WRITE
+ JMPR CC_NE,CMDLOOP_3
+ CALL WRITE
+ JMP CMDLOOP
+CMDLOOP_3:
+ CMP R15,#CMD_IDENTIFY
+ JMPR CC_NE,CMDLOOP_4
+ CALL IDENTIFY
+ JMP CMDLOOP
+CMDLOOP_4:
+ CMP R15,#CMD_ERASE_CHIP
+ JMPR CC_NE,CMDLOOP
+ CALL ERASE_CHIP
+ JMP CMDLOOP
|
