{"id":2214,"date":"2018-09-07T23:52:20","date_gmt":"2018-09-07T23:52:20","guid":{"rendered":"http:\/\/www.sydneysmith.com\/wordpress\/?p=2214"},"modified":"2019-05-11T22:52:15","modified_gmt":"2019-05-11T22:52:15","slug":"init-com-for-cromemco-cp-m","status":"publish","type":"post","link":"https:\/\/www.sydneysmith.com\/wordpress\/2214\/init-com-for-cromemco-cp-m\/","title":{"rendered":"INIT.COM for Cromemco CP\/M"},"content":{"rendered":"<p><img loading=\"lazy\" src=\"http:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090701-gss-init_8dsdd_on_cpm.png\" alt=\"\" width=\"418\" height=\"296\" class=\"alignnone size-full wp-image-2215\" srcset=\"https:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090701-gss-init_8dsdd_on_cpm.png 418w, https:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090701-gss-init_8dsdd_on_cpm-300x212.png 300w\" sizes=\"(max-width: 418px) 100vw, 418px\" \/><\/p>\n<p>Formatting a disk in CP\/M is hardware dependant. This is a bit strange because the intent of CP\/M was to move the hardware dependencies to a common Basic Input Output System or BIOS, so you could run any program on any CP\/M system.<\/p>\n<p>They either forgot about formatting disks, or didn&#8217;t consider it happened often enough to warrant inclusion. The result is every system needs its own disk formatting program and Cromemco called theirs INIT.COM.<\/p>\n<p>INIT.COM was originally fairly simple. It used to ask if you wanted to format a &#8220;Mini disk&#8221; (5&#8243; disk) or a normal (&#8220;Maxi&#8221; \/ 8&#8243;) one. That program worked well and it ran under Cromemco&#8217;s CDOS operating system or under normal CP\/M.<\/p>\n<p>As disk formats evolved to allow double-sided disks and double-density (more data in the same amount of space), things got more complicated. Cromemco included features in INIT.COM that made it easier for a user to get the correct format; but these required things that CP\/M doesn&#8217;t provide. Their solution was to include them in CDOS and, as a result, later versions of Cromemco&#8217;s INIT.COM won&#8217;t run under CP\/M any more.<\/p>\n<p>So how did I end up with the picture above, which shows an advanced INIT.COM running under CP\/M? <!--more--><\/p>\n<p>I wrote my own. You can download the CP\/M program from <a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/programs\/INIT.COM\">INIT.COM<\/a>. You can also download the source code from <a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/programs\/INIT.C\">INIT.C<\/a> if you want to rebuild INIT.COM, modify it, or see how it works.<\/p>\n<p>The source code is written in the dialect of C that existed at the time. This means it will compile with a CP\/M C compiler but probably won&#8217;t with a modern C compiler. The dialect is Kernigan &#038; Ritchie (K&#038;R) C, the original. C was later standardised into ANSI C and they made a few changes to the original.<\/p>\n<h2>How Disk Formatting Works<\/h2>\n<p>Despite the complexity and amount of work involved (mostly in combining choices into the format to use), disk formatting is really simple. Regardless of the format chosen, it always comes down to four sets of numbers:<\/p>\n<p>&#8211; the track lead-in,<br \/>\n&#8211; the sector,<br \/>\n&#8211; the between sectors region, and<br \/>\n&#8211; the end of track<\/p>\n<p>Every track starts with a &#8220;getting ready&#8221; series of bytes. The disk drive reads these bytes and knows that a sector is coming soon. It could be a series of FFs, a series of 00s, or a combination of something then something else. It just flags the start. It is probably also used by the hardware to measure the bit rate so it can adapt to fluctuations in speed. From a software or user&#8217;s perspective it&#8217;s just a series of bytes at the start of a track.<\/p>\n<p>Every sector contains data. However, at a low level, it also contains the track number, side, sector number, sector size, and some cyclic redundancy checksums (CRCs). This means a sector is a slightly longer series of bytes than we might normally expect. The OS or BIOS asks for data and gets, typically, 128 bytes or 512 bytes; but there is more in the sector than just that. When formatting (or INITializing) a disk, we need to write the additional information too. Again, from our perspective, it&#8217;s a series of bytes.<\/p>\n<p>Between sectors is a set of &#8220;there&#8217;s more to come&#8221; bytes.<\/p>\n<p>After the last sector of a track, there isn&#8217;t more to come so there is a different series of bytes to end the track. This series is interesting because the disk drive controls how many bytes there are in this set. It isn&#8217;t difficult though because this series of bytes ends with &#8220;a lot&#8221; of one value and you just keep outputting that value until it says, &#8220;I&#8217;m done&#8221;.<\/p>\n<h2>The Formats<\/h2>\n<p>This applies to the WD1793 controller chip. Others should create disks that can be read by drives of the same type so they should use the same (or very similar) sequences. What you&#8217;ll see here are what INIT.COM Ver 2.71 uses.<\/p>\n<h3>8&#8243; Single Density (8SD)<\/h3>\n<p><code><\/p>\n<pre>\r\nCDOS version 02.58\r\nCromemco Disk Operating System\r\nCopyright (C) 1977, 1983 Cromemco, Inc.\r\n\r\nA.debug init0271.com\r\nDEBUG version 00.20\r\nNEXT  = 2D00\r\nNEXTM = 2D00\r\n-g\/93d\r\nInitialize Disks version 02.71\r\n\r\nPress:  RETURN to supply default answers\r\n        ESC to abort formatting\r\n        CTRL-C to abort program\r\nWarning: INIT can destroy all disk data\r\n\r\nDisk to initialize (A,B,C,D)? b\r\n\r\nTesting:\r\n  Index pulses being received correctly\r\n  Rotational speed:  110 RPM\r\n\r\nFormatting:\r\n  Disk type (C=CDOS, X=Cromix)? <C>\r\n  Single or double sided (S\/D)? <D> s\r\n  Single or double density (S\/D)? <D> s\r\n\r\n  First cylinder (0-4CH)? <0H>\r\n  Last cylinder (0-4CH)? <4CH>\r\n\r\n  Cylinder, Surface: restore\r\n ZHV  E  A =FF BC =0000 DE =4964 HL =4963 SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0A6B DE'=0A6D HL'=0A6F IX=FBE2 IY=0000 I=00\r\n-d3237\r\n3237   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n3247   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n3257   FF FF FF FF  FF FF FF FF  00 00 00 00  00 00 FC FF  ..............|.\r\n3267   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n3277   FF FF FF FF  FF FF FF FF  FF 00 00 00  00 00 00 FE  ...............~\r\n3287   00 00 01 00  F7 FF FF FF  FF FF FF FF  FF FF FF FF  ....w...........\r\n3297   00 00 00 00  00 00 FB E5  E5 E5 E5 E5  E5 E5 E5 E5  ......{eeeeeeeee\r\n32A7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-d\r\n...\r\n3307   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 4C  eeeeeeeeeeeeeeeL\r\n3317   47 53 53 53  44 E5 E5 F7  FF FF FF FF  FF FF FF FF  GSSSDeew........\r\n3327   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n-d\r\n3337   FF FF FF 00  00 00 00 00  00 FE 00 00  02 00 F7 FF  .........~....w.\r\n3347   FF FF FF FF  FF FF FF FF  FF FF 00 00  00 00 00 00  ................\r\n3357   FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  {eeeeeeeeeeeeeee\r\n...\r\n4487   E5 E5 E5 E5  E5 E5 E5 F7  FF FF FF FF  FF FF FF FF  eeeeeeew........\r\n4497   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n-d\r\n44A7   FF FF FF 00  00 00 00 00  00 FE 00 00  1A 00 F7 FF  .........~....w.\r\n44B7   FF FF FF FF  FF FF FF FF  FF FF 00 00  00 00 00 00  ................\r\n44C7   FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  {eeeeeeeeeeeeeee\r\n...\r\n4537   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n4547   E5 F7 FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ew..............\r\n...\r\n4957   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF 00 00 00  ................\r\n4967   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n-\r\n<\/pre>\n<p><\/code><br \/>\nYou can see the 128 E5 bytes in the sectors.<br \/>\nYou can also see the disk type that Cromemco writes to the end of the boot sector: 3316 contains &#8220;LGSSSD&#8221;.<\/p>\n<p>The track starts with 40xFF,6&#215;00,FC,26xFF then 6&#215;00<br \/>\nEach sector consists of: FE,track,side,sector,00,F7; then 11xFF,6&#215;00,FB,128xE5,F7<br \/>\nBetween sectors is: 27xFF then 6&#215;00<br \/>\nAfter the last sector is about 1000xFF.<\/p>\n<p>There are 77 tracks (0-76,&#8221;cylinder (0-4CH)&#8221;) on an 8&#8243; disk.<br \/>\nSingle density format has 26 sectors (01-1A in the sector). Each has 128 data bytes.<\/p>\n<h3>5&#8243; Single Density (5SD)<\/h3>\n<p><code><\/p>\n<pre>\r\nA.debug init0271.com\r\nDEBUG version 00.20\r\nNEXT  = 2D00\r\nNEXTM = 2D00\r\n-g\/93d\r\nInitialize Disks version 02.71\r\n\r\nPress:  RETURN to supply default answers\r\n        ESC to abort formatting\r\n        CTRL-C to abort program\r\nWarning: INIT can destroy all disk data\r\n\r\nDisk to initialize (A,B,C,D)? c\r\n\r\nTesting:\r\n  Index pulses being received correctly\r\n  Rotational speed:  110 RPM\r\n\r\nFormatting:\r\n  Disk type (C=CDOS, X=Cromix)? <C>\r\n  Single or double sided (S\/D)? <D> s\r\n  Single or double density (S\/D)? <D> s\r\n\r\n  First cylinder (0-27H)? <0H>\r\n  Last cylinder (0-27H)? <27H>\r\n\r\n  Cylinder, Surface: restore\r\n ZHV  E  A =FF BC =0000 DE =4207 HL =4206 SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0AE9 DE'=0AEB HL'=0AED IX=FC19 IY=0000 I=00\r\n-d3237\r\n3237   FF FF FF FF  FF FF FF FF  FF FF 00 00  00 00 FE 00  ..............~.\r\n3247   00 01 00 F7  FF FF FF FF  FF FF FF FF  FF FF FF 00  ...w............\r\n3257   00 00 00 00  00 FB E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  .....{eeeeeeeeee\r\n...\r\n32C7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 53 4D  eeeeeeeeeeeeeeSM\r\n32D7   53 53 53 44  E5 E5 F7 FF  FF FF FF FF  FF FF FF FF  SSSDeew.........\r\n32E7   FF FF 00 00  00 00 FE 00  00 02 00 F7  FF FF FF FF  ......~....w....\r\n32F7   FF FF FF FF  FF FF FF 00  00 00 00 00  00 FB E5 E5  .............{ee\r\n...\r\n3377   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 F7 FF  eeeeeeeeeeeeeew.\r\n3387   FF FF FF FF  FF FF FF FF  FF FF 00 00  00 00 FE 00  ..............~.\r\n3397   00 03 00 F7  FF FF FF FF  FF FF FF FF  FF FF FF 00  ...w............\r\n33A7   00 00 00 00  00 FB E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  .....{eeeeeeeeee\r\n...\r\n3D57   E5 E5 E5 E5  E5 E5 F7 FF  FF FF FF FF  FF FF FF FF  eeeeeew.........\r\n3D67   FF FF 00 00  00 00 FE 00  00 12 00 F7  FF FF FF FF  ......~....w....\r\n3D77   FF FF FF FF  FF FF FF 00  00 00 00 00  00 FB E5 E5  .............{ee\r\n3D87   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n...\r\n3DF7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 F7 FF  eeeeeeeeeeeeeew.\r\n3E07   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n...\r\n41F7   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................\r\n4207   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n4217   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n4227   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n-g0\r\n\r\nA.\r\n<\/pre>\n<p><\/code><br \/>\nYou can see the 128 E5 bytes in the sectors.<br \/>\nYou can also see the disk type at the end of the boot sector. This time it is &#8220;SMSSSD&#8221;.<\/p>\n<p>The track starts with 10xFF then 4&#215;00.<br \/>\nEach sector consists of: FE,track,side,sector,00,F7; then 11xFF,6&#215;00,FB,128xE5,F7<br \/>\nBetween sectors is: 11xFF then 4&#215;00<br \/>\nAfter the last sector is about 4000xFF.<\/p>\n<p>There are 18 (01-12H) sectors per track. Each sector contains 128 data bytes.<\/p>\n<h3>8&#8243; Double Density (8DD)<\/h3>\n<p>Cromemco always write Track 0 side 0 in single density format. This allows their Resident Disk Operating System (RDOS) to always boot a 128 byte sector, regardless of the format of the rest of the disk. However, it does mean we need to look at track 1 if we want to see what double-density formatting looks like.<\/p>\n<p><code><\/p>\n<pre>\r\nA.debug init0271.com\r\nDEBUG version 00.20\r\nNEXT  = 2D00\r\nNEXTM = 2D00\r\n-g\/93d\r\nInitialize Disks version 02.71\r\n\r\nPress:  RETURN to supply default answers\r\n        ESC to abort formatting\r\n        CTRL-C to abort program\r\nWarning: INIT can destroy all disk data\r\n\r\nDisk to initialize (A,B,C,D)? b\r\n\r\nTesting:\r\n  Index pulses being received correctly\r\n  Rotational speed:  110 RPM\r\n\r\nFormatting:\r\n  Disk type (C=CDOS, X=Cromix)? <C>\r\n  Single or double sided (S\/D)? <D> s\r\n  Single or double density (S\/D)? <D>\r\n\r\n  First cylinder (0-4CH)? <0H>\r\n  Last cylinder (0-4CH)? <4CH>\r\n\r\n  Cylinder, Surface: restore\r\n ZHV  E  A =FF BC =0000 DE =4964 HL =4963 SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0A6B DE'=0A6D HL'=0A6F IX=FBE2 IY=0000 I=00\r\n-t\r\n ZHV  E  A =FF BC =0000 DE =4964 HL =4963 SP=2E1E PC=0614       PUSH AF\r\n         A'=00 BC'=0A6B DE'=0A6D HL'=0A6F IX=FBE2 IY=0000 I=00\r\n-g\/93d\r\n00H, 0 (writes track 0 side 0)\r\n ZHV  E  A =4E BC =0000 DE =5DE9 HL =5DE8 SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0A99 DE'=0A9B HL'=0A9D IX=FBE2 IY=0000 I=00\r\n-d3237 (track 1 side 0)\r\n3237   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3247   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3257   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3267   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3277   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3287   00 00 00 00  00 00 00 00  00 00 00 00  F6 F6 F6 FC  ............vvv|\r\n3297   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n32A7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n-d\r\n32B7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n32C7   4E 4E 00 00  00 00 00 00  00 00 00 00  00 00 F5 F5  NN............uu\r\n32D7   F5 FE 01 00  01 02 F7 4E  4E 4E 4E 4E  4E 4E 4E 4E  u~....wNNNNNNNNN\r\n32E7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 00 00 00  NNNNNNNNNNNNN...\r\n32F7   00 00 00 00  00 00 00 00  00 F5 F5 F5  FB E5 E5 E5  .........uuu{eee\r\n3307   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n3317   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n3327   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-d\r\n...\r\n34B7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n34C7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n34D7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n34E7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n34F7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 F7 4E 4E  eeeeeeeeeeeeewNN\r\n3507   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3517   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3527   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n-d\r\n3537   4E 4E 4E 4E  00 00 00 00  00 00 00 00  00 00 00 00  NNNN............\r\n3547   F5 F5 F5 FE  01 00 02 02  F7 4E 4E 4E  4E 4E 4E 4E  uuu~....wNNNNNNN\r\n3557   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 00  NNNNNNNNNNNNNNN.\r\n3567   00 00 00 00  00 00 00 00  00 00 00 F5  F5 F5 FB E5  ...........uuu{e\r\n3577   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n3587   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n3597   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n35A7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-d\r\n5717   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n5727   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n5737   E5 E5 E5 E5  E5 E5 E5 E5  E5 F7 4E 4E  4E 4E 4E 4E  eeeeeeeeewNNNNNN\r\n5747   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n5757   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n5767   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n5777   00 00 00 00  00 00 00 00  00 00 00 00  F5 F5 F5 FE  ............uuu~\r\n5787   01 00 10 02  F7 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  ....wNNNNNNNNNNN\r\n5797   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 00  00 00 00 00  NNNNNNNNNNN.....\r\n57A7   00 00 00 00  00 00 00 F5  F5 F5 FB E5  E5 E5 E5 E5  .......uuu{eeeee\r\n-d\r\n...\r\n59A7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 F7  4E 4E 4E 4E  eeeeeeeeeeewNNNN\r\n-d\r\n59B7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n...\r\n5DD7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n5DE7   4E 4E 00 00  00 00 00 00  00 00 00 00  00 00 00 00  NN..............\r\n-\r\n<\/pre>\n<p><\/code><\/p>\n<p>The track starts with 80x4E,12&#215;00,3xF6,FC,50x4E,12&#215;00,3xF5.<br \/>\nEach sector consists of: FE,track,side,sector,02,F7;22xFE,12&#215;00,3xF5,FB,512xE5,F7<br \/>\nBetween sectors is: 54x4E,12&#215;00,3xF5<br \/>\nAfter the last sector is about 1000x4E.<\/p>\n<p>There are 16 (01-10H) sectors per track. Each sector contains 512 data bytes.<\/p>\n<h3>5&#8243; Double Density (5DD)<\/h3>\n<p><code><\/p>\n<pre>\r\nA.debug init0271.com\r\nDEBUG version 00.20\r\nNEXT  = 2D00\r\nNEXTM = 2D00\r\n-g\/93d\r\nInitialize Disks version 02.71\r\n\r\nPress:  RETURN to supply default answers\r\n        ESC to abort formatting\r\n        CTRL-C to abort program\r\nWarning: INIT can destroy all disk data\r\n\r\nDisk to initialize (A,B,C,D)? c\r\n\r\nTesting:\r\n  Index pulses being received correctly\r\n  Rotational speed:  110 RPM\r\n\r\nFormatting:\r\n  Disk type (C=CDOS, X=Cromix)? <C>\r\n  Single or double sided (S\/D)? <D> s\r\n  Single or double density (S\/D)? <D>\r\n\r\n  First cylinder (0-27H)? <0H>\r\n  Last cylinder (0-27H)? <27H>\r\n\r\n  Cylinder, Surface: restore\r\n ZHV  E  A =FF BC =0000 DE =4207 HL =4206 SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0AE9 DE'=0AEB HL'=0AED IX=FC19 IY=0000 I=00\r\n-d3237 (track 0 side 0)\r\n       (identical to 5SD, so still SD, but 32D5=\"SMSSDD\")\r\n-t\r\n ZHV  E  A =FF BC =0000 DE =4207 HL =4206 SP=2E1E PC=0614       PUSH AF\r\n         A'=00 BC'=0AE9 DE'=0AEB HL'=0AED IX=FC19 IY=0000 I=00\r\n-g\/93d\r\n00H, 0 (writing track 0 side 0)\r\n ZHV  E  A =4E BC =0000 DE =4E4B HL =4E4A SP=2E20 PC=093D       CALL 0614\r\n         A'=00 BC'=0B0F DE'=0B11 HL'=0B13 IX=FC19 IY=0000 I=00\r\n-d3237 (now track 1 side 0)\r\n3237   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n3247   4E 4E 4E 4E  4E 4E 4E 4E  00 00 00 00  00 00 00 00  NNNNNNNN........\r\n3257   F5 F5 F5 FE  01 00 01 02  F7 4E 4E 4E  4E 4E 4E 4E  uuu~....wNNNNNNN\r\n3267   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 00  NNNNNNNNNNNNNNN.\r\n3277   00 00 00 00  00 00 00 00  00 00 00 F5  F5 F5 FB E5  ...........uuu{e\r\n3287   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n...\r\n3477   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 F7  eeeeeeeeeeeeeeew\r\n3487   FF 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  .NNNNNNNNNNNNNNN\r\n3497   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n34A7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 00 00  NNNNNNNNNNNNNN..\r\n-d\r\n34B7   00 00 00 00  00 00 F5 F5  F5 FE 01 00  02 02 F7 4E  ......uuu~....wN\r\n34C7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n34D7   4E 4E 4E 4E  4E 00 00 00  00 00 00 00  00 00 00 00  NNNNN...........\r\n34E7   00 F5 F5 F5  FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  .uuu{eeeeeeeeeee\r\n...\r\n47A7   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 F7  eeeeeeeeeeeeeeew\r\n-d\r\n47B7   FF 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  .NNNNNNNNNNNNNNN\r\n47C7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n47D7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 00 00  NNNNNNNNNNNNNN..\r\n47E7   00 00 00 00  00 00 F5 F5  F5 FE 01 00  0A 02 F7 4E  ......uuu~....wN\r\n47F7   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n4807   4E 4E 4E 4E  4E 00 00 00  00 00 00 00  00 00 00 00  NNNNN...........\r\n4817   00 F5 F5 F5  FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  .uuu{eeeeeeeeeee\r\n...\r\n4A17   E5 E5 E5 E5  E5 F7 FF 4E  4E 4E 4E 4E  4E 4E 4E 4E  eeeeew.NNNNNNNNN\r\n4A27   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n-d\r\n4A37   4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  4E 4E 4E 4E  NNNNNNNNNNNNNNNN\r\n...\r\n4E47   4E 4E 4E 4E  00 00 00 00  00 00 00 00  00 00 00 00  NNNN............\r\n-g0\r\n\r\nA.\r\n<\/pre>\n<p><\/code><br \/>\nAgain, Cromemco always format track 0 of side 0 as single density, so we &#8220;t&#8221;race a step then &#8220;g&#8221;o until (&#8220;\/&#8221;) 93d again to stop before writing track 1. This is the double density format that it is about to write to disk.<\/p>\n<p>The track starts with: 24x4E, 8&#215;00 then 3xF5.<br \/>\nEach sector is: FE,track,side,sector,02,F7,6x4E,12&#215;00,3xF5,FB,512xE5,F7<br \/>\nBetween sectors is: FF,45x4E,8&#215;00,3xF5<br \/>\nAt the end of a track is: FF then about 1080x4E<\/p>\n<p>There are 10 (0AH) sectors per track. Each sector contains 512 data bytes.<\/p>\n<h3>4FDC<\/h3>\n<p>The 16FDC manual states, &#8220;The 16FDC may not be able to read small (5-1\/4 inch) diskettes which were initialized using versions of the Cromemco Init program prior to version 2.15&#8221;. I remember the guy that owned the Cromemco Z2D that I used being furious about this when he found out. He either had to stick to single density disks (a 4FDC controller card) or upgrade and lose all his data. The Cromemco workaround was to read existing data using a 4FDC and copy it onto new disks using a 16FDC. That probably worked fine if you could afford to buy two systems but it was rather expensive for individuals or small businesses.<\/p>\n<p>Here&#8217;s what happens when you INITialize disks with INIT 00.04:<\/p>\n<p>8SD:<br \/>\n<code><\/p>\n<pre>\r\nA.debug init0004.com\r\nDEBUG version 00.20\r\nNEXT  = 0500\r\nNEXTM = 0500\r\n-g\/204\r\nINITIALIZE DISKS version 00.04\r\nDrive Number (A-D)? b\r\nMini Disk (Y\/N)? n\r\n Z    E  A =1B BC =0000 DE =1A6D HL =02F6 SP=053E PC=0204       LD   HL,0540\r\n         A'=00 BC'=0000 DE'=0000 HL'=0000 IX=0000 IY=0000 I=00\r\n-d540\r\n0540   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n0550   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n0560   00 00 00 00  00 00 00 00  00 00 00 00  00 00 FC 00  ..............|.\r\n0570   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n0580   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 FE  ...............~\r\n0590   00 00 01 00  F7 00 00 00  00 00 00 00  00 00 00 00  ....w...........\r\n05A0   00 00 00 00  00 00 FB E5  E5 E5 E5 E5  E5 E5 E5 E5  ......{eeeeeeeee\r\n05B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-d\r\n05C0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05D0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05E0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05F0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0600   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0610   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0620   E5 E5 E5 E5  E5 E5 E5 F7  00 00 00 00  00 00 00 00  eeeeeeew........\r\n0630   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n-d\r\n0640   00 00 00 00  00 00 00 00  00 FE 00 00  02 00 F7 00  .........~....w.\r\n0650   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n0660   FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  {eeeeeeeeeeeeeee\r\n0670   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0680   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0690   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n06A0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n06B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-\r\n1780   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1790   E5 E5 E5 E5  E5 E5 E5 F7  00 00 00 00  00 00 00 00  eeeeeeew........\r\n17A0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n17B0   00 00 00 00  00 00 00 00  00 FE 00 00  1A 00 F7 00  .........~....w.\r\n17C0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n17D0   FB E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  {eeeeeeeeeeeeeee\r\n17E0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n17F0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1800   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1810   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1820   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1830   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1840   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1850   E5 F7 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ew..............\r\n1860   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n1870   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n...\r\n<\/pre>\n<p><\/code><br \/>\nYou can see that the 8&#8243; SD format is different (but is said to be still readable by a 16FDC card).<\/p>\n<p>5SD:<br \/>\n<code><\/p>\n<pre>\r\nA.debug init0004.com\r\nDEBUG version 00.20\r\nNEXT  = 0500\r\nNEXTM = 0500\r\n-g\/204\r\nINITIALIZE DISKS version 00.04\r\nDrive Number (A-D)? c\r\nMini Disk (Y\/N)? y\r\n Z    E  A =13 BC =0000 DE =12DA HL =02F6 SP=053E PC=0204       LD   HL,0540\r\n         A'=00 BC'=0000 DE'=0000 HL'=0000 IX=0000 IY=0000 I=00\r\n-d540\r\n0540   FF FF FF FF  FF FF FF 00  00 00 00 FE  00 00 01 00  ...........~....\r\n0550   F7 FF FF FF  FF FF FF FF  FF FF FF FF  00 00 00 00  w...............\r\n0560   00 00 FB E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ..{eeeeeeeeeeeee\r\n0570   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0580   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0590   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05A0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n-d\r\n05C0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05D0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n05E0   E5 E5 E5 F7  FF FF FF FF  FF FF FF FF  00 00 00 00  eeew............\r\n05F0   FE 00 00 02  00 F7 FF FF  FF FF FF FF  FF FF FF FF  ~....w..........\r\n0600   FF 00 00 00  00 00 00 FB  E5 E5 E5 E5  E5 E5 E5 E5  .......{eeeeeeee\r\n0610   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0620   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n0630   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n...\r\n1040   FE 00 00 12  00 F7 FF FF  FF FF FF FF  FF FF FF FF  ~....w..........\r\n1050   FF 00 00 00  00 00 00 FB  E5 E5 E5 E5  E5 E5 E5 E5  .......{eeeeeeee\r\n1060   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1070   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1080   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n1090   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n10A0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n10B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n10C0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  eeeeeeeeeeeeeeee\r\n10D0   E5 E5 E5 E5  E5 E5 E5 E5  F7 FF 00 00  00 00 00 00  eeeeeeeew.......\r\n10E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n10F0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................\r\n<\/pre>\n<p><\/code><br \/>\nAgain, the 5SD format is different. However, per the manual, this time it cannot be read by a 16FDC card.<\/p>\n<h2>Cromix<\/h2>\n<p>One of the surprising things about INIT0271.COM is that it includes Cromix System calls in a CDOS program. One of the first things that INIT0271.COM checks is the operating system version. It must be running on a version of CDOS that provides the information it needs, so it checks first. However, if the result says it is actually running under Cromix, it switches to using Cromix calls for many things. Amazing. The one program can used under either OS and it adapts. Previously, I just assumed that running INIT.COM under Cromix would trigger the CDOS emulator and just run it as a CDOS program.<\/p>\n<p>INIT Ver 2.71 can also create Cromix format disks. If you&#8217;re interested in those formats, just run debug.com as per my examples above and examine what it creates (also as per the above). It can create Cromix disks even if it is running under CDOS.<\/p>\n<h2>FAQ<\/h2>\n<h3>How do I know if I&#8217;m running Cromemco INIT.COM or this INIT.COM?<\/h3>\n<p>If you&#8217;re on CP\/M and running a later Cromemco INIT.COM, it will be pretty obvious. It will say &#8220;Incompatible&#8221;. It looks like this:<br \/>\n<img loading=\"lazy\" src=\"http:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090702-gss-init_incompatible.png\" alt=\"\" width=\"508\" height=\"127\" class=\"alignnone size-full wp-image-2216\" srcset=\"https:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090702-gss-init_incompatible.png 508w, https:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090702-gss-init_incompatible-300x75.png 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/><br \/>\nIt used to be a dead end. At the time, you had to insert a CDOS disk, boot from that, format your new disk from there, and then reload and reboot your CP\/M disk.<\/p>\n<p>If you&#8217;re on CP\/M and running the INIT.COM from here, it will just run. It will also say it&#8217;s from here in the signon message:<br \/>\n<img loading=\"lazy\" src=\"http:\/\/www.sydneysmith.com\/wordpress\/wp-content\/uploads\/2018\/09\/2018090703-gss-init_sydneysmith.png\" alt=\"\" width=\"263\" height=\"85\" class=\"alignnone size-full wp-image-2217\" \/><\/p>\n<h3>Can I use it with other hardware?<\/h3>\n<p>Yep. You&#8217;ll need to modify a few parts of the program to suit your hardware; but the rest of it can stay the same.<\/p>\n<p>I compiled it using BDS C ver 1.60 which has unix stdio.h functions but no initializers or &#8220;asm&#8221; keyword. You&#8217;ll see workarounds for both of those in the INIT.C source code. BDS C does have a tool for creating linkable ASM code but I found it easier to just poke bytes into an array and run that.<\/p>\n<h2>More<\/h2>\n<p>You can download a copy of:<br \/>\n<a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/programs\/INIT0004.COM\">INIT0004.COM<\/a><br \/>\n<a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/programs\/INIT0271.COM\">INIT0271.COM<\/a><\/p>\n<p>I used <a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/z80sim\/run-cpm22L.zip\">run-cpm22L<\/a> which has a BIOS that supports 4&#215;8&#8243;DSSD disks, and <a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/z80sim\/run-bdsc160.zip\">run-bdsc160<\/a> during development. Each of those unZIPs to create a CP\/M computer (click run.bat). As you&#8217;ll see above, I also used <a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/z80sim\/run-cdos0258-2.zip\">run-cdos0258-2<\/a>; but I needed to use CDOSGEN from there to create a system with 5&#8243; drives for C: and D: to see the 5&#8243; disk formats.<\/p>\n<p>You can use R.COM and W.COM to read files into, or write files out from, the CP\/M environment to the host; and to or from other simulated systems from there (eg from a CDOS system to a CP\/M system). It&#8217;s usually easier than using PIP (or XFER in CDOS) and then swapping entire disks.<\/p>\n<p>&#8220;A>X h&#8221; (<a href=\"http:\/\/www.sydneysmith.com\/products\/cpm\/programs\/X.COM\">X.COM<\/a>) will tell you which simulation (host directory) you&#8217;re in. It does require z80sim-0.13.exe.<\/p>\n<p>This is part of the <a href=\"http:\/\/www.sydneysmith.com\/wordpress\/cpm-programs\/\">CP\/M topic<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Formatting a disk in CP\/M is hardware dependant. This is a bit strange because the intent of CP\/M was to move the hardware dependencies to a common Basic Input Output System or BIOS, so you could run any program on any CP\/M system. They either forgot about formatting disks, or didn&#8217;t consider it happened often &hellip; <a href=\"https:\/\/www.sydneysmith.com\/wordpress\/2214\/init-com-for-cromemco-cp-m\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">INIT.COM for Cromemco CP\/M<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,59],"tags":[],"_links":{"self":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/2214"}],"collection":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2214"}],"version-history":[{"count":8,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/2214\/revisions"}],"predecessor-version":[{"id":2286,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/posts\/2214\/revisions\/2286"}],"wp:attachment":[{"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sydneysmith.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}