Форум - Программы "Пламя" и "Дракон".

(c) Телицын С., г.Нижнекамск

   Я страстный любитель спеку  и
ZX РЕВЮ читаю с первого  номера,
но все никак не удосуживался на-
писать - как-то не до того было.
Перейду сразу к делу.
   Предлагаю на ваш конкурс этю-
дов  небольшую  программку.  На-
писана она, правда, не  мной, но
привожу я ее с разрешения автора
Mihal Soft°.  Это так называемое
"Пламя".

            org 5CD0h

begin:      ld      bc, 3E8h
loop_1:     dec     bc
            ld      a, b
            or      c
            jr      nz, loop_1
            ld      de, 5B00h
            ld      b, 20h
loop_2:     inc     hl
            ld      a, h
            and     1Fh
            ld      h, a
            ld      a, (hl)
            rra
            ld      a, 0
            jr      c, loop_3
            ld      a, 3Fh
loop_3:     ld      (de), a
            inc     de
            djnz    loop_2
            ld      ix, 57FFh
            ld      bc, 300h
loop_4:     ld      a, (ix+32)
            add     a, (ix+33)
            add     a, (ix+34)
            add     a, (ix+65)
            srl     a
            srl     a
            jr      z, loop_5
            dec     a
loop_5:     inc     ix
            ld      (ix+0), a
            dec     bc
            ld      a, b
            or      c
            jr      nz, loop_4
            ld      a, 7Fh
            in      a, (0FEh)
            rra
            jr      c, begin
            ret

    Чертовски красиво, не правда
ли? Кроме  того, если  использо-
вать второй экран на  128K-маши-
не, можно сделать так:  на одном
экране  в знакоместе 2 цвета, на
другом еще два, а по  ходу  луча
переключать через каждые 4 стро-
ки.  Таким  образом,  разрешение
увеличится в 2 раза.

    Прим. ред.:  Вышеописанный эффект, как
нетрудно заметить, зависит от  содержимого
ячеек памяти #5B20-#5B3F, которое не опре-
делено при работе программы. Поэтому перед
запуском эффекта лучше установить значения
этих ячеек  (например, равными 0 или #FF),
чтобы эффект не зависел от  случайных  чи-
сел, которые могли там находиться.

    Кроме того, хочу  предложить
интересную, на  мой взгляд, тему
для обсуждения (фракталы и граф-
талы  -  что это  такое), а  для
примера предлагаю небольшой при-
мер от себя: "Дракон":140.

X_Y     EQU     #4040
        ORG     40000
        DI
        LD      BC,X_Y
        CALL    PRINT
        LD      D,0
        LD      E,1
BEGIN   LD      A,E
DEL_2   SRL     A
        JR      C,NECET
        JR      DEL_2
NECET   RLA
        LD      H,A
        SRL     H
        SRL     H
        SLA     H
        SLA     H
        SUB     H
        LD      H,A
        CP      1
        JR      NZ,NE_1
        LD      A,D
        AND     A
        JR      Z,D_03
        DEC     D
        JR      DALEE
NE_1    INC     D
        JR      DALEE
D_03    LD      D,3
DALEE   LD      A,D
        CP      4
        JR      NZ,DALE2
        LD      D,0
DALE2   LD      A,D
        AND     A
        JR      Z,_0_2
        LD      A,D
        CP      1
        JR      Z,_2_0
        LD      A,D
        CP      2
        JR      Z,_0__2
        LD      A,D
        CP      3
        JR      Z,__2_0
PP1     INC     E
        JR      NC,BEGIN
        EI
        RET
_0_2    INC     C
        CALL    PRINT
        JR      PP1
_2_0    INC     B
        CALL    PRINT
        JR      PP1
_0__2   DEC     C
        CALL    PRINT
        JR      PP1
__2_0   DEC     B
        CALL    PRINT
        JR      PP1
PRINT   PUSH    BC
        PUSH    DE
        CALL    8933
        POP     DE
        POP     BC
        RET
2
   Здесь задан короткий цикл для
простоты, кроме того, нет  ника-
ких особых ухищрений - все  дол-
жно быть предельно понятно.

          *   *   *

