From aac709bed5ce07315a23bed5f0d5e080b0df26a0 Mon Sep 17 00:00:00 2001 From: Ivan Tatarinov Date: Sat, 24 Apr 2021 21:44:26 +0300 Subject: [PATCH] utils: separated `wrflsh` function into `wrflsh.inc` file --- utils/Makefile | 7 ++++ utils/corclean.asm | 70 +--------------------------------------- utils/corebios.asm | 70 +--------------------------------------- utils/romsupgr.asm | 70 +--------------------------------------- utils/upgr16m.asm | 71 +--------------------------------------- utils/upgr32m.asm | 71 +--------------------------------------- utils/upgrade.asm | 71 +--------------------------------------- utils/wrflsh.inc | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 93 insertions(+), 417 deletions(-) create mode 100644 utils/wrflsh.inc diff --git a/utils/Makefile b/utils/Makefile index a02f85a..a34fb94 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -77,6 +77,7 @@ $(BUILD_DIR)/CORCLEAN: corclean.asm\ zxuno.def\ Print.inc\ rdflsh.inc\ + wrflsh.inc\ | $(BUILD_DIR) $(AS) $(AFLAGS) --raw=$@ $< @@ -85,6 +86,7 @@ $(BUILD_DIR)/COREBIOS: corebios.asm\ esxdos.def\ Print.inc\ rdflsh.inc\ + wrflsh.inc\ | $(BUILD_DIR) $(AS) $(AFLAGS) --raw=$@ $< @@ -101,6 +103,7 @@ $(BUILD_DIR)/ROMSUPGR: romsupgr.asm\ esxdos.def\ Print.inc\ rdflsh.inc\ + wrflsh.inc\ | $(BUILD_DIR) $(AS) $(AFLAGS) --raw=$@ $< @@ -108,6 +111,7 @@ $(BUILD_DIR)/UPGR16M: upgr16m.asm\ zxuno.def\ esxdos.def\ Print.inc\ + wrflsh.inc\ | $(BUILD_DIR) $(AS) $(AFLAGS) --raw=$@ $< @@ -115,6 +119,7 @@ $(BUILD_DIR)/UPGRZX2: upgr32m.asm\ zxuno.def\ esxdos.def\ Print.inc\ + wrflsh.inc\ | $(BUILD_DIR) echo ' define zxdos 1' >upgr32m.def $(AS) $(AFLAGS) --raw=$@ $< @@ -124,6 +129,7 @@ $(BUILD_DIR)/UPGRZXD: upgr32m.asm\ zxuno.def\ esxdos.def\ Print.inc\ + wrflsh.inc\ | $(BUILD_DIR) echo ' define zxdos 0' >upgr32m.def $(AS) $(AFLAGS) --raw=$@ $< @@ -133,6 +139,7 @@ $(BUILD_DIR)/UPGRADE: upgrade.asm\ zxuno.def\ esxdos.def\ Print.inc\ + wrflsh.inc\ | $(BUILD_DIR) $(AS) $(AFLAGS) --raw=$@ $< diff --git a/utils/corclean.asm b/utils/corclean.asm index f935b85..27986e7 100644 --- a/utils/corclean.asm +++ b/utils/corclean.asm @@ -74,75 +74,7 @@ normal ld a, 0 include Print.inc include rdflsh.inc - -; ------------------------ -; Write to SPI flash -; Parameters: -; A: number of pages (256 bytes) to write -; DE: target address without last byte -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/corebios.asm b/utils/corebios.asm index 8728d06..1a4f287 100644 --- a/utils/corebios.asm +++ b/utils/corebios.asm @@ -132,75 +132,7 @@ normal ld a, 0 include Print.inc include rdflsh.inc - -; ------------------------ -; Write to SPI flash -; Parameters: -; A: number of pages (256 bytes) to write -; DE: target address without last byte -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/romsupgr.asm b/utils/romsupgr.asm index da9e359..adcfc6e 100644 --- a/utils/romsupgr.asm +++ b/utils/romsupgr.asm @@ -181,75 +181,7 @@ wrear0 wreg flash_cs, 0 ; activamos spi, enviando un 0 include Print.inc include rdflsh.inc - -; ------------------------ -; Write to SPI flash -; Parameters: -; A: number of pages (256 bytes) to write -; DE: target address without last byte -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/upgr16m.asm b/utils/upgr16m.asm index 74976ff..7f19de3 100644 --- a/utils/upgr16m.asm +++ b/utils/upgr16m.asm @@ -125,76 +125,7 @@ ReadOK ld a, $40 ret include Print.inc - -; ------------------------ -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/upgr32m.asm b/utils/upgr32m.asm index debf9be..865ae25 100644 --- a/utils/upgr32m.asm +++ b/utils/upgr32m.asm @@ -158,76 +158,7 @@ ReadOK ld a, $40 ret include Print.inc - -; ------------------------ -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/upgrade.asm b/utils/upgrade.asm index 088ab52..fcdd311 100644 --- a/utils/upgrade.asm +++ b/utils/upgrade.asm @@ -108,76 +108,7 @@ ReadOK ld a, $40 ret include Print.inc - -; ------------------------ -; 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 + include wrflsh.inc rst28 ld bc, zxuno_port + $100 pop hl diff --git a/utils/wrflsh.inc b/utils/wrflsh.inc new file mode 100644 index 0000000..849effd --- /dev/null +++ b/utils/wrflsh.inc @@ -0,0 +1,80 @@ +; 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