Важная информация

User Tag List

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 63

Тема: Специалист: Вопросы программирования

  1. #11
    Junior
    Регистрация
    15.11.2009
    Адрес
    Гайворон (Украина)
    Сообщений
    8
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hdc Посмотреть сообщение
    Взбрела на старости лет мне одна идея в голову... и после её
    проверки я пришёл к выводу, что на Специалисте скорее всего
    можно было сделать не слишком навороченную игру,
    но с вертикальным скроллингом ландшафта.

    "Много букв" и "демка" здесь: http://www.asvcorp.ru/darch/asv/demo2009/index.html

    Одним словом немного подурачился.
    Эх... Я вот подумал недавно, что с Специалисте (да и в Орионе тоже), можно было бы довольно просто реализовать возможность аппаратного скроллинга, где на кольцевой сдвиг всего экрана на 1 или несколько пикселов по вертикали или на любое число кратное 8 пикселам по горизонтали понадобилось бы всего-навсего несколько тактов процессора.
    Если бы такое было реализовано еще во времена создания этих компов, то глядишь, и неплохих игр к ним было бы немало создано... Но вот сейчас такую фичу делать вроде как и смысла нет уже...
    Насколько я понимаю сейчас уже никто не занимается разработкой ПО к этим компам, а повторение их обусловлено с целью ностальгического использования имеющегося ПО.

  2. #12
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тебе сюда, найди и почитай, парни уже это делали - http://www.asvcorp.ru/darch/asv/index.html

  3. #13
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от glukmaker Посмотреть сообщение
    Если бы такое было реализовано еще во времена создания этих компов, то глядишь, и неплохих игр к ним было бы немало создано... Но вот сейчас такую фичу делать вроде как и смысла нет уже...
    Верно мыслишь. Оно УЖЕ не понадобится. А сделать не так уж сложно (навскидку).
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  4. #14
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ewgeny7, как ты предполагал (http://zx.pk.ru/showthread.php?t=4800&page=12) без буферизации входных и выходных переменных в программе на vhdl ПЛИС не затикала. Вернее с заводом сброса в процесс все не движется.
    У меня вопрос: как буферизировать шину адреса на входе и выходе ПЛИС, не напишешь ведь для каждого бита такую конструкцию:
    Код:
    atemp(0)<='1' when a(0)='1' else '0';
    И так далее, а шина ведь 16 разрядная...
    Последний раз редактировалось fifan; 04.04.2010 в 17:17.

  5. #15
    Moderator
    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а сразу использовать 16 разрядный вектор - что не позволяет?
    кстати а зачем буферить адрес? он входящий или исходящий на плисе?

    а кажется понял - это не подвеска всех выводов на высокий уровень , а буферирование кождого отдельного выхода в зависимости от состояния. тогда я не прав
    Последний раз редактировалось balu_dark; 04.04.2010 в 11:51.
    Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
    Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
    ZX Evo 4Mb- в строю.
    Speccy2010 v1
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  6. #16
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fifan Посмотреть сообщение
    У меня вопрос: как буферизировать шину адреса на входе и выходе ПЛИС, не напишешь ведь для каждого бита такую конструкцию:
    Хитрый вопрос...
    У меня шина адреса идет наружу через мультиплексор, на входах его соответственно сам процессор и видеогенератор. У тебя, я так понимаю, просто проц наружу вылезает?
    Попробуй изменить тип выводов адресных с OUT на BUFFER. Не уверен что поможет (оптимизатор может сожрать), но вдруг...
    Последний раз редактировалось Ewgeny7; 05.04.2010 в 22:07.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да вроде сейчас Квартус не ругается на шину адреса. Зашил ПЛИС новой прошивкой, еще не включал. Хоть бы затикала...

  9. #18
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В базовом ROM-BIOS СПЕЦИАЛИСТА ошибочно называемом загрузчиком (вот в ВЕКТОРЕ действительно загрузчик в 512 байт) обнаружил идиотическую ошибку. Которая заключается в том, что хотя есть ячейки для адреса фонта (AFONT=8FE7), как и в ОРИОНЕ, но пользоваться ими в отличие от ОРИОНА, свободно нельзя. Невозможно поменять фонт разместив его в произвольном месте ОЗУ.

    Оказывается фонт можно размещать только по определённым адресам. Можно размещать фонт только по такому адресу, которое удовлетворяет следующему условию. Если адрес размещения фонта разделить на 8 (что равноценно сдвигу вправо на 3 разряда), то в младшем байте получившегося числа, должно быть значение меньше 80H. В противном случае драйвер вывода выдаёт на экран мусор.

    Это происходит потому, что А.Волков применил 8-ми разрядное сложение, а следовало применить 16-ти разрядное сложение. И такой драйвер вообще непригоден для вывода (без извращений) 8-ми битовых символов (КОИ-8). Это может делать драйвер ОРИОНА, а чтобы выводить КОИ-8 данным драйвером надо немножко извращаться, - при кодах символов >80H отнимать от кода символа 80H и в ходе вывода менять адрес фонта в ячейках AFONT.

    Раньше я не знал об этом, т.к в 80-тые не доводилось менять фонт. Столкнулся с этим сегодня, когда хотел загрузить латинский фонт большие и маленькие буквы, т.к это требуют CP/M-программы. Чтобы не заморачиваться, можно использовать адрес фонта кратный 1000H, т.е D000, E000, F000. Но это не всегда выгодно, когда приходится биться за экономию каждого байта.

    Естественно, эта ошибка повторена и во всех совместимых мониторах, в т.числе и в мониторе В.Ивинских.

    Вот подпрограмма А.Волкова:
    Код:
    A_C056:	LD	HL,(AFONT)
    	ADD	L
    	LD	L,A		; A= код символа
    	ADD	HL,HL
    	ADD	HL,HL
    	ADD	HL,HL		; HL= адрес символа в ОЗУ
    А вот как правильно:
    Код:
    	LD	L, A		; A= код символа
    	LD	H,0
    	ADD	HL, HL
    	ADD	HL, HL
    	ADD	HL, HL
    	EX	DE,HL
    	LD	HL, (AFONT)
    	ADD	HL, DE		; HL= адрес символа в ОЗУ
    С учётом того, что в H ранее уже есть 0, то число команд CPU всего на одну больше, а число байтов на 2 больше. Но так делать правильно. А при Z80 число команд одинаково. При выводе символа процессор исполняет не менее 200 команд. Экономия одной команды ускоряет вывод на 0.5%. Если уж хотелось ускорить, это делается линейным участком копирования символа, что даёт выигрыш в более, чем в 150 маш.тактов.
    Последний раз редактировалось barsik; 12.01.2018 в 20:36.

  10. #19
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, Волков сэкономил на подпрограмме вычисления адреса символа в фонте (а этот код вызывается каждый раз при выводе символа) выравняв расположение этого фонта ровно по блоку, что дает младший байт равным 00. Это хорошее решение при тех условиях. А еще, этот адрес заранее поделенный на 8. Тем не менее, с этим загрузчиком работал ED^7000 корректно, используя свой фонт для маленьких букв. И да, ПСПЗУ с C000-C7FF это именно загрузчик, согласно журнальному описанию. Ибо он загружал либо игру либо монитор с кассеты и передавал туда автоматически управление. А то, что он предоставлял базовый сервис это названия не меняет.
    Последний раз редактировалось HardWareMan; 12.01.2018 в 20:24.

  11. #20
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan
    Это хорошее решение при тех условиях
    Это не решение, это ошибка. Ускорение менее 0.5%. Я могу ускорить на 5%, но совместимость пропадёт. В ПЗУ Волкова много свободных байтов, было достаточно ресурса для ускорения. Обычно стоит вопрос или быстрее, но бОльший объём кода или меньший объём, но медленнее. Не умаляя заслуги А.Волкова, для 1985 это великолепно, но вообще это плохой драйвер, - даже нет ролика, нет обработки ESC-кодов (а В.Ивинских всё это уместил в эти же 2К). Даже М2, от авторов ОРИОНА лучше.

    Проблема в том, что программы надо делать в расчёте на самый слабый ROM-BIOS, поэтому в CP/M пришлось встраивать свою обработку котя бы самых нужных искейп-кодов. Удалось уместить лишь инициализацию, очистку кодом 0C, вкл/выкл инверсии, позиционирование, очистку до конца строки, стековый ролик вниз, запоминание позиции и восстановление позиции. Ролик вверх (хотя и не стековый) есть в мониторе Орлова (а в В.Ивинских и стековый ролик уместил в загрузчик). Упр.код для ролика вниз ускоряет текстов редактор.

    Кстати, хотя шаг по вертикали 10 линий, в знакоместе выводится только 8 линий. Такая же ошибка была в ОРИОНЕ, что исправил М3. Из-за этого используя этот драйвер надо ухищряться, работая с инверсным окном. А свой драйвер не загрузить, нет свободного ОЗУ. Также не хватило места на то, чтобы заменить убогую подпрограмму ввода строки из BDOS CP/M на приличную с тимплетом и экранным редактированием.

    Но самое паршивое, это то, что нет клавиши <Control>, а в CP/M она необходима. Теперь, вот сижу и думаю, как из этого выкрутиться. Ранее ставили кнопку <Control> вместо МГ-входа, используя тумблер для отключения выхода 140УД6. Поэтому CP/M при старте теоретически должна выводить на экран надпись "Переключите тумблер на МГ-входе".

    Цитата Сообщение от HardWareMan
    это именно загрузчик
    В ВЕКТОРЕ и МИНСК-64 действительно загрузчик, ничего кроме загрузки не может, а это ROM-BIOS, куча стандартным подпрограмм, используемых программами. Загрузчик можно было бы выкинуть, а это ПЗУ уже не выкинешь, потому что это ROM-BIOS.

    Если это загрузчик, то и ROM-BIOS в IBM PC тоже загрузчик, а не ROM-BIOS, он же грузит с винчестера, CD-привода или дисковода.
    Последний раз редактировалось barsik; 15.01.2018 в 12:32.

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  2. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50
  3. Языки программирования
    от BlackWolf в разделе Программирование
    Ответов: 188
    Последнее: 26.04.2009, 15:34
  4. Техника программирования процедурных сопроцессоров
    от andrews в разделе Программирование
    Ответов: 4
    Последнее: 29.12.2006, 20:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •