News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

CP/M 720K disk

Started by SilverGreen93, 20:27, 03 December 17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SilverGreen93

Hi,


Is there any way I can make a custom format CP/M 720K disk that works on the Amstrad CPC464?
By using ParaDOS I can use 720K disks in BASIC, but they cannot be read in the original CP/M by Amstrad.


Thanks.

HAL6128

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

rpalmer

#2
Remember that the original CP/M has not idea about 720K formatted discs even with ROMDOS/RAMDOS and defaults to 180K for both drives.

You can create a patched version of CP/M to use drive "B" as 720K, but only 180K for drive "A" (I should know as I bought the ROMDOS system when it came out and the instructions said so). The reason being is that AMSDOS at the time could not handle anything more than 180K as drive A since the internal drive was fixed to this format. So when ParaDOS came out some time later it is possible to set up a drive A as 720K but the CP/M boot disk needs to be patched so that it knows that both drives are 720K.

rpalmer

SilverGreen93

#3
Quote from: HAL 6128 on 21:04, 03 December 17Sure, try RAMDOS (http://www.cantrell.org.uk/david/tech/cpc/ramdos/).Cheers

I tried to follow the instructions for RAMDOS, but I cannot figure out how to make a working CP/M disk.

Quote from: rpalmer on 21:47, 03 December 17
So when ParaDOS came out some time later it is possible to set up a drive A as 720K but the CP/M boot disk needs to be patched so that it knows that both drives are 720K.
 

I have only one drive, A. Can you point me in the right direction to create a 720K CP/M boot disk to use with drive A? I am only interested in using more space for my CP/M programs, without the need of a second drive.

HAL6128


Ah, ok. There's a misunderstandig from my side. I thought you wanted to create simple 720k disc on B:, not able to boot CP/M.
With RAMDOS you are only able to read data discs with different formats on B:.


As far as I remember well there are some listings around in old magazines, which shows you patching a CP/M booting from A: or B: without the need of system tracks and a different one (patched) one which is able to read a 720k. But I can't remember which one....
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

rpalmer

You CANNOT run CP/M from RAMDOS.

The reason is that CP/M is started from the |CPM command which is in ROM and it calls the ROM routines (which also clears memory, hence removing RAMDOS). You would need to patch AMSDOS/ParaDOS ROM to default the Drive A to 720K and patch the .EMS file to let it know that drive B is 720K as well (if desired).

You would end up losing access to 180K discs in drive A with a patched AMSDOS, ParaDOS on the other hand can handle it in BASIC since you can patch data in RAM to determine how the drives are handled.

I am also assuming you have replaced Drive A with a 3.5 inch drive. If its the 3inch version then you again CANNOT make it 720K as the mechanical side of the drive does not allow for shorter head movements to get 80 tracks and definitely only has 1 head and not 2 for double side access.

rpalmer

robcfg

I just wanted to say that there are double head, 720KB 3" drives.


They were mostly used as second drive on PCWs.

rpalmer

robcfg,

you are correct that they are in PCWs, but were not used in CPCs. They could be installed into a CPC, but don't think many people did, since the more common change nowadays is for 3.5 inch drives.

rpalmer

robcfg

Absolutely!


But should he have such 3" drive, it would be possible to have a 3" 720kb disk.


Just to not rule out the possibility.

SilverGreen93

I'm sorry I haven't give you all the detials:
So I have a CPC 464 with a DDI-I interface and one 3.5" floppy. I don't care about the 3" format and the 180K disks.
I want to make a 720K CP/M system disk to be able to fit larger programs onto the disc, such as AZTEC C.

Quote from: rpalmer on 23:44, 03 December 17
You would need to patch AMSDOS/ParaDOS ROM to default the Drive A to 720K and patch the .EMS file to let it know that drive B is 720K as well (if desired).

You would end up losing access to 180K discs in drive A with a patched AMSDOS, ParaDOS on the other hand can handle it in BASIC since you can patch data in RAM to determine how the drives are handled.


How can I achieve that? I use ParaDOS as my default ROM and I've set both drives to DS/DD 80 track, but I don't know how to sysgen on a 720K disk, since my only CP/M system disk is the original one with 180K.

||C|-|E||

As it has been mentioned above, it will only work with the drive B, but it will work fine  :) When we made our adventure, we were trying to fit everything in a single 720KB floppy, but it was not possible to make CP/M use a 720KB drive A. Therefore, the game uses a normal drive A and a 720KB drive B.

HAL6128

I'm not 100% sure, but you can try to load the C10CPM3.EMS via ZSID to address &C00 and then Change the drive and XDPB Parameters at:

;double head drives
&1A1A:   call &1F8      ;(Runtime-Address &D5A)
&0EB8:   ld a,c          ;(Runtime-Addresse &1F8)
        res 2,a
        or &20
        ret
;variable step rate
&18BB:   push bc         ;(Runtime-Addresse &BFB)
        push hl
        ld b,0
        call &EE2
        ld iy,&B0F2
        add iy,bc
        pop hl
        pop bc
        ret
&1BA2:   ld a,c          ;(Runtime-Addresse &EE2)
        and &3
        ld c,a
        ld hl,&EF9
        add hl,bc
        sla c
        ld a,(hl)
        ld hl,&B0F1
        cp (hl)
        ret z
        ld (hl),a
        ld hl,&AD5
        jp &AF2
        db &4          ;step rate for drive A:
;apply format
&C30:   ld bc,&10A     ;Runtime-Address &C30
&CFB:   db 'NoMemory',&FF
&D04:
dw &24        ;(Runtime-Address &C0CE)
db &5,&1F,&3  ;XDPB for Drive A: 716k-Format (R1)
dw &B0,&7F  ;if Auto Login necessary
db &80,&00      ; -> set Auto login
dw &20,&02
db &2,&3      ;buffer for 350 blocks or 128 dirs
db &1,&50,&9,&1; 512 Bytes per Sector
dw &200
db &2A,&52,&60
db &FF         ;<- Auto-Login Flag

Just give it a try with a copy of your C10CPM.EMS... :)
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

rpalmer

for a patched AMSDOS, there is a DPB (Disk Parameter block) which defines what a disc is formatted to.

The address of the DPB in the KDSROM/AMSDOS ROM is &DF9F

You should see something like:

000141  DF9F                ;##############################################################################
000142  DF9F                ;
000143  DF9F                ;           HIGH CAPACITY DISC PARAMETERS BLOCK DATA
000144  DF9F                ;
000145  DF9F                ;   720K Disk
000146  DF9F                ;   4 Kbyte block
000147  DF9F                ;   Double Sided 80 Track = 160 Tracks (A0H)
000148  DF9F                ;   128 Directory Enrties
000149  DF9F                ;   2 Reserved Tracks
000150  DF9F                ;   First Sector = &41 (Same as Drive A System Format)
000151  DF9F                ;
000152  DF9F                ;##############################################################################
000153  DF9F                ;
000154  DF9F                ;      DATA              OFFSET   DESCRIPTION
000155  DF9F                ;
000156  DF9F  24                   DEFB &24         ;  0      RECORDS PER TRACK (LOW BYTE)
000157  DFA0  00                   DEFB &00         ;  1      RECORDS PER TRACK (HIGH BYTE)
000158  DFA1  05                   DEFB &05         ;  2      LOG2(BLOCK SIZE)-7 (BLOCK SIZE=4096)
000159  DFA2  1F                   DEFB &1F         ;  3      RECORDS PER BLOCK = (BLOCK SIZE/128)-1
000160  DFA3  03                   DEFB &03         ;  4      (BLOCK SIZE/N)-1 (N=1024 DSM<256 ELSE N=2048)
000161  DFA4  B0                   DEFB &B0         ;  5      NUMBER OF BLOCKS PER DISK (LOW BYTE)
000162  DFA5  00                   DEFB &00         ;  6      NUMBER OF BLOCKS PER DISK (HIGH BYTE)
000163  DFA6  7F                   DEFB &7F         ;  7      MAX DIRECTORIES - 1 (LOW BYTE)
000164  DFA7  00                   DEFB &00         ;  8      MAX DIRECTORIES     (HIGH BYTE)
000165  DFA8  80                   DEFB &80         ;  9      AL0 (1 BLOCK)
000166  DFA9  00                   DEFB &00         ;  10     AL1
000167  DFAA  10                   DEFB &10         ;  11     CHECKSUM VECTOR SIZE (LOW BYTE)
000168  DFAB  00                   DEFB &00         ;  12     CHECK SUM VECTOR (HIGH BYTE)
000169  DFAC  02                   DEFB &02         ;  13     NUMBER OF RESERVED TRACKS (LOW BYTE)
000170  DFAD  00                   DEFB &00         ;  14     NUMBER OF RESERVED TRACKS (HIGH BYTE)
000171  DFAE  41                   DEFB &41         ;  15     FIRST SECTOR NUMBER
000172  DFAF  09                   DEFB &09         ;  16     SECTORS PER TRACK
000173  DFB0  2A                   DEFB &2A         ;  17     GAP (READ/WRITE)
000174  DFB1  52                   DEFB &52         ;  18     GAP (FORMAT)
000175  DFB2  E5                   DEFB &E5         ;  19     FILLER BYTE
000176  DFB3  02                   DEFB &02         ;  20     SECTOR SIZE (SIZE = 2^(7+NUMBER) = 512)
000177  DFB4  04                   DEFB &04         ;  21     RECORDS PER SECTOR (SECTOR SIZE/128)
000178  DFB5  00                   DEFB &00         ;  22     CURRENT TRACK
000179  DFB6  00                   DEFB &00         ;  23     NOT ALIGNED STATUS
000180  DFB7  00                   DEFB &00         ;  24     DPB LOCKED STATUS (&FF=LOCKED, 0=UNLOCKED)

rpalmer

SilverGreen93

#13
Thank you for your replies, but...


@rpalmer: I think that I do not have to patch AMSDOS because I use ParaDOS that can be set to 720k, correct me if i'm wrong.


@HAL 6128: I do not have a C10CPM.EMS file and can't really understand how to use it to make a 720k system disk.
Can't I just copy the system sectors from the working 180K CP/M to the 720k CP/M disc somehow?

I tried to sysgen from A: to B:, but it doesn't let me to use B: as a destination and if I insert the 720K disk from B: to A:, it says the format is unrecognized.

GUNHED

#14
Quote from: SilverGreen93 on 20:27, 03 December 17
Hi,
Is there any way I can make a custom format CP/M 720K disk that works on the Amstrad CPC464?
By using ParaDOS I can use 720K disks in BASIC, but they cannot be read in the original CP/M by Amstrad.
Thanks.


For this reason (and many more) I always suggest to use the famous Vortex format, it provides 704 KB on any 3.5" or 5.25" disc (doublesided, 80 tracks). In addition it contains system tracks. It's supported by ParaDOS (please use the VaraDOS instead, it has Vortex format switched on).
Furthermore the great Vortex format is supported by CP/M Plus and CP/M 2.2 (also the 63 KB TPA CPM 2.2). I meant the CP/M versions form Dobbertin. Of course also other DOS ROMs like X-DDOS and V-DOS support Vortex format, even FutureOS does support it. If someone need DSK's then please let me know (exactly what you want).  :) 


