Coder Social home page Coder Social logo

derekfountain / zx-spectrum-pico-interface-one Goto Github PK

View Code? Open in Web Editor NEW
24.0 24.0 5.0 90.96 MB

A recreation of the ZX Spectrum Expansion System, a hardware Microdrive emulator

Home Page: https://www.derekfountain.org/zses.php

License: GNU General Public License v2.0

CMake 2.81% C 92.87% Perl 0.92% OpenSCAD 3.40%

zx-spectrum-pico-interface-one's People

Contributors

avian2 avatar derekfountain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

zx-spectrum-pico-interface-one's Issues

feature request.

Folders on the sd card to organise mdr's abit better. ie. Apps. Games etc.

Lie flat design is a mistake

I think on reflection the lie-flat design is a mistake. The tips of the 90deg edge connector, and all the TTH components, poke out the base of the device by a couple of mm, then the 3D printed case adds another 1mm. The lower PCB itself lies flush with the base of the ZX Spectrum, so this extra thickness below the lower PCB prevents the Spectrum and the interface sitting on the desk at the same level. See this image:

https://github.com/derekfountain/zx-spectrum-pico-interface-one/blob/main/images/case_offset.jpg

My bodge fix was to add 5mm spacers around the Spectrums rubber feet.

The ideal fix would be to create a design like the original Interface One, which sits partially under the rear of the Spectrum, tilting it at an angle. That's quite hard, the fittings and angles would need to be spot on to make it work.

I think the best fix is to work to reduce the size of the device and return to the upright design.

M1 line

Not working with spectrums that have a bad M1 line.
Tried 2 different spectrums and nothing.
Spectrum with good M1 line all good.
Not sure if there is a work around or it's just a matter of replacing the Z80 ic.

Config file is named incorrectly

The optional config file on the SD card is named zxes_config.txt. That was named before I settled on ZSES as the abbreviation for the project ("ZX Spectrum Expansion System").

It should be renamed to zses_config.txt.

Incompatible with devices which provide a non-standard ROM

If the user adds a device onto the rear of the ZSES which provides its own ROM in place of the Spectrum's original 16K ROM, that device won't work. The ZSES ties the /ROMCS line to +5V meaning that the Spectrum's internal ROM is disabled. This is normally fine because the ROM Pico provides a copy of the original 16K ROM image and returns data from it for non-IF1 ROM reads. But if another device wants to provide a different ROM image, it won't work. The ZSES controls the ROM memory space.

The original IF1 doesn't carry an original 16K ROM image. It only asserts /ROMCS when it wants to page in the IF1 ROM, leaving the normal ROM either alone, or to any other device which wants to control it. This makes for an incompatibility, one which someone who owns such a device has reported to me.

The solution is not obvious. Switching the /ROMCS line only when the IF1 ROM is paged in is simple enough, but there isn't a spare GPIO on the ROM Pico to do it with. Looking at the circuit, there's no easy way to free one up.

My intention is to address this, since it makes my device incompatible with the original IF1, albeit it in a very tight corner case. But as of this writing I don't know how to fix it.

Increase size of edge connector footprint holes

The main reason the board doesn't lie lower than it does is the way the 90degree edge connector connects to it. The pins of the connector go through the holes, but only by a couple of mm because the holes are quite small and the pins are tapered.

If I replace the holes on that connector footprint with some slightly larger ones the connector pins will press through further and the board will sit higher.

SD card hot swap isn't supported

I attempted to support SD card hot swap, but it's rather difficult. Every which way I turned, I found another corner case where data might get lost if the Spectrum writes to the MDR image after the SD card has been removed.

For now, hot swap of SD card is not supported.

Reset switches foul the rear of the case

The two reset switches protrude out of the back of the case, which turns out to be a bad decision because they foul the pass through edge connector. It's now not possible to plug an expansion interface into the back of the device if the expansion interface is wider than the edge connector itself.

I can move one of the switches "round the corner" so it protrudes out to the side. There's not enough room for both, so the second will need to find a new location.

No slot in the rear edge connector

The KiCAD footprint I used for the rear edge connector is sub-millimetre perfect, except for the bizarre omission of the locating slot. The gap is there for it, but it's not in the drill file.

I need to change either the footprint for that connector, or the edge cuts for the lower board. In the meantime a Dremel is required.

Bottom Board.

There's no files for the bottom board?
Are you going to release them or are you still working on them?
TIA

Spurious LED lighting up

Just occasionally, when an LED should light up, one of the other LEDs also lights up. Just a quick flicker.

I'm pretty sure this is being caused by the Interface One's shift-register implementation of the motor control. It puts a 1 or 0 into the motor control for Microdrive 1, then shifts all those control values along the line 8 times.

I think the UI Pico is reading the status of the system as the shift is happening. On real microdrives the shift of a 1 along the line happens so quickly the LEDs don't get chance to light up before they're turned off again. On this system the status can be read just as the logic one is shifting along. An LED lights up and won't be turned off again until the next status read happens 100ms later, so the LED is turned on for 100ms before being turned off again.

I'm not quite sure what the solution is. Don't update status when motor control is happening is the obvious one. There's probably other ways to fix it.

Case needs a redesign

The case is not ideal. It adds unnecessary bulk. The friction-fit idea of one piece sliding over the top of the other seems to work well with cardboard boxes, but with PLA it doesn't seem to work.

I'm honestly not sure what the correct design would be. Two pieces with screw fittings or magnets to hold them together, maybe?

It's still too big

The device is still too big in my opinion. It's about as small as I could get it given that it contains 3 Raspberry Pi Picos, but I still don't like it being that chunky.

Ideally I'd switch to RP2040 chips, but those are hard to work with and very difficult to solder. These "stamp" size boards are probably the best solution:

https://www.waveshare.com/wiki/RP2040-Zero

I think with those I could reduce the size of the device by half.

Returning to an upright design, and possibly putting components on the rear of the board, there's room to make it a lot smaller.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.