home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / extensions / jd / _newprogs / _installjdlibs.amos / _installjdlibs.amosSourceCode
AMOS Source Code  |  1994-03-13  |  8KB  |  291 lines

  1. Set Buffer 20
  2.  
  3. Resource Screen Open 0,700,256,0
  4. Flash Off 
  5. Hide : Show 
  6. Limit Mouse 
  7. Paper 6 : Pen 7
  8. Cls 
  9.  
  10. V#=0
  11. Restore DAT1
  12. Read LIBS
  13.  
  14. Global ABK,ADAT,BK,STMX,STAD,LIBS
  15.  
  16. STMX=64
  17. Dim ST$(STMX)
  18. Dim LIB$(LIBS),VER$(LIBS),SLOT$(LIBS),SLOT(LIBS)
  19. Dim PST$(LIBS),PL(LIBS)
  20. Dim SUC(LIBS),NCOP(LIBS),SIB(LIBS),LIBLEN(LIBS)
  21. Global LIB$(),ST$(),LIBLEN()
  22. BK=10
  23.  
  24. Restore DAT2
  25. For C=1 To LIBS
  26.    Read LIB$(C),VER$(C),SLOT$(C),LIBLEN(C)
  27.    LIB$(C)="AMOSPro_"+LIB$(C)+".Lib"
  28. Next 
  29.  
  30. DAT1:
  31. Data 3
  32. DAT2:
  33. Data "JDColour","V1.4","Slot 20",9364
  34. Data "Prt","V1.3","Slot 21",3580
  35. Data "JD","V5.3","Slot 22",37804
  36.  
  37. For C=1 To LIBS
  38.    PST$(C)=LIB$(C)+" - "+VER$(C)+" - "+SLOT$(C)
  39.    PL(C)=Len(PST$(C))
  40. Next 
  41.  
  42. For C=1 To LIBS
  43.    PL=Max(PL,PL(C))
  44. Next 
  45.  
  46. For C=1 To LIBS
  47.    If PL(C)<PL Then PST$(C)=Space$(PL-PL(C))+PST$(C)
  48. Next 
  49.  
  50. Pen 7 : Curs Off : Print : Centre "Installiere JD.Libs" : Print : Print : Pen 3
  51.  
  52. For C=1 To LIBS
  53.    Print : Centre PST$(C)
  54. Next 
  55.  
  56. Print 
  57. Pen 4 : Paper 7 : TEST_FILES : If Param=1 Then Goto _END2
  58.  
  59. Pen 3 : Paper 6
  60. Print : Print : Centre "Die neuen Libs sind leider nicht 100% kompatibel zu den ï¿½lteren Versionen!"
  61. Print : Centre "Bitte alle *.AMOS-Files, die Befehle der Libs beinhalten, als *.ASC-File speichern!"
  62. Pen 7
  63.  
  64. REQUESTER["Bereit zum Installieren?"," Ja ","Nein"]
  65. If Param=2 Then Goto _END3
  66.  
  67. Paper 6 : Cls : Print : Centre "Installiere JD.Libs" : Print : Print : Pen 3
  68.  
  69. BNAME$="S:AMOSPro_Interpreter_Config"
  70.  
  71. MN_LOADIT[BNAME$]
  72.  
  73. _CHECK_AMOS : V#=Param# : If V#<1.1 Then Pen 4 : Paper 7 : Centre "F�r die Libs ist AMOSPro V1.1 oder h�her erforderlich!" : End 
  74.  
  75. For C=1 To LIBS
  76.    SLOT(C)=Val(SLOT$(C)-"Slot ")+15
  77. Next 
  78.  
  79. For C=1 To LIBS
  80.    Locate ,4+C : Centre LIB$(C) : Print 
  81.    VER$="" : V#=0.0
  82.    If ST$(SLOT(C))="" Then ST$(SLOT(C))=LIB$(C) : SUC(C)=1 : BS=1
  83.    If SUC(C)=1 Then Goto SKIP
  84.    If Upper$(ST$(SLOT(C)))=Upper$(LIB$(C)) Then VERSION[ST$(1)+LIB$(C)] : VER$=Param$
  85.    If VER$=VER$(C) Then SUC(C)=1 : NCOP(C)=1 : Goto SKIP
  86.    V#=Val(VER$-"V")
  87.    If V#>0.0 Then If V#<Val(VER$(C)-"V") Then SIB(C)=1 : Goto SKIP
  88.    Centre LIB$(C)+" konnte nicht eingebunden werden!" : Print 
  89.    Centre SLOT$(C)+" ist belegt: "+ST$(SLOT(C)) : Print 
  90.    Memorize X : Memorize Y 
  91.    REQUESTER["Soll ich neu belegen?"," Ja ","Nein"] : SIB(C)=Param
  92.    Remember X : Remember Y 
  93.    Paper 6 : Pen 3
  94.    SKIP:
  95. Next 
  96.  
  97. For C=1 To LIBS
  98.    If SUC(C)=0 Then If SIB(C)=1 Then ST$(SLOT(C))=LIB$(C) : SUC(C)=1 : BS=1
  99. Next 
  100.  
  101. SUC=0
  102. For C=1 To LIBS
  103.    SUC=SUC+SUC(C)
  104. Next 
  105. If SUC=0 Then Goto _END
  106. SUC=0
  107.  
  108. If BS=1 Then MN_SAVEIT[BNAME$]
  109.  
  110. For C=1 To LIBS
  111.    If NCOP(C)=1 Then SUC(C)=0 : Goto NE
  112.    If SUC(C)=1 Then FILE_COPY["JD_Install:APSystem/"+LIB$(C),ST$(1)+LIB$(C)] : SUC(C)=Param
  113.    NE:
  114. Next 
  115.  
  116. Print : Print : Print 
  117. For C=1 To LIBS
  118.    If SUC(C)<>0 Then Centre "Konnte "+LIB$(C)+" nicht kopieren!" : SUC=1 : Print 
  119. Next 
  120.  
  121. NCOP=0
  122. For C=1 To LIBS
  123.    NCOP=NCOP+NCOP(C)
  124. Next 
  125. Print 
  126. If NCOP=3 Then SUC=2 : Centre "Die aktuellen Libs waren bereits installiert!"
  127. If SUC=0 Then Centre "Installation erfolgreich abgeschlossen!"
  128. If SUC=1 Then Centre "Bitte erforderliche Libs per Hand kopieren!"
  129.  
  130. _END:
  131. Print : Print : Centre "Die neuen Accessories und Proceduren bitte falls"
  132. Print : Centre "erw�nscht per Hand kopieren und einbinden!"
  133. _END2:
  134. Erase All 
  135. Wait 5*50
  136. Cls 
  137. Locate 0,15
  138. If SUC=0 Then Centre Border$("Viel Spa� mit den neuen AMOSPro-Erweiterungen",1)
  139. If SUC<>0 Then Centre Border$("Auf Wiedersehen!",1)
  140. Wait 5*50
  141. Erase BK
  142. End 
  143. _END3:
  144. Erase BK
  145. Cls 
  146. Locate 0,15 : Centre Border$("Na, dann eben nicht... Schade!",1)
  147. Wait 25
  148. Shoot 
  149. Wait 2*50
  150. End 
  151.  
  152. Procedure MN_LOADIT[F$]
  153.    If Exist(F$)=0 Then Pen 4 : Paper 7 : Centre "Konfiguration nicht gefunden!" : End 
  154.    Open In 1,F$ : L=Lof(1) : Close 
  155.    Reserve As Work BK,L+8*1024
  156.    Bload F$,Start(BK) : ABK=Start(BK)
  157.    If Peek$(ABK,4)="PId1"
  158.       STAD=ABK+Leek(ABK+4)+8
  159.       If Peek$(STAD,4)="PIt1"
  160.          ADAT=ABK+8
  161.          A=STAD+8
  162.          For ST=1 To STMX
  163.             L=Peek(A+1) : Exit If L=$FF
  164.             ST$(ST)=Peek$(A+2,L)
  165.             Add A,L+2
  166.          Next 
  167.       End If 
  168.    End If 
  169. End Proc
  170. Procedure MN_SAVEIT[F$]
  171.    If Exist(F$+".old") Then Kill F$+".old"
  172.    Rename F$ To F$+".old"
  173.    AP=STAD+8
  174.    For S=1 To STMX
  175.       Poke AP,0
  176.       Poke AP+1,Len(ST$(S))
  177.       Poke$ AP+2,ST$(S)
  178.       Add AP,2+Len(ST$(S))
  179.    Next 
  180.    Poke AP,0 : Poke AP+1,$FF : Add AP,2
  181.    Loke STAD+4,AP-STAD-8
  182.    AP=AP+AP mod 2
  183.    Bsave F$,ABK To AP
  184. End Proc
  185. Procedure TEST_FILES
  186.    F=0
  187.    For C=1 To LIBS
  188.       F$=""
  189.       F$="JD_Install:APSystem/"+LIB$(C)
  190.       If Exist(F$)=0 Then Goto FEHLER
  191.       FIND_LENGTH[F$]
  192.       FILE_LENGTH=Param
  193.       If FILE_LENGTH<>LIBLEN(C) Then Goto FEHLER2
  194.       Goto RES
  195.       FEHLER:
  196.       F=1
  197.       Print : Centre F$+" existiert nicht!" : Goto RES
  198.       FEHLER2:
  199.       F=1
  200.       Print : Centre F$+" hat eine falsche L�nge!"
  201.       RES:
  202.    Next 
  203. End Proc[F]
  204. Procedure FILE_COPY[SOURCE$,DEST$]
  205.    SUC=1
  206.    If Exist(SOURCE$)=0 Then Pop Proc[SUC]
  207.    FIND_LENGTH[SOURCE$]
  208.    FILE_LENGTH=Param
  209.    A$=Disc Info$("SYS:") : P=Instr(A$,":") : F=Val(Mid$(A$,P+1))
  210.    If F>LL+1024 Then If Exist(DEST$+".old") Then Kill DEST$+".old"
  211.    If F>LL+1024 Then If Exist(DEST$) Then Rename DEST$ To DEST$+".old"
  212.    If F<=LL+1024 Then If Exist(DEST$) Then Kill DEST$
  213.    LONG_FILE_COPY[SOURCE$,DEST$,FILE_LENGTH]
  214.    SUC=0
  215. End Proc[SUC]
  216. Procedure FIND_LENGTH[SOURCE$]
  217.    Open In 1,SOURCE$
  218.    L=Lof(1)
  219.    Close 
  220. End Proc[L]
  221. Procedure LONG_FILE_COPY[SOURCE$,DEST$,L]
  222.    VBK=11
  223.    Reserve As Work VBK,L
  224.    Centre "Lade "+SOURCE$
  225.    Bload SOURCE$,Start(VBK)
  226.    Centre "Speichere "+SOURCE$
  227.    Bsave DEST$,Start(VBK) To Start(VBK)+L
  228.    Centre SOURCE$+" ... installiert" : Print 
  229.    Erase VBK
  230. End Proc
  231. Procedure VERSION[F$]
  232.    VBK=11
  233.    Open In 1,F$ : L=Lof(1) : Close 
  234.    Reserve As Work VBK,L
  235.    Bload F$,Start(VBK) : VABK=Start(VBK)
  236.    For X=VABK+L-20 To VABK+L
  237.       If Peek$(X,6)="$VER: " Then V$=Peek$(X+6,3) : Exit 
  238.    Next 
  239.    V$="V"+V$
  240.    Erase VBK
  241. End Proc[V$]
  242. Procedure REQUESTER[A$,B$,C$]
  243.    Reserve Zone 2
  244.    Show 
  245.    While Mouse Key=1 : Wend 
  246.    BREITE=Screen Width : HOEHE=Screen Height
  247.    HALB=BREITE/2 : TBREITE=BREITE/8 : HBREIT=TBREITE/2 : THOEHE=HOEHE/8-1 : TBREITE=TBREITE-1
  248.    A=Len(A$)*8+60
  249.    B=Len(B$)*8+60
  250.    C=Len(C$)*8+60
  251.    LASTLENG=Max(A,B+C)
  252.    Get Block 241,0,0,BREITE,HOEHE
  253.    Ink 0 : Bar HALB-LASTLENG/2+5,HOEHE-40 To HALB+LASTLENG/2+5,HOEHE-5
  254.    Ink 2 : Bar HALB-LASTLENG/2,HOEHE-45 To HALB+LASTLENG/2,HOEHE-10
  255.    Ink 5 : Box HALB-LASTLENG/2,HOEHE-45 To HALB+LASTLENG/2,HOEHE-10
  256.    Paper 2 : Pen 7
  257.    Locate 1,THOEHE-4 : Centre A$
  258.    X1=HALB-LASTLENG/2+20 : X2=HALB-LASTLENG/2+B-20
  259.    X3=HALB+LASTLENG/2-C+20 : X4=HALB+LASTLENG/2-20
  260.    Box X1,HOEHE-27 To X2,HOEHE-15
  261.    Box X3,HOEHE-27 To X4,HOEHE-15
  262.    X Mouse=X Hard(X1+(X2-X1)/2) : Y Mouse=Y Hard(HOEHE-21)
  263.    Curs Off 
  264.    Locate HBREIT-(LASTLENG-60)/16,THOEHE-2 : Print Zone$(B$,1)
  265.    Locate HBREIT+(LASTLENG-60)/16-Len(C$),THOEHE-2 : Print Zone$(C$,2)
  266.    REQUES1:
  267.    IN=Mouse Zone
  268.    If Inkey$=Chr$(13) Then Z=1 : Goto REQUES2
  269.    If Inkey$=Chr$(27) Then Z=2 : Goto REQUES2
  270.    If Mouse Key=1 and IN=1 Then Z=1 : Goto REQUES2
  271.    If Mouse Key=1 and IN=2 Then Z=2 : Goto REQUES2
  272.    Goto REQUES1
  273.    REQUES2:
  274.    Put Block 241,0,0
  275.    Del Block 241
  276.    Hide 
  277. End Proc[Z]
  278. Procedure _CHECK_AMOS
  279.    F$=ST$(1)
  280.    F$=F$-"APSystem/"
  281.    F$=F$+"AMOSPro"
  282.    VBK=11
  283.    Open In 1,F$ : L=Lof(1) : Close 
  284.    Reserve As Work VBK,L
  285.    Bload F$,Start(VBK) : VABK=Start(VBK)
  286.    For X=VABK To VABK+L
  287.       If Peek$(X,6)="$VER: " Then V$=Peek$(X+6,3) : Exit 
  288.    Next 
  289.    V#=Val(V$)
  290.    Erase VBK
  291. End Proc[V#]