home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Clean 1.2.4 / MacInterface / pointer.icl < prev    next >
Encoding:
Modula Implementation  |  1997-01-15  |  1.5 KB  |  62 lines  |  [TEXT/3PRM]

  1. implementation module pointer;
  2.  
  3. import mac_types;
  4.  
  5. ClearLong :: !Ptr !Toolbox -> Toolbox;
  6. ClearLong ptr tb = ClearLong1 ptr;
  7.  
  8. ClearLong1 :: !Ptr -> *Ptr;
  9. ClearLong1 p = code (p=D0)(q=D0){
  10.     instruction 0x2040    ||    move.l    d0,a0
  11.     instruction 0x4290    ||    clr.l    (a0)
  12. };
  13.  
  14. LoadLong :: !Ptr !Toolbox -> (!Int,!Toolbox);
  15. LoadLong ptr tb = (LoadLong1 ptr, tb);
  16.  
  17. LoadLong1 :: !Ptr -> Int;
  18. LoadLong1 p = code (p=D0)(r=D0){
  19.     instruction 0x2040    ||    move.l    d0,a0
  20.     instruction 0x2010    ||    move.l    (a0),d0
  21. };
  22.  
  23. LoadWord :: !Ptr !Toolbox -> (!Int,!Toolbox);
  24. LoadWord ptr tb = (LoadWord1 ptr,tb);
  25.  
  26. LoadWord1 :: !Ptr -> Int;
  27. LoadWord1 p = code (p=D0)(r=D0){
  28.     instruction 0x2040    ||    move.l    d0,a0
  29.     instruction 0x3010    ||    move    (a0),d0
  30.     instruction 0x48C0    ||    ext.l    d0
  31. };
  32.  
  33. StoreLong :: !Ptr !Int !Toolbox -> Toolbox;
  34. StoreLong ptr v tb = StoreLong1 ptr v;
  35.  
  36. StoreLong1 :: !Ptr !Int -> *Ptr;
  37. StoreLong1 p v = code (p=D1,v=D0)(q=D0){
  38.     instruction 0x2041    ||    move.l    d1,a0
  39.     instruction 0x2080    ||    move.l    d0,(a0)
  40.     instruction 0x2001    ||    move.l    d1,d0
  41. };
  42.  
  43. StoreWord :: !Ptr !Int !Toolbox -> Toolbox;
  44. StoreWord ptr v tb = StoreWord1 ptr v;
  45.  
  46. StoreWord1 :: !Ptr !Int -> *Ptr;
  47. StoreWord1 p v = code (p=D1,v=D0)(q=D0){
  48.     instruction 0x2041    ||    move.l    d1,a0
  49.     instruction 0x3080    ||    move.w    d0,(a0)
  50.     instruction 0x2001    ||    move.l    d1,d0
  51. };
  52.  
  53. StoreByte :: !Ptr !Int !Toolbox -> Toolbox;
  54. StoreByte ptr v tb = StoreByte1 ptr v;
  55.  
  56. StoreByte1 :: !Ptr !Int -> *Ptr;
  57. StoreByte1 p v = code (p=D1,v=D0)(q=D0){
  58.     instruction 0x2041    ||    move.l    d1,a0
  59.     instruction 0x1080    ||    move.b    d0,(a0)
  60.     instruction 0x2001    ||    move.l    d1,d0
  61. };
  62.