; CATMRT.mu ; MEMORY REFRESH TASK AND MOUSE HANDLER ; Obtained from AltoCode23.mu ; Modified to remove interval timer and EIA ; Only works on Alto I ; L. Stewart December 29, 1979 8:21 PM !17,20,TX0,TX6,TX3,TX2,TX8,TX5,TX1,TX7,TX4,,,,,,,; !1,2,DOCUR,NOCUR; !1,2,SHOWC,WAITC; !1,2,NOCLK,CLOCK; !1,1,MRTLAST; !1,2,CNOTLAST,CLAST; $NWW $R4; State of interrupt system $CURX $R20; $CURDATA $R21; $MTEMP $R25; $YPOS $R27; $R37 $R37; MRT: SINK_ MOUSE, BUS; MOUSE DATA IS ANDED WITH 17B MRTA: L_ T_ -2, :TX0; DISPATCH ON MOUSE CHANGE TX0: NOP,:AudioTest; Call the audio microcode ATDone: T_ R37; L_T_ 77+T+1; R37_ L, ALUCY; NOTIMER: L_ CURX, :NOCLK; NOCLK: T_ REFMSK, SH=0; MAR_ R37 AND T, :DOCUR; MAR _ R37 clears the wakeup NOCUR: CURDATA_ L, TASK; MRTLAST: CURDATA_ L, :MRT; CLOCK: MAR_ CLOCKLOC; R37 OVERFLOWED. UPDATE CLOCK NOP; L_ MD+1; MAR_ CLOCKLOC; MTEMP_ L, TASK; MD_ MTEMP, :NOTIMER; DOCUR: L_ T_ YPOS; CHECK FOR VISIBLE CURSOR ON THIS SCAN SH < 0, L_ 20-T-1; ***x13 change: the constant 20 was 17 SH<0, L_ 2+T, :SHOWC; WAITC: YPOS_ L, L_ 0, TASK, :MRTLAST; squash branch at MRTLAST SHOWC: MAR_ CLOCKLOC+T+1, :CNOTLAST; CNOTLAST: T_ CURX, :CURF; CLAST: T_ 0; CURF: YPOS_ L, L_ T; CURX_ L; L_ MD, TASK; CURDATA_ L, :MRT; ;AFTER THIS DISPATCH, T WILL CONTAIN XCHANGE, L WILL CONTAIN YCHANGE-1 TX1: L_ T_ ONE +T, :M00; Y=0, X=1 TX2: L_ T_ ALLONES, :M00; Y=0, X=-1 TX3: L_ T_ 0, :M00; Y=1, X= 0 TX4: L_ T_ ONE AND T, :M00; Y=1, X=1 TX5: L_ T_ ALLONES XOR T, :M00; Y=1, X=-1 TX6: T_ 0, :M00; Y= -1, X=0 TX7: T_ ONE, :M00; Y= -1, X=1 TX8: T_ ALLONES, :M00; Y= -1, X= -1 M00: MAR_ MOUSELOC; START THE FETCH OF THE COORDINATES MTEMP_ L; YCHANGE -1 L_ MD+ T; X+ XCHANGE T_ MD; Y MAR_ MOUSELOC; NOW RESTORE THE UPDATED COORDINATES T_ MTEMP+ T+1; Y+ (YCHANGE-1) + 1 MTEMP_ L, L_ T; MD_ MTEMP; MAR_ MOUSELOC+1; MTEMP_ L, TASK; MD_ MTEMP, :TX0; was :MRTA (0,5376)(1,11264)\f1 1618f0 1f1 45f0 1f1 21f0 1f1 18f0 1f1 17f0 1f1 51f0 1f1