Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 168 to 168 | ||||||||
Read Byte | ||||||||
Changed: | ||||||||
< < | ; MSB first LDI 0 PLO R5 LDI 0xFF PHI R6 LDI 0xFF - 8 PLO R6 SEX R6 BITLOOP: OUT2 ; CLK for SPI, INC Rx GHI R6 ; set CARRY SHRC | |||||||
> > | GHI R0 ; D = 0 PLO R5 ; reset all bits LDI 0 - 8 ; counting up 8 times PLO R6 ; bit counter RDBITLOOP GLO R4 ; set CARRY SHR | |||||||
GLO R5 | ||||||||
Changed: | ||||||||
< < | B2 SETBIT ; branch if bit set | |||||||
> > | BN2 SETBIT ; branch if bit set (EF2 == 0) | |||||||
SHL ; bit not set BR SAVEBIT | ||||||||
Changed: | ||||||||
< < | SETBIT: SHLC SAVEBIT: | |||||||
> > | SETBIT SHLC SAVEBIT OUT P2 ; CLK for SPI, INC Rx | |||||||
PLO R5 GLO R6 | ||||||||
Changed: | ||||||||
< < | BNZ BITLOOP | |||||||
> > | BNZ RDBITLOOP | |||||||
about 200 cycles for one byte -> 1 ms -> 1 KiB takes about 1 s | ||||||||
Line: 198 to 190 | ||||||||
Write Byte | ||||||||
Changed: | ||||||||
< < | WRITEBYTE: LDI 0 PHI R6 LDI 8 | |||||||
> > | WRITEBYTE PLO R5 ; save transmit byte LDI 8 ; counter 8 bits | |||||||
PLO R6 | ||||||||
Changed: | ||||||||
< < | SEX R0 BITLOOP: GLO R5 ; get the next bit SHLC , next bit is in the carry | |||||||
> > | WRBITLOOP GLO R5 ; get the next bit SHL ; next bit is in the carry | |||||||
PLO R5 | ||||||||
Changed: | ||||||||
< < | LSNF OUT2,0b00000000 ; CLK for SPI with data bit cleared LSDF OUT2,0b00000001 ; CLK for SPI with data bit set | |||||||
> > | LSNF ; skip if bit is 0 OUT P2 BYTE 00000001B ; CLK for SPI with data bit cleared LSDF ; skip if bit is 1 OUT P2 BYTE 00000000B ; CLK for SPI with data bit set | |||||||
DEC R6 GLO R6 | ||||||||
Changed: | ||||||||
< < | BNZ BITLOOP | |||||||
> > | BNZ WRBITLOOP | |||||||
Line: 311 to 301 | ||||||||
Changed: | ||||||||
< < | ; MSB first LDI xyz ; EEPROM read command PLO R9 LDI 0 PLO R7 ; set page pointer PHI R8 ; set EEPROM address PLO R8 LDI 0x80 PHI R7 ; set block pointer BLOCKLOOP: GLO R9 ; write read command to the EEPROM PLO R5 CALL WRITEBYTE LDI 0 ; address bit 17 to 24 PLO R5 CALL WRITEBYTE GHI R8 ; address bit 8 to 16 PLO R5 CALL WRITEBYTE GLO R8 ; address bit 8 to 16 PLO R5 PAGELOOP: LDI 0 ; init read byte PLO R5 LDI 0xFF ; for the carry bits PHI R6 LDI 0xFF - 8 ; counting up 8 times PLO R6 ; bit counter SEX R6 ; dummy Rx for OUT RDBITLOOP: OUT2 ; CLK for SPI, INC Rx GHI R6 ; set CARRY SHRC GLO R5 B2 SETBIT ; branch if bit set SHL ; bit not set BR SAVEBIT SETBIT: SHLC SAVEBIT: PLO R5 GLO R6 BNZ BITLOOP GLO R5 ; get byte | |||||||
> > | ; TITL "EEPROM Boot Loader for Elf Memebership Card" ; EJCT 60 | |||||||
Added: | ||||||||
> > | CPU 1802 | |||||||
Changed: | ||||||||
< < | WRITEBYTE: LDI 0 PHI R6 LDI 8 PLO R6 SEX R0 WRBITLOOP: GLO R5 ; get the next bit SHLC , next bit is in the carry PLO R5 LSNF OUT2,0b00000000 ; CLK for SPI with data bit cleared LSDF OUT2,0b00000001 ; CLK for SPI with data bit set DEC R6 GLO R6 BNZ BITLOOP | |||||||
> > | NUMBER EQU 0 | |||||||
Added: | ||||||||
> > | ;
; Register Definitions:
;
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
;
; I/O Port Definitions:
;
P1 EQU 1
P2 EQU 2
P3 EQU 3
P4 EQU 4
P5 EQU 5
P6 EQU 6
P7 EQU 7
ORG 0H
; R0 program counter
; R1 subroutine pc
; R2 stack pointer
; R5.0 byte (read/write)
; R6.0 bit counter
; R4.0 carry bits
; R7 destination address
; R8 length
BOOTLOADER
| |||||||
Added: | ||||||||
> > | END | |||||||