E.4. Tastatur- und Anzeigesteuerung (TAST.S)

 

;// dienstag, 20.februar 1990  16.23 uhr

;

; DATEI TAST.S

; PROJEKT EDDI3

 

 ADRE

 GLOBAL

 

 RSEG TAST

 

; ANZEIGE AUFFRISCHEN ##################################################

ANZNEU ;

 LDX #0

 LDA IBUFB  EINGABEBUFFER

 JSR ANZNU    -> 'FRAMES'

 LDX #2

 LDA CRW1  EINBLENDZEILE

 CLC

 ADC #-UPOFF/2

 JSR ANZNU    -> 'SECONDS'

 LDX #4

 LDA CCAS  BILDVERSATZ

 CLC

 ADC #-OFFSET

 JSR ANZNU    -> 'MINUTES'

 LDX #6

 LDA CRAS  BILDNUMMER

 JSR ANZNU    -> 'HOURS'

 LDA #$FF

 LDA ANZLED1  STATUS-LED'S LADEN

 STA ANRE+16    -> LED'S

 JSR ANZR  ANZEIGEREGISTER DARSTELLEN

 RTS

 

ANZNU ;

 JSR BIN2BCD  ZAHL IN BCD KONVERTIEREN

 TAY     UND ZWISCHENSPEICHERN

 AND #$0F  LOW-BYTE MASKIEREN

 ORA #$10  ZUGEHOERIGE LED LOESCHEN

 STA ANRE,X  SPEICHERN INS ANZEIGEREGISTER

 TYA   ALTEN WERT WIEDERHOLEN

 VIERLSR   HIGH-BYTE MASKIEREN

 ORA #$10  ZUGEHOERIGE LED LOESCHEN

 STA ANRE+1,X SPEICHERN INS ANZEIGEREGISTER

 RTS

 

; LOW-LEVEL-TASTATURFUNKTIONEN AUSFUEHREN ##############################

TASLOW ;

        JSR CONIN  TASTATURWERT EINLESEN

 STA TASBUF

 CMP #-1  TASTE GEDRUECKT ?

 BEQ_L TASLE    NEIN: FERTIG

 CMP #10  TASTE 0..9 ?

 BCS TASL1    NEIN

 TAX   TASTE MERKEN

 LDA        IBUFT                LOW-BYTE

        STA IBUFT+1    SPEICHERN IN HIGH-BYTE

 STX        IBUFT                NEUES LOW-BYTE

;    UMWANDELN IN BINAERZAHL

 LDA IBUFT+1  HIGH-BYTE

 ASL A    * 2

 STA IBUFB  ZWISCHENERGEBNIS

 ZWEIASL     * 8

 ADC IBUFB    * 10

 ADC IBUFT  ENDERGEBNIS

 STA IBUFB    ABSPEICHERN

 BRA        TASLA

TASL1 ;

        CMP        #24                CRAS + ?

 BNE TASL2

 JSR ICRAS  CRAS ERHOEHEN

 BRA TASLA

TASL2 ;

 CMP #23  CRAS SET ?

 BNE TASL3

 LDA IBUFB

 JSR CCRAS

        STA        CRAS                CRAS SETZEN

        BRA        TASLA

TASL3 ;

        CMP        #22                CRAS - ?

 BNE TASL4

 JSR DCRAS  CRAS ERNIEDRIGEN

 BRA TASLA

TASL4 ;

 CMP #27  CCAS + ?

 BNE TASL5

 JSR ICCAS  CCAS ERHOEHEN

        BRA        TASLA

TASL5 ;

        CMP        #26                CCAS SET ?

        BNE        TASL6

 LDA IBUFB

 CLC

 ADC #OFFSET

 JSR CCCAS

 STA CCAS  CCAS SETZEN

 BRA TASLA

TASL6 ;

        CMP        #25                CCAS - ?

 BNE TASL7

        JSR DCCAS  CCAS ERNIEDRIGEN

 BRA        TASLA

TASL7 ;

        CMP        #30                CRW1 + ?

 BNE TASL8

        JSR ICRW1  CRW1 ERHOEHEN

 BRA        TASLA

TASL8 ;

        CMP        #29                CRW1 SET ?

        BNE        TASL9

 LDA IBUFB

 CLC

        ADC        #UPOFF/2

 JSR CCROW

        STA        CRW1                CRW1 SETZEN

 BRA TASLA

TASL9 ;

        CMP        #28                CCW1 - ?

 BNE TASL10

        JSR DCRW1  CRW1 ERNIEDRIGEN

 BRA        TASLA

TASL10 ;

        BRA        TASLE                KEINE LOW-LEVEL FUNKTION

TASLA ;

        JSR ANZNEU  ANZEIGE AUFFRISCHEN

 JSR WTLAUF  WARTEN

TASLE ;

 LDA        TASBUF                TASTATURCODE RESTAURIEREN

        RTS   ENDE TASLOW

 

; ZEICHEN VON TASTATUR EINLESEN ########################################

CONIN ;

 PHX

 PHY

 JSR TASIA

 BEQ CI1  TASTE GEDRUECKT!

        LDA #-1    RUCKGABEWERT FUER 'KEINE TASTE GEDRUECKT'

 BRA        CIE

CI1 ;

        LDX #0

CI2 ;

 LDY CITAB,X  TABELLENENDE ERREICHT ?

 BEQ CI5    JA

 CMP CITAB,X  TASTENWERT MIT TABELLE

 BNE CI3    UNGLEICH

 LDA CITAB+1,X NEUEN TASTENCODE LADEN

 BRA        CIE                FERTIG

CI3 ;

 INX

 INX

 BRA CI2

CI5 ;

 LDA #-1  TASTE NICHT IN TABELLE GEFUNDEN

CIE ;

 PLY

 PLX

 RTS   ENDE CONIN

 

; TASTENDRUCK ERMITTELN

TASIA ;

 JSR TAAU  TASTATUR ABSCANNEN

 BEQ TIA5    TASTE GEHALTEN!

 LDA        #REPVAL

 STA REPCNT  REPEAT-ZAEHLER LADEN

        LDA #0  TASTENWERT='KEINE TASTE'

TIA5 ;

 CMP TICMP  GLEICHE TASTE GEDRUECKT ?

 BEQ TIA7    JA!

 STA TICMP  NEUEN VERGLEICHSWERT SPEICHERN

 CMP #0  TASTE GEDRUECKT ?

 BEQ TIA8    NEIN

 LDY #0  Z-FLAG SETZEN: TASTENDRUCK!

 BRA        TIAE                FERTIG

TIA7 ;

        TAX   TASTENCODE MERKEN

 LDA REPCNT

 BNE TIA75  REPEAT-ZAEHLER NOCH NICHT ABGELAUFEN

 TXA   TASTENCODE WIEDERHOLEN

 LDY #0  Z-FLAG SETZEN: TASTENDRUCK!

 BRA        TIAE                FERTIG

TIA75 ;

        DEC REPCNT  REPEAT-ZAEHLER WEITERZAEHLEN

 LDY #-1  Z-FLAG LOESCHEN: KEIN TASTENDRUCK

 BRA        TIAE                FERTIG

TIA8 ;

        LDY #-1  Z-FLAG LOESCHEN: KEIN TASTENDRUCK

TIAE ;

 RTS   ENDE TASIA

 

CITAB ;

 DB $7B,0  0

 DB $5B,1  1

 DB $3B,2  2

 DB $1B,3  3

 DB $5D,4  4

 DB $3D,5  5

 DB        $1D,6                6

 DB $5E,7  7

 DB $3E,8  8

 DB $1E,9  9

 DB $7E,20  +

 DB $7D,21  -

 DB $AF,22  F1

 DB $8F,23  F2

 DB $6F,24  F3

 DB $4F,25  F4

        DB        $2F,26                CONT.JAM

        DB $0F,27  JAM

 DB $B7,28  VIDEO

 DB        $97,29                SET

 DB $77,30  USER

 DB $57,31  TIME

 DB $37,32  30

        DB        $17,33                24

 DB $9E,34  25

        DB        $9D,35                PLAY

 DB $9B,36  REC

 DB 0  TABELLENENDE CITAB

 

 RSEG TASTZ

 RSEG TASTD

TICMP DS 1  VERGLEICHSWERT FUER TASIA

REPCNT DS 1  REPEAT-ZAEHLER FUER TASIA

IBUFT DS 2  EINGABEBUFFER ALS TASTENWERT

IBUFB DS 1    DTO. ALS BINAERWERT

TASBUF DS 1  BUFFER FUER TASLOW

ANZLED1 DS 1  ANZEIGE-LED'S

 

 END