Цитата Сообщение от Andrey_K Посмотреть сообщение
Переполнение L увеличивает H, разве нет? А куда денется переполнение H?
Код:
       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 ----------

Цитата Сообщение от Andrey_K Посмотреть сообщение
Я читаю, но все схватить сразу не успеваю...
вот тут еще скачай и почитай
растактовка - влияние на флаги и тд
https://www.dropbox.com/s/bu9lbf0ns1...codes.a80?dl=0