Just to clarify, my surmising was in response to “ The DH11 does DMA output, but not DMA input. ” in one of the earlier messages.
Sent from my iPhone > On Nov 1, 2022, at 12:03, Wayne S <wayne.su...@hotmail.com> wrote: > > Paul said “But the DZ doesn't do DMA.” > I apologize. I used DZ in responses when i meant DH. > > > Sent from my iPhone > >> On Nov 1, 2022, at 11:56, Paul Koning via cctalk <cctalk@classiccmp.org> >> wrote: >> >> >> >>>> On Nov 1, 2022, at 2:32 PM, ben via cctalk <cctalk@classiccmp.org> wrote: >>> >>>> On 2022-11-01 11:20 a.m., Paul Koning via cctalk wrote: >>> tents. The result is that the OS only has to deal with the device every 30 >>> characters or so (RSTS case) or even less often if the buffer size is >>> larger. >>>> Consider disk for another example. With very rare exceptions, disks do >>>> DMA: the OS points to the place where the data lives, supplies a transfer >>>> length and starting disk position, and says "go do it and tell me when >>>> it's finished". Newer devices like the MSCP controllers support a queue >>>> of requests, but even simple devices like the RK05 will do a full transfer >>>> without CPU involvement. >>> How mqny old systems required partial transfer for disk io, for swapping >>> overlays in and out? >> >> Arbitrary size reads are common; as you said overlay loads require that. >> Partial block writes are not so common. In RSTS, the base OS write >> operation does not allow that. But I found out early that RT11 does, and >> depends on it. In RT11, if you do a partial block write, the rule is that >> the rest of the block is zero-filled. In some disks the controller takes >> care of that. In the RF11, the driver does because the device does any word >> count, so the driver sets up a separate transfer for the rest of the block >> using a word containing zero as the source buffer, and "inhibit bus address >> increment" set so all the DMA cycles use that same word. In the RC11, the >> sector size is 64 bytes, so the device zero-fills to the end of the sector >> but the driver has to do the same sort of stuff as the RF11 driver if there >> are any additional 64-byte sectors left before the 512-byte block boundary. >> >> It turns out RT11 Fortran depends on this, though I don't remember the >> details. >> >> paul >>