Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

8mb CP/M disk image

426 views
Skip to first unread message

retrosys...@gmail.com

unread,
May 23, 2018, 6:59:27 AM5/23/18
to
I hope this isn't a stupid question, maybe it has a simple answer, maybe you can direct me to some information that will help me solve it. I am using CPM 2.2 on my Coleco Adam and the format utility only supports 160k disk or 256k data tape. I want to use the maximum 8mb that CPM can handle by using the virtual disk drive that is available for the adam which emulates the floppy and can address images up to 65mb. The information I see here: http://www.seasip.info/Cpm/format22.html seems to say that I need to modify the disk parameter block so that CPM sees the larger size but it also says that it is not stored on the disk so it is either in the BIOS or created on the fly. So my question is can anyone help me or give me some clues on how I can go about making this change? Was there ever a utility that would let you create disks of varying sizes?

Bill H

Larry Kraemer

unread,
May 23, 2018, 8:14:30 AM5/23/18
to
Was there ever a utility that would let you create disks of varying sizes?

There are several utilities that allow you to access and create Floppy's, and
Images of floppy's which are external to your CP/M system. The three I use are
22DISK by SYDEX, cpmtools, and libdsk (cpmtools built with libdsk). I'm sure there are others, but for my use these Software packages do the job.

So, my question is can anyone help me or give me some clues on how I can go about making this change?

Download the "CPM_2.2_Alteration_Guide_1979.pdf" which will describe the DPB
and also lead you through the process of altering your system.

If you want to know what your system's DPB Information is, you can boot it and
use DDT to display the DPB's HEX Bytes. This information should also be in your
System's source code files.

STAT A: DSK: - Gives some detailed disk information for A:.
STAT B: DSK: - Gives some detailed disk information for B:.

If you have a functional CP/M system, you can use DDT to find the Disk Parameter Block Address, the Allocation Address, along with the information stored there for the logged floppy drive.

1. Log the floppy drive you wish to locate the DPB data for. I will use A: for this example
2. Run DDT and enter the code below:
A: <Carriage RETURN>
DDT
-f0100,0200,00 #fill memory with zero's
-A0100 #assemble program at 0100
0100 mvi c,0f #0f in C for Open file
0102 lxi d,005c #FCB in reg DE
0105 call 5 #call BDOS
0108 rst 7 #back to DDT
0109 mvi c,1b #1B in C for Get Allocation Address
010B call 5 #call BDOS
010E rst 7 #back to DDT
010F mvi c,1F #get disk parameter address
0111 call 5 #HL will contain the address
0114 rst 7 #back to DDT
0115 nop #
0016 . #type PERIOD to EXIT Assembler
-d0100 #display memory at 0100
0100 0e0f115c00cd0500FF0E1BCD0500FF0E1FCD0500FF
-g0100 #execute program
*108 #program exits here after file search
-g0109 #execute programs
*010E #program exits here with Allocation Address
-g010F #execute programs
*0114 #program exits here with Disk Parameter Address
-xH #display DPB that is in reg HL
#<CR> will exit register modify
#CNTL C will exit DDT and save 1 test101.ddt will save the file
#save n filename.com saves 1 256 byte block of data.

The contents of register HL is the address of Drive A: DPB. If you display that address (mine was
F5E3) you will see F5E3: 2400040F0154007F00C00020000200.

The Disk Parameter Block (DPB) for each drive is:
+-----+------+-------+-------+-------+-------+------+------+------+-----+
|SPT.|BSH..|BLM..|EXM..|DSM.. |DRM.|AL0..|AL1..|CKS..|OFF.|
+-----+------+-------+-------+-------+-------+------+------+------+-----+
16B 8B 8B 8B 16B 16B 8B 8B 16B 16B

RPT = 0024 = The number of 128 byte records per track.
BSH = 04 = The block shift count.
BLM = 0F = The block mask.
EXM = 01 = The extent mask.
DSM = 0054 = Disk storage maximum (the largest block number).
DRM = 007F = Directory maximum (the largest directory entry).
DAB = C000= Directory Allocation Block AL0: = C0 & AL1: = 00
CKS = 0020 = Directory check size.
OFF = 0002 = Track offset (number of reserved tracks).

SPT: Number of sectors per track. May differ from RPT if physical sectors are other than
128 bytes in size.

SSZ: Sector size code:
0 = 128 bytes per sector
1 = 256 bytes per sector
2 = 512 bytes per sector
3 = 1024 bytes per sector


Larry

Larry Kraemer

unread,
May 23, 2018, 8:43:32 AM5/23/18
to
libdsk supports a variety of types of images:
$dsktrans -types

Disk image types supported:
remote : Remote LibDsk instance
rcpmfs : Reverse CP/MFS driver
floppy : Linux floppy driver
dsk : CPCEMU .DSK driver
edsk : Extended .DSK driver
apridisk : APRIDISK file driver
copyqm : CopyQM file driver
tele : TeleDisk file driver
ldbs : LibDsk block store
qrst : Quick Release Sector Transfer
imd : IMD file driver
ydsk : YAZE YDSK driver
raw : Raw file driver (alternate sides)
rawoo : Raw file driver (out and out)
rawob : Raw file driver (out and back)
myz80 : MYZ80 hard drive driver
simh : SIMH disc image driver
nanowasp : NanoWasp image file driver
logical : Raw file logical sector order
jv3 : JV3 file driver
cfi : CFI file driver

and also formats:

$dsktrans -formats

Disk formats supported:
pcw180 : PCW / IBM 180k
cpcsys : CPC System
cpcdata : CPC Data
pcw720 : PCW / IBM 720k
pcw1440 : PcW16 / IBM 1440k
ibm160 : IBM 160k (CP/M-86 / DOSPLUS)
ibm320 : IBM 320k (CP/M-86 / DOSPLUS)
ibm360 : IBM 360k (CP/M-86 / DOSPLUS)
ibm720 : IBM 720k (144FEAT)
ibm1200 : IBM 1.2M (144FEAT)
ibm1440 : IBM 1.4M (144FEAT)
acorn160 : Acorn 160k
acorn320 : Acorn 320k
acorn640 : Acorn 640k
acorn800 : Acorn 800k
acorn1600 : Acorn 1600k
pcw800 : PCW 800k
pcw200 : PCW 200k
bbc100 : BBC 100k
bbc200 : BBC 200k
mbee400 : Microbee 400k
mgt800 : MGT 800k
trdos640 : TR-DOS 640k
ampro200 : Ampro 40 track single-sided
ampro400d : Ampro 40 track double-sided
ampro400s : Ampro 80 track single-sided
ampro800 : Ampro 80 track double-sided
pcw1200 : PcW16 / IBM 1200k
myz80 : MYZ80 8Mb
pcpm320 : IBM 320k (CP/M-86 / DOSPLUS)
jad1 : JAD1 Jade - SSDD 8" - 128 x 48
als1 : ALS1 Alspa - SSDD 8" - 1024 x 8
tos3 : TOS3 Toshiba T-250 - DSHD 8" - 256 x 26
rc03 : RC03 RC-700 Piccolo RCTELST - DSDD 48 tpi 5.25" - 512 x 9
rc02 : RC-750 Piccolo - DSHD 96 TPI 5.25" - 1024 x 8
rc01 : RC01 RC-702 Piccolo - DSDD 48 tpi 5.25" - 512 x 9
sup5 : SUP5 Superbrain - SSDD 48 tpi 5.25" - 128 x 30
sup4 : SUP4 Superbrain II - DSDD 96 tpi 5.25" - 512 x 10
sup3 : SUP3 Superbrain QD - DSDD 48 tpi 5.25" - 512 x 10
sup2 : SUP2 Superbrain 40 track - SSDD 48 tpi 5.25" - 512 x 10
sup1 : SUP1 Superbrain JR - SSDD 48 tpi 5.25" - 512 x 10
pie1 : PIE1 Pied Piper - DSDD 96 tpi 5.25" - 512 x 10
bon3 : BON3 Bondwell 2 - SSDD 3.5" - 256 x 18
bw14 : BON2 Bondwell 14 - DSDD 48 tpi 5.25" - 256 x 18
bw12 : BON1 Bondwell 12 - SSDD 48 tpi 5.25" - 256 x 10
xer2 : XER2 Xerox 820 - SSSD 48 tpi 5.25" - 128 x 18
com8x : COM8X Compupro (Viasyn) 8/16 - SSDD 8" - 1024 x 8
eag2 : EAG2 Eagle III, IV, V - DSDD 96 tpi 5.25" - 1024 x 5
eag1 : EAG1 Eagle I, II - SSDD 96 tpi 5.25" -1024 x 5
trs6 : TRS6 TRS-80, Pickles & Trout CP/M - SSDD 8" - 512 x 16
trs5 : TRS5 TRS-80, Lifeboat CP/M (1024 bytes/sector) - SSDD 8" - 1024 x 8
trs4 : TRS4 TRS-80 Lifeboat CP/M (256 bytes/sector) - SSDD 8" - 256 x 26
necc : NECC NEC APC CP/M-86 - DSHD 8" - 256 x 26
adv5 : ADV5 Advanced Digital TurboDOS 312K - DSDD 48 tpi 5.25" - 1024 x 4
ims3 : IMS3 IMS 5000 TurboDOS - SSDD 8" - 1024 x 8
zen8 : ZEN8 Zenith Z-100 - DSDD 48 tpi 5.25" - 512 x 8
exo1 : EXO1 EXO - SSDD 8" - 512 x 16
lob5 : LOB5 Lobo CP/M 2.2 - SSHD 8" - 256 x 30
mai1 : MAI1 MAI Basic Four - DSDD 96 tpi 5.25" - 256 x 16
san2 : SAN2 Sanyo MBC-1250 - DSDD 96 tpi 5.25" - 256 x 16
mm1 : MM1 Micromint SB180 Native 1 - DSDD 48 tpi 5.25" - 512 x 10
mor8 : MOR8 Morrow 5/11/34 - SSDD 48 tpi 5.25" - 1024 x 5
mor7 : MOR7 Morrow MD3...CP/M Plus - DSDD 48 tpi 5.25" - 1024 x 5
mor6 : MOR6 Morrow TurboDOS - DSDD 48 tpi 5.25" - 1024 x 4
mor5 : MOR5 Morrow 8 (1024 bytes/sector) - DSDD 8" - 1024 x 8
mor4 : MOR4 Morrow 8 (1024 bytes/sector) - SSDD 8" - 1024 x 8
mor3 : MOR3 Morrow 8 (512 bytes/sector) - SSDD 8" - 512 x 15
mor2 : MOR2 Morrow MD3, 5, 11, 16, 34 - DSDD 48 tpi 5.25" - 1024 x 5
mor1 : MOR1 Morrow MD2 - SSDD 48 tpi 5.25" - 1024 x 5
meg1 : MEG1 Megatel Quark 100 - SSDD 48 tpi 5.25" - 512 x 10
bon3 : BON3 Bondwell 2 - SSDD 3.5" - 256 x 18
bon2 : BON2 Bondwell 14 - DSDD 48 tpi 5.25" - 256 x 18
osb8 : OSB8 Osborne Vixen - DSDD 48 tpi 5.25" - 1024 x 5
osb3 : OSB3 Osborne Executive - SSDD 48 tpi 5.25" - 1024 x 5
osb2 : OSB2 Osborne 1 - SSDD 48 tpi 5.25" - 1024 x 5
osb1 : OSB1 Osborne 1 - SSSD 48 tpi 5.25" - 256 x 10
phi2 : PHI2 Philips PC-2012 - DSDD 96 tpi 5.25" - 256 x 16
phi1 : PHI1 Philips PC-2010 - SSDD 48 tpi 5.25" - 256 x 16
pmc2 : PMC2 PMC Micromate - DSQD 96 tpi 5.25" - 1024 x 5
pmc1 : PMC1 PMC Micromate - DSDD 48 tpi 5.25" - 1024 x 5
eps2 : EPS2 Epson QX-10 - DSDD 48 tpi 5.25" - 256 x 16
eps1 : EPS1 Epson QX-10 - DSDD 48 tpi 5.25" - 512 x 10
spe2 : SPE2 Spectravideo SV-328 - DSDD 48 tpi 5.25" - 256 x 17
spe1 : SPE1 Spectravideo 318/328 - SSDD 48 tpi 5.25" - 256 x 17
son1 : SON1 Sony SMC-70 - SSDD 3.5" - 256 x 16
sag2 : SAG2 Sage IV - DSDD 96 tpi 5.25" - 512 x 8
sag1 : SAG1 Sage IV - DSDD 48 tpi 5.25" - 512 x 8
tel4 : TEL4 TeleVideo 8nn/TPC-1 CP/M - DSDD 48 tpi 5.25" - 256 x 18
vis1 : VIS1 Visual 1050 - SSDD 96 tpi 5.25" - 512 x 10
alt5 : ALT5 Altos Series 5 - DSDD 96 tpi 5.25" - 512 x 9
col5 : COL5 Coleco ADAM, 360K - DSDD 48 tpi 5.25" - 512 x 9
col1 : COL1 Coleco ADAM, 40 track - SSDD 48 tpi 5.25" - 512 x 8
dec3 : DEC3 DEC VT-180 - SSDD 48 tpi 5.25" - 512 x 9
alt1 : ALT1 Altos - SSSD 8" - 128 x 26
big1 : BIG1 Big Board (512 bytes/sector) - SSDD 8" - 512 x 15
acn1 : ACN1 Acorn CP/M on Acorn Z80 second processor. - 256 x 10
sie2 : Siemens PG-675 DSDD 48 tpi 5.25" - 512 x 9
sin4 : Sinclair Spectrum ZX Lexor CP/M - DSDD 48 tpi 5.25"
sin3 : Sinclair Spectrum ZX - SSDD 48 tpi 5.25"
sin2 : Sinclair ZX Spectrum+3 CP/M 3.0 - SSDD 3.5"
elwro : Elwro Computer CP/M 3.0 - DSDD 3.5"
sin1 : Sinclair ZX Spectrum+3 DOS - DSDD 3.5"
zqq : Zorba qq - DSDD 48 tpi 5.25"
zor2 : ZOR2 Zorba - DSDD 96 tpi 5.25" - 512 x 10
zor1 : ZOR1 Zorba - DSDD 48 tpi 5.25" - 512 x 10
trsf : TRSF TRS-80 II/12/16 Aton CP/M - DSHD 8" - 1024 x 8
trse : TRSE TRS-80 II/12/16 Aton CP/M - SSHD 8" - 1024 x 8
a1 : A1 Generic CP/M - SSSD 8" - 128 x 26
trsw : TRS-80 Model 4,4P Montezuma System 400K - SSDD 96 tpi 3.5"
trsv : TRS-80 Model 4,4P Montezuma Super Data 880K - DSDD 96 tpi 5.25"
trsu : TRS-80 Model 4,4P Montezuma Super Data 440K - SSDD 96 tpi 5.25"
trst : TRS-80 Model 4,4P Montezuma Super Data 440K - DSDD 48 tpi 5.25"
trss : TRS-80 Model 4,4P Montezuma Super Data 220K - SSDD 48 tpi 5.25"
trsr : TRS-80 Model 4,4P Montezuma Extend System 790K - DSDD 96 tpi 5.25"
trsq : TRS-80 Model 4,4P Montezuma Extend System 390K - SSDD 96 tpi 5.25"
trsp : TRS-80 Model 4,4P Montezuma Extend System 390K - SSDD 48 tpi 5.25"
trso : TRS-80 Model 4,4P Montezuma Extend System 190K - SSDD 48 tpi 5.25"
trsn : TRS-80 Model 4,4P Montezuma Data 800K - DSDD 96 tpi 5.25"
trsm : TRS-80 Model 4,4P Montezuma System 710K - DSDD 96 tpi 5.25"
trsl : TRS-80 Model 4,4P Montezuma Data 400K - SSDD 96 tpi 5.25"
trsk : TRS-80 Model 4,4P Montezuma System 350K - SSDD 96 tpi 5.25"
trsj : TRS-80 Model 4,4P Montezuma Data 400K - DSDD 48 tpi 5.25"
trsi : TRS-80 Model 4,4P Montezuma System 350K - DSDD 48 tpi 5.25"
trsh : TRS-80 Model 4,4P Montezuma Data 200K - SSDD 48 tpi 5.25"
trsg : TRS-80 Model 4,4P Montezuma System 170K - SSDD 48 tpi 5.25"
ampro800 : Ampro800 - DSDD 96 tpi 3.5"
amp6 : Ampro - DSDD 96 tpi 3.5"
amp5 : Ampro - SSDD 96 tpi 3.5"
amp4 : Ampro - DSDD 96 tpi 5.25"
amp3 : Ampro - SSDD 96 tpi 5.25"
amp2 : Ampro - DSDD 48 tpi 5.25"
amp1 : Ampro - SSDD 48 tpi 5.25"
kay3 : KAY3 Kaypro 2X/4/10 (Alternate) - DSDD 48 tpi 5.25" - 512 x 10
kay2 : KAY2 Kaypro 2X/4/10 - DSDD 48 tpi 5.25" - 512 x 10
kpiv : Kaypro 2X/4/10 - DSDD 48 tpi 5.25"
kpii : KAY1 Kaypro II/2 - SSDD 48 tpi 5.25" - 512 x 10
kay1 : KAY1 Kaypro II/2 - SSDD 48 tpi 5.25" - 512 x 10
ibm3740 : IBM3740 SS SD 77T 8" 26x128 b/s

