avatar_ikonsgr

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.

Vitop69

hello guys, sorry for my ignorance.
I bought an ESP8266-esp07 for my ulifac.
I followed john's manual by powering the ulifac with 5v, eliminated the jump and the wifi module lights up with a fixed red LED and a flashing blue one.
but I can't communicate with it either from the terminal with at+comand or from my pc with john's utility using rsx command wf,1 etc etc.
I have a doubt, do I have to flash the wifi module with a firmware to use it or am I doing something wrong?
Thanks for your support.

Vitop69

Quote from: Vitop69 on 18:17, 14 May 25hello guys, sorry for my ignorance.
I bought an ESP8266-esp07 for my ulifac.
I followed john's manual by powering the ulifac with 5v, eliminated the jump and the wifi module lights up with a fixed red LED and a flashing blue one.
but I can't communicate with it either from the terminal with at+comand or from my pc with john's utility using rsx command wf,1 etc etc.
I have a doubt, do I have to flash the wifi module with a firmware to use it or am I doing something wrong?
Thanks for your support.
I report you my configuration from stat rsx command
Serial Port Speed: 921600
Interface ROM  Number: 5
Direct Mode:OFF
765 FDC Emulation:OFF
USB Device Enable: OFF (Auto:No)
DOS Emulation: AMSDOS

After WF,1 rsx command
Insert the right parametr for ssid, pwd, tcp hosting IP, and 1300 for port but I do not recive any message it's remain in stand by.



ikonsgr

Quote from: Vitop69 on 18:17, 14 May 25hello guys, sorry for my ignorance.
I bought an ESP8266-esp07 for my ulifac.
I followed john's manual by powering the ulifac with 5v, eliminated the jump and the wifi module lights up with a fixed red LED and a flashing blue one.
but I can't communicate with it either from the terminal with at+comand or from my pc with john's utility using rsx command wf,1 etc etc.
I have a doubt, do I have to flash the wifi module with a firmware to use it or am I doing something wrong?
Thanks for your support.
Afaik, there is no need to update ESP module firmware,  also did you use the correct windows utility (rev.2): https://www.dropbox.com/scl/fi/93ta0tbkyhzx89cvenjgm/AmstradUtilityII.exe?rlkey=yi0iq04dz45w98jl71j7bq64d&dl=0
Mind also that you need to set the port number into windows utility too. And i suppose you use the 4pin female port for wifi module, right?

Btw, i suggest to continue to this thread which is for tech support and problems:
https://www.cpcwiki.eu/forum/hardware-related/usifac-ii-technical-problems-support/

ikonsgr

Summer offer for ULIfAC board:

ULIfAC Board: 26 Euros
Edge connector Ribbon cable: 3 Euros
Centronics connector Ribbon cable: 4 Euros
Registered/tracked postage: 8 Euros (+1euro for overseas Australia,US,Canada)


Please contact at ikonsgr745@hotmail.com to arrange

R0b1n

Hello John, I hope you're well  :D

I wanted to know how the experimental CPR mode works ?
Can we run the Alcon 2020 game which is supposed to work on a standard CPC ? How do I load the 512KB CPR file ?

Thanks in advance.

ikonsgr

Quote from: R0b1n on Yesterday at 17:36Hello John, I hope you're well  :D

I wanted to know how the experimental CPR mode works ?
Can we run the Alcon 2020 game which is supposed to work on a standard CPC ? How do I load the 512KB CPR file ?

Thanks in advance.
I'm afraid you can't. No matter how hard i tried, cpr files are refusing to load correctly (all cpr files i tried crash upon booting in 32x ROM board mode or the custom CPR mode, which is the same but with faster "rom swap" response), especially ALCON 2020 is a very "difficult" case, if i remember correctly, not even M4 board could load it right too.
 I've developed a utility that extract all rom binaries from a cpr file and put them in the rom slots of the 512K SRam, if you want, i could give it to try it too, but as i said , for some arcane reason, i never manage to load correctly cpr files....  ::)

andycadley

