Просмотр полной версии : Орион-128: Разное
HardWareMan
09.01.2017, 01:29
F/2 это полустрока. Нужно чисто под PAL, кстати.
Помогите разобраться с разными контроллерами дисковода для Ориона. В процессе реализации в эмуляторе возникло несколько вопросов:
1. Есть ли какие-то отличия в реализации контроллера ОрионСофт (OS-DOS, загрузчик DOS$, порт управления F714) от Орион-Сервис (CP/M, загрузчик DOS$, порт F720) за исключением адреса порта?
Поддерживаются ли одинарная/двойная плотность и четыре привода?
2. Где бы найти для тестирования эмулятора какой-нибудь образ SP-DOS, использующий контроллер с портом F708 и другим назначением битов? Оказывается, найти такую древность уже непросто...
3. Что представляет собой упоминаемый иногда "Ленинградский" контроллер с адресом порта F704? Вариант Чистякова "Altair" - это как раз он или еще одна разновидность?
1. Есть ли какие-то отличия в реализации контроллера ОрионСофт (OS-DOS, загрузчик DOS$, порт управления F714) от Орион-Сервис (CP/M, загрузчик DOS$, порт F720) за исключением адреса порта?
Поддерживаются ли одинарная/двойная плотность и четыре привода?
Есть статья из журнала Радио, в конце там описана модификация "двух известных" вариантов контроллера: Орион-128/Радио 05,06-93/СР/М-80. Контроллер дисковода (http://www.emuverse.ru/wiki/%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_05,06-93/%D0%A1%D0%A0/%D0%9C-80._%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0% BB%D0%B5%D1%80_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B 2%D0%BE%D0%B4%D0%B0). Там есть информация.
3. Что представляет собой упоминаемый иногда "Ленинградский" контроллер с адресом порта F704? Вариант Чистякова "Altair" - это как раз он или еще одна разновидность?
Есть вариант с регистром запросов F704: Орион-128/Радио 12-92/Контроллер НГМД (http://www.emuverse.ru/wiki/%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_12-92/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D 0%B5%D1%80_%D0%9D%D0%93%D0%9C%D0%94)
А есть и вариант Чистякова: FDC-Altair-Scheme.png (http://www.emuverse.ru/downloads/computers/Orion-128/docs/schemes/FDC-Altair-Scheme.png)
На сайте emuverse.ru достаточно много информации по Ориону-128: Орион-128 (http://www.emuverse.ru/wiki/%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128), Орион-128/Публикации (http://www.emuverse.ru/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D 1%8F:%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%9F%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D 0%B8%D0%B8)
- - - Добавлено - - -
Получается есть 4 варианта:
1. Orion-Soft Сугоняко,Сафронов (публиковался?)
2. вариант Короткина (SPDOS, Радио 92´12)
3. вариант Рогова,Бриджиди (Oрион-Сервис? Радио 93´5,6)
4. вариант Чистякова (Altair)
Получается есть 4 варианта КНГМД:
Есть всего два типа контроллера, точнее две адресации. Конкретные схемы контроллеров не играют роли и их немного больше, чем 4.
Достаточно знать, что есть всего две адресации КНГМД: более распространённая и имеющая намного больше программ адресация F700/F720 и адресация ОРИОНСОФТ F710/F714. Биты регистра управления одинаковые. Больше ничего для эмулятора знать не требуется.
Эмулировать одинарную плотность FM и односторонность незачем. Одно время я использовал дисковую защиту от копирования в которой часть треков была отформатирована в одинарной плотности, отчего копирование трек в трек не проходило. Но после появились профессональные копировщики на IBM PC, которые это копировали. В последующих защитах использовались сектора нестандартной длины. FM на ВГ93 почему-то не повышает надёжность, а вот РК-КНГМД с FM надёжность существенно повышает.
Что представляет собой упоминаемый иногда "Ленинградский" контроллер с адресом порта F704? Вариант В.Чистякова "Altair" - это как раз он или еще одна разновидность?
Ленинградского контроллера не существует. Это один в один контроллер КОРВЕТА. Замена одних микросхем на другие эквивалентные и смена адресации не называется разработкой, как это преподносили некоторые. Отличия КНГМД ОРИОНСОФТ заключается в том, то там схема WAIT встроена в КНГМД, а в других вариантах WAIT при КР580 организуется с помощью одного вентиля из ЛЛ1, смонтированной на основной плате. При Z80 WAIT вообще не нужен.
История адресаций КНГМД такова. Первоначально CP/M с КНГМД от КОРВЕТА была поставлена мной на СПЕЦИАЛИСТ осенью 1989 года. Адреса КНГМД для СПЕЦИАЛИСТА были FFE0/FFE4, а сама CP/M работала из адресов D000...F7FF (открывалось ОЗУ на экспрессовской плате на РУ5-тых). Печ.плат КНГМД сначала не было. Но в 1990 плата была разведена и на ней был предусмотрен дешифратор разбивающий участок адресов В/У на 8 чип-селектов с шагом 20H, чтобы ставить в ОРИОН и другие В/У, в частности, ВИ53. И естественно, для сокращения числа деталей, имеющийся чип-селект F720 был задействован под регистр управления. Это уже было сделано в рассчёте на ОРИОН. Эти платы имели надпись "Ленинград-90", и появились в начале 1991 года. Первые версии CP/M для ОРИОНА были странслированы для адресации F700/F704 для плат КНГМД спаянных на слепыше и без дешифратора. Так появилась исторически первая адресация. Но когда появились платы с адресацией F700/F720, то CP/M была перетранслирована для адреса рег.управления F720 вместо F704. Это же не проблема при наличии листинга.
К весне 1991 уже много дискет с CP/M ушло в разные города страны. И когда в июне 1991 в Ленинград приехал автор ОРИОНА, то его не устроил адрес F700 и он заявил, что это противоречит его концепции ОРИОНА. Но т.к ни эта концепция, ни адресация В/У не была опубликована, то кто первым сделал печ.платы КНГМД и адаптировал CP/M, тот и выбрал стандарт подключения НГМД. Переделать платы и вернуть дискеты было нельзя. Автора ОРИОНА не устроил ни один из реально существующих адресов КНГМД и он из вредности выбрал третий вариант F710/F714. Это не представляло проблемы, т.к с помощью 2-х диодов и резистора ленинградский КНГМД делался совместимым. Но к сожалению, автор ОРИОНА изменил адрес байта в BOOT-секторе, которым задаётся номер банки загрузки ДОС, из-за чего пришлось городить свой несовместимый загрузчик, а пользователям иметь 2 загрузчика в ROM-диске.
Адресация F700/F704 имела хождение только в 1990 и самом начале 1991 и только для CP/M банки 0. Непонятно откуда "выплыла" столь древняя адресация, т.к таких дискет ушло очень мало. И эмулировать это в эмуляторе нет смысла. Но такую адресацию имела так называемая LK-SHELL из 1992. Это что-то типа оболочки ORDOS позволяющей хранить файлы на дискете. Была ещё система MOZART с той же адресацией, реализующая ту же идею. А SP-DOS это вообще полнейшая туфта. Любая другая система лучше и нет смысла её эмулировать в эмуляторе. То что она опубликована в журнале не делает её на что-то годной. Эту систему вынуждено использовали изолированные сельские пользователи, но как только они доставали что-то получше, то выкидывали SP-DOS. Получить такую дискету можно только в случае, если кто-то сохранил такой контроллер, а это очень маловероятно.
МП Г.Рогова ОРИОН-СЕРВИС, появившееся летом 1991, естественно, стало поддерживать ту адресацию, которая имела широкое распространения к осени 1991. Стандарт F710/F714 появился только, как минимум, год спустя и иначе как вредительством по отношению к пользователям это назвать нельзя. Хотя делать из этого проблему тоже не стоило, т.к простейшими доработками любой контроллер становился совместимым и пользователь даже не замечал и не знал какую адресацию использует конкретная ДОС. Но кому-то было надо сделать из этого проблему.
Единственное реальное неудобство было только в необходимости иметь второй загрузчик. Но это тоже легко устранялось любым из 2-х способов. Во-первых универсальный загрузчик, который сам оценивал BOOT-сектор и разбирался от какой он системы. Во-вторых, достаточно было заменить BOOT-сектор дискеты в инсталляторе и тогда OS-DOS грузилась стандартным загрузчиком.
Загрузчик ОРИОНСОФТ это изуродованный стандартный загрузчик. Он не может грузить в банку 2, грузит на неудобный адрес и неверно ставит стек. Но главная проблема, что в BOOT-секторе изменён адрес байта с номером банки куда грузить ДОС, который как раз и оценивает загрузчик, чтобы знать куда грузить DOS. Из-за этого OS-DOS не грузится стандартным загрузчиком. Переделка BOOT-сектора OS-DOS, чтобы была совместимость в текстовом редакторе занимает 30 секунд. Несовместимость как аппаратная , так и программная сделана специально.
Печатная плата КНГМД с надписью "Altair" была выпущена в 1995, как периферийная плата для обычного ОРИОНА. Но в 1994 она была разведена как периферийная плата для платы ОРИОНА на Z80, которая тоже называлась "Альтаир". Это был по схемотехнике СПЕЦИАЛИСТ "ЭКСПРЕСС" только с 3-мя банками ОЗУ и видеовыходом ОРИОНА, т.к всё было отмакетировано на плате "ЭКСПРЕСС". Но в 1994 выпустить такие платы не удалось, - не удалось собрать заказы. Т.к все с кем я имел контакт уже имели Z80 на обычном ОРИОНЕ и рынок был насыщен платами СУПЕР-ТУРБО. Также покупать медленную плату ОРИОНА на Z80 никто не захотел из-за того, что ОРИОНСОФТ обещал со дня на день выпустить платы на 10 МГЦ. Поэтому плата КНГМД в 1995 была перетрассирована с целью заменить разъём на СНП58-64 (первоначально был врубной разъём, т.к на плате "Альтаир" должны были стоять эпловские слоты на 50 контактов) и эти платы были реально выпущены (прилагаю фотографию).
Отличие этих плат следующее. Они были рассчитаны на DD/HD поэтому имели 2 программно переключаемых кварца. Для переключения кварца в регистре управления добавлен бит. И чтобы снизить требования к быстродействию, на разъём выводились сигналы готовности (ноги 38 и 39 ВГ93), что позволяло чуть быстрее читать готовность. И, естественно, они сразу втыкались в плату ОРИОНА без соединительной косы, как все предыдущие КНГМД ОРИОНА.
Поддерживать HD-формат в эмуляторе нет смысла, т.к специально для HD-формата программ нет (если не считать форматёр, да и он универсальный, сразу для всех форматов дискет, т.е при нужде форматёр можно посмотреть форматируя DD).
Так что для [b]ОРИОНА[b/] есть только два реальных стандарта F700/F720 и F710/F714. По битам регистра управления они одинаковы, а адрес ВГ93 F700 и F710 совместить - это в эмуляторе не проблема. Да и вообще для эмулятора проблема адресации - надумана. Т.к адресация важна только для самой ДОС, для форматёра дискет и теста дискет (С.Коровкина и А.Вакуленко - кстати оба для адресации F700). Но для эмулятора эти программы просто не нужны т.к форматировать в эмуляторе не надо и дискеты там не дохнут. Кстати все 3 программы для адресации F710 ещё 20 лет назад адаптированы для адресации F700, а BRU4 даже доработан до оконного интерфейса.
Однако я вообще не понимаю смысла эмулировать КНГМД в эмуляторе. Даже если можно использовать кем-то сделанную эмуляцию ВГ93. В эмуляции КНГМД вообще нет смысла. Гораздо проще заменить п/п-ммы чтения и записи сектора в конкретных ДОС. Их число невелико. В своём эмуляторе ОРИОНА в 1999 я сделал именно так. Дискета заменяется электронным диском из ОЗУ IBM PC или дисковым файлом в 800К на винчестере. А вначале я вообще использовал в эмуляторе реальную дискету ОРИОНА в дисководе IBM PC. Но то, что работало на 386-той, уже не работало на ПЕНТИУМЕ, т.к там BIOS вообще плохо поддерживает дисковод (а работать напрямую с 8272 это уже намного сложнее). Кроме того, сейчас НГМД и дискеты давно сдохли и в качестве массовой памяти в реальных ОРИОНАХ используются флэш-карточки или эл.диск из ОЗУ, куда программы закачиваются по линии.
Для эмулятора ОРИОНА нужны только две версии CP/M - для банки 0 и для банки 1. Для банки 1 существует много, якобы разных, версий CP/M. Но все они имеют один и тот же адрес BDOS и тем самым программы совместимы. Есть исключения, когда программы специально из вредности делались несовместимыми. Но все такие программы ещё 25 лет назад были исправлены.
barsik, спасибро за обстоятельный ответ, было очень интересно узнать историю НГМД для "Ориона".
Две основных адресации у меня в эмуляторе уже реализованы (как были реализованы и в DOS-версии еще лет 15 назад). Бегло посмотрел еще раз схемы разных контроллеров, которые удалось найти - действительно, отличия минимальны: 2 либо 4 дисковода, разные биты, отвечающие за высокую плотность (D3 либо D6), может быть еще что-то по мелочи, но для эмулятора, я думаю, это действительно несущественно.
В принципе, неплохо было бы хотя бы из теоретического интереса реализовать и первый вариант контроллера, чтобы посмотреть на SP-DOS, но мне просто не на чем его протестировать. Упоминание про LK-SHELL вроде бы где-то видел, может быть даже здесь же на форуме, но тоже навскидку найти не удалось. В общем, если у кого-то завалялось либо то, либо другое - с удовольствием посмотрю.
P.S. Новая версия эмулятора потихоньку пишется. Хотел еще осенью выложить тестовые сборки, но решил все-таки довести сначала до более-менее стабильного уровня, так что чуть позже.
Stampmaker
12.01.2017, 12:13
Упоминание про LK-SHELL вроде бы где-то видел, может быть даже здесь же на форуме, но тоже навскидку найти не удалось. В общем, если у кого-то завалялось либо то, либо другое - с удовольствием посмотрю.
LK-SHELL с описанием 59394
Так что для [b]ОРИОНА[b/] есть только два реальных стандарта F700/F720 и F710/F714. По битам регистра управления они одинаковы...
Есть ещё третий стандарт, и отличие как раз в регистре управления (а точнее конфигурации КНГМД) - М.Короткина (Радио 92´12). Адрес регистра - F708. Там бит стороны не инверсный, а прямой; а также "топология" битов отличная от первых двух "стандартов".
- - - Добавлено - - -
Pyk, ранние версии DSDOS (3.5...3.7х) работают с КНГМД Короткина (который от SPDOS). В v3.8х уже поддерживаются все варианты КНГМД, кроме того, который с адресацией F71x (ОрионСофт?).
Если ваш эмулятор умеет работать с ROM-диском, то просто подкидываете ему соответствующий образ ОС и проверяете работоспособность "КНГМД". Дисководы - это диски "C:" и "D:", команды - FORMAT C:, запись/чтение/копирование и т.д..
Stampmaker
12.01.2017, 14:56
можно и я вставлю свои 5 копеек?
вот тут поносят КНГМД Короткина (ж.Радио №12, 1992г).
а чем он плох, что SPDOS не полноценная операционка? но это отличная замена магнитофону.
а теперь ситуация.
предположим, что какой-то человек собрал Орион и хочет сохранять где-то свои файлы. магнитофонов уже давно нет. а как сохранять? ну соберёт он этот КНГМД для СР/M и что дальше? где он саму дискету CP/M'овскую возьмёт? ок, допустим, ему выслали такую дискету. он её вставил раз-два-три раза. а тут опа! внезапно слетел загрузочный сектор. дисковод оказался не совсем хорошо работающий. и что делать дальше?
отсюда собственно вопрос по существу: вот у меня КНГМД под СP/M. как собственноручно поставить CP/M?
Denn, спасибо за наводку, поэкспериментирую вечером с ранними версиями DSDOS. Кстати, какой формат файловой системы используется в ней? Если какой-то свой, то образ дискеты придется создавать, готовых я не нашел, только образы ROM-дисков.
и теста дискет (С.Коровкина и А.Вакуленко - кстати оба для адресации F700).
Так всё-таки Коровкин, а не Короткин? Значит много где фамилия с ошибкой написана...
- - - Добавлено - - -
Автора ОРИОНА не устроил ни один из реально существующих адресов КНГМД и он из вредности выбрал третий вариант F710/F714.
Нечто такое я и предполагал :)
Кстати, какой формат файловой системы используется в ней? Если какой-то свой, то образ дискеты придется создавать, готовых я не нашел, только образы ROM-дисков.
Формат Короткина (SPDOS). На второй дорожке в первых двух секторах DIR+FAT.
Вот с помощью эмулятора b2m скопировал файлы из ROM-диска на "дискету" - http://denn.ru/orion/dsdos/dsdos385.odi
Список файлов виден тут:
http://denn.ru/orion/dsdos/dsdos385.odi.gif
а теперь ситуация.
предположим, что какой-то человек собрал Орион и хочет сохранять где-то свои файлы. магнитофонов уже давно нет. а как сохранять? ну соберёт он этот КНГМД для СР/M и что дальше? где он саму дискету CP/M'овскую возьмёт? ок, допустим, ему выслали такую дискету. он её вставил раз-два-три раза. а тут опа! внезапно слетел загрузочный сектор. дисковод оказался не совсем хорошо работающий. и что делать дальше?
Я в свое время делал для этого ORDOS6 а потом была ORDOS7 с поддержкой файловой системы msdos на дисководе и винчестере.
Правда широкого распространения идея получить не успела (интернета тогда толком не было, только письма по почте ... ).
Так всё-таки Коровкин, а не Короткин?
Короткин - это Михаил, т.е. "М.", а не "С." ;)
- - - Добавлено - - -
а потом была ORDOS7 с поддержкой файловой системы msdos на дисководе и винчестере.
Т.е. со всеми подкаталогами? о_О
Каталог и FAT читались в ОЗУ Ориона?!
Т.е. со всеми подкаталогами? о_О
Каталог и FAT читались в ОЗУ Ориона?!
Да с подкаталогами. В озу используется буфер на один сектор.
HardWareMan
12.01.2017, 16:30
Я в свое время делал для этого ORDOS6 а потом была ORDOS7 с поддержкой файловой системы msdos на дисководе и винчестере.
Правда широкого распространения идея получить не успела (интернета тогда толком не было, только письма по почте ... ).
Я делал обменник дискеты MS-DOS (FAT12) и диска B.
Т.е. со всеми подкаталогами? о_О
Каталог и FAT читались в ОЗУ Ориона?!
Я делал работу только с корневой папкой, но при этом использовался буфер только 512 байт + несколько ячеек параметров FAT-12 и диска, его несущего. Я вроде показывал то, что осталось. Своего PC тогда не было и эта концепция использовалась чтобы обмениваться файлами с другом, у которого на винте был мой личный "сейф" почти на 5 мегабайт.
Да с подкаталогами. В озу используется буфер на один сектор.
Т.е. при каждом поиске/чтении файла происходит многократное чтение секторов каталога/FAT?
- - - Добавлено - - -
а теперь ситуация.
предположим, что какой-то человек собрал Орион и хочет сохранять где-то свои файлы. магнитофонов уже давно нет. а как сохранять? ну соберёт он этот КНГМД для СР/M и что дальше? где он саму дискету CP/M'овскую возьмёт? ок, допустим, ему выслали такую дискету. он её вставил раз-два-три раза. а тут опа! внезапно слетел загрузочный сектор. дисковод оказался не совсем хорошо работающий. и что делать дальше?
отсюда собственно вопрос по существу: вот у меня КНГМД под СP/M. как собственноручно поставить CP/M?
Набрать руками дамп загрузчика из журнала РАДИО, купить дискеты с ПО и чистые, наделать кучу бэкап-дубликатов. Если мы в пост-восьмибитной эпохе и есть писюк с дисководом, то с помощью DISKUTIL.exe делать дискеты для Ориона :)
П.С. а как, кстати, заиметь SPDOS на Орионе, если есть только магнитофон и нет интернетов? ;) :-р
Т.е. при каждом поиске/чтении файла происходит многократное чтение секторов каталога/FAT?
Не совсем так. Там буфер работы с диском несколько Кбайт. Скорость работы получилась вполне приличная искало на HDD даже быстрее msdos.
Подробнее надо поднимать исходники.
mifvi, если FAT разбросан по разным секторам, то будет адовый "треск головками": считали FAT, узнали в каком секторе первый кластер файла, считали кластер, потом снова вернулись считали FAT и т.д.. Имхо, каталог и FAT надо кэшировать в ОЗУ, но в случае FAT-16/32 это дикие объёмы, которые в масштабах 8-битки неуместны.
АлександрПП
12.01.2017, 17:40
Вот и Михаловский В.Ф. объявился! Хорошее событие.
Error404
12.01.2017, 20:20
Не совсем так. Там буфер работы с диском несколько Кбайт. Скорость работы получилась вполне приличная искало на HDD даже быстрее msdos.
Подробнее надо поднимать исходники.
Так поднимайте, общественность поддержит. :)
Используемая мной популярная билиотека FatFS (она поддерживает FAT12/16/32) весьма медленная (там 32-биная арифметика на С тормозит, да и 16-битная то же не само совершенство), если будет быстрая 32-битная либа на ASM, это будет очень кстати. Дискеты с их FAT12 уже не актуально, а вот FAT32 для карточек памяти (SD/CF) и HDD - еще вполне .
Stampmaker
12.01.2017, 20:31
купить дискеты с ПО и чистые, наделать кучу бэкап-дубликатов.
это понятно.
но вопрос звучал так: как собственноручно проинсталлировать CP/M?
её же как-то предварительно скопировали, потом адаптировали, а затем обратно на дискету записали.
Так всё-таки Коровкин, а не Короткин?
О М.Короткине я вообще ничего не знаю и услышал о нём сегодня впервые. А вот Сергей Коровкин это один из самых извествейших деятелей орионовшины. О нём знают все пользователи ОРИОНА, кроме тех кто был зациклен только на ОРИОНСОФТ или вообще самоизолировался пользуясь только бесплатным ПО из журналов (хотя публикация бесплатного ПО ОРИОНА в журналах реально закончилась в 1992). Привожу некоторые сведения и лишь некоторые программы С.Коровкина для информации.
вот тут поносят КНГМД М.Короткина (ж.Радио 12.92 и 01.93). А чем он плох, что SPDOS не полноценная операционка?
Я не поношу КНГМД М.Короткина. Я лишь констатировал известные мне факты. Я переписывался с 600 орионщиками в 1991-95 и встретил только одного пользователя SP-DOS, было больше пользователей систем PMBB, LK-SHELL, MOZART, Хамелеон-ДОС и V-DOS. Я имею каталоги почти всех МП и КООП и частных торговцев ПО на ниве ОРИОНА за те годы. Никто SP-DOS, и главное, программ для неё не продавал. Эта система была совершенно не популярна. Да и опубликована была слишком поздно, в начале 1993, причём в том же журнале, где опубликована нормальная ДОС (РК-ДОС для РК86, пригодная и для ОРИОНА). Как я писал ранее, эта система имела только один плюс - она опубликована в массовом журнале. Но всякий активный орионщик получал каталоги из десятка разных мест и при желании имел возможность купить программы ОРИОНА. Поэтому когда SP-DOS опубликовали, это уже никому было не надо, кроме абсолютно самоизолированных пользователей. Вот о чём шла речь.
Выложенная Вами версия LK-SHELL поздняя. Хотя стоит дата 1993, но в 1993 была только версия 1.0 и именно ЕЁ тогда мне прислали луксиане и именно такая версия продавалась у всех торговцев ПО в 1992-94. Интересно когда и где Вы купили эту версию 4.5, т.к её нет даже в каталогах пиратов. Выкладываю версию LK-SHELL 1992 года, которая реально использовалась пользователями ОРИОНА (ещё есть ДОК на бумаге и схема синклеровского Beta-КНГМД для TR-DOS, который использовался с LK-SHELL).
Ну соберёт он этот КНГМД для СР/M и что дальше? где он саму дискету с CP/M возьмёт? ОК, допустим, ему выслали такую дискету. Он её вставил раз-два-три раза. а тут внезапно слетел загрузочный сектор. И что делать дальше?
Во-первых, все продавцы ПО всегда без лишних слов высылали дубль старого заказа по просьбе клиента (правда при условии покупки чего-то нового). Во-вторых, такая ситуация реально была у одного из 10 тысяч. Т.к одной дискетой никто не покупал и сразу же дискету оригинал заклеивали для защиты от записи и, как учат во всех книгах, сразу копировали и клали в сейф. И если сдох BOOT-сектор, то была программка REPAIR.COM (это усечённый формат), которая форматировала только системные треки, специально для такого случая. И даже если BOOT-сектор сдох насмерть, то можно потреково скопировать весь диск на хороший диск и затем восстановить на новой дискете BOOT-сектор с помощью REPAIR.COM.
Отсюда вопрос: вот сделал КНГМД. Как собственноручно поставить CP/M?
У меня есть ответ на этот вопрос.
Можно взять дамп CP/M из иностранных журналов (напр. Funkamateuer 04.1989), как сделал я. Удобнее всего попросить владельца КОРВЕТА считать системные дорожки и скинуть их на ленту в МГ-формате ОРИОНА. Иначе надо достать любую дискету с CP/M, например, от СИНКЛЕРА или КОРВЕТА и написать программку считывающую в ОЗУ 3 (или 2) системные дорожки. Дизассемблером МИКРОН дизассемблируете CCP, BDOS и BIOS. Затем изменяете в BIOS адреса В/У, модифицируете CONIN, CONOUT и забиваете в WBOOT подкачку кода BDOS с дискеты. Затем всё снова транслируете уже для адресов ОРИОНА. Грузите в ОЗУ с ленты CP/M на рабочие адреса и стартуете на WBOOT. Вы оказываетесь в CP/M и можете читать чужую дискету с программами CP/M. Первым делом в ОЗУ считываете форматёр и выводите его на МГ-ленту. Затем дизассемблируете и адаптируете форматёр для адресов ОРИОНА. После этого форматируете дискету и записываете на неё CP/M ОРИОНА уже с полноценной подкачкой кода BDOS, делаете программку загрузчика и загружаетесь в CP/M ОРИОНА. Далее с помощью POWER-а командами LOAD и SAVE копируете на дискету ОРИОНА все нужные Вам программы CP/M. Но ещё проще это сделать, если Вы имеете свой КОРВЕТ. Это несложная работёнка доступная даже малоопытному программисту.
Если такой ответ не устраивает, то позвольте ответный вопрос. Зачем было собирать КНГМД, если не хочешь адаптировать CP/M сам, и не хочешь купить её в множестве торгующих программми ОРИОНА точек по всей стране?
А проще всего пойти на рынок в любом крупном городе и там Вы обязательно встретите пирата торговца программами ОРИОНА. И сможете за очень небольшие деньги купить программы для ОРИОНА.
У меня есть ответ на этот вопрос.
Можно взять дамп CP/M из иностранных журналов (напр. Funkamateuer 04.1989), как сделал я. Удобнее всего попросить владельца КОРВЕТА считать системные дорожки и скинуть их на ленту в МГ-формате ОРИОНА. Иначе надо достать любую дискету с CP/M, например, от СИНКЛЕРА или КОРВЕТА и написать программку считывающую в ОЗУ 3 (или 2) системные дорожки. Дизассемблером МИКРОН дизассемблируете CCP, BDOS и BIOS. Затем изменяете в BIOS только адреса В/У, забив в WBOOT подкачку кода BDOS с дискеты. Затем всё снова транслируете уже для адресов ОРИОНА. Грузите в ОЗУ с ленты CP/M на рабочие адреса и стартуете на WBOOT. Вы оказываетесь в CP/M и можете читать чужую дискету с программами CP/M. Первым делом в ОЗУ считываете форматёр и выводите его на МГ-ленту. Затем дизассемблируете и адаптируете форматёр для адресов ОРИОНА. После этого форматируете дискету и записываете на неё CP/M ОРИОНА уже с полноценной подкачкой кода BDOS, делаете программку загрузчика и загружаетесь в CP/M ОРИОНА. Далее с помощью POWER-а командами LOAD и SAVE копируете на дискету...
Людей, которые этим будут заниматься даже не полтора человека... а наверное минус ноль. И это - в те времена, а сейчас уж тем более. Пользователь - это такой человек, который может купить дискету и максимум нажать пару-тройку кнопок. А уж сейчас так вообще все избалованы "интерфейсами для домохозяек", и если что-то сложнее пары кликов мышкой, то "ну его нафик", ибо вариант попроще всегда найдётся.
Error404
12.01.2017, 21:50
можно и я вставлю свои 5 копеек?
вот тут поносят КНГМД Короткина (ж.Радио №12, 1992г).
а чем он плох, что SPDOS не полноценная операционка? но это отличная замена магнитофону.
а теперь ситуация.
предположим, что какой-то человек собрал Орион и хочет сохранять где-то свои файлы. магнитофонов уже давно нет. а как сохранять? ну соберёт он этот КНГМД для СР/M и что дальше? где он саму дискету CP/M'овскую возьмёт? ок, допустим, ему выслали такую дискету. он её вставил раз-два-три раза. а тут опа! внезапно слетел загрузочный сектор. дисковод оказался не совсем хорошо работающий. и что делать дальше?
Скажу больше, CP/M все равно какой контроллер. И например ту же SPDOS в исходном виде в ситуации "когда больше ничего нет" запросто можно использовать как BIOS (все что от нее требуется - читать и писать указанный сектор), а BDOS CP/M (аппаратно независимый) хоть с журнала "набить" (чего там набивать то - 5 кб, и побольше набивали, тот же Basic или Penx журнальные оба 8-кбшные), промежуточные версии скидывать на диск при помощи той же SPDOS.
И это вполне себе способ, многие системы так работают, в особенности на начальных стадиях. Так работали первые версии Linux (поверх FAT и BIOS MS-DOS), так работают некоторые версии FUZIX (например его версия для MSX работающая из-под MSX-DOS) или UZIX на Орионе (где используется CP/M как BIOS для работы с носителем и экраном)
отсюда собственно вопрос по существу: вот у меня КНГМД под СP/M. как собственноручно поставить CP/M?
Я всегда просто копировал Power-ом (утилита CP/M такая же "на каждый день" как Мониоры-128/256 в Ордос) системные дорожки с одного диска на другой. Это две команды - прочитать да записать (третья - форматирование диска).
Посмотрел обе версии LK-SHELL. Предположение относительно использования в нем адресации F700/F704 не подтвердилось - в обеих версиях используется F710/F714. Кроме того, в дискетах там используется формат секторов по 512 байт (кажется, 9 секторов на трек). Еже одним сюрпризом для меня оказалась установка регистра сектора контроллера дисковода уже после команды чтения сектора. Видимо такое иногда практиковалось, надо будет учесть в эмуляторе.
А вот DS-DOS действительно обращается по адресам F700/04 - будет на чем отладить эмуляцию этого контроллера :)
Людей, которые этим будут заниматься даже не полтора человека... а наверное минус один. И это - в те времена, а сейчас уж тем более.
Речь шла о 1993, когда опубликовали SP-DOS. В 1993 уже действительно было меньше профессионалов, имеющих возможность адаптировать CP/M, т.к сама CP/M на предприятиях исчезла, т.е профессионально никто уже с CP/M не сталкивался и потому знаниями не обладал. Но зато сама CP/M стала доступнее, теперь уже лишь для любителей.
Чуть иная ситуация была в 1987-89 годах. Тогда профессионалов пользующихся ЕС-1800 с CP/M было больше. Поэтому и специалистов для адаптации CP/M было больше. Я имел тогда СПЕЦИАЛИСТ и только для него в Ленинграде до 1989 в двух местах поставили CP/M (правда только по слухам). Зато я реально имел ИНФО о 2-х вариантах установки CP/M на РК86. Один - бесполезный вариант из КООП (без дискеты, лишь схема КНГМД, рисунок печ.платы и листинг CP/M-BIOS для ВГ93 с ПДП на бумаге), а второй - с программами (из Саратова), на кассете CP/M и программы PIP, ASM, LOAD и схема контроллера без ВГ93, принцип как РК-КНГМД, чтение через ВВ55, но сепаратор данных хуже, чем в РК-КНГМД. Это с трудом удалось запустить, но дисковод с резиновым пассиком давал низкую надёжность, а ёмкость диска и скорость обмена были крайне низки. Так что к середине 1989 уже существовало несколько вариантов установки CP/M. Вероятно и в других городах были варианты адаптации. К 1989 дисководы стали доступны и идея установки CP/M созрела. Я встречал в 1991 людей, которые независимо и самостоятельно поставили CP/M на ОРИОН. Правда все эти люди, имели информацию и доступ к компьютерам с CP/M.
Так что Ваш пессимизм Denn и недооценка способностей любителей в данном случае не оправдана. Адаптировать CP/M, имея доступ к ИНФО, намного проще, чем написать свою ДОС с нуля. Для этого не нужен большой опыт в программировании. Все стремились получить CP/M, чтобы получить доступ к ЯВУ, т.к предполагалось, что они существенно облегчат разработку ПО. Однако для некоторых других бытовых ЭВМ любители написали собственные ОС поддерживающие НГМД.
mifvi, если FAT разбросан по разным секторам, то будет адовый "треск головками": считали FAT, узнали в каком секторе первый кластер файла, считали кластер, потом снова вернулись считали FAT и т.д.. Имхо, каталог и FAT надо кэшировать в ОЗУ, но в случае FAT-16/32 это дикие объёмы, которые в масштабах 8-битки неуместны.
На деле треска не было: во-первых при записи файла bdos старается найти место для файла без дефрагментации. А остальное надо вспоминать и читать исходник если есть интерес у народа.
Но все равно под compact flash скорее всего надо будет адаптировать.
Вот и Михаловский В.И. объявился! Хорошее событие.
Правильно Михаловский В. Ф.
Спокойной ночи. (писал на работе. аварию устраняли)
- - - Добавлено - - -
А поддержку дисководов и FAT12 по идее можно вообще изъять из системы.
Error404
13.01.2017, 09:28
Но все равно под compact flash скорее всего надо будет адаптировать.
Не, не потребуется. Это такой приятный бонус, подарок нам 8-битным самодельщикам: если FAT32 на IDE поддерживается (т.е. жесткие диски "винчестеры"), то CF к такой системе достаточно просто подключить через простейший аппаратный переходник (фактически, только согласование разъемов).
если FAT32 на IDE поддерживается (т.е. жесткие диски "винчестеры"), то CF к такой системе достаточно просто подключить через простейший аппаратный переходник (фактически, только согласование разъемов).
Я не это имел ввиду.
Просто система писалась под реалии того дня: bdos оперирует понятием lba сектора 24 бит т. е. макс объём накопителя 8 Гбайт (для ориона в принципе достаточно , можно расширить, а надо ?).
BIOS с диском работает по CHS, LBA пересчитывает, а тут как известно ограничение в 504 Мбайт. Тогда этого хватало. Поэтому надо модифицировать bios.
Да еще ORDOS7 поддерживает только FAT12/16 по моему Ориону этого достаточно. 8 Гбайт это 4 раздела по два, отсюда и упрощенная разметка диска 4 основных раздела.
Дмитрий2012
13.01.2017, 12:12
Да еще ORDOS7 поддерживает только FAT12/16 по моему Ориону этого достаточно. 8 Гбайт это 4 раздела по два, отсюда и упрощенная разметка диска 4 основных раздела.
FAT12/16 Ориону думаю вполне достаточно:) А есть ли возможность взгянуть на ORDOS7 или почитать о ее возможностях? никогда о ней не слышал. Хорошо если бы это была версия для Орион-ПРО.
Хорошо если бы это была версия для Орион-ПРО.
Да писалось сразу для 128 и ПРО (при сборке указываешь что собирать) но 128 для Z80
А есть ли возможность взгянуть на ORDOS7 или почитать о ее возможностях?
Хорошо по мере наличия времени постараюсь подготовить материал и выложить
АлександрПП
13.01.2017, 12:52
А есть ли возможность взглянуть на ORDOS7 или почитать о ее возможностях? никогда о ней не слышал
Думаю, что о ней вообще никто не слышал.
Что касается ORDOS-6. Я так и думал, что там ограничение в объеме винчестера. У меня из восьми имеющихся винчестеров определился только один, на 7 Гбайт. Буквально на днях попробовал повозиться с ним. Fdisk (ORDOS-6) его увидел. Разметил винчестер на три логических. Форматирование прошло прекрасно.
Программой sg610.com разместил на винчестере систему. С винчестера грузится. Файлы на него пишутся, читаются, переносятся на другие диски. Создаются каталоги. Вот только созданный каталог удалить не получается.
Причем запись-чтение идет с ошеломительной скоростью. Сначала я даже подумал, что ничего не пишется, так быстро прошла операция.
Вот только скопированные на винчестер программы с него не запускаются. Даже если скопировать файлы ORDOS-6 fdisk.com и format.com, то не запускаются и они.
Программы с РОМ-диска (диск А) почти все в ОРДОС-6 идут.
Получил переходник с CF-картой, сегодня попробую повозиться с нею. Но она на 16 Гб.
А ORDOS-7 хочется увидеть.
Даже если все это в бумажном виде.
Вот только скопированные на винчестер программы с него не запускаются. Даже если скопировать файлы ORDOS-6 fdisk.com и format.com, то не запускаются и они.
Программы с РОМ-диска (диск А) почти все в ОРДОС-6 идут.
Похоже на работу fatall у меня на zxm-phoenix. Может так же реализовано? Типа запуск только из рамдиска...
АлександрПП
13.01.2017, 13:19
Похоже на работу fatall у меня на zxm-phoenix
Точно! Очень похоже.
Есть надежда, что mifvi что-то прояснит, конечно, если помнит.
Вот только скопированные на винчестер программы с него не запускаются. Даже если скопировать файлы ORDOS-6 fdisk.com и format.com, то не запускаются и они.
Должно запускаться. Хотя надо смотреть и анализировать в чем дело.
Вот только созданный каталог удалить не получается.
Про удаление конечно не помню, может не удаляется если не пуст, кажется было так.
ORDOS7 есть и в исходнике. Дискета оказалась читаема. Перенес на флэшку.
Программы с РОМ-диска (диск А) почти все в ОРДОС-6 идут.
Цель была обеспечить максимальную (полную) совместимость с предыдущими версиями.
Error404
13.01.2017, 14:53
FAT12/16 Ориону думаю вполне достаточно:)
Тогда понятно со скоростью, раз там FAT16. Но надо допилить до FAT32. Т.к. Ориону может и достаточно 8Гб (если не считать оцифровки звука и видео, то всего Орионовсково софта вместе с текстами наберется едва ли на сотню Мб), а носители что - все переформатировать? Флешки более 2Г идут с завода в FAT32 ЕМНИП, жесткие тоже у всех на FAT32, причем если они форматированы под VISTA и старше, то еще и c extended разделом. Впрочем, extended раздел это не проблема, это по сути один раз оффсет вычислить (в два шага вместо одного). А вот FAT32 - это совместимость на уровне "отформатировал и накопировал тудысь на PC - вставил этот же диск в Орион, что-то дописал - переставил снова в РС, и всё работает", это стоит труда, особенно для CF, которые по сути "дискетка совместимая с РС". А иначе оно вообще зачем - каталоги сами по себе на Орионе не нужны, они еще на CP/M были в 94 году (в Альтаир-ДОС 1.x А.Балдина, здесь выкладывалось камрадом Adept) и никому не пригодились.
- - - Добавлено - - -
ORDOS7 есть и в исходнике. Дискета оказалась читаема. Перенес на флэшку.
Вот это здорово, не теряйте такие вещи, в наше время делать заново уже некому. :)
Вот это здорово, не теряйте такие вещи, в наше время делать заново уже некому.
Немного погорячился дискета не самая последняя версия это часть 6.10
Нашел сейчас дома последние дискеты с надписью проект 7.00 , но почитать пока нечем в домашнем компе нет даже интерфейса FDD.
А старичок Орион не запускается. Может когда доберусь поковыряться.
Попробовал винчестер аж на 80 Мбайт подключить через usb переходник. Но видимо он не знает что такое CHS, а древний винчестер что такое LBA.
И определился он аж как 2.2 ТБ. Придется собирать что-то древнее на MSDOS.
Так что пока фальстарт.
P. S. И наверное под это надо будет создавать отдельную тему если есть интерес у народа.
Error404
13.01.2017, 20:53
P. S. И наверное под это надо будет создавать отдельную тему если есть интерес у народа.
Да, интерес есть, и тему лучше отдельную, верно.
АлександрПП
13.01.2017, 21:23
Да, интерес есть, и тему лучше отдельную, верно.
Кто откроет и как ее назвать?
Error404
13.01.2017, 23:00
Кто откроет и как ее назвать?
Автор наверное?
Так все же нужен для Ориона-128 звук и на чем? ay или ви53, много ли программ со звуком?
Для WAV'ов - Covox, для PT3'шек - AY.
Музыкальных произведение под ВИ53 лично я не встречал.
Имхо, AY - это идеал для 8-битки. По крайней мере по соотношению качество/объём.
Error404
23.01.2017, 16:14
Так все же нужен для Ориона-128 звук и на чем? ay или ви53, много ли программ со звуком?
Философский вопрос.
Кому-то звук на Орионе нужен, кому-то нет. Как и кому-то нужны игры, кому-то нет, и тд. :)
Кому нужен, у того и композиции/проигрыватели есть, и что угодно есть - пару месяцев назад считали тут: одних PTx-шек десятки тысяч.
Схема подключения ay есть у кого нибудь, читаемая? проверенная на Орион-128.
Звук нужен, без него как то нет ощущения законченного устройства.
https://pp.vk.me/c636528/v636528907/2aba1/hk50pGn2VFE.jpg
Полноразмерная картинка тут (https://pp.vk.me/c636528/v636528907/2aba1/hk50pGn2VFE.jpg).
На Орионе-ПРО аналогичная схема работает прекрасно, насчёт О-128 - не знаю, ещё не собирал.
П.С. вот ещё ссылки по теме:
https://ru.wikipedia.org/wiki/AY-3-8910
http://bulba.untergrund.net/progr.htm
http://forum.tslabs.info/viewtopic.php?f=6&t=687
А у ПРО и 128 разъем разный.,?
я так понимаю, что можно взять один ау из этой схемы и переделать на разъем О.128, так получиться?
Системные разъёмы у 128 и ПРО разные! Адресация портов тоже разная.
К сожалению, по О-128 я ещё не вникал (предстоит). На ПРО собрал готовую плату, так что можно сказать, что тоже не вникал, ибо запустилась сразу.
Наверное где-то здесь есть темы по AY. Должны быть :) Собирал же кто-то точно :)
Подождем, может найдется кто делал.
Подождем, может найдется кто делал.
Скорее всего делали в 90-хх, сейчас уже вряд ли кто-то из делавших вспомнит.
Даст бог, может в этом году с Сергеем поднимем проект DS-card™, там будет и эта музыка в т.ч.. Соответственно, будет отлаженный вариант с готовой платой и ПО.
Еще есть схема подключения от Домарева Максима, как раз на О.128 совместимо с ZX. вложить картинку не могу.
что за DS-card?
Error404
23.01.2017, 17:22
Еще есть схема подключения от Домарева Максима, как раз на О.128 совместимо с ZX. вложить картинку не могу.
Я делал эту в свое время - от Домарева Максима.
Собственно, можно любую от Спека на порты BFFD/FFFD.
- - - Добавлено - - -
Любая схема от Спектрума (с совместимыми со Спеком портами) будет работать только с процессором Z80. Но на ней будут с музыкой AY адаптированные игры (примерно половина игр от ZX для Ориона, т.е. до полусотни).
Плееры есть для обоих вариантов схем.
Там дополнительно пару микросхем стоит, не помните какие? не указано.
что за DS-card?
Вот тут (http://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=881379&viewfull=1#post881379) вкратце.
Ну тогда ждемс!
будем пока без ay.
Подскажите, пожалуйста, каковы параметры развертки Ориона? Хотя бы какова полная длительность кадра?
Понимаю, что примерно 20 мс, а если посчитать в тактах?
В телевизионном стандарте в кадровом периоде должно быть 320 строчных периодов. Однако в некоторых компьютерах, в кадре, ради простоты, делают 312 строчных периодов. Сброс счётчика строк происходит при весах 256+32+16+8. Так сделано в СПЕЦИАЛИСТЕ и ОРИОНЕ. В СПЕЦИАЛИСТЕ строчный период равен 2*64 периода /RAS /CAS. Период /RAS /CAS равен периоду машинного такта CPU в 500 НСЕК (1 : 2 МГЦ). Т.е строчный период СПЕЦИАЛИСТА точно равен стандарту 128 * 500 НСЕК = 64 МКСЕК. В ОРИОНЕ строчный период равен 2 * (64 + 16) = 160 периодов /RAS /CAS. Период /RAS /CAS в ОРИОНЕ также равен периоду машинного такта CPU в 400 НСЕК (1 : 2.5 МГЦ). Т.е строчный период ОРИОНА также точно равен стандарту: 160 * 400 НСЕК = 64 МКСЕК.
Поэтому длительность кадра в СПЕЦИАЛИСТЕ и ОРИОНЕ равны 64 МКСЕК * 312 = 19968 МКСЕК, что немного менее 20 МСЕК. Число машинных тактов в кадре ОРИОНА: 160*312=49920.
ГОСТ 7845-72, Почему 320? вроде как раз их и должно быть 312
при чересстрочной развертке 625 строк в 32мкс?
при чересстрочной развертке 625 строк в 32мкс?
64мкс. Это же чересстрочная развёртка, полная картинка в 2-х кадрах. Но количество строк правильное, 625 = 313 + 312
число строк и должно быть 312
Да, перепутал. Так как число 312 ни в каких видео форматах не встречается и в книгах не описано, а число 320, наоборот, очень популярное.
В отечественных телевизорах при социализме действительно было 625 строк. Но теперь стандарт уже не SECAM, а PAL и NTSC, в которых число строк совсем иное. Даже центральные ТВ каналы перешли на вещание в стандарте PAL, хотя SECAM, качественнее. Есть компьютеры у которых в кадре 320 строк (сброс счётчиков при весах 256+64).
при чересстрочной развертке 625 строк в 32мкс?
625 строк в двух полукадрах за 2*20 МСЕК. Частота полукадров 50 ГЦ, а частота кадров 25 ГЦ.
Запутаться можно, особенно при переходах с аналогового видео на всякие стандарты цифрового ТВ.
Википедия:
Часть строк генерировалась горизонтальной отклоняющей катушкой вхолостую во время обратного хода кадровой развертки, и вынужденно включалась в стандарт, который фактически отражает полное количество периодов строчной развёртки, приходящееся на один период кадровой. В европейском стандарте разложения, принятом в России по ГОСТ 7845-79[3], из 625 передаваемых строк активных — только 576, поэтому в компьютерной графике этому стандарту разложения соответствует разрешение 576i (480i в американском стандарте).
т.е. не 312 видимых, а 288. Наверное по этому часть экрана в Орионе обрезана.
HardWareMan
02.02.2017, 16:28
Это же и так понятно. Причем, если компик генерирует одинаковое количество строк в кадре (например 312), то видимые строки каждого поля в аналоговом телевизоре не смещаются на полстроки по вертикали относительно друг друга и выводятся друг на друга. И таким образом получается 288p@50Hz. А вот если у каждого поля свое количество строк (согласно нашему стандарту 312+313), то одно поле смещается относительно другого на полстроки и уже получается 576i@25Hz. Современные же телевизоры, как и ТВ тюнеры, пытаются получить 576i из 288p и получаются рваные края движущихся объектов изображения и существенная потеря FPS.
Как собрать ROM диск -это понятно COPY IMAGE1.BIN /B + IMAGE2.BIN /B + IMAGE3.BIN /B + IMAGE4.BIN /B ROMDISK.BIN /B. А если файлы программ, например в bru или ord их нужно в bin перевести -как это сделать? Вопрос для специалистов наверное простой - научите пожалуйста.
по форуму много информации, но нет нигде в одном собранном виде, как сделать РОМ диск.
tol123, специально писал аппликуху для писи - http://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=883707&viewfull=1#post883707
Также если есть виртуальный диск, то можно собирать ROM-диск непосредственно на Орионе, для этого я делал утилиту CRTDISK$, которая собирает образы (в любом из форматов ORDOS, DSDOS), в т.ч. неограниченного объёма (т.е. более 64 Кб).
П.С. ORD - это, как выяснилось, тоже самое что и BRU, т.е. можно тупо переименовать расширение ;)
П.П.С. есть и консольная версия писи-конвертера для запихивания в ВАТ-файлы, в OriNET выложена.
Electricman
16.04.2017, 14:46
Потихоньку ковыряюсь с Орионом. Ввёл доработки, для возможного апгрейда с Z80, заодно потестировал. :)
Таки проблема отсутствия ВГшки до сих пор есть, как и невозможность проверить дискетоводы 5.25 до сих пор не решена. :(
Погонял SMIT2$, таки да, на ВМ80 15 минут крутит.
https://www.youtube.com/watch?v=TRygvagUKJg
Интересно, а есть у кого Монитор-1 (ОДИН) под клаву МС7007 ?
Error404
17.04.2017, 15:13
Интересно, а есть у кого Монитор-1 (ОДИН) под клаву МС7007 ?
Не было такого. Были только М2 (авторский, для авторской схемы включения) и М3 (ленинградский, для схемы МС7007 от РК-86). Про М4 не в курсе (уже не застал :) )
я уже не застал М4
А я вообще не знаю, что понимается под М4.
До 1999 я понимал под М4, монитор В.Воронина (Алёна), который сделал его из М3.1 для КР580 для клавиатуры MS-7007 (по схеме из ж.РАДИО 12.1991). И он называл его М4. По сути, т.к он был первым (1996 или даже раньше), то это и есть Монитор-4. Но в 1999 В.Пушков прислал мне другой Монитор, который содержал внутри дисководные подпрограммы. И он тоже назывался Монитор-4. Я с этим монитором не разбирался, т.к кажется, он был под MS-7007, по какой схеме тоже не знаю. У меня больше нет этого дампа, т.к в 2000 у меня был крах винта и всё неактуальное погибло.
Что понимают современные орионщики под М4, где его можно достать, и чем он замечателен?
МОНИТОР-4
===========
НОВАЯ ВЕРСИЯ М2. (СКОРОСТНЫЕ ДРАЙВЕРА И НОВЫЕ ФУНКЦИИ)
Г.НОВОЧЕРКАССК ВОРОНИН В.А.
НОВЫЙ РЕЗИДЕНТНЫЙ МОНИТОР М4 РАБОТАЕТ С КЛАВИАТУРОЙ МС7007.
НОВАЯ ВЕРСИЯ M4.01
1 ПОСЛЕ ТЩАТЕЛЬНОГО АНАЛИЗА ДРАЙВЕРА ВЫВОДА СИМВОЛА, ЕГО
УДАЛОСЬ ЗНАЧИТЕЛЬНО СОКРАТИТЬ В РАЗМЕРАХ, И ПРИ ЭТОМ
НЕМНОГО ПОДНЯТЬ СКОРОСТЬ ВЫВОДА.
2 ПОЯВИЛОСЬ СВОБОДНОЕ МЕСТО, АЖ 32 БАЙТА.
ПРИ ОТСУТСТВИИ ROM-ДИСКА, М4 ОЧИЩАЕТ ЭКРАН, ВЫВОДИТ СООБЩЕНИЕ
ОБ ОТСУТСТВИИ ROM-ДИСКА И ЖДЁТ КОГДА ЕГО ПОДКЛЮЧАТ. НАЖАТИЕ НА
ЛЮБУЮ КЛАВИШУ ПРИВОДИТ К ПЕРЕЗАПУСКУ М4 ПО ТЁПЛОМУ СТАРТУ.
М4 НАПИСАН ТОЛЬКО РАДИ ПОВЫШЕНИЯ СКОРОСТНЫХ ХАРАКТЕРИСТИК
ДРАЙВЕРОВ. ВОТ, ЧТО МНЕ УДАЛОСЬ СДЕЛАТЬ:
1.НОВЫЙ ДРАЙВЕР ОПРОСА КЛАВИАТУРЫ ВЗЯТ ГОТОВЫЙ.
(РАДИО 1991 N_12 СТР.40 Б.ФРОЛКИН, А.МАКАРОВ)
ДОЛЖЕН ПРЕДУПРЕДИТЬ, СКОРОСТЬ ОПРОСА КЛАВИАТУРЫ ВЫРОСЛА
ТАК СИЛЬНО, ЧТО ПЕРВОЕ ВРЕМЯ ВЫ ЧАСТО БУДЕТЕ УЛЕТАТЬ В ДОС.
ВОЗМОЖНО, ЧТО ВАШИ НЕКОТОРЫЕ ПРОГРАММЫ ЗАРАБОТАЮТ ШУСТРЕЕ.
(F803H)
2.ПРОЦЕНТОВ НА ДЕСЯТЬ УДАЛОСЬ ПОДНЯТЬ СКОРОСТЬ ВЫВОДА СИМВОЛА.
В ДРАЙВЕРАХ М1 M2 И M3 СКОРОСТЬ ВЫВОДА СИМВОЛА ЗАВИСЕЛА ОТ
ЗНАЧЕНИЯ КООРДИНАТЫ КУРСОРА ПО ГОРИЗОНТАЛИ, ЧЕМ ПРАВЕЕ, ТЕМ
ДОЛЬШЕ (F809H,F80FH)
3.УСКОРЕН САМ ПРОЦЕС ВЫВОДА СИМВОЛЬНОЙ СТОРОКИ, ПЛЮС БОЛЕЕ
БЫСТРЫЙ ВЫВОД САМОГО СИМВОЛА (F818H)
4.ЗНАЧИТЕЛЬНО УСКОРЕН ПРОЦЕС ОЧИСТКИ ЭКРАНА, А ТАКЖЕ РАБОТА
ФУНКЦИИ 1BH,4AH (ОЧИСТКА ЭКРАНА НИЖЕ КУРСОРА)
5.ИСПРАВЛЕНА ОШИБКА В РАБОТЕ ФУНКЦИИ 1BH,4BH (СТИРАНИЕ СТРОКИ
ПРАВЕЕ КУРСОРА), И БОЛЕЕ ЧЕМ НА ПОРЯДОК УСКОРЕНА ЕЁ РАБОТА.
ОШИБКА ЗАКЛЮЧАЛАСЬ В ТОМ, ЧТО ПРИ ВЫПОЛНЕНИИ ФУНКЦИИ В САМОЙ
НИЖНЕЙ СТРОКЕ ЭКРАНА ПРОИСХОДИЛ СКРОЛИНГ, А ЭТО СВОДИЛО
НА НЕТ ВСЕ ПРЕИМУЩЕСТВА ФУНКЦИИ.
В М4 ВСТРОЕНО ЧЕТЫРЕ НОВЫЕ ФУНКЦИИ:
1 - 1BH,50H ЗАПОЛНЕНИЕ ОГРАНИЧЕННОГО УЧАСТКА ПАМЯТИ,
КОНСТАНТОЙ, НА ЛЮБОЙ СТРАНИЦЕ.
ДЛЯ ЭТОГО НУЖНО ПЕРЕДАТЬ:
1BH,50H,N,??,??,??,??,??
1BH - ВЫЗОВ ФУНКЦИИ
50H - ИМЯ ФУНКЦИИ
0-3 - N СТРАНИЦЫ ОЗУ
?? - РАЗМЕР ПО ГОРИЗОНТАЛИ В БАЙТАХ
?? - РАЗМЕР ПО ВЕРТИКАЛИ В ТОЧКАХ
?? - СТАРШИЙ БАЙТ АДРЕСА (ЛЕВЫЙ ВЕРХНИЙ УГОЛ)
?? - МЛАДШИЙ БАЙТ АДРЕСА
?? - КОНСТАНТА
НАИБОЛЕЕ УДОБНО ИСПОЛЬЗОВАТЬ В П/П F818H. ФУНКЦИЯ ИСПОЛЬЗУЕТ
РЕГИСТРЫ H: L: A: РЕГИСТРЫ B: C: D: E: СОХРАНЯЮТСЯ.
ИСПОЛЬЗОВАНИЕ П/П 0F809H ИЛИ П/П 0F80FH НЕ ВЫГОДНО!!!.
ОСНОВНОЕ ПРИМЕНЕНИЕ ФУНКЦИИ, ОЧИСТКА "ОКНА" НА ЭКРАНЕ И ЕГО
БОЕВАЯ РАСКРАСКА. В ПРИНЦИПЕ МОЖНО "ЗАЛИВАТЬ" ЛЮБЫЕ УЧАСТКИ ОЗУ,
НА ЛЮБОЙ СТРАНИЦЕ. ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ ЦВЕТ, ТО ПРЕДВАРИТЕЛЬНО
НЕОБХОДИМО УБЕДИТСЯ В ТОМ, ЧТО НА ДИСКЕ B: ЕСТЬ МЕСТО. ДЛЯ ЭТОГО
ИСПОЛЬЗУЙТЕ ФУНКЦИЮ ORDOS MXDSK. В СЛУЧАЕ НЕ КОРРЕКТНОЙ ДАЧИ
ДАННЫХ ПРОЦЕСОР УЙДЕТ ПО АНГЛИЦКИ, НЕ ПРОЩАЯСЬ.
2 - 1BH,51H РИСОВАНИЕ ТРЕХ ВИДОВ РАМОК:
1 - ОДИНАРНАЯ
2 - ДВОЙНАЯ
3 - "ОБ'ЕМНАЯ"
ДЛЯ ЭТОГО НУЖНО ПЕРЕДАТЬ:
1BH,51H,N,??,??,??,??,N
1BH - ВЫЗОВ ФУНКЦИИ
51H - ИМЯ ФУНКЦИИ
N - 1,2,3 ТИП РАМКИ
?? - РАЗМЕР ПО ГОРИЗОНТАЛИ В БАЙТАХ
?? - РАЗМЕР ПО ВЕРТИКАЛИ В ТОЧКАХ
?? - СТАРШИЙ БАЙТ АДРЕСА (ЛЕВЫЙ ВЕРХНИЙ УГОЛ)
?? - МЛАДШИЙ БАЙТ АДРЕСА
N - СМЕШЕНИЕ ВНУТРЕННЕЙ РАМКИ НА N ТОЧЕК (ТОЛЬКО ДЛЯ ТИПА N2,
ДЛЯ ТИПОВ 1 И 3 ЧИСЛО НЕ ИГРАЕТ РОЛИ, НО ДОЛЖНО БЫТЬ).
НАИБОЛЕЕ УДОБНО ИСПОЛЬЗОВАТЬ П/П 0F818H. ФУНКЦИЯ ИСПОЛЬЗУЕТ
РЕГИСТРЫ H: L: A: РЕГИСТРЫ B: C: D: E: СОХРАНЯЮТСЯ.
ИСПОЛЬЗОВАНИЕ П/П 0F809H ИЛИ П/П 0F80FH НЕ ВЫГОДНО!!!.
3 - 1BH,52H РИСОВАНИЕ ГОРИЗОНТАЛЬНОЙ ЛИНИИ:
ДЛЯ ЭТОГО НУЖНО ПЕРЕДАТЬ:
1BH,52H,N,N,??,??,??,N
1BH - ВЫЗОВ ФУНКЦИИ
52H - ИМЯ ФУНКЦИИ
N - ПЕРВЫЙ БАЙТ
N - ПОСЛЕДНИЙ БАЙТ
?? - РАЗМЕР В БАЙТАХ
?? - СТАРШИЙ БАЙТ АДРЕСА (ЛЕВЫЙ КРАЙ)
?? - МЛАДШИЙ БАЙТ АДРЕСА
N - КОНСТАНТА
НАИБОЛЕЕ УДОБНО ИСПОЛЬЗОВАТЬ В П/П 0F818H. ФУНКЦИЯ ИСПОЛЬЗУЕТ
РЕГИСТРЫ H: L: A: РЕГИСТРЫ B: C: D: E: СОХРАНЯЮТСЯ.
ПЕРВЫЕ ДВА ПАРАМЕТРА ВВЕДЕНЫ ДЛЯ РАСШИРЕНИЯ ВОЗМОЖНОСТЕЙ
ФУНКЦИИ. ФУНКЦИЯ УЧИТЫВАЕТ СОДЕРЖИМОЕ БАЙТА (ORA M) ПО ТЕКУЩЕМУ
АДРЕСУ, ПОЭТОМУ СТИРАТЬ ЭТА ФУНКЦИЯ НЕ МОЖЕТ.
4 - 1BH,53H РИСОВАНИЕ ВЕРТИКАЛЬНОЙ ЛИНИИ:
ДЛЯ ЭТОГО НУЖНО ПЕРЕДАТЬ:
1BH,52H,N,N,??,??,??,N
1BH - ВЫЗОВ ФУНКЦИИ
52H - ИМЯ ФУНКЦИИ
N - ПЕРВЫЙ БАЙТ
N - ПОСЛЕДНИЙ БАЙТ
?? - РАЗМЕР В ТОЧКАХ
?? - СТАРШИЙ БАЙТ АДРЕСА (ВЕРХНИЙ КРАЙ)
?? - МЛАДШИЙ БАЙТ АДРЕСА
N - КОНСТАНТА
НАИБОЛЕЕ УДОБНО ИСПОЛЬЗОВАТЬ П/П 0F818H. ФУНКЦИЯ ИСПОЛЬЗУЕТ
РЕГИСТРЫ H: L: A: РЕГИСТРЫ B: C: D: E: СОХРАНЯЮТСЯ.
ПЕРВЫЕ ДВА ПАРАМЕТРА ВВЕДЕНЫ ДЛЯ РАСШИРЕНИЯ ВОЗМОЖНОСТЕЙ
ФУНКЦИИ. ФУНКЦИЯ УЧИТЫВАЕТ СОДЕРЖИМОЕ БАЙТА (ORA M) ПО ТЕКУЩЕМУ
АДРЕСУ, ПОЭТОМУ СТИРАТЬ ЭТА ФУНКЦИЯ НЕ МОЖЕТ.
ИСПОЛЬЗОВАНИЕ РАМКИ ТИП 3 БЕЗ ЦВЕТА НЕ ДАЕТ ХОРОШИХ РЕЗУЛЬТАТОВ
ВОЗМОЖНЫЕ ВАРИАНТЫ РАМОК НАХОДЯТСЯ В ФАЙЛЕ MON4.PC ФАЙЛ
УПАКОВАН В ФОРМАТЕ PENX$. ЭТО СДЕЛАНО ДЛЯ ТОГО, ЧТОБЫ ВЫ СМОГЛИ
ПОСМОТРЕТЬ СТАРЫМ МОНИТОРОМ. ТО ЧТО ВЫ УВИДЕЛИ, ПРОСТО МАЛЕНЬКАЯ
ДЕМОНСТРАЦИЯ ВОЗМОЖНОСТЕЙ ДВУХ НОВЫХ ФУНКЦИЙ. ИНВЕРСИЯ ЭКРАНА
ДАНА СПЕЦИАЛЬНО ДЛЯ НАГЛЯДНОСТИ. ФУНКЦИИ 1BH,52H И 1BH,53H
В ПОСТРОЕНИИ РИСУНКОВ НЕ УЧАСТВОВАЛИ.
ИЗ М4 ИЗЪЯТЫ СЛЕДУЮЩИЕ ФУНКЦИИ:
1BH+41H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВВЕРХ (19H)
1BH+42H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВНИЗ (1AH)
1BH+43H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВПРАВО (18H)
1BH+44H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВЛЕВО (08H)
1BH+45H - СТИРАНИЕ ЭКРАНА (1FH)
1BH+48H - УСТАНОВИТЬ КУРСОР В ЛЕВЫЙ ВЕРХНИЙ УГОЛ (0CH)
ДЛЯ ВЫПОЛНЕНИЯ ЭТИХ ФУНКЦИЙ ТРЕБУЕТСЯ ДВА БАЙТА, ХОТЯ САМ
ДРАЙВЕР ПОНИМАЕТ ОДНОБАЙТОВЫЕ УПРАВЛЯЮЩИЕ КОДЫ. ИЗ ЭТОГО
СЛЕДУЕТ ЗАКОНОМЕРНЫЙ ВОПРОС, А ЗАЧЕМ ЭТИ ФУНКЦИИ ?.
END
Исходник МОНИТОРА-1 у меня есть, драйвер MS-7007 тоже (тот, что по совместимой схеме). Думаю, не составит особого труда выкинуть оттуда драйвер РК-клавиатуры и вставить туда драйвер MS-7007. Но этот драйвер имеет намного больший размер, чем драйвер РК-клавиатуры. Поэтому полноценный М1 с клавиатурой MS7007 возможен только для Z80 (т.к только Z80 позволит выиграть в коде М1 ~120 байтов). Для КР580 возможен только оверлейный МОНИТОР-1. Т.е М1 КР580 работающий только с ROM-диском.
Это может быть устроено так. В ROM-диске с адреса 800 (может быть и в любом месте, - сделать поиск ORDOS-файла несложно, но может не хватить места в ПЗУ) будет прошиваться файл с именем, например, FONT. Подпрограмма F82D будет распаковывать укороченный фонт (только цифры и латинские буквы). Но при сбросе и WARM BOOT ROM-BIOS будет проверять, что по адресу 800 в ROM-диске лежит файл с именем FONT, и если да, то его первые 300H байтов будут загружаться на адрес F000. Если в ROM-диске фонта нет, то русских букв не будет.
Если очень надо, то могу странслировать такой М1 MS-7007, как для Z80, так и для КР580.
Имея листинги и опыт это несложно.
Но всё-таки, если надо работать без ORDOS и ROM-диска, то лучше использовать M3 на 4К (второе ПЗУ напаивается вторым этажом). Потому что считается, что с М1 не работают какие-то программы (но я не проверял).
Error404
17.04.2017, 16:17
Чотаржу вот с этого:
ИЗ М4 ИЗЪЯТЫ СЛЕДУЮЩИЕ ФУНКЦИИ:
1BH+41H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВВЕРХ (19H)
1BH+42H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВНИЗ (1AH)
1BH+43H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВПРАВО (18H)
1BH+44H - СМЕСТИТЬ КУРСОР НА ОДНУ ПОЗИЦИЮ ВЛЕВО (08H)
1BH+45H - СТИРАНИЕ ЭКРАНА (1FH)
1BH+48H - УСТАНОВИТЬ КУРСОР В ЛЕВЫЙ ВЕРХНИЙ УГОЛ (0CH)
ДЛЯ ВЫПОЛНЕНИЯ ЭТИХ ФУНКЦИЙ ТРЕБУЕТСЯ ДВА БАЙТА, ХОТЯ САМ
ДРАЙВЕР ПОНИМАЕТ ОДНОБАЙТОВЫЕ УПРАВЛЯЮЩИЕ КОДЫ. ИЗ ЭТОГО
СЛЕДУЕТ ЗАКОНОМЕРНЫЙ ВОПРОС, А ЗАЧЕМ ЭТИ ФУНКЦИИ ?.
Афтар убил совместимость с VT-52 чтобы вместо этого вкрячить рисование рамок прям по видеопамяти. :)
- - - Добавлено - - -
Еще вот это интересная информация:
В ДРАЙВЕРАХ М1 M2 И M3 СКОРОСТЬ ВЫВОДА СИМВОЛА ЗАВИСЕЛА ОТ
ЗНАЧЕНИЯ КООРДИНАТЫ КУРСОРА ПО ГОРИЗОНТАЛИ, ЧЕМ ПРАВЕЕ, ТЕМ
ДОЛЬШЕ (F809H,F80FH)
Видимо, применялось сложение в цикле чтобы не заморачиваться умножением? Если честно, эффекта замедления у правого края я не замечал.
Автор убил совместимость с VT-52, чтобы вместо этого вставить рисование рамок прям по видеопамяти
А я посчитал, что он правильно сделал. Это автор ОРИОНА неправильно сделал. По-моему, абсолютно не было смысла встраивать в ROM-BIOS ОРИОНА эти коды. Это лишь подмножество упр.кодов VT52, а далеко не все. Поэтому их наличие абсолютно ничего не улучшает и потому просто бессмысленно. Никто не мог работать в WordMaster в CP/M "Ленинград-90" (оригинал, а не поздний римейк из 1995, в который я встроил обработку нужных кодов), в которой вообще не было драйвера VT52. Т.е эти несколько курсорных кодов никак не спасали.
А в драйверы всё-равно встраивают своё обслуживание Искейп-кодов, поэтому абсолютно никакой пользы от этих кодов нет. Хотя М3 вынужденно "волочит" эти коды, чтобы не было упрёков в несовместимости. Но мне интересно, хоть кому-то и когда-то эти коды хоть в чём-то помогли?
Гораздо полезнее было бы, если бы автор ОРИОНА, делая МОНИТОР-2 поменял бы коды генерируемые курсорными клавишами на коды принятые в CP/M. Особенно убивал код 19H, т.к это 'Control-Y', что во всех редакторах удаление строки. Подмену кодов курсорных клавиш было сделать легко - 4 ячейки в ОЗУ, хранящие коды от курсорных клавиш.
Другим выходом из проблемы несоответсвия кодов курсорных клавиш, могла бы стать ячейка Control, куда п/п-мма F81B клала бы флаг, что код получен с помощью клавиши Control (это обошлось бы, в мониторе в 4 байта, но избавило бы от кучи проблем, в частности, от проблем с разными клавиатурами).
Error404
17.04.2017, 16:40
Может и так.
Дело в другом - из контекста следует что автор вообще не знает про VT52. :)
Как тот хирург - "тут что-то неизвестное мне, отрезаю".
Да, он сделал это работая в ORDOS, хотя возможно и имея уже CP/M. Но от CP/M он, как и все фанаты ORDOS использовал лишь файловую систему, т.е имел её только для хранения файлов. Т.е имея CP/M, он всё-равно работал в ORDOS в силу привычки, а также из-за недостатка информации и непонимания преимуществ хороших инструментов.
А когда получил CP/M, то написал ORDOS-A и ORDOS-E. Смысл которых заключался в том, что в ORDOS вводился диск E. В который файлы писались в формате эл.диска 120К от ACP/M 1.53 (это самая ранняя дурацкая версия, где ещё нет КС секторов, отчего при сбойном компьютере плодились дохлые файлы). А т.к КС секторов нет, то сектора пишутся впритык, поэтому для записи CP/M и не нужна - достаточно высчитать с какого адреса идёт первый свободный блок CP/M и кидать туда код файла, остаётся лишь сформировать каталоговую запись. Такая концепция вполне заменяла LORD и PMBB и позволяла фанатам ORDOS дальше "жить и бороться"
Вот ORDOS-A и документация на неё. А вообще В.Воронин молодец. Самоучка, но достиг больших успехов в программировании. Он типичная жертва ORDOS. Каких бы успехов он достиг, если бы пользовался макро ассемблером, а не МИКРОНОМ?
У меня есть только два нортона для ORDOS В.Воронина, позволяющие обмен CP/M--ORDOS, два его текстовых редактора и по мелочи. Если кого интересует, могу скинуть.
Если очень надо, то могу странслировать такой М1 MS-7007, как для Z80, так и для КР580.
Да просто собрал журнальный вариант Ориона, под клаву МС7007. А вот в сборке монитора стоит М1РК. Ну и соответственно курсор не управляемый.Так-то у меня стоит М2МС. Но хотелось бы и 1 под 7007 . К580. Чтоб всё до кучи.
Так как я временно завис с эмуляторами СПЕЦИАЛИСТА и МИНСК-64 (не могу найти там одну серьёзную ошибку), то решил отвлечься чем-то совсем простым. Потому на досуге странслировал МОНИТОР-1 для Z80 и клавиатуры MS-7007. Если не будет нареканий, то странслирую версию и для КР580 (но она будет оверлейной, в ней русские буквы будут только, если есть ROM-диск).
M1ZRK.DAT - это монитор-1 для РК86-клавиатур с процессором Z80.
После замены некоторых КР580-команд на команды Z80 и оптимизации кода, удалось выиграть ~120 ячеек. Эти ячейки были потрачены на:
- исправление неэффективной и неудобной п/п-ммы F803 (и соов-но F81B)
- замену неудобной процедуры ввода команд на CCP из МОНИТОРА-3
- на полную замену директивы M на упрощенную директиву M МОНИТОРА-3
- на полную замену директивы D на упрощенную директиву D МОНИТОРА-3
Теперь Вы имеете возможность сравнить работу драйверов клавиатур от M3 и от M1, M2.
Директива 'D' имеет 2 параметра начальный и конечный адрес. В отличие от МОНИТОРА-3 нельзя задать 3-тий параметр номер банки (работает лишь для банки 0). Во всех командах нельзя вводить HEX-числа со старшим байтом FF (т.к это используется п/п-мой конверсии текстовой HEX-строки в числовое значение, как флаг ошибки). Это не недостаток (если например, в 'D' надо ввести конечный адрес FFFF, то введите вместо этого число больше 0, но меньше начального адреса, например 1).
Директива 'M' также не принимает второй параметр (N банки), отчего может использоваться только для модификации банки 0. Напоминаю свойства директивы 'M' из монитора-3. Можно переходить к предыдущей ячейке и последующей, нажимая курсорные клавиши вверх и вниз. Можно вводить не только HEX-числа, но и ASCII. Для этого сначала надо нажать префиксную клавишу <АР2>, а затем клавишу соответсвующую нужному символу. Конец редактирования точка.
Существенно была оптимизирована подпрограмма ввода с МГ (RDBYTE), благодаря чему на столь маленькой подпрограмме было выиграно ~30 байтов ! Однако эта МГ-процедура не проверялась ни в реале, ни в эмуляторе (т.к мой эмулятор работает в MSDOS и потому не умеет читать WAV-файлы в реальном времени).
На реале, я тоже не могу проверить, т.к на моих платах нет адаптеров магнитофона (операционники были выкушены и сданы на "злато" ещё в начале 90-тых). Потому убедительная просьба к владельцам ОРИОНА на Z80 полноценно проверить этот монитор в реале. А также сравнить удобство ввода с клавиатуры с оригинальным М1.
Ещё желательно было бы переделать процедуры вывода символов и процедуры FLASH курсора. А также ввести более грамотный автоповтор. Но на это уже нет места в ПЗУ (не хватает ~80 ячеек).
M1ZRK-00.DAT. Это промежуточная версия, аналог M1, в котором заменены только директивы D и M. Изменена также процедура ввода строки, т.к в M1 она была уж совсем дурная. А процедуры ввода с клавиатуры и работы с МГ-лентой оставлены полностью оригинальные.
Теперь, что успел сделать для MS7007. Как и писал в предыдущем посте, для КР580 возможна только оверлейная версия с подгрузкой фонта из ROM-диска. Для начала я сделал версию для Z80 (который даёт выиграть место для более крупного драйвера MS-7007). Если вариант для Z80 не вызовет нареканий, то несложно вновь переделать исходник на коды КР580, и странслировать (удалив из ПЗУ половину компрессованого фонта). Но тут понадобится существенная оптимизация, чтобы сохранить резидентными хотя бы все латинские буквы и цифры.
M1ZMS - практически неизменённый код М1. Лишь выиграно менее ~100 ячеек которые потрачены на замену драйвера РК-клавиатуры на драйвер MS-7007 клавиатуры по схеме из ж.РАДИО 12.1991. Здесь всё должно работать также как в оригинальном М1. К сожалению драйвер MS7007 работает примерно вдвое быстрее, чем драйвер РК-клавиатуры. А т.к в М1 и М2 применена довольно глупая процедура ввода (основанная не на логике, а на задержках), то возможны проблемы с автоповтором. Если не устроит придётся что-то менять...
К сожалению, не имею возможности проверить M1-Z/MS ни в эмуляторе (нет эмуляторов MS-7007), ни на реале, т.к нет MS-7007 клавиатуры (они довольно быстро изнашиваются, плохая пластмасса, надписи на клавишах исчезают, т.к пластмасса истирается, напыление плёнок стирается, пленка ломается). То есть это вообще никак не проверенный монитор. Но уверен, что он будет работать.
Кроме этого вкладываю версию МОНИТОРА-2 (КР580) для MS-7007 по схеме ж.РАДИО 12.1991. И две версии М3 MS-7007 - M3-Z80 для MS-7007 из 1992 (но не оригинал, а перетрансляция, чтобы забить вектора на F3F0, чтобы не было конфликтов с программами <censored>, что нагло лезут в ОЗУ предназначенное только для ROM-BIOS) и М3 MS-7007 для КР580.
- - - Добавлено - - -
Вложение этого поста удалено, как устаревшее и в дополненном виде вставлено в какое-то моё следующее сообщение.
Error404
22.04.2017, 19:06
К сожалению, не имею возможности проверить M1-Z/MS ни в эмуляторе (нет эмуляторов MS-7007), ни на реале, т.к нет MS-7007 клавиатуры (они довольно быстро изнашиваются, плохая пластмасса, надписи на клавишах исчезают, т.к пластмасса истирается, напыление плёнок стирается, пленка ломается). То есть это вообще никак не проверенный монитор. Но уверен, что он будет работать.
Посмотрел M1ZMS в эмуляторе с клавиатурой МС7007 - очень быстро работает ввод, надо бы раза в три медленнее. По функционалу не скажу, т.к. M1 пользуюсь первый раз. :)
Windows программа-драйвер 'Punto-Switcher', позволяющая сделать переключение РУС-ЛАТ одноклавишным, вредит, по-крайней мере, эмуляторам написанным для MSDOS (причём всем). При загруженном 'Punto-Switcher' реакция на клавиши в эмуляторах становится очень заторможенной. Иногда отклик через секунду после нажатия, а если клавишу задержать чуть-чуть дольше, то срабатывает встроенный в 'Punto-Switcher' автоповтор и выскакивает сразу до десятка символов нажатой клавиши. Поэтому пользоваться эмуляторами с этим дурацким 'Punto-Switcher'-ом практически невозможно. Его приходится выгружать, а для набора текстов снова загружать. Это очень неудобно для отладки программ в эмуляторе, т.к при разработке программ, самый выгодный метод - это небольшие изменения текста исходника и потому очень частые перетрансляции для проверок.
Посмотрел M1ZMS в эмуляторе с клавиатурой МС7007 - очень быстро работает ввод, надо бы раза в три медленнее
Сделал новую версию выше-выложенного M1ZMS , в котором доработал ввод с клавиатуры (добавил паузу перед началом процедуры автоповтора). По прикидкам это должно помочь, но точную константу я высчитал лишь теоретически, поэтому мог ошибиться, теперь уже в большую сторону (сообщите если темп автоповтора стал слишком медленным).
error404, проверьте пожалуйста эту версию. Также интересует работа и версий для РК-клавиатур. Хотя проверка в эмуляторе не даёт точного представления о поведении программы (что конечно зависит от точности эмулятора). Разве ни у кого нет Z80 с MS-7007 клавиатурой? Это надо проверить перед тем, как делать версию для КР580.
Также существенно доработал версию M1-Z80 для РК-клавиатур (новая версия М1.03). Относительно выложенной несколько часов назад версии М1.02, в новой версии переделана и подпрограмма вывода на экран и подпрограмма FLASH курсора.
Подпрограмма вывода теперь выводит не 8 линий знакоместа из 10, а 9 линий из 10-ти. Кроме того, теперь, как и во всех моих мониторах курсор сделан большим и его форма изменяется при включении русского регистра. К сожалению, индикации включённого регистра высотой тона подзвучки сделать нельзя, т.к в М1 вообще нет подпрограммы вывода звука F83F. И единственный звук который присутствует в этом мониторе - это клик нажатия клавиши. Чтобы хоть что-то звучало по звуковому вызову F83F, этот вход теперь переадресован на клик нажатия клавиши.
Интересно узнать какие программы для M2 не будут работать с М1.Т.к вектора CONIN/CONOUT одинаковы, то смогут работать драйвера загружаемые на вектора ПЗУ (отчего в CP/M не должно возникнуть проблем).
Из-за остутствия в М1 оконных функций и координат окна, не должны работать только оконные программы, в которых устанавливается размер окна и управляющими кодом выполняется очистка. С закраской цветом проблем не будет, т.к в М2 также нет процедур закраски окна цветом и вывода в цвете (отчего в ORDOS всё приходится делать "по железу", т.к даже цветных оконных драйверов для ORDOS просто нет).
Да и базовые функции ПЗУ в основном не поддерживают ни окна, ни цвет. Например, позиционирование по 1B,59 позиционирует не учитывая установленное окно, как положено, а так как будто окно и не было установлено.
М1 содержит совсем маленький набор команд (не сравнить с М3). Вот перечень команд, что я нашёл внутри него.
'M' - модификация ячеек ОЗУ
'D' - просмотр дампа памяти
'I' - ввод блока с МГ (аналог дир.I в РК86)
'O' - вывод блока на МГ (аналог дир.O в РК86)
'R' - загрузка и старт 2 кб из ROM-диска на B800
'Z' - JMP BFFD
'C' - один параметр: старший нибл цвет фона, младший цвет букв
'G' - запуск программы по указанному адресу.
PS: В полностью базовый M1 (без модификаций кода) за счёт замены на коды КР580 (что освобождает ~100 ячеек и еще ~40 выигрываются оптимизацией кода, без замены логики) можно встроить 2 команды чтения и записи МГ-файла в формате ORDOS, что сделает ненужной программу CH$.
PPS: Да, забыл упомянуть. Также как в оригинале М1, оставлена работа с системными регистрами только командами STA F800 (F900,FA00), хотя использование команд OUT позволило бы выиграть кучу байтов. Это сделано специально. Чтобы М1 работал на Z80 без установленного дешифратора на OUT.
Из-за таких свойств М1, это позволяло использовать его на Z80-ОРИОНАХ, где нет дешифратора на OUT или есть "дохлота" в схеме, отчего OUT не проходят (тогда М2, М3, М4 не работают, а М1 работает). Также это полезно при поэтапной замене КР580 на Z80, где установка дешифратора на OUT, это последний этап доработки.
Да, ещё нюанс. Вывод звука во всех выложенных версиях - триггерный по OUT FF (так же сделано в Apple-II). Собственно звука, как такового, в М1 вообще нет (т.к нет звуковой подпрограммы F83F), речь, естественно о звуке клика клавиатуры. Если кого-то это не устраивает, то могу перетранслировать, чтобы звук выводился по биту МГ-OUT (это плохо, потому что по разному при РК и MS клавишах) или сделать подзвучку за счёт таймера ВИ53 стоящему по адресу F740.
- - - Добавлено - - -
Вложение этого поста удалено как устаревшее, более свежие версии есть в следующих постах http://zx-pk.ru/threads/6066-orion-128-raznoe.html?p=910453&viewfull=1#post910453.
Error404
23.04.2017, 11:41
Windows программа-драйвер 'Punto-Switcher', позволяющая сделать переключение РУС-ЛАТ одноклавишным, вредит, по-крайней мере, эмуляторам написанным для MSDOS (причём всем). При загруженном 'Punto-Switcher' реакция на клавиши в эмуляторах становится очень заторможенной. Иногда отклик через секунду после нажатия, а если клавишу задержать чуть-чуть дольше, то срабатывает встроенный в 'Punto-Switcher' автоповтор и выскакивает сразу до десятка символов нажатой клавиши. Поэтому пользоваться эмуляторами с этим дурацким 'Punto-Switcher'-ом практически невозможно. Его приходится выгружать, а для набора текстов снова загружать. Это очень неудобно для отладки программ в эмуляторе, т.к при разработке программ, самый выгодный метод - это небольшие изменения текста исходника и потому очень частые перетрансляции для проверок.
В PuntoSwitcher можно настроить список приложений, нажатия в которых он не проверяет, меню "Программы-исключения". Очень полезно например для программ типа Putty где без этого PS пытается переводить на русский команды UNIX которые с его точки зрения скорее ближе к русскому набору букв. :) Возможно, добавление исключений и с эмуляторами решит проблему ввода.
Интересно узнать какие программы для M2 не будут работать с М1.Т.к вектора CONIN/CONOUT одинаковы, то смогут работать драйвера загружаемые на вектора ПЗУ (отчего в CP/M не должно возникнуть проблем).
Новая версия M1ZMS теперь вполне комфортно работает с вводом как на 2,5, так и на 3,5 и на 5Мгц.
Пo "R" запускается Ордос, но далее почему-то по "D" Ордос в ДИРе выдало только первый файл каталога (VC$ - нортон), а его запуск (LVC) привел к завису. Возможно как раз из-за оконных функций, VC же там чего-то рисует панелях командера.
Пo "R" запускается Ордос, но далее почему-то по "D" Ордос в ДИРе выдало только первый файл каталога (VC$ - нортон), а его запуск (LVC) привел к завису
Вот чёрт... Я бы мог ожидать такого от версий для РК-клавиатур (где я много поменял), а не для MS-клавиатуры, т.к там из-за нехватки места, я ничего не имел возможности изменить. Непонятно, как драйвер клавиатуры мог столь фатально нарушить работу ORDOS.
То что VC$ вешается - это нормально, т.к он сделан уже для М2. Но NC$ (по-крайней мере, ранних версий из 1990 года) уж точно должен работать, т.к М2 в 1990 вообще не было. Но вот то, что по <ВК> на пустой строке или D<ВК> не выдаётся каталог ORDOS - это совсем не нормально. Надо проверить в ORDOS версий 2.0 и 2.40 (вдруг в этом дело, т.е вдруг версия ORDOS 4.03 тоже привязана к M2).
Если бы речь шла о последней версии M1.03 для РК-клавиатуры, где я поменял ячейки POSX и POSY, чтобы приблизить М1 к М2, то можно было бы грешить на это (хотя и это трудно предположить, не настолько же глупы авторы этих программ, чтобы привязываться к ячейкам, не проверив предварительно версию ПЗУ). Но в версиях для MS я ничего не менял (хотел бы, да не мог, нет свободного места в ПЗУ).
Не могли бы Вы проверить поведение оригинального М1 (для РК-клав) с ORDOS 2.0, 2.40 и 4.03 (более старых и более свежих у меня нет). Даже крутой ORDOS от А.Вакуленко и той уже не имею (утратил в 2000 году). Только такой опыт позволит выяснить в чём дело. Впрочем для проверки ПЗУ для РК-клавиатур годится любой эмулятор (это для MS-7007 эмулятора не найти). Я так понял, в Вашем эмуляторе точно есть клавиатура MS-7007. А разве эмуляции клавиатуры от РК86 нет? Это было бы странно, ведь клавиатура от РК86 - основная.
Спасибо за инфо, что Punto-Switcher можно автоматически отключать при старте эмуляторов.
Погорячился с утверждением, что с М1 можно использовать драйверы для ORDOS и для CP/M. Заглянул в листинг М1 и оказалось, что п/п-мма CONOUT векторизована, а вот п/п-мма CONIN не векторизована. Так что, увы, прощайте мечты об использовании с М1 драйверов. Впрочем грамотные версии CP/M имеют свои вектора (хотя много неграмотных авторов это игнорировали, сдуру по-прежнему вешая драйвера на вектора ПЗУ). Драйвера CP/M на векторах ПЗУ приводят к тому, что из CP/M становится невозможно запустить игру не отгрузив каким-либо способом драйвер.
Кстати, для ORDOS, если не считать мои драйвера для ORDOS, я знаю всего один драйвер KEYALT$ от LUKSIAN KEY из Омска (да и его пришлось переделывать для М3, т.к М3 выводит символ по центру знакоместа (а не скраю, как делают М1 и М2).
Вот способ, как избавляться от драйверов при старте игр в версиях CP/M, где драйверы навешаны на векторы ПЗУ. М3 для Z80 имеют автостартовый "хук", загрузив на который свой JMP можно делать JMP F800 (или нажимать на сброс) - программа автоматически вернётся в нужную точку без разрушения ОЗУ с полностью инициализированными раб.ячейками ПЗУ, что отгружает все драйвера. Но с М1 и М2 такой возможности нет.
Тогда надо использовать следующий трюк. При запуске игры, форматируем квазидиск B и записываем на него файл с именем EXT$. В этом файле-программе короткая программа, что удаляет файл EXT$ с квазидиска а затем передает управление на старт игры. Это делает Нортон предназначенный для запуска ORD, DAT и COM-файлов игр. Нортон загружает игру в банку 0 и создаёт описанный выше файлик EXT$ (который грузится на адрес B700 или F300), а затем делает JMP F800.
Возможен также стартёр, что предварительно копирует стартуемый ORDOS файл в квазидиск 'B' и стартует его средствами ORDOS (это надо для оверлейных ORDOS программ, что "лазят" в свой код в квазидиске в ходе работы, а также многофайловых ORDOS-программ), но такого я не делал, т.к пользуюсь DOS для банки 0 (что не разрушает квазидиск, как DOS для банки 1).
Однако для использования этого трюка надо обязательно иметь в ROM-диске ORDOS. M3 позволяет и ещё один трюк для восстановления векторов ПЗУ. Достаточно поставить на BFFD команду JMP на адрес загрузки игры и подогнать байт паритета области B800...BFFF до E6. Причём этот трюк работает даже с ранними версиями М3, т.к автостартовость по паритету, - это врождённое свойство М3 (в то время как автостартовая ловушка добавлена только в Z80 версиях в 1992).
Кстати, некоторые версии М3 после 1995 года имели специальный вход инициализации ячеек ПЗУ, что отгружает все драйвера одной командной CALL. Это вход за 3 байта до WARM BOOT F86C. Чтобы этим воспользоваться, надо проверить, что по этому адресу стоит байт C3 и сделать CALL туда.
Прилагаю монитор-1, чтобы можно было сравнить как в нём работает ORDOS 4.03 (а также исходник М1). Где-то ещё был исходник ORDOS 4.03 (но его долго искать).
по директиве "D" ORDOS выдаётся только первый файл каталога
Да, это же уже 26 лет известная недоработка ORDOS, основанная на ПЗУ авторов ОРИОНА. Авторам лень было встроить 3 команды КР580 в начало директивы 'D', чтобы убедиться, что клавиатуру уже освободили.
Вы когда последний раз пользовались ORDOS-ом с монитором-3 или 4? Вы что уже забыли, как работает ORDOS с ПЗУ, где клавиши срабатывают по нажатию. ?
Такой вывод каталога в ORDOS наблюдается на всех ПЗУ, в которых подпрограмма ввода с клавиатуры работает по нажатию, а не по отпусканию, как это очень странно сделано в мониторах авторов. Это неумно бороться с быстрым автоповтором, дожидаясь отпускания клавиши. Нет в мире другого компьютера где-бы клавиатура работала по отпусканию.
Мониторы 1 и 2 - это единственные в мире ROM-BIOS с таким опросом клавиатуры. Хотя простейший алгоритм правильной реализации автоповтора и борьбы с дребезгом вдвое короче, чем применённый в М1 и М2 и не зависит от скорости компьютера. Надеюсь, что в ОРИОН-ПРО это сделали уже по-человечески.
ORDOS при выводе каталога работает так. При опросе клавиш по нажатию, вход в директиву DIR происходит ещё при нажатой клавише <ВК>. Директива выдачи каталога, выдав первую строку, делает CALL F81B, чтобы узнать не нажал-ли пользователь на какую-либо клавишу для стопа (как будто этот стоп вообще нужен, ведь в квазидисках не бывает более 25-ти файлов, так что все влезают в экран). Обнаружив, что из F81B вернулся не FF, т.е что-то нажато, директива 'D' останавливает вывод каталога и вываливается в CCP ORDOS.
Достаточно понизить скорость прогона до 1 МГЦ или нажимать на <ВК> очень коротко, и тогда весь каталог выводится. Или нажать <ВК> десяток раз чтобы курсор дошёл до низа экрана. Тогда по выводу <ВК> по окончании печати первой строки начнётся ролик всего экрана, что длится треть секунды, а за это время клавиша будет Вами отпущена. И пройдёт полный вывод каталога.
Проблема возникла оттого, что авторы драйвера клавиатуры MS-7007, увы, были традиционны и использовали срабатывание клавиш по нажатию, а не по отпусканию. Так что моей вины в этом нет. Это вина авторов ORDOS.
Исправить эту ошибку в коде ORDOS - дело минуты, если есть исходник. Авторы сознательно не исправляли это, чтобы отблокировать нормальные ROM-BIOS. А мне не хотелось заниматься исправлением ORDOS, т.к считал что она вскоре вымрет сама по себе.
Насчёт зависа VC$ сложнее. Насчёт реала не знаю (никогда не пробовал), но в эмуляторе при процессоре Z80 и с некоторыми ROM-BIOS он зависает. Но при КР580 работает всегда.
Связано ли это с конфликтом по ячейкам F3F0...F3FF, что отведены только для ROM-BIOS (и программы никогда не должны туда лезть) или ещё с чем-то, - не знаю. NC$ (2VS) работает без проблем с любым ПЗУ, в том числе и с М1. И Нортоны В.Воронина тоже работают с М1.
Кстати, помнится в 1991 году был популярен ORDOS нортон с шрифтом 8*8. Фамилию автора забыл, но часто видел эти файлы в каталогах разных торговцев ПО. Там было, кажется, 2 файла, - сам нортон и драйвер 8*8 с именем W.DR. Хотел бы взглянуть на этот интерфейс. Нортон А.Вакуленко и его другое ПО тоже использовал шрифт 8*8, и только авторское ПО всегда почему-то ориентировалось на некрасивый мизерный шрифт 6*8.
К сожалению, в VC$ и других ORDOS программах не указан номер версии. И несложно было сделать HELP, пусть и оверлейный. По нажатию <F1> ищется файл VC.HLP и запускается как оверлей, выводя окно с HELP-ом, отчего потерь размера TPA нет.
Наверное, вскоре дизассемблирую и исправлю этот глюк ORDOS по выводу каталога и похоже придётся дизассемблировать и изучить VC$. А может быть странслирую свой NC для ORDOS (работающий без ORDOS, т.к сама ORDOS заменяется кодом в 200 байт и нет смысла тратить в 10 раз больше ОЗУ впустую).
В общем, я смог проверить только версию М1-Z80 для РК-клавиатуры и почти всё работало так как и ожидалось. Версию для MS-7007 проверить не смог (впрочем она и не интересная, там всё сплошной оригинал). С VC$ я разберусь позднее. А в ближайщие дни смогу сделать только версию ORDOS 2.41 и 4.04, в которых лишь исправлю директиву вывода каталога. А также сделаю версию M1/MS-КР580 с подгрузкой фонта из ROM-диска.
Внесение имени MSDOS-программы в список исключений Punto-Switcher не помогает (возможно помогает только для программ Windows). Если бы Punto-Switcher понимал командную строку, т.е если бы его можно было выгрузить командной строкой, где после имени указан ключ /OFF, как это можно для всех приличных TSR-программ MSDOS, то проблема бы решилась.
ABRAMKA0
23.04.2017, 18:14
Такой вывод каталога в ORDOS наблюдается на всех ПЗУ, в которых подпрограмма ввода с клавиатуры работают по нажатию, а не по отпусканию. как это <censored> сделано в мониторах авторов. Это <censored> бороться с автоповтором, дожидаясь отпускания клавиши. Нет в мире другого компьютера где-бы клавиатура работала по отпусканию.
Владимир Иванович,ну хватит уже "хаять " ORDOS, что такое она Вам сделала? И авторы Ориона для Вас из года в год <censored>. Они являются отцами-создателями НАШЕГО ЛЮБИМОГО ОРИОНА,а родителей надо уважать и чтить,какими бы они не были.
Теперь насчет клавиатуры.
Нет в мире другого компьютера где-бы клавиатура работала по отпусканию.
Есть такой компьютер,и называется он "IBM" или PC.На нем клавиатура работает и по нажатию и по отпусканию(см.фрагмент описания принципа работы клавиатуры на сайте http://www.cyberguru.ru/operating-systems/windows-security/keyloggers-page9.html)
Наверное, вскоре дизассемблирую и исправлю этот глюк ORDOS по выводу каталога и похоже придётся дизассемблировать и изучить VC$. А может быть странслирую свой NC для ORDOS (работающий без ORDOS, т.к сама ORDOS заменяется кодом в 200 байт и нет смысла тратить в 10 раз больше ОЗУ впустую).
В общем, я смог проверить только версию М1-Z80 для РК-клавиатуры и почти всё работало так как и ожидалось. Версию для MS-7007 проверить не смог (впрочем она и не интересная, там всё сплошной оригинал). С VC$ я разберусь позднее. А в ближайщие дни смогу сделать только версию ORDOS 2.41 и 4.04, в которых лишь исправлю директиву вывода каталога. А также сделаю версию M1/MS-КР580 с подгрузкой фонта из ROM-диска.
Как тогда прикажете понимать Ваши слова,что Вы хотите исправлять "горячо не любимую" Вами ОРДОС?
Да, это же уже 26 лет известная недоработка ORDOS, основанная на ПЗУ авторов ОРИОНА. Авторам лень было встроить 3 команды КР580 в начало директивы 'D', чтобы убедиться, что клавиатуру уже освободили.
... как это <censored> сделано в мониторах авторов. Это <censored> бороться с быстрым автоповтором, дожидаясь отпускания клавиши.
...Проблема возникла оттого, что авторы драйвера клавиатуры MS-7007 <censored>использовали срабатывание клавиш по нажатию, а не по отпусканию. Так что моей вины в этом нет.
Исправить <censored> в коде ORDOS ...
Авторы сознательно не исправляли это <censored>, чтобы отблокировать нормальные ROM-BIOS. А мне не хотелось заниматься исправлением ORDOS, т.к считал что она вскоре вымрет сама по себе.
Убедительное просьба к модератору: прекратить на форуме это поливание грязью авторов ПРК ОРИОН. Честное слово, всю эту "лирику" противно читать. Здесь технический форум, а не вумен.ру !
Честное слово, всю эту "лирику" противно читать. Здесь технический форум, а не Woomen.ru
Противно читать, - не читай.
Если мне противно читать чьи-то посты, я это и не делаю. И главное не стараюсь из-за этого развязать склоку. Я указал на чёткие технические ошибки и обьяснил почему это так, а не иначе. <censored> заключается вовсе не в технических ошибках, а в догматизме, в нежелании исправлять эти ошибки, даже если они всем очевидны и исправление их не стоит особых усилий.
Одну омерзительную склоку со мной Вы уже организовали? Хотите ещё одну?
Error404
23.04.2017, 21:05
Участникам: сбавить обороты.
barsik, уберите прилагательные сами понимаете какие.
Есть такой компьютер, и называется он IBM PC
Клавиатура IBM PC работает по нажатию, и Вы это знаете. Нет в мире других клавиатур работающих по отпусканию.
ну хватит уже "хаять " ORDOS ... авторы Ориона являются отцами-создателями ... их надо уважать и чтить
Да вроде я ORDOS здесь и не "хаял". И авторы, которых надо чтить, здесь ни при чём. Ничего личного.
Я всегда чётко объясняю, почему плохо то-то, и почему лучше другое. Я не люблю ORDOS и боюсь скрыть это мне не удастся. Но в данной теме я даже не критиковал ORDOS и её концепцию, а лишь объяснил, что в коде одной директивы ORDOS есть простейшая логическая ошибка исправить которую очень просто (3 байта забить нулями). Что вскоре и сделаю.
<censored>
Слово "дерьмо" я применил сдуру, хотя на этом форуме все употребляют слово "*****код", которое на порядок хуже. И модераторы вполне довольны такими выражениями. К тому же слово "дерьмо" я применил вовсе не как характеристика качества кода, а как синоним слова ошибка.
Как некоторые знают, я всегда редактирую свои посты и сразу же убираю все неполит-корректные и неграмотные выражения и опечатки. Так было бы и в этот раз. Если бы не влез Denn и не организовал цитатник из моего поста.
что такое Вам ORDOS сделала?
Не хотелось бы вступать в бессмысленную полемику, тем более ответ на этот вопрос известен каждому: ORDOS погубила ОРИОН.
Идея ORDOS и ROM-диска была очень правильной (эл.диск при недоступности НГМД позволял иметь дисковую ДОС и тем самым инструментальное ПО и ользователям даёт больше удобств). Но тут подкачала концепция и главное, - нежелание её улучшать и дорабатывать.
Это касается и ROM-BIOS. Судите сами. Хотя любому ясно, что клавиатура должна работать по нажатию, а альтернативная клавиатура должна подключаться совместимо. Ладно ошиблись, с кем не бывает. Но из непонятной вредности это не исправляли, т.е на интересы пользователей было просто плевать.
ORDOS была придумана под конкретное железо ограничивающеее диск до 60К. Хотя уже изначально в ОРИОН заложили 256К. Т.е была возможность ввести DOS без таких ограничений. И позднее не составляло проблемы сделать версию, где эти ограничения снимались. Я знаю о 4-х таких попытках исправить ORDOS, причём это делали мало компетентные новички. Но ORDOS сделали догмой и поступили наоборот, стали новые возможности аппаратуры подгонять под ORDOS, начисто лишив тем самым ОРИОН шансов на развитие.
- - - Добавлено - - -
barsik, уберите прилагательные сами понимаете какие
Да я это и так собирался сделать (убрать слова идиотизм и дерьмо), да тут влез Denn и всё испортил. Как теперь что-то исправлять, если останется цитатник Denn-а?
- - - Добавлено - - -
Всё, отредактировал свой пост #827. Убрал два слова "идиотизм". "Дерьмо" заменил на слово "ошибка". Слова "глупо" заменил на "неумно" и "странно". Недеюсь, это всех устроит. Столько шума, ненужных хлопот и главное, потраченного времени ради двух слов "идиотизм", которые даже конкретно никого не обижали. И даже относились не к качеству чужого кода, а лишь характеризовали саму неудачную концепцию...
Теперь удалите, кстати бессмысленные и ранее, упрёки в охаивании ORDOS и авторов ОРИОНА, а я удалю свои ответы на них.
HardWareMan
24.04.2017, 09:10
barsik, достаточно пару раз перечитать свой опус перед нажатием кнопки "опубликовать". Вы же не за "первыйнах" гонитесь, зачем торопиться с публикацией, чтобы потом 10 раз редактировать и сетовать на разнос по цитатам? Взвешивать свои слова надо и не торопиться, никто от этого не умрет, если пост задержится на 15 минут.
достаточно пару раз перечитать свой опус перед нажатием кнопки "сохранить/ответить"
Я уже объяснял почему редактирую в форуме. Но не рассыплюсь, пояснив ещё раз.
Меня не устраивают жрущие ресурс и дико тормозные (если памяти не 4 Гб), долго грузящиеся, впустую жрущие трафик и очень раздражающие навязчивой рекламой, современные браузеры. Если ты загрузил один современный браузер, то он захватывает весь ресурс процессора, причём независимо от того качает трафик в данный момент или нет. А т.к у меня в компе стоит TV-карта и она почти всегда работает, то и она жрёт часть ресурса (но далеко не так сильно как современные 150-ти мегабайтовые наглые браузеры). А если запустить сразу два монстрообразных браузера, то дико тормознёт и через 10 минут появится надпись, что якобы браузеру не хватает ресурса (интересно для чего, ведь нормальному браузеру хватает машины в 100 раз тормознее и с меньшим ОЗУ).
Это всё из-за использования дико наворочанных ЯВУ, которые вообще обнаглели. Может быть их эффективность для программиста возросла в 100 раз, но во столько же раз упала эффективность их продукта для пользователей. Старых браузеров я могу запустить десяток и скорость прогона программ в эмуляторе не изменится ни на грамм. Но если загрузить хоть один браузер с датой выпуска менее, чем 3 года года назад, то всё... суши вёсла, все эмуляторы тормозятся во много раз.
Потому для ускорения и упрощения пользования этим сайтом я пользуюсь самыми древними браузерами, которые сумел найти. В основном 2005-2010 года. Но на некоторых извращённых сайтах даже браузеры 2-х летней давности ничего не показывают, нужны только бразуры этого или прошлого года.
Но для этого сайта браузеров 2005 года хватает. Только предварительный просмотр иногда создаёт проблемы и управление вложениями вообще не работает (поэтому и не умел ранее делать вложения, что научился делать лишь месяц назад, используя более новомодный браузер). Пользование предварительным просмотром иногда приводит к потере всего набранного текста. Поэтому предварительным просмотром принципиально не пользуюсь, даже сидя в новом браузере (чтобы не привыкнуть к такой порочной практике, что чревата потерей данных, если забыть и применить где нельзя).
Error404
24.04.2017, 12:08
Современные браузеры хотя и прожорливы (т.к. {не по своей воле} отрисовывают кучу красивостей, которые наворочены в css авторами веб-страничек), но что до рекламы, то в любом из них есть дополнительные модули отключающие рекламу, flash и т.п. Я использую FireFox и для него это плагины Adblock, Flashblock. Очень способствуют как уменьшения трафика, так и устранения назойливости и снижения вероятности атаки инет-червями. Собственно первое что я делаю после заливки ОС, установки антивируса и установки FireFox - это ставлю Adblock, Flashblock. Без этого джентельменского набора в Интернет вообще не суюсь.
HardWareMan
24.04.2017, 12:54
Полностью согласен с Error404. Что же касается предпросмотра и (о, боже) спелчекинга, набирайте тогда свои тексты в удобном вам текстовом редакторе, вычитывайте и корректируйте. И только непосредственно перед отправкой его на форум копируйте в свой старый браузер. Я так делал 15 лет назад, пользуя IE4 и модемную связь. И, как видите, не рассыпался.
OrionExt
24.04.2017, 14:12
Меня не устраивают жрущие ресурс и дико тормозные (если памяти не 4 Гб), долго грузящиеся, впустую жрущие трафик и очень раздражающие навязчивой рекламой, современные браузеры.
С этим ничего не поделать. Технологии неумолимо летят вперед. Грубо говоря, одно окно (закладка) современного браузера, это целый комп (виртуальная среда). Прошли те времена, когда браузер был обычной читалкой html кода размером в 10кБайт.
HardWareMan
24.04.2017, 14:39
OrionExt, браузеры не были бы такими, если бы не было в этом надобности. HTML статичен, а хомячков не заманить текстом, пусть даже и с картинками. Именно поэтому, сначала появился и наводнил интернет флеш (из-за удобного редактора и низкого уровня вхождения), затем всякие скрипты (которые должны были вытеснить громоздкий флеш, который сжигал трафик модемщиков). Думаю, основной посыл ясен, прошли те времена, когда вы через сотовый Edge смотрите странички и форумы с отключенными картинками.
- - - Добавлено - - -
PS Чтобы не быть голословным и не оффтопить. (http://zvzd3d.ru/Orion128/Orion128Main.html)
Версия 1.04 для Z80 и клавиатуры MS-7007.
Удалось сделать то, на что почти не было шансов. А именно, удалось доработать даже версию M1 для MS-7007, хотя после конверсии КР580 на Z80 и замены драйвера РК на MS-7007 в ПЗУ оставалось свободными всего 4 байта. С большим трудом удалось выиграть в ПЗУ дополнительное место и сделать многое (вот что Z80 животворящий делает). Позднее я попробую сделать ещё одну версию этого ПЗУ, чтобы приблизить М1 к М2 с сохранением всех функций М1.
Относительно почти оригинальной версии 1.02, выложеной вчера, введены существенные изменения.
- опрос клавиш теперь работает по нажатию и по иному алгоритму
- изменён драйвер вывода символа (выводится 9 линий знакоместа)
- изменён вертикальный ролик всего экрана (окон в М1 нет)
- изменена форма курсора
- введена индикация регистра клавиатуры размером курсора
- введена подпрограмма BEEP F83F, но константа в ней не меняется
- оптимизирована по объёму кода подпрограмма LDBYTE
Изменены адреса служ.ячеек где хранится позиция курсора. POSX и POSY сделаны теми же ячейками, что и в мониторе-2 (детали в док-файле).
Собственно мониторная часть никак не менялась, так что работа всех директив монитора осталась полностью оригинальной.
Также обновил версию M1-Z80 для РК-клавиатуры (ужато ещё на 3-4 байта).
Обоим этим версиям срочно требуется испытание подпрограммы ввода с магнитофона. Пожалуйста, кто имеет ОРИОН на Z80 проверьте чтение с магнитофона.
По счастью при подключении MS-клавиатуры по схеме 12.1991 в отличие от варианта 02.1991, биты чтения и записи на МГ не меняются (что упрощает оперативную перестановку клавиатур, не надо перепаек, достаточно поменять ПЗУ).
- - - Добавлено - - -
Вложение с дампами ПЗУ удалено, как устаревшее. Ищи в последующих постах
Странслировал M1 Z80 версии 1.07 для РК-клавиатуры. Код оптимизировать дальше невозможно, это предельная версия (и для сжатия фонта использован самый эффективный алгоритм).
После оптимизации кода, удалось выиграть ~150 ячеек. Эти ячейки были потрачены на:
- исключена директива R. ORDOS автоматически грузится по сбросу
- чтобы блокировать загрузку ORDOS держите клавишу <CC> при нажатии на сброс
- исправлен алгоритм ввода п/п-ммы F803 (теперь срабатывает по нажатию)
- оптимизирована п/п-мма F81B (работает быстрее и меньше байтов)
- заменена неудобная процедуры ввода команд (использован CCP из М3)
- заменена процедура вывода символов (выводится 9 линий знакоместа)
- заменена подпрограмма FLASH (курсор большой)
- введена индикация включённого регистра клавиатуры формой курсора
- введена индикация регистра клавиатуры высотой тона подзвучки
- полностью заменена директива 'M' на упрощенную директиву 'M' монитора-3
- полностью заменена директива 'D' на упрощенную директиву 'D' монитора-3
- введена подпрограмма BEEP F83F (и константа CBEEP F3E7 влияет на частоту)
- убран вектор подпрограммы CONOUT (это незачем, если CONIN не векторизована)
- введён вектор подпрограммы BEEP F83F, точно также как это в М2
- убрана п/п-мма CLICK и теперь подзвучка клавиатуры использует BEEP
Проверил только в эмуляторе, где невозможно проверить МГ-подпрограммы и звуки. По-прежнему не получил сведений о проверке ранее выложенных версий в реале. Просьба ко всем, кто имеет Z80 и прошиватель ПЗУ РФ2, проверить эту и другие версии. Интересует правильность звуков и работа МГ-подпрограмм. Помните, что с М1 работает только NC$ и NC4$ из 1991 года. VC$ 1994 года с М1 успешно глюкается. Прилагаю какой-то NC$ (у них версии не обозначены), который нормально работает с М1.
Теперь займусь оптимизацией версии для КР580. Это мне важно потому, что часть кода одновременно будет использована для ПЗУ другого компьютера на КР580 с экраном 256*256. Позже "расковыряю" и оптимизирую и версию М2-РК для КР580.
- - - Добавлено - - -
Вложение с дампами ПЗУ удалено, как устаревшее. Ищи в последующих постах
Stampmaker
26.04.2017, 21:35
Ну тогда ждемс!
будем пока без ay.
очень советую собрать этот хороший и полезный девайс.
а AY в нём появится нескоро, очень нескоро, если вообще появится.
только учтите, что РАМ7 поддержан только в DSDOS.
Ну вот наконец и версии ПЗУ М1 для КР580. Для КР580 оптимизировать чужой код на порядок тяжелее, и это удалось с трудом. Выкладываю версию для РК-клавиатуры и версию для MS-клавиатуры. Они разные (по перечню улучшений, что в каждую удалось уместить).
Версия 1.20 для РК-клавиатуры и КР580. Это первая и, скорее всего, последняя версия для КР580 и РК-клавиатуры. Код оптимизирован до физического предела (25 часов оптимизации). Для сжатия фонта использован самый эффективный алгоритм (для КР580, для Z80 есть и лучше), но из-за этого фонт другой (тот что использую сам). Номер версии сразу 1.20, чтобы оставить номера для последующих версий на Z80, которые начались с 1.01, причём для РК и MS клавиатур нумерация своя (т.е версии 1.XY-MS и 1.XY-RK, это совершенно непохожие версии, сделанные в разное время и не имеющие ничего общего).
За счёт оптимизации кода КР580 удалось сделать следующее:
- исключена директива R. Теперь ORDOS автоматически грузится по сбросу
- чтобы блокировать загрузку ORDOS, держите клавишу <CC> при нажатии на сброс
- исправлен алгоритм ввода п/п-ммы F803 (теперь срабатывает по нажатию)
- оптимизирована п/п-мма F81B (работает быстрее и меньше байтов)
- теперь доступен для ввода символ подчёркивания (<СС> + пробел)
- заменена неудобная процедуры ввода команд (использован CCP из М3)
- заменена подпрограмма FLASH (курсор большой)
- введена индикация включённого регистра клавиатуры формой курсора
- полностью заменена директива 'M' на упрощенную директиву 'M' монитора-3
- полностью заменена директива 'D' на упрощенную директиву 'D' монитора-3
- введена подпрограмма F83F (чтобы был хоть какой-то звук, использован CLICK)
- убран вектор подпрограммы CONOUT (это незачем, если CONIN не векторизована)
- убран вектор пустой и совершенно бесполезной подпрограммы F821
- удалена подпрограмма SVBYTE, зато её вход векторизован, также как в М2
- директива 'O' сохранена, но работает только после загрузки драйвера SVBYTE
- в качестве драйвера SVBYTE годятся старые драйвера SVBYTE 1992 года
- удалена директива 'C', этот ROM-BIOS рабочий (а не для отладки цвета)
- как ненужные удалены директивы 'R' и 'Z'
Версия 1.00/MS-7007 для КР580. Нумерация с 1.00, т.к других версий М1 для MS-клавиатур я не встречал. Всё-же удалось уместить весь фонт в ПЗУ, оверлейность или удаление п/п SVBYTE не потребовалась. Это достигнуто тем, что директивы D и M оставлены примитивными, как в оригинале, а также выкинута директива C, которая низачем не нужна. В данной версии ORDOS автоматически не грузится, это пока оставлено как в оригинале, для запуска ORDOS надо исполнить директиву R. Скоро странслирую версию 1.01-MS КР580 с автозагрузкой ORDOS, так что ещё одна версия точно будет.
- исправлен алгоритм ввода п/п-ммы F803 (теперь срабатывает по нажатию)
- п/п-мма F81B работает быстрее (т.к сам драйвер MS из РАДИО 12.1991 быстрее)
- заменена подпрограмма FLASH (курсор большой)
- введена индикация включённого регистра клавиатуры формой курсора
- введена подпрограмма F83F (чтобы был хоть какой-то звук, использован CLICK)
- убран вектор подпрограммы CONOUT (это незачем, если CONIN не векторизована)
- убран вектор пустой и бесполезной подпрограммы F821
- удалена директива 'C', этот ROM-BIOS рабочий (а не для отладки цвета)
- как ненужная удалена директива 'Z' (т.к уже программы 1991 портят CCP ORDOS)
- а если всё-же нужен рестарт ORDOS без загрузки, не проблема ввести G BFFD <ВК>
Подробнее об этих 2-х ПЗУ читайте в сопроводительных файлах.
Кроме того, т.к было "отковыряно" еще более 20 ячеек, то перетранслированы и все версии для Z80 (правда в основном эти байты истрачены на вывод номера версии в титре, титр ПЗУ в ORDOS не виден, надо держать <СС> при сбросе). Номера версий не менялись, потому просьба удалить все предыдушие версии, чтобы избежать путаницы. Кроме того, чуть изменено ПЗУ М3 V3.13-MS из 1992 (увеличена константа автоповтора).
Дизассемблировал NC$. Т.к тот дизассемблированный исходник, что "болтается" в архивных дистрибутивах вообще никуда не годится (то же самое можно увидеть и в любом отладчике). Вообще с помощью дизассемблера МИКРОН очень трудно дизассемблировать программы с самомодификацией кода, а данная программа NC$ просто "бъёт все рекорды" по само-модифицируемости (модификация кода считается извращённым стилем программирования и не поощряется, среди фирменных программ это не встречается, но для нас это вполне оправдано, т.к экономит код).
Исходник нужен, чтобы увидеть, как выполняется опрос клавиш. Нет никакой задержки, поэтому если в ROM-BIOS использована более грамотная подпрограмма опроса клавиатуры F81B, в которой этот опрос выполняется в 2-3 раза быстрее, то ввод становится "очень нервным". Чем быстрее опрос клавиш, тем больше времени остаётся в играх на движение спрайтов и музыку. Также и в текстовых программах это ускоряет вывод текста (т.к профессиональные текстовые программы и во время вывода непрерывно проверяют клавиатуру). Поэтому быстрый опрос клавиатуры важен.
Самый быстрый (почти мгновенный) опрос клавиш получается при аппаратной клавиатуре, где CPU остаётся только забирать готовый ASCII-код. А т.к в ОРИОНЕ предусмотрена загрузка драйвера любой клавиатуры, то ориентация на тормознутость одного конкретного ПЗУ - это ошибка.
Теперь есть возможность оптимизировать NC$ и сделать так, чтобы можно было пользоваться не только при любом ПЗУ, но даже и при аппаратной клавиатуре.
Ни одна из версий ПЗУ не проверена в реале (у меня нет возможности прошивать, точнее чистить, ПЗУ), да и нет, ни MS-7007 клавиатуры, ни адаптера магнитофона, ни самого магнитофона. В проверке прежде всего нуждаются звуки и ввод с магнитофона.
PS: Если кому-то нужна директива 'C', которая бесполезная, т.к не делает ничего, кроме как заполнения плоскости цвета заданным кодом (раскрашивает экран), то могу странслировать эти 10 байтов в виде ORDOS-программы (будет как бы внешняя команда ДОС, во многих ДОС команды внешние, например, в RK-DOS большая часть команд - внешние).
Сделал версию М1 КР580 и для MS-клавиатуры (на это ушло всего 3 часа). Причём удалось обойтись, как без загрузки оверлеев из ROM-диска, так и без переноса в драйвер подпрограммы SVBYTE. Чтобы сократить число вложений, просто перевложил файл вложения в предыдущем посте, соответственно отредактировав текст.
По-прежнему нужна проверка в реале. Ну или хотя бы на разных эмуляторах, где есть MS-клавиатура, вывод звуков и работает МГ-ввод из WAV-файлов. Если на каком-то эмуляторе не работает, то скорее всего там не эмулирована команда CP (HL) попадающая в ППА (на моём эмуляторе тоже так было вначале, пока я не понял в чём дело).
Могу в базовый М1 для РК-клавиатуры (т.е без улучшений п/п-рамм) встроить в директиву I автонастройку на скорость МГ-ленты, а также директиву R - ввод в формате ORDOS (тогда не нужен будет CH4$). Могу то же самое сделать и для М2, т.е встроить в него автонастройку на скорость.
Есть также возможность сделать 2-х ПЗУ-шечный ROM-BIOS ОРИОНА (на КР580). Суть в том, чтобы как на СПЕЦИАЛИСТЕ получить резидентный драйвер шрифта 8*8. С М3 это тяжело, т.к там нет свободных ячеек, а М2 я немного уже "уплющил" и получил ~230 свободных ячеек !!! (на Z80 будет ещё больше). С учетом установки вторым этажом второй ПЗУ РФ2, этого хватит на цветной (но не оконный) драйвер 8*8.
Можно истратить эти ячейкии иначе. Например, можно встроить драйвер связи с IBM PC по проводной линии (как чере ВВ51, так и без неё, если IBM PC имеет параллельный порт принтера). Суть в том, чтобы п/п-ммы LDBYTE и SVBYTE работали бы не с МГ-лентой, а с проводной линией. Тогда все древние МГ-программы будут работать также, только скорость обмена (с линией вместо магнитофона) будет в 5-15 раз выше.
Сегодня день мониторов ОРИОНА для КР580. Исправил МОНИТОР-2. При этом за счёт более эффективного программирования одновременно освободил в нём 282 ячейки при полном сохранении функционала.
Также сделал М2 для MS-7007. Это то же самое, что и вариант М2 Дм.Тупицына из 1992, но с другими драйверами клавиатуры и экрана. Здесь свободно только 178 ячеек так как MS-драйвер на 104 байта длиннее.
Есть у кого-нибудь более эффективный алгоритм компрессии фонта ? Есть три моих алгоритма, но самый эффективный алгоритм требует Z80. Может этим кто-нибудь занимался. Жалко если не удастся довести число свободных ячеек до 300 (это можно сделать ухудшив качество, но не хотелось бы).
Попробуйте новые версии М2. Поставьте сначала старый М2 и повводите в ORDOS-е или в редакторе символы. Затем поставьте этот М2 и сравните удобство ввода текста.
Заодно разобрался в отличиях М1 и М2. Теперь могу сделать так, чтобы VC$ и другие ORDOS-программы работали с Монитором-1. Да, так и не дождался того, что кто-нибудь выложит МОНИТОР-4. Если бы его выложили, то я бы уже сегодня "заковырял" бы и его.
Разобрался как вводит с МГ-ленты МОНИТОР-2. Это сделано не в соответствии с РК86 и даже просто некорректно. А именно нет синхронизации по второму синхробайту, что идёт после двух ИЛИ ТРЁХ нулевых байтов перед КС. Число нулевых байтов и пауза между блоком и КС может быть любой. Кстати, с поиском синхробайта п/п-мма даже короче (экономится 6 байтов). М2 сразу после конца блока вводит и просто пропускает 3 байта (2 нулевых байта и байт E6). Таким образом не только не проверяется, что это пилотон (т.е два именно нулевых байта), но и байт E6 вообще не проверяется (нет поиска синхробайта, как на всех РК-клонах и МИКРО-80). Все 3 байта игнорируются и значение имеют только два последующих байта КС.
Это неправильно, т.к недопускает никакой паузы между блоком данных и блоком контрольной суммы. В РК86 и МИКРО-80 может выводиться 1 и более нулевых байтов перед синхробайтом и КС. А в ОРИОНЕ только 2, причем это могут быть даже не нулевые байты, а любые. И синхробайт не влияет и может быть любой. Таким образом ОРИОН может вводить любую чушь, лишь бы КС в нужном месте совпала. Но на других ЭВМ с РК-форматом это не так. Так же читается и формат ORDOS (т.к это стандартная п/п-мма LD_MAS ввод массива).
Вообще в МГ-подпрограммах М2 с удивлением нашёл ~30 NOP-ов непонятного назначения (в М1 NOP-ов не было). Возможно это была попытка добиться того, чтобы константа ввода точно соответствовала РК86. В М3 никаких NOP-ов нет, подпрограммы вдвое короче, а надёжность выше.
С удивлением узнал, что подпрограммы LDBYTE и SVBYTE в М2 вообще не векторизованы. Векторизация введена только в М3. Ещё один минус для М2. Т.е М2 не годится для загрузки драйвера проводной линии, т.е замены МГ-подпрограмм на аналоги, не использующие магнитофона. Когда-то я загрузив драйвер, так обменивался со СПЕЦИАЛИСТОМ и СИНКЛЕР-ом со скоростью 8 кб в секунду (что даже не снилось ВВ51).
Возможно используя полученный листинг сделаю настоящий М2, т.е ПЗУ с которым уже можно будет работать в CP/M, если конечно мне кто-нибудь сообщит какие коды VT52 надо в это ПЗУ встроить. Если выкинуть МГ-подпрограммы, то в этом ПЗУ будет свободно ~350 ячеек.
Т.к "обнаружил" в ПЗУ М1 еще 10 свободных ячеек, то все выложеные ранее версии М1 для Z80 и КР580 придётся перетранслировать (просьба удалить все ранее выложенные версии ПЗУ). Глупо не использовать все свободные ячейки.
Подскажите кто-нибудь, как избавляться от VC$. Если я его запускаю, то потом мне никак не удаётся от него отделаться. Выход не помогает, а кнопка СБРОС разрушает ОЗУ и пользоваться ей не рекомендуется. Поэтому клавиатурное прерывание М3 по УС+СС+С, что делает JMP F800, очень выручало. Но в М2 этого нет, и я как без рук. В NC$ для запрета автовозврата достаточно было удалить файл автостартёра EXT$. Но здесь он невидимый и потому я не знаю как его удалить.
- - - Добавлено - - -
Добавил М3 MS-7007 для КР580. Процессор Z80 позволяет эффективно сокращать объём программы для КР580, поэтому при Z80 нет проблем разместить на 104 байта более крупный MS-драйвер в коде М3. Однако при КР580 это представляет существенную трудность, т.к М3.1-РК КР580 уже изначально написан весьма грамотно. Отчего в нём невозможно освободить даже несколько байтов, а сжать код на 104 байта - это просто непосильная задача. Однако и это мне удалось сделать. Вот версия М3 КР580 для MS-7007.
- - - Добавлено - - -
Добавил М3 КР580 V3.151. По сравнению с версией 3.150 сохранена п/п SVBYTE и звук сделан по EI/DI (ранее ошибочно звук был оставлен по OUT FF, как для Z80) .
ABRAMKA0
30.04.2017, 18:10
Да, так и не дождался того, что кто-нибудь выложит МОНИТОР-4. Если бы его выложили, то я бы уже сегодня "заковырял" бы и его.
Ловите,Владимир Иванович.Я уж и не помню,где я его нарыл,записан в РФ5 еще в 2002 году,но не помню как он работал.А вот с мониторами 1-2-3 помню в ОРДОСЕ проблем не было.60834
P.S. для того,чтобы вставить файл в сообщение,я его переименовал в .txt,перед использованием замените расширение файла на .bin
P.S.S А все же,Владимир Иванович,вы не любите ОРДОС "как люблю ее я",а пытаетесь NC для неё переделать?Ну честно,почему?
Это не МОНИТОР-4. Это монитор-3 версий 3.0 или 3.1, т.е ещё КР580, кем-то переделанный, а точнее изуродованный. Он может работать как монитор-2, но как М3 уже работать не может, изуродован, не может вводить HEX-числа. Но команды G и I сохранены. Дизассемблировал за 15 минут, знакомый код, расставил имена, как у меня в исходниках, чтобы легко ориентироваться, и стал искать что добавлено.
Нашёл в коде загрузчик дисковода с адресацией ОРИОСОФТ (F710). Надо бы проверить в реале, а проще в эмуляторе B2M, т.к он поддерживает НГМД. В МОНИТОР-4 должны быть вместо МГ-подпрограмм дисководные подпрограммы. Может быть это какая-то ранняя версия М4. Ничего концептуально нового, обычный ROM-BIOS на базе М3 с загрузчиком дисковода и загрузкой ORDOS. Добавлена новая стандартная подпрограмма в конец таблички входов на F842. Там всего 4 команды:
DI
OUT (F9),A
LD (F3D5),A
RET
Изменения делал человек незнакомый с ROM-BIOS-ами. Ячейка F3D5 это важная ячейка - относящаяся к параметрам окна. А её используют для хранения номера банки. Сдвинут вход WARM BOOT F86C, даже стандартный вход в CCP F8B6 не сохранён. Не говоря уже о внутренних точках М3. В общем это не может называться М4. Это не новая разработка, это компоновка из чужих кусков. И это делается за 10 минут.
Понятно почему взят М3. Ведь в нём код п/п-рамм оптимизирован и соответственно, если выкинуть сам монитор, то места хватает и для собственных дополнений. Позднее я закончу дизассемблирование этого М4. Только для того чтобы узнать, что значит строка "R/F/H ?", что выводится если отключить ROM-диск. Вообще-то, если нет ДОК-файла, это однозначно свидетельствует о несерьёзности автора.
NC$ я дизассемблировал, чтобы посмотреть и возможно переделаю его в NC4. VC$ не работает с магнитофоном, потому он и не интересен. А NC$ уже весной 1991 один человек (в Ленинграде) переделал так, чтобы работало на 4 банки, причём это был файл 4К, содержащий в себе и модификацию ORDOS 2.0, чтобы она работала на 4 банки (для этого надо НЕ много изменений). В 1991 этот файл грузился с МГ, т.е CCP вообще не было. Но этого хватало, т.к CCP ORDOS малофункционально и NC его вполне заменяет. Т.к этого NC$ на 4 банки не сохранилось, то раз уж дизассемблировал, то не сложно переделать. Может у кого-то сохранился такой NC$ на 4 банки? Он был широко распространён до появления VC$, который появился года на полтора позднее. В каталогах торговцев программами это видно.
А вообще-то было же несколько ORDOS-нортонов (кроме авторского). Это даже не считая нортона А.Вакуленко и нортонов В.Воронина. Где они все выложены? Ради интереса хочу написать свой нортон для ORDOS. Даже два. Один без драйвера, а второй с оконным драйвером. Для этого много труда не надо, т.к подпрограммы есть, а "глюкало" писать не понадобится, это делает оконный драйвер.
- - - Добавлено - - -
Добавил в свой предыдущий пост вложение M3.151 для КР580 (с трудом удалось уместить SVBYTE, исправлен звук, он в версии 3.150 ошибочно оставался ещё для Z80), а также те экстенты М3, что работают при КР580.
Выиграл ещё 16 байтов за счёт уплотнения фонта. Теперь в МОНИТОРЕ-2 у меня уже есть 298 свободных ячеек и не хватает всего 2-х байтов до круглой цифры. В эти 300 байтов можно вставить много чего. 16-ти байтов хватает, чтобы вернуть титры в выложенные ранее ПЗУ M3 КР580 (М3.13.5-MS и 3.151-РК). В ближайшее время их перетранслирую.
Имея 300 (а при Z80 и более) байтов для расширения возможности ROM-BIOS, могу сделать универсальный ROM-BIOS ОРИОНА. В котором будут драйверы трех типов клавиатур. Базовой, с матрицей РК86, альтернативной, с матрицей MS-7007, а также аппаратной промышленной (типа КОНСУЛ, 15ВВВ-97, клавиатуры ИРИШИ, и от АГАТА/Apple-II). Также можно сделать ПЗУ поддерживающее две клавиатуры: обычную от РК86 и IBM-клавиатуру подключенную по способу IBM PC (т.е через его же контроллер 4042).
К сожалению, игры нагло напрямую лезут сквозь ППА в матрицу кнопок, поэтому с аппаратными клавиатурами они не работают. Но системные программы, не использующие наглого влезания в ППА клавиатуры, с аппаратной клавиатурой всё-же использовать можно. Хотя в большинстве моих драйверов для подмены кодов курсорных клавиш программа, получив код курсорной клавиши, читает ППА клавиатуры, чтобы узнать получен код с клавишей CONTROL или без неё, что даёт информацию о том, надо ли подменять нестандартные коды курсорных клавиш ОРИОНА на коды курсорных клавиш принятые в CP/M. Но свои драйверы, я легко исправлю, чтобы работали и с аппаратной клавиатурой, в которой есть сигнал CONTROL (сигнализирующий о том, что клавиша нажата). Такой сигнал легко вывести из любой аппаратной клавиатуры.
Чтобы при аппаратной клавиатуре работали игры, теоретически, есть возможность использовать идею прерывания, используемую в DEC-машинах. Там мощные DEC-процессоры имеют расширенную систему команд (что-то типа FPU поддержки расширенной арифметики). Но, как ни странно, программы рассчитанные на эти процессоры могут работать и на самых древних процессорах. Это достигается, тем, что встретив "неродную" команду, процессор выполняет стандартное прерывание TRAP, по которому вылетает в загруженный программный эмулятор расширенной системы команд. Таким образом новая программа работает, хотя и медленно, т.к программная эмуляция тормозит. Если бы разработчики КР580 догадались ввести переход на FFFD при "встрече" неверного кода команды (12 недокументированных команд КР580), то программы Z80 работали бы и на КР580.
Если ввести в ОРИОН аппаратное прерывание (при КР580, оно увы, м.быть только на 38H, или же требуется куча трудов по установке контроллера прерываний), то при попытке процессора залезть в ППА клавиатуры, будет происходить прерывание, в котором эмулируется поведение матрицы клавиш. Это довольно сложная процедура и она займет все 300 свободных байт (если вообще уместится).
Возможно использовать эти ячейки и иначе. ~300 байтов хватит, что ввести в М2, например, поддержку ВИ53, по типу ИРИШИ - музыкальный язык. При этом для вывода музыки, на консоль выкидывается строка с искейп-кодом, после которого все последующие байты интерпретируются не как символы для терминала, а как команды вывода нот в разных каналах ВИ53. В ИРИШЕ используют только один канал, т.е одноголосие. Да и то сделано с ошибкой, так что практической пользы от этого нет, даже простейшую мелодию не сделать (но попищать и произвести какафонию можно).
Но чтобы получить трехголосную музыку, надо иметь в звуке атаку и затухание, т.е необходима регулировка громкости звука по каналам. Хотя бы по одному каналу для основной мелодии. Когда-то я пробовал использовать для регулировки громкости ИД14 (это 2 дешифратора в одном корпусе). Тогда на адреса подаётся вес уровня громкости, на чип-селект сигнал, а на выходы ИД14 подключены резисторы, так что образуется делитель, что даёт 4 градации уровня громкости для двух каналов. Расход деталей для регулировки громкостей всего 1 корпус, но при этом плохо, что выходной сигнал не синусоида, и к тому же с несбалансированным средним уровнем.
Средний уровень 0 получается с операционником. Операционник включён как повторитель так, что при 1 на входе он инвертирует, т.е по 1 даёт минус входного сигнала, а при 0 не инвертирует и даёт плюс входного сигнала. Так что получается из 1 выходит положительная полуволна, а из нулей отрицательная полуволна (относительно земли), отчего средний уровень сигнала нулевой. Т.о сдвоенный операционник позволяют на ВИ53 производить классическую музыку. Расход деталей в 2 корпуса вполне оправдан (даёт 2 канала с регулировкой громкости). Чтобы получить лучший тембр, нужен КМОП аналоговый мультиплексор, который коротит сигнал на землю разными емкостями. С резистором (лучше дросселем) образуется частотный фильтр. Для каждого диапазона частот включается своя ёмкость. Благодаря чему на выходе не меандр, а почти синусоида. Т.о всего за счёт расхода 3-х корпусов, качество трехголосной музыки резко возрастает.
Есть возможность ввести в М2 КОИ-8. Тогда в ПЗУ несжатыми размещаются маленькие русские буквы (что знимают всего 256 байт) и немного изменяется драйвер.
Выкладываю обновлённые версии ПЗУ М1, М2, М3 для КР580 для всех клавиатур с максимальным числом свободных ячеек. Они очень нуждаются в проверке (особенно версии для MS). Все выложенные ранее версии КР580 имеют недостатки и их следует удалить.
М2 для КР580 в данной выкладке имеет 297 свободных ячеек. Мне удалось достичь и 305 свободных ячеек. Однако при этом изображение самого символа оказывается центрованным, как в М3. А в М2 символ придвинут кверху знакоместа и на это ориентируется VC$, рисуя горизонтальные линии не по центру знакоместа. Поэтому, чтобы всё было как в оригинале М2 пришлось потратить ячейки.
Пока отлаживал MS-мониторы в эмуляторе, рассчитанном на РК-клавиатуру, придумал как с ПЗУ рассчитанном на MS-клавиатуру, пользоваться клавиатурой от РК. Для этого первоначально составил таблицу соответствия клавиш РК клавиатуры клавишам MS-клавиатуры. Эта же таблица позволяет играть в игры, где прямой программный опрос MS-матрицы (если такие игры есть). Но для владельцев MS полезно составить обратную программу, чтобы играть в игры для РК-клавиатуры на MS-клавиатуре.
А потом для удобства векторизовал F81B (как сделано в М3 для Z80) и написал драйвер EXT$, который подменяет одни коды другими и в ORDOS грузится автоматически. Таким образом кое-как получил возможность пользоваться программами при ПЗУ для MS. По крайней мере запускать программы можно. К сожалению, в матрице MS-7007 больше линий и число кнопок больше, чем 64. Поэтому коды некоторых клавиш никак не ввести (можно сделать, чтобы, по крайней мере, можно было вводить все буквы, заменив некоторые редко используемые символы, типа '% * / ^ ~' на недоступные буквы).
Привожу список соответствия клавиш. Слева - то, что хотелось бы ввести, а справа - на что надо нажать. Как видите, не все коды нужных клавиш можно ввести, имея ROM-BIOS для MS, а клавиатуру для РК. Но пользоваться всеми программами, кроме текстовых редакторов, этого хватает. Список, возможно, не полный и даже, возможно, неточный (т.к не из реала). Во вложении программка позволяющую узнать коды. Она ещё понадобится при подключении корветовской клавиатуры вместо MS-7007. Для выхода удерживайте 5 секунд любую клавишу.
.
Соответствие клавиш с ROM-BIOS для MS-клавиатуры при матрице РК86
A...D M Y...B F1...CTP,ВК !...2
B...@ N...- Z...Y F2...F2 =...F4
C..." O...F [...0 F3...влево "...3
D...9 P ]...1 F4...вверх :...F5
E...7 Q ^...I F5...вправо %...5
F R...E ПС...F2 вниз...F2,U $...вниз
G...> S...K HOME..| вверх...] #...4
H...X T...M CTP...) вправ...W &...6
H..влево U...+,: забой..T влево..H )...CTP
I...G V...Q 4...R пробел...O /...F3
K...< W 5...Z ВК...пробел >...W
L...8 X...N 6...ESC R/L...R/L
Символы, что не ввести: . , _ 0 1 2 3 7 8 9 + - * ? F M P Q W
Error404
03.05.2017, 17:00
Да уж, раскладки символов на матрицу и близко не похожие.
Меня всегда интересовало: при том что печатное поле пишмашки на всех клавиатурах одинаковое, с чем глубокий смысл в каждом клоне каждый раз рассыпАть символы по матрице как Киса "Сеятель" Воробьянинов ассигнации на базаре - случайным образом (ну как минимум - неочевидным). Чтобы потом дважды героически преодолевать трудности: один раз разводя печатку/пленку для кнопок и второй раз перекодируя ни к чему топологически не привязанные сканкоды в символы?
Дизассемблировал в полноценный исходник М4. Теперь могу сказать из чего и как он получен и что из себя представляет.
Итак, получено это не из М3.1 для КР580, а из моего ПЗУ М3 Z80 из 1994, версий до 3.605. Т.к в версии 3.605 уже форма курсора меняется в зависимости от регистра клавиатуры, а здесь курсор большой, но неизменной формы (а версии М3 из 1992 от А.Новгородова вообще имеют маленький курсор как в М2).
Что сделано в этом ПЗУ? Добавлена новая входная точка F3C0. Там стоит переход на WARM BOOT F86C. Автор понял, что ещё один JMP ниже F3C3 умещается, но истратил его на ерунду, т.к стандартный вход WARM BOOT в советских компьютерах это F86C. Ячейка F3C1 в M3 это TMPSP (в М2 TMPSP это F3DF, что в M3 вектор AINT). Чтобы освободить ячейки F3C0, F3C1, F3C2 для ненужного входа WARM BOOT, автор поставил TMPSP на F3E1,что в М2 и М3 резервный адрес COUTC (для непонятных целей введённый в М2).
Естественно, при обратном переводе с Z80 на КР580 произведена замена JR команд на JP, убраны DJNZ, команды BIT и сдвиги регистров изменены на сдвиги в аккумуляре. Однако в п/п-мме ролика экрана, использовались команды LDI, поэтому эта часть заменена на п/п-мму ролика из М3.0 для КР580.
В подпрограмме вывода символов в М2 и М3 до 1994 как рабочая используется ячейка OSTAT F3DD. Но в моих М3-Z80 эта ячейка не используется, вместо неё используется IXL половинка индекного регистра. Это было сделано не ради освобождения ячейки F3DD, а потому что так достигается экономия объёма кода. Естественно, при обратном переходе на КР580 пришлось изыскивать свободную ячейку. Но автор М4 не изучал разные ПЗУ для КР580 и не знал, что ячейка OSTAT F3DD именно для этих целей и служит. Поэтому он ввёл ещё одну служебную ячейку OSTAT F3F2, выполняющую ту же самую функцию, что в М1 M2 M3 КР580 выполняет ячейка OSTAT F3DD (которая в М4, естественно, свободна).
Даже если бы не было полной идентичости кода с M3 Z80, это однозначно свидетельствует, что получено из ПЗУ для Z80. Об этом же свидетельствует использование новгородовской п/п-ммы XF81B, которая совершенно другая, чем п/п-раммы В.Сугоняко и В.Ивинских. К чести автора следует сказать, что он не просто заимствовал, а изучил код и сумел изменить константу в п/п-мме ввода с клавиатуры.
Выкинуты все МГ-подпрограммы. Выкинута проверка и автостарт M3-EXT. Выкинут CCP М3 (п/п-мма ввода строки и конверсия HEX-текстов в их значения). Директивы I и G, как ни странно остались, но делают теперь совсем иное (не запуск с указанного адреса и не ввод с магнитофона). Их надо нажимать при сбросе.
Внесены некоторые изменения в стандартные входы. О смещениях стандартной входной точки WBOOT я уже упоминал. П/п-ммы F81B F80F F812 оставлены векторизованными, как в М3-Z80 (что чревато проблемами с программами идиотов, что в качестве обычных ячеек хранения используют ячейки F3F0...F3FF, предназначенные для ROM-BIOS). Вместо READ RAMTOP F830 вставлена своя новая подпрограмма XXXXXX непонятного назначения. (меняет байты в банках). Вместо запроса RAMTOP теперь стоит подпрограмма INILOCK (инициализация рабочих ячеек). Это именно то, чего не хватало в М2 и М3, т.к позволяет без проблем отгружать драйвера. В моих ПЗУ это тоже есть, но входная точка не тратится (точка за 3 байта до F86C). Введена новая стандартная входная точка F842. Эта п/п-мма служит для того, чтобы задать номер банки куда будет просходить возврат из п/п-рамм RDRAM и WRRAM (чтения из записи байта в банки). Это позволяет использовать п/п-ммы F836/39 из любой банки, а не только из нулевой. Но лучше это достигается дублированием содержимого портов F8, F9, FA, FB в адресах F3F8, F3F9, F3FA, F3FB.
Что введено? Если ROM-диск есть, то происходит выход в ORDOS. Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска, по F стартует загрузчик дисковода от ОРИОНСОФТ (адреса F710/F714 и другой оффсет байта в BOOT-секторе с номером банки ДОС). Если же нажать H, то происходит загрузка с винчестера, который установлен по адресу F750...F75F. Так как винчестер был не сильно распространён, то несложно вычислить автора этого ПЗУ М4.
Долго "трахался", чтобы получить полноценный исходник, хотя это ПЗУ не стоило и минуты моего труда. За час можно наштамповать таких десяток, причём лучшего качества, засунув в них загрузчики чего угодно. Чтобы мой труд не пропадал впустую, я исправлю в этом ПЗУ явные ненужности и несоответствия стандартам М2 и выкину загрузчик винчестера стоящего по адресу F750, а также все добавленные нестандартные подпрограммы неизвестного назначения (это не "горит", так что сделаю такое ПЗУ позднее). Можете изучить исходник и выяснить самостоятельно зачем введены новые подпрограммы и что они полезного дают.
Вопрос из зала: какую задачу решает М4 ? Тобишь, что в его функционале принципиально новое относительно букета версий М3 ?
Увеличение major-номера версии как-то обязывает как минимум к околореволюционным новшествам.
какую задачу решает М4 ?
Вопрос не по адресу. Я только дизассемблировал с целью изучения. Сделал М4 не я.
Кстати, есть М4 В.Воронина, который сделан, как минимум, на 5 лет раньше. Ну а задачу М4 решает, как было написано в рекламе - переход от использования магнитофона к использованию дисковода. Правда такая реклама в 2000 году опоздала лет на 10. И ту же самую задачу, запихнуть загрузчик НГМД в ROM-BIOS, решил и А.Новгородв в начале 1992 года, сделав ПЗУ 3.30-D и 3.50-D (D означает дисковод). Только он лишь добавлял, ничего не выкидывая, сохраняя CCP M3.
В.Воронин делая свой М4, как мне кажется, хотел ввести возможность иметь стандартные подпрограммы (или упр.коды, уж не помню) для рисования на экране одинарных и двойных рамочек. Ну а как новые ПЗУ ещё называть? M1 M2 M3 заняты и у каждого из них своя концепция.
А нумерации никогда не хватает. Сначала в 1991-92 считали десятыми (т.е по 0.10 на версию). Дошли до 3.70 (эти версии делал не я). Когда я сам стал делать версии в 1993-95, то я стал считать сотыми 3.601, 3.602... 3.701... Но и этого не хватило, тогда нумерация была продолжена после 3.13, но до 3.2. Т.е - 3.140, 3.141, 3.142...3.146, 3.150...3.153. Я странслировал сотни версий, в основном уже после 1995-96, потому они не распространены.
Вообще-то мне сообщили, что в М4 есть п/п-мы чтения и записи сектора, что действительно имело бы смысл, т.к позволяет поднять уровень BDOS. А просто загрузчик НГМД - это действительно ничего нового.
Должен заметить, что разработка новой версии ROM-BIOS на основе имеющегося исходника, это по сути не серьёзная работа программиста. Работу сделали В.Сугоняко и В.Ивинских в 1991. А всё позднее - это лишь перетасовка кодов, по сути ничего не меняя. Т.е мелкие улучшения вызванные тем, что появилось место, куда что-то можно "впихнуть" и возможно сделать что-то чуть-чуть лучше (например, заткнуть писк по сбросу ВИ53, включить нужным образом окно в Z80CARD-II, заменить в фонте русские большие буквы на маленькие английские и т.п).
Увеличение major-номера версии как-то обязывает как минимум к околореволюционным новшествам
Согласен и в курсе, как фирмы нумеруют версии.
Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS, засунув туда и драйверы шрифтов 6,7 и 8 и минимальную поддержку графики (перемещение по экрану указателя от мыши с возвратом позиции по нажатию её кнопки), а также дисководные п/п-ммы. У меня есть 2-х ПЗУ-шечный ROM-BIOS (4К вторая РФ2, две банки в окне F800...FFFF) содержащий подпрограммы дисковода (РК-КНГМД), что позволяло с'экономить 2 кб для подъёма уровня TPA DOS в банке 0, где ОЗУ совсем мало и потому это было полезно.
Ну а задачу М4 решает, как было написано в рекламе - переход от использования магнитофона к использованию дисковода.
Так это уже всё было в М3. И дисковод, и даже HDD.
Вообще говоря, глубокого смысла во впихивании всего этого в тесное ПЗУ Монитора нет, т.к. в концепте Ориона заложен ROM-диск и автостарт ПО из него.
- - - Добавлено - - -
Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS, засунув туда и драйверы шрифтов 6,7 и 8 и минимальную поддержку графики (перемещение по экрану указателя от мыши с возвратом позиции по нажатию её кнопки), а также дисководные п/п-ммы.
В нативных 2 Кб нереально.
Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS...
В нативных 2 Кб нереально
Ясное дело. Речь шла о так называемом XBIOS. Тогда, в 1993-94, ОРИОНСОФТ обещала сделать оверлейный ROM-BIOS для обычного ОРИОНА, что должен был быть подверсией мощного ROM-BIOS ОРИОН-ПРО. Он должен был хранить часть кода в ROM-диске. И это было реализуемо. Просто делать не стали. Поболтали в рекламе и забыли.
А я реально поставил в ОРИОН ПЗУ 27256 и даже двумя способами, каждый из которых поддержал программно. Первый вариант, это когда большое ПЗУ прокачивается кусками по 2К в окне F800...FFFF. Какой байт выкинули в порт FC, такой 2-х килобайтовый кусок и "виден" в окне F800.
Второй вариант уже использовал так называемое "теневое ПЗУ" в окне 0...7FFF. Причем ПЗУ F800...FFFF тоже бралось из этого 27256 (старшие 2К). Это теневое ПЗУ всё-время было как-бы в тени ОЗУ и не читалось. Но при его включении появлялось, и оттуда XBIOS работал с экраном. Это существовало с 1995, но спроса уже не было. Причём, была версия и для ОЗУ, грузящаяся из ROM-диска в банку 0 на адреса 0...7FFF (что годилось только для ДОС в банке 1). И там были графические подпрограммы (для перемещения курсоров мыши) и даже графический язык. Вот потому-то на всех моих ОРИОНАХ стоит вторая панелька на 28 ног, куда впоследствии оказалось удобно ставить 62256.
Впоследствии, когда ОРИОН успешно помер, всё это было мной выкинуто и остался только драйвер D8, на котором я и делал нортоны для всех DOS. Хотя драйвер D7 тоже приятный. Ради него я даже в 1998 сделал экран 448 (64 символа 7*10) и этот режим 448 даже поддерживался в моих эмуляторах до 2000 года. Это из-за того, что 10 МГЦ я не мог иметь, а 8.5-9 МГЦ мог (не было Z80H). А при таком пиксель-клоке растр в 480 точек уже не влезает в экран, а 448 как-раз влезает.
Почему в новоделах ОРИОНА не поставили такое теневое ПЗУ? Это самая разумная доработка и нужна в первую очередь для фанатов ORDOS и для других DOS в банке 0 (т.к для DOS в других банках драйвер шрифта может работать и из ОЗУ). Если когда-нибудь, где-нибудь будет ОРИОН с большим ПЗУ, с удовольствием странслирую для него ROM-BIOS.
Stampmaker
05.05.2017, 13:46
Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска
это как такое возможно? :v2_dizzy_stupid:
это как такое возможно? :v2_dizzy_stupid:
Автоматика ROM-диск не обнаружила, но шанс есть... :)
Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска
это как такое возможно?
Всё так и есть. Сами смотрите в листинге. Когда мы нажали СБРОС и вывалились в запрос каманды R/F/H, то пока длится CONIN у нас достаточно времени, чтобы подключить ROM-диск и только потом нажать <R>. ROM-диск в М3 определяется по наличию байта C3 в ROM-диске по адресу 7FD, а в М2 с затратой большего числа байтов (чтением двух первых байтов ROM-диска и если они не равны, значит ROM-диск есть).
Если же при сбросе удерживать клавишу <G> или <I>, то игнорируя наличие ROM-диска будет загрузка с винта или из флопа. Причём при последующих нажатиях на кнопку СБРОС ничего уже удерживать не надо, т.к первое нажатие запомнится в последней ячейке ОЗУ F3FF и автоматически будет происходить загрузка из того-же устройства.
.
CALL XF81B
INC A
LD HL,0F3FFH
JP Z,NOPRES
LD (HL),A
NOPRES: LD A,(HL)
CP 'G'
JP Z,DIR_F
CP 'I'
JP Z,DIR_H
ORDOS:
LD DE,0BFFFH ; загрузка ORDOS c ROM-диска и старт
LD HL,7FDH
LD (DOPPPA+1),HL
LD A,(DOPPPA)
CP 0C3H
JP NZ,NOROMD ; если в ROM-диске на 7FD не байт C3
LD L,E
L30: LD (DOPPPA+1),HL
LD A,(DOPPPA)
LD (DE),A
DEC DE
DEC HL
LD A,H
OR A
JP P,L30
JP 0BFFDH
; ──────────────── ──────────────── ────────────
TITR: defb 1FH,'?'
defb 13,10,'R/F/H ?',0
NOROMD: LD HL,TITR
CALL MSSG
CALL MCONIN
CP 'R'
JP Z,ORDOS
CP 'H'
JP Z,DIR_H
CP 'F'
JP NZ,NOROMD
DIR_F: LD A,0D0H ; команда ПРИНУДИТЕЛЬНОЕ ПРЕРЫВАНИЕ
CALL EXECW
. . . . . . . .
На самом деле, как выяснилось, если код загрузчика в ПЗУ ROM-диска начинается с двух одинаковых байтов, то автостарт не произойдёт.
И такая ситуация вполне возможна.
Например, мы стандартно делаем вначале переход на стартовый код: JMP START
При этом физически метка START будет иметь адрес B8C3h. В итоге в кодах будет так: C3 C3 B8...
Вот и напоролись (( Автоматика не выполнит автозапуск такого загрузчика. Придётся мануально.
Автоматика M2 не выполнит автозапуск такого загрузчика
Такое бывает только с монитором-2. Смотрите мой предыдущий пост. Вот потому-то монитор-3 по всем позициям всегда лучше.
Есть проблема из-за М2. Дело в том, что в М1 и М2 по-дурацки сделан вывод символов. Там сначала выводится 8 линий из фонта, а затем два нуля. Это приводит к тому, что символ не по центру знакоместа, а придвинут кверху. Поэтому балка подсветки инверсией получается некрасивой и рисовать рамки псевдографикой нельзя (оттого их при М2 всегда рисуют внаглую). В М3.0 и 3.1 сделано также но, в M3.11 и последующих М3 сделано не так. Там сначала выводится ноль, затем фонт 6*8 и затем снова ноль. От этого символ выводится по центру знакоместа. При этом число выводимых линий сокращено до 9, отчего шрифт в балке подсветски оказывается сцентрованным. Если выводить только стандартный фонт или загружать свой фонт, но весь, то никаких проблем не возникает.
Однако, нашлись идиоты, что стали подгружать только часть фонта. От этого подгруженный фонт оказывается смещённым на линию. Кроме того, из-за в ATLAS$ в бегущей строке искажаются буквы (естественно, есть кракнутый ATLAS$ где это исправлено).
Такая же проблема с KEYALT$, т.к он тоже загружает только часть фонта, а не весь (исправление таких программ, это исправление одного байта). Естественно, KEYALT$ тоже имеется исправленный.
Вопрос с позицией символа в знакоместе (т.е делать по центру или смещённым, как в М2) сейчас актуален. Т.к я не знаю как лучше сделать в перетранслированных версиях М1 М2 М3 для КР580 и Z80.
Кстати, интересный вопрос, кто написал KEYALT$ - авторы ОРИОНА в 1992, или омские луксиане в 1993? До 1994 никакого KEYALT$ не было, смотрите дистрибутивы. Омские луксиане прислали мне KEYALT$ в 1994 и сообщили, что они его авторы. И я всегда так и считал, пока не нашел недавно док-файлы, где указано, что это разработка авторов ОРИОНА, причём 1992 года. Или это разные KEYALT-ы. Но почему оверлей имеет тоже самое имя FT01?
Вот потому-то монитор-3 по всем позициям всегда лучше.
ROM-диск в М3 определяется по наличию байта C3 в ROM-диске по адресу 7FD
И чем это "лучше"?
Допустим я хочу поставить свой загрузчик, который не ОРДОС, а что-то своё. Зачем мне в 07FDh лепить С3h ?
Как раз наоборот, алгоритм проверки первых двух байтов на различия весьма удачный. В случае отсутствия ПЗУ мы читаем "00 00", в случае пустой ПЗУ - "FF FF", в случае физического отсутствия порта ROM-диска читаем два одинаковых байта "мусора", и только в случае осмысленных данных производим загрузку. Т.е. фактически корректно обрабатываем все реальные ситуации.
- - - Добавлено - - -
...и риссовать рамки псевдографикой нельзя (оттого их при М2 всегда рисуют внаглую).
В Мониторе изначально нет псевдографики в принципе. Да и рисовать графику (в т.ч. рамки) с помощью тормозного 6-пиксельного драйвера - это издевательство над трудящимися :)
В любом случае отрисовку графики делают мимо п/п Монитора.
В любом случае отрисовку графики делают мимо п/п Монитора
Правильнее сказать мимо стандартных входов ROM-BIOS. Так делают только авторы ОРИОНА и их последователи, не понимающие, что п/п-ммы ПЗУ слишком убогие и не могут выполнять роль основного драйвера. Что вызвано фатальной ошибкой разработчиков, не понявших, что нужно ПЗУ более 2К, чтобы иметь хороший ROM-BIOS, что в значительной степени определяет качество машины.
На вектора ПЗУ загружаются драйверы разных шрифтов. И в них нет разрыва в 2 линии в графике фонта (почти как в РК86, но там это хоть имеет аппаратные причины, здесь же просто глупость). И в фонтах даже самых мизерных драйверов 4*8 и 5*10, и то есть псевдографика и она сплошная.
Кстати даже с фонтом с шагом в 8 байтов и знакоместе с высотой в 10 линий, выводится сплошная графика по вертикали. Используется принцип как в IBM PC в VGA, когда включён аппаратный фонт 9*14, а реальный фонт имеет размер 8*14. Тогда адаптер VGA повторяет в 9-й колонке содержимое 8-й колонки. Т.к в буквах 8-я колонка это межбуквенный интервал, то на буквы и цифры это не влияет, но псевдографику сохраняет сплошной. Точно также и здесь, только не по горизонтали, а по вертикали (не знаю понял ли кто-то, но не в этом суть).
В нормальных цветных оконных драйверах, когда открывается окно, рамочки там всегда чертятся псевдографикой. И так это на всех компьютерах в мире. И в моих драйверах есть функция окрытия окна, которая выполняется так. Сначала меняются оконные параметры. Затем содержимое нового окна сливается в буфер (буфер работает по принципу: последний зашёл первый вышел, что даёт возможность открывать море перекрывающихся окон и всё восстанавливать, причём в цвете). Затем окно очищается, раскрашивается, рисуется двойная рамка, на которой пишется заголовок окна. И всё это делает только один искейп-код (закрывает окно также один ESC-код), отчего писать программы при наличии оконного драйвера совсем просто. Не надо "шариться" по экрану отсчитывая адреса и рисуя там что-то внаглую (а для имитации закрытия единственного возможного окна, перерисовывая весь экран). И программа, например НОРТОН написанная для шрифта 6*10 годится и при других шрифтах и даже для машины с текстовым адаптером. Вот так устроены грамотные программы.
Вот стандартные ячейки оконности введённые в мониторе-2. Именно их используют все оконные драйверы, начиная с исторически первого драйвера для ОРИОНА В.Ивинских. К сожалению, те кто писал другие драйверы (кроме меня) никогда не дизассемблировали ROM-BIOS ОРИОНА, а авторы ОРИОНА, придумав это, до использования окон так и не добрались, что странно. ПЗУ оконность поддерживает, но программы не используют (возможно ушёл тот, кто это придумал). Именно оконностью, М2 кардинально отличается от М1.
.
HISCRN EQU 0F3CFH ; НАЧАЛЬНЫЙ АДРЕС ОКНА (high byte)
WDTSCR EQU 0F3D0H ; ШИРИНА ОКНА В БАЙТАХ
FRSTLN EQU 0F3D4H ; N ПЕРВОЙ СТРОКИ ОКНА
SCHIGH EQU 0F3D5H ; КОЛИЧЕСТВО СТРОК ОКНА
А если кому-то не хватает скорости, есть Z80. Да и при наличии желания легко турбировать КР580 в ОРИОНЕ до 3 МГЦ, причём при исправлении плющености экрана ОРИОНА. Как раз ставлю сейчас КР580 в ОРИОН (была собранная резервированная плата ОРИОНА, где всё запаяно ещё в 1994, она предназначалось для установки 8088, да так руки и не дошли), чтобы реализовать именно такую доработку ОРИОНА.
Допустим я хочу поставить свой загрузчик, который не ОРДОС, а что-то своё. Зачем мне в 07FDh лепить С3h ?
Несостоятельный довод. ПЗУ F800 устроено так, что по сбросу читает из ROM-диска именно 2К и делает JMP на BFFD. Т.е у Вас только 3 байта. Какую иную команду кроме JMP, вы можете туда поставить, чтобы не потерять управление? Так что на 7FD в ROM-диске всегда стоит C3. К монитору-3, Вы не подкопаетесь. Нет ничего в М2, что там было бы сделано лучше, чем в М3, т.к его делал грамотный программист.
Хотелось бы улучшить качество ROM-BIOS ОРИОНА
К сожалению, фатальные аппаратные ошибки при разработке ОРИОНА, не позволяют как-то существенно улучшить качество ROM-BIOS. В имеющиеся 2 кб ПЗУ, освободив в нём ~300 ячеек ничего путного не уместить. Хотелось бы иметь 12 кб, ну хотя-бы 8 кб. Но увы.
Что-то улучшить без аппаратных доработок нельзя. Самый простой и лобовой вариант, это напайка второго этажа РФ2, дающая дополнительные 2 кб. Конечно и это позволило бы как-то улучшить драйвер вывода, но не кардинально. Есть и ещё вариант, для бедных. Это "открытие" под-ПЗУ-шечного ОЗУ. Тогда ПЗУ отключается и становится нечитаемым, а вместо этого оказывается недоступное ранее ОЗУ текущей банки. При Z80 это не проблема, а при КР580 надо иметь какой-то порт управления (т.к системные регистры F800, F900, FA00, FB00 отключаются).
То, что под-ПЗУ-шечное ОЗУ по адресам F800, F8F8, F900, F9F9, FA00, FAFA портится при работе программ, не проблема (это легко учесть программно или даже сделать доработку по защите от записи). Расход деталей в варианте 1: РФ2, ТМ9, ЛА3. А в варианте для бедных - 2-3 корпуса логики (сам это я делал лишь на Z80, а на КР580 пока такой схемы нет).
Задаю вопрос. Есть ли у оставшихся пользователей ОРИОНА интерес к резкому улучшению ROM-BIOS ОРИОНА, что неминуемо требует расширения ПЗУ? Качественный ROM-BIOS резко упрощает разработку программ, при таком же резком повышении их качества и делает возможным даже новичкам в программировании делать красивые графические программы.
Есть ещё один вариант улучшения ROM-BIOS для программ в банке 0 (т.е для ORDOS и CPM-48К). Это придуманная прямо сейчас, идея оверлейного ROM-BIOS с размещением оверлеев, т.е драйверов экрана в банке 1. Никто этого ранее не делал, но это ненамного сложнее и немного тормознее. Это хорошая идея и она мне пригодится для ДОС в банке 0, т.к там мне фатально нехватает места для драйверов (~10 кб) и кода ДОС (~10 кб).
Ой... раз уж речь о аппаратных доработках, чуть не забыл ! Свою давнюю идею "перекорёживателя ОРИОНА", что вполне решает проблему ROM-BIOS. Суть работы перекорёживателя в том, что он перемещает плоскость графики в банку 1. Когда экран включён с C000 то всё как и ранее. Но если экран с 8000, то в банке 0 всё ОЗУ доступно программам, а в банке 1 на 8000 - плоскость цвета, а на 0000 - плоскость графики. Понятно, что при этом квазидиску B - кранты. Зато CPM-48К в банке 0 может работать на все 60К. ROM-BIOS грузится с ROM-диска. А ORDOS я могу переделать так, что диск B будет читаться из банки 2, а не 1 и так далее. Так что фантаты ORDOS не пострадают. Расход деталей 3 дешёвых TTL-корпуса.
В нормальных цветных оконных драйверах, когда открывается окно, рамочки там всегда чертятся псевдографикой.
Актуально на машинах с быстрым (аппаратным) выводом символов. Но не на Орионе.
А если кому-то не хватает скорости, есть Z80. Да и при наличии желания легко турбировать КР580 в ОРИОНЕ до 3 МГЦ
На 10 МГц Ориона-ПРО 6-битный вывод символов тормозной.
Несостоятельный довод. ПЗУ F800 устроено так, что по сбросу читает из ROM-диска именно 2К и делает JMP на BFFD
Да, действительно, я уже забыл про эту "фишку" с запуском через "верхушку".
Error404
05.05.2017, 18:32
Задаю вопрос. Есть ли у оставшихся пользователей ОРИОНА интерес к резкому улучшению ROM-BIOS ОРИОНА, что неминуемо требует расширения ПЗУ? Качественный ROM-BIOS резко упрощает разработку программ, при таком же резком повышении их качества и делает возможным даже новичкам в программировании делать красивые графические программы.
Отвечая только за себе - не особенно интересно. Т.к. всегда чего-то не хватит, и надо будет расширять какие-нибудь функции присадкой на вектора ROM-bios. А раз так, то не лучше ли сразу иметь загружаемый в ОЗУ драйвер, который как минимум не нуждается в перепрошивке ПЗУ при его модификации. Собственно поэтому всегда использовал только минимальное ПЗУ с загрузчиком, остальное грузил с носителя.
Есть небольшая ниша для расширенного ROM-биос в моих нуждах - если надумаю делать версию UZIX стартующую "на голом Орионе", а не из под CP/M, и тогда можно использовать подпрограммы из ROM. Но опять же, консольного ввода и вывода хватит уже того что был в М3, а 80х25 там все равно не будет (т.к. это надо использовать экраны в начале ОЗУ). Оконные функции тоже врядли нужны - Uzix или CP/M про них не в курсе и не используют, а приложение должно работать через ядро ОС (и поэтому содержать оконный код в себе) чтобы быть совместимым кросс-платформенно.
Хорошая иллюстрация - ОрионПРО, где всяких функций в РОМ-БИОС имеется предостаточно, но ими не пользуется никто.
Есть ли у оставшихся пользователей ОРИОНА интерес к резкому улучшению ROM-BIOS ОРИОНА?Отвечая только за себе - не особенно интересно
Вам не интересно, потому что Вы не фанат ORDOS и не используете других ДОС в банке 0. А в системах, что работают не в банке 0, проблем с качественным и удобным драйвером нет, для загрузки драйверов есть целая банка 0 (за вычетом экрана).
А пользователям ORDOS и других ДОС в банке 0 всё это недоступно, отчего они и вынуждены пользоваться только "родным" убогим драйвером из ROM-BIOS, который вообще ничего не умеет, кроме как выводить символы КОИ-7 с вертикальным разрывом в 2 линии, отчего не может рисовать даже псевдографику (не говоря уж о том, чтобы открывать-закрывать окна и двигать спрайты). Благодаря убогости ROM-BIOS, ОРИОН с точки зрения программирования для банки 0, фактически низведён до цветного РК86 с сменяемым шрифтом.
А программ для ОРИОН-ПРО с использованием его возможностей не писали потому что программисты для ОРИОНА просто не "пережили" переход на ОРИОН-ПРО. Все программисты ненавидят возиться с железом (т.к программирование намного интереснее). Поэтому все знакомые мне программисты предпочли уйти с ОРИОНА, чем "трахаться" много лет с его сборкой и настройкой. Да и настроить ОРИОН-ПРО из тысяч сумели единицы.
не лучше ли сразу иметь загружаемый в ОЗУ драйвер, который как минимум не нуждается в перепрошивке ПЗУ при его модификации
В этом-то и проблема. Куда в ORDOS или другой ДОС для банки 0 загрузить драйвер 12 кб являющийся расширением ROM-BIOS? Ведь в этой же самой банке экран, ДОС в 12 кб и если сюда мы загружаем оконный драйвер в 12 кб, то за вычетом кода программы у нас остаётся под дисковый буфер (нортона или редактора) ОЗУ с "гулькин нос", а ведь надо ещё найти место для большого буфера сохранения окон (для комфорта надо примерно 20 кб).
Кроме того драйвер в той же банке, где сама ДОС невозможен вот почему. Понятно, что разместить в ОЗУ банки 0 драйвер в 32К, содержащий драйвера всех шрифтов, графические подпрограммы и функции ROM-BIOS для работы с винтом, флопоми SD-картой не получится. Значит, остаётся иметь отдельные драйвера для каждого шрифта, а графику и поддержку винта и флопа откинем (пусть программист мучается и пишет это сам).
Итак, имеются драйвера всех шрифтов с размером от 2 кб до 12 кб. Если ДОС грузить на 12 кб ниже экрана, то в зарезервированное место мы сможем загрузить любой драйвер. Но уровень TPA фатально упадёт на 12К. Причём при загрузке драйвера в 2К, 10 кб в резервированном месте будут пропадать впустую. Если же я смогу переместить все драйверы в ROM-BIOS, то получу максимально высокий уровень TPA. А в концепции ORDOS вообще драйвера в 12 кб не предусмотрены.
Так что Ваш довод несостоятелен. Для ДОС ОРИОНА в банке 0 необходим хороший ROM-BIOS, иначе кроме программ уровня VC$ ничего сделать нельзя.
Интересно, хоть в каком-то новоделе ОРИОНА догадались поставить побольше ПЗУ?
Error404
05.05.2017, 20:40
Интересно, хоть в каком-то новоделе ОРИОНА догадались поставить побольше ПЗУ?
Так в Орионе ПРО и есть. Там целых два ПЗУ, в двух окнах памяти, первое 8к, второе - до двух мегабайт (я использую одномегабайтную 27c080).
OrionExt
05.05.2017, 21:02
barsik, мое мнение. Для меня достаточно М1 для наладки, М2 для работы. Я бы и М3 не использовал, если бы к нему небыли привязаны некоторые программы. Объем ПЗУ слишком мал для серьезных и объемных подпрограмм и драйверов. Пусть такие, как есть и остаются.
А вот подумать над расширяемым БИОС-ом стоит. Вот, допустим, прикрутили новую железку. Написали одну программу для этой железки. И все. А был бы с этой железкой БИОС глядишь, кто ни будь еще эту железку использовал в своем софте. Хотя бы ради спортивного интереса.
Как то уныло переписывать драйвер ВГ93 сотый раз:(
- - - Добавлено - - -
Как я тут писал, монитор кроме как для бутлоадера по сегодняшним меркам и не на что не годится.
М2 достаточно для загрузки с ROM-диска, а более и не нужно, ибо в первую очередь мониторный 6-битный вывод неюзабелен, имхо. К тому же с М2 работает всё классическое РК86/ОРДОС-наследие.
Все программные расширения прекрасно вычитываются из ром-диска и как правило запихиваются во вторую страницу, и хранить их в виде БИОС-ПЗУ практического смысла нет.
Максимум чего полезного можно было бы сотворить с монитором - это сделать "унисекс" поддержку клавиатур, имхо.
OrionExt
05.05.2017, 22:37
Максимум чего полезного можно было бы сотворить с монитором - это сделать "унисекс" поддержку клавиатур, имхо.
Вот интересно как "унисексить" клавы с 2048 байтами;)
- - - Добавлено - - -
МС клава - очень редкая. Еще от Корвета в то время подключали. Я вот бы от MSX клаву подключил бы. Клава весом 1/3 от всего компа – вечная!
Интересно, хоть в каком-то новоделе ОРИОНА догадались поставить побольше ПЗУ?
Так в Орионе ПРО и есть. Там целых два ПЗУ, в двух окнах памяти
Заметим, что ОРИОН-ПРО это не заслуга никого из присутствующих и отнюдь не новодел. Точнее новодел 1993 года, хотя одновременно и долгострой до 1998. Значит во всех платах новоделов ОРИОН-128 так и оставили 2 кб. Это ошибка. Ну хотя-бы второе ПЗУ РФ2 могли бы предусмотреть.
Что фанаты ORDOS перевелись? А что DS-DOS тоже не имеет драйверов и обходится, как и VC$ подпрограммами из ПЗУ? Кажется только А.Вакуленко и ещё тульские аделаидчики поняли, что шрифт 8*8 лучще, чем 6*8 и использовали драйвер. Оттого у них и получились нормальные программы. А те, кто ориентировался на убогий драйвер из ПЗУ смогли сделать только неинтересные программы в интерфейсе РК86.
Мне казалось, что каждый программист заинтересован в хорошем ROM-BIOS. Но вероятнее, просто никто не хочет больше программировать для ОРИОНА, оттого всем и плевать. Печально.
А мне не плевать. Так что, сделаю себе ROM-BIOS в расширенном ПЗУ, включаемом в окне 0...7FFF. Железо у меня уже сделано, правда не ПЗУ, а ОЗУ 0...7FFF на 62256, включаемом битом D7 порта FC. Осталось чуть переделать схему и странслировать туда для начала просто драйвер D8, размером в 11 кб. Собственно роль такого ПЗУ может играть и ОЗУ банки 1. И если подумать о схеме, как это сделать, то получится что-то очень похожее на Z80CARD-I из 1991, где тоже в области 0...7FFF можно было включить другое ОЗУ. Эта концепция и предполагалась для решения проблемы драйверов. А Z80CARD-II решала иную проблему.
Но я попробую и другую идею, пришедшую в голову сегодня, что не требует аппаратных изменений. Это сделать тормозной драйвер работающий в банке 1. Если драйвер в банке 0 кидал в область F000...F3FF подпрограммы раскраски, то теперь придётся иметь на F000 подпрограммы вывода графики, хотя фонт остаётся в банке 1. Такой драйвер будет тормознее, но не более чем на 20%. Интересно только на сколько разбухнет Z80 код в 10-12 кб, если его перевести на КР580. По счастью я не увлекаюсь индексными регистрами, поэтому перевод на КР580 возможен, хотя как показал опыт это довольно утомительное дело.
Кстати, была ещё одна идея аппаратной доработки, хоть и менее победительная, чем "перекорёживатель". Это иметь бит, который меняет экранные плоскости местами (инверсия на ЛП5 выборки банки при попадании в экран), что позволяло бы работать с обоими плоскостями как из банки 0, так и из банки 1 без использования некоммутируемого ОЗУ F000.
МС-7007 клава - очень редкая
Не согласен. Их сделали тысячи, очевидно для наборов для сборки РК86 РК-03 (они также стояли и в других промышленных ЭВМ). И оказалось сделали много лишних. Они целый год в 1991 продавались в магазине "Юный техник" и довольно недорого. Я купил 3 штуки. И пользовался ими на ОРИОНЕ до 1996. Когда понял, что эргономика у них хреновая. Слишком маленький ход клавиш и нет фиксации при нажатии. Но всё же это было лучшее, что было в 1991, т.к альтернативой была РК-клавиатура на кнопках МП16.
Ещё клавиатуру КОРВЕТА подключали
Да. С.Корокин сделал такое ПЗУ М2 и пропагандировал это в 1993. Я тоже возможно так сделаю, т.к имею неиспользуемую герконовую клавиатуру от КОРВЕТА.
Я вот бы от MSX клаву подключил бы
И какая же в ней матрица? А вот я пытался подключить дохлую IBM PC клавиатуру к ОРИОНУ. Но как понял, токопроводящая резина слишком высокоомна для ВВ55.
Как то уныло переписывать драйвер ВГ93 в сотый раз
Вооюще-то это не проблема. Я транслировал CP/M явно больше тысячи раз и даже не вникал, как эти подпрограммы работают. У меня есть include-файл FLOP.INC (есть также файл RKFLOP.INC и VINT.INC). И я в него не заглядывал с 1991 года (а зачем, если работает). Так что какая трудность в "переписывании" кода ВГ93? Какой INCLUDE модуль вместе с ДОС транслируется, такое железо в ДОС и получается. Так что у меня есть аналоги всех ДОС ОРИОНА для винта и для РК-КНГМД.
Для подъёма уровня TPA, в ROM-BIOS полезно, как и в IBM PC иметь подпрограммы чтения и записи сектора и подпрограмму форматирования дорожки. Для РК-КНГМД я так и делал и эти две п/п-ммы умешались в моё второе ПЗУ РФ2. Правда это было мне невыгодно, т.к у меня было много форматов (разное число секторов на треке для 3-х типов дисков и дисководов и ещё CP/M и РК-ДОС) и ПЗУ для этого использовать стало невыгодно, так что сейчас я храню во втором РФ2 просто кусок фонта (весь фонт 8*10 имеет размер в A00 и в РФ2 не влезает), что увеличивает TPA на те же 2К.
Вот интересно как "унисексить" клавы с 2048 байтами
Если имеется ввиду уместить драйвер MS и драйвер РК в одно ПЗУ, то раньше это действительно было абсолютно невозможно, но недавно я освободил в ПЗУ М2 ~300 байтов и теперь всё-же возможны кое-какие варианты.
Драйвер РК-клавиатуры 318 байтов. Драйвер MS-7007 422 байта, а есть лишь менее 300. Однако, часть кода одного драйвера есть и в другом, так что реально надо смотреть и пробовать. Может быть что-то и получится. Но придётся выкинуть МГ-подпрограммы и вообще всё, что возможно.
Желательна процедура автоматической настройки на тип клавиатуры. Надо придумать какой-то признак, чтобы ПЗУ могло узнавать какой драйвер подключать.
OrionExt
06.05.2017, 00:25
Что фанаты ORDOS перевелись?
Ордос хороша для минимальных задач. А дальше каждый пошел своим путем.
Как то уныло переписывать драйвер ВГ93 сотый раз
- - - Добавлено - - -
Я не Denn:v2_dizzy_tired2:
MC в силу технологий уже сгнил.
MSX (https://www.msx.org/wiki/Keyboard) - клац.
- - - Добавлено - - -
Была бы еще доступней MSX (если бы головой думали). А так 5кг веса. Два компа через тонкую пленку. Штук 5 кнопок в хлам. На шасси (пластмасса) срезаны направляющие (клавиатуры).
- - - Добавлено - - -
Пеепцц, barsik, вы зависли во времени (форума и его странных часов). Тут длинные сообщения …
- - - Добавлено - - -
У меня 23.. у вас 00…
OrionExt
06.05.2017, 14:13
Я транслировал CP/M явно больше тысячи раз и даже не вникал, как эти подпрограммы работают.
Это тупик.
Вот правильное решение.
;--- MAIN ROUTINES ------------------------------------------------------------
;### FDCOUT -> write sectors
;### FDCINP -> read sectors
;### FDCACT -> read and init media (only hardware and partion data, no filesystem)
Остальной аппаратно-зависимый код реализуется в БИОС-е.
OrionExt, не могли бы Вы изъясняться яснее. Смысл Вашего последнего поста непонятен.
Остальной аппаратно-зависимый код реализуется в BIOS-е
О каком BIOS-е идёт речь. Есть только ROM-BIOS ОРИОНА размером в 2 кб.
Только что, моё предложение расширить ПЗУ ОРИОНА не встретило понимания и с возмущением было отвергнуто прогрессивной общественнотью. Как я уже писал, на моих личных ОРИОН-ах ПЗУ чуть побольше (целых 4 кб), но и этого явно недостаточно. Т.к для ОРИОНА существуют, как минимум, 3 типа старых приводов, - это КНГМД на ВГ93 по схеме КОРВЕТА (это не считая экзотов типа SP-DOS), РК-КНГМД с несколькими кварцами (т.е с форматами до 880 кб) и винчестер (причём известны, как минимум, 3 или 4 варианта подключения IDE-винчестера к ОРИОНУ), а также несколько новых приводов (например, устройства на базе micro-SD).
OrionExt
06.05.2017, 17:37
О каком BIOS-е идёт речь. Есть только ROM-BIOS ОРИОНА размером в 2 кб.
ROM-BIOS ОРИОНА – это слишком громкое название. BIOS-а в Орионе никогда не было. А был Монитор, который успешно справлялся с возложенными на него задачами. Поэтому цепляться за него не имеет особого смысла и расширять на 2 Кбайта. Тут нужен именно расширяемый БИОС. Чтобы каждый мог добавить в него то, что ему надо (драйвер клавиатуры, дисплея, дисковода, часов, rs232 и т.д.). Вот как это сделать я пока слабо понимаю.
ROM-BIOS ОРИОНА – это слишком громкое название
Точное название. Название монитор справедливо только для М1 или М3. В М2 нет ни одной команды, а значит это только ROM-BIOS.
BIOS-а в Орионе никогда не было
Вероятно имелось ввиду, что хорошего ROM-BIOS у ОРИОНА никогда не было.
не имеет особого смысла и расширять на 2 Кбайта
Расширение ПЗУ до 4 кб было сделано в 1991 в составе платки Z80CARD-I. Изначально было ясно, что 2 кб слишком мало, а это был аппаратно самый простой и дешёвый вариант. С тех пор лишняя панелька и не снималась, т.к это оказалось очень полезно.
нужен именно расширяемый БИОС
Именно это и непонятно. Поясните о чём идёт речь. Как ROM-BIOS может быть расширяемым. Он же ROM - Read Only Memory, т.е не может меняться. И вообще, как Вы сможете что-то расширять, не расширяя одновременно ПЗУ?
И поясните главное. Для чего и для каких программ расширять ROM-BIOS. Потому-что, если это надо для ДОС в банках 1 или 2, то это один ROM-BIOS, а для банки 0, совсем другой. Причём для ДОС в других банках кроме нулевой, можно обойтись и без ПЗУ, используя ОЗУ банки 0, и называть это следует не ROM-BIOS, а драйвер с набором подпрограмм (которым полагалось бы быть в ПЗУ). ROM-BIOS это то, что в ПЗУ и для ДОС в банке 0 необходимо именно это. Если Вы ведёте речь о ДОС в других банках кроме нулевой, то здесь нет вопроса и обсуждать нечего.
Я нуждаюсь в ROM-BIOS который даёт большие возможности для программ в банке 0, но не отнимает в банке 0 ОЗУ отведённое для программ. И я вижу, что решить эту задачу можно только с помощью ПЗУ. Хотя и для ДОС в других банках ROM-BIOS полезен, т.к слишком хлопотно грузить эквивалентный драйвер в банку 0. Это значит, что каждая программа должна иметь механизм его загрузки и проверки.
OrionExt
06.05.2017, 20:07
Именно это и непонятно. Поясните о чём идёт речь. Как ROM-BIOS может быть расширяемым.
С каждой картой расширения идет свой BIOS. По аналогии как это сделано в MSX или PC-XT.
С каждой картой расширения идет свой BIOS. По аналогии как это сделано в MSX или PC-XT
Впервые эту идею применил Стив Возняк в 1976 году для Applle-I (и Apple-II). А авторы МИКРОШИ эту идею позаимствовали.
Чтобы иметь возможность включать ПЗУ в адресном пространстве на внешний разъём (слот) должен выводиться сигнал MEMDI (Memory disable), а на ОРИОНЕ это не предусмотрено.
Что речь идёт о идее встроить ПЗУ в КНГМД для ОРИОНА, как это сделано в КНГМД МИКРОШИ?
В Apple-II и в МИКРОШЕ было специально предусмотрено место, куда включается ПЗУ. В каких адресах может включаться ПЗУ внешней платки на ОРИОНЕ? Место не предусмотрено, значит только на месте ОЗУ или ПЗУ F800. А где именно? Универсальнее всего использовать участок F800...FFFF. Потому что для банки 0 для драйвера удобен адрес сразу ниже C000, а для банки 1 - сразу ниже F000.
Я не вижу в идее перемещения драйвера КНГМД в ПЗУ особой пользы. Это объём кода менее 2 кб, и это не так уж сильно обременяет код ДОС. И главное не даёт никаких решающих преимуществ для программ. Да и конструктивно, проще заменить панельку 24 ноги на панельку 28 ног на самой плате ОРИОНА, чем прикручивать к КНГМД ту же панельку, т.к на плате КНГМД не найти места для неё.
Если уж перемещать код в ПЗУ на плате КНГМД, то почему сразу не всю ДОС целиком, как это в РК-КНГМД для МИКРОШИ? Вот тогда удобство будет выше, - воткнул плату в слот, нажал на сброс и вот ты уже в ДОС. Только надо чуть доработать ПЗУ F800, чтобы при сбросе проверяло, включено ли в адресном пространстве ПЗУ расширения. Впрочем, всё то же самое получается при загрузке ДОС из ROM-диска, что я как раз всегда и использую уже более 20-ти лет.
Но всё это не то. Это не резкое улучшение качества ЭВМ, а просто мелкая и несущественная доработка. Это не решает проблемы ORDOS и других ДОС в банке 0, а именно это проблема. Чем ПЗУ на внешней плате лучше, чем "теневое ПЗУ" 0...7FFF в самом ОРИОНЕ, содержащее ROM-BIOS?
ROM-диск все считают хорошей идеей. А я нет. Намного лучше было бы, если бы в ОРИОНЕ ROM-диск включался бы в адресном пространстве, наподобие картриджа в Денди. Это одновременно заменяет и ROM-диск для хранения файлов и расширение ROM-BIOS. Подумайте сами, насколько качественнее стало бы ПО ОРИОНА, если бы вместо "болтающегося" внешнего ROM-диска в ОРИОНЕ изначально стоял бы просто разъём для установки доп.ПЗУ (да и ППА F500 экономится).
OrionExt
06.05.2017, 21:22
Ну не знаю. А мне такой подход нравится. Платы расширения со своим биос-ом (как пример) позволяют делать контроллеры дисковода на разных микросхемах. И дают возможность заниматься творчеством. А так собрал железку на ВГ93 и все.
Error404
06.05.2017, 22:13
ROM-диск все считают хорошей идеей. А я нет. Намного лучше было бы, если бы в ОРИОНЕ ROM-диск включался бы в адресном пространстве, наподобие картриджа в Денди. Это одновременно заменяет и ROM-диск для хранения файлов и расширение ROM-BIOS. Подумайте сами, насколько качественнее стало бы ПО ОРИОНА, если бы вместо "болтающегося" внешнего ROM-диска в ОРИОНЕ изначально стоял бы просто разъём для установки доп.ПЗУ (да и ППА F500 экономится).
В Орион-ПРО так и сделано. :)
РОМ-диск объемом до 2Мб (256 страниц по 8кб) в адресном пространстве. Это вторая из ПЗУ (ROM2), в ее начале Авторы разместили Монитор (команд на пятнадцать), Тест железа, конфигуратор, менеджер расширенной памяти (но максимум только лишь 512кб), Ордос, CP/M стартующую из ПЗУ (вот только не умеющую работать с этой ПЗУ - стартует она из ПЗУ и первым делом лезет в дисковод :) ). А дальше в расширении каждый может разместить что угодно (у меня например там своя CP/M но не только сама она как у авторов, но и диск с частоупотребимыми программами к которым она имеет доступ - ROM один из носителей).
А в первой ПЗУ (ROM1, 8к тоже в адресном пространстве) драйверы обоих типов клавиатур, шрифты, оконные подпрограммы, мышь, подпрограммы для доступа к дисководам и жесткому диску).
Вам срочно нужен ОрионПро. :) Я кстати подумываю развернуть агитацию на еще один ограниченный выпуск - кое-какие мелочи в шаблоне поправил и просто детали есть.
Вам срочно нужен ОРИОН-ПРО
Нет не нужен. Если бы он даже был, я бы его и включать не стал. ОРИОН-ПРО - это не интересно. И ROM-BIOS там не такой, как хотелось бы, хотя его писал В.Пушков.
В качестве ЭВМ с большим ПЗУ у меня есть Супер-Турбо-4 С.Караваева, который уже в 1993 понял, что 2 кб ПЗУ это слишком мало, оттого применил 27256 с возможность программно включать её в адресах 0...7FFF, чтобы можно было расширить ROM-BIOS до 32 кб. Кстати именно такая архитектура работы ROM-BIOS и в западных 8-ми разрядках середины 80-тых, т.е ПЗУ должно быть "теневым" и включаться только на время прогона кода в нём.
У меня на той плате ОРИОНА, что работает (остальные 6 штук дохлые) стоит всего одно ОЗУ 62256, как 32К в банке 4 (т.е общее ОЗУ 241 + 32 кб). Но сейчас думаю, что более разумное использование 62256, это его использование для ROM-BIOS (что к тому же удобнее, чем 27256 на этапе отладки). Тогда, как на IBM PC, где при старте ROM-BIOS из ПЗУ копируется в ОЗУ (в ОЗУ скорость выше), можно грузить ROM-BIOS в 62256 из ROM-диска или откуда-то ещё.
Управление включением "теневого ROM-BIOS" кажется придётся делать по STA FB00 битом D7 (не по OUT FC). Хотелось бы по STA FC00, если этот порт на КР580 возможен. Тут нужен такой порт, что работал бы, как при КР580, так и при Z80 (в т.числе установленными по схеме ОРИОН-СЕРВИС), и не конфликтовал бы ни с какими клонами ОРИОНА. Что можете посоветовать?
Тут вопрос с портами STA FC00, STA FD00, STA FE00. Кажется, из-за упрошённой схемы дешифрации в ОРИОНЕ, при адресации в них произойдёт попадание в порты F800, F900, FA00, а команда OUT FF при КР580 попадает в порт FB00 (при Z80 этого нет, если команды OUT не лезут в память, т.е если нет КП11-тых подменяющих старшие адреса младшими при IN/OUT). Удачно, что при Z80 установленном без КП11, имеются не только порты OUT F8, F9...FF, но сохраняется и базовый порт STA FB00 (у меня он управляет ТУРБО/НЕТУРБО). Важно, что команда STA FB00 работает и при Z80 по схеме ОРИОН-СЕРВИС.
Поэтому, если управлять ROM-BIOS-ом портом OUT FC, то при КР580 это будет запись в адрес FCFC, т.е в порт STA FC00, что, возможно, эквивалентно STA F800, т.е произойдет неприятность. Как же при КР580 управлять включением "теневого ПЗУ" ?
Ведь на ОРИОНЕ с КР580 есть только свободный порт STA FB00, причём лезть в него по OUT FB нельзя, т.к при Z80 это включает что-то другое. Поэтому, видимо, для управления ROM-BIOS-ом придётся использовать порт STA FB00, что неприятно, т.к все мои ДОС придётся перетранслировать (этим портом они включают НЕТУРБО при работе с НГМД).
Никто не хочет проверить, куда в ОРИОНЕ с КР580 и в эмуляторах попадают команды STA FC00... ?
Error404
07.05.2017, 10:03
Управление включением "теневого ROM-BIOS" кажется придётся делать по STA FB00 битом D7 (не по OUT FC). Хотелось бы по STA FC00, если этот порт на КР580 возможен. Тут нужен такой порт, что работал бы, как при КР580, так и при Z80 (в т.числе установленными по схеме ОРИОН-СЕРВИС), и не конфликтовал бы ни с какими клонами ОРИОНА. Что можете посоветовать?
Тут вопрос с портами STA FC00, STA FD00, STA FE00. Кажется, из-за упрошённой схемы дешифрации в ОРИОНЕ, при адресации в них произойдёт попадание в порты F800, F900, FA00, а команда OUT FF при КР580 попадает в порт FB00 (при Z80 этого нет, если команды OUT не попадают в память, т.е если нет КП11-тых подменяющих старшие адреса младшими при IN/OUT). Удачно, что при Z80 установленном без КП11, имеются не только порты OUT F8, F9...FF, но сохраняется и базовый порт STA FB00 (у меня он управляет ТУРБО/НЕТУРБО). Важно, что команда STA FB00 работает и при Z80 по схеме ОРИОН-СЕРВИС.
Поэтому, если управлять ROM-BIOS-ом портом OUT FC, то при КР580 это будет запись в адрес FCFC, т.е в порт STA FC00, что, возможно, эквивалентно STA F800, т.е произойдет неприятность. Как же при КР580 управлять включением "теневого ПЗУ" ?
Ведь на ОРИОНЕ с КР580 есть только свободный порт STA FB00, причём лезть в него по OUT FB нельзя, т.к при Z80 это включает что-то другое. Поэтому, видимо, для управления ROM-BIOS-ом придётся использовать порт STA FB00, что неприятно, т.к все мои ДОС придётся перетранслировать (этим портом они включают НЕТУРБО при работе с НГМД).
Мысль задействовать STA FB00 архиверная: этот неиспользуемый порт мне тоже глаза мозолит - готовый селект для чего-нибудь, я даже одно время подумывал его использовать для расширенных страниц РОМ-диска (как мы делаем на Ревизии-512), но оставил OUT FE как уже прижилось и чтобы не отнимать последний порт у владельцев 8080. Только по битам все равно я предложил бы сделать вариант унифицированный с OUT FB - учесть как оно в Z80CardII (вдруг в каком из клонов OUT FB и STA FB "склеены" аналогично портам F8..FA). Т.е. бит D7 лучше не переключать - нечаянно включив диспетчер можно получить "улёт" на каком-нить клоне, а вот комбинация D7=1=const=disp_off + D0..D4=page_address (обычно эти биты D0..D4 играют роль только при включеном диспетчере 16к, т.е. при D7=0) дает адресацию для 32 сегментов extROMBIOS (ставим TM9 и при D0..D4=0 по reset работает стартовый кусок 2к). Т.е. смело можно ставить W27C512 - удобнейшую эл. стираемую ППЗУ которую из Китая можно взять за 40 рублей.
SYR-ALEX
07.05.2017, 10:24
Раз зашёл разговор о расширении BIOS , то почему бы не вспомнить спектрумовский TRDOS . Переходим на нужную подпрограмму ,в этот момент происходит подмена ПЗУ (в которой находится модифицированный драйвер целевого устройства) после завершения задачи теневое ПЗУ отключается включается родное и будет Вам счастье.
- - - Добавлено - - -
При этом объём ПЗУ ограничен лишь фантазией автора . Вспомните хотя бы SMUC .
Бит D7 лучше всегда иметь в 1, вдруг в каком из клонов OUT FB и STA FB "склеены" аналогично портам F8...FA
Да, пожалуй, но и тут есть варианты... "склеенность" можно использовать во благо. А "склеены" эти порты, если стоят КП11 по схеме ОРИОН-СЕРВИС, чтобы команды IN/OUT при Z80 попадали в ОЗУ. Что плохо тем, что лишает нормальных команд IN/OUT, в то время как КР580-программ использующих команды IN/OUT в качестве команд LDA/STA, я не встречал, так что и ставить КП11 изначально не имело смысла.
Думаю даже лучше окно ПЗУ сделать в 16К, используя бит D0 для управления адресом A14 ПЗУ, что имеет плюсом то, что тогда из ROM-BIOS можно работать с экраном 4000, дисковый буфер размещать ниже 8000 и при открытии окна сохранять окно в адресах 4000...BFFF (а только потом скидывать его в ORDOS-файл на квазидиске.
Дополнительный плюс при окне "теневого ПЗУ" в 16К заключается в том, что тогда на ЭВМ, где в окне 0...3FFF можно включать другие участки ОЗУ, можно эмулировать ROM-BIOS в ПЗУ. Вот тут-то и "возможны варианты...", как указано в первой строчке.
Если в машине с Z80 сознательно "склеить" порты FB и FB00", а на КР580 сделать так, что бит D7=1 выключает ПЗУ в окне 0...7FFF, а бит D7=0 включает "теневое ПЗУ" в этом окне, то можно получить совместимость с архитектурой Z80CARD-II. Речь о 100% совместимости снизу вверх, т.е программы ОРИОНА использующие ROM-BIOS смогут работать на ОРИОНЕ с Z80 с диспетчером ОЗУ.
100% совместимость не нужна. А если нужна, то тогда двумя 16К-сегментами хранящим код ROM-BIOS удобны сегменты B3:0000...3FFF и B3:4000...7FFF. Тогда включение "теневого ПЗУ" (или его копии в ОЗУ при Z80) будет командой STA FB00 с числом 0000.1100B в регистре A. При КР580 биты D3,D2,D1 не влияют, а бит D0 совместим, отчего и возникает100% совместимость.
Но достаточно частичной, т.е логической совместимости, что позволит делать программы для КР580/голый Z80 с ROM-BIOS, одновременно транслируя их в варианте для Z80CARD-II, для чего достаточно использовать условную трансляцию (STA FB00 для Z80 меняется на OUT FB). Тогда в какой-то дальний 16К сегмент ОЗУ машины с диспетчером ОЗУ с окном 16К грузится копия ROM-BIOS и включается по OUT FB (вместо STA FB00 для КР580).
Думаю, бит D6 можно резервировать для включения прерываний (вдруг и на КР580 возможны прерывания), бит D5 пусть резервируется для отключения ПЗУ F800 (режим FULL-RAM при КР580 не сделать, т.к тогда и порт FB00 исчезает и без ИД7 для команд OUT компьютер зависнет). Тогда для включения "теневого ПЗУ" остаётся только бит D4, что ограничивает объём ПЗУ до 256 кб (и этого явно хватит).
Переходим на нужную подпрограмму, отчего автоматически происходит подмена ПЗУ
Автоматическое переключение это слишком много лишних деталей. Традиционное управление портом проще.
OrionExt
07.05.2017, 15:01
Почитал, вот мое предложение.
https://lh3.googleusercontent.com/At3MogQNRdroIAfEBOKhz-39iIwcXHh1EWPY16gzX-X4Se614EtrMVzthtkz7Qj900wZ2ZXweBpOCU4QMrTXCeDbmfGn IbcLkyJYYDqhlYDnmoQYI0yzacKKeJJQBJGGf6px5K_OU1pFte VygiGyisZzk3smTkNv7t53p5EqB825youK4nGJPQ9EImcyE5ix yb6dZFJNCAHKDIFmEhugB8mHhLNXn3_raoDgaARJmnNW6BOlRm 2XrCZ683QQgHw9uLB-0QWXrS6PGb2fnHbHtwKSsVgOQekEXPybVbsY2lO5WEIpJy_vAp JUu-Xx1khtKuF9bsO1x4a5quvjGRTSyV9DjoGuU9vJ8zLIF4oM3Anm svwp7y0V8aa2s9UHRHdWKxqalh1z0iBZ8_AmQRM6nELEIAAnon XiB9smiPMTw4Ko5w9ATAZORiGtaiHGTaxt3TDOxtuFowH9NNR8 kNFw6CtO0zGR1lhYEBbsoukQzxy7ojTEBiiA3QR0TbinM3V6qz QaxHlzKLjJO7dMNirMzyglWB9Fw8fYCtPCkECvKcOBWJk5JLfh iSRn3bEwUN72hs96dME6Wua5iTIUkJTbV7L15a-DJ3heGZ-uK1TTsi8s8BYE9tisMxJPsCHqtP8GbtoraeEdpnz_41fxFcT15 yGWEhqpHkXeXm0vuA2uHw=w259-h319-no
ExtROM/RAM - 0000..1FFF (диспетчер включен)
RAM - 2000..3FFF (диспетчер включен)
Таки участок не переключаемого озу нужен для хранения хуков, служебных подпрограмм, служебных ячеек.
- - - Добавлено - - -
Первая карта расширения – ExtROM с адресом 0, RAM, порт FB00. ExtROM – инициализирует (и что то там еще) железку с портом FB00.
Последующие карты расширения (ExtROM/RAM с адресом 1..31): клавиатура, текстовый экран и т.д.
Мега!!! Сист. порт 4 (разъем Х2:В29):)
Предлагаю Вашему вниманию один малоизвестный вариант Турбо для медленных ОЗУ (т.е когда РУ5-тые на том же такте в 2.5 МГЦ). Как видите, здесь WAIT не используется, т.к другой принцип работы.
Принцип синхронизации КР580 и ОЗУ в ОРИОНЕ (и СПЕЦИАЛИСТЕ) основан на доступе во время машинного такта следующего за тактом в котором выдаётся сигнал SYNC. Этот сигнал задерживается на такт и этим сигналом DSYNC (Delayed Sync) разрешается доступ процессору. DSYNC формируется стробированем сигнала SYNC клоком Ф2. При Z80 SYNC эмулируется из /MREQ и /RFSH и называется ZSYNC. Проблема при турбировании в том, что длительность обращения процессора должна длиться весь этот машинный такт. Отчего при клоке Z80 в 5 МГЦ и приходится задерживать процессор сигналом WAIT. В данной схеме это достигается тем, что сигнал DSYNC переключает рабочий клок Z80 с 5.0, 7.5 или 10 МГЦ на медленные 2.5 МГЦ.
С помощью данной схемы при клоке Z80 в 5 МГЦ реальный такт составляет 3.55 МГЦ, а при клоке 7.5 МГЦ и 10 МГЦ - существенно выше (точные данные ускорения не сохранились).
Как видите по ускорению данная схема не имеет преимуществ перед схемами на базе WAIT. Т.е при клоке 5 МГЦ то же самое скромное ускорение на 41 или 42%. Однако известны схемы Турбо дающие ускорение 75% и даже 85%. Ускорение 75% согласно городской легенде из 1993 даёт какая-то вариация на тему схемы Z80 от ОРИОН-СЕРВИС с напайкой 20-ти ногих буферов вторым этажом. А ускорение 1.85 даёт какая-то моя схема из 1999 года (кажется схема с тактированием в 7.5 МГЦ).
Но данную схему я привёл потому, что она является отправной точкой для получения схемы турбирования в 1.72 раза. Чтобы на данной схеме получить такую скорость, достаточно убрать инвертор по цепи от D7/6. При этом будут проходить тесты памяти в 1.72 раза быстрее, но по экрану будут бегать блёстки (помехи). И какие-то команды при этом, возможно, не работают, т.к тесты проходят, а мониторы по неизвестной причине не работают, что странно и необъяснимо. Предполагаю, что надо как-то задействовать сигнал /M1, как в схеме Супер-Турбо.
Итак, если удастся добиться надёжной работы этой схемы, невзирая на экранные помехи, то это позволит увеличить скорость ОРИОНОВ на Z80. Тогда, чтобы помехи не мешали будем использовать ускорение 1.72 во время бордюра (когда помехи на экране никого не волнуют), а во время вывода растра будем довольствоваться ускорением в 1.41. Аппаратно это решается элементарно, - использованием в качестве управляемого инвертора ЛП5, на второй вход которого заводим сигнал BORDER (D13/5).
Удобно использовать кварц 28 МГЦ, что при делении на 3 даёт пиксель-клок в 9 МГЦ. Для работы с таким пиксель-клоком коэффициент деления счётчиков видеогенератора меняется (экран становится менее плющенным). А при делении на 4 получаем клок Z80 в 7 МГЦ, что вполне по силам обычному Z80B. За счёт этого получаем реальный (эффективный) такт немного ниже 5 МГЦ, но ОЗУ при этом на медленном такте в 2.25 МГЦ и не перегреваются. При кварце 30 МГЦ и соответственно такте Z80B в 7.5 МГЦ и старом пиксель-клоке в 10 МГЦ (отчего экран плющенный) имеем скорость не менее 5 МГЦ.
Данная схема будет работать, если выход D2/9 инвертировать, а D7/6 нет. Но ускорение - обычные 1.41 раза. При этом на экране помехи, но мониторы работают. Можно инвертировать D2/9, а вместо такта 2.5 МГЦ подать /RAS, то будет тот же результат 1.41 и помехи. Вместо /RAS на ТМ2/11 можно подать D2/8.
Если Ваша ВВ55 ROM-диска не тянет такт 5.0, 7.5 (или 10) МГЦ, то придётся применить для неё традиционную схемку с WAIT (в приложении). Для ППА клавиатуры такой проблемы обычно нет до такта 8.5 МГЦ. Это связано с тем, что с портом клавиатуры процессор работает только побайтово, что обеспечивает большие интервалы между обращениями в ППА. А с ROM-диском используются команды работы со словами, т.е типа LD (F501),HL, при которых происходит сразу два обращения с минимальным интервалом между ними, чего ППА не переносит. Избавиться от этого можно только переписав все программы работающие с ROM-диском, но проще применить один вентиль из ЛЛ1.
Давно разыскивается схема ОРИОН-СЕРВИС дающая Турбо в 1.75 раза. Другие варианты схемы Z80 от ОРИОН-СЕРВИС дают Турбо 1.25.
Error404
08.05.2017, 10:03
Турбирование с переключением частоты по SYNC мы используем для Z80 в ревизии-512. Схема там получается простейшая (экивалентная примененному выше коммутатору на КП2 кроме инверсии 5МГц):
http://zx-pk.ru/attachment.php?attachmentid=60657&d=1492195671
Она прекрасно работает на 5Мгц, но при подаче 10Мгц вместо 5 Мгц, она не заводится. Не знаю, станет ли она работать на 10МГц (честных 5..6), если вместо SYNC подать DSYNC на ТМ2?
- - - Добавлено - - -
Если получится завести эту схему на 10МГц, то субъективно, скорость Ориона-128 догонит Орион-ПРО.
получается эквивалентная схема, за исключением инверсии 5 МГЦ
Нет. Не получается эквивалентная схема. И инверсия не 5 МГЦ, а 2.5 МГЦ (D7/6). Не эквивалентная потому, что в моём варианте используется /DSYNC, т.е процессор обращается в то же самое время, как и при Z80 на такте 2.5 МГЦ (кстати, в схеме Z80 DSYNC укороченный). А у Вас Z80 обращается при выдаче процессором самого SYNC, точнее ZSYNC.
От Adelaide из Тулы было 3 схемы ТУРБО 1.42. В двух из них использован WAIT, а в одной из них коммутируется клок, но не сигналом SYNC, а сигналом /MREQ. Эта Ваша схема делает то же самое, но использует сигнал SYNC.
Откуда взялся этот вариант с SYNC ?
Считая 3 схемы от Alelaide, мою схему с WAIT, приведённую выше мою схему с коммутацией клока и эту схему с SYNC, уже получается 6 вариантов схем ТУРБО на 142%.
Т.е схемы Турбо на 1.41 не актуальны. Интересует схема Турбо на 175% от ОРИОН-СЕРВИС, которую я не видел, но мне говорили о ней информированные люди. Или же интересует чужая схема Турбо 200% и схема ОРИОН-СЕРВИС, где клок 10 МГЦ, а ОЗУ на 5 МГЦ, что должно давать скорость примерно 7.5 МГЦ.
Мне больше нравится схема простого Турбо (что привожу во вложении), хотя и не очень понимаю как она работает.
Как сделать в сообщении, чтобы рисунок из вложения этого-же поста был в сообщении рисунком? Понятно, что нужен тэг 'IMG', но как узнать номер вложения.
Error404
08.05.2017, 14:10
Нет. Не получается эквивалентная схема. И инверсия не 5 МГЦ, а 2.5 МГЦ (D7/6 это обычный такт 2.5 МГЦ при установке Z80). Не эквивалентная потому, что в моём варианте используется /DSYNC, т.е процессор обращается в то же самое время, как и при Z80 на такте 2.5 МГЦ. А у Вас Z80 обращается при выдаче процессором самого SYNC, что теоретически вообще не может работать !!!
От Adelaide из Тулы было 3 схемы ТУРБО 1.42. В двух из них использован WAIT, а в одной из них коммутируется клок, но не сигналом SYNC, а сигналом /MREQ. Эта Ваша схема делает то же самое, но использует сигнал SYNC. Непонятно как это может работать, ведь SYNC возникает, в такте Т1, а Z80 во всех остальных схемах обращается уже в следующем такте, используя стробированный SYNC, задержанный на 1 такт, когда исходного SYNC уже давно нет и значит такт на Z80 уже снова 5 МГЦ, отчего его обращение продлится только пол периода в 400 НСЕК. Не поясните как это работает?
Откуда взялся этот вариант с SYNC ?
Это один из аделаидовских вариантов из ранних 90-х что ими было выпущено "в свет" в виде PENX-картинок для Ордос примерно в том же пакете, что и их PENX-картинки по переделке Z80 Орион-Сервиса в Z80CardII. Только в оригинале там были ЛЕ1+ТМ2, где ТМ2 была нужна только для устранения дребезга кнопки Турбо(RS-триггер) и стробирования клоком момента включения режима Турбо. ТМ2 я выкинул заменив простейшим джампером, т.к. на работающем компе туда-сюда щелкать "Турбой" - это пижонство времен SX-40 и кнопки LO/HI. :)
Эта схема не инвертирует ни 2,5 такта, ни 5,0 - вообще не очень понятно зачем такт инвертировать в зависимости от режима "турбо".
Как сделать в сообщении, чтобы рисунок из вложения этого-же поста был в сообщении рисунком? Понятно, что нужен тэг 'IMG', но как узнать номер вложения.
Я просто открываю картинку вложения, браузером смотрю что за ссылка для него и далее этоу ссылку вставляю как [ IMG]. Для вставки картинок другого поста по ссылке способ очень удобный, надо ли такое делать для вложения текущего поста - ХЗ.
не очень понятно зачем такт инвертировать в зависимости от режима "турбо"
Инвертировать надо не в зависимости от режима ТУРБО/НЕТУРБО, а сигналом BORDER. Потому, что вышеприведённая схема с инверсией D7/6 даёт ТУРБО лишь в 1.41, а без инверсии уже 1.72 (но с помехами). Оттого при обратном ходе лучей прогон идёт на повышенной скорости (а помехи экрану при этом не важны).
Привожу оригинал схемы Турбо с коммутацией клока от Adelaide (без триггера стробирующего тумблер). В ней нет не только сигнала SYNC, но даже и сигнала DSYNC. Я предполагаю, что в Вашей схеме опечатка и сигнал не SYNC, а DSYNC, т.е SYNC задержанный на такт, т.к только тогда Z80 выполняет физическое обращение. Сигнал DSYNC (D13/9) иногда называют сигналом C/V (computer/video), только V (как и слово video) с чёрточкой над ним. Никаких ORDOS-рисунков в формате PENX$ не видел, мне схемы присылали на бумаге.
Привожу схему ТУРБО 10 МГЦ. Она делается после ТУРБО 200%, точнее достаточно, в соответствии со схемой 200%, поменять лишь сигналы /RAS и /CAS, т.е перевести ОЗУ на двойтой такт в 5 МГЦ. На Z80H надо подать такт 10 МГЦ и делается эта схема. Как она работает, я уже не знаю, хотя сам её придумал и отмакетировал 20 лет назад. ZSYNC это имитация SYNC из сигналов /MREQ и /RFSH. Было бы неплохо, если бы у кого-нибудь хватило ума понять как работает эта схема и изложить нам принцип работы.
С этой схемой использовалась ещё схема запрета ненужных обращений к ОЗУ видеочасти, что в 2 раза сокращает разогрев ОЗУ (у меня работало 10 МГЦ без вентилятора). Эта схема запрещает /CAS от видео-части во время сигнала BORDER, а также из 4-х возможных обращений к ОЗУ видео части за период сигнала 111, допускается только одно обращение, что существенно сокращает разогрев ОЗУ.
Есть ещё схема асинхронного тактирования Z80 произвольным тактом, которая выгодна при быстром Z80, с которым выгодно также использовать быструю статику, работающую без WAIT.
на работающем компе туда-сюда щелкать кнопкой "Турбо" - это пижонство времён 386 DX40
Ручное переключение может и пижонство, но программное переключение ТУРБО-НЕТУРБО иногда насущная необходимость. Т.к на некоторых образцах в Турбо режиме падает надёжность досковода (а иногда наоборот улучшается). Также в RK-DOS всё основано на задержках, оттого в ТУРБО не работает. Поэтому вместо кнопки Турбо заводят сигнал HLD (Head Load) с ВГ93, чтобы при работе с НГМД всегда был режим НЕТУРБО.
Error404
08.05.2017, 20:41
Привожу оригинал схемы Турбо с коммутацией клока от Adelaide (без триггера стробирующего тумблер). В ней нет не только сигнала SYNC, но даже и сигнала DSYNC. Я предполагаю, что в Вашей схеме опечатка и сигнал не SYNC, а DSYNC, т.е SYNC задержанный на такт, т.к только тогда Z80 выполняет физическое обращение. Сигнал DSYNC (D13/9) иногда называют сигналом C/V (computer/video), только V (как и слово video) с чёрточкой над ним. Никаких ORDOS-рисунков в формате PENX$ не видел, мне схемы присылали на бумаге.
Т.е. если в Аделаидовской схеме заменить элемент ЛА3 на существующих элементах той же ЛЕ1 что уже применена, то получим как раз ту схему о которой я и говорил (http://zx-pk.ru/threads/6066-orion-128-raznoe.html?p=911979&viewfull=1#post911979) (с учетом подключения к MREQ а не SYNC, который при использовании Z80CARDII по сути тот же MREQ но с подмешанным RFSH - может от RFSH и глюки в режиме 10М? хз как оно там интерферирует).
- - - Добавлено - - -
Инвертировать надо не в зависимости от режима ТУРБО/НЕТУРБО, а сигналом BORDER. Потому, что вышеприведённая схема с инверсией D7/6 даёт ТУРБО лишь в 1.41, а без инверсии уже 1.72 (но с помехами). Оттого при обратном ходе лучей прогон идёт на повышенной скорости (а помехи экрану при этом не важны).
и получается, в схеме на ЛЕ1+ЛА3 оба клока (и 2,5 и 5,0) инвертированные, а на единственной ЛЕ1 - нет (передаются в той же фазе что и снимаемые с линий 42, 43). Это как-то может влиять на режим 10М (если вместо 5М в схему подать 10М)?
то получим как раз ту схему
В предложенной Вами модернизации аделаидской схемы получается инвертированный клок относительно оригинала. Возможно это не так уж важно, но всё-же это не одно и то же.
Я вообще не понимаю как работают аделаидские схемы с коммутацией клока. Я сразу же назвал эти их схемы "химическими" и не зря. Не на всех образцах они работали. А вот моя схема сделана по чёткому понятному "лобовому" алгоритму. По ZSYNC взводится триггер WAIT и длится один такт частоты 5 МГЦ, отчего длительность обрашения к ОЗУ длится два периода частоты 5 МГЦ, т.е один период частоты 2.5 МГЦ, что и требовалось. И если убрать стробирование тумблера и индикацию светодиодом, моя схема не сложнее. В ней существенное отличие в клоке Z80. В ней вместо 5 МГЦ для формирования CLK используется 42^66 с инверсией задержанный на 3-х вентилях.
Но сама идея простая. Когда началось обращение к ОЗУ процессора, т.е по фронту ZSYNC (который равен MREQ, если при этом нет /RFSH) взводится триггер WAIT. Затем надо держать WAIT 1 маш.такт, если клок Z80 равен 5 МГЦ, два такта, если клок Z80 равен 7.5 МГЦ и три такта, если клок Z80 равен 10 МГЦ. Именно так эта идея у меня работала и без проблем. А про аделаидскую схему, я вообще ничего сказать не могу. Сомневаюсь, что эта "химия" сможет работать на 10 МГЦ без напайки 20-ти ногих регистров.
интересует принцип работы схемы Турбо 200% от ОРИОН-СЕРВИС с напайкой 20-ти ногих регистров вторым этажом
Чтобы разработать новый искомый вариант Турбо-200% достаточно узнать принцип работы схемы Турбо-200% от ОРИОН-СЕРВИС (которая, якобы, очень надёжная). Этот принцип неизвестен пока.
При чтении ускориться нельзя (т.к данные для защёлкивания готовы только к концу периода /RAS /CAS в 2.5 МГЦ), если только не читать из скоростной дублирующей параллельной памяти, не тормозя Z80.
Но думаю, можно убрать WAIT при записи, если при этом защелкивать данные в регистре, который хранит записываемые данные до конца периода /RAS /CAS 2.5 МГЦ. Думаю, что за счёт защелкивания данных при записи и достигается Турбо 1.75.
Для реализации этой концепции, придётся на ВА86 (АП6) буфера процессора напаять ИР82, который должен открываться (т.е /OE=0) на период до конца /CAS, по которому данные фиксируются в РУ5-тых. Таким образом пол периода обращения к ОЗУ (2.5 МГЦ) сигнал от процессора проходит через обычный буфер данных, а затем по переднему фронту /MREQ защёлкивается в ИР82, в тот же момент буфер данных закрывается, а выходы ИР82 открываются и продолжают выдавать в шину записываемые данные.
Тогда по записи WAIT не формируется, что и даёт ускорение с 1.41 до 1.75.
Ещё можно попробовать получить схемы Z80 на 5 и 10 МГЦ из плат Супер-Турбо С.Караваева. В которых использован другой принцип, использующий сигнал /M1 (тогда как в остальных схемах сигнал /M1 вообще не используется). Сигнал WAIT в этой схеме Z80 не используется. Достоинство схемы С.Караваева в том, что в ней работают низкоскоростные Z80 (КР1858ВМ1 или любой Z80B), но при Z80 на такте 10 МГЦ она даёт скорость не 7.5 МГЦ, а лишь ~6.5 МГЦ.
Выдержки из описания плат Супер-Турбо 1993 года:
- "прозрачное ОЗУ". Это означает, что при работе процессор работает без так-
тов ожидания для регенерацию видеоизображения и данных в динамических ОЗУ
- режим сокращенного времени исполнения внутренних тактов CPU (DX). В этом
режиме, используется изменяемая частота тактирования CPU (CLOCK) - при ис-
полнении некоторых команд, часть машинных тактов (внутренние такты Z80B)
выполняются вдвое быстрее. Скорость работы с ОЗУ и ВУ не изменяется (5 МГЦ)
Годится любой Z80B (цена 2$), но можно применять КР1858ВМ1 (надписи - круп-
ными буквами, но корпус пластмассовый, год выпуска не раньше 1993, и не зе-
леноградский завод). Именно эти процессоры работают на частотах до 10 МГЦ
(т.к в них установлены импортируемые кристаллы SHARP-B), что позволило реа-
лизовать режим DX. Такое решение впервые реализовано для восьмиразрядных ПК
не только в бывшем СССР, но и во всем мире. Z80А, Т34, 80H и КР1858 (над-
пись мелкими буквами в керамике или пластмассе) позволяют реализовать лишь
режим SX (5,0 МГЦ, 1.25 млн оп./сек). Архитектура ПК позволяет применять не
умощненные по выходу процессоры (КМОП: SU880, NEC, Z84C, TOSHIBA) не перег-
ружая их шин.
LeoN65816
09.05.2017, 08:17
Она прекрасно работает на 5Мгц, но при подаче 10Мгц вместо 5 Мгц, она не заводится.
Вон оно чо! А я то "голову ломал", почему ни с каким из разных Z80 оно на 10-ке не взлетает...
VladimirS
09.05.2017, 10:11
Не знаю как вы собираете Орион, но мой работает на 10 мГц уже несколько лет без малейших сбоев. Орионом доволен, надежная схема.
Кстати вместо РФ2/РФ5 использую W27C512 и процессор Z84C0020, да и с другими процессорами тоже надежно работает.
Error404
09.05.2017, 10:27
Не знаю как вы собираете Орион, но мой работает на 10 мГц уже несколько лет без малейших сбоев. Орионом доволен, надежная схема.
Кстати вместо РФ2/РФ5 использую W27C512 и процессор Z84C0020, да и с другими процессорами тоже надежно работает.
а какие схемы турбирования и z80-кард используются? с какой точки схемы берутся 10Мгц (инверсно/нет) и куда подаётся? какие серии микросхем в самом компе и схемах турбирования и z80-кард?
мой ОРИОН работает на 10 МГЦ уже несколько лет без малейших сбоев
По какой схеме ставили Z80, какая у Вас частота /RAS /CAS и какой реальный (эффективный) такт процессора достигнут?
VladimirS
09.05.2017, 11:55
Собрано по схеме Орион-сервис, ведь ее обсуждали? Делал все по инструкции, как в ней описано, от себя ничего.
Исследованием не занимался, какая частота и такт не знаю, собрал, работает и ладно, да и все равно частотомера нет.
Собирать начинал со 155 серии, а потом пошла сборная солянка, вплоть до 74АСТ, память SIMM30 две по 256 кБт.
Не знаю как вы собираете Орион, но мой работает на 10 мГц уже несколько лет без малейших сбоев. Орионом доволен, надежная схема.
Кстати вместо РФ2/РФ5 использую W27C512 и процессор Z84C0020, да и с другими процессорами тоже надежно работает.
И зовут его ОРИОН-ПРО ;)
по схеме Орион-сервис, ведь ее обсуждали?
Вообще-то нет. Обсуждали другую более простую схему установки Z80, ту что в Z80CARD-II и в новоделе ОРИОН-512. А схему ОРИОН-СЕРВИС я лишь упомянул как возможный источник идеи.
Информация о том, что у Вас схема ОРИОН-СЕРВИС слишком неконкретна, т.к у них было много вариантов. Всё зависит от того, в какой момент времени Вы купили их Z80-платку или комплект документации. Потому что в ноябре 1993 это одна схема (без ИР82), а в 1994 это та же схема, но уже с ручными исправлениями на ней и установкой ИР82 вторым этажом. А позднее это ещё более другая схема (уже без ручных коррекций авторучкой) и дающая возможность использовать такт 10 МГЦ. Какой-то из этих вариантов в 1996 был перепечатан в журнале РАДИО.
Исследованием быстродействия не занимался... все равно частотомера нет
Для того, чтобы узнать реальный такт частотомер не поможет. Для этого прогоняют какой-нибудь длящийся долго тест, и быстродействие оценивают по скорости прогона. Так журнальный тест (РАДИО 02.1992) при реальном такте Z80 в 2.5 МГЦ прогоняется ровно 45 секунд (на КР580, кажется, 47 секунд). Если засечь по секундомеру время прогона это теста и разделить 45 секунд на полученное число секунд, то узнаем во сколько раз быстрее турбированный ОРИОН.
Интересно, что на разных схемах (с ускорением 1.41, 1.85, 2.00, 2.50, 3.00) и на разных тестах коэффициент ускорения разный, что свидетельствует о том, что в некоторых схемах скорость прогона зависит от конкретного набора команд.
Делал все по инструкции, как в ней описано, от себя ничего
Напрасно. Стоило две КП11 для подмены старших адресов младшими при IN/OUT не ставить, т.е лучше вместо двух КП11 поставить ИД7 и ЛИ1 (или ИД7 и кучку диодов), т.е ввести настоящие порты OUT F8,F9...FF.
И зовут его ОРИОН-ПРО
Не нарисуете схему по которой Z80 стоит в ОРИОН-ПРО? Да и кто-нибудь это пытался выяснить, с целью заимствования этой схемы для нормального ОРИОНА?
Stampmaker
09.05.2017, 13:30
Обсуждали другую более простую схему установки Z80, ту что в Z80CARD-II и в новоделе ОРИОН-512
эту?
http://s008.radikal.ru/i305/1705/7d/0649555fe1ae.png (http://radikal.ru)
VladimirS
09.05.2017, 14:03
Ну, почему ОРИОН-ПРО? Журнальный вариант, плюс Z80 по схеме Орион-сервис
6095860957
... обсуждали другую схему установки Z80эту?
Принцип установки Z80 в этой схеме тот же. Но из этой схемы не видно некоторых деталей установки самого Z80. Здесь видно, как из /MREQ и /RFSH формируется сигнал ZSYNC, заменяющий SYNC КР580. Видно также как формируются сигналы DBIN и /WR. Но не видно, что у D13 надо соединять входы R и D, и что надо вместо 12 вольт подавать +5 вольт, иначе CLK Z80 получит уровень +12 вольт и сгорит (так как в качестве инвертора сигнала D7/6 ради экономии используется тот же вентиль ЛА7). Не видно, также, что /RESET нужен инверсный. И кстати, не видно также как ставить диоды (или ЛИ1), чтобы объединить выборки по STA F800, F900, FA00 и OUT F8, F9, FA.
Более информативнее схема "голый Z80" из 1991 года, или схема Z80CARD-I, но в которых использован иной принцип формирования ZSYNC (с RC-цепочкой). Во вложении неполная схема голый Z80 (отсутствует дешифратор ИД7 и в качестве формирователя CLK Z80 обычно используют D12.1, здесь ЛН1 изображён для ясности).
плюс Z80 по схеме Орион-сервис
Это второй вариант 1993 года с ручными коррекциями. В первых вариантах не было ИР82 вторым этажом. У меня есть, видимо, ещё более поздний вариант, где у триггера D5.2 добавлено 2 вентиля с целью удлинения на пол такта сигнала SYNC' (ZSYNC).
VladimirS не могли бы Вы прогнать журнальный тест и засечь время? Мне кажется, что при ОЗУ на 2.5 МГЦ и такте Z80 в 10 МГЦ, реальное быстродействие будет в районе ~5.0 МГЦ, но хотелось бы знать точные данные. Интересует также на сколько в этой схеме ускоряется прогон при такте 5 МГЦ.
Но интересует не схема, а идея или хотя бы эта же схема нарисованная понятным образом, откуда эту идею можно было бы понять. Схему полезно перерисовать упростив, т.е выкинув узел формирования INTE и две КП11, коммутируемые сигналом /IORQ, отчего схема станет меньше и понятнее.
Т.к КП11-тые и ловушка на коды DI/EI для озвучивания программ, что делают звук по INTE, никак не влияют на работу Z80-ядра, т.е не относятся к схеме установки собственно Z80, то разумно этот вариант установки Z80 переработать, существенно упростив. Т.е убрав КП11-тые и формирователь INTE, заменив их на ИД7 для команд OUT F8, F9, FA и триггер для звука OUT FF. Таким образом можно сделать платку для реверсивной замены КР580 на Z80, допускающий турбирование до 10 МГЦ. Мой вариант установки Z80 хотя и позволяет сделать реверсивную платку более простой, но для него схему 10 МГЦ я смогу предложить лишь позднее (да и то, это будет схема Турбо 9 МГЦ, с реальным тактом ~5 МГЦ с ОЗУ на такте 2.25 МГЦ)
VladimirS
09.05.2017, 14:33
Все там правильно, просто не хочется всю брошюру сканировать.
А тактовый сигнал на Z80 идет с выв. 9 DD2 c платы Ориона (155ИЕ2), смотри рис 2 вложения, частота f=5мГц,
Можно подать такт с выв. 8 DD1.5, тогда получается f=10мГц
- - - Добавлено - - -
Ошибся микросхема 155ИЕ5
Кстати вместо РФ2/РФ5 использую W27C512 и процессор Z84C0020, да и с другими процессорами тоже надежно работает.
а ОЗУ какое? Порты?
VladimirS
09.05.2017, 15:18
Про ОЗУ я же писал - две планки SIMM30 по 256 кБт. Порты : для клавы ВВ55А, остальные 82С55.
А не запускается на f=10 мГц из-за РФ2/РФ5, они не все тянут эту частоту. После замены на W27C512 все начинает работать.
Странно, что ВВ55-я работает на такой скорости. А вот 82С55 как раз вполне работоспособны, особенно если КМОП-версии.
SIMM30 - это явно не 565РУ5, с ними не удивительно ;)
LeoN65816
09.05.2017, 15:30
А не запускается на f=10 мГц из-за РФ2/РФ5, они не все тянут эту частоту. После замены на W27C512 все начинает работать.
Э-э-э-э... Стоит W27E257-12, вполне шустрая, однако не помогает...
VladimirS
09.05.2017, 15:41
Я проверял несколько ВВ55А, что у меня было, все работали.
А по поводу 82С55 я писал, давненько правда, делал я свой комп, просто ради интереса, удалось заставить его работать на f=25 мГц.
В схеме были две 82С55 - обе работали! Проверил все имеющиеся - работали и работали устойчиво.
- - - Добавлено - - -
По поводу W27E257-12 могу только предположить: у нее задержка 120 nc, а у W27C512 - 45 nc
VladimirS, а игра Elite работает на вашем орионе?
Error404
09.05.2017, 15:46
у меня w27c512-45 , от неё не зависит. Нужна схема в части турбирования. В ж-ле Радио схема Орион-сервиса была без турбирования.
VladimirS
09.05.2017, 15:49
Увы играми уже давно не занимаюсь, а про Elite вообще услышал недавно.
Странно, что ВВ55-я работает на такой скорости
. . . . . .
SIMM30 - это явно не 565РУ5, с ними не удивительно
Обычные ВВ55, особенно для ROM-диска, ни за что не будут работать на такте 10 МГЦ. С ROM-диском работают "словом" командой LD (F501),HL, что делает два обращения в порт с мизерным интервалом. А ВВ55 надо хотя-бы 800 НСЕК, чтобы переварить запись байта. Поэтому даже на 5 МГЦ не все ВВ55 в ROM-диске работают. С портом клавиатуры работают побайтово и с ним таких проблем нет до частоты ~6.5-7 МГЦ.
Но в данной схеме работа с ВВ55 происходит вовсе не на такте 10 МГЦ, а также как и с ОЗУ, на такте 2.5 МГЦ.
По тем же причинам нет никаких скоростных требований и к ОЗУ. Высоким тактом тактируется только Z80, всё остальное на такте 2.5 МГЦ. Это даже не двойное Турбо.
VladimirS не могли бы Вы прогнать журнальный тест и засечь время? Мне кажется, что при ОЗУ на 2.5 МГЦ и такте Z80 в 10 МГЦ, реальное быстродействие будет в районе ~5.0 МГЦ, но хотелось бы знать точные данные. Интересует также на сколько в этой схеме ускоряется прогон при такте 5 МГЦ.
а игра 'Elite' работает на вашем ОРИОНЕ ?
Для этого нужны, как минимум, прерывания 50 ГЦ, а возможно и диспетчер ОЗУ с окном в 16К. А в схеме ОРИОН-СЕРВИС прерывания истрачены на звук. А команды OUT попадут в ОЗУ и компьютер зависнет.
Всё там правильно
Тут мнения не совпали. По моему, всё там неправильно. И наворочано бесполезно и возможности Z80 кастрированы.
VladimirS
09.05.2017, 16:10
SIMM30 - это явно не 565РУ5, с ними не удивительно
Когда у меня была только одна SIMM-ка, вторую я сделал сам на КР565РУ5Б - все тоже работало
- - - Добавлено - - -
Обычные ВВ55, особенно для ROM-диска, ни за что не будут работать на такте 10 МГЦ
Значит у меня не правильный компьютер
- - - Добавлено - - -
VladimirS не могли бы Вы прогнать журнальный тест и засечь время?
Где его конкретно искать, я не в курсе
Не могли бы Вы прогнать журнальный тест?
Где его конкретно искать?
Журнальный тест (журнал РАДИО 02.1992). С любопытством ждём результатов...
VladimirS
09.05.2017, 16:27
Где его конкретно искать, я не в курсе
Вот нашел какую-то - SMIT2$ называется, она?
Вот нашел какую-то - SMIT2$ называется, это - она?
Для теста скорости не важен конкретный код программы. Важно, чтобы он работал сравнительно долго и, главное, чтобы было известно за сколько времени эта программа прогоняется на базовом ОРИОНЕ с КР580. Тест SMIT2$ никогда не встречал и не могу сказать годится ли он для тестирования или нет. Его тоже, пожалуйста, скиньте (или ссылку на него), лишние тесты всегда пригодятся.
VladimirS
09.05.2017, 17:03
Вот эти программы из той-же брошюры, там и время выполнения программы есть.
А журнал Радио №2 1992 я просмотрел вдоль и поперек, что - то ничего.
Вложение то же не поможет, не знаю как им пользоваться
60965
(журнал РАДИО 02.1992)
02/1991 видимо имелось ввиду
02/1991 видимо имелось ввиду
Точно, год перепутал. В 1992 было бы уже поздно публиковать тест, т.к все уже настроились бы и без теста.
Так как быстродействие высчитываемое относительно КР580 зависит от конкретного кода, то естественно тестировать схему надо на одном и том же тесте. Про журнальный тест мы знаем, что если мерить по нему, то ускорение в 1.42 раза. Очевидно, что точно такое же ускорение 1.4...1.5 раза даёт и схема ОРИОН-СЕРВИС.
Исходя из данных приведённых в предыдущем посте, получаем, если ускорение 1.37 соответствует 1.42 на журнальном тесте, то ускорение 1.82 соответствует X. Для решения этого уравнения не надо даже кончать начальную школу (3-х классов достаточно). (1.42:1.37)*1.82=1.92. Таким образом журнальный тест должен прогоняться за 45:1.92=23.44 секунды.
А реальный (эффективный) такт Z80 равен 2.5*1.92= 4.79 МГЦ.
А если считать по тесту SMIT1$, то ускорение равно: (1.42:1.46)*2.16=2.10, а реальное быстродействие составит 2.5*2.1= 5.25 МГЦ. Таким образом быстродействие сильно зависит от конкретного кода, а в среднем быстродействие будет примерно 5 МГЦ.
Будем ждать практического подтвержения этих домыслов.
Вложение не поможет, не знаю как им пользоваться
Это не 'benchmark' (бенчмарк тест быстродействия). Это обычный тест ОЗУ работающий из ПЗУ. Его надо прошивать в ПЗУ (вообще-то каждый владелец ОРИОНА должен иметь ПЗУ-шный тест, т.к ОЗУ имеют тенденцию со временем дохнуть, особенно, если рядом атомная электростанция или урановое месторождение). Теоретически, если хлопотно прошивать в ПЗУ, то не составит труда дизассемблировать журнальный тест и сделать его версию для ОЗУ. Но при этом нельзя будет "затирать" код самого теста в ОЗУ, отчего время прогона немного изменится и результат вычисления скорости будет неточным. Так что переделывать этот тест для ОЗУ бесполезно.
Попробуйте вот этот тест.
VladimirS
09.05.2017, 18:17
Записал я эту SMIT2$, запустил, отработала она 8 мин. 34 сек., что точно совпало с таблицей 4, вложения #915
Выводы делай сам. Получается увеличение быстродействия относительно ВМ80 - 1,82 раза
Дмитрий2012
09.05.2017, 18:53
Из любопытства прогнал тест SMIT2 на Орионе-ПРО в трех режимах (2,5МГц – 15м 54с, 5 МГц – 9м 52с, и 10МГЦ – 6м 13с). Интересно получается, время работы теста на ПРО в режиме 10МГЦ – 6 мин 13, у VladimirS на 10МГц 8м 34с. Получается на Орионе-ПРО тест работает значительно быстрее.
VladimirS, не могли бы постепенно, как будет свободное время отсканировать все имеющиеся у Вас листовки с материалами по Ориону? так сказать для истории. Нигде не встречал подобные руководства, да и еще в таком хорошем состоянии.
OrionExt
09.05.2017, 18:56
Все эти танцы с бубном из-за сквозного доступа к ОЗУ, что накладывает серьезный отпечаток на времянки работы схемы (окна в 400 мкс). Еще не забываем задержки в микросхемах (прикрученный за уши навороты в схеме). Хотя х2 – точно должно получаться (при определенных усилиях).
Но мне видится на сегодня другая структура Ориона. Простая и понятная, хотя это будет стоить не один лишний корпус ТТЛ логики (и такое бывает).
Получается на Орионе-ПРО тест работает значительно быстрее
Странно, что Вы рады этому результату. Это же неожиданно меньший результат. Ускорение на 10-ти МГЦ всего в 2.58 раза, что меня очень удивляет. Почему так мало? Ведь в ОРИОН-ПРО ОЗУ уже не на 2.5 МГЦ, как у VldimirS, а на такте 5 МГЦ. Исходя из логики, как соотносится схема WAIT с тактом 5 МГЦ и тактом 2.5 МГЦ в 1.42 раза, я ожидал, что то же соотношение сохранится и в 10-ти мегагерцовой схеме с WAIT, т.е что будет 2*1.42=2.84 раза.
Итого, получается, что быстродействие ОРИОН-ПРО равно 2.5*2.58=6.45 МГЦ, хотя авторы ОРИОН-ПРО утверждали, что скорость равна 8.5 МГЦ, а я предполагал, что ОРИОН-ПРО даёт 5*1.42= 7.1 МГЦ.
Получается на Орионе-ПРО тест работает значительно быстрее
Это-то как раз не удивительно. Ведь у VladimirS ОЗУ осталось на старом такте 2.5 МГЦ и сильно тормозит, тогда как в ОРИОН-ПРО применены скоростные ОЗУ РУ7И на такте /RAS /CAS в 5 МГЦ, отчего тормозят меньше.
Ещё было бы интересно сравнить схему Турбо 10 МГЦ С.Караваева (где другой принцип, использующий сигнал /M1, а WAIT вообще не используется). Его схема ценна тем, что в ней Z80B тянут 10 МГЦ, а в схеме с WAIT лишь 9 МГЦ.
Мне интересно какое быстродействие получается, если такт Z80B 9 МГЦ, ОЗУ на такте 4.5 МГЦ с запретом ненужных обращений видео-части (чтобы вдвое снизить разогрев). Теоретически должно получиться 4.5*1.42=6.39 МГЦ, при ОЗУ работающем без вентилятора.
Я попробую получить на своём ОРИОНЕ или именно такой 9-ти МГЦ-овый вариант или же ещё более медленный вариант. Когда такт Z80 - 7.5 МГЦ, а ОЗУ на 2.5 МГЦ, что даст немного меньшее быстродействие, чем у VladimirS (~4.8 МГЦ), но при этом статическое ОЗУ 62256 и ПЗУ 27256 будут работать без WAIT на такте 7.5 МГЦ (отчего визуальный выигрыш будет намного выше).
Однако, VladimirS имеет нормальный ОРИОН, благодаря чему имеет возможность делать доработки (в то время как в ОРИОН-ПРО доработки невозможны). Ему достаточно поставить статическое ОЗУ w24257 (работающее без WAIT) в адреса 0...7FFF в банке 0 (и/или в банке 1), чтобы иметь эффективный такт в 10 МГЦ, что будет в 1.55 раза быстрее, чем 6.45 МГЦ в ОРИОН-ПРО.
Полученные результаты показывают, что без увеличения скорости работы ОЗУ бессмысленно разгонять Z80. Я даже сомневаюсь, что установка Z84C00020 на такте 20 МГЦ даст хоть какой-то выигрыш относительно такта в 10 МГЦ. Также ясно, что асинхрооное включение Z80 на такте 8-20 МГЦ даст ещё меньший выигрыш (т.к будут потери на несинхронность).
OrionExt
09.05.2017, 19:45
barsik, мя тоже удивляет. Напишите уже раздельный тест ЦПУ, ОЗУ, ПЗУ, ВВ55;)
Не иллюзорный турбо строитель схем.
Дмитрий2012
09.05.2017, 20:18
Странно, что Вы рады этому результату.
С чего Вы взяли, что я рад такому результату? Видимо надо было поставить в конце предложения знак вопроса :)
Я далек от электроники, так как являюсь обычным пользователем Ориона, многого не понимаю. Меня просто удивил такой результат. Время работы теста на ПРО оказалось меньше чем у VldimirS при казалось бы одной частоте 10МГц.
А вообще я вспомнил, что с ivagor уже проводили подобные тесты быстродействия на Орион-ПРО. Вот http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=845379&viewfull=1#post845379 и если я правильно понимаю, похоже Ваши расчеты совпадают с результатами того теста. И опять же я выполнял тест на своем экземпляре ПРО, на котором есть доработка Воронова. Без которой ПРО в режиме 10МГц у меня постоянно глючил. А эта доработка снижает быстродействие прошки, это я уже увидел в другом тесте. Писал об этом здесь http://zx-pk.ru/threads/22389-orion-pro-sborka-i-naladka.html?p=804780&viewfull=1#post804780 На глупости о которых я писал в этом посте про 8,5МГц не обращайте внимание.
OrionExt
09.05.2017, 20:22
Кстати для таких тестов кнопочка "турбо " – совсем не лишняя:)
Error404
09.05.2017, 20:24
Сообщение от barsik
Обычные ВВ55, особенно для ROM-диска, ни за что не будут работать на такте 10 МГЦ
Значит у меня не правильный компьютер
Я таки по-прежнему реквестую схему этого варианта Z80Card. VladimirS, там была страничка из брошюры постом ранее, сделайте пожалуйста аналогично соседнюю со схемой? А лучше всю методичку целиком.
OrionExt
09.05.2017, 20:25
По классике правильно снижать частоту к медленным устройствам. На заре тупо делали - вайт.
Error404
09.05.2017, 20:27
Я далек от электроники, так как являюсь обычным пользователем Ориона, многого не понимаю. Меня просто удивил такой результат. Время работы теста на ПРО оказалось меньше чем у VldimirS при казалось бы одной частоте 10МГц.
На ПРО как в режиме 5М, так и в режиме 10М всегда работает 2..4 такта WAIT процессору при обращении как к памяти так и портам. Зачем такое было нужно сказать трудно, видимо просто подстраховались на случай использования потребителем карт на тормозных чипах.
OrionExt
09.05.2017, 20:34
Error404, тут по тактам надо разбираться. Кто готов разтактовочку грамотную Орион-классика сделать?)
Толь без слов, а у меня на .05 быстрее. Либо работает - не работае.
- - - Добавлено - - -
Да я провоцируй. На расширяемый биос (чтобы был стандарт) – желающих нет. А с турбо как?)
Занятно наблюдать дебаты по поводу всяких "в 1.42 раза", "6.45 МГц vs 7.5 МГц" и т.п.. Какое отношение эти "попугаи" имеют к реальной жизни?
По практическим задачам никакой хоть сколько нибудь заметной (и уж тем более стоящей того) разницы между 7 и 10 МГц не будет. К чему весь этот "спорт"?
Нечестные 10 МГц Ориона-ПРО против "честных" 2.5 МГц Ориона-128 - да, это реально практически ощутимо, но всё равно не революция. И это в 4 раза!
Самое тоскливое это графическая отрисовка символов, и это пожалуй самое основное, что действительно раздражает на Орионах. Рендерингом видео и даже архивированием на Орионе вряд ли кто-то занимается :), а игрушки как работали на своих мегагерцах, под которые они сделаны, так и будут работать - зачем им турбирование в 1.38 попугаев? ))
Какова цель всех этих дискуссий о турбировании? Учитывая, что новый софт (которому вот ппц как критична разница между 7,5 и 10 МГц) всё равно никто писать не будет.
Напишите уже раздельный тест CPU, ОЗУ, ПЗУ, ВВ55
Мысль не понял. Зачем раздельный тест, если ОЗУ ПЗУ и ВВ55 работают на одной и той же скорости. Тестируя скорость прогона программы в ПЗУ, мы одновременно узнаём и скорость работы в ОЗУ. И наоборот.
Как написать тест CPU не используя ОЗУ или ПЗУ? Да и зачем CPU тестировать.
Скорость прогона в ПЗУ может отличаться от скорости в ОЗУ. Обычная схема "голый Z80" по вышеприведенной схеме легко модифицируется так, чтобы ПЗУ прогонялось без WAIT (на 5 МГЦ работают даже РФ2), т.е с полным быстродействием 5 МГЦ. Это широко не использовали лишь потому, что ПЗУ F800 в критичных к скорости программах вообще не участвует. Только в случае наличия большого ПЗУ 27256, которое будет активно использоваться критичными к быстродействию программами, это имеет смысл.
OrionExt
09.05.2017, 21:17
barsik, ну чего тут не понятного. Дальше читать не буду.
Если с ПЗУ не стартует - снижаем частоту (или ПЗУ меняй) и т.д. Простое начало с ПЗУ)
- - - Добавлено - - -
А ЦПУ тестить – это наш единственный честный разгон:)
- - - Добавлено - - -
Как написать тест CPU не используя ОЗУ или ПЗУ? Да и зачем CPU тестировать. barsik Ltd
MOV A,A - тест.
Да кнопка турбо тут ой как нужна (повторю).
https://youtu.be/3c3lv83wKJU
- - - Добавлено - - -
Да как посчитать честный тест для Орион-классика. На 555 генераторе на ВМ80 навешиваем прерывание хоть какой частоты. И считаем)
Что у нас еще не понятно?)
зЫ.
Таки честно. Ну как его турбировать?) У меня 2-банки в Орионе (РУ5Д – завелись, с пол оборота). Орион рождения от 93г.
как посчитать честный тест для ОРИОН-классика. На 555 генераторе на ВМ80 навешиваем прерывание хоть какой частоты. И считаем.
Что такое ОРИОН-классик? Если это ОРИОН-128, то в нём ОЗУ прозрачное и эффективный такт CPU равен физическому такту. Тут тесты скорости не нужны.
Если же это ОРИОН на Z80, то на всех схемах, кроме схемы от ОРИОН-СЕРВИС, есть прерывания 50 Гц и есть тесты скорости использующие прерывание 50 Гц для определения эффективного такта CPU. Только для схемы ОРИОН-СЕРВИС, где Z80 стоит по-уродски, надо замерять времена секундомером.
Навешивать для целей теста генератор на 555ВИ1 тоже не требуется, т.к есть КСИ частотой 50 ГЦ. Достаточно поделить его на счётчике, получить меандр 5 ГЦ и подать этот меандр на вход магнитофона. Такой простейший аппаратный таймер позволяет сделать частототомер, часы реального времени и, главное, необходим для программного производства музыки (да и при использовании для музыки ВИ53 или AY-8912 тоже полезен).
Прилагаю программу теста скорости с использованием прерываний. Она включает прерывание портом FB. Если в ОРИОН-ПРО это так же, то и на нём сработает (можно адатировать, если это иначе).
MOV A,A - тест.
Еще раз вопрос, зачем CPU тестировать? Вы намекаете, что нужен тест команд процессора. Но таких тестов хватает. Они в основном нужны для отладки эмуляторов. А на реале они бесполезны, если программы работают, значит и CPU исправен. В реале не бывает такой дохлоты, чтобы не работала только одна команда CPU. Или полный "труп" или всё - O'KAY. Тем более, что CPU обычно ставят в панельку, так что легко заменить и убедиться, что не CPU дохлый.
Таки честно. Ну как его турбировать?
Если Z80 уже стоит, то по любой схеме Турбо-142% выложенной здесь сегодня или другой. Если стоит КР580, и замена на Z80 невозможна из принципиальных соображений, то всё-равно можно разогнать до 3.0 МГЦ (кварц 24 МГЦ, пиксель-клок 8 МГЦ, экран отплющен, картинка на весь экран).
OrionExt
09.05.2017, 21:59
Что такое ОРИОН-классик?(barsik Ldt) - 1990/1:v2_dizzy_wall:
Еще раз вопрос, зачем CPU тестировать?
Вы троль?
ЦПУ тестить – это наш единственный честный разгон.
Тест – чтобы определить во сколько мы разогнали ЦПУ (может в схеме клона по M1 вайт в один такт). Я Устал)
П.з мы собрались тестировать схему турбо.
Вы намекаете, что нужен тест команд процессора. Но таких тестов хватает. Они в основном нужны для отладки эмуляторов. А на реале, если программы работают, значит и CPU исправен.
А вы чем сегодня занимаетесь)
А вы чем сегодня занимаетесь
Пытаюсь встроить в свой эмулятор программно включаемый в окне 0...3FFF ROM-BIOS, т.к сейчас без использования эмулятора что-то писать и при каждой итерации для проверки перегонять по линии на реал, очень утомительно. Поэтому делать программы можно только для такой архитектуры, что есть в эмуляторе.
мы собрались тестировать схему турбо
Задача другая, - разработать самостоятельно или "вытащить" из чужих конструкций сделанных 20 или 25 лет назад, схему Турбо более лучшую, чем уже имеющиеся.
Никто не захотел прошить в ПЗУ и проверить на реале версии М1 для MS-клавиатуры
Ничего, я и сам проверил. Обнаружил, что все выложенные ранее версии М1, причём как для РК так и для MS-клавиатур оказались дохлыми. В них не работает ввод с магнитофона. Ошибка не моя, просто исходник М1 25-ти летней давности оказался с ошибкой (в одном месте вместо LDBS оказалось LDBYTE).
Также нашёл ошибку в версиях М2 и М3 для MS-7007. Она не фатальная и выявится только с несколькими программами и возможно Вы об ошибке никогда не узнаете, но ошибка есть. Поэтому проще всего удалите все версии ПЗУ для MS-клавиатуры. Вскоре я выложу обновлённые версии М1, М2, М3... М6 для всех клавиатур.
VladimirS
10.05.2017, 10:22
Установка Z80 по схеме Орион-Сервис
http://files.d-lan.dp.ua/download?file=842309dc0e835c01df60e530afdd73e1#upl oader
Stampmaker
10.05.2017, 12:11
в схеме сигнал IORQ, идущий к ноге 1 D2 КП11, указан прямым, а не инверсным. это ошибка? он должен быть инверсным, верно?
в схеме сигнал IORQ, идущий к ноге 1 D2 КП11, указан прямым, а не инверсным. это ошибка? он должен быть инверсным, верно?
В схеме нету формирования прямого йорика, вероятно просто ошибка в отрисовке.
VladimirS
10.05.2017, 14:47
Все там правильно
Stampmaker
10.05.2017, 15:10
Все там правильно
если всё по схеме правильно и сигналы подписаны верно, то куда подключаются:
1) прямой IORQ (вывод 1 D2)?
2) /RES? (вывод 4 D5.2)
3) прямой М1? (вывод 3 D6.1)
а ещё на схеме есть инверсная земля :) вывод 15 D3
Документация с довольно хорошим текстовым содержанием, но очень непонятная графически. Интересно, что приведены лишь схемы коррекций, как из варианта 3.10 получить вариант 3.20, но схемы исходного варианта 3.10 вообще не приведено.
Хорошо бы, если бы кто-нибудь перерисовал основные моменты схемы со всеми коррекциями, так чтобы было на одном листе и всё понятно. Перерисовывать узел эмуляции сигнала INTE и КП11-тых коммутируемых /IORQ не требуется (их и делать не стоит и рисовать, чтобы не загромождали рисунок).
В этой схеме, для того чтобы не ставить ИД7 на OUT, чтобы тот же самый дешифратор портов D27 работал и при Z80, применены две КП11-тые.
Но, можно заставить работать дешифратор портов D27 (ИД4) на плате ОРИОНА более простым способом, одновременно избавившись от подмены всех старших адресов при IN/OUT. Дешифрация портов на D27 происходит адресами A8 и A9. Достаточно только эти 2 адреса при OUT подменять адресами A0 и A1. Тогда дешифратор будет дешифрировать и при OUT.
Выборка дешифратора D27 в схеме ОРИОНА делается сигналом выборки F800...FFFF (112). Это инверсный сигнал =0, если идёт адресация на F800 (т.е сигнал 112 надо называть /F800). Чтобы дешифратор D27 выбирался и по OUT достаточно сложить (на "монтажном ИЛИ") сигнал 112 и /IORQ на двух диодах и резисторе. Тогда потребуется только один КП11-тый.
Этот КП11 (подменяющий A8,A9 на A0,A1) можно ставить на основной плате реверсивной конструкции. Т.к у КР580 сигнала /IORQ нет, то этот КП11-тый не будет мешать работе КР580. Это существенно упростит саму платку c Z80. И тогда ставить в панельку можно будет Z80 по любой схеме, причём мой вариант такой платки для установки Z80 проще.
Рассмотрим, куда попадает команда OUT FF в схеме ОРИОН-СЕРВИС. Из-за подмены адресов на шине будет адрес FFFF, а физически, если я не ошибаюсь (прошу корифанов это проверить) будет попадание в порт STA FB00. По счастью этот порт никак не задействован в базовом ОРИОНЕ. Таким образом, звук OUT FF можно иметь и при схеме установки Z80 от ОРИОН-СЕРВИС, добавив D-триггер на выход STA FB00 (цепь 91). Но можно получить звук и без триггера, применив диод и параллельные RC на землю. Тогда при стробе OUT FF емкость заряжается через диод, а потом разряжается через резистор, формируя из иголки строба полноценный меандр двойной частоты. Если же программа Z80 использует OUT FC, FD, FE, то в схеме ОРИОН-СЕРВИС эта программа работать не сможет.
Для того, чтобы убрать дублирование и ввести порты STA FC00, FD00... FF00 и соответственно OUT FC,FD... FF, надо разорвать цепь на входе D27/15, куда идёт выборка /F800 (цепь 112) и объединить на ЛЛ1 этот сигнал 112 с адресом A10. Тогда при адресации по STA FC00 не будет попадания на F800 и появятся ещё 4 порта вывода (если добавить ИД7) или один общий порт FC00...FFFF (расход деталей 2 вентиля ЛЛ1, объединяющие 112, 93 и /A10).
Таким образом, чтобы получить в базовом ОРИОНЕ дополнительный порт FC00...FFFF надо истратить корпус ЛЛ1 (точнее 3/4 её). При этом в порт STA FB00 уже не будет попадания по OUT FF.
Как видите, схема установки Z80 от ОРИН-СЕРВИС сложнее и более громоздкая, чем Z80CARD-I или Z80CARD-II, не говоря уже о варианте "голый Z80". И в то время, как мои схемы начерчены ясно и их работа понятна и обезьяне, то схема ОРИОН-СЕРВИС это головоломка.
Вариант ОРИОН-СЕРВИС использует ту же идею эмуляции сигнала SYNC из /RFSH и /MREQ (+/IORQ). Только использован триггер позволяющий удлинить этот сигнал на пол такта. В качестве клока использован Ф2 (в моём варианте Ф1) с оригинальной идеей уровне-преобразователя на диоде. Можно попробовать сделать вариант "голый Z80" и с таким формированием ZSYNC и CLK. Естественно вместе с узлом на D5.1 и D5.2, который в данной схеме формирует WAIT Z80.
Во-первых, перспективна идея заимствования "переделки N3", заключающейся в удлинении времени открытия буферов при /RD с помощью двух диодов на входе D29/2. Возможно эта идея поможет сделать более надёжной схему ТУРБО-200%, где настройка заключается в точной подгонке фронтов.
Можно также заимствовать идею напайки ИР82 на ВА86 (представляю как они при этом греются, ведь у них общее потребление 250 мА). Скорее всего это поможет достигнуть работы Z80 на такте 7.5 или 10 МГЦ. Судя по инструкции, напайка ИР82 вторым этажом может не понадобиться, если и без этого всё работает без сбоев. Интересно, пришлось ли VladimirS ставить ИР82 вторым этажом?
С другой стороны, вызывает подозрение узел формирования WAIT. Возможно, что число добавляемых тактов WAIT оказывается не 1, а 3, отчего и приходится задерживать (хранить в регистре) данные после закрытия буферов. Т.е ошибочно удлинён цикл обращения Z80, отчего и приходится делать "химию". При грамотном выборе клока, ничего этого делать не требуется. У меня прекрасно Z80 работал на 10 МГЦ без всяких печкообразных ИР82 вторым этажом.
Интересно, что у верхней КП11 на SEL (нога 1) заведён IORQ (без палки сверху), а на нижний - /IORQ. На самом деле на входах SEL (нога 1) у обоих КП11 должен быть /IORQ, чтобы при неактивном /IORQ=1 на шину старших адресов выходили бы старшие адреса.
Есть у кого-то нормально нарисованная схема ОРИОНА с нормальным обозначением цепей и с понятно перечерченным видеогенератором? ОРИОН-СЕРВИС в 1992 продавал нормально перечерченную схему ОРИОНА. Может у кого сохранилась?
Правильные названия цепей существенно помогают понять принцип работы. Вот такие названия цепей: 72 - /WR, 73 - /RD, 57- /RAS, 66 - /CAS, 70 - DSYNC, 77 - /CSF400, 78 - /CSF500, 79 - /CSF600, 80 - /CSF700, 76 - OUTF8, 125 - OUTF9, 89 - OUTFA, 91 - OUTFB, 69 - RESET, 82 - /RESET, 118 -B0, 119 - B1, 93 -/WE0, 92 - /WE1. 43 - /Ф2, 110 - BORDER, 63 - ССИ, 41 - H0, 53 -H1, 49 - H2, 46 - H3, 47 - H4, 48 - H5, 50 - V0, 51 - V1, 52 - V2, 53 - V3, 54 - V4, 55 - V5, 56 - V6, 58 - V7, и естественно, адреса и данные тоже надо называть правильно, а не случайными цифрами.
Как видите, схема установки Z80 от ОРИН-СЕРВИС сложнее и более громоздкая, чем Z80CARD-I или Z80CARD-II, не говоря уже о варианте "голый Z80". И в то время, как мои схемы начерчены ясно и их работа понятна и обезьяне, то схема ОРИОН-СЕРВИС это головоломка.
"голый Z80"? где посмотреть?
"голый Z80"? где посмотреть?
Ни где, только устное описание от Барсика.
Ни где, только устное описание от Барсика.
Z80CARD-I и Z80CARD-II это и есть мой вариант установки Z80, если из этих схем удалить прерывания, звук OUT FE/D4, диспетчер ОЗУ с окном 16К, т.е КП11 и все относящиеся детали. Тогда и остаётся "голый Z80". Эта схема представляет из себя просто формирователи сигналов эквивалентных сигналам КР580.
http://zx-pk.ru/attachment.php?attachmentid=60959&stc=1&thumb=1&d=1494323862
В качестве инвертора на CLK, чтобы было меньше паек я обычно использую D12.1 (и только иногда, когда нужно 10 МГЦ, использую для формирования клока 531 ЛН1 и ещё ставлю и резистор привязки на +5В 220 Ом, т.к Z80 любит высоко-уровневый клок). Естественно, формируя клок из Ф1, т.е на D12.1, не забудьте, что там резистор привязки идёт на +12 вольт. Поэтому на плату вместо +12 вольт надо подавать +5 вольт, т.к Z80 плохо переносит сигналы уровня +12 вольт. Также у D13 надо соединить ноги 12 и 13. В инструкции ОРИОН-СЕРВИС рекомендуют закоротить инвертор D11.5, это выглядит разумно, хотя я об этом не знал и никогда не делал.
Я обычно напаиваю две доп.ИМС ЛЛ1 и ЛН1 на две ближайшие к процессору микросхемы, одну на ТЛ2, вторую на крайний мультиплексор адреса КП12. Но ёще надо ставить дешифратор ИД7, также как в схеме Z80CARD-II и объединять выходы F8, F9, FA с выходами STA F800, F900, FA00 на ЛИ1 или "монтажным ИЛИ" с помощью диодов и резистора. ИД7 удобно ставить над D23 (хотя, если стоят РУ7-мые по схеме М.Домарёва (где всего одна банка РУ7-мых), то над D23 уже напаян КП12, коммутирующий адреса РУ7-мых.
Нет смысла сохранять КР580. Я обычно его выкусывал под корень (сберечь печать важнее), т.к удобно сделать несколько разрезов под процессором и впаивал вместо него Z80. Все адреса и данные не совпадают. Поэтому их надо отрезать и вновь соединять короткими проводками в 3 см с цепями идущими к буферам адреса и данных. От выводов 30-36, если грамотно сделать разрезы, то соединения делаются неизолированным залуженным проводом (обычно именуемый серебрянка) диаметром ~0.2 мм.
Да и вообще МГТФ, на стороне пайки я использую крайне редко (если только МГТФ-0.03, но сейчас такого Вы нигде не найдёте, это и в 80-тые была редкость). Для монтажа я использую ПЭЛ-0.2...0.25 (лучше из отклоняющих систем импортных телевизоров, там хорошая изоляция). Перед пайкой концы приходится соскабливать острым ножом, чтобы залудить. Это резко тормозит скорость монтажа. Но результаты лучше, нет такого клубка проводов, как при монтаже МГТФ. Провод ПЭЛ-0.2 накручивается на выводы ИМС пинцетом (пара оборотов) и пропаивается. Таким способом я паял конструкции в 30 и даже в 50 корпусов, хотя трудоёмкость каторжная.
Кстати, при монтаже МГТФ-ом следует пользоваться только МГТФ-ом в тонкой изоляции, которая позволяет изгибать проводники. Т.е провод МГТФ, если его изогнуть должен сохранять форму. А МГТФ в толстой изоляции сам распрямляется. Такой провод для ручного монтажа не годится. Чем тоньше МГТФ, тем он лучше. В 80-тые, когда была возможность иметь провода ПЭВТКЛ и ПЭПЛОТ, это здорово упрощало ручной монтаж, т.к отпадало залуживание за счёт соскабливания эмали ножом.
Буфера адреса (если только у Вас не хилый КМОП Z80) тоже можно выкусить и закоротить (это ускоряет сигналы). Да и буфер данных тоже низачем не нужен (но удалять не советую, т.к это позволяет разгрузить шину, см. ниже). Если делается Турбо-200 или 10 МГЦ, то полезно разгрузить шину - у ПЗУ РФ2 цепи данных отрезаем от шины и перепаиваем прямо к ногам процессора. Также входы ТМ7 (D28) при Турбо-200 и 10 МГЦ я обычно перепаивал прямо к ногам Z80, т.к такая разгрузка шины повышала надёжность КНГМД в HD-формате 1600 кб и облегчала жизнь ВВ55-тым.
Вместо ВА86 лучше ставить АП6. Они запаивается с разворотом на 180', меняется их питание на ногах 10 и 20 и управление направлением передачи инвертируется, т.е подается /RD вместо RD (или наоборот). При замене 5 штук ИР82 и ВА86 экономится 750 мА электроэнергии.
А как картинку из вложения другого поста растянуть на весь экран по ширине?
VladimirS
11.05.2017, 08:31
если всё по схеме правильно и сигналы подписаны верно, то куда подключаются:
1) прямой IORQ (вывод 1 D2)?
2) /RES? (вывод 4 D5.2)
3) прямой М1? (вывод 3 D6.1)
Добрый день!
1) IORQ везде /IORQ
2) /RES это /RESET
3) M1 везде /М1
Это действительно опечатки
Интересно, пришлось ли VladimirS ставить ИР82 вторым этажом?
Да, в варианте 1993 года так и было, плюс накрыто самой этой платкой, работает до сих пор, правда уже со сбоями.
А когда собирал несколько лет назад, повторял эту схему, учел это и поставил рядом. Применил 74HCT573 вместо ИР82.
И не надо пинать эту схему.
Во-первых, авторы изначально поставили задачу полной замены ВМ80А на Z80, а именно, снял с панельки ВМ80А, поставил эту платку и все работает
не понравилось, поменял назад, без всякого вмешательства в основную схему.
Во-вторых, это все таки 1993 год. За прошедшие годы просто обязаны были сделать что-то более прогрессивное.
В- третьих, повод для любителей старины.
В- четвертых, повторите эту схему и не будет вопросов, еще раз повторяю - она рабочая.
Stampmaker
11.05.2017, 09:17
Добрый день!
1) IORQ везде /IORQ
2) /RES это /RESET
3) M1 везде /М1
Это действительно опечатки
отлично! :v2_dizzy_roll:
повторите эту схему и не будет вопросов, еще раз повторяю - она рабочая
прекрасно :v2_thumb: буду делать!
отлично! :v2_dizzy_roll:
прекрасно :v2_thumb: буду делать!
вопрос только в печатке.:)
VladimirS
11.05.2017, 09:40
прекрасно буду делать!
Желаю успехов!
Если мне доведется когда-либо повторять схему Ориона, я бы попытался максимально использовать 74HCT/74ACT, а может где-то и 74АВТ,
хотя не исключаю и Alter-у.
Во-вторых, это все таки 1993 год
Моя схема из 1989 года (применялась ещё на СПЕЦИАЛИСТЕ), Z80CARD-I из 1991, а Z80CARD-II тоже из 1993.
Дата разработки это не показатель совершенства конструкции. Можно и в 21-м веке разработать тупую и неграмотную схему. Только Вы сначала покажите мне программу, которая работала бы на схеме ОРИОН-СЕРВИС и не работала бы на Z80CARD-II, а вот наоборот - это все программы для Z80, что когда-либо были сделаны для ОРИОНА. Звук тоже, еще в 1992-93, у всех программ где есть звук, был адаптирован. Это работа на 10 минут для совершенно не смыслящего в программировании человека.
не надо пинать эту схему... повторите эту схему и не будет вопросов, еще раз повторяю - она рабочая
Какой смысл сейчас делать схему ОРИОН-СЕРВИС ? Никто не сомневается, что она рабочая. Ведь ОРИОН-СЕРВИС продал тысячи таких платок для установки Z80. Кстати никогда не видел, как выглядит их платка для установки Z80 (есть ли фото или хотя-бы рисунок схемы расположения деталей?). Если поставить Z80 правильно, то хотя бы число программ увеличится, а что толку от схемы ОРИОН-СЕРВИС ?
В предыдущем посте, я чётко изложил, как можно упростить и одновременно улучшить схему ОРИОН-СЕРВИС (не меняя применённых там принципов формирования сигналов CLK и /WAIT). Какая разница как работает команда OUT, лишь бы попадала в порты.
То же быстродействие даёт схема ТУРБО 200%, которая имеет отличную надёжность, есть решить проблему с перегревом ОЗУ (это или снижение такта /RAS /CAS до 4.5 МГЦ, или мощный вентилятор или схема запрета части обращений к ОЗУ от видео-части).
Схема ТУРБО 200% работает на Z80A и даже на Z80 MME с паспортной частотой на 2.5 МГЦ. Ну а если хочется уж совсем просто, то почему не сделать простого ТУРБО-142%. Реальный такт 3.55 МГЦ это тоже не плохо. Визуально намного приятнее, чем 2.5 МГЦ. Да и вскоре, я уточню и выложу свою схему 9 МГЦ на Z80B (она же даёт 10 МГЦ на Z80H, но Z80H у меня нет, зато Z80B очень много, т.к в 90-тые всегда покупал только их, в рассчёте на будущее турбирование),
Рекомендую схему ТУРБО-200% с заменой кварца на 9 МГЦ (можно и на 8, но это чуть сложнее). Т.к все пользователи ОРИОНА с детства мечтают отплющить экран ОРИОНА, то замена кварца на 9 МГЦ полезна и при КР580.
Заменяете кварц на 9 МГЦ (можно 18 МГЦ и делить надвое триггером). Чтобы видео-частоты не изменились, надо изменить кэффициент деления счётчиков видео генератора. Для этого на D8.1/1 вместо 47 цепи подать 46-тую цепь. Экран от этого существенно отплющивается, но т.к ССИ тот же, то растр оказывается немного сдвинутым вправо. Чтобы вернуть центровку по горизонтали, удобно поставить 555ИД7 (не 1533) и с её помощью центровать растр (также как это делали с экраном 480), но проще формировать свой ССИ на триггере (можно и на АГ3, принцип тот же). От снижения частоты не только качество шрифта улучшается, но главное, сокращается разогрев ОЗУ на двойном такте /RAS /CAS, в этом главная ценность.
Прилагаю схему формирователя ССИ для кварца 9 МГЦ (аналогично есть и для пиксель-клока 8 МГЦ). Вывод D9/5 удобно перекусить кусачками и поднять над печатью отогнув в сторону.
VladimirS
11.05.2017, 10:11
Какой смысл сейчас делать схему ОРИОН-СЕРВИС ?
Так я ее и не навязываю, попросили выложить, что я и сделал.
А на вкус и цвет... сами понимаете
Stampmaker
11.05.2017, 10:14
вопрос только в печатке
это вообще не проблема. вот что получилось.
сразу вариант 5Мгц.
т.к. делаю для себя, то шелка и масок не будет.
будет этакое а-ля 90-ые.
поэтому если что-то из надписей на что-то налазит, то в моём случае это не критично.
http://s008.radikal.ru/i304/1705/49/86249a451f4d.png (http://radikal.ru)
...
Прошу прощения за длинную цитату.
Интересно конечно, но чертечто блин, если это все сделать, что остается от стандартной платы Ориона и вообще как это выглядит. Легче наверное новую плату развести и заказать у наших друзей. Это спорт наверное.
Stampmaker
11.05.2017, 10:27
Кстати никогда не видел, как выглядит их платка для установки Z80 (есть ли фото или хотя-бы рисунок схемы расположения деталей?)
вот здесь же http://zx-pk.ru/threads/6066-orion-128-raznoe.html?p=912248&viewfull=1#post912248 VladimirS выкладывал полную брошюру. там всё есть.
Stampmaker, или журнал Радио, 1996г. №№4 и 6 :)
Это оригинал платки ОРИОН-СЕРВИС или новодел ?
А почему не сделать платку Z80 втыкаемую в системный разъём. Именно так было сделано в первом прототипе ОРИОН-ПРО в 1994 году. В системный разъём вставляется платка тоже горизонтальная (не вертикальная), где стоит Z80 и его обрамление. При втыкании платки в разъём автоматически на вход HOLD КР580 подаётся сигнал, отрубающий КР580 и он не мешает. Можно предусмотреть тумблер КР580 <--> Z80.
Для установки Z80 через системный разъём я просто не додумался, т.к макетировал на СПЕЦИАЛИСТЕ, переделанном в ОРИОН, где системный разъём отсутствовал как класс. Да и мне и в голову не могло прийти, что кому-то имея Z80, понадобится возвращать КР580 (о программах вредителей, использующих JPO после арифметических команд, я ещё не знал тогда).
Есть z80 card1, card2, Орион сервис v3.1, 3.3, "голый z80", есть еще авторский вариант на ИР22, наверное есть еще z80 других авторов.
выясняется, что проги под z80 полностью работоспособны только на z80 Card2? зачем остальное?
Stampmaker
11.05.2017, 10:53
Это оригинал платки ОРИОН-СЕРВИС или новодел ?
если вопрос был ко мне, то это самопал (повторюсь, плата для себя), а оригинальная плата вот такая
http://s011.radikal.ru/i316/1705/e3/91b0253cc886.png (http://radikal.ru)
VladimirS
11.05.2017, 11:26
Немного не по теме, но хочу поделиться, хотя для кого-то это не секрет:
Понадобился мне для одной конструкции контроллер, проще сделать допустим на Меге, но надо знать Си,
а там разные палочки, черточки, запятые и т.д., время займет пока осилю, да и осилю ли, а на Z80
все просто, понятно хотя и громоздко, короче получилось следующее.
Такой набор микросхем:
Генератор 10 мГц
Процессор Z84C0020PEC
Память FM1608 ПЗУ и ОЗУ
Порт 82С55
Altera EPM7064SLC
После отладки и испытания конструкции от +5 Вольт, случайно подал +3.5 Вольта - и она заработала
так и сейчас работает.
А клавиатуру я сделал из старой механической, чтобы не путаться с разными шрифтами и разным расположением
кнопок, я разделил русский и английский на разные поля и расположил по стандарту.
Получилось так
Генератор 10 мГц
Процессор Z84C0020PEC
А почему гена не на 20 МГц? ;)
VladimirS
11.05.2017, 11:39
А почему гена не на 20 МГц?
В этой конструкции не нужна такая скорость, да был под рукой
- - - Добавлено - - -
А клавиатуру я сделал из старой механической, чтобы не путаться с разными шрифтами и разным расположением
кнопок, я разделил русский и английский на разные поля и расположил по стандарту.
Получилось так
Миниатюры
Забыл добавить, клавиатура стандартная РК-86
проги под z80 полностью работоспособны только на z80 Card2? зачем остальное?
Не, дело в том, что авторы данной схемы не писали и не адаптировали программ от Спека, а вот Чистяков адаптирповал много программ и игр, вот и получается, что он под свою схему все делал, а Орионовцы только железо сваяли.
Не, дело в том, что авторы данной схемы не писали и не адаптировали программ от Спека, а вот Чистяков адаптирповал много программ и игр, вот и получается, что он под свою схему все делал, а Орионовцы только железо сваяли.
Вопрос в стандартизации, нужно в как то в одном направлении развиваться, тогда результат будет более значимый.
авторов нет - каждый тянет в свою сторону. Это если для развития.
А так можно делать что угодно, кому что нравиться.
Прошу прощения за длинную цитату
Не могли бы Вы заменить мою большую цитату, приведённую Вами. Дело в том, что у меня Win XP (не могу использовать другие, мне нужно пользоваться программами MS-DOS, а более новые Windows это не могут). На Win XP не работают (или плохо) новейшие браузеры, отчего на этом сайте я использую бразер 2005 года (лишь когда надо сделать вложение приходится грузить медленный монстрообразный браузер этого года).
Со старым браузером не работает "предварительный просмотр", поэтому ошибки я исправляю уже после выкладки. Поэтому, если кто-то "хватает" моё сообщение сразу же по появлению, то оно оказывается безграмотным, изобилующим опечатками и ошибками, что характеризует меня как малограмотного, что обидно.
Зачем остальные варианты установки Z80 ?
Вариант Z80CARD-II наоборот, уже не актуален, т.к он нужен только для Z80 игр, которые сейчас уже никого не интересуют. А вот сам процессор Z80 по любой схеме актулен, т.к, в отличие от КР580, позволяет турбирование.
Но самый главный довод в том, что без архитектуры с окном в 16К в адресах 0...3FFF, можно в банке 0 в адресах 0...7FFF поставить скоростное ОЗУ w24257, работающее без WAIT, на полном такте Z80. Причём затратив на это всего час труда. А ещё лучше применить статику в адресах 0...BFFF, тогда только работа с экраном останется тормозной. Таким образом, без всяких усилий получаем ОРИОН с реальным тактом в 10 МГЦ, самый быстрый отечественный компьютер. Ради этого в 1997-98 я снял со всех своих плат диспетчер ОЗУ и остался с "голым Z80", зато скоростным.
Поэтому и получается, что вариант "голый Z80" это самый разумный вариант, как самый простой, наименее трудоёмкий и дающий наивысшую скорость.
что остается от стандартной платы Ориона и вообще как это выглядит
Всё остаётся, и выглядит точно так же, только стоят ещё 3 ИМС вторым этажом. По-моему на порядок уродливее выглядит плата ОРИОНА с второ-этажной платкой ОЗУ и платкой для Z80, а мои платы выглядят красиво, особенно если в слоте стоит РК-КНГМД от МИКРОШИ (у меня на 3-х платах ОРИОНА стоят 50-ти контактные эпловские слоты, что дико удобно для подключения разной периферии).
Кстати, в ранние годы, я третий ППА не ставил, а ставил на это место ВИ53. А если говорить о больших переделках на плате ОРИОНА, то я делал и 3-х битовый цвет, напаивая ИР82 и ИР13 вторым этажом, а С.Коровкин делал даже 4-х битовый цвет. Когда у меня было 10 МГЦ, то стояло 15 доп.корпусов, частично даже в 3 этажа. Именно в этом большой плюс ОРИОНА по сравнению с ОРИОН-ПРО, - корпуса стоят не впритык, отчего на плате можно макетировать.
Это спорт наверное
Вовсе нет. Я возиться с железом вообще не люблю, но приходится. При схеме "голый Z80" нет никакого "электро-траха". Невозможно даже сравнивать с затратами усилий при изготовлении ОРИОН-ПРО, разница в трудоёмкости в тысячи раз. Глядя на образец, я делал установку Z80 менее, чем за час. Оттого на всех 6-ти моих платах Z80 стоит совершенно одинаковым образом (все Z80 запаяны, т.к часть проводков к Z80 удобно подпаивать со стороны деталей).
Кстати недавно я поставил КР580 в одну из плат ОРИОНА. Хочу сделать приличный ОРИОН на КР580. Для этого турбирую его до 3 МГЦ (кварц 24 МГЦ, пиксель-клок 8 МГЦ, растр на весь экран, буквы намного крупнее) и поставлю в него ROM-BIOS 27256. Экран будет 400*256 (причём в отличие от варианта 1991, с цветом). А на место 3-го ППА поставлю AY-8910. Т.к КР580 буферизован, может быть удастся даже получить 3.25 МГЦ (имею кварц 26 МГЦ). Это позволит удобно программировать для КР580.
Поэтому недавно и занялся ПЗУ ОРИОНА для КР580 и MS-7007. Т.к клавиатуру собираюсь применить MS-7007. Проблема припаяться к плёночным выводам (это делается так - пленка кладётся на железную плиту и пайка делается сплавом Розе смешанным с чистым оловом, температура плавления припоя 120', вместо 270' у обычного припоя).
есть еще авторский вариант на ИР22
А нет-ли адаптации схемы установки Z80 в ОРИОН-ПРО для обычного ОРИОНА. Возможно схема из ОРИОН-ПРО даст надёжную работу, хотя бы как Турбо-200%.
Есть ещё шанс получить схему Z80 на /M1, использованную в платах Супер-ТУРБО С.Караваева. Для этого, мне например, придётся, распаивать эту плату, чтобы по печати восстановить схему. Удачно, если у кого-то есть незапаянная плата Супер-ТУРБО. Это не так трудоёмко, ведь всю схему восстанавливать не надо, достаточно узнать только, как для Z80 формируется CLK, /WAIT и сигналы открытия буферов.
Схему ОРИОН-СЕРВИС можно дополнительно турбировать, если поднять такты /RAS /CAS до 5 МГЦ (одновременно изменив такт на C у D5.2 с такта 2.5 МГЦ на 5 МГЦ). Тогда и получится быстродействие не хуже, чем в ОРИОН-ПРО.
Вопрос в стандартизации, нужно развивать лишь одно направление, тогда результат будет более значимый
Это ясно. Поэтому-то в 1996, когда я увидел, что гораздо больше пользователей с "голым Z80" по схеме ОРИОН-СЕРВИС, стал сторонником "голого Z80". Вариант установки Z80 с ИД7 для команд OUT совместим с схемой Z80 от ОРИОН-СЕРВИС, если не использовать прерывания и порты FC, FD, FE, что обычно и имеет место.
Развивать стоит только одно направление - базовый ОРИОН на КР580 с ОЗУ до 512К (это как раз плата ОРИОН rev.512). Программы надо делать так. Если можно программу сделать для базового ОРИОНА, то так надо и делать. Если не получается, то на "голом Z80". Если и так не получается, то в архитектуре Z80CARD-II. А если и этого мало, то используем 4 плоскости и 6.5 МГЦ в ОРИОН-ПРО.
Поэтому полезно выпустить новодел печатных платок по схеме ОРИОН-СЕРВИС. Хотя, как я указал выше, эту платку разумнее упростить (убрать одну КП11 и ловушку DI/EI) и дополнить звуком OUT FF. Разве нужен кому-то звук по INTE? Разве есть программы КР580 "скворчащие как оркестр" через выход INTE ? Если и есть, то так мало, что переделка их всех не займёт и часа.
Можно также подумать о введении прерываний в схему Z80 от ОРИОН-СЕРВИС. Поэднее, когда будет время и желание, я сделаю подробный ДОК, как ставить Z80 без платы. И верятно, придумаю и отмакетирую реверсивную платку Z80 более простую, чем платка Z80 от ОРИОН-СЕРВИС. И ещё я бы предусмотрел порт FC00/FC, чтобы был вариант расширения ПЗУ до 4 кб для бедных ((вторая РФ2 вторым этажом).
Платка Z80 от ОРИОН-СЕРВИС фигурной формы. Возможно, чтобы не мешать второэтажной плате расширения ОЗУ. А не будет ли вышеприведённая прямоугольная плата новодела мешать платке расширения ОЗУ ?
Не имеет ли смысл перенести регистр продлевающий данные на платку Z80, заменив много жрущий 580 ИР82 на 1533 ИР22, чтобы не паять его вторым этажом и не иметь проблем с перегревом? Да и тем у кого стоит АП6 паять ИР82 сверху менее удобно (питание на совпадает).
А нет-ли адаптации схемы установки Z80 в ОРИОН-ПРО для обычного ОРИОНА. Возможно схема из ОРИОН-ПРО даст надёжную работу, хотя бы как ТУрбо-200%.
Есть ещё шанс получить схему Z80 на /M1, использованную в платах Супер-ТУРБО С.Караваева. Для этого, мне например, придётся, распаивать эту плату, чтобы по печати восстановить схему. Удачно, если у кого-то есть незапаянная плату Супер-ТУРБО. Это не так трудоёмко, ведь всю схему восстанавливать не надо, достаточно узнать только, как для Z80 формируется CLK, /WAIT и сигналы открытия буферов.
Это надо у спецов (Guru) спросить, возможно у них что то есть.
Stampmaker
11.05.2017, 17:58
А не будет ли вышеприведённая прямоугольная плата новодела мешать платке расширения ОЗУ ?
нет, не будет
http://s019.radikal.ru/i612/1705/dc/35d52200950f.jpg (http://radikal.ru)
- - - Добавлено - - -
Разве нужен кому-то звук по INTE? Разве есть программы КР580 "скворчащие как оркестр" через выход INTE ?
Вы меня сейчас очень удивили.
ЕМНИП, игры под КР580 всегда имели звук через INTE. Те, которые, естественно, озвучены.
игры под КР580 всегда имели звук через INTE. Те, которые, естественно, озвучены
Это понятно. Но я имел ввиду именно качественную озвучку. А качественная озвучка только в играх адаптированных от ZX-Spectrum. В авторских играх лишь щелчки и писки, что не особо улучшает качество игры. Стоило ли заставлять тысячи пользователей паять ловушку на EI/DI, что образует половину схемы, если те несколько игр, что были с качественной подзвучкой в 1992-93 так легко адаптировать даже неквалифицированному пользователю.
Я не против ловушки на EI/DI. Вполне грамотное техническое решение. Почёт и уважение аппаратчику из ОРИОН-СЕРВИС. Просто хотелось бы чтобы платка Z80 была совсем маленькая, простая, всем доступная, без нагромождений, лишённая того, без чего можно обойтись. А если кто хочет, тот тогда может сделать отдельную платку "озвучивателя программ с INTE" и вставлять её в системный разъём (или в слот).
Stampmaker
11.05.2017, 20:11
хорошо. есть такое предложение: внедрить в схему ОРИОН-СЕРВИСа порт #FF (получится такое?) и смикшировать оба выхода (OUT FFH + INTE) в один звуковой канал.
barsik, Вы сможете это сделать, нарисовать эту доработку так, чтобы всё понятно было?
просто я, например, не знаю, что и как там внедрять.
Чтобы получить звук по OUT FF надо иметь порт FF. Для это нужен дешифратор ИД7 из схемы Z80CARD-II или логика для дешифрации адреса FFxx. Часть дешифрации уже делает сигнал 112 (/F800), так что с его использованием остаётся только определить что 3 бита D10, D9, D8 равны 1. Подав на четырёх входовый ЛА1 (ЛА6) эти 3 адреса и инверсный сигнал 112 (D8/11) получаем искомый чип селект на адрес FF00. Объединив этот сигнал с выхода ЛА1 и /IORQ на ЛЛ1 или ЛЕ1 получим строб для входа C D-триггера.
Звук OUT FF это триггерный звук. По каждому стробу в порт FF состояние D-триггера меняется на обратное. Это сокращает объём программы вывода звука вдвое. Этот звук был заимствован из Apple-II.
Ставить столько деталей, когда следует наоборот сократить платку Z80, нежелательно. Поэтому можно попробовать использовать выдвинутую ранее идею использовать строб порта FB00 в качестве строба порта FF00, используя неполную дешифрацию портов в схеме ОРИОНА. Если я правильно разобрался в схеме (а я естественно, могу ошибаться), то при обращении по OUT FF мы попадаем в порт STA FB00. Это надо проверить на реале. Если по OUT FF на выходе D27/12 есть импульсы, то этот строб STA FB00 можно подавать на вход C триггера и он будет выдавать звук по OUT FF.
Если же это не работает, то надо ставить дешифратор ИД7 или вышеописанную ЛА1 формирующую чип-селект FF00 для его обьединения c /IORQ (при желании можно объединить и с /WR, хотя это и не важно, т.к порта FF на ввод нет).
Если триггера нет, то хоть какой-то звук по OUT FF слышно, если просто без триггера подать выход строба (в Z80CARD-II это выход ИД7) на динамик. А если поставить последовательный диод и ёмкость на +5В, то громкость возрастает (при стробе ёмкость быстро заряжается нулём через диод и после пропадания иголки строба сигнал 0 сохраняется на емкости). Понятно, что это не чистый тон, а хрип, но хоть что-то слышно.
Если вот этот код (это подпрограмма F83F в ПЗУ для Z80) даёт звук при подключении триггера на выход STA FB00 (D27/12), то значит порт FB в ОРИОНЕ склеен с портом FF и эта идея для вывода звука работает.
.
CBEEP EQU 0F3E7H ; константа BEEP
XBEEP: LD C,60 ; 15 BYTES
BP1: OUT (0FFH),A
LD A,(CBEEP)
BP2: NOP
DEC A
JR NZ,BP2
DEC C
JR NZ,BP1
RET
- - - Добавлено - - -
На висящие входы сделать привязку на +5В через резистор ?
Резистор жалко тратить. 155-тая читает единицу от висящих входов, а 1533 допускает подключение входов на +5В. А те, кто поставит 555-тую ТМ2, пусть пропадают...
Stampmaker
11.05.2017, 21:04
выводы 1 и 4 лучше подтянуть к питанию через резистор?
add: резистор подтяжки поставил
теперь осталось только собрать :v2_dizzy_roll:
теперь осталось только собрать
Для проверки слипаемости портов FB00 и FF00 не надо ничего собирать. Для этого Z80 не нужен. Достаточно на обычном ОРИОНЕ с КР580 "на соплях" подключить D-триггер к выходу D27/12 и запустить в бесконечном цикле приведённую подпрограмму вывода звука.
Сообщите пожалуйста, результаты, такого теста звука OUT FF. Триггер можно даже не подключать, достаточно подключить динамик прямо на выход STA FB00 (D27/12). Если использовать пьезо излучатель, то даже буфер не нужен. Без триггера чистого тона, как при меандре не будет, но понять, что звук идёт можно - пьезоизлучатель будет хрипеть от иголок стробов.
Так как порт STA FB00 тогда занят для звука, то управлять включением большого ПЗУ в окне 0...3FFF придётся иначе. Т.к других портов больше нет, то придётся объединять управление ПЗУ с управлением ОЗУ, т.е с портом F9. Это, увы, намного менее удобно и создаёт проблемы, но куда деваться, если портов больше нет.
Бит D7 в порту F9 будет включать большое ПЗУ в окне 0...3FFF. 16 банок по 64К, т.е 1 мб надеюсь ОРИОНУ хватит, хотя бы на первое время. Тогда биты D4, D5, D6 будут задавать номер 16-ти килобайтного куска ПЗУ.
Некоторая сложность возникает при вызове подпрограмм F836/39 из ПЗУ включённого портом F9, т.к эти п/п-ммы всегда возвращаются по RET выдав в порт F9 байт 0. Таким образом напрямую вызывать подпрограммы F836/39 из большого ПЗУ в адресах 0...3FFF нельзя, т.к при возврате ПЗУ будет отключено. Выходом является, давно напрашивающаяся модернизация подпрограмм F836/39, заключающаяся в том, что они будут теперь делать возврат не в банку 0, а ту банку номер которой хранится в ячейке F3F9. Если в этой ячейке 0, то совместимость сохраняется. Благодаря такой модернизации ПЗУ F800, можно будет вызывать п/п-ммы F836/39 и из большого ПЗУ в адресах 0...3FFF. Впрочем и без модернизации ПЗУ F800 можно выкрутиться, вызывая п/п-раммы F836/39 всегда только из ОЗУ банки 0.
Надо решить как будет управляться большое ПЗУ. Тут есть 2 варианта. Большое ПЗУ работает только в банке 0, и второй вариант, когда большое ПЗУ закрывает область 0...3FFF во всех банках. Каждый вариант имеет свои плюсы и минусы.
Можно сделать так, чтобы большое ПЗУ включалось только в банке 0, отчего объединение управления ОЗУ и ПЗУ в одном порту не повредит. Но тогда программой в ROM-BIOS нельзя будет напрямую закрашивать плоскость цвета, а потребуется по-старинке закидывать п/п-раммы раскраски в некоммутируемую область выше F000. А также от этого утратится логическая совместимость с архитектурой Z80CARD-II, в которой включённое окно 16К не коммутируется портом F9.
Включение большого ПЗУ не только при текущей банке 0, но и во всех банках, даёт больше гибкости для ДОС в других банках ОЗУ, например позволяет подпрограммой ПЗУ читать с дискеты в дисковый буфер ДОС в банке 1 (а не только в банке 0) и даёт возможность из ПЗУ напрямую работать с плоскостью цвета. При таком включении ПЗУ также чуть меньший расход деталей.
Ввиду вышеописанного неудобства такого объёдинения управления ОЗУ и ПЗУ в одном порту, рассмотрим, как можно ввести реальный порт FF для звука, не растрачивая на это порт FB00.
Убрать "слипаемость" портов FB00 и FF00, как я писал ранее, очень просто. Достаточно двух диодов и резистора на ноге D27/15 (по схеме монтажное И). Резистор 150 ом, привязка входа на землю. А через 2 диода подаётся старый сигнал 112 (/F800) и адрес A10. На входе будет 0, только когда оба сигнала нулевые. Тогда при адресации выше FC00 (верхний) дешифратор D27 будет деактивирован сигналом A10=1. Такая простая переделка даёт полноценную дешифрацию портов вывода F800...FB00 и даёт возможность ввести порт FC00...FF00.
После такой переделки с двумя диодами по адресам FC00...FF00 ничего не стоИт. Остаётся получить чип селект на эти адреса. Для этого достаточно инверсный сигнал 112 (т.е D8/11) и адрес A10 объединить по 'И' на ЛА3. Это даёт выборку FC00...FFFF (/FC00). Чтобы был строб при OUT в эти адреса достаточно объединить на ЛЛ1 эту выборку /FC00 и /IORQ. Можно, используя 2 вентиля из ЛА3, проинвертировать /IORQ и чип селект /FC00 и объединить на 4-ом ЛА3. На выходе получится единичный строб по команде OUT FF. Т.е весь расход деталей на звук OUT FF составит ЛА3, ТМ2 и два диода..
А никто не встречал схему замены ОЗУ РУ5 на несколько корпусов SRAM? По моему очевидна экономия корпусов, как на самом ОЗУ, так и на корпусах регенерации ОЗУ.
Есть мысля схемку отрисовать, с заменой ОЗУ, кипятильников-буферов, голым Z80 и прочими доработками из темы по версии 512. Но неохота все в кучу собирать, что надо и что нет. Этакий "оптимальный" нью Орион, но с полной совместимостью с прародителем.
Понимаю что анонсированный Радио-86РК Плюс я почти забросил, но ведь процесс-то творческий, и требует вдохновения, а его пока нет. РК Плюс уже почти сформировался в мыслях, как вдохновлюсь проверить в железе пару идей, так и за отрисовку схемы сяду.
Stampmaker
12.05.2017, 10:23
как-то всё сложно.
проще сразу ввести дешифратор для организации доп.портов FC..FF. и FB сохранено на основной плате (также можно брать с этого же дешифратора) и 4 новых порта добавлено.
ну и что, что корпус на платку добавится, зато имеем профит по количеству портов.
Есть мысля схемку отрисовать, с заменой ОЗУ, кипятильников-буферов, голым Z80 и прочими доработками из темы по версии 512. Но неохота все в кучу собирать, что надо и что нет. Этакий "оптимальный" нью Орион, но с полной совместимостью с прародителем.
Имхо, имеет смысл сразу делать видеовывод в формате VGA (режим 800х600@60), ОЗУ 1 Мб, ЦПУ Z80@20МГц, рассыпуха на КМОП (74HCTххх и выше).
Stampmaker
12.05.2017, 11:24
Для проверки слипаемости портов FB00 и FF00
Сообщите пожалуйста, результаты, такого теста звука OUT FF
проверил, порты FB и FF слипаются. программа выдает меандр длительностью 1,4мс.
для КР580 программа получилась такая:
CBEEP EQU 0F3E7H ; константа BEEP
XBEEP: MVI C, 60 ; 15 BYTES
BP1: OUT 0FFH
LXI H, CBEEP
MOV A, M
BP2: NOP
DCR A
JNZ BP2
DCR C
JNZ BP1
JMP XBEEP
программа выдает меандр длительностью 1,4 МСЕК
Что Вы понимаете под длительностью? Полагаю, что это период (а не длительность импульсов)? Период в 1.4 МСЕК соответствует частоте 714 герц. Если бы Вы не применили загрузку через HL, а сразу LDA CBEEP, то получилось бы 800 герц, как и положено.
Если вводить дешифратор ИД7, то на основной плате надо делать доработку по устранению слипаемости портов, как я описал в своём предыдущем посте.
Может быть у Вас есть возможность и желание проверить и схему устранения слипаемости портов (только лучше вместо диодов применить вентиль ЛЛ1)?
имеет смысл сразу делать видеовывод в формате VGA (режим 800х600@60), ОЗУ 1 Мб, ЦПУ Z80@20МГц, рассыпуха на КМОП
Вообще-то не заметно, что много клонов 8-ми разрядок делают сразу для VGA (видел только РК86 с выходом на VGA).
Входной клок видеогенератора с учётом соотношений частот строк и кадров придётся увеличить на (31.5:15.625)*(70:50)= 2.823 раза, т.е вместо 10 МГЦ кварц будет 28 МГЦ. Клок CPU и частота ОЗУ будет 28:4= 7 МГЦ, что даже Z80B потянут. Период доступа к ОЗУ будет 1:7= ~140 НСЕК, так что 100 наносекундные древние ОЗУ потянут.
Но поиск остальных деталей будет затруднителен. Где брать такие скоростные ИМС работающие на 28 МГЦ? Да и настройка будет не очень лёгкой.
Поставить статику в области вне экрана несложно. А чтобы ставить в экран придётся менять КП12 на КП11. И выигрыш по деталям будет только на ОЗУ. Поэтому применение SIMM (30 или 72 ноги) ничуть не хуже статики, но дешевле и проще.
Если не ставить целью VGA, то гораздо проще сделать клон ОРИОНА с таким же быстродействием в 6.5...7.1 МГЦ, используя базовую схемотехнику, ОЗУ на такте 5 МГЦ, Z80B с WAIT на такте 10 МГЦ и две планки SIMM-30 по 1 мб (что в сумме 2 мб). SIMM рассчитаны на такую скорость, поэтому перегрева ОЗУ на такте 5 МГЦ не будет (как происходит с РУ5-тыми), отчего надёжность будет высокой. А для достижения скорости, достаточно поставить в банки 0 и 1 в адресах 0...7FFF статику w24257 без WAIT, так что программы в младших адресах будут прогоняться на эффективной скорости в 10 МГЦ, тем самым делая такую версию ОРИОНА более выгодной, чем вариант для VGA.
А вместо подключения к VGA следует использовать подключение к целой IBM PC с установленной TV-картой, имеющей внешний вход VIDEO или китайский VGA-конвертор.
Stampmaker
12.05.2017, 13:31
Что Вы понимаете под длительностью? Полагаю, что это период (а не длительность импульсов)? Период в 1.4 МСЕК соответствует частоте 714 герц.
да, именно это я и имею ввиду - период.
- - - Добавлено - - -
Ввиду вышеописанного неудобства такого объёдинения управления ОЗУ и ПЗУ в одном порту, рассмотрим, как можно ввести реальный порт FF для звука, не растрачивая на это порт FB00.
Убрать "слипаемость" портов FB00 и FF00, как я писал ранее, очень просто. Достаточно двух диодов и резистора на ноге D27/15 (по схеме монтажное И). Резистор 150 ом, привязка входа на землю. А через 2 диода подаётся старый сигнал 112 (/F800) и адрес A10. На входе будет 0, только когда оба сигнала нулевые. Тогда при адресации выше FC00 (верхний) дешифратор D27 будет деактивирован сигналом A10=1. Такая простая переделка даёт полноценную дешифрацию портов вывода F800...FB00 и даёт возможность ввести порт FC00...FF00.
После такой переделки с двумя диодами по адресам FC00...FF00 ничего не стоИт. Остаётся получить чип селект на эти адреса. Для этого достаточно инверсный сигнал 112 (т.е D8/11) и адрес A10 объединить по 'И' на ЛА3. Это даёт выборку FC00...FFFF (/FC00). Чтобы был строб при OUT в эти адреса достаточно объединить на ЛЛ1 эту выборку /FC00 и /IORQ. Можно, используя 2 вентиля из ЛА3, проинвертировать /IORQ и чип селект /FC00 и объединить на 4-ом ЛА3. На выходе получится единичный строб по команде OUT FF.
если я правильно понял описание, то должно получиться вот так.
в основной схеме предварительно разрываем связь между выводами 1 и 15 дешифратора ИД4 DD27.
http://s03.radikal.ru/i176/1705/df/7bd63b5381ca.jpg (http://radikal.ru)
как теперь на КР580 получить /IORQ?
OrionExt
12.05.2017, 19:33
как теперь на КР580 получить /IORQ?
Тут два варианта 580ВК28/ВК38 или регистр 8-ми разрядный и рассыпуха.
как теперь на КР580 получить /IORQ?
Да, тут я похоже "зарапортовался", где-то ошибся. Представляя схему в голове трудно всё учесть. О том как будет пищать по OUT FF КР580 я и не подумал. Но скорее всего есть какой-то простой выход и для КР580. Давайте думать, на то и форум. Конечно ВК28 не вариант.
Что если в этой же схеме, для формирования строба триггера вместо /IORQ применить /WR? Из-за подмены адресов по OUT, сигнал 112 (/F800) вместе с /WR и при КР580 и при Z80 дадут строб.
Да кстати, резистор R1 в 1 кОМ на землю даже 1533-я серия, возможно, не воспримет как ноль, а 155-тая серия уж точно 1 кОм даже не заметит. Я вроде когда-то в подобном варианте при 155-той серии использовал 150 Ом.
Я вообще-то думал, что ЛА3 и ТМ2 формирующий звук OUT FF можно ставить на основной плате, напаивая их вторым этажом, и сложение сигнала INTE с сигналом триггера OUT FF делать здесь же. Потому что сигнала 112 нет на платке Z80 и его придётся "бросать" навесным проводком, что затруднит обратную замену платки Z80 на процессор КР580, сделав это невозможным без паяльника.
Это даёт пользователю выбор, применить STA FB00 для формирования звука (оставив "слипаемость" портов FB00 FF00), что требует расход только в ТМ2 или же сделать полноценную дешифрацию портов, устранив "слипаемость". Конечно работ по доп.монтажу без второ-этажных навесных корпусов меньше, но как цепь 112 или его инверсию провести на платку Z80 (т.е есть ли какая-то нога у КР580, которая ему не особо нужна?).
Входы RS у триггера звука заземлены? Выходной сигнал триггера не строб, а меандр. Короткий (400 НСЕК) строб только на входе C триггера.
Кстати, благодаря наличию двух звуков при КР580, получается уникальная возможность регулировать громкость обоих каналов звука, если убрать диоды в сумматоре звуков. Без диодов можно получить эффект вибрато.
При вибрато, существенно повышающем качество звука, происходит модуляция амплитуды сигнала глубиной до 25-30% с частотой 6-8 герц. Если резисторы в резистивном сумматоре звуков одинаковы, то будет модуляция глубиной в 50%. При соотношении резисторов 2 к 1, получится нужная глубина вибрато. Тогда основной тон выдаём по OUT FF, а по DI/EI выдаём частоту вибрато. При этом, если прогонять эту программу на Z80, никакого вибрато не будет, но звук OUT FF будет. Интересно в ОРИОН-ПРО есть звук по OUT FF?
Да, и чтобы звук был более синусодиальным на выходе можно поставить ФНЧ, - RC или LC цепочку, что сделает из меандра почти синусоиду, хотя и сократит амплитуду.
OrionExt
12.05.2017, 21:07
barsik - это слово-состояние у ВМ80 (/IORQ там нет, но есть похожее):) Ножек у ВМ80 не хватило.
Stampmaker
12.05.2017, 22:04
barsik, схема распортовки работает. после ввода диодов и резистора слипание отсутствует.
Что если в этой же схеме, для формирования строба триггера вместо /IORQ применить /WR? Из-за подмены адресов по OUT, сигнал 112 (/F800) вместе с /WR и при КР580 и при Z80 дадут строб.
пробовал, если вместо /IORQ дать /WR, то строб есть. если обращения к порту нет, то на выход всё равно идёт мусор. сразу после включения компьютера.
сигнала 112 нет на платке Z80 и его придётся "бросать" навесным проводком
да, но это не беда. 5 (или 10) МГц тоже навесным проводом подавать надо. так что 1 провод или 2 это уже неважно. чтобы снять плату и вернуть КР580 достаточно сделать на проводах разъёмчик. тот же PLD хотя бы.
как цепь 112 или его инверсию провести на платку Z80 (т.е есть ли какая-то нога у КР580, которая не особо ему нужна?)
ноги 21 и 24 в данной схеме у процессора свободные, не используются. можно через них кинуть и частоту и 112 провод. но тогда получается, что у каждого устанавливаемого экземпляра эти ножки нужно откусывать. а это не комильфо.
- - - Добавлено - - -
Я вообще-то думал, что ЛА3 и ТМ2 формирующий звук OUT FF можно ставить на основной плате
я так и сделал
а рядом поставил разъём, через который на плату Z80 будет подаваться 5 МГц и cниматься c неё /IORQ, а выход OUT FF уже на основной плате объединится с INTE
http://s008.radikal.ru/i306/1705/ba/b708a515b716.jpg (http://radikal.ru)
- - - Добавлено - - -
Да кстати, резистор R1 в 1 кОМ на землю даже 1533-я серия, возможно, не воспримет как ноль
хорошо воспринимает, всё работает
- - - Добавлено - - -
Входы RS у триггера звука заземлены?
наоборот, подтянуты к питанию
OrionExt
12.05.2017, 22:06
Или я не врубился, или вы решили заэмулить Z80 на ВМ80 без портов. Это будет – прорыв!!! Z80-card2 устоявшаяся конфигурация и этот груз придется тянуть через года.
А понял. Z80 от сервис доработка – успехов!!!
Печально, что на вход C триггера звука идёт мусор при /WR^/F800. Это получается, вероятно, из-за того, что ROM-BIOS делает OUT F8, F9, FA. Если это так, то с монитором-1, который ещё не знал про то, что команда OUT тоже попадает в системные регистры, мусора на входе C не должно быть. Попробуйте М1.
КР580 точно не должен ничего писать выше FC00. Поэтому, если с М1 помех на выходе триггера нет, то придётся как-то объединять /F800 и инвертированный A10 в формирователе строба триггера.
Что за грамотная плата ОРИОНА с участком слепыша? Что у Вас там справа на месте системного разъёма? Неужели два слота?
Stampmaker
12.05.2017, 22:35
Что за грамотная плата ОРИОНА с участком слепыша? Что у Вас там справа на месте системного разъёма? Неужели два слота?
ревизия 512, на ней два системных слота
фото платы здесь http://zx-pk.ru/threads/18954-sborka-orion-128-rev-512.html
- - - Добавлено - - -
Попробуйте М1.
мусор тоже есть. я так думаю, дело не в командах OUT или STA. как Вы правильно заметили, всё идёт из комбинаций сигналов /F800, A10 и /WR.
чтобы отловить OUT надо ловушку на рассыпухе делать и объединять её с /WR. я правильно понимаю?
вы решили заэмулить Z80 на ВМ80 без портов
Ну что-же делать, если "народу" срочно требуется надёжная работа Z80 на такте 10 МГЦ. Да и кому-то интересно попробовать вариант ОРИОН-СЕРВИС не из практической, а исторической точки зрения.
При установке Z80 по схеме Z80CARD-II, пока нет схемы 10 МГЦ. Точнее такие схемы были (как минимум, известно 5 таких схем), но "откопать" их пока не удалось. А грамотные аппаратчики, что могли бы самостоятельно это вновь разработать, вымерли как класс. Известные схемы Турбо-200% (при которых ОЗУ на 5 МГЦ), на обычном ОРИОНЕ приводят к перегреву 565РУ5, отчего надёжно работают только с мощным вентилятором или при замене кварца на 9 или 8 МГЦ или же требуют применения SIMM, которые не перегреваются на такте 5 МГЦ.
Мне не нравится схема установки Z80 от ОРИОН-СЕРВИС. Но что поделаешь? Я уже с середины 90-х пользуюсь вариантом "голый Z80", поэтому схема ОРИОН-СЕРВИС, если в ней сделать звук, меня устраивает. Z80CARD-II имеет смысл только для игр от ZX, которые уже никого не интересуют.
Преимущество Z80 без диспетчера ОЗУ в том, что можно иметь 62256 без WAIT на полном такте Z80, что без проблем даёт скорость в 5 МГЦ, а также в том, что можно просто расширить ПЗУ ОРИОНА на 27256 до 32 кб, что кардинально улучшает качество ОРИОНА.
Кстати, при Z80CARD-II тоже можно ставить 62256 в адресах 0...7FFF в банке 0. Только схема чуть сложнее. Тогда 62256 на все 32К в адресах 0...7FFF получается только при отключенном окне диспетчера 0...3FFF. А если окно включено, то быстрая 62256 остаётся только в адресах 4000...7FFF.
ревизия 512, на ней два системных слота
Не знал, что плата рев.512 такая грамотная. Только зря не поставили Z80 сразу на основную плату (для фанатов КР580 можно было сделать платку КР580, втыкаемую в панельку Z80). В один слот надо ставить мультикарту: IDE-винт, ВВ51, ВИ53, адаптер мыши, AY-8912, возможно, флоп). А во второй слот - платку текстового адаптера на 30 TTL-корпусах.
Stampmaker
12.05.2017, 23:11
я почему заинтересовался "ОРИОН-СЕРВИСОМ"?
тут две причины:
1) Z80CARD-II у меня не заработала (ну как не заработала - компьютер зависает после старта, хотя тест проходит нормально. грешу на ОЗУ);
2) есть человек, который собрал эту схему и гарантирует её работу.
VladimirS
13.05.2017, 00:05
Где брать такие скоростные ИМС работающие на 28 МГЦ?
Вот
Эй, а схема из поста http://zx-pk.ru/threads/6066-orion-128-raznoe.html?p=912535&viewfull=1#post912535 - неверная.
/IORQ забыли проинвертировать. IORQ должен быть без палки, т.е равный 1, когда активный. И WR, используемый вместо него, соответственно, тоже. На вентиле 'И' нельзя объединить единичный сигнал выборки адреса и нулевой сигнал /WR. WR тоже должен быть единичным, т.е без палки и в схеме ОРИОНА такой сигнал есть (D59/4). Т.е схема из указанного поста годится, только вместо /IORQ надо подать D59/4 (WR). Тогда звук будет и при КР580 и при Z80.
Я предлагал сразу брать инвертированный 112, это сигнал D8/11, тогда от ЛА3 и остаётся вентиль для инверсии /IORQ.
чтобы отловить OUT надо ловушку на рассыпухе делать и объединять её с /WR
Не понял о какой ловушке речь.
Строб записи получают путём дешифрации адреса и объединением с сигналом /WR. Именно это в данной схеме и сделано. Если инвертированный сигнал 112 объединить на 'И' с адресом A10, то получается дешифрация области FC00...FFFF. Это и есть ловушка на адрес.
Z80CARD-II у меня не заработала... хотя тест проходит нормально
Тест из ПЗУ проходит, а программа не работает бывает, если подать инверсный клок. Попробуйте инвертировать клок Z80 и поэкспериментировать, подавая 5-ти вольтовые Ф1 и Ф2, а также сигнал 43 (2.5 МГЦ) прямой и инверсный. Проверьте, что 12 и 13 ноги у D13 соединены.
LeoN65816
13.05.2017, 10:37
Период доступа к ОЗУ будет 1:7= ~140 НСЕК, так что 100 наносекундные древние ОЗУ потянут.
100 нс чипы тянут только до 5 МГц... Для 7 МГц надо 70 нс (теоретический предел), а лучше 60 нс, но они (в DIP-е) уж совсем дефицит...
Указанное на чипах время - это время активного состояния сигнала выборки строк tRAS. Полный период произвольного доступа состоит из суммы этого времени и времени восстановления tRAS_Precharge, которое примерно равно этому же значению (иногда чуть меньше, указывается в шитах).
Stampmaker
13.05.2017, 20:11
можно попробовать вот такую схемку применить.
взято с Z80CARDII
в результате имеем диапазон от F8 до FF без накладок друг на друга
http://s019.radikal.ru/i633/1705/47/60516b8d1e97.jpg (http://radikal.ru)
- - - Добавлено - - -
Не понял о какой ловушке речь.
да я думал применить безумную идею отлова кода команды на шине данных, потом запоминать бит-состояние в триггере по такту Ф1 (или Ф2, не знаю что правильнее)... но подумав понял, что это плохая идея. и неверная.
можно попробовать вот такую схемку применить
Можно конечно. ИД7 легко напаять вторым этажом на КП12 стоящие рядом с CPU. Хотя ЛА3 дешевле, чем ИД7. Обычно ЛА3-тьи имеются в наличии десятками, а ИД7-мых никогда не хватает.
Для триггера звука не нужно инвертировать строб с выхода дешифратора. Нам без разницы по какому фронту строба сработает триггер (без разницы будет фронт звука на 400 НСЕК раньше или позже).
А куда Вы истратите второй триггер из корпуса ТМ2 ? Из него удобно получить однобитовый порт управления режимом. Например, для переключения размера экрана 384/400/448/480/512/256 (это расширение порта FA), или для выбора второй 2-х килобайтовой банки ПЗУ F800 (порт FC), или для переключения на альтернативный ROM-диск в 64К (порт FE), или для переключения ТУРБО-НЕТУРБО (порт STA FB00), или для включения большого ROM-BIOS на 27256 (или 62256).
Для базового ОРИОНА без доп.расширений, наверное, разумнее всего истратить этот триггер на переключение ТУРБО-НЕТУРБО, т.к при такте ~5 МГЦ неудобно пользоваться старыми программами. Для коммутации такта 10/2.5 МГЦ понадобится мультиплексор (КП12, КП11). При включении НЕТУРБО надо не только менять клок на входе CLK, но и надо запретить поступление сигнала /WAIT на Z80, потому мультиплексор и необходим.
Блокирование формирователя WAIT D5.1 путем подачи 0 на вход S D5.2 вместо /RESET, как предложено ранее не годится, т.к это одновременно отключает и формирование ZSYNC, т.к в схеме ОРИОН-СЕРВИС формирование WAIT и ZSYNC сделано на одном и том же триггере D5.1.
Stampmaker
13.05.2017, 22:25
А куда Вы истратите второй триггер из корпуса ТМ2 ?
наверное, разумнее всего истратить этот триггер на переключение ТУРБО-НЕТУРБО
да, я так и хочу сделать.
При включении НЕТУРБО надо не только менять клок на входе CLK, но и надо блокировать формирователь WAIT D5.1 путем подачи 0 на вход S D5.2 вместо /RESET)
а зачем, разве недостаточно просто менять частоты с одной на другую?
схема ТУРБО-НЕТУРБО была опубликована здесь
http://zx-pk.ru/threads/17580-sborka-i-nastrojka-z80-card-dlya-orion-128-3-faq.html?p=880245&viewfull=1#post880245
вот она
http://zx-pk.ru/attachment.php?attachmentid=57680&d=1469796195
с нашим свободным триггером схема будет такая
http://s019.radikal.ru/i601/1705/cf/43c2d6518399.jpg (http://radikal.ru)
ЛЕ1 можно припаять сверху на ТМ2, помимо питания припаивается вывод 5 (именно поэтому я поменял местами выводы 5 и 6)
после включения питания на ТМ2/5 будет "0", а значит сразу режим ТУРБО (судя по схеме, переключатель работает именно так)
Эта схема коммутации клока - вообще нехорошая. Это вариация аделаидской схемы Турбо-142%, которую я считаю "химией".
Это не коммутация клоков, а их логическое сложение. Начертите диаграммы сложения такта 5 и 2.5 МГЦ и Вы увидите, что это не эквивалентно коммутации клоков на мультиплексоре. Поэтому эта схема никак не может работать на такте 10 МГЦ, а только на 5 и, и-то только в этой полярности сигналов (т.е не даёт возможности подобрать наиболее выгодный клок, а это может быть инверсия сигналов 42 или 43) и не даёт возможности сдвигать клок задержками на последовательных вентилях. Но главное, схема с нормальной коммутацией клоков работает при 7.5 и 10 МГЦ (если сам Z80 достаточно быстрый), а эта схема "химии" не может.
В раннем варианте Z80 от ОРИОН-СЕРВИС с тактом 2.5 МГЦ WAIT не используется. Отличие варианта 3.10 от 3.20 заключается в том, что для 5-ти МГЦ добавляется узел на D8.1 и D8.2, что удлиняет ZSYNC и, соответсвенно, WAIT ещё на пол такта частоты 2.5 МГЦ, т.е на такт частоты 5 МГЦ. Итого общее число тактов WAIT добавляемое в схеме ОРИОН-СЕРВИС составляет 1 период частоты 2.5 МГЦ и ещё пол периода частоты 2.5 МГЦ. Итого, это 3 периода частоты 5 МГЦ, а достаточно ввести WAIT лишь на один такт частоты 5 МГЦ. Т.е задержка больше, чем минимально необходимо. Из-за этого и приходится вводить "химию" и вешать 20-ти ногие печко-образные регистры ИР82 вторым этажом.
Если сравнить узел формирования WAIT в моей схеме Турбо-142% с узлом D5.1 и D5.2 (+ D8.1, D8.2) в схеме ОРИОН-СЕРВИС, то видно, что WAIT в обоих схемах возникает одновременно, но длится по-разному. В моей схеме второй триггер взводится и сбрасывает WAIT уже следующим тактовым импульсом 5 МГЦ, отчего WAIT длится только 1 маш.такт, что и требуется. А в схеме ОРИОН-СЕРВИС второй триггер, сбрасывающий WAIT, тактируется не тактом 5 МГЦ, как у меня, а тактом в 2.5 МГЦ. Что приводит к тому, что WAIT уже изначально длится период 2.5 МГЦ, т.е два такта частоты 5 МГЦ. Но более того, в варианте 3.20 добавили узел D8.1 и D8.2, что продлевает WAIT ещё на пол такта 2.5 МГЦ. Итого имеем 3 такта WAIT частоты 5 МГЦ. Это излишне на такте 5 МГЦ, но, видимо, необходимо на такте 10 МГЦ. Вероятно это и позволяет схеме ОРИОН-СЕРВИС работать на 10 МГЦ.
Если при такте в 2.5 МГЦ подачу /WAIT на 1.5 периода частоты 2.5 МГЦ не отключать, то вероятно, благодаря переделке N3 и применению ИР82 ничего плохого и не будет (кроме небольшого снижения быстродействия и блёсток на экране). Хотя в варианте установки Z80 V3.10, т.е на такте 2.5 МГЦ никакой WAIT не используется.
Я хочу сказать, что при такте 2.5 МГЦ всё желательно вернуть к базовой схеме, т.е в НЕТУРБО надо исключить подачу /WAIT на Z80 (удобно тем же мультиплексором, что коммутирует такт или схемой с диодами подавать "1" на вход /WAIT). Блокирование формирователя WAIT D5.1 путем подачи 0 на вход S D5.2, как предложено ранее (и как это в моей схеме Турбо-142%), не годится, т.к это одновременно отключает и формирование ZSYNC, а в схеме ОРИОН-СЕРВИС формирование WAIT и ZSYNC сделано на одном и том же триггере D5.1.
Введение одного такта WAIT обычно не вредит при такте 2.5 МГЦ. И это использовалось для повышения надёжности КНГМД при КР580 (при Z80 это менее актуально, т.к там /RD /WR длиннее). Но введение двух и более тактов WAIT вредит, - на экране появляются блёстки. В данной схеме на такте 2.5 МГЦ вводится 1.5 такта WAIT (частоты CLK 2.5 МГЦ). В зависимости от фронтов, Z80 это может воспринимать как 1 или как 2 такта WAIT. Если как 1 такт, то всё в порядке, будет лишь чуть тормознее 2.5 МГЦ. А вот, если как 2 такта, то даже, если будет работать, на экране будут блёстки.
Это я пояснил, почему мне кажется, что подачу /WAIT на Z80 на такте 2.5 МГЦ надо отключать.
Исходя из вышеизложенного, теоретически, схема ОРИОН-СЕРВИС на такте 5 МГЦ должна давать меньшее быстродействие чем обычная схема Турбо с WAIT на 5 МГЦ, дающая ускорение в 1.41 раза. По слухам, по кранней мере, ранние схемы Z80 от ОРИОН-СЕРВИС на 5 МГЦ давали ускорение в 1.25.
barsik, что то я запутался
Я считал, что в Орион-Сервис 3.1 такты идут стандартно: 1, 2, 3, 4, ...
В 3.2 просто добавляется wait: 1, 2, w, 3, 4, ...
А как на самом деле расположены такты? И как дело обстоит в командах in/out, где в Z80 уже есть дополнительный wait?
В версии 3.20 просто добавляется WAIT: 1, 2, w, 3, 4, ...
Не важно на каком такте цикла добавляются WAIT-ы. А важно сколько тактов WAIT добавляется.
Речь шла о том, что в режиме НЕТУРБО формирование сигнала /WAIT надо отключать.
Видео-генератор даёт процессору для доступа к ОЗУ только один машинный такт частоты 2.5 МГЦ. Поэтому продлевать время доступа долее, чем до окончания периода 2.5 МГЦ незачем и только приводит к проблемам. Если в OUT-командах уже есть дополнительный такт WAIT, то это только приводит к проблемам на такте 2.5 МГЦ. А на такте 5 МГЦ нет, просто при 5 МГЦ аппаратный WAIT дополняется программным встроенным в Z80. Но WAIT в схеме Z80 вводят не для команд OUT, а для обычных команд работы с памятью.
А при 2.5 МГЦ команды IN/OUT адресованные в ОЗУ тоже получают ненужный такт WAIT, встроенный внутри Z80. Отчего команды IN/OUT адресованные в ОЗУ на такте 2.5 МГЦ читают и пишут чушь. Т.к защелкивание считываемых данных происходит по фронту /MREQ, когда уже целый такт буфер ОЗУ и буфер CPU закрыты. Запись в ОЗУ командой OUT адресуемой в ОЗУ, возможно, сработает, а вот чтение по IN - нет. Т.е и вводить подмену старших адресов для команд IN/OUT при такте 2.5 МГЦ просто не имело смысла. Это как раз тот случай, когда WAIT встроенный в Z80 для команд OUT вреден. А вот на такте 5 МГЦ команды IN/OUT адресуемые в ОЗУ сработают.
У меня никогда не было схемы с подменой команд OUT на команды записи в ОЗУ, так что любопытно работает ли команда IN и команда OUT адресуемая в ОЗУ (т.е с N порта менее F4) на схеме ОРИОН-СЕРВИС с тактом 2.5 МГЦ.
LeoN65816
14.05.2017, 13:34
Комрады, быть может Вам будет интересно: "MSX super turbo 3.0" (http://msx.hansotten.com/do-it-yourself/clock-upgrades/). Там особое внимание уделено моменту переключения частот.
Не важно на каком такте цикла добавляются WAIT-ы. А важно сколько тактов WAIT добавляется.
Как это не важно? Процессор тормозит только на определенных тактах цикла, все остальные WAIT процессору побоку.
Ну а мне важно, что бы понять для себя.
OrionExt
14.05.2017, 14:48
Комрады, быть может Вам будет интересно: "MSX super turbo 3.0" (http://msx.hansotten.com/do-it-yourself/clock-upgrades/). Там особое внимание уделено моменту переключения частот.
В правильном направлении идете товарищ:v2_dizzy_punk:
По классике правильно снижать частоту к медленным устройствам.
Только многоножку с диодами, я бы заменил на один сигнал с ОК. С целью экономии ножек на системном разъеме. Но это я забегаю уже вперед:v2_smile:
Как это не важно на каком такте цикла добавляются WAIT-ы?
Мне важно, что бы понять для себя
Не понимаю, чего здесь сложного. Идея WAIT примитивна. Включение тактов WAIT с целью удлинения времени доступа процессора в ОРИОНЕ с тактом более 2.5 МГЦ вызвано особенностями работы применённого типа ОЗУ и схемой синхронизации с видео частью.
А именно, считываемые данные готовы для фиксации в CPU спустя ~150 НСЕК после /CAS=0 и прекращаются по переднему (0->1) фронту /CAS. /CAS в моей схеме 2.5 МГЦ совпадает с CLK (Ф1 КР580). В схеме ОРИОН-СЕРВИС 2.5 МГЦ в качестве такта CLK используется Ф2. Из-за этого, а также из-за неудачной схемы формирования ZSYNC, им и пришлось задерживать закрытие буферов (переделка N3) и делать защёлки, чтобы продлить читаемые данные. В моей схеме это не требуется, т.к задержка закрытия буферов происходит автоматически.
"Окно доступа" к ОЗУ при КР580 длится пока DSYNC=1, т.е ровно один маш.такт, т.к стробируется сигналом /CAS. По переднему фронту /CAS - исчезает DSYNC, убирается /WE, закрываются буфера (CPU и ОЗУ). По записи это работает прекрасно, т.к РУ5-тым до лампочки, что CPU держит /WR ещё хоть час после исчезновения импульса /CAS. А вот по чтению хреновее, т.к защелкивание данных с шины внутри CPU происходит по фронту /RD, который длится дольше, чем точно 1 маш.такт.
Но как доказал опыт сборки ~50.000 ОРИОНОВ, из-за задержек (сквозь буфера) и паразитных емкостей, сигналы на ШД исчезают не мгновенно, так что при КР580 никаких проблем не возникает. Для Z80 ситуация хреновее, т.к у него сигнал /RD более длинный. Но при CLK равном Ф1 в моей схеме тоже всё работает. А вот с Z80 от ОРИОН-СЕРВИСА при CLK=Ф2 даже на такте 2.5 МГЦ возникают проблемы. Оттого им и приходится делать доработку N3 (удлиняющую время открытия буферов), доработку N5 (запоминание данных с шины в регистре ИР82) и закорачивать вентиль D11.5.
А вот при такте 5 МГЦ, происходит наоборот. Процессор слишком рано кончает писать (убирает записываемые данные до фронта /CAS), и слишком рано защелкивает данные считываемые из ОЗУ, когда они ещё не готовы из-за низкого быстродействия ОЗУ.
Кстати, делюсь ценным секретом. При 5 МГЦ можно ввести регистр на вывод, который защелкивает и удерживает данные на шине после окончания /WR, что позволит отказаться от использования WAIT при записи (что даст ускорение до 1.75 при ОЗУ на том же медленном такте). Т.е это идея регистра, но по сравнению с идеей ОРИОН-СЕРВИС, это "регистр наоборот". Продлеваем в защёлке данные для ОЗУ, а не как в схеме ОРИОН-СЕРВИС, где продлеваем данные для процессора. Эту идею я уже использовал в своём несинхронном текстовом адаптере и она прекрасно будет работать и в ОРИОНЕ, дав выигрыш скорости на 30% без перегрева ОЗУ.
Чтобы обращение к ОЗУ от Z80 на такте 5 МГЦ продлилось на весь период "окна доступа" в 400 НСЕК и вводится ОДИН такт WAIT. Это в моей схеме. А сколько тактов вводится в схеме ОРИОН-СЕРВИС - одному Богу ведомо. Как я уже писал, это, как минимум 2 такта, а скорее всего (из-за D8.1 и D8.2) три такта.
Кстати, для схемы ОРИОН-СЕРВИС возможно иное решение, чтобы избежать напайки ИР82 на ВА86. В схеме ОРИОН-СЕРВИС удлинять данные приходится потому, что данные на выходах ОЗУ исчезают по концу /CAS. Решение проблемы ясно и обезьяне. Достаточно задержать /CAS на 50 НСЕК последовательными вентилями или емкостями.
Задержка закрытия буферов в моей схеме происходит автоматически. Буфера открываются сигналом /DSYNC (D13/8). При КР580 SYNC короткий, потому при очередной импульсе /CAS на входе D13/11 его уже нет, отчего SYNC длится чётко 1 маш.такт. А вот при Z80 используется имитация SYNC - сигнал ZSYNC, а он исчезает не по следующему фронту /CAS, а по концу /MREQ, отчего DSYNC удлинённый. Т.е буфера окрыты всё время пока идёт /MREQ. Отчего мой вариант формирования ZSYNC и DSYNC грамотнее.
память SIMM30 две по 256 кБт.
А схемку установки не подкинешь?
имею память на двух SIMM30 по 256 кБ
А схемку установки не подкинете ?
Схемка тут может быть только "лобовая", т.е /RAS к /RAS, /CAS к /CAS, данные к данным, и адреса к адресам. Интересно, используются ли у VladimirS, все 512К (как в схеме rev.512) или лишь те же базовые 256К. При 512К надо устанавливать ТМ7 вторым этажом над TM7 (D18) и КП12, напаянный вторым этажом над D23, а при 256К достаточно только одной КП12.
Интереснее, как конструктивно сделать эту замену, как закрепить и смонтировать SIMM чтобы выглядело не очень страшно. Я тоже имею ненужные SIMM-30 256 кб и есть надежда их применить на такте 8.25 МГЦ (Z80 на такте 8.25 МГЦ, а WAIT только для ПЗУ и ВВ55). А уж при /RAS /CAS в 5 или даже 7.5 МГЦ SIMM-30 смогут работать без проблем.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot