1

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

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

В Spectaculator нашел опцию "запускать пока не придет прерывание"
https://zxdemos.ru/uploads/images/102/ce4dd7436eff7963400859516e9f3379.png

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

https://zxdemos.ru/uploads/images/102/9d9d1517af528a537390e51b6b0da00b.png

2

1. какая версия Spectaculator ?
2. пока есть режим IM 1 не используй IY - это азы ваще-то. и это самый ебанутый баг  ROM.

Искусственный интеллект никогда не сравнится с естественной тупостью

3 (изменено: Random Great, 29.05.2018 13:54:37)

Шыншыл сказал:

1. какая версия Spectaculator ?

Версия 8.0 честно спираченая с vtrdos. Приходится запускать под MacOS через Wine,  так как в нем самый понятный по мне отладчик.
Как только допишу игру и разбогатею на 100500 мильонов сразу обещаю купить лицензионную smile

Шыншыл сказал:

2. пока есть режим IM 1 не используй IY - это азы ваще-то. и это самый ебанутый баг  ROM.

Ну сорь, наверстываю сейчас что упустил в 90-е big_smile

4

Ну гуд. просто эмуляторам ваще доверять нельзя.

Искусственный интеллект никогда не сравнится с естественной тупостью

5 (изменено: Weiv, 29.05.2018 14:44:49)

А ещё прерывания можно запретить. Правда, если используется процедура бипера из ПЗУ, она их включает в конце своей работы, и даже если выключать их сразу после её вызова, прерывание может иногда проскочить.  Но если процедуру бипера не использовать, с выключенными прерываниями проблем с регистром IY не будет.

6

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

push iy
halt
pop iy

если haltа нет тады ой!

7

ага, заодно LD IY,$5C3A

Искусственный интеллект никогда не сравнится с естественной тупостью

8

Опрос клавиатуры происходит по честно стыренной из движка 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 ? smile

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

p.s. в телеграм как раз умная статейка на тему промелькнула - https://retrocoder.d3.ru/raznye-podkhod … ing=rating

9

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

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

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

а снапшот от ужясма - это pain in ass - системные переменные засраны. Так что не знаю, на чем скажется.

Искусственный интеллект никогда не сравнится с естественной тупостью

10

Weiv сказал:

А ещё прерывания можно запретить. Правда, если используется процедура бипера из ПЗУ, она их включает в конце своей работы

А ещё если стандартными процедурами трдос (3d13) пользоваться - тоже включаются прерывания, если мне не изменяет память...

11

Random Great сказал:

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

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

p.s. в телеграм как раз умная статейка на тему промелькнула - https://retrocoder.d3.ru/raznye-podkhod … ing=rating

Если бейсик и трдос не использовать, можно сразу с #5B00 начинать. Для работоспособности трдос нужна часть её системных переменных и место под буфер, насколько я помню.

12

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

13

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