home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Clean 1.2.4 / PowerMacInterface / pointer.icl < prev    next >
Encoding:
Modula Implementation  |  1995-02-15  |  1.6 KB  |  68 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=U)(q=A0){
  10.     instruction    0x3B200000    |    li    r25,0
  11.     instruction 0x93380000    |    stw    r25,0(r24)
  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=U)(r=A0){
  19.     instruction 0x83180000    |    lwz    r24,0(r24)
  20. };
  21.  
  22. LoadWord :: !Ptr !Toolbox -> (!Int,!Toolbox);
  23. LoadWord ptr tb = (LoadWord1 ptr,tb);
  24.  
  25. LoadWord1 :: !Ptr -> Int;
  26. LoadWord1 p = code (p=U)(r=A0){
  27.     instruction    0xAB180000    |    lha    r24,0(r24)
  28. };
  29.  
  30. StoreLong :: !Ptr !Int !Toolbox -> Toolbox;
  31. StoreLong ptr v tb = StoreLong1 ptr v;
  32.  
  33. StoreLong1 :: !Ptr !Int -> *Ptr;
  34. StoreLong1 p v = code (p=U,v=U)(q=A0){
  35.     instruction    0x93190000    |    stw    r24,0(r25)
  36.     instruction    0x7F38CB78    |    mr    r24,r25
  37. };
  38.  
  39. StoreWord :: !Ptr !Int !Toolbox -> Toolbox;
  40. StoreWord ptr v tb = StoreWord1 ptr v;
  41.  
  42. StoreWord1 :: !Ptr !Int -> *Ptr;
  43. StoreWord1 p v = code (p=U,v=U)(q=A0){
  44.     instruction 0xB3190000    |    sth    r24,0(r25)
  45.     instruction 0x7F38CB78    |    mr    r24,r25
  46. };
  47.  
  48. StoreByte :: !Ptr !Int !Toolbox -> Toolbox;
  49. StoreByte ptr v tb = StoreByte1 ptr v;
  50.  
  51. StoreByte1 :: !Ptr !Int -> *Ptr;
  52. StoreByte1 p v = code (p=U,v=U)(q=A0){
  53.     instruction 0x9B190000    |    stb    r24,0(r25)
  54.     instruction    0x7F38CB78    |    mr    r24,r25
  55. };
  56.  
  57. /*
  58. IsEvaluated :: node !Toolbox -> (!Bool,!Toolbox);
  59. IsEvaluated node tb = (IsEvaluated1 node,tb);
  60.     
  61. IsEvaluated1 :: node -> Bool;
  62. IsEvaluated1 node = code (node=A0)(result=D0){
  63.     instruction 0x2010        ||    move.l    (a0),d0
  64.     instruction    0xD080        ||    add.l    d0,d0
  65.     instruction 0x9180        ||    subx.l    d0,d0
  66. };
  67. */
  68.