EDIT: Dobbertin DDOS does use 704 KB format on A by default (but I don't have it, because I use a 6128).
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

SilverGreen93

Quote from: GUNHED on 14:20, 04 December 17
I always suggest to use the famous Vortex format, it provides 704 KB on any 3.5" or 5.25" disc (doublesided, 80 tracks). In addition it contains system tracks. It's supported by ParaDOS (please use the VaraDOS instead, it has Vortex format switched on).
[...]
If someone need DSK's then please let me know (exactly what you want).  :)


If I can enable manually Vortex format with ParaDOS, 704KB sounds excellent. If you have a bootable 704KB CP/M 2.2 DSK file to share, that would be exactly what I need!

GUNHED

Quote from: SilverGreen93 on 14:23, 04 December 17

If I can enable manually Vortex format with ParaDOS, 704KB sounds excellent. If you have a bootable 704KB CP/M 2.2 DSK file to share, that would be exactly what I need!


For drive A I have to make a DSK from one of my real discs... will take a bit.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

HAL6128


Quote from: SilverGreen93 on 12:56, 04 December 17
@HAL 6128: I do not have a C10CPM.EMS file and can't really understand how to use it to make a 720k system disk.
Can't I just copy the system sectors from the working 180K CP/M to the 720k CP/M disc somehow?

I tried to sysgen from A: to B:, but it doesn't let me to use B: as a destination and if I insert the 720K disk from B: to A:, it says the format is unrecognized.
No.
As soon as you boot CP/M it will initialize a 3" disc (40 tracks / 180kB and so on) on drive A:. This code is inside the boot sector code (first two tracks) and in the C10CPM.EMS. Therefore you have to patch both. (I forgot to mention that you have to patch the boot sector first). You can do the patching stuff with the help of the standard CP/M apps like ZSID / DDT and don't need to compile something. But you need to know what and how to do.


The better choice is and wait until GUNHED will help you with the professional VORTEX solution. VORTEX made some clever hardware / software expansion stuff in the past for the CPC.
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

arnoldemu

I think to use a 720K CPM boot disc from A easily then you will need to use VDOS ROM because this knows the format and will probably allow you to boot into CPM with it (this is guesswork I'd really have to dissassemble the rom to know for sure).

AMSDOS will boot from track 0 sector 41 only. It would be possible with a custom format I think but would be more awkward to use.


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

SilverGreen93

Quote from: arnoldemu on 21:48, 04 December 17
I think to use a 720K CPM boot disc from A easily then you will need to use VDOS ROM because this knows the format and will probably allow you to boot into CPM with it (this is guesswork I'd really have to dissassemble the rom to know for sure).

AMSDOS will boot from track 0 sector 41 only. It would be possible with a custom format I think but would be more awkward to use.


Do ParaDOS/VaraDOS boot the CPM from 80t disk? Or only VDOS does?

rpalmer

silvergreen,

I had disassembled the AMSDOS/KDSROM disc rom some decade or so ago. It is not a 100% disassembly, but it goes far more deeply than other version as the comments give more details.

To understand how CP/M is booted see attached listing and goto to label "LC1DC" to see how CP/M starts.

You will see that at this label the start of CP/M downloads the DPB to RAM which defines how CP/M understands disc formats. This is why the ROM needs a patch to make sure that CP/M knows how to read the discs in particular to double sided ones.

CP/M booting makes calls into the DISC ROM to do all of the heavy lifting of disc I/O before the system is up and running and assumes that the RAM is completely free to use as it sees fit.

As for ParaDOS I suspect the boot process has not changed, but I dont know.

rpalmer

SilverGreen93

#21
I understand.

While I am waiting for GUNHED to share a Vortex CP/M image, I tried VDOS, but all the messages are in German. On the cpcwiki it is said that "Further there were German and English versions of this ROMs.", but I cannot find an English version.

Edit: X-DDOS looks ok, English and feature-rich.
I will test afterwords which of them do boot CP/M.

GUNHED

#22
Quote from: SilverGreen93 on 22:01, 04 December 17

Do ParaDOS/VaraDOS boot the CPM from 80t disk? Or only VDOS does?


VDOS and DDOS can do it (depends on physical drive of course).


Sorry, I'll need some more time for the DSK's, cause I'm off for few days or so.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

SilverGreen93

#23
Quote from: GUNHED on 12:27, 06 December 17

VDOS and DDOS can do it (depends on physical drive of course).


Sorry, I'll need some more time for the DSK's, cause I'm off for few days or so.


If XD-DOS can, it's great! I'll wait for your image with great interest!  :D

GUNHED

Not X-DDOS, it's DDOS (different DOS!). Also X-VDOS is not VDOS.


One is for X-drives (means drive B). The other one is for a pack of two drives - 80 tracks, doublesided each.

http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Powered by SMFPacks Menu Editor Mod