С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
ммм?Код:xor c xor l ld c,a add hl,hl jr nc,decr_1 inc hl decr_1
уйдет во флаг С
Код:имеем C HL 0 10000000 0000000 add hl hl C HL 1 00000000 0000000 jr nc.... inc hl C HL 1 00000000 0000001
считаем скорость - заодно отсекаем дебаггеры и прочее
на самом деле
│INC HL │23 │- - - - - -│ 6│
не более 70000/6 = 12000
Код:;Процедура установки прерываний для расксорки l1fe6 di ;запрещение прерываний pop hl ;берем адрес возврата в HL ld a,#03 ;вкл. 3-ю страницу rst #18 push af ;сохраняем номер предыдущей ld bc,(#f9ff) ;берем старый вектор прерываний (I=#F9) push bc ;сохраняем его ld bc,l201c ld (#f9ff),bc ;устанавливаем его на адрес #201C push hl ;восстанавливаем адрес возврата ld hl,#0001 ;HL=1 im 2 ;второй режим прерываний ret ;возврат l1fff call l1fe6 ;вызов процедуры установки прерываний ei ;вкл. прерывания halt ;ждем прихода прерывания ld b,#14 ;пропускаем несколько тактов l2006 djnz l2006 or a ;очищаем флаг C ei ;вкл. прерывания (пропускаем еще 4 такта) l200a inc hl ;в цикле увеличиваем HL на 1, пока не придет прерывание jr nc,l200a ld (#5f74),hl ;сохраняем HL по адресу #5F74 ;Процедура восстановления старого режима прерываний l2010 di ;запрещаем прерывания im 1 ;устанавливаем 1-й режим pop de ;берем из стека старый вектор прерывания ld (#f9ff),de ;восстанавливаем его pop af ;восстанавливаем страницу памяти rst #18 ei ;прерывания вкл. ret ;возврат l201c scf ;обработчик прерываний для расксорки ret ;он просто сигнализирует о приходе прерывания
;проверяем состояние портов
короче набор программ критичных к железуКод:;Хитрая процедура, формирующая в HL неизвестное число l201e call l1fe6 ;вызов процедуры установки прерываний ld hl,#0001 ;HL=1 ei ;вкл. прерывания halt ;ждем прерывания nop ;пропуск 4 такта l2027 dec de ;уменьшаем DE до тех пор, пока DE не станет равным 0 ld a,d or e jr nz,l2027 l202c in a,(#fe) ;читаем порт #FE add a,a ;A=A+A adc hl,hl ;HL=HL+HL+C jr nc,l202c ;выполняем до тех пор, пока HL не переполнится jr l2010 ;или не возникнет прерывание и возврат l2035 pop hl ;в HL адрес возврата ld e,(hl) ;E=#2E inc hl ld d,(hl) ;D=#03 inc hl push de ;#032E в стек ld e,(hl) ;E=#01 inc hl ld d,(hl) ;D=#01 inc hl ld c,(hl) ;C=#82 inc hl ld b,(hl) ;B=#00 inc hl ex (sp),hl ;адрес возврата в стек, HL=#032E bit 4,(ix+#35) ;проверка бита 4 #5F40+#35=#5F75 jr z,l201e ;а это старший бит неизвестного слова в #5F74 ex de,hl ;если bit4(#5f74)!=0, то HL<>DE push bc call l201e ;вызов еще одной хитрой процедуры pop bc add hl,bc ;HL=HL+BC ret ;возврат
---------- Post added at 16:59 ---------- Previous post was at 16:58 ----------
вот тут еще скачай и почитай
растактовка - влияние на флаги и тд
https://www.dropbox.com/s/bu9lbf0ns1...codes.a80?dl=0
С уважением,
Jerri / Red Triangle.
Спасибо всем за помощь, код подобран, ПЗУ расшифрована, знаний прибавилось :-)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)