Monday, May 12, 2014

CP/M Operating Systems for Cromemco Computers



Back in the day, the Cromemco computer company produced what they considered a superior operating system to CP/M 1.4  (and later CP/M 2.2)

CDOS  (Cromemco Disk Operating System) was supposed to provide a true superset of the CPM functionality at the binary level enabling any Cromemco user to run CPM programs whilst at the same time denying any CPM user the chance to run any CDOS program.

Some extra CDOS calls
NUMBER  FUNCTION        ENTRY PARAMETERS        RETURN PARAMETERS
_________________________________________________________________

128*    Read Console    none                    A = character
        (without echo)

129     Get User        none                    BC = pointer to user
        Register Pointer                        registers

130     Set User        DE = address            none
         ^c abort

131     Read Logical    DE = block #            A = 0 if ok
         Block          B = disk number         A = 1 if I/O error
                        B(7) = 1 if             A = 2 illegal request
                         interleaved            A = 3 if illegal block
132     Write Logical          same as 131         same as 131
         Block

134*    Format Name     Hl = address of         HL = address of
         To FCB          string                  terminator
                        DE = address of FCB     DE = address of FCB

135     Update          DE = FCB address        none
         Directory Entry

136*    Link to Program DE = FCB address        A = -1 if error
                                                 else execute at 100H

137*    Multiply        DE = factor 1           DE = product
                        HL = factor 2

138*    Divide          HL = dividend           HL = quotient
                        DE = divisor            DE = remainder

139*    Home Disk       B = disk number         none

140     Eject Disk      E = disk number         none

141#    Get Version     none                    B = version number
                                                C = release number

142     Set Cursor      D = column address      none

         Address        E = row address



However in practice some users reported issues and so a market developed for /genuine/ Digital Research CP/M, Cromemco version.

About 30 years later
I just had the time to pick through the many Cromemco specific CP/M versions and check which if any actually work

Catalog listings
226 20140502    _MLSSSDST Cromemco 48K CPM 2.2 boots with 16FDC and Persci.  Boots on physical machine not ZEMU
227 20140510 _MLSSSDST Cromemco 64K CPM 2.2 boots with 16FDC and Persci.  Boots on physical machine not ZEMU
280 20140510    _MLDSDDST Cromemco CPM, Intelligent Terminals Corp Rel 5b 19810327 works under Physical &  ZEMU boots on A: 8 inch disk
317 20140502   _3LGSSSDST CPM7 CP/M 2.2 64K Intelligent Terminals 19800205 sysgen and Cromemco 3355A prt.  Logo then crash
318  20140502   _3LGDSDDST CPM8 CP/M Master. Intelligent Terminals Corp 5b 19810327  zemu or phy:64K logo but no A> prompt
319  20140505    _MLDSDDST  Micah CPM 2.2 DSDD for Cromemco Computers 16FDC or 64FDC A:=8inch, works great, nice config progs


Bootlogs
------------
Disk 226
48K CPM
A> prompt.  then hang
No initialise disks program
Multiple errors of form   Bdos Err On B: Bad Sector
Confused HxC enough to need not just a reset but power on / off

;ba
Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F
         ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X
Preparing to boot, ESC to abort

 0 00 01
 Error-R A4 > Drive not Ready, Data Lost

cdoscopy under cromix can't read files correctly

------------
Disk 227
Same story as for disk 226, unreliable and keeps crashing/ hanging with disk read errors


-------------
Disk 280 Intelligent Terminals CPM
Boots fine!  Recommended

;ba
Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F
         ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X
Preparing to boot, ESC to abort

Standby

     56k CP/M vers 2.2
Intelligent Terminals Corp.
   Release 5b - 03/27/81

System Addresses:
BDOS: BC00
BIOS: CA00
FDC : D000

CRT : DA00

A>stat
A: R/W, Space: 558k

A>sd

ASM     .COM   8k | CBIOS   .ASM   4k | CDOSCPM .COM   2k | CDOSCPM .HLP   4k
COMHEX  .COM   2k | COMPARE .COM   2k | CONVERT5.COM   8k | CONVERT8.COM   8k
COPYFDC .COM   2k | CPM3355 .SPR   2k | CPM56   .COM  10k | CPM64   .COM  10k
CPMCRT  .ASM  16k | CPMCRT  .PRN  38k | CPMCRT  .SPR   2k | CPMD4ZCP.COM   8k
CPMFDC  .SPR   4k | CPMGEN  .COM  22k | CPMHARD .SPR   6k | CPMLOAD .COM   6k
DDT     .COM   6k | DEBUG   .COM  10k | DEL     .COM   2k | DU314   .COM  12k
DUMP    .COM   6k | ERAQ    .COM   2k | FILES   .TXT   6k | L       .COM   4k
LINK    .COM  16k | LOAD    .COM   2k | LTYPE   .COM   8k | LTYPE   .DOC   2k
LU300   .COM  20k | LU300   .DOC  36k | LUDEF3  .DOC   8k | M7CD    .MSG   2k
M7CD1   .AQM   8k | M7CD1   .ASM  10k | M7NU    .COM  20k | MAC     .COM  12k
MBOOT   .COM   2k | MOVCPM  .COM  10k | NSWEEP  .COM   8k | NSWP    .COM   8k
PIP     .COM   8k | PIPX    .COM   8k | PRINTER .COM   2k | READ    .COM   8k
READ    .HLP   4k | READ-ME .TXT   6k | RMAC    .COM  14k | SD      .COM   4k
SD      .HLP  12k | SD48A   .NTE   6k | SQ      .COM  14k | SQUSQ   .CLU   2k
STAT    .COM   6k | SUBMIT  .COM   2k | SYS64   .COM  12k | SYSGEN  .COM   2k
TUART01 .      2k | TUARTINI.      2k | UNERA   .COM   2k | UNERA   .HLP   4k
USQ     .C    10k | USQ     .COM  14k | USQ     .H     2k | USQ15   .COM  10k
USQ20   .COM  14k | VERIFY  .COM   2k | XSUB    .COM   2k | Z8E     .COM  12k
ZCPRCRM .COM   4k | ZCPRD400.ASM  66k | ZPRCREMC.COM  10k