Quote from: ikonsgr on Today at 09:25I'm afraid you can't. No matter how hard i tried, cpr files are refusing to load correctly (all cpr files i tried crash upon booting in 32x ROM board mode or the custom CPR mode, 

I'm not sure where you got with that, I thought from the old thread you'd just discovered a timing bug. Looking back (and based on the above comment) I think maybe you're still trying to map cartridge slots onto the "old" 32 ROM slots and that's not really how it works.

R0b1n

OK, I retrieved the ALCON2020.BIN file and split it into four 128K files, then 32x16K files to test the two modes with out &ef00,70 (512K, CPR MODE) and then out &ef00,71 (32X).

I created two small Basic programs to load the files into the correct ROM slots with the ùMROM command, and indeed both methods doesn't work :(

ikonsgr

Quote from: andycadley on Today at 12:24I'm not sure where you got with that, I thought from the old thread you'd just discovered a timing bug. Looking back (and based on the above comment) I think maybe you're still trying to map cartridge slots onto the "old" 32 ROM slots and that's not really how it works.
Indeed, with ULIfAC i developed a special "32X rom board mode" for CPR files, where slot 0 is assigned as low rom and slots 1-31 are assigned as upper roms &80-&9f. The roms extracted from cpr file where checked & verified that they are mapped correctly to the corresponding rom slots, but still it  didn't work..

ikonsgr

Quote from: R0b1n on Today at 13:49OK, I retrieved the ALCON2020.BIN file and split it into four 128K files, then 32x16K files to test the two modes with out &ef00,70 (512K, CPR MODE) and then out &ef00,71 (32X).
I created two small Basic programs to load the files into the correct ROM slots with the ùMROM command, and indeed both methods doesn't work :(
If  you want to mount a cpr file manually: In default 512k ram mode, you should load 1st 16k block into slot 0 (|MROM,"name",0) and then all other 16k blocks to slots 1-31.
Then, you must enable low rom (OUT &EF00,51) and then activate "CPR mode" with &ef00,70 (you can also check if everything is ok with |ROM utility, lower rom must be enabled , as all upper roms from 1-31, EXCEPT upper rom '0' which must be disabled). Finally you need to give |SW, or press "RAM/ROM" button on ULIfAC board. From numerous tests i made with Alcon 2020 and ULIfAC board, it seems to execute correctly the small code into low rom (as it changes screen to MODE 0), but after that, it freezes...

arnoldemu

Quote from: ikonsgr on Today at 13:50
Quote from: andycadley on Today at 12:24I'm not sure where you got with that, I thought from the old thread you'd just discovered a timing bug. Looking back (and based on the above comment) I think maybe you're still trying to map cartridge slots onto the "old" 32 ROM slots and that's not really how it works.
Indeed, with ULIfAC i developed a special "32X rom board mode" for CPR files, where slot 0 is assigned as low rom and slots 1-31 are assigned as upper roms &80-&9f. The roms extracted from cpr file where checked & verified that they are mapped correctly to the corresponding rom slots, but still it  didn't work..

One page from slots 0-7 can be the lower rom BUT also these can be selected at the same time for upper rom. (See document below about RMR I/O port). By default slot 0 will be the lower rom choice and it can also be selected to upper rom using &80.

Slots 0-31 can be upper rom. There is also special handling of some specific rom numbers.  Choosing number 7 chooses slot 3 from cartridge. Choosing 0-127 chooses slot 1 from cartridge.

Slot 0 is cb00 from cpr, slot 1 is cb01 etc.

See:
https://www.cpcwiki.eu/index.php/Arnold_V_Specs_Revised#Enhanced_ROM_cartridge_support

e.g.
LD BC,&DF00
out (c),c

same as

LD BC,&DF81
out (c),c

and

LD BC,&DF07
out (c),c

same as

LD BC,&DF83
out (c),c


and

LD BC,&7f00+%10000000
out (c),c

LD BC,&DF80
out (c),c

will see slot 0 at lower and upper rom position at same time.

I hope this info helps. For fuller compatibility RMR2 will need to be implemented at least to select which slot 0-7 is lower rom.





ikonsgr

@arnoldemu thanks for the extra info, but for specifically alcon 2020.cpr cartridge, things are much simpler as the creator of the game confirmed here, you only need to set 1st 16k block as low rom (obviously at slot '0') and all other 16k rom blocks to slots 1-31, it doesn't use upper rom '0'.
In any case, it will not be difficult to make the appropriate "dual" mappings (like upper rom '0'-> rom &81 or upper rom 07->&83, i suppose these must be the BASIC and amsdos rom mapping from their original rom slots to 6128 plus cartridge slots), but as @abalore mentioned Alcon 2020 don't use any system rom at all.

arnoldemu

Quote from: ikonsgr on Today at 14:13@arnoldemu thanks for the extra info, but for specifically alcon 2020.cpr cartridge, things are much simpler as the creator of the game confirmed here, you only need to set 1st 16k block as low rom (obviously at slot '0') and all other 16k rom blocks to slots 1-31, it doesn't use upper rom '0'.
In any case, it will not be difficult to make the appropriate "dual" mappings (like upper rom '0'-> rom &81 or upper rom 07->&83, i suppose these must be the BASIC and amsdos rom mapping from their original rom slots to 6128 plus cartridge slots), but as @abalore mentioned Alcon 2020 don't use any system rom at all.
Ok before the Alcon 2020 Notice appears I see some accesses to cart slots (df84 and df82 are two of them ) and I also see access to the 2nd AY at f988 and f888. What is visible when Alcon fails for you?

ikonsgr

Quote from: arnoldemu on Today at 14:36
Quote from: ikonsgr on Today at 14:13@arnoldemu thanks for the extra info, but for specifically alcon 2020.cpr cartridge, things are much simpler as the creator of the game confirmed here, you only need to set 1st 16k block as low rom (obviously at slot '0') and all other 16k rom blocks to slots 1-31, it doesn't use upper rom '0'.
In any case, it will not be difficult to make the appropriate "dual" mappings (like upper rom '0'-> rom &81 or upper rom 07->&83, i suppose these must be the BASIC and amsdos rom mapping from their original rom slots to 6128 plus cartridge slots), but as @abalore mentioned Alcon 2020 don't use any system rom at all.
Ok before the Alcon 2020 Notice appears I see some accesses to cart slots (df84 and df82 are two of them ) and I also see access to the 2nd AY at f988 and f888. What is visible when Alcon fails for you?
The disassembly of alcon's low rom code is:
F3          DI                   ; Disable interrupts
21 0F 00    LD HL,000Fh          ; HL = 0x000F
11 00 40    LD DE,4000h          ; DE = 0x4000
01 0D 00    LD BC,000Dh          ; BC = 13
ED B0       LDIR                 ; Copy BC bytes from HL to DE
C3 00 40    JP 4000h             ; Jump to address 0x4000

01 84 7F    LD BC,7F84h          ; (next code block)
ED 49       OUT (C),C            ; Output C to port C
01 84 DF    LD BC,DF84h
ED 49       OUT (C),C
C3 30 C0    JP C030h             ; Jump to address 0xC030

If i remember correctly, upon booting in CPR mode,  screen changes to MODE 0, but after that, i only got some garbage on screen and amstrad froze. I remember that i had verified that upper rom slot changed to slot 4 of 512k sram (selecting rom number with OUT &DF00,X ignored the MSB and selecting roms &81-&9f practically select rom slots 1-31 of 512k sram), so most probable initial low rom code was executed correctly, but after that...

R0b1n

Quote from: ikonsgr on Today at 13:57
Quote from: R0b1n on Today at 13:49OK, I retrieved the ALCON2020.BIN file and split it into four 128K files, then 32x16K files to test the two modes with out &ef00,70 (512K, CPR MODE) and then out &ef00,71 (32X).
I created two small Basic programs to load the files into the correct ROM slots with the ùMROM command, and indeed both methods doesn't work :(
If  you want to mount a cpr file manually: In default 512k ram mode, you should load 1st 16k block into slot 0 (|MROM,"name",0) and then all other 16k blocks to slots 1-31.
Then, you must enable low rom (OUT &EF00,51) and then activate "CPR mode" with &ef00,70 (you can also check if everything is ok with |ROM utility, lower rom must be enabled , as all upper roms from 1-31, EXCEPT upper rom '0' which must be disabled). Finally you need to give |SW, or press "RAM/ROM" button on ULIfAC board. From numerous tests i made with Alcon 2020 and ULIfAC board, it seems to execute correctly the small code into low rom (as it changes screen to MODE 0), but after that, it freezes...
Thank you very much, it works but it freezes after the first screen you are right.

arnoldemu

I noticed in a previous message that port EFxx is being used to turn on/off the CPR mode?

This code happens at c030.. Is the out Ef7F a problem?

; Start &c030
; End &c055
; Length: &0025
C030:          .    DI
C031:          ...  LD BC,#F782
C034:          .I  OUT (C),C
C036:          ...  LD BC,#F400
C039:          .I  OUT (C),C
C03B:          ...  LD BC,#F600
C03E:          .I  OUT (C),C
C040:          ...  LD BC,#EF7F
C043:          .I  OUT (C),C
C045:          ...  LD BC,#F8FF
C048:          .I  OUT (C),C
C04A:          ...  LD BC,#7FC0
C04D:          .I  OUT (C),C
C04F:          .~.  LD BC,#FA7E
C052:          .    XOR A,A
C053:          .y  OUT (C),A
C055:          ...  LD BC,#F880

andycadley

Quote from: ikonsgr on Today at 13:50
Quote from: andycadley on Today at 12:24I'm not sure where you got with that, I thought from the old thread you'd just discovered a timing bug. Looking back (and based on the above comment) I think maybe you're still trying to map cartridge slots onto the "old" 32 ROM slots and that's not really how it works.
Indeed, with ULIfAC i developed a special "32X rom board mode" for CPR files, where slot 0 is assigned as low rom and slots 1-31 are assigned as upper roms &80-&9f. The roms extracted from cpr file where checked & verified that they are mapped correctly to the corresponding rom slots, but still it  didn't work..
CB00 is both the Lower ROM and Upper ROM &80 (though as you mentioned Alcon, and probably a lot of Plus software, only accesses it as the Lower ROM). The remaining cart banks should be treated as Upper ROMs &81-&A0 in order.

That ignores some edge cases with the Plus (technically andly of the first 8 slots can be a Lower ROM and the Lower ROM can appear at &0000, &4000 or &8000, any of the ROMs can also be an upper ROM (including at the same time) and there is special handling of the Basic and Disk ROMs (which varies slightly between a Plus and GX).

The Basic/Disk ROM maping probably matters for disk games converted to cart using an automated tools, but I'd assume most native carts wouldn't deliberately rely upon it. 

arnoldemu

Quote from: R0b1n on Today at 15:28
Quote from: ikonsgr on Today at 13:57
Quote from: R0b1n on Today at 13:49OK, I retrieved the ALCON2020.BIN file and split it into four 128K files, then 32x16K files to test the two modes with out &ef00,70 (512K, CPR MODE) and then out &ef00,71 (32X).
I created two small Basic programs to load the files into the correct ROM slots with the ùMROM command, and indeed both methods doesn't work :(
If  you want to mount a cpr file manually: In default 512k ram mode, you should load 1st 16k block into slot 0 (|MROM,"name",0) and then all other 16k blocks to slots 1-31.
Then, you must enable low rom (OUT &EF00,51) and then activate "CPR mode" with &ef00,70 (you can also check if everything is ok with |ROM utility, lower rom must be enabled , as all upper roms from 1-31, EXCEPT upper rom '0' which must be disabled). Finally you need to give |SW, or press "RAM/ROM" button on ULIfAC board. From numerous tests i made with Alcon 2020 and ULIfAC board, it seems to execute correctly the small code into low rom (as it changes screen to MODE 0), but after that, it freezes...
Thank you very much, it works but it freezes after the first screen you are right.
R0b1n what does the screen show when it freezes?

ikonsgr

Quote from: arnoldemu on Today at 15:33I noticed in a previous message that port EFxx is being used to turn on/off the CPR mode?

This code happens at c030.. Is the out Ef7F a problem?

; Start &c030
; End &c055
; Length: &0025
C030:          .    DI
C031:          ...  LD BC,#F782
C034:          .I  OUT (C),C
C036:          ...  LD BC,#F400
C039:          .I  OUT (C),C
C03B:          ...  LD BC,#F600
C03E:          .I  OUT (C),C
C040:          ...  LD BC,#EF7F
C043:          .I  OUT (C),C
C045:          ...  LD BC,#F8FF
C048:          .I  OUT (C),C
C04A:          ...  LD BC,#7FC0
C04D:          .I  OUT (C),C
C04F:          .~.  LD BC,#FA7E
C052:          .    XOR A,A
C053:          .y  OUT (C),A
C055:          ...  LD BC,#F880


The out &ef00,X (which is officially the printer port) is used only in default 512k ram expansion mode to communicate with ULIfAC and set various aspects of rom board (like mode of operation, enable/disable specific roms and others). When Amstrad resets to 32x rom board or CPR mode ULIfAC does not respond to this port anymore.
BUT, i've noticed something else to the code you gave (i suppose it's the first bytes of the rom &84 at &c030 where the last jump on initial code goes right?), is the last instruction LD BC,&F880 followed by an OUT (C),C instruction? If yes, then this will wrongly enable the serial port of ULIfAC (because A.5 and A.10 of address bits would be '0'), and perhaps this will cause the freezing! 
I've checked here to see what on earth is port &F880 and it says: PlayCity Expansion CTC channels and YMZ data  ???

arnoldemu

Quote from: ikonsgr on Today at 17:26
Quote from: arnoldemu on Today at 15:33I noticed in a previous message that port EFxx is being used to turn on/off the CPR mode?

This code happens at c030.. Is the out Ef7F a problem?

; Start &c030
; End &c055
; Length: &0025
C030:          .    DI
C031:          ...  LD BC,#F782
C034:          .I  OUT (C),C
C036:          ...  LD BC,#F400
C039:          .I  OUT (C),C
C03B:          ...  LD BC,#F600
C03E:          .I  OUT (C),C
C040:          ...  LD BC,#EF7F
C043:          .I  OUT (C),C
C045:          ...  LD BC,#F8FF
C048:          .I  OUT (C),C
C04A:          ...  LD BC,#7FC0
C04D:          .I  OUT (C),C
C04F:          .~.  LD BC,#FA7E
C052:          .    XOR A,A
C053:          .y  OUT (C),A
C055:          ...  LD BC,#F880


The out &ef00,X (which is officially the printer port) is used only in default 512k ram expansion mode to communicate with ULIfAC and set various aspects of rom board (like mode of operation, enable/disable specific roms and others). When Amstrad resets to 32x rom board or CPR mode ULIfAC does not respond to this port anymore.
BUT, i've noticed something else to the code you gave (i suppose it's the first bytes of the rom &84 at &c030 where the last jump on initial code goes right?), is the last instruction LD BC,&F880 followed by an OUT (C),C instruction? If yes, then this will wrongly enable the serial port of ULIfAC (because A.5 and A.10 of address bits would be '0'), and perhaps this will cause the freezing! 
I've checked here to see what on earth is port &F880 and it says: PlayCity Expansion CTC channels and YMZ data  ???
The code following that up to the next JP is. Yes it looks like it sends 7f, then 01 to F880 so confirming what you say.

; Start &c055
; End &c089
; Length: &0034
C052:          .    XOR A,A
C053:          .y  OUT (C),A
C055:          ...  LD BC,#F880
C058:          !..  LD HL,#7F01
C05B:          .a  OUT (C),H
C05D:          .i  OUT (C),L
C05F:          ! .  LD HL,#C020
C062:          ..  LD B,#BC
C064:          >.  LD A,#00
C066:          N    LD C,(HL)
C067:          .y  OUT (C),A
C069:          .    INC B
C06A:          .I  OUT (C),C
C06C:          .    DEC B
C06D:          #    INC HL
C06E:          <    INC A
C06F:          ..  CP A,#10
C071:            .  JR NZ,#C066
C073:          .7.  LD BC,#0737
C076:          !..  LD HL,#C0AB
C079:          ...  LD DE,#0100
C07C:          ..  LDIR
C07E:          ...  LD BC,#001F
C081:          !..  LD HL,#C08C
C084:          ..@  LD DE,#4000
C087:          ..  LDIR
C089:          ..@  JP #4000


R0b1n

Quote from: arnoldemu on Today at 16:20
Quote from: R0b1n on Today at 15:28
Quote from: ikonsgr on Today at 13:57
Quote from: R0b1n on Today at 13:49OK, I retrieved the ALCON2020.BIN file and split it into four 128K files, then 32x16K files to test the two modes with out &ef00,70 (512K, CPR MODE) and then out &ef00,71 (32X).
I created two small Basic programs to load the files into the correct ROM slots with the ùMROM command, and indeed both methods doesn't work :(
If  you want to mount a cpr file manually: In default 512k ram mode, you should load 1st 16k block into slot 0 (|MROM,"name",0) and then all other 16k blocks to slots 1-31.
Then, you must enable low rom (OUT &EF00,51) and then activate "CPR mode" with &ef00,70 (you can also check if everything is ok with |ROM utility, lower rom must be enabled , as all upper roms from 1-31, EXCEPT upper rom '0' which must be disabled). Finally you need to give |SW, or press "RAM/ROM" button on ULIfAC board. From numerous tests i made with Alcon 2020 and ULIfAC board, it seems to execute correctly the small code into low rom (as it changes screen to MODE 0), but after that, it freezes...
Thank you very much, it works but it freezes after the first screen you are right.
R0b1n what does the screen show when it freezes?
The game start with the presentation screen (text+sound with red paper in mode 1) and after it goes black or red then nothing happen, it simply freezes...

