00:00:00 --- log: started forth/03.06.03 00:32:20 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 00:32:32 hi 00:32:41 up just 4 a short while ;( 00:33:05 :( 00:33:10 Hi anyway, serg 00:33:20 heh 00:33:44 it's my birthday today, and my bed gave me a nasty gift - wrecked through ;) 00:34:00 Haopy birthday! 00:34:24 I know another person who has birthday today.. spent the night writing him a little birthday program in Minix. 00:34:41 Stupid Minix... for some wierd reason sleep() fucked things up. 00:35:59 Why a birthday program in Minix? 00:36:41 Why not? ;) 00:37:35 Hmm.. I guess the account is his birthday present from me. 00:37:52 ah 00:37:56 It's connected with a null-modem cable :D 00:38:12 A few kb/s from a 486 running Minix, that's a nice present! 00:38:24 Lots of downtime, too. 00:39:15 heh 00:39:24 why not just give him copy of minix? 00:40:55 Why would I give him that when he can download it everywhere? 00:41:26 heh 00:41:42 Thought it was still under commercial license or something 00:42:14 No. 00:42:25 Was released a few years ago. 00:43:14 --- join: rob_ert (~robert@h138n2fls31o965.telia.com) joined #forth 00:43:19 Hello from Minix :) 00:43:47 Yes, there is an IRC client for it... 00:44:19 * rob_ert leaves. 00:44:20 --- quit: rob_ert (Client Quit) 01:12:51 --- quit: Serg_Penguin () 01:13:08 --- part: bwb left #forth 02:15:39 --- join: deluxe (~deluxe@pD9E59276.dip.t-dialin.net) joined #forth 03:29:19 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 03:45:12 --- quit: Serg_Penguin () 03:46:33 --- quit: a7r (Read error: 113 (No route to host)) 03:59:11 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 04:17:18 --- quit: Serg_Penguin () 05:09:29 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 05:54:12 --- quit: Serg_Penguin () 07:32:25 --- join: sifbot (~sifforth@h003065f7146c.ne.client2.attbi.com) joined #forth 07:32:25 Type sifbot: (or /msg sifbot to play in private) 08:50:49 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 08:59:13 * Serg_Penguin is ear-deep in viruses and crashed computers 08:59:37 just uncrashed one, but another seems to be wormed 09:03:01 --- join: gengar (~ritchie@rsmith.ccc.ox.ac.uk) joined #forth 09:03:40 hi 09:04:03 'lo. 09:07:31 hope not at all down ;) 09:07:34 new here ? 09:07:59 Yeah. Just distracting myself from study. 09:08:12 forth expireince ? 09:08:32 mine - little games and utils 09:08:32 Minimal. I started playing with it as a distraction and quite liked it. 09:09:46 some elders of here wrote own Forths 09:10:04 --- join: futhin (futhin@dial-207.ocis.net) joined #forth 09:10:08 --- quit: futhin (Client Quit) 09:10:09 http://isforth.clss.net for example 09:12:21 looking ? it's for Linux 09:12:36 Yeah, I just took a look... 09:13:05 or look at http://robert.zizi.org 09:13:20 he wrote some too, but i didn't try 09:14:02 i440r's isforth is perfect by design concept but mega buggy (at least, in my hands it crashes much more than others) 09:14:37 I'm playing with gforth at the moment... like I said, I'm only really playing with it as a distraction. 09:15:21 what books have you read on it ? 09:15:53 None at all. I found a few tutorials and started playing with the exercises. 09:16:24 tutors - suxx, many ppl stumble over them 09:16:52 read Leo Broudie 'Starting Forth' and 'Thinking Forth' 09:16:59 Seems quite nice. I used to do Z80 assembler when I was a sprog, and got into perl a few years back. Now I'm just playing with different concepts. Trying to get back into programming. 09:17:09 Cheers.\ 09:17:30 I'll look 'em up in Blackwells when I've finshed exams. 09:17:46 the latter is a must for any progger - coz it's more on progging philosophy w/ Forth examples 09:18:26 Sounds interesting. 09:18:33 or even on design philosophy, not only progging (it has one wonderful example on complex prototype hardware) 09:19:02 i read both in RU only, some amateurs translated 09:19:22 Forth in RU has many wizards and zealots 09:19:32 look forth.org.ru 09:19:36 Cool. 09:20:09 I anticipate having lots of free time to play with forth after I get kicked out of university in two weeks. Hee! 09:20:46 it's driven by eserv - win32 HTTPD written in SPF4 - open src RU Forth 09:21:10 and trivial HTTPD in Forth is just few pages of code 09:22:07 brb 09:27:21 Interesting. 09:30:00 --- join: fridge (~matt@dsl-203-33-160-242.NSW.netspace.net.au) joined #forth 09:31:07 hello 09:34:58 Hello! 09:42:05 back 09:44:11 wb. 10:06:50 --- join: a7r (~a7r@206.72.82.135) joined #forth 10:09:55 --- quit: Serg_Penguin () 10:20:10 hey 11:01:24 --- quit: Fractal (Read error: 110 (Connection timed out)) 11:09:56 --- quit: a7r (Read error: 60 (Operation timed out)) 11:55:05 --- join: mur (murr@baana-62-165-184-61.phnet.fi) joined #forth 11:58:09 --- join: abcd (~efgh@pD9E59276.dip.t-dialin.net) joined #forth 11:58:58 --- part: abcd left #forth 12:01:32 --- join: g4lt_ (~galt@pD9E59276.dip.t-dialin.net) joined #forth 12:02:54 --- quit: fridge (Excess Flood) 12:02:59 --- join: fridge (~matt@dsl-203-33-160-242.NSW.netspace.net.au) joined #forth 12:05:18 --- part: g4lt_ left #forth 12:06:52 --- join: deluxe_ (~deluxe@pD9E59276.dip.t-dialin.net) joined #forth 12:07:04 --- part: Robert left #forth 12:07:11 --- join: Robert (~snofs@h138n2fls31o965.telia.com) joined #forth 12:07:12 Oops. 12:08:21 Oops i did it again 12:08:42 --- nick: deluxe_ -> g4lt_ 12:10:10 --- part: g4lt_ left #forth 12:15:53 excúse moi 12:16:17 mur what did you do again? 12:16:23 nah 12:16:29 it was ironical phrase 12:16:37 vote now your favourites!! http://www.adbusters.org/campaigns/dirty_dozen/ 12:25:39 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 12:25:39 --- mode: ChanServ set +o kc5tja 12:45:35 --- quit: mur (Read error: 104 (Connection reset by peer)) 12:46:02 --- join: mur (murr@baana-62-165-184-61.phnet.fi) joined #forth 12:59:51 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 13:01:54 --- join: dan_ (dan@pcp053555pcs.brlngt01.nj.comcast.net) joined #forth 13:22:36 elo tathi 13:22:42 Hi :) 13:22:56 lo 13:23:28 elo Robert.# 13:23:32 elo Robert. 13:23:41 elo mur. 13:23:44 elo mur 13:23:52 elo # 13:23:55 :) 13:24:34 late night typos tztz 13:24:56 Hehe.. 13:25:11 Robert: how's your forthchip prj ;-) 13:25:11 It's not late :) 13:25:28 Not a forthchip.. and I haven't worked on it for a while. 13:25:29 optimist :-) 13:27:09 elo gengar 13:27:20 * deluxe curious :-) 13:27:48 --- join: thin (thin@bespin.org) joined #forth 13:28:15 howdy thin 13:29:41 heya delux 13:30:06 oh shit 13:30:07 --- quit: thin (Client Quit) 13:33:37 hi deluxe 13:33:44 seems to be a common form to say good bye over there.. 13:34:02 lol 13:34:02 :) 13:35:08 your ppc forthos is coded in asm? 13:35:41 well...I've sort of dropped the OS part for the time being. 13:35:54 but the ppc forths that I'm playing with are coded in asm, yes. 13:36:34 oh? why? (thought you were already right inbetween) 13:37:05 easier to debug etc. under Linux 13:37:29 it would probably only take me an hour or two to get it to run straight from OpenFirmware though 13:38:33 which asm do you use? 13:38:40 GNU as 13:38:49 I don't know of another assembler for Linux PPC 13:39:09 it's not actually that bad. 13:39:37 the macro facility seems to be buggy and incomplete still, but otherwise... 13:39:51 isn't nasm a metaassembler(assembles itself)? 13:40:06 nasm is only x86, AFAIK 13:41:04 probably yes 13:41:55 I just have a really minimal forth written in assembly language. 13:42:28 then I define the assembly instructions that I use as forth words 13:42:46 and I'm currently working on getting it to be able to write out ELF files. 13:43:29 and playing with optimizing code generation 13:43:34 do you know introspector? 13:43:41 no, what is it? 13:44:02 --- nick: dan_ -> jstahuman 13:44:33 in #tunes yesterday someone told me, idea is interesting 13:44:37 only place I've heard the term is in connection with an object browser/examiner facility for Java 13:44:52 s/object/class/ 13:45:25 gcc metadata(trees) exported to xml/rdf and back 13:46:21 was gcc only at start, now a palette of compilers etc more 13:46:41 gcc metadata? 13:47:33 actually all data streamed through gcc 13:47:41 hmm 13:48:20 so I suppose that's useful if you want to try and automatically translate to another programming language 13:48:24 or something? 13:49:15 for visualizing and modifying complex relations in general 13:49:49 tathi: I noticed that you're using Gnu as for the PowerPC assembler. What is your impression of it? 13:50:03 well, the TUNES project obviously needs that kind of thing 13:50:13 I can't see that it's at all useful for forth... 13:50:51 kc5tja: as I said a few minutes ago, the macro facility seems to be buggy, and doesn't do everything that the info page says it does. 13:51:03 tathi: I meant other than that. 13:51:06 kc5tja: otherwise it works fine. 13:51:44 Cool. I know that as' x86 syntax is really bizarre (AT&T syntax just doesn't "fit" with x86 assembly language), but for PowerPC, it looks to be rather natural. 13:51:45 kc5tja: you have to pass -mregnames so you can use r3 rather than just 3 13:52:04 kc5tja: and it just treats the register names as numbers 13:52:27 * kc5tja nods 13:52:40 so if you type 'cmpwi r3,r4' you don't get an error 13:52:42 Traditional PowerPC assembly does the same. 13:52:56 it just silently assembles cmpwi r3,4 13:53:05 (compare word with immediate) 13:53:25 tathi: for newbee's like me interesting, probably helpful. but Os'es might be complex enough for others.. ? 13:53:46 I'm just wondering, because there's a chance that I may be doing commercial development for a PowerPC platform, and a small chance within that that it will be in Forth. 13:53:51 * kc5tja can't go into details. 13:54:26 as in you may be _writing_ a forth to develop in? 13:55:14 Quite possible. But whether it is in C or Forth, I still will likely need to write custom assembly code. 13:55:29 yeah. 13:55:41 personally, I really like PowerPC assembly 13:56:02 it's pretty uniform 13:56:03 I've done MIPS coding -- I loved MIPS. PowerPC and MIPS are almost identical from a coding perspective. 13:56:07 yeah 13:56:22 * kc5tja has more than a decade of 68K experience though; that's a wonderful architecture. 13:56:41 And more than a decade of 32-bit x86 coding experience. IA16 sucks eggs, but IA32 isn't nearly as bad. 13:57:10 68K is great, though I really haven't done much 13:57:23 In fact, IA32 almost seems tailor made to do Forth coding in. The register set is just the right size to implement most any Forth environment, without wasting registers. 13:57:35 :) 13:57:58 yeah, on PPC you _need_ some kind of optimizing compiler that keeps things in registers when possible. 13:58:24 I was thinking of coding up a type of Machine Forth that kept a data stack of 16 elements in 16 GPRs. 13:58:50 This way, it'd be kept nice and fast. 13:58:55 I've never understood how that would work. 13:59:07 Stack canonicalization would occur only across basic block boundaries, which pretty much happens with C compilers too anyway. 13:59:09 wouldn't you have to shift all the values over every time you pushed or popped something? 13:59:14 oh, ok 13:59:15 No. 13:59:25 The compiler keeps track of which registers are allocated, which one is the current TOS, etc. 14:00:03 There is a worst-case performance where it does shuffle all the registers around. 14:00:17 But if your stack is kept relatively shallow, it's actually faster than C's parameter passing. :) 14:00:19 and you just put the stack back to a standard state when you call another word 14:00:26 oh, definitely 14:00:28 Yes. 14:00:45 C on PPC puts stuff in registers unless you get more than 8 operands to a function 14:01:04 but still 14:01:06 I experimented with this with x86 once (I might resurrect it again), using EAX, ECX, EDX, EBX, ESI and EDI as a 6-deep data stack. It worked amazingly well. 14:02:03 yup yup 14:02:25 I just don't know that it makes sense to ever have more than about 6 things in registers 14:05:30 I went over a bunch of my forth code a couple of weeks ago, and concluded that the canonical state should be two items in registers, and that most of the time, 4 was the most that I needed. 14:05:44 but I imagine that depends on your programming style 14:05:46 Interesting you came to that conclusion. 14:05:59 Anton Ertl did an experiment where the Forth allocated registers a la most C compilers. 14:06:12 His results were the same, for x86 and otherwise: TOS and NOS in registers, the rest in memory. 14:07:09 Neat. 14:07:16 It basically allowed him to ping-pong between the two registers when updating the TOS after some operation. 14:07:42 So while one instruction was updating one register, another was reloading the other register. Apparently made good use of pipelining. 14:07:49 I hadn't experimented with that much. 14:07:51 I know he has done some work on this, but I keep forgetting to go try and find it. 14:08:02 All of my modern Forth implementations are subroutine threaded because someday, I want to play with this stuff. 14:08:54 What I like about PowerPCs is the use of a link register to support subroutine returns. 14:09:01 yeah 14:09:12 This makes *calling* a primitive almost as fast as inlining it -- there's only a 2 cycle penalty (one for the call, one for the return). 14:09:25 "leaf" words don't have the overhead of pushing the return address to memory. 14:09:49 That, combined with having the bulk of the code you're using sitting in instruction cache, would make the system incredibly fast. 14:10:11 That's a critical problem I have with the people who insist that inlining is the solution to everything: they fail to consider bus bandwidth issues. 14:10:12 :) 14:10:23 I know. 14:10:55 Especially on PPC (and other RISC?), where every instruction is 4 bytes 14:11:03 * kc5tja nods 14:11:24 Most RISCs have 32-bit instructions. The exception is StrongARM (mixture of 16-bit and 32-bit). 14:11:31 oh right. 14:11:56 non-strong ARMs are pure 32-bit of course. :) 14:12:34 and with pipelining, if everything is in the cache, the call and return instructions are going to get sort of folded out, so they really shouldn't affect execution speed that much. 14:12:47 I think. 14:13:35 And Motorola's G4s have 32K/32K instruction/data caches... :) 14:14:54 Oh. That's one annoying thing about doing forth on PPC. Separate instruction and data caches. 14:15:46 You can't just shove instructions into memory and go. You have to flush and synchronize the relevant cache lines. 14:16:55 s/\.$/ first./ 14:25:58 --- nick: Robert -> rob_ert 14:26:08 --- nick: rob_ert -> Robert 14:26:34 Well, that's why I say just a two cycle penalty. 14:26:54 tathi: Yup. 14:26:59 68K had the same problem. 14:30:24 Hey, kc5tja... I'm staring to think ham radio seems more and more interesting. Do you know any good "START HERE" links? :) 14:32:58 Not links, but there is a good book called "Now You're Talking!", published by the ARRL. 14:33:05 Radio Shack carries copies, IIRC. 14:33:31 * kc5tja hasn't been very active with ham radio in a number of years though. 14:33:48 I haven't found much around here that really keeps me interested. 14:33:54 Back in Mississippi, there was a ton of stuff. 14:34:16 You might want to check with a local ham radio club to find out what activities are "happening" in your local area. 14:34:38 Okay... should do that. 14:35:00 First I'll practice some construction and general electronics. 14:35:10 Microwave, for example, is really big where I live. I'd like to get into it more, but it's a bit expensive, and grossly inconvenient where i live; hence my relative inactivity. 14:35:10 * Robert knows close to nothing. 14:36:00 brb -- ordering food. 14:36:00 inconvenient? 14:36:33 deluxe: Very. Microwave stations have highly directional antennas, and I live in a severely antenna restricted community. Hence, I can't put up towers or anything. 14:37:06 To participate on the microwave bands, I'd have to drive out somewhere that gives me line of sight access to my desired station, and do whatever from there. 14:37:11 E.g., inconvenient. :) 14:37:16 oh now.. thx 14:38:29 Note also that by microwave, I'm talking 2.4GHz and higher in frequency. 1.2GHz is just barely usable with omnidirectional antennas, and we use amateur television on that band. Works astonishingly well, but there's a lot of ghosting effects on the video (unless you're right next to the ATV repeater). 14:40:45 even 2.4 is not always that good afaik? 14:42:19 I think above 1.2GHz, you start to get a lot of atmospheric and weather-related absorption. 14:42:32 It works, but you need directional antennas to overcome the path losses. 14:43:24 I think this is one of the reasons why 2.4GHz and 5GHz are often used for part-15 devices -- with relatively little power used in the transmission, there's relatively little chance for interference with other devices that use the same frequencies, unless you're up close. 14:45:58 * deluxe listening :-) 14:46:59 :) 14:48:09 * mur moves ears forth and back 14:48:22 *twiggle twiggle twiggle* 14:54:11 ? 14:56:07 what do you call expensive btw. ? 15:00:14 Anything above $250 in total value. 15:00:38 (generally speaking) 15:00:56 For example, my Kenwood TS-2000 rig was *DAMN* expensive. I saved up a long, long, long, long time for that rig. 15:01:22 But I'm glad i got it. 15:01:52 some things are worth splashing out on 15:02:02 But, I can't use it to its fullest potential because of my location -- I can't erect any antennas that will radiate here. 15:02:19 So right now, it's a glorified 2m transceiver and shortwave receiver for me. 15:09:58 Crap . . . 30 minutes to get my food. >:0 I'm going to implode. 15:12:33 Heh. 15:13:08 Drink water and take some old bread if you want an instant meal... otherwise, waiting is unavoidable ;) 15:13:24 I've been drinking water all day. 15:13:38 Then eat some bread! 15:13:50 What bread? 15:13:55 That requires I go shopping. 15:14:02 And that, in turn, requires I leave IRC . . . 15:14:29 Actually, I've been hacking on my FS/Forth all day today. I should have its command-line text interpretter up fairly soon. 15:14:50 I don't know how I'm going to handle loading from files yet, though. So I'm not going to bother putting support in the code for it yet. 15:15:20 There's always some bread in the kitchen... but maybe that's just because of those magic "parents". :) 15:15:40 I actually had to rip some code OUT -- I was 'leaving hooks.' The problem is, the hooks left didn't address the problem I was trying to solve. If Moore or Beck were here, they'd both say, "I told ya so." 15:15:54 Robert: I live by myself now. :) 15:16:07 Yeah, I guessed so. 15:16:21 Big boy 15:16:54 Heh 15:17:11 10011 Robert! 15:17:17 I finished implementing COMPARE to compare two strings. Now I need to walk the Forth interpretter's vocabulary chain. 15:18:02 mur: Right.. 15:20:21 kc5tja: Uhm.. just a little question, there are lots of simple AM receivers out there, but all are assuming that I want to use frequencies around 1MHz, can I just use the same circuits for higher frequencies (high enough to use a simple air-wound coil)? 15:24:29 For receiving AM stations above 1MHz, yes. 15:24:35 These would most often be shortwave stations. 15:24:43 You might not get some of the weaker stations though. 15:24:46 brb 15:26:45 back 15:26:58 keep in mind that not all radio stations are AM stations either. 15:27:05 Some are morse code, some are single sideband, etc. 15:30:18 Yeah.. 15:30:26 But I thought about both sending/receiving myself. 15:31:03 Just wondered if there were any technical reasons why AM receivers are on relativley low frequencies. 15:31:44 More legal than technical. 15:32:03 OK, great. 15:32:15 570kHz to 1700kHz is the commercial AM band 15:32:37 Won't work with any powerful transmitters anyway, so I guess nobody will even notice it. 15:33:01 Heh, you'd be surprised. 15:33:11 Why? :) 15:33:26 My recommendation -- if you're planning on making a transmitter, *stick in the commercial AM band*. 15:33:40 It's not used here anyway. 15:33:48 The commercial AM band is also an FCC Part 15 band, which means that you are legal to transmit (even w/out a license) provided your total radiated power is less than 1W. 15:34:06 Besides, who (within 100 meters or so) would be disturbed? 15:34:16 That's not the point. 15:34:19 FCC doesn't really have much power here ;) 15:34:34 The FCC has several "observing stations" around the country, designed to monitor the bands for (il)legal activity. 15:34:44 Where is "here"? 15:34:46 Sweden. 15:34:53 Oooh, I thought you were in America. 15:34:57 Nope :) 15:34:59 Well, I can't speak for your country then. 15:35:25 But.. now you're almost scaring me. Do you mean that they would care about such small transmitters? 15:35:31 This is definitley below 1W. 15:35:41 For part 15 devices, no. 15:35:45 They don't care at all about those. 15:35:54 Ah, great :) 15:35:55 robert 15:35:55 But they DO care about part 15 devices that do go outside of a legal part 15 band. 15:36:06 Hmm.. how could they detect them? 15:36:07 Which is why I suggested you stay IN the broadcast spectrum. 15:36:18 They have what are called RDF stations -- Radio Direction Finding stations. 15:36:34 Fancy.. 15:36:44 And they can detect even weak transmitters? 15:36:44 see you behind swedish curtains ;-) 15:36:45 Not really. 15:36:49 deluxe: ? 15:36:49 Just basic geometry. :) 15:37:12 But again, I'm talking about AMERICAN rules here. Sweden might have something completely different. 15:37:49 Robert: nothing, just kidding 15:37:55 Probably... but if they can't detect it, they won't do anything. 15:38:12 Ah, well.. maybe I should check this up. 15:38:21 It's your Swedish Radio Authority (or whatever they might be called) you should be worried about. :) 15:38:48 I can't speak for them, I don't know what kind of enforcement bodies they have, if any. 15:38:52 Yes.. I'm looking for them. 15:39:30 Post- och telestyrelsen, they're called. PTS. Might be good to know ;) 15:39:49 Hehe :) 15:40:08 * Robert uses his one-transistor FM transmitter to enjoy Over The Rainbow with extraordinary low sound quality. 15:40:53 ONE transistor? 15:41:05 The smallest I've seen was 2-transistor. 15:41:25 All the 1-transistor transmitters I've seen have been AM. 15:42:08 http://w1.859.telia.com/~u85920178/tx/bug.htm 15:42:30 And it works quite well.. not TOO unstable :) 15:42:36 Cool 15:42:47 Only a 1MHz frequency change if you approach the transmitter ;) 15:43:48 Heheheh :) 15:44:10 Hey, that's an interesting point -- if you calibrated it, it could be used as a range finder for stuff. Maybe a metal detector. 15:44:40 Yeah, thought about that... but as it is now, it detects _anything_. 15:45:01 If I connect a voltmeter to it, I can check the signal strength going up and down when things are moving. 15:46:04 Yes! This way of listening to the old soviet national anthem gives you the right "low-quality recording from the 30s" feeling ;) 15:47:12 hehehe :) 15:48:47 The document describing the frequencies is 148 pages. Yay. 15:49:10 Egads. :) 15:49:35 SM0VPO's site is a really cool site. 15:49:45 It's clean, it's reasonably well organized, and extremely helpful. 15:50:38 Yeah. 15:50:41 I really like it. 15:50:55 btw, if I go below 9KHz, they won't arrest me! ;) 15:52:32 Heheh :) 15:52:49 Here, we have another part 15 band between 160kHz to 190kHz. 15:53:12 It's primarily used by garage door openers. :) 15:53:36 Is such very long-wave equipment hard to use? 15:54:25 To use, no. TO get any real distance, that's the hard part. 15:54:36 "real distance"? 15:54:43 They don't call it the 1750m band for nothing! :) 15:55:02 1750m is quite some distance, imo. 15:55:02 In other words, a large separation between transmitter and receiver. 15:55:10 No no no. You misunderstand. 15:55:25 1750m band means that the radio wavelength is 1750m long. 15:55:37 That doesn't mean that that's how far the signal will carry. 15:55:55 Yeah, but I must have misinterpreted your joke ;) 15:55:57 To make an ideal radiator for that band, you'll need an antenna that is 875m long. 15:56:06 Hehe, 15:56:13 minimum. 15:56:13 :) 15:56:17 Half wavelength = ideal antenna? 15:57:06 Mathematically speaking, a half-wave dipole is the closest thing to the ideal antenna that there is. 15:57:30 Hmm... so a 1.5m antenna is good for the 3m band? 15:57:38 * kc5tja nods 15:57:50 What difference does it make if it's, say, .5m instead? MUCH difference, or just a few percent? 15:57:59 My 2m antenna elements are just shy of 0.5m -- so the total antenna size is roughly 1m. 15:58:08 MUCH difference. 15:58:17 It has to do with whether or not the antenna resonates at the frequency. 15:58:23 Oh. 15:58:30 Neat :) 15:58:39 A smaller antenna can be used to receive signals, but with increased losses because it doesn't resonate. 15:59:01 A larger antenna may or may not be beneficial. Larger antennas can often yield "gain", but at the expense of directivity. 15:59:02 How about transmitting, is the antenna also important there? 15:59:20 Immensely important. It's actually more important when transmitting than when receiving, for a number of reasons. 15:59:30 How can you "direct" the waves? 15:59:37 Like a flashlight -- reflections. 16:00:00 Radio waves are light waves, and behave according to the same rules. It's just that reflectors and such just look different. 16:00:00 Hmm.. anything useful for a beginner with no equipment except what I can solder together? :) 16:00:11 Define "useful?" 16:00:24 That is, something I can build and not just dream of. ;) 16:00:43 Like... 1.5m of wire is "useful". A parabol is not... 16:01:07 Well, what frequency are you looking to build for? 16:01:44 Hmm.. I was thinking about ~27MHz, but 5m antennas is nothing I want :D 16:01:56 So maybe the 2m band or something... 16:02:10 Well, 2m is a ham band. And NOT a part 15 band. 16:02:10 :) 16:02:41 I'll find an empty spot ;) 16:02:51 For 27MHz, you needn't build one yourself. You can go down to your local radio store and pick up a "mag-mount" CB antenna. 16:02:52 Well, or use the 3m band 16:03:02 You can't just pick any ol' band you want. 16:03:07 For commercial FM radio. 16:03:11 Yeah, I know... 16:03:23 For now I'm using the outer regions of the commercial FM band. 16:03:42 well, HERE IN AMERICA, the FM band also happens to be a part 15 band. 16:03:47 Not sure if it's the case in Sweden as well. 16:04:07 But if it is, then your 3m antenna can be built using what's called a Quarter Wave Ground-plane antenna. 16:04:15 Nah, but the only thing I have any receiver for. 16:04:37 Any info on that? 16:04:39 I'm currently using a ground-plane antenna for my 2m requirements. :) 16:04:42 Yes. 16:04:48 You need three antenna elements. 16:04:59 Hold on a sec. 16:05:05 --- join: jdamisch (jdamisch@207.191.240.43) joined #forth 16:05:12 Sure :) Thanks alot for what you've told me so far, btw. 16:06:12 OK, this rule is for English units. I tried to derive it for metric but I get wrong numbers. So it's best if you just did it for English units, then converted it to metric afterwards. 16:06:34 Each element's length, in FEET, is 234/f, where f is the frequency you intend to receive/transmit on IN MEGAHERTZ. 16:06:37 i hope your kids aren't trying to launch any space probes :^) 16:06:39 I see 27MHz is free to use without any license here. 16:06:46 jdamisch: Not an issue. 16:06:59 just kidding 16:07:54 Let me find you an URL which can explain it better than I can. 16:08:12 Thanks :) 16:10:38 sifbot: : hi 0 do .( hi! ) cr loop ; 5 hi 16:10:39 jdamisch: hi! 16:11:06 :) 16:11:20 it didn't loop :^/ 16:12:49 Actually, Robert, do you know the output impedance of that FM transmitter, by any chance? 16:12:52 what are you trying to do? 16:13:01 Is the output connected directly to a coil, or does it have a resistor hanging off it? 16:13:24 Hmm.. 16:13:29 jdamisch: I'm trying to help him set up a decent antenna for his little (way less than 1W) FM transmitter. 16:13:48 I have no idea :) Can't you check the circuit? 16:13:53 how far will it transmit? 16:14:04 What's impedance? 16:15:30 jdamisch: Probably not very far. 16:15:40 ok, over 16:16:37 --- quit: jstahuman ("leaving") 16:16:42 Robert: Never mind. Does your current antenna (you ARE using an antenna of some kind, right?) hook directly to the coil of the modulator, or does it have a resistor connected to it somewhere? 16:16:56 jdamisch: I would suspect it would travel, maybe, across the street at the power levels he's dealing with. 16:17:37 kc5tja: If I had an antenna, it'd be connected directly to the coil. 16:17:45 kc5tja: And no, I'm not using an antenna :) 16:19:00 Spiffbot 16:21:21 OK, if it's connecting directly to the antenna, then your best bet is an end-fed dipole, not a quarterwave groundplane. 16:21:36 Ground-planes have very low impedances, and coils tend to have rather high impedances when at resonance. 16:21:50 So for your application, take a half-wave long piece of wire, and stick it to the coil. You're done. 16:22:05 The next time I'm planning to build the other bug. It has HF-uhm..when it makes the signal stronger. 16:22:19 amplifier. 16:22:33 http://w1.859.telia.com/~u85920178/tx/bug5.htm 16:22:34 That one. 16:22:37 Yes, thanks :) 16:23:22 Is that where I could use a quarterwave groundplane antenna? 16:24:40 Believe it or not, his circuit uses another end-fed antenna design. 16:24:54 Hm? 16:25:07 I find that odd, considering output impedance is probably down around 300 ohms or so. 16:25:42 For that output circuit, I'd probably use something like a folded dipole antenna made using 300-ohm TV twin-lead cable. 16:26:11 How much better performance would that give? 16:26:37 That depends on how powerful his amplifier is 16:26:46 And.. is there anything _simple_ that I could build, that outperforms just a simple wire as antenna? 16:26:59 For that second, amplified, transmitter. 16:27:11 If a 5Kohm antenna is matched to a 5Kohm impedance transmitter, it'll work just the same as a 300-ohm antenna connected to a 300-ohm transmitter. 16:27:27 I already said: folded dipole antenna. 16:27:35 They're not hard to make. 16:28:39 All the antennas I've mentioned so far are all "wire antennas" -- meaning, you can make them with simple wire. 16:28:51 Yeah, I know, but... I'm not sure that I have any such cable. :( 16:29:06 It's just that the various geometries might be different so as to get various impedances. 16:29:17 They should have some at your local electronics store. 16:29:29 Can you give me some pointers about what impedance _is_, and why I need to care about it? 16:29:42 Impedance is the resistance to alternating current. 16:30:15 It has the unique characteristic that when the transmitter and load are matched in impedance, you get maximum power delivery. 16:30:32 The reasons as to why are way, way, way beyond the scope of this discussion. :) 16:30:48 Unless you enjoy such concepts as complex vector analysis. :) 16:30:49 I beleive you. 16:31:44 Thanks alot anyway, I should go to bed now. 16:32:01 Mismatched impedances at these power levels do not mean the thing won't work -- it just won't work as well. 16:32:09 goodnight 16:32:19 jdamisch: 'night. :) 16:32:43 Now, at the power levels that my ham radio transceiver puts out, an impedance mismatch can easily mean smoking the radio. :D 16:33:02 Heh :) 16:33:24 how much $$ down the tubes? 16:33:36 down the drain 16:33:39 $2700 roughly. 16:34:01 So.. a simple wire is a high-impedance antenna, and just an unamplified coil is a high-impedance..uh..output? 16:34:09 i was thinking of getting a grundig shortwave just for listening someday 16:34:21 #forth still logged somewhere? 16:34:28 clog 16:34:35 Robert: For now, yes. As with all things in life, in reality, it's not that simple. But for your purposes, that is a good approximation. 16:34:42 i don't know 16:34:45 jdamisch: I primarily use my rig for SWL right now. 16:34:48 Thanks :) 16:35:03 * kc5tja enjoys SWLing. 16:35:10 I just wish I understood other languages than English. :( 16:35:24 never too late to learn 16:35:24 where you at? 16:35:30 USA 16:35:37 i'm in Portland, OR 16:35:44 hmmm 16:35:50 --- part: fridge left #forth 16:35:50 Oceanside, CA 16:35:50 is LeGuin from portland? 16:35:51 * Robert needs to learn some more Englush. 16:35:53 --- join: fridge (~matt@dsl-203-33-160-242.NSW.netspace.net.au) joined #forth 16:35:56 btw, mur... you should sleep! 16:36:02 Robert :D 16:36:06 mur: No, but the older you get, it becomes increasingly difficult to learn. 16:36:19 And even when I was young, I just couldn't learn Italian, despite 6 years of study. 16:36:49 I was able to learn how to read and write Esperanto (several times, in fact!), but I couldn't speak it, nor can I understand spoken Esperanto. 16:36:55 kc5tja no it doesnt become increasingly difficult. learning is slower but not more difficult 16:37:12 perhaps you have chosen wrong kind of languages 16:37:14 Same thing. 16:37:16 Saluton 16:37:30 even though i agree that some people are good in one and other in another subject 16:37:40 jdamisch: :) It's been too long. Not having used it, I can't remember much. 16:37:47 but you should never give up so easily 16:37:59 Mi povas paroli esperanton, sed ne bone. 16:38:06 Now, give me a computer language, and I'll have it mastered in a week. :D 16:38:25 I sit in #esperanto channel sometimes 16:38:26 Malbolge. 16:38:27 jdamisch: Me too. I know what you're saying, but I can't reply in Esperanto. :) 16:38:37 is there one on this server? 16:38:45 its an easy language to pick up 16:38:55 That's why I love it so much. 16:38:56 :) 16:39:33 Yes, there is #esperanto here. But only two people are in it (now). 16:40:03 I used one, on I think undernet? 16:40:16 had a very lively community 16:40:26 undernet? 16:40:32 irc network 16:41:20 heh, i got irc program error message: * Stack overflow 16:41:21 yes i know its an ircnetwork 16:41:27 maybe i'll go check it out sometime 16:41:39 mur: See what happens when you don't use Forth? 16:41:50 Coyotes are on the loose, and it's still daylight. Something weird is going on. 16:43:33 Oh well. Back to coding my Forth. :) 16:43:55 i should go do some Forth if a new hours 16:45:27 do you feel that knowing Forth makes it easier to master other computer langauges? 16:46:21 maybe not master but learn 16:56:32 I can never think of interesting stuff to work on 16:56:51 only do what work pays me to, and alas that isn't in forth 16:57:59 but if you were doing to do something interesting, or unique, then you would choose forth 16:58:16 its flexable, which is what you want when going into new territorry 17:02:02 Ladies and gentlemen, children of all ages . . . 17:02:11 ? 17:02:15 FS/Forth Release 1.3 has interpretted and successfully executed its first word. 17:02:35 Now to add number support. :) 17:02:42 good 17:02:48 you need numbers 17:02:53 and spaces 17:03:19 It already parses words in the input stream. I can successfully crash it by typing "+ BYE" at the OK prompt. :D 17:03:19 what is this Forth written in? 17:03:26 jdamisch: Itself. 17:03:39 does it have an assembler 17:03:41 jdamisch: FS/Forth is built from a target compiler, itself written in Pygmy Forth. 17:03:45 jdamisch: Yes. 17:03:56 sounds good 17:04:11 i've never tried Pygmy 17:04:41 This is my first attempt at writing a Forth using a Forth-based target compiler. 17:04:46 This will probably be my last too. 17:05:17 what does this forth run under? 17:05:17 But either way, it'll definitely be printed out and archived, because the code it uses is worth keeping for future reference. 17:05:22 Currently, DOS. 17:05:41 But I do intend on replacing DOS on the laptop with a stand-alone version of Forth. 17:05:52 :^) 17:06:08 is this going to be your core Forth? 17:06:35 Yes. The DOS version will be my test-mule for all my 32-bit dialects. 17:06:41 Actually, I might keep the target compiler. 17:07:10 But there are a few things that I'll definitely change around. 17:07:44 i should have my own Forth for my core Forth but i'm not up to that level 17:07:53 First, I intend on removing structures. They are C-style of sorts, and they are useful. But not as useful as I'd hoped they'd be. 17:07:58 They really don't add much. 17:08:16 strucs s/b an addon imo 17:08:25 They are 17:08:46 you just said removing structures 17:09:05 Actually, however, they should be integrated into the compiler if you're going to support them. This way, DEREF1 DEREF2 DEREF3 @ doesn't result in three ADDs followed by a LOAD. It should compile to a single LOAD offset(X) instruction. 17:09:10 Yes. 17:09:27 : STRUCTURE 0 ; 17:09:32 : FIELD OVER CONSTANT + ; 17:09:36 --- join: thin (~thin@stu04161.cariboo.bc.ca) joined #forth 17:09:36 --- mode: ChanServ set +o thin 17:09:36 : END-STRUCT CONSTANT ; 17:09:43 hi all 17:09:46 re thin 17:09:53 FS/Forth interpretted its first word today. :) 17:10:02 mine is more complicated 17:10:10 but not too much so 17:10:22 jdamisch: The thing is, though, is I find it really doesn't add any clarity to the source code, which is what I was hoping it would do. 17:11:19 I can get all the semantic information I need from definitions like ">BODY", which is 8 + (or, sizeof_Header +). Knowing the context in which >BODY is used (guaranteed by the use of blocks) eliminates ambiguity. 17:11:30 s/guaranteed/virtually guaranteed/ 17:11:32 i only use them if i have a need, that is to say, a gob of things that all have the same array structure associated to them 17:11:47 Well, that's what I'm using them for too. 17:11:50 Each word has a header. 17:11:55 And it's arranged in a linked list. 17:12:17 The other thing I need to add eventually is multitasking support. 17:12:27 This is critical for my self-standing versions of FS/Forth. 17:12:34 PAUSE 17:12:43 PAUSE is the tip of the iceberg. 17:13:03 I also need USER variables, and those are not as easy to support as I'd hoped to be. 17:13:15 hmm 17:13:23 I've implemented tons of cooperative and preemptive task switchers in my time. that's not really an issue for me. 17:13:28 How to handle USER variables, however, definitely is. 17:13:41 e.g., BASE is a USER variable, for instance. 17:14:58 I do not believe ColorForth uses USER variables, so I'm more or less studying it for ideas. 17:15:11 i see 17:15:14 However, it's also true that its tasking model is no where near flexible enough for my needs. 17:15:15 how do you like CF? 17:15:22 I like the ideas. 17:15:35 I do not like the implementations I've played with (CF for Windows, XColorForth). 17:15:50 Both of those CFs were so unstable as to be utterly unusable. 17:15:57 i'd just use it as an OS 17:16:00 I cannot speak for Chuck's own CF, as I cannot get it running on my box. 17:16:05 i would imagine 17:16:14 if you've seen one Forth, you've seen one Forth 17:16:14 That's what I'm aiming for with my Forth, except it's a classic Forth instead of a ColorForth. 17:16:20 * kc5tja nods :) 17:16:33 i got it to run 17:16:39 Actually, once FS/Forth is done, I might switch later versions to a MachineForth dialect. 17:16:57 Just to explore its properties. 17:17:07 But for now, I'm happy with Classic Forths 17:17:09 if it's FOS, its good imo... probably 17:17:26 unless some goon wrote it, but how many goons are trying to write FOS? 17:17:34 I'm aiming my Forth environment to flat out replace Linux as my desktop OS of choice. 17:17:47 Plain Old Forth suits me fine 17:18:00 Plain Old Forth == Classic Forth 17:18:14 if it's stable, i'll take a look 17:18:26 I wouldn't use it if it weren't stable. :) 17:18:32 But if it's unstable, I'm at least here to help. 17:19:03 FS/Forth is NOT ANSI, though, so don't expect to just up and port arbitrary ANSI programs to the environment. :D 17:19:12 np 17:19:49 * thin is half-afk 17:19:53 how far along is it? 17:20:27 what wordsets do you have going? 17:20:31 Heh, not even started. :D Still hacking the guts under DOS so I have some semblence of a useful debugging environment to work with. 17:20:44 i see 17:20:52 I subscribe to the Chuck Moore philosophy of providing a minimal Forth environment, and loading wordsets as needed. 17:21:05 maybe you can make a small kernal in assembly, and then roll your Forth from that? 17:21:12 me too 17:21:21 the kernel can be like 2k 17:21:35 do you have FORGET/ 17:21:38 do you have FORGET ? 17:21:44 I'm planning something along those lines. My idea is to use the target compiler to build the Forth image as assembler source, then #include that into the "main" Forth assembly file. 17:21:48 Not yet. 17:21:53 I've not gotten that far. 17:22:07 FORGET is the last word to implement :P 17:22:09 That's coming soon though, as after I get keyboard interpretation implemented, I have to find some way of loading source from blocks or files. 17:22:44 blocks on CD-RW would be cool 17:23:20 you still have to boot from a floppy, right? 17:23:37 While writing FS/Forth, I've found blocks to be limiting and wasteful. 17:23:46 So I was originally going to support files instead of blocks. 17:23:59 But if I'm going to go native, I may as well support blocks. 17:24:02 is this file system fully integrated into the Forth? 17:24:14 I am not sure what I'll do just yet. 17:24:25 if you are native, you could support blocks and then put a tiny file system on top of the block system 17:24:27 For the DOS version, I was just going to use DOS. 17:24:41 Yeah, I was thinking something along those lines. 17:24:53 I'm really curious to find out how Chuck manages his blocks for source code purposes. 17:24:53 in DOS just use DOS files 17:25:16 seems like writing a DOS Forth would be the easiest way to write your own Forth 17:25:57 jdamisch: I think it is, actually. It offers the most convenient balance between hardware-level access, ease of creating turnkey applications, and having a convenient OS at hand. 17:26:05 maybe i can help you get CF up on your machine 17:26:42 kc5tja: what do you mean by managing blocks for source code purposes? 17:26:43 * kc5tja was even thinking of selling a Forth development environment, based on FS/Forth, for AmigaOS 4. 17:26:49 it's possiable to snapshot the block files and then > .png 17:27:30 thin: While writing the target and image Forth envrionments, I find that I often have written blocks, say, 100 and 101, but then I want to insert something between 100 and 101. 17:27:45 Pygmy has a convenient method of doing this, and works well -- it even automatically grows the block file for you. 17:28:00 But when you're talking directly to the harddrive, you can't do that (at least, not without losing information). 17:28:12 This is because blocks are hard-wired to the sectors they map to. 17:28:33 but pygmy doesn't directly map the blocks to sectors 17:28:58 I suppose I could add a translation layer to the block system to support high-speed block inserts, but I don't think it would give that much return on investment. 17:28:59 isn't this block management problem more of a filesystem management problem? :P 17:29:12 and you're familiar with filesystems 17:29:15 thin: Please re-read what I just wrote. :) 17:30:33 don't map blocks directly to sectors tho 17:30:37 do it like a filesystem.. 17:30:41 with a table, etc 17:30:49 I suppose I could add a translation layer to the block system to support high-speed block inserts, but I don't think it would give that much return on investment. 17:31:07 heh ok 17:31:22 if you are using blocks, then you just deal with the fact that you have a bunch of blocks and you need to get something done and you go do it 17:31:32 i've only ever used files though 17:31:35 * thin prays with kc5tja that chuck moore has a quick easy to implement solution ;) 17:32:33 So with a 10GB drive, to insert a single block, you expect me to "block move" 1.07373e+10 1024-byte blocks of data on the disk surface... 17:32:45 That's wholesale impractical. 17:33:02 in a filesystem it doesn't insert a single block (or file) 17:33:09 I do not believe Chuck keeps blocks logically organized. 17:33:11 it just puts it at the next free spot.. 17:33:30 In fact, I do not think he even supports the word THRU. 17:33:59 I noticed that his LOAD addresses are practically all over the place. 17:34:14 in which forth? 17:34:18 ColorForth 17:34:41 he only uses blocks 0-60 or something like that.. 17:34:54 i didn't really notice his loads were all over the place.. 17:35:05 Well, the floppy stores blocks 0-1439. 17:36:28 how big of a chunk can the drive actually move at a single time? 17:36:39 18KB 17:36:42 One cylinder 17:37:08 so don't write to blocks, write to cylinders, and if you are going over the 18KB boundary FACTOR YOUR CODE!!!!!! 17:37:19 --- quit: mur ("Vote now for your favourite brands!! http://www.adbusters.org/campaigns/dirty_dozen/") 17:37:32 I'm confused as to why I'm being yelled at. 17:37:40 i'm kidding 17:37:46 Oh. 17:37:54 i don't know, ok impliment a file system if you like to 17:38:16 ok = OK? 17:38:26 OK = OS for OKAD? 17:38:43 n/p = No Problem 17:38:54 or n/p = np 17:39:03 so how about ok = np 17:39:08 :^) 17:41:04 nevermind 17:41:23 Well, if I can get away without having to implement a filesystem, then that'd be more valuable to me. 17:41:31 But if I have to do it that way, then that's the way I'll do it. 17:41:43 Contrary to what Chuck says, filesystems aren't that hard to write. Just tedious. 17:42:25 where did he say that? 17:42:41 In one of his videos. I forget which one. 17:42:43 isn't tedious the same thing as hard? :P 17:42:47 No 17:42:47 no 17:43:23 tedious = time consuming & boring/easy 17:43:38 isn't when learning a new language that is tedious/slow means its hard to learn? :P 17:43:50 yeah 17:43:52 nevermind 17:43:56 nevermind 17:44:07 tedious = easy but time consuming 17:44:12 & boring usually 17:48:46 Actually, I'm not sure if I want a ColorForth for a host OS or not. 17:49:02 While CF intrigues me, I'd like to play with one in a more 'normal' environment first. 17:49:37 I played with it a bit, ended up using xcolorforth, because I got sick of crashing it and having to hard reset the machine 17:49:52 i'm thinking that i might be able to get my grubby little hands on polyforth or something else if he tries hard enough 17:49:55 fridge: I crash xcolorforth routinely. 17:49:58 maybe mms 17:50:08 I've crashed it trying to edit a block three times already. 17:50:12 I hardly consider it very stable. 17:50:53 i wouldn't bother 17:51:46 This is why I'm developing my Forth under DOS -- get the algorithmic bugs worked out in a "safe" environment before moving to a more risky environment. 17:52:17 i see 17:57:13 This is actually the third DOS Forth I'll have written. 17:57:17 But it'll be the last. 17:57:38 sifbot: : . ." ~~~~~~" CR ; . . . . . . 17:57:38 'tis the end of the 1.x line of FS/Forths. 17:57:39 jdamisch: Word not found: CR 17:58:20 maybe someday i'll write a DOS Forth 17:59:43 One of the reasons I chose DOS for this project, in addition to the above reasons, is that it had PygmyForth. 18:00:10 Pygmy is an x86-port (of sorts) of cmForth, which only ran on the Novix processors. 18:00:19 Unfortunately, there is no cmForth for Linux that I can find. 18:00:21 did you get ideas from Pygmy? 18:00:28 Lots. 18:00:39 FS/Forth 1.0 and 1.2 were based heavily on Pygmy concepts. 18:00:57 1.3 is the first to really start breaking away from Pygmy and move into semi-original directions. 18:01:07 For starters, it's no longer direct threaded -- it's now subroutine threaded. 18:01:16 The assembler can be used anywhere; there are no CODE definitions. 18:01:22 how much faster is that? 18:01:31 gotta go 18:01:32 laters 18:01:33 --- quit: thin ("bye") 18:01:38 bye 18:02:01 On a 486, which is what I'm currently developing it on, probably not much faster, if at all. It might even be slower overall. 18:02:18 then why are you doing it? 18:02:18 But it's more convenient, because I can inline raw assembly whenever and whereever I want to. 18:02:29 i see 18:02:54 I did it because it's an enabler for other code generation techniques, like optimizing compilers. 18:03:12 Right now, I don't have a lick of optimizations happening in my compiler. 18:03:13 :) 18:03:15 Not a one. 18:03:55 I'm pretty confident it's actually slower than Pygmy because of that. I have a lot of back-to-back (and thus, wasted) XCHG BP,SP instructions in the generated code. 18:04:17 i would probably just write indirect threded and then stick with it, if it was my core Forth, and then go bye something fast if I want to write a game 18:04:39 I see no value in indirect threading. 18:04:55 Direct and subroutine threading are the only forms of threading I'll use. 18:05:50 i have a copy of Inside F83 and 83 Source which is where i would start 18:06:19 We each start somewhere. :) 18:06:42 I started with Pygmy. As a result, I've grown up knowing only minimal Forth environments, and preferring them over the bigger environments. 18:08:03 brb -- shaving 18:15:12 --- join: bwb (~bwb@ip68-4-121-108.oc.oc.cox.net) joined #forth 18:16:04 hi 18:16:16 hi 18:16:54 i'm just hanging out here 18:19:23 brb 18:21:18 ok 18:21:29 bwb, what Forth do you use? 18:23:42 UKFIG comming up this Sat 18:25:39 back 18:25:56 re bwb 18:28:13 i have ideas for my own Forth in a text file, i would like to someday impliment them 18:30:14 it will be close to a classic Forth but with some differences. 18:30:28 it will have REMEMBER and FORGET 18:34:06 What, again, does REMEMBER do? 18:34:14 I remember seeing that word, but I completely forget what it does. 18:36:55 i made it up as far as i know, it loads a file and then makes a marker to it so that you can go NEW file and forget and reload the file 18:37:04 FORGET works like normal 18:37:16 Ah, OK. 18:37:52 if you want to make it complicated, you just attach the behaviour to the marker 18:37:56 Someone in one of Chuck's videos used the word REMEMBER. But I think it was used for a different purpose. 18:37:56 but you can forget any word 18:38:01 i miss FORGET 18:38:33 its likely somebody elses FORGET which does something totally different 18:39:14 I'm not sure. 18:39:19 I'd have to really study the code. 18:39:39 Unfortunately, it isn't given with enough context to decipher what it is doing. 18:39:40 i mean somebody elses REMEMBER 18:39:42 duh 18:39:48 Of course. 18:42:06 i had it in Win32Forth 18:42:18 and now I put something like it into SwiftForth 18:42:27 I have REDO 18:42:53 and then I have a short word like APP that loads the application under development from source 18:43:05 REDO forgets up to a marker in AUTO.F 18:43:36 hmm 18:44:19 * kc5tja is finding using FORGET rather annoying actually. 18:44:59 Seeing REMEMBER is giving an idea to handle things better. A mixture of Chuck's and ANSI's, if you can believe it. 18:45:10 when i'm testing something in the command line sometimes i want to compile something that i later forget, just a temporary something to use in a test context or something 18:45:32 yup 18:45:34 The idea is you use REMEMBER to set the fencepost for EMPTYing the dictionary to, while FORGET removes that fencepost, which restores the previous REMEMBER point. 18:46:01 yes 18:46:45 * kc5tja just re-watched the video with REMEMBER in it; it is *ancient* ColorForth actually -- used exactly like MARKER in ANSI. 18:47:14 ColorForth 1997. :) 18:47:47 i was thinking that REMEMBER could make a marker called marker-filename which would then let FORGET remove the fencepost 18:48:21 that way you could still use the name of your file for definition in your file 18:49:07 * kc5tja nods 18:49:34 The reason I like my system is that no word needs to be defined; the EMPTY fencepost is kept in a USER variable somewhere. 18:49:40 I'll have to play with the idea. 18:49:55 sure 18:50:50 hmm . . . 18:51:15 well i'll probably do something like that in my Forth, i don't even have a name for it 18:51:17 * kc5tja ponders the idea of using different typefaces instead of colors for his laptop, since it's a greyscale display only. 18:51:36 Heh 18:52:02 boldforth 18:52:03 i was thinking maybe QUAD because it has four stacks, but i'm not sure 18:52:07 Technically, neither do I. The FS/ prefix just means it's a Falvo Software product (the "software division" of my current company). 18:52:17 yeah, boldForth 18:52:17 fridge: I like it! :) 18:54:40 Quad has an implicit string stack 18:54:50 like PAD is top of string stack 18:56:02 and all of the words that expect a string or emit a string or operate on a string do so on the string stack 18:56:19 i might not need COUNT 18:56:24 Interesting. 18:56:33 * kc5tja still uses more traditional string management techniques. 18:56:48 Although, I do not have a single count-prefixed string anywhere in the entire Forth image. 18:57:03 I even replaced WORD and PARSE with my own (single) word to handle this properly. 18:59:01 WORD and PARSE can be the same 18:59:05 i can't see why they have both 18:59:25 Actually, they can't be; PARSE doesn't handle arbitrary whitespace properly, while WORD does. 18:59:48 E.g., 32 WORD will treat the '32' as if it meant "all possible whitespace," not just plain spaces. 19:00:02 while 32 PARSE means, "Break *only* at the next occurance of character #32." 19:00:11 Most infuriating. 19:00:18 But they were easy enough to replace. 19:00:32 My system is flexible enough to support the definition of WORD and PARSE if I need them. 19:00:44 good 19:05:17 Well, I think I'm going to go hack in support for pushing integers on the stack. :) 19:05:19 brb 19:42:02 time to split 19:42:12 bye 19:42:15 --- quit: jdamisch () 20:17:04 hmmm . . . 20:17:20 I had to code DEFER to get this last step working, but it's not compiling correctly for some reason. 20:17:30 Pygmy keeps reporting that ; is undefined. :( 20:18:33 --- quit: deluxe (Read error: 54 (Connection reset by peer)) 20:34:25 --- quit: kc5tja (asimov.freenode.net irc.freenode.net) 20:48:44 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 21:16:00 re kc 21:17:10 kc5tja: what words do you have to parse strings? 21:26:53 Words I made myself, specifically for parsing Forth source. 21:27:09 --- mode: ChanServ set +o kc5tja 21:29:23 kc5tja: yes... I'm just curious what words you made and what they do 21:30:48 ParseWord ( -- caddr u -1 | 0 ) returns the string of the next Forth word in the current input buffer, and -1 (true), if possible. If the end of the buffer is reached, false is returned. 21:31:44 Note that ParseWord does not take a parameter. It automatically knows to break words at white-space. 21:32:08 ah 21:32:36 This word cannot be used to extract arbitrary strings from source text. For this, I will have ParseString ( delim -- caddr u -1 | 0 ) 21:32:56 For character-oriented parsing requirements, I will also have ParseChar ( -- char -1 | 0 ). 21:33:16 Note, in all cases, an error flag is returned. 21:40:35 Although, I'm not convinced that this is the best way to handle the end-of-buffer condition. 21:41:47 It seems to work for now, but when loading from a file or from a block, nested LOADs (which re-uses the same buffer memory) need special-case handling. I don't really like that. 21:42:25 hmm yes 21:43:09 Basically, I need to store on the return stack the buffer address, buffer size, buffer offset, and information relating to where I found the relavent source information. 21:43:19 This way, I can refill the buffer the next time I need to parse out a word. 21:44:37 ah 21:55:04 * kc5tja sighs 21:55:17 Why are Forth interpretters so damn simple to write, but insanely fscking hard to debug? 21:55:38 I've got total and utter *TRASH* being strewn about my Forth's data stack, and there is absolutely *ZERO* indication as to where it's coming from. :( 21:57:23 --- quit: tathi (Read error: 60 (Operation timed out)) 21:57:23 heh 21:59:52 I think the problem is in my text-to-integer conversion code. I'm going to have to rewrite it. 22:00:07 ah 22:00:23 I can't be certain the flaw is there, but I did discover a control logic flaw in it that would cause it to crash under certain circumstances. 22:01:35 hmm I'd like to write a forth while up at camp 22:02:05 guess I'll use dos/windows (don't have time/patience for setting up a nice linux environment.. and debian is starting to suck on it :/) 22:04:44 whats a really mimimalistic forth for dos? Should have some code on laptop to refer to. 22:15:28 --- join: Serg_Penguin (Serg_Pengu@212.34.52.142) joined #forth 22:15:33 hi 22:17:43 hey 22:19:57 any news from bar front ;))) 22:20:00 ? 22:20:52 bar front? 22:21:01 * kc5tja sighs 22:21:08 I fix one part of the code, and another frigging breaks. 22:21:42 cool ;) 22:21:47 There is absolutely no (let me repeat this: absolutely NO) reason why the number output code should break. NONE!!!!!!!!!!!! 22:22:19 yesterday one 'business' man was shot at my street ;( 22:22:20 I haven't touched that code in weeks, and the code has already been well-tested and verified to work weeks ago. 22:22:24 all debugging like that :/ 22:22:25 So why the()@#$@()#$&()@*#&$()@*#&$298734928734 DID IT BREAK?! 22:22:48 maybe you passed different\wrong values to it ? 22:22:59 -1 . crashes the machine. 22:23:00 redefined some word it's based upon ? 22:23:05 Two weeks ago, -1 . printed -1. 22:23:11 I changed nothing that . depends on. 22:23:14 Absolutely NOTHING. 22:23:22 There is NO logical reason for it to be broken right now. 22:34:46 * kc5tja cries 22:34:47 I give up. 22:35:34 where is it failing? 22:35:40 I utterly refuse to believe that the introduction of a fucking debugging word, : .. S" ." TYPE ;, makes the thing work, BUT ONLY FOR NEGATIVE NUMBERS. For unsigned numbers, it prints wholesale incorrect results. 22:35:45 bwb: I can't tell where it's failing. 22:35:52 I have *NO* frigging clue where it's failing. 22:35:58 Absolutely fucking NONE. 22:36:02 i had a problem like that too 22:36:04 And that's why I'm so fucking pissed. 22:36:24 This just plain should *****NOT**** be happening. 22:36:28 Computers just don't do fucking random shit. 22:36:36 one time I was playing with C code (unrelated to forth)... 22:36:40 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 22:36:41 Yet there is nothing in my code that would cause this kind of behavior. 22:36:57 and the fscking stack got messed up unless there was an extra function put into the code right before that function 22:38:14 But this code WORKS!! I *KNOW* it works! And I know the target compiler is producing correct code. 22:38:24 It's like the 486 itself is broken. 22:38:40 It just decides, "Nope, sorry, not gonna do it." 22:38:46 It's entirely arbitrary. 22:38:51 :/ 22:38:54 And there is ZERO reason for it to be happening. 22:39:25 programming ti-85 (z80) was cool.. never had any wierd things happening (not that I did anything complex).. now programming anything requires lot more work (palm pilot) :( 22:44:08 OK, I found an ****INSIDIOUS**** bug. 22:44:34 NASM produced an incorrect opcode for a very critical instruction, which is what I used to encode opcodes in my Forth assembler. 22:45:00 The stack pointers got weirded out immediately after cold-boot initialization, but before warm-boot code has had a chance to run. 22:45:17 Interestingly enough, my Linux version of NASM does not produce the buggy behavior. 22:45:24 * kc5tja sighs 22:45:50 That being said, FS/Forth can now convert between hex, decimal, octal, and binary number systems, and can even do limited arithmetic. 22:46:05 (addition, subtraction, multiplication, no division, but it does support U/MOD). 22:47:08 It does not, however, support double numbers. 22:47:33 is this latest version of nasm? 22:47:34 And i have no intention of adding them as integral to the Forth environment. Double number support can be coded as primitives if the user wants. 22:47:37 bwb: No. 22:47:46 But it's not the oldest either. 22:48:01 kc5tja: Do you know if it is fixed in latest version? 22:48:10 I've used older versions of NASM that produced correct opcodes for the stack load instructions. 22:48:35 bwb: I can check easily enough. Downloading latest version . . . 22:48:48 k 22:49:08 converting between hex/oct/etc is just changing the BASE variable, right? 22:49:16 Yes. 22:49:29 It's a good exercise for the number input and output code, because it covers all code paths. 22:49:41 Including . and U. (for signed and unsigned representations). 22:49:46 so you coulda said you can convert between any base up to 2^31 22:49:49 Logic functions work too. 22:50:02 >, >=, <, <=, =, U>, U<, U>=, U<=, et. al. 22:50:14 err assuming you had a symbol for each 22:50:32 Yes, you conceivably could. However, it'd require immensely wide integer registers to do it. 22:50:45 I only have 16-bit wide registers. :) 22:50:52 ah 22:51:37 do you just have the interpretter interpret the number based on BASE or do you have pre/postfix's on the number itself? (like 1010b) 22:52:16 I'm eventually going to support both. That's my next step. Right now, it just handles unsigned integers depending on the current value of BASE. 22:52:32 ah 22:52:36 But I need to add support for negative numbers, for hexadecimal constants, and for character constants. 22:52:52 Each of these is relatively easy to add. 22:53:10 These will definitely be done by tomorrow. 22:53:10 :) 22:53:18 But after this, I'm going to take the remainder of the night off. 22:53:36 heh 22:53:36 yes 22:53:38 After that kind of intense debugging, (yes, the venting DID help), my brain is just oozing out my ears. 22:54:19 * kc5tja is really pleased with how FS/Forth is shaping up though. 22:54:44 After I get the interpretter finished (especially support for numbers), the compiler will come next, and that should be relatively easy to support as well. 22:54:53 Then I can start to support colon definitions. :) 22:55:20 cool 22:55:23 It already supports two vocabularies (FORTH and COMPILER, just like Pygmy), so that aspect of the environment is done. 22:55:42 forth and compiler similar to cf's forth and macro? 22:55:46 The Forth environment will *almost* be done at that point. 22:55:51 Yes. 22:56:47 what is a good minimalistic forth for dos? 22:56:50 I don't like the use of MACRO because it's misleading; they're not really macros. Macros imply textual substitutions, and possess capabilities that are not easily representable with Forth immediate words. Instead, they're extensions to the compiler proper. 22:56:52 that compiles with nasm 22:56:58 bwb: I don't know. 22:57:14 yes I didn't like the name either 22:57:30 Mine is target compiled from Pygmy Forth right now; I just used NASM as a means of discovering x86 opcodes for various instructions. 22:57:59 ah 22:58:28 Cool. FS/Forth is currently only 4805 bytes in size. :) 22:59:22 nice! 22:59:23 I can make it slightly smaller by choosing smaller word names in certain places. But I don't like doing that. I like readable source. But with blocks, using longer word names runs the risk of low information density per screen. 23:00:07 readibility outweights density imo 23:00:12 So, I'm trying to find a balance between the two requirements. 23:00:19 mega cool ! what platform ? 23:00:23 MS-DOS 23:00:42 yeah ! 64 k ? 640k ? XMS ? EMS ? 23:01:08 or maybe DPMI ? 23:01:20 It's .com file, so it's purely 16-bit code. 23:01:33 It is only aware of its own 64K of memory. :) 23:01:42 cool ! 23:01:58 what size you estimate then it'll be ready ? 23:03:15 * Serg_Penguin likes 64k .com gp-forth by Alex Larionov, RU 23:03:16 That's hard to estimate. It's subroutine threaded, so generated code is, on average, 33% larger than direct threaded or indirect threaded. But it permits the use of dirty tricks like inline assembly anywhere you want (one of the reasons I did it this way). 23:03:40 I think the compiler will add another 1.5K to it, and the I/O code might add another 1.5K of code (though it might require more due to I/O buffers). 23:03:55 what you plan to put in core ? 23:03:58 I would suspect that the "minimal" FS/Forth environment would consume around 10KB of space. 23:04:20 Serg_Penguin: As little as possible. I'm even planning on leaving the block editor outside of the core. 23:04:20 * Serg_Penguin votes for Forth 'capable _only_ of extension' 23:04:28 right ! 23:04:50 do you think of documenting your work process ? 23:04:53 It's heavily inspired by cmForth, PygmyForth, MachineForth, and ColorForth, all at the same time. :) 23:05:04 I can't even imagine an editor in the core 23:05:06 What do you mean by work process? 23:05:09 kinda like 'write your own Forth' tutor 23:05:15 (bloated standards beh) 23:05:24 bwb: Pygmy has it in the core. It's really nice and convenient, but it does add a fair chunk of memory overhead to the environment. 23:05:33 yeah 23:05:38 ideas, debug stumbles... 23:05:38 Serg_Penguin: You mean, why I did things the way I did? 23:05:45 yes ! 23:06:03 Serg_Penguin: I might. Quite likely so, actually -- we need content for the new #Forth portal site. :D 23:06:32 * Serg_Penguin is dreaming of writing own Forth or even Forth OS, but not feel myself cool enough for this 23:06:37 kc5tja: I'd love to see weighing of ideas... 23:07:00 bwb: Yeah, I wish I'd kept better notes. I'll remember to keep better notes in the future for documentation purposes. 23:07:26 Serg_Penguin: Coolness is irrelavent. Patience is what's required. I almost ran out tonight, though. 23:07:40 Had a nasty bug that was causing severe data stack problems. 23:08:07 And it was virtually impossible to track down. bwb mentioned he was having stack problems in a C program once, and that's what gave me a clue. 23:08:33 ah 23:08:35 I forget what it was 23:08:41 I ran it under DEBUG more carefully, changing the breakpoint to the very beginning of the program, and low-and-behold, the data stack pointer was uninitialized because instead of loading a constant into BP, it was loading it into BX instead. :( 23:08:43 or what it was related to 23:08:50 horible bug tho 23:09:08 Serg_Penguin: Eventually, FS/Forth will run self-hosted on native PC hardware. 23:09:36 actually I know what it was.. something related to brix air was having a problem with.. and it had to do with va_start/va_end/etc doing stuff 23:10:11 Aaahhh...varargs. Gotta love them. :) 23:10:41 yeah 23:10:47 Just one more reason to use Forth -- varargs support is automatic. Not necessarily harmless though... I've been bitten by words like ?DUP which leaves variable numbers of stack items. 23:11:01 I checked to make sure it was going thru properly, and wasn't running too many times.. still couldn't find the damn bug 23:11:14 yes 23:11:34 kc5tja: self-hosted = compile self ? or boot w/o OS ? 23:11:36 both the reason why to love forth and to hate it 23:11:37 Even in FS/Forth, there are a number of words which leave variable number of stack items. But they are relatively rare. 23:12:06 Serg_Penguin: Good question. Both, actually. FS/Forth is not yet self-hosting in that it cannot yet compile itself. Nor can it boot. 23:12:34 It can, however, *almost* compile itself. 23:12:48 THis is because I wrote the target compiler for Pygmy Forth specifically to look as much as possible like FS/Forth itself. 23:12:53 * kc5tja is very pleased with the results. 23:13:24 Porting the target compiler from Pygmy to FS/Forth will not be hard. Perhaps a week's time. 23:13:34 (considering interruptions and other obligations.) 23:13:43 whadda you think on this idea: 23:14:14 write Forth not as self-standing environment, but as run-time library ? 23:14:40 so , to write his program, user _NOT_ runs Forth and add words to it, but... 23:14:50 I believe it's doable, and even beneficial for some programs. Ficl is an example, but it's rather Linux-specific. I tried porting it to the Windows environment once, but I didn't succeed. 23:15:26 .. adds his prog to Forth source and cross-compiles, even modifies Forth src or tosses out unneeded parts ? 23:16:01 * kc5tja needs a new CD-ROM drive -- it's not reading half of my music CDs. :( 23:16:27 Hmm...that wasn't what I was envisioning when you said run-time library. 23:16:40 But as a "pre-packaged" lego-block type of software, I can easily see that. 23:16:47 That's pretty much what FigForth was, wasn't it? 23:17:06 * kc5tja doesn't know too much about FigForth, but I do know it was *very* widely accepted, distributed, and ported. 23:17:12 * Serg_Penguin has no xperince w/ FigForth 23:17:49 It was basically a dialect of Forth, very simple to implement. Optimized for portability, it wasn't very fast, but was very capable, out of the box. 23:18:04 i have some Forths w/ source, and attempted a project this way - copying Forth source tree and editing it 23:18:09 Many people just took the basic Fig sources and just "bolted on" their own code to it, to produce customized versions of Forth for their own use. 23:18:21 yes ! 23:18:59 or combined method 23:19:29 like i'm taking your Forth, add some GFX words in ASM to source, compile... 23:19:34 One thing's for sure, though -- my source code sure takes up a lot more space than Pygmy's. :) 23:19:36 and then use as normal Forth 23:19:47 * kc5tja nods 23:20:28 I will be releasing the DOS version of FS/Forth along with its Pygmy-based target compiler as open source. 23:20:36 So people can use it to make whatever software they see fit. 23:21:09 I will NOT necessarily release my FS/Forth for Linux, Windows, or AmigaOS as open source yet. I need to evaluate a lot of different business alternatives first. 23:21:21 They probably will be released open source though. 23:21:43 The hardware native version of FS/Forth will be released as open source as well. 23:27:04 --- join: a7r (~a7r@206.72.82.135) joined #forth 23:27:09 a7r: re 23:27:23 kc5tja: how's it? 23:27:24 a7r: FS/Forth ran its first command-line instructions just minutes ago. 23:27:41 kc5tja: elite, how'd that go? 23:27:49 a7r: I have only two nerves left. 23:28:05 damn 23:28:06 There was a **very** serious bug relating to the data stack, but I fixed that after much ballyhoo. 23:28:22 But once that one bug was fixed, literally everything seems to be working perfectly. 23:28:27 awesome 23:28:37 I just had a similar thing happen 23:28:37 * Serg_Penguin says 'my nerves are like cat's bowels on a violin' in this case 23:28:57 I had my RX-7's transmission installed, after installing the new clutch and flywheel, and I snapped a bolt 23:29:03 Since I didn't add any words to the core dictionary that isn't used by at least one other word, ALL the words in the dictionary are tested as a result of normal program execution. Hence, all core words work perfectly, by definition. 23:29:24 a7r: :( :( :( That sucks :( 23:29:24 * a7r nods 23:29:31 kc5tja: yeah dude, sucked hardcore 23:29:52 so I had to pull everything apart, pulled the downpipe from the turbo, drilled a hole in the broken remnants of the bolt 23:30:01 extracted the bolt 23:30:23 reinstalled the tranny,.. realized the torque wrench I was using was improperly calibrated. 23:30:23 having no words what 'might be usef00l' is right ! 23:30:24 Gotta rethread the hole? 23:30:35 nah, thank god, the hole is cool 23:30:51 Serg_Penguin: Yup. Though I did accidentally stray from that goal. See my article on the #forth portal for a small editorial on that. 23:31:01 a7r: That's good. :) 23:31:08 * Serg_Penguin hates to repair heavy, gresy things 23:31:18 kc5tja: so I installed the tranny, propeller shaft, put all the exhaust back together. 23:31:29 and then I go driving to test the work, and I get pulled over 23:32:07 the cop pulled me over for double clutching into 2nd gear, and then doing a hard pull into 3rd.. but I was still within the speed limit. :P 23:32:11 Yeah, RX-7s will generally tend to do that. 23:32:26 ``Son, where're you going in such a hurry?'' 23:32:49 Heh 23:32:56 ``Son, don't you realize, every stop light isn't a christmas tree!'' 23:33:10 Did he give a ticket? 23:33:23 nah, he just warned me, after seeing I had all my paper work in order 23:33:50 That's good -- $250 dollars for a speeding ticket is not cool. I know exactly what that feels like, and that was with my bone-stock first-gen. :) 23:33:54 but, the upside is: the clutch works perfectly, and all the problems I was having look like they're corrected. 23:34:07 * kc5tja misses his stick . . . 23:34:14 yeah, the stick owns. 23:34:31 kc5tja: what is the #forth website again? 23:34:38 I've got a 80mm Racing Beat turbo-back exhaust on it right now, and I'm running 11 PSI of boost.. the car is fast. 23:34:50 But, the auto is nifty too. Since it's a GXL and still has all the luxurious interior, it kinda fits. 23:35:07 nod. 23:35:09 bwb: http://forth.bespin.org 23:35:48 thanks 23:36:19 bwb: We're still putting the site together, so it's not very full yet. But we are soliciting articles from anyone who is willing to write content for the site. 23:38:12 "Complexification Happens to Everyone"? hehe sounds like a chapter title in a self-help book ;) 23:41:22 good article 23:41:47 _mega_ good article ! 23:41:57 stack of parser state ? 23:42:55 Thanks for the compliments. :) 23:43:29 Serg_Penguin: Yes, a stack is needed to store parser state, because a block can load a block, which in turn can load other blocks. The stack enables the Forth environment to "return" to where it left off in a block after LOADing another. 23:43:49 what about 'Thinkful programming' and Jeff Fox / Chuck Moore articles ? 23:44:22 they rock ! after reading them, i wrote a simple game all in one-line words 23:44:29 I e-mailed Chuck about publishing his previously unpublished Forth book on our site. I haven't heard any response from him yet. 23:45:04 I don't expect Jeff to re-publish his articles on our site. 23:45:07 kc5tja: perhaps if I find some time, and something useful to say, I'll be happy to write an article... I should be practicing writing essays for SAT II: Writing anyway 23:45:10 His stuff is copyrighted. 23:45:18 Heh 23:45:28 dunno what I could contribute tho :/ 23:45:48 chuck takes a little while to write back.. he replyed in a month or two for em 23:45:49 i wish a catalog of mentioned articles w/ links pointing to ultratech 23:45:52 s/em/me/ 23:46:13 is a mess ;((( 23:46:36 * kc5tja nods -- Jeff concentrates on the philosophical content of his writings more than he does on his site's appearance. :) 23:46:44 it has mega cool stuff , but it's hard to find and poorly annotated 23:46:50 His video library is invaluable though. 23:47:08 * Serg_Penguin has traffic limits so can't see video ;(( 23:47:14 I have local copies of most of the Chuck Moore presentations. :D 23:47:23 * kc5tja understands. 23:49:46 did you ever wrote program in _one_liner's_ ? 23:50:17 Nope. 23:50:23 try it ! 23:50:25 I do not code obfuscated code. 23:50:31 I find the challenge uninteresting. 23:50:40 no, no ! 23:50:48 not all proggie in one line !!! 23:51:04 each function in one line? 23:51:07 proggie written w/ words 30-50 chars each 23:51:40 Oooh, that -- yes. 23:51:46 I actually have two styles. 23:51:50 for example, i wrote 1st version of a game while learning Forth, w/ C in mind 23:52:08 level load code was one word, 11 lines, utter mess 23:52:12 My first style is if the word has a ( stack -- diagram ). In this case, I write the line like this: 23:52:18 : word ( stack -- diagram ) 23:52:22 content blah blah ; 23:52:37 I also write the "two-liner" if the line length exceeds 50 or so characters. 23:52:42 But otherwise, I write it like: 23:52:48 : word content blah lbah ; 23:53:02 I try hard to keep it on one-line, but sometimes it's not possible for me. 23:53:50 now level load is 3 lines of _clear_ code 23:53:53 see: 23:54:05 \ Packed level to field 23:54:05 : 6/ 6 ds/mod -rot ; ( d -- n=d_mod_6 d/6 ) 23:54:05 : 6un @a+ 0 6 rep 6/ 2drop 6 rep !f+ ; ( -- ) 23:54:05 : l>f 0af! 67 rep 6un @a+ m ! ; ( n -- ) 23:54:39 * kc5tja can't follow the code above. 23:54:42 I would need more context. 23:55:07 @a+ etc... is A register from ColorForth, emulated w/ a variable 23:55:15 That's about all I got. :) 23:55:32 6 rep 6/ is instead of loop, repeat 6/ six times 23:55:47 Hmmm... 23:55:52 rep is a compiler word then? 23:55:59 !f+ is like A, but A is 16bit, F is 8-bit 23:56:04 see: 23:56:24 : rep r@ swap 1 do dup >r @ execute r> loop drop ; ( n -- ) 23:56:57 OK, so it does it at run-time then. 23:57:04 yes ! 23:57:27 Are you familiar with Michael Gassenenko(sp?)'s work by any chance? 23:57:51 he is RU not Spain 23:58:00 He's done a lot with Forth and continuations and backtracking. rep reminds me of his work, because he does heavy return stack manipulations too. 23:58:12 have read but failed to grasp his backtraking 23:58:22 sp? means I'm not sure of the word's spelling 23:58:40 my REP is from ASM syntax ;)) 23:59:31 My way of coding something like that would be this; 23:59:41 (in reverse definition order) 23:59:59 --- log: ended forth/03.06.03 23:59:59 --- log: ended forth/03.06.03