ULIfAC:Usb Mass storage,WiFi, 512KB Ram/32XROM Board/256K Ram+16X Rom Board!

Started by ikonsgr, 11:39, 24 March 23

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

revaldinho

Quote from: ikonsgr on 20:58, 29 July 23
Quote from: Prodatron on 23:07, 28 July 23Some 464 ram expansions are limited to C4,C5,C6,C7 AFAIK.
SymbOS requires C1 and C2 as well.
Unfortunately I am not a hardware guy, so I have no idea how this is realized in hardware on 464 or 6128.
Since Symbos (also FutureOS, and practically any program/game/demo i've tried), works perfect with my RAM/ROM board (as well as ULIfAC too) on a CPC6128, it means that all configuration modes are implemented correctly. The problem starts only when the MREQ masking is activated

I hadn't realised that. My RAM card works fine with SymbOS on a 464 so I had just assumed all the others did too, but it is the case that mine doesn't mask MREQ and instead asserts RD to write protect internal RAM from external RAM writes.


ikonsgr

Quote from: revaldinho on 22:53, 29 July 23I hadn't realised that. My RAM card works fine with SymbOS on a 464 so I had just assumed all the others did too, but it is the case that mine doesn't mask MREQ and instead asserts RD to write protect internal RAM from external RAM writes.

 What exactly you mean by "asserts RD"? You activate RD when WR is active at the same time, and that protects internal RAM?

d_kef

@revaldinho 
But what happens when upper ROM is enabled and also &C1 or &C2 RAM mode is selected?
Then writing to addresses >= &C000 would also assert RD instructing the GA to enable the ROM. And that would cause data bus contention between  the upper ROM and the external RAM.
Which explains what I have experienced with HDCPM not working until I altered my code so that it didn't use &C1 mode while the upper ROM was enabled.

d_kef

TotO

Quote from: ikonsgr on 19:42, 27 July 23Well, this actually is Basic 1.1, i just changed it to 2.1, when i was testing the procedures ,for easy finding that rom is successfully loaded and activated ;)
I have done the same, but "1.2", because it is the real BASIC ROM version of the CPC 6128.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

revaldinho

Quote from: ikonsgr on 23:24, 29 July 23
Quote from: revaldinho on 22:53, 29 July 23I hadn't realised that. My RAM card works fine with SymbOS on a 464 so I had just assumed all the others did too, but it is the case that mine doesn't mask MREQ and instead asserts RD to write protect internal RAM from external RAM writes.

 What exactly you mean by "asserts RD"? You activate RD when WR is active at the same time, and that protects internal RAM?
Yes. The gate array doesn't have both read and write inputs . It has just one "writenotread". The logic asserts read after the first positive edge of call following mreq (which is all in the published verilog).

revaldinho

Quote from: d_kef on 23:40, 29 July 23@revaldinho
But what happens when upper ROM is enabled and also &C1 or &C2 RAM mode is selected?
Then writing to addresses >= &C000 would also assert RD instructing the GA to enable the ROM. And that would cause data bus contention between  the upper ROM and the external RAM.
Which explains what I have experienced with HDCPM not working until I altered my code so that it didn't use &C1 mode while the upper ROM was enabled.

d_kef
I'll open a bug report in GitHub to check this . I think that sounds possible but would need to check because all the ram test programs I have used , including Duke's which specifically test C1, C2 and C3 modes all report passes on multiple 464 motherboards and different testing voltages but if they didn't enable the upper rom they won't have created this condition. I think Duke published his source so that'd be the one to try.

pjrodriguez


ikonsgr

I'm preparing a HUGE update, hopefully for BOTH ULIfAC and USIfAC II!
This will include a couple of fixes for ULIfAC (the hung up upon booting after auto rom loading, freezes when Amstrad boots without a usb stick plugged), a new RSX command (it's an old request, but i recently figure out how to do it rather easily), and perhaps the greatest new feature:a BOOTLOADER for easy update of firmware using only a cheap usb2serial cable and the free  TinyMultiBootLoader utility ;-)
Keep in touch!  8)

demig

Quote from: ikonsgr on 17:09, 10 August 23I'm preparing a HUGE update, hopefully for BOTH ULIfAC and USIfAC II!
This will include a couple of fixes for ULIfAC (the hung up upon booting after auto rom loading, freezes when Amstrad boots without a usb stick plugged), a new RSX command (it's an old request, but i recently figure out how to do it rather easily), and perhaps the greatest new feature:a BOOTLOADER for easy update of firmware using only a cheap usb2serial cable and the free  TinyMultiBootLoader utility ;-)
Keep in touch!  8)

This sounds great would make life easier for updates, lovely to see the continuing work you put into this

ikonsgr

MAJOR FIRMWARE UPDATE (rev.3):

New Firmware can be found here. ("ULIFAC_REV3(with bootloader).zip" file is the one with the bootloader, which needs to be flashed ONLY ONCE using a PICKIT programmer, "ULIFAC_v3.zip" is for updating firmware using the new serial programming/PIC kit programmer) .

