Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №32 (10.10.2009) Просмотров: 4250

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

    Номер: №32 (10.10.2009).



    Этюды

    Печать 16 символов в строке.  119 байт.

    Владислав Ювженко / tiboh

        LD DE,адрес на экране
        LD IX,адрес текста, в конце ноль
    p1    LD A,(IX)
        OR A
        RET Z
        LD L,A
        ADD HL,HL
        LD H,15
        ADD HL,HL
        ADD HL,HL
        EX DE,HL
        LD BC,#0800
    p2    PUSH BC
        LD A,(DE)
    ;если разремировать будет утолщенный шрифт
        ; LD B,A
        ; ADD A,A
        ; OR B
        LD B,C
    ;повторить блок 8 раз
        !ASSM 8    
        RRA
        RR C
        RR B
        SRA C
        RR B
        !CONT
    ;-----------------------
        LD (HL),C
        INC L
        LD (HL),B
        DEC L
        INC DE
        INC H
        POP BC
        DJNZ p2
        INC L
        INC L
        JR Z,$+6
        LD A,H
        SUB 8
        LD H,A
        EX DE,HL
        INC IX
        JR p1

    Турбо загрузчик. 162 байта

    Владислав Ювженко / tiboh

        LD HL,адрес загрузки
        LD DE,дорожка/сектор
        LD B,количество секторов
        LD A,(23830)
        AND 3
        LD (drv+1),A
        DI
        LD (emsp+1),SP
        LD IX,#3d2f
        LD C,D
        SRL C
        LD A,60
        JR NC,$+4
        RES 4,A
        EXX
        LD HL,drv+1
        OR (HL)
        LD HL,cont
        PUSH HL
        LD HL,#2f4d
        PUSH HL
        EXX
        JP (IX)
    cont    LD SP,tabl
        LD A,E
        INC A
        PUSH HL
        EXX
        POP HL
        LD C,95
        JP (IX)
    l1    LD A,#80
        LD C,#7f
        JP (IX)
    l2    XOR A
        JP (IX)
    l3    LD A,10
        LD D,1
        LD C,95
        JP (IX)
    l4    OR B
        EXX
        LD A,D
        RRA
        JP (IX)
    l5    JR NZ,cont
        INC H
        INC E
        BIT 4,E
        JR Z,skip
        LD E,0
        INC D
        LD A,60
    drv    OR 0
        BIT 0,D
        JR Z,$+4
        RES 4,A
        JP (IX)
    l6    JR NZ,skip
        LD A,88
        JP (IX)
    skip    DJNZ cont
        LD (23796),DE
        EXX
    emsp    LD SP,0
        EI
        RET
        DW 0
    tabl    DW #2a53,l1,#2fc3
        DW #3fe5,l2,#1e3a
        DW l3,#2a53,#3f33
        DW l4,#1e3a,l5
        DW #1ff3,l6,#2fc3
        DW #3fe5,skip
        DW #3fe5,skip

    Прозрачная работа со страницами

    Александр Синяков / SAM style

    Запоминает включеную страницу и по RET вос­станавливает её. Что позволяет прозрачно ра­ботать со страницами.

    savepage    ld (bufer+1),hl
        ld hl,(CurPage-1)
        ex (sp),hl
        push hl
        ld hl,ret_addr
        ex (sp),hl
        push hl
        bufer
        ld hl,0
        ret
    ret_addr pop af
    ;тут, переход к переключалке банок
        ld bc,#7ffd
        out (c),a
        ret

    CurPage    db #10    ;текущая страница

    В программе:

        ...

        call savpage

        ...

        ret

    RET пойдёт через ret_addr и восстановит стра­ницу.


    Абсолютное значение регистра

    Александр Синяков / SAM style

        ld a,e
        cp 128
        jr c,label
        neg
        ld e,a
        label: ...

    На выходе A=ABS (E)

    #FF = -1, #FE = -2 и т.д.

    © 2004-2013 Perspective group