From 285beea478c000617b92cbda363a1c23bbdac936 Mon Sep 17 00:00:00 2001 From: antoniovillena <> Date: Mon, 19 Sep 2022 20:18:25 +0200 Subject: [PATCH] add mc --- sdk/common.mk | 2 +- utils/MC | Bin 0 -> 575 bytes utils/Makefile | 12 ++++ utils/mc.asm | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 utils/MC create mode 100644 utils/mc.asm diff --git a/sdk/common.mk b/sdk/common.mk index 23e6723..91a1b5d 100644 --- a/sdk/common.mk +++ b/sdk/common.mk @@ -88,7 +88,7 @@ export ZCCCFG # PATH export PATH := $(_path):$(PATH) -undefine _path +#undefine _path endif # !ZXSDK diff --git a/utils/MC b/utils/MC new file mode 100644 index 0000000000000000000000000000000000000000..a57ec2c84c8dab02f583be8e15dff674b06a1223 GIT binary patch literal 575 zcmb=~s$g(-s-j+QvO;oxQEFOdPO4s2g&{AmPkv%bu|i^Aib85dYI12wDv$$K!f;a1 zUa4-o2FE`I3zoMFB)+T{VzmDAwvy#-!KY*epjkowz6yEyB??9P`6a0-3@6W;C^0ht z38wjPDLAHYt2N@V4^o z6$PLjcHBTwJBGKFVEaGdkxD^4u}JBN)?(O&8NETc$817V;dH=vKfD$?>x^FXehsu*6BS(2HTt`HpH32_u} zG@Akl#ByK*40rWJ1sn8l+U4K8di~-}MTQ1O1_wKa^K%XOfrbU8CZ;I378T_e0sZ9w zl)QO%o}%#0ySfVJts)iA&ju>t^+_zvOU?jU35o-TlMn5#*C}sT`1O)wJv{K(z<~zm zD!dJR8wm^;P)MGYQG$!3DPw{tvs1XqX#JPv?P9FRR^jPQut6NQ8r&Q*)zA19)+jDe ed. +; +; Compatible compilers: +; SjAsmPlus, + + output MC + + include zxuno.def + include esxdos.def + include rst28.mac + + define VERSION "0.1" + + org $2000 ; comienzo de la ejecución de los comandos ESXDOS + +Main ld a, h + or l + jr nz, NoPrint ; si no se ha especificado nombre de fichero, imprimir uso + call Print;567890123456789012345678901 + dz '.mc corefile.zx1', 13, 13, 'Loads and executes a core' + ret +NoPrint ld de, FileName +NextChar ld a, (hl) + or a + jr z, EndParse + cp ' ' + jr c, EndParse + ldi + jr NextChar +EndParse xor a + ld (de), a + ld bc, zxuno_port + out (c), a + inc b + in f, (c) + jp p, Nonlock + call Print + dz 'ROM not rooted' + ret +Nonlock wreg flash_cs, 0 ; activamos spi, enviando un 0 + wreg flash_spi, $9f ; jedec id + in a, (c) + in a, (c) + in a, (c) + in a, (c) + wreg flash_cs, 1 ; desactivamos spi, enviando un 1 + sub $19 + jr z, Goodflsh + call Print + dz 'Incorrect flash IC' + ret +Goodflsh ld a, scandbl_ctrl + dec b + out (c), a + inc b + in a, (c) + and $3f + ld (normal+1), a + or $c0 + out (c), a + call init + ld bc, zxuno_port + ld a, scandbl_ctrl + out (c), a + inc b +normal ld a, 0 + out (c), a + ld bc, zxuno_port + out (c), a + ld bc, zxuno_port + ld a, core_addr + ld hl, $2f80 + ld de, core_boot + out (c), a + inc b + out (c), h + out (c), l + out (c), d + dec b + out (c), e + inc b + out (c), a +init xor a + esxdos M_GETSETDRV ; A = unidad actual + jr nc, SDCard + call Print + dz 'SD card not inserted' + ret +SDCard ld b, FA_READ ; B = modo de apertura + ld hl, FileName ; HL = Puntero al nombre del fichero (ASCIIZ) + esxdos F_OPEN + ld (handle+1), a + jr nc, FileFound + call Print + dz 'File not found' + ret +FileFound call Print + db 'Writing SPI flash', 13 + dz '[', 6, ' ]', 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 + ld ixl, $15 + ld de, $2f80 + exx +Bucle ld a, 'o' + exx + push de + rst $10 + pop de + exx +punto ld hl, $8000 + ld bc, $4000 +handle ld a, 0 + esxdos F_READ + jr nc, ReadOK + call Print + dz 'Read Error' + ret +ReadOK ld a, $40 + ld hl, $8000 + exx + call wrflsh + inc de + exx + dec ixl + jr nz, Bucle + ld a, (handle+1) + esxdos F_CLOSE + call Print + dz 13, 'Launching core' + ret + include Print.inc + include wrflsh.inc + include rst28.inc +FileName