Войти
ФлеймФорумЖелезо

Блеск и нищета 8/16-битных консолей и ПК (20 стр)

Страницы: 119 20 21 2259 Следующая »
#285
14:20, 29 мая 2018

А никто у нас тут не знает - TR-DOS на Beta 128 Disk Interface сразу имел точку входа 3D13 или это уже русские сделали?
Дело в том, что тот же Mighty Final Fight грузит через эту точку, согласно документации тут: http://www.worldofspectrum.org/pub/sinclair/hardware-info/TR-DOS_… ogramming.txt
Это как бы входная точка для программ на ассемблере - ничего лишнего, чисто передаём номера функций в регистре C и параметры в прочих регистрах. Окай.
Но если читать документацию на TR-DOS от изготовителя: http://www.worldofspectrum.org/pub/sinclair/hardware-info/Beta128… ce_Manual.txt , то там в секции "MACHINE CODE PROGRAMMING" описана только одна техника использования из ассемблера - имитация вызовов из бейсика. То есть в памяти создаётся строка текста вида ':REM:LOAD "filename"...' , меняется системная переменная "текущий символ обрабатываемой программы бейсика" на её начало - и идёт инвокация TR-DOS в дальнейшем с восстановлением системной переменной, то есть просто имтируется то как TR-DOS вызвается из бейсика и всё.
Так и было до какой то версии или что? Никто не в курсе?


#286
(Правка: 14:54) 14:51, 29 мая 2018

=A=L=X=
> сразу имел точку входа 3D13 или это русские сделали?
Сразу имел. Во всяком случае я не знаю такие версии трдоса, где этого бы не было (я начал с 5.01). Русские добавили в прошивку работу с произвольными портами, чтобы упростить жизнь всяким экзотическим системам типа is-dos  напрмую общаться с ВГ93 (хотя они и без этого как-то умудрялись работать, возможно просто с ограничениями и какими-то замедлениями).

#287
14:58, 29 мая 2018

Dexus

А, точно, нашёл во второй ссылке, что там тоже версия 5.xx, как и в документации выше, значит просто в мануал этот хоть и обширный, но прямая точка входа не влезла. Странно что даже не упомянули.

#288
(Правка: 15:22) 15:13, 29 мая 2018

В принципе, по устройству Spectrum 128 в книжке "ZX Spectrum и TR-DOS для пользователей и программистов", вся эта инфа, что написана выше, была примерно в том же виде - https://zxpress.ru/book_articles.php?id=1842

#289
(Правка: 15:32) 15:22, 29 мая 2018

0iStalker

Моя цель в этой статье (эти 4 подряд идущих комментария) показать разные способы подключения периферии к спектруму, что просто требует объяснять базовые даже иногда вещи, поэтому совпадает конечно с уже многократно оговоренным материалом. Но я пишу в расчёте на тех, кто программист, но у кого спектрума могло и не быть.
То есть то каков был простой спектрум, как его расширили аппаратно и программно в ZX Interface 1, как его так же программно и аппаратно (немного уже по другому) расширили в ZX 128, далее как опять таки уже немного другим способом расширили в +3 DOS и в конце концов - в TR-DOS. Просто улыбнули разные подходы в каждом из этих случаев.
В одних способах - перехват по известному адресу в коде, в других - попытка исполнять заведомо блок данных как код, в других - просто выставлением бит в портах и так далее. На вкус и цвет получились очень разные фломастеры, хотя один и тот же компьютер.

#290
(Правка: 22:17) 22:15, 29 мая 2018

=A=L=X=
> Моя цель в этой статье (эти 4 подряд идущих комментария) показать разные
> способы подключения периферии к спектруму,

ещё была kempston mouse :)

https://ru.wikipedia.org/wiki/Kempston_Interface

https://ru.wikipedia.org/wiki/Opus_Discovery

#291
4:04, 30 мая 2018

Дописал про +3 DOS и TR-DOS: https://gamedev.ru/flame/forum/?id=226622&page=19#m272

innuendo
> ещё была kempston mouse :)

Ну это простая штучка - чисто порты ввода-вывода. Я написал про программно-аппаратные расширения, когда тем или иным способом приходилось расширять код в ПЗУ. В этом и была цель.
Я уже давно заинтересовался вопросом как работал ZX Interface 1, что трансформировал команды Basic в форму LOAD *"m".... и так далее. В итоге родилась общая картинка по нескольким системам.

#292
(Правка: 6:34) 6:33, 2 июня 2018

