Shaos wrote:Ещё такая идея есть, что хочется из старья иметь только сам проц, а все остальные микрухи будут относительно новыми (90e-00e), поэтому никакого другого околоинтеловского барахла типа ГФ24, ВК28, ВН59 и т.д. тут не будет. Для прерываний наверное надо на мелкой логике каких-то триггерочков нагородить, чтобы они ловили запросы на прерывания по IRQ-ам и защёлкивали, пока проц не дойдёт до их обработки - на проц в итоге может идти одно прерывание по #FF (RST 7) и обработчик уже сам будет смотреть какие битики опрокинулись (причём INTA из слова состояния мне доставать не очень хочется поэтому триггерочки можно сбрасывать по INTE) - вобщем как-то так...
Можно ещё сделать прерывание от кнопки (назовём его IRQ0) и от встроенного RS232-контроллера 68B50 (назовём его IRQ1), а контроллер клавы (и мыши?) сделать отдельной ISA-платкой и соответственно оно задействует одно из прерываний ISA-шины (IRQ2-IRQ7). Также сделать отдельной ISA-платкой текстовый видеовыход
nedoText/SX, который тоже задействует одно из прерываний. В итоге у нас получается 8 "виртуальных" прерываний IRQ0-IRQ7, которые можно будет побитно маскировать.
По поводу управления моей выводилкой текста 80x25:
viewtopic.php?p=77766#p77766
Shaos wrote:Взаимодействие с девайсом предпологается осуществлять по 10 сигналам (плюс земля): D0, D1, D2, D3, D4, D5, D6, D7, IFLAG, OFLAG (из них выходной только OFLAG, а все остальные - входы).
Внешнее устройство ждёт когда OFLAG=0, затем выводит в D0...D7 нужный код и взводит IFLAG=1, далее ждём когда OFLAG=1 и сбрасываем IFLAG=0. Пока не станет OFLAG=0 новый код засылать нельзя.
Надо превратить это в работу по прерыванию (полинг тоже можно оставить) - можно сделать так, что OFLAG=1 будет сбрасывать IFLAG автоматически - в итоге программе ничего не надо будет делать при переходе OFLAG из 0 в 1, а прерывание будет срабатывать по переходу OFLAG из 1 в 0 (т.е. IRQn=!OFLAG). Поллинг может вычитывать бит OFLAG из порта статуса (чтобы можно было без прерываний работать чисто программно) и если он 0, то программа засылает байт в порт данных - можно сделать так, что IFLAG при этом автоматически установится в 1, а изменившийся из 0 в 1 OFLAG этот IFLAG автоматически сбросит - далее изменение из 1 в 0 сигнала OFLAG приведёт к вызову прерывания (если оно не замаскировано) - такую платку даже можно будет потом в PC XT новоделах задействовать, поправив ихний опенсорсный BIOS!
Разбиение такого компа на несколько плат упростит разработку и отладку, причём главная плата SlothPC сможет работать сама по себе - даже без ISA-шины, т.к. там кроме процессора уже будет ОЗУ, ПЗУ и COM-порт. Можно джамперами выбирать как пускаться - с использованием встроенного COM-порта или с использованием ввода-вывода по ISA-шине (можно зарезервировать специальные порты и прерывания под это дело - типа для nedoText/SX взять порты 220h/221h и прерывание IRQ2, а для самодельной клавиатуры - порты 110h/111h и прерывание IRQ5?). Ну и плюс уже существующие PC-платы можно будет тут же задействовать - главное следить, чтобы оно друг с другом не конфликтовало (например AdLib разрешает выбирать прерывания IRQ2, IRQ3 или IRQ5).