User Tag List

Показано с 1 по 9 из 9

Тема: Расчет длины INT или ЧЯДНТ

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,242
    Спасибо Благодарностей отдано 
    993
    Спасибо Благодарностей получено 
    615
    Поблагодарили
    333 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Расчет длины INT или ЧЯДНТ

    Как всем известно, каноническая длина INT составляет 71680 тактов для Pentagon и 69888 тактов для Scorpion и оригинального Spectrum. Я написал следующий позорный код, печатающий при вызове из Basic число, пропорциональное кол.-ву тактов:

    PHP код:
                            di
                            ld hl
    , $8000
                            push hl
    pop deinc de
                            ld bc
    257
                            ld a
    $c3
                            ld 
    (hl), a
                            ldir
                            ld hl
    INT
                            ld de
    $c3c3
                            ld bc
    INTLEN
                            ldir
                            ld a
    , $80
                            ld i
    a
                            im 2
                            ei
                            ld bc
    0
                            ld a
    1
                            halt
    .loop                        
                            inc bc              
    6
                            jr 
    .loop            12
    INT    
                        
    or a                4
                        jr z
    , .exit1        7
                        dec a               
    4
    .exit2    
                        ei                  
    4
                        ret                 
    10
    .exit1    
                        pop hl
                        im 1
                        jr 
    .exit2     
    INTLEN            
    = $ - INT 
    Запускаю в Unreal с моделью ULA = Pentagon. Получаю 3980. Где-то еще я слышал, что на уход в прерывание z80 тратит 19 таков.
    Начинаем считать длину INT: 3980 x (6+12) + (4+7+4+4+10) + 19 = 3980x18+29+19 =71688 вместо 71680.

    Вопрос к гуру мультиколоров: Что я делаю не так?
    Последний раз редактировалось SoftLight; 11.02.2018 в 19:24.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Расчет модуля разности чисел
    от Andrew771 в разделе Программирование
    Ответов: 15
    Последнее: 15.02.2013, 21:06
  2. Расчет адреса точки на экране
    от Ares в разделе Программирование
    Ответов: 10
    Последнее: 26.07.2012, 17:46

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •