92 lines
1.1 KiB
ArmAsm
92 lines
1.1 KiB
ArmAsm
;
|
|
GETA
|
|
;
|
|
; EINGABE-ROUTINE UEBER SIO-KANAL B
|
|
; ZEICHEN STEHT NACH EINGABE IM AKKUMULATOR
|
|
; MIT INTERRUPT
|
|
;
|
|
CALL PRESS
|
|
;JR Z,GETA
|
|
RET Z
|
|
CALL GETAZ
|
|
RET
|
|
;
|
|
PRESS PUSH HL
|
|
PUSH BC
|
|
LD HL,APEIN
|
|
LD B,A
|
|
LD A,(APAUS)
|
|
CP (HL)
|
|
LD A,B
|
|
POP BC
|
|
POP HL
|
|
RET
|
|
|
|
GETAZ PUSH HL
|
|
LD A,(APAUS)
|
|
CALL PUFADR
|
|
AND A
|
|
LD (APAUS),A
|
|
LD A,(HL)
|
|
POP HL
|
|
RET
|
|
;
|
|
PUFADR PUSH DE
|
|
LD D,0
|
|
LD E,A
|
|
LD HL,0F00H ; ANFANGSADRESSE DES PUFFERS IST FESTGELEGT
|
|
INC A
|
|
JR NZ,PUFA1 ; NIEDERWERTIGER TEIL NUR VON E0H BIS FFH
|
|
LD A,0E0H
|
|
PUFA1 ADD HL,DE
|
|
POP DE
|
|
RET
|
|
;
|
|
|
|
ISRZET PUSH AF
|
|
PUSH HL
|
|
IN A,(S0BD)
|
|
LD HL,MCSQ
|
|
BIT 0,(HL)
|
|
JR NZ,OHNCSQ
|
|
CP 13H
|
|
JR Z,CTS
|
|
CP 11H
|
|
JR Z,CTQ
|
|
CP 1BH
|
|
JR Z,ESCEIN
|
|
OHNCSQ PUSH AF
|
|
LD A,(APEIN)
|
|
CALL PUFADR
|
|
LD (APEIN),A
|
|
POP AF
|
|
LD (HL),A ; ZEICHEN WIRD IN DEN RINGPUFFER EINGETRAGEN
|
|
ENDIZ LD A,20H
|
|
OUT (S0BC),A ; FREIGABE FUER DEN SIO (INTERRUPT NAECHSTES ZEICHEN)
|
|
POP HL
|
|
IBRT1 POP AF
|
|
EI
|
|
RETI
|
|
;
|
|
CTS SET 6,(HL)
|
|
JR ENDIZ
|
|
;
|
|
CTQ RES 6,(HL)
|
|
JR ENDIZ
|
|
;
|
|
ESCEIN RES 4,(HL)
|
|
JR ENDIZ
|
|
;
|
|
; ISR SONDERFALL DES EMPFANGS
|
|
;
|
|
ISRSET PUSH AF
|
|
LD A,1
|
|
OUT (S0BC),A
|
|
IN A,(S0BC)
|
|
LD A,30H ; RUECKSETZEN VON FEHLERN
|
|
OUT (S0BC),A
|
|
IN A,(S0BD)
|
|
JR IBRT1
|
|
;
|
|
;
|