• Please review our updated Terms and Rules here

cpmtools and cdos disks

Endersending

Experienced Member
Joined
Mar 14, 2023
Messages
119
Location
Walker, Minnesota
I am in the process of acquiring software for my Z80/S-100 Computer that is comprised of a Cromemco 4FDC controller, memory and a ZPU. My setup is limited to single density disks and so the software I want needs to be converted.
Unless someone can point me to single density images of kermit, supercalc, visicalc, sbasic, wordstar I will need some help figuring out how to make disk images that work with CDOS.
My current process is to use the images on a Gotek as a 5" drive and test that they work and then move them to physical media. My plan was to take a known working 5" image, delete the files, and copy the new software onto the existing CDOS disk. Using cpmtools has not been successful because I do not or can't find the correct diskdefs to use. If I don't specify a diskdef type on the command line, something like cpmls will show something like this:
/public/cromemco/images$ cpmls -F 293ALGOL.img
Directory For Drive A: User 0

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06
137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06
-- snip --

Directory For Drive A: User 1

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

�" ' 137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06
" + 137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06
-- snip --

Directory For Drive A: User 3

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06
H 137413225339k 1099305802705 S Delete 08/12/28 09:15 10/22/53 16:06

Total Bytes = 1244634k Total Records = -1701318958 Files Found = 50
Total 1k Blocks = 67 Used/Max Dir Entries For Drive A: 64/ 64

I am learning as you define different diskdefs or change the sectrk size it changes what the directory listing looks like.
That helps me understand a little more about how the disk is being read.

Here is my latest work when trying to read the image on a real machine gives me sector errors:

chris@chris-ws:/public/cromemco/images/5inch$ cp 002FDFS.img ../supercalc.img
chris@chris-ws:/public/cromemco/images/5inch$ rm 002FDFS.img

chris@chris-ws:/public/cromemco/images$ cpmls -F supercalc.img
Directory For Drive A: User 0

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

@ COM 2k 16 None
CONPROC COM 3k 21 None
DUMP COM 2k 13 None
EDIT COM 7k 56 None
FOR COM 25k 195 None
INIT COM 1k 8 None
LINK COM 7k 56 None
MEMTEST COM 2k 14 None
PROGRAM NOT 0k 0 None
STAT COM 2k 9 None
WRTSYS COM 1k 7 None
XFER COM 4k 25 None

Directory For Drive A: User 3

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

U^#VKQ Z 4k 25 None

Directory For Drive A: User 26

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

�������� ��� 4k 25 None
�������� ��� 4k 25 None

Total Bytes = 62k Total Records = 495 Files Found = 15
Total 1k Blocks = 71 Used/Max Dir Entries For Drive A: 28/ 64
chris@chris-ws:/public/cromemco/images$ cpmrm supercalc.img 0:*.*
cpmrm: can not erase 00program.not: file not found
chris@chris-ws:/public/cromemco/images$ cpmls -F supercalc.img
Directory For Drive A: User 0

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

PROGRAM NOT 0k 0 S Read 07/29/21 15:43 07/15/16 15:24

Directory For Drive A: User 3

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

U^#VKQ Z 0k 0 S Read 07/29/21 15:43 07/15/16 15:24

Directory For Drive A: User 26

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

�������� ��� 0k 0 S Read 07/29/21 15:43 07/15/16 15:24
�������� ��� 0k 0 S Read 07/29/21 15:43 07/15/16 15:24

Total Bytes = 0k Total Records = 0 Files Found = 4
Total 1k Blocks = 22 Used/Max Dir Entries For Drive A: 16/ 64

chris@chris-ws:/public/cromemco/images/Suprcalc$ cpmcp -t ../supercalc.img *.* 0:
chris@chris-ws:/public/cromemco/images$ cpmls -F supercalc.img
Directory For Drive A: User 0

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

BALANCE CAL 7k 50 None
BARRIER CAL 4k 26 None
BRKEVN CAL 5k 33 None
INSTALL COM 13k 99 None
INSTALL DAT 14k 109 None
INSTALL OVL 38k 302 None
PROGRAM NOT 0k 0 None
SC COM 24k 191 None
SC OVL 15k 113 None
SCHAZ15 COM 25k 198 None

Directory For Drive A: User 3

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

U^#VKQ Z 25k 198 None

Directory For Drive A: User 26

Name Bytes Recs Attributes Prot Update Create
------------ ------ ------ ------------ ------ -------------- --------------

�������� ��� 25k 198 None
�������� ��� 25k 198 None

Total Bytes = 214k Total Records = 1715 Files Found = 13
Total 1k Blocks = 167 Used/Max Dir Entries For Drive A: 29/ 64

Here is what CDOS thinks of the image:

A.dir

Logical disk error 03h, drive A, block 000466h
Retry

Logical disk error 03h, drive A, block 000466h
Retry

My current problem is not having the correct diskdef for a 5" single density CDOS image.
If someone could provide a diskdef that works with CDOS images that would be very helpful.
In theory CP/M formats work on CDOS so I should be able to do something like this: I am not sure if my math is right for calculating the size
dd if=/dev/zero of=mydisk.img bs=128 count=360 (this would be a single sided disk and 720 would be double sided? I think)
mkfs.cpm mydisk.img
cpmcp -F mydisk.img *.* 0:

Any help would be awesome. Thanks
 
The 293ALGOL.img isn't a CP/M type image. It' a CDOS type image. I've used HxC's
software to convert it into three different type FLUX Images. You should be able to write
the IMD file to floppy using IMAGEDISK by Dave Dunfield. Also included are the .RAW
Streams for Kryoflux, the .SCP for Supercard Pro, and the .HFE for Flashfloppy/GOTEK.

The Greaseweazle should also be able to write the *.SCP file to floppy for you, as well
as the Kryoflux using the RAW Stream files.

Here is my PCloud link for those FLUX files.


Larry
 

Attachments

  • 293ALGOL.png
    293ALGOL.png
    344.7 KB · Views: 3
I think Larry's posting (above) misunderstands your problem.

Instead of using CPMTOOLS, have you considered using a CDOS emulator to create the 5.25" disk images you need? See for example:
 
Hi Chris and all. Many comments not too many solutions.
Firstly I am trying *at last* to use cpmtools to read images that I created.

So in no particular order, if you are talking cromemco stuff please join the cromemco google group that I help run.
Follow this link cromemcos/public: How to join the Cromemcos Repository (github.com)

I note you are looking at disk 293 in my disk catalog
If you join the group and the github all the disks, which are supposed to be private and not somehow public are at your disposal

293 20090502 3ULDSDDST Algol language

thats the catalog for Disk 293 and it shows that the disk is in Cromix Uniform format not CDOS at all
you would need to look in the disk catalog for a SM small SS single sided SD single density ST single tracking disk

I'll search from the top

FOUND Original 5.25 master disks and CDOS OS .TAR .IMD .HFE images available
001 20140328 _SMSSSDST* 16K Extended Basic FDB-S 05.70 with CDOS 00.20

So disk 001 which contains 16K basic is one such disk

I've tried today making what I thought would work for a diskdefs for a single sided, single density disk, but no worky

diskdef smsssdst
seclen 128
tracks 40
sectrk 18
blocksize 1024
maxdir 64
skew 5
boottrk 2
os 2.2

The only good news is that I DO HAVE 8" drives single density working. this article refers

cpmtools macOS – DIARY (smpl.fyi)


that is all for now.
 
Okay the good news is that after much deliberation and some testing here is the working diskdefs for

# cromemco small single sided single tracking

diskdef smsssdst
seclen 128
tracks 40
sectrk 18
blocksize 1024
maxdir 64
skew 5
boottrk 0
os 2.2
offset 6656
end

Also I would point out that via the Google Group Cromemco you can ask Cromemco specific questions on matters like this
 
I have the following CP/M Definitions on github:

CP/M Floppy Definitions:
Code:
# 22DISK
BEGIN CRO1  Cromemco CDOS - SSSD 48 tpi 5.25" - 128 x 18
DENSITY FM LOW
CYLINDERS 40 SIDES 1 SECTORS 18 128 SKIP
SIDE1 0 1,6,11,16,3,8,13,18,5,10,15,2,7,12,17,4,9,14
BSH 3 BLM 7 EXM 0 DSM 82 DRM 63 AL0 0C0H AL1 0 OFS 3
END

