User Tag List

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

Тема: ZX80 развертка изображения

Комбинированный просмотр

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

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ZX80 развертка изображения

    Ради интереса захотелось посмотреть как работал предшественник спектрума - ZX80. Нашел пзу (тут дизасм), загрузил в эмулятор, стал разбираться как формируется изображение. Оказалось в ZX80 используется какой-то весьма нетривиальный хитрый хак с формированием изображения.

    Ктото разбирался как это работает? Где можно найти описание?

    Из того что понял - изображение формируется Z80 на лету, прерывание как понял срабатывает в начале каждой строки развертки, в регистр I загружается 0x0e - это как я понял начало знакогенератора, далее происходит чтото хитрое, фрагмент кода из дизасма:
    Код:
    ; --------------------------------
    ; THE 'MASKABLE INTERRUPT' ROUTINE
    ; --------------------------------
    ; Note. the maskable interrupt is concerned with generating the TV picture,
    ; one of the main tasks in the ZX80. This requires some understanding of
    ; how the video hardware interacts with the system and part of the process
    ; is to present to the Z80 chip a phantom display file in the upper
    ; unpopulated 32K of memory. This topsy-turvy display file
    ; executes characters like "HELLO WORLD" as NOP instructions but recognizes
    ; a newline ($76) as a true HALT instruction.
    
    ; The video hardware sniffs the databus and grabs the data as it flies by
    ; sending it on to the shifting circuits. The I register permanently holds
    ; $0E. The video circuitry uses this register and the lower six bits of the
    ; character to index into the character set bitmaps at the end of this ROM,
    ; at $0E00, and so cobble together a scan-line.
    
    ; If bit 7 of the character latch is set, then the serial video data is
    ; inverted so that any character in the range 127-191 appears as the inverse
    ; of normal characters 0 - 63.
    
    ; For a proper explanation of this system, I recommend Wilf Rigter's
    ; online documentation, available from several indexed sites.
    ; I have borrowed a few comments from that file to remind myself of what
    ; is happening. I have indicated where the Z80 instructions should be
    ; read in conjunction with Wilf's file by using a double semi-colon.
    
    ; On entry, B holds the line number and C the number of the scanline.
    
    
    ;                        JP (HL)
    ;                        ¦
    ;    INT      HSync      ¦HALT                                                      INT      HSync
    ;    ¦        ¦          ¦¦                                                         ¦        ¦
    ;   _¦________¦     ________________________________________________________________¦________¦
    ;    ¦        |____|                                                                ¦        |__
    ;    ¦        ¦                                                                     ¦        ¦
    ;    ¦ 13 ¦ 4 ¦ 20 ¦  34  ¦                     136 = 34 * 4                        ¦ 13 ¦ 4 ¦
    ;    ¦\__/ \__¦__________/ \_______________________________________________________/¦\__/ \__¦__
    ;      INT   INT Routine                         34 columns                                  ¦
    ;    Response ¦                                                                              ¦
    ;             ¦                                                                              ¦
    ;             ¦\____________________________________________________________________________/¦
    ;                                                  207
    
    
    
    ;; MASK-INT
    L0038:  DEC     C               ;; decrement the scan line counter in register C.
            JP      NZ,L0045        ;; JUMP to SCAN-LINE : repeats 8 times for each
                                    ;; row of characters in DFILE.
    
            POP     HL              ;; point to the start of next DFILE row
            DEC     B               ;; decrement ROW counter
            RET     Z               ;; return if zero to
    
            SET     3,C             ;; load scan line counter with 08 was 00.
    
    ;; WAIT-INT
    L0041:  LD      R,A             ;; load refresh register with value $DD.
            EI                      ;; enable interrupts.
            JP      (HL)            ;; jump to execute the NOPs in DFILE
                                    ;; terminated by a NEWLINE/HALT instruction.
    
    ; ---
    
    ;; SCAN-LINE
    L0045:  POP     DE              ;; discard return address.
            RET     Z               ;; delay (Zero never set)
    
            JR      L0041           ;; back to WAIT-INT above
    В hl обычно 0x7848, при джампе на этот адрес, как я понял должен читаться NOP и загружаться сдвиговый регистр значением из знакогенератора, правда откуда не совсем ясно - вроде бы адрес както получается с шин Z80. По окончании строки процессору как я понял выдается опкод 0x76 (HALT) и таким образом он ожидает следующую строку.

    Ктото может подсказать как это работало?
    А именно - правильно ли я понял вышесказанное и как происходит формирование адреса для чтения значения в сдвиговый регистр для формирования сканлайна?


    Вот тут нашел схему ZX80 - удивительно небольшая: https://github.com/TankedThomas/ZX80
    Правда как работает видеоразвертка из неё мне пока не понятно.
    Последний раз редактировалось ZXMAK; 19.05.2025 в 09:44.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

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

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

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

Похожие темы

  1. zx80 issue 2 от павла
    от crrush в разделе Зарубежные компьютеры
    Ответов: 12
    Последнее: 29.03.2021, 21:21
  2. кадровая развертка spectrum +2
    от sergey2b в разделе Зарубежные модели
    Ответов: 103
    Последнее: 15.04.2017, 00:23
  3. Ищу информацию о zx80
    от fedorov.police80 в разделе Разный софт
    Ответов: 49
    Последнее: 14.03.2016, 13:21
  4. ZX80
    от Sinus в разделе Зарубежные компьютеры
    Ответов: 12
    Последнее: 12.05.2013, 21:39
  5. Советские аналоги ZX81 и ZX80
    от Citron в разделе Разный софт
    Ответов: 3
    Последнее: 01.01.2009, 17:38

Ваши права

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