That really sounds awesome! Now we need somebody who can use AT commands and tell us how to make such a CPC LAN. :) :) :)
Exactly! Esp8266 it's really a marvel-chip, apart from creating a tcp server or connecting to another, it can be also used as an access point!Isn't that chip also on the M4 board?
Isn't that chip also on the M4 board?I suppose so, the chip is actually called ESP8266, and comes either as plain chip on a board or on board various pcbs for easier communication with existing hardware like ESP-01, ESP-07 which only need Tx, Rx and power supply connections.
(well or related, it has the ESP12F)
to connect any modern device such as USB the CPC would need a driver of significant code in order to get it to work at all.depends. there are certainly also rs232 / serial devices which have the controller and driver "on board" and don't need complicated drivers.
rpalmer
to connect any modern device such as USB the CPC would need a driver of significant code in order to get it to work at all.
rpalmer
Well yes you are correct that this device appears to have done all of the work to convert the "serial" to "USB".
Fortunately for us, the "driver" needed for a usb device, is already implemented in the usb host module firmware mentioned! Take a look here (http://www.hobbytronics.co.uk/usb-host-mini) and select "related products" tab.
All the "dirty" work needed for identify,nagotiate and establish connection with a usb device, is done from host module!
After that, you can perfectly communicate directly with the device through serial port simply by sending/receiving bytes/characters using simple inp() and out commands, even using BASIC! ;)
It's a great device for a great price and it has the potential to become a new network / communication standard. :)
Nice project,
I'm curious: at 32Mhz, a pic16 runs one instruction each 125ns.
Given that you need to identify the port, whether it's read or write, and either capture the bus or put the right response back in the bus (and take it out before the next instruction), I would say the timing is almost impossible to get right, considering you have less than 1us (8 pic asm instructions) to do it all.
Congratulations on the achievement. I can't imagine how you do it unless you are inserting wait states like there's no tomorrow :)
(Does that pause switch gives a hint about this?)
Nice project@Duke: do you think it can be used in association with the M4 in order to debug a CPC runing application from the PC ?. The M4 read memory from the CPC and send it to the PC through this interfaceActually the M4 board already has a serial port exposed, its labelled (TX,RX,GND) on the top header, I can enable access to it, if anyone wants to use it.
Actually the M4 board already has a serial port exposed, its labelled (TX,RX,GND) on the top header, I can enable access to it, if anyone wants to use it.
Could it or @ikonsgr (http://www.cpcwiki.eu/forum/index.php?action=profile;u=541) serial port be used as link for debugging, probably yes :)
@ikonsgr (http://www.cpcwiki.eu/forum/index.php?action=profile;u=541) , nice project!
On which one would it be the easiest to have an RS232 port ? I'd love to test one of the wifi modems available (Retro Wifi SI (https://www.simulant.uk/shop/retro-computers-games-consoles/amstrad-cpc/retro-vintage-computer-wifi-modem-rs232-serial-hayes-compatible) or Wifi232 (http://biosrhythm.com/?page_id=1453))
(or perhaps one or both make those wifi modems not necessary ?)
Actually the M4 board already has a serial port exposed, its labelled (TX,RX,GND) on the top header, I can enable access to it, if anyone wants to use it.Yes, please, so we can connect. :)
... you only need to type a small basic program (to enable the transfer of the assembly routine from PC to Amstrad), and then using redirections of firmware's loading routines (e.g. some pokes), you can use the very same BASIC commands, RUN"" and LOAD"", to directly load and execute programs from PC......how about creating a ROM which brings the CPC after booting in some kind of "listening" mode? Maybe also interesting for cross-compiling?
...for example, load and run of a single 42 kb binary game takes ~4 seconds!!!Using FutureOS it takes about 2,7 seconds ;D But I'm sure the serial interface can do even better! :)
What do you mean with 16 Bit address? Doesn't it decode the 16 bit I/O completely? If yes, which are the shaddow ports?
Received my five cards, now it's time to get some CPCs networked! ;D ;D ;DMy 2 also arrived, and great quality as well - didn't have a chance to test them yet though.
Thank you very much, the quality is great too! :) :) :)
Received my five cards, now it's time to get some CPCs networked! ;D ;D ;D
Thank you very much, the quality is great too! :) :) :)
The manual is great, but I want to be sure not to screw things up. From the old days I'm familiar with RS232 / RS485, but this is modern technology...I've updated manual with even more details and information. Now there are BASIC and Assembly code examples for send and receive data and a hole new section describing the usage of the direct load function.
First question: To connect two CPCs using wires, what do I need to do?
Just connect Tx from the first card with the Rx from the second. And Rx from the first card with Tx from the second. Right?
Well,i never tried this, but i believe you will also need the ground pin too (to establish a common ground level for the signals), as in case of direct serial connection of amstrad with CPC using a usb2serial cable adapter. In any case, when you use any kind of direct serial cables, NEVER use the 5v power supply pin, this is only needed for powering the various modules like bluetooth, wifi, usb host etc.Ok, so I will try this:
I'm a bit late to the party on this one, but tell me, is this serial interface also supported by CP/M Plus (6128)?
It's not in need of a specific CP/M utility program, the question is whether or not CP/M supports it already. I consider that very unlikely (it depends on which I/O addresses your interface uses and the UART it uses) but thought I'd ask anyway. Maybe someone has tried it?Well, only 2 addresses used: &FBD0,&FBD1 (although interface answers to the hole range of &FBD0-&FBDF)
Now I guess I need some help. Since I'm not so familiar with Bluetooth.
- At CPC-side I connected the USIfAC and to this a Bluetooth module (without button). I used the same module before with the Mini-Booster, so I know the module works.
- From the Disc I started the "Terminal" Application.
- At PC side I did start the "AmstradUtility.exe" application.
- I switched to Wi-Fi. Then clicked at connect.
- The PC / Laptop has an internal Bluetooth module
However I could not get any connection (115.000 baud and also tried 9600 baud, at both sides).
Is there a simple step-by-step idot-proof way to go?
@GUNHED (http://www.cpcwiki.eu/forum/index.php?action=profile;u=2029)
? are WI Fi and Bluetooth different devices ?
Ray
There is absolutely no relationship between bluetooth and wiFi.I concur... for the most part :D Bluetooth uses some of the radio spectrum of WIFI.
Bluetooth is just a wireless point to point serial protocol just like Uart, rs232 etc, only it's wireless.
WiFi is actually a wireless Ethernet protocol, it's like connecting your device using ethernet cable only it's wireless.
While most of the uController friendly Bluetooth modules do implement the serial profile, Bluetooth Stack is not only serial, it has different profiles. In fact, bluetooth allows for several simultaneous connections and allows different profiles to be used concurrently.
I've just transfer the dsk image of Double dragon 3 to a 3" disk in....40Seconds!
Coming soon to your near USIfAC! :D
Since I had no luck to connect the USIfAC to a Laptop using Bluetooth ..On the other hand, i was able to chat with a lenovo tablet and my old LG smartphone using bluetooth... ;D
my next attempt was to connect the USIfAC to the PC using a cable, which goes into one USB port. The same cable works flawless with the Mini-Booster. The PC software did fix me to COM6, I couldn't change it. The speed was 9600 baud (both of course). I tried the terminal program, no success at all.If we are talking about the usual cheap prolific usb2serial adapter cable, then 100% it should work directly! Did you try my terminal program to see if the port is recognized correctly? In any case this "fix to com6, I couldn't change it" doesn't sound very good... ::)
As a related USB project, I just uploaded a demo of the upcoming game transfer by USB on a Dandanator CPC. It loads and run a game from the PC to the real CPC in about 6 seconds.Well that is expected, if i'm not mistaken, the "loading" using Dandanator it's merely a direct memory transfer between your device ram and amstrad's ram (or something like that)... ;D
Check the post here: Re: CPC Dandanator Mini 1.3 - WIP (http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/cpc-dandanator-mini-1-0-wip/msg171579/#msg171579)
@ikonsgr, Adapting your current Disk transfer software to run from a dandanator CPC is something we can look into if you want :DWell, all source code and binaries are given freely (check 1st post on this thread) for anyone who wants to modify,edit, change etc, to make their own applications. If there is anything else you might want to know fell free to ask! :)
In most cases, if you are unable to connect with a device that has a build in bluetooth, this caused by wrong role setting (master/slave) of the bt module on amstrad. Check the bluetooth section on my user guide, to see how you can change that (it's only a single AT command: AT+ROLE=1 or 0...)
Well that is expected, the "loading" using Dandanator it's merely a direct memory transfer between your device ram and amstrad's ram... ;D
If i may ask, is dandanator a DIY free project? And what is the actual cost of making one or having one from you?
I believe these are critical factors for a project to be REALLY useful and widely accepted,don't you think?
Well, all source code and binaries are given freely (check 1st post on this thread) for anyone who wants to modify,edit, change etc, to make their own applications. If there is anything else you might want to know fell free to ask! :)
That sounds really hard thing to do, indeed. It's definetely a good alternative for fast and easy loading on spectrum zx and amstrad cpc 464 users.
But if i may say, Usifac has nothing to do with dandanator, as it's not just a "loading device" for amstrad (this is just one of the possible usages) , but rather it's a very cheap (either to buy or make yourself) serial interface implemented with a PIC mcu, which means that usage could be VERY versatile, it can be used to connect and communicate with anything with a UART serial interface, from direct serial cables ,bluetooth modules, wifi modules even usb host adapters and who know what else! ;)
BOM for materials is around 8€ without the plastic case. All information is in www.dandare.es (http://www.dandare.es).That's really cheap indeed. Having said that, i'd like to note some things concerning the "DIY aspect" of various hardware projects:
Edit: I did post the source code for the ZX Dandanator PIC, the VHDL Source Code for the CPC Dandanator CPLD, Z80 source code for ZX (CPC coming when cleaned ;) and all the sources of the Java tool in GitHub. Are you planning to post your source code? Thanks.That's really an admirable job you did, perhaps compared only with "M4", the other "super board" made by duke, really much more adavance projects than my serial interface... ::)
For what I've seen there is a list of games you support. Is this a manual process?. I'm approaching this by Snapshots, so any game snapshot, CDT or DSK-"beta" (I have an embedded CPC emulator in the Java Tool) with no modification is supported (I'm quite positive some of them may fail in this v1, though)
Also, you may want to consider integrating the USB to TTL in your pcb as I did with the CPC Dandanator, so you just plug a cable between the PC and the board. I used an external USB-TTL adapter for the ZX Dandanator but, in my opinion, having the USB connector in the cartridge is a much better user experience and cost is not to high.
I had the USB to Serial adapter going the the CPC adapter in the rx to tx and tx to rx configuration as you would expect.
If I do reverse these, and run the same 'type-in', then I actually get a 'Serial error' message from the Windows utility...so there is something going on between them.
You could connect to LS3 serial port? Did you use 8N1?
Just a question for completeness. The USIfAC I guess works with 8N1. Is it possible to change, Parity, Bits/Byte, Stop-Bits ... ?These are not supported by the hardware serial interface on PIC 16F1579.
These are not supported by the hardware serial interface on PIC 16F1579.I guess these modi are mostly for exotic and devices of historical interest anyhow... never had anything else than 8N1 anyhow. @GUNHED (http://www.cpcwiki.eu/forum/index.php?action=profile;u=2029) do you know of any devive that's not using 8N1?
Unlikely. That's I2C, not serial / UART.oh.. can i use USIFAC + LambdaSpeak 3 + Mp3 module?
You could use it with LambdaSpeak 3 instead of RTC board ;)
This one might do for UART / USIFAC:
https://www.amazon.com/UTP-87-108MHZ-Receiver-Wireless-Microphone/dp/B07FKRML7B/ref=sr_1_6?keywords=stereo+radio+module&qid=1560200987&s=toys-and-games&sr=1-6 (https://www.amazon.com/UTP-87-108MHZ-Receiver-Wireless-Microphone/dp/B07FKRML7B/ref=sr_1_6?keywords=stereo+radio+module&qid=1560200987&s=toys-and-games&sr=1-6)
Or this one:
https://www.amazon.com/UTP-87-108MHz-Wireless-Microphone-Receiver/dp/B07FKR5GYD/ref=sr_1_20?keywords=stereo+radio+module&qid=1560200987&s=toys-and-games&sr=1-20 (https://www.amazon.com/UTP-87-108MHz-Wireless-Microphone-Receiver/dp/B07FKR5GYD/ref=sr_1_20?keywords=stereo+radio+module&qid=1560200987&s=toys-and-games&sr=1-20)
oh.. can i use USIFAC + LambdaSpeak 3 + Mp3 module?Well, here I run a CPC 6128 with USIfAC and LambdaSpeak III very well. :)
if yes.. i would like to buy LS3, now (how much costs?) :)
......
BUT, i've already developed a more versatile version of dsk2disk, which supports many non standard images with variable sectors/track, variable gap#3 length, variable sector sizes, and even more than 40 tracks!. With that, you will be able to write almost all dsk images, except some copy protected games with strange "weak sectors" locks, but fortunately i think all of these games can be found in unprotected dsk versions too! ;) (btw i've just used this new version to transfer the rtype 128 to a 3.5" disk and worked perfect! ;D )
....
Anybody tried any UART modules with USIFAC by now, such as Catalex MP3 player, or FM Radio module, or MIDI UART board?mmh... i'm really interested in MIDI UART Board...
I had ordered 2 FM modules a while ago but there are still on the ship from China.
mmh... i'm really interested in MIDI UART Board...
post news when you had received (and use) it :)
I've USIfAC but i don't know how use it pratically.
I think this (https://www.dropbox.com/s/xg85264klwixksr/Amstrad%20CPC%20Serial%20Interface%20User%20Guide.pdf?dl=0) might help! ;)
@ikonsgr (http://www.cpcwiki.eu/forum/index.php?action=profile;u=541) unless you add the MIDI BAUD rate 31250 to the firmware, it won't do MIDI.
I just figured that out with LambdaSpeak 3 Serial Interface - had to change the firmware to support 31250 for that.
I guess the PIC can do 31250?
Never tried that specific baud rate, but most probable it can. It's very easy to add this speed to the code and selecting it ,by a simple, let's say: OUT &FBD1,20
Of course, you will need to reflash the pic with the new program.
Of course i can (i have already 10 different speeds supported, where you can select them "on the fly" by giving simple OUT &FBD1,x commands), but for all of you who have already a usifac, you will need to re-program the pic (or send you another PIC with the new program ::) )
That means the MIDI BAUD rate is already supported by USIFAC? Then it should work out of the box!
EDIT: oh, OK, I need to reflash it... I see.
I guess I was suggesting for you to change the firmware such that customers can use MIDI BAUD rate out of the box. ;)
Of course i can (i have already 10 different speeds supported, where you can select them "on the fly" by giving simple OUT &FBD1,x commands), but for all of you who have already a usifac, you will need to re-program the pic (or send you another PIC with the new program ::) )
Done! The speed of 31250 can be selected by giving a simple OUT &FBD1,20
You want me to send you the new hex and give it a try? ;D
Sure! Thank you, super fast service!
Btw, anyone with another "special speed" request? I can add as many custom speeds as you like! :)
Thanks for the link!
USB MIDI is cool, but most of my synths are old style and have MIDI DIN (I have a USB -> DIN MIDI converter box though).
So I like this one, which is as minimal as it gets:
https://ubld.it/products/midi-breakout-board/ (https://ubld.it/products/midi-breakout-board/Unfortunately)
Unfortunately, it is no longer available on Amazon, but you can get it here:
https://www.tindie.com/products/ubldit/midi-breakout-board/?_ga=2.246732166.343271136.1562550881-1119099813.1562130274 (https://www.tindie.com/products/ubldit/midi-breakout-board/?_ga=2.246732166.343271136.1562550881-1119099813.1562130274)
I mean, the Arduino MIDI shields also work, but they are too bulky really.
Here (https://www.dropbox.com/s/ui9xyd80s8mr4w5/pic16f1579.hex?dl=0) it is.
From now on, i will flash all new boards with this version, and i'll upload the hex file to the "official" link too! ;)
The only concern I have is that the USB port is actually (attempting to) powering the whole CPC... so I need to make sure to first turn on the CPC before plugging in the FTDI USB cable. Of course the USB cannot provide enough power, but it is enough for the Power LED to go on and the CPC trying to boot...
So it seems that USIfAC really works as MIDI "bridge" between a synthesizer and an Amstrad CPC!Yes, it was very easy to use and "program" USIfAC, thanks tou your excellent manual!
As far as i know, this must be the first application of the Usifac,apart from the utilites i have made!
And LambdaMikel,i suppose it wasn't hard to make it work with USIfAC right? ;)
Btw, i wonder ,what would be the practical usage of such "marriage"? Writing music using a keyboard synthsizer that could be saved in amstrad and then maybe replayed?
Hmmm, maybe if you don't use the 5v pin from Usifac ,the problem will be solved (this is how a usb2serial cable adpater works too,there is no need to connect the 5v pin,i note this in manual too). Unless the small board with the midi connector needs to power from serial interface
With W10, it really depends on the quality of the FTDI cable... super cheap is usually crap. I have three or four of these, and only two of them really work reliably. The good ones need no driver at all - or for whatever reason, my Windows already knew them ;D...yeah, I had the same experiences...
Anybody tried any UART modules with USIFAC by now, such as Catalex MP3 player, or FM Radio module, or MIDI UART board?
I had ordered 2 FM modules a while ago but there are still on the ship from China.
As far as USIfAC is concerned, you can read the manual. In 2 words, it's reather easy and straight forward to send a byte by just giving: OUT &fbd0,X (X:0-255)Yes, I´m aware of that ;)
To get a byte, give:
if INP(&FBD1)=255 then a=INP(&FBD0)
Now variable a has the received byte.
Hi,secmast your terminal program is brilliant, it worked perfectly to communicate with minicom on linux!
I've done a small RS232 terminal program in assembly supporting extended ASCII characters in Latin-1252.
This is very simple to use it, launch the program, choose the desire speed and you ready to go.
There is no Log/Buffer in place yet, but at least you can connect to any RS232 device up to 115200bps.
I think the next thing to do on the project will be to make it so that the terminal software can use a combo of the USIfAC and an esp8266 to connect directly to a BBS.
Hi all,
i followed this project for a BBC but can be used with any serial capable machine: https://stardot.org.uk/forums/viewtopic.php?f=3&t=15076 (https://stardot.org.uk/forums/viewtopic.php?f=3&t=15076)
I seem to remember the question was asked for the interest of MIDI out, I am.Both done. MIDI out and in with USIfAC.
Is it already possible ? Or does it need hardware/software done before ?
ESP8266Honestly, if you have / add an ESP 8266 to the mix, then there is no need for USIfAC any more... the ESP8266 can do all of this on its own. The USIfAC PIC is more of a burden than a help to the ESP ;)
Honestly, if you have / add an ESP 8266 to the mix, then there is no need for USIfAC any more... the ESP8266 can do all of this on its own. The USIfAC PIC is more of a burden than a help to the ESP ;)
The ESP8266s I have are tiny things on a board with 4 pins exposed as VCC/GND/TC/RX but I do have a couple of ESP32 breakout boards which might be better for that.Sorry I meant the bigger brother, the ESP32. Indeed, just a ESP8266 will not have enough GPIO to do address decoding.
Thanks for pointing that project out Shifters, that looks like it will make my life a lot easier as the standard AT commands on the ESP8266 are a little bit more cumbersome than that looks. I cant seem to find a way to get it into a mode that is just a simple tx/rx to the telnet server. By default you need to prefix transmissions with a header containing number of bytes to send and it likes to reply with a header displaying the number of bytes to receive, which is just not something I need for this application. I can understand for a transactional protocol like HTTP but as this is just a telnet connection this will be a much better fit.I had exactly the same problem when i first involved with esp8266, it seems there was a need to encapsulate each data packet in order to send and "peel off" the encapsulation to get data. But after a bit of study, it seems there is a way you can send/receive bytes directly without needing "encapsualtion" (quoting from Usifac manual):
Now to figure out how to program the think with Arduino IDE...
Cheers!
Nic
Honestly, if you have / add an ESP 8266 to the mix, then there is no need for USIfAC any more... the ESP8266 can do all of this on its own. The USIfAC PIC is more of a burden than a help to the ESP ;)
I had exactly the same problem when i first involved with esp8266, it seems there was a need to encapsulate each data packet in order to send and "peel off" the encapsulation to get data. But after a bit of study, it seems there is a way you can send/receive bytes directly without needing "encapsualtion" (quoting from Usifac manual):Thanks for that ikonsgr, thats really very helpful. Also the link to the proper docs will help!
Load ~70kb game in 3.7seconds e.g. ~20kb/sec transfer rate :oTurbo! 8)
Impressive!Well, from the numerous tests i have made so far, it seems that it can read data format and system format images, with more than 9 sectors/track or more/less than 512bytes per sector. The emulation is done in low level, of getting and responding directly to 765 FDC commands through the controller's I/O ports, so amstrad "thinks" it communicates with a dsik drive! ;) Also, i've included more advanced dual head image support and multi sector reads, which are supported with parados. I've tested them using 400kb and 800kb parados images and seem to work ok (both read and write). The only images i couldn't load so far, was the "sinlge disk" dual side/80tracks Batman forever demo & orionprime images (they give an incompatible system error or something), and a couple of game images with weird copy protections, but fortunately you can find everything in "cracked" or normal 180kb dsk image versions, so this really wouldn't be a problem.
Especially if the DSK and 765 FDC emulation works out perfectly.
Gotek and HxC feel a bit slow and dated these days on the CPC.Tell me about it. After months of testing and loading 100's of games,i've been "Addicted" to the super fast loading of ~20kb/sec ,so now, even the turbo track loaders of some games (that can ~double the speed of a disk/gotek drive from 4-5kb/sec to ~8-9kb/sec) seem veeeeery slow! :) It's really an amazing thing to have a full 42kb game load on a CPC 464 in a couple of seconds! :P I guess this kind of speed can only be beatten by a Rom board :D
There may be a market for that device, even if most folks will already have a Gotek / HxC / M4 / Dandinator...Well, i'm afraid that (and despite that USIfAC II would be MUCH cheaper than the M4 board, selling price will be ~15euros+shipping), Duke has already "catch" almost all the... "available market" , so, i don't expect much... "commercial success"! ::)
Tell me about it. After months of testing and loading 100's of games,i've been "Addicted" to the super fast loading of ~20kb/sec ,so now, even the turbo track loaders of some games (that can ~double the speed of a disk/gotek drive from 4-5kb/sec to ~8-9kb/sec) seem veeeeery slow! :) It's really an amazing thing to have a full 42kb game load on a CPC 464 in a couple of seconds! :P I guess this kind of speed can only be beatten by a Rom board :DAnd by FutureOS which transfers 20KB/second (in real live). For example read an complete 180 KB Data disc in 9 seconds. :)
...(although i confess i wished USIfAC to be a bit more succesfull, just for giving a motive to the software community, to develop new LAN/WAN games for amstrad... ;) )Regarding available hardware: The USIfAC is at present day the best (and maybe only) solution for serial communication. How much have been sold? I took some by myself and they are awesome!
Does Vortex use the same 765 floppy Controller? And what port is using?Thank for responding! :) :) :) I'm very well aware of FDC programming. So now to the great thing about the Vortex controller. Everything is the same like with the CPCs FDC765, the only differences are the addresses and the fact that the Vortex FDC765 can physically connect four drives - and that's awesome, that way one can use 3", 3.5" and 5,25" at the same time.
The emulation was based on this document, and it was REALLY hard and time consuming to make it work even in the first place! The "problem" is that 765 FDC does not simply receive a command byte sequence and gives an "answer", but CONSTANTLY writes to two differents ports (main status register port AND data register port) for EVERY SINGLE byte that it receives! And in all this complicated "dicussion" the mcu (which emulates FDC) must give the expected responces to amstrad for EACH and EVERY different situation! Even one wrong responce byte and everything is crashed! :)
And by FutureOS which transfers 20KB/second (in real live). For example read an complete 180 KB Data disc in 9 seconds. :)
Regarding available hardware: The USIfAC is at present day the best (and maybe only) solution for serial communication. How much have been sold? I took some by myself and they are awesome!
I don't think i get this. Future os is software not hardware, and also,i suppose you mean transfer from somewhere else than a real floppy disk ,because transfer data from a real disk can be maximum ~8-9kb/sec (and this ONLY with custom fast track loaders, usally speed is ~half of that).Yes, FutureOS is software. It's aim was (and is) to get the maximum power out of the CPC. To test this do the following: Connect two drives to your CPC (f.e. two 3" drives or 3,5" or 5,25") and then put in two data formatted discs (or system or ibm), then copy it. It does copy it in about 18 seconds.
If you copy with a single internal 3" drive it will take you about 9 seconds to read that 180 kb and also about 9 seconds to write a disc of 180 KB.Woooo! That's REALLY impressive! I couldn't imagine that it was possible to get such throughouput from the good old 765FDC, especially when we are talking for a single head/ single density disk (which actual reading is ~4 times less than with a 3.5" dual head, DD disk). Judging from my recent experience with 765, i say you must have eliminated every delay in 765 function in order to achieve this impressive speed!
Woooo! That's REALLY impressive! I couldn't imagine that it was possible to get such throughouput from the good old 765FDC, especially when we are talking for a single head/ single density disk (which actual reading is ~4 times less than with a 3.5" dual head, DD disk). Judging from my recent experience with 765, i say you must have eliminated every delay in 765 function in order to achieve this impressive speed!How to do it?
But, may i ask,is it reliable at such speeds? Does it transfer data from disks correctly every time, and for any disk? Also from my experience with 3.5" floppy drives,i know that there are minor differences in various disk drives, some support more "advance" commands, some only the basic, and i have also confirmed that some drives (usally old branded ones, from NEC or Samsung) have faster responce, hence greater actual transfer speed than others!
How to do it?
- Read all subsequent sectors in the way they appear (do not read 1,2,3,...9 - do read 1,5,2,6...)
- Couple other smaller things
Well,i think that, this exactly what fast track loaders do in some games! Instead of reading one sector/time, they give a single command to read a whole track of all sectors in one command (and yes, interleave reading of C1, C6,C2,C7 is MUCH faster than serial, but you need to have the disk written that way, otherwise, if sectors are writtem sequnetially C1,C2,C3... on disk, you can't read them so fast)
All the discs are written with an interleave.
But if you're doing your own loader without the user of a buffer (copy the read sector from a buffer to the data final destination), having linearly stored sectors is the way to go.Hmmm, maybe that's how you can increase speed. If you are using a buffer for sector read (like for example, amsdos does), bytes readed from disk, are first placed to buffer and then loader puts them to their right place in ram. But, if you are NOT using buffer, and instead, each byte received from FDC is putted DIRECTLY to it's actual place, you can practically double the loading speed! Still, future os does this in ~4times the usual loading speed from disk, and AFAIK no game loader can achieve such incredible loading speed... ::)
Actually, reading with one instruction or several does not change the speed. For Orion Prime, I read the sectors one by one.Hmm, maybe then, you can give me a hint of why i get a: "interleaved sectors,check your disk" error message when i'm trying to use the 800k single disk image of orion prime with my 765FDC emulation... :)
Most yes, but not all. Some DSKs were transferred with linear sectors, making them reeeeally slower to read.Very true, and making hfe's from DSKs introduces some additional errors I guess.
>Hmm, maybe then, you can give me a hint of why i get a: "interleaved sectors,check your disk" error message when i'm trying to use the 800k single disk image of orion prime with my 765FDC emulation...Because you're doing something wrong :).
>AFAIK no game loader can achieve such incredible loading speed
Orion Prime does, plus it reads 10 sectors per side. This is no black magic.
Because you're doing something wrong :).
Orion Prime uses linear sectors, BUT also shifts the sectors every track, for even more speed.
Track 1: C1 C2 ... CA
Track 2: CA C1 C2 ... C9
Track 3: C9 CA C1 C2 ... C8
The double ReadSectors of the track 1 should be A1/A2. My code receives something else, so consider this is wrong. Can you trace what your read sector returns?YES! You are right! My code returned in both read_id requests the same "A1" sector_id, because from what i've read in the 765FDC manual noted before, read_id returns H,C,R,N of the 1st valid sector of current track so, i always returned the 1st sector of current track. So,i revised the code, to respond with next sector_id each time a read_id is requested, and now, it responded with A1 and then with A2 as expected,thus it FINALLY worked! Thank you VERY MUCH for the hint, as it helped me to make the emulation a bit more accurate!
So now to the great thing about the Vortex controller. Everything is the same like with the CPCs FDC765, the only differences are the addresses and the fact that the Vortex FDC765 can physically connect four drives - and that's awesome, that way one can use 3", 3.5" and 5,25" at the same time.
Now the FDC status for Amstrad is &FB7E, and for Vortex it is &FBF6
The FDC data port for Amstrad is &FB7F, and for Vortex it is &FBF7
Sorry, I misunderstood the question (edited). You can plug any TTL things on it too.
The Mini Booster is based around the CPC Booster custom ports while the USIfAC use the standard Amstrad ports, so the softwares are not compatibles without patching them.Sounds like a challenge for you there Craig! ;D
When i will have it ready for presentation i'll make a new topic for it :)
And for a small update,i've finished dsk image loading from usb device, most of images seem to work ok, also i've added PARADOS image to pic's flash memory too, and with a simple RSX command you can select if you want to use AMSDOS or parados! Thus, you will be able to use parados functionality (for accessing large dsk images) not only on cpc6128/664 but even with a cpc464! ;)
To have Parados too is great. Could it be possible to add a "switch" of one byte in the Parados ROM to activate the Vortex format?
I believe this is not needed. As i explained in previous msg, UsiFAC II Floppy controller emulation, should be able to respond in BOTH vortex and 765 ports in EXACTLY the same way, thus most probable it should work directly with any program uses Vortex instead of 765!The case with Parados is the following. It supports lot of formats. And one need to set up the format selection. It either works with Vortex format or a Romdos format. This can be changed in the format setup. Or a byte in the ROM can be changed to select either the one or the other format.From Parados ROM the Varados ROM was made, the only difference is one byte. Parados has ROMDOS format enabled and VaraDOS has the Vortex format enabled.
Well, if thst's the case,i could place varados instead of parados as the 2nd ROM DOS (both ROMS will be embedded into PIC's flash memory), and choose between Amsdos or Varados with a simple RSX command! ;-)To offer an option for the customer to decide between ParaDOS or VaraDOS would be great indeed. :) :) :) :) :)
As Linux user I'd like to replace the Windows program. Maybe with something with a web interface, so that I could use e.g. a Raspberry to serve the disk images/files.
Is the serial protocol the USlfAC is using documented somewhere? Or is the source code of the Windows program available?
The FDC emulation just is amazing!!!And wait to see loading games from an 80 tracks/dual head 800kb Parados dsk image... on a CPC 464! :P
And wait to see loading games from an 80 tracks/dual head 800kb Parados dsk image... on a CPC 464! :P
Btw, the revelation (https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/) is finally made! ;)
Here (https://www.dropbox.com/sh/ezzga2dppm6jlm7/AACwFC_rv2QatWh_ndKc9fhma?dl=0) you can find the new User's manual for the interface,and also the new Windows utility program. I use Delphi (visual pascal) as programming language, if you are interested i can provide with the source code too.I was not really aware of the new board, looks awesome!I can't promise that I will produce something usable, but if you could provide the source code of your Windows program it would highly increase the probability 8)
And here (https://www.youtube.com/watch?v=AmeqV5Z8Ziw) is a small presentation for the new board. I will open a new thread for it, in a couple of days! ;-)
I was not really aware of the new board, looks awesome!I can't promise that I will produce something usable, but if you could provide the source code of your Windows program it would highly increase the probability 8)
Btw,this modified terminal is actually somekind of linux cli for amstrad?That's right: the goal is to use the CPC as a terminal to my linux machine. That means that the amstrad is sending text and receiving text, but not doing any real processing itself other than the text stream.This was common in the 70s where there was one mainframe computer which many users connected to with something like https://en.wikipedia.org/wiki/VT100 - here the raspberry pi is the mainframe while the CPC is the VT100 ;D
The issue with this is that it's not all text: there are "escape codes" which should do things like clear screen, return to and edit past commands, move cursor etc. Right now they just print to screen as things like "]H" or "]P".What character are you using to say next character is a control code? Just parse your input for this character, then use a lookup table to convert the next character into a CPC control code f.e. control code &0C (12 decimal) is equivalent to CLS.