//***************************************************************************** // Boot loader. Load HACK code from SPI address 0x010000 (64k) into SRAM and GO //***************************************************************************** // // Put your code here: // read data starting at address // 0x03 0x01 0x00 0x00 @3 D=A @100 M=D @1 D=A @101 M=D @102 M=0 @103 M=0 // wake up from deep power down and wait 3us // 0xAB @171 D=A @SPI M=D @4 D=A @COUNT M=D (DECR1) @COUNT DM=M-1 @DECR1 D;JGT @511 D=A @SPI M=D @21 D=A @COUNT M=D (DECR2) @COUNT DM=M-1 @DECR2 D;JGT //command stack base address @100 D=A @READCOMMAND M=D @DIRECTION M=0 @WORDCOUNT M=0 @WAITREAD 0;JEQ (WAITREAD) @SPI D=M @WAITREAD D;JLT @READ 0;JMP (READ) // read @READCOMMAND A=M D=M @SPI M=D @READCOMMAND M=M+1 @104 D=A @READCOMMAND D=D-M @WAITREAD D;JGT @ENDREAD 0;JMP (ENDREAD) @WAITWRITE 0;JMP (WAITWRITE) @SPI D=M @WAITWRITE D;JLT @WRITE 0;JMP (WRITE) @SPI M=0 @4 D=A @COUNT M=D (FROMSPI) @COUNT DM=M-1 @FROMSPI D;JGT @DIRECTION D=M @WESTWORD D;JEQ @EASTWORD D;JGT (WESTWORD) @SPI D=M @R13 M=D DM=D+M DM=D+M DM=D+M DM=D+M DM=D+M DM=D+M DM=D+M DM=D+M @DIRECTION M=1 @WAITWRITE 0;JMP (EASTWORD) @WORDCOUNT D=M @SRAM_A M=D @SPI D=M @R14 M=D @R13 D=M @R14 D=D+M @SRAM_D M=D @DIRECTION M=0 @WORDCOUNT M=M+1 @6 D=A @WORDCOUNT D=D-M @ENDWRITE D;JEQ @WAITWRITE 0;JMP (ENDWRITE) @185 D=A @SPI M=D @GO M=1