-
Notifications
You must be signed in to change notification settings - Fork 273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Serial port support? #768
Comments
The spectrum port is a bitbang port without interrupts. That works for CP/M which is polled but doesn't work for receive on a multitasking system. At least I've yet to figure out a way to make it usable. With an interrupt it's sort of doable but burns a lot of CPU, although I've not actually implemented that for much because it's also a complete pain in the arse 8) |
That's what I assumed, bit-banging serial port driver would have to work within long periods of disabled interrupts, disrupting perception of time throughout all of the system (yet I wonder how annoying it would be for a system that is not supposed to run too many things simultaneously). For a long time I presumed it couldn't be achieved even on CP/M. Before I discovered that |
The problem is the input side. Output is not a big problem - in fact at high baud rate it's not much different bitbanging to waiting for the uart, and it does support one of Bill Shen's designs that does this. On input however you have no interrupt on the spectrum to even look for serial I/O. CP/M is OK because apps that want call into the BIOS each time to poll or block on a read. |
This issue needs some other point of view. How I planned to use it in a first place?:
Seems like it can't be achieved with Speccy's internal bit-banging serial port without sacrificing Fuzix's multithreading. But what about other hardware solutions? I have Spectranet device that is left completely unused. The main reason for it is that its firmware limits capabilities of +2A/+2B/+3/+3B/+3e machines severely. Fortunately, the firmware can be disabled with a jumper, otherwise I wouldn't be able to boot CP/M or Fuzix with this device attached. According to the manufacturer, this jumper does not disable the hardware, it's still I/O-accessible, yet one needs to write their own OS (or a driver to an existing OS) to control this device. It may require a lot of work (hence it remains unused in my Speccy's setup), but I wonder, maybe Fuzix is a good platform for doing this? Having networking interface, a telnet server and an ftp server could be developed for Fuzix. Plus Spectranet offers extra 128kB of 4kB-paged extra memory (as described here: http://spectrum.alioth.net/doc/index.php/Using_paged_RAM). AFAIK FUSE emulator offers Spectranet device emulation (at least git log on their master branch mentions that), but I never tested if it actually works and to what extent. |
I tend to use Standalone/ucp on the PC end to copy files and stuff. Spectranet is a WizNet 5100 I believe ? I do have some fairly minimal WizNet5100 support compiled in for some platforms that then gets exposed as a socket API. Might be a tight squeeze to fit that into a Spectrum +3. FUSE has some emulation - never used it in Fuse but I re-used their WizNet emulation code in the RC2014 emulator 8) Added as #769 |
According to SinclairFAQ it is WizNet5100 https://faqwiki.zxnet.co.uk/wiki/Spectranet |
I guess enforcing correct memory mapping is the purpose of yet another jumper on Spectranet: ZX +2A/+3 This ticket goes into massive off-top and I doubt the original matter will be discussed any longer. Shall this one be closed? |
I can't find it easily, but it seems like Fuzix for ZX Spectrum +3 lacks serial port support and ability to redirect console to serial port. Such ability exists in CP/M Plus for ZX Spectrum +3, it is capable to make use of built-in serial port and by allowing redirecting console to it, it offers surprising capabilities to this age old system.
The text was updated successfully, but these errors were encountered: