home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / AESFORMS.I < prev    next >
Encoding:
Modula Implementation  |  1993-10-29  |  5.7 KB  |  186 lines

  1. IMPLEMENTATION MODULE AESForms; (*$L-, N+, Y+*)
  2.  
  3.  
  4. (*  Megamax Modula-2 GEM-Library :  Die AES Formularfunktionen
  5.  *
  6.  *  Autor: Manuel Chakravarty           Erstellt :  05.11.87
  7.  *
  8.  *  Version   2.2     V#0018
  9.  *)
  10.  
  11. (*  05.11.87    | Übernahme von 'GEMBase' und 'GEMExt'
  12.  *  22.02.89    | Stack wird von 'FormButton' und 'FormKeyboard' jetzt
  13.  *                richtig abgeräumt.
  14.  *  27.06.89    | Schönheitsoperationen
  15.  *  ???????? TT | REF-Parm.
  16.  *  02.04.90    | Anpassung an public arrays
  17.  *  01.02.91 TT | FormAlert: Null-Terminierung raus, da unnötig.
  18.  *  08.04.91 TT | FormKeyboard: 'ch' & 'nextObj' endlich vertauscht.
  19.  *)
  20.  
  21.  
  22. FROM    SYSTEM          IMPORT ASSEMBLER;
  23.  
  24. FROM    GrafBase        IMPORT Rectangle;
  25.  
  26. FROM    GEMGlobals      IMPORT PtrObjTree, GemChar;
  27.  
  28. IMPORT  GEMShare;
  29.  
  30.  
  31. (*$I GEMOPS.ICL *)
  32.  
  33.  
  34. PROCEDURE FormCenter (tree: PtrObjTree): Rectangle;
  35.  
  36.   BEGIN
  37.     ASSEMBLER
  38.         MOVE.L      pubs,A0
  39.         MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  40.         MOVE.W      #FORM_CENTER,(A3)+
  41.         JSR         aes_if
  42.         MOVE.L      pubs,A0
  43.         MOVE.L      pubArrays.aINTOUT+2(A0),(A3)+
  44.         MOVE.L      pubArrays.aINTOUT+6(A0),(A3)+
  45.      END;
  46.    END FormCenter;
  47.     
  48. PROCEDURE FormDial (flag: FormDialMode; little, big: Rectangle);
  49.  
  50.   BEGIN
  51.     ASSEMBLER
  52.         MOVE.L      pubs,A0
  53.         LEA         pubArrays.aINTIN+18(A0),A0
  54.         MOVEQ       #3,D0
  55. loop
  56.         MOVE.L      -(A3),-(A0)
  57.         DBF         D0,loop
  58.         MOVE.W      -(A3),-(A0)
  59.         MOVE.W      #FORM_DIAL,(A3)+
  60.         JSR         aes_if
  61.         ;JSR         testINTOUT0 !!!  GEM bringt immer aINTOUT[0]=0, ohne Grund!
  62.     END;
  63.   END FormDial;
  64.         
  65. PROCEDURE FormDo (tree: PtrObjTree; first: CARDINAL; VAR retBut: CARDINAL);
  66.  
  67.   BEGIN
  68.     ASSEMBLER
  69.         MOVE.L  -(A3),-(A7)
  70.         
  71.         MOVE.L  pubs,A0
  72.         MOVE.W  -(A3),pubArrays.aINTIN(A0)
  73.         MOVE.L  -(A3),pubArrays.ADDRIN(A0)
  74.         MOVE.W  #FORM_DO,(A3)+
  75.         JSR     aes_if
  76.         
  77.         MOVE.L  pubs,A0
  78.         MOVE.L  (A7)+,A1
  79.         MOVE.W  pubArrays.aINTOUT(A0),(A1)
  80.     END;
  81.   END FormDo;
  82.  
  83. PROCEDURE FormAlert (    defBut: CARDINAL;
  84.                      REF str   : ARRAY OF CHAR;
  85.                      VAR retBut: CARDINAL);
  86.  
  87.   BEGIN
  88.     ASSEMBLER
  89.         MOVE.L      -(A3),-(A7)
  90.         ; nicht nötig: JSR         stringIntoCFormat   ; schiebe string mit #0 auf den A7-Stack
  91.         ; stattdessen:
  92.         SUBQ.L      #2,A3
  93.         MOVE.L      -(A3),D2
  94.         MOVE.L      pubs,A0
  95.         MOVE.L      D2,pubArrays.ADDRIN(A0)    ; ADR(astring) steht nach 'stringIn..' in D2
  96.         MOVE.W      -(A3),pubArrays.aINTIN(A0)
  97.         MOVE.W      #FORM_ALERT,(A3)+
  98.         JSR         aes_if
  99.         ; nicht nötig (s.o.): MOVE.L      (A7),A7             ; String wieder vom Stack entfernen
  100.         MOVE.L      (A7)+,A1
  101.         MOVE.L      pubs,A0
  102.         MOVE.W      pubArrays.aINTOUT(A0),(A1)
  103.     END;
  104.   END FormAlert;
  105.  
  106. PROCEDURE FormError (errNo: INTEGER);
  107.  
  108.   BEGIN
  109.     ASSEMBLER
  110.         MOVE.L      pubs,A0
  111.         MOVE.W      -(A3),pubArrays.aINTIN(A0)
  112.         MOVE.W      #FORM_ERROR,(A3)+
  113.         JSR         aes_if
  114.     END;
  115.   END FormError;
  116.  
  117. PROCEDURE FormKeyboard (    tree   : PtrObjTree;
  118.                             index  : CARDINAL;
  119.                         VAR nextObj: CARDINAL;
  120.                         VAR ch     : GemChar;
  121.                         VAR cont   : BOOLEAN);
  122.  
  123.   BEGIN
  124.     ASSEMBLER
  125.         MOVE.L  -(A3),-(A7)     ; cont
  126.         MOVE.L  -(A3),A1        ; ch
  127.         MOVE.L  A1,-(A7)
  128.         MOVE.L  -(A3),-(A7)     ; nextObj
  129.         
  130.         MOVE.L  pubs,A0
  131.         MOVE.W  -(A3),pubArrays.aINTIN(A0)
  132.         MOVE.L  -(A3),pubArrays.ADDRIN(A0)
  133.         MOVE.W  (A1),pubArrays.aINTIN+2(A0)  ; ch
  134.         CLR.W   pubArrays.aINTIN+4(A0)
  135.         MOVE.W  #FORM_KEYBD,(A3)+
  136.         JSR     aes_if
  137.         
  138.         MOVE.L  pubs,A0
  139.         MOVE.L  (A7)+,A1        ; VAR nextObj
  140.         MOVE.W  pubArrays.aINTOUT+2(A0),(A1)
  141.         MOVE.L  (A7)+,A1        ; VAR ch
  142.         MOVE.W  pubArrays.aINTOUT+4(A0),(A1)
  143.         
  144.         TST.W   pubArrays.aINTOUT(A0)
  145.         SNE     D0
  146.         ANDI.W  #1,D0
  147.         MOVE.L  (A7)+,A1
  148.         MOVE.W  D0,(A1)
  149.     END;
  150.   END FormKeyboard;
  151.                         
  152. PROCEDURE FormButton (    tree   : PtrObjTree;
  153.                           index  : CARDINAL;
  154.                           clicks : CARDINAL;
  155.                       VAR nextObj: CARDINAL;
  156.                       VAR cont   : BOOLEAN);
  157.                       
  158.   BEGIN
  159.     ASSEMBLER
  160.         MOVE.L  -(A3),-(A7)
  161.         MOVE.L  -(A3),A1
  162.         MOVE.L  A1,-(A7)
  163.         
  164.         MOVE.L  pubs,A0
  165.         MOVE.W  -(A3),pubArrays.aINTIN+2(A0)
  166.         MOVE.W  -(A3),pubArrays.aINTIN(A0)
  167.         MOVE.L  -(A3),pubArrays.ADDRIN(A0)
  168.         MOVE.W  #FORM_BUTTON,(A3)+
  169.         JSR     aes_if
  170.         
  171.         MOVE.L  pubs,A0
  172.         MOVE.L  (A7)+,A1
  173.         MOVE.W  pubArrays.aINTOUT+2(A0),(A1)
  174.         
  175.         TST.W   pubArrays.aINTOUT(A0)
  176.         SNE     D0
  177.         ANDI.W  #1,D0
  178.         MOVE.L  (A7)+,A1
  179.         MOVE.W  D0,(A1)
  180.     END;
  181.   END FormButton;
  182.  
  183.  
  184. END AESForms.
  185. (* $FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$00000393$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3$FFF8BCD3Ç$00000F68T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$FFEB25DC$FFEB25DC$00000F04$00000F15$00000EE8$00000ED5$00000EF2$FFEB25DC$00000FCA$00001021$FFEB25DC$00000E34$00000E50$FFEB25DC$00000D9B$00000F68ÇÇÇ*)
  186.