;
;	fehlerhaftes Programm folgt
;
	ORG	$0400	;Beginn des Programmbereichs

	JSR	CLRDSP	;Anzeige loeschen
	LDY	#3E8	;Y mit 1 Sek. Pause laden
	CLR	STUNDE	;Stundenzaehler auf Null setzen
	CLR	MINUTE	;Minutenzaehler auf Null setzen

ANZEIGE	LDB	STUNDEN	;Stundenzaehler laden...
	LDX	POSSTD	;...und an Stundenposition...
	JSR	SHOWB7SG;...ausgeben
	LDB	MINUTEN	;Minutenzaehler laden...
	LDX	#POSMIN	;...und an Minutenposition...
	JSR	SHOWB7SG;...ausgeben

INCMIN	TFR	B,A	;Minuten nach A kopieren,
	INC		;inkrementieren,
	DAA		;und BCD-Korrektur.
	CMP	A,#$60	;60 Minuten erreicht?
	BEQ	ERH™HE	;ja, Stunde erhoehen
	STA	MINUTEN	;nein, also Minuten speichern...
	BRA	TASTEN	;...und zur Tastaturabfrage

ERH™HE	CLR	MINUTEN ;Minutenzaehler auf Null
	LDA	STUNDEN	;Stundenzaehler laden,
	INCA		;inkrementieren,
	DAA		;und BCD-Justage
	STA	STUNDEN	;Stunden speichern
	CMPA	#24	;24 Stunden erreicht?
	BNZ	TASTE	;nein, also zur Tastaturabfrage
	CLR	STUNDEN	;ja, also auf Null setzen

TASTE	JSR	KEY	;ist eine Taste gedrueckt?
	CMPB	#$80	;ist die "+"-Taste gedrueckt?
	BEQ	ANZEIGE	;ja, sofort weiter mit dem Hochzaehlen
;
;	Nun Tasten <> "+" abarbeiten, also 1 Sekunde Pause
;
JSR	DLY1MS	;bei anderen oder keiner Taste eine Sekunde warten
BRA	ANZEIGE	;und dann zurueck
;
;	Daten
;
STUNDEN	RMB	SIZE	;Speicher fuer Stundenzaehler
MINUTEN	RMB	SIZE	;Speicher fuer Minutenzaehler
;
;	ein paar Konstanten
;
POSSTD	EQU	4	;Anzeigestelle fuer Stundenzaehler
POSMIN	EQU	2	;Anzeigestelle fuer Minutenzaehler
SIZE	EQU	1	;zu reservierende Bytes

U_END	ORG	*	;Ende des Programmbereichs


CLRDISP  EQU    $?
SHOWB7SG EQU    $?
KEY      EQU    $?
DLY1MS	 EQU	$?
