Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Titus (12.07.2023)
BlaireCas (12.07.2023)
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Titus (12.07.2023)
Хунта наверное не посмотрит. Но ведь... Чорт подъери:
Да уж, журнал УКНЦ 1/1995
[свернуть]
Не то чтобы я спорил с Alex_K и откуда-то взял нечто другое. Но вон в журнале тоже как-бы "а и нафиг нам tstb лишнее, проживем и без него". Даже без "первого" tstb (вдруг как-раз без первого-то можно).
Флеймово было, но я останусь верен старому коду с двумя tstb уж фиг с ним.
Последний раз редактировалось BlaireCas; 13.07.2023 в 00:53.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Здесь другой подход - всегда дожидаемся готовности после засылка байта. Он похож на мой первый вариант, просто проверка готовности ПОСЛЕ засылки байта. То есть на выходе из процедуры - мы дождались окончания пересылки. В этом случае соблюдается
но ценой то, что в общем (весь) код будет работать немного медленней. В целом я бы реализовал два вариант процедур - одну на код 1 (можно по этой схеме), вторую - по моему варианту - на все другие коды, где можно не ждать после последнего байта
А вы обратили внимание, что там только две команды - передача в ОЗУ ПП (код 020) и запуск в ОЗУ ПП (код 030). Отсутствует команда выделения блока памяти в ОЗУ ПП (код 1). Здесь естественно сработает, т.к. функции 020 и 030 не меняют ваш блок параметров. А функция 1 после исполнения передаёт в ваш блок параметров результат операции.
- - - Добавлено - - -
Да уж, задержка будет ужасной. И выигрыш в задержке будет только при запуске кода по команде 030. В случае передачи команды 020 и не ожидания установки бита готовности придётся ждать его перед командой 030. Вот собственно и весь выигрыш. А так ожидание ещё может уйти на синхронизацию с запуском кода в ПП, если кодам в ЦП и ПП надо взаимодействовать между собой.
- - - Добавлено - - -
Ещё столовую ложку дёгтя в бочку мёда. По поводу последовательной подачи команд 020 и 030. Всё сработает и с циклом на четыре, если адрес запуска в ПП будет равен адресу загрузки. А вот если не равны, то вы в блоке параметров пропишите уже новый адрес, а в ПП ещё не успел обработаться запрос 020. Тогда загрузка в ПП начнётся уже с нового адреса.
Я писал несколько программ, которые оставались резидентами в ПП, так у меня получалось, что адрес запуска не был равен адресу загрузки. В младших адресах был резидент, а в более старших осуществлялась инициализация и уменьшение занимаемого блока памяти под объём резидента.
Ну кто-ж его теперь знает. Это ведь бумажный журнал. Сократили, закомментировали тремя точками остальной код. Однако по таким вот журналам и учились. Я уже забыл откуда взял изначальный код с двумя tstb, откуда-то (да да тупая копипаста). Похоже не из этого журнала. В каком-то другом видимо было.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)