Гы, в потугах напрограммировать простенькое что-то под ZX Spectrum 48/128 даже не думал что столкнусь с таким явлением, как "дребезг контактов" клавиатуры.
А это есть вещь данная в ощущениях как в спектруме так и во всяких микроконтроллерах девайсов ввода.
Однако эмуляторы фиксируют виртуальные контакты эмулируемого железа более чем плотно, в чём же могла бы быть проблема?
А проблема всплыла с неожиданного ракурса.
Оригинальный ZX Spectrum 16/48 обладал более чем примитивной клавиатурой из всего 40 клавиш, где все мыслимые символы кодировались с помощью двух управляющих шифтов - CAPS SHIFT (CS) и SYMBOL SHIFT (SS):

Изображение

Например заглавная H набиралась как CS+h, backspace как CS+0, а * набиралось через SS+b.
Так вот, когда ZX Spectrum 128 расширил клавиатуру до более вменяемого вида:

Изображение

то для совместимости клавиши типа backspace просто вели себя как одновременное зажатие CS и 0.
Эмуляторы подхватили это поведение (разумеется) и эмулируют данные сложные кнопки абсолютно таким же образом.
Но так как в машинном коде опрос состояния всех 40 клавиш делается последовательным сканированием восьми однобайтовых портов ввода (в каждом получается состояние 5 клавиш или "полуряда"), то нет-нет, но прямолинейный скан попадает в ситуации когда CS еще не зажат, а 0 уже да. В общем для стабильного опроса сложносоставных комбинаций клавиш пришлось таки повторить алгоритмы оригинальной прошивки спектрума и реагировать на нажатие только после "стабильного" повторяющегося во времени уровня сигналов. В оригинале это было в основном ради нейтрализации дребезга контактов.

Освоился так же с эмуляцией сохранения Basic-программ в TR-DOS

+ Показать

и эмулятором UnrealSpeccy - этот хотя бы честно и полно автостарт программы на бейсике с диска исполняет.
Вообще он довольно красноглазен - я вначале за это на него изрядно поматерился, но сейчас его возможности уже начинают потихоньку довлеть над необходимостью зубрить комбинации хоткеев. Таки да.
Он еще в режиме отладки показывает какие банки памяти активны и уже одним только этим ложит Spectaculator на лопатки.
Так что добавил в архив и его тоже вместе с ассемблером SjASMPlus, в общем архив самодостаточен - и исходники и компилятор и эмулятор.
Просто для тех кому любопытно: https://yadi.sk/d/x2fdEet33WESP8

#293
10:07, 2 июня 2018

Дребезг клавиатуры, подхват основной клавиши до сдвиговой (cs/ss), и вместо движения курсора порой проскакивают 6,8. В 94м с преодоления этой проблемы я и начал писать свой редактор. За счёт лага в 1 цикл прерывания и накопления. Типа драйвера клавиатуры своего сделал чтобы этой проблемы не знать.

#294
10:25, 2 июня 2018

прикольно, у Дубны такие же клавиши были :)

#295
(Правка: 11:57) 11:43, 2 июня 2018

=A=L=X=

а что делал NM1 переключатель ? magic button ?

#296
14:39, 2 июня 2018

innuendo
> а что делал NM1 переключатель ? magic button ?

Наверное. Оригинальный спектрум знал только одно прерывание - VBlank и оно было maskable.
Немаскируемое прерывание тоже сделали только одно и в оригинальной прошивке в его обработчике был баг, потому что он никогда не вызывался и всем было пофигу.
Но в более поздних клонах NMI заделали под magic button, да.

#297
17:30, 2 июня 2018

=A=L=X=
У нас многие NMI вешали на переключатель на Shadow RAM, в которой сидел STS monitor, насколько я помню.

#298
18:45, 2 июня 2018

innuendo
> прикольно, у Дубны такие же клавиши были :)

Лол: https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%B1%D0%BD%D0%B0_48%D0%9A

С компьютера под названием "Дубна-48К" осуществляется взлом компьютерной системы ЦРУ в фильме "Джейсон Борн" (хотя сам компьютер в кадре не появляется).

Mahagam
> У нас многие NMI вешали на переключатель на Shadow RAM, в которой сидел STS
> monitor, насколько я помню.

Scorpion ZX 256 - прям в точку на эту тему.

#299
18:53, 2 июня 2018

=A=L=X=
> Лол:

у меня был жёлтый корпус

Страницы: 119 20 21 2259 Следующая »
ФлеймФорумЖелезо