And in both cpmtools and libdsk, you can roll your own format, or use one that
you or someone else conjure up.

#diskdef title
# seclen xxx #= Sectors xx,1024
# tracks xx #= (Cylinders * Sides) = 80*2 = 160
# sides alt #= Order of Cylinders = alt, outout, outback
# sectrk xx #= Sectors 5,xxx
# blocksize xxxx #= (128*(BLM+1)) = 1024, 2048, 4096, 8192
# maxdir xxx #= (DRM+1) = 256
# datarate DD #= Density SD, DD, HD, or ED
# fm NO #= Format YES = FM, or NO = MFM
# skew 0 #= try [0..8]
# boottrk x #= OFS = 2
# #= 2, 2.2, or 3 (NO comment on next line)
# os x.x
#end


# COL1 Coleco ADAM, 40 track - SSDD 48 tpi 5.25" - 512 x 8
diskdef col1
seclen 512
tracks 40
sectrk 8
blocksize 1024
maxdir 64
skew 5
#0x3400
offset 13312
boottrk 0
os 2.2
end

# COL5 Coleco ADAM, 360K - DSDD 48 tpi 5.25" - 512 x 9
diskdef col5
seclen 512
tracks 80
sectrk 9
blocksize 2048
maxdir 64
skew 3
#0x800
offset 2048
boottrk 0
os 2.2
end

If you post your exact system name and the current DPB information I can see if I have a definition available. I've got several over the years.

Larry

retrosys...@gmail.com

unread,
May 23, 2018, 3:12:46 PM5/23/18
to
Thank you Larry - this is what I was looking as a starting point. I dont need to access the images - it may have been confusing when I said that I am using an image because I am using a SD card on the Adam and it emulates a floppy drive when you mount various images. It can hand a maximum of 65mb in one image size - I know that is more than CP/M can access but if I can use 8mb in an image it will be a far cry from running CPM in 160kb or 256kb - even if I have a 64kb ram disk. I will give this a shot and see if I can understand it - I do have the alteration guide which helped me get to the point of understanding how it worked.
0 new messages