home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / code / asm_noqu.sit < prev    next >
Text File  |  1988-05-14  |  7KB  |  308 lines

  1. 11-May-88 21:23:56-MDT,6973;000000000000
  2. Return-Path: <u-lchoqu%sunset@cs.utah.edu>
  3. Received: from cs.utah.edu by SIMTEL20.ARPA with TCP; Wed, 11 May 88 21:23:42 MDT
  4. Received: by cs.utah.edu (5.54/utah-2.0-cs)
  5.     id AA03530; Wed, 11 May 88 21:24:11 MDT
  6. Received: by sunset.utah.edu (5.54/utah-2.0-leaf)
  7.     id AA29264; Wed, 11 May 88 21:24:08 MDT
  8. Date: Wed, 11 May 88 21:24:08 MDT
  9. From: u-lchoqu%sunset@cs.utah.edu (Lee Choquette)
  10. Message-Id: <8805120324.AA29264@sunset.utah.edu>
  11. To: rthum@simtel20.arpa
  12. Subject: NoQuiche.asm
  13.  
  14. ;Real ROMs don't eat Quiche:  The INIT resource that makes the 128K ROM
  15. ;                  into the nasty beast it could have been.
  16. ;
  17. ;Copyright 1986 Darin Adler
  18. ;
  19. ;A System file that contains this resource is very nasty and will only
  20. ;work with the 128K ROM.  It might screw up with many applications!
  21. ;
  22. ;As long as you are messing up a System file by putting this in it, you
  23. ;may as well remove the following from the System file:
  24. ;
  25. ;CURS 1-4             *    (standard cursors, in ROM)
  26. ;DRVR 2 '.Print'        (in ROM)
  27. ;DRVR 9 '.MPP'            (AppleTalk, in ROM)
  28. ;DRVR 10 '.ATP'            (AppleTalk, in ROM)
  29. ;FONT 0,12            (Chicago font, in ROM)
  30. ;MDEF 0                (standard MDEF, in ROM)
  31. ;PACK 4-5            (floating point packages, in ROM)
  32. ;PACK 7                (binary-decimal package, in ROM)
  33. ;PTCH 105            (patch for old ROM)
  34. ;PTCH 28927            (patch for MacWorks)
  35. ;WDEF 0                (standard WDEF, in ROM)
  36. ;all named FONT resources    (FONDs used by new ROM)
  37. ;
  38. ;* Do not remove the CURS resources unless you have already put in
  39. ;  this patch.  The other resources can be removed even without the
  40. ;  "No Quiche" resource.
  41. ;
  42. ;The resources must be removed BEFORE you re-boot with the patch active.
  43. ;ResEdit will be unable to remove these resources from the currently
  44. ;active System file, once you have made the patch.
  45. ;
  46. ;----------
  47. ;
  48. ;Currently, this resource does the following:
  49. ;
  50. ;    The ROM resources are always present for all Resource Manager.
  51. ;    This does not keep ResEdit from working ... a good sign.
  52. ;
  53. ;    Scaling of fonts is disabled by default (FScaleDisable<>0).
  54. ;
  55. ;    DrawControls(window) is replaced by
  56. ;        UpdateControls(window,window^.visRgn).
  57. ;    DrawDialog(dialog) is replaced by
  58. ;        UpdateDialog(dialog,dialog^.visRgn).
  59. ;
  60. ;    The DrawDialog fix has a wonderful effect on ResEdit's TMPL
  61. ;    resource editors, e.g. the MENU editor, which is MUCH faster!
  62.  
  63.  
  64. ;INCLUDE the necessary system globals:
  65.         INCLUDE    ::Library.D
  66. toolbox        EQU    $600
  67. ROM85        EQU    $28E
  68.  
  69. ;The following macro is for word aligned, long word values.
  70.         MACRO    LONG    value    =
  71.         DC    {value}>>16,{value}&$FFFF
  72.         |
  73.  
  74. ;Here we go!
  75.         RESOURCE    'INIT' 20 'NoQuiche' 80
  76.  
  77.  
  78. CountResources    EQU    $19C
  79. GetIndResource    EQU    $19D
  80. CountTypes    EQU    $19E
  81. GetIndType    EQU    $19F
  82. UniqueID    EQU    $1C1
  83. GetResource    EQU    $1A0
  84. GetNamedResource EQU    $1A1
  85. InitFonts    EQU    $FE
  86. DrawControls    EQU    $169
  87. UpdtControl    EQU    $153
  88. DrawDialog    EQU    $181
  89. UpdtDialog    EQU    $178
  90.  
  91. ;First, set up the patches-to-be.
  92.  
  93.         TST.W    ROM85            ;Do nothing for the old ROM.
  94.         BPL.S    NewROM
  95.         RTS
  96. NewROM
  97.  
  98.         MOVE.W    #CountResources,D0
  99.         LEA    OldCountResources,A1
  100.         _GetTrapAddress,toolbox
  101.         MOVE.L    A0,(A1)
  102.  
  103.         MOVE.W    #GetIndResource,D0
  104.         LEA    OldGetIndResource,A1
  105.         _GetTrapAddress,toolbox
  106.         MOVE.L    A0,(A1)
  107.  
  108.         MOVE.W    #CountTypes,D0
  109.         LEA    OldCountTypes,A1
  110.         _GetTrapAddress,toolbox
  111.         MOVE.L    A0,(A1)
  112.  
  113.         MOVE.W    #GetIndType,D0
  114.         LEA    OldGetIndType,A1
  115.         _GetTrapAddress,toolbox
  116.         MOVE.L    A0,(A1)
  117.  
  118.         MOVE.W    #UniqueID,D0
  119.         LEA    OldUniqueID,A1
  120.         _GetTrapAddress,toolbox
  121.         MOVE.L    A0,(A1)
  122.  
  123.         MOVE.W    #GetResource,D0
  124.         LEA    OldGetResource,A1
  125.         _GetTrapAddress,toolbox
  126.         MOVE.L    A0,(A1)
  127.  
  128.         MOVE.W    #GetNamedResource,D0
  129.         LEA    OldGetNamedResource,A1
  130.         _GetTrapAddress,toolbox
  131.         MOVE.L    A0,(A1)
  132.  
  133.         MOVE.W    #InitFonts,D0
  134.         LEA    OldInitFonts,A1
  135.         _GetTrapAddress,toolbox
  136.         MOVE.L    A0,(A1)
  137.  
  138.         MOVE.W    #UpdtControl,D0
  139.         LEA    OldUpdtControl,A1
  140.         _GetTrapAddress,toolbox
  141.         MOVE.L    A0,(A1)
  142.  
  143.         MOVE.W    #UpdtDialog,D0
  144.         LEA    OldUpdtDialog,A1
  145.         _GetTrapAddress,toolbox
  146.         MOVE.L    A0,(A1)
  147.  
  148. ;Create the heap block.
  149.  
  150.         MOVE.L    #HeapBlockEnd-HeapBlock,D1
  151.  
  152.         MOVE.L    D1,D0
  153.         _NewPtr,sys
  154.  
  155.         MOVE.L    A0,A1
  156.         LEA    HeapBlock,A0
  157.         MOVE.L    D1,D0
  158.         _BlockMove
  159.  
  160. ;Install the patches.
  161.  
  162.         MOVE.W    #CountResources,D0
  163.         LEA    PatchCountResources-HeapBlock(A1),A0
  164.         _SetTrapAddress,toolbox
  165.  
  166.         MOVE.W    #GetIndResource,D0
  167.         LEA    PatchGetIndResource-HeapBlock(A1),A0
  168.         _SetTrapAddress,toolbox
  169.  
  170.         MOVE.W    #CountTypes,D0
  171.         LEA    PatchCountTypes-HeapBlock(A1),A0
  172.         _SetTrapAddress,toolbox
  173.  
  174.         MOVE.W    #GetIndType,D0
  175.         LEA    PatchGetIndType-HeapBlock(A1),A0
  176.         _SetTrapAddress,toolbox
  177.  
  178.         MOVE.W    #UniqueID,D0
  179.         LEA    PatchUniqueID-HeapBlock(A1),A0
  180.         _SetTrapAddress,toolbox
  181.  
  182.         MOVE.W    #GetResource,D0
  183.         LEA    PatchGetResource-HeapBlock(A1),A0
  184.         _SetTrapAddress,toolbox
  185.  
  186.         MOVE.W    #GetNamedResource,D0
  187.         LEA    PatchGetNamedResource-HeapBlock(A1),A0
  188.         _SetTrapAddress,toolbox
  189.  
  190.         MOVE.W    #InitFonts,D0
  191.         LEA    PatchInitFonts-HeapBlock(A1),A0
  192.         _SetTrapAddress,toolbox
  193.  
  194.         MOVE.W    #DrawControls,D0
  195.         LEA    PatchDrawControls-HeapBlock(A1),A0
  196.         _SetTrapAddress,toolbox
  197.  
  198.         MOVE.W    #DrawDialog,D0
  199.         LEA    PatchDrawDialog-HeapBlock(A1),A0
  200.         _SetTrapAddress,toolbox
  201.  
  202. ;Finally, do any one-shot stuff
  203.  
  204. ;Done
  205.  
  206.         RTS
  207.  
  208.  
  209. HeapBlock
  210.  
  211. ;This block contains the patches to the ROM.
  212. ;Each one contains a short explanation of what it is.
  213.  
  214. ;----------
  215. ;The following patches make sure that the ROM map is inserted for all
  216. ;resource manager calls.  The one-deep calls are not modified because
  217. ;that would not be desirable.
  218.  
  219. AddROMMap
  220.         TST.B    ROMMapInsert        ;if ROM not explicitly included
  221.         BNE.S    AddedROMMap
  222.         ST    ROMMapInsert        ;ROM implicitly included
  223.         MOVE.B    ResLoad,TmpResLoad    ;without changing ResLoad
  224. AddedROMMap
  225.         RTS
  226.  
  227. PatchCountResources
  228.         BSR.S    AddROMMap
  229.         DC.W    $4EF9
  230. OldCountResources
  231.         LONG    0
  232.  
  233. PatchGetIndResource
  234.         BSR.S    AddROMMap
  235.         DC.W    $4EF9
  236. OldGetIndResource
  237.         LONG    0
  238.  
  239. PatchCountTypes
  240.         BSR.S    AddROMMap
  241.         DC.W    $4EF9
  242. OldCountTypes
  243.         LONG    0
  244.  
  245. PatchGetIndType
  246.         BSR.S    AddROMMap
  247.         DC.W    $4EF9
  248. OldGetIndType
  249.         LONG    0
  250.  
  251. PatchUniqueID
  252.         BSR.S    AddROMMap
  253.         DC.W    $4EF9
  254. OldUniqueID
  255.         LONG    0
  256.  
  257. PatchGetResource
  258.         BSR.S    AddROMMap
  259.         DC.W    $4EF9
  260. OldGetResource
  261.         LONG    0
  262.  
  263. PatchGetNamedResource
  264.         BSR.S    AddROMMap
  265.         DC.W    $4EF9
  266. OldGetNamedResource
  267.         LONG    0
  268.  
  269. ;----------
  270. ;This makes font scale disabling the default!
  271.  
  272. PatchInitFonts
  273.         DC.W    $4EB9            ;Call InitFonts.
  274. OldInitFonts
  275.         LONG    0
  276.         ST    FScaleDisable        ;Disable scaling.
  277.         RTS
  278.  
  279. ;----------
  280. ;This makes DrawControls a lot smarter!
  281.  
  282. PatchDrawControls
  283.         MOVE.L    (SP)+,A0
  284.         MOVE.L    (SP),A1
  285.         MOVE.L    visRgn(A1),-(SP)    ;Add a visRgn parameter.
  286.         MOVE.L    A0,-(SP)
  287.         DC.W    $4EF9            ;Call UpdtControl.
  288. OldUpdtControl
  289.         LONG    0
  290.  
  291. ;----------
  292. ;This makes DrawDialog a lot smarter!
  293.  
  294. PatchDrawDialog
  295.         MOVE.L    (SP)+,A0
  296.         MOVE.L    (SP),A1
  297.         MOVE.L    visRgn(A1),-(SP)    ;Add a visRgn parameter.
  298.         MOVE.L    A0,-(SP)
  299.         DC.W    $4EF9            ;Call UpdtDialog.
  300. OldUpdtDialog
  301.         LONG    0
  302.  
  303. ;----------
  304. HeapBlockEnd
  305.  
  306.         END
  307.  
  308.