Прерывания, открытие века! ( на самом деле нет )

Ответить
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Прерывания, открытие века! ( на самом деле нет )

Сообщение Random Great »

Настоящий спектрумовский кодер это давно знает а я напишу сюда чтобы не забыть потом =)

Почему если не включать свой обработчик прерываний, моя программа начинает в некоторых местах глючитъ?

В Spectaculator нашел опцию "запускать пока не придет прерывание"
Изображение

Выяснилось что по умолчанию на прерывание подвешен вызов #0038 процедуры, которая cмело гадит в IY+40, увеличивая значение там на 1....

Изображение
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

1. какая версия Spectaculator ?
2. пока есть режим IM 1 не используй IY - это азы ваще-то. и это самый ебанутый баг ROM.
Ненависть- это подарок
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

Шыншыл 55095 писал(а):1. какая версия Spectaculator ?
Версия 8.0 честно спираченая с vtrdos. Приходится запускать под MacOS через Wine, так как в нем самый понятный по мне отладчик.
Как только допишу игру и разбогатею на 100500 мильонов сразу обещаю купить лицензионную :)
Шыншыл 55095 писал(а):2. пока есть режим IM 1 не используй IY - это азы ваще-то. и это самый ебанутый баг ROM.
Ну сорь, наверстываю сейчас что упустил в 90-е :D
Последний раз редактировалось Random Great 29 май 2018, 13:54, всего редактировалось 1 раз.
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

Ну гуд. просто эмуляторам ваще доверять нельзя.
Ненависть- это подарок
Weiv
Сообщения: 99
Зарегистрирован: 24 сен 2017, 00:05

Сообщение Weiv »

А ещё прерывания можно запретить. Правда, если используется процедура бипера из ПЗУ, она их включает в конце своей работы, и даже если выключать их сразу после её вызова, прерывание может иногда проскочить. Но если процедуру бипера не использовать, с выключенными прерываниями проблем с регистром IY не будет.
Последний раз редактировалось Weiv 29 май 2018, 14:44, всего редактировалось 1 раз.
Аватара пользователя
daniel
Сообщения: 1417
Зарегистрирован: 17 дек 2016, 00:00
Откуда: del

Сообщение daniel »

а можно не запрещать, вдруг опрос клавы сделан через пзу:

push iy
halt
pop iy

если haltа нет тады ой!
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

ага, заодно LD IY,$5C3A
Ненависть- это подарок
Аватара пользователя
Random Great
Сообщения: 271
Зарегистрирован: 14 фев 2017, 00:00
Контактная информация:

Сообщение Random Great »

Опрос клавиатуры происходит по честно стыренной из движка Sam Style процедуре сканирования таблицы
scanKeys:
ld a,(HL)
and a
ret z
inc hl
in a,(0xfe)
and (hl)
inc hl
ld e,(hl)
inc hl
ld d,(hl)
inc hl
jr nz,scanKeys
or 2
ret
Пользуясь случаем заодно спрошу у взрослых дядек-программистов -

можно ли ассемблерную прогу начинать сразу с #5B00? Там же куча места пропадает ?
Snapshot грузится нормально, будут ли потом пороблемы с адаптацией под tap ? :)

Подпрограммы ПЗУ и Basic не использую если что, обработчик прерываний Im2 ставлю свой.
И под tr-dos придется извратиться наверное, особый загрузчик писать..

p.s. в телеграм как раз умная статейка на тему промелькнула - https://retrocoder.d3.ru/raznye-podkhod ... ing=rating
Аватара пользователя
shiny
Сообщения: 9103
Зарегистрирован: 22 дек 2016, 00:00
Откуда: в Шуе бал

Сообщение shiny »

в статье написано, что Бейсик 128 использует часть для переключения памяти.

если установлен im 2, то юзай сколько влезет, хотя выигрыш мизерный.

в прежних релизах, если были проблемы с этим участком, то в загручик включали процедуру переключения на режим 48К с открытым портом, и не парились(:

а снапшот от ужясма - это pain in ass - системные переменные засраны. Так что не знаю, на чем скажется.
Ненависть- это подарок
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Weiv 55099 писал(а):А ещё прерывания можно запретить. Правда, если используется процедура бипера из ПЗУ, она их включает в конце своей работы
А ещё если стандартными процедурами трдос (3d13) пользоваться - тоже включаются прерывания, если мне не изменяет память...
Weiv
Сообщения: 99
Зарегистрирован: 24 сен 2017, 00:05

Сообщение Weiv »

Random Great 55148 писал(а): можно ли ассемблерную прогу начинать сразу с #5B00? Там же куча места пропадает ?
Snapshot грузится нормально, будут ли потом пороблемы с адаптацией под tap ? :)

Подпрограммы ПЗУ и Basic не использую если что, обработчик прерываний Im2 ставлю свой.
И под tr-dos придется извратиться наверное, особый загрузчик писать..

p.s. в телеграм как раз умная статейка на тему промелькнула - https://retrocoder.d3.ru/raznye-podkhod ... ing=rating
Если бейсик и трдос не использовать, можно сразу с #5B00 начинать. Для работоспособности трдос нужна часть её системных переменных и место под буфер, насколько я помню.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Можно и напрямую программить ВГшку, но это надо заморочиться. Как показывает практика, если перед работой программы чистится экран, я про именно работу самой программы или игры и в самой прграмме не юзать бейсик и не ходить в трдос штатными процедурами, то никто не мншает всё спаковать, записать, а после загрузки кодового блока зачернить экран, кинуть туда распаковщик и распаковать хоть от 5b00 до ffff.
Аватара пользователя
kalantaj
Сообщения: 2275
Зарегистрирован: 09 июл 2016, 00:00

Сообщение kalantaj »

Ну или кусками паспаковывать если экраная облась должна быть ее засранной. Всё вышесказанное относится больше к 48к, т.к. на 128 проще - вывел содержимое 7 странички и почти вся память тебе в руки.
Ответить