#avr Logs

Jul 01 2017

#avr Calendar

12:22 AM day_ is now known as daey
04:36 AM vishwin60 is now known as vishwin
04:57 AM julius: hi
05:00 AM julius: im looking at the u8glib display library here which works with my display (the test graphics look ok on it). in the main file theres a function call to: u8g_InitI2C.... for initialization of the hardware. but the only files included in that file are u8g.h (which has no corresponding .c file) and two files from the gnu avr lib. the function definition for u8g_InitI2C is nowhere to be found :(
05:01 AM julius: in the u8g.h file theres: uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options);
05:01 AM julius: but shouldnt there also be a u8g.c file then?
05:03 AM julius: ah looks like its in: u8g_ll_api.c so probably some Makefile magic to compile it too
05:05 AM julius: ah....here we go: SRC = $(shell ls $(WORKDIR)/*.c 2>/dev/null)
05:05 AM julius: SRC += $(shell ls $(U8GM2DIR)/*.c 2>/dev/null)
05:46 AM evil_dan2wik is now known as dan2wik
05:51 AM Emil: https://emil.fi/jako/kuvat/2017-07-01_13-20-37_iHnPEhWl.png
05:52 AM Emil: Next project
05:52 AM Emil: since seeed is so motafucking cheap :D
05:52 AM Emil: The next question is how to place the damn footprints
05:54 AM Emil: One by one would be pretty cancerous
06:20 AM antto: 30 degrees spacing..
06:43 AM Emil: antto: yeah but how do you do that :D
06:43 AM antto: footprint properties.. rotation
06:44 AM antto: 300 is 30.0 degrees
06:44 AM * antto assumes kicad
06:45 AM antto: if i were you, i'd make a vector file with the exact locations of where the things need to be, probably with librecad
06:56 AM Emil: ...
06:57 AM julius: Emil: its a death star or a clock...i cant decide
06:57 AM Emil: antto: I have 72 leds to place around a circle
06:57 AM julius: the picture you posted
06:57 AM Emil: Manually placing them is silly
06:58 AM Emil: I could just create an array but then I would have to manually assign the nets
06:58 AM Emil: Hmm, that's probably the best/only way to do it neatly
06:59 AM julius: and what is seed?
07:02 AM Emil: seeed
07:03 AM Emil: https://emil.fi/jako/kuvat/2017-07-01_14-32-31_24D17qeF.png
07:15 AM julius: 10x10cm sounds cheap for that price
07:15 AM julius: do you have pics of pcb's from them that you ordered?
07:17 AM Emil: Yeah
07:19 AM Emil: Well, mine was from itead
07:19 AM Emil: but iirc they are the same fab
07:23 AM Emil: https://emil.fi/jako/kuvat/itead.jpg
07:25 AM Emil: https://emil.fi/jako/kuvat/2017-07-01_14-55-16_BUIUXux5.png
07:26 AM Emil: 171 leds
07:26 AM Emil: polprog: what was that ic you used for led driving?
08:16 AM julius: pcb looks nice
08:16 AM julius: must be cool to just order such things without that much soldering....most of the copper already in place
08:25 AM Emil: You can do that, too?
08:26 AM Emil: It's only 4,9$ plus shipping (like 2$ iirc)
08:26 AM Emil: And you get 10pcs 100x100mm
08:34 AM julius: oh 10?
08:34 AM julius: nice
08:35 AM julius: when my current project is "done" i will take a look at creating pcb's
08:37 AM julius: void main(void) __attribute__((noreturn)); <-- In AVR GCC, a prototype for main() is required so you can declare the function attribute to specify that the main() function is of type "noreturn". why would i do that?
08:37 AM julius: ive got running code where main is supposed to return int, but since main never returns...its uselesss anyway
08:37 AM Emil: https://emil.fi/jako/kuvat/2017-07-01_16-06-52_Pp7hZiGG.png
08:37 AM Emil: julius: why would you do that?
08:38 AM julius: reading the code for a ds3231 here
08:39 AM julius: i mean, whats the practical implication of having "void main(...." instead of "int main(...." ?
08:39 AM julius: since the return type seems to be the only thing that changes+
08:39 AM Emil: Nothing
08:39 AM Emil: there is no ret placed even if it was int
08:40 AM Emil: it's just a stupid C convention that main is of type int returning
08:40 AM Lambda_Aurigae: isn't seeed just a front for dirtypcbs?
08:40 AM Emil: Is it?
08:40 AM Emil: I think not?
08:42 AM Lambda_Aurigae: hmm...seeed is cheaper
08:42 AM Emil: The component count of this project is killing me though :D
08:42 AM Emil: Fortunately I don't have to place current limiting resistors
08:43 AM Emil: But I bet this clock will rf everything if the drivers use pwm
08:43 AM Emil: though I could just select a smaller constant current and drive at full on (no pwm)
08:45 AM julius: ah ok
08:46 AM polprog: Emil: that was TLC5940
08:47 AM Emil: polprog: and it actually does constant current drive
08:47 AM Emil: and not pwm
08:47 AM polprog: PWM'd constant current
08:47 AM Emil: Aww
08:48 AM Emil: So it probably works by having a constant current source that you switch on and off
08:48 AM Emil: Too bad for EMI :D
08:49 AM polprog: yeah, they say in the datasheet to make led traces as short and straight as possible
08:50 AM polprog: not sure if they make non-pwm current source/sink drivers
08:52 AM julius: sometimes i think that theres a rule telling coders not to write simple explanations in their sourcecode
08:52 AM julius: or theres a rule that forbids documentation at all
08:53 AM Emil: polprog: they do
08:53 AM Emil: polprog: I just fear they are wayyyy too expensive :D
08:53 AM Emil: julius: wat
08:55 AM julius: u8glib for example....no comments at all
08:55 AM Lambda_Aurigae: documentation is evil!
08:55 AM Lambda_Aurigae: code comments are the work of the devil!
08:55 AM Emil: Lol
08:56 AM Emil: again with pricing at digikey
08:56 AM julius: just some obscure ones whre the author wrote his thoughts, but never explaing why he did what
08:56 AM Emil: 250 leds is cheaper (not just per led but actually cheaper) than 200 leds
08:56 AM Lambda_Aurigae: if you comment code then other people can figure it out and you might lose your job.
08:56 AM Lambda_Aurigae: Emil, quantity discounts, eh?
08:56 AM julius: thats a good reason
08:56 AM julius: but he did put it on github
08:57 AM Emil: Lambda_Aurigae: BUT HOW CAN YOU SELL THEM _CHEAPER_ :DDD
08:57 AM Emil: I mean, per led I would totally understand
08:57 AM Emil: but total price still cheaper :D
08:57 AM julius: maybe nobody thought of that
08:57 AM Lambda_Aurigae: Emil, I see it all the time.
08:58 AM julius: its like when coca cola had a calculation error in the ammount of sugar in its products...the 0,33l products had a bit more in it than what 3,3*100ml contains...
08:58 AM Emil: Lambda_Aurigae: well, apparently yeah, but I cannot for the love of the allmighty understand what the actual fuck is the logic behind it
08:58 AM julius: somewhere there was a code error that calculated the wrong values
08:59 AM Emil: Hmm, my clock would cost like at least 25€ in components alone :D
08:59 AM Lambda_Aurigae: Emil, sell at 10% below cost and make up for it in quantity.
08:59 AM Emil: and it necessities that you have your own power source
08:59 AM Emil: Lambda_Aurigae: it still does not make sense
09:00 AM Lambda_Aurigae: of course not.
09:00 AM Emil: 200 leds for 15€ vs 250 leds for 13€
09:00 AM Lambda_Aurigae: you asked for the logic in it...I gave it.
09:00 AM Lambda_Aurigae: didn't say it was good logic.
09:01 AM Emil: Hmm
09:01 AM Emil: Should I or should I not pizza today
09:02 AM Emil: Nah, gotta resist the urge plus I have plenty of food
09:03 AM Lambda_Aurigae: got a date night tonight.
09:04 AM Lambda_Aurigae: gonna go shopping at home depot then out to dinner at olive garden.
09:04 AM Emil: Lambda_Aurigae: nice
09:04 AM Emil: >olive garden
09:04 AM Lambda_Aurigae: yeah..wifey and I like olive garden.
09:05 AM Lambda_Aurigae: and home depot has a sale on ryobi 40V outdoor tools....weedwacker and chainsaw.
09:05 AM Emil: hehe
09:05 AM Emil: So much for a datenight ;)
09:05 AM Lambda_Aurigae: that is our date night!
09:05 AM polprog: have fun
09:05 AM polprog: :)
09:05 AM Emil: "Just a second honey this I have to check out this tool"
09:05 AM Lambda_Aurigae: wifey likes home depot as much as I do.
09:05 AM Emil: Not bad
09:06 AM Lambda_Aurigae: she is a good iowa farm girl.
09:06 AM polprog: home depot sells just gardening stuff or cutlery and home stuff too?
09:07 AM Lambda_Aurigae: tools, home improvement stuff, wood, cabinetry, gardening stuff
09:07 AM Lambda_Aurigae: electrical, plumbing, hvac,
09:07 AM Lambda_Aurigae: general home improvement store.
09:07 AM Lambda_Aurigae: big honking hardware store.
09:08 AM Lambda_Aurigae: only retailer that sells ryobi too.
09:08 AM Lambda_Aurigae: all my cordless power tools, and some of the corded ones, are all ryobi.
09:08 AM Lambda_Aurigae: not commercial grade but they do the job well enough.
09:09 AM Lambda_Aurigae: and all the cordless stuff I have is the ONE+ system so they all use the same batteries.
09:09 AM Lambda_Aurigae: about to get into the 40V Roybi world too.
09:09 AM polprog: i should get a cordless electric drill
09:09 AM Lambda_Aurigae: ONE+ is 18V
09:09 AM polprog: maybe makita
09:09 AM Lambda_Aurigae: makita is good commercial grade but costs a bit more than ryobi.
09:10 AM polprog: ill see what they have in hardware stores around
09:10 AM Lambda_Aurigae: dewalt is the preferred generally but again, pricy.
09:11 AM polprog: i think my uncle has a set of bosch tools
09:11 AM polprog: but that's probably even more expensive
09:12 AM Lambda_Aurigae: I have 3 drills, stapler, 2 nail guns of different gauges, jigsaw, 2 sanders, compound miter saw, 2 different size circular saws, and a router that all use the same batteries.
09:13 AM Lambda_Aurigae: also, portable air compressor and flashlight.
09:13 AM polprog: router?
09:13 AM Lambda_Aurigae: palm router
09:13 AM polprog: ??
09:13 AM Lambda_Aurigae: also called a trim router
09:13 AM Lambda_Aurigae: http://www.homedepot.com/p/Ryobi-18-Volt-ONE-Trim-Router-Bare-Tool-P601/206955202
09:14 AM antto: is it 100mbit at least?
09:14 AM polprog: ah this :P
09:14 AM polprog: that one is 29'000RPM
09:14 AM julius: Lambda_Aurigae: that sounds like a pretty nice datenight
09:14 AM Lambda_Aurigae: antto, 29Krpm so it makes lots of bits really fast!
09:15 AM Lambda_Aurigae: julius, yeah..we might go to the ReStore too.
09:15 AM polprog: lol, there's a $200 kit of a makita drill and a mower
09:15 AM antto: ;P~
09:15 AM polprog: what are they thinking
09:15 AM Lambda_Aurigae: Habitat for Humanity ReStore...companies and private people donate stuff from construction projects and they resell it cheap-ish
09:15 AM polprog: maybe the drill is there to fix the mower :P
09:18 AM polprog: nice, there's a ryobi dril for $150
09:18 AM Lambda_Aurigae: 99 dollars for the drill and battery kit.
09:18 AM Lambda_Aurigae: http://www.homedepot.com/p/Ryobi-18-Volt-ONE-Lithium-Ion-Compact-Drill-Driver-Kit-P1811/205651590
09:19 AM polprog: it's a bit more expensive here in europe :P
09:19 AM Lambda_Aurigae: a couple of weeks ago there was a sale, buy that drill kit and get another ryobi tool of 79 dollars or less value for free.
09:19 AM Lambda_Aurigae: so, bought a drill for my father-n-law for father's day and I got the router free.
09:21 AM Lambda_Aurigae: gonna try to get a hammer drill on date night too...hehe
09:21 AM polprog: nevertheless, it's an odd plae for a date :P
09:21 AM polprog: place*
09:22 AM Lambda_Aurigae: still fun.
09:22 AM Lambda_Aurigae: we look at things we can get for house upgrades.
09:23 AM Lambda_Aurigae: or lawn and garden stuff.
10:09 AM julius: if ( u8g->cursor_fn != (u8g_draw_cursor_fn)0 )
10:09 AM julius: what maniac writes code like that? whats with the cast at the right side, what is that good for?
10:10 AM Emil: Otherwise the compiler might shout at you
10:10 AM Tom_itx: you only get one question
10:14 AM cehteh: if ( u8g->cursor_fn) should be simpler :D
10:16 AM mark4: so im trying to build some asm code and if i set org = 0 it builds. if i set org= x020000 (boot section) it fails with some bogus link error
10:16 AM mark4: relocation truncated to fit: R_AVR_13_PCREL against
10:16 AM mark4: telling me that a rjmp backwards to a local lable thats only a few opcodes away is out of range
10:17 AM mark4: bs
10:20 AM mark4: this is not C code, its pure asm
10:28 AM polprog: is it windows or linux?
10:31 AM mark4: im in windows uing the avr gnu assembler
10:35 AM mark4: grrr i set org 0x20000 and my code is being assembled to 0x0000
10:36 AM polprog: avr-as or avr-gcc?
10:37 AM polprog: hmm
10:37 AM polprog: how do you set org?
10:39 AM mark4: .org BOOT_START
10:39 AM mark4: #define BOOT_START 0x20000
10:39 AM mark4: and its actually putting my code at addess 0x010000
10:39 AM mark4: not 0
10:40 AM polprog: i have .org 30 after global main and it puts the code at 5a
10:40 AM mark4: i dont have a main
10:41 AM mark4: 30 is 0x1e
10:41 AM mark4: not 5a
10:41 AM polprog: yeah
10:41 AM polprog: odd
10:41 AM polprog: oh
10:42 AM polprog: now it works, i used avr-as instead of avr-gcc and it put it at x1e
10:42 AM mark4: i have no idea if avr-as or avr-gcc is being called by the tools
10:42 AM polprog: that's a problem
10:42 AM polprog: try calling avr-as directly
10:43 AM mark4: how
10:44 AM polprog: i just put a main method and compile it with avr-gcc because it puts some stack init code and jumps to __bad_interrupt stuff before the real code, that would explain putting it at 5a then
10:44 AM polprog: you call it with avr-as file -mmcu=[avr part no]
10:44 AM mark4: its using avr-gcc
10:44 AM polprog: ok
10:44 AM mark4: no im NOT using the command line
10:44 AM mark4: :/
10:45 AM polprog: look at those two outputs
10:45 AM mark4: how do i tell atmel studio to use the assembl;er to build asesmbler sources
10:45 AM mark4: NOT the c compiler
10:45 AM polprog: i dunno
10:45 AM mark4: i dont think i can
10:45 AM polprog: but look at the difference btween calling-avr-gcc and avr-as
10:46 AM mark4: i ***NEED*** avr assembler with c pre-processor
10:46 AM mark4: how?
10:46 AM mark4: no. i can N O T call the assembler directly on my project from command line
10:46 AM polprog: ok
10:46 AM mark4: thats where i would rather be however
10:46 AM mark4: its not an option
10:47 AM polprog: so bear in mind that avr-gcc adds interrupt handling code before main
10:47 AM polprog: or the code you rote
10:47 AM polprog: https://paste.debian.net/974246/
10:47 AM mark4: no it does not
10:47 AM polprog: yes it does
10:47 AM polprog: look
10:47 AM mark4: i said no start files and no libs
10:47 AM mark4: there is also NO MAIN lol
10:47 AM polprog: ok, pardon main
10:47 AM polprog: :)
10:48 AM mark4: there is no code added to my project except that which is derived DIRECTLY from its sources
10:48 AM mark4: no startup files. no libs. no NOTHING. at all
10:48 AM polprog: do you have an object file you can decompile?
10:48 AM mark4: i have the elf
10:48 AM polprog: ok
10:48 AM mark4: i can objdump it
10:48 AM polprog: go ahead
10:49 AM mark4: what am i looking at with objdump? the disassembly?
10:50 AM polprog: avr-objdump -d file
10:50 AM polprog: yes, it's the disassembly
10:51 AM mark4: yup: no code injected by the build
10:51 AM mark4: at all
10:51 AM polprog: hmm
10:51 AM mark4: i told it not to
10:51 AM mark4: ok THIS is fucked up
10:51 AM mark4: the disassembly shows the origin to be 0x20000
10:51 AM polprog: can po paste the output somehwere
10:51 AM polprog: ?
10:51 AM mark4: if i program the device the code gets located to address 0x10000
10:52 AM mark4: well the project will be open sourced once i get it working
10:52 AM mark4: i could send you the entire project lol
10:52 AM polprog: maybe theres a problem at the poin where you convert the elf to hex
10:52 AM mark4: i dont
10:52 AM polprog: ah, atmel studio
10:55 AM mark4: i click a button, it builds, it writes the resultant executable to the device with my avr dragon
10:55 AM mark4: if i say "debug it" it shows me the disassembly with the program counter on address 0x20000
10:55 AM mark4: no code in site. all nops
10:55 AM polprog: its gonna be hard without looking at the files it creates (because it has to if it uses GCC toolchain)
10:55 AM mark4: code has been written to address 0x10000
10:56 AM mark4: want me to zip up the project and email it to you?
10:56 AM polprog: so the direct output of the compiler, then linker
10:56 AM mark4: its not "top secret" its just "not finished" so not released
10:56 AM polprog: :P
10:56 AM polprog: we could try DCC'ing it via IRC
10:56 AM mark4: pm me your email and ill send you the project
10:57 AM mark4: i doubt it will work lol lets try
10:57 AM polprog: ok
10:57 AM mark4: zip first
10:58 AM mark4: offering file. bet you dont see it being offered
10:58 AM polprog: i dont
10:59 AM polprog: ill pm you the main
10:59 AM polprog: mail*
10:59 AM rue_shop3: file was set on fire going thru a wall
11:01 AM mark4: wall was set on fire :P
11:02 AM rue_shop3: that would expalin it
11:27 AM mark4: can anyone here tell me how to reposition the disassembly in atmel studio to a specific address without using page up/page down till i get there?
11:28 AM BongoShaftsbury: rue what's your shop like
11:28 AM mark4: there doesnt seem to be a way to say "view disassembly from address 0xnnnnnnnn"
11:29 AM mark4: oh yea there is it was just not obvious
11:29 AM mark4: however. tell it to disassemble 0x10000 and it jumps to 0x8000
11:30 AM mark4: lol tell it to disassemble 0x20000 and it disassembles 0x10000
11:30 AM mark4: oooh duh
11:30 AM mark4: yea. program memory here is in words but .org assumes byte address
11:30 AM mark4: i need to make my .org 0x40000 !!!!
11:31 AM polprog: duh
11:31 AM mark4: thats the discrepancy polprog
11:31 AM mark4: yea
11:31 AM polprog: lol
11:32 AM mark4: to me thats a bug
11:32 AM mark4: in the tools
11:36 AM Tom_itx: word vs byte boundaries
11:39 AM Emil: https://www.youtube.com/watch?v=Ua4DK3tiyz8
11:39 AM Emil: mark4: no, it's that you think wrong
11:39 AM polprog: that's a bit hardcore holidays
11:40 AM Emil: I was hoping it would show like how to survive
11:40 AM Emil: but it was more like a spiritual art movie
11:40 AM Emil: watched it anyways, was pretty good
11:40 AM Emil: But perhaps not for everyone
11:40 AM polprog: is it like fargo?
11:41 AM polprog: if so , i'm out
11:41 AM polprog: :P
11:41 AM Emil: fargo?
11:41 AM polprog: the only cohen bros movie i cant stand
11:41 AM Emil: That was a documentary
11:42 AM Emil: spiritual documentary
11:49 AM mark4: anyone here have any experience with the atxmega256a3bu?
11:49 AM mark4: trying to switch to the external 32mhz xtal
11:49 AM mark4: turn on xtal. wait for it to become stable. it never becomes stable
01:32 PM rue_house: are the caps right?
01:34 PM cehteh: breadboard? long wires?
01:34 PM rue_house: chineese crystal?
01:35 PM cehteh: fake crystal :)
01:35 PM rue_house: or cracked
01:35 PM cehteh: rock'n'roll instead swing? :)
01:36 PM rue_house: I'v seen lots of walkie-talkies fail cause of cracked crystals
01:37 PM rue_house: well, I had a spool of PLA turn into a bunch of bracelets all on its own...
01:37 PM rue_house: wasn't a good spool anyhow...
01:38 PM rue_house: anyone have code for a max7219?
01:38 PM rue_house: hmm
01:39 PM rue_house: writeColumn() init64() setbrighness()
01:56 PM Lambda_Aurigae: who was it in here kept wanting to make the big expensive quadcopter?
01:57 PM Lambda_Aurigae: https://hackaday.com/2017/07/01/manned-multirotor-flies-again-electric-style/
01:59 PM Lambda_Aurigae: 168Kg flying thingie...with 76 rotors.
02:01 PM Emil: rue_house: I have a driver for it
02:01 PM Emil: rue_house: whatcha want to know?
02:01 PM Emil: and it was enhering iirc
02:15 PM polprog: hah, i was looking at that max7219 a bit of time ago
02:15 PM polprog: couldnt get it anywhere conveinient
02:32 PM evil_dan2wik is now known as dan2wik
03:51 PM Emil: It's a tricky shit
03:51 PM Emil: Had to give up and look at what other drivers do
03:51 PM Emil: Had everything but one small thing
03:52 PM Emil: "Programmers hate him!"
03:52 PM Emil: "Learn the truth behind the datasheet"
04:03 PM rue_shop3: polprog, still intersted?
04:04 PM Emil: Wait
04:04 PM Emil: Am I on rue's ignore
04:04 PM Emil: lol
04:04 PM rue_shop3: ?
04:04 PM Emil: ah, no then
04:04 PM rue_shop3: whatever
04:27 PM toblorone: Hi is anyone familiar with the st hal libraries? I'm wondering if I can use the flash drivers for persistent storage?
04:28 PM toblorone: Sorry if this isn't directly related to avr, but this seems to be the only embedded dev channel
04:31 PM toblorone: Specifically I'm trying to figure out what addresses would be safe to write
04:32 PM Emil: toblorone: ##stm32
04:32 PM Emil: But only if you can survive their absolute propietary shilling
04:33 PM Emil: toblorone: you want to know where you can write?
04:33 PM toblorone: ha what do you mean? They'll try to push their toolchain etc on me
04:33 PM toblorone: yea
04:33 PM Emil: toblorone: if you you tell them you are using a)gcc, b) open source, c)linux or d) anything not propietary you'll get cancer on that channel
04:33 PM Emil: guaranteed
04:33 PM Emil: anycase
04:34 PM Emil: check the datasheet for memory layout
04:34 PM Emil: And what your own shit uses
04:34 PM Emil: There's also probably a section that's dedicated to "eeprom" but is probably just flash
04:35 PM toblorone: when you say "what your own shit uses" you mean where my program gets written to?
04:38 PM Emil: yeah
04:39 PM Emil: You can tell the compiler and linker about that iirc
04:39 PM Emil: and then the programmer
04:39 PM Emil: and you can also reserve flash space imho
04:41 PM Emil: http://www.st.com/content/ccc/resource/technical/document/application_note/ee/ef/d7/87/cb/b7/48/52/CD00165693.pdf/files/CD00165693.pdf/jcr:content/translations/en.CD00165693.pdf
04:41 PM toblorone: Emil: So looking at this: http://imgur.com/a/JAK0h 0x800 and 0x801 may be safe, i'll check the linker script
04:41 PM Emil: http://www.st.com/content/ccc/resource/technical/document/application_note/2e/d4/65/6b/87/dd/40/25/DM00049914.pdf/files/DM00049914.pdf/jcr:content/translations/en.DM00049914.pdf
04:41 PM Emil: http://www.st.com/content/ccc/resource/technical/document/application_note/ec/dd/8e/a8/39/49/4f/e5/DM00036065.pdf/files/DM00036065.pdf/jcr:content/translations/en.DM00036065.pdf
04:41 PM Emil: Those should get you started
04:41 PM Emil: (just select the appropraite one)
04:41 PM toblorone: oh great, thanks
04:42 PM Emil: I just googled "stm32 using flash as eeprom"
04:57 PM rue_shop3: 16 bit packets
04:58 PM rue_shop3: so the library basically just needs to define the packets to go out
07:23 PM dan3wik is now known as dan2wik
09:57 PM Tachaway` is now known as Tachyon`