; wrflsh.inc ; ; SPDX-FileCopyrightText: Copyright (C) 2019, 2021 Antonio Villena ; ; SPDX-License-Identifier: GPL-3.0-only ; Compatible compilers: ; SJAsmPlus, include zxuno.def ; ------------------------ ; Write to SPI flash ; Parameters: ; A: number of pages (256 bytes) to write ; DE: target address without last byte ; BC': zxuno_port+$100 (constant) ; HL': source address from memory ; ------------------------ wrflsh ex af, af' xor a wrfls1 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 6 ; envío write enable wreg flash_cs, 1 ; desactivamos spi, enviando un 1 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, $20 ; envío sector erase out (c), d out (c), e out (c), a wreg flash_cs, 1 ; desactivamos spi, enviando un 1 wrfls2 call waits5 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 6 ; envío write enable wreg flash_cs, 1 ; desactivamos spi, enviando un 1 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 2 ; page program out (c), d out (c), e out (c), a ld a, $20 exx ld bc, zxuno_port+$100 wrfls3 inc b outi inc b outi inc b outi inc b outi inc b outi inc b outi inc b outi inc b outi dec a jr nz, wrfls3 exx wreg flash_cs, 1 ; desactivamos spi, enviando un 1 ex af, af' dec a jr z, waits5 ex af, af' inc e ld a, e and $0f jr nz, wrfls2 ld hl, wrfls1 push hl waits5 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 5 ; envío read status in a, (c) waits6 in a, (c) and 1 jr nz, waits6 wreg flash_cs, 1 ; desactivamos spi, enviando un 1 ret