home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / m2 / CycloneModules.lha / modules / txt / ReqTools.mod < prev    next >
Text File  |  1996-07-29  |  4KB  |  158 lines

  1. IMPLEMENTATION MODULE ReqTools;
  2.  
  3. (* (C) Copyright 1994 Marcel Timmermans. All rights reserved. *)
  4.  
  5. FROM SYSTEM IMPORT ASSEMBLE,ADDRESS,ADR,TAG,CAST;
  6. FROM UtilityD IMPORT TagItemPtr,tagEnd;
  7. FROM String IMPORT Concat,Copy,Length;
  8. IMPORT ML:ModulaLib;
  9.  
  10. TYPE str110=ARRAY [0..110] OF CHAR;
  11.      str110Ptr=POINTER TO str110;
  12.  
  13. VAR
  14.   exec[4]:ADDRESS;
  15.  
  16. PROCEDURE CloseLibraryOwn(exec{14},n{9}: ADDRESS); CODE -414;
  17. PROCEDURE OpenLibraryOwn(exec{14},n{9}:ADDRESS;v{0}:LONGINT):ADDRESS;CODE -552;
  18.  
  19. (*$ EntryExitCode- *)
  20. PROCEDURE EZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  21.                       reqInfo{11}: ReqInfoPtr;
  22.                       argarray{2}: ADDRESS;
  23.                       tagList{8}: TagItemPtr): LONGINT;
  24. BEGIN
  25.   ASSEMBLE (
  26.     MOVE.L A6,-(A7)
  27.     MOVEA.L reqToolsBase(A4),A6
  28.     EXG.L D2,A4
  29.     JSR -$42(A6)
  30.     EXG.L D2,A4
  31.     MOVEA.L (A7)+,A6
  32.     RTS
  33.   END);
  34. END EZRequestA;
  35.  
  36. (*$ EntryExitCode- *)
  37. PROCEDURE EZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  38.                          reqInfo{11}: ReqInfoPtr;
  39.                          argarray{2}: ADDRESS;
  40.                          tag1{8}: TagItemPtr):LONGINT;
  41. BEGIN
  42.   ASSEMBLE (
  43.     MOVE.L A6,-(A7)
  44.     MOVEA.L reqToolsBase(A4),A6
  45.     EXG.L D2,A4
  46.     JSR -$42(A6)
  47.     EXG.L D2,A4
  48.     MOVEA.L (A7)+,A6
  49.     RTS
  50.   END);
  51. END EZRequestTags;
  52.  
  53. (*$ EntryExitCode- *)
  54. PROCEDURE EZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  55.                      reqInfo{11}: ReqInfoPtr;
  56.                      tagList{8}: TagItemPtr;
  57.                      argarray{2}: ADDRESS (*LONGINT*)): LONGINT;
  58. BEGIN
  59.   ASSEMBLE (
  60.     MOVE.L A6,-(A7)
  61.     MOVEA.L reqToolsBase(A4),A6
  62.     EXG.L D2,A4
  63.     JSR -$42(A6)
  64.     EXG.L D2,A4
  65.     MOVEA.L (A7)+,A6
  66.     RTS
  67.   END);
  68. END EZRequest;
  69.  
  70. (*$ EntryExitCode- *)
  71. PROCEDURE vEZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  72.                        reqInfo{11}: ReqInfoPtr;
  73.                        argarray{2}: ADDRESS;
  74.                        tagList{8}: TagItemPtr);
  75. BEGIN
  76.   ASSEMBLE (
  77.     MOVE.L A6,-(A7)
  78.     MOVEA.L reqToolsBase(A4),A6
  79.     EXG.L D2,A4
  80.     JSR -$42(A6)
  81.     EXG.L D2,A4
  82.     MOVEA.L (A7)+,A6
  83.     RTS
  84.   END);
  85. END vEZRequestA;
  86.  
  87. (*$ EntryExitCode- *)
  88. PROCEDURE vEZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  89.                           reqInfo{11}: ReqInfoPtr;
  90.                           argarray{2}: ADDRESS;
  91.                           tag1{8}: TagItemPtr);
  92. BEGIN
  93.   ASSEMBLE (
  94.     MOVE.L A6,-(A7)
  95.     MOVEA.L reqToolsBase(A4),A6
  96.     EXG.L D2,A4
  97.     JSR -$42(A6)
  98.     EXG.L D2,A4
  99.     MOVEA.L (A7)+,A6
  100.     RTS
  101.   END);
  102. END vEZRequestTags;
  103.  
  104. (*$ EntryExitCode- *)
  105. PROCEDURE vEZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
  106.                       reqInfo{11}: ReqInfoPtr;
  107.                       tagList{8}: TagItemPtr;
  108.                       argarray{2}: ADDRESS (*LONGINT*));
  109. BEGIN
  110.   ASSEMBLE (
  111.     MOVE.L A6,-(A7)
  112.     MOVEA.L reqToolsBase(A4),A6
  113.     EXG.L D2,A4
  114.     JSR -$42(A6)
  115.     EXG.L D2,A4
  116.     MOVEA.L (A7)+,A6
  117.     RTS
  118.   END);
  119. END vEZRequest;
  120.  
  121. PROCEDURE EasyFileReq(VAR fname:ARRAY OF CHAR; win:ADDRESS; title:ARRAY OF CHAR;
  122.                        x,y:INTEGER; VAR pattern:ARRAY OF CHAR; save:BOOLEAN):BOOLEAN;
  123. VAR filereq:FileRequesterPtr;
  124.     ok:BOOLEAN;
  125.     File,Dir:str110;
  126.     tagbuf: ARRAY[0..5] OF LONGINT;
  127. BEGIN
  128.   ok:=TRUE;
  129.   filereq:=AllocRequestA(TypeFileReq, NIL);
  130.   IF filereq#NIL THEN
  131.      File:='';
  132.      ChangeReqAttrA(filereq,TAG(tagbuf,fiDir,ADR(""),tagEnd));
  133.      INCL(filereq^.flags,fReqNoBuffer);
  134.      IF save THEN INCL(filereq^.flags,fReqSave); END;
  135.      IF x>=0 THEN filereq^.leftOffset:=x; END;
  136.      IF y>=0 THEN filereq^.topOffset:=y; END;
  137.      IF (x>=0) OR (y>=0) THEN filereq^.reqPos:=ReqPosTopLeftScr; END;
  138.      IF (FileRequest(filereq,ADR(File),ADR(title),
  139.                 TAG(tagbuf,Window,win,LockWindowTag,TRUE,tagEnd)) # NIL) THEN
  140.       Dir:=str110Ptr(filereq^.dir)^;
  141.       IF (Length(Dir)>0) AND (Dir[Length(Dir)-1]#':') THEN
  142.         Concat(Dir,'/');
  143.       END;
  144.       Concat(Dir,File);
  145.       Copy(fname,Dir);
  146.       ok:=TRUE;
  147.      END;
  148.      FreeRequest(filereq);
  149.   END;
  150. END EasyFileReq;
  151.  
  152. BEGIN
  153.  reqToolsBase:=OpenLibraryOwn(exec,ADR(ReqToolsName),ReqToolsVersion);
  154.  IF reqToolsBase=NIL THEN ML.TermOpenLib(ADR(ReqToolsName)); END;
  155. CLOSE
  156.  IF reqToolsBase#NIL THEN CloseLibraryOwn(exec,reqToolsBase); reqToolsBase:=NIL END;
  157. END ReqTools.
  158.