Updates include:

- New Firmware is now equipped with a Bootloader, meaning that you can use a free program utility and a simple USB2SERIAL cable adapter (for a couple of euros...) for updating/fixing firmware! Of course this new ability requires revision 3 (rev3) firmware or newer to be installed on your board. So, you must program ONCE the PIC MCU chip, using a pickit programmer as before, or i can send you a replacement PIC chip with the new Firmware installed, and any future firmware update/fix needed, you can do it yourself, very easy and almost for nothing! ;-)
You will need a usb2serial cable adapter like this(PL2303TA) or adapter like this (CP2102,for this type you will also need 4 female to female DuPont cables). For the most common PL2303 usb2ttl adapter cables, you can find drivers here (also verify which chip version you need for the windows version you use)
Just, download and install the TinyMultiBootloaderPlus software (TBL), Connect the ULIfAC board to the usb2serial adapter AND THEN to a usb port of your PC:

You cannot view this attachment.

Start TBL utility, set com PORT & speed to 115200bps, and select firmware HEX file. Then just click "Write Device" button and immediately push 'Reset" button on ULIfAC board. Flashing Firmware should start:

You cannot view this attachment.

After completion of the process (in ~2minutes), disconnect usb2serial adapter , reconnect the ULIfAC card to Amstrad CPC and power up.
At the BASIC prompt enter: OUT &FBD2,5, Restart/Reset the Amstrad CPC and the ULIfAC message should now appear on the Startup Screen, that's it!  :)

- User's Guide updated: Add the new rsx command and "Updating the Firmware" section is updated.

Bug fixes:

- |FM, |FSM didn't run program/game in Dual RAM/ROM mode, when multiple roms are loaded and himem was reduced. Up until now, i used a fix value for setting hi memory  which was the value you got after resetting an Amstrad CPC 6128 (42615). But some roms might use a small portion of RAM so this could be reduced, thus trying setting the above fix value, returns an error. So, instead of  using a fix value, i save himem value before loading Filemanager, and restore it just before loading a program/game.

- Amstrad hangs upon boot, if "Auto usb" is enabled without usb device plugged.

- On CPC464, Auto rom loading freezes after reset to Dual RAM./ROM mode .Although this was easily fixed by simply pressing RAM/ROM button, now it should reset without problems.

New Rsx Command:

-|EXT,"filename": Extract a file from a dsk image to USB storage device. This was an old request, but i recently found out a rather easy way to do it, although with some limitations. I simply use AMSDOS disk routines to load file on memory (exactly as with RUN/LOAD commands) and then disable FDC emulation and use again AMSDOS disk routines to save file on usb device. ;-)
This method works for most BAS/BIN files, except for some games that use a binary file (usually of more than 42kb) which loads data into system memory areas, causing Amstrad CPC to reset or hang. I've also noticed that with some binaries i got a "syntax error" message at the end, in that case, although file is extracted correctly, you need to reset Amstrad afterwards.

Updated RSX commands:

- |FORMAT,"D/S","A/B": As with file extraction from dsk images, i think this was an old request too. So, instead of having repeated questions for each disk you want to format (Select Drive A/B and Format Type DATA/SYSTEM),i modify Format command to be more direct: Without arguments (|FORMAT) it will directly format a disk using Data Format in Drive A (it just give a msg "insert Disk and press any key"). For System format and/or use of Drive "B" you must give extra arguments, for example: |FORMAT,"S","B" will use System format on Drive B. After each format completion, you return in Basic prompt, as with every other RSX command.

- |HELP: An optional argument is added (|HELP,2  or |HELP,3) which shows directly 2nd or 3rd help page. So, if for example, you want to see something on 3rd page, you wont have to view all help pages from the start ;-)

shacpc

Hi John. thanks for your update. I understand that future updates there is no problem in continuing to use the pickit, right?

shacpc

Quote from: shacpc on 20:44, 19 August 23Hi John. thanks for your update. I understand that future updates there is no problem in continuing to use the pickit, right?
I answer myself. there is no problem to continue programming with pickit3 after this update.

ikonsgr

Of course you can still use PICKIT programmer, bootloader just gives you another option for flashing Firmware

eto

Quote from: ikonsgr on 08:23, 20 August 23bootloader just gives you another option for flashing Firmware
great feature... just a few € for the adapter, even on Amazon - and much easier than the Pickit.

Fran123

Suggestion:  |VERIFY  to verify disk

I guest the program check the format disk and then read each track/sector.

Manuel3D

En primer lugar, gracias por el Ulifac. La verdad es que estoy muy contento con él. Tengo algunas dudas sobre su funcionamiento; Cuando estoy dentro de un dsk y quiero salir al directorio raíz del USB, no puedo hacerlo de ninguna de las formas que he intentado... Solo puedo hacerlo reiniciando el ulifac. Los comandos que he probado, como CDR, FDC y algunos otros, no me funcionan. Por favor, ¿podría aclararme esto?

