diff --git a/SD/BIN/BPLUGINS/ZX3 b/SD/BIN/BPLUGINS/ZX3 index 5c9e573..76c907c 100644 Binary files a/SD/BIN/BPLUGINS/ZX3 and b/SD/BIN/BPLUGINS/ZX3 differ diff --git a/utils/zx3.asm b/utils/zx3.asm index 23afc90..8961980 100644 --- a/utils/zx3.asm +++ b/utils/zx3.asm @@ -89,14 +89,18 @@ FileFound ld hl, Stat rla jr z, Inc1 inc a -Inc1 cp $a4 +Inc1 cp $ec jr c, LengthOk call Print dz 'File too long' ret -LengthOk cp $5c +LengthOk ld hl, Slot+2 + cp $a4 + jr c, PenUlt + ld (hl), $c5 + jr UltSlot +PenUlt cp $5c jr c, UltSlot - ld hl, Slot+2 ld (hl), $d7 UltSlot ld ixl, a call Print @@ -118,14 +122,49 @@ Handle ld a, 0 call Print dz 'Read Error' ret -ReadOK ld a, $40 +ReadOK jr c, Comprob + ld hl, ReadOK + ld (hl), $30 + ld bc, zxuno_port + ld a, newreg + out (c), a + inc b + in a, (c) + and %11100000 + jr nz, ReadId + call Print + dz 'Unknown core' + ret +ReadId ld hl, $dffe + ld de, $d062 + cp %00100000 + jr z, Strcmp + ld de, $1063 + cp %01000000 + jr z, Strcmp + ld d, $60 +Strcmp djnz Listo + call Print + dz 'Invalid core' + ret +Listo inc l + inc hl + inc l + ld a, (hl) + inc l + cp e + jr nz, Strcmp + ld a, (hl) + cp d + jr nz, Strcmp +Comprob ld a, $40 ld hl, $c000 exx call wrflsh inc de exx dec ixl - jr nz, Bucle + jp nz, Bucle ld bc, zxuno_port ld hl, (Slot+1) ld a, core_addr