Friday, May 02, 2014

Running Intelligent Terminals CP/M on Cromemco Computers


This is a tutorial on how to run the CP/M 2.2 Operating System on a physical or Virtualised Cromemco Computer


Virtual ZEMU Emulator
This is a self contained article.  Please see also running CDOS with ZEMU

In this part we will run the 8bit Digital Research CP/M for Intel 8080 inside the  32bit ZEMU emulator running on Microsoft Windows. [In my case my 32bit windows is itself running inside VMware on a Windows 2012 x64 server :-) ]

Step by step, the installation on the 32 bit Windows client. (You can't install ZEMU in a 64 bit environment)





Setup noticed it was about to overwrite some Microsoft libraries with older binaries so I said LEAVE existing binaries  (i.e. don't overwrite) when prompted.




  • Start Emulator Program   (don't press Run yet)
  • Load Cromemco RDOS  (Resident Disk Operating System) version 03.12  from C:\emulator\RDOS\rdos312.hex
  • Load I/O Port ReMap c:\emulator\IOMaps\Cromemco CDOS.iom



  • Load Disk A:, which is a bootable 8" floppy disk in raw sector format

    I used c:\emulator\DiskImages\CPM\280CCPM.DSK



  • Change format of A: disk to Cromemco CDOS Double Sided and Double Density which is C:\emulator\formats\CLDSDDST.fmt
(This CPM emulator uses the CDOS diskette format)







  • Now everything is ready, RUN the emulator by pressing Run Button
It works!


Physical Cromemco System
First I would install the HxC diskette emulator and then


  • Copy the image file 280CCPM.hfe onto a SDcard and insert into your HxC emulator
  • Switch on your Cromemco System and using the HxC front panel buttons select that the A: drive be associated with the 280CCPM file


  • Boot your physical system, and it should work

Some added Printouts
(Hopefully Google will index the following text for future people searching)

;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>

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>sd *.asm

CBIOS   .ASM   4k | CPMCRT  .ASM  16k | M7CD1   .ASM  10k | ZCPRD400.ASM  66k

Drive A, User 0 has 96k in 4 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


----------
A>read cdoscpm.hlp
CDOSCPM is a function that allows one to run CDOS functions while
in CPM. The version of CDOS emulated is 2.35 although many of the
CDOS specific functions were left out(at no cost, because
CDOS checks for version number, and then ignores certain functions
if version number is too low). The code, however is easily modified
to include extra functions if you have a time-of-day clock or other
CDOS type extra conveniece. The code is well enough documented to
be readable alone.
        The syntax is    CDOSCPM function argumentlist.
Where function is the CDOS compatible function you wish to run and
argumentlist is whatever the function takes as normal argumentlist.
Thus a typical ASMB run would look like.....
        A>CDOSCPM ASMB FOOFN LISTOFF
which will assemble the function FOOFN without generating a list file.
(The A> is of course, CPM's prompt). Any trouble with this function
should please be relayed to me as I will then include the offending
calls. It works great with ASMB and DEBUG.

Mark Zachmann
56 Rutgers St. #4
Rochester, N.Y. 14607



        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

142     Set Cursor      D = column address      none
         Address        E = row address

     * -- Implemented in this version

     # -- Incorrectly done, to coerce CDOS into working correctly
               i.e. by believing no sophisticated calls are available.




Links
Running CDOS under the ZEMU Emulator
the HxC Diskette Emulator