1
[DE] Andere Programmierthemen und -hilfe / Re: Programm um Texte anzuzeigen.
« on: January 08, 2017, 02:44:13 pm »
Danke für die Verbesserungsvorschläge und Hilfe.
Gerade bin ich ürgentwie zu doof um ne Routine zu machen.
Es handelt sich um die Loadnewtext routine.
Gerade bin ich ürgentwie zu doof um ne Routine zu machen.
Code: [Select]
;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 KeyLoop
Drawframe:
ld a,$0
call FastVerticalLine
ld a,$5F
call FastVerticalLine
ld a,$3F
call FastHorizLine
call _GRBUFCPY
ret
Rahmen:
call _GrBufClr
call _clrlcdfull
call Drawframe
call Invert
ld d,$00
ld b,$01
ret
LoadNewTextinca:
push de
inc a
LoadNewText:
; 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 D
LoadintoD:
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,1
vertloop1:
rrca
djnz vertloop1
ld c,a
ld b,64
ld e,12
vertloop2:
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,BC
FastHorizLine:
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
EDIT:Es handelt sich um die Loadnewtext routine.