Есть у меня один манускрипт с прошлого века о Z80. Писался он на волне подключения Z80 к Специалисту.
Есть у меня один манускрипт с прошлого века о Z80. Писался он на волне подключения Z80 к Специалисту.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я не про сокращение, а наоборот про самое полное раскрытие возможностей Z80. Я к тому, что можно же все три типа прерываний задействовать.
С уважением, Станислав.
Интерес к платформе есть. И очень даже. Но что конкретно мне мешает - отсутствие вменяемого Монитора. Стандартные подпрограммы ПЗУ выводят строки и символы в режиме наложения, что сильно ограничивает скорость работы даже в ассемблере, не то что на BASIC. В итоге, подпрограммы системного ПЗУ - главный тормоз компьютера. Я тут как то ролик накидал про то, как 8-битные шаблоны и строки из таких шаблонов выводить на экран Специалиста - так оно в несколько раз быстрее. Опять же, шаблоны 8*8 намного приятнее и удобнее в использовании, чем 6*8. Второе - ассемблер. Все-таки, писать в "Микрон" в современном мире - сомнительное удовольствие. Нашел VASM, обалденная, а главное - универсальная (и под I8080 и под Z80) штука. Сейчас разбираюсь.
Потому как видится мне: без переделки Монитора - новый редактор ассемблера и BASIC со своим шрифтом. Не то, чтобы я не хотел их написать - знаний пока не хватает, но я учусь ). Второе: 2 мегагерца для 12 килобайт видеопамяти маловато. Как ни пытаюсь сделать вертикальный скроллинг, даже через стек выходит быстрее, чем стандартный, но все равно заметно. Кстати у BASIC "Микрон" бесячий момент, когда вместо скроллинга очищается экран. Такая себе идея. Так что софт нужен и важен, и что самое главное вполне может появиться. Только вот Монитор в ПЗУ, по сути, останется не у дел. Ну и где-то я уже предлагал - в каком-то из журналов предлагалось использовать несколько ПЗУ для хранения интерпретатора BASIC и ассемблера. А если вместо этого ПЗУ реализовать разъем для картриджа и использовать данный диапазон адресов для работы с ROM-диском. Кстати такое в журналах тоже было, но не помню, как там оно было реализовано. Это я к тому, что, скажем, в Вектор-06Ц реализована вполне интересная идея, в рамках ограниченного ОЗУ - в ПЗУ только загрузчик (не от хорошей жизни, разумеется) а вот все остальное грузится с внешнего носителя.
CityAceE(17.07.2025)
Разные виды Мониторов на Специалисте существовали. В то числе и оконный Монитор Доможирова, который использовал матрицу 8*8 для символов. Но проблема в том, что почти все программы для Специалиста используют для вывода текста именно стандартные ПП Монитора. Если что-то поменять, то весь софт "поплывёт". Так что стандартный Монитор ради совместимости вообще никак нельзя трогать. Но можно подумать о том, чтобы подменять его на время неким другим системным ПО, также размещённым в ПЗУ. То есть, если старый софт ничего не знает про новое системное ПО, то оно по умолчанию пользуется тем, что было. А новый софт может начинать свою работу с переключения на новый Монитор.
А если продолжить осуждать Монитор, то в него, как минимум, нужно добавить полный набор символов для латиницы и кириллицы, а также привести раскладку клавиатуры к современному стандарту QWERY/ЙЦУКЕН.
Про средства разработки на самом компьютере согласен, нужен, как минимум, нормальный ассемблер. МИКРОН устарел по всем фронтам. Ну а лично для меня ещё и мнемоники Z80 нужны.
Можно ссылку на этот ролик?
С уважением, Станислав.
https://youtube.com/live/9r-Xrf8II6Q Но это еще работа в Микрон. Сейчас с VASM разберусь и все ок. На самом деле там ничего сложного и все работает. Но нужно шапку файла добавлять, чтобы грузилось в эмулятор. Вот и ищу - где-то на сайте видел.
- - - Добавлено - - -
Да, еще. Я был бы весьма заинтересован в Z80 на новом Специалисте. Ибо 12 килобайт для 2 МГц, как я писал выше, много. Или 8085.. Но это хотелки, чо уж тут.
CityAceE(17.07.2025)
Добро пожаловать в соответствующую тему со своими хотелками
Я подобное у себя делаю собственными скриптом на Python:
Код:import sys def hex_number(number): sting_number = str(hex(number)).lstrip('0x').upper() while len(sting_number) < 4: sting_number = '0' + sting_number return sting_number if len(sys.argv) > 1: filename = sys.argv[1] if len(sys.argv) > 2: start = int(sys.argv[2]) else: start = 0 with open(filename, 'rb') as f_obj: binary_file = f_obj.read() finish = len(binary_file) - 1 cs = 0 for i in range(finish): cs += binary_file[i] cs += (binary_file[i] << 8) cs = (cs & 0xff00) | ((cs + binary_file[finish]) & 0xff) binary_file = bytearray(binary_file) header = [start % 256, start // 256, (start + finish) % 256, (start + finish) // 256] header = bytearray(header) check_sum = [cs % 256, cs // 256] check_sum = bytearray(check_sum) rks_file = header + binary_file + check_sum if '.' in filename: name_parts = filename.split('.') name_parts[-1] = 'rks' filename = '.'.join(name_parts) else: filename = filename + '.rks' print("ИМЯ ФАЙЛА:", filename) print("КОНТРОЛЬНАЯ СУММА =" + hex_number(cs)) print("НАЧАЛЬНЫЙ АДРЕС =" + hex_number(start)) print("КОНЕЧНЫЙ АДРЕС =" + hex_number(start + finish)) with open(filename, 'wb') as f_obj: f_obj.write(rks_file) else: print("Usage: python bin2rks.py filename.bin [start_address]")
Последний раз редактировалось CityAceE; 17.07.2025 в 11:28.
С уважением, Станислав.
Zidane(17.07.2025)
В чем собственно вопрос? Две версии могут использовать таймер для коррекции скорости, если детектируют его наличие. Если не детектируют - не будут использовать.
CityAceE(17.07.2025)
Привет всем. Я тут новенький, а так старенький 8-бит электронщик/программист. Первый собранный комп был "Специалист".
Мою любовь и боль. Как все помнят сборка на мгтф и половина горелых микросхем с ес-1020.Сборка и отладка заняла почти 2 года.
Потом быстрая пересадка на IBM PC и я на больше чем 30 лет забыл про 8-битный мир. Потом увидел статьи CityAceE и ностальжи
вернуло меня на путь истинный.
Посмотрев на попытку CityAceE переписать с Атари tony захотелось самому перенести какую то игру. Окунувшись в проект я так
увлекся что трачу на это все свое свободное время(когда глаза позволяют.)
Появление SD в эмуляторе развязать ахилесову пяту: или памяти не хватает либо экран перерисовывается 1500000 тактов.
Кеширование, развертка циклов, использование для копирования стека позволило довести перерисовку до 350000 тактов.
Пока моих мозгов для оптимизации дальше не хватает. Игра пошаговая стратегия - ей хватит. Есть чем заниматься дальше.
Так вод мое мнение что нужно "Специалисту" как программеру:
1. Чтение данных атрибута цвета, что позволит ускорить мою перерисовку на 15-30% и сэкономит память.
2. Довести количество цветов атрибута цвета до 16/16 на байт видеопамяти. Резко улучшается картинка.
Сделать это совместимо со старой схемой и ввести регистр режима.
3. Сделать возможность отключать запись в область атрибута цвета и обратное отключение записи в видеопамять.
Такая система позволяет получить несколько эффектов и ускорит вывод на экран.
Все это опять завести на регистр режима.
4. Сделать возможной палитру цветов из которой выбирается 16/16 и дать к ней программный доступ.
5. Представить видеопамять и память атрибутов как 2 бита на точку и получить 4 цвета любой точки из палитры.
Вывести на регистр режима.(По моему так в Векторе)
С текущей производительностью Специалиста пока все. Это бы осилить программно.
Мечты:
1. Довести проц минимум до 8 Мгц.
2. Довесить видеопамять до 4 бит на точку. Получить 16 цветов из палитры что позволит переносить очень много игр(Довесить еще 2 линейки памяти)
3. Из за пункта 2 резко понадобится память (тут как хотите но минимум 256кб)
4. Если памяти много , одну страницу превратить в ПДП на Ковокс для вывода Wav
Наверное пока все.
Последний раз редактировалось aspgnom; 17.07.2025 в 23:02.
b2m(18.07.2025), CityAceE(18.07.2025), Oleg N. Cher(18.07.2025), Vatr(09.09.2025)
Что ж, после того, как я обзавёлся своим собственным Сябром мне ещё больше захотелось новый клон.
Скажу откровенно, что я испытал вау-эффект, когда запустил разрабатываемую мной игру на i8085 в Turbo! Просто всё залетало, как на приставках. Так что Турбо - это, безусловно вещь, которая жизненно необходима для нового софта. А весь старый прекрасно и на классике и идёт.
По поводу расширенной памяти и графики, наверное, стоит всё-таки смотреть в сторону MX. Правда, я пока ещё с памятью не игрался и толком не знаю какой к ней доступ, но объём в 512 кило впечатляет.
Отличным вариантом сейчас выглядит Z80(+turbo) + MX2 (память, графика) + AY + прерывания + SD + ZX-bus.
С уважением, Станислав.
RW9UAO(11.09.2025)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)