173 lines
2.0 KiB
NASM
Raw Normal View History

2023-01-11 11:13:09 +01:00
//*****************************************************************************
// Boot loader. Load HACK code from SPI address 0x010000 (64k) into SRAM and GO
//*****************************************************************************
//
// Put your code here:
2024-11-23 16:56:29 +05:30
// 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