DMA полезно для загрузки, потому что можно добавить контроллеру команду "прочитать блок 0 устройства 0 по адресу 0" и/или ( для более продвинутых извращений ) "переслать сервисный код в ОЗУ с адреса 020000", тогда после засылки с пульта в регистр контроллера такой команды - можно будет начать загрузку командой G или запустить сервисный код командой 20000G.
- - - Добавлено - - -
При реализации прерываний и DMA - можно легко сделать разновидность контроллера HD. В таком случае подходит имя устройства HD.
Когда процессор контроллера занят - не надо отдавать в МПИ никаких битов. Достаточно, чтобы перед уходом в офлайн процессор контроллера активировал аппаратную "заглушку", которая при активации SYNC сличает адрес на шине с адресом CSR и при совпадении - замыкает линию DIN на линию RPLY, а при сбросе SYNC - сбрасывается в исходное состояние. Данные на шину выставлять не надо, тогда CPU считает с шины нули - и это будет признаком "BUSY". На запись отвечать не обязательно - никто не пишет в CSR, когда там нет флага разрешения записи ( READY ). Когда контроллер в онлайне - он сам эмулирует CSR и всегда держит там признак "READY" ( бит 0200 ). Перед каждым "сеансом" работы с контроллером драйвер должен дождаться появления бита READY в CSR.




Ответить с цитированием