ikonsgr

Quote from: R0b1n on Today at 17:40The game start with the presentation screen (text+sound with red paper in mode 1) and after it goes black or red then nothing happen, it simply freezes...
You mean that you get an actual screen and sound before freezing?

R0b1n

I finally managed to launch the game without doing anything special after several attempts, so it was a stroke of luck! However, it crashed after 3 minutes of play...

edit: I confirm, the game starts sometimes and we can play it !
edit 2: ok I understand, for the game to start every time you have to completely empty the memory of the amstrad and the ulifac by cutting the power to the screen, turn on the amstrad once or twice then turn the power back on and turn on the amstrad and then the game starts!

ikonsgr

Quote from: R0b1n on Today at 17:54I finally managed to launch the game without doing anything special after several attempts, so it was a stroke of luck! However, it crashed after 3 minutes of play...
Wow, that's great progress! :)
I never manage to load any cpr ,although i don't think i've tested cpr with newer version of ULIfAC board... I tried so hard to make cpr work with ULIfAC ~couple of years before, and when i couldn't make it to work i just give up and never involved with it again...  ::)
say, you used the raw binary image of ALCON (cut inτο 16k blocks and load them with |MROM) and not the cpr file right?
btw, what version of ULIfAC do you have? And do you have a pickit programmer or a usb2serial cable?  Since you involved so much with cpr cartridge roms, i could make some update to ULIfAC code (mostly prevent enabling of serial port code when other address bits aprat from A.5 and A.10 are also set to '0' as with the &F880 port address mentioned before) and give it to you for testing :-)

R0b1n

I just emailed you a video. I have a Ulifac rev5 board to which I added the pullup resistor and I updated to firmware 4a. So I can update and test without any problems.

Powered by SMFPacks Menu Editor Mod