
; Version 1.0
; 06.12.88

	public tasini,tab,tasabf
	public tasmer

	extrn zeisat

; Z80 macro library instruction definitions

	maclib	z80

; Port Adress Equates

	maclib	ports

;______________________________________________________________
; Sprungverteiler Tastaturaufruf
;______________________________________________________________

tasini:	jr tasin		; Initialisierung der Tastatur
tasabf:	jr tascod		; Abfrage ob Zeichen da

;______________________________________________________________
; Initialisierung der Tastatur
;______________________________________________________________

tasin:
	mvi a,2 ! sta wdhz
tasin1:
	in tastst ! bit 3,a
 	rnz	
	in taste ! jr tasin1

;______________________________________________________________
; Abfragen Tastatur auf Betaetigung
;______________________________________________________________

tascod:	lxi h,wdhz ! in tastst ! bit 3,a
	jrz tastda		; --> neues Zeichen von Tast.
	dcr m ! rnz		; --> Wiederholungszaehler noch
				; nicht abgelaufen
	mvi m,2			; 100 ms Wiederholfunktion
	bit 0,a
	jrz tasrep		; --> Taste noch betaetigt
	ret			; --> keine Taste mehr

;______________________________________________________________
; Einstellen Zeitkonstante fuer erste Tastenwiederholung
;______________________________________________________________

tastda:
	mvi m,10			; 500 ms fuer erste Wdh.
tasrep:
	in taste ! push psw	
	ani 0feh
	sui 0f0h
	jrz zeisum
	cpi 2
	jrz zeisum
	mvi b,tastpe-tastp	; Berechnen Pufferposition
	lxi h,tastp
	mvi	c,bstast
tapube:
zx1a:	db	0edh,070h	; INF-Befehl
	jp	zx1a
zx2a:	db	0edh,070h	; INF-Befehl
	jm	zx2a

	mov a,m ! ora a
	jrz tapupo		; --> freie Position gefunden
	inx h ! djnz tapube	; naechste Position pruefen

;______________________________________________________________
; Tastencode auswerten
;______________________________________________________________

tapupo:	pop psw
	mvi	c,bstast
zx1b:	db	0edh,070h	; INF-Befehl
	jp	zx1b
zx2b:	db	0edh,070h	; INF-Befehl
	jm	zx2b

	mov m,a ! sta tasmer
	ret

zeisum:	sta zeisat		; Zeichensatzumschaltung
	pop psw
	ret
