home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / www / cucug / at / iglasses.txt < prev    next >
Internet Message Format  |  1997-11-07  |  22KB

  1. From: peterk@combo.adsp.sub.org (Dr. Peter Kittel)
  2. Subject: Re: I-Glasses Info?
  3. Newsgroups: comp.sys.amiga.misc,comp.sys.amiga.programmer
  4. Reply-To: peterk@combo.ganesha.com
  5. Lines: 481
  6. Date: 14 Sep 95 00:47:52 MEZ
  7.  
  8. In article <42jlv6$fkv@sunsystem5.informatik.tu-muenchen.de> brunner@informatik.tu-muenchen.de (Oliver -IR- Brunner) writes:
  9. >
  10. >In article <42j5g4$pti@case.cyberspace.com>, rtfm@case.cyberspace.com (Dan Thies) writes:
  11. >|> Does anyone have any kind of information on how the I-Glasses will
  12. >|> interface to the Amiga, or have any contact info (email, etc.) for the
  13. >|> developers of this product?
  14. >
  15. >Dr. Peter Kittel postet some details a while ago.
  16.  
  17. Yes, I did in c.s.a.programmer, but I fear it didn't really reach the
  18. whole world. So I took the freedom to repost it below *and* crosspost
  19. it to .misc, because there my postings obviously get through...
  20.  
  21. >|> I have heard that the glasses will connect to the serial port,
  22.  
  23. One part of the, the "head tracker", which gives you angular info
  24. about the orientation of your head in space.
  25.  
  26. >|> but I am
  27. >|> hoping that this is just another bad rumor.
  28.  
  29. The video part connects to a composite output.
  30.  
  31. >|>  Using the serial port means
  32. >|> that no modem can be attached when the glasses are in use.
  33.  
  34. For many applications, the head tracker is not essential. I think,
  35. using the serial port is a big advantage, because you avoid having
  36. a much more expensiver extra interface on a card or in a separate
  37. box!
  38.  
  39. >The glasses are connected to the RGB-out of your Amiga.
  40.  
  41. No, composite.
  42.  
  43. > There is a
  44. >NTSC-Version and a (not finished?) PAL Version.
  45.  
  46. It's now available.
  47.  
  48. > An interlaced
  49. >View is displayed on the glasses, one frame on one eye.
  50. >(In my opinion this will bloody flicker .. :)
  51.  
  52. Not on an LCD :-).
  53.  
  54. Begin of repost (Ok, there are small updates :-).
  55. Sorry for the length, but with this, you get practically the *full*
  56. information you need to program it. You don't need more, it *is* so easy!
  57.  
  58.  
  59. =====================================================================
  60.  
  61.  
  62. Perhaps some people already have heard about this new, fancy product.
  63. i-glasses! by company Virtual I-O in Seattle are a new and affordable
  64. way into 3d, or Cyberspace, if you want. For Europe, we have set up
  65. a sister company named Virtual Products, residing together with
  66. Amiga Technologies under the same roof in Bensheim.
  67.  
  68. There are two parts: The main one are the glasses themselves, a color
  69. LCD for every eye, independent ones. Provided with the right signals,
  70. you will see real 3D effects. - The other part is called Head Tracker
  71. and is a position (or better angular) detector for your head to
  72. enable real-time looking around in space or do cursor-like movements
  73. by head movements. - Also mounted to the glasses are stereo headphones.
  74.  
  75. To provide the right signals for the glasses is nearly trivial. They
  76. take a fully standard composite video signal (one wire, plus two others
  77. for stereo sound) as input. Thus there are PAL and NTSC versions of
  78. the glasses. The NTSC versions already exist, the PAL versions are also
  79. now shipping. As the video signal is standard, it is always interlaced.
  80. And then the even lines (or one half field) go to the right LCD and
  81. the odd lines (the other field) to the left (or the other way round,
  82. you can choose with a switch a the set, so you don't have to worry
  83. during programming). This way of coding is also called "field sequential".
  84.  
  85. When I had the first PAL glasses in my hand and tried my first own
  86. software, my experience was: You have to make the effect much more drastic
  87. than I thought. For the nearest point to the face I chose on a HiRes
  88. screen 15 pixels horizontal spacing. This is far too little I learnt:
  89. If a pixel is infinitely far away, its two field pixels should be
  90. a quarter screen apart horizontally, when the pixels gets nearer,
  91. the field pixels get nearer to each other and cross finally.
  92. Assume that the view angle is only ca. 40 degrees.
  93.  
  94. Another hint for programming:
  95. The resolution is rather low, something like 268 x 230 (don't have
  96. more concrete figures, sorry).
  97.  
  98.  
  99. The head tracker part is a bit more complicated, I'll quote below the
  100. data provided to me by Virtual I-O.
  101.  
  102.  
  103. >Date: Thu, 6 Jul 1995 01:58:14 -0700 (PDT)
  104. >Subject: Head Tracker Specs
  105.  
  106.   I tried to format the text the way it is in the developer's kit, but my
  107. mail program created a mess of it.  The fax line has been busy, so
  108. hopefully this e-mail will work.
  109.  
  110. Contents
  111.  
  112. Introduction
  113.  
  114. Basic Tracker orientation
  115. Communicating with the host computer Using the i-glasses! Tracker
  116. The i-glasses! Tracker command set
  117.  Virtual i-O Tracker Modes
  118.   Mode 0: Raw data mode
  119.    Data packet format for mode 0 (Binary)
  120.    Data packet format for mode 0 (ASCII)
  121.    Send mode for data mode 0
  122.   Mode 1: Cooked data mode
  123.    Data packet format for mode 1 (Binary)
  124.    Data packet format for mode 1 (ASCII)
  125.    Send mode for data mode 1 Mode 2:
  126.   Euler angles mode
  127.    Data packet format for mode 2 (Binary)
  128.    Data packet format for mode 2 (ASCII)
  129.    Send mode for data mode 2
  130.   Emulation Modes
  131.    Mode3: Microsoft mouse emulation mode
  132.    Mode 4: CyberMaxx emulation mode
  133.   Examples
  134.    Modes for terminal debugging
  135.    Modes useful for applications
  136.     Emulation modes
  137.      Mouse mode
  138.   Sample Code Notes:
  139.  
  140. Introduction The i-glasses! Tracker, available exclusively from Virtual
  141. i-0 Corporation, sends yaw, pitch, and roll information to a host
  142. computer.  This information is then available to application software for
  143. creating immersive, head-tracking, real-time stereoscopic 3D simulations
  144. called virtual reality.
  145.  
  146. Basic Tracker orientation
  147.  
  148. All orientation descriptions are from the perspective of someone actually
  149. wearing the Tracker: Positive yaw is defined as a left head rotation.
  150. Positive pitch is an upward head tilt.  Positive roll is a left head tilt.
  151.  
  152. The coordinate system used is +Y up, +Z out, and +X right (The positive
  153. axes can be formed with the right-hand index, middle finger, and thumb: a
  154. right-handed coordinate system.  See Computer Graphics, principles and
  155. practice, by Foley et al for more inf ormation on coordinate systems).
  156. creating immersive, head-tracking, real-t ime stereoscopic 3D simulations
  157. called virtual reality. Basic Tracker orientation All orientation
  158. descriptions are from the perspective of someone actually wearing the
  159. Tracker: Positive yaw is defined as a left head rotation.  Positive pitch
  160. is an upward head tilt.  Positive roll is a left head tilt.  The
  161. coordinate system used is +Y up, +Z out, and +X right (The positive axes
  162. can be formed with the right-hand index, middle finger, and thumb: a
  163. right-handed coordinate system.  See Computer Graphics, principles and
  164. practice, by Foley et al for more inf ormation on coordinate systems).
  165.  
  166. Communicating with the host computer The Tracker communicates with the
  167. host computer via an RS-232C 3-wire serial interface (TXD, RXD, GND).  The
  168. Tracker can run at 1200, 2400, 4800, 9600, and 19200 bps.  The Tracker can
  169. be queried and tested using a standard ASCII terminal program. All
  170. commands are printable ASCII strings, and provide feedback to tell the
  171. application if a command was successfully processed.  All commands (except
  172. 'S') begin with a '!' (Attention) and end with a carriage return (Hex D).
  173. The Tracker responds with an ' O' for OK or an 'E' for an Error.  The 'S'
  174. (Send data) command requests the Tracker to send data to the host.  In
  175. this case, only the requested data is returned, and a time-out check must
  176. be used to determine if an error occurred. Protected mode applications
  177. will need a bi-modal serial handler. A bi-modal serial handler for Watcom
  178. C/C++ is provided on the developer kit disk. Using the i-glasses! Tracker
  179. The Tracker must be initialized to a known state before an application can
  180. begin using the Tracker.  Since the Tracker may be in a continuous
  181. streaming mode and at any of six supported bps rates, the host must send a
  182. reset command until successful.  This will give the Tracker time to stop
  183. sending data and to change its communications rate if necessary.  After
  184. the Tracker has been successfully reset, the host must put the Tracker
  185. into the appropriate mode for the application (polled, streaming, ASCII,
  186. bina ry, etc.).  For emulation purposes, the Tracker retains its last
  187. operating modes (data mode, send mode, and send format) when it was
  188. powered off.  All applications that directly support the Tracker must set
  189. and verify the operating modes on initial startu p.
  190.  
  191. The i-glasses! Tracker command set All commands to the Tracker are
  192. printable ASCII characters.  Each command (except 'S') is terminated with
  193. a carriage return (Hex D).  Result codes, 'O' and 'E' are ASCII 'O' and
  194. 'E'.  Tracker orientation data is sent to the host in either ASCII or
  195. binary.
  196.  
  197.   The serial protocol is one start bit, 8 data bits, no parity, and one
  198. stop bit. Command Description !R Resets the Tracker to the default state:
  199. cooked, polled, binary mode.  All applications should put the Tracker into
  200. Cooked, Euler, or an emulation mode before requesting orientation data. !V
  201. Get the Tracker revision string.  This allows future revisions of the
  202. protocol to work as applications will know what version of the hardware
  203. they are talking to.  The string format is:
  204.    M<16 chars>P<16 chars>T<8 chars>Hxxx.xxxFxxx.xxx where M is for
  205. Manufacturer followed by a 16 character ID string, P is for Product code
  206. followed by a 16 character product code or serial number, T defines
  207. product Type, H is for Hardware revision followed by a C format "%07.3f"
  208. revision string, and F is for Firmware revision with the same C format
  209. string.  An 'O' or an 'E' is appended to the end of the returned string to
  210. indicate whether an internal self test has passed or failed. !M<data
  211. mode>,<send mode>,<send format>[,<magnetic filter>,<tilt filter>][,<Mouse
  212. sensitivity>,<Mouse threshold>]<CR> Tells the Tracker to change data mode,
  213. send mode, send format, and filter modes, and is terminated with a
  214. carriage return (Hex D).  Data modes are '0'-'4'. Send modes are 'P' for
  215. polled, 'C' for Continuous, and '0'-'1' in mouse mode. Send formats are
  216. 'A' for ASCII and 'B' for Binary. Filter ranges are '0' for none, and '7'
  217. for maximum.  These parameters must be sent all at once, separated by
  218. commas, and in the defined order. Filter modes and mouse parameters are
  219. the only optional commands and shouldn't be
  220.  set by the application, but rather by the Tracker manager software.  If
  221. they are set by the application, the user must be able to change them.  If
  222. the optional mouse parameters are set, the filter parameters must also be
  223. specified.  The mouse sensitivity
  224.  and threshold settings are fully described in the mouse emulation
  225. section.  Only Tracker manager software should set mouse settings. S Tells
  226. the Tracker to send a packet of orientation data.  In continuous modes,
  227. 'S' starts the stream.  When a '!' is sent, the stream stops and the
  228. command is processed.  '!' followed by a carriage return can be used to
  229. stop the stream.
  230.  
  231. Virtual i-O Tracker Modes Mode 0: raw data mode The Tracker sends raw data
  232. readings from the sensors.  The numeric format is 12 bits unsigned
  233. (0..4095) stored in 16-bits for all values.  This mode is most useful for
  234. debugging the hardware. Data packet format for mode 0 (binary) The total
  235. packet size is 12 bytes.  The byte format is:
  236.    Byte    Description
  237.    0  Header (always 255)
  238.    1  X-axis high byte
  239.    2  X-axis low byte
  240.    3  Y-axis high byte
  241.    4  Y-axis low byte
  242.    5  Z-axis high byte
  243.    6  Z-axis low byte
  244.    7  Pitch high byte
  245.    8  Pitch low byte
  246.    9  Roll high byte
  247.    10 Roll low byte
  248.    11 Arithmetic checksum (Bytes 0-10 added together) Data packet
  249. format for mode 0 (ASCII) The data is transmitted in the preceding form in
  250. ASCII hex with spaces separating each two byte ASCII hex value.  This is
  251. for debugging only. Send mode for data mode 0 The send modes for data mode
  252. 0 are 'P' for Polled and 'C' for Continuous.  In continuous mode, a
  253. '!'<CR> command stops the stream and the 'S' command restarts it.  To read
  254. data in continuous mode, the application searches for a start header
  255. (255).  Once f ound, the rest of the packet must be read in, the checksum
  256. computed and compared to the packet's checksum.  If the checksums don't
  257. match, the application must reread the data one byte beyond where it last
  258. found a 255 and start the process over again.  Alt ernatively, the
  259. application can stop the stream with a '!'<CR>, pause a few character send
  260. times, flush its read buffers, then send an 'S' and begin reading the
  261. stream. All raw modes should not be used for commercial applications.
  262. They are for factory debugging only.
  263.  
  264. Mode 1: Cooked data mode The Tracker scales the magnetic vector, centering
  265. it about the zero, and linearizes the tilt sensor readings based on
  266. internal factory calibration constants.  This is the mode to use when
  267. performing the angle computation on the host.  The data format is s igned
  268. 16-bit words.  The x, y, and z magnetometer readings are approximately +/-
  269. 16384 (This varies with the Earth's magnetic field).  The pitch and roll
  270. readings are converted to linear values where +16384 = 180 degrees and
  271. -16384 = - 180 degrees. To convert to floating point: degrees =
  272. (float)reading/16384.0*180.0.  A provided C library routine converts the
  273. cooked data values into yaw, pitch, and roll. Data packet format for mode
  274. 1 (Binary) The total packet size is 12 bytes.  The byte format is:
  275.    Byte  Description
  276.    0  Header (always 255)
  277.    1  X-axis high byte
  278.    2  X-axis low byte
  279.    3  Y-axis high byte
  280.    4  Y-axis low byte
  281.    5  Z-axis high byte
  282.    6  Z-axis low byte
  283.    7  Pitch high byte
  284.    8  Pitch low byte
  285.    9  Roll high byte
  286.    10 Roll low byte
  287.    11 Arithmetic checksum (Bytes 0-10 added together) Data packet
  288. format for mode 1 (ASCII) The data is transmitted in the preceding form in
  289. ASCII hex with spaces separating each two byte ASCII hex value.  This is
  290. for debugging only. Send mode for data mode 1 The send modes for data mode
  291. 1 are 'P' for Polled and 'C' for Continuous.  In continuous mode, a
  292. '!'<CR> command stops the stream and the 'S' command restarts it.  To read
  293. data in continuous mode, the application searches for a start header
  294. (255).  Once f ound, the rest of the packet must be read in, the checksum
  295. computed and compared to the packet's checksum.  If the checksums don't
  296. match, the application must reread the data one byte beyond where it last
  297. found a 255 and start the process over again.  Alt ernatively, the
  298. application can stop the stream with a '!'<CR>, pause a few character send
  299. times, flush its read buffers, then send an 'S' and begin reading the
  300. stream.  Continuous mode is not recommended for commercial applications
  301. (error recovery is dif ficult and serial interrupts and CPU cycles are
  302. wasted).
  303.  
  304. Mode 2: Euler angles mode The Tracker sends yaw, pitch, and roll angles.
  305. The data format for yaw, pitch, and roll is a signed 16-bit word, where
  306. +16384 = 180 degrees, and -16384 = -180 degrees. Data packet format for
  307. mode 2 (Binary) The total packet size is 8 bytes.  The byte format is:
  308.    Byte  Description
  309.    0  Header (always 255)
  310.    1  Yaw high byte
  311.    2  Yaw low byte
  312.    3  Pitch high byte
  313.    4  Pitch low byte
  314.    5  Roll high byte
  315.    6  Roll low byte
  316.    7 Arithmetic checksum (Bytes 0-6 added together) Data packet
  317. format for mode 2 (ASCII) The data is transmitted in the preceding form in
  318. ASCII hex with spaces separating each two byte ASCII hex value.  This is
  319. for debugging only. Send mode for data mode 2 The send modes for data mode
  320. 2 are 'P' for Polled and 'C' for Continuous.  In continuous mode, a '!'
  321. command stops the stream and 'S' command restarts it.  To read data in
  322. continuous mode, the application searches for a start header (255).  Once
  323. found, th e rest of the packet must be read in, the checksum computed and
  324. compared to the packet's checksum.  If the checksums don't match, the
  325. application must reread the data one byte beyond where it last found a 255
  326. and start the process over again.  Alternative ly, the application can
  327. stop the stream with a '!'<CR>, pause a few character send times, flush
  328. its read buffers, then send an 'S' and begin reading the stream.
  329. Continuous mode is not recommended for commercial applications (error
  330. recovery is difficult a nd serial interrupts and CPU cycles are wasted).
  331.  
  332.  
  333. Emulation Modes Mode 3: Microsoft mouse emulation mode When in binary mode
  334. and communicating with a mouse device driver, this mode operates at 1200
  335. bps and simulates a 7 bit data byte (with 1 stop and 1 start) by always
  336. sending the last data bit as a simulated stop bit. The output format is
  337. defined by the Mic rosoft mouse data format (3 byte format). While
  338. operating in mouse mode, X is determined by a scaled yaw angle
  339. calculation.  Y is determined by a scaled pitch angle sensing. Send mode 0
  340. for mouse mode
  341.  
  342. This mode sends values like a mouse.  Delta values are sent as long as the
  343. Tracker moves.  The size of the deltas depends on how far the Tracker has
  344. moved. Send mode 1 for mouse mode
  345.  
  346. When the Tracker is first initialized into this mode, a reference position
  347. is taken.  Any movement away from this reference position results in
  348. deltas being continuously sent until the Tracker is moved back to within
  349. the threshold near the reference posit ion.  The size of the deltas
  350. depends on how far away the Tracker is moved from the reference position.
  351. Sensitivity and mouse mode mickey values
  352.  
  353.    One X mickey is 1/4 degree change in yaw and
  354.    one Y mickey is 1 degree change in pitch
  355.  
  356. for a sensitivity of 1.  As sensitivity increases, the change per degree
  357. increases.  Thus, a sensitivity of 2 represents 1/2 degree change in yaw,
  358. etc.  A sensitivity of 0 can be used to disable X or Y mickeys.  For
  359. example, DOOM works best with the Y axi s disabled, where yaw causes the
  360. head to turn and pitch has no effect.  The range for sensitivity is 0-9.
  361.  
  362.  
  363. Mouse threshold settings
  364.  
  365. The threshold settings determine how far the Tracker has to move before a
  366. packet is sent.  If the threshold is low, a movement in the Tracker will
  367. result in packets being sent frequently (small mickey counts sent
  368. frequently).  If the threshold is high, th e Tracker must move farther
  369. before a packet is sent (large mickey counts sent infrequently).  The
  370. threshold is related to sensitivity in that the movement values are first
  371. adjusted by sensitivity before being compared to the threshold settings.
  372. The thres hold range is 0-9.
  373.  
  374. Mode 4: CyberMaxx emulation mode [Not yet implemented]
  375.  
  376. Examples
  377. Modes for terminal debugging
  378. !M0,P,A,0,0 Raw polled mode, ASCII, no filtering.
  379. !M0,C,A,0,0 Raw continuous mode, ASCII, no filtering.
  380. Modes useful for applications
  381. !M1,P,B  Cooked polled mode, binary, filtering not changed.
  382. !M1,P,B,0,0 Cooked polled mode, binary, no filtering.
  383. !M1,P,B,3,3 Cooked polled mode, binary, medium filtering.
  384. !M1,P,B,7,7 Cooked polled mode, binary, full filtering.
  385. !M2,P,B,3,3 Euler polled mode, binary, medium filtering.
  386. Emulation modes
  387. Mouse mode
  388. !M3,P,A,0,0 Mouse mode, polled, ASCII, no filtering.  This is for debugging only.
  389. !M3,C,A,0,0 Mouse mode, continuous, ASCII, no filtering.  Transmits only when the mouse moves.  For debugging only.
  390. !M3,C,B,3,3 Mouse mode, continuous (whenever the mouse moves), binary, medium filtering.  For true mouse emulation, this command must be sent at 1200 bps to put the Tracker into 1200 bps mode.
  391.  
  392.  
  393. Sample Code
  394.  
  395. /* test.c: Simple program that prints data to the screen. */
  396. /* Uses src\simple\vstrack1.lib. See the devkit disk for more info. */
  397. /* Created 2/17/95 */
  398. /* John Schultz */
  399.  
  400. #include <stdio.h>
  401. #include <stdlib.h>
  402. #include <conio.h>
  403. #include <math.h>
  404. #include "vstrack1.h"
  405.  
  406. void main(int argc,char ** argv) {
  407. TrackerData td;
  408. TrackerStatus ts;
  409.  
  410.   ts = initTracker(&td,TP_COM1,9600,timerSecs(2));
  411.   printf("%s.\n",trackerInfo(ts));
  412.   if (ts != TS_OK) {
  413.     closeTracker(&td);
  414.     exit(0);
  415.   } // if
  416.  
  417.   ts = sendTrackerCMD(&td,"!M1,P,B\r",timerSecs(2));
  418.   if (ts != TS_OK) {
  419.     printf("%s.\n",trackerInfo(ts));
  420.     closeTracker(&td);
  421.     exit(0);
  422.   } // if
  423.  
  424.   requestTrackerData(&td);
  425.  
  426.   while (1) {
  427.     float y,p,r;
  428.     if (kbhit() && getch() == 'q') break;
  429.  
  430.     ts = readTracker(&td,timerSecs(1));
  431.     if (ts != TS_OK) {
  432.       printf("\n%s.\n",trackerInfo(ts));
  433.       resetTracker(&td,timerTSecs(1));
  434.     } // if
  435.     requestTrackerData(&td);
  436.  
  437.     y = TOFLOAT(td.euler.y);
  438.     p = TOFLOAT(td.euler.x);
  439.     r = TOFLOAT(td.euler.z);
  440.  
  441.     printf("x %6ld y %6ld z %6ld y %6.2f p %6.2f r %6.2f\n",
  442.       td.magnetic.x,td.magnetic.y,td.magnetic.z,y,p,r);
  443.  
  444.   } // while
  445.  
  446.   closeTracker(&td);
  447.  
  448. } // main
  449.  
  450. /* test.c */
  451.  
  452.  (end of quote)
  453.  
  454.  
  455. The details about tracker programming are an excerpt of the i-glasses!
  456. Developers Kit. This kit consists of a PC version of the glasses, docs,
  457. and a CD with examples and costs $1000. There will be also a version of
  458. the kit with the developer material only for ca. $50 (Also the PC version
  459. of the kit comes with a CD with 10 games.) You can purchase this kit
  460. directly from Virtual-io in Seattle (address next time). You also can
  461. get such material from their ftp site: ftp.vio.com, look into
  462. outgoing/docs and especially the file webdev.doc there.
  463.  
  464.  
  465. To give you an idea what the glasses products are aside from the Amiga:
  466. There is a VCR version which is made for a WalkMan-like VCR and is just
  467. the glasses connected to this VCR. The second product is the "PC" version.
  468. It's much more expensive, because it also contains a VGA-to-composite
  469. conversion box, and the Head Tracker. The Amiga version of this product
  470. is not yet defined precisely. This is because it depends on which Amiga
  471. you use, for the A1200 you need only the glasses and the Head Tracker
  472. without that conversion box of the PC version. For the A4000, you would
  473. need some Composite modulator or similar, perhaps we have to produce
  474. again something like the A520, this is not yet clear, sorry. But anyway,
  475. for the Amiga, the kit will probably contain the glasses and the Head
  476. Tracker, which connects directly to the serial Amiga interface. So you
  477. don't need that VGA-to-composite conversion so that the Amiga version
  478. should become significantly cheaper than the PC version and end up
  479. somewhere in the middle between the Video and the PC version (rough
  480. guess currently, no guarantee).
  481.  
  482.  
  483.  
  484. --
  485. Best Regards, Dr. Peter Kittel       //
  486. Private Site in Frankfurt, Germany \X/  Email to: peterk@combo.ganesha.com
  487. Now re-employed at Amiga Technologies GmbH in Bensheim, Germany
  488. Currently only rarely reachable via email and news, sorry.
  489.  
  490.