MSWP61 ASM;-------------------------------------- ; ;Maustreiber f}r WP6 nach MOUSE1.ASM ; ;f}r 2 Interrupts an einem V.24-Modul ; ; ISR schaltet IRM ein, damit die ; eigentliche Routine im Bereich ab ; BA00H sicher erreicht wird. ; ;MSWP61.ASM ` ML-Soft 23.04.1995 ;-------------------------------------- ARGN EQU 0B781H ARG1 EQU 0B782H ARG2 EQU 0B784H ARG3 EQU 0B786H ORG 0BA00H ;Datenbereich: ISRD DB 8 ;SIO-Adresse ISR2 DW 0 ;2.ISR BYTE DB 0 ;EMPFANGSBYTENR TSTAT DB 7 ;TASTENSTATI TRE DB 0F2H ;rechte Taste TMI DB 0F1H ;mittl. Taste MICKX DB 4 ;MICKEY X STEPX DB 12 ;STEP X MICKY DB 8 ;MICKEY Y STEPY DB 16 ;STEP Y ISRTOT DB 1 ;Maus ein/aus DUMMY DB 0 ;Tastencode ;Selbststart mit WordPro6: AUTO: LD HL,0 ;WP6 simulieren XOR A LD (ARGN),A CALL MOUSE ;Maus init. MENU: JP 0E000H ;WP6-Men} ISR1: ;ISR auf 100H PUSH AF IN A,(88H) PUSH AF SET 2,A ;IRM on OUT (88H),A CALL ISRBA ;ISR im IRM POP AF OUT (88H),A POP AF RET ISRBA: ;ISR auf BA00H PUSH HL PUSH DE PUSH BC LD HL,ISRD ;Datenzeiger LD A,M ;SIO-Adresse ADD 2 LD C,A IN A,(C) RRA ;Bit0 JR C,CHAR ;available INC HL LD A,M INC HL LD H,M LD L,A POP BC POP DE EX (SP),HL RET ;Ansprung 2.ISR ; CHAR: LD C,M IN D,(C) ;Byte holen INC HL INC HL INC HL ;^Byte-Nr. XOR A OR M ;Null? JR NZ,DIRECT LD A,D AND 0F8H CP 80H JR NZ,EXIT INC M ;z{hlen INC HL ;^Tastenstati LD A,D ;gelesenes Byte CPL AND M LD M,D INC HL ;^TRE RRA JR NC,NRIGHT LD C,M JR TASTE NRIGHT: INC HL ;^TMI RRA JR NC,NMIDDL LD C,M JR TASTE NMIDDL: RRA JR NC,EXIT LD C,0DH JR TASTE ; DIRECT: INC A ;Richtungsinfo CP 5 ;auswerten JR C,DIR1 XOR A DIR1: RR M LD M,A ;neue Nummer LD HL,MICKX LD C,8 ;CUL JR C,DIR2 INC HL INC HL LD C,10 ;CUD DIR2: LD A,M ;Mickey INC HL LD E,M ;Step DEC HL ADD D BIT 7,A JR Z,POSI ADD E BIT 7,A JR Z,EINTR XOR A JR EINTR ; POSI: CP E JR C,NOVER INC C ;CUR/CUU SUB E CP E JR C,EINTR LD A,E DEC A JR EINTR ; TASTE: LD HL,DUMMY EINTR: LD (IX+13),C SET 0,(IX+8) NOVER: LD M,A EXIT: POP BC POP DE POP HL EI RETI ; INITTB ;SIO-Initialisierungstabelle: DB 47H DB 2EH DW 0E202H DB 18H DW 4414H DW 0E103H DW 0EA05H DW 1811H DW 0011H ;DI ; DW 7F7FH DB 'MOUSE' DB 1 LD A,(0BC0CH) CP 0C3H JR NZ,MOUSE;kein WP6! LD HL,(MENU+1) LD DE,0E000H SBC HL,DE JR NZ,MOUSE;schon install. LD HL,(0BC0DH) LD (MENU+1),HL LD A,M CP 21H JR NZ,MOUSE;kein WP6! INC HL LD A,M INC HL LD H,M LD L,A LD (AUTO+1),HL LD HL,AUTO LD (0BC0DH),HL MOUSE: LD DE,100H LD HL,ISR1 LD BC,ISRBA-ISR1 LDIR ;Schaltroutine LD HL,100H ;kopieren DI LD DE,(1E2H) LD A,E CP L JR NZ,UN1 LD A,H CP D JR Z,EQUAL ;schon aktiv! UN1: LD (1E2H),HL LD HL,ISR2 LD M,E ;alte ISR INC HL ;V.24-Tastatur LD M,D ;eintragen EQUAL: LD A,(ARGN) CP 3 JR NC,PAR3 CP 2 JR NC,PAR2 CP 1 JR NC,PAR1 JR PAR0 PAR3: LD A,(ARG3) LD (TRE),A ;rechte Taste PAR2: LD A,(ARG2) LD (TMI),A ;mittl. Taste PAR1: LD A,(ARG1) LD (ISRTOT),A CP 10H JR NC,USIO ;USER-SIO CP 3 JR NC,KANNR;Portadr. SUB 1 JR C,PAR0 ;Maus aus KANNR: AND 1 ADD 8 ;V.24 USIO: LD (ISRD),A PAR0: LD BC,780H MM03: INC B JR Z,NM03 ;nicht M003 IN A,(C) CP 0EEH JR NZ,MM03 ;weiter suchen LD A,1 OUT (C),A ;Modul ein LD C,B LD B,0B8H LD (BC),A ;eintragen NM03: LD A,(ISRD) ADD 4 LD HL,INITTB LD C,A LD B,2 OTIR ;CTC SUB 2 LD C,A SET 0,C ;Kanal B LD B,2 OTIR LD C,A LD B,9 OTIR ;akt. Kanal LD A,(ISRTOT) OR A JR NZ,NTOT LD B,2 ;SIO tot OTIR NTOT: EI RET  À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$ÓˆñÉõÛˆæÛÓˆñÉÍMÀ~#ÍDÀôÉEDASÍMÀ!"@"p$ RET  À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$ÓˆñÉõÛˆæÛÓˆñÉÍMÀ~#ÍDÀôÉEDASÍMÀ!"@"p$