TITLE TASTATURPROGRAMM .Z80 ;INTERRUPTPROGRAMM MIT INITIALISIERUNG ;FUER EINGABE VOM U 807D ;VEREINBARUNGEN: BREAK EQU 03H STOP EQU 13H SHLOK EQU 16H HCOPY EQU 0FH LIST EQU 1CH RUN EQU 1DH CONT EQU 1EH BS EQU 01H ;BACKSPACE CS EQU 0CH ;CLEAR SCREEN CR EQU 0DH ;NEWLINE CUL EQU 08H ;CURSOR LEFT CUR EQU 09H ;CURSOR RIGHT CUU EQU 0BH ;CURSOR UP CUD EQU 0AH ;CURSOR DOWN INS EQU 1AH ;CURSOR SHIFT RIGHT (INSERT) CH EQU 10H ;CURSOR HOME CCR EQU 19H ;CURSOR TO BEGIN OF LINE ESC EQU 02H ;CLEAR LINE DEL EQU 1FH ;DELETE CHARACTER PAGE EQU 11H ;PAGE-MODE SCROL EQU 12H ;SCROLL-MODE ; ;I/O - ADDRESSES P1AD EQU 88H ;8BH P1BD EQU 89H ;8AH P1AC EQU 8AH ;89H P1BC EQU 8BH ;88H CTC0 EQU 8CH ;8FH CTC1 EQU 8DH ;8EH CTC2 EQU 8EH ;8DH CTC3 EQU 8FH ;8CH ; LADIX EQU 1010H PIINT EQU 1000H CTINT EQU 1008H ; ;FESTWERTE FUER TASTATURPROGRAMM TCTZK EQU 143 ;CTC-ZEITKONSTANTE FUER TASTATURPROGRAMM TGE0 EQU 101 ;GRENZE FUER NULLERKENNUNG TGE1 EQU 68 ;GRENZE FUER EINSERKENNUNG TGEWA EQU 26 ;GRENZE FUER WORTABSTANDSERKENNUNG ; ;DISPLACEMENT IN IX TS EQU 8 ; ;INTERRUPTROUTINEN FUER TASTATURABFRAGE ;Z E I T I N T E R R U P T ITAKT: EI PUSH AF LD A,23H ;CTC STOP OUT (CTC3),A SET 3,(IX+TS) LD (IX+TS+5),0 JR ITEND ;T A S T A T U R I N T E R R U P T ITAST: EI PUSH AF IN A,(CTC3) ;CTC-STAND ABFRAGEN PUSH AF LD A,0A7H ;CTC NEU STARTEN OUT (CTC3),A LD A,TCTZK OUT (CTC3),A POP AF BIT 3,(IX+TS) RES 3,(IX+TS) JR NZ,ITEND CP TGE0 JR NC,ITA0 ;NULL ERKANNT CP TGE1 JR NC,ITA1 ;EINS ERKANNT PUSH HL PUSH DE SRL (IX+TS+4) LD A,(IX+TS) AND 80H RLCA XOR (IX+TS+4) LD H,0 LD DE,KTAB LD L,A ADD HL,DE LD A,M POP DE POP HL CP SHLOK JR NZ,IT2 CP (IX+TS+5) JR Z,ITEND LD (IX+TS+5),A LD A,(IX+TS) XOR 80H LD (IX+TS),A ITEND: POP AF RETI ; IT2: CP (IX+TS+5) JR Z,IT3 LD (IX+TS+5),A RES 4,(IX+TS) IT5: SET 0,(IX+TS) LD (IX+TS+2),0 JR ITEND ; IT3: INC (IX+TS+2) BIT 4,(IX+TS) JR NZ,IT4 BIT 4,(IX+TS+2) JR Z,ITEND SET 4,(IX+TS) JR IT5 IT4: BIT 1,(IX+TS+2) JR NZ,IT5 JR ITEND ITA0: OR A JR ITAS2 ITA1: SCF ITAS2: RR (IX+TS+4) JR ITEND ;CODEWANDLUNGSTABELLE FUER TASTATUR KTAB: DEFB 057H ;W DEFB 077H ;S+W DEFB 041H ;A DEFB 061H ;S+A DEFB 032H ;2 DEFB 022H ;" DEFB CUL ;CUL DEFB CCR ;S+CUL DEFB CH ;HOME DEFB CS ;CLS DEFB 02DH ;- DEFB 03DH ;= DEFB 0F2H ;F2 DEFB 0F8H ;S+F2 DEFB 059H ;Y DEFB 079H ;S+Y DEFB 045H ;E DEFB 065H ;S+E DEFB 053H ;S DEFB 073H ;SH+S DEFB 033H ;3 DEFB 023H ;# DEFB 05EH ;PFEIL NACH OBEN DEFB 05DH ;NEG DEFB BS ;CLR DEFB HCOPY ;S+CLR DEFB 03AH ;: DEFB 02AH ;* DEFB 0F3H ;F3 DEFB 0F9H ;F3 DEFB 058H ;X DEFB 078H ;S+X DEFB 054H ;T DEFB 074H ;S+T DEFB 046H ;F DEFB 066H ;S+F DEFB 035H ;5 DEFB 025H ;% DEFB 050H ;P DEFB 070H ;S+P DEFB DEL ;DEL DEFB ESC ;CLEAR LINE DEFB 030H ;0 DEFB 040H ;@ DEFB 0F5H ;F5 DEFB 0FBH ;F5 DEFB 056H ;V DEFB 076H ;S+V DEFB 055H ;U DEFB 075H ;S+U DEFB 048H ;H DEFB 068H ;S+H DEFB 037H ;7 DEFB 027H ;' DEFB 04FH ;O DEFB 06FH ;S+O DEFB INS ;INS DEFB INS ;INS DEFB 039H ;9 DEFB 029H ;) DEFB BREAK ;BRK DEFB BREAK ;BRK DEFB 04EH ;N DEFB 06EH ;S+N DEFB 049H ;I DEFB 069H ;S+I DEFB 04AH ;J DEFB 06AH ;S+J DEFB 038H ;8 DEFB 028H ;( DEFB 020H ;SPACE DEFB 05BH ;SPACE DEFB 04BH ;K DEFB 06BH ;S+K DEFB 02CH ;, DEFB 03CH ;< DEFB STOP ;STOP DEFB STOP ;STOP DEFB 04DH ;M DEFB 06DH ;S+M DEFB 05AH ;Z DEFB 07AH ;S+Z DEFB 047H ;G DEFB 067H ;S+G DEFB 036H ;6 DEFB 026H ;& DEFB 020H ;FEHLERCODE DEFB 020H ; " DEFB 04CH ;L DEFB 06CH ;S+L DEFB 02EH ;. DEFB 03EH ;> DEFB 0F6H ;F6 DEFB 0FCH ;F6 DEFB 042H ;B DEFB 062H ;S+B DEFB 052H ;R DEFB 072H ;S+R DEFB 044H ;D DEFB 064H ;S+D DEFB 034H ;4 DEFB 024H ;$ DEFB 05FH ;UNTERSTREICHUNG DEFB 05CH ;SENKR. STRICH DEFB 02BH ;+ DEFB 03BH ;; DEFB 02FH ;/ DEFB 03FH ;? DEFB 0F4H ;F4 DEFB 0FAH ;S+F4 DEFB 043H ;C DEFB 063H ;S+C DEFB 051H ;Q DEFB 071H ;S+Q DEFB SHLOK ;SHIFT LOCK DEFB SHLOK DEFB 031H ;1 DEFB 021H ;! DEFB CUD ;CUD DEFB SCROL ;S+CUD DEFB CUU ;CUU DEFB PAGE ;S+CUU DEFB CUR ;CUR DEFB 1EH ;S+CUR >>> CONT <<< DEFB 0F1H ;F1 DEFB 0F7H ;S+F1 DEFB CR ;CR DEFB CR ;EXEC ; ;INITIALISIERUNG ; KINIT: LD IX,LADIX LD HL,ITAKT LD (CTINT+6),HL LD HL,ITAST LD (PIINT),HL LD A,LOW(PIINT) OUT (P1AC),A LD A,LOW(CTINT) OUT (CTC0),A LD A,HIGH(PIINT) LD I,A IM 2 LD A,0FH ;BYTE-OUTPUT OUT (P1AC),A LD A,83H ;INT ON OUT (P1AC),A RET ;******ENDE************* END