View Full Version : DMS CP/M & CP/M-86 HiNet Systems

March 11th, 2011, 09:14 AM
Collected a number of Digital Microsystems HiNet systems today - so that's my weekend tied up. :D

I haven't powered anything up yet (need some comms cables first!), but I've got the following:

2 x DMS 16 bit slaves (1 with faulty PSU)
1 x DMS 8 bit system
1 x DMS Disk Master system
1 x ISA DMS 8 bit PC card

Pictures to follow...

March 11th, 2011, 09:38 AM
Are these the ones that have been listed on Ebay recently? I was quite intrigued as to how they worked. Boot from a server? Looking forward to pics :)

nige the hippy
March 12th, 2011, 10:08 AM
Sorry Steve, I probably cost you a pound or two.
You have a master system! is that the 40lb 2' long device with curved corners and 2 8" floppies in it? or is it a later one (that I never met).
Although I haven't worked on the 16b's I picked up quite a few from skips years ago just for the case! I haven't any still with guts in, and I fairly recently picked up a hi-net card at a radio rally hence the bid on those. For a while I worked alongside the DMS specialist at a 3rd party repair place. AFAIK the network cables are just paralleled 9 way IDC Ds but I also seem to remember "Big Bob" having to enter individual unit addresses into the server to get them to talk, something like a 6 digit number, possibly hex. I think the 16Bs at least used an ANSI terminal, as the displays were quite colourful. Hope this is of use E&OE!

March 12th, 2011, 01:16 PM
Are these the ones that have been listed on Ebay... Yes, those are the ones... plus some bits that weren't listed.

Sorry Steve, I probably cost you a pound or two. Not to worry. At least they didn't go for my maximum bid. My wife wouldn't have been too pleased - "what, more junk!" :satisfie:

The master I picked up has a half height 5.25" floppy drive + full height 5.25" Rodime hard disk. I did wire up a db9 <-> db25 rs232 cable this morning but it didn't work. I've just got back in and fixed the cable (I'd messed up the rxd <-> txd due to the different numbering between db9 and db25). Plugged back in and the 16b slave now gives me the message "Joining hinet...". Yeah....getting somewhere. I'm just going to try the other pieces of kit then take some pics.

Just had a message from the ebay seller. He dumped the 8bit rom to a file via hyperterm. He's now disassembled the z80 code! Looks like fun all round. :D

nige the hippy
March 13th, 2011, 12:52 PM
Not to worry. At least they didn't go for my maximum bid. My wife wouldn't have been too pleased - "what, more junk!"

Yes I know the phrase well!

Let's have a photo of the master, I'd be keen to know what it looks like.

March 13th, 2011, 04:10 PM
Other events overtook me this weekend, so I didn't get much time to "play" with the DSM kit. :neutral: For now, here's a few pics of the DSM2000 master unit.

5353 5354 5355 5356 5357

Ooopps, just hit the picture upload limit. That's it for now then. More to follow.

March 14th, 2011, 03:21 PM
After having problems connecting to all but the DSM16B with my RS232 cable, I decided to start again. After reading some of the docs on bitsavers it appears I only needed RxD, TxD and signal-ground. My tests so far have only been with the individual pieces of kit, I've not yet tried to hook them together. Other than the Z80 unit, which I think I may have damaged the console port, the other units give the following (when connected via hyperterm, 9600, 8, N, 1).

DSM2000 hard disk unit:
On booting up or pressing the RST button, the cursor just moves down a line
Pressing the INT button doesn't appear to do anything.
Pressing RST, waiting about half a second and then pressing and holding in INT displays
DMS2000 Hard Disc PROM Monitor 4.25
followed by a ":" prompt. I need to investigate what the options are here.

DMS16B unit:
On booting up or pressing the RST button, the message Joining HiNet is displayed.
Pressing the INT button starts the monitor and displays
NMI Interrupt

Pressing ? then display the monitor options:

8086 Hardware Monitor Commands shown in (), parameters in [].
(A)scii equivalent of incoming serial characters displayed
(C)opy from [Beginning Offset] thru [Ending Off], to [Seg],[Off]
(D)isplay 256 bytes of memory beginning at [Offset]
(F)ill [Beginning Offset] to [Ending Offset] with [Value]
(G)o to [Offset], optional breakpoint [[optional Seg :] Offset]
(I)nput from [Port Address]
(L)ong memory test, Start Bank 0-7 [optional End Bank],CR to quit
(M)emory Test from [Beginning Offset] to [Ending Offset]
(O)utput to [Port Address], [Value]
(P)refix all commands with [Segment Value]
(S)et memory beginning at [Offset]
(T)ype into memory beginning at [Offset]
e(X)amine/change 8086 registers
Intel HEX file auto-load triggered by colon ( : ) as first character.

Pressing RST, waiting about half a second and then pressing and holding in INT displays
DMS-16B Hardware Monitor
version 3.6Ja
(c) DMS LTD. 1984
Station Serial Number - 16B10069 Product Type - 09

That's all I've had time for this evening.

EDIT: I forgot to mention the PC HiNet Adapter card (for which I have no software). It's a full length 8 bit ISA card. I installed it in my 8088 Panasonic Portable and then tried a couple of tests. First was to see if it's RAM or ROM appeared in the address map. Norton's System Information program couldn't see it. So I then wrote a little routine to read all 65535 I/O ports and write the values to RAM. I ran this under SID86 (DR's equivalent to DEBUG) with and without the card installed and each time wrote the RAM to disk. I then compared the two. I know that this is not a reliable way to check I/O port usage, but it'll do for now. I found that with the card installed, port 0x280 returned 0x1f and 0x281 returned 0xd.

Here's a few pics of the card showing the Z80 processor + support chips.
5364 5365 5366

nige the hippy
March 15th, 2011, 02:41 PM
Must get back to the man tomorrow.
Well done on initial investigations etc. The 16Bs I used to have (Skip dived for the cases) didn't do anything mostly because bitsavers wasn't around & possibly because they were probably dead.
The hard disk unit is more modern than I have seen.

March 29th, 2011, 11:26 AM
Nige the hippy said "Must get back to the man"

You did, and nice to meet you, have fun with the gear, I will be interested in what you find:

As this is my first post, not set avatar or anything yet will come to that later when I am more familiar with this board..


April 1st, 2011, 12:46 PM
I have done some more research into these DMS3B Z80 units and discovered differences between the available documentation and the actual hardware in respect to the wiring of the EPROM socket (U47) The documentation shows links JP7 and JP8 wired so as to enable 2708 or 2716 Eproms, in fact with these newer boards (circa 1983) the wiring is defaulted to Eprom type 2716.

But NOT QUITE, there is still a dangerous solid connection between pin 21 and the negative 5V power rail, this needs serious attention if you plan to use a 2732.

Here are the notes I created while I was doing the modifications, also a .PNG of the modified section of the schematic.

DMS 3B Z80 terminal Modifications to use 2732 Eprom

Most of the DMS 3B boards I have come across are later versions, these come with most of the mods
to use a 2732 (4KB) Eprom. I say most because although the links JP7 and JP8 are not wired as shown
in the available documentation but are wired as shown in this diagram with the one IMPORTANT EXCEPTION!
The -5V line is STILL connected to pin 21 of the EPROM socket along with a connection to the centre
pin of JP7, the heavy track at pin 21 of the EPROM needs to be CUT right at the Eprom socket removing
the "T" link from the -5V track to pin 21.

JP8 should be wired as shown already with pin 1 of it going to the +12V rail, and NOT LINKED
to pin 19 of the Eprom at pin 2 of JP8. JP8 pins 2 & 3 should be strapped for both 2716 and 2732
Eproms. JP7 should be linked ONLY on pins 2 & 3 for use with 2732 Eproms, for 2716 Eproms
remove this link and ground pin 2 but NOT if you haven't yet cut the thick track at pin 21.

EXSPHL (April 1st 2011)

(despite the date, this is NOT (I hope) a joke)


nige the hippy
April 4th, 2011, 01:41 PM
Nice to have met you Mike, sorry for not replying sooner, but the morris dancing season is upon us, and my twanging services were required for most of the weekend - it's a long story & will probably end up with me wearing socks with sandals, - we digress....
Thanks for the info on the power supply fault, judging by the discolouration of the plating around the transformer on the 16B I have, I will definitely give it a strip & fettle before applying any volts. If Steve's really is beyond repair, I have a fairly compatible Aztec one of a similar vintage I'm not needing, it might even be a suitable replacement transformer??? The other alternative might be to pop a completely new miniature PC one inside the box, at least he'll have a working unit.
Strange.... as soon as I took the case off the DMS2000 I recognised the innards, an "I didn't recognise you with your clothes on" moment!

It's a shame you haven't got the file servers for the Z80 systems, they were pretty massive, 2 8" floppies in the main unit & as I vaguely recall an optional separate hard disk unit, with a variable transformer head positioning servo system???? I'm pretty sure it was one of those that I had to rescue one of my colleagues from when he had an epileptic fit whilst testing (inside) one.
Anyway enjoy the forum, it's pretty laid back (usually!)

April 5th, 2011, 11:59 AM
Hello Nige,

I replied to you with a personal reply (truth is I messed up) however reading it, perhaps it was the best way to reply in view of the content. However this is just to give you the courtesy of a reply on the board to keep the thread alive... Happy Dancing!

Re the Z80 servers, yes large, heavy and also with an external ribbon fed box with yet another massive capacity hard drive 30 megs was it (how things have changed?)


April 5th, 2011, 01:18 PM
Hi Guys,

Not had much time to "play" with this stuff lately. As previously mentioned, I think I've damaged the console port on my DMS3 unit so that's in my "I'll get around to it" list of things to do. The 16B appears fully functional but alas I've not spent much time looking at it.

Now the DMS2000 unit would power up and the cursor would simply move down the screen by 1 line then appear to stop. Pressing the INT + RST buttons would load the PROM monitor. Anyway, I opened it up today and pulled out the main PCB to take some more pics. When I reassembled it and powered up I got a different message...
*** Hard Disc Controller FATAL ERROR ---
Following this it automatically returned to the PROM monitor. Dumping some of the memory shows that it appears to load what looks like some boot code plus some sort of volume listing into RAM before hitting a disk error. I've dumped that to a text file and will disassemble it.

Mike, question for you: How did you manage to work out what each of the I/O ports controlled? I can relate to the PROM listing from bitsavers, but the hard disk code for the DMS2000 is nothing like that of the DMS3 listing. There's lots of IN and OUT instructions to ports 0 and 1. Correct me if I'm wrong, but I think writing to port 0 (any value?) switches between command and data mode and port 1 is the hard disk command or data port???? but this is a guess after looking at the bitsavers PROM listing. Also, it looks like bit 4 of the value returned from PIOAD indicates that the HD or HD controller is ready - a lot of the HD code calls this bit of code:

L0114: IN A,(PIOAD) ;05AB DB 08 ;
BIT 4,A ;05AD CB 67 ;
JR Z,L0114 ;05AF 28 FA ;
RET ;05B1 C9


nige the hippy
April 5th, 2011, 01:41 PM
Steve ...The serial (console) ports are all driven with 1488s and '89s line drivers & receivers, they are pluggable, so at worst you should be able to swap a couple from elsewhere to get you going.

April 6th, 2011, 01:31 AM
Looks familiar Steve, but not in the same vein as Nige's comment about not recognising it with its clothes on, in this case although I have like you, taken it's clothes off, I have not YET unbuttoned the under garments (looked at the rom code) However as my new eprom blower has arrived from Thailand, I should when I learnt all about it, be able to read the rom which will be a lot easier than messing with the hex dump, editing and converting with all the attendant error potentials that entails.

I will do a disassembly of that rom to see if I can sort it out. I already did the 1.09 and the 4.23 code I don't think I have yet looked or even know what is in the 2000 code, unless that is where the 4.23 eprom came from, that just appeared in my box of goodies, obviously the result of stripping something, possibly another 2000 unit, way back in the 90's. I do have a spare power supply that matches the remaining 2000 one here, so could be I had 4th machine at one time. You will have to leave it with me for the moment, we have a lot of hospital visits to make currently since my wife has been diagnosed with a form of skin cancer, so free time is limited now.

That code by the way appears very often in the rom, it is a standard way of checking CTS or DTR or for that matter any status on a parallel port, just depends what bit does what as you say.
Command and data modes set at initialisation time I thought, but who knows what was in the mind of the designer at the time, some used bit 7, some used bit 0 that way the code was shorter
in systems limited to small rom sizes (RRA, RRCA and RLA, RLCA are one byte only) My origins are showing here! One time nickname was Savebyte, happy days.


April 6th, 2011, 01:48 AM
Just dug out the relevant bit of code from 4.23 will this give you any clues...?

;Hard Drive boot option

0633 0460 21 C0 04 L0031: LD HL,04C0H ;HD command table
0634 0463 CD 7A 04 CALL L0075 ;send commands
0635 0466 21 C2 04 LD HL,04C2H ;HD read table
0636 0469 CD 7A 04 CALL L0075 ;send
0637 046C CD 96 04 CALL L0076 ;reset HD
0638 046F 21 00 90 LD HL,9000H ;Boot code
0639 0472 06 80 LD B,80H ;128 bytes
0640 0474 CD B3 04 CALL L0078 ;receive from HD
0641 0477 C3 00 90 JP L0068 ;go to boot code

; Send commands to HD

0642 047A DB 01 L0075: IN A,(01H) ;clear status
0643 047C DB 08 IN A,(08H) ;wait for receive
0644 047E CB 5F BIT 3,A ;test
0645 0480 20 F8 JR NZ,L0075 ;not yet
0646 0482 3E 51 LD A,51H ;set Re(Q)uest
0647 0484 D3 01 OUT (01H),A ;send it
0648 0486 DB 08 L0087: IN A,(08H) ;wait for send
0649 0488 CB 67 BIT 4,A ;test
0650 048A 28 FA JR Z,L0087 ;not yet
0651 048C DB 01 IN A,(01H) ;clear to send?
0652 048E FE 52 CP 52H ;check for (R)esponse
0653 0490 20 E8 JR NZ,L0075 ;start again
0654 0492 06 08 LD B,08H ;send 8 bytes
0655 0494 18 10 JR L0077 ;go send them

; Reset HD

0656 0496 21 80 93 L0076: LD HL,9380H ;result buffer
0657 0499 06 08 LD B,08H ;8 bytes to set
0658 049B CD B3 04 CALL L0078 ;receive from HD
0659 049E 3A 87 93 LD A,(9387H) ;status
0660 04A1 B7 OR A
0661 04A2 C4 D2 00 CALL NZ,L0016 ;report error
0662 04A5 C9 RET

; send to HD

0663 04A6 0E 01 L0077: LD C,01H ;HD port
0664 04A8 DB 08 L0088: IN A,(08H) ;check
0665 04AA CB 5F BIT 3,A
0666 04AC 20 FA JR NZ,L0088 ;wait loop
0667 04AE ED A3 OUTI ;out it
0668 04B0 20 F6 JR NZ,L0088 ;not done
0669 04B2 C9 RET

; Receive from HD

0670 04B3 0E 01 L0078: LD C,01H ;HD port
0671 04B5 DB 08 L0089: IN A,(08H) ;check
0672 04B7 CB 67 BIT 4,A ;check
0673 04B9 28 FA JR Z,L0089 ;not ready
0674 04BB ED A2 INI ;get it
0675 04BD 20 F6 JR NZ,L0089 ;not done, more
0676 04BF C9 RET

;Hard disk command table

0677 04C0 13 ;select
0678 04C1 00 ;unit
0679 04C2 11 ;read
01 ;sector
02 ;track
0680 04C5 00
0681 04C6 00
0682 04C7 00
0683 04C8 0A retries
0684 04C9 00

If this bears any resemblance to what you have the 2000 code may be similar and use the same ports?


(Damn, the board supresses TABS?)

April 6th, 2011, 11:40 PM
Mods to the Eprom area to support 2732 (4kB chip)

Here is one I COOKED earlier...


nige the hippy
April 7th, 2011, 08:42 AM
Interesting bit of track layout???? (oops!)

I booted the DMS 2000, it seems fine, only problem is that I can't log in! any tricks of the trade? or is it that I'll have to try to dump the disk & hack it? to be honest dumping the disk would be a very good thing to do, to archive the software, but I'd prefer to do it properly.

A second interesting thing was, I connected to another of the serial ports, it appeared to have had something buffered & waiting to come out (for years!). Only problem was, I wasn't ready, and the terminal program only ended up with the last few lines held in the buffer, which were mostly newlines plus a few odd characters. I didn't even have chance to read it ;-(

April 8th, 2011, 06:13 AM
Talking about something ELSE with massive floppies, the Osbourne 1 was equipped with 2 by single density 5.1/4' floppies, although that is not relevant to this discussion, the power supply within the beast is, take a look at this, does it not look familiar to the one in the DMS16, apart from the slightly earlier switching device in the TO5 case, which is replaced with a more modern plastic one. As this one providing the RS232 supplies I assume it has the -5V at least, possible also the -12, however there are differences as the Osbourne seems to have three heat-sinked diodes in place of the semi-conductor regulators of the DMS16.

"I connected to another of the serial ports, it appeared to have had something buffered & waiting to come out (for years!)." How odd, where could it have been stored all that time, I wonder if it was some built in initialisation code in the rom, specific to that port. I do not recall what the other ports were for, I do remember we had some other large boxes, and a multiple printer server, certainly there were a good few cables round the back. but where they went? (Diagnostics terminal maybe)


I also have one of these Osbournes when I can find it ...


April 22nd, 2011, 07:03 AM
I booted the DMS 2000, it seems fine, only problem is that I can't log in!
Hi nige, any luck logging in to the 2000 yet?

nige the hippy
April 23rd, 2011, 03:24 PM
just got back from holiday. I'm probably going to pop the drive onto another machine & see what I can pull off it.

April 24th, 2011, 09:12 AM
Mike sent me a dump plus raw listing of the DMS PC-Card PROM the other day. The code appears to be very similar to the DMS 3B PROM listing found on bitsavers, but is obviously customised for the PC-Card. Anyway, rather than talking via the SIO's to an RS232 port, this one communicates via two ports (control/status + data) over the PC's ISA bus. PC port 0x280 being used for control/status and port 0x281 is used for data in/out.

I've knocked up a little console program for this. It simply reads PC-Card data and displays it and sends PC keystrokes to the PC-Card. Control-C terminates it - as the cards monitor program doesn't use control-C. It is written to be compiled under DOS using DR's RASM86 and LINKEXE programs, but could easily be modified for MASM and LINK. Source + compiled program attached.


More to do and plenty of assumptions made. More to post later.


April 24th, 2011, 01:26 PM
The DMS PC-Card monitor program, version 4.24, has the following options:
S - set memory
D - dump memory
G - go to address
E - emulate modem
F - fill memory
I - input from a port
O - output to a port
T - test memory
B - boot from hinet network
enter - dump memory at 9000
Entering anything else, or entering invalid parameters for the above typically just displays a question mark.

April 30th, 2011, 01:08 PM
The DMS PC-Card monitor program, version 4.24, has the following options:
S - set memory
D - dump memory
G - go to address
E - emulate modem
F - fill memory
I - input from a port
O - output to a port
T - test memory
B - boot from hinet network
enter - dump memory at 9000
Entering anything else, or entering invalid parameters for the above typically just displays a question mark.

You have been busy too. Looked at you code, reminded me of the stuff I was doing 10 years ago, good to see someone knows how to use int33. Mind you the file handle method to manipulate files is so much easier than all the bother writing FCB data (There speaks an old CP/M'er) Happy days...

There will be a few days delay to more monitor development, :mad:someone has presented me with a radio programmer that has a 8k rom, so lots of obscure Z80 code to hack.
Even MORE happier days !! :)


Al Kossow
December 16th, 2012, 06:12 PM
I found three more disks of DMS/3 sources, including the prom sources.
They will be under http://bitsavers.org/bits/DigitalMicrosystems/Rev_83_3
as soon as the mirrors pick up the file.

December 17th, 2012, 11:48 AM
Wow, nice one Al. Had to wait until this evening to download it - the proxy at work blocks downloads <sigh>. I'll image those DMS workstation and master proms over the holiday for you.


Al Kossow
December 17th, 2012, 01:30 PM
when it rains, it pours
someone just dropped off four disks to read, two contain the sources for 2.249a from Apr 1984

December 17th, 2012, 01:47 PM
Looks like I'll have to be patient <finger tapping...> I'm only geting URL not found at the moment.

Many thanks,

December 17th, 2012, 01:55 PM
Try this link. (http://bitsavers.informatik.uni-stuttgart.de/bits/DigitalMicrosystems/)

The Stuttgart server is usually right up-to-date and is quite fast.

nige the hippy
December 17th, 2012, 02:21 PM
OOOhhh perhaps a way around the passwords beckons......

December 18th, 2012, 01:07 AM
someone just dropped off four disks...

Thank you Santa... er, Al.

That's me sorted for Christmas :)

Al Kossow
January 31st, 2013, 01:47 PM
when it rains, it pours
someone just dropped off four disks to read, two contain the sources for 2.249a from Apr 1984

Some more boxes of disks arrived last week