; ------------------------------------------------------------
; Giga scroll (Stevan Majstorovic)
; Svet Kompjutera, April 1989, Spectrum intro servis
; ------------------------------------------------------------

        ORG     32768

cset:   EQU     56              ; Postavlja boju za upaljenu tacku.
cres:   EQU     63              ; Postavlja boju za ugasenu tacku.

start:  LD      A,128
        LD      HL,byte+1
        LD      (HL),A
        LD      A,cres
        LD      HL,22528
        LD      (HL),A          ; Resetuje atribute pre starta.
        LD      DE,22529
        LD      BC,767
        LDIR
        SRL     A
        SRL     A
        SRL     A
        AND     7
        OUT     (254),A         ; Postavlja boju bordera.
        LD      HL,16384        ; Postavlja karaktere na ekran.
loop1:  LD      DE,defin
        PUSH    HL
        LD      B,8
loop2:  LD      A,(DE)
        LD      (HL),A
        INC     DE
        INC     H
        DJNZ    loop2
        POP     HL
        INC     L
        JR      NZ,loop1
        LD      IX,text         ; Pocetak teksta za skrol.
loop3:  LD      A,(IX+0)
        AND     A
        RET     Z
        INC     IX
        LD      BC,(23606)      ; Adresa karakter seta.
        LD      H,0
        LD      L,A
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,BC
        LD      (chr),HL
        LD      B,8
loop4:  PUSH    BC
        HALT                    ; Ceka elektronski mlaz.
        LD      HL,22529        ; Pocinje skrol.
        LD      DE,22528
        LD      A,8
loop5:  LD      BC,31
        LDIR
        INC     HL
        INC     DE
        DEC     A
        JR      NZ,loop5
        LD      HL,22559        ; Postavlja nove vrednosti za
        LD      DE,(chr)        ; krajnju desnu kolonu ekrana.
        LD      B,8
loop6:  LD      A,(DE)
byte:   AND     128
        JR      NZ,setc
        LD      A,cres
        JR      fill
setc:   LD      A,cset
fill:   LD      (HL),A
        LD      A,32
        ADD     A,L
        LD      L,A
        INC     DE
        DJNZ    loop6
        LD      HL,byte+1
        RRC     (HL)
        POP     BC
        DJNZ    loop4
        JR      loop3

chr:    DEFW    0
defin:  DEFB    60,126,255      ; Definicija tacke.
        DEFB    255,255
        DEFB    255,126,60
text:   DEFM    "Giga Scroll "  ; Tekst za skrol.
        DEFB    0               ; Marker za kraj.

        END     start
