"CP/M compatible" vs. "MS-DOS Compatible" machines?

Allison ajp166 at bellatlantic.net
Sun Feb 3 06:27:31 CST 2008


>
>Subject: Re: "CP/M compatible" vs. "MS-DOS Compatible" machines?
>   From: "Roy J. Tellason" <rtellason at verizon.net>
>   Date: Sat, 02 Feb 2008 20:48:33 -0500
>     To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at classiccmp.org>
>
>On Thursday 31 January 2008 10:07, Allison wrote:
>> Whats more interesting is there was nothing to prevent a termcap file
>> and later improved CP/M work alikes did exactly that and many more things.
>
>What sort of stuff would you put into the category of "CP/M work alikes"?
>
>(Snip)
>> Andy Johnson-Laird The Programmers CP/M Handbook went far to extend
>> and clarify both what the BIOS can do and more.
>
>Good book,  that one. I dug it out of a box recently,  and should probably get 
>to re-reading it sometime soon,  maybe.
>
>(Snip)
>> As you can se the whole interrupt thing was not CP/M as a limiting
>> factor but hardware or implementor understanding.
>
>I'd like to implement something that'd not only use one of those single-byte 
>calls,  but take the data inline,  as well -- no need to load it into 
>registers to pass it along,  though there are some rather clumsy aspects to 
>getting the stack pointer and fixing it...

That was easy in 8080.


;routine gets 16bit word passed on stack before call
; doesn't do anthing but put that item in bc
RRST:     org   010h
          shld  hlsave
          pop   hl      ;hl has return address
          pop   bc      ; BC has data
          push  hl      ; hl back to stack
          lhld  hlsave  ; restor hl
          ret   

;caller
caller:    push bc   ;data in bc
           rst2
           ......


>> For those that never used a really nice bios try a VT180, it didn't
>> do two sided but those disks where just emerging at the time.  It did
>> implement interrupts with ring buffers for IO.
>
>Can you point to anything specific with regard to this?

Interrupt driven, has some basic terminal sense (vt100 specific)
and uses IObyte.

>
>> The other thing was DMA. On S100 is was a timing and bus nightmare
>> and took years to almost get right.  Many of the single baord systems
>> omitted it as it took space (8257 or later 8237 40 pin chips and a latch).
>
>Hmm,  I seem to have some number of those on hand here.  :-)
>
>> It works fine and made useful systems.  However it means the CPU is locked
>> up for the duration of the transfer and cannot respond to interupts
>> making for poor latency as floppies are slow.  Again CP/M doesn't care
>> how the transfer happens only that it does happen. So the fist system
>> built with DMA was a real eye opener.  First it allowed background
>> activities to run faster and smoother like a line printer spooler.
>> also interrupts could be used byy the disk system to say "ready"
>> or "ready with error". Thats a lot of available CPU cycles.
>> the biggest areas of change is that modem programs werent pausing
>> for disk IO, they could fill a big (say 16k) circular buffer and
>> the cpu can be processing interrupts for IO and disk to manage
>> transfers rather than doing a lot of waiting in loops.  It doesn't
>> take a lot more code but the complexity and debugging is greater
>> due to the near concurrent activities.
>
>One of the real problems I had with early BBSing was the fact that I was using 
>a CP/M box and that had only a lmiited buffer in the modem program (probably 
>MDM740 at first,  IMP a bit later I think),  while the guy at the other end 
>had a newer and higher-speed modem that had several K of buffer in it that it 
>would continue to empty after my end had asked it to hold on a minute...

In many cases no buffer. it was more like the other end would stop but by 
time you told it to your 1 byte maybe 2 buffer overflowed.

Often the probem with byte at a time IO without interrutps.  A more 
reasonable IO would be buffered 64 or 128 chars sing style with high
water marking. Interrupt driven of course.

>That same program had a print or capture buffer (I forget exactly now) that 
>was way bigger,  something on the order of 16K,  and it came to me to use 
>that for buffering the input rather than the teeny buffer provided,  but I 
>never did get around to making that particular modification to it.

16k was magical as that was the size of a standard CP/M extent and usually
assumed to be enough space for capture.

Allison

>
>(Snip)
>
>-- 
>Member of the toughest, meanest, deadliest, most unrelenting -- and
>ablest -- form of life in this section of space,  a critter that can
>be killed but can't be tamed.  --Robert A. Heinlein, "The Puppet Masters"
>-
>Information is more dangerous than cannon to a society ruled by lies. --James 
>M Dakin



More information about the cctalk mailing list