Drive A, User 0 has 650k in 75 files with 558k free.

A>type read-me.txt
asm.com             8K       assembler
banner.com          2K       program to print large letters on paper
cbios.asm           3K
cdoscpm.com         2K       public domain - CDOS simulator for running
                             some CDOS programs under cp/m  see help file
cdoscpm.hlp         3K
compare.com         2K       compares two files - binary or text
                             ex.  A> compare 1 2 <cr>
                                        or
                                  A> compare a:1 b:1 <cr>
convert5.com        8K       used to convert older ITC cpm disks to new format
convert8.com        8K       see ITC manual---
copyfdc.com         2K       fast disk copy progam (sector by sector)
cpm3355.spr         2K       used in generating a new system
cpm64.com           9K       used in generating a new system
cpmcrt.asm         16K       used in generating a new system
cpmcrt.prn         38K       used in generating a new system
cpmcrt.spr          2K       used in generating a new system
cpmfdc.spr          3K       used in generating a new system
cpmgen.com         21K       new system generating program
cpmhard.spr         5K       used in generating a new system
cpmload.com         6K       used in generating a new system
ddt.com             5K       digital research's debugger (not as good as
                             debug.com from Cromemco below
debug.com          10K       debugger from Cromemco
del.com             1K       same as eraq.com (renamed to be like 'del'
                             or 'delete' in cromix)
                             queries operator before erasing a file
dump.com            5K
ed.com              7K       a text editor I never use
eraq.com            1K       see del.com above
l.com               4K       same as sd.com below (renamed to be like 'l'
                             or 'list' from cromix)
                             alphabeticly list files as well as size and disk
                             space  (SEE HELP FILE)
link.com           16K
load.com            2K
mac.com            12K       macro assembler
movcpm.com         10K       used in generating a new system
pip.com             8K
pipx.com            8K       pip with reset feature to allow disk change
                             after pip is loaded  (see ITC manual)
printer.com         1K       selects any of 4 printers or displays current
                             printer selected
                             ex.  A> PRINTER <CR>   (to list current printer)
                                  A> PRINTER 2 <CR> (to change to printer 2)
read.com            7K       a good way to read a file a page at a time
                             see help file below for all the bells and whistles
read.hlp            4K
sd.com              4K       same as l.com and sd48a.com -GOOD directory pgm.!!
sd.hlp             11K       help file for sd71 (similar to above)
sd48a.nte           5K       note on modification for sd48a.com
sq.com             14K       file squeezer (used by many bulletin boards to
                             save space)
stat.com            6K
submit.com          2K
sysgen.com          2K       to transfer system tracks form disk to disk
unera.com           1K       a program to UNerase a file accidentally erased
                             see help file
unera.hlp           3K
usq.com            13K       file unsqueezer (used by many bulletin boards to
                             save space)
verify.com          1K       to set verify on or off in pip.com or to view
                             current state of toggle
                             ex.  A> VERIFY <CR> (to view current state)
                                     verify set to on

                                  A> VERIFY OFF <CR> (to change to not
                                                      verifying each file
                                                      coppied)
                                     verify set to off

                             see ITC manual for further info
xdir.com            3K       another alphabetical directory program - not
                             as good as sd.com
xsub.com            1K       a public domain submit batch processing program



-------------
317 boots but no A> prompt

-------------
318 boots but no A> prompt
Standby

     64k CP/M vers 2.2
Intelligent Terminals Corp.
   Release 5b - 03/27/81

# hang!

   

-------------
319 Micah
A;;tz

Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F
         ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X
Type (F, H) F
Drive (A-D) A
Size (L, S) L
Speed (F, S) S

Seek Tests
1 OK 2 OK 3 OK 4 OK 5 OK
6 OK 7 OK 8 OK 9 OK 0 OK
4CH OK 10H OK 20H OK 0 OK 1 OK
 Restore OK
4CH OK
Read/Write Tests
 Data Read OK
Write Test MAY DESTROY Data
CR=Proceed ESC=Abort ^[
A;;ba
Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F
         ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X
Preparing to boot, ESC to abort

Standby


MICAH 64k CP/M version 2.2
SUPER BIOS version 2.53
Copyright (c) 1980, S. D. Ninad

MICro Applications & Hardware
MICAH LISTF UTILITY, Version 3.1

"X" in the EX column indicates EXPAND 6.0 compatibility
Listed files from drive A:

  Name          Exts  Recs     K  EX   Name          Exts  Recs     K  EX


  ASM.COM          1    64     8       ATRIB.COM        1    33     5
  BEGDAT.REL       1     3     1       BEGDAT.Z80       1    13     2
  BIOS.REL         1     5     1       BIOS.Z80         1    38     5
  BOOT.REL         1     2     1       BOOT.Z80         1    14     2
  CONFIG.COM       1    61     8       DDCOPY.COM       1    41     6
  DDT.COM          1    38     5       DEBLOCK.ASM      1    80    10
  DEBUG.COM        1    78    10       DISKERR.REL      1     6     1
  DISKERR.Z80      1    37     5       DRIVES.REL       1     4     1
  DRIVES.Z80       1    42     6       DUMP.ASM         1    33     5
  DUMP.COM         1     4     1       ED.COM           1    52     7
  EXPAND.COM       1    23     3       INIT.COM         1    24     3
  LABGEN.COM       1    26     4       LISTF.COM        1    48     6
  LISTF.SUB        1    12     2       LNKCPM.SUB       1     2     1
  LOAD.COM         1    14     2       MCPM64.COM       1    90    12
  MICAHMOV.REL     1     1     1       MOVCPM.COM       1   100    13
  NDIO.REL         1     4     1       NDIO.Z80         1    57     8
  PERSCI.REL       1    15     2       PIP.COM          1    58     8
  SCREEN.COM       1    87    11       STAT.COM         1    41     6
  SUBMIT.COM       1    10     2       SYSGEN.COM       1    13     2

Press any key to continue

  Name          Exts  Recs     K  EX   Name          Exts  Recs     K  EX

  WARMBOOT.REL     1     3     1       WARMBOOT.Z80     1    21     3
  XDIR.COM         1    13     2       XSUB.COM         1     6     1

Totals:      42 files,     42 extents,   1316 records,    184 k
Successful LISTF.SUB creation

A>xdir


                        DIRECTORY DRIVE - A

ASM     COM    8K         DUMP    COM    2K         SUBMIT  COM    2K
ATRIB   COM    6K         ED      COM    8K         SYSGEN  COM    2K
BEGDAT  REL    2K         EXPAND  COM    4K         WARMBOOTREL    2K
BEGDAT  Z80    2K         INIT    COM    4K         WARMBOOTZ80    4K
BIOS    REL    2K         LABGEN  COM    4K         XDIR    COM    2K
BIOS    Z80    6K         LISTF   COM    6K         XSUB    COM    2K
BOOT    REL    2K         LISTF   SUB    2K
BOOT    Z80    2K         LNKCPM  SUB    2K
CONFIG  COM    8K         LOAD    COM    2K
DDCOPY  COM    6K         MCPM64  COM   12K
DDT     COM    6K         MICAHMOVREL    2K
DEBLOCK ASM   10K         MOVCPM  COM   14K
DEBUG   COM   10K         NDIO    REL    2K
DISKERR REL    2K         NDIO    Z80    8K
DISKERR Z80    6K         PERSCI  REL    2K
DRIVES  REL    2K         PIP     COM    8K
DRIVES  Z80    6K         SCREEN  COM   12K
DUMP    ASM    6K         STAT    COM    6K

                42 FILES    298K BYTES REMAINING ON DISK

MICAH Disk Formatting Program version 3.0

WARNING:  This program destroys all the data on the disk
without chance of recovery.

Press Control-C at any prompt to exit.


Place a not-write protected diskette in drive B:
Is it OK to format DOUBLE SIDED and DOUBLE DENSITY [Y/N]? y

 labgen b:

MICAH CP/M LABEL GENERATION, version 2.5
for Cromemco 4FDC and 16FDC controllers


This program creates and maintains Cromemco compatible labels.
The following table indicates the conventions of the
diskettes created by LABGEN on 8" media:

     SIDES     DENSITY       NUMBER of     STORAGE
                             DIRECTORY     CAPACITY
                             ENTRIES

     Single    Single           64           243K
     Double    Single          128           492K

     Single    Double          128           508K
     Double    Double          256          1216K

LABGEN created diskettes can be utilized with systems requiring CDOS.



Disk Summary
226/227 Unreliable, at least on my non Persci drive system
280 Intelligent Terminals, 56K CP/M 2.2 Works fine.
317/ 318 Does not finish boot
319 Micah CPM  works fine on physical machine

My personal opinion is that Micah CP/M is the best version on disk 319 but the customised disk 280 is 
not far behind  (and has some nice public domains programs not on 319).


Links
Master Cromemco Disk Catalog