home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / util / snoopy-2.0.lha / Snoopy / Macros / patch < prev    next >
Text File  |  1993-12-29  |  2KB  |  66 lines

  1. ;--------------    save all registers to pcr-Data structure
  2. SAVEREGS    MACRO    ;\1=target,\2=MODE
  3.         move.l    D0,(\1+sregs_D0,a6)
  4.         move.l    D1,(\1+sregs_D1,a6)
  5.         move.l    D2,(\1+sregs_D2,a6)
  6.         move.l    D3,(\1+sregs_D3,a6)
  7.         move.l    D4,(\1+sregs_D4,a6)
  8.         move.l    D5,(\1+sregs_D5,a6)
  9.         move.l    D6,(\1+sregs_D6,a6)
  10.         move.l    D7,(\1+sregs_D7,a6)
  11.         move.l    A0,(\1+sregs_A0,a6)
  12.         move.l    A1,(\1+sregs_A1,a6)
  13.         move.l    A2,(\1+sregs_A2,a6)
  14.         move.l    A3,(\1+sregs_A3,a6)
  15.         move.l    A4,(\1+sregs_A4,a6)
  16.         move.l    A5,(\1+sregs_A5,a6)
  17.  
  18.         move.l    (4,sp),(\1+sregs_A6,a6)
  19.         move.l    sp,(\1+sregs_A7,a6)
  20.         addq.l    #8,(\1+sregs_A7,a6)
  21.  
  22. ;--------------    NEW: to no longer cause enforcer-hits I test the memory via 
  23. ;--------------    exec/TypeOfMem(); this takes (considerably) longer but hey
  24. ;--------------    you asked for it!
  25.         pushm    d0-d7/a0-a6
  26.         movea.l    a6,a5
  27.         movea.l    (execBase).w,a6
  28.         movea.l    (\1+sregs_A0,a5),a1
  29.         bsr.b    .READINDIRECT
  30.         move.l    d0,(\1+sregs_I0,a5)
  31.         movea.l    (\1+sregs_A1,a5),a1
  32.         bsr.b    .READINDIRECT
  33.         move.l    d0,(\1+sregs_I1,a5)
  34.         movea.l    (\1+sregs_A2,a5),a1
  35.         bsr.b    .READINDIRECT
  36.         move.l    d0,(\1+sregs_I2,a5)
  37.         movea.l    (\1+sregs_A3,a5),a1
  38.         bsr.b    .READINDIRECT
  39.         move.l    d0,(\1+sregs_I3,a5)
  40.         movea.l    (\1+sregs_A4,a5),a1
  41.         bsr.b    .READINDIRECT
  42.         move.l    d0,(\1+sregs_I4,a5)
  43.         movea.l    (\1+sregs_A5,a5),a1
  44.         bsr.b    .READINDIRECT
  45.         move.l    d0,(\1+sregs_I5,a5)
  46.         bra.b    .DONEREADING
  47.  
  48. .READINDIRECT    push    a1
  49.         CALL    TypeOfMem
  50.         pop    a1
  51.         tst.l    d0
  52.         beq.b    .SKIPREADING
  53.         move.l    a1,d0
  54.         bclr    #0,d0
  55.         movea.l    d0,a1
  56.         move.l    (a1),d0
  57. .SKIPREADING    rts
  58.  
  59. .DONEREADING    popm    d0-d7/a0-a6
  60.         push    a0
  61.         move.l    (8,sp),a0
  62.         move.l    (a0),(\1+sregs_I6,a6)
  63.         pop    a0
  64.         move.l    (8,sp),(\1+sregs_I7,a6)
  65.         ENDM
  66.