# cpmtools
# CRO1  Cromemco CDOS - SSSD 48 tpi 5.25" - 128 x 18
diskdef cro1
  seclen 128
  tracks 40
  sectrk 18
  blocksize 1024
  maxdir 64
  skew 5
  boottrk 3
  os 2.2
end

# libdsk
[cro1]
description = CRO1  Cromemco CDOS - SSSD 48 tpi 5.25" - 128 x 18
cylinders = 40
heads = 1
secsize = 128
sectors = 18
secbase = 1
datarate = SD

# Flashfloppy/GOTEK
[cro1]
cyls = 40
heads = 1
secs = 18
interleave = 5
bps = 128
id = 1
#rpm = 360
rpm = 300
rate = 125
mode = fm
iam = no

# 22DISK
BEGIN CRO2  Cromemco CDOS - DSSD 48 tpi 5.25" - 128 x 18
DENSITY FM LOW
CYLINDERS 40 SIDES 2 SECTORS 18 128 SKIP
SIDE1 0 1,6,11,16,3,8,13,18,5,10,15,2,7,12,17,4,9,14
SIDE2 1 1,6,11,16,3,8,13,18,5,10,15,2,7,12,17,4,9,14
ORDER SIDES
BSH 3 BLM 7 EXM 0 DSM 172 DRM 63 AL0 0C0H AL1 0 OFS 3
END

# cpmtools
# CRO2  Cromemco CDOS - DSSD 48 tpi 5.25" - 128 x 18
diskdef cro2
  seclen 128
  tracks 80
  sectrk 18
  blocksize 1024
  maxdir 64
  skew 5
  boottrk 3
  os 2.2
end

# libdsk
[cro2]
description = CRO2  Cromemco CDOS - DSSD 48 tpi 5.25" - 128 x 18
sides = alt
cylinders = 80
heads = 2
secsize = 128
sectors = 18
secbase = 1
datarate = SD

# Flashfloppy/GOTEK
[cro2]
cyls = 80
heads = 2
secs = 18
interleave = 5
bps = 128
id = 1
#rpm = 360
rpm = 300
rate = 125
mode = fm
iam = no

# 22DISK
BEGIN CRO3  Cromemco CDOS - SSDD 48 tpi 5.25" - 512 x 10
DENSITY MFM LOW
CYLINDERS 40 SIDES 1 SECTORS 10 512 SKIP
SIDE1 0 1,5,9,3,7,2,6,10,4,8
BSH 3 BLM 7 EXM 0 DSM 189 DRM 63 AL0 0C0H AL1 0 OFS 2
END

# cpmtools
# CRO3  Cromemco CDOS - SSDD 48 tpi 5.25" - 512 x 10
diskdef cro3
  seclen 512
  tracks 40
  sectrk 10
  blocksize 1024
  maxdir 64
  skew 4
  boottrk 2
  os 2.2
end

# libdsk
[cro3]
description = CRO3  Cromemco CDOS - SSDD 48 tpi 5.25" - 512 x 10
cylinders = 40
heads = 1
secsize = 512
sectors = 10
secbase = 1
datarate = DD

# Flashfloppy/GOTEK
[cro3]
cyls = 40
heads = 1
secs = 10
interleave = 4
bps = 512
id = 1
#rpm = 360
rpm = 300
rate = 250
mode = mfm
iam = no

# 22DISK
BEGIN CRO4  Cromemco CDOS - DSDD 48 tpi 5.25" - 512 x 10
DENSITY MFM LOW
CYLINDERS 40 SIDES 2 SECTORS 10 512 SKIP
SIDE1 0 1,5,9,3,7,2,6,10,4,8
SIDE2 1 1,5,9,3,7,2,6,10,4,8
ORDER SIDES
BSH 4 BLM 15 EXM 0 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2
END

# cpmtools
# CRO4  Cromemco CDOS - DSDD 48 tpi 5.25" - 512 x 10
diskdef cro4
  seclen 512
  tracks 80
  sectrk 10
  blocksize 2048
  maxdir 128
  skew 4
  boottrk 2
  os 2.2
end

# libdsk
[cro4]
description = CRO4  Cromemco CDOS - DSDD 48 tpi 5.25" - 512 x 10
sides = alt
cylinders = 80
heads = 2
secsize = 512
sectors = 10
secbase = 1
datarate = DD

