-
18.08.2019, 20:13 #16
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
Да ничего страшного , первый вариант работал как раз по IM1, но, поскольку в этом режиме прерывание одно, по адресу 38Н, то оно конфликтует с частью системных программ (DDT к примеру), поэтому немного покумекав, перешел в режим IM2 с формированием вектора тупо двумя диодами Такая фишка прокатывает только с Z80, с 580-м ну никак.., да и софта для последнего гораздо меньше...
Тут можно запросто прилепить контроллер прерываний КР1818ВН19 (аналог AM9519), но это уже будет схема посложнее и для случая, если прерываний планируется более чем три...Последний раз редактировалось RW6HRM; 18.08.2019 в 20:20.
-
18.08.2019, 21:36 #17
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Ясненько...
Я как-то код к микрокомпьютеру "ЮТ-88" из приложения к журналу "Юный техник" "ЮТ для умелых рук" вручную дизассемблировал.
А, может, глянете веточку https://forum.qrz.ru/12-kompyutery-i...e-evm-x64.html , там код тетриса Яковлева во вложении?
Не вполне понятна последовательность команд:
seg000:0151 db 0B0h ; - mov al, 0Ch
seg000:0152 db 0Ch ;
seg000:0153 db 8Ah ; К mov ah, bh
seg000:0154 db 0E7h ; ч
seg000:0155 db 0EFh ; я mov al, 0Dh
seg000:0156 db 0B0h ; -
seg000:0157 db 0Dh ;
seg000:0158 db 8Ah ; К mov ah, bl
seg000:0159 db 0E3h ; у
Для чего такое обновление аккумулятора?
А также, что за адреса 1A40h и 1EA0h в командах
seg000:09B7 db 0BFh ; ¬ mov di, 1A40h
seg000:09B8 db 40h ; @
seg000:09B9 db 1Ah ;
и
seg000:09CA db 0BFh ; ¬ mov di, 1EA0h
seg000:09CB db 0A0h ; а
seg000:09CC db 1Eh ;
В процедуре рисования боковых стенок "стакана" addr 252h loc_10212 более-менее понятны команды
seg000:02B1 db 2Eh ; . loc_10271: mov al, cs:byte_10302
seg000:02B2 db 0A0h ; а
seg000:02B3 db 2 ;
seg000:02B4 db 3 ;
seg000:02B5 db 0ABh ; л stosw
seg000:02B6 db 2Eh ; . mov al, cs:byte_10303
seg000:02B7 db 0A0h ; а
seg000:02B8 db 3 ;
seg000:02B9 db 3 ;
seg000:02BA db 0ABh ; л stosw
Для чего последовательные умножения на два сдвигом влево с последующими сравнениями результатов, я так и не постиг.
Значения DBh, D2h, F5h для cs:byte_10302 и cs:byte_10303 какие-то странноватые.RA3XCQ ( Larry158 )
-
18.08.2019, 21:58 #18
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
Если это код х86 (а это следует из строчки "MS-DOS COM-format"), то это не ко мне.
-
18.08.2019, 23:07 #19
- Регистрация
- 21.07.2004
- Возраст
- 66
- Сообщений
- 1,143
- Поблагодарили
- 109
- Поблагодарил
- 99
-
19.08.2019, 07:41 #20
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
>какие архитектуры поддерживает
хм... а для начала погуглить не?
https://ru.wikipedia.org/wiki/CP/M
>есть ли исходники
Есть.
>что в "тоннах софта" и где его найти (прямые ссылки)
А внимательно изучить ссылку в первом посте?
http://rw6hrm.qrz.ru/z80_pzu.htm
Без обид, если что.
-
19.08.2019, 14:20 #21
- Регистрация
- 21.07.2004
- Возраст
- 66
- Сообщений
- 1,143
- Поблагодарили
- 109
- Поблагодарил
- 99
Вопросы:
1)у Z80 больше команд, чем у i8080, будет ли работать CP/M для Intel на Z ?
2)у 80С85 то же много команд, которых нет в 8080, эти дополнительные команды те же, что и в Z80 или другие ?
3)1821ВМ85 - CMOS у него какая система команд (на самом деле фактическая) ?
4)приходилось ли иметь дело с i8256 ?
5)что пришлось "доделывать" для Вашей конструкции в CP/M ?
6)дайте прямую ссылку на цену платы для самостоятельной сборки.ra3qdp
-
19.08.2019, 15:04 #22
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
1. Всё, что написано для 8080, будет работать на Z80. Но не наоборот.
2. 8085 имеет всего три дополнительные команды в отличие от 8080, соотв. п.1 действует.
3. Читать мануал , совместим с 8080.
4. Нет, не приходилось.
5. Дописал биос в привязке к железу и изменил стартовый адрес из-за несколько раздувшегося биоса.
6. ...опять не читали ссылку из первого поста..., в части http://rw6hrm.qrz.ru/z80forums.htm есть ссылка на Барахолку, https://zx-pk.com/forum/viewtopic.php?f=7&t=13127 Цена плавающая, зависит от курса доляра и желания производителя. Последняя получалась 450 рублей, думал набрать заказов на третью партию - чтот желающих маловато, всего двое. Пока не заказывал больше.
-
19.08.2019, 15:59 #23
- Регистрация
- 21.07.2004
- Возраст
- 66
- Сообщений
- 1,143
- Поблагодарили
- 109
- Поблагодарил
- 99
-
19.08.2019, 19:16 #24
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
Да вряд ли я что-либо ещё добавил... Ссылки на книжки есть, хоть и на английском, но там сказано больше, чем могу. Я больше ручками...
Касательно последователей 8080 - интерес к ним потерян давно из-за ненужности этих процессоров ни производителям, ни программистам. Это касается и всей интеловской линейки, приходится применять её только по бедности, поскольку параметры чипов уж очень посредственны. Тот же ВВ51 с удовольствием бы заменил на 6850, как более скоростной. Ну это моё личное ИМХО, не более...
-
20.08.2019, 20:23 #25
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Код-то "Тетриса" Яковлева x86, но он какой-то почти 8-ми битный. Здесь ещё регистры "по-половинкам" обрабатываются, старшие и младшие разряды отдельно.
В ответе #8 было о MSX-DOS 2.2, по буквам близкое к MS DOS, так что я решил, что и об x86 тоже будет уместно.
Глянул я ближайшую ко мне книжку "Справочное пособие по микропроцессорам и микроЭВМ." В. Л. Горбунов, Д. И. Панфилов, Д. Л. Преснухин под ред Л. Н. Преснухина, Москва, "Высшая школа", 1988, там на странице 194 есть немного о контроллере прерываний КР580ВН59 и на странице 204 - о К1810ВН59А. В эти контроллеры можно записывать и из них читать по шине данных для КР580ВН59 и по мультиплексированной шине адреса и данных - для К1810ВН59А. Причем обращаться к ним предлагается как к портам по сигналам IORC и IOWC, а не как к ячейкам памяти, в которых хранятся адреса векторов прерываний. То есть не вполне понятно, как микропроцессор должен работать в паре с этими контроллерами прерываний. Чтобы обеспечить 255 прерываний ( без нулевого, либо 256 с нулевым ), то эти контроллеры прерываний должны пересылать в микропроцессор номер прерывания по шине данных.
Если после загрузки компьютера отключать ПЗУ электрически, например через буферные регистры по состоянию какого-нибудь порта, то далее можно записать новые адреса векторов прерываний непосредственно в ОЗУ по адресам RST1 - 0008h, RST2 - 0010h, RST3 - 0018h, RST4 - 0020h, RST5 - 0028h, RST6 - 0030h.
Для совместимости-то надо и экранную область соблюдать. В "Синклер" - образных компьютерах она размещена в ОЗУ и вывод на монитор, в качестве которого может быть телевизор, осуществляется методом прямого доступа к памяти.Последний раз редактировалось RA3XCQ; 20.08.2019 в 20:27. Причина: уточнение, исправление ошибок
RA3XCQ ( Larry158 )
-
22.08.2019, 20:57 #26
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Хотелось бы уточнить об экранной области.
Сразу оговорюсь, что я в своё время собрал вполне работоспособные, но не без странностей, микроЭВМ "Орион-128" и "Синклер-Пентагон-48 ZX Spectrum". Собрал их по рабоче-крестьянскому принципу, гласящему, что "правильно и без ошибок собранное цифровое устройство начинает работать сразу". В общем-то, так и получилось. Однако, "Орион-128" работал около 20 минут, а потом "зависал", а У "Пентагона" не удалось запустить контроллер дисковода с TR-DOS 5.03.
Телевизионное изображение имеет разрешающую способность где-то 300x400 пикселей. В минимальном варианте на экран можно выводить 255x255 пикселей, всего их получается 65025. Я нулевые адреса как-то побаиваюсь, вдруг их вообще не существует :-) . То есть для шестнадцатицветного режима, используя по половине байта, то есть по 4 бита для одного пикселя, таким образом экранная область займет около 32 килобайт ОЗУ. В сопроводительных статьях указываются значительно меньшие объемы ОЗУ, отведённые для экранной области. То есть может указываться даже область знакомест, например, 40X25 , всего 1000 знаков, либо 80x25, всего 2000 знаков. Но чудес на свете не бывает, наверное как-то так и есть? Используется иногда по 3 бита на пиксель, для монохромного режима получится 1 бит на точку.
В этих микроЭВМ применялись цепочки счётчиков (КР555ИЕ5), обеспечивающих регенерацию динамического ОЗУ, вывод на экран и общую синхронизацию. Причем у этих счетчиков тактовый генератор работал на высокой частоте, в "Спектруме" - 16 МГц, в "Орионе" - 10 МГц, а микропроцессор работал на более низких частотах, получаемых делением основной тактовой частоты. То есть весь экран микропроцессор за один кадр обновить не успевает. Хотя многие игры были вполне динамичны.
У Вас применён видеоконтроллер на микроконтроллере Atmega 328P http://rw6hrm.qrz.ru/8bitdisp.htm , что схематично выглядит попроще.
Для применения дисплеев с более высокой разрешающей способностью, 600x800 пикселей и выше, очевидно, необходимо дальнейшее увеличение объёма ОЗУ экранной области и, далее, применения отдельного видеоОЗУ.Последний раз редактировалось RA3XCQ; 22.08.2019 в 21:15. Причина: Уточнения, исправление ошибок.
RA3XCQ ( Larry158 )
-
23.08.2019, 15:37 #27
- Регистрация
- 08.06.2005
- Адрес
- Ставрополь
- Возраст
- 56
- Сообщений
- 313
- Поблагодарили
- 57
- Поблагодарил
- 20
Касаемо адресов векторов прерываний, то в нулевой странице их не особо поразмещаешь, поскольку тут расположена служебная область оси.
По Экранной области - в "нормальной " СР/М её как бы не существует, поскольку она рассчитана на работу с терминальным доступом. По этой же схеме сделан видеовывод и у меня - не занимая ячеек ОЗУ. Экран вроде бы и можно расположить в оперативке, но это автоматически уменьшает область рабочих программ, усложняет схему и заставляет комбинировать тактовую процессора, видео и памяти (если применяется динамика, что сейчас уже как-то по-нищебродски). Поэтому имхо любой видеовывод должен работать в СР/М только и исключительно как терминальный. Всё остальное - кастрирование системы изначально...
-
23.08.2019, 22:59 #28
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Вообще-то в CP/M для микроЭВМ "ЮТ-88", приложение к журналу "Юный техник", "ЮТ для умелых рук" №2, 1990 год, экранная область есть, с адреса E000h по адрес F000h 4 килобайта отведено, хотя у меня при экране 255x255 точек для монохромного режима получается, что 8 килобайт требуется...
Так же описаны точки переходов с адресов:
DA00h JMP BOOT
DA03h JMP WBOOT
DA06h JMP CONST (F 812 - активность клавиатуры)
DA09h JMP CONIN (F 809 - приём с клавиатуры в А)
DA0Ch JMP CONOUT (F 809 - вывод на дисплей)
DA0 h JMP LIST (F 809 - вывод на дисплей)
DA12h JMP PUNCH (F 80C - вывод на магнитофон)
DA15h JMP READER (F 806 - ввод с магнитофона)
DA18h JMP HOME
DA1Bh JMP SELDSK
DA1Eh JMP SETTRC
DA21h JMP SETSEC
DA24h JMP SETDMA
DA27h JMP READ
DA2Ah JMP WRITE
DA2Dh JMP LISTST
DA30h JMP SECTRAN
Хотя, конечно, уже пропущен разряд адреса в команде JMP LIST.
Для обеспечения совместимости должны использоваться эти точки входа, наверное?
Также в компьютере "ЮТ-88" сначала даны адреса для загрузки с 0h по 100h и с 3100h по 4CFFh, и, видимо, только после загрузки операционная система должна разместиться в соответствии с приведенными адресами для CP/M, с адреса С400h. Этот вариант CP/M занимает 7168 байт.RA3XCQ ( Larry158 )
-
23.08.2019, 23:13 #29
- Регистрация
- 18.03.2013
- Адрес
- Москва (TM)
- Возраст
- 57
- Сообщений
- 836
- Поблагодарили
- 194
- Поблагодарил
- 58
В те старые времена, когда использовался Спектрум и им подобные для вывода графики в ограниченном объеме ОЗУ использовался либо спрайтовый режим (таблица с изменяемыми графическими символами), либо полноценная графика, но низкого разрешения.
Так что даже в компьютерах IBM PC XT с 640 КБайт ОЗУ вполне нормальным был режим CGA c 16 КБайт видеопамяти (итого 640 на 200 точек), а у игровых (того же Синклера) не более 320 на 200, т.е. 8 КБайт видеопамяти.
По 4 бита на пиксел максимум на IBM PC, а уж на Синклере, чтобы влезть в 8 Кбайт вообще хитрая спрайтовая система с разрешенем 256×192.Последний раз редактировалось RX3AKF; 23.08.2019 в 23:20.
Василий (RX3AKF)
-
24.08.2019, 10:08 #30
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
По поводу терминального вывода.
Это подобно выводу символа с атрибутами для IBM PC?
В разделе 3 "Справочника программиста на персональном компьютере фирмы IBM." Роберта Журдена сказано, что
"...основной операцией, на которой основан вывод, является
помещение кода ASCII выводимого символа в указанную позицию ви-
деобуфера; при этом может также записываться и байт атрибутов в
следующий адрес памяти."
Как раз экранной области в 4000 байт хватит для 25 строк с 80-ю символами в каждой по 2 байта на символ. Или без атрибутов 2 страницы по 2000 байт кодов символов получается.RA3XCQ ( Larry158 )
Социальные закладки