;// 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