Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site uw-beaver Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxj!houxm!vax135!cornell!uw-beaver!info-mac From: info-mac@uw-beaver Newsgroups: fa.info-mac Subject: Am I missing something? Message-ID: <447@uw-beaver> Date: Thu, 17-Jan-85 19:59:42 EST Article-I.D.: uw-beave.447 Posted: Thu Jan 17 19:59:42 1985 Date-Received: Fri, 18-Jan-85 10:18:15 EST Sender: daemon@uw-beaver Organization: U of Washington Computer Science Lines: 44 From: olson@harvard.ARPA (Eric Olson) I don't see how the display on the Macintosh could slow it down (by 80%?!?!). Display memory doesn't take processor time: it may take longer to write to the display memory (by having the hardware shove wait states onto the bus). Assuming you aren't writing to the display, there ARE other things which slow the Mac down. The Vertical Blanking Interrupt updates the tickcount and cursor every 60th of a second, the SCC generates an interrupt on any received character and any mouse movement, and the VIA generates an interrupt on mouse movement. If you have a task that must execute at high speed and cannot be interrupted, you can turn off interrupts-- but it's not easy. You must re-vector a TRAP (68000 trap, not Mac Trap) to your code (in order to get into supervisor mode), execute the TRAP, set the interrupt level to 7 (no interrupts serviced), execute your routine, and (for completeness ) restore the TRAP vector. Note that the mouse won't work while this is happening, and the TickCount will not update (I think the clock still keeps good time, though). This code fragment does the trick: MOVE.L #$80,A0 ;TRAP 0 Vector Address MOVE.L (A0),D2 ;Save the old vector JSR CURLOC ;Call next instruction to get PC CURLOC: MOVE.L (SP)+,A1 ;Pop CURLOC off the stack ADD.L #14,A1 ;Add offset to BEGING MOVE.L A1,(A0) ;Change Trap vector TRAP #0 ;Execute trap BRA.S DONE ;Go back to calling routine BEGING: MOVE.W #2700,SR ;Set interrupt level 7, super mode . . ;Your code here . RTE ;Return from Exception DONE: MOVE.L #$80,A0 ;TRAP 0 Vector Address MOVE.L D2,(A0) ;Restore old vector RTS ;Return to caller Note: Since Mac code is relocatable, the PC is determined by JSR and POP off the stack. The #14 added to A1 is enough to change CURLOC to BEGING. I assume the code does not move during execution (a valid assumption). Ciao! Eric.