Как правильно включить, куда указывать вектор для правильной работы на всех машинах, ну и еще какие фишки, С ПРИМЕРАМИ!!!!
Вид для печати
Как правильно включить, куда указывать вектор для правильной работы на всех машинах, ну и еще какие фишки, С ПРИМЕРАМИ!!!!
вектор в верхней памяти, лучше от #8000 до #BE00, ибо на каком-то из буржуйских спектрумов (+3 чтоле) медленные и быстрые банки перепутаны.
заполнять 257 байт какии-либо одним байтом.
желательно чтоб адрес обработчика тоже лежал в быстрой памяти, т.е. #8000, #8181, #8282, и т.д.
собственно и всё.
типо:
зы. а с чего вдруг такой вопрос? вроде в твоих интрухах музон нормально граетКод:di
ld hl,#BE00
ld de,#BE01
ld bc,#0100
ld (hl),#BB
ldir
ld a,#C3
ld (#BBBB),A
ld hl,int_handler
ld (#BBBC),hl
ld a,#BE
ld i,a
im 2
ei
....
int_handler
push af,bc,de,hl,...
...
pop ...,hl,de,bc,af
ei
ret
Sinus, я всё никак не могу понять, почему 257, а не 256 байт надо заливать?
потому что на шину данных во время прихода прерывания может прийти 255 (собственно, так и будет, если на спеке стабильная подтянутая резюками на +5V ШД).
т.е. если I=#80, а пришло #FF, то проц будет смотреть адрес процедуры по #80FF/#8100
так разве байт на 8100 не будет 256-ым?
по счету - нет. 256й байт - это FF.
moroz1999, будет 257-м... с #8000 по #80FF(включительно) будет 256 байт данных.
Хм, я наоборот обработчик в медленную память помещал, главное что бы вектор прерывания был в быструю память, таблица 257 байт в быстрой памяти, но сам обработчик в медленной. Потому что прерывание обрабатывается за время пока идет отрисовка верхнего бордюра, а в это время проц и так не тормозится. И до того как луч доходит до экрана уже все изменение произведены, курсор впечатан в новой позиции и обработка прерывания окончена. Таким образом я экономил быструю память под какие-нибудь быстрые процедуры.
я предпочитаю перестраховаться.
да и как-то у меня ни разу такого не было, чтоб под код памяти на хватило :) вот под данные - это да.