MOUSE0ASM ; ;*** haftmann#software *** ;*** MOUSE0 ohne Anspr}che *** ;*** nur 1.V24, nur Kanal 2 *** ;*** voll verschieblich *** ;*** 10.04.92 *** OS EQU 0F003H RC EQU 0F00FH ORG 200H ISRD DEFB 0 ;EMPFANGSBYTENR DEFB 7 ;TASTENSTATI DEFB 0F6H ;USERTASTE DEFB 0 ;FREIGABE DEFB 8 ;MICKEY X DEFB 10H ;STEP X DEFB 8 ;MICKEY Y DEFB 10H ;STEP Y ISR PUSH HL PUSH AF PUSH DE PUSH BC ; CALL RC DEFW 0 NEXT POP HL LD DE,ISRD-NEXT ADD HL,DE ;Datenzeiger CHAR IN A,9 LD D,A ;Byte holen ; XOR A OR M ;Null? JR NZ,DIRECT LD A,D AND 0F8H CP 80H JR NZ,EXIT INC M INC HL ;^Tastenstati LD A,D ;gelesenes Byte CPL AND M LD M,D INC HL ;^Usertaste RRA JR NC,NRIGHT LD C,M LD A,M JR EINTR NRIGHT RRA JR NC,NMIDDL INC HL LD A,M CPL JR NOVER NMIDDL RRA JR NC,EXIT LD C,13 LD A,M JR EINTR DIRECT INC A CP 5 JR C,DIR1 XOR A DIR1 RR M LD M,A ;neue Nummer INC HL INC HL INC HL LD B,M ;Freigabe INC HL 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,EINTR1 XOR A JR EINTR1 ; POSI CP E JR C,NOVER INC C SUB E CP E JR C,EINTR1 LD A,E DEC A JR EINTR1 ; EINTR1 INC B ;Null? DJNZ EXIT EINTR LD (IX+13),C SET 0,(IX+8) NOVER LD M,A EXIT POP BC POP DE POP AF POP HL EI RETI ; INITTB DEFB 47H DEFB 2EH DEFW 0E202H DEFB 18H DEFW 4414H DEFW 0E103H DEFW 0EA05H DEFW 1811H DEFW 0011H ;DI ; DEFW 7F7FH DEFM 'MOUSE' DEFB 1 ;nur Zeichen und Empfindlichkeit LD C,L ;Zeichen PUSH DE CALL RC DEFW 0 NXT POP HL ;=NXT LD DE,ISR-NXT ADD HL,DE ;HL=ISR POP DE DI LD (1E2H),HL DEC HL ;Interruptbeginn LD A,(0B781H) CP 2 JR C,NSTEPY LD M,D NSTEPY DEC HL DEC HL ;^StepX JR C,NSTEPX LD M,E NSTEPX DEC HL DEC HL ;^Freigabe LD M,0 ;Freigabe DEC HL ;Usertaste OR A JR Z,NUSER LD A,C OR A LD D,A JR Z,SIOTOT LD M,C NUSER LD D,M SIOTOT LD BC,780H MM03 INC B JR Z,NM03 IN A,(C) CP 0EEH JR NZ,MM03 ;nicht gef. LD A,1 OUT (C),A LD C,B LD B,0B8H LD (BC),A NM03 LD BC,INITTB-ISRD-2 ADD HL,BC LD BC,20DH OTIR LD BC,0B0BH OTIR LD A,D OR A JR NZ,NTOT LD B,2 OTIR NTOT EI RET ÆÌ0fÆ`0 0`ÿf<ÿ