Важная информация

User Tag List

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

Тема: Основной экран в 24 строки

  1. #1
    Junior Аватар для Den Zurin
    Регистрация
    07.12.2010
    Адрес
    Киров
    Сообщений
    3
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Основной экран в 24 строки

    Здраствуйте!
    При написании программы для ZX Spectrum у меня возник такой вопрос.
    По умолчанию в ZX Spectrum основной экран использует только 22 строки, нижние 2 строки используются под служебный экран (сообщения об ошибках и др.).
    Можно увеличить размер основного экрана до 24 строк?
    В литературе по ZX Spectrum описывается системная переменная DF_SZ (адрес 23659), задающая число строк в служебном экране. Я попробовал записать туда 0, но основной экран от этого не увеличился - при выводе в нижние 2 строки программа зависает. Вот текст программы на ассемблере:
    Код:
    ORG 60000
    ; POKE 23659, 0
    LD A,0
    LD (IY+49),A
    ; clear screen
    CALL 3435
    ; select channel #2
    LD A, 0
    CALL 5633
    ; PRINT AT 23,0; "*";
    LD A,#16
    RST 16
    LD A,23
    RST 16
    LD A,0
    RST 16
    LD A,"*"
    RST 16
    ; wait key pressed
    RES 5,(IY+1)
    LOOP BIT 5,(IY+1)
    JR Z,LOOP
    ; POKE 23659,2
    LD A,2
    LD (IY+49),A
    ; clear screen
    CALL 3435
    ; select channel #2
    LD A,2
    CALL 5633
    ; return
    RET

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

  3. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,760
    Благодарностей: 2076
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На бесике (либо используя процедуры печати ПЗУ), "влоб", увеличить основной экран на все 24 строки не получится, точнее, не получится напечатать что-либо в 23 строке (максимум в 22) - это раз. Второй момент, если вы увеличиваете основной экран на 24 строки, для служебного экрана строк совсем не остается, а значит вывод любого сообщения (даже ОК), приведет к зависанию.
    Eсли выполнить такую строку:
    POKE 23659,0: PRINT AT 22,0;"тут могут быть любые 64 символа": POKE 23659,2
    в двух служебных строках будут напечатаны символы набранные внутри кавычек. Нечто подобное описано в книжке, Как написать игру (на бейсике).
    Кстати, печать в служебных строках решается в бейсике командой типа:
    PRINT #0; AT 0,0;"любой текст"; для второй строки служебного экрана Y-координата равна 1. Раз вы работаете с каналами, задайте канал 0 и скорректируйте координаты печати..
    Последний раз редактировалось null_device; 12.12.2010 в 08:52.
    Когда есть, но не знаеш где - это все равно, что нету.

  4. #3
    Junior Аватар для Den Zurin
    Регистрация
    07.12.2010
    Адрес
    Киров
    Сообщений
    3
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, я читал про каналы, #0 используется для служебного экрана, #2 для основного.

    Eсли выполнить такую строку:
    POKE 23659,0: PRINT AT 22,0;"тут могут быть любые 64 символа": POKE 23659,2
    в двух служебных строках будут напечатаны символы набранные внутри кавычек.
    Хорошо, с текстом понятно.
    А рисовать как? Выводить пиксели, линии? Нельзя?
    Последний раз редактировалось Den Zurin; 12.12.2010 в 08:52.

  5. #4
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,760
    Благодарностей: 2076
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дело в том, что стандартный процедуры из ПЗУ, для рисования линии и точек "не умеют" рисовать в служебных строках. И уменьшение количества служебных строк на это никак не влияет.

    ---------- Post added at 11:58 ---------- Previous post was at 11:56 ----------

    Для вывода текста\графики, во весь экран придется писать программу для обработки и вывода на экран (либо брать готовую реализацию, если она есть). Мне, лично это только так видится.
    Когда есть, но не знаеш где - это все равно, что нету.

  6. #5
    Junior Аватар для Den Zurin
    Регистрация
    07.12.2010
    Адрес
    Киров
    Сообщений
    3
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Понятно.
    И еще вопрос: возможен ли вертикальный скроллинг (построчный) стандартными средствами?

  7. #6
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,760
    Благодарностей: 2076
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По команде CALL 3582 лежит процедура скроллинга основного экрана на одну символьную строку.
    ----
    В принципе можно взять готовые процедуры из пакета Supercode\NEW Supercode. Там они есть, для кролирования в разные стороны.
    Когда есть, но не знаеш где - это все равно, что нету.

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

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

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

Похожие темы

  1. zx-777 черный экран
    от omaxlab в разделе Unsorted
    Ответов: 20
    Последнее: 13.10.2010, 19:21
  2. Экран...
    от Sonic в разделе Unsorted
    Ответов: 9
    Последнее: 26.12.2006, 17:15
  3. Ответов: 7
    Последнее: 18.12.2006, 12:25
  4. Скроллирование строки
    от caro в разделе Программирование
    Ответов: 76
    Последнее: 16.05.2006, 16:11
  5. ZX 128 - второй экран
    от icebear в разделе Unsorted
    Ответов: 8
    Последнее: 06.03.2006, 19:21

Ваши права

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