home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / elisp / interfaces / ftp+.el < prev    next >
Encoding:
Text File  |  1992-03-09  |  112.1 KB  |  2,621 lines

  1. ; -*- lisp-interaction -*-
  2.  
  3. ;; new feature: auto-describe (hard-wired on).
  4. ;; - automatically shows the full description of the site in a
  5. ;;   "reasonably sized window".  Note that this eats a minimum of two
  6. ;;   lines off your screen, and this works best if the description
  7. ;;   window is the bottom window of a two window configuration, which
  8. ;;   is what you get automatically if you invoke ftp+ with only a
  9. ;;   single window...
  10. ;; - the '0' key, which used to be for bringing up the description
  11. ;;   will now scroll the description window (for very long
  12. ;;   descriptions).
  13. ;; - If you have a a tiny window, and want to pop up a bigger window
  14. ;;   using some mechanism which isn't aware of this window resizing
  15. ;;   business, the best alternative is to preceed that command with
  16. ;;   Ctrl-X 1 (which wipes out all memory of other window sizes).
  17. ;;   I've got a better solution in mind, but it will take a little
  18. ;;   playing around to get working...
  19. ;; - some of the comments in this package still reflect the old style
  20. ;;   of doing things.  Raul D. Miller-Rockwell 1992 Feb 10
  21.  
  22. ;;
  23. ;; Site Additions:
  24. ;; 
  25. ;; - PCN parallel language at info.mcs...
  26. ;; - chinese chess from cs.alberta...
  27. ;; - Database of Distributed Operating Systems from titania...
  28. ;; - statlib statistical analysis package from lib.stat...
  29. ;; - public domain scientific software archive at netlib...
  30. ;; - SIMD simulator at mcnc.mcnc....
  31. ;;
  32. ;; -> send me the sites you know of!!!
  33. ;;
  34.  
  35. ;; LCD Archive Entry:
  36. ;; ftp+|Terrence Brannon|brannon@jove.cs.caltech.edu
  37. ;; |FTP interface with database of ftpable software. Multiple connects at once.
  38. ;; |92-02-20|0.6|~/interfaces/ftp+.el.Z|
  39.  
  40. ;; this program is available for anonymous ftp from
  41. ;; archive.cis.ohio-state.edu in the directory
  42. ;; pub/gnu/emacs/elisp-archive/interfaces 
  43.  
  44.                     ;
  45.                     ; major code
  46.                     ; segment:
  47.                     ;
  48.                     ; OBJECTIVE
  49.                     ; 
  50.  
  51. ;; The Objectives of ftp.plus.el
  52.  
  53. ;; 1: provide a quickly accessible database of free software and other files
  54. ;;    available via ftp
  55. ;; 2: to provide easy use of the FTP commands via 2-keystroke sequence
  56. ;; 3: to maintain a mailing of those interested who will receive the updated
  57. ;;    program free on a monthly basis
  58. ;; 4: to receive a new copy of ftp+ each month with an updated sitelist
  59. ;;    email me at this address: tb06@pl118f.cc.lehigh.edu
  60. ;; 5: if you know of a package which is not in my sitelist,
  61. ;;    PLEASE PLEASE email and I will add it for the next months mailing list
  62. ;;    and I will also thank you
  63.  
  64.                     ;
  65.                     ; major code
  66.                     ; segment:
  67.                     ;
  68.                     ; contributions
  69.                     ;
  70.  
  71. ;;; Raul D. Miller-Rockwell 1992 Feb 10
  72. ;;    auto-describe (hard-wired on).
  73. ;; - automatically shows the full description of the site in a
  74. ;;   "reasonably sized window".  Note that this eats a minimum of two
  75. ;;   lines off your screen, and this works best if the description
  76. ;;   window is the bottom window of a two window configuration, which
  77. ;;   is what you get automatically if you invoke ftp+ with only a
  78. ;;   single window...
  79. ;; - the '0' key, which used to be for bringing up the description
  80. ;;   will now scroll the description window (for very long
  81. ;;   descriptions).
  82. ;; - If you have a a tiny window, and want to pop up a bigger window
  83. ;;   using some mechanism which isn't aware of this window resizing
  84. ;;   business, the best alternative is to preceed that command with
  85. ;;   Ctrl-X 1 (which wipes out all memory of other window sizes).
  86. ;;   I've got a better solution in mind, but it will take a little
  87. ;;   playing around to get working...
  88. ;; - some of the comments in this package still reflect the old style
  89. ;;   of doing things.  Raul D. Miller-Rockwell 1992 Feb 10
  90. ;;;
  91.  
  92.          ;;; -/- many thanks to Tim McDaniel
  93.         ;;; -\- I was on a roll, just hacking away at
  94.        ;;; -/- the Elisp, then hit a snag... no member
  95.         ;;; -\- function?! But then I remembered that
  96.          ;;; -/- package I snagged off arc-ohio-state
  97.        ;;; -\- and there was that beautiful list-to-set
  98.        ;;; -/- function which I gleefully yanked out of
  99.           ;;; -\- his code, and into my ftp+
  100.                    ;;; =8-))
  101.  
  102.  
  103. ;;; ???@mit.???? DATE(?) i lost this guys name but he put in some
  104. ;;; hooks and i am sorry to disrespect you like this
  105.  
  106.                     ; major code
  107.                     ; segment:
  108.                     ;
  109.                     ; to be done
  110.                     ; 
  111.  
  112. ; o ;  integrate with either hyperbole or wrolo.el ... 
  113. ; o ;  BINARY-MODE-ON-CONNECT ... better yet snarf the code from
  114. ; ange-ftp.el which figures out whether you should automatically
  115. ; switch to binary mod
  116. ; o ;  Send/recv files with these options
  117.     ;   send all in directory
  118.     ;   send a list of files
  119.     ;   filename completion
  120. ; o ;  Add add-site command so that there will be no
  121. ;   ;  mistake when entering new sites
  122. ; o ;  HELP must be displayed a different way
  123. ; o ;  Move a used site to front of list if POPULAR-SORT is t
  124. ; o ;  Record all attempts to connect if LOG-CONNECTION is t
  125. ; o ;  Minibuffer not the best choice because of folk wanting to yank things
  126. ; o ;  Kill the profanity in the docs
  127. ; o ;  Send-file should list all possible files to send from current dir
  128. ; o ;  ...or maybe multiple directories
  129. ; o ;  setq BINARY-MODE-ON-CONNECT t
  130.  
  131.  
  132.                     ;
  133.                     ; major code
  134.                     ; segment:
  135.                     ;
  136.                     ; documenatation
  137.                     ; 
  138.  
  139.  
  140. ; ; Quick Notes for the Advanced:
  141.  
  142.  
  143. ;*> Connecting to multiple sites can be confusing after about 4 or 5 connects.
  144. ;   To see which buffer is handling which site type M-x buffer-menu. You will
  145. ;   see site names in the mode column of the menu.
  146. ;   To choose any of these sites, scroll down using C-n and C-p and type
  147. ;   f or 1 resume interaction with that transaction
  148.  
  149. ;*> if you cant see all of a comment in a minibuffer, type 0 then q to quit
  150. ;   the view mode
  151.  
  152. ;*> type C-h m to see the keys you can use. 
  153. ;   also note that the keys you can use vary depending on whether or not
  154. ;   you are connected. 7, 8, 9, and 0 are used to scroll through , connect
  155. ;   to and get info on sites, not respectively. once you connect, they
  156. ;   their local bindings are killed so that they are rebound back to
  157. ;   self-insert-command
  158.  
  159. ;*> have you noticed how when you hit TAB-g to get a file, the cursor
  160. ;   automatically moves to the end of the buffer? To quickly get back to
  161. ;   where you were, type C-x C-x (switches point and mark)
  162.  
  163. ;*> this is one of those things that isnt a bug, but about half of the
  164. ;   people will like it as it is and the other half will like it the
  165. ;   other way. ok, if you type M-x ftp+ once, but do not connect and then
  166. ;   type M-x ftp+ again and this time scroll to a site and choose it, the
  167. ;   global variable ftp+current-site will be set to the site of the second
  168. ;   invocation. if you C-x o to the other site and hit 8 to connect, it will
  169. ;   connect to the same site since it just accesses the same global variable
  170. ;   the pro: if you want multiple connects to the same site, you are 
  171. ;   automatically at the same site
  172. ;   the con: the current-site parameter of the site you C-x o back to is
  173. ;   wrong. 
  174. ;   the bottom line for right now: it is best to immediately connect to the
  175. ;   site you want until i make a buffer-local variable to solve the situtation
  176. ;   note i didnt say bug 8^)) heheh
  177. ;*> typing TAB-q only kills the current ftp+ session. each individual ftp+
  178. ;   session must be killed separately
  179.  
  180.                   
  181.                                         ;
  182.                     ; major code segment
  183.                                         ;
  184.                                         ; in-depth documentation
  185.                     ; [\] if you get lost,
  186.                     ; {\} email me and tell me where
  187.                     ; [\] gap in the information flow lies
  188.                     ; {\} and I will fix the flaw
  189.      ; *> if you want to redo this comprehensively and remove the
  190.      ; profane nature of the docs, that would be terrific!
  191.  
  192. ;*> Running the Program (for those new to Emacs)
  193. ;
  194.  
  195. ; If you are absolutely new to Emacs, let me explain some of the
  196. ; conventions for anything dealing with Emacs:
  197. ;   1 C is short for control if I write C-x that translates to:
  198. ;     "hold down the control key while pressing lowercase x"
  199. ;   2 M is short for meta which is generally ESC on most keyboards.
  200. ;     Similarly M-x means hold down the meta key while pressing lowercase "x"
  201. ;   3 RET means hit return. Thus, M-x load-file RET means hold down the
  202. ;     meta key while pressing x then type load-file and press return
  203. ;   4 When in trouble hit C-g  ... never fails (usually)
  204.  
  205. ; Now with that explained, let me tell you how to run my program. Assuming
  206. ; that you have transferred the file to your local disk do the following:
  207. ;  1 Use your favorite text editor to remove any text before the line which
  208. ;    states ; -*- lisp-interaction -*- 
  209. ;  2 Save this in a file named ftp.plus.el
  210. ;  3 Exit to shell
  211. ;  4 Now go to the same directory in which you save the file ftp.plus.el
  212. ;  5 type emacs. now type M-x load-file RET ftp.plus.el RET
  213. ;  6 now type M-x ftp+ and use the keys described below:
  214.  
  215.  
  216. ; use this command after you have connected and are prompted for
  217. ; a password
  218. ; send password       ... TAB-p   
  219.  
  220. ; use this command after you have connected and want to disconnect
  221. ; close connection    ... TAB-c or type "close"
  222.  
  223. ; when connected use this to switch between binary and ascii modes
  224. ; for the transfer of files... binary is neccesary for files with
  225. ; files ending in .Z or .tar or both.
  226. ; Binary/Ascii toggle    ... TAB-m or type "binary" or "ascii"
  227.  
  228. ; when connected and you want to move up a directory on the remote 
  229. ; machine type this
  230. ; up 1 dir        ... TAB-u or type "cd .." or "cdup"
  231.  
  232. ; to list the current directory
  233. ; dir            ... TAB-d or type "dir" or "ls -l"
  234.  
  235. ; After using C-p and C-n to move through the files in the directory
  236. ; if you see a directory you want to change to or a file you want to
  237. ; get, type. NOTE: this will only work on a fill directory listing
  238. ; generated by typing TAB-d or dir or ls -l. it will not work is you
  239. ; just type ls because ftp+ will not be able to parse the directory
  240. ; listing to see if the first letter on the line is a d, indicating
  241. ; a directory
  242. ; get/cd          ... TAB-g or type "cd" or "get"
  243.  
  244. ; To send a file across to the remote ftp:
  245. ; right now, you must lcd to the directory of the file of specify
  246. ; a correct relative or absolute pathname
  247. ; send            ... TAB-s or type "send"
  248.  
  249. ; To end the session
  250. ; quit            ... TAB-q or type "quit" or "bye"
  251.  
  252. ; these 3 commands allow completion... after typing the
  253. ; indicated letters, just hit TAB immediately, or type
  254. ; in as much as you can remember or care type type and the
  255. ; let Emacs complete it for you
  256.  
  257. ; choose-site-by-sitename   cs  <type "c" followed immediately by "s">
  258. ; choose-site-by-topic  ... ct  <type "c" followed immediately by "t">
  259. ; choose-site-by-files-it-has   cf  <type "c" followed immediately by "f">
  260.  
  261. ; ALSO about the above commands... it is best to use completion
  262. ; even when you are positive of the name because misspelling will 
  263. ; cause the ftp+scroll-to-chosen-site algorithm to loop forever. 
  264. ; if this happens, no problem- just type C-g
  265.  
  266. ; choose-site-backward    ... 7 note: only works when not connected
  267. ; choose-site-forward    ... 9 note: only works when not connected
  268. ; connect-to-site    ... 8 note: only works when not connected
  269. ; view-comment-field    ... 0 note: only works when not connected
  270.  
  271. ; All local commands such as lcd and !ls should be typed at a command-line
  272. ; the very next mod is to make this an interactive shell using
  273. ; CMU's cmushell/comint. until then shell commands can only be typed when
  274. ; you are at the end of the buffer AND you have a prompt AND there is a
  275. ; space between your typed command and the prompt. like so:
  276. ; ftp> lcd /scratch/china.primitive
  277. ; the above will work. this wont right now:
  278. ; ftp>lcd /scratch/china.primitive
  279. ; and this wont either:
  280. ; ftp> ftp> lcd /scratch/china.primitive
  281.  
  282.  
  283.  
  284. ;;; In my opinion, the best way to learn is by doing. Therefore these docs
  285. ;;; will take you through a sample run of using ftp+. I am well aware of
  286. ;;; the existence of ange-ftp and have great respect for the program
  287. ;;; however, I prefer my program for many reasons:
  288.  
  289. ; 0 the ability to search for a site based on a particular topic. if I want
  290. ;   to find all sites that have a TeX program, i type c t TeX TAB and they
  291. ;   are all listed
  292. ; 1 the ability to keep a list of sites in the program. whenever i read
  293. ;   usenet and see a site that interests me, i just add the site to the
  294. ;   variable ftp+site-list.
  295. ; 2 the interactive nature of my program. i hate being in the dark.
  296. ;
  297. ;*> Scenario One
  298. ;   ------------
  299. ;;; 
  300. ;;; 2 in the morning and amidst candy bar wrappers and empty coke cans we
  301. ;;; see Jenny Hacker scanning through the newsgroups on usenet. all of a
  302. ;;; sudden up pops a site in ireland that archives the lyrics to celtic
  303. ;;; pholk music. jenny does a C-x C-f ftp.plus.el and then adds this record
  304. ;;; to ftp+site-list:
  305. ;;; 
  306. ;;; ("yeolde.defjam.archive" "anonymous" "jennyhack@hacker.central"
  307. ;;;  "An archive of all the lyrics to celtic pholk musik since 32 ad. Also
  308. ;;; contains a cookbook for Molotav cocktails and other recipes for
  309. ;;; hosting your phavorite phriends."
  310. ;;; 
  311. ;;; Satisfied, Jenny does a C-x C-s. The next day she does an M-x
  312. ;;; load-file ftp.plus.el and scrolls (more on that later) through her
  313. ;;; list of sites. When she gets to this one (which she has forgotten
  314. ;;; about after a day of waiting tables at the roller restaurant) she
  315. ;;; glances at the description in the echo area. Unable to see the full
  316. ;;; description, she hits 0 to view the full bupher. Bells go off
  317. ;;; she connects up to this site and wonders what she would have done if
  318. ;;; she had instead scribbled the number down on a scrap of paper...
  319. ;;; p.s. She is also pleased to note that the 7 8 9 0 keys wich helped
  320. ;;; her scroll thru the sites can now be entered as regular text, which
  321. ;;; means she can type in file names which have these characters.
  322.  
  323. ;*> Scenario Two
  324. ;   ------------
  325.  
  326. ;;; Back from a 3 year trip to the Belgian Congo, Alf Strauss strips off
  327. ;;; his sweaty loincloth and logs into hacker central. After emacs is
  328. ;;; totally loaded and he has autoloaded ftp.plus.el he invokes ftp+.
  329. ;;; 
  330. ;;; Things are coming back now... <YOU FEEL COMPELLED TO FOLLOW ALONG>
  331. ;;; 1) He places the index finger of the right hand on the 7. 
  332. ;;; 2) places the middle finger on the 8.
  333. ;;; 3) places the 4th phinger on the 9.
  334. ;;; 4) places the pinky on 0
  335. ;;; 
  336. ;;; 
  337. ;;; Now he's set. He starts scrolling (remember
  338. ;;; that word?) through sites by hitting 7 and 9. When he
  339. ;;; wants a detailed description of a site that wont fit in the minibuffer
  340. ;;; he hits 0. When he wants to connect, he hits 8. After 
  341. ;;; connecting and seeing the password prompt on his screen, he hits TAB-p 
  342. ;;; then return (or edits the password).
  343. ;;; 
  344. ;;; He is now logged in. To get a directory, he hits TAB-d. To change to a
  345. ;;; directory he does one of two things:
  346. ;;; 1) uses C-p and C-n to move up, then hits TAB-g when he is on the same
  347. ;;; line as the directory he wants to change to... he can be ANYWHERE on
  348. ;;; the line of the directory he wants to change to, ANYWHEREman.
  349. ;;; 2) type "cd directory"
  350. ;;; 
  351. ;;; After plunging deep in the directory, he wants to go up a directory,
  352. ;;; again you can have it your way:
  353. ;;; 1) type TAB-u
  354. ;;; 2) type "cd .."
  355. ;;; 
  356. ;;; Strauss is now in a directory with a compressed file that he is itchin
  357. ;;; to get. BUT he must go to binary mode first. He can:
  358. ;;; 1) type TAB-m 
  359. ;;; 2) type "binary"
  360. ;;; 
  361. ;;; to switch back later
  362. ;;; 0) type TAB-m
  363. ;;; 1) type "ascii"
  364. ;;; 
  365. ;;; After getting the file, he wants to send one of his own. After
  366. ;;; ensuring that the mode is correct and he used the lcd command to
  367. ;;; switch to the correct directory, he can:
  368. ;;; 0) type TAB-s local-filename
  369. ;;; 1) type "send local-filename"
  370. ;;; 
  371. ;;; After a hard day of FTPing, helga is home from a day of cooking soul
  372. ;;; food. Strauss is ready to launch that erotic assault. So he forgets
  373. ;;; that he could <type "quit"> and hurriedly hits TAB-q and hustles off to
  374. ;;; greet helga bambaata-strauss
  375.  
  376. ;*> Scenario Three
  377. ;   --------------
  378.  
  379. ;;; Professor Knucklehead dashes headlong into the computer lab and
  380. ;;; frantically logs in. Everyone stares at this frizzy-headed 
  381. ;;; labcoat-wearing individual who is mumbling.. need that program NOW!
  382. ;;; With not a femtosecond of delay, he cracks off a 
  383. ;;; M-x load-file ftp.plus.el then M-x ftp+ and he off to the races:
  384. ;;; He next types "c" followed by "f" to <c>hoose a site searching
  385. ;;; by <f>ilename. Since he doesnt remember the full name to the
  386. ;;; package, he types a few letters and hits tab. Up pops the filename
  387. ;;; A deft smash of the return key and another tab lists all the sites
  388. ;;; with the file he wants. He chooses the first and wonders what he would have
  389. ;;; done without ftp+
  390.  
  391. ;;; After the day is over. Dr. Knucklehead wants a little relaxation and
  392. ;;; what could be more fun than using FTP? Not much for this well-rounded
  393. ;;; character, so off he goes back to the computer lab.
  394. ;;; After logging in, and invoking ftp+, he wants a list of all sites
  395. ;;; with the recipes for Jiffy Popcorn. so he types "c" followed by "t"
  396. ;;; which is short for <c>hoose site based on <t>opic and types in
  397. ;;; his chosen subject. He connects up, pulls in that yummy recipe and
  398. ;;; its time for some GOOD EATIN!!
  399.  
  400. ;;; After a popcorn feast, Knucklehead is back to showcase the last 
  401. ;;; pheature of his phavorite package. So he invokes ftp+ and this time
  402. ;;; he knows just the site he wants. He doesnt want to scroll through the
  403. ;;; huge list of sites so he hits "c" followed by "s" which is short for
  404. ;;; <c>hoose site based on <s>itename types in the name, or part of the
  405. ;;; name if he wants completion, and then hits 8 to connect.
  406.  
  407.  
  408.  
  409. ;*> N o t e s
  410. ;   -----------------------
  411. ;   - topic names may contain punctutation
  412. ;;;   using headers is a good way to search for code of a
  413. ;;;   certain category
  414. ;   - addition of a field to the site-list such as the topic list or file list
  415. ;;;   is a simple matter of adding __?_ to functions __?__ if you wish to
  416. ;;;   add fields with differing delimiters or formats, then you must write
  417. ;;;   the readers and writers for this. i would like to see the resultsof 
  418. ;;;   such work.
  419. ;   - IMPORTANT: if you decide to add new sites,
  420. ;;;   it is not a good idea to leave a null field as "" because
  421. ;;;   you wont be able to do read completion on this field by hitting
  422. ;;;   tab. you will have to hit space. better yet, as requested above,
  423. ;;;   if you know of new and interesting software or files, email me 
  424. ;;;   i will add it so that everyone can benefit.
  425.  
  426.  
  427.                     ;                   
  428.                     ; major code 
  429.                     ; segment 
  430.                     ;
  431.                     ; variable-defines
  432.                     ;
  433.  
  434. (defvar ftp+mode-hook 'nil
  435.   "If not nil, this hook will be called when ftp+ starts up. One pretty useful
  436. thing to do would be to use this to set an alternate ftp+site-list")
  437.  
  438. (defvar ftp+disconnect-hook 'nil
  439.   "If not nil, this hook will be called upon disconnect.")
  440.  
  441. (setq ftp+status-list '(
  442. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  443. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  444. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  445. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  446. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  447. (nil nil nil nil) (nil nil nil nil) (nil nil nil nil)
  448. (nil nil nil nil) (nil nil nil nil)))
  449.  
  450. (setq ftp+connected-index 0)
  451. (setq ftp+binary-mode-index 1)
  452.  
  453. (setq ftp+Interaction-bupha (get-buffer-create "dummy"))
  454.  
  455. (setq process-objects-vector (make-vector 50 (start-process "ftp+" ftp+Interaction-bupha "ls")))
  456.  
  457. ;; if popular-sort is true, each site that you select, regardless of method,
  458. ;; will be moved to the front of the list so that it will be quickly chosen
  459. ;; the next time you want it. if it is false, sites will retain their places
  460. ;; in the variable ftp+site-list . to be implemented
  461.  
  462. (setq ftp+list-ctr 0)  ; used iterate thru ftp+site-list
  463.  
  464. (setq ftp+Instruction-bupha "*ftp+help-buffer*")
  465. (setq ftp+buffer-count -1)
  466.  
  467. (setq SITENAME-INDEX 0)
  468. (setq USERNAME-INDEX 1)
  469. (setq PASSWORD-INDEX 2)
  470. (setq TOPIC-INDEX 3)
  471. (setq FILENAME-INDEX 4)
  472. (setq COMMENT-INDEX 5)
  473.  
  474. ;; set this list to whatever fields you want shown as you
  475. ;; scroll thru the the sitelist with keys 
  476.  
  477. (setq DISPLAY-FIELDS '(TOPIC-INDEX FILENAME-INDEX))
  478. (setq DISPLAY-CUSTOM t)
  479.  
  480. (setq ftp+site-list '(
  481. ("dsl.cis.upenn.edu" "anonymous" "anonymous" "Gifs" "Gifs" "")
  482.  
  483.  
  484. ("fionavar.mit.edu" "anonymous" "anonymous" "TeX" "LaTeX styles" "directory of latex styles")
  485. ("zurich.ai.mit.edu" "anonymous" "scheme" "Scheme" "Scheme" "") 
  486. ("ftp.ai.mit.edu" "anonymous" "scheme" "Women Computer Scientists/Robotics" "Women Computer Scientists/Reactive Robotics" "pub/ellens/womcs*.ps") 
  487. ("prep.ai.mit.edu" "anonymous" "china.primitive@divineland" "Gnu" "Gnu Multiple Precision Arithmetic/Gnu Spreadsheet (Oleo)/Gnu Debugger/Gnu Dynamic Loader/Epoch 4.0" "Major Gnu Archive") 
  488. ("export.lcs.mit.edu" "anonymous" "superkid@mo.jo.land" "X-Windows/Tex" "?" "x-source-list.Z contains X-win ftp sites. dir: contrib") 
  489. ("whitechapel.media.mit.edu" "anonymous" "superkid@mo.jo.land" "TeX/Postscipt Utilities" "psfig" "psfig allows the inclusion of postscript in latex documentsx-source-list.Z contains X-win ftp sites. dir: contrib
  490.  
  491. 2) How can I include a PostScript figure in LaTeX?
  492.  
  493.    Perhaps the best way to do this is to use the psfig macros written
  494.    by Trevor Darrell. They are available via anonymous ftp from
  495.    whitechapel.media.mit.edu (18.85.0.125) in ./pub/psfig or 
  496.    linc.cis.upenn.edu (130.91.6.8) in the directory ./dist/psfig. You 
  497.    will also need a dvi to PostScript conversion program that supports 
  498.    \specials. The ones mentioned in question 1 do, and the first two
  499.    drivers come with a version of psfig ready to use with them. The psfig 
  500.    macros work best with Encapsulated PostScript Files (EPS). In
  501.    particular, psfig will need the file to have a BoundingBox (see 
  502.    Appendix C of the _PostScript Language Reference Manual_). If you 
  503.    don't have an EPS file, life can be difficult. For people who don't
  504.    have ftp access or can't deal with tar files, the files are also
  505.    available from ymir.claremont.edu (134.173.4.23) in
  506.    [anonymous.tex.graphics.psfig].
  507. ") 
  508.  
  509.  
  510.  
  511. ("eff.org" "anonymous" "china.primitive@divineland" "Phone Phreaking" "Phrack" "Phrack is in cud") 
  512.  
  513. ("blackbox.hacc.washington.edu" "anonymous" "china.primitive@divineland" "Prose/Ethnic Tex" "Poorman's TeX/Translation of John Trevisa from Latin" "") 
  514. ("byron.u.washington.edu" "anonymous" "china.primitive@divineland" "X-Windows/Tex" "?" "") 
  515. ("june.cs.washington.edu" "anonymous" "china.primitive@divineland" "X-Windows/Tex" "?" "")
  516. ("ftphost.cac.washington.edu" "anonymous" "china.primitive@divineland" "Ethnic Tex" "chinese.tar.Z" "")
  517.  
  518. ("netlib" "" "" "Public Domain Scientific Software" "Public Domain Scientific Software" "
  519.                           ----------------------
  520.                           Introduction to NETLIB
  521.                           ----------------------
  522.  
  523.                            Frederick W. Chapman
  524.                           Senior User Consultant
  525.                      Lehigh University Computing Center
  526.  
  527.                          (fc03@ns.cc.lehigh.edu)
  528.  
  529.                             November 26, 1991
  530.  
  531.  
  532. NETLIB is a network-based facility for the automated distribution of the
  533. source code for public domain scientific software.  Most of this software is
  534. written in FORTRAN, but some software is available in C, C++, and PASCAL.
  535. Software is available for a wide variety of applications.  The following
  536. list -- which is far from exhaustive -- should give the reader an idea of
  537. the scope of the NETLIB collection.
  538.  
  539.  
  540. NUMERICAL METHODS:
  541.  
  542.    * Linear Algebra (basic linear algebra subroutines, eigenvalue and
  543.        eigenvector computations, matrix factorizations, least squares)
  544.    * Sparse Matrix Calculations
  545.    * Numerical Optimization
  546.    * Spline Interpolation
  547.    * Ordinary Differential Equations
  548.    * Fast Fourier Transforms
  549.    * Special Functions
  550.  
  551.  
  552. WELL-KNOWN SOFTWARE:
  553.  
  554.    * Collected algorithms of the Association of Computing Machinery
  555.        (ACM) Transactions on Mathematical Software (TOMS)
  556.    * LINPACK and EISPACK subroutine libraries
  557.    * AMS TeX and SIAM typesetting macros
  558.    * MATLAB applications packages
  559.  
  560.  
  561. SOFTWARE FOR ADVANCED COMPUTER ARCHITECTURES:
  562.  
  563.    * Libraries for supporting parallel computation
  564.    * Libraries for computation on vector-processor machines
  565.  
  566.  
  567. MISCELLANEOUS:
  568.  
  569.    * Multiple-precision floating-point arithmetic packages (e.g.,
  570.        Brent's MP; Smith's FM, from TOMS algorithms)
  571.    * Benchmark programs for comparing computing platforms
  572.    * Collections of problems for testing numerical software
  573.    * Programming aids such as single-precision-to-double-precision and
  574.        FORTRAN-to-C conversion utilities
  575.    * Companion software to various textbooks (e.g., Cheney & Kincaid;
  576.        Forsythe, Malcolm, and Moler)
  577.    * Bibliographies
  578.  
  579.  
  580. Information and software (e.g., an index of available software, or the
  581. source code to LINPACK) are obtained by sending requests -- via electronic
  582. mail -- to a NETLIB mail server at one of the following Internet addresses:
  583.  
  584.      netlib@research.att.com          (AT&T Bell Labs, New Jersey, USA)
  585.      netlib@ornl.gov                  (Oak Ridge Nat. Lab, Tenn., USA)
  586.      netlib@ukc.ac.uk                 (Univ. of Kent, UK)
  587.      netlib@nac.no                    (Oslo, Norway)
  588.      netlib@draci.cs.uow.edu.au       (Univ. of Wollongong, NSW, Australia)
  589.  
  590. Upon receipt of an appropriately worded request, the NETLIB mail server
  591. responds by sending the information or software requested to the electronic
  592. mail address of the requestor.  Depending on your location, the amount of
  593. network traffic, and other factors, you may actually receive a reply within
  594. minutes of submitting your request!
  595.  
  596. Note that the software available and services provided may differ somewhat
  597. >from one NETLIB site to another.  For example, the AT&T Bell Labs site,
  598. research.att.com, also provides:  (1) access to the NETLIB software via FTP
  599. (login with username "netlib"), and (2) access to an interactive biblio-
  600. graphic search system via TELNET (login with username "walk").
  601.  
  602. To obtain more detailed instructions on the use of NETLIB, as well as an
  603. index of the software currently available from a particular NETLIB site,
  604. send the following one-line message to a NETLIB mail server (selected from
  605. the above list -- usually the geographically closest site):
  606.  
  607.      send index
  608.  
  609. Note that some mail trailers may possibly confuse the NETLIB mail servers.
  610. If you encounter problems, you might want to suppress the use of your usual
  611. signature file when sending requests to NETLIB via electronic mail.
  612.  
  613.  
  614.  //////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  615. |  Frederick W. Chapman |   Campus Phone:  8-3218   | Junior Adult Men's     |
  616. |  User Services Group  |   fc03@ns1.cc.lehigh.edu  | Free-Skating Bronze    |
  617. |  Computing Center     |     -.-. --.-   -.. .     | Medalist, Mid-Atlantic |
  618. |  Lehigh University    | N3IJC (2m band, FM voice) | Competition, 1991!     |
  619.  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////////
  620. ")
  621.  
  622.  
  623.  
  624.  
  625. ("lib.stat.cmu.edu" "statlib" "brannon@jove.cs.caltech.edu" "Statistics" "Statistics" "To get started using StatLib, send the one line message
  626.     send index
  627. to statlib@lib.stat.cmu.edu
  628.  
  629. StatLib also has an anonymous FTP facility.
  630. Use ftp to connect to lib.stat.cmu.edu and login with user name
  631. "statlib".  PLEASE send your e-mail address as your password.  This
  632. will enable us to notify you of changes to the software and notify the
  633. contributors about who has requested the software.
  634.  
  635. A reminder that there is also an archive of SAS related material.
  636. Send the message
  637.     send sas from general
  638. for details about the SAS-L archive.
  639. ") 
  640.  
  641. ("ted.cs.uidaho.edu" "anonymous" "china.primitve@divineland" "Logic" "HigherOrderLogic Theorem Prover" "pub/hol") 
  642. ("wolfen.cc.uow.edu.au" "anonymous" "china.primitve@divineland" "Computer Graphics" "Gif Viewer for PC's" "pub/pc") 
  643. ("hanauma.stanford.edu" "anonymous" "china.primitve@divineland" "Ethnic Tex" "Bejing-24.bdf/PinYin pronunciation tables/Pinyin->GB code table/Best of comp.graphics/World Map/Zhongwen" "") 
  644. ("neon.stanford.edu" "anonymous" "china.primitve@divineland" "Ethnic Tex" "ChTeX Modified" "") 
  645. ("lurch.stanford.edu" "anonymous" "china.primitve@divineland" "Postscript" "Episode Viewer" "") 
  646. ("anna.stanford.edu" "anonymous" "whodat@up.backupin.there" "X-Windows/ADA/Tex" "Annotated ADA" "Sriram Sankar's ada macros for TeX..") 
  647. ("labrea.stanford.edu" "anonymous" "china.primitive@divineland" "Tex" "dvips" "quasi-office repositor for TeX and related toys") 
  648. ("sun-valley.stanford.edu" "anonymous" "china.primitive@divineland" "GCC Hacks" "GCC for 68k" "pub/GNU for docs and binaries From marc@sun-valley.stanford.edu Sat Nov 16 23:40:10 1991
  649. ") 
  650. ("interviews.stanford.edu" "anonymous" "china.primitive@divineland" "Object-Oriented Graphics" "Interviews" "home of Interviews, an object-oriented windowing system")
  651.  
  652. ("venus.ycc.yale.edu" "anonymous" "venus@venus.edu" "Editors/X-Windows/TeX/Gifs" "Gifs/Unix-TECO/TeXtyl" "TeXtyl allows postprocessing with any available fonts")
  653. ("yalevm.ycc.yale.edu" "anonymous" "venus@venus.edu" "Mathematics" "Mathematical Abstracts Database" "Yale University is developing an electronic network for the distribution of
  654. mathematics preprints.  Abstracts  of the preprints are stored in a database,
  655. available via the Internet.  Currently abstracts are available from various
  656. mathematicians at Yale University, the University of Texas at Austin, Oklahoma
  657. State University, Washington University in St. Louis, and the University of
  658. Paris.   The full text of the preprints exist on a series of files at
  659. participating universities which can be downloaded via anonymous FTP (File
  660. Transfer Protocol).    
  661.  
  662. The file of abstracts for preprints from all participating universities has
  663. been mounted on an IBM3083 at the Yale Computer Center, using the Documaster
  664. text management software.  Once the abstracts are entered into the Documaster
  665. file, they can be searched by author, title, author's address, date, the status
  666. of the preprint (accepted for publication, preliminary draft, class notes, book
  667. draft, etc), words in the abstract, keywords supplied by the author, and the
  668. Math Reviews subject classification code.   Mathematicians interested in
  669. obtaining the full text of the preprint will download directly from the
  670. originating university.
  671.  
  672. TO SEARCH THE IMP DATABASE
  673.  
  674. To use IMP via Internet, you need a copy of TN3270.  Telnet to
  675. yalevm.ycc.yale.edu .  
  676.  
  677. You can also dial up using standard long distance lines, if you have ASCII
  678. terminal emulation.  Set your communications software for even parity, 7 data
  679. bits, and 1 stop bit (1200 baud, 203-432-5800; 2400 baud 203-432-5804)
  680.  
  681. PASSWORDS
  682.  
  683. After the connection is made, you will be prompted:
  684.  
  685. USERID:        Math1 (or Math2, 3, 4, or 5)
  686. PASSWORD:     Math1 (or Math2, 3, 4, or 5)
  687.  
  688. OPERATOR ID:    Math1  
  689.  
  690. After this point, the screen menus will guide your search.
  691.  
  692. FOR INSTITUTIONAL PARTICIPATION
  693.  
  694. We are actively encouraging more institutions to begin submitting abstracts to
  695. IMP.  Each participating institution should designate a local coordinator. 
  696. This person should be responsible for certain aspects of coordinating their
  697. institution's participation and needs an electronic mail account that can be
  698. used to send and receive electronic mail via BITNET or the Internet.  The
  699. coordinator needs to make sure that the following tasks are delegated or
  700. assigned:
  701.  
  702. - --Submitting abstracts of your university's preprints via electronic mail to
  703. Yale University.  
  704. - --Arranging for the storage of the full text of their institution's preprints
  705. on a computer that is accessible via the Internet through anonymous FTP. 
  706. - --Writing a README file, based on a sample that Yale will provide, so that
  707. mathematicians at other institutions can download electronic copies of your
  708. institution's preprints.   
  709. - --Obtaining a copy of tn3270 and distributing it appropriately to those
  710. individuals at your institution who wish to use IMP.
  711. - --Distributing for signature and retaining signed copies of the IMP License
  712. Agreement for all original authors of abstracts.
  713.  
  714. FOR MORE INFORMATION
  715.  
  716. A brochure (electronic or printed) describing IMP is available from Katherine
  717. Branch, Kline Science Library, Yale University, New Haven CT  06511,
  718. katherine_branch@yccatsmtp.ycc.yale.edu.
  719.  
  720. General suggestions/inquiries/policies/participation:  Katherine Branch,
  721. katherine_branch @yccatsmtp.ycc.yale.edu, 203-432-3439 (voice);
  722. Search System Bugs:  David Bruce, bruce@yalevm (Abstract searching only);
  723. Problems:  Victor Wickerhauser, victor@jezebel.wustl.edu     
  724. ")
  725. ("weedeater.math.yale.edu" "anonymous" "china.primitive@divineland" "Graphics/Ray Tracing" "Utah Raster Toolkit" "") 
  726. ("bulldog.cs.yale.edu" "anonymous" "anonymous" "Spell Check" "Ispell" "")
  727.  
  728. ("pl118g.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  729. ("pl118f.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  730. ("pl118e.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  731. ("pl118d.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  732. ("pl118c.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  733. ("pl118b.cc.lehigh.edu" "tb06" "" "?" "?" "Packard Sun Lab") 
  734. ("pmatlab5.csee" "terrence" "" "?" "?" "tektronix 4317") 
  735.  
  736. ("kth.se" "anonymous" "china.primitive@divineland" "Ethnic Tex" "ChTeX" "mirror site for Ethnic Typographic/TeX things") 
  737. ("vaxb.acs.unt.edu" "anonymous" "dong@east.zhongguo" "IBM" "IBM Internet BBS Program" "This is to inform you that HYTELNET version 4.0, the utility which gives 
  738. an IBM-PC user instant-access to all Internet-accessible library 
  739. catalogs, Freenets, CWISs, Library BBSs, etc. is now available. You can 
  740. get it via anonymous ftp from:
  741. ")
  742.  
  743.  
  744.  
  745.  
  746. ("trantor.harris-atd.com" "anonymous" "china.primitive@divineland" "?" "?" "") 
  747. ("irisa.irisa.fr" "anonymous" "china.primitive@divineland" "Ray Tracing/Graphics" "MicroEmacs/VT100 Art/Kermit Docs/Zoo Archiver" "") 
  748.  
  749. ("ifi.informatik.uni-stuttgart.de" "anonymous" "china.primitve@divineland" "Ethnic Tex" "ArabTeX" "Home of ArabTeX") 
  750. ("pavern@uk.ac.man.cs" "anonymous" "china.primitive@divineland" "X Games" "Xpipeman" "Xpipeman is an addictive strategy game") 
  751. ("kythera.nmsu.edu" "anonymous" "china.primitve@divineland" "Ethnic TeX/Chinese Metafonts" "Arabic/Japanese/Korean/ChTeX/ArabTeX" "lots of language and tex-related stuff.") 
  752.  
  753. ("msdos.archive.umich.edu" "anonymous" "china.primitve@divineland" "Ethnic Tex" "Duke Chinese Typist" "") 
  754.  
  755.  
  756. ("bull.cs.williams.edu" "anonymous" "anonymous" "?" "ParaGraph" "")
  757.  
  758. ("ccb.ucsf.edu" "anonymous" "anonymous" "comp.sources.unix/TeX/Bitmaps/Games/Graphics" "Bitmaps/comp.sources.unix/wp2latex/CommonTeX2.9/ckermit/Uemacs_3.10/UC-Berkeley Software Catalog" "")
  759. ("cs.arizona.edu" "anonymous" "anonymous" "NSF-Japan/Software Development/Pnrogramming Languages/SB-Prolog" "NSF-Japan/SB-Prolog/Japanese Computer Science Info/Scorpion Software Development System/SR Programming Language/Janus Programming Language/Icon Programming Language/Xkernel/Agrep/Anrep" "")
  760. ("iear.arts.rpi.edu" "anonymous" "china.primitive@divineland" "Graphics" "Star Gifs/Ray Tracing" "") 
  761. ("cs.umn.edu" "anonymous" "china.primitive@divineland" "X-Windows/Tex" "ChTex/ArabTeX/Image" "") 
  762.  
  763.  
  764. ("rascal.ics.utexas.edu" "anonymous" "anonymous" "LISP/Logic" "thm (theorem prover)/Kyoto Common Lisp" "   e-mail.
  765.  
  766. Check out Austin Kyoto Common LISP which is available by anonymous ftp
  767. >from rascal.ics.utexas.edu in "pub". It is a free LISP which, to allow
  768. greater portability, translates LISP to C, compiles the C with the
  769. system's standard C compiler and then loads the object file into the
  770. running LISP. 
  771.  
  772. - -- 
  773.      Chris Whatley - The UNIX Guy - UT-Austin Mathematics
  774.      E-mail: chari@{math,emx,cs}.utexas.edu, chari@gnu.ai.mit.edu
  775.         (NeXT Mail format acceptable but not desired)
  776.            Ph: 512/471-7107(O),499-0475(H)
  777. ")
  778.  
  779. ("ftp.cs.cornell.edu" "anonymous" "graphics.fiend@lehigh.edu" "X-Windows/Tex" "Fig/TransFig" "")
  780. ("tesla.ee.cornell.edu" "anonymous" "anonymous" "Parallel Computing Environment" "Paragon Parallel Programming Environment" "What is Paragon?
  781. Paragon is a collection of data-parallel program constructs
  782. implemented in C++.  Paragon is intended to be a research vehicle for
  783. investigating issues for parallel execution of large-scale scientific
  784. programs.  We use it to develop and evaluate parallel programming
  785. constructs and techniques.  We also use it in the Parallel Processing
  786. course at Cornell to demonstrate the data-parallel programming
  787. paradigm. 
  788.  
  789. What does it run on?
  790. There are two versions of the Paragon library.  The uniprocessor
  791. version should run on any machine with a working C++ compiler.  It is
  792. known to work on Sun workstations with either AT&T's Cfront 2.0
  793. compiler or GNU's g++ 1.39.0  The uniprocessor version has also been
  794. tested on, the IBM RS 6000 and 3090 computers.
  795.  
  796. The multiprocessor version should run on the Intel iPSC/2 and iPSC/860
  797. hypercube.  The multiprocessor version has also been ported to the
  798. Parallel Virtual Machine (PVM).  This release of Paragon supports PVM
  799. to provide parallel execution on heterogeneous networks of
  800. workstations. 
  801.  
  802. How do I get it?
  803. The paragon release is provided in three tar files.  The complete
  804. distribution is available on tesla.ee.cornell.edu in:
  805. pub/paragon/paragon-1.1.tar.Z
  806.  
  807. If you're just interested in the serial version, get
  808. pub/paragon/uniproc.tar.Z
  809.  
  810. If you're just interested in some reading material, the LaTeX source
  811. and raw postscript for the Paragon User's Guide is available in
  812.  
  813. pub/paragon/uguide.tar.Z.  
  814.  
  815. The Paragon paper presented at the 1991 International Conference on
  816. Parallel Processing is available as 
  817. pub/paragon/ICPP-91.ps.Z 
  818.  
  819. and an updated version of this paper is included as
  820. pub/paragon/ICPP-91_revised.ps.Z
  821.  
  822. Please send all comments, suggestions, bug reports, and complaints to
  823. paragon@ee.cornell.edu
  824. ")
  825.  
  826.  
  827. ("cs.utk.edu" "anonymous" "anonymous" "Parallel Computing" "Parallel Virtual Machine" "PVM (parallel virtual machine) is a software
  828. package which allows the utilization for a heterogeneous network of
  829. computers.")
  830.  
  831.  
  832.  
  833. ("genbank.bio.net" "anonymous" "china.primitive@divineland" "Genbank-EMBL-DDBJ/Molecule Folding/Medical Information" "Molecule Folding" "Another possibility is to use a program called MOLECULE.  It will
  834. draw the molecule from the Zuker FOLD program using the .CT file
  835. which can be generated.  This is a DOS program so you do not need
  836. a terminal emulation (and can do it at home 8-) ).  It can be
  837. obtained from the EMBL fileserver, or (I believe) from
  838. GENBANK.BIO.NET by ftp.  There are different versions depending on
  839. your video card - EGA, Herc., etc.
  840. ") 
  841. ("sirius.ucs.adelaide.edu.au" "anonymous" "china.primitive" "?" "?" "") 
  842. ("nic.funet.fi" "anonymous" "china.primitive@divineland" "Protein Primary Structure" "ProfileGraph" "") 
  843. ("kampi.hut.fi" "anonymous" "china.primitive@divineland" "?" "?" "") 
  844. ("garbo.uwasa.fi" "anonymous" "china.primitive@divineland" "?" "?" "") 
  845. ("ousrvr.oulu.fi" "anonymous" "china.primitive@divineland" "?" "?" "") 
  846. ("tukki.jyu.fi" "anonymous" "china.primitive@divineland" "?" "?" "") 
  847. ("tolsun.oulu.fi" "anonymous" "china.primitive@divineland" "?" "?" "") 
  848.  
  849. ("menudo.uh.edu" "anonymous" "china.primitive@divineland" "Protein Primary Structure" "ProfileGraph" "") 
  850. ("menudo.uh.edu" "anonymous" "china.primitive@divineland" "Protein Primary Structure" "ProfileGraph" "") 
  851. ("ftp.bio.indiana.edu" "anonymous" "china.primitive@divineland" "Drosophila Genetic Map/Protein Primary Structure" "ProfileGraph/FlyBase (Drosophila)" "") 
  852. ("karyon.bio.net" "anonymous" "china.primitive@divineland" "Restriction Enzyme Dbase" "" "Version 9111 of Richard Roberts Cold Spring Harbor Laboratory
  853. restriction enzyme database (REBASE) is now available for anonymous
  854. FTP from karyon.bio.net [134.172.1.251] in the directory
  855. pub/db/REBASE.  The data are contained in the file type2.lst and
  856. literature references are in references.lst.  Questions about the
  857. database should be directed to Dr. Roberts at roberts@cshl.org.
  858.  
  859.                                 Sincerely,
  860.  
  861.                                 Dave Kristofferson
  862.                                 GenBank Manager
  863.  
  864.                                 kristoff@genbank.bio.net
  865.  
  866. ") 
  867.  
  868.  
  869.  
  870. ("decuac.dec.com" "anonymous" "china.primtive@zhongguo" "X-Windows/Games" "None" "")
  871.  
  872. ("bioftp.unibas.ch" "anonymous" "yoyo@yoyo.yo" "Biology" "Biology" "               Setup of the Server bioftp.unibas.ch
  873.                ====================================
  874.  
  875.                                     ~/
  876.                  +-------------------+-----------------------------+
  877.                  |                                                 |
  878.                biology                                         programs 
  879.    +-------------+-----------+--------------------+      uu and zoo source code
  880.    |                         |                    |     
  881.    EMBnet                    cd                  database
  882.    |           The last EMBL CD-ROM (resources    +------------------------+
  883.    |          permitting - drive used elsewehere)                          |
  884.    |                                                                       |
  885.    +-----+-------------+-----------+--------------------+                  |
  886.          |             |           |                    |                  |
  887.     XSwissprot         |     XEMBL.VAX_ZOO           Xembl                 |
  888. (not yet; scheduled)   |           |                    |                  |
  889.     +----+--+          |   zoo'ed    VAX/VMS       The contents            |
  890. data.dir   indices.dir |   GCG / NBRF formatted    of the dir's            |
  891. Updates to the current |   current XEMBL.ref       below containing        |
  892. Swissprot database     |   and XEMBL.seq files     Entry code, and         |
  893.                        |   as well as XXEMBL       title line              |
  894.             DATABASE.ZOO                                 |                 |
  895. The zoo'ed databases currently                           |                 |
  896. availavle at BIOCENTER in VAX        +--------------------------+          |
  897. /VMS and GCG/NBRF formatted          |                          |          | 
  898. zoo files: EMBL,SWISSPROT,PIR        |                          |          |
  899.                                    data.dir                    indices.dir |
  900. +----+----+----+----+----+----+----+-+--+----+----+----+----+  containing  |
  901. fun  inv  mam  org  phg  pln  pri  pro  rod  syn  una vrl vrt  indices in  |
  902. Entries in EMBL format, *ONE PER FILE*. The files are named    EMBL format |
  903. using the entry code as file name. NEW in the next release;                | 
  904. extension 'dat', update to existing release, extension 'upd'.              |
  905.                                                                            |
  906. Variuos databases available on various other servers as well,mainly updated, 
  907.                            but not entirely produced, by Amos Bairoch, Geneva 
  908.                                                                            |
  909.  +---+----+------+---+----+---+---+----+------+----+-----+--+---+----+----++
  910.  |   |    |      |   |    |   |   |    |      |    |     |  |   |    |    |
  911. ecd  | fans_ref  |  info  |  ngdd |  seqanalr |  enzyme  | fly  | jour_tab|
  912.      |           |        |       |           |          |      |       trna
  913.    prosite      tfd      alu      epd     gcg_codon    limb   rebase")
  914.  
  915.  
  916.  
  917.  
  918. ("lhc.nlm.nih.giv" "anonymous" "yoyo@yoyo.yo" "Medical Information" "Datafile of Biological Scientists" "I am in the process of updating the database.  If you would like to be
  919. included, please fill out the following form, and send it to me at
  920. hunter@nlm.nih.gov.  Thank you very much.
  921.  
  922.                 Larry Hunter
  923. Lawrence Hunter, PhD.
  924. National Library of Medicine
  925. Bldg. 38A, MS-54
  926. Bethesda. MD 20894
  927. (301) 496-9300
  928. (301) 496-0673 (fax)
  929. hunter@nlm.nih.gov (internet)
  930.  
  931. - ----- begin file ~/ftp-pub/lhc/database-entry-form -----
  932. feel free to use more than one line per field.
  933.  
  934. name:
  935. title/degree:
  936. job title:
  937. organization:
  938. department:
  939. address:
  940. area code:
  941. phone number:
  942. fax number:
  943. email address:
  944. alt. email address:
  945. research interests:
  946. comments:
  947.  
  948. - ----- end file ~/ftp-pub/lhc/database-entry-form -----
  949. ")
  950. ("ncbi.nlm.nih.gov" "anonymous" "hmm@hmm.noe" "Medical Information" "Eukaryotic Promoter Database" "./repository/EPD" "
  951. - - David Ghosh, NCBI  
  952.   ghosh@ncbi.nlm.nih.gov
  953. ")
  954.  
  955. ("gatekeeper.dec.com" "anonymous" "china.primitive@divineland" "Recipes/Games/comp.sources.games/comp.sources.misc/comp.sources.sun/comp.sources.unix" "c++2latex/shX" "comp.sources.misc")
  956. ("arthur.cs.purdue.edu" "anonymous" "china.primitive@divineland" "TeX" "TeXPS" "") 
  957. ("cs.purdue.edu" "anonymous" "china.primitive@divineland" "Ethnic TeX" "cxterm/celvis/cless/cclib16* fonts" "") 
  958. ("j.cc.purdue.edu" "anonymous" "china.primitive@divineland" "comp.binaries.amiga/comp.sources.amiga/comp.sources.games/comp.sources.sun/comp.sources.unix/comp.sources.x/comp.sys.next" "hqx" "") 
  959. ("ftp.uu.net" "anonymous" "china.primitive@divineland" 
  960. "TeX/Image Compression/Graphics/Ray Tracing" "epp2tex/JPEGxeval IMAGE Compression/Utah Raster Toolkit" "epp2tex is a tool which accepts a relatively easy to write file
  961. of estimation results.  It generates a LaTeX table.  It has limited
  962. commandline support for tuning the appearance of the table.
  963.  
  964. It is part of the distribution of a program named "ols" which
  965. was posted on comp.sources.reviewed today.  You can pick it up 
  966. >from there, or by anonymous ftp from uunet.uu.net, in the 
  967. directory comp.sources.reviewed/volume01/ols.
  968. ") 
  969. ("ftp.nisc.sri.com" "anonymous" "china.primitive@divineland" "?" "?" "") 
  970. ("lion.waterloo.edu" "anonymous" "china.primitive@divineland" "Dikumud" "?" "dikumud on port 4000") 
  971. ("watserv1.waterloo.edu" "anonymous" "china.primitive@divineland" "Programming Language" "Fortran2C/Pascal2C/J (programming language)" "
  972.         Installation and Start-Up Procedure
  973.         for J, Version 3.2, on Unix (TM) systems
  974.  
  975.  
  976. 0.  The compressed tape archive contains the following files:
  977.  
  978.      j                The executable file
  979.      readme.doc            Copyright notice
  980.      status.doc            Implementation status
  981.      install             Something like this file
  982.      message             Message in a Bottle
  983.      isiinfo.doc        Information about ISI
  984.      tutorial.js        Script for running a tutorial
  985.      tut            Sub-directory needed by tutorial.js
  986.      tut/tut*.js        Files needed by tutorial.js
  987.  
  988. 1.  These installation steps are suggested:
  989. Start with the file j_XXX_3.2_.tar.Z, the compressed Tape ARchive
  990. file for the system identified by XXX.
  991.  
  992.      mkdir ~/j            Create a new directory called j.
  993.      mv j_*.tar.Z ~/j        Move the package to the new directory.
  994.      cd ~/j            Change to the new directory.
  995.      uncompress j_*        Expand the compressed tar file.
  996.      tar xof j_*.tar        Extract files from the tape archive.
  997.  
  998. 2.  If yours is a one user system, these steps are suggested:
  999.  
  1000.      alias j ~/j/jXXX        Set an alias for j.
  1001.      j                To execute the alias.
  1002.  
  1003. In this way, J will be available to you from any directory.
  1004. The J tutorial (mentioned above) will be available to you
  1005. whenever you make ~/j your current directory.
  1006.  
  1007. 3.  When you start J, you should soon see the message
  1008.  
  1009.    J Version 3.2  Copyright (c) 1990 1991, Iverson Software Inc.
  1010.  
  1011.    and a 3-space prompt.  At this point, the system is ready to
  1012.    interpret J sentences.  To terminate the session, enter   )off  .
  1013.  
  1014. 4.  A tutorial is available.  Within a session, enter:
  1015.  
  1016.      )sscript 'tutorial.js'    Make the necessary definitions
  1017.      tutorial ''        Start the tutorial
  1018.  
  1019. 5.  For shared use on a multi-user system, an appropriate installation
  1020. is needed.  The directory used for the binary file  j  will depend
  1021. on the conventions in use at your installation.  Some system
  1022. administrators may like  J  itself to be installed as /bin/j.
  1023. The  J  tutorial files may be installed in a different directory,
  1024. such as  /software/j/doc.  If this directory path is used, the
  1025. files needed by the tutorial would named: 
  1026.  
  1027.     /software/j/doc/tutorial.js
  1028.     /software/j/doc/tut/tut*.js    # (47 of these, numbered 0 to 46)
  1029.  
  1030. In such a setting, for the file  tutorial.js  to run correctly, it must
  1031. be modified.  In this file, the line
  1032.  
  1033.     frames=.<&read ('tut/tut'&,)&(,&'.js')&:&.>i.47
  1034.  
  1035. may be replaced by
  1036.  
  1037.     Path =. '/software/j/doc/tut'
  1038.     frames=.<&read ((Path,'/tut')&,)&(,&'.js')&:&.>i.47
  1039.  
  1040. Then users may be instructed to do these steps,
  1041.  
  1042.     % cp /software/j/doc/tut/tutorial.js .
  1043.     % j
  1044.  
  1045.           )sscript 'tutorial.js'
  1046.           tutorial ''
  1047.  
  1048. Or users may be instructed to do these steps:
  1049.  
  1050.     % j
  1051.  
  1052.         )sscript '/software/j/doc/tutorial.js'
  1053.         tutorial ''
  1054.  
  1055.  
  1056. - -------------------------------------------------------------------------------
  1057.  
  1058.                           What is J?
  1059.  
  1060.             An introduction
  1061.                 Part 1
  1062.  
  1063.  
  1064.                  by
  1065.  
  1066.             Leroy J. Dickey
  1067.  
  1068.             September, 1991
  1069.  
  1070.  
  1071. J is a high powered general purpose programming language.  This dialect
  1072. of APL uses the ASCII character set, has boxed arrays, complex numbers,
  1073. and phrasal forms.  Any time one wants to do calculations with more
  1074. than one number at a time, or more than one name in a list, a
  1075. collective (an array) is the right structure to use, and J is designed
  1076. to make it easy to do collective calculations.
  1077.  
  1078. People who write programs for themselves and who want their answers
  1079. quickly will be happy with the swift and concise way programs can be
  1080. written in J.
  1081.  
  1082. This article consists of several examples that illustrate some of the
  1083. power of the language J.  In each of the examples presented, output
  1084. >from an interactive J session has been captured, and few lines of
  1085. explanation have been added.  Lines that are indented with four spaces
  1086. are those that were typed in to the J interpreter, and the lines that
  1087. are indented with only one space are the responses from J.  Other text
  1088. lines are comments that have been added later.  The topics that have
  1089. been chosen for inclusion do not come close to telling everything about
  1090. J, but some of them represent subjects that at one time or another the
  1091. author wished that he had known and understood.
  1092.  
  1093. Because my professional interests are mathematical, my examples are
  1094. primarily mathematical in nature.  But J is a general purpose computing
  1095. language, and is well suited to a broad spectrum of programming needs.
  1096.  
  1097.  
  1098. Example 1:  Functional notation
  1099.  
  1100. This example shows how calculations are done with a list of numbers and
  1101. how the notation is functional.  That is, each verb (function) acts on
  1102. the data to its right.   It is easy to create a collective.  Here, for
  1103. instance, are 9 numbers:
  1104.  
  1105.     i. 9
  1106.  0 1 2 3 4 5 6 7 8
  1107.  
  1108.     a =. i. 9
  1109.     a
  1110.  0 1 2 3 4 5 6 7 8
  1111.  
  1112. The factorials of these numbers are:
  1113.     ! a
  1114.  1 1 2 6 24 120 720 5040 40320
  1115.  
  1116. The reciprocals of the above:
  1117.     % ! a
  1118.  1 1 0.5 0.166667 0.0416667 0.00833333 0.00138889 0.000198413 2.48016e_5
  1119.  
  1120. And the sum of reciprocals of the factorials of a is:
  1121.     +/ % ! a
  1122.  2.71828
  1123.  
  1124.  
  1125. Those who know some mathematics may recognize an approximation to the
  1126. number ``e'', the base for the natural logarithms.  Of course J has
  1127. other ways to calculate this number; the point here is the use of the
  1128. natural right to left reading of the meaning of the sequence symbols
  1129. +/%!a as the sum of the reciprocals of the factorials of a.
  1130.  
  1131. Those who have done some programming in almost any other language, will
  1132. see that the expression +/%!i.9 is a remarkably short one to produce
  1133. an approximation to ``e''.  Moreover, it is possible to pronounce this
  1134. program in English in a way that precisely conveys its meaning, and
  1135. those who know the meaning of the words in the sentence will be able to
  1136. understand it.  And anybody who knows the mathematics and J will
  1137. recognize that the program does exactly what the words say and that it
  1138. will produce an approximation to ``e''.
  1139.  
  1140. The author finds this expression in J much easier to think about and
  1141. to understand than a corresponding program in a ``traditional'' language
  1142. intended to compute the same number.  Here, for example, is what one
  1143. might write in Fortran, to accomplish the same result:
  1144.  
  1145.  
  1146.     REAL SUM, FACTRL
  1147.     SUM = 1.0
  1148.     FACTRL = 1.0
  1149.     DO 10 N = 1, 8
  1150.         FACTRL = FACTRL * N
  1151.         SUM = SUM + 1.0 / FACTRL
  1152.      10 CONTINUE
  1153.     PRINT, SUM
  1154.     STOP
  1155.     END
  1156.  
  1157.  
  1158. Compare this Fortran program with the J program that uses only a few
  1159. key strokes: +/ % ! i. 9 .  Not only is the J program shorter, but it
  1160. is easier to understand, even for the person who has just learned the
  1161. meaning of the symbols.  Some have estimated that for typical
  1162. applications, the ratio of the number of lines of Fortran or C code to
  1163. the number of lines of J code is about 20 to 1.
  1164.  
  1165.  
  1166.  
  1167. Example 2:
  1168.  
  1169. In this example, two verbs are defined.  As before, lines indented
  1170. with four spaces were given as input during a J session, and
  1171. the ones immediately after, with one leading space, were produced by
  1172. the J interpreter.  Other lines are comments, and were added later.
  1173.  
  1174.  
  1175.     Sum =. +/
  1176.     Average =. Sum % #
  1177.     c =. 1 2 3 4
  1178.     Average c
  1179.  2.5
  1180.  
  1181. The first two lines create pro-verbs, the third creates a pro-noun,
  1182. and the fourth invokes the function Average with the data c.
  1183. The meaning of   Average c  is this:
  1184.  
  1185.         (+/ % #) 1 2 3 4
  1186.  
  1187. and this may be thought of as:  find Sum c, (add up the entries
  1188. in c), find # c (the count of c), and then find the quotient of those
  1189. two results.
  1190.  
  1191. Example 3:  Continued fractions
  1192.  
  1193. In this example, the verb ``pr'' (plus reciprocal), is considered.
  1194.  
  1195.     pr =. +%
  1196.  
  1197. The next input line shows a use of this hook and you can see that
  1198. the meaning is 5 plus the reciprocal of 4:
  1199.  
  1200.     5 pr 4
  1201.  5.25
  1202.  
  1203.     4 pr 5
  1204.  4.2
  1205.  
  1206. The function pr is defined above as  +% , and this diagram 
  1207. for    4 +% 5  may help you to understand its meaning.
  1208.  
  1209.                      +
  1210.                         /  \
  1211.                        4    %
  1212.                             |
  1213.                             5
  1214.  
  1215. Because of the shape of the diagram, the combination of two verbs
  1216. in this way is called a hook.  To continue with our example,
  1217.  
  1218.     1 pr 1 pr 1            
  1219.  1.5
  1220.  
  1221. The above input line may be read as ``1 plus the reciprocal
  1222. of (1 plus the reciprocal of 1)''.  And here below is an analogous
  1223. line with four ones:
  1224.  
  1225.     1 pr 1 pr 1 pr 1
  1226.  1.66667
  1227.  
  1228.     1 pr (1 pr (1 pr 1))
  1229.  1.66667
  1230.  
  1231.     pr / 1 1 1 1        
  1232.  1.66667
  1233.  
  1234.     pr / 4 # 1
  1235.  1.66667
  1236.  
  1237. The above input line has exactly the same meaning as the three input
  1238. lines that come before it.  Notice that (of course) the value
  1239. of the result is the same.  The / is an adverb called over
  1240. and the result of ``pr /'' is a new verb, whose meaning is
  1241. derived from the verb ``pr''.
  1242.  
  1243. This expression could be written another way, using a traditional
  1244. mathematical notation the way that mathematicians have been using
  1245. to write continued fractions for years:
  1246.  
  1247.         1
  1248.    1 + ------------------------
  1249.         1
  1250.     1 + ------------------
  1251.             1
  1252.         1 + ------------
  1253.             1
  1254.  
  1255. This particular continued fraction is a famous one because it is
  1256. known to converge to the golden ratio.  That means that if you just
  1257. keep on going, with more and more ones, the value gets closer and
  1258. closer to the golden ratio.  One can see the values of the continued
  1259. fraction expansion converging by using \, the scan adverb.  It
  1260. creates a sequence of initial sequences.  Here is a nice, compact
  1261. expression that shows the values for the first 15 partial continued
  1262. fractions.
  1263.  
  1264.     pr /\ 15$ 1
  1265.  1 2 1.5 1.66667 1.6 1.625 1.61538 1.61905 1.61765 1.61818 1.61798
  1266.       1.61806 1.61803 1.61804 1.61803
  1267.  
  1268. In this, you can see that the numbers seem to be getting closer and
  1269. closer to some limit, probably between 1.61803 and 1.61804.  If you
  1270. concentrate only on the odd numbered terms, (the first, the third, the
  1271. fifth, and so on), you will see a sequence of numbers that is
  1272. monotonically increasing.  On the other hand, the even numbered terms,
  1273. ( 2, 1.66667, 1.625, and so on), form a sequence of numbers that is
  1274. monotonicly decreasing.  Of course these observations do not constitute
  1275. a proof of convergence, but they might convince you that a proof can
  1276. be found, and in the light of these observations, the proof probably
  1277. follows along these lines.
  1278.  
  1279. Can you think of a simpler way to represent and evaluate continued
  1280. fractions?  I can not!
  1281.  
  1282.  
  1283. Example 4.  Using rank operator, and fork.
  1284.  
  1285. In this example, a second phrasal form, the fork, is discussed.
  1286. First some data are built.
  1287.  
  1288.     a =. 100 200
  1289.     b =. 10 20 30
  1290.     c =. 1 2 3 4
  1291.  
  1292. This is the beginning of the data construction.  The verb Sum, a
  1293. modification of +, and defined as before, is used.  But in this example,
  1294. the usage is different from that used before.  So that you can have a
  1295. glimpse at what the dyadic verb Sum does, notice see what it does with
  1296. b and c:
  1297.  
  1298.     b Sum c
  1299.  11 12 13 14
  1300.  21 22 23 24
  1301.  31 32 33 34
  1302.  
  1303. Once you have seen this example, you are be ready to see and understand
  1304. the next step.  Here the collective ``data'' is built, using a, b, and c.
  1305.  
  1306.     data =. a Sum b Sum c
  1307.     data
  1308.  111 112 113 114
  1309.  121 122 123 124
  1310.  131 132 133 134
  1311.  
  1312.  211 212 213 214
  1313.  221 222 223 224
  1314.  231 232 233 234
  1315.  
  1316. This rank three array may be thought of as having has two
  1317. planes, with each plane having two rows and three columns.
  1318. Now see what Sum does with the data:
  1319.  
  1320.     Sum data
  1321.  322 324 326 328
  1322.  342 344 346 348
  1323.  362 364 366 368
  1324.  
  1325. Can you see what is happening?  It is adding up corresponding
  1326. elements in the two planes.  Twelve different sums are performed,
  1327. and the result is an array that is 3 by 4.
  1328.  
  1329. But we might wish to add up numbers in rows.  We can do it this way:
  1330.  
  1331.     Sum 1 data
  1332.  450 490 530
  1333.  850 890 930
  1334.  
  1335. And to add up numbers in each column:
  1336.  
  1337.     Sum 2 data
  1338.  363 366 369 372
  1339.  663 666 669 672
  1340.  
  1341. The expressions 1 and 2 are read as 'rank 1' and 'rank 2'.
  1342. The rank 1 objects are the rows, and the rank 2 objects are the
  1343. planes, and the rank 3 object is the whole object itself.
  1344.  
  1345. Now, recall the definition of Average.
  1346.  
  1347.     Average =. Sum % #
  1348.  
  1349. Now apply this proverb Average to the pronoun data, to get:
  1350.  
  1351.     Average data
  1352.  161 162 163 164
  1353.  171 172 173 174
  1354.  181 182 183 184
  1355.  
  1356. The result is the average of corresponding numbers in the two planes.
  1357. And, if we would like to know the average of the numbers in the rows,
  1358. (remember above, we asked about the sum of the entries in the rows?)
  1359. we type:
  1360.  
  1361.     Average 1 data
  1362.  112.5 122.5 132.5
  1363.  212.5 222.5 232.5
  1364.  
  1365. and finally, averaging the columns of the two planes:
  1366.  
  1367.     Average 2 data
  1368.  121 122 123 124
  1369.  221 222 223 224
  1370.  
  1371.  
  1372. Again, compare the sizes of these results with the sizes of
  1373. the sizes of the results above where we were asking simply about
  1374. sums.
  1375.  
  1376.     Sum 1 data
  1377.  450 490 530
  1378.  850 890 930
  1379.  
  1380.     Sum 2 data
  1381.  363 366 369 372
  1382.  663 666 669 672
  1383.  
  1384. What is exciting about this example is not only how easily the nouns
  1385. (data) and verbs (functions) were built, but how every verb acts in a
  1386. uniform and predictable way on the data.  Rank one action is the same
  1387. kind of action whether one is summing, or averaging, or whatever.  It
  1388. has been said that the concept of rank is one of the top ten ideas to
  1389. come along in computing in the last decade.
  1390.  
  1391. Conclusion:
  1392.  
  1393. What has been written in this article only begins to scratch the surface
  1394. of the power of J, but it does show some of the flavor.
  1395. J is powerful because one get results quickly.  It is a programming
  1396. language for people who need to write programs for themselves, but
  1397. who don't want to spend inordinately large amounts of time getting
  1398. their results.  If you have to write programs for others, this could
  1399. still be a language for you, if you get paid by the job, and not
  1400. by time.
  1401.  
  1402. Availability:
  1403.  
  1404. J is available from watserv1.waterloo.edu in the directory
  1405. languages/apl/j and is also available from certain other servers, but
  1406. the others usually have some specific hardware orientation.  At the
  1407. Waterloo site, versions of J are available that run on several kinds of
  1408. computers.
  1409.  
  1410. Learning J:
  1411.  
  1412. Because J is new, there are not many materials about J yet.
  1413. The novice should get a copy of J and let J be the guide and
  1414. the interpreter (pun intended).  There is a tutorial that has
  1415. tons of material in a small space.  This tutorial comes with
  1416. the interpreter, free of charge.  There is also a status.doc
  1417. file that comes with J.  This tell what features have been
  1418. implemented and which have not.
  1419.  
  1420. The author of J:
  1421.  
  1422. The inventor-developer of J is Kenneth E. Iverson, the same man who
  1423. invented APL, a real pioneer of computing.  Some years ago, he retired
  1424. >from IBM and went to work for I.P.Sharp Associates, a Toronto company
  1425. that developed the world's first private packet switching network,
  1426. the finest APL available, and was at one time the worlds largest
  1427. time sharing service, all APL.  The descendant of this company,
  1428. Reuter:file, still has offices in many of the world's major cities.
  1429. Now Iverson is retired (again) and lives in Toronto, where he spends
  1430. his time developing and promoting J.
  1431.  
  1432. The programmer for J is Roger Hui.  Roger hails from Edmonton, and has
  1433. lived in Toronto since he joined I.P.Sharp Associates in 1975.  The
  1434. source code for J, written in C, is worthy of some comment, because it
  1435. makes extensive use of macro expansion.  Its style, influenced by the
  1436. work of Arthur Whitney of Morgan Stanley in New York, reflects Roger's
  1437. strong background in APL.  Today, Roger spends much of his time
  1438. developing J and does occasional contract work in APL.
  1439.  
  1440. Copyright (c) 1991 by Leroy J. Dickey
  1441. Permission is granted to use this for
  1442. non-profit and educational purposes.
  1443. It may be given away, but it may not be sold.
  1444. ") 
  1445.  
  1446. ("jove.cs.caltech.edu" "brannon" "" "?" "?" "") 
  1447. ("moxie.oswego.edu" "anonymous" "no.pass.req" "Ethnic TeX/Latin Font/Cyrillic Font/X-Windows Fonts" "KOI-7/8 fonts" "cd to COUP/TL/xkoi-8.7.tar")
  1448. ("usc.edu" "anonymous" "anonymous" "Pattern Processing" "Teco" "teco is in pub/teco") 
  1449. ("csvax.cs.caltech.edu" "brannon" "" "C Declaration Parser/Pascal2C/Emacs Calculator" "PascaltoC/C Declaration Parser/GnuCalc" "dave gillespies calc adds floating point ops to elisp!") 
  1450.  
  1451. ("unix.sri.com" "anonymous" "anonymous" "Artificial Intelligence" "Artificial Intelligence Lisp Code" "pub/norvig") 
  1452.  
  1453. ("alw.nih.gov" "anonymous" "anonymous" "Graphics" "NIH Image 1.19" "") 
  1454. ("alf.uib.no" "anonymous" "china.primitive@siva" ?" "?" "") 
  1455.  
  1456. ("monu6.cc.monash.edu.au" "anonymous" "anonymous" "Japanese Tutorial" "Kanji Guess" "in /pub/Nihongo on monu6.cc.monash.edu.au. KG is a Japanese
  1457. language learning aid, with lots of user-modifiable quizzes, flashcards.
  1458. etc. and hiragana/katakana gojuuonjun quizzes. It runs well on XT->486
  1459. using Herc and VGA (I haven't tried EGA, and CGA has problems). It is
  1460. best with a mouse, but works without.
  1461.  
  1462. I was one of KG's beta testers, and I found it excellent, and a lot of fun too.
  1463. KG is Shareware. Please register and pay if you use it.
  1464.  
  1465. Also on monu6 is V1.5 of JDIC (Japanese/English Dictionary Display). This is
  1466. an upgrade of the V1.4 which has been around for a few months, and was recently
  1467. distributed via comp.binaries.ibm.pc.
  1468. ")
  1469.  
  1470. ("giza.cis.ohio-state.edu" "anonymous" "meishaboy@kick.it" "?" "?" "duplicates most of the stuff on export.lcs.mit.edu") 
  1471. ("archive.cis.ohio-state.edu" "anonymous" "china.primitive@siva" "Gnu/Perl" "dvi3ps/Gnu/Perl" "Major Gnu Archive ... dvi3ps is in pub") 
  1472.  
  1473. ("cs.orst.edu" "anonymous" "china.primitive@divineland" "?" "?" "") 
  1474. ("nova.cc.purdue.edu" "anonymous" "china.primitive@divineland" "NeXT" "?" "") 
  1475. ("rsovax.circe.fr" "musictex" "tb06@pl118f.cc.lehigh.edu" "?" "?" "M U S T login as musictex and give your name as pw.. has MusicTeX") 
  1476. ("mims-iris.waterloo.edu" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Raster Fonts/MetaFonts" "Metafonts" "probably has all the HP fonts in the world") 
  1477.  
  1478. ("ctrsci.math.utah.edu" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Raster Fonts/MetaFonts" "Metafonts" "Raster fonts for Metafont use") 
  1479. ("science.utah.edu" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Raster Fonts/MetaFonts" "Metafonts" "Raster fonts for Metafont use") 
  1480. ("cc.utah.edu" "anonymous" "mm.mm..m" "Gnu" "VMS Gnu Emacs" "Major Gnu Archive")
  1481. ("cs.utah.edu" "anonymous" "mm.mm..m" "Graphics/Ray Tracing/Non-Rational B-Spline Software" "Utah Raster Toolkit/NURBS (Non-Uniform Ratl B-Splines)" "")
  1482.  
  1483.  
  1484. ("ee.ecn.purdue.edu" "anonymous" "anonymous" "Webster" "Access Webster" "")
  1485. ("foobar.colorado.edu" "anonymous" "anonymous" "X-Windows/TeX" "BDF Fonts/XTeX" "view dvi file within X-Windows")
  1486. ("princeton.edu" "anonymous" "china.primitive@divineland" "Graphics/TeX to Document C Code (Spiderweb)/Music/Tex" "CWEB/WEB/Rayshade 3.0/Rayshade 4.0/Spiderweb" "has next wares AND is primary src for greek fonts for TeX. spiderweb is used to document c code within latex") 
  1487. ("isatis.ensmp.fr" "anonymous" "china.primitive@divineland" "Parallel Computing" "Ease" "source code for parallel language ease is here") 
  1488. ("titania.mathematik.uni-ulm.de" "anonymous" "china.primitive@divineland" "Parallel Computing" "Database of Parallel Info" "source code for parallel language ease is here") 
  1489. ("chem.bu.edu" "anonymous" "china.primitive@divineland" "?" "?" "") 
  1490. ("ftp.cs.titech.ac.jp" "anonymous" "china.primitive@divineland" "Japanese" "Nihongo Emacs" "") 
  1491. ("freja.diku.dk" "anonymous" "china.primitive@divineland" "Sun RPC/NN/xypic" "Sun RPC/NN/xypic" "Denmark") 
  1492. ("iesd.auc.dk" "anonymous" "china.primitive@divineland" "Statistics/Contingency Tables/EM Algorithm/TeX" "Statistics/Contingency Tables/EM Algorithm/AUC-TeX" "Comprehensive Environment for writing latex files") 
  1493. ("hercules.csl.sri.com" "anonymous" "anonymous" "TeX" "LaTeX figures" "")
  1494. ("herky.cs.uiowa.edu" "anonymous" "anonymous" "Mathematics" "Theorem Prover" "")
  1495. ("xpssun.gmd.de" "anonymous" "china.primitive@divineland" "Knowledge Representation" "Mobal" "Mobal1.0 requires a Sun4, Openwindows2.0, from Sun and
  1496. HyperNeWS1.4 from Turing Institute, Glasgow 
  1497. Contact newsdev@turing.ac.uk for information on how to get HyperNeWS.
  1498.  
  1499. Mobal is a sophisticated system for developing operational models of
  1500. application domains. It integrates a manual knowledge acquisition and 
  1501. inspection environment, a powerful inference engine, machine learning 
  1502. methods for automated knowledge acquisition, and a knowledge revision tool.
  1503.  
  1504. By using Mobal's knowledge acquisition environment, you can
  1505. incrementally develop a model of your domain in terms of logical facts
  1506. and rules.  You can inspect the knowledge you have entered in text or
  1507. graphics windows, augment the knowledge, or change it at any time.
  1508. The built-in inference engine can immediately execute the rules you
  1509. have entered to show you the consequences of your inputs, or answer
  1510. queries about the current knowledge.  Mobal also builds a dynamic sort
  1511. taxonomy from your inputs.  If you wish, you can use machine learning 
  1512. methods to automatically discover additional rules based on the facts
  1513. that you have entered, or to form new concepts.  If there are
  1514. contradictions in the knowledge base due to incorrect rules or facts,
  1515. there is a knowledge revision tool to help you locate the problem and fix
  1516. it.
  1517. ") 
  1518. ("funic.funet.fi" "anonymous" "china.primitive@divineland" "X-Windows" "MandelSpawn" "in pub/X11/contrib/ms-0.05.tar.Z") 
  1519. ("sunic.sunet.se" "anonymous" "china.primitive@divineland" "?" "?" "") 
  1520. ("wuarchive.wustl.edu" 
  1521. "anonymous" 
  1522. "china.primitive@divineland" 
  1523. "Tex/Graphics/Gifs/Ray Tracing/Radiosity" 
  1524. "Astronomical Observatory FITS Viewer/Ray Tracing Bibliography/Radiosity Bibliography/Salem/CellSim/Graphics Gems/Quickdraw/Popi/Ray Tracing News/ColorQuant/DKBTracer/PVRay/DRT/Ohtas Ray Tracer/QRT/RayScene/VORT Ray Tracer/VM-pRAY/Polygon Processor/Sphigs/SRGP/Wave/Sphere/TeXhax digest" "major TeX archive. has TeXhax digest") 
  1525.  
  1526. ("tutserver.tut.ac.jp" "anonymous" "brannon@jove.cs.caltech.edu" "Elisp" "Elisp" "") 
  1527. ("ftp.ics.osaka-u.ac.jp" "anonymous" "japan.primitive@kiroshi" "X-Windows/Tex" "ChTex/ArabTeX/Image" "huge directory of styles. including one for the thesis.") 
  1528. ("itstd.sri.com" "anonymous" "china.primitive@divineland" "?" "?" "") 
  1529. ("nic.nyser.net" "anonymous" "china.primitive@divineland" "Gnu" "Gnu" "Major Gnu Archive") 
  1530. ("jaguar.utah.edu" "anonymous" "ssss.s" "Gnu" "Gnu" "Major Gnu Archive")
  1531.  
  1532. ("ftp.Hawaii.edu" "anonymous" "rickrubin@defjam.rec" "Natural Language Processing" "Text to Phoneme Program" "/pub/linguist/phone.tar.Z")
  1533.  
  1534. ("nl.cs.cmu.edu" "anonymous" "rickrubin@defjam.rec" "Graphics/Ray Tracing" "Utah Raster Toolkit" "")
  1535. ("spade.pc.cs.cmu.edu" "anonymous" "rickrubin@defjam.rec" "Natural Language Processing" "English Parser" "/usr/sleator/public")
  1536. ("ajpo.sei.cmu.edu" "anonymous" "anonymous" "ADA" "ADA" "All the ADAD you could ask for")
  1537. ("mcsun.eu.net" "anonymous" "yoyo.yoyo" "Gnu" "Gnu" "Major Gnu Archive")
  1538.  
  1539. ("mango.miami.edu" "anonymous" "haha.ahah" "Gnu" "VMS G++" "Major Gnu Archive")
  1540. ("louie.udel.edu" "anonymous" "china.primitive@divineland" "?" "?" "")
  1541.  
  1542.  
  1543. ("rdss.ucar.edu" "anonymous" "china.primitive@divineland" "?" "?" "try this out to update its record") 
  1544.  
  1545.  
  1546. ("ahkcus.org" "anonymous" "china.primitive@divineland" "Chinese News/Chinese Word Processors" "Big5->GB/Readnews" "contains a lot of Chinese word processors both for PC's and other")
  1547. ("cs.ualberta.ca" "anonymous" "china.primitive@divineland" "Chinese Chess" "Chinese Chess" "")
  1548. ("134.114.64.24" "anonymous" "china.primitive@divineland" "Genealogy" "Genealogy" "")
  1549.  
  1550.  
  1551.  
  1552. ("mindseye.berkeley.edu" "anonymous" "china.primitive@divineland" "Japanese Terminal Emulator" "Japanese Terminal Emulator" "For the PC, you should use a terminal emulator hterm written by
  1553. Hirano-san at Tokyo U if your PC has VGA or EGA.  If your display
  1554. adapter is Hercules or CGA (!), then you have to settle with my
  1555. KD (kanji driver) + MS-Kermit.  Both of these are free and can
  1556. be obtained by anonymous FTP from mindseye.berkeley.edu
  1557. [128.32.232.19].  Both supports full JIS-level 2 Japanese
  1558. character set (6000+ characters).
  1559.  
  1560. If you use regular 'rn' be sure to use a command w | more -f
  1561. at the first pause after news header for an article is displayed.
  1562.  
  1563. - --
  1564. Izumi Ohzawa             [ $BBg_78^=;(B ]
  1565. USMail: University of California, 360 Minor Hall, Berkeley, CA 94720
  1566. Telephone: (510) 642-6440     Fax:  (510) 642-3323
  1567. Internet: izumi@pinoko.berkeley.edu (NeXT Mail OK)
  1568. ") 
  1569. ("peoplesparc.berkeley.edu" "anonymous" "china.primitive@divineland" "LISP/Mathematics" "Lisp Mathematica (mma)" "mathematica-like system written in Allegro common lisp") 
  1570. ("scam.berkeley.edu" "anonymous" "china.primitive@divineland" "?" "?" "") 
  1571. ("math.berkeley.edu" "anonymous" "booty.jones@funkyfunk" "TeX" "ChTex/ArabTeX/Image" "contains the addendum to the TeX FAQ in pub/raymond") 
  1572. ("sprite.berkeley.edu" "anonymous" "booty.jones@funkyfunk" "Programming Languages" "TCL" "Paper in USENIX 89") 
  1573.  
  1574. ("rusinfo.rus.uni-stuttgart.de" "anonymous" "anonymous" "TeX" "Babel" "
  1575.    Is it possible to build an lplain.fmt with to different hyphen-files? I
  1576.    get the impression that TeX 3.x supports some sort of a multilingual
  1577.    scheme, providing a way to easily swith between languages in the same
  1578.    document.
  1579.  
  1580. You should look at the Babel system, by Johannes Braams, obtainable by
  1581. mail from listserv@hearn.bitnet, listserv@dhdurz1.bitnet,
  1582. mail-server@rusinfo.rus.uni-stuttgart.de, or by anonymous ftp from
  1583. rusinfo.rus.uni-stuttgart.de [129.69.1.12].
  1584. ")
  1585.  
  1586. ("simtel20.army.mil" "anonymous" "blessedallah@mecca" "Mathematics" "SymbMath" "        SymbMath 1.4: A Symbolic Calculator with Learning
  1587.  
  1588.             by Dr. Weiguang HUANG
  1589.     5/6 Cara Road, Geelong, Vic. 3216, Australia
  1590.  
  1591.     SymbMath, (an abbreviation for Symbolic Mathematics), is not
  1592. only a symbolic calculator but also an expert system that can solve 
  1593. symbolically mathematical problems. SymbMath performs symbolic formula, 
  1594. as well as exact numeric computation. It can manipulate complicated 
  1595. formulas and return answers in terms of symbols, formulas and exact 
  1596. numbers, not just floating-point numbers. Symbolic mathematics is also 
  1597. called Computer Algebra, Symbolic Manipulation, Algebraic Manipulation, 
  1598. Symbolic Computation, or Algebraic Computation. 
  1599.     There are a number of software packages for symbolic 
  1600. computation, e.g. MACSYMA, Reduce, MAPLE, Mathematica, MicroCalc, etc. 
  1601. However, most of them require large memory, e.g. Mathematica requires 
  1602. at least 4 MBytes of RAM. MicroCalc is available for small IBM PC. 
  1603. MicroCalc provides graphical or numerical answers, and recognizes 
  1604. special symbols as constants and variables, but outputs formula only 
  1605. for derivatives.
  1606.     SymbMath is different from most of other software. (1) It 
  1607. only require 640 KBytes RAM, so it can run on small IBM PC under 
  1608. MS-DOS. (2) It is able to learn from human as machine learning. If 
  1609. users only show it one thing (e.g. one integral) without writing any 
  1610. line of program, it will learn many relative knowledges (e.g. many 
  1611. integrals) although it has no these predefined knowledges before. (3) 
  1612. Users easily edit the library (e.g. integral tables) in the formula 
  1613. format. (4) It can do something that other software cannot do.
  1614.     Its capabilities include facilities to provide analytical and 
  1615. numerical answers for:
  1616.     1. Differentiation: derivatives, higher order derivatives, 
  1617. partial derivatives, mixed derivatives, total derivatives, implicit
  1618. differentiation.
  1619.     2. Integration: indefinite integration, definite integration, 
  1620. multiple integration, infinite integration, parametric integration, 
  1621. iterated integration, line integration, surface integration, 
  1622. discontinuous integration, implicit integration.
  1623.     3. Solution of equations: polynomial equations, algebraic 
  1624. equations, systems of equations, differential and integral equations.
  1625.     4. Manipulation of expressions: simplification, factorisation, 
  1626. expansion, substitution, evaluation, user-defined functions, built-in 
  1627. standard functions (including the error function).
  1628.     5. Calculation: exact and floating-point numerical computation 
  1629. of integer, rational, real and complex numbers in the range from 
  1630. - -infinity to infinity, even with different units.
  1631.     6. Limits: real limits, complex limits, one-sided limits, 
  1632. including the indeterminate forms, (e.g. 0/0, infinity/infinity, etc.).
  1633.     7. Chemical calculation: the molecular weights, atomic weights, 
  1634. and concentrations, by entering the symbols of the chemical elements.
  1635.     8. Chemical reactions: inorganic and organic chemical reactions.
  1636.     9. Others such as extrema, Taylor series, lists, arrays, vectors,
  1637. matrices, sum, product, etc.
  1638.     Its features also include:
  1639.     1. Programming as an interpreter.
  1640.     2. Interface with other software (e.g. with PlotData for graph).
  1641.         3. Outputting two-dimentional displays, and the BASIC format.
  1642.     4. On-line help, on-line manual.
  1643.     5. Syntax check and the line editor for input.
  1644.     Shareware version of SymbMath, SM14A.ZIP, is available from 
  1645. the Calculator directory in SIMTEL20 on anonymous FTP sites.
  1646. ") 
  1647.  
  1648. ("ymir.claremont.edu" "anonymous" "booty.boot@funkdungeon" "Tex/Raster Fonts/MetaFonts" "dvips/dvitops/Web/Cweb/Spiderweb/MusicTeX" "2nd largest tex archive in the WORLD. Aggresively tracks down packages") 
  1649. ("hmcvax.claremont.edu" "anonymous" "booty.boot@funkdungeon" "Ethnic TeX" "Cyrillic Fonts" "")
  1650. ("archive.cs.ruu.nl" "anonymous" "pumpdatjam@bussit.edu" "Perl" "Perl Reference Guide" "Utrecht Univ, the Netherlands") 
  1651. ("helios.cc.gatech.edu" "anonymous" "china.primitive@divineland" "Distributed Computing" "ChTex/ArabTeX/Image" "this is where a distributed lisp program is supposedly located") 
  1652. ("schizo.samsun.com" "anonymous" "thatsmy@kinda.site" "X-Windows/Tex" "ChTex/ArabTeX/Image" "comp.sources.x") 
  1653. ("wuarchive.wustl.edu" "anonymous" "toomuch@for.more.mortals" "X-Windows/Tex/Gifs" "ChTex" "[128.252.135.4] ... mirror wmsr-simtel20.army.mil") 
  1654. ("yallara.cs.rmit.oz.au" "anonymous" "sowhassup@do.sumpin.den" "TeX" "Image" "[131.170.24.42] ... mirrors labrea for those down under") 
  1655. ("godzilla.cgl.rmit.oz.au" "anonymous" "anonymous" "Cscheme" "Cscheme 6.2" "includes a GL interface")
  1656. ("niord.shsu.edu" "anonymous" "gohead@witchy.bad.sef" "Tex" "ChTex/ArabTeX/Image" "run by george greenwade, a man on the up and up") 
  1657. ("research.att.com" "anonymous" "oooochile@is.you.crazy" "X-Windows/Tex" "ChTex/ArabTeX/Image" "TeX, gcc, ghostscript, f2c") 
  1658.  
  1659. ("laas.laas.fr" "anonymous" "anonymous" "X-Windows/Emacs Hacks" "ISO Latin-1 Emacs Mode" "input the ISO Latin-1 character set in a convenient way")
  1660. ("convex.com" "anonymous" "anonymous" "Perl" "Perl" "")
  1661.  
  1662. ("peace.waikato.ac.nz" "anonymous" "hehheh@that.aint.funny.fool" "X-Windows/Tex" "ChTex/ArabTeX/Image" "x11r4") 
  1663. ("maddog.llnl.gov" "anonymous" "attaboy@i.feel.good.yah.yah" "X-Windows/Tex" "ChTex/ArabTeX/Image" "AWM X Tutorial, PCP") 
  1664. ("lll-crg.llnl.gov" "anonymous" "bboys@the.funk.shack.sack" "X-Windows/Tex" "ChTex/ArabTeX/Image" "X11R4") 
  1665.  
  1666. ("iraun1.ira.uka.de" "anonymous" "sowhat@in.sig.ni" "X-Windows/Tex" "ChTex/ArabTeX/Image" "GNU X11 comp.sources.unix") 
  1667. ("qusuna.qucis.queensu.ca" "anonymous" "superkid@mo.jo.land" "Language Prototyping" "ChTex/ArabTeX/Image" "Release 5.3 of TXL, a rapid prototyping system for programming languages
  1668.        and program transformations, is now available via anonymous ftp from
  1669.        qusuna.qucis.queensu.ca (130.15.1.100) in the directory 'txl'.  Release
  1670.        5.3 fixes a number of bugs in release 5.2, in particular a bug
  1671.        in patterns targeted at left-recursive productions, and adds
  1672.        support for arbitrary comment conventions, in particular for C
  1673.        and C++ commenting and the %operators.
  1674. TXL 5.3 is distributed in portable ANSI C source form only, and you must
  1675. compile it for your particular Unix system.  It has been tested on all of
  1676. the VAX, Sun/3, Sun/4, NeXT, and DECstation MIPS, and meets 'gcc -ansi
  1677. - -pedantic' so should compile on almost anything.
  1678. Full information on the details of fetching TXL can be obtained by
  1679. fetching the 00README file, like so:
  1680.  
  1681.     myunix% ftp 130.15.1.100
  1682.     Connected to 130.15.1.100.
  1683.     220 qusuna FTP server (Version 5.56 Thu Apr 18 13:08:27 EDT 1991) ready.
  1684.     Name (130.15.1.100:cordy): anonymous
  1685.     331 Guest login ok, send ident as password.
  1686.     Password: cordy@myunix
  1687.     230 Guest login ok, access restrictions apply.
  1688.     ftp> cd txl
  1689.     250 CWD command successful.
  1690.     ftp> get 00README
  1691.     200 PORT command successful.
  1692.     150 Opening ASCII mode data connection for 00README (1688 bytes).
  1693.     226 Transfer complete.
  1694.     local: 00README remote: 00README
  1695.     1731 bytes received in 0.04 seconds (42 Kbytes/s)
  1696.     ftp> quit
  1697.     221 Goodbye.
  1698.     myunix% 
  1699.  
  1700. I will attempt to service any email requests from those who do not have
  1701. FTP access as well, but such requests will be serviced very slowly over
  1702. the next couple of months and I don't have time to try to fix any email
  1703. addresses that don't work from my site directly as sent to me.
  1704.  
  1705. For those of you who have forgotten what TXL is good for, I have
  1706. reproduced the TXL 5.3 ABSTRACT file below.
  1707.  
  1708. Jim Cordy
  1709. - ---
  1710. Prof. James R. Cordy                cordy@qucis.queensu.ca
  1711. Dept. of Computing and Information Science    James.R.Cordy@QueensU.CA
  1712. Queen's University at Kingston            cordy@qucis.bitnet
  1713. Kingston, Canada K7L 3N6            utcsri!qucis!cordy
  1714.  
  1715.  
  1716. - ----- TXL ABSTRACT -----
  1717.  
  1718. Subject: TXL 5.3, a Rapid Prototyping Tool for Computer Languages
  1719.  
  1720. Release 5.3 of TXL: Tree Transformation Language is now available via
  1721. anonymous FTP from qusuna.qucis.queensu.ca (130.15.1.100).
  1722.  
  1723. TXL 5.3, (c) 1988-1991 Queen's University at Kingston
  1724. - -----------------------------------------------------
  1725. Here's the language prototyping tool you've been waiting for!  TXL is a
  1726. generalized source-to-source translation system suitable for rapidly
  1727. prototyping computer languages and langauge processors of any kind.  It
  1728. has been used to prototype several new programming languages as well as
  1729. specification languages, command languages, and more traditional program
  1730. transformation tasks such as constant folding, type inference and source
  1731. optimization.  
  1732.  
  1733. TXL is NOT a compiler technology tool, rather it is a tool for use by
  1734. average programmers in quickly prototyping languages and linguistic tasks.
  1735. TXL takes as input an arbitrary context-free grammar in extended BNF-like
  1736. notation, and a set of show-by-example transformation rules to be applied
  1737. to inputs parsed using the grammar.  TXL will automatically parse inputs
  1738. in the language described by the grammar, no matter if ambiguous or
  1739. recursive, and then successively apply the transformation rules to the
  1740. parsed input until they fail, producing as output a formatted transformed
  1741. source.  
  1742.  
  1743. TXL is particularly well suited to the rapid prototyping of parsers (e.g.,
  1744. producing a Modula 2 parser took only the half hour to type in the Modula
  1745. 2 reference grammar directly from the back of Wirth's book), pretty
  1746. printers (e.g., a Modula 2 paragrapher took another ten minutes to insert
  1747. output formatting clues in the grammar), and custom or experimental
  1748. dialects of existing programming languages (e.g., Objective Turing was
  1749. prototyped by transforming to pure Turing and using the standard Turing
  1750. compiler to compile the result).
  1751.  
  1752. TXL 5.3 comes with fully portable ANSI C source automatically translated
  1753. >from the Turing Plus original, self-instruction scripts and a pile of
  1754. examples of its use in various applications.  
  1755. - -- 
  1756. Send compilers articles to compilers@iecc.cambridge.ma.us or
  1757. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.") 
  1758. ("ftp.cs.umb.edu" "anonymous" "fontanem@afadfalkj" "X-Windows/Tex" "ChTex/ArabTeX/Image" "Karl Berry's font naming scheme v1.0 192.12.26.23 
  1759.        /tex/fontname/fontname.texi") 
  1760.  
  1761. ("hpserv1.uit.no" "anonymous" "yobustdis@homeboys.is.we.be" "Ray Tracing/Gifs" "Rayshade 3.0" "EXCELLENT SITE... tons of Gifs. up-to-date, huge, ls-lR.Z files in ~...HP stuff, X11, unix, etc")
  1762. ("hydra.helsinki.fi" "anonymous" "slinkytoy@try.that.sucka" "X-Windows/Sun/Unix" "comp.sources.misc/comp.sources.sun/comp.sources.unix" "misc, TeX, X") 
  1763. ("ics.uci.edu" "anonymous" "anonymous" "hashing" "Perfect Hash Gen" "")
  1764. ("hemuli.tik.vtt.fi" "anonymous" "powerfulpexster@thelemic.magick" "X-Windows/Tex" "ChTex/ArabTeX/Image" "WorldMap X bind 4.8 finger (thats what the list said)") 
  1765. ("extro.ucc.su.oz.au" "anonymous" "yeo@men.irish.iud" "X-Windows/Tex" "ChTex/ArabTeX/Image" "images, gnu, icon, kermit, and so forth, ghostscript patches") 
  1766. ("cs.toronto.edu" "anonymous" "nothing@void.edu" "X-Windows/Tex" "ChTex/ArabTeX/Image" "X applications here") 
  1767. ("titan.rice.edu" "anonymous" "ohman@dont.get.hungup" "X-Windows/Tex" "ChTex/ArabTeX/Image" "ascii2german.sh by dorai@egeria.rice.edu in /public 
  1768.  ascii2german converts " ae " " oe " " ue " and " ss " to the appropriate German
  1769. characters.  Not infallible due to ambiguities like Masse and
  1770. Ma{ss}e. another program of use is diac.sh") 
  1771. ("e-math.ams.com" "anonymous" "whatwasthat@crazy.squeaking.sound" "AMSTeX" "AMSTeX" "AMSFonts, AMS-LaTeX, AMSTeX  NOTE: The AMS doesn't alert other 
  1772.        archive sites when there are changes to the contents 
  1773.        of e-math.ams.com.  Consequently, other sites may be slightly behind.
  1774.        Administrative contact for E-MATH:  tech-support@math.ams.com.") 
  1775. ("ftp.cs.umb.edu" "anonymous" "here@we.are.com" "X-Windows/Tex" "ChTex/ArabTeX/Image" "per karl berry's article in TUGboat .. also said 'adobe font names'") 
  1776. ("ftp.cs.toronto.edu" "anonymous" "brazil@s.amer.edu" "X-Windows/Tex" "AIList/Sun-Spots" "[128.100.1.105] ... Mirrors the clarkson style archives for 
  1777.        Canadian users contains pub/TeX/tex-styles") 
  1778. ("cs.ubc.ca" "anonymous" "anonymous" "Mailing Lists/Graphics/TeX" "MuTeX/Raster Files/Huge Maling List Index (list-of-lists)" "")
  1779. ("cse.ogc.edu" "anonymous" "anonymous" "Neuro-Evolution/Speech Recognition" "Neuro-Evolution/Speech Recognition" "")
  1780. ("sun.soe.clarkson.edu" "anonymous" "shamba@gupta.edu" "X-Windows/Tex" "ChTex/ArabTeX/Image" "v2.1, pub/transfig/fig.tar.Z     Fig is a graphics editor under
  1781. xo       SunView.  Its output can be translated via TransFig [qv] into
  1782.        Postscript, pic, LaTeX picture envirnoment, PiCTeX, EEPIC, TeXtyl etc.") 
  1783. ("svax.cs.cornell.edu" "anonymous" "yeahboy@bussit.edu" "X-Windows/Tex" "ChTex/ArabTeX/Image" "contains fig under pub/fig. this allows graphic editing which
  1784.        can be put in latex by transfig which is also here. and 
  1785.        sun.soe.clarkson.edu") 
  1786. ("rugrcx.rug.nl" "anonymous" "malawamaoi@aboriginalaustralia" "Tex" "ChTex/ArabTeX/Image" "devanagari font from TeX. pub dir") 
  1787. ("130.88.200.7" "anonymous" "idosay@old.chap.in.the.lorry" "X-Windows/Tex" "ChTex/ArabTeX/Image" "United Kingdom Chum...X11R5 dist, udda stuph") 
  1788. ("crl.dec.com" "anonymous" "anony@mous.edu" "X-Windows/Tex" "ChTex/ArabTeX/Image" "X11R4") 
  1789. ("a.cs.uiuc.edu" "anonymous" "letsgetdemwares@leech.line" "TeX" "TeX" "TeX related stuph")
  1790. ("emr.cs.uiuc.edu" "anonymous" "china.primitive@divineland" "Elisp/Tex" "Calendar.el/Diary.el/tree.sty" "tree.sty and home site for Ed Reingold's calendar") 
  1791. ("st.cs.uiuc.edu" "anonymous" "china.primitive@divineland" "Smalltalk Archive" "Smalltalk Archive" "      1) send email to archive-server@st.cs.uiuc.edu
  1792.         with a message like:
  1793.     
  1794.          path  yourname@your.internet.address
  1795.          help
  1796. ") 
  1797. ("vmd.cso.uiuc.edu" "MARK" "" "Quran" "Quran" "The login is 'MARK'
  1798. the password is 'IPFS'
  1799. The type 'ACCT QUOTE IRAN' for read password.
  1800.  
  1801. Quran.txt is the text file
  1802. desquran.zip is the PC program (includes the compressed version of the text).
  1803.  
  1804. I am also working on the Arabic version of the program.  I have the text
  1805. and I can use it with my word processor.  However, the text has no valves
  1806. (i'raab).
  1807.  
  1808. I hope you find this Info useful.
  1809.  
  1810. Ala U_c
  1811.  
  1812. p.s. The translation is by H.M. Shakir.
  1813. ")
  1814. ("128.148.31.66" "anonymous" "tb06@pl118f.cc.lehigh.edu" "X-Windows" "SPHIGS/SRGP" "sphigs and srgp are in pub... for an alternative to xlib") 
  1815. ("wilma.cs.brown.edu" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Hypertext" "Hyperbole" "") 
  1816.  
  1817. ("128.252.135.4" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Recipes" "Recipes" "") 
  1818. ("sulaw.law.su.oz.au" "anonymous" "tb06@pl118f.cc.lehigh.edu" "Recipes" "Recipes" "") 
  1819.  
  1820.  
  1821. ("slopoke.mlb.semi.harris.com" "anonymous" "hello@my.pretties" "Magick/Gifs" "ChTex/ArabTeX/Image" "Aleister Crowley GIF's and other magickal items") 
  1822. ("ncube10.csee" "asaha" "" "Parallel Machine" "ChTex/ArabTeX/Image" "parallel machine")
  1823. ("lynx.cs.orst.edu" "anonymous" "nopssreq" "Parallel Computing" "Parallax" "Parts of the book intro to parallel computing by lewis and el-rewini <prentice-hall, publishers> are available on the server. also the parallel software is available")
  1824.  
  1825. ("archie.mcgill.ca" "anonymous" "anon" "FTP Database" "Xarchive Standalone" "has an x version non-x version and a perl version. all in the directory archive/clients")
  1826.  
  1827. ("mcnc.mcnc.org" "anonymous" "nopssreq" "Parallel Computing" "SIMD Simulator" "/pub/blitzen ... email to brain@adm.csc.ncsu.edu")
  1828. ("info.mcs.anl.gov" "anonymous" "nopssreq" "Parallel Computing" "PCN Parallel Language" "/pub/pcn")
  1829. ("sh.cs.net" "anonymous" "nopssreq" "Gnu" "Gnu" "Major Gnu Archive")
  1830. ("ftp.reed.edu" "anonymous" "nopssreq" "ftp" "ange-ftp mail archive" "")
  1831. ("karazm.math.uh.edu" "anonymous" "attababe@charlies.fave.edu" "Parallel Language" "Parallel C/Parallel Fortran" "pub/Parallel/Tools/pc.1.1.1.tar.Z
  1832. C parallel  fortran is also being developed at Univ. of Houston. Contact
  1833. scott@uh.edu for information regarding pf.
  1834. J. Eric Townsend - jet@uh.edu - UH Dept of Mathematics
  1835. vox: (713) 749-2126  '91 CB750, DoD# 0378, TMRA# 27834")))
  1836.  
  1837.                     ; major code
  1838.                     ; segment:
  1839.                     ;
  1840.                     ; General-Functions
  1841.  
  1842. ; ; these functions are called throughout the code by other
  1843. ; ; functions. I am extremely grateful for the code from
  1844. ; ; tim mcdaniel which was immensely useful in this part of
  1845. ; ; the program
  1846.  
  1847. (defun get-record (index list)
  1848.   (if (position-exceeds-list-length index list)
  1849.       ()
  1850.   (nth index list)))
  1851.  
  1852. (defun get-field (index list)
  1853.   (if (position-exceeds-list-length index list)
  1854.       ()
  1855.   (nth index list)))
  1856.  
  1857. (defun return-up-to (char string)
  1858.  "return all chars up to but not including CHAR in STRING"
  1859.  (get-buffer-create "*hack-buffer*")
  1860.  (set-buffer "*hack-buffer*")
  1861.  (erase-buffer) 
  1862.  (goto-char (point-min))
  1863.  (insert string)
  1864.  (goto-char (point-min))
  1865.  (if (re-search-forward (concat ".?" char) (point-max) t)
  1866.      (progn
  1867.        (setq separator-in-string t)
  1868.        (buffer-substring (point-min) (1- (point))))
  1869.    (progn
  1870.      (setq separator-in-string nil)
  1871.      string)))
  1872.  
  1873. (defun search-for-substring (substring string)
  1874.  "search for SUBSTRING in STRING"
  1875.  (setq tmpctr 0) 
  1876.  (get-buffer-create "*hack-buffer*")
  1877.  (set-buffer "*hack-buffer*")
  1878.  (erase-buffer) (goto-char (point-min))
  1879.  
  1880. (insert string) (goto-char (point-min))
  1881.  (word-search-forward substring (point-max) t))
  1882.  
  1883. (defun create-alist-from (index list)
  1884.   (setq tmpctr 0) (setq tmplist '())
  1885.   (while (< tmpctr (length list))
  1886.     (setq tmplist (cons
  1887.            (list (get-field index (get-record tmpctr list)) 
  1888.            "dummy") tmplist))
  1889.     (setq tmpctr (1+ tmpctr))))
  1890.  
  1891. (defun delq-equal (element lst)
  1892.   "deletes by side effect all occurrences of element as a member of list.
  1893. the modified list is returned.  if element is not in list, list is
  1894. returned unchanged.  'equal' is the equality tester.  if the first
  1895. member of list is 'equal' to element, there is no way to remove it by
  1896. side effect; therefore, write
  1897.    (setq foo (del-equal element foo))
  1898. to be sure of changing foo.
  1899.  
  1900. c.f. the builtin function 'delq', which uses 'eq' and deletes all occurrences.
  1901. c.f. the function 'delq-first-equal', which uses 'equal' and deletes
  1902.      only the first occurrence."
  1903.  
  1904.   (condition-case err
  1905.       (progn
  1906.         (let
  1907.             (
  1908.              (scan (cdr lst))
  1909.              (prevscan lst)
  1910.             )
  1911.           (while scan
  1912.             (if (equal element (car scan))
  1913.                 (setcdr prevscan (cdr scan))
  1914.               (setq prevscan scan)
  1915.             ) ; if
  1916.             (setq scan (cdr scan))
  1917.           ) ; while
  1918.         ) ; let
  1919.         ;; return value:
  1920.         (if (equal element (car lst))
  1921.             (cdr lst)
  1922.           lst
  1923.         ) ; if
  1924.       ) ; progn
  1925.     (wrong-type-argument
  1926.      (signal 'wrong-type-argument (list 'delq-equal lst)))
  1927.   ) ; condition-case
  1928. ) ; defun delq-equal
  1929.  
  1930. (defun delq-first-equal (element lst)
  1931.   "deletes by side effect the first occurrence of element as a member of list.
  1932. if element is not in list, list is returned unchanged.  the modified
  1933. list is returned.  'equal' is the equality tester.  if the first
  1934. member of list is 'equal' to element, there is no way to remove it by
  1935. side effect; therefore, write
  1936.    (setq foo (del-first-equal element foo))
  1937. to be sure of changing foo.
  1938.  
  1939. c.f. the builtin function 'delq', which uses 'eq' and deletes all occurrences.
  1940. c.f. the function 'delq-equal', which uses 'equal' and deletes all occurrences."
  1941.  
  1942.   (condition-case err
  1943.       (if (equal element (car lst))
  1944.           (cdr lst)                        ; return value
  1945.         (let
  1946.             (
  1947.              (scan (cdr lst))
  1948.              (prevscan lst)
  1949.             )
  1950.           (while
  1951.               (and scan (not (equal element (car scan))))
  1952.             (setq
  1953.              prevscan scan
  1954.              scan (cdr scan)
  1955.             ) ; setq
  1956.           ) ; while
  1957.           (if scan
  1958.               (setcdr prevscan (cdr scan))
  1959.           ) ; if
  1960.           lst ; return value
  1961.         ) ; let
  1962.       ) ; if
  1963.     (wrong-type-argument
  1964.      (signal 'wrong-type-argument (list 'delq-first-equal lst)))
  1965.   ) ; condition-case
  1966. ) ; defun delq-first-equal
  1967.  
  1968. (defun list-to-set (lst)
  1969.   "return list with duplicate elements reduced to one occurrence each.
  1970. list-to-set of a set does nothing.
  1971.  
  1972. a set is an unordered collection of items; each item of a set occurs
  1973. only once.  sets are represented as gnu emacs lisp lists (the elements
  1974. are usually numbers or symbols).  two elements are considered
  1975. \"identical\" or \"duplicates\" or \"the same\" if the 'equal' function
  1976. returns 't' for them."
  1977.  
  1978.   (let*
  1979.       (
  1980.        (retval
  1981.         (condition-case err
  1982.             (copy-sequence lst)
  1983.           (wrong-type-argument
  1984.            (signal 'wrong-type-argument (list 'list-to-set lst)))
  1985.         ) ; condition-case
  1986.        )
  1987.        (scan retval)
  1988.       )
  1989.     (condition-case err
  1990.         (while scan
  1991.           (delq-equal (car scan) scan)
  1992.           (setq scan (cdr scan))
  1993.         ) ; while
  1994.       (wrong-type-argument
  1995.        (signal 'wrong-type-argument (list 'list-to-set lst)))
  1996.     ) ; condition-case
  1997.     retval
  1998.   ) ; let*
  1999. ) ; defun list-to-set
  2000.  
  2001. (defun memq-equal (element lst)
  2002.   "locates the first occurrence of element as a member of list.
  2003. returns the tail of list which has a car 'equal' to element.  returns
  2004. nil if element is not in list.
  2005.  
  2006. c.f. the builtin function 'memq', which uses 'eq'."
  2007.   (let
  2008.       (
  2009.        (scan lst)
  2010.       )
  2011.     (condition-case err
  2012.         (while
  2013.             (and scan (not (equal element (car scan))))
  2014.           (setq scan (cdr scan))
  2015.         ) ; while
  2016.       (wrong-type-argument
  2017.        (signal 'wrong-type-argument (list 'memq-equal lst)))
  2018.     ) ; condition-case
  2019.     scan                              ; return value
  2020.   ) ; let
  2021. ) ; defun memq-equal
  2022.  
  2023. (defun position-exceeds-list-length (position list)
  2024.  (> position (length list)))
  2025.  
  2026. (defun Insert (element list position)
  2027.   "insert lisp-object in list at position indexed from 0. 
  2028. runtime examples:
  2029.  
  2030. (insert 'yellow-red '(3 4 5) 0)
  2031. (yellow-red 3 4 5)
  2032. (insert 'yellow-red '(3 4 5) 1)
  2033. (3 yellow-red 4 5)
  2034. (insert 'yellow-red '(3 4 5) 2)
  2035. (3 4 yellow-red 5)
  2036. (insert 'yellow-red '(3 4 5) 3)
  2037. (3 4 5 yellow-red)
  2038. (Insert 'yellow-red '(3 4 5) 4)
  2039. chosen position is greater than list length"
  2040.  
  2041.   (setq i-ctr 0)
  2042.   (if (position-exceeds-list-length position list)
  2043.       (format "chosen position is greater than list length")
  2044.     (progn
  2045.       (setq resultlist '())
  2046.       (while (< i-ctr position)
  2047.     (setq resultlist (cons (nth i-ctr list) resultlist))
  2048.     (setq i-ctr (1+ i-ctr)))
  2049.       (setq resultlist (cons element resultlist))
  2050.       (while (< i-ctr (length list))
  2051.     (setq resultlist (cons (nth i-ctr list) resultlist))
  2052.     (setq i-ctr (1+ i-ctr)))
  2053.       (setq resultlist (reverse resultlist)))))
  2054.  
  2055.  
  2056.                     ;                   
  2057.                     ; major code 
  2058.                     ; segment 
  2059.                     ;
  2060.                     ; interactive-commands
  2061.                     ;
  2062.  
  2063. ;;; commands the user can call by hitting a key defined in
  2064. ;;; the keymap in the function ftp+mode. beginnners, notice
  2065. ;;; that each of these functions must begin with an interactive
  2066. ;;; declaration. also note that the inclusion of an interactive
  2067. ;;; declaration is what distinguishes a function from a command
  2068.  
  2069. (defun ftp+()
  2070.  "command to invoke the program."
  2071.   (interactive)
  2072.   (setq ftp+buffer-count (+ ftp+buffer-count 1))
  2073.   (setq ftp+transfer-mode "Ascii")
  2074.   (ftp+set-status ftp+binary-mode-index ftp+buffer-count nil)
  2075.   (ftp+set-status ftp+connected-index ftp+buffer-count nil)
  2076.   (setq ftp+Interaction-bupha (concat "*" ftp+buffer-count))
  2077.   (aset process-objects-vector ftp+buffer-count
  2078.     (start-process ftp+Interaction-bupha ftp+Interaction-bupha "ftp"))
  2079.   (get-buffer-create ftp+Interaction-bupha)  
  2080.   (switch-to-buffer ftp+Interaction-bupha)
  2081.   (ftp+choose-site-decrement)
  2082.   (ftp+choose-site)
  2083.   (ftp+mode)
  2084.   (run-hooks 'ftp+mode-hook))
  2085.  
  2086. (defun ftp+hyper-connect()
  2087.   (interactive)
  2088.   (setq ftp+tmp (region-beginning))
  2089.   (setq ftp+hc-tmp (buffer-substring ftp+tmp (region-end)))
  2090.   (ftp+)
  2091.   (setq ftp+current-site ftp+hc-tmp)
  2092.   (ftp+open-connection))
  2093.  
  2094.  
  2095. (defun same-site-other-window()
  2096.   (interactive)
  2097.   (ftp+)
  2098.   (ftp+open-connection))
  2099.  
  2100. (defun choose-site-by-topic ()
  2101.   (interactive)
  2102.   (choose-site-using "Topic" TOPIC-INDEX)
  2103.   (ftp+scroll-to-chosen-site))
  2104.  
  2105. (defun choose-site-by-filename ()
  2106.   (interactive)
  2107.   (choose-site-using "Filename" FILENAME-INDEX)
  2108.   (ftp+scroll-to-chosen-site))
  2109.  
  2110. (defun ftp+change-directory()
  2111.  "cd to the directory that the user selected by going through these steps:
  2112.   1) typing d to get a directory
  2113.   2) using c-p and c-n to move where he wanted to... it doesnt matter
  2114.      where on the line the cursor is... my program is a smart thang.
  2115.   3) typing g to 'get' the directory.. in this case change to it"
  2116.   (setq ftp+command-string (concat "cd " ftp+desired-file "\n"))
  2117.   (process-send-string (process-name (get-current-process-object)) ftp+command-string)
  2118.   (directory))
  2119.  
  2120. (defun ftp+cd-up()
  2121.  "go up a directory. initially i sent the string cdup but some
  2122.   ftp lines dont recognize this so i now send the explicit u__x command"
  2123.   (interactive)
  2124.   (end-of-buffer)
  2125.   (setq ftp+command-string (concat "cd ..\n"))
  2126.   (process-send-string (process-name (get-current-process-object)) ftp+command-string))
  2127.  
  2128. (defun ftp+get-file()
  2129.  "get-file is executed when the user types a g --- at least as long as the
  2130.   bindings dont change. getting is both downloading and also changing 
  2131.   directories."
  2132.   (interactive)
  2133.   ;; get the filename and also the first character on the line of the file
  2134.   ;; so we can tell if the file is a directory or actual file..
  2135.   ;; in other drwxr-xr-x is directory and will return a d while
  2136.   ;; -r-xr-xr-x will return - so it isnt a directory
  2137.   (ftp+pull-out-name) 
  2138.   (end-of-buffer)
  2139.   (if (equal ftp+first-char-on-line "d")
  2140.     (ftp+change-directory)
  2141.     (ftp+download-file)))
  2142.  
  2143. (defun ftp+download-file()
  2144.  "this sends the string get filename to the ftp process."
  2145.   (setq ftp+command-string (concat "get " ftp+desired-file "\n"))
  2146.   (message "Downloading %s..." ftp+desired-file)
  2147.   (process-send-string (process-name (get-current-process-object)) ftp+command-string))
  2148.   
  2149. (defun ftp+password-entry()
  2150.  "send the password across. this is done manually by you presssing p
  2151.   until if get up the libido to rite a philter for this program"
  2152.   (interactive)
  2153.   (setq ftp+password (concat (read-from-minibuffer "password (default listed) " ftp+current-password) "\n"))
  2154.   (process-send-string (process-name (get-current-process-object)) ftp+password))
  2155.  
  2156. (defun ftp+send-file()
  2157.  "uplaod to remote ftp line"
  2158.   (interactive)
  2159.   (setq ftp+sftemp (concat "send " (read-from-minibuffer "Send What File: ") "\n"))
  2160.   (process-send-string (process-name (get-current-process-object)) ftp+sftemp))
  2161.  
  2162. (defun ftp+open-connection()
  2163.  "open a connnection to a site"
  2164.   (interactive)
  2165.   (setq ftp+binary-mode nil)
  2166.   (setq ftp+site-to-open  (concat "open " ftp+current-site "\n"))
  2167.   (process-send-string (process-name (get-current-process-object)) ftp+site-to-open)
  2168.   (process-send-string (process-name (get-current-process-object)) ftp+current-username)
  2169.   (process-send-string (process-name (get-current-process-object)) "\n")
  2170.   (ftp+set-status ftp+connected-index (ftp+index-of-current-buffer) t)
  2171.   (message "C-h m to list commands while connected , TAB h for quick help")
  2172.   (ftp+mode))
  2173.  
  2174. (defun close-connection()
  2175.  "close a connection to a site. since each new ftp defaults to ascii mode
  2176.   of transfer, reset the transfter mode to ascii."
  2177.   (interactive)
  2178.   (process-send-string (process-name (get-current-process-object)) "close\n")
  2179.   (setq ftp+transfer-mode "Ascii")
  2180.   (ftp+set-status ftp+connected-index (ftp+index-of-current-buffer) nil)
  2181.   (ftp+mode))
  2182.  
  2183. (defun disconnect()
  2184.  "tab-c invokes this"
  2185.   (interactive)
  2186.   (ftp+set-status ftp+connected-index (ftp+index-of-current-buffer) nil)
  2187. ;  (Process-send-string (process-name (get-current-process-object)) "bye\n")
  2188.   (kill-buffer (current-buffer))
  2189.   (delete-other-windows)
  2190.   (run-hooks 'ftp+disconnect-hook))
  2191.  
  2192. (defun describe()
  2193.  "call view-buffer to view detailed info a particular site."
  2194.   (interactive)
  2195.   (setq ftp+description     (get-field COMMENT-INDEX (get-record ftp+list-ctr ftp+site-list )))
  2196.   (get-buffer-create "ftp+description-buffer")
  2197.   (set-buffer "ftp+description-buffer") (erase-buffer)
  2198.   (insert ftp+description)
  2199.   (fill-region (point-min) (point-max))
  2200.   (min-size-window "ftp+description-buffer")
  2201.   (pop-to-buffer ftp+Interaction-bupha))
  2202.  
  2203. (defun ftp+scroll-description-buffer (&optional direction)
  2204.   "scroll the window displaying the description buffer"
  2205.   (interactive "p")
  2206.   (let ((here (current-buffer)))
  2207.     (unwind-protect
  2208.     (progn
  2209.       (pop-to-buffer "ftp+description-buffer")
  2210.       (condition-case ignore (scroll-up)
  2211.         (end-of-buffer (progn (beep) (goto-char (point-min)))))
  2212.       (pop-to-buffer here))
  2213.       (pop-to-buffer here))))
  2214.  
  2215. (defun min-size-window (buff &optional max-height)
  2216.   "display BUFF in as small a window as possible, with an upper limit
  2217. of no more than half the screen height (including status line), unless
  2218. an optional argument MAX-HEIGHT is given."
  2219.   (interactive "B")            ;for test purposes
  2220.   (let ((max-height (or max-height 12))
  2221.     (here (current-buffer))
  2222.     (pop-up-windows t)
  2223.     (window-min-height 2))
  2224.     (pop-to-buffer buff)
  2225.     (goto-char (point-min))
  2226.     (shrink-window (- (window-height) (max (vertical-motion max-height) 1) 1))
  2227.     (goto-char (point-min))
  2228.     (pop-to-buffer here)))
  2229.  
  2230. (defun directory()
  2231.  "list the goodies on the target site"
  2232.   (interactive)
  2233.   (process-send-string (process-name (get-current-process-object)) "ls -l\n")
  2234.   (goto-char (point-max)))
  2235.  
  2236. (defun ftp+binary-mode-toggle()
  2237.   (interactive)
  2238.   (setq m (ftp+get-status ftp+binary-mode-index (ftp+index-of-current-buffer)))
  2239.   (ftp+set-status ftp+binary-mode-index (ftp+index-of-current-buffer) (not m))
  2240.   (if m 
  2241.       (progn
  2242.     (setq dummy "ascii\n")
  2243.     (setq ftp+transfer-mode "Ascii"))
  2244.     (progn        
  2245.       (setq dummy "binary\n")
  2246.       (setq ftp+transfer-mode "Binary")))
  2247.     
  2248.   (process-send-string (get-current-process-object) dummy)
  2249.   (ftp+mode))
  2250.  
  2251.  
  2252. (defun ftp+choose-site-decrement()
  2253.  "choose a new site in ftp+site-list going backwards"
  2254.   (interactive)
  2255.   (if (eq (ftp+get-status ftp+connected-index (ftp+index-of-current-buffer)) t)
  2256.       (message "cannot change sites while ftp+ is running child")
  2257.     (progn
  2258.  
  2259.   (if (eq ftp+list-ctr 0)
  2260.     (setq ftp+list-ctr (- (length ftp+site-list) 1))
  2261.   (setq ftp+list-ctr (- ftp+list-ctr 1)))
  2262.   (setq ftp+current-site     (get-field SITENAME-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2263.   (setq ftp+current-username (get-field USERNAME-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2264.   (setq ftp+current-password (get-field PASSWORD-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2265.   (describe)
  2266.   (message "%s" (customized-display-string))
  2267. (ftp+mode))))
  2268.  
  2269. (defun ftp+choose-site()
  2270.  "choose site going forwards"
  2271.   (interactive)
  2272.   (if (eq (ftp+get-status ftp+connected-index (ftp+index-of-current-buffer)) t)
  2273.       (message "cannot change sites while ftp+ is running child")
  2274.     (progn
  2275.  
  2276.   (if (< ftp+list-ctr (- (length ftp+site-list) 1)) 
  2277.     (setq ftp+list-ctr (+ 1 ftp+list-ctr))
  2278.   (setq ftp+list-ctr 0))
  2279.   (setq ftp+current-site     (get-field SITENAME-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2280.   (setq ftp+current-username (get-field USERNAME-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2281.   (setq ftp+current-password (get-field PASSWORD-INDEX (get-record ftp+list-ctr ftp+site-list)))
  2282.   (describe)
  2283.   (message "%s" (customized-display-string))
  2284.   (ftp+mode))))
  2285.  
  2286. (defun ftp+eval-line()
  2287.  "this command is called if you hit return. it allows you to type ftp
  2288.   commands instead of using the tab-<char> and shft-<char> shortcuts
  2289.   it operates on the assumption that you are on a line with a prompt
  2290.   and then a space..."
  2291.   (interactive)
  2292.   (switch-to-buffer (window-buffer (selected-window)))
  2293.   (beginning-of-line)
  2294.   (ftp+fwd-until-space)
  2295.   (forward-char 1)
  2296.   (setq ftp+exec-string (concat 
  2297.              (buffer-substring (point) (point-max)) "\n"))
  2298.   (kill-line)
  2299.   (process-send-string (process-name (get-current-process-object))
  2300.                ftp+exec-string))
  2301.  
  2302.  
  2303.                     ;
  2304.                     ; major code
  2305.                     ; segment
  2306.                     ;
  2307.                     ; internal-functions
  2308.                     ;
  2309.  
  2310. ;;; functions that are not invoked by keypress but
  2311. ;;; are called by other functions only
  2312.  
  2313. (defun ftp+mode()
  2314. "Major Mode for Using ftp+. 
  2315. Dont be confused. Your current site for this buffer
  2316. is what precedes the word Mode above.
  2317. \\{ftp+mode-map}
  2318. \\[disconnect]: kill the current ftp process. 
  2319.  
  2320. \\[close-connection] the same as if you type bye from the keyboard. 
  2321. Once you type this, you can scroll through the sites to pick another
  2322.  
  2323. \\[ftp+choose-site-decrement]: move back one site
  2324. in the ftp+site-list variable. Only works when the ftp+ buffer you are in
  2325. is not connected to a site
  2326.  
  2327. \\[ftp+choose-site]: move forward one site in the
  2328. ftp+site-list variable. Only works when the ftp+ buffer you are in
  2329. is not connected to a site
  2330.  
  2331. \\[ftp+password-entry]: after you the site you have
  2332. connected to prompts you for a password, type this sequence to send the
  2333. default password or edit it then hit return to send the edited password. For
  2334. security reasons, it is best to leave passwords for privates sites blank.
  2335.  
  2336. \\[choose-site-by-name]: if you know the precise name
  2337. of the site you wish to connect to, type a few characters of the name and then
  2338. hit TAB to let emacs complete it for you... the desired site must be in the
  2339. ftp+site-list variable
  2340.  
  2341. \\[choose-site-by-topic]: if you want to browse by
  2342. topic, then enter this key sequence
  2343.  
  2344. \\[choose-site-by-filename]: if you are looking for
  2345. a particular file, then enter this key sequence
  2346.  
  2347. \\[open-connection]: once the site you wish to choose exists on the 
  2348. mode-line, type this key to establish a connection
  2349.  
  2350. \\[ftp+scroll-description-buffer]]: if all of the comment for this
  2351. site will not fit into the pop-up window, press this to scroll through
  2352. the text of the comment.
  2353.  
  2354. \\[directory]: same as typing dir or ls -l while remotely connected
  2355.  
  2356. \\[ftp+binary-mode-toggle]: switch between binary and ascii modes of file
  2357. transfer. if you are transferring a .tar or .Z file, you must use binary mode
  2358.  
  2359. \\[ftp+get-file]: this key does one of two things after you are connected
  2360. and you have used \\[previous-line] and \\[next-line] to place the cursor
  2361. anywhere on the line with a filename or directory name.
  2362. 1> If it is a directory entry, pressing \\[ftp+get-file] will change to that
  2363.    directory.
  2364. 2> If it is a filename entry, pressing \\[ftp+get-file] will transfer that
  2365.    file to your local current directory. YOU MUST HAVE ALREADY CHOSEN THE
  2366.    CORRECT FILE TRANSFER MODE using \\[ftp+binary-mode-toggle]
  2367. \\[ftp+send-file] is used to send a file from you to the remote ftp site
  2368. \\[ftp+cd-up] is used to move up one level on the directory tree
  2369. \\[ftp+eval-line] send the typed command to the remote ftp site.
  2370. All local commands such as lcd and !ls should be typed at a command-line
  2371. commands can only be typed when you are at the end of the buffer AND you 
  2372. have a prompt AND there is a space between your typed command and the prompt.
  2373. like so:
  2374.  ftp> lcd /scratch/china.primitive
  2375.  the above will work. this wont right now:
  2376.  ftp>lcd /scratch/china.primitive
  2377.  and this wont either:
  2378.  ftp> ftp> lcd /scratch/china.primitive
  2379.  
  2380. \\[ftp+brief-help] gives brief help in the minibuffer ONCE CONNECTED TO A SITE
  2381.  
  2382. The final command to be documented is a convenience. I have bound the 
  2383. function other-window to TAB TAB because it is quicker than C-x o
  2384. "
  2385.   (switch-to-buffer (window-buffer (selected-window)))
  2386.   (kill-all-local-variables)
  2387.   (setq major-mode 'ftp+mode)
  2388.   (setq mode-name ftp+current-site)
  2389.   (goto-char (point-max))
  2390.   (setq goal-column 75)
  2391.   (setq mode-line-buffer-identification (concat "Current Site: " ftp+current-site)) ; alter mode-line info
  2392.   (setq mode-line-format '("" "" "" "     " mode-line-modified mode-line-buffer-identification "   " global-mode-string ))
  2393.   (setq global-mode-string "")
  2394.   (setq mode-line-modified "")
  2395.   (setq dummy-variable (concat "TransferMode." ftp+transfer-mode "    "))
  2396.   (setq mode-line-buffer-identification (concat dummy-variable "Current Site: " ftp+current-site))
  2397.   (set-buffer-modified-p (buffer-modified-p))
  2398.   (setq ftp+mode-map (make-sparse-keymap))
  2399.   (if (eq (ftp+get-status ftp+connected-index (ftp+index-of-current-buffer)) nil)
  2400.       (progn
  2401.     (define-key ftp+mode-map "\C-i\S\S" 'same-site-other-window)
  2402.     (define-key ftp+mode-map "\C-i\q" 'disconnect)
  2403.     (define-key ftp+mode-map "\C-i\C-i" 'other-window)
  2404.     (define-key ftp+mode-map "\C-i\c" 'close-connection)
  2405.     (define-key ftp+mode-map "\C-i\p" 'ftp+password-entry)
  2406.     (define-key ftp+mode-map "cs" 'choose-site-by-name)
  2407.     (define-key ftp+mode-map "ct" 'choose-site-by-topic)
  2408.     (define-key ftp+mode-map "cf" 'choose-site-by-filename)
  2409.     (define-key ftp+mode-map "7" 'ftp+choose-site-decrement)
  2410.     (define-key ftp+mode-map "8" 'ftp+open-connection)
  2411.     (define-key ftp+mode-map "9" 'ftp+choose-site)
  2412.     (define-key ftp+mode-map "0" 'ftp+scroll-description-buffer))
  2413.     (progn
  2414.       (goto-char (point-max))
  2415.       (define-key ftp+mode-map "\C-i\S\S" 'same-site-other-window)
  2416.       (define-key ftp+mode-map "\C-i\C-i" 'other-window)
  2417.       (define-key ftp+mode-map "\C-i\d" 'directory)
  2418.       (define-key ftp+mode-map "\C-i\m" 'ftp+binary-mode-toggle)
  2419.       (define-key ftp+mode-map "\C-i\q" 'disconnect)
  2420.       (define-key ftp+mode-map "\C-i\p" 'ftp+password-entry)
  2421.       (define-key ftp+mode-map "\C-i\g" 'ftp+get-file)
  2422.       (define-key ftp+mode-map "\C-i\s" 'ftp+send-file)
  2423.       (define-key ftp+mode-map "\C-i\u" 'ftp+cd-up)
  2424.       (define-key ftp+mode-map "\C-i\c" 'close-connection)
  2425.       (define-key ftp+mode-map "\C-i\h" 'brief-help)
  2426.       (define-key ftp+mode-map "\C-m" 'ftp+eval-line)))
  2427.   (use-local-map ftp+mode-map)
  2428.   (goto-char (point-max)))
  2429.  
  2430. (defun customized-display-string ()
  2431.   (if DISPLAY-CUSTOM
  2432.       (progn
  2433.     (setq concstring "")
  2434.     (setq L DISPLAY-FIELDS)
  2435.     (while L
  2436.       (setq concstring 
  2437.         (concat
  2438.          concstring
  2439.          "["
  2440.         (get-field (eval (car L)) (get-record ftp+list-ctr ftp+site-list))
  2441.         "] "))
  2442.       (setq L (cdr L)))))
  2443.   concstring)
  2444.  
  2445.  
  2446.   (defun choose-site-using (category index)
  2447.   ;; create an alist of topic names so that we can use
  2448.   ;; completing read to get the user's choice
  2449.   (create-alist-from index ftp+site-list)
  2450.   
  2451.   ;; since the topic and file fields have entries separated by a slash,
  2452.   ;; we must parse out the names.. boy was this a headache!
  2453.   (split-out-names tmplist index)
  2454.  
  2455.   (message "removing duplicates. .")
  2456.   (setq new-alist (list-to-set J))
  2457.   (setq ftp+chosen-item
  2458.     (completing-read (concat 
  2459.               "Which " category
  2460.               " do you wish to choose by ") new-alist))
  2461.  
  2462.   ;; now that we know what topic/file she wants to choose by, we find all sites
  2463.   ;; which contain the topic/file and create the alist and call
  2464.   ;; completing-read. stepwise this request is solved by:
  2465.   ;; 1 iterating through site-list on element at a time
  2466.   ;;   a take the element which is a list and pull out the 
  2467.   ;;     topic/file-index field
  2468.   ;;   b is the topic/file field the chosen topic/file?
  2469.   ;;     - if yes, create an alist consisting of the site-name of this site
  2470.   ;;       and a dummy second element
  2471.   ;;     - if no, skip this element 
  2472.   ;; 2 next element
  2473.   (setq tmplist '())
  2474.   (setq tmpcounter 0)
  2475.   (while (< tmpcounter (length ftp+site-list))
  2476.     (message "%d" tmpcounter)
  2477.     (setq y (get-field index (get-record tmpcounter ftp+site-list))) ; 1a
  2478.     (if (search-for-substring ftp+chosen-item y)
  2479.     (setq tmplist (cons (list (get-field SITENAME-INDEX 
  2480.         (get-record tmpcounter ftp+site-list)) "dummy") tmplist)) ; 1b if yes
  2481.             ()); 1b if no 
  2482.       (setq tmpcounter (1+ tmpcounter))) ; 2
  2483.   (setq ftp+chosen-site
  2484.     (completing-read (concat 
  2485.               "which site is your choice? press tab for completions ") tmplist)))
  2486.  
  2487.  
  2488. (defun ftp+back-until-space()
  2489.  "what you think child?"
  2490.   (while (progn (backward-char 1)
  2491.         (setq ftp+bustemp (buffer-substring (point) (+ (point) 1)))
  2492.         (not (equal ftp+bustemp " ")))))
  2493.  
  2494. (defun ftp+fwd-until-space()
  2495.   "guess"
  2496.   (while (progn (backward-char -1)
  2497.         (setq ftp+bustemp (buffer-substring (point) (+ (point) 1)))
  2498.         (not (equal ftp+bustemp " ")))))
  2499.  
  2500. (defun ftp+pull-out-name()
  2501.  "go to start of line and save the first char so we know if its a regular
  2502. file or a directory. go to end of line and save the buf position. go
  2503. back a word. return this substring. this will always be the filename.
  2504. using backward-word fails because the syntax table defines a period
  2505. as punctation.. instead of narking the syntax table. i rote a sureshot"
  2506.   (beginning-of-line nil)
  2507.   (setq ftp+first-char-on-line 
  2508.     (buffer-substring (point) (1+ (point))))
  2509.   (end-of-line)
  2510.   (backward-char 1)
  2511.   (setq ftp+pontemp (point))
  2512.   (ftp+back-until-space)
  2513.   (setq ftp+desired-file (buffer-substring (point) (+ ftp+pontemp 1))))
  2514.  
  2515. (defun ftp+scroll-to-chosen-site ()
  2516.   ;; this was one of those times where eq failed... myprogram just
  2517.   ;; kept looping through the sitelst and then i said aha, it must
  2518.   ;; be that eq instead of equal andwhadya know
  2519.   (while (not (equal ftp+current-site ftp+chosen-site))
  2520.     (progn
  2521.       (ftp+choose-site)
  2522.       (ftp+mode))))
  2523.  
  2524. (defun choose-site-by-name ()
  2525.   (interactive)
  2526.   (setq ftp+chosen-site 
  2527.     (completing-read "which site " ftp+site-list))
  2528.   (ftp+scroll-to-chosen-site))
  2529.  
  2530. (defun parse-by-index (list)
  2531.   (list 
  2532.    (nth ftp+given-position list)
  2533.    "dummy data"))
  2534.  
  2535. (defun process-alist-by (ftp+given-position alist-by-value)
  2536.   (setq ftp+current-position ftp+given-position)
  2537.   (setq m (mapcar 'parse-by-index 
  2538.       (mapcar 'car (mapcar 'cdr alist-by-value))))
  2539.   (list-to-set m))
  2540.  
  2541. (defun string-memq (element string)
  2542.   (setq string-memq-ctr 0)
  2543.   (while (and (< string-memq-ctr (length string))
  2544.     (not (string= (char-to-string (elt string string-memq-ctr)) element)))
  2545.     (setq string-memq-ctr (1+ string-memq-ctr)))
  2546.   (if (eq string-memq-ctr (length string))
  2547.       nil
  2548.     t))
  2549.  
  2550. (defun string-return-all-up-to-separator (sep string)
  2551.   (setq string-ctr 0)
  2552.   (setq new-string "")
  2553.   (setq overall-lth (length string)) 
  2554.   (while (and (< string-ctr overall-lth)
  2555.       (not (string= (char-to-string (elt string string-ctr)) sep)))
  2556.     (setq new-string
  2557.       (concat new-string (char-to-string (elt string string-ctr))))
  2558.     (setq string-ctr (1+ string-ctr)))
  2559.   (prog1
  2560.     (setq return-string (substring string 0 string-ctr))
  2561.     (setq rest-of-string (if (eq string-ctr (length string))
  2562.                  ""
  2563.                (substring string (1+ string-ctr) nil)))))
  2564.  
  2565. (defun create-alist-from-slash-separated-string (element)
  2566.  (setq satan (get-field global-index-from-split-out element))
  2567.  (setq separator-in-string t)
  2568.  
  2569.  (while separator-in-string
  2570.    (setq J (cons (list (return-up-to "/" satan) "dummy") J))
  2571.    (setq satan (buffer-substring (point) (point-max)))
  2572.    (if separator-in-string (replace-match "")
  2573.      ())))
  2574.  
  2575.  ;; this was a headache until I decided to regexp replace and search
  2576.  ;; it was a headach a long tome after that too!
  2577.  ;; and even more later... ouch!
  2578. (defun split-out-names (tmplist INDEX)
  2579.  "takes ALIST and creates global variable new-alist with an alist 
  2580. of the names split into separate cons cells"
  2581.  (setq J '())
  2582.  (message "Splitting Out Key Field. .")
  2583.  (setq global-index-from-split-out 0) ;; the first field of the alist
  2584.  (mapcar 'create-alist-from-slash-separated-string tmplist)
  2585.  
  2586.  (message "Splitting Out Key Field...Done"))
  2587.  
  2588.  
  2589. ;;;; Haack stuff .. will move to appropriate code section later
  2590. (defun brief-help()
  2591.   (interactive)
  2592.   (message "[tab] Getfile Sendfile cdUp Modetogl Directory Closeconnection"))
  2593.  
  2594. (defun get-current-process-object()
  2595.   "each buffer name is of the form *x where x is an integer. the corresponding
  2596. process object in the vector is at index x. we therefore take off the * by use
  2597. of the substring command and we have the index we need"
  2598.     (aref process-objects-vector (ftp+index-of-current-buffer)))
  2599.  
  2600. (defun ftp+index-of-current-buffer()
  2601.   (interactive)
  2602.     (string-to-int (substring (buffer-name (window-buffer)) 1)))
  2603.  
  2604.  
  2605. (defun ftp+set-status (list-index list-of-list-index value)
  2606. "set status of list-index in list-of-list-index to value"
  2607.   (replace-list-element-with
  2608.    value
  2609.    (elt ftp+status-list list-of-list-index)
  2610.    list-index))
  2611.  
  2612. (defun ftp+get-status (list-index list-of-list-index)
  2613.   (elt (elt ftp+status-list list-of-list-index) list-index))
  2614.  
  2615. (defun replace-list-element-with (element list index)
  2616.   (setq M list)
  2617.   (setcar (nthcdr index M) element))
  2618.