home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / utility / midinet.arc / ANETMCTR.MOD
Text File  |  1992-10-31  |  9KB  |  214 lines

  1. MODULE Control; (* by fred brooks logictek san diego ca PD software *)
  2.  
  3. IMPORT GEMVDIbase, GEMAESbase, AESMenus, AESForms, AESObjects, AESEvents,
  4.        AESResources ;
  5.  
  6. FROM   AESGraphics      IMPORT GrafMouse;
  7.  
  8. FROM   AESObjects       IMPORT ObjectDraw;
  9.  
  10. FROM   MYLIB    IMPORT  InitResource,Terminate,
  11.                         DeselectObject,
  12.                         dTree,MenuTree,x,y,w,h,InitWindow,CloseWindow;
  13.  
  14. FROM   SYSTEM   IMPORT  ADR,ADDRESS,CODE,TSIZE;
  15.  
  16. FROM   Strings  IMPORT  String, Concat;
  17.  
  18. FROM   XBIOS    IMPORT  SuperExec;
  19.  
  20. FROM   BIOS     IMPORT  DriveSet;
  21.  
  22. FROM   GEMDOS   IMPORT  ExecMode,Exec,Open,Close,Read,Write,Create;
  23.  
  24. FROM   Streams  IMPORT  StreamKinds;
  25.  
  26. FROM   M2Conversions    IMPORT  ConvertToCardinal;
  27.  
  28. TYPE
  29.   SequenceNr  = [0..1];
  30.   control     = RECORD
  31.                  magic          :       LONGCARD;
  32.                  USER           :       CARDINAL;
  33.                  REMOTEUSER     :       CARDINAL;
  34.                  reset          :       BOOLEAN;
  35.                  networkactive  :       BOOLEAN;
  36.                  remotedrive    :       CARDINAL;
  37.                  drivemap       :       DriveSet;
  38.                 nextframetosend :       ARRAY [0..15] OF SequenceNr;
  39.                 frameexpected   :       ARRAY [0..15] OF SequenceNr;
  40.                 sendreset       :       BOOLEAN;
  41.                END;
  42.  
  43.   consave     = RECORD
  44.                  magic          :       LONGCARD;
  45.                  USER           :       CARDINAL;
  46.                  REMOTEUSER     :       CARDINAL;
  47.                  reset          :       BOOLEAN;
  48.                  networkactive  :       BOOLEAN;
  49.                 END;
  50. CONST
  51.        resourcefilename = "ANETMIDI.RSC" ;
  52.        RTS              = 04E75H ;
  53.  
  54. CONST
  55.      ABOUT = 1 ;
  56.    ABOUTOK = 1 ;
  57.       MENU = 0 ;
  58.       DESK = 3 ;
  59.       MODE = 5 ;
  60.       FILE = 4 ;
  61.     USERID = 6 ;
  62.    OPTIONS = 7 ;
  63.        SEQ = 8 ;
  64.   ABOUTNET = 11 ;
  65.       QUIT = 21 ;
  66.       LOAD = 20 ;
  67.        INT = 23 ;
  68.      MODE2 = 25 ;
  69.      MODE1 = 24 ;
  70.   REBOOTOK = 27 ;
  71.      USERID1 = 29 ;
  72.      USERID2 = 30 ;
  73.      USERID3 = 31 ;
  74.      USERID5 = 33 ;
  75.      USERID4 = 32 ;
  76.      USERID6 = 34 ;
  77.      USERID7 = 35 ;
  78.      USERID9 = 37 ;
  79.      USERID8 = 36 ;
  80.     USERID10 = 38 ;
  81.     USERID11 = 39 ;
  82.     USERID13 = 41 ;
  83.     USERID12 = 40 ;
  84.     USERID14 = 42 ;
  85.     USERID15 = 43 ;
  86.     USERID16 = 44 ;
  87.       DRVA = 46 ;
  88.       DRVB = 47 ;
  89.       DRVD = 49 ;
  90.       DRVC = 48 ;
  91.       DRVE = 50 ;
  92.       DRVF = 51 ;
  93.      SEQUP = 53 ;
  94.        S00 = 54 ;
  95.        S10 = 55 ;
  96.        S11 = 57 ;
  97.        S01 = 56 ;
  98.  
  99. VAR    status                              : INTEGER;
  100.        resourcename,nulls,on,off,netdrv    : ARRAY [0..16] OF CHAR ;
  101.        tempchar                            : ARRAY [0..2] OF CHAR;
  102.        char                                : CHAR;
  103.        result,handle                       : INTEGER ;
  104.        done,OK                             : BOOLEAN;
  105.        Cptr    [0210H]                     : ADDRESS;
  106.        Dptr    [0214H]                     : DriveSet;
  107.        Mptr    [0218H] ,count              : LONGCARD;
  108.        C                                   : POINTER TO control;
  109.        CSAVE                               : POINTER TO consave;
  110.        drvnr,i,usernumber,e                : CARDINAL;
  111.        idnumber                            : ARRAY [0..15] OF String;
  112.  
  113.  
  114.   PROCEDURE DoAboutDialog ;
  115.   BEGIN
  116.         AESResources.ResourceGetAddr(GEMAESbase.RTree,ABOUT,dTree) ;
  117.         AESForms.FormCenter(dTree,x,y,w,h) ;
  118.         AESForms.FormDialogue(GEMAESbase.FormStart,0,0,0,0,x,y,w,h) ;
  119.         AESForms.FormDialogue(GEMAESbase.FormGrow,0,0,0,0,x,y,w,h) ;
  120.         ObjectDraw(dTree,0,10,x,y,w,h) ;
  121.         result := AESForms.FormDo(dTree,-1) ;
  122.         DeselectObject(ABOUT,ABOUTOK) ; 
  123.         AESForms.FormDialogue(GEMAESbase.FormShrink,0,0,0,0,x,y,w,h) ;
  124.         AESForms.FormDialogue(GEMAESbase.FormFinish,0,0,0,0,x,y,w,h) ;
  125.   END DoAboutDialog ;
  126.  
  127.  
  128. (* ------------------------------------------------------------------- *)
  129.  
  130.  
  131. PROCEDURE Events ;
  132. (* Handle resource events *)
  133. VAR
  134.   pipeBuff : ARRAY [0..9] OF INTEGER ;
  135.  
  136.  
  137.   PROCEDURE SelectMenu( Menu, Item : INTEGER ) ;
  138.   BEGIN
  139.  
  140.       CASE Menu OF
  141.       DESK     : IF Item = ABOUTNET THEN
  142.                    DoAboutDialog ;
  143.                  END                        ;       |
  144.       FILE     : CASE Item OF
  145.                    LOAD     : C^.networkactive:=(NOT C^.networkactive); |
  146.                    QUIT     : done := TRUE  ;                           | 
  147.                  ELSE
  148.                  END ;
  149.                  IF C^.networkactive THEN 
  150.                     AESMenus.MenuText(MenuTree,LOAD,ADR(on));
  151.                  ELSE
  152.                     AESMenus.MenuText(MenuTree,LOAD,ADR(off));
  153.                  END;                                                   |
  154.  
  155.       MODE     : CASE Item OF
  156.                    INT        : Create("ANETMIDI.INT",0,handle);
  157.                    count:=TSIZE(consave);
  158.                    Write(handle,count,CSAVE);
  159.                    OK:=Close(handle);  |
  160.                    REBOOTOK   : CODE(03F3CH,0020H,04E41H,
  161.                                      042B9H,0,0420H,042B9H,0,043AH,
  162.                                      02079H,0,4,04ED0H)  ;       | 
  163.                  ELSE
  164.                  END ;                              |
  165.  
  166.       USERID     : CASE Item OF
  167.                    USERID1    : i:=0  ;       | 
  168.                    USERID2    : i:=1  ;       | 
  169.                    USERID3    : i:=2  ;       | 
  170.                    USERID4    : i:=3  ;       | 
  171.                    USERID5    : i:=4  ;       | 
  172.                    USERID6    : i:=5  ;       | 
  173.                    USERID7    : i:=6  ;       | 
  174.                    USERID8    : i:=7  ;       | 
  175.                    USERID9    : i:=8  ;       | 
  176.                    USERID10    : i:=9   ;       | 
  177.                    USERID11    : i:=10  ;       | 
  178.                    USERID12    : i:=11  ;       | 
  179.                    USERID13    : i:=12  ;       | 
  180.                    USERID14    : i:=13  ;       | 
  181.                    USERID15    : i:=14  ;       |
  182.                    USERID16    : i:=15  ;       | 
  183.                  ELSE
  184.                  END ;
  185.                  AESMenus.MenuItemCheck(MenuTree,29+C^.REMOTEUSER,0);
  186.                  FOR e:=0 TO 30 DO
  187.                    IF (idnumber[0][e]=0C) OR (idnumber[0][e]= "=") THEN
  188.                        idnumber[0][e]:=0C;
  189.                    END;
  190.                  END;
  191.                  ConvertToCardinal(idnumber[0],OK,usernumber);
  192.                  IF OK THEN
  193.                     C^.USER := usernumber; (* set local id *)
  194.                  END;
  195.                  FOR e:=0 TO 30 DO
  196.                    IF (idnumber[i][e]=0C) OR (idnumber[i][e]= "=") THEN
  197.                        idnumber[i][e]:=0C;
  198.                    END;
  199.                  END;
  200.                  ConvertToCardinal(idnumber[i],OK,usernumber);
  201.                  IF OK THEN
  202.                     C^.REMOTEUSER := usernumber; (* set remote id *)
  203.                  END;
  204.                  AESMenus.MenuItemCheck(MenuTree,29+C^.REMOTEUSER,1); |
  205.  
  206.       SEQ      : CASE Item OF
  207.                    SEQUP    : C^.sendreset:= TRUE ; |
  208.                  ELSE
  209.                  END ;   |
  210.     ELSE
  211.     END ; 
  212.     (* put header back     : i    : ineODE TEoguegic                    US [0eto :Ç DOL⓪n ;
  213.    gic  IMM   Ms  EM TE :
  214. FRO2  SIMPO2C     : CTEIZTEODE(✓ז@ ⇧A°`~)⇧&dO ÿFז⑧éC ÅIAa®N⇨±ז✓✓A⓪:2î⑧a@)יÿFÿFúסג[)£Cø&AAJϕכÿ⌐gyגºÿFÿd±ז³@ÿFú¢g#$qΣי|b)τ)@ XAA^££ndגAA^τ,dτג[⇧Cøג[N⇨π[ϕ|AA^τ[¶ºYףºל³ןúסL)י⌐g##LLסס<z)י⌐Jז@ÿFÿ'f④%££#¡¢CàגögC:Œ±ז&Aπ[ÿFÿןןC⇨ϕº@AAA[&ססלñ)י#¡l{%))hç<N@±hçCף&U①צרb╱ף{⑨CøץτºA°2add⇧⇧4aÀגº♪A&AπijC:③❎³ןùoÄ\✓%⇨ϕτé`¡JJ⇦⑤º#¡l\✓♪)``דA&JgC:⇨⇩Jז✓✓)τזüé`$Jז&Aπ⑧é⇩)g,גt<Nãπ[ÿ~)iAA^τºÿLLקC ⑧a④%ə¬[כ@AaÀ¶ºJז✓✓ז@⑦əàiLLסYף♪d±F⇨Æϕº⇧⇧##ij[&✓כa✓✓⓪:$✓✓ג[⇧əLL✓✓גaÀaH①    Pœ %①)gg⇨⑥✓gJgÑX✓éé,œ LLסf④π[ÿf⌐Yז✓✓⓪ªז@⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦Poo¶ÿ~)4∧~AN⇨π:Œl|⌠!WJז✓✓⓪ªג¥££]£⇧⇧)ש%%✓❎%aÀaסNכ%aAA^τº££מBJ44i⇨⇨ØëA¢(Æ44X@ÿ⇧)£ëB±זהIA44Ç⇧GJⁿ@ACë♪♪ijNÇa¡`③❎①IJAAⁿ♪Aô✓a` )τ✓³ן2NÇ8⓪|ⁿב ◆$⇦╱⓪ `⑧⇧◆0   \@⇧`⑨╱⇨  ijy⇨    ⓪³ƒ⇧⇦ ⓪`בב?@⇧@⑧⑧α◆⇧s◆◆wy⇨<!✓·Ç⇧⇨τ⇧ S:::I°╱D`@⇨ןהp#⇩⇨α'⑧⇨t⇨✓â⑨◆Y⇧✓✓◆Ç≡c⑨°ⁿH<⑧✓7ⁿ②βôxÿ≥⇧✓⑧IJ`⇩ij✓xxij|⑧ &IJ`α"⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦⇩ו"Æ⇦  3~ÇÇijDZ⓪③⇦2    ⓪@Ç~Ç◆Ç⇩^⓪Ç∩·ij`````````````````````````````````````````````````````````````⇧⑧!@ז0⇨⇦<®`①z⇨