# Flashfloppy/GOTEK
[cro4]
cyls = 80
heads = 2
secs = 10
interleave = 4
bps = 512
id = 1
#rpm = 360
rpm = 300
rate = 250
mode = mfm
iam = no

# 22DISK
BEGIN CRO5  Cromemco CDOS - DSDD 8" - 512 x 16
DENSITY MFM HIGH
CYLINDERS 77 SIDES 2 SECTORS 16 512 SKIP
SIDE1 0 1,12,7,2,13,8,3,14,9,4,15,10,5,16,11,6
SIDE2 1 1,12,7,2,13,8,3,14,9,4,15,10,5,16,11,6
ORDER SIDES
BSH 4 BLM 15 EXM 0 DSM 608 DRM 255 AL0 0F0H AL1 0 OFS 2
END

# cpmtools
# CRO5  Cromemco CDOS - DSDD 8" - 512 x 16
diskdef cro5
  seclen 512
  tracks 154
  sectrk 16
  blocksize 2048
  maxdir 256
  skew 11
  boottrk 2
  os 2.2
end

# libdsk
[cro5]
description = CRO5  Cromemco CDOS - DSDD 8" - 512 x 16
sides = alt
cylinders = 154
heads = 2
secsize = 512
sectors = 16
secbase = 1
datarate = ED

# Flashfloppy/GOTEK
[cro5]
cyls = 154
heads = 2
secs = 16
interleave = 11
bps = 512
id = 1
rpm = 360
#rpm = 300
rate = 250
mode = mfm
iam = no

# 22DISK
BEGIN CRO6  Cromemco CP/M - SSDD 48 tpi 5.25" - 512 x 10
DENSITY MFM LOW
CYLINDERS 40 SIDES 1 SECTORS 10 512 SKIP
SIDE1 0 1,4,7,10,3,6,9,2,5,8
BSH 4 BLM 15 EXM 1 DSM 94 DRM 127 AL0 0C0H AL1 0 OFS 2
END

# cpmtools
# CRO6  Cromemco CP/M - SSDD 48 tpi 5.25" - 512 x 10
diskdef cro6
  seclen 512
  tracks 40
  sectrk 10
  blocksize 2048
  maxdir 128
  skew 3
  boottrk 2
  os 2.2
end

# libdsk
[cro6]
description = CRO6  Cromemco CP/M - SSDD 48 tpi 5.25" - 512 x 10
cylinders = 40
heads = 1
secsize = 512
sectors = 10
secbase = 1
datarate = DD

# Flashfloppy/GOTEK
[cro6]
cyls = 40
heads = 1
secs = 10
interleave = 3
bps = 512
id = 1
#rpm = 360
rpm = 300
rate = 250
mode = mfm
iam = no

# 22DISK
BEGIN CRO7  Cromemco CP/M - DSDD 48 tpi 5.25" - 512 x 10
DENSITY MFM LOW
CYLINDERS 40 SIDES 2 SECTORS 10 512 SKIP
SIDE1 0 1,4,7,10,3,6,9,2,5,8
SIDE2 1 1,4,7,10,3,6,9,2,5,8
ORDER SIDES
BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2
END

# cpmtools
# CRO7  Cromemco CP/M - DSDD 48 tpi 5.25" - 512 x 10
diskdef cro7
  seclen 512
  tracks 80
  sectrk 10
  blocksize 2048
  maxdir 128
  skew 3
  boottrk 2
  os 2.2
end

# libdsk
[cro7]
description = CRO7  Cromemco CP/M - DSDD 48 tpi 5.25" - 512 x 10
sides = alt
cylinders = 80
heads = 2
secsize = 512
sectors = 10
secbase = 1
datarate = DD

# Flashfloppy/GOTEK
[cro7]
cyls = 80
heads = 2
secs = 10
interleave = 3
bps = 512
id = 1
#rpm = 360
rpm = 300
rate = 250
mode = mfm
iam = no


Larry
 
I can confirm that the 5 inch DSSD 22 disk def does work. My setup gives me a hard error when I try to format, but I can read and write to the disks.
Thanks!
 
Back
Top