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.