User Tag List

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

Тема: Демонстрационные программы для Специалиста

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

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

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,214
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,647
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Воспользовался процедурой рисования линии, которую предложил blackmirror. Стало всё ГОРАЗДО быстрее, даже удивительно!



    ИИ глядя на эту процедуру, тоже в восторг пришёл, назвав её предельно оптимизированной.

    Помимо замены процедуры рисования линии, я расширил холст с 256*192 до 256*256. Автор демки уверяет, что никакого родства со Спектрумом нет, а источников вдохновения послужила демка с IBM PC arty4, написанная на Borland Pascal. Почему был выбран именно такой размер окна он уже не помнит. И вот я подумал, что может быть в прямоугольном окне интереснее фигуры получаются?

    Также приложу сюда сразу переделанную под i8080 и SJAsmPlus процедуру рисования линии. Там вроде бы и команд Z80 было раз два и обчёлся, но у меня почему-то слишком много времени заняло, чтобы заставить всё это работать корректно на Специалисте.

    Код:
        align 8
    PixMask db    128, 64, 32, 16, 8, 4, 2, 1
    
    SetPix    macro
        xor    (hl)
        ld    (hl), a
        endm
    
    LineTo:                    ; (hl - x1y1)
        ld    de, 0x0000
        ld    (LineTo + 1), hl
    Line:                    ; (hl - x1y1, de - x2y2)
        ld    a, d
        sub    h
        jp    nc, LineGm
        cpl
        inc    a
        ex    de, hl            ; swap p1, p2
    LineGm: 
        ld    d, a            ; dx
        ld    bc, PixMask    
        ld    a, 7
        and    h
        add    c
        ld    c, a
        ld    a, h
        or    a
        rra 
        or    a
        rra
        or    a
        rra
        add    0x90 + 8        ; Старший байт адреса начала экрана Специалиста
        ld    h, a
        ld    a, (bc)
        ld    b, a
    LineDy: 
        ld    a, e
        sub    l
        jp    nc, LineXi
        cpl 
        inc    a
    LineXd: 
        ld    e, a            ; dy
        sub    d
        jp    nc, LineYd
        cpl
        inc    a
        ld    (LineXdd + 1), a    ; dx-dy
        ld    a, 0x2D            ; dec l
        ld    (LineXmm), a
        jp    LineXi1
    
    LineYd: 
        ld    (LineYdd + 1), a    ; dy-dx
        ld    a, 0x2D            ; dec l
        ld    (LineYy), a
        ld    (LineYyy), a
        jp    LineYi1
    
    LineXi: 
        ld    e, a
        sub    d
        jp    nc, LineYi
        cpl
        inc    a
        ld    (LineXdd + 1), a    ; dx-dy
        ld    a, 0x2C            ; inc l
        ld    (LineXmm), a
    LineXi1:
        ld    c, d            ;cnt
        inc    c
        ld    a, d
        or    a
        rra
        ld    d, a
        ld    a, b
    LineXp:
        SetPix
        dec    c
        ret    z
        ld    a, d
        sub    e
        ld    d, a
        jp    nc, LineXpp
    LineXmm:
        dec    l
        ld    a, b
        rrca
        ld    b, a
        jp    nc, LineXm
        inc    h
    LineXm:
        SetPix
        dec    c
        ret    z
        ld    a, d
    LineXdd:
        add    0
        ld    d, a
        jp    nc, LineXmm
    LineXpp:
        ld    a, b
        rrca
        ld    b, a
        jp    nc, LineXp
        inc    h
        jp    LineXp
    
    LineYi: 
        ld    (LineYdd + 1), a    ; dy-dx
        ld    a, 0x2C            ; inc l
        ld    (LineYy), a
        ld    (LineYyy), a
    LineYi1:
        ld    c, e            ; cnt
        inc    c
        ld    a, e
        or    a
        rra
        ld    e, a
        ld    a, b
    LineYp:
        SetPix
        dec    c
        ret    z
    LineYy: 
        inc    l            ; ++y
        ld    a, e
        sub    d
        ld    e, a
        ld    a, b
        jp    nc, LineYp
        rrca
        ld    b, a
        jp    nc, LineYm
        inc    h            ; ++x
    LineYm: 
        SetPix
        dec    c
        ret    z
    LineYyy:
        inc    l            ; ++y
        ld    a, e
    LineYdd:
        add    0
        ld    e, a
        ld    a, b
        jp    c, LineYp
        rrca 
        ld    b, a
        jp    nc, LineYm
        inc    h
        jp    LineYm
    Вложения Вложения
    С уважением, Станислав.

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

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

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

Похожие темы

  1. Конвертор ZX-картинок для Специалиста
    от CityAceE в разделе Специалист
    Ответов: 19
    Последнее: 08.05.2025, 18:04
  2. Ответов: 153
    Последнее: 16.12.2021, 19:07
  3. Элита для Специалиста
    от jerri в разделе Специалист
    Ответов: 77
    Последнее: 20.11.2021, 20:22
  4. Ответов: 70
    Последнее: 22.01.2018, 21:06
  5. OriNET для Специалиста ?
    от SYR-ALEX в разделе Специалист
    Ответов: 22
    Последнее: 21.07.2017, 07:40

Ваши права

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