ISCOVE%UTOROCI.bitnet@ugw.utcs.utoronto.ca (09/14/89)
Version 3.5 handles the task stack incorrectly. I've now had time to study Markus Wandel's Exec disassembly. The extra longword on the Amiga task stack is used (in AddTask, Switch and Dispatch) to store/restore the context of a 68881 if it is present. So NoClick has to test and adjust only for the presence of a 68881 and not for a 68010/20/30 as 3.5 did. Accordingly, NoClick3.6 : begin 644 NoClick3.6 M```#\P`````````!``````````````!2```#Z0```%)(YS\^+'@`!'P!1_D`8 M``$R2?D```$`3J[_B$'N`98B3$ZN_NPFP"!`9O1'Z__\0>X!I%'._^I.KO^"Y M2?D```$R80``M"!K`$:Q_`#X``!C``">0?D```$`<`!R`$/Y```!$DZN_D1F1 M``"&)GD```$F0_D```$23J[^/B)K``J2_``8)!%822!1D,)V`#8(5D,@`W(!, M3J[_.B)`Y$L@0B+84<O__"I`"&T`!P$%.WP,@!HX>``Z+@$H"`4`!&<">`1)" M^0```3)A+B1S0$:5PMO*3J[_B">-0$9.KO^"81AG#DZN_X@GC4!&3J[_@F#N$ M3-]\_'``3G4B7"9I`#8@"4YU=')A8VMD:7-K+F1E=FEC90``````````````C M`````````````````````````````````````````````````````````$YQ_ M```#[`````@`````````#````!(````\````5````%X```!L````<@```,(`C '```````#\@@`] `` end size 412 Here is the source for the revised section. The rest of the source was posted to c.s.a. with version 3.3/3.4 and can be mailed on request. *-----------------------------------------------------------------------* * Fix each task's exit vector to point to ram version * *-----------------------------------------------------------------------* checkcpu: moveq #0,d4 ;d4 = 0, offset for fixptrs move.w 296(a6),d5 ;AttnFlags = 0/1/$11 if cpu is 68000/10/20 btst.b #4,d5 ;68881 = 00010xxx beq.s fixptrs ;branch if no 68881 moveq #4,d4 ;d4 = 4 if 68881 fixptrs: lea tasks,a4 ;a4 = address of task list bsr.s nextset ;a3 = tc_SPReg for listed task move.l $46(a3,d4),a2 ;a2 = finalPC, td code that task exits to sub.l d2,a2 ;a2 = offset of code from start (d2) in rom add.l a2,a5 ;a5 = corresponding address in ram copy jsr _LVODisable(a6) move.l a5,$46(a3,d4) ;replace corrected finalPC pointer jsr _LVOEnable(a6) fixloop: bsr.s nextset beq.s exit ;exit on a1 = 0 (address next listed task) jsr _LVODisable(a6) move.l a5,$46(a3,d4) ;replace corrected finalPC pointer jsr _LVOEnable(a6) bra.s fixloop Norman Iscove iscove@utoroci (bitnet)