TITLE HIGHREZ  ; Ge programmet titeln HIGHREZ (ASS kommando)
         OBJ  2         ; Ge KODEN i komprimerat format  "      "
         ORG  56000     ; Startadress
OUTSTR:  EQU  000BH     ; Adress BIOS f|r STINGOUT
START:   JP   GO        ; LET'S GO
; LABELS samt DATA
TEXT1:   DEFM "I THINK I BELIVE IN JESUS!!",0
TEXT2:   DEFM "PRESS  TO QUIT",0
CLS:     DEFB 12
SGRAF:   DEFM "     "   ; -
         DEFM "!!!!!"   ;  !
         DEFM "!!!!!"   ;  !
         DEFM "+++++"   ;  !
         DEFM "jjjjj"   ;   > H\GUPPL\SNINGS BILD, fem kors irad
         DEFM "jjjjj"   ;  !
         DEFM "jjjjj"   ;  !
         DEFM "jjjjj"   ;  !
         DEFM "     "   ;  !
         DEFM "     "   ; -
GO:      LD   HL,CLS    ; Pekar p} adressen som ska skrivas ut
         LD   BC,1      ; Antal teken som ska skrivas ut
         CALL OUTSTR    ; K|r BIOS i BASICen f|r att skriva ut en str{ng
         LD   HL,TEXT1  ; Pekar p} TEXT1
         LD   DE,32512+9; Plats p} sk{rmen dvs RAD: 6 KOL: 9
         CALL TINV      ; Skriver ut TEXT1 med invers dvs blink
         LD   HL,TEXT2  ; Pekar p} TEXT2
         LD   DE,32552+11 ; Plats p} sk{rmen dvs RAD:14 KOL:11
         CALL TINV      ; Skriver ut TEXT2 med invers dvs blink
                        ;
SVB:     DI             ; Sl}r av Interuthanteringen
         HALT           ; V{nta p} VertikalBlank
         LD   B,218     ; -
WAITVB:  NOP            ;  !
         NOP            ;  !  Timeing av raster start.
         NOP            ;  !  Fr}n nedre h|grah|rnet
         NOP            ;   > till det |vrev{nstrah|ret.
         NOP            ;  !  Dvs tiden det tar f|r rastret
         NOP            ;  !  att avsluta och b|rja med en
         NOP            ;  !  ny frame.
         DJNZ WAITVB    ; -
         LD   DE,31744  ; Bildminnes Adress f|r RAD:0
         CALL LOUT      ; Kallar p} h|guppl|snings rutinen
         LD   DE,31872  ; o.s.v RAD:1
         CALL LOUT      ; o.s.v
         LD   DE,32000
         CALL LOUT
         LD   DE,32128
         CALL LOUT
         LD   DE,32256
         CALL LOUT
         LD   DE,32384
         CALL LOUT
         LD   DE,32512
         CALL LOUT
         LD   DE,32640
         CALL LOUT
         LD   DE,31784
         CALL LOUT
         LD   DE,31912
         CALL LOUT
         LD   DE,32040
         CALL LOUT
         LD   DE,32168
         CALL LOUT
         LD   DE,32296
         CALL LOUT
         LD   DE,32424
         CALL LOUT
         LD   DE,32552
         CALL LOUT
         LD   DE,32680
         CALL LOUT
         LD   DE,31824
         CALL LOUT
         LD   DE,31952  ; RAD:17
         CALL LOUT
         EI             ; Sl}r p} interupthanteringen
         IN   A,(56)    ; L{ser fr}n PORT:56 dvs tangentbortet
         CP   160       ; G{mf|r med 160 dvs 
         RET  Z         ; Om skilnaden {r = 0. ]ter till BASICen.
         JP   SVB       ; Tja, vi k|r v{ll en g}ng till va'
; SUBRUTINER
LOUT:    LD   HL,SGRAF  ; Pekar p} H|guppl|sning minnet.
         PUSH DE        ; Lagrar undan sk{rmpostionen i STACKEN.
         LD   B,10      ; Laddar B med. D{rf|r det g}r 10 raster rader per tkn.
LOUTL1:  POP  DE        ; Lyfter upp sk{rmpostionen ur STACKEN.
         PUSH DE        ; Lagrar undad sk{rmpostionen i STACKEN.
         PUSH BC        ; Lagrar BC i STACKEN dvs raster r{nknan.
         LD   BC,5      ; Laddar BC med 5. Dvs ett block om 5tkn ska flyttas.
         LDIR           ; Z80ns lilla "blitter"-funktion flyttar blockett.
         NOP            ; -
         NOP            ;  !
         NOP            ;   > [nnu mera timeing.
         NOP            ;  !
         NOP            ; -
         POP  BC        ; Lyfter BC ur STACKEN dvs raster r{knan.
         DJNZ LOUTL1    ; Minskar B om inte Noll hoppa till LOUTL1
         POP  DE        ; St{dar upp efter sig i stacken
         RET            ; ]ter
TINV:    LD   A,(HL)    ; Laddar A med v{rdet p} adressen HL
         CP   0         ; G{mf|r med Noll
         RET  Z         ; ]ter om skilanden blev Noll
         ADD  128       ; Addera A med 128 dvs s{tt den 7 BITEN dvs BLINKA
         LD   (DE),A    ; Ladda adressen DE med A
         INC  DE        ; \ka DE
         INC  HL        ; \ka HL
         JR   TINV      ; N{st TKN.
         END  START     ; ASS Kommando f|r Auto-start av programmet.