Manuel3D

Quote from: ikonsgr on 08:23, 20 August 23Of course you can still use PICKIT programmer, bootloader just gives you another option for flashing Firmware
First of all, thank you for having developed that device. The truth is that I love it and it has resurrected my cpc 464. It works very well but I have some doubts about its operation. 
When I am inside a dsk I can only exit by pressing reset. I tried several commands such as FDC and CDR and I cannot exit from the dsk to the main directory of the USB. Surely I'm doing something wrong. I would appreciate if you could explain this to me. I also have a question (I have cpc 464) if I can change the position of the switch on the board to 6128. Can it be changed? Will I spoil something? Is more performance achieved in this position?
 Thank you so much.

ikonsgr

@Manuel3D giving |FDC will either enable or disable FDC emulation depending on what was previous state. Of course you will be informed with a message accordingly (either FDC enabled or FDC disabled). When FDC emulation is disabled, you need to give |EN command to re enable the direct file mode. Now, if you want to DIRECTLY enable "direct file" mode, to access usb stick, AFTER having FDC emulation enabled, you can simply give |EN command. this will disable FDC emulation and enable "direct file" mode at the same time ;)  Mind also that you can check state of various functions (usb, fdc, direct file etc) at any time, by giving |STAT command.
About the 464/6128 switch, this is to activate the MREQ suppression in order for the extra ram to work on CPC464. Although this works on CPC6128 too, some programs (most notably SYMBOS) will not function properly, so i recommend to set it on 6128 when board is connected on CPC6128 to get best compatibility. Also for CPC 6128, switching "on the fly" usually doesn't affect amstrad operation (i've done it several times without problem)

Btw,i've added a french version of user's guide: https://www.dropbox.com/s/o9cx9mijhsspr34/ULIFAC%20Guide_Utilisateur_v3.pdf?dl=0
Thanks pascal  ;)

wolfgang

Hi, I have a question:

I want to copy files from tape to disk images and tried with the program speedtrans which seems to do exactly that.
Unfortunately it does not work, I have a CPC464 and an ULIFAC latest firmware (v3), I have to start the program speedtrans from a disk image, because otherwise (starting it directly from the USB stick) it reclaims that no disk is inserted.
It asks for a filename for the disk file to create, reads the file from the tape and then exits (not sure if that is normal) but does not save it on the disk image.
I do not have a real disk unit so I cannot test it in another way.
Should it work with ULIFAC and disk images?

I mainly want to copy data files (some BASIC programs I typed in and saved on tapes as well as text files written in Amsword tape version around 40 years ago) not games or other software.

Does anyone know if this should work or can recommend another method?

wolfgang

Hi again,

issue resolved, the program COPY-Master does exactly that, copy any simple file (including BASIC programs) from cassette to disk or vice versa, the only thing is that you need to know and specify the exact filename from the cassette.
Works perfectly, files are on the disk image and can be used normally.
I just mention it here in case anybody wants to save old cassette files as well. :D

Amagni

I got mine today and it worked first try!
After months of struggling with my Gotek I can stop loading code via the tape port every time I want to test a new build!

ikonsgr

Ok,i just make some modifications on ULIfAC REV3 firmware, in order to resolve the "hang up upon boot" problem with some CPC464, as it is suggested by @GL here.
So with the new fw, board boots with FDC emulation active and then deactivated, after "dual boot" of CPC464 at the end of ULIfAC Board ROM initialization.
I've tried it on both CPC6128 & CPC464 of mine, and it seems to work ok, but as i don't have a "sticky boot" CPC464,i can't tell if it actually resolve the problem.
So, anyone having this weird "hang-up upon boot/reset" on a CPC464, try to update with this firmware (REV3a, for the moment, NOT an official firmware): https://www.dropbox.com/s/buwa93cknc48eiq/ULIFAC_v3a.zip?dl=0
Note this is the plain hex, WITHOUT the bootloader, so you can use either PICKIT to update, or if you have REV3. board, you can use the simpler method with the usb2serial cable too.

Josip

Ok ,since i had same problem with second board that @ikonsgr sent to me, i have tried this "beta" firmware.
And it works, after power on, nothing but after i push reset (need to press twice) but it works.
Afterwards it works normally with regular reset.

ikonsgr

Quote from: Josip on 19:09, 14 December 23Ok ,since i had same problem with second board that @ikonsgr sent to me, i have tried this "beta" firmware.
And it works, after power on, nothing but after i push reset (need to press twice) but it works.
Afterwards it works normally with regular reset.
Did you also try the "auto rom mount" feature? If you want, copy all files from here to usb stick boot dir and see if it mounts roms and reboots to dual rom mode without problems.

Josip

No, will try now.

EDIT: Tried, need to press reset after power on machine, after that it says booting and this screen appear
Add boot screenshot:




Powered by SMFPacks Menu Editor Mod