0 Members and 1 Guest are viewing this topic.
KeyLoop: ld a, $FF ;Reset the keypad. out (1), a ld a, $FE ;Select group. out (1), a in a, (1) ;Test for keys. cp $FD jr z, Butleft cp $FB jr z, Butright ld a, $FF ;Reset the keypad. out (1), a ld a, $FD ;Select group. out (1), a in a, (1) ;Test for keys. cp $BF jr z, Getthehelloutofhere jr KeyLoopButright: ld a,b cp 3 ; Don't increment B if it's at its maximum value. jr z, KeyLoop ;Gerade 3 Weil wir nicht mehr als 2 tabs haben inc B cp 2 jp z,Txt2 jp KeyLoopButleft: ld a,b cp 0 ; Don't decrement B if it's at its minimum value. jr z, KeyLoop dec b cp 1 jp z,About jp KeyLoopGetthehelloutofhere: call _GrBufClr call _bufclear call _homeup call _clrscrnfull call _eraseeol ret;Txt2;Draws first "Tab"Txt2: push bc ld hl,Texteins1 call Drawsmalltext call Deinvert ld hl,Texteins2 call Drawsmalltext ld hl,Texteins3 call Drawsmalltext ld hl,Texteins4 call Drawsmalltext ld hl,Texteins5 call Drawsmalltext ld hl,Texteins6 call Drawsmalltext ld hl,Texteins7 call Drawsmalltext ld hl,Texteins8 call Drawsmalltext ld hl,Texteins9 call Drawsmalltext ld hl,Texteins10 call Drawsmalltext pop bc jp KeyLoop;About;Draws the Text for the AboutscreenAbout: push BC call Rahmen ld a,$0C call FastHorizLine ld a,$0D call FastHorizLine call _GRBUFCPY pop BC call Invert push bc ld d,0 ld b,0 ld hl,Abouttxt1 call Drawsmalltext ld b,$06 ld hl,Abouttxt2 call Drawsmalltext call Deinvert ld b,$02 ld a,$02 call LoadintoD ld hl,Abouttxt3 call Drawsmalltext ld hl,Abouttxt4 call Drawsmalltext ld hl,Abouttxt5 call Drawsmalltext ld hl,Abouttxt6 call Drawsmalltext ld a,$12 call LoadintoD ld hl,Abouttxt7 call Drawsmalltext pop bc jp KeyLoop;Drawsmalltext;Input: Pointer to text in HL;Input: PenRow in D;Input: PenCol in B;Output: $06 added to D, Displays HL;Destroys: ?Drawsmalltext: ld a,d ld (PENROW),a ld a,b ld (PENCOL),a push de call _vputs pop de ld a,$06 call LoadintoD ret;LoadintoD;Input: A;Output: Adds A to DLoadintoD: add a,d ld d,a retInvert: set textInverse, (iy+textflags) retDeinvert: res textInverse, (iy+textflags) retTexteins1: .db " Text",0Texteins2: .db "Text2",0Texteins3: .db "Text3",0Texteins4: .db "Text4",0Texteins5: .db "Text5",0Texteins6: .db "Text6",0Texteins7: .db "Text7",0Texteins8: .db "Text8",0Texteins9: .db "Text9",0Texteins10: .db "Text10",0 .end
Texte: .dw Texteins1,Texteins2,Texteins3,Texteins4, [...]Texteins1: .db " Text",0Texteins2: .db "Text2",0Texteins3: .db "Text3",0Texteins4: .db "Text4",0Texteins5: .db "Text5",0Texteins6: .db "Text6",0Texteins7: .db "Text7",0Texteins8: .db "Text8",0Texteins9: .db "Text9",0Texteins10: .db "Text10",0
; erstmal tun wir den index von a in hl und multiplizieren ihn dann mit zwei, da ein pointer zwei byte groß istld h,0ld l,aadd hl,hl; jetzt addieren wir den texte offset hinzuld de,Texteadd hl,de; nun ist in hl ein pointer zum pointer vom text, also tun wir ihn in de und dann in hl per 'ex de,hl'ld e,(hl)inc hlld d,(hl)ex de,hl; jetzt ist der pointer zum text in hl
call _eraseeol ret
jp _eraseeol
cp 0 ; Don't decrement B if it's at its minimum value.
;Txt2;Draws second "Tab"Txt2: push bc call Invert call Rahmen ld hl,Titel1 call Drawsmalltext call Deinvert ld a,$00 ld e,$0A push de call LoadNewText pop bc jp KeyLoopDrawframe: ld a,$0 call FastVerticalLine ld a,$5F call FastVerticalLine ld a,$3F call FastHorizLine call _GRBUFCPY retRahmen: call _GrBufClr call _clrlcdfull call Drawframe call Invert ld d,$00 ld b,$01 retLoadNewTextinca: push de inc aLoadNewText:; erstmal tun wir den index von a in hl und multiplizieren ihn dann mit zwei, da ein pointer zwei byte groß ist ld h,0 ld l,a push af add hl,hl; jetzt addieren wir den texte offset hinzu ld de,Texte add hl,de; nun ist in hl ein pointer zum pointer vom text, also tun wir ihn in de und dann in hl per 'ex de,hl' ld e,(hl) inc hl ld d,(hl) ex de,hl pop de call Drawsmalltext pop af pop de cp a,e jr nz,LoadNewTextinca ret;Drawsmalltext;Input: Pointer to text in HL;Input: PenRow in D;Input: PenCol in B;Output: $06 added to D, Displays HL;Destroys: ?Drawsmalltext: ld a,d ld (PENROW),a ld a,b ld (PENCOL),a push de call _vputs pop de ld a,$06 call LoadintoD ret;LoadintoD;Input: A;Output: Adds A to DLoadintoD: add a,d ld d,a ret;FastVerticalLine;Input: A;Output: Vertical line at A;Destroys: af,bc,de,hl FastVerticalLine: push bc push de ld hl,plotsscreen ld d,0 ld e,a srl e srl e srl e add hl,de and $07 ld b,a inc b ld a,1vertloop1: rrca djnz vertloop1 ld c,a ld b,64 ld e,12vertloop2: ld a,c or (hl) ld (hl),a add hl,de djnz vertloop2 pop bc pop de ret;FastHorizLine;Input: A;Output: Horizontal line at A;Destroys: HL,BCFastHorizLine: push bc ld l,a ld h,0 add a,a add a,l ld l,a add hl,hl add hl,hl ld bc,plotsscreen add hl,bc ld b,12 horizloop: ld (hl),%11111111 inc hl djnz horizloop pop bc ret
LoadNewTextinca: push de inc aLoadNewText:; erstmal tun wir den index von a in hl und multiplizieren ihn dann mit zwei, da ein pointer zwei byte groß ist ld h,0 ld l,a push af add hl,hl; jetzt addieren wir den texte offset hinzu ld de,Texte add hl,de; nun ist in hl ein pointer zum pointer vom text, also tun wir ihn in de und dann in hl per 'ex de,hl' ld e,(hl) inc hl ld d,(hl) ex de,hl pop de call Drawsmalltext pop af pop de cp a,e jr nz,LoadNewTextinca ret
LoadNewText: push de push af push de; erstmal tun wir den index von a in hl und multiplizieren ihn dann mit zwei, da ein pointer zwei byte groß ist ld h,0 ld l,a add hl,hl; jetzt addieren wir den texte offset hinzu ld de,Texte add hl,de; nun ist in hl ein pointer zum pointer vom text, also tun wir ihn in de und dann in hl per 'ex de,hl' ld e,(hl) inc hl ld d,(hl) ex de,hl pop de call Drawsmalltext pop af pop de cp a,e ret zLoadNewTextinca: inc a jr LoadNewText