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.

Powered by SMFPacks Menu Editor Mod