E.6. Low-Level Routinen (FREMD.S)

 

;// dienstag, 27.februar 1990  18.37 uhr

;

; DATEI FREMD.S

; PROJEKT EDDI3

; HARDWARETREIBER FUER TC12-ANZEIGE/TASTATUR

; (c) ALPERMANN & VELTE GmbH

 

 RSEG FREMD

 

 ADRE

 GLOBAL

 

; ANZEIGE UND TASTATUR INITIALISIEREN ##################################

ATINIT ;

;    I/O-BAUSTEIN INITIALISIEREN

 LDA #01000000B

 STA        IO3A

 STZ IO3P

 LDA #01111111B

 STA IO3E

 STA IO3I

 STZ IO3T1CL

        LDA #80H  T2 ANZEIGETAKT

 STA        IO3T2CH

 

 STZ IO3PA

 LDA #11100000B

 STA IO3DA

 LDA #01100000B

 STA IO3PB

 LDA #7FH

 STA IO3DB

 

        LDX #16  16-STELLIGE ANZEIGE

 LDA #$10  LEUCHTDIODE AUS; ANZEIGE='0'

ATI1 ;

 STA ANRE-1,X

 DEX

 BNE ATI1

 LDA #$FF

        STA ANRE+16  STATUS-DIODEN AUS

 JSR ANZR  ANZEIGE AUFFRISCHEN

 LDA #$FF

 STA ANZLED1  LED'S LOESCHEN

 RTS   ENDE ATINIT

 

; ANZEIGE-STEUERUNG ####################################################

; INHALT VON ANRE IN ANZEIGE SCHREIBEN

ANZR ;

 

ANZRT1 LDA #20H  CS

 TSB        IO3PB

 LDY #40H

 STY IO3PA

 LDY #30H

 STY IO3PB

 TRB IO3PB

 TSB IO3PB

 STA IO3PB

 STZ IO3PA

 LDX #0

ANZR2 LDY ANRE,X  WERTE

 STY        IO3PB

 TSB IO3PB

 INX

 CPX #8

 BNE ANZR2

 

ANZRT2 STA IO3PA  MODE,KLEINE ANZEIGE

 LDY #30H

 STY IO3PB

 TRB IO3PB

 TSB IO3PB

 STA IO3PB

 STZ IO3PA

 LDX #8

ANZR3 LDY ANRE,X

 STY IO3PB

 TSB IO3PB

 INX

 CPX #16

 BNE ANZR3

 LDA ANRE+16  STATUS

 STA IO3PB

 LDA #80H

 TSB IO3PA

        TRB IO3PA

 RTS

 

; TASTATUR ABFRAGEN ####################################################

; ERGEBNIS IM AKKU

; Z-FLAG GESETZT = TASTE WAR GEDRUECKT

TAAU ;

 JSR TASI

 BEQ TA10  TASTE ?

 STZ TSTA+1  VERGLEICHSWERT=0

 RTS

 

TA10 STA TSTA  TASTENWERT SICHERN

 JSR        ENTP

 CMP #0FFH  TASTE O.K. ?

 BNE TA20

 RTS

 

TA20 ;

 LDA TSTA

        CMP TSTA+1  TASTE GEHALTEN ?

 BNE        TA21

 RTS

 

TA21 STA TSTA+1

 

TASI LDX #01

 STX IO3PB  ZEILE

 LDA IO3PA

        AND        #1FH

 CMP #1FH

        BNE        TASI1                SPALTE ?

 LDX #02

 STX IO3PB

 LDA IO3PA

 AND #1FH

 ORA #20H  ZEILEN-INDEX

 CMP #3FH

 BNE TASI1

 LDX #04

 STX IO3PB

 LDA IO3PA

        AND        #1FH

 ORA #40H

        CMP        #5FH

 BNE TASI1

 LDX #08

 STX IO3PB

 LDA IO3PA

        AND        #1FH

 ORA #60H

        CMP        #7FH

 BNE TASI1

 LDX #10H

 STX IO3PB

 LDA IO3PA

 AND #1FH

 ORA #80H

 CMP #9FH

 BNE TASI1

 LDX #20H

 STX IO3PB

 LDA IO3PA

        AND        #1FH

 ORA #0A0H

        CMP        #0BFH

 BNE TASI1

        LDY #0FFH  KEINE TASTE

 RTS

 

TASI1 LDY #00

 STY IO3PB

 RTS

 

;ENTPRELLEN

ENTP ;

 LDA #0FFH

 STA TSTA+2

ENTP1 JSR TASI

 CMP TSTA  GLEICHE TASTE ?

 BEQ ENTP2

 LDA #0FFH

 STA TSTA+1

 RTS

 

ENTP2 DEC TSTA+2

        BNE ENTP1

 LDA #00

 RTS

 

 RSEG FREMDZ

 RSEG FREMDD

ANRE DS 17  ANZEIGENSPEICHER

TSTA DS 3  TASIATUR-FLAGS

 

 END