home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / SKIPdatV1,3.LHA / source / SkipDat.AMOS / SkipDat.amosSourceCode < prev   
Encoding:
AMOS Source Code  |  1994-08-01  |  72.1 KB  |  1,877 lines

  1. Set Buffer 400
  2. Rem *********************************************  
  3. Rem * Skiplistenverwaltung V1.2                 *  
  4. Rem * Zweiter Versuch nach Komplettl�schung     *
  5. Rem * des ersten Sources, der bis V1.2 gediehen *
  6. Rem * war. (C) 1993 by Tom. Alpha-Stadium       *
  7. Rem *********************************************
  8. '
  9. Rem WB2.0 Routinen einschalten 
  10. INITIALISE
  11. REAL3DMESSAGE[170,71,305,110,True,20,25," Copyright Notiz :-)","SkipDat V1.3 Release","(c) 01.08.1994 by","Tom Beyer","Am Markt 3","18311 Ribnitz-Damgarten / Germany","","Spezialversion f�r TT BBS/Osiris","OK",""]
  12. Repeat 
  13.    A$=Inkey$ : A=Asc(A$)
  14.    If A=13 Then Goto LLO1
  15. Until Mouse Key=1 and Mouse Zone=1
  16. LLO1:
  17. '
  18. Hide On 
  19. Rem Hide On : Rem Mauszeiger weg 
  20. Rem *** Dimensionierungen festlegen ***
  21. Z=1 : Rem Z�hler setzen
  22. DTF=5000 : Rem maximale Eintr�ge
  23. Dim ZA$(DTF)
  24. Dim ZB$(DTF)
  25. Dim ZC$(DTF)
  26. Dim ZD$(DTF)
  27. Dim ZE$(DTF)
  28. Dim ZF$(DTF)
  29. Dim ZG$(DTF)
  30. Dim ZH$(DTF)
  31. Dim ZI$(DTF)
  32. Dim ZJ$(DTF)
  33. Dim RQDAT$(255,10) : Rem f�r Filerequester
  34. Rem **** gemeinsam von allen Proceduren genutzte Variablen *** 
  35. Global Z,B,ZA$(),ZB$(),ZC$(),ZD$(),ZE$(),ZF$(),ZG$(),ZH$(),ZI$(),ZJ$(),A$,A,G,L,BUF,T,I,M,S,MER,DTF,KA$,KB$,KC$,KD$,KE$,KF$,KG$,KI$,RTC,RQDAT$()
  36. Rem *********************************************************
  37. Rem * Druckerwerte f�r EPSON LQ2550 vordefiniert            *
  38. Rem *********************************************************
  39. Global SENKR$,WAAGER$,INIT$,NLQ$,CPI$,CPL$,ACHT$,SCHRIFT$,SHADOW$
  40. Global SHADOF$,BREIT$,BREITO$,SCHMAL$,E1$,E2$,E3$,E4$
  41. '
  42. SENKR$=Chr$(124) : Rem Strich senkrecht 
  43. WAAGER$=Chr$(196) : Rem Strich waagerecht
  44. INIT$=Chr$(27)+Chr$(64) : Rem Drucker initialisieren 
  45. NLQ$=Chr$(27)+Chr$(120)+Chr$(1) : Rem NLQ an 
  46. CPI$=Chr$(27)+Chr$(80) : Rem 10 cpi an
  47. CPL$=Chr$(27)+Chr$(103) : Rem 15 cpi an
  48. ACHT$=Chr$(27)+Chr$(48) : Rem 1/8 Zoll an
  49. SCHRIFT$=Chr$(27)+Chr$(107)+Chr$(2) : Rem Courier an 
  50. SHADOW$=Chr$(27)+Chr$(113)+Chr$(2) : Rem Schattendruck an 
  51. SHADOF$=Chr$(27)+Chr$(113)+Chr$(0)
  52. BREIT$=Chr$(27)+Chr$(87)+Chr$(1) : Rem Breitschrift an
  53. BREITO$=Chr$(27)+Chr$(87)+Chr$(0) : Rem Breitschrift aus 
  54. SCHMAL$=Chr$(27)+Chr$(15) : Rem Schmaldruck an 
  55. E1$=Chr$(169)
  56. E2$=Chr$(170)
  57. '
  58. Rem *********************************************************
  59. Rem * cdmp = Pa�wort�bergehung, Notnagel                    *
  60. Rem * a$ = Tastaturabfrage, aktueller R�ckgabewert          *
  61. Rem * A  = numerischer Wert der Tastatur                    *
  62. Rem * Z  = aktueller Z�hler, wieviele Listeneintr�ge        *
  63. Rem * G  = aktueller Spaltenz�hler                          *
  64. Rem * H  = aktueller Zeilenz�hler                           *
  65. Rem * L  = aktueller Zwischenz�hler beim Scrolling          *
  66. Rem * t =  Scancode Tastatur                                *
  67. Rem * S  = 0=>Pa�wort aus 1=>Pa�wort an                     *
  68. Rem * mer= Pa�wortsumme                                     *
  69. Rem * za$= Skip                                             *
  70. Rem * zb$= Name                                             *
  71. Rem * zc$= Standort, QTH                                    *
  72. Rem * zd$= S-Wert                                           *
  73. Rem * ze$= Radio-Wert                                       *
  74. Rem * zf$= Antenne                                          *
  75. Rem * zg$= Rufkanal                                         *
  76. Rem * ZH$= Heimstation                                      *
  77. Rem * ZI$= Mobilstation                                     *
  78. Rem * ZJ$= Bemerkung                                        *
  79. Rem * buf= allgemeiner Zwischenbuffer, Weitergabewert 0     *
  80. Rem * buf$ allgemeiner Zwischenbuffer, Weitergabewert leer  *
  81. Rem * RTC= Wert zum Scrollen mit Ziffernblock               *
  82. Rem *********************************************************
  83.  
  84. EINGABE
  85. End 
  86. Rem ***********************************************
  87. Rem * Zeichnen des Grundschirmes                  *
  88. Rem ***********************************************
  89. Procedure MAC
  90. Cls 
  91. Proc REAL3DWINDOW[0,0,640,256,False,"SkipDat V1.2 (c)1993 by Tom Beyer        Dr�cke HELP zur Schnellhilfe","","",0,0]
  92. Curs Off : Flash Off 
  93. Paper 2
  94. Print At(2,3);"Skip"
  95. Print At(2,5);"Name" : Print At(2,7);"QTH"
  96. Print At(2,9);"S-Wert" : Print At(27,9);"S-Art:" : Print At(51,9);"Ant.:"
  97. Print At(2,11);"Kanal" : Print At(27,11);"Heimst.:" : Print At(51,11);"Mobilst.:"
  98. Print At(2,13);"Bemerkung"
  99. Print At(2,15);"F1 Suchen"
  100. Print At(2,16);"F2 Korr."
  101. Print At(2,17);"F3 Sort."
  102. Print At(2,18);"F4 Laden"
  103. Print At(2,19);"F5 Save"
  104. Print At(2,20);"F6 Pa�w."
  105. Print At(2,21);"F7 Druck"
  106. Print At(2,22);"F8 Grafik"
  107. Print At(2,23);"F10 Ende"
  108. Print At(1,28);"akt.Eintr"
  109. Print At(13,16);"Nr.  Ch. Skip       Name         QTH               S-Wert S-Art"
  110. Rem Eingabeboxen 
  111. HEAVYICON[13,22,606,10,True,20,25]
  112. HEAVYICON[13,38,606,10,True,20,25]
  113. HEAVYICON[13,54,606,10,True,20,25]
  114. HEAVYICON[13,70,606,10,True,20,25]
  115. HEAVYICON[13,86,606,10,True,20,25]
  116. HEAVYICON[13,102,606,10,True,20,25]
  117. Rem Zwischeneinabeboxen
  118. Ink 0 : Draw 95,22 To 95,32 : Ink 1 : Draw 96,22 To 96,32
  119. Ink 0 : Draw 95,38 To 95,48 : Ink 1 : Draw 96,38 To 96,48
  120. Ink 0 : Draw 95,54 To 95,64 : Ink 1 : Draw 96,54 To 96,64
  121. Ink 0 : Draw 95,70 To 95,80 : Ink 1 : Draw 96,70 To 96,80
  122. Ink 0 : Draw 95,86 To 95,96 : Ink 1 : Draw 96,86 To 96,96
  123. Ink 0 : Draw 95,102 To 95,112 : Ink 1 : Draw 96,102 To 96,112
  124. Ink 0 : Draw 211,70 To 211,80 : Ink 1 : Draw 212,70 To 212,80
  125. Ink 0 : Draw 402,70 To 402,80 : Ink 1 : Draw 403,70 To 403,80
  126. Ink 0 : Draw 211,86 To 211,96 : Ink 1 : Draw 212,86 To 212,96
  127. Ink 0 : Draw 402,86 To 402,96 : Ink 1 : Draw 403,86 To 403,96
  128. Rem ScrollDrawer 
  129. HEAVYICON[92,125,527,127,False,20,25] : Rem Umrandung
  130. HEAVYICON[92,125,527,10,False,20,25] : Rem Beschriftungsumrandung Scrollbox 
  131. '
  132. Rem aktuelle Eintr�ge-Box
  133. HEAVYICON[5,222,78,30,False,20,25]
  134. '
  135. Rem Zwischenstriche Scrollbox
  136. Ink 0 : Draw 134,125 To 134,252 : Draw 168,125 To 168,252
  137. Draw 242,125 To 242,252 : Draw 335,125 To 335,252
  138. Draw 503,125 To 503,252 : Draw 563,125 To 563,252
  139. '
  140. Rem Max_Zahlen Draw
  141. HEAVYICON[5,195,78,23,False,20,25]
  142. ENTERBOX[1,115,639,256-115,20,25] : Rem sieht geil aus 
  143. End Proc
  144. Rem ***********************************************
  145. Rem * Tastatur-Abfrage                            *
  146. Rem ***********************************************
  147. Procedure TASTATUR
  148.    Repeat 
  149.       A$=Inkey$
  150.       A=Asc(A$)
  151.    Until A$<>""
  152. End Proc
  153. Rem ***********************************************
  154. Rem * Eingabe einer Skipliste (3)                 *
  155. Rem ***********************************************
  156. Procedure EINGABE
  157.    TEMP=BUF
  158.    If M<>0 Then Goto PAT2 : Rem nur Einzeleintrag, danach zur�ck zu Korrekt  
  159.    G=1 : Rem Spaltenz�hler auf erste Spalte setzen
  160.    
  161.    Rem Eingabe der Daten, Tastaturauswertung
  162.    PAT2A:
  163.    Pen 0 : Paper 2
  164.    MAC : Rem male Hintergrund 
  165.    SKIPTAB
  166.    F=Free : Print At(1,25);F : Print At(1,26);DTF
  167.    Print At(3,30);Z : Rem aktuellen Z�hler im Fenster darstellen 
  168.    If G=1 and Len(ZA$(Z))=0 Then Print At(13,3);"*"
  169.    PAT2:
  170.    TASTATUR
  171.    T=Scancode
  172.    If T=46 Then A$="" : Goto PAT2 : Rem 5 auf Ziffernblock ausklammern 
  173.    If T=95 Then HELP : Goto PAT2A : Rem HELP-Taste gedr�ckt
  174.    If A=13 Then G=G+1 : Goto PAT3
  175.    If T=80 Then SEARCH : Goto PAT2A : Rem F1 Suchen
  176.    If T=81 Then KORREKT : G=1 : Goto PAT2A : Rem F2 Korrektur   
  177.    If T=82 Then LOESCH : Goto PAT2A : Rem F3 L�schen 
  178.    If T=83 Then SKIPLOAD : Goto PAT2A : Rem F4 Laden 
  179.    If T=84 Then SKIPSAVE : Goto PAT2A : Rem F5 Speichern 
  180.    If T=85 Then CRYPT : Goto PAT2A : Rem F6 Pa�wort eingeben
  181.    If T=86 Then DRUCK : Goto PAT2A : Rem F7 Druck 
  182.    If T=87 Then LANDKARTE : Goto PAT2A : Rem grafisches Display 
  183.    If T=89 Then SCHLUSS : Goto PAT2A : Rem F10 Ende 
  184.    If T=76 and M=0 Then SKIPHIGH : A$="" : Goto PAT2 : Rem Cursor hoch
  185.    If T=77 and M=0 Then SKIPLOW : A$="" : Goto PAT2 : Rem Cursor down
  186.    If T=63 and M=0 Then RTC=1 : SKIPHIGH : A$="" : Goto PAT2 : Rem Page up
  187.    If T=31 and M=0 Then RTC=1 : SKIPLOW : A$="" : Goto PAT2 : Rem Page Down
  188.    If T=62 and M=0 Then SKIPHIGH : A$="" : Goto PAT2
  189.    If T=30 and M=0 Then SKIPLOW : A$="" : Goto PAT2
  190.    If T=61 and M=0 Then RTC=10 : SKIPHIGH : A$="" : Goto PAT2 : Rem HOME 
  191.    If T=29 and M=0 Then RTC=10 : SKIPLOW : A$="" : Goto PAT2 : Rem end
  192.    If A=27 Then G=1 : Goto PAT2A : Rem escape 
  193.    If A=8 Then Goto PAT5 : Rem Backspace gedr�ckt 
  194.    If G=1 Then ZA$(Z)=ZA$(Z)+A$ : Print At(12+Len(ZA$(Z)),3);A$ : A$="" : Gosub PAT4 : Goto PAT3
  195.    If G=2 Then ZB$(Z)=ZB$(Z)+A$ : Print At(12+Len(ZB$(Z)),5);A$ : A$="" : Gosub PAT4 : Goto PAT3
  196.    If G=3 Then ZC$(Z)=ZC$(Z)+A$ : Print At(12+Len(ZC$(Z)),7);A$ : A$="" : Gosub PAT4 : Goto PAT3
  197.    If G=4 Then ZD$(Z)=ZD$(Z)+A$ : Print At(12+Len(ZD$(Z)),9);A$ : A$="" : Gosub PAT4 : Goto PAT3
  198.    If G=5 Then ZE$(Z)=ZE$(Z)+A$ : Print At(36+Len(ZE$(Z)),9);A$ : A$="" : Gosub PAT4 : Goto PAT3
  199.    If G=6 Then ZF$(Z)=ZF$(Z)+A$ : Print At(61+Len(ZF$(Z)),9);A$ : A$="" : Gosub PAT4 : Goto PAT3
  200.    If G=7 Then ZG$(Z)=ZG$(Z)+A$ : Print At(12+Len(ZG$(Z)),11);A$ : A$="" : Gosub PAT4 : Goto PAT3
  201.    If G=8 Then ZH$(Z)=ZH$(Z)+A$ : Print At(36+Len(ZH$(Z)),11);A$ : A$="" : Gosub PAT4 : Goto PAT3
  202.    If G=9 Then ZI$(Z)=ZI$(Z)+A$ : Print At(61+Len(ZI$(Z)),11);A$ : A$="" : Gosub PAT4 : Goto PAT3
  203.    If G=10 Then ZJ$(Z)=ZJ$(Z)+A$ : Print At(12+Len(ZJ$(Z)),13);A$ : A$="" : Gosub PAT4 : Goto PAT3
  204.    Rem Loop f�r Tastatur setzen, Maximalwerte setzen
  205.    PAT3:
  206.    Rem *** st�renden Cursor bei RETURN entfernen ****** 
  207.    If A=13 and G=2 Then Print At(12+Len(ZA$(Z))+1,3);" " : Print At(13,5);"*"
  208.    If A=13 and G=3 Then Print At(12+Len(ZB$(Z))+1,5);" " : Print At(13,7);"*"
  209.    If A=13 and G=4 Then Print At(12+Len(ZC$(Z))+1,7);" " : Print At(13,9);"*"
  210.    If A=13 and G=5 Then Print At(12+Len(ZD$(Z))+1,9);" " : Print At(37,9);"*"
  211.    If A=13 and G=6 Then Print At(36+Len(ZE$(Z))+1,9);" " : Print At(62,9);"*"
  212.    If A=13 and G=7 Then Print At(61+Len(ZF$(Z))+1,9);" " : Print At(13,11);"*"
  213.    If A=13 and G=8 Then Print At(12+Len(ZG$(Z))+1,11);" " : Print At(37,11);"*"
  214.    If A=13 and G=9 Then Print At(36+Len(ZH$(Z))+1,11);" " : Print At(62,11);"*"
  215.    If A=13 and G=10 Then Print At(61+Len(ZI$(Z))+1,11);" " : Print At(13,13);"*"
  216.    Rem *************************************************
  217.    If A=3 and G=11 Then Print At(12+Len(ZJ$(Z))+1,13);" "
  218.    If G>=11 and M<>0 Then Goto PAT5X : Rem im Falle von Korrekt zur�ck zur Procedure Korrekt  
  219.    If G>=11 Then G=1 : Z=Z+1 : Goto PAT2A : Rem n�chste Zeile
  220.    If Len(ZJ$(Z))=>40 and G=10 Then G=1 : Z=Z+1 : Goto PAT2A : Rem n�chster Bildschirm
  221.    If Len(ZI$(Z))=>11 and G=9 Then G=10 : Rem n�chste Spalte 
  222.    If Len(ZH$(Z))=>11 and G=8 Then G=9 : Rem n�chste Spalte 
  223.    If Len(ZG$(Z))=>11 and G=7 Then G=8 : Rem n�chste Spalte 
  224.    If Len(ZF$(Z))=>11 and G=6 Then G=7 : Rem n�chste Spalte 
  225.    If Len(ZE$(Z))=>11 and G=5 Then G=6 : Rem n�chste Spalte 
  226.    If Len(ZD$(Z))=>11 and G=4 Then G=5 : Rem n�chste Spalte 
  227.    If Len(ZC$(Z))=>40 and G=3 Then G=4 : Rem n�chste Spalte 
  228.    If Len(ZB$(Z))=>40 and G=2 Then G=3 : Rem n�chste Spalte 
  229.    If Len(ZA$(Z))=>40 and G=1 Then G=2 : Rem n�chste Spalte 
  230.    Goto PAT2 : Rem weitere Eingaben m�glich 
  231.    Rem ******************************************** 
  232.    Rem * Cursordarstellung in der Tabelleneingabe * 
  233.    Rem ******************************************** 
  234.    PAT4:
  235.    If G=1 and Len(ZA$(Z))<40 Then Print At(12+Len(ZA$(Z))+1,3);"_"
  236.    If G=2 and Len(ZB$(Z))<40 Then Print At(12+Len(ZB$(Z))+1,5);"_"
  237.    If G=3 and Len(ZC$(Z))<40 Then Print At(12+Len(ZC$(Z))+1,7);"_"
  238.    If G=4 and Len(ZD$(Z))<11 Then Print At(12+Len(ZD$(Z))+1,9);"_"
  239.    If G=5 and Len(ZE$(Z))<11 Then Print At(36+Len(ZE$(Z))+1,9);"_"
  240.    If G=6 and Len(ZF$(Z))<11 Then Print At(61+Len(ZF$(Z))+1,9);"_"
  241.    If G=7 and Len(ZG$(Z))<11 Then Print At(12+Len(ZG$(Z))+1,11);"_"
  242.    If G=8 and Len(ZH$(Z))<11 Then Print At(36+Len(ZH$(Z))+1,11);"_"
  243.    If G=9 and Len(ZI$(Z))<11 Then Print At(61+Len(ZI$(Z))+1,11);"_"
  244.    If G=10 and Len(ZJ$(Z))<40 Then Print At(12+Len(ZJ$(Z))+1,13);"_"
  245.    Return 
  246.    Rem ******************************************** 
  247.    Rem * Backspace--Korrektur der aktuellen Spalte* 
  248.    Rem ******************************************** 
  249.    PAT5:
  250.    TEMP=BUF
  251.    If G=1 and Len(ZA$(Z))>=1 Then BUF=Len(ZA$(Z))-1 : BUF$=Left$(ZA$(Z),BUF) : Print At(12+1,3);"                                        " : ZA$(Z)=BUF$ : BUF$="" : Print At(12+1,3);ZA$(Z)
  252.    If G=2 and Len(ZB$(Z))>=1 Then BUF=Len(ZB$(Z))-1 : BUF$=Left$(ZB$(Z),BUF) : Print At(12+1,5);"                                        " : ZB$(Z)=BUF$ : BUF$="" : Print At(12+1,5);ZB$(Z)
  253.    If G=3 and Len(ZC$(Z))>=1 Then BUF=Len(ZC$(Z))-1 : BUF$=Left$(ZC$(Z),BUF) : Print At(12+1,7);"                                        " : ZC$(Z)=BUF$ : BUF$="" : Print At(12+1,7);ZC$(Z)
  254.    If G=4 and Len(ZD$(Z))>=1 Then BUF=Len(ZD$(Z))-1 : BUF$=Left$(ZD$(Z),BUF) : Print At(12+1,9);"           " : ZD$(Z)=BUF$ : BUF$="" : Print At(12+1,9);ZD$(Z)
  255.    If G=5 and Len(ZE$(Z))>=1 Then BUF=Len(ZE$(Z))-1 : BUF$=Left$(ZE$(Z),BUF) : Print At(36+1,9);"           " : ZE$(Z)=BUF$ : BUF$="" : Print At(36+1,9);ZE$(Z)
  256.    If G=6 and Len(ZF$(Z))>=1 Then BUF=Len(ZF$(Z))-1 : BUF$=Left$(ZF$(Z),BUF) : Print At(61+1,9);"           " : ZF$(Z)=BUF$ : BUF$="" : Print At(61+1,9);ZF$(Z)
  257.    If G=7 and Len(ZG$(Z))>=1 Then BUF=Len(ZG$(Z))-1 : BUF$=Left$(ZG$(Z),BUF) : Print At(12+1,11);"          " : ZG$(Z)=BUF$ : BUF$="" : Print At(12+1,11);ZG$(Z)
  258.    If G=8 and Len(ZH$(Z))>=1 Then BUF=Len(ZH$(Z))-1 : BUF$=Left$(ZH$(Z),BUF) : Print At(36+1,11);"          " : ZH$(Z)=BUF$ : BUF$="" : Print At(36+1,11);ZH$(Z)
  259.    If G=9 and Len(ZI$(Z))>=1 Then BUF=Len(ZI$(Z))-1 : BUF$=Left$(ZI$(Z),BUF) : Print At(61+1,11);"          " : ZI$(Z)=BUF$ : BUF$="" : Print At(61+1,11);ZI$(Z)
  260.    If G=10 and Len(ZJ$(Z))>=1 Then BUF=Len(ZJ$(Z))-1 : BUF$=Left$(ZJ$(Z),BUF) : Print At(12+1,13);"                                       " : ZJ$(Z)=BUF$ : BUF$="" : Print At(12+1,13);ZJ$(Z)
  261.    BUF=TEMP
  262.    Goto PAT2
  263.    PAT5X: Rem Ansprung f�r Korrekt-Routine zum korrekten Verlassen der Procedure 
  264.    BUF=TEMP
  265. End Proc
  266. Rem ***********************************************
  267. Rem * editieren einer Skipliste (4)               *
  268. Rem ***********************************************
  269. Procedure SKIPTAB
  270.    BUF=Z
  271.    If Z<=13 Then BUF=1
  272.    If Z>=13 Then BUF=Z-12
  273.    H=1 : Rem Spaltenz�hler initialisieren 
  274.    If H>13 Then H=1
  275.    For I=BUF To Z
  276.       G$=Str$(I) : If Left$(G$,1)=" " Then G$=Right$(G$,Len(G$)-1)
  277.       Print At(12,H+17);G$ : Print At(17,H+17);Left$(ZG$(I),2) : Rem Rufkanal mit max. 2 Zeichen  
  278.       Print At(22,H+17);Left$(ZA$(I),7) : Rem skip mit max. 8 Buchstaben 
  279.       Print At(31,H+17);Left$(ZB$(I),9) : Rem Name mit max 9 Zeichen 
  280.       Print At(42,H+17);Left$(ZC$(I),19) : Rem QTH
  281.       Print At(64,H+17);Left$(ZD$(I),4) : Rem Signal 
  282.       Print At(72,H+17);Left$(ZE$(I),4) : Rem Radiowert
  283.       H=H+1 : Rem Spalte runter
  284.    Next I
  285. LLO1:
  286. End Proc
  287. Rem ***********************************************
  288. Rem * Skiphigh - Scrollen mit Cursor up           *
  289. Rem ***********************************************
  290. Procedure SKIPHIGH
  291. TEMP2=BUF
  292.    L=L+1 : Rem zum Scollen nach oben eins addieren
  293.    If RTC=1 Then L=L+12 : RTC=0
  294.    If RTC=10 Then L=Z-12 : RTC=0 : Rem HOME-Taste 
  295.    BUF=Z-L : Rem Z�HLER UM EINS NIEDRIGER SETZEN
  296.    If BUF=<1 Then BUF=1 : L=L-1 : Goto LAB1 : Rem ï¿½berlauf verhindern  
  297.    If BUF>=Z Then Goto LAB1 : 
  298.    H=11 : Rem Horizontalz�hler init
  299.    If H<1 Then H=1 : Rem ï¿½berlauf verhindern
  300.    For I=BUF-11 To BUF+1
  301.       Rem If I>=Z Then Stop  
  302.       If I=<1 Then I=1 : L=L-1 : Rem ï¿½berlauf verhindern
  303.       V=3 : G$=Str$(I) : Gosub M1 : Print At(12,30-H-1);G$
  304.       V=2 : G$=ZG$(I) : Gosub M1 : Print At(17,30-H-1);G$ : Rem Rufkanal 
  305.       V=7 : G$=ZA$(I) : Gosub M1 : Print At(22,30-H-1);G$ : Rem Skip 
  306.       V=9 : G$=ZB$(I) : Gosub M1 : Print At(31,30-H-1);G$ : Rem Name 
  307.       V=19 : G$=ZC$(I) : Gosub M1 : Print At(42,30-H-1);G$ : Rem QTH
  308.       V=4 : G$=ZD$(I) : Gosub M1 : Print At(64,30-H-1);G$ : Rem Signal 
  309.       V=4 : G$=ZE$(I) : Gosub M1 : Print At(72,30-H-1);G$ : Rem Radio  
  310.       H=H-1
  311.    Next I
  312. BUF=TEMP2
  313.    Goto LAB1
  314.    Rem ************************** 
  315.    Rem * Stringformatierroutine * 
  316.    Rem ************************** 
  317.    M1:
  318.    If Left$(G$,1)=" " Then G$=Right$(G$,Len(G$)-1)
  319.    If Len(G$)>=V Then F$=Left$(G$,V) : G$=F$ : Goto M2
  320.    For T=Len(G$) To V
  321.       G$=G$+" "
  322.    Next T
  323.    M2:
  324.    Return 
  325.    LAB1:
  326. End Proc
  327. Rem ***********************************************
  328. Rem * Cursordown - Scrolling im Text nach unten   *
  329. Rem ***********************************************
  330. Procedure SKIPLOW
  331. TEMP2=BUF
  332.    L=L-1 : Rem zum Scrollen nach unten eins abziehen
  333.    If RTC=1 Then L=L-12 : RTC=0
  334.    If RTC=10 Then L=1 : RTC=0
  335.    BUF=Z-L-12
  336.    If BUF<1 Then Goto LAB1 : Rem ï¿½berlauf bei Z=0 verhindern
  337.    H=1 : Rem Spaltenz�hler initialisieren 
  338.    If H=>13 Then H=1
  339.    Ink 1,2
  340.    If I>=Z Then L=L+1 : Goto LAB1
  341.    For I=BUF To BUF+12
  342.    If I>Z Then Goto LAB1 : Rem neu, ï¿½berlauf verhindern 
  343.       V=3 : G$=Str$(I) : Gosub M1 : Print At(12,H+17);G$
  344.       V=2 : G$=ZG$(I) : Gosub M1 : Print At(17,H+17);G$ : Rem Rufkanal mit max. 2 Zeichen  
  345.       V=7 : G$=ZA$(I) : Gosub M1 : Print At(22,H+17);G$ : Rem skip mit max. 8 Buchstaben 
  346.       V=9 : G$=ZB$(I) : Gosub M1 : Print At(31,H+17);G$ : Rem Name mit max 9 Zeichen 
  347.       V=19 : G$=ZC$(I) : Gosub M1 : Print At(42,H+17);G$ : Rem QTH
  348.       V=4 : G$=ZD$(I) : Gosub M1 : Print At(64,H+17);G$ : Rem Signal 
  349.       V=4 : G$=ZE$(I) : Gosub M1 : Print At(72,H+17);G$ : Rem Radiowert
  350.       H=H+1 : Rem Spalte runter
  351.    Next I
  352.    Goto LAB1
  353.    Rem ******************************** 
  354.    Rem * Formatierroutine f�r Strings * 
  355.    Rem ******************************** 
  356.    M1:
  357.    If Left$(G$,1)=" " Then G$=Right$(G$,Len(G$)-1)
  358.    If Len(G$)>=V Then F$=Left$(G$,V) : G$=F$ : Goto M2
  359.    For T=Len(G$) To V
  360.       G$=G$+" "
  361.    Next T
  362.    M2:
  363.    Return 
  364.    LAB1:
  365.    BUF=TEMP2
  366. End Proc
  367. Rem ***********************************************
  368. Rem * Abspeichern der Skiplistendatei             *
  369. Rem ***********************************************
  370. Procedure SKIPSAVE
  371. TEMP2=BUF
  372.    Show On : Rem Maus an
  373.    If Z<2 Then Cls : Print At(25,14);"Nichts zum Speichern da !" : Wait Key : Goto PAT6M
  374.    FILE$=Fsel$("*.SKIP","Skipliste.SKIP","Speichern Skipliste")
  375.    If FILE$="" Then Goto PAT6 : Rem keine Datei gew�hlt oder quit
  376.    Ink 2 : Bar 200,100 To 450,150 : Ink 1 : Draw 200,100 To 450,100 : Draw 450,100 To 450,150
  377.    Ink 0 : Draw 450,150 To 200,150 : Draw 200,150 To 200,100
  378.    Draw 205,120 To 445,120 : Draw 445,120 To 445,130
  379.    Ink 1 : Draw 445,130 To 205,130 : Draw 205,130 To 205,120
  380.    Open Out 1,FILE$ : Rem Ausgabekanal ï¿½ffnen
  381.    Print #1,"SKIP" : Rem Kennung schreiben
  382.    If S=1 Then Print #1,"CR" : Goto MER
  383.    If S=0 Then Print #1,"UC"
  384.    Print #1,Z : Rem Z�hler schreiben 
  385.    Print At(36,13);"Speichern ..."
  386.    BUF#=Z
  387.    RPT#=(239)/BUF# : Rem Schrittweite des Balkens 
  388.    For I=1 To Z-1
  389.    Paper 1 : Bar 206,121 To Int(RPC#+207),129
  390.       Print #1,ZA$(I)
  391.       Print #1,ZB$(I)
  392.       Print #1,ZC$(I)
  393.       Print #1,ZD$(I)
  394.       Print #1,ZE$(I)
  395.       Print #1,ZF$(I)
  396.       Print #1,ZG$(I)
  397.       Print #1,ZH$(I)
  398.       Print #1,ZI$(I)
  399.       Print #1,ZJ$(I)
  400.    RPC#=RPC#+RPT#
  401.    Next I
  402.    Close 1
  403.    PAT6:
  404.    Goto PAT6M
  405.    Rem *****************************************
  406.    Rem * Cryptung                              *
  407.    Rem *****************************************
  408.    MER:
  409.    Print #1,MER
  410.    Print #1,Z
  411.    PO:
  412.    DEF=Int(MER/2) : MER=DEF : If MER>255 Then Goto PO
  413.    BUF#=Z
  414.    RPT#=(239)/BUF# : Rem Schrittweite des Balkens 
  415.    Print At(30,13);"Speichern verschl�sselt..."
  416.    For I=1 To Z-1
  417.    Paper 1 : Bar 206,121 To Int(RPC#+207),129
  418.    X$=ZA$(I) : Gosub PI : Print #1,X$
  419.       X$=ZB$(I) : Gosub PI : Print #1,X$
  420.       X$=ZC$(I) : Gosub PI : Print #1,X$
  421.       X$=ZD$(I) : Gosub PI : Print #1,X$
  422.       X$=ZE$(I) : Gosub PI : Print #1,X$
  423.       X$=ZF$(I) : Gosub PI : Print #1,X$
  424.       X$=ZG$(I) : Gosub PI : Print #1,X$
  425.       X$=ZH$(I) : Gosub PI : Print #1,X$
  426.       X$=ZI$(I) : Gosub PI : Print #1,X$
  427.       X$=ZJ$(I) : Gosub PI : Print #1,X$
  428.    RPC#=RPC#+RPT#
  429.    Next I
  430.    Close 1 : Goto PAT6M
  431.    Rem ************************** 
  432.    PI:
  433.    If X$="" Then X$="�"
  434.    For U=1 To Len(X$)
  435.       YY=Asc(Mid$(X$,U,1))
  436.       XX=YY xor MER
  437.       If XX<14 Then XX=YY
  438.       YY$=YY$+Chr$(XX)
  439.    Next U
  440.    X$=YY$ : YY$=""
  441.    Return 
  442.    Rem ************************** 
  443.    PAT6M:
  444.    Hide On 
  445. BUF=TEMP2
  446. End Proc
  447. Rem ***********************************************
  448. Rem * Einladen von Skiplistendatei                *
  449. Rem ***********************************************
  450. Procedure SKIPLOAD
  451.    If Z>1 Then Gosub FRAGE
  452.    PAT1:
  453.    Show On : Rem Maus an
  454.    Ink 2,2
  455.    Z=1 : Rem Z�hler auf 0 setzen
  456.    Set Input 13,10 : Rem Komma, Linefeed als LineEnd
  457.    FILE$=Fsel$("*.SKIP","Skipliste.SKIP","Laden Skipliste")
  458.    If FILE$="" Then Goto PAT7 : Rem keine Datei gew�hlt oder quit
  459.    Bar 200,100 To 450,150 : Ink 1 : Draw 200,100 To 450,100 : Draw 450,100 To 450,150
  460.    Ink 0 : Draw 450,150 To 200,150 : Draw 200,150 To 200,100
  461.    Draw 205,120 To 445,120 : Draw 445,120 To 445,130
  462.    Ink 1 : Draw 445,130 To 205,130 : Draw 205,130 To 205,120
  463.    Open In 1,FILE$
  464.    Line Input #1,BUF$ : Rem SKIP als Kennung, sp�ter zur Auswertung zucoden
  465.    If BUF$<>"SKIP" Then Cls : Print At(30,12);"Keine SkipDat-Datei" : Close 1 : Wait Key : Goto PAT7
  466.    Line Input #1,CRYPT$ : Rem verschl�sselt ?
  467.    If CRYPT$="CR" Then Goto MER
  468.    Line Input #1,BUF : Rem Z�hlerstand holen
  469.    BUF#=BUF
  470.    RPT#=(239)/BUF# : Rem Schrittweite des Balkens 
  471.    Print At(36,13);"Laden ..."
  472.    For I=1 To BUF-1
  473.       Paper 1 : Bar 206,121 To Int(RPC#+207),129
  474.       Line Input #1,ZA$(I)
  475.       Line Input #1,ZB$(I)
  476.       Line Input #1,ZC$(I)
  477.       Line Input #1,ZD$(I)
  478.       Line Input #1,ZE$(I)
  479.       Line Input #1,ZF$(I)
  480.       Line Input #1,ZG$(I)
  481.       Line Input #1,ZH$(I)
  482.       Line Input #1,ZI$(I)
  483.       Line Input #1,ZJ$(I)
  484.       RPC#=RPC#+RPT#
  485.    Next I
  486.    Z=BUF
  487.    RASTER:
  488.    Close 1 : Goto PAT7
  489.    Rem *********************************
  490.    Rem * Decrypt                       *
  491.    Rem *********************************
  492.    MER:
  493.    Line Input #1,RUF : Rem Schl�sselzahl holen
  494.    Gosub PASIN
  495.    If KI$="cdmp" Then MER=RUF : Goto PIP : Rem Notnagel   
  496.    If RUF<>MER Then Print At(27,15);"falsches Pa�wort eingegeben!" : Wait Key : Z=0 : Goto RASTER
  497.    PIP:
  498.    DEF=Int(MER/2) : MER=DEF : If MER>255 Then Goto PIP
  499.    Line Input #1,BUF
  500.    Ink 2 : Bar 200,100 To 450,150 : Ink 1 : Draw 200,100 To 450,100 : Draw 450,100 To 450,150
  501.    Ink 0 : Draw 450,150 To 200,150 : Draw 200,150 To 200,100
  502.    Draw 205,120 To 445,120 : Draw 445,120 To 445,130
  503.    Ink 1 : Draw 445,130 To 205,130 : Draw 205,130 To 205,120
  504.    BUF#=BUF
  505.    RPT#=(239)/BUF# : Rem Schrittweite des Balkens 
  506.    Print At(30,13);"Laden verschl�sselt!"
  507.    For I=1 To BUF-1
  508.       Paper 1 : Bar 206,121 To Int(RPC#+207),129
  509.       Line Input #1,X$ : Gosub PI : ZA$(I)=X$
  510.       Line Input #1,X$ : Gosub PI : ZB$(I)=X$
  511.       Line Input #1,X$ : Gosub PI : ZC$(I)=X$
  512.       Line Input #1,X$ : Gosub PI : ZD$(I)=X$
  513.       Line Input #1,X$ : Gosub PI : ZE$(I)=X$
  514.       Line Input #1,X$ : Gosub PI : ZF$(I)=X$
  515.       Line Input #1,X$ : Gosub PI : ZG$(I)=X$
  516.       Line Input #1,X$ : Gosub PI : ZH$(I)=X$
  517.       Line Input #1,X$ : Gosub PI : ZI$(I)=X$
  518.       Line Input #1,X$ : Gosub PI : ZJ$(I)=X$
  519.       RPC#=RPC#+RPT#
  520.    Next I
  521.    Z=BUF
  522.    Close 1 : Goto PAT7
  523.    Rem ******************************** 
  524.    PI:
  525.    For U=1 To Len(X$)
  526.       YY=Asc(Mid$(X$,U,1))
  527.       XX=YY xor MER
  528.       YY$=YY$+Chr$(XX)
  529.    Next U
  530.    X$=YY$ : YY$="" : If X$="�" Then X$=""
  531.    Return 
  532.    Rem ******************************** 
  533.    Rem * Pa�wort beim Laden eingeben  * 
  534.    Rem ******************************** 
  535.    PASIN:
  536.    REAL3DMESSAGE[200,100,250,50,True,20,25,"Pa�wort eingeben :","","","","","","","","OK",""]
  537.    HEAVYICON[200,101,250,10,False,20,25]
  538.    MER=0
  539.    Rem *******
  540.    PAT10F:
  541.    TASTATUR
  542.    If Len(RAN$)>17 Then Goto PAT10E : Rem nun ist aber genug!
  543.    If A=8 Then RAN$=Left$(RAN$,Len(RAN$)-1) : Goto PAT0X
  544.    If A=13 Then Goto PAT10E : Rem ab zu ok 
  545.    RAN$=RAN$+A$
  546.    PAT0X:
  547.    Print At(28,15);"                 "
  548.    For I=1 To Len(RAN$)
  549.       Print At(27+I,15);"*"
  550.    Next I
  551.    For I=1 To Len(RAN$)-1
  552.       MER=MER+Asc(Left$(RAN$,I))
  553.    Next I
  554.    Goto PAT10F
  555.    PAT10E:
  556.    Return 
  557.    Rem ******************************** 
  558.    PAT7:
  559.    Hide On : Rem Maus aus 
  560.    Goto PAT2
  561.    Rem *****************
  562.    FRAGE:
  563.    Show On 
  564.    REAL3DMESSAGE[200,100,250,50,True,20,25,"Datenverlust eingeleitet!","Wirklich neu laden ?!","","","","","","","Ja","Nein"]
  565.    Repeat 
  566.       A$=Inkey$
  567.       If A$="j" Then Hide On : Return 
  568.       If A$="n" Then Hide On : Goto PAT2
  569.    Until Mouse Key=1 and Mouse Zone=1
  570.    Hide On 
  571.    Return 
  572.    PAT2:
  573. End Proc
  574. Rem ***********************************************
  575. Rem * Suchfunktionen                              *
  576. Rem ***********************************************
  577. Procedure SEARCH
  578.    RTA=2
  579.    '
  580.    BUF$="Global "
  581.    Proc REAL3DMESSAGE[92,144,530,45,True,20,25,"Suchen nach welchem Begriff","","","","","","","","OK",""]
  582.    BUF$=""
  583.    Rem ************* Suchbegriff eingeben ******************
  584.    PAT6D:
  585.    TASTATUR : Rem Tastatureingaben abwarten
  586.    T=Scancode
  587.    If Len(BUF$)>25 Then Goto PAT6F : Rem jetzt ist aber Schlu�! 
  588.    If A=8 Then BUF$=Left$(BUF$,Len(BUF$)-1) : Goto PAT0X : Rem BackSpace
  589.    If A=13 Then Goto PAT6F : Rem RETURN   
  590.    BUF$=BUF$+A$
  591.    PAT0X:
  592.    Print At(15,20);"                              "
  593.    Print At(15,20);BUF$
  594.    Goto PAT6D : Rem Loop zur�ck, um n�chstes Zeichen einzugeben
  595.    Rem ************* Suche beginnen ************************
  596.    PAT6F:
  597.    Rem *************  Globale Suche ************************
  598.    Gosub BEGANFOUND
  599.    Pen 0
  600.    R=1
  601.    RLEN=Len(BUF$)
  602.    PAT7X: Rem Einsprung von RETURN next search 
  603.    For I=R To Z
  604.       Rem If I>Z Then Goto PAT6
  605.       If Left$(ZG$(I),RLEN)=BUF$ Then Goto PAT7B : Rem Channel  
  606.       If Left$(ZA$(I),RLEN)=BUF$ Then Goto PAT7B : Rem Skip   
  607.       If Left$(ZB$(I),RLEN)=BUF$ Then Goto PAT7B : Rem Name   
  608.       If Left$(ZC$(I),RLEN)=BUF$ Then Goto PAT7B : Rem QTH  
  609.       If Left$(ZD$(I),RLEN)=BUF$ Then Goto PAT7B : Rem S-Wert   
  610.       If Left$(ZE$(Z),RLEN)=BUF$ Then Goto PAT7B : Rem Radio-Wert   
  611.    Next I
  612.    Gosub NOFOUND : Goto PAT6
  613.    Rem ***************************************
  614.    Rem * Wenn gefunden, sind wir hier richtig*
  615.    Rem ***************************************
  616.    PAT7B: Rem Channel found  
  617.    If RTA=2 Then Ink 2,2 : Bar 0,115 To 640,256
  618.    If RTA=2 Then ENTERBOX[1,113,639,256-113,20,25]
  619.    If RTA=2 Then ENTERBOX[1,113,639,200-113,20,25]
  620.    If RTA=2 Then ENTERBOX[1,113,318,200-113,20,25]
  621.    If RTA=1 Then Ink 2,2 : Bar 320,115 To 638,198
  622.    If RTA=0 Then Ink 2,2 : Bar 3,115 To 316,198
  623.    Print At(1,26);"RETURN = Suche nach n�chstgleichem Begriff"
  624.    Print At(1,27);"F2     = Korrektur dieser Eintr�ge ..."
  625.    Pen 3 : If RTA=0 Then Print At(2,15);"Nr.:     ";I
  626.    Pen 0 : If RTA=0 Then Print At(2,16);"Channel:  ";ZG$(I)
  627.    If RTA=0 Then Print At(2,17);"Skip:     ";ZA$(I)
  628.    If RTA=0 Then Print At(2,18);"Name:     ";ZB$(I)
  629.    If RTA=0 Then Print At(2,19);"QTH:      ";ZC$(I)
  630.    If RTA=0 Then Print At(2,20);"S-Art:    ";ZD$(I)
  631.    If RTA=0 Then Print At(2,21);"Radio:    ";ZE$(I)
  632.    If RTA=0 Then Print At(2,22);"Bemerkung:";Left$(ZJ$(I),25)
  633.    If RTA=0 Then RTA=1 : Goto PAT7G
  634.    Pen 3 : Print At(41,15);"Nr.:     ";I
  635.    Pen 0 : Print At(41,16);"Channel:  ";ZG$(I)
  636.    Print At(41,17);"Skip:     ";ZA$(I)
  637.    Print At(41,18);"Name:     ";ZB$(I)
  638.    Print At(41,19);"QTH:      ";ZC$(I)
  639.    Print At(41,20);"S-Art:    ";ZD$(I)
  640.    Print At(41,21);"Radio:    ";ZE$(I)
  641.    Print At(41,22);"Bemerkung:";Left$(ZJ$(I),25)
  642.    RTA=0
  643.    PAT7G:
  644.    TASTATUR
  645.    T1=Scancode
  646.    If A=27 Then Goto PAT6
  647.    If A=13 Then R=I+1 : Goto PAT7X : Rem n�chsten Namensgleichen suchen 
  648.    If T1=81 Then A=255 : BUF=TEMP2 : KORREKT : TEMP2=BUF : Goto PAT6 : Rem Korrektur
  649.    Goto PAT7G
  650.    Rem *********Meldung nicht gefunden ******** 
  651.    NOFOUND:
  652.    Print At(13,20);"                                                               "
  653.    Proc REAL3DMESSAGE[92,144,530,45,True,20,25,"Systemmeldung","","","","","","","","OK",""]
  654.    Print At(35,20);"Nichts gefunden ..."
  655.   Wait Key 
  656.    Return 
  657.    '
  658.    BEGANFOUND:
  659.    Print At(13,20);"                                                               "
  660.    Print At(35,20);"Suche hat begonnen"
  661.    Return 
  662.    PAT6:
  663. End Proc
  664. Rem ***********************************************  
  665. Rem * Korrektur-Routine f�r bestehende Eintr�ge   *
  666. Rem ***********************************************
  667. Procedure KORREKT
  668.    TEMP2=BUF
  669.    M=0 : G=1 : Rem und M initialisieren 
  670.    Rem ************************************************** 
  671.    Rem * A ist gesetzt, wenn direkter Sprung von Search * 
  672.    Rem ************************************************** 
  673.    If A<>255 Then Ink 2,2 : Bar 0,115 To 639,256
  674.    Ink 1 : Draw 320,115 To 320,199 : Ink 0 : Draw 321,115 To 321,199
  675.    If A<>255 Then Ink 1 : Draw 0,114 To 640,114
  676.    If A<>255 Then Ink 0 : Draw 0,115 To 640,115
  677.    If A<>255 Then Ink 1 : Draw 0,200 To 640,200
  678.    If A<>255 Then Ink 0 : Draw 0,201 To 640,201
  679.    If A<>255 Then Print At(2,27);"RETURN = Korrektur"
  680.    If A<>255 Then Print At(2,28);"ESC    = Abbruch"
  681.    If A<>255 Then Print At(2,29);"Cursor = Bl�ttern"
  682.    If A<>255 Then Print At(2,30);"F1     = Doppelbelegegungen suchen"
  683.    M=Z : Z=I : Rem Z merken 
  684.   If A=255 Then Print At(1,19);"Korrigieren Sie nun den nebenstehenden"
  685.   If A=255 Then Print At(1,20);"Eintrag in den oberen  Feldern neu ..."
  686.   If A=255 Then ZA$(Z)="" : ZB$(Z)="" : ZC$(Z)="" : ZD$(Z)="" : ZE$(Z)=""
  687.   If A=255 Then ZF$(Z)="" : ZG$(Z)="" : ZH$(Z)="" : ZI$(Z)="" : ZJ$(Z)=""
  688.   If A=255 Then EINGABE : Goto PAT8X : Rem Eingaben ins Feld m�glich machen bei Search+Korrekt  
  689.    I=Z-2 : Rem Init f�r Korrektur-Dummy, wenn Korrektur direkt mit F2 
  690.    Rem ************************************************************** 
  691.    Rem * ab hier Routine f�r Tastatur, wenn nur Korrekt ohne Search * 
  692.    Rem ************************************************************** 
  693.    Gosub KORRMASK : Rem Maske vor den ersten Cursorbet�tigungen schon mal zeigen 
  694.    PAT9A:
  695.    TASTATUR
  696.    T=Scancode
  697.    If A=13 and I<Z-1 Then Goto MASKKORR : Rem Korrektur  
  698.    If A=27 Then Goto PAT8X : Rem Abbruch  
  699.    If T=76 Then Goto PAT9B : Rem Cursor hoch
  700.    If T=77 Then Goto PAT9C : Rem Cursor runter
  701.    If T=80 Then BELEG : M=M+1 : Goto PAT8X
  702.    Goto PAT9A : Rem loop 
  703.    Rem ************ 
  704.    PAT9B: Rem Einsprung f�r Cursorsteuerung Korrektur hoch 
  705.    I=I-1 : If I<1 Then I=1
  706.    Gosub KORRMASK
  707.    Goto PAT9A
  708.    Rem ************ 
  709.    PAT9C: Rem Einsprung f�r Cursorsteuerung Korrektur runter 
  710.    I=I+1 : If I>=Z-1 Then I=Z-1
  711.    Gosub KORRMASK
  712.    Goto PAT9A
  713.    Rem ************ 
  714.    MASKKORR:
  715.    Pen 3 : Print At(2,17);"Die oberen Felder sind  nun  zur Kor-"
  716.    Print At(2,18);"rektur aktiviert. Geben Sie die neuen"
  717.    Print At(2,19);"Daten ein. Die alten  Eintr�ge  sehen"
  718.    Print At(2,20);"Sie zur Kontrolle rechts in der Mitte"
  719.    Pen 0 : ZA$(I)="" : ZB$(I)="" : ZC$(I)="" : ZD$(I)=""
  720.    ZE$(I)="" : ZF$(I)="" : ZG$(I)="" : ZH$(I)="" : ZI$(I)="" : ZJ$(I)=""
  721.    M=Z : Z=I : EINGABE : Goto PAT8X : Rem Korrektur  
  722.    Rem *****************************************************************  
  723.    Rem * Routine, um die zu ï¿½ndernden Eintr�ge linksmittig darzustellen*
  724.    Rem *****************************************************************
  725.    KORRMASK:
  726.    Print At(52,15);"                           "
  727.    Print At(52,16);"                           "
  728.    Print At(52,17);"                           "
  729.    Print At(52,18);"                           "
  730.    Print At(52,19);"                           "
  731.    Print At(52,20);"                           "
  732.    Print At(52,21);"                           "
  733.    Print At(52,22);"                           "
  734.    Paper 2 : Pen 0 : Print At(42,15);"Eintrag:  ";I;" von: ";Z-1
  735.    Print At(42,16);"Rufkanal: ";Left$(ZG$(I),24)
  736.    Print At(42,17);"Skip:     ";Left$(ZA$(I),24)
  737.    Print At(42,18);"Name:     ";Left$(ZB$(I),24)
  738.    Print At(42,19);"QTH:      ";Left$(ZC$(I),24)
  739.    Print At(42,20);"S-Wert:   ";Left$(ZD$(I),24)
  740.    Print At(42,21);"S-Art:    ";Left$(ZE$(I),24)
  741.    Print At(42,22);"Bemerkung:";Left$(ZJ$(I),24)
  742.    Return 
  743.    Rem ************************************************************** 
  744.    PAT8X: Rem und korrekten R�cksprung nach der Korrektur Marke
  745.    Z=M : M=0 : BUF=TEMP2
  746. Rem   If A=255 Then A=0 : Z=M : M=0 : BUF=TEMP2
  747. End Proc
  748. Rem ***********************************************
  749. Rem * Druckroutine f�r Skipdat                    *
  750. Rem ***********************************************
  751. Procedure DRUCK
  752.    TEMP2=BUF
  753.    KKS=1 : Rem Seitenzahl init
  754.    MDR=72 : Rem maximale Zeilenanzahl pro Seite
  755.    Ink 2,2 : Bar 0,118 To 639,256
  756.    Ink 1 : Draw 0,118 To 640,118 : Draw 640,118 To 640,255
  757.    Ink 0 : Draw 640,255 To 0,255 : Draw 0,255 To 0,118
  758.    Pen 0 : Print At(34,15);"Druckmen�" : Pen 0
  759.    Print At(2,17);"Blatt�berschrift:"
  760.    Print At(2,19);"Anzahl d. Seiten:"
  761.    Ink 1 : Draw 13,133 To 151,133 : Draw 151,133 To 151,144
  762.    Ink 0 : Draw 151,144 To 13,144 : Draw 13,144 To 13,133
  763.    Ink 1 : Draw 13,149 To 151,149 : Draw 151,149 To 151,160
  764.    Ink 0 : Draw 151,160 To 13,160 : Draw 13,160 To 13,149
  765.    Ink 0 : Draw 160,133 To 400,133 : Draw 400,133 To 400,144
  766.    Ink 1 : Draw 400,144 To 160,144 : Draw 160,144 To 160,133
  767.    Ink 0 : Draw 160,149 To 400,149 : Draw 400,149 To 400,160
  768.    Ink 1 : Draw 400,160 To 160,160 : Draw 160,160 To 160,149
  769.    Ink 1 : Draw 410,133 To 600,133 : Draw 600,133 To 600,160
  770.    Ink 0 : Draw 600,160 To 410,160 : Draw 410,160 To 410,133
  771.    Ink 0 : Draw 1,170 To 639,170 : Draw 639,170 To 639,253
  772.    Ink 1 : Draw 639,253 To 1,253 : Draw 1,253 To 1,170
  773.    Print At(53,17);"F1...Blatt F3...Druck"
  774.    Print At(53,18);"F2...Seite ESC..Abbr."
  775.    Print At(21,19);"alle"
  776.    L1:
  777.    TASTATUR
  778.    T=Scancode
  779.    If A=27 Then Goto LX
  780.    If T=80 Then Goto L2 : Rem Seite
  781.    If T=81 Then Goto L3 : Rem Seitenanzahl   
  782.    If T=82 Then Goto DRUCK : Rem Druckbeginn
  783.    Goto L1 : Rem loop 
  784.    Rem ***********************
  785.    DRUCK:
  786.    K=0 : Rem Spalte init
  787.    RT=1 : Rem Spaltenz�hler init 
  788.    If SE=0 Then SE=Z-1 : Rem wenn nicht eingegeben, max. Seitenanzahl 
  789.    Pen 0 : Print At(30,15);"Ich drucke ...       " : Pen 0
  790.    Open Out 7,"PAR:"
  791.    Rem Gosub RICHTE2 : Rem ï¿½berschrift zentrieren 
  792.    Goto PRJUM
  793.    Rem ************************ 
  794.    Rem * Seiten�berschrift    * 
  795.    Rem ************************ 
  796.    NESIDE:
  797.    Print #7,INIT$ : Rem Drucker init 
  798.    Print #7,ACHT$ : Rem 1/8 inch 
  799.    Print #7,SCHRIFT$ : Rem Courier an 
  800.    '
  801.    Print #7,NLQ$ : Rem NLQ an 
  802.    Print #7,CPI$ : Rem 10 cpi an
  803.    Print #7,BREIT$ : Rem Breitschrift an
  804.    Print #7,SHADOW$ : Rem Schattendruck ein
  805.    Gosub RICHTE2 : Rem ï¿½berschrift zentrieren 
  806.    Print #7,RAR$
  807.    Print #7,CPL$ : Rem 15 cpi an
  808.    Print #7,SHADOF$ : Rem Schattendruck aus
  809.    Print #7,BREITO$ : Rem Breitschrift aus 
  810.    Print #7,SCHMAL$ : Rem Schmaldruck ein  
  811.    '
  812.    Print #7," "
  813.    Print #7,"                                                   SEITE ",KKS
  814.    '
  815.    Print #7,E1$; : Rem Ecke 
  816.    For ZI=1 To 109 : Rem Linie 1 waagerecht ziehen
  817.       Print #7,WAAGER$;
  818.    Next ZI
  819.    Print #7,E2$ : Rem Ecke 
  820.    '
  821.    Print #7,SENKR$;"  Skip             Name             QTH             S-We. Rad Ch. Bemerkungen                     Station    ";SENKR$
  822.    '
  823.    Print #7,E3$
  824.    For ZI=1 To 111 : Rem Linie 2 waagerecht ziehen
  825.       Print #7,WAAGER$;
  826.    Next ZI
  827.    Print #7,E4$
  828.    '
  829.    Return : 
  830.    Rem ************************ 
  831.    Rem * Drucken auf          * 
  832.    Rem ************************ 
  833.    PRJUM:
  834.    Gosub NESIDE
  835.    For D=1 To SE
  836.       Gosub RICHTE : Rem Formatieren einer Zeile
  837.       Print At(1,22+K);Left$(X$,78)
  838.       Gosub UMLAUTE
  839.       Print #7,X$
  840.       K=K+1 : If K>8 Then K=1
  841.       RT=RT+1 : If RT>68 Then Pen 0 : Print At(30,15);"Neue Seite einlegen ..." : Wait Key : RT=1 : KKS=KKS+1 : Gosub NESIDE
  842.    Next D
  843.    Close 7
  844.    Goto LX : Rem und fertig ... 
  845.    Rem ***************************  
  846.    Rem * String-Formatierroutine *
  847.    Rem ***************************
  848.    RICHTE:
  849.    '
  850.    T1$=ZA$(D) : Rem Skip 
  851.    If Len(T1$)>11 Then T1$=Left$(ZA$(D),12) : Goto A1
  852.    For I=Len(ZA$(D)) To 11 : Rem Skip 
  853.       T1$=T1$+" " : Rem Leerzeichen ran bis 10 
  854.    Next I
  855.    '
  856.    A1:
  857.    T2$=ZB$(D) : Rem Name 
  858.    If Len(T2$)>15 Then T2$=Left$(ZB$(D),16) : Goto A2
  859.    For I=Len(ZB$(D)) To 15
  860.       T2$=T2$+" "
  861.    Next I
  862.    '
  863.    A2:
  864.    T3$=ZC$(D) : Rem QTH
  865.    If Len(T3$)>17 Then T3$=Left$(ZC$(D),18) : Goto A3
  866.    For I=Len(ZC$(D)) To 17
  867.       T3$=T3$+" "
  868.    Next I
  869.    '
  870.    A3:
  871.    T4$=ZD$(D) : Rem S-Wert 
  872.    If Len(T4$)>4 Then T4$=Left$(ZD$(D),5) : Goto A4
  873.    For I=Len(ZD$(D)) To 4
  874.       T4$=T4$+" "
  875.    Next I
  876.    '
  877.    A4:
  878.    T5$=ZE$(D) : Rem Radio-Wert 
  879.    If Len(T5$)>2 Then T5$=Left$(ZE$(D),3) : Goto A5
  880.    For I=Len(ZE$(D)) To 2
  881.       T5$=T5$+" "
  882.    Next I
  883.    '
  884.    A5:
  885.    T6$=ZG$(D) : Rem Rufkanal 
  886.    If Len(T6$)>2 Then T6$=Left$(ZG$(D),3) : Goto A6
  887.    For I=Len(ZG$(D)) To 2
  888.       T6$=T6$+" "
  889.    Next I
  890.    '
  891.    A6:
  892.    T7$=ZJ$(D) : Rem Bemerkung
  893.    If Len(T7$)>30 Then T7$=Left$(ZJ$(D),31) : Goto A7
  894.    For I=Len(ZJ$(D)) To 30
  895.       T7$=T7$+" "
  896.    Next I
  897.    '
  898.    A7:
  899.    T8$=ZH$(D) : Rem Heimstation
  900.    If Len(T8$)>10 Then T8$=Left$(ZH$(D),11) : Goto A8
  901.    For I=Len(ZH$(D)) To 10
  902.       T8$=T8$+" "
  903.    Next I
  904.    '
  905.    A8:
  906.       X$=SENKR$+"   "+T1$+SENKR$+T2$+SENKR$+T3$+SENKR$+T4$+SENKR$+T5$+SENKR$+T6$+SENKR$+T7$+SENKR$+T8$+SENKR$
  907.    Return 
  908.    Rem ************************ 
  909.    Rem *�BERSCHRIFT ZENTRIEREN* 
  910.    Rem ************************ 
  911.    RICHTE2:
  912.    If RAR$="" Then RAR$="Skipliste"
  913.    For I=Len(RAR$) To 22
  914.       RAR$=RAR$+" " : Rem rechts Leerzeichen anf�gen 
  915.       TEMP$=" "+RAR$ : RAR$=TEMP$ : Rem links Leerzeichen anf�gen
  916.    Next I
  917.    Return 
  918.    Rem ****************************************** 
  919.    Rem * Umlaute korrekt ins Deutsche einpassen * 
  920.    Rem ****************************************** 
  921.    UMLAUTE:
  922.    Rem ==> x$ ist eine formatierte Druckzeile 
  923.    For UK=1 To Len(X$)
  924.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(129)
  925.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(132)
  926.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(148)
  927.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(142)
  928.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(153)
  929.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(154)
  930.       If Mid$(X$,UK,1)="�" Then Mid$(X$,UK,1)=Chr$(225)
  931.    Next UK
  932.    Return 
  933.    Rem ***********************
  934.    Rem * ï¿½berschrift eingeben*
  935.    Rem ***********************
  936.    L2:
  937.    Print At(21,17);"*                           "
  938.    RAR$=""
  939.    LL1:
  940.    TASTATUR
  941.    If A=27 Then RAR$="" : Print At(21,17);"                            " : Goto L1 : Rem 28 
  942.    If A=13 Then Goto L1
  943.    RAR$=RAR$+A$
  944.    Print At(21,17);RAR$
  945.    If Len(RAR$)>27 Then Goto L1
  946.    Goto LL1 : Rem loop 
  947.    Rem ***********************
  948.    L3: Rem Seitenanzahl eingeben
  949.    Print At(21,19);"    " : Rem alle weg 
  950.    Print At(21,19);
  951.    Input SE
  952.    Goto L1
  953.    Rem ***********************
  954.    LX:
  955.    BUF=TEMP2
  956. End Proc
  957. Rem ***********************************************
  958. Rem * Verschl�sseln der Eintr�ge                  *
  959. Rem ***********************************************
  960. Procedure CRYPT
  961. PAT10Y:
  962. Ink 2,2 : Bar 1,118 To 639,255
  963. Ink 1 : Draw 1,118 To 639,118 : Draw 639,118 To 639,254 : Draw 1,200 To 639,200
  964. Ink 0 : Draw 639,254 To 1,254 : Draw 1,254 To 1,118 : Draw 1,201 To 639,201
  965. Print At(2,27);"F1  = Pa�wortverschl�sselung aktivieren und eingeben"
  966. Print At(2,28);"F2  = Pa�wortverschl�sselung deaktivieren und zur�ck"
  967. Print At(2,29);"ESC = Abbruch"
  968. If S=1 Then Print At(20,24);"Verschl�sselung ist aktiviert"
  969. If S=0 Then Print At(20,24);"Verschl�sselung ist ausgeschaltet"
  970. TASTATUR
  971. T=Scancode
  972. If T=80 Then Goto PAT10A : Rem F1 Pa�wort aktivieren  
  973. If T=81 Then Goto PAT10B : Rem F2 Pa�wort deaktivieren
  974. If A=27 Then Goto PAT10X : Rem Abbruch
  975. PAT10A:
  976. Pen 3 : Print At(1,17);"Pa�wort:"
  977. Pen 0 : Ink 1 : Draw 100,134 To 400,134 : Draw 400,134 To 400,145
  978. Ink 0 : Draw 400,145 To 100,145 : Draw 100,145 To 100,134
  979. BUF$="" : MER=0
  980. Rem *******
  981. PAT10C:
  982. TASTATUR
  983. If Len(BUF$)>25 Then Goto PAT10D : 
  984. If A=8 Then BUF$=Left$(BUF$,Len(BUF$)-1) : Goto PAT0X
  985. If A=13 Then Goto PAT10D : Rem ab zu Verify 
  986. BUF$=BUF$+A$
  987. PAT0X:
  988. Print At(14,17);"                              "
  989. For I=1 To Len(BUF$)
  990. Print At(13+I,17);"*"
  991. Next I
  992. Goto PAT10C
  993. Rem *******
  994. PAT10D: Rem Verify Pa�wort 
  995. CRYPT$=BUF$ : BUF$=""
  996. Pen 3 : Print At(1,17);"Verify: "
  997. Pen 0 : Print At(13,17);"                          "
  998. PAT10F:
  999. TASTATUR
  1000. If Len(BUF$)>25 Then Goto PAT10E
  1001. If A=8 Then BUF$=Left$(BUF$,Len(BUF$)-1) : Goto PAT0Y
  1002. If A=13 Then Goto PAT10E : Rem ab zu ok 
  1003. BUF$=BUF$+A$
  1004. PAT0Y:
  1005. Print At(14,17);"                              "
  1006. For I=1 To Len(BUF$)
  1007. Print At(13+I,17);"*"
  1008. Next I
  1009. For I=1 To Len(BUF$)-1
  1010. MER=MER+Asc(Left$(BUF$,I))
  1011. Next I
  1012. Goto PAT10F
  1013. Rem ******** 
  1014. PAT10E: Rem Pa�wort ok?
  1015. If BUF$=CRYPT$ Then S=1 : BUF$="" : Goto PAT10X : Rem alles ok, finish 
  1016. Print At(20,20);"Pa�wort falsch eingegeben ..." : S=0 : BUF$="" : CRYPT$=""
  1017. Wait 50
  1018. Goto PAT10Y : Rem loop, noch mal 
  1019. Rem ******** 
  1020. PAT10B:
  1021. CRYPT$=""
  1022. S=0 : Rem Cryptkennung aus 
  1023. PAT10X:
  1024. End Proc
  1025. Rem ***********************************************
  1026. Rem * L�schen, sortieren usw.                     *
  1027. Rem ***********************************************
  1028. Procedure LOESCH
  1029. CLICKBOX[1,100,639,155,False,"Bet�tigen Sie eine der Tasten oder ESC",20,25]
  1030. ENTERBOX[132,102,512-128,30,25,20]
  1031. Pen 0 : Print At(17,13);"F1 ... Sortieren Skip   F2 ... Sortieren  Name"
  1032. Print At(17,14);"F3 ... Sortieren QTH    F4 ... Sortieren S-Wert"
  1033. Print At(17,15);"F5 ... L�schen von-bis  F6 ... L�schen von"
  1034.    TASTATUR
  1035.    M1:
  1036.    T=Scancode
  1037.    If T=80 Then G$="Sortieren Skip" : Goto M2 : Rem F1 Sortieren Skip
  1038.    If T=81 Then G$="Sortieren Name" : Goto M3 : Rem F2 Sortieren Name  
  1039.    If T=82 Then G$="Sortieren QTH " : Goto M4 : Rem F3 Sortieren QTH 
  1040.    If T=83 Then G$="Sortieren S-Wert" : Goto M5 : Rem F4 Sortieren S-Wert
  1041.    If T=84 Then G$="L�schen von-bis:" : Goto M6 : Rem F5 L�schen von-bis 
  1042.    If T=85 Then G$="L�schen ab Pos.:" : Goto M7 : Rem F6 L�schen von 
  1043.    If A=27 Then Goto MX
  1044.    Goto M1 : Rem loop 
  1045.    Rem *******************************
  1046.    Rem * Sortieren Skip alphabetisch *
  1047.    Rem *******************************
  1048.    M2:
  1049.    Gosub MASK
  1050.    For I=0 To Z-2
  1051.       For J=I To Z-1
  1052.          If ZA$(I)<ZA$(J) Then Goto L1
  1053.          TEMP$=ZA$(I)
  1054.          ZA$(I)=ZA$(J)
  1055.          ZA$(J)=TEMP$ : N$=ZB$(J) : O$=ZC$(J) : P$=ZD$(J) : Q$=ZE$(J)
  1056.          R$=ZF$(J) : S$=ZG$(J) : T$=ZH$(J) : U$=ZI$(J) : V$=ZJ$(J)
  1057.          ZB$(J)=ZB$(I) : ZC$(J)=ZC$(I) : ZD$(J)=ZD$(I) : ZE$(J)=ZE$(I)
  1058.          ZF$(J)=ZF$(I) : ZG$(J)=ZG$(I) : ZH$(J)=ZH$(I) : ZI$(J)=ZI$(I) : ZJ$(J)=ZJ$(I)
  1059.          ZB$(I)=N$ : ZC$(I)=O$ : ZD$(I)=P$ : ZE$(I)=Q$ : ZF$(I)=R$
  1060.          ZG$(I)=S$ : ZH$(I)=T$ : ZI$(I)=U$ : ZJ$(I)=V$
  1061.          L1:
  1062.       Next J
  1063.    Next I
  1064.    Goto MX
  1065.    Rem *******************************
  1066.    Rem * Sortieren Name              *
  1067.    Rem *******************************
  1068.    M3:
  1069.    Gosub MASK : 
  1070.    For I=0 To Z-2
  1071.       For J=I To Z-1
  1072.          If ZB$(I)<ZB$(J) Then Goto L2
  1073.          TEMP$=ZB$(I)
  1074.          ZB$(I)=ZB$(J)
  1075.          ZB$(J)=TEMP$ : N$=ZA$(J) : O$=ZC$(J) : P$=ZD$(J) : Q$=ZE$(J)
  1076.          R$=ZF$(J) : S$=ZG$(J) : T$=ZH$(J) : U$=ZI$(J) : V$=ZJ$(J)
  1077.          ZA$(J)=ZA$(I) : ZC$(J)=ZC$(I) : ZD$(J)=ZD$(I) : ZE$(J)=ZE$(I)
  1078.          ZF$(J)=ZF$(I) : ZG$(J)=ZG$(I) : ZH$(J)=ZH$(I) : ZI$(J)=ZI$(I) : ZJ$(J)=ZJ$(I)
  1079.          ZA$(I)=N$ : ZC$(I)=O$ : ZD$(I)=P$ : ZE$(I)=Q$ : ZF$(I)=R$
  1080.          ZG$(I)=S$ : ZH$(I)=T$ : ZI$(I)=U$ : ZJ$(I)=V$
  1081.          L2:
  1082.       Next J
  1083.    Next I
  1084.    Goto MX
  1085.    Rem *******************************
  1086.    Rem * Sortieren QTH               *
  1087.    Rem *******************************
  1088.    M4:
  1089.    Gosub MASK : 
  1090.    For I=0 To Z-2
  1091.       For J=I To Z-1
  1092.          If ZC$(I)<ZC$(J) Then Goto L3
  1093.          TEMP$=ZC$(I)
  1094.          ZC$(I)=ZC$(J)
  1095.          ZC$(J)=TEMP$ : N$=ZB$(J) : O$=ZA$(J) : P$=ZD$(J) : Q$=ZE$(J)
  1096.          R$=ZF$(J) : S$=ZG$(J) : T$=ZH$(J) : U$=ZI$(J) : V$=ZJ$(J)
  1097.          ZB$(J)=ZB$(I) : ZA$(J)=ZA$(I) : ZD$(J)=ZD$(I) : ZE$(J)=ZE$(I)
  1098.          ZF$(J)=ZF$(I) : ZG$(J)=ZG$(I) : ZH$(J)=ZH$(I) : ZI$(J)=ZI$(I) : ZJ$(J)=ZJ$(I)
  1099.          ZB$(I)=N$ : ZA$(I)=O$ : ZD$(I)=P$ : ZE$(I)=Q$ : ZF$(I)=R$
  1100.          ZG$(I)=S$ : ZH$(I)=T$ : ZI$(I)=U$ : ZJ$(I)=V$
  1101.          L3:
  1102.       Next J
  1103.    Next I
  1104.    Goto MX
  1105.    Rem *******************************
  1106.    Rem * Sortieren S-Wert            *
  1107.    Rem *******************************
  1108.    M5:
  1109.    Gosub MASK
  1110.    For I=0 To Z-2
  1111.       For J=I To Z-1
  1112.          If ZD$(I)<ZD$(J) Then Goto L4
  1113.          TEMP$=ZD$(I)
  1114.          ZD$(I)=ZD$(J)
  1115.          ZD$(J)=TEMP$ : N$=ZB$(J) : O$=ZC$(J) : P$=ZA$(J) : Q$=ZE$(J)
  1116.          R$=ZF$(J) : S$=ZG$(J) : T$=ZH$(J) : U$=ZI$(J) : V$=ZJ$(J)
  1117.          ZB$(J)=ZB$(I) : ZC$(J)=ZC$(I) : ZA$(J)=ZA$(I) : ZE$(J)=ZE$(I)
  1118.          ZF$(J)=ZF$(I) : ZG$(J)=ZG$(I) : ZH$(J)=ZH$(I) : ZI$(J)=ZI$(I) : ZJ$(J)=ZJ$(I)
  1119.          ZB$(I)=N$ : ZC$(I)=O$ : ZA$(I)=P$ : ZE$(I)=Q$ : ZF$(I)=R$
  1120.          ZG$(I)=S$ : ZH$(I)=T$ : ZI$(I)=U$ : ZJ$(I)=V$
  1121.          L4:
  1122.       Next J
  1123.    Next I
  1124.    Goto MX
  1125.    Rem *******************************
  1126.    Rem * Maske darstellen L�sch      *
  1127.    Rem *******************************
  1128.    MASK:
  1129.    REAL3DMESSAGE[92,130,550-92,90,True,20,25,"Einen kleinen Moment ...","","","","","","","","Wait",""]
  1130.    Print At(32,19);G$
  1131.    Return 
  1132.    Rem ******************************** 
  1133.    M6:
  1134.    Gosub MASK
  1135.    Print At(25,20);"L�schen von: ";
  1136.    X$=""
  1137. LLO1:
  1138. TASTATUR
  1139. If A=13 Then Goto LLO2
  1140. X$=X$+A$
  1141. If Len(X$)>5 Then Goto LLO2
  1142. Print At(38,20);X$
  1143. Goto LLO1
  1144. LLO2:
  1145. X=Val(X$)
  1146. Print At(25,21);"L�schen bis: ";
  1147. Y$=""
  1148. LLO3:
  1149. TASTATUR
  1150. If A=13 Then Goto LLO4
  1151. Y$=Y$+A$
  1152. If Len(Y$)>5 Then Goto LLO4
  1153. Print At(38,21);Y$
  1154. Goto LLO3
  1155. LLO4:
  1156. Y=Val(Y$)
  1157.    If X>Y Then Goto MX
  1158.    If Y>Z Then Y=Z
  1159.    Print At(20,22);"L�schen von Pos: ";X;" bis: ";Y
  1160.    Print At(29,23);"Korrekt (J/N)?"
  1161.    M6A:
  1162.    TASTATUR
  1163.    If A$="j" Then Goto M6B
  1164.    If A$="n" Then Goto MX
  1165.    Goto M6A : Rem loop 
  1166.    M6B: Rem ist noch nocht fertig !!!
  1167.    For H=X To Y : Rem y-1 remove Bug 
  1168.       ZA$(H)="" : ZB$(H)="" : ZC$(H)="" : ZD$(H)="" : ZE$(H)="" : ZF$(H)=""
  1169.       ZG$(H)="" : ZH$(H)="" : ZI$(H)="" : ZJ$(H)=""
  1170.    Next H
  1171.    Gosub BUB : Rem ï¿½berfl�ssige Leerstellen eliminieren 
  1172.    Rem BUF=B-G
  1173.    Rem Z=Z-BUF
  1174.    Goto MX
  1175.    Rem ******************************** 
  1176.    Rem * Sortierbubble f�r Cut L�sch  * 
  1177.    Rem ******************************** 
  1178.    BUB:
  1179.    Rem erst mal alle Leerstellen nach hinten schieben 
  1180.    For I=0 To Z-2
  1181.       For J=I To Z-1
  1182.          If ZA$(I)<>"" Then Goto L5
  1183.          TEMP$=ZA$(I)
  1184.          ZA$(I)=ZA$(J)
  1185.          ZA$(J)=TEMP$ : N$=ZB$(J) : O$=ZC$(J) : P$=ZD$(J) : Q$=ZE$(J)
  1186.          R$=ZF$(J) : S$=ZG$(J) : T$=ZH$(J) : U$=ZI$(J) : V$=ZJ$(J)
  1187.          ZB$(J)=ZB$(I) : ZC$(J)=ZC$(I) : ZD$(J)=ZD$(I) : ZE$(J)=ZE$(I)
  1188.          ZF$(J)=ZF$(I) : ZG$(J)=ZG$(I) : ZH$(J)=ZH$(I) : ZI$(J)=ZI$(I) : ZJ$(J)=ZJ$(I)
  1189.          ZB$(I)=N$ : ZC$(I)=O$ : ZD$(I)=P$ : ZE$(I)=Q$ : ZF$(I)=R$
  1190.          ZG$(I)=S$ : ZH$(I)=T$ : ZI$(I)=U$ : ZJ$(I)=V$
  1191.          L5:
  1192.       Next J
  1193.    Next I
  1194.    Rem und nun die Leerstellen abziehen 
  1195.    BUF=Z-1
  1196.    For I=0 To BUF
  1197.       If ZA$(I)="" Then Z=Z-1 : L=L-1
  1198.    Next I
  1199.    Return 
  1200.    Rem ******************************** 
  1201.    M7:
  1202.    Gosub MASK
  1203.    Print At(25,20);
  1204. X$=""
  1205. LLO6:
  1206. TASTATUR
  1207. If A=13 Then Goto LLO7
  1208. If Len(X$)>5 Then Goto LLO7
  1209. X$=X$+A$
  1210. Print At(38,20);X$
  1211. Goto LLO6 : 
  1212. LLO7:
  1213. X=Val(X$)
  1214. Print At(27,22);"L�schen ab Position";X
  1215. Print At(31,23);"Korrekt (J/N)?"
  1216. M6C:
  1217. TASTATUR
  1218. If A$="j" Then Goto M6D
  1219. If A$="n" Then Goto MX
  1220. Goto M6C : 
  1221. M6D:
  1222. For I=X To Z-1
  1223. ZA$(I)="" : ZB$(I)="" : ZC$(I)="" : ZD$(I)="" : ZE$(I)=""
  1224. ZF$(I)="" : ZG$(I)="" : ZH$(I)="" : ZI$(I)="" : ZJ$(I)=""
  1225. Z=Z-1 : L=L-1
  1226. Next I
  1227.    Goto MX
  1228.    Rem *******************************  
  1229.    MX:
  1230. End Proc
  1231. Rem ***********************************************
  1232. Rem * Beenden                                     *
  1233. Rem ***********************************************
  1234. Procedure SCHLUSS
  1235. Show On 
  1236. Proc REAL3DMESSAGE[170,71,305,110,True,20,25,"Beenden des Programmes ...","SkipDat V1.2 Beta Release","","Wenn Sie jetzt best�tigen,","wird das Programm beendet","und alle Daten gehen verloren !","Wollen Sie das wirklich ???","","Ja","Nein"]
  1237. Repeat 
  1238. A$=Inkey$ : A=Asc(A$)
  1239. If A=13 Then Goto LLO2
  1240. If A$="j" Then Goto LLO1
  1241. If A$="n" Then Goto LLO2
  1242. Until Mouse Key=1 and Mouse Zone=1
  1243. LLO1:
  1244. End 
  1245. LLO2:
  1246. Hide On 
  1247. End Proc
  1248. Rem ***********************************************
  1249. Rem * Doppelbelegungen herausbekommen, Einsprung  *
  1250. Rem * aus dem Men� Korrektur heraus mit F1        *
  1251. Rem ***********************************************
  1252. Procedure BELEG
  1253.    Ink 2,2 : Bar 150,50 To 500,200
  1254. Paper 2 : Ink 1 : Draw 150,50 To 500,50 : Draw 500,50 To 500,200
  1255.    Ink 0 : Draw 500,200 To 150,200 : Draw 150,200 To 150,50
  1256.    Pen 3 : Print At(28,7);"Doppelbelegungen suchen"
  1257.    Pen 0
  1258.    Print At(25,9);"Wirklich suchen (dauert etwas!)"
  1259.    Pen 3 : Print At(25,10);"Suche nur nach doppelten  Skips"
  1260.    Pen 0 : Print At(24,11);"             (J/N)"
  1261.    TASTATUR
  1262.    If A$<>"j" Then Goto MX : 
  1263.    If Z=2 Then Goto MX : Rem keine Eintr�ge, sofort Schlu�
  1264.    For D=1 To Z-2
  1265.       For R=1 To Z-1
  1266.          If R=D Then R=R+1
  1267.          X$=ZA$(R)
  1268.          If X$=ZA$(D) Then Gosub MF : Rem gefunden 
  1269.       Next R
  1270.    Next D
  1271.    Goto MX
  1272.    MF:
  1273.    Print At(23,14);"                           "
  1274.    Print At(23,15);"                           "
  1275.    G$=Str$(R) : If Left$(G$,1)=" " Then G$=Right$(G$,Len(G$)-1)
  1276.    D$=Str$(D) : If Left$(D$,1)=" " Then D$=Right$(D$,Len(D$)-1)
  1277.    If Len(D$)=2 Then D$=" "+D$
  1278.    If Len(D$)=1 Then D$="  "+D$
  1279.    If Len(G$)=2 Then G$=" "+G$
  1280.    If Len(G$)=1 Then G$="  "+G$
  1281.       Print At(23,14);G$;".";"Eintr.:";Left$(X$,10)
  1282.    Print At(23,15);D$;".";"Eintr.:";Left$(ZA$(D),10)
  1283. Repeat 
  1284. A$=Inkey$
  1285. A=Asc(A$)
  1286. Until A$<>""
  1287. T=Scancode
  1288. If A=27 Then Goto MX
  1289. Return 
  1290.    MX:
  1291. End Proc
  1292. Rem ***********************************************
  1293. Rem * zeichne Landkarte f�r grafische QTH-Anzeige *
  1294. Rem ***********************************************
  1295. Procedure LANDKARTE
  1296.    RTA=Z
  1297.    PATA:
  1298.    If RTA>Z Then RTA=RTA-10 : Goto PATA
  1299.    Unpack 9 To 0
  1300.    Rem 5 To RTA,252 
  1301.    Paper 0 : Pen 2 : Print At(25,27);"Dr�cke SPACE zur Darstellung ..."
  1302.    Rem Print At(25,28);"Dr�cke RETURN zum Ausklammern .." 
  1303.    RELOOP:
  1304.    TASTATUR
  1305.    If A=32 Then Goto RELOOP1
  1306.    If A=13 Then Gosub RELOOP2 : Goto RELOOP1
  1307.    Goto RELOOP
  1308.    RELOOP1:
  1309.    Ink 3 : Bar 200,200 To 460,250 : Ink 1 : Draw 200,200 To 460,200 : Draw 460,200 To 460,250
  1310.    Ink 0 : Draw 460,250 To 200,250 : Draw 200,250 To 200,200
  1311.   Draw 205,220 To 445,220 : Draw 445,220 To 445,230
  1312.   Ink 1 : Draw 445,230 To 205,230 : Draw 205,230 To 205,220
  1313.    BUF#=Z
  1314.    RPT#=(239)/BUF# : Rem Schrittweite des Balkens 
  1315.    For I=1 To Z
  1316.       Paper 1 : Bar 206,221 To Int(RPC#+207),229
  1317.       RPC#=RPC#+RPT#
  1318.       Ink 2
  1319.       If Left$(ZC$(I),4)="Ribn" Then A1=A1+1 : Circle 321,76,A1 : Rem Ribnitz  
  1320.       If Left$(ZC$(I),4)="Dier" Then A2=A2+1 : Circle 266,57,A2 : Rem Dierhagen  
  1321.       If Left$(ZC$(I),4)="Rost" Then A3=A3+1 : Circle 114,150,A3 : Rem Rostock  
  1322.       If Left$(ZC$(I),4)="Bent" Then A4=A4+1 : Circle 168,139,A4 : Rem Bentwisch  
  1323.       If Left$(ZC$(I),4)="Popp" Then A5=A5+1 : Circle 210,121,A5 : Rem Poppendorf   
  1324.       If Left$(ZC$(I),4)="Blan" Then A6=A6+1 : Circle 252,111,A6 : Rem Blankenhagen   
  1325.       If Left$(ZC$(I),4)="Graa" Then A7=A7+1 : Circle 190,73,A7 : Rem Graal-M�ritz 
  1326.       If Left$(ZC$(I),4)="Gelb" Then A8=A8+1 : Circle 249,94,A8 : Rem Gelbensande
  1327.       If Left$(ZC$(I),4)="Kloc" Then A9=A9+1 : Circle 283,80,A9 : Rem Klockenhagen 
  1328.       If Left$(ZC$(I),4)="K�rk" Then A10=A10+1 : Circle 297,74,A10 : Rem K�rkwitz 
  1329.       If Left$(ZC$(I),4)="Wust" Then A11=A11+1 : Circle 285,30,A11 : Rem Wustrow
  1330.       If Left$(ZC$(I),4)="Born" Then A12=A12+1 : Circle 341,16,A12 : Rem Born 
  1331.       If Left$(ZC$(I),4)="Prer" Then A13=A13+1 : Circle 376,3,A13 : Rem Prerow 
  1332.       If Left$(ZC$(I),4)="Zing" Then A14=A14+1 : Circle 449,7,A14 : Rem Zingst 
  1333.       If Left$(ZC$(I),4)="K�ck" Then A15=A15+1 : Circle 322,62,A15 : Rem K�ckenshagen 
  1334.       If Left$(ZC$(I),4)="Saal" Then A16=A16+1 : Circle 326,51,A16 : Rem Saal 
  1335.       If Left$(ZC$(I),4)="Damg" Then A17=A17+1 : Circle 334,73,A17 : Rem Damgarten  
  1336.       If Left$(ZC$(I),4)="Temp" Then A18=A18+1 : Circle 361,68,A18 : Rem Tempel 
  1337.       If Left$(ZC$(I),4)="Ahre" Then A19=A19+1 : Circle 387,84,A19 : Rem Ahrenshagen
  1338.       If Left$(ZC$(I),5)="Barth" Then A20=A20+1 : Circle 467,34,A20 : Rem Barth
  1339.       If Left$(ZC$(I),5)="Barte" Then A21=A21+1 : Circle 326,111,A21 : Rem Bartelshagen 
  1340.       If Left$(ZC$(I),4)="Trin" Then A22=A22+1 : Circle 410,71,A22 : Rem Trinwillershagen 
  1341.       If Left$(ZC$(I),4)="L�bn" Then A23=A23+1 : Circle 461,55,A23 : Rem L�bnitz
  1342.       If Left$(ZC$(I),4)="Velg" Then A24=A24+1 : Circle 504,59,A24 : Rem Velgast
  1343.       If Left$(ZC$(I),4)="Grei" Then A25=A25+1 : Circle 635,154,A25 : Rem Greifswald 
  1344.       If Left$(ZC$(I),4)="Sani" Then A26=A26+1 : Circle 315,149,A26 : Rem Sanitz 
  1345.       If Left$(ZC$(I),4)="Dett" Then A27=A27+1 : Circle 393,149,A27 : Rem Dettmannsdorf
  1346.       If Left$(ZC$(I),4)="Marl" Then A28=A28+1 : Circle 425,123,A28 : Rem Marlow 
  1347.       If Left$(ZC$(I),4)="Seml" Then A29=A29+1 : Circle 450,113,A29 : Rem Semlow 
  1348.       If Left$(ZC$(I),3)="Bad" Then A30=A30+1 : Circle 479,148,A30 : Rem Bad-S�lze
  1349.       If Left$(ZC$(I),4)="Trib" Then A31=A31+1 : Circle 525,154,A31 : Rem Tribsees 
  1350.       If Left$(ZC$(I),4)="Grim" Then A32=A32+1 : Circle 596,126,A32 : Rem Grimmen
  1351.       If Left$(ZC$(I),4)="Fran" Then A33=A33+1 : Circle 526,89,A33 : Rem Franzburg
  1352.       If Left$(ZC$(I),4)="Stra" Then A34=A34+1 : Circle 623,32,A34 : Rem Strasund 
  1353.       If Left$(ZC$(I),4)="Kuhl" Then A35=A35+1 : Circle 321,81,A35 : Rem Kuhlrade 
  1354.       If Left$(ZC$(I),4)="Fuhl" Then A36=A36+1 : Circle 425,38,A36 : Rem Fuhlendorf 
  1355.       If Left$(ZC$(I),4)="Borg" Then A37=A37+1 : Circle 311,76,A37 : Rem Borg 
  1356.       If Left$(ZC$(I),4)="Dask" Then A38=A38+1 : Circle 365,80,A38 : Rem Daskow 
  1357.       If Left$(ZC$(I),4)="G�st" Then A39=A39+1 : Circle 120,160,A39 : Rem G�strow
  1358.       If Left$(ZC$(I),4)="Demm" Then A40=A40+1 : Circle 580,140,A40 : Rem Grimmen
  1359.    Next I
  1360. Paper 2 : Pen 1 : Print At(26,30);"Dr�cke Taste zur R�ckkehr ..."
  1361.    Wait Key : Goto RELOOP3
  1362.    Rem *********************************
  1363.    Rem * Ausklammern bestimmter St�dte *
  1364.    Rem *********************************
  1365.    RELOOP2:
  1366. Rem   Print At(25,25);"Noch nicht implementiert ...    " : Wait 100
  1367.    Return 
  1368.    RELOOP3:
  1369.    INITIALISE
  1370. End Proc
  1371. Rem *************
  1372. Rem * Helpmenue *
  1373. Rem *************
  1374. Procedure HELP
  1375. INITIALISE
  1376. Proc REAL3DWINDOW[0,0,640,256,False,"SkipDat Quickhelp Men�","","",0,0]
  1377. Paper 2 : Pen 1 : Print At(33,2);"Tastenbelegung"
  1378. Pen 0 : Print At(2,4);"Cursor hoch  ... Scrollen 1 Seite hoch           ESC  ... Abbruch"
  1379. Print At(2,5);"Cursor runter... Scrollen 1 Seite runter         HELP ... Dieses Men�"
  1380. Print At(2,6);"F1           ... Suchfunktion einleiten          F2   ... Korrekturmen�"
  1381. Print At(2,7);"F3           ... Sortieren und L�schmen�         F4   ... Laden Skipliste"
  1382. Print At(2,8);"F5           ... Speichern einer Skipliste       F6   ... Pa�wort  an/aus"
  1383. Print At(2,9);"F7           ... Druckmen�                       F8   ... Grafikanzeige"
  1384. Print At(2,10);"F9           ... Anh�ngen Skipliste              F10  ... Programmende"
  1385. Pen 1 : Print At(27,12);"Tastenbelegung Ziffernblock"
  1386. Pen 0 : Print At(2,14);"HOME         ... Scrollen zum 1.Eintrag          END  ... Scrollen Ende"
  1387. Print At(2,15);"Curs Up      ... Scrollen 1 Eintrag hoch         CursD .. Scrollen 1  down"
  1388. Print At(2,16);"Page Up      ... Scrollen 1 Seite hoch           PageD .. Scrollen 1P down"
  1389. Print At(2,24);"Bitte vergessen Sie NIE Ihr Pa�wort. Es gibt im Nachhinein keine M�glichkeit,"
  1390. Print At(2,25);"       eine so gesch�tzte Datei ohne Pa�wort wieder lesbar zu machen!"
  1391. Pen 1 : Print At(30,18);"Tasten im Druck-Men�"
  1392. Pen 0 : Print At(2,20);"F1           ... Blatt�berschrift eingeben       F2   ... bis Seite ==> drucke"
  1393. Print At(2,21);"F3           ... Drucken beginnen                ESC  ... zur�ck zur Eingabe"
  1394. Pen 3 : Print At(33,30);"Taste dr�cken ..." : Pen 0
  1395. Wait Key 
  1396. INITIALISE
  1397. End Proc
  1398. Rem ***********************************************
  1399. Rem * Ab hier gehts los mit wb2.0-Sprungroutinen  *
  1400. Rem ***********************************************
  1401. Procedure REAL3DMESSAGE[X,Y,WIDTH,HIGHT,INSIDEPATTERN,XPOS,YPOS,TITLE$,LINE1$,LINE2$,LINE3$,LINE4$,LINE5$,LINE6$,LINE7$,BUTTON1$,BUTTON2$]
  1402.    Rem ** X             = The x possition of the window 
  1403.    Rem ** Y             = The y possition of the window 
  1404.    Rem ** WIDTH         = The width of the window 
  1405.    Rem ** HIGHT         = The height of the window
  1406.    Rem ** INSIDEPATTERN = Whether there is a dithered pattern inside the window 
  1407.    Rem It requires you to specify True, or False
  1408.    Rem ** XPOS          = The x possition of the text (if any) inside the window
  1409.    Rem ** YPOS          = The y possition of the text (if any) inside the window
  1410.    Rem ** TITLE$        = The title of the window 
  1411.    Rem ** LINE1$        = Line 1 of the message (can just be "" for no message) 
  1412.    Rem ** LINE2$        = Line 2 of the message (can just be "" for no message)   
  1413.    Rem ** LINE3$        = Line 3 of the message (can just be "" for no message)   
  1414.    Rem ** LINE4$        = Line 4 of the message (can just be "" for no message)   
  1415.    Rem ** LINE5$        = Line 5 of the message (can just be "" for no message) 
  1416.    Rem ** LINE6$        = Line 6 of the message (can just be "" for no message)     
  1417.    Rem ** LINE7$        = Line 7 of the message (can just be "" for no message)   
  1418.    Rem ** BUTTON1$      = The first of the buttons (can just be "" for no button) 
  1419.    Rem ** BUTTON2$      = The last of the buttons (if this is just "" then the first button will be centered) 
  1420.    Reserve Zone 3
  1421.    Gr Writing 0
  1422.    TXTYPOS=Y+YPOS
  1423.    Get Block 1,X,Y,WIDTH+1,HIGHT+1
  1424.    Ink 2 : Bar X,Y To X+WIDTH,Y+HIGHT
  1425.    Ink 1
  1426.    Draw X,Y+HIGHT To X,Y
  1427.    Draw X,Y To X+WIDTH,Y
  1428.    Ink 0
  1429.    Draw X+WIDTH,Y+1 To X+WIDTH,Y+HIGHT
  1430.    Draw X+WIDTH,Y+HIGHT To X+1,Y+HIGHT
  1431.    Ink 0
  1432.    Draw X+3,Y+HIGHT-1 To X+3,Y+10
  1433.    Draw X+3,Y+10 To X+WIDTH-4,Y+10
  1434.    Ink 1
  1435.    Draw X+WIDTH-3,Y+10 To X+WIDTH-3,HIGHT+Y-1
  1436.    Draw X+WIDTH-3,HIGHT+Y-1 To X+4,Y+HIGHT-1
  1437.    Ink 3
  1438.    Bar X+1,Y+1 To X+WIDTH-1,Y+9
  1439.    Bar X+1,Y+1 To X+2,Y+HIGHT-1
  1440.    Bar X+WIDTH-2,Y+1 To X+WIDTH-1,Y+HIGHT-1
  1441.    If INSIDEPATTERN=True
  1442.       Ink 2
  1443.       Set Pattern 2
  1444.       Paint X+5,Y+15
  1445.       Ink 0
  1446.       Draw X+8,Y+HIGHT-19 To X+8,Y+13
  1447.       Draw X+8,Y+13 To X+WIDTH-8,Y+13
  1448.       Ink 1
  1449.       Draw X+WIDTH-8,Y+13 To X+WIDTH-8,Y+HIGHT-19
  1450.       Draw X+WIDTH-8,Y+HIGHT-19 To X+8,Y+HIGHT-19
  1451.       Set Pattern 0
  1452.       Ink 2
  1453.       Bar X+9,Y+14 To X+WIDTH-9,Y+HIGHT-20
  1454.    End If 
  1455.    If LINE1$<>""
  1456.       Ink 0
  1457.       Text(WIDTH-Len(LINE1$)*8)/2+X,TXTYPOS,LINE1$
  1458.       TXTYPOS=TXTYPOS+9
  1459.       Text(WIDTH-Len(LINE2$)*8)/2+X,TXTYPOS,LINE2$
  1460.       TXTYPOS=TXTYPOS+9
  1461.       Text(WIDTH-Len(LINE3$)*8)/2+X,TXTYPOS,LINE3$
  1462.       TXTYPOS=TXTYPOS+9
  1463.       Text(WIDTH-Len(LINE4$)*8)/2+X,TXTYPOS,LINE4$
  1464.       TXTYPOS=TXTYPOS+9
  1465.       Text(WIDTH-Len(LINE5$)*8)/2+X,TXTYPOS,LINE5$
  1466.       TXTYPOS=TXTYPOS+9
  1467.       Text(WIDTH-Len(LINE6$)*8)/2+X,TXTYPOS,LINE6$
  1468.       TXTYPOS=TXTYPOS+9
  1469.       Text(WIDTH-Len(LINE7$)*8)/2+X,TXTYPOS,LINE7$
  1470.    End If 
  1471.    If BUTTON2$=""
  1472.       Proc CLICKBOX[(WIDTH-40)/2+X,HIGHT+Y-17,40,13,False,BUTTON1$,1,True]
  1473.    End If 
  1474.    If BUTTON2$<>""
  1475.       Proc CLICKBOX[X+8,Y+HIGHT-17,40,13,False,BUTTON1$,1,True]
  1476.       Proc CLICKBOX[WIDTH+X-78,Y+HIGHT-17,70,13,False,BUTTON2$,2,True]
  1477.    End If 
  1478.    Ink 0
  1479.    Text X+4,Y+7,TITLE$
  1480. End Proc
  1481. Procedure SLIDER[X,Y,WIDTH,XBAR,ZHONENUMBER,SETUPZONE]
  1482.    Rem ** X           = x possition of the slider box   
  1483.    Rem ** Y           = y possition of the slider box 
  1484.    Rem ** WIDTH       = width of the slider box 
  1485.    Rem ** XBAR        = the x possition of the bar inside the slider border 
  1486.    Rem ** ZHONENUMBER = the number of the zone to be defined (if a zone is going to be set up)
  1487.    Rem ** SETUPZONE   = if a zone is going to be set up the this should be True, if not False 
  1488.    Proc HEAVYICON[X,Y,WIDTH,10,False,ZHONENUMBER,SETUPZONE]
  1489.    Ink 0
  1490.    Bar X+4+XBAR,Y+2 To X+3+XBAR+30,Y+8
  1491. End Proc
  1492. Procedure ENTERBOX[X,Y,WIDTH,HIGHT,ZHONENUMBER,SETUPZONE]
  1493.    Rem ** X           = x possition of the box
  1494.    Rem ** Y           = y possition of the box
  1495.    Rem ** WIDTH       = width of the box
  1496.    Rem ** HIGHT       = height of the box 
  1497.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any) 
  1498.    Rem ** SETUPZONE   = whether a zone is set up (True, or False) 
  1499.    Ink 1
  1500.    Draw X,Y To X,Y+HIGHT
  1501.    Draw X+1,Y To X+1,Y+HIGHT-1
  1502.    Draw X+2,Y To X+WIDTH-1,Y
  1503.    Draw X+WIDTH-2,Y To X+WIDTH-2,Y+HIGHT-1
  1504.    Draw X+WIDTH-3,Y+2 To X+WIDTH-3,Y+HIGHT-1
  1505.    Draw X+WIDTH-3,Y+HIGHT-1 To X+3,Y+HIGHT-1
  1506.    Ink 0
  1507.    Draw X+2,Y+1 To X+WIDTH-3,Y+1
  1508.    Draw X+2,Y+1 To X+2,Y+HIGHT-1
  1509.    Draw X+3,Y+1 To X+3,Y+HIGHT-2
  1510.    Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1511.    Draw X+WIDTH-1,Y+1 To X+WIDTH-1,Y+HIGHT
  1512.    Draw X+1,Y+HIGHT To X+WIDTH-2,Y+HIGHT
  1513.    If SETUPZONE=True
  1514.       Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+HIGHT
  1515.    End If 
  1516. End Proc
  1517. Procedure CYCLEBOX[X,Y,WIDTH,HIGHT,POSSITION,EMBOSSED,SETUPZONE,ZHONENUMBER,CYCLE1$,CYCLE2$,CYCLE3$,CYCLE4$]
  1518.    Rem ** X           = x possition of the box    
  1519.    Rem ** Y           = y possition of the box    
  1520.    Rem ** WIDTH       = width of the box    
  1521.    Rem ** HIGHT       = height of the box   
  1522.    Rem ** POSSITION   = What stage the cyclebox is at 1,2,3 or 4 (what text is being displayed)   
  1523.    Rem ** EMBOSSED    = Wheter the cyclebox is embossed or not (True, or False)   
  1524.    Rem ** SETUPZONE   = whether a zone is set up (True, or False)   
  1525.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any) 
  1526.    Rem ** CYCLE1$     = the text that is first displayed
  1527.    Rem ** CYCLE2$     = the text that is displayed after 2 clicks   
  1528.    Rem ** CYCLE3$     = the text that is displayed after 3 clicks 
  1529.    Rem ** CYCLE4$     = the text that is displayed after 4 clicks   
  1530.    If EMBOSSED=False
  1531.       Ink 2
  1532.       Bar X+3,Y+1 To X+WIDTH-3,Y+HIGHT-1
  1533.       Ink 1
  1534.       Draw X,Y To X,Y+HIGHT
  1535.       Draw X+1,Y+1 To X+1,Y+HIGHT-1
  1536.       Draw X,Y To X+WIDTH-1,Y
  1537.       Ink 0
  1538.       Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1539.       Draw X+WIDTH-1,Y+1 To X+WIDTH-1,Y+HIGHT
  1540.       Draw X+1,Y+HIGHT To X+WIDTH-1,Y+HIGHT
  1541.       Box X+6,Y+2 To X+15,Y+11
  1542.       Draw X+7,Y+2 To X+7,Y+10
  1543.       Draw X+14,Y+2 To X+14,Y+10
  1544.       Ink 0
  1545.       Plot X+13,Y+7
  1546.       Plot X+16,Y+7
  1547.       Plot X+13,Y+6
  1548.       Plot X+16,Y+6
  1549.       Plot X+12,Y+6
  1550.       Plot X+17,Y+6
  1551.    Else 
  1552.       Ink 2
  1553.       Bar X+3,Y+1 To X+WIDTH-3,Y+HIGHT-1
  1554.       Ink 0
  1555.       Draw X,Y To X,Y+HIGHT
  1556.       Draw X+1,Y+1 To X+1,Y+HIGHT-1
  1557.       Draw X,Y To X+WIDTH-1,Y
  1558.       Ink 1
  1559.       Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1560.       Draw X+WIDTH-1,Y+1 To X+WIDTH-1,Y+HIGHT
  1561.       Draw X+1,Y+HIGHT To X+WIDTH-1,Y+HIGHT
  1562.       Box X+6,Y+2 To X+15,Y+11
  1563.       Draw X+7,Y+2 To X+7,Y+10
  1564.       Draw X+14,Y+2 To X+14,Y+10
  1565.       Ink 1
  1566.       Plot X+13,Y+7
  1567.       Plot X+16,Y+7
  1568.       Plot X+13,Y+6
  1569.       Plot X+16,Y+6
  1570.       Plot X+12,Y+6
  1571.       Plot X+17,Y+6
  1572.    End If 
  1573.    If SETUPZONE=True
  1574.       Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+HIGHT
  1575.    End If 
  1576.    Ink 2
  1577.    Plot X+6,Y+2
  1578.    Plot X+15,Y+2
  1579.    Plot X+15,Y+11
  1580.    Plot X+6,Y+11
  1581.    Plot X+14,Y+9
  1582.    Plot X+15,Y+9
  1583.    Ink 0
  1584.    Draw X+20,Y+2 To X+20,Y+12
  1585.    Ink 1
  1586.    Draw X+21,Y+2 To X+21,Y+12
  1587.    Ink 0
  1588.    If POSSITION=1 Then Text(WIDTH-Len(CYCLE1$)*8)/2+X,Y+9,CYCLE1$
  1589.    If POSSITION=2 Then Text(WIDTH-Len(CYCLE2$)*8)/2+X,Y+9,CYCLE2$
  1590.    If POSSITION=3 Then Text(WIDTH-Len(CYCLE3$)*8)/2+X,Y+9,CYCLE3$
  1591.    If POSSITION=4 Then Text(WIDTH-Len(CYCLE4$)*8)/2+X,Y+9,CYCLE4$
  1592. End Proc
  1593. Procedure TICKBOX[X,Y,TICK,ZHONENUMBER,SETUPZONE]
  1594.    Rem ** X           = x possition of the box
  1595.    Rem ** Y           = y possition of the box
  1596.    Rem ** TICK        = whether the box displays a tick or not (True, or False) 
  1597.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any) 
  1598.    Rem ** SETUPZONE   = whether a zone is set up (True, or False) 
  1599.    Ink 1
  1600.    Draw X,Y To X+23,Y
  1601.    Draw X,Y To X,Y+10
  1602.    Draw X+1,Y To X+1,Y+9
  1603.    Ink 0
  1604.    Draw X+24,Y To X+24,Y+10
  1605.    Draw X+23,Y+1 To X+23,Y+10
  1606.    Draw X+1,Y+10 To X+22,Y+10
  1607.    If TICK=True
  1608.       Ink 0
  1609.       Plot X+6,Y+5
  1610.       Plot X+7,Y+5
  1611.       Plot X+8,Y+5
  1612.       Plot X+7,Y+6
  1613.       Plot X+8,Y+6
  1614.       Plot X+9,Y+6
  1615.       Plot X+8,Y+7
  1616.       Plot X+9,Y+7
  1617.       Plot X+10,Y+7
  1618.       Plot X+11,Y+7
  1619.       Plot X+12,Y+7
  1620.       Plot X+9,Y+8
  1621.       Plot X+10,Y+8
  1622.       Plot X+11,Y+8
  1623.       Plot X+12,Y+6
  1624.       Plot X+13,Y+6
  1625.       Plot X+13,Y+5
  1626.       Plot X+14,Y+5
  1627.       Plot X+14,Y+4
  1628.       Plot X+15,Y+4
  1629.       Plot X+15,Y+3
  1630.       Plot X+16,Y+3
  1631.       Plot X+16,Y+2
  1632.       Plot X+17,Y+2
  1633.       Plot X+18,Y+2
  1634.    Else 
  1635.       Ink 2
  1636.       Bar X+2,Y+1 To X+21,Y+8
  1637.    End If 
  1638.    If SETUPZONE=True
  1639.       Set Zone ZHONENUMBER,X,Y To X+24,Y+10
  1640.    End If 
  1641. End Proc
  1642. Procedure HEAVYICON[X,Y,WIDTH,HIGHT,EMBOSSED,ZHONENUMBER,SETUPZONE]
  1643.    Rem ** X           = x possition of the box
  1644.    Rem ** Y           = y possition of the box
  1645.    Rem ** WIDTH       = width of the box    
  1646.    Rem ** HIGHT       = height of the box   
  1647.    Rem ** EMBOSSED    = whether the box is embossed or not (True, or False) 
  1648.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any) 
  1649.    Rem ** SETUPZONE   = whether a zone is set up (True, or False) 
  1650.    If EMBOSSED=False
  1651.       Ink 1
  1652.       Draw X,Y To X+WIDTH,Y
  1653.       Draw X,Y To X,Y+HIGHT
  1654.       Draw X+1,Y To X+1,Y+HIGHT-1
  1655.       Ink 0
  1656.       Draw X+WIDTH+1,Y To X+WIDTH+1,Y+HIGHT
  1657.       Draw X+WIDTH,Y+1 To X+WIDTH,Y+HIGHT
  1658.       Draw X+1,Y+HIGHT To X+WIDTH-1,Y+HIGHT
  1659.    Else 
  1660.       Ink 0
  1661.       Draw X,Y To X+WIDTH,Y
  1662.       Draw X,Y To X,Y+HIGHT
  1663.       Draw X+1,Y To X+1,Y+HIGHT-1
  1664.       Ink 1
  1665.       Draw X+WIDTH+1,Y To X+WIDTH+1,Y+HIGHT
  1666.       Draw X+WIDTH,Y+1 To X+WIDTH,Y+HIGHT
  1667.       Draw X+1,Y+HIGHT To X+WIDTH-1,Y+HIGHT
  1668.    End If 
  1669.    If SETUPZONE=True
  1670.       Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+HIGHT
  1671.    End If 
  1672. End Proc
  1673. Procedure REAL3DWINDOW[X,Y,WIDTH,HIGHT,GADGET,TITLE$,BUTTON1$,BUTTON2$,WIDTHOFBUTTONS,BUTDISTEDGE]
  1674.    Rem ** X              = x possition of the window  
  1675.    Rem ** Y              = y possition of the window  
  1676.    Rem ** WIDTH          = width of the window      
  1677.    Rem ** HIGHT          = height of the window   
  1678.    Rem ** GADGET         = whether the window has a close gadget or not (True, or False)  
  1679.    Rem ** TITLE$         = the title of the window  
  1680.    Rem ** BUTTON1$       = the first of the buttons (can just be "" for no button)  
  1681.    Rem ** BUTTON2$       = the last of the buttons (if this is just "" then the first button will be centered)  
  1682.    Rem ** WIDTHOFBUTTONS = the width of the Ok and Cancel buttons 
  1683.    Rem ** BUTDISTEDGE    = the distance from the edge of the window that the buttons are drawn  
  1684.    Ink 2
  1685.    Bar X+3,Y+11 To X+WIDTH-3,Y+HIGHT-2
  1686.    Ink 1
  1687.    Draw X,Y+HIGHT To X,Y
  1688.    Draw X,Y To X+WIDTH,Y
  1689.    Ink 0
  1690.    Draw X+WIDTH,Y+1 To X+WIDTH,Y+HIGHT
  1691.    Draw X+WIDTH,Y+HIGHT To X+1,Y+HIGHT
  1692.    Ink 0
  1693.    Draw X+3,Y+HIGHT-1 To X+3,Y+10
  1694.    Draw X+3,Y+10 To X+WIDTH-4,Y+10
  1695.    Ink 1
  1696.    Draw X+WIDTH-3,Y+10 To X+WIDTH-3,HIGHT+Y-1
  1697.    Draw X+WIDTH-3,HIGHT+Y-1 To X+4,Y+HIGHT-1
  1698.    Ink 3
  1699.    Bar X+1,Y+1 To X+WIDTH-1,Y+9
  1700.    Bar X+1,Y+1 To X+2,Y+HIGHT-1
  1701.    Bar X+WIDTH-2,Y+1 To X+WIDTH-1,Y+HIGHT-1
  1702.    If BUTTON1$<>""
  1703.       If BUTTON2$=""
  1704.          Proc HEAVYCLICKBOX[(WIDTH-WIDTHOFBUTTONS)/2+X,HIGHT+Y-17,WIDTHOFBUTTONS,13,False,BUTTON1$,0,False]
  1705.       End If 
  1706.    End If 
  1707.    If BUTTON2$<>""
  1708.       Proc HEAVYCLICKBOX[X+BUTDISTEDGE,Y+HIGHT-19,WIDTHOFBUTTONS,13,False,BUTTON1$,0,False]
  1709.       Proc HEAVYCLICKBOX[X+WIDTH-WIDTHOFBUTTONS-BUTDISTEDGE,Y+HIGHT-19,WIDTHOFBUTTONS,13,False,BUTTON2$,0,False]
  1710.    End If 
  1711.    If GADGET=True
  1712.       Paper 3
  1713.       Ink 0
  1714.       Text X+28,Y+7,TITLE$
  1715.    Else 
  1716.       Paper 3
  1717.       Ink 0
  1718.       Text X+4,Y+7,TITLE$
  1719.    End If 
  1720.    If GADGET=True
  1721.       Proc GADGET[X,Y,False]
  1722.    End If 
  1723. End Proc
  1724. Procedure GADGET[X,Y,EMBOSSED]
  1725.    Rem ** X        = x possition of the gadget  
  1726.    Rem ** Y        = y possition of the gadget
  1727.    Rem ** EMBOSSED = whether the gadget is embossed or not (True, or False) 
  1728.    If EMBOSSED=False
  1729.       Proc BEVEL[X,Y,18,10,1,False,3]
  1730.       Ink 1
  1731.       Draw X+19,Y+1 To X+19,Y+9
  1732.       Ink 0
  1733.       Box X+7,Y+3 To X+11,Y+7
  1734.       Ink 1
  1735.       Paint X+8,Y+4
  1736.    End If 
  1737.    If EMBOSSED=True
  1738.       Proc BEVEL[X,Y,18,10,1,True,2]
  1739.       Ink 0
  1740.       Box X+7,Y+3 To X+11,Y+7
  1741.       Ink 2
  1742.       Paint X+8,Y+4
  1743.    End If 
  1744. End Proc
  1745. Procedure HEAVYCLICKBOX[X,Y,WIDTH,HIGHT,EMBOSSED,MESSAGE$,ZHONENUMBER,SETUPZONE]
  1746.    Rem ** X           = x possition of the box  
  1747.    Rem ** Y           = y possition of the box  
  1748.    Rem ** WIDTH       = width of the box  
  1749.    Rem ** HIGHT       = height of the box 
  1750.    Rem ** EMBOSSED    = whether the box is embossed or not (True, or False) 
  1751.    Rem ** MESSAGE$    = what text is centered inside the box (if any) 
  1752.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any)   
  1753.    Rem ** SETUPZONE   = whether a zone is set up (True, or False) 
  1754.    Set Pattern 0
  1755.    If EMBOSSED=False
  1756.       Ink 1
  1757.       Draw X,Y To X,Y+HIGHT
  1758.       Draw X,Y To X+WIDTH-1,Y
  1759.       Draw X+1,Y To X+1,Y+HIGHT-1
  1760.       Ink 0
  1761.       Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1762.       Draw X+WIDTH-1,Y+1 To X+WIDTH-1,Y+HIGHT
  1763.       Draw X+WIDTH-1,Y+HIGHT To X+1,Y+HIGHT
  1764.    Else 
  1765.       Ink 0
  1766.       Draw X,Y To X,Y+HIGHT
  1767.       Draw X,Y To X+WIDTH-1,Y
  1768.       Draw X+1,Y To X+1,Y+HIGHT-1
  1769.       Ink 1
  1770.       Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1771.       Draw X+WIDTH-1,Y+1 To X+WIDTH-1,Y+HIGHT
  1772.       Draw X+WIDTH-1,Y+HIGHT To X+1,Y+HIGHT
  1773.    End If 
  1774.    If SETUPZONE=True
  1775.       Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+HIGHT
  1776.    End If 
  1777.    Ink 0
  1778.    Text(WIDTH-Len(MESSAGE$)*8)/2+X,(Y+HIGHT/2)+3,MESSAGE$
  1779. End Proc
  1780. Procedure BEVEL[X,Y,WIDTH,HIGHT,ISITFILLED,EMBOSSED,_FILLCOLOUR]
  1781.    Rem ** X           = x possition of the box  
  1782.    Rem ** Y           = y possition of the box  
  1783.    Rem ** WIDTH       = width of the box  
  1784.    Rem ** HIGHT       = height of the box 
  1785.    Rem ** ISITFILLED  = whether the box is filled or not (True, or False) 
  1786.    Rem ** EMBOSSED    = whether the box is embossed or not (True, or False) 
  1787.    Rem ** _FILLCOLOUR = the colour the box is filled with 
  1788. If EMBOSSED=False
  1789.    Ink 1
  1790.    Draw X,Y+HIGHT To X,Y
  1791.    Draw X,Y To X+WIDTH,Y
  1792.    Ink 0
  1793.    Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1794.    Draw X+WIDTH,Y+HIGHT To X,Y+HIGHT
  1795. Else 
  1796.    Ink 0
  1797.    Draw X,Y+HIGHT To X,Y
  1798.    Draw X,Y To X+WIDTH,Y
  1799.    Ink 1
  1800.    Draw X+WIDTH,Y To X+WIDTH,Y+HIGHT
  1801.    Draw X+WIDTH,Y+HIGHT To X,Y+HIGHT
  1802. End If 
  1803. If ISITFILLED=1
  1804.    Ink _FILLCOLOUR
  1805.    Bar X+1,Y+1 To X+WIDTH-1,Y+HIGHT-1
  1806. Else 
  1807. End If 
  1808. End Proc
  1809. Procedure CLICKBOX[X,Y,WIDTH,HIGHT,EMBOSSED,MESSAGE$,ZHONENUMBER,SETUPZONE]
  1810.    Rem ** X           = x possition of the box  
  1811.    Rem ** Y           = y possition of the box  
  1812.    Rem ** WIDTH       = width of the box  
  1813.    Rem ** HIGHT       = height of the box 
  1814.    Rem ** EMBOSSED    = whether the box is embossed or not (True, or False) 
  1815.    Rem ** MESSAGE$    = what text is centered inside the box (if any) 
  1816.    Rem ** ZHONENUMBER = the number of the zone to be defined (if any)   
  1817.    Rem ** SETUPZONE   = whether a zone is set up (True, or False) 
  1818.    Set Pattern 0
  1819.    Proc BEVEL[X,Y,WIDTH,HIGHT,1,EMBOSSED,2]
  1820.    If SETUPZONE=True
  1821.       Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+HIGHT
  1822.    End If 
  1823.    Ink 0
  1824.    Text(WIDTH-Len(MESSAGE$)*8)/2+X,(Y+HIGHT/2)+3,MESSAGE$
  1825. End Proc
  1826. Procedure INITIALISE
  1827.    Default Palette $0,$FFF,$AAA,$68B
  1828.    Screen Open 1,640,256,4,Hires
  1829.    Curs Off : Flash Off : Gr Writing 0
  1830.    Limit Mouse 128,42 To 447,297
  1831.    Cls 2
  1832.    Proc SCREANTITLE["SkipDat Screen"]
  1833. End Proc
  1834. Procedure SCREANTITLE[SCREANTITLE$]
  1835.    Rem ** SCREANTITLE$ = title of the scren 
  1836.    Gr Writing 0
  1837.    Proc BEVEL[0,0,639,10,1,False,1]
  1838.    Ink 0
  1839.    Text 4,7,SCREANTITLE$
  1840. End Proc
  1841. Procedure FINDMOUSELIMIT[X_WINDOW,Y_WINDOW,WIDTH,HIGHT,X_MOUSE,Y_MOUSE]
  1842.    Rem ** X_WINDOW = x possition of the window  
  1843.    Rem ** Y_WINDOW = y possition of the window  
  1844.    Rem ** WIDTH    = width of the window
  1845.    Rem ** HIGHT    = height of the window 
  1846.    Rem ** X_MOUSE  = x possition of the mouse 
  1847.    Rem ** Y_MOUSE  = y possition of the mouse 
  1848.    Limit Mouse X Hard(0+X_MOUSE-X_WINDOW),Y Hard(0+Y_MOUSE-Y_WINDOW) To X Hard(639-WIDTH-X_WINDOW+X_MOUSE+1),Y Hard(255-HIGHT-Y_WINDOW+Y_MOUSE+1)
  1849. End Proc
  1850. Procedure DRAGTHEWINDOW[X,Y,WIDTH,HIGHT,ZHONENUMBER]
  1851.    Rem ** X           = x possition of the box  
  1852.    Rem ** Y           = y possition of the box  
  1853.    Rem ** WIDTH       = width of the box  
  1854.    Rem ** HIGHT       = height of the box 
  1855.    Rem ** ZHONENUMBER = the number of the zone that is on the title bar 
  1856.    Get Block 2,X,Y,WIDTH-1,HIGHT : Rem Grabs the window 
  1857.    _ORIGINALX=X Screen(X Mouse) : Rem This is where the mouse first was when clicked (x coord) 
  1858.    _ORIGINALY=Y Screen(Y Mouse) : Rem This is where the mouse first was when clicked (y coord) 
  1859.    Gr Writing 2 : Rem This line means all drawn objects will be in the opposite colour to whats under them (for the drag box)  
  1860.    Proc FINDMOUSELIMIT[X,Y,WIDTH,HIGHT,_ORIGINALX,_ORIGINALY] : Rem Finds the mouse limit of the box (so it can go off screen) 
  1861.    Repeat 
  1862.       DRAGX=X+X Screen(X Mouse)-_ORIGINALX : Rem DRAGX is the new x coord for the drag box  
  1863.       DRAGY=Y+Y Screen(Y Mouse)-_ORIGINALY : Rem DRAGY is the new y coord for the drag box
  1864.       Wait Vbl : Rem Wait for monitor sync (stops flicker, almost!) 
  1865.       Box DRAGX,DRAGY To DRAGX+WIDTH-1,DRAGY+HIGHT-1 : Rem Draw the drag box  
  1866.       Wait Vbl 
  1867.       Box DRAGX,DRAGY To DRAGX+WIDTH-1,DRAGY+HIGHT-1 : Rem Undraw the drag box
  1868.    Until Mouse Key=0 : Rem Repeat until the user releases the mousebutton 
  1869.    Gr Writing 0 : Rem Turn inverse colour off
  1870.    Put Block 1,X,Y : Rem put back what was under the window 
  1871.    Get Block 1,DRAGX,DRAGY,WIDTH,HIGHT
  1872.    Put Block 2,DRAGX,DRAGY : Rem Put the window back after drag 
  1873.    X=DRAGX : Rem Make X the same as DRAGX 
  1874.    Y=DRAGY : Rem Make y the same as DRAGY 
  1875.    Limit Mouse 128,42 To 447,297 : Rem turn off the mouse limiting
  1876.    Set Zone ZHONENUMBER,X,Y To X+WIDTH,Y+11 : Rem This sets up the zone at its new possition 
  1877. End Proc