News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_JonB

FID file support in CPC6128 CP/M Plus 1.0

Started by JonB, 15:01, 02 March 17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JonB

Hi

Does CP/M Plus v1.0 on the CPC6128 support FID files? I'm guessing not, but I thought I'd ask anyway.

According to JE's site:
Quote from: www.seasip.info
Versions known to support FID files are 1.7H, 1.11+ and 2.9+.

But it doesn't say what machines these versions are for.

The other thing I wanted to ask is what is the latest 6128 CP/M and where can I download it from?

Cheers
JonB

JonB

I did find this http://www.cpcwiki.eu/index.php/System_Disk


The English and French disks have CPM v1.0
The German disk has v1.1 (but I expect the language is German for the OS messages)


I think I am looking for the latest English version...

PulkoMandy

It seems (according to http://www.seasip.info/Cpm/xbiosint.html) that there was only version 1.0 released for the CPC. This means no FID files.


On the CPC, you will probably need to either patch the XBIOS (http://www.seasip.info/Cpm/xbios.html), or maybe it is possible to just override AMSDOS RSXs for disk access and get CP/M to use those.




JonB

Hi


It seems that 1.1 is the latest version (it's on the German white labelled disks) but it has no FID support either.


Having reviewed the pages you linked to, one thing looks particularly interesting:

       
  • It says that CPM is running as an application under the CPC ROM and that suggests we can implement a ROM patch and it might work under CP/M and AMSDOS.
However, as a complete newbie to CPC internals, I'm at a bit of a loss as to how to start. Where can I find out more?

arnoldemu

#4
Quote from: JonB on 19:48, 06 March 17
Hi


It seems that 1.1 is the latest version (it's on the German white labelled disks) but it has no FID support either.


Having reviewed the pages you linked to, one thing looks particularly interesting:

       
  • It says that CPM is running as an application under the CPC ROM and that suggests we can implement a ROM patch and it might work under CP/M and AMSDOS.
However, as a complete newbie to CPC internals, I'm at a bit of a loss as to how to start. Where can I find out more?
I don't think that will work. The firmware "CAS" functions used for reading/writing files are not used by CPM.
So there are no obvious places to patch.

For the cpc the following happens on cpm+:

User types |CPM to boot CPM. This is a command inside the AMSDOS rom in the 6128.
This loads track 0 sector 41 on drive A. Then this reads the directory from track 2 sector 41-45. It locates a file ending with "EMS" and sector loads it into memory at &c00. It performs some initial setup (key translation etc), then runs the code.

The EMS file copies bits of data around memory and some into the extra 128KB memory. It uses C1 configuration (which maps the 4th block of extra 64kb to c000. An equivalent is c7 which maps 4th block to 4000.)

The firmware does exist at &b000-&c000, but it appears to be mostly used for writing to the screen and that kind of thing. I don't believe the sector reading functions in the AMSDOS rom are used, and these are not available in the firmware jumpblock so you can't patch them. The disc reading is re-implemented in the ems file. It appears most of the code around &c000-&ffff is the core cpm code.

I haven't worked it all out yet, it does a lot of copying data around.

CPM 2.2 is a little bit different:

|CPM is used and like cpm+ this loads track 0 sector 41 into memory. wboot etc is copied from AMSDOS to RAM.
EDIT: Track 0 sector 42 is loaded. This configures keyboard, colours, sign on message, serial interface (if connected), disc parameters (motor on timeout, motor off timeout) and sets up initial command buffer for cpm. wboot is executed. This loads sectors from disc and locates them at &9700 in ram. Firmware jumpblock is still there. Screen is at &c000-&ffff. The remaining boot process sets up 0005 etc for cpm to use.

I recommend trying cpm 2.2 first and patching it as you do with the other cpm machines. This is possible because wboot and other vectors are in ram around &be00. Some of cpm did has been dissassembled.


When I find more I'll let you know.

I wish I had kept the CPC CPM "bible" now -> http://www.cpcwiki.eu/index.php/The_Amstrad_CP/M_Plus
I am fairly sure this would have told you all you need to know.

I don't know if there is a scanned version available and it was quite a thick book. So without it, back to reverse engineering what the cpm stuff is doing.

If you want to eventually boot from uide16 you'll probably need to implement your own ROM for CPC which you can use to start and load cpm from your uide16.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

FloppySoftware

floppysoftware.es < NEW URL!!!
cpm-connections.blogspot.com.es

JonB

Ah great stuff!


So you think it should acceptable to patch 2.2 first? I thought no one used it (apart from Bryce, as he told me the other day).


Ok, I can do that. I already looked at its BIOS jump table and I know it has MOVCPM and SYSGEN. Hopefully I can port XDRIVER v1.9 across (this is the extended 2.2 driver with on-demand drive mapping and access to master and slave devices if connected).


I definitely need help with CPM Plus and AMSDOS, though. Please keep it coming! :)

JonB



@FloppySoftware : The PDF is good but hasn't got much BIOS detail in it which is what I need. Thanks for the link though.


@arnoldemu : I have just ordered a copy from a used book seller on Amazon for about £10. Unobtanium? Not so far.. ;)

arnoldemu

#8
Quote from: JonB on 21:51, 06 March 17
Ah great stuff!


So you think it should acceptable to patch 2.2 first? I thought no one used it (apart from Bryce, as he told me the other day).
Not sure how many people use it, but for simplicity it may be the best to go for while the info you need for cpm+ is on it's way or being worked out :)

You may find the same solution works on cpm+.

Looking at cpm+ it looks like you can do it the same way if you need to.

There is a similar trampoline function but this one works with banked ram, but the bits are in the same place.


My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

JonB

#9

Regarding "The Amstrad CP/M Plus" by David Powys-Lybbe & Andrew RM Clarke.

The book turned up and I have had a chance to review the BIOS information presented therein.

       
  • The section on writing RSXes is just 8 pages long.  :(
  • The RSX section says that RSX code must never attempt to access disks, because the BDOS will get confused. It's not immediately clear whether this applies to background processing (like the print spooler) or what I might attempt to do (use the RSX to give memory space to the uIDE driver and patch the BIOS directly).
  • Appendix C says "It is not possible to support other devices, such as large capacity disks.. due to the fact that the [Amstrad] implementation is not supplied in .REL file format with GENCPM.COM and GENCPM.DAT. The scope for patching is strictly limited."
I don't think this book is much use to me. It appears to be more interested in documenting the BDOS calls than giving any information about patching the BIOS. In that regard it adds no value (to me).

Moreover, their statement in Appendix C suggests that they have not attempted a workaround to the "standard CP/M Plus patch technique".

HAL6128


Dobbertin used to provide in the eighties some drivers for their NON-IDE (SASI?) Harddiscs (CPM2.2 and CPM+). Maybe disassembling those drivers might help to find another way?
http://www.cpcwiki.eu/index.php/Dobbertin_Harddisc

...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

Powered by SMFPacks Menu Editor Mod