Абзац
:: Поиск
:: ПоддерЖка ПрОекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №25 (09.09.2005) ПрОсмотрОв: 3744

    Рубрика: Этюды.

    Номер: №25 (09.09.2005).



    Модификация шрифта

    Предлагаем вашему вниманию, несколько интересных процедур, которые <превращают> стандартный шрифт из ПЗУ, в шрифт, пригодный для печати 64-х символов в строке (один символ - 4х8 пикселей).

    Вообще-то, все эти процедуры были написаны специально для наших демок 512 байт, и работали только при определенных условиях.

    Но во время подготовки данной статьи, мы решили доработать их и сделать более универсальными.

    font    EQU #7000;адрес 
        ;размещения 
        ;шрифта (2048 байт)
        ORG #6000
        LD  HL,font+32
        LD  DE,#3d00
    cy  LD  BC,#300
        LD  A,(DE)
        RLA
    cy2 RLA
        JR  NC,cy3
        RL  C
        RLA
        JR  cy4
    cy3 RLA
        RL  C
    cy4 DJNZ    cy2
        LD  (HL),C
        INC H
        INC DE
        LD  A,H
        CP  font/256+8
        JR  NZ,cy
        LD  H,font/256
        INC L
        JR  NZ,cy

    Некоторые новосозданные символы, выглядят немного коряво, следующая программка их подправит.

        LD  HL,ftab
        LD  DE,font+512+32
    dorf    LD  B,(HL)
        INC HL
        LD  C,(HL)
        INC HL
        INC DE
        DJNZ    $-1
        LD  A,(DE)
        XOR C
        LD  (DE),A
        LD  A,(HL)
        OR  A
        JR  NZ,dorf
    
    Посмотреть получившийся шрифт (см. рисунок внизу страницы), можно перебросив его на экран, LDIR'ом. HL, font, DE, #4000, BC, 2048, LDIR.
    И напоследок, третья процедура, при помощи которой, вы сможете напечатать текст на экране (HL, адрес экрана (#4000), DE, адрес текста, CALL wyw):
    
    wyw LD  A,(DE)
        INC DE
        OR  A
        RET Z
        CP  32
        JR  NC,$+4
        LD  A,32
        LD  C,A
        LD  A,(DE)
        INC DE
        PUSH    AF,HL,DE
        CP  32
        JR  NC,$+4
        LD  A,32
        LD  E,A
        LD  B,font/256
        LD  D,B
        LD  A,(BC)
        LD  (HL),A
        LD  A,(DE)
        RLD
        INC H
        INC D
        INC B
        LD  A,B
        CP  font/256+8
        JR  NZ,$-11
        POP DE,HL,AF
        INC L
        OR  A
        JR  NZ,wyw
        RET
    
    Ниже находится таблица для второй процедуры. Вы можете поэкспериментировать с BIN числами, изменяя их, вы измените вид некоторых созданных символов.
    
    ftab    DB  5,%00000100
        DB  1,%00000011
        DB  4,%00000110
        DB  20,%00000110
        DB  15,%00000010
        DB  30,%00000011
        DB  8,%00000101
        DB  1,%00000001
        DB  206,%00000001
        DB  23,%00000011
        DB  13,%00000101
        DB  192,%00000010
        DB  22,%00000110
        DB  22,%00000001
        DB  211,%00000001
        DB  7,%00000110
        DB  250,%00000100
        DB  4,%00000110
        DB  20,%00000110
        DB  49,%00000101,0

    Весь код занимает 145 байт  (все три процедуры + таблица).

    http://abzac.retropc.ru/images/i25_font.gif

    Алексей Червов, Владислав Ювженко,
    г. Красноярск


    © 2004-2013 Perspective group