00:00:00 --- log: started forth/03.07.12 02:39:00 --- quit: w1k1 (Read error: 54 (Connection reset by peer)) 03:11:38 --- join: w1k1 (~w1k1@pD954599A.dip.t-dialin.net) joined #forth 04:41:48 --- join: w1k1_ (~w1k1@pD9E59CB2.dip.t-dialin.net) joined #forth 04:52:14 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 04:59:31 --- quit: w1k1 (Read error: 110 (Connection timed out)) 05:40:35 --- join: Robert__ (~snofs@h126n2fls31o965.telia.com) joined #forth 05:40:35 --- quit: Robert (Read error: 54 (Connection reset by peer)) 05:40:43 --- nick: Robert__ -> Robert 05:51:50 --- nick: w1k1_ -> w1k1 06:14:23 --- quit: tathi ("leaving") 06:38:21 aye 06:39:40 is it possible to define a word inside a word definition (in ans)? 06:41:02 like :main 1 2 3 :sub 4 5 6 ; ; 06:42:43 Robert: HAM HAM ;-) 06:43:01 preparing for a license? 06:45:22 Yes :) 06:45:54 And, uhm... why would you even want to use a nested word definition? 06:46:06 Also, You forgot the space after the colon. 06:46:24 erm, yes 06:46:36 looks wierd, i know.. 06:47:14 not my idea, seen on win32forth OOP page 06:47:41 (the first time ever) 06:48:07 Okay, 06:52:38 gotcha, :Class and ;Class are predefined words.. 08:40:25 Ficl 4.0 features a major engine rewrite. Previous versions of Ficl stored compiled words as an array of pointers to data structure; Ficl 4.0 adds "instructions", and changes over to mostly using a "switch-threaded" model. The result? Ficl 4.0 is approximately three times as fast as Ficl 3.03. 09:10:30 --- join: Herkamire (~jason@h0030657bb518.ne.client2.attbi.com) joined #forth 10:53:42 --- join: ASau (~asau@158.250.48.196) joined #forth 10:54:03 Good evening! 10:54:18 Dobryj veczer! 10:55:08 Privet, ASau! 10:56:37 Robert, I know you're asm programmer (IIRC) 10:56:55 Do you have any sources for old DOS virii? 10:57:27 Or, maybe, live virii? 10:59:19 I used to write that kind of thing when I learnt asm... 10:59:30 Not sure if I still have many sources. 10:59:39 Uhm.. one is on my page, don't know about the rest. 11:00:02 http://robert.zizi.org/pub/lame/s5.zip 11:14:07 Aha! 11:15:06 I see you've written your own OS... 11:15:29 Now I know who can consult me from time to time ;) 11:15:30 Well.. not really. :) 11:16:25 Can you OS access keyboard, FDD, HDD, screen? 11:23:13 No, just keyboard and screen. :) 11:23:34 But a simple HD interface isn't hard, just look at colorforth.com ;) 11:25:48 That's good. 11:26:04 Not very 11:26:45 Just I'm more high-level man. :) 11:27:15 BTW, what is your date format? 11:27:25 YYYY-DD-MM or YYYY-MM-DD? 11:29:16 The latter. 11:29:22 We're not stupid americans! 11:29:23 :) 11:30:18 We're not Japans :) 11:30:31 Our dates are DD-MM-YYYY. :))) 11:31:07 "Pervoje sentjabrja 2003-go goda" :) 11:31:21 "1-je sent. 2003-go" 11:31:49 --- join: divgrad (~wer@81.25.34.17) joined #forth 11:32:20 Good evening, Laplacian! :) 11:32:32 Goodhi 11:35:21 are there any forth news? 11:36:24 There're no news forth. They will never come real. :) 11:36:45 If they come they'll stop being new. :))) 11:37:19 Actually, I haven't heard anything. 11:37:23 "I said you to come tomorrow, but you always come today!" 11:39:02 I'm thinking about boot-loader and protected mode. 11:39:27 well, if news doesnt want to happen, then I have to produce it myself 11:39:28 For my own OS, of course. ;) 11:39:41 Wah! 11:40:11 I'm ready. 11:41:10 ready? but my news is not yet ready 11:41:33 A-a-a. I thought you had ones. 11:43:59 im still pregnant with it 11:44:14 --- join: mur (jukka@baana-62-165-187-97.phnet.fi) joined #forth 11:47:11 Dobryj veczer, mur! 11:48:20 privet aleksej! 11:50:56 oba na 11:51:09 lol 11:51:16 Aga, ischo odin... 11:51:20 * divgrad rofls 11:51:33 LSD? 11:51:39 :P 11:51:48 * divgrad just falls off the chair 11:51:56 yes, lsd 11:51:59 that is 11:52:28 No. 11:52:33 That's not LSD. 11:52:38 podumal 'mur' eto sovpadenie ili net - okazalos net 11:53:07 moi russkij ochen ploho ;) 11:53:14 divgrad, OK, now in English, ili otdelno. 11:53:35 ne panimaju po-russkij 11:53:44 o 11:53:54 ok 11:53:56 mur, "oba-na" is our Russian exclamation 11:54:33 sovpadenie sounds evilish familiar, what did it mean? 11:54:43 sovpadenija 11:54:44 mur, where in the world are you? 11:54:49 /whois 11:55:21 coincidence 11:55:49 and i said lsd because you coudlnt hold your laugh ;) 11:55:55 i meant a russian writes Moore as Mur 11:56:22 ok 11:56:24 njujork snaesh 11:56:26 snaju 11:56:30 ops :) 11:57:04 are you there? 11:57:13 no 11:57:13 finland 11:57:20 what was to write? 11:57:32 where then? 11:57:33 and pronounce or say 11:57:34 New-York, of course! 11:57:38 ;) 11:57:58 no 11:57:59 Or, New-Helsinki :) 11:58:05 helsinki only 11:58:06 soon 11:58:08 not currently 11:58:28 but what is to write and to pronounce? 11:58:32 are 11:58:41 and i'll form another sentence 11:58:45 New-Vasjuki :) 11:59:14 njumoskva 11:59:46 Moskva is too big. 11:59:48 ja snaju shto imeni -written- po-russkij kak -pronounced- 12:00:09 Vasjuki is a small village ;) 12:00:11 and too noisy 12:00:13 i want to move to japan 12:00:16 It's an old juke. 12:00:19 joke 12:00:27 ok ;) 12:16:24 --- join: crc (~crc@AC8407BF.ipt.aol.com) joined #forth 12:17:01 Good evening, crc! 12:17:14 Hello ASau 12:17:20 That's good, I've met you. 12:18:07 I've been reading the latest posts on the Retro Forum 12:18:15 We can speak about Retro or Forth now 12:18:16 . 12:18:51 I'm working on getting Retro to a more traditional implementation of Forth 12:19:16 Using normal word names, register names, etc 12:21:52 I'll answer with delays. But I'm here or offline. 12:23:26 I think, we could go another way with Retro. 12:24:15 --- join: Robert__ (~snofs@h126n2fls31o965.telia.com) joined #forth 12:25:40 If we could provide easily customizable sources for boot-loader(s), factorizations of I/O words etc, we could get support from others, because they could follow us with their own Forthes, partly. 12:26:05 --- join: _crc (~crc@AC8407BF.ipt.aol.com) joined #forth 12:26:31 --- quit: crc (leguin.freenode.net irc.freenode.net) 12:26:31 --- quit: mur (leguin.freenode.net irc.freenode.net) 12:26:31 --- quit: Robert (leguin.freenode.net irc.freenode.net) 12:26:32 --- quit: Klaw (leguin.freenode.net irc.freenode.net) 12:26:35 --- nick: _crc -> crc 12:26:48 --- join: mur (jukka@baana-62-165-187-97.phnet.fi) joined #forth 12:26:48 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 12:26:48 --- join: Klaw (chuck@ip68-99-187-95.oc.oc.cox.net) joined #forth 12:27:22 What's up with you? 12:30:45 Working on the assembler at the moment 12:31:02 I can't get inline definitions to work 12:31:44 It's strange. 12:32:09 It took me one day to hack. 12:32:52 Don't forget to switch back to your DTC. 12:34:53 --- quit: Robert (Connection timed out) 12:39:47 Some thoughts about Forth OS. 12:40:46 Let us conside the worst case, we can get binary image, that is loaded at constant address in memory. 12:40:55 consider 12:42:25 Generally the binary image has to be loaded at a specific address 12:42:33 If we write boot loader that places it at _generic_ address and jumps to generic address, than we get almost OS. 12:43:15 crc, That's x86 problem, but some code is positially independent. 12:43:26 generic = *any* address? 12:43:46 I'm familiar with the problems with x86 :) 12:44:39 I mean we can specify it, patch or another way reconfigure, but it is rather easy. 12:44:52 I have been doing some work a version which can be loaded at any address 12:45:00 I'd liked to see such thing: 12:45:21 It will add a little overhead, but hopefully not much. 12:45:30 cat loader image> os 12:45:43 or: copy/b loader+image os 12:45:53 then rawrite and reboot. 12:46:24 I used to do that, but I need to rewrite the floppy boot sector 12:46:30 It should be like container. 12:46:56 I've seen something like this in I-net. 12:47:02 The old one only worked on a few systems (required multitrack reads) 12:47:09 Just a rocket launch. 12:48:12 Well, I'll clarify. 12:50:01 In the beginning we have a contiguous image in memory and IP poining at the beginning of it. 12:51:45 In the end we should get contiguous part of this image (except of loader), but starting at preconfigured address and IP pointing at (another) preconfigured address. 12:52:00 Two cases can be: real mode and protected mode. 12:53:06 Another thing is boot sector, it should load contiguous image from disk into memory. 12:53:34 We've factored task of OS writing. 12:53:40 Congratulations ;) 12:53:52 :) 12:55:03 Now OS writer only has to obtain binary image of its OS and no relocating loader. 12:56:02 That's not too hard to implement. Until Build 9 or 10, Retro used a similar method 12:57:30 Let's count amount of configuring info. 12:57:44 1) loading address, origin. 12:58:04 2) starting address, entry point. 12:58:21 at most: 8 octets. 12:58:49 cat loader origin entry image >os-image 13:00:13 For hobbyist's OSes and some professional small OSes, there should be real-mode loader. 13:00:26 In an x86 PC, the loader is always at 0x7c00 13:00:49 That's boot sector, not the loader mentioned. 13:01:11 Ok, so you're assuming a two stage loader 13:01:21 Boot Sector = 0x7c00 13:01:30 We can add stages later. 13:01:50 1. Boot sector, loaded. 13:02:07 2. Boot sector loads os-image. 13:02:34 3. Relocator moves image to appropriate place and runs it. 13:03:27 4. (Possibly) enters prot.mode runs more "true" image. ;) 13:04:11 Rationale for such factorization: 13:04:23 1) it becomes simpler 13:05:22 2) I can easily load relocator+os-image from DOS as COM file or in EXE container. 13:05:49 That's like rocket lauching: stage after stage. 13:06:14 are you building rocket? :) 13:06:22 One stage has finished, started new stage and burned away. 13:06:25 let's fly to moon :) 13:07:34 I'm seeking ideas. ;) 13:07:43 --- join: wossname (wossname@HSE-QuebecCity-ppp80336.qc.sympatico.ca) joined #forth 13:07:54 Good evening! 13:08:10 Not evening, night. 13:08:11 ^__- 13:08:26 It's not too different than what I'm doing now. 13:08:38 1. Boot Sector loads IMAGE file from FAT12 floppy 13:09:12 2. IMAGE has a realmode loader which sets up pmode, relocates the "kernel" 13:09:17 3. Switch to kernel 13:10:03 Or in the older "raw floppy" method: 13:10:12 1. Boot sector 13:10:23 a. load image 13:10:28 b. Switch to pmode 13:10:33 c. Relocate image 13:10:41 2. Jump to kernel 13:11:43 Two stages should suffice for most OSes, especially a ForthOS 13:12:17 I think we should make factors of loader be as independent as it can be. 13:12:50 This way we can save more time later. 13:13:12 It seems that new way is better. 13:13:25 That's not too hard to do. Each layer just loads the next as needed. 13:14:05 Loading the OS is the easy part. Getting the drivers working is the biggest pain in OS development. 13:14:15 Anyway, I don't think there is need to count bytes if we have 1,4 M of them. 13:14:53 Drivers is another question. 13:15:03 I'm thinking on it. 13:15:10 The problem comes when you are loading from a hard drive. 13:15:45 Hm. Elaborate, please. 13:15:53 You have to contend with partitions and different access conventions. 13:16:29 --- quit: divgrad (Read error: 113 (No route to host)) 13:16:29 Just loading 1,44 MB from the drive won't work since you have to find out where your partition is first 13:17:01 That complicates disk stage of loader. 13:17:14 Right. 13:17:31 You can't assume 1,44 MB though. 13:18:11 Even with floppies, loading 1,44 MB can be problematic. 13:18:27 Solution: we can configure disk stage on writing to hard drive, or use another version of disk loader. 13:18:59 If there are any flaws on the floppy, loading will fail 13:19:54 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 13:20:13 Solution: write a list of sectors used to store loading image. Of course, it's compilcation. 13:20:21 Good evening, tathi. 13:20:30 So you have a count value in the boot sector and loaders, it's easy to patch the values 13:20:32 Hi, ASau. 13:21:01 Using a list of sectors is a pain. 13:21:24 Don't get it too much. 13:21:37 I don't think it is a real problem. 13:22:22 More simple solution is using one sector number, displacement to contiguous range that has no flaws. 13:22:22 That's why I've moved to a FAT12 boot sector; it lets me put the loader+kernel anywhere in the root directory without worrying about the exact size or location of the image 13:23:13 That's also solution, but it is even more complex. You have to deal with FAT. 13:23:40 Just loading sequental sectors works for floppies 13:23:59 Actually FAT isn't a big pain to deal with. 13:24:24 If you had FAT16, it would be easier. 13:24:29 It's pretty well documented and fairly straightforward for reading files 13:24:53 I think that tcn is working on some FAT12/16 drivers 13:25:06 I've only dealt with FAT12. 13:25:22 I read documentation, I know, but it would be easier for bootloader to load sequence of sectors. 13:26:16 I'm trying to avoid reliance on a single method. 13:26:28 Retro supports both approaches easily. 13:31:38 Yet another GRUB. 13:31:46 No. 13:31:59 Maybe we could request such features from GRUBbers? 13:32:01 :) 13:32:27 You could, but GRUB doesn't seem to be recieving much development lately. 13:32:52 What I want from GRUB is a way to load a flat binary image at a specified memory address. 13:32:53 Drawbacks: 13:32:56 1) C; 13:32:59 2) GPL. 13:33:13 3) GNU C. 13:33:34 What is wrong with C? 13:33:52 GNU C is not a C. 13:34:00 (As a language, not the libraries generally associated with it) 13:34:02 Just like GNU is not UNIX :) 13:34:23 Too many incompatible extensions. 13:34:40 But the extensions are in the _libraries_ 13:34:54 The language itself is pretty compact and clean. 13:35:06 Not only. 13:35:23 I don't want to discuss GNU or C or both of them. 13:35:30 ok 13:36:32 It seems that keyboard driver factors out very easy. 13:36:55 The keyboard driver does factor nicely. 13:37:03 The only generic thing that connects it to other drivers is IRQ number. 13:37:30 And base address of HW interrupts. 13:37:30 Mine doesn't use interrupts or IRQ's :) 13:37:49 Polling? 13:37:58 Yes 13:38:31 I have to go, time for dinner :) 13:38:43 Well, just to start. I agree. 13:39:17 Ok. I'll try to be back on later... 13:39:19 --- quit: crc ("I was using TinyIRC! Visit http://www.tinyirc.net/ for more information.") 13:47:54 --- join: Stepan (~stepan@likes.smoking.and.watching.spacenight.dk) joined #forth 13:47:57 hey dudes 13:49:03 hey 13:54:43 Good ! 13:55:39 O! Dobry noczer! 13:55:49 :) 13:55:55 too long living underground ? ;) 13:57:13 A note on bulletin board. 14:00:21 For a hard work in hard underground and half-underground circumstances for dimploma or course-paper a student is needed. Call XX-XX, P-XX (Note: "P" is "podval", under ground). 14:01:28 I work in "half-underground". 14:04:00 Originally: Dlja raboty v tjazhjolykh podval'nykh i polupodval'nykh pomeshchenijakh po vypolneniju zamechatel'nykh kursovykh i diplomnykh rabot trebujutsja studenty. Zvonit' XX-XX, P-XX. 14:16:35 --- join: TheBlueWizard (TheBlueWiz@pcb2dn08.ppp.FCC.NET) joined #forth 14:16:35 --- mode: ChanServ set +o TheBlueWizard 14:16:39 hiya all 14:16:59 teRRRve 14:17:00 :) 14:17:07 Dobryj noczer! :) 14:17:22 kto ti skashali? ;) 14:17:50 noczer - eto prikrashnij ! 14:17:54 aja 14:18:06 "Dobroj noczi" is not greeting. 14:18:45 nocze != night? 14:18:46 :P 14:18:48 And it doesn't seem to be night, too many living souls arounf. 14:18:53 around. 14:19:24 It's closer to seem like evening, veczer. 14:20:42 On the other hand there's saying: 14:21:39 Those, who want to supper too late, is risking to have too early breakfast. 14:22:01 mur: teRRRRve taas! (sorry, was afk due to a mini emergency) 14:22:02 Kos'ma (Kuz'ma) Prutkov. 14:28:50 May be back, if not: good night! 14:28:54 --- quit: ASau ("Toffee IRC client for DOS v1.0/b535") 14:56:25 --- join: ASau (~asau@158.250.48.196) joined #forth 14:57:49 --- quit: ASau (Client Quit) 15:09:19 well, gotta go now... bye all 15:09:34 cya 15:09:48 bye mur 15:09:56 --- part: TheBlueWizard left #forth 15:40:40 --- join: hellhound (~Luarcub@200.62.185.214) joined #forth 16:02:15 --- quit: hellhound () 16:03:13 --- quit: Robert__ (Read error: 54 (Connection reset by peer)) 16:13:12 --- join: a7r (~a7r@206.72.82.135) joined #forth 16:13:33 hola. 16:20:13 --- quit: mur ("MURRR!") 16:21:45 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 16:26:00 --- join: ASau (~asau@158.250.48.196) joined #forth 16:28:17 --- quit: ASau (Client Quit) 16:29:11 --- join: ASau (~asau@158.250.48.196) joined #forth 16:30:41 --- quit: ASau (Client Quit) 16:31:14 hrm.. 16:31:20 is anyone doing any type of graphics with gforth? 16:39:12 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 16:39:12 --- mode: ChanServ set +o kc5tja 16:39:26 sup kc5tja 16:39:37 * kc5tja just overate. 16:39:49 werd. 16:39:52 Hi 16:40:00 Had a foot-long sub, which normally is just enough to fill me. But I also had a huge bottle of chocolate milk too, which alone fills me up big-time. :) 16:40:16 * kc5tja is hacking some on my next attempt at a Stirling cycle engine. 16:40:43 The first experiment in making a power piston was wildly successful -- 100% sealing. 16:40:57 I'm looking at inductor flybacks w/ FETs 16:41:23 I'm playing with ICs. 16:41:24 The next power piston has a hole drilled in the back, to let air in and out of the "cylinder", but I'm thinking the hole is a bit too small at 1/8". 16:41:35 * Robert feels like the most primitive experimenter in here ;) 16:41:53 Robert: Dude, don't. I'm trying to make a Stirling engine out of bottle caps and tuna fish cans. 16:42:05 haha 16:42:14 kc5tja: did I show you my latest datalogs of the RX-7? 16:42:16 It's quite possible to do, but it's **hard** to get 100% sealing. 16:42:22 a7r: No. 16:42:37 kc5tja: http://www.aereon.net/a7r/outgoing/alexboost.JPG 16:42:55 My '7 might be having some cooling system problems. Temperature gets to 50% w/out the AC, and it bona fide overheats with it on. 16:42:57 that's a quick run in 3rd gear 16:43:22 Is this taken from your own software? 16:43:25 yeah 16:43:39 although GNUplot graphed it. 16:43:42 Cool. Congrats!! :) 16:43:48 What are the axes? 16:43:58 X is seconds, Y is kilopascals relative to atmosphere. 16:44:20 here's my friend's WRX doing a 3rd -> 4th gear pull on the freeway: http://www.aereon.net/a7r/outgoing/brianboost.JPG 16:44:35 Interesting -- there is a lot of pressure noise. 16:45:10 Hmmm...... 16:45:17 those are the pistons opening and closing. 16:45:20 (or rotors) 16:45:24 His car has pretty constant boost, while yours changes. 16:45:41 he is using a computer controlled wastegate, mine is controlled by a spring. 16:45:44 Heh :) 16:45:48 AAAAaaaahhhhhh..... 16:45:56 yah. 16:46:00 I *SEE* now ... so you're trying to get yours controlled by computer too. 16:46:03 *GOTCHA*. :D 16:46:28 http://www.aereon.net/a7r/outgoing/plot3.PNG <- here you can see my 13B 'breathing' 16:46:46 the drops being when air is let into the rotor housing, and the spike when the rotor closes things off. 16:47:02 * kc5tja nods 16:47:19 Amazingly sinusoidal -- nice. 16:47:23 I should be able to graph it out perfectly if I jump to 1kHz or so. 16:47:29 I bet you the piston breathing isn't so "nice." :) 16:47:34 yeah 16:48:01 But Stirling engines have a nice sinusoidal pattern too. But you get more "boost" if the displacer is driven in a non-sinusoidal manner. 16:48:14 (but it takes more energy to do it, and is noisier) 16:48:41 That is really nice, man. You're a *LOT* farther along in your projects than ANY of mine. :) 16:48:51 Congrats. :D 16:48:55 thanks. 16:49:13 I wanted to run a circuit by you, I'm trying to get an understanding of. 16:49:35 Ehm.. excuse me, but what _IS_ a sterling engine? 16:49:41 StIrling engine 16:49:52 these guys have a FET driver, and some FETs they're controlling that are straight forward, but they have a really complex flyback circuit, that I don't have a handle on. 16:50:08 Stirling, sorry. 16:50:09 Robert: It's a hot-air engine invented by Rev. Robert Stirling in 1816, to address the critical problem of Mr. Watt's Wonderful Exploding Steam engines. 16:50:36 Robert -- let me get you a URL that will explain how they work. 16:50:42 Oh... so why do you try to construct that? 16:50:48 a7r: I can try. DO you have a URL? 16:50:59 Robert: Because I can, because it's fun, and because it'll ultimately be quite useful to me. 16:51:03 yeah 16:51:16 I can make a fan to circulate air in my room that doesn't run off of wall current, for example. 16:51:27 (it'll run off of solar radiant heat instead) 16:52:40 Oh, that's nice. 16:52:42 http://www.bekkoame.ne.jp/~khirata/english/begin.htm 16:52:51 Or you could make it generate power for your computers :) 16:52:53 Thanks. 16:53:00 Yeah, considering that most fans I've seen consume 15W to 25W of power. Iick. 16:53:08 Robert: Well, for *small* computers maybe. 16:53:09 :) 16:53:36 Robert: Unless I can make a 700W unit (the holy grail for a Stirling engine is a 1HP unit that is no bigger than a 5HP internal combustion engine). 16:53:45 You mean there are computers comsuming more than 1 mW? Oh... 16:53:47 Which I can do if I build myself, say, a V-24 or V-32 Stirling. :D 16:53:59 But that's a lot of nacelles for so little power -- and then I'd have no way to harness it. 16:54:03 But in a go-kart....bwahahahah! 16:54:10 kc5tja: the circuit on the left: http://www.aereon.net/a7r/outgoing/fetcontrol.png 16:54:27 You don't happen to know how much power a modern Pentium CPU uses? 16:55:06 80 to 160W is not uncommon. 16:55:12 My Athlon takes 85W 16:55:33 I think some of the CPUs built specifically for laptops drop down to 40W or so. 16:55:37 Still a *lot* of power for a CPU. 16:56:15 a7r: Generally, a flyback system has a tuned circuit or some kind of coil. I don't see any on this diagram. I don't know where anything goes or what they do. 16:56:35 kc5tja: okay, let me give you some context.. INJ1 and INJ2 are fuel injectors. 16:56:54 85W of power for a CPU? Wow... I think I should join greenpeace. 16:57:06 Hmm.. there's music on the AM broadcast band, strange. :) 16:57:14 kc5tja: and FLYB1 and FLYB2 are control lines from a microcontroller, as well as PWM2 and PWM1 16:57:15 When FLYB1 goes high, T5's collector is shorted to ground. This will turn on T3, which develops V+ on INJ1. 16:58:04 nod, I got that part, but take for instance D17 16:58:25 Not sure what kind of diode that is. 16:58:36 I'm assuming it's schottky? 16:58:37 I think it's a straight up 16v zener 16:58:43 Oh, Zener. 16:59:03 (these are all euro symbols) 17:00:03 Yeah, and I'm not familiar with them, except for the cap and resistors. :) 17:00:36 I really don't see the relationship between INJ1 and FLYB1. 17:00:44 err, PWM1. 17:00:51 INJ1 is clearly an output. 17:00:58 yeah, I think it ends up being this 17:01:08 It almost seems like T3 is forming part of a high-voltage/current OR gate, but I'm not certain of that. 17:01:38 FLYB1 is enabled to cause the injector to close quicker, providing a 'means of escape' when INJ1 stops driving the injector. 17:01:50 and also to protect the FET 17:01:54 I'm assuming 34151 is a non-inverting buffer? 17:02:06 yeah 17:02:18 actually, it might be inverting. 17:02:38 OK, so the flyback is a circuit for draining the stored energy in the injector's solenoid coil then. 17:02:45 It prevents arcing and breakdown on the FET. 17:02:51 Ultimately via D15. 17:02:59 yeah 17:03:29 so when the field around the coil collapses, D16 conducts? 17:03:32 er D15 17:03:41 Yes. 17:04:05 so what is D17 there for, to protect T3? 17:04:39 and/or T5? 17:04:57 D17 is there to make sure T3 isn't over-driven -- it limits the base voltage to (V+)-16V, which makes sure the base-emitter voltage is never exceeded. 17:05:13 nod. 17:05:31 T5 is used as an analog inverter/buffer, which is capable of handling the voltage/current requirements for the T3 circuit. 17:05:45 yeah 17:06:05 so how does T8 fit into things? 17:06:10 So when FLYB1 is high, T5 conducts, which brings the base of T3 to ground. 17:06:45 That appears to be a very simple power supply circuit -- constant current, specifically. 17:07:04 V+ is set to 20V apparently. 17:07:23 Well, 19.3V actually, but 20V is good enough for our purposes. 17:07:37 So the base-emitter voltage of T3 never exceeds 4V. 17:08:06 I see what's happening. 17:08:21 When the coil's field breaks down, D15 conducts, which turns R25 and R38 into a voltage divider. 17:08:36 (T5 must be conducting for this to occur as well, of course) 17:08:56 * a7r nods. 17:09:10 D17 protects T3 from over-voltage, which is about 4V. 17:09:47 So T3 conducts current from the coil to V+, which is ultimately shunted to ground via T8 (pass transistor, whose current is set by the relationship between D34 and R47). 17:11:54 okay. 17:12:28 when you talk about the over-voltage being 4V, you're doing the difference between D17's value, and V+ right? but I'm not sure how the difference figures into things. 17:13:00 A bipolar transistor is constructed similar to two back-to-back diodes. 17:13:12 The problem is, the base-emitter diode is MUCH smaller than the collector-base diode. 17:13:18 So it has a much smaller break-down voltage. 17:14:55 hmm. 17:14:57 So the voltage between the base and the emitter is limited. Typically, 6V is average for base-emitter voltages. I assume 4V was chosen for safety and human-factor considerations. 17:18:26 hmm. 17:18:46 OKay, so how would the base get 4 volts over the emitter? 17:19:09 Under -- it's a PNP transistor. 17:19:15 er, yeah 17:19:27 oh, because of the path through to T5? 17:19:28 When T5 conducts, the base of T3 really, really wants to drop to ground. 17:20:04 But D17 will conduct as soon as T3's base reaches 4V. 17:20:12 (4V+16V = 20V) 17:20:17 yeah 17:20:23 (remember our discussion of voltage drops? :) ) 17:21:35 okay, I'm going to sit down and stare at this for a while. 17:22:46 Heheh :) 17:23:05 yeah, I need to learn all of this. ;) I need it to become second nature. 17:23:36 like, I want to be able to design this type of thing on my own, before Christmas. 17:27:36 kc5tja: thanks for checking this out. 17:29:56 Hehe 17:30:03 Electronics is never as simple as one would like. 17:30:17 I would recommend the book, "The Art of Electronics," by Hill and Horowitz. 17:30:38 yeah, I'm reading it right now. 17:30:42 good book. 17:32:03 oh wait, so R47 and D34 effectively become a dynamic voltage divider? 17:34:57 Across T8? Of sorts, yes. 17:35:15 werd. 17:39:33 okay, I'm out.. thanks kc5tja. 17:39:39 * a7r is away: saturday night, alright 19:01:53 --- quit: wossname () 19:58:14 --- quit: tathi ("leaving") 20:27:19 I wish I set out to write my own forth os earlier :) I really like this 20:27:55 this pre-parsed source thing is wonderful 20:28:14 I keep thinking of more cool things I can do soo easily once I have an editor 20:29:40 :) 20:29:57 I haven't made the leap to pre-parsed source yet. I'm still working with pure-ASCII source. 20:31:44 * kc5tja should spend some more time developing FS/Forth under Linux. 20:33:09 hey 20:33:18 Herkamire: are you talking about having token lists someplace removed from the source? 20:34:13 One of the nice things about some pre-parsed source representations is it basically pre-links the software before compilation (most systems perform linkage at or after compilation). 20:34:43 This means "compiling" software is virtually instantaneous -- table-lookups and persistent variable storage. 20:35:13 CrowKilr's idea of raw binary copy can be extended to include arbitrary arrays (persistently) in the source too. 20:35:27 * kc5tja will probably play with this stuff at a later date. 20:47:04 .. 20:47:15 I think I'm going to write a simple machine-forth style environment for this boost controller. 20:53:49 Target compiling, or self-hosting right on the microcontroller? 20:54:12 I think self hosting 20:54:27 I want to be able to change the code around while I have it plugged into the car, doing runs on the dyno. 20:54:56 although perhaps I'm asking too much of this 8 bit microcontroller. 21:01:27 a7r: I'm talking about using source tokens instead of text source (as soon as I write the editor) 21:01:43 Herkamire: how're you mapping the tokens to something human readable? 21:02:09 a7r: the dictionary has the text for each word in it 21:02:14 werd. 21:02:58 each token has 4 bits to distinguish it's "color" or "type" and 12 for data. 21:03:09 for words, the 12 bits are an offset into the dictionary. 21:04:03 as kc5tja said, this makes compiling rediculously fast and simple 21:04:07 a7r: Just be careful of system crashes while the car is running. The last thing we need is to blow an apex seal due to exhaust detonation (or worse, intake detonation!), itself due to missing pulses or whatever from the controller. 21:04:35 kc5tja: yeah, for testing, I'm going to employ some added safety features. 21:04:42 like an intake pop-off valve. 21:04:58 * kc5tja nods 21:05:19 kc5tja, you ever used any of metcal's gear? 21:05:20 kc5tja: what binary copy idea of CrowKilr's? 21:05:33 a7r: What is metcal? 21:05:44 kc5tja: they make SMT rework stations. 21:05:49 and other soldering gear. 21:06:12 Herkamire: He has a token type that copies up to 15 bytes verbatim into the compiled source. In this way, raw binary data (e.g., images) can be copied into the working program. 21:06:25 No, never heard of them, let alone used them. 21:06:38 Most of my soldering equipment has been regular component Weller gear. 21:06:49 nod. 21:12:30 Herkamire: Anyway, my idea was to just forego the copying, and just include a reference to a whole chunk of data in the source space. This makes any changes to the space persistent. 21:12:57 kc5tja: where does he copy it to? 21:13:00 And permit more than 15 bytes per item. 21:13:03 The compiled code. 21:13:13 ooooh, I get it. 21:13:29 I totally agree. that's been my plan. 21:13:36 The only problem is he requires special editor support to visualize the data contained therein. 21:13:47 I have a seperate check of memory (and disk space in the elf) set asside for such literal data 21:13:51 Let alone actually edit it. 21:14:10 currently I only use it for numeric literals that don't fit in the 12 bits available in the source tokens. 21:14:42 I'm not going to have variable length source tokens. 21:15:25 I have a color set asside for literal data like that, but I haven't done anything with it. 21:15:59 * kc5tja nods 21:16:17 CHuck just uses LIT , LIT , LIT , ... , to embed raw binary data into the dictionary. 21:16:24 where LIT is some literal number. 21:17:15 I've done that. I used a forth that tathi was making, that didn't have strings yet. so I wrote a little program that lets you type a string, and it spits out the forth code to compile those bytes with , and c, 21:17:38 Hehehe 21:19:19 Strings is one of the first things I put in my Forth compiler, actually. I can't live without strings. 21:19:34 Especially in the Linux version of FS/Forth, where text/string manipulation will be important for me. 21:19:46 amusing :) but it worked. I used it to do the text processing for just enough of an http daemon (hooked to the net through tcpserver) to get a valid responce back to my browser. 21:20:15 Heheh :) 21:20:27 I've already planned out how I'm going to have strings in my forth, it's just that I haven't implemented them yet. 21:20:33 * kc5tja nods 21:20:50 * kc5tja formerly used CALL and POP to embed a string. 21:20:51 need an editor first :) 21:20:53 CALL _fwd 21:20:57 DB "This string." 21:20:59 _fwd: 21:21:09 MOV [ESI-4],EAX 21:21:13 LEA ESI,[ESI-4] 21:21:26 POP EAX ; EAX now points to This string. :) 21:21:32 I don't know x86 asm. 21:21:33 MOV [ESI-4],EAX 21:21:37 LEA ESI,[ESI-4] 21:21:43 MOV EAX,11 21:21:49 CALL is a subroutine call. 21:21:59 It pushes the return address (address of string in this case) on return stack. 21:22:08 you're using the return address to as a pointer to the string I presume 21:22:12 MOV [ESI-4],EAX copies top of stack onto the data stack memory space. 21:22:40 LEA ESI,[ESI-4] subtracts four from ESI (SUB ESI,4 sets flags, which isn't desirable here) 21:22:57 POP EAX retrieves return address (string address) from the return stack. 21:23:00 * kc5tja nods 21:23:06 gotcha. 21:23:19 MOV EAX,11 loads EAX with the string's length (determined at compile-time). 21:24:27 However, I don't think I'm going to use that technique in the future, because it looks to be pretty slow. 21:25:06 On the one hand, it's mixing data and code, which wastes cache space (same chunk of memory loaded in both code and data caches), and stack operations are expensive. 21:26:08 yeah. that's an argument for having seperate sections for heap (where , puts things) and compiled code 21:27:02 I'm trying to think if I've put anything on the heap besides instructions in my forth so far. 21:27:24 I have one table with values and branch instructions intermixed 21:30:31 nice, well, it's actually less instructions on ppc: 21:30:32 mflr r0 21:30:32 bl 0f 21:30:32 .string "blablabla" 21:30:32 0: mflr r4 # get address to string 21:30:34 mtlr r0 21:30:37 li r3 9 21:31:04 r3 is count, r4 is address 21:31:48 oops, well, you'd have to stick two spaces or something at the end of the string to preserve allignment. 21:32:36 * kc5tja nods 21:33:00 Are you using the registers themselves as a data stack, or are you caching only one stack element in a register? 21:33:20 --- part: a7r left #forth 21:33:35 --- join: a7r (~a7r@206.72.82.135) joined #forth 21:33:39 I just cache one. I just left out the stack push in my example 21:33:40 ner. 21:33:48 * kc5tja nods 21:34:12 Well, since you know you're pushing two items, you can optimize it so that the stack pointer is updated precisely once. 21:34:21 stwu r4, -4(stack) 21:35:04 true. that should execute faster 21:35:05 I assume R3 is the TOS cache register then? 21:35:30 that was just pseudo code. 21:35:37 * kc5tja thinks he can make some faster code by storing an immediate value directly in memory. 21:35:49 MOV [ESI-4],(address of string) 21:35:54 LEA ESI,[ESI-4] 21:36:00 MOV EAX,(length of string) 21:36:18 err, oops. It helps if I gave a bit of context, eh? 21:36:21 I don't see why you would fiddle with the return stack 21:36:26 MOV EAX,[ESI-4] 21:36:29 just compile: 21:36:29 Mgahhh!!! 21:36:36 MOV [ESI-4],EAX 21:36:41 MOV [ESI-8],(address of string) 21:36:44 b 0f 21:36:47 LEA ESI,[ESI-8] 21:36:54 MOV EAX,(length of string) 21:36:54 .string "blablabla " 21:37:16 21:38:21 oops. never mind my code. I just mean when you're compiling stuff in forth, you just compile a branch that jumps over the string data, then compile two literals (one for address, one for length) 21:38:51 Yes, unless you store the string data in a separate space, in which case the time consuming branch can be completely ignored. 21:40:46 then you have this code: 21:40:48 b 0f 21:40:49 bla: .string "blablabla " 21:40:49 0: push 21:40:49 lis tos, bla@ha 21:40:49 ori tos, tos, bla@la 21:40:51 push 21:40:54 li tos, 9 21:41:28 push is a macro for this: swu tos, -4(stack) 21:42:00 I don't think that branch would slow it down 21:42:14 not much anyway. 21:42:40 I think the extra cache space, and fetching those 16 bytes (branch + string) is more of an issue 21:43:12 (hmm, I actually don't know much about how tho cache works, so maybe it wouldn't fetch the string into the cache) 21:43:28 I'm talking ppc though. 21:43:44 ppc deals with branches very well 21:44:08 I would certainly rather get rid of the branch and move the string elsewhere though. 21:44:16 it makes it much simpler 21:44:51 and could help avoid obsure bugs 21:44:57 You are dead wrong about the branch. 21:45:18 on ppc? 21:45:29 The branch would cause a pipeline flush on a misprediction (remember, we're talking about x86 here, not PowerPC), which invokes a 25 cycle penalty minimum. 21:46:08 how could it mispredict that? it's not conditional? 22:09:11 The branch prediction in the Pentium series uses what's called a BTB -- branch target buffer 22:09:23 It's a cache, and it's set-associative on top of that. 22:09:34 So if the target address falls out of the cache, then the branch will mis-predict. 22:10:09 For example, I've timed raw subroutine performance, and the CPU's combined call and return timing seems to be 25 clocks, even WITH prediction. 22:10:29 Now you know why so many people want to inline and unroll their loops. 22:10:43 It has nothing at all to do with other processors, although branches are "expensive" for those too. 22:10:54 It has *everything* to do with the FUCK UPS that Intel has put into the x86 architecture. 22:11:09 haha 22:11:13 retreat! 22:11:32 Consider: before x86 became hugely popular, proper modularity and subroutines were condoned in writing software. 22:12:12 Once x86 became popular, or shall we say, dominant, "performance optimization techniques" like loop unrolling and whatnot became hugely popular. 22:12:26 To get fast code, you had to eliminate subroutine calls and branches at all costs. 22:14:09 this type of thing makes me want to learn as little about x86 as possible. 22:14:16 to prevent corruption. 22:17:13 It's a fun challenge though. But for Forth, it sucks eggs royally. 22:17:31 The fastest code I've been able to produce so far has been about 1/2 speed of GCC's best-optimized code (which is fairly decent). 22:17:50 Which isn't really all that bad. 22:18:08 But given a choice between PowerPC and x86, I would mindlessly choose PowerPC, hands down. 22:18:27 I just wish x86 wasn't the default CPU for the industry. 22:32:43 me too 22:32:53 x86 sounds horrible 22:33:26 I think ppc is setup to be easily optomized. 22:34:19 like functions that don't branch (except opitionally as the very last instruction) don't need to push/pop the rstack 22:35:40 some ppc stuff kinda sucks for making a native forth though. like the seperate data and instruction caches. 22:36:26 and that you can't (usually) have multiple entry points into a definition 22:37:19 and push and pop can't both be just one instruction. 22:38:16 Well, the RISC concept as we currently know it is designed for C and similar languages. 22:38:27 That's what they're most optimized for. 22:38:34 yep 22:39:08 what I really hate about C is that it tempts me soooo much to create huge functions 22:39:28 As far as the separate data and instruction caches are concerned, well, that's a minor issue as far as I'm concerned. Just remembering to flush the caches is a bigger issue for me. :) 22:39:57 Well, large functions in C tend to read a bit like English. In Forth, the reverse is true: small words read more like English. 22:40:01 to optomize my fractal generator I had to pull everything into one function (maybe GCC would have done better, but still) 22:40:06 But also true in Forth, words are substantially more disposable too. 22:40:27 The ability to redefine a word at a whim for any purpose makes long function names largely irrelavent. 22:40:35 It also is a form of encapsulation. 22:41:20 C and simular languages always make me want to copy and paste things, and make big definitions, because it's easier than trying to pass all the parameters around. 22:41:46 Well, yes and no. 22:42:14 Programming practices in C generally shouldn't rely on cut-n-paste. I've never had the inclination to do it at least, and now that I practice XP, it's verbotten. 22:42:17 perhaps that's just my bad style 22:42:27 Good coding takes practice and an open mind. 22:42:37 Learning to program Forth has improved my C coding style substantially. 22:42:44 I'd like to learn Lisp someday. 22:42:50 I don't copy and paste (at least not more that 2 lines) 22:42:51 And maybe an APL-like language. 22:43:38 yeah, I want to learn a new kind of language. ML or Lisp or something. I've learned a million C like languages, and I'm starting to think there isn't much more new concepts there. 22:44:03 * kc5tja nods 22:44:07 but I don't have enough interest to put in serious time right now. 22:44:19 Probably why C is king -- everything else (well, in my opinion, save Oberon), is just C repackaged. 22:44:38 maybe if I had somebody in person who know that language, and would show me around and do a project with me. 22:44:51 Oberon is very similar to C in scope, but it's a *clean* langauge. Reminds me a lot of Python, actually. I love it. 22:45:19 C is king because that's what the operating systems and most APIs are written in 22:45:26 if you want your code to be fast and compatble, use C 22:45:37 and C compilers are very good 22:45:57 Only because CPUs they compile for are optimized for it. :D 22:46:18 damn, I made too many edits before testing. now I can't find the bug 22:46:35 heh :) 22:46:40 that too 22:46:57 That's another reason I practice test-first and keep a battery of automatable unit tests lying around. 22:46:59 :) 22:47:30 Although, my Forth compilers aren't unit-tested. That is like unit-testing an operating system -- impossible to do since the unit tests depend on the OS running to report errors. :) 22:47:48 exactly my problem 22:47:52 my interpreter's busted 22:51:07 I know that feeling well... :/ 22:52:55 I get a stack overflow while it's compiling stuff 22:53:21 * kc5tja nods 22:53:22 in the same freeking source tokens that worked in the bootstrap 22:53:46 I didn't change the inner loop of the interpreter 22:55:32 It must be some word you're calling within the interpreter. 22:58:49 brb 22:59:54 got it 23:00:36 whew! that took me a long time 23:04:41 What was the problem? 23:05:31 I added a core word, (load) and was inconsistant about where in the dictionary I added it. 23:07:27 it's because of a stupid hack I did to get INTERPRET to be first in the dictionary (which is no longer helpful). maybe this will teach me to write down my stupid hacks, and be sure to undo them asap 23:08:20 anyway, now that I have all my unit tests passing again, I think I'll go to bed. 23:08:50 maybe tomorrow I won't spend 95% of my programming time debugging. 23:13:07 --- quit: Herkamire ("zzzZZZZ") 23:59:59 --- log: ended forth/03.07.12