
INTV_T1      	EQU  	$002C    ; Timer #1
INTV_T3      	EQU 	$002E    ; Timer #3
INTV_CB1    	EQU 	$0038    ; CB1
INTV_CB2    	EQU 	$003C    ; CB2
INTV_CA1    	EQU 	$0036    ; CA1, Taste F4
INTV_V24     	EQU 	$0040    ; V.24-Schnittstelle
KEYB            EQU  	$F010    ; Startadresse Tasten ($F010-$F016)
DISPL         	EQU 	$F020    ; Startadresse Anzeige ($F020-$F02F)
DRA          	EQU 	$F000    ; Datenregister Port PA
DDRA         	EQU 	$F000    ; Datenrichtungsregister Port PA
CRA          	EQU 	$F001    ; Steuerregister Port PA
DRB          	EQU 	$F002    ; Datenregister Port PB
DDRB         	EQU 	$F002    ; Datenrichtungsregister PB
CRB          	EQU 	$F003    ; Steuerregister Port PB
V24DATA       	EQU 	$F008    ; Sende-/Empfangsregister
V24SR         	EQU 	$F009    ; Statusregister
V24IR         	EQU 	$F00A    ; Instruktionsregister
V24CR         	EQU 	$F00B    ; Steuerregister
SR_T1         	EQU 	$F018    ; Steuerregister Timer #1, SR_T20=1
SR_T3         	EQU 	$F018    ; Steuerregister Timer #3, SR_T20=0
SR_T2         	EQU 	$F019    ; Steuerregister Timer #2
STREG         	EQU 	$F019    ; Statusregister Timer #1 - #3
LATCH_T1     	EQU 	$F01A    ; Latch Timer #1
LATCH_T2     	EQU 	$F01C    ; Latch Timer #2
LATCH_T3     	EQU 	$F01E    ; Latch Timer #3


T7SG         	EQU 	$F100    ; Tetrade in 7-Seg.-Code
B7SG         	EQU 	$F103    ; Byte in 7-Seg.-Code
D7SG         	EQU 	$F106    ; Wort in 7-Seg.-Code
CLRDISP       	EQU 	$F110    ; Anzeige löschen
SHOWA         	EQU 	$F113    ; Byte anzeigen
SHOWD         	EQU 	$F116    ; Wort anzeigen
SHOWYD       	EQU 	$F119    ; Doppelwort anzeigen
SHOWT7SG  	EQU 	$F120    ; Tetrade im 7-Seg.-Code anzeigen
SHOWD7SG  	EQU 	$F123    ; Wort im 7-Seg.-Code anzeigen
CLRDBUF      	EQU 	$F130    ; Puffer löschen
SHOWDBUF  	EQU 	$F133    ; Puffer anzeigen
RRDBUF        	EQU 	$F136    ; Puffer rechts rotieren
RLDBUF       	EQU 	$F139    ; Puffer links rotieren
COPYDBUF   	EQU 	$F13C    ; Puffer kopieren
KEY          	EQU 	$F140    ; Tastaturabfrage ohne Halt
HALTKEY       	EQU 	$F143    ; Tastaturabfrage mit Halt
SHOWKEY     	EQU 	$F146    ; Tastaturabfrage mit Anzeige ohne
SHOWHKEY  	EQU 	$F149	; Tastaturabfrage mit Anzeige und Halt
INDATA        	EQU 	$F14C    ; Byte  über Tastatur einlesen
SHOWDATA   	EQU 	$F150    ; Byte einlesen und anzeigen
INADR         	EQU 	$F153    ; Adresse einlesen
SHOWADR    	EQU 	$F156    ; Adresse einlesen und anzeigen
DLY1MS        	EQU 	$F160    ; Verzögerung (Auflösung: 1ms)
RANDOM        	EQU 	$F163    ; Zufallszahl ziehen
COPYXD        	EQU 	$F166    ; Verschieben von Speicherbereichen



        		ORG  	$0400
INIT:    	JSR  	CLRDISP  ; Löschen der Anzeige
        	CLR	<$0	 ; Zähler rücksetzen
  	        LDD  	#T3_TAKT  ; Interrupt-Vektor f r Timer #3
	        STD  	<INTV_T3  ;  setzen
	

 	        CLR  	SR_T2    ; Steuerregister Timer #3 selektieren
   	        LDD	#$FFFF   ; ungefähr 1/2 Sekunde Zählzykluslänge
  	        STD  	LATCH_T3 ;   programmieren
        	LDA  	#$01    ; Steuerregister Timer #1
 	        STA  	SR_T2    ;   selektieren
 	        CLR  	SR_T1    ; Timer #3 starten
 	        CLR  	SR_T2    ; Steuerregister Timer #3 selektieren

LOOP        	LDX  	#$2
   	        LDD	<$0
     	        JSR	SHOWD7SG

     	        JSR	KEY	; Tastatur abfragen
   		CMPB	#$81	;  = '-'
   		BNE	NEIN	; nicht '-'
    		LDD	<$0
     		ADDD	#1
   		STD	<$0
  		LDA	#$A3 	; Single shot mit ISL
     		STA	SR_T3	
      		LDD	#$FFFF
      		STD	LATCH_T3
     		LDY	#$0400
     		JSR	DLY1MS
   		BRA	LOOP

NEIN		CMPB	#$80
   		BNE	LOOP
   		LDA 	#$C3
     		STA	SR_T3
   		BRA  	LOOP

T3_TAKT	PSHS	D
     		LDD	<$0
       		ADDD	#1
      		STD	<$0
       		LDA	STREG
       		LDA	LATCH_T3
    		PULS 	D
    		RTI

 		END

