Image Map Image Map
Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 26

Thread: Receive input without echoing?

  1. #11
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    28,889
    Blog Entries
    20

    Default

    Quote Originally Posted by nockieboy View Post
    Interesting idea to go direct to the BIOS - might give that some consideration and bypass the BDOS completely, as I'm receiving anything from 128 bytes to 60+ KB as a pasted character stream into the terminal. Might speed the thing up a little, not that it's a great issue anyway. I'm using interrupt-driven I/O too.
    For console I/O interrupt-driven is fine, but for serial (RS232C) streaming, interrupt latency is a big time waster. By far (we did this with 8251 for SDLC/HDLC/bisync), the best is DMA; it pretty much leaves the CPU out of the picture. Otherwise, poll-mode (but disable any higher-priority interrupts) is about as good as can be done. In any case, if you're doing disk I/O at the same time, some handshaking protocol is a must.

  2. #12

    Default



    Thanks guys.

  3. #13

    Default

    Interrupt driven I/O is only going to help if you have a big enough buffer and/or flow control.

    Some of the classic xmodem and zmodem apps have overlays for differiing systems because they can't keep up otherwise. Really 115,200 is a bit too fast for a little micro. My 8Mhz box struggles at 115,200. It's also probably easier to use a tool that sends the characters one by one with delay or to use something like xmodem where you hopefully won't overrun your interrupt buffer.

  4. #14
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    28,889
    Blog Entries
    20

    Default

    At high bit rates, it doesn't matter what size your buffer is. The interrupt-servicing latency will be too high on a stock 2MHz Z80 system to do any good. Poll-mode is perhaps a bit better, but far from ideal. DMA is really the only good solution.

  5. #15

    Default

    Well, my system is running quite happily at 4 MHz with a 125 kbaud terminal via interrupts? The ISR is pretty tight, so maybe that helps. I'm interested in knowing what this DMA solution is all about though, Chuck(G)? Can you signpost me to any information on it?

  6. #16

    Default

    Quote Originally Posted by nockieboy View Post
    Well, my system is running quite happily at 4 MHz with a 125 kbaud terminal via interrupts? The ISR is pretty tight, so maybe that helps. I'm interested in knowing what this DMA solution is all about though, Chuck(G)? Can you signpost me to any information on it?
    Your system would need some type of DMA controller. Most S-100 systems do not have any DMA as a general rule. They could but don't.
    An example of a DMA setup would be to look at the buffer for the DigitalSystems disk controller. It does DMA for both read and write.
    Dwight

  7. #17

    Default

    Quote Originally Posted by nockieboy View Post
    Well, my system is running quite happily at 4 MHz with a 125 kbaud terminal via interrupts? The ISR is pretty tight, so maybe that helps. I'm interested in knowing what this DMA solution is all about though, Chuck(G)? Can you signpost me to any information on it?
    You'd need to add a DMA controller in order to use DMA on the CP/M side. That would be a big change, and re-write of code, just to enhance something that already works. Typically, one would add DMA for disk devices, maybe serial ports for special cases like multi-user systems or specialized background communications.

    What Dwight said...

  8. #18
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    28,889
    Blog Entries
    20

    Default

    If you do use interrupt-driven I/O, try to make use of the auxiliary register set in the Z80, if you're not doing it already; that can speed things up quite a bit by not needing to save and load registers.

    Another approach is to have the comm controller do DMA to a small shared block of local memory. Since the DMAC and the SIO chip would be on the same board, you wouldn't depend on the bus signals to do handshake.

    Just thinking aloud...
    Last edited by Chuck(G); September 14th, 2018 at 03:07 PM.

  9. #19

    Default

    Quote Originally Posted by Dwight Elvey View Post
    Your system would need some type of DMA controller. Most S-100 systems do not have any DMA as a general rule. They could but don't.
    An example of a DMA setup would be to look at the buffer for the DigitalSystems disk controller. It does DMA for both read and write.
    Dwight
    Thanks Dwight - was just interested to know how it would work. I don't have a DMA in my system - was planning on putting one in, but they're not that easy to get hold of these days and, as durgadas rightly points out, there's not much point as the system works.

    Quote Originally Posted by durgadas311 View Post
    You'd need to add a DMA controller in order to use DMA on the CP/M side. That would be a big change, and re-write of code, just to enhance something that already works. Typically, one would add DMA for disk devices, maybe serial ports for special cases like multi-user systems or specialized background communications.

    What Dwight said...
    I'm not sure I'm at the point that I'd need a DMA just yet, but who knows? They do seem to be the hardest of the Z80 peripheral chips to get hold of these days, though.

    Quote Originally Posted by Chuck(G) View Post
    If you do use interrupt-driven I/O, try to make use of the auxiliary register set in the Z80, if you're not doing it already; that can speed things up quite a bit by not needing to save and load registers.

    Another approach is to have the comm controller do DMA to a small shared block of local memory. Since the DMAC and the SIO chip would be on the same board, you wouldn't depend on the bus signals to do handshake.

    Just thinking aloud...
    You know, I haven't touched IX & IY yet. Perhaps I should start looking at how they can be used and broaden my knowledge a little more.

    Thanks everyone.

  10. #20
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    28,889
    Blog Entries
    20

    Default

    No, I was talking about the "ex af,af'" and "exx" instructions, that switch to AF' BC' DE' and HL' secondary registers. Very fast, with no memory references (as opposed to push and pop).

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •