home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / fbn_ondr / onlinedirectory / onlinedirectoryv100.amos / onlinedirectoryv100.amosSourceCode
AMOS Source Code  |  1997-01-20  |  17KB  |  595 lines

  1. Set Buffer 40
  2. Erase All 
  3. Request Off 
  4. Amos To Back 
  5. ' __________________________________________________________________________ ` 
  6. '|                                                                          |` 
  7. '|           Online Directory V1.00 by C. Edward Stewart 21/12/96           |` 
  8. '|__________________________________________________________________________|` 
  9. '                                                                            ` 
  10. _CHECK_FOR_REQTOOLS_LIBRARY:
  11. RT= Extension_14_0F08 
  12. If RT=False Then End 
  13.  
  14. _DEFINE_VARIABLES:
  15. XOFF=0 : HIGH_ITEM=0 : PAGE=0 : OX=0 : OY=0 : WID=0 : HGT=0 : CLR=0 : RES=0
  16. CHANGE=0 : SERIAL=0 : BPS=0 : BUF=0 : XON=0 : WIRES=0 : DTR=0 : PARITY=0
  17. WRD=0 : SBITS=0
  18. Global XOFF,HIGH_ITEM,PAGE,OX,OY,WID,HGT,CLR,RES,CHANGE,SERIAL,BPS,BUF,XON
  19. Global WIRES,DTR,PARITY,WRD,SBITS
  20. VERSION$="" : PATH$=""
  21. Global VERSION$,PATH$,MESSAGE$
  22. Dim BOOK_DATA$(399,6)
  23. Global BOOK_DATA$()
  24.  
  25. _SET_VARIABLES:
  26. HIGH_ITEM=0 : PAGE=1 : CHANGE=False : SERIAL=False
  27. VERSION$="V1.00 20/1/97" : PATH$=Dir$
  28.  
  29. DISPLAY
  30. SERIAL_ENV
  31. BOOK_LOAD
  32. BOOK_DISPLAY[PAGE]
  33. BOOK_SELECT[PAGE]
  34.  
  35. ' __________________________________________________________________________ ` 
  36. '|                                                                          |` 
  37. '|                         Procedures Start Here                            |` 
  38. '|__________________________________________________________________________|` 
  39. '                                                                            ` 
  40. Procedure DISPLAY
  41. WID=0 : HGT=0 : CLR=0 : RES=0 : SCR=0 : A$="" : XOFF=0 : X1=0 : Y1=0 : X2=0
  42. Y2=0 : A=0
  43. If Exist("S:OnlineDirectory.CFG")
  44.   Open In 1,"S:OnlineDirectory.CFG"
  45.   Input #1,WID
  46.   Input #1,HGT
  47.   Input #1,CLR
  48.   Input #1,RES
  49.   Close 1
  50.   Goto DISPLAY
  51. End If 
  52. _GET_SCREEN_MODE:
  53. SCR= Extension_14_0814("Select a screen mode (640X200X4)")
  54. If SCR=False Then End 
  55. WID= Extension_14_07AA 
  56. HGT= Extension_14_07BE 
  57. CLR= Extension_14_07D4 
  58. RES= Extension_14_07EA(0)
  59. If WID<640 or WID>740 Then Goto _GET_SCREEN_MODE
  60. If HGT<200 or HGT>300 Then Goto _GET_SCREEN_MODE
  61. If CLR<4 Then Goto _GET_SCREEN_MODE
  62. Open Out 1,"S:OnlineDirectory.CFG"
  63. Print #1,WID
  64. Print #1,HGT
  65. Print #1,CLR
  66. Print #1,RES
  67. Close 1
  68. DISPLAY:
  69. XOFF=((WID-640)/8)/2 : X1=0 : X2=WID-1 : Y1=11 : Y2=HGT-14
  70. A$="  Online Directory "+VERSION$
  71.  Extension_14_00C4 1,WID,HGT,CLR,RES,A$
  72.  Extension_14_064A 0
  73. Load "OnlineDirectory.GFX",2
  74.  Extension_14_066E 1,0
  75.  Extension_14_06B2 X2,Y1+1 To X2,Y2
  76.  Extension_14_06B2 X2-1,Y1+1 To X2-1,Y2
  77.  Extension_14_06B2 X1,Y2 To X2,Y2
  78.  Extension_14_06B2 X1,Y1+17 To X2,Y1+17
  79.  Extension_14_066E 2,0
  80.  Extension_14_06B2 X1,Y1 To X2,Y1
  81.  Extension_14_06B2 X1,Y1 To X1,Y1+16
  82.  Extension_14_06B2 X1+1,Y1 To X1+1,Y1+16
  83.  Extension_14_06B2 X1,Y1+18 To X2,Y1+18
  84.  Extension_14_06B2 X1,Y1+18 To X1,Y2-1
  85.  Extension_14_06B2 X1+1,Y1+18 To X1+1,Y2-1
  86. A=(WID-318)/2
  87.  Extension_14_0EB0 X1+A,Y2+2,1
  88. End Proc
  89. Procedure BOOK_LOAD
  90. A$="" : A=0 : B=0 : X=0 : Y=0
  91. A$=PATH$+"Book.DAT"
  92. If Exist(A$)
  93.   X=(WID-160)/2
  94.   Y=(HGT-50)/2
  95.    Extension_14_12AE 1,X,Y,160,50," Online Directory",0
  96.    Extension_14_0468 1
  97.    Extension_14_066E 1,0
  98.    Extension_14_05E2 0,2
  99.    Extension_14_10F0 "Loading..."
  100.   For A=1 To 399
  101.     For B=1 To 6
  102.       BOOK_DATA$(A,B)=""
  103.     Next B
  104.   Next A
  105.   HIGH_ITEM=0
  106.   Open In 1,A$
  107.   Input #1,HIGH_ITEM
  108.   For A=1 To HIGH_ITEM
  109.     For B=1 To 6
  110.       Input #1,BOOK_DATA$(A,B)
  111.     Next B
  112.   Next A
  113.   Close 1
  114.    Extension_14_0324 1
  115. End If 
  116. End Proc
  117. Procedure BOOK_DISPLAY[PAGE]
  118. A$="" : CLUMN=0 : ROW=0 : X=0 : Y=0 : ITEM=0 : TXT$=""
  119.  Extension_14_066E 1,0 : A$=Space$(70) : Extension_14_05E2 0,2 : Extension_14_10F0 A$
  120. A$="Directory Page"+Str$(PAGE)+" of 7  Total Records:"+Str$(HIGH_ITEM)
  121.  Extension_14_066E 3,0 : Extension_14_05E2 0,2 : Extension_14_10F0 A$
  122.  Extension_14_066E 1,0
  123. For CLUMN=0 To 2
  124. For ROW=0 To 18
  125. X=(CLUMN*27)+XOFF+1 : Y=ROW+4 : ITEM=((PAGE-1)*57)+(CLUMN*19)+ROW+1
  126. A$=Left$(BOOK_DATA$(ITEM,1),24)+Space$(24) : TXT$=Left$(A$,24)
  127.  Extension_14_05E2 X,Y : Extension_14_0636 TXT$
  128. Next ROW
  129. Next CLUMN
  130. ITEM=((PAGE-1)*57)+(OX*19)+(OY+1) : TXT$=Left$(BOOK_DATA$(ITEM,1),24)+Space$(24)
  131.  Extension_14_066E 1,2 : Extension_14_05E2(OX*27)+XOFF+1,OY+4 : Extension_14_0636 Left$(TXT$,24)
  132.  Extension_14_066E 1,0
  133. End Proc
  134. Procedure BOOK_SELECT[PAGE]
  135. IN$="" : SC=0 : X=0 : Y=0 : ITEM=0 : OX=0 : OY=0 : TXT$=""
  136. OX=X : OY=Y : ITEM=((PAGE-1)*57)+(X*19)+(Y+1) : TXT$=Left$(BOOK_DATA$(ITEM,1),24)+Space$(24)
  137.  Extension_14_066E 1,2 : Extension_14_05E2(X*27)+XOFF+1,Y+4 : Extension_14_0636 Left$(TXT$,24)
  138. SELECT:
  139. Do : IN$= Extension_14_0522 : SC= Extension_14_04DE : If IN$="" Then Loop 
  140. If SC=69
  141.   QUIT
  142. End If 
  143. If SC=76
  144.   Y=Y-1
  145.   Goto SELECT1
  146. End If 
  147. If SC=77
  148.   Y=Y+1
  149.   Goto SELECT1
  150. End If 
  151. If SC=78
  152.   X=X+1
  153.   Goto SELECT1
  154. End If 
  155. If SC=79
  156.   X=X-1
  157.   Goto SELECT1
  158. End If 
  159. If SC=95
  160.   HELP
  161.   BOOK_DISPLAY[PAGE]
  162.   Goto SELECT
  163. End If 
  164. If SC=12 or SC=94
  165.   PAGE=PAGE+1
  166.   If PAGE>7
  167.     PAGE=1
  168.   End If 
  169.   BOOK_DISPLAY[PAGE]
  170.   Goto SELECT
  171. End If 
  172. If SC=11 or SC=74
  173.   PAGE=PAGE-1
  174.   If PAGE<1
  175.     PAGE=7
  176.   End If 
  177.   BOOK_DISPLAY[PAGE]
  178.   Goto SELECT
  179. End If 
  180. If SC=18
  181.   ENTER_DATA[ITEM]
  182.   BOOK_DISPLAY[PAGE]
  183.   Goto SELECT
  184. End If 
  185. If SC=33
  186.   BOOK_SAVE
  187.   Goto SELECT
  188. End If 
  189. If SC=51
  190.   If Exist("S:OnlineDirectory.CFG")
  191.     Kill "S:OnlineDirectory.CFG"
  192.   End If 
  193.    Extension_14_00EA 1
  194.   DISPLAY
  195.   BOOK_DISPLAY[PAGE]
  196. End If 
  197. If SC=25
  198.   BOOK_PRINT
  199.   Goto SELECT
  200. End If 
  201. If SC=70
  202.   BOOK_DELETE[ITEM]
  203.   Goto SELECT
  204. End If 
  205. If SC=67 or SC=68
  206.   BOOK_DIAL[ITEM]
  207.   Goto SELECT
  208. End If 
  209. SELECT1:
  210. If X>2 Then X=0
  211. If X<0 Then X=2
  212. If Y>18 Then Y=0
  213. If Y<0 Then Y=18
  214. ITEM=((PAGE-1)*57)+(OX*19)+(OY+1) : TXT$=Left$(BOOK_DATA$(ITEM,1),24)+Space$(24)
  215.  Extension_14_066E 1,0 : Extension_14_05E2(OX*27)+XOFF+1,OY+4 : Extension_14_0636 Left$(TXT$,24)
  216. OX=X : OY=Y : ITEM=((PAGE-1)*57)+(X*19)+(Y+1) : TXT$=Left$(BOOK_DATA$(ITEM,1),24)+Space$(24)
  217.  Extension_14_066E 1,2 : Extension_14_05E2(X*27)+XOFF+1,Y+4 : Extension_14_0636 Left$(TXT$,24)
  218. Goto SELECT
  219. End Proc
  220. Procedure QUIT
  221. If CHANGE=True
  222.   A= Extension_14_0D4A(" Online Directory","File has been changed.|Save it?","Yes","No")
  223.   If A=True
  224.     BOOK_SAVE
  225.   End If 
  226. End If 
  227.  Extension_14_00EA 1
  228. Amos To Front 
  229. Erase All 
  230. End 
  231. End Proc
  232. Procedure HELP
  233. SC=0 : IN$=""
  234. H01$="Online Directory|"
  235. H01$=H01$+" |Copyright 1997|C. Edward Stewart| |Help mode is now active.|"
  236. H01$=H01$+" |Press keys as listed at the bottom|of your screen to call up|"
  237. H01$=H01$+"help for that function."
  238. H02$="Help Mode Terminated."
  239. H03$="The Esc key exits the program."
  240. H04$="The S key saves your directory|to the same directory that|"
  241. H04$=H04$+"Online Directory is in."
  242. H05$="The C key allows you to change|the configuration."
  243. H06$="The P key prints out your directory|using the standard printer|"
  244. H06$=H06$+"preferences."
  245. H07$="The + key displays the next directory page."
  246. H08$="The - key displays the previous directory page."
  247. H09$="The arrow keys move the highlight|"
  248. H09$=H09$+"bar to the entries."
  249. H10$="The E key allows you to edit|entries or add entries."
  250. H11$="The Del key erases the highlighted entry."
  251. H12$="The Return key dials the selected number."
  252. SC= Extension_14_0D9E("Help",H01$,"Start")
  253. HELP:
  254. Do : IN$= Extension_14_0522 : SC= Extension_14_04DE : If IN$="" Then Loop 
  255. If SC=69 Then SC= Extension_14_0D9E("Help",H03$,"Okay") : Goto HELP
  256. If SC=33 Then SC= Extension_14_0D9E("Help",H04$,"Okay") : Goto HELP
  257. If SC=51 Then SC= Extension_14_0D9E("Help",H05$,"Okay") : Goto HELP
  258. If SC=25 Then SC= Extension_14_0D9E("Help",H06$,"Okay") : Goto HELP
  259. If SC=12 or SC=94 Then SC= Extension_14_0D9E("Help",H07$,"Okay") : Goto HELP
  260. If SC=11 or SC=74 Then SC= Extension_14_0D9E("Help",H08$,"Okay") : Goto HELP
  261. If SC=76 or SC=79 or SC=77 or SC=78 Then SC= Extension_14_0D9E("Help",H09$,"Okay") : Goto HELP
  262. If SC=18 Then SC= Extension_14_0D9E("Help",H10$,"Okay") : Goto HELP
  263. If SC=70 Then SC= Extension_14_0D9E("Help",H11$,"Okay") : Goto HELP
  264. If SC=68 or SC=67 Then SC= Extension_14_0D9E("Help",H12$,"Okay") : Goto HELP
  265. If SC=95 Then SC= Extension_14_0D9E("Help",H02$,"Done") : Pop Proc
  266. Goto HELP
  267. End Proc
  268. Procedure ENTER_DATA[RECORD]
  269. X=0 : Y=0 : A$="" : B$=""
  270. CHANGE=True
  271. X=(WID-320)/2 : Y=(HGT-117)/2
  272. A$=Str$(RECORD) : B$="000"+Right$(A$,Len(A$)-1)
  273. A$=" Edit Entry "+Right$(B$,3)
  274. If BOOK_DATA$(RECORD,1)=""
  275.   HIGH_ITEM=HIGH_ITEM+1
  276.   RECORD=HIGH_ITEM
  277.   For A=1 To 6
  278.   BOOK_DATA$(RECORD,A)="-"
  279.   Next A
  280. End If 
  281.  Extension_14_12AE 2,X,Y,320,117,A$,0
  282.  Extension_14_0468 2
  283.  Extension_14_066E 3,0 : Extension_14_05E2 1,1 : Extension_14_0636 "Name"
  284.  Extension_14_066E 1,0 : Extension_14_06C4 44,6 To 306,17 : Extension_14_06C4 45,6 To 305,17
  285.  Extension_14_066E 2,0 : Extension_14_06B2 46,17 To 306,17 : Extension_14_06B2 305,7 To 305,17
  286.  Extension_14_06B2 306,7 To 306,17
  287.  Extension_14_066E 3,0 : Extension_14_05E2 1,3 : Extension_14_0636 "Phone"
  288.  Extension_14_066E 1,0 : Extension_14_06C4 52,22 To 306,33 : Extension_14_06C4 53,22 To 305,33
  289.  Extension_14_066E 2,0 : Extension_14_06B2 54,33 To 306,33 : Extension_14_06B2 305,23 To 305,33
  290.  Extension_14_06B2 306,23 To 306,33
  291.  Extension_14_066E 3,0 : Extension_14_05E2 1,5 : Extension_14_0636 "Street"
  292.  Extension_14_066E 1,0 : Extension_14_06C4 60,38 To 306,49 : Extension_14_06C4 61,38 To 305,49
  293.  Extension_14_066E 2,0 : Extension_14_06B2 62,49 To 306,49 : Extension_14_06B2 305,39 To 305,49
  294.  Extension_14_06B2 306,39 To 306,49
  295.  Extension_14_066E 3,0 : Extension_14_05E2 1,7 : Extension_14_0636 "City"
  296.  Extension_14_066E 1,0 : Extension_14_06C4 44,54 To 306,65 : Extension_14_06C4 45,54 To 305,65
  297.  Extension_14_066E 2,0 : Extension_14_06B2 46,65 To 306,65 : Extension_14_06B2 305,55 To 305,65
  298.  Extension_14_06B2 306,55 To 306,65
  299.  Extension_14_066E 3,0 : Extension_14_05E2 1,9 : Extension_14_0636 "Province"
  300.  Extension_14_066E 1,0 : Extension_14_06C4 76,70 To 306,81 : Extension_14_06C4 77,70 To 305,81
  301.  Extension_14_066E 2,0 : Extension_14_06B2 78,81 To 306,81 : Extension_14_06B2 305,71 To 305,81
  302.  Extension_14_06B2 306,71 To 306,81
  303.  Extension_14_066E 3,0 : Extension_14_05E2 1,11 : Extension_14_0636 "Postal Code"
  304.  Extension_14_066E 1,0 : Extension_14_06C4 100,86 To 306,97 : Extension_14_06C4 101,86 To 305,97
  305.  Extension_14_066E 2,0 : Extension_14_06B2 102,97 To 306,97 : Extension_14_06B2 305,87 To 305,97
  306.  Extension_14_06B2 306,87 To 306,97
  307.  Extension_14_066E 1,2 : Extension_14_05E2 6,1 : Extension_14_0636 BOOK_DATA$(RECORD,1)
  308.  Extension_14_05E2 7,3 : Extension_14_0636 BOOK_DATA$(RECORD,2)
  309.  Extension_14_05E2 8,5 : Extension_14_0636 BOOK_DATA$(RECORD,3)
  310.  Extension_14_05E2 6,7 : Extension_14_0636 BOOK_DATA$(RECORD,4)
  311.  Extension_14_05E2 10,9 : Extension_14_0636 BOOK_DATA$(RECORD,5)
  312.  Extension_14_05E2 13,11 : Extension_14_0636 BOOK_DATA$(RECORD,6)
  313. IN[6,1,31,BOOK_DATA$(RECORD,1)] : BOOK_DATA$(RECORD,1)=Param$
  314. IN[7,3,30,BOOK_DATA$(RECORD,2)] : BOOK_DATA$(RECORD,2)=Param$
  315. IN[8,5,29,BOOK_DATA$(RECORD,3)] : BOOK_DATA$(RECORD,3)=Param$
  316. IN[6,7,31,BOOK_DATA$(RECORD,4)] : BOOK_DATA$(RECORD,4)=Param$
  317. IN[10,9,27,BOOK_DATA$(RECORD,5)] : BOOK_DATA$(RECORD,5)=Param$
  318. IN[13,11,24,BOOK_DATA$(RECORD,6)] : BOOK_DATA$(RECORD,6)=Param$
  319.  Extension_14_0324 2
  320. End Proc
  321. Procedure IN[X,Y,LGTH,TXT$]
  322. MESSAGE$="" : IN$=""
  323.  Extension_14_05E2 X,Y : Extension_14_066E 2,2 : Extension_14_0636 Space$(LGTH)
  324.  Extension_14_066E 3,2 : Extension_14_05E2 X,Y : Extension_14_0636 TXT$
  325.  Extension_14_066E 1,0 : Extension_14_05E2 X,Y : MESSAGE$= Extension_14_0540 
  326. If MESSAGE$="" Then MESSAGE$=TXT$ : Extension_14_05E2 X,Y : Extension_14_0636 TXT$
  327. MESSAGE$=Left$(MESSAGE$,LGTH)
  328. End Proc[MESSAGE$]
  329. Procedure BOOK_SAVE
  330. A$="" : A=0 : B=0 : X=0 : Y=0
  331. A= Extension_14_0D4A(" Online Directory","Sort the file?","Yes","Skip It")
  332. If A=True Then BOOK_SORT
  333. A$=PATH$+"Book.DAT"
  334. If Exist(A$) Then Kill A$
  335. X=(WID-160)/2
  336. Y=(HGT-50)/2
  337.  Extension_14_12AE 3,X,Y,160,50," Online Directory",0
  338.  Extension_14_0468 3
  339.  Extension_14_066E 1,0
  340.  Extension_14_05E2 0,2
  341.  Extension_14_10F0 "Saving..."
  342. Open Out 1,A$
  343. Print #1,HIGH_ITEM
  344. For A=1 To HIGH_ITEM
  345.   For B=1 To 6
  346.     Print #1,BOOK_DATA$(A,B)
  347.   Next B
  348. Next A
  349. Close 1
  350.  Extension_14_0324 3
  351. End Proc
  352. Procedure BOOK_SORT
  353. X=0 : Y=0 : A=0 : B=0 : C=0
  354. X=(WID-160)/2
  355. Y=(HGT-50)/2
  356.  Extension_14_12AE 4,X,Y,160,50," Online Directory",0
  357.  Extension_14_0468 4
  358.  Extension_14_066E 1,0
  359.  Extension_14_05E2 0,2
  360.  Extension_14_10F0 "Sorting..."
  361. For A=1 To HIGH_ITEM-1
  362.   For B=1 To HIGH_ITEM-1
  363.   If BOOK_DATA$(B,1)>BOOK_DATA$(B+1,1)
  364.     For C=1 To 6
  365.     Swap BOOK_DATA$(B,C),BOOK_DATA$(B+1,C)
  366.     Next C
  367.   End If 
  368.   Next B
  369. Next A
  370.  Extension_14_0324 4
  371. BOOK_DISPLAY[PAGE]
  372. End Proc
  373. Procedure BOOK_PRINT
  374. A=0 : A$="" : TXT$=""
  375. Trap Open Port 1,"PRT:"
  376. If Errtrap
  377.   A= Extension_14_0D9E("Online Directory","Can't Access Printer","Okay")
  378.   Pop Proc
  379. End If 
  380. X=(WID-160)/2
  381. Y=(HGT-50)/2
  382.  Extension_14_12AE 5,X,Y,160,50," Online Directory",0
  383.  Extension_14_0468 5
  384.  Extension_14_066E 1,0
  385.  Extension_14_05E2 0,2
  386.  Extension_14_10F0 "Printing..."
  387. For A=1 To HIGH_ITEM
  388. A$=BOOK_DATA$(A,1)+Space$(20)
  389. TXT$=Left$(A$,20)+" "
  390. A$=BOOK_DATA$(A,2)+Space$(14)
  391. TXT$=TXT$+Left$(A$,14)+" "
  392. A$=BOOK_DATA$(A,3)+Space$(20)
  393. TXT$=TXT$+Left$(A$,20)+" "
  394. A$=BOOK_DATA$(A,4)+Space$(11)
  395. TXT$=TXT$+Left$(A$,11)+" "
  396. A$=BOOK_DATA$(A,5)+Space$(3)
  397. TXT$=TXT$+Left$(A$,3)+" "
  398. A$=BOOK_DATA$(A,6)+Space$(7)
  399. TXT$=TXT$+Left$(A$,7)
  400. Print #1,TXT$
  401. Next A
  402. Close 1
  403.  Extension_14_0324 5
  404. End Proc
  405. Procedure BOOK_DELETE[RECORD]
  406. A$="" : B$="" : A=0 : B=0
  407. A$=Str$(RECORD) : B$="000"+Right$(A$,Len(A$)-1)
  408. A$="Delete record "+Right$(B$,3)+",|"+BOOK_DATA$(RECORD,1)+"?"
  409. A= Extension_14_0D4A(" Online Directory",A$,"Yes","No")
  410. If A=False Then Pop Proc
  411. CHANGE=True
  412. If RECORD=HIGH_ITEM
  413.   For A=1 To 6
  414.     BOOK_DATA$(RECORD,A)=""
  415.   Next A
  416.   HIGH_ITEM=HIGH_ITEM-1
  417.   BOOK_DISPLAY[PAGE]
  418.   Pop Proc
  419. End If 
  420. For A=RECORD To HIGH_ITEM-1
  421.   For B=1 To 6
  422.     BOOK_DATA$(A,B)=BOOK_DATA$(A+1,B)
  423.     BOOK_DATA$(A+1,B)=""
  424.   Next B
  425. Next A
  426. HIGH_ITEM=HIGH_ITEM-1
  427. BOOK_DISPLAY[PAGE]
  428. End Proc
  429. Procedure BOOK_DIAL[RECORD]
  430. A=0 : X=0 : Y=0 : A$="" : CHAN=0 : IN$="" : SC=0 : COMMAND$=""
  431. CHAN=1
  432. If SERIAL=False
  433.   A= Extension_14_0D9E("Online Directory","Can't find ENV:Sys/serial.prefs","Okay")
  434.   Pop Proc
  435. End If 
  436. X=(WID-160)/2
  437. Y=(HGT-50)/2
  438.  Extension_14_12AE 6,X,Y,160,50," Online Directory",0
  439.  Extension_14_0468 6
  440.  Extension_14_066E 1,0
  441.  Extension_14_05E2 0,2
  442.  Extension_14_10F0 "   Wait   "
  443. SERIAL_OPEN[1] : SER=Param
  444. If SER=False
  445.    Extension_14_0324 6
  446.   Pop Proc
  447. End If 
  448. DIAL:
  449. Wait 60
  450.  Extension_14_05E2 0,2
  451.  Extension_14_10F0 "Dialing..."
  452. A$="ATDT"+BOOK_DATA$(RECORD,2)+Chr$(13)+Chr$(10)
  453. Serial Send CHAN,A$
  454. Do : A=Serial Check(CHAN) : If A<>True Then Loop 
  455. For A=1 To 12000
  456. IN$= Extension_14_0522 : SC= Extension_14_04DE 
  457. If IN$<>"" Then A=12000
  458. Next A
  459. If SC=69 Then Goto _STOP_DIALING
  460. Do : SERIAL_MSG[CHAN] : COMMAND$=Param$ : If COMMAND$="" Then Loop 
  461. COMMAND$=Lower$(COMMAND$)
  462. If COMMAND$="busy"
  463.    Extension_14_05E2 0,2
  464.    Extension_14_10F0 "   Busy   "
  465.   Goto DIAL
  466. End If 
  467. If COMMAND$="no carrier"
  468.    Extension_14_05E2 0,2
  469.    Extension_14_10F0 "No Answer "
  470.   Goto DIAL
  471. End If 
  472. Goto DIAL
  473. _STOP_DIALING:
  474.    Extension_14_05E2 0,2
  475.    Extension_14_10F0 " Stopping "
  476. Serial Send CHAN,Chr$(13)
  477. Do : A=Serial Check(CHAN) : If A<>True Then Loop 
  478. Do : SERIAL_MSG[CHAN] : COMMAND$=Param$ : If COMMAND$="" Then Loop 
  479. SERIAL_CLOSE[1]
  480.  Extension_14_0324 6
  481. End Proc
  482. Procedure SERIAL_ENV
  483. A$="" : A=0 : B=0
  484. A=Exist("ENV:Sys/serial.prefs")
  485. If A=False Then Pop Proc
  486. SERIAL=True
  487. Open In 1,"ENV:Sys/serial.prefs"
  488. For A=1 To 52
  489. A$=Input$(1,1)
  490. Next A
  491. A$=Input$(1,1)
  492. A=Asc(A$)
  493. A$=Input$(1,1)
  494. B=Asc(A$)
  495. BPS=(A*256)+B
  496. A$=Input$(1,1)
  497. A$=Input$(1,1)
  498. A=Asc(A$)
  499. A$=Input$(1,1)
  500. B=Asc(A$)
  501. BUF=(A*65536)+(B*256)
  502. For A=58 To 62
  503. A$=Input$(1,1)
  504. Next A
  505. A$=Input$(1,1)
  506. A=Asc(A$)
  507. If A=0 Then XON=True : WIRES=False : DTR=False
  508. If A=1 Then XON=False : WIRES=True : DTR=True
  509. If A=2 Then XON=False : WIRES=False : DTR=False
  510. A$=Input$(1,1)
  511. A$=Input$(1,1)
  512. A=Asc(A$)
  513. If A=0 Then PARITY=-1
  514. If A=1 Then PARITY=0
  515. If A=2 Then PARITY=1
  516. If A=3 Then PARITY=2
  517. If A=4 Then PARITY=3
  518. A$=Input$(1,1)
  519. A=Asc(A$)
  520. WRD=A
  521. A$=Input$(1,1)
  522. A=Asc(A$)
  523. SBITS=A
  524. Close 1
  525. End Proc
  526. Procedure SERIAL_OPEN[CHAN]
  527. A=0 : SER=0
  528. Trap Serial Open CHAN,PRT,SHARE,XON,WIRES
  529. If Errtrap
  530.   A= Extension_14_0D9E("Online Directory","Can't Access Serial Port","Okay")
  531.   SER=False
  532.   Goto SER_OPEN
  533. End If 
  534. SER=True
  535. Serial Speed CHAN,BPS
  536. Serial Bits CHAN,WRD,SBITS
  537. Serial Parity CHAN,PARITY
  538. Serial Buf CHAN,BUF
  539. If DTR=False Then Goto SER_OPEN
  540. Wait 10
  541. A=Peek(12571136)
  542. If(A and 128)=0 Then A=A+128
  543. Poke 12571136,A
  544. Wait 10
  545. A=Peek(12570624)
  546. If(A and 128)=0 Then A=A+128
  547. Poke 12570624,A
  548. Wait 10
  549. A=Peek(12570624)
  550. If(A and 128)=128 Then A=A-128
  551. Poke 12570624,A
  552. Wait 120
  553. SER_OPEN:
  554. End Proc[SER]
  555. Procedure SERIAL_MSG[CHAN]
  556. SER=0 : SER$=""
  557. If SERIAL=False Then Pop Proc
  558. Do 
  559. SER=Serial Get(CHAN)
  560. If SER<32 or SER>127 Then Goto ACK1
  561. SER$=SER$+Chr$(SER)
  562. ACK1:
  563. If SER<>True Then Loop 
  564. End Proc[SER$]
  565. Procedure SERIAL_CLOSE[CHAN]
  566. A=0
  567. If DTR=False Then Goto _CLOSE
  568. A=Peek(12570624)
  569. If(A and 128)=0 Then A=A+128
  570. Poke 12570624,A
  571. Wait 60
  572. A=Peek(12570624)
  573. If(A and 128)=128 Then A=A-128
  574. Poke 12570624,A
  575. Wait 60
  576. CONNECT=False
  577. Goto _CLOSE1
  578.  
  579. _CLOSE:
  580. SERIAL_MSG[CHAN]
  581. A$="+++"
  582. Serial Send CHAN,A$
  583. Do : A=Serial Check(CHAN) : If A<>True Then Loop 
  584. Wait 60
  585. Do : SERIAL_MSG[CHAN] : COMMAND$=Param$ : Print COMMAND$ : If COMMAND$<>"OK" Then Loop 
  586. A$="ath"
  587. Serial Send CHAN,A$
  588. Do : A=Serial Check(CHAN) : If A<>True Then Loop 
  589. Wait 60
  590. Do : SERIAL_MSG[CHAN] : COMMAND$=Param$ : Print COMMAND$ : If COMMAND$<>"OK" Then Loop 
  591. CONNECT=False
  592.  
  593. _CLOSE1:
  594. Serial Close 1
  595. End Proc