00:00:00 --- log: started forth/04.10.07 00:01:49 I think I have to do a more fundamental header modification without segments, like move label: to the actual code. 00:02:47 The segment macros are allowing label: to be semanticly after the whole macro. 00:03:05 I'm not clear on why it's storing two longs the way it is. The tail of the __CODE is the label address after alignment before the CODE definiton, then the next is the final address being assembled. 00:03:33 Are you looking at the whole file/macro? 00:03:45 most of it :) 00:04:02 lemme paste the whole macro 00:04:10 --- join: tgunr (~davec@vsat-148-63-4-106.c001.g4.mrt.starband.net) joined #forth 00:04:30 #define __INITSEG__ .text 0 /* initialization code segment */ 00:04:31 #define __STRSEG__ .text 1 /* constant strings segment */ 00:04:31 #define __DATASEG__ .data 0 /* data segment; must be before code */ 00:04:31 #define __CODESEG__ .data 1 /* code segment; must be after data */ 00:04:31 #define __CODE(lex, name, label) \ 00:04:31 __CODESEG__ ; \ 00:04:32 __aligncode ; \ 00:04:34 label: ; \ 00:04:36 __SST__ ; \ 00:04:38 __DATASEG__ ; \ 00:04:40 __aligndata ; \ 00:04:42 .long label, PREVCODE ; \ 00:04:44 PREVCODE=. ; \ 00:04:46 _NAME=. ; \ 00:04:48 .byte lex ; \ 00:04:50 .ascii name ; \ 00:04:52 __aligndata ; \ 00:04:54 __CODESEG__ ; 00:07:07 so I think the problem I'M having is I'm hitting the data between where label: is physically and the end of the macro, which is where there's the code label: is supposed to label. 00:07:08 Is almost everything in osimplay in .data? 00:07:38 yeah. I do a fake .bss for uninitialized data at the end of the file. 00:07:44 thusly... 00:07:59 heap 00:07:59 allot 100000 00:08:29 heap tells the ELF macro that makes the header not to allocate any more file 00:09:00 I think technically it's all in .text, which is code 00:09:14 hmm I was wrong in my earlier understanding of the code. 00:09:35 That makes at least 2 of us 00:09:51 I think I have to move label to the end of the macro 00:11:18 I think I'm trying to execute the back-link 00:11:46 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 00:11:52 In eforth colon words the next thing is a call to DOLIST 00:13:02 sound like half a clue? 00:13:31 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 00:14:45 ? 00:17:15 HAYYYYYYLP! 00:19:43 The problem that creates is the label is then assembled after the link, a nasty problem I had with H3sm 00:23:10  00:23:16  00:23:30 Morning 00:23:43 * Robert reads through the L4 API docs. 00:24:17 Hi. any relation to kc5tja 00:24:23 ? 00:25:16 Yes, but a non-sexual one. 00:25:26 gasp 00:25:35 Actually he just reminded me of it, another guy I know told me about it a while ago. 00:25:39 And how he liked it. 00:25:57 yah, lots of people like sex. 00:26:08 BZZZZZZZTTTT 00:26:45 I think I'm going with a standard name field size to resolve the forward branch issue 00:27:07 Forward branch issue? 00:27:20 Seriously L4 seems interesting. If it's faster than Mach and allows debugging drivers like QNX can, it would be cool. 00:28:00 I'm converting a 386 forth with a segmented data/code model to a single file, and the header needs mungling. 00:28:56 I don't want to redo the threading scheme 00:30:00 I guess it's a canonical CFA, to a different address-space. 00:31:18 and if it's in the same file, the labelling gets screwed up 00:31:31 imaginator: is that your take on it? 00:34:30 * colorg checks his breath 00:37:34 colorg: it appears to me that the .data 0 segment is used for word addresses and a linked list of those words. .data 1 is the actual machine code for a word. 00:38:35 thanks 00:39:12 So label: is in the wrong place for a single memspace 00:39:14 I see now that the PREVCODE implements a linked list for each call of __CODE. 00:39:31 yeah, _NAME is for LATEST 00:39:52 i.e. it's only used at the end of the file 00:40:31 label: has to be semantically at the end of the macro, which adds assembly issues 00:41:25 it then becomes a forward reference from the .long label, the CFA 00:42:01 so I think I'm getting warmer. Thanks for the feedback. 00:47:05 imaginator: Why wouldn't it allow debugging of drivers? 00:50:33 kc5tja: I didn't intend to imply that it doesn't. Microkernels that allow such things are great. 00:51:02 How big is L4 and what is it written in? 00:51:25 :o) 00:59:55 Cool, I went from a segfault to a bus error 01:01:23 __CODE () { # ARGS... lex name label 01:01:23 twas=H 01:01:23 aq $((H+32)) # CFA 01:01:23 aq $PREVCODE # LFA 01:01:23 PREVCODE=$H # for LFA in later word 01:01:23 _NAME=$H # for LATEST 01:01:25 ab $1 01:01:27 ascii $2 01:01:29 H=$((twas+32)) 01:01:31 L $3 01:01:33 } 01:06:36 colorg: Depends on the specific implementation. Like the relationship between Unix and Linux, there are a variety of flavors of L4 too. 01:07:06 colorg: The one I'm looking at possibly using compiles to 135KB of code (uncompressed), and is written in a strict subset of C++. 01:07:33 imaginator: Why wouldn't a microkernel allow you to debug device drivers though? That's my question. They exist in userspace. 01:08:21 That's another issue then. Drivers in userspace? 01:08:30 135kB, is that "micro"? :) 01:08:38 *cough* 01:09:09 IF it has gobs of drivers yeah 01:10:00 scsi.c in Linux is about 800k of text IIRC :o) 01:10:48 My kernel 1200 bytes. It doesn't DO anything, but hey... 01:10:49 kc5tja: no argument. I suppose microkernel implies *most* drivers in userspace. 01:11:17 Robert: Compare to Linux. 01:12:05 kc5tja: What _isn't_ small comapred to Linux? 01:12:08 colorg: There is no issue about drivers in userspace. The issues that are commonly known are artifacts of monolithic kernel designs. 01:12:16 Robert: Windows. 01:12:47 mainframe stuff probably 01:13:02 Haha, right. But really, 135kB of only IPC and scheduling? 01:13:07 colorg: Actually, mainframe-grade OSes are about the size of Linux currently. 01:13:48 Robert: IPC, scheduling, MMU memory management, SMP support, and let's not forget that it's written in C++, not hand-crafted assembly like L4/x86. 01:14:17 Much of the bulk comes from optimizing the memory copy routines used in message passing between address spaces. 01:14:20 kc5tja: back to userspace, I can see that, kinda. Not clearly. My OS design was 4 kinds of channels, but interrupt handles, bottom-halves, are in the kernel. 01:14:23 Lots and lots of loops are unrolled. 01:15:15 colorg: L4 models hardware devices as kernel-level threads, which you can wait on via IPC. In fact, that's how you detect interrupts: you wait for them just as you would wait for ordinary messages from other tasks. 01:15:34 kc5tja: What L4 implementation are you talking about? 01:15:43 Robert: L4Ka::Pistachio. 01:15:51 For what CPU? 01:15:54 x86 01:16:02 Compiled for the PC99 standard 01:16:02 Why choose that over L4/x86? 01:16:28 Feels like I should google that. 01:16:33 Because L4/x86 isn't being developed anymore, doesn't support SMP, and has a substantially improved API. 01:16:47 In Ha3sm, Hohensee's (99% hypothetical) autonomous 3-stack machine, listeners register with the kernel and messages appear in thier message buffers apparently asynchronously. 01:16:53 PC99 is a Microsoft document detailing the hardware requirements of PCs that are Windows compliant. 01:17:13 I thought PC99 was Aisian PCs 01:17:19 Asian 01:17:46 colorg: IPC in L4 is 100% synchronous. It has the benefits of limiting kernel memory consumption, and also eliminates the need for managing message queues as separate objects. 01:17:57 colorg: Nope. 01:18:06 Ah, so you can run your Forth on computers "Designed for Windows(R)"? :) 01:18:24 Well, you can *boot* on them at least. 01:18:30 hehe. 01:18:33 Always something. 01:18:42 I like Ha3sm better. Kernel buffers don't get that big if you write them out fast enough 01:18:43 Whether or not it'll actually run depends on the compatibility of the device drivers. 01:19:08 colorg: You can't guarantee that they will though. 01:19:21 WHo can't? I'm the kernel. 01:19:49 That's nice. But since L4 is designed to be used independently of any one given operating system, L4 cannot make any guarantees. 01:20:05 That's a DoS 01:20:09 Say, weren't you arguing for synchronous IPC just yesterday? 01:20:31 Me? No. 01:21:53 A Ha3sm process has virtual devices, like a Ethernet buffer. No messages. It has pointers and the process can tell from the pointers in it's ring buffer if the kernel lapped it around the buffer or not. 01:22:22 Excuse my ignorance, but what is a synchronous API? 01:22:24 right. The point being, you can overflow the message queue. 01:22:43 Robert: Two processes, Alice and Bob, are running in the system. 01:22:47 In a process. The kernel doesn't wait for processes. 01:23:11 Robert: Alice wants to send Bob a message to do something for her. Alice will block until Bob receives the message. 01:23:17 The kernel writes thier buffers and is done with them. 01:23:24 Robert: Conversely, if Bob has nothing to do, he will block until Alice sends him a message. 01:23:40 kc5tja: Ah, OK. Thanks :) 01:23:41 E.g., the only time both processes are allowed to continue execution independently of each other is when Alice and Bob rendezvous. 01:24:00 there's a rendevous() call in Plan 9 01:24:10 L4 eliminates the need for it. 01:24:17 It's all automatic. 01:25:16 colorg: So, my question is, because of the possibility to overflow the message queue, do you just "drop messages" if they overflow? Like dropped Ethernet frames? 01:25:36 And if so, do you rely on higher-level protocols on top of the messaging system to handle reliability? 01:25:39 kc5tja: processes do, yes. The kernel doesn't. 01:25:46 That's what I meant. 01:26:10 What is the typical message buffer size for a process? 01:26:31 What's got a huge datarate? SCSI? Gigabit Ethernet? 01:27:07 Well, SCSI is in advance of 100MBps now, which is comparable to Gigabit Ethernet. But the fastest datarate I'm personally aware of is 10-gig-E. 01:27:43 (well, OK, OC-768 is the fastest data rate I'm aware of, weighing in at an monsterous 35Gbps, but I digress) 01:27:43 And how many processes on a PC need to listen to that? 01:28:27 kc5tja: How would you pass a memory block to e.g. a driver? 01:28:37 In an operating system that I would architect, perhaps many. Elevator algorithm would schedule drive seeks accordingly. 01:29:07 Or, put it this way; reliable from whose point of view? From the kernels point of view, I filled your buffer, I'm reliable. 01:29:25 Robert: When you send a message, you can send data through two different means (even concurrently). The first is a byte-by-byte copy from one address space to another (slow). The other is to actually *remap* a portion of your process' pages to the receiving task. 01:29:38 Be realistic here. 01:29:51 Reliable data transfer, by definition, means end-to-end reliability. 01:30:06 The kernel is known to offer only a datagram messaging service -- it is unreliable. 01:30:23 The processes themselves are responsible for reliable data transmission (e.g., using an adaptation of TCP, for example). 01:30:23 It's a design decision. I'm concerned with kernel reliability first, everything else a distant second. 01:30:45 That's how it factors to me. 01:30:54 * kc5tja nods -- nothing wrong with it. 01:31:03 But the term "unreliable" in this context isn't a bad thing. 01:31:14 It's good for personal realtime. It's Amigaish. 01:31:22 It's common message delivery terminology. Unreliable is like UDP, reliable is like TCP. 01:32:02 And for the programmer's model of a process. You ask for a virtual device. If the kernel thinks you can handle it, there it is in your memspace. 01:32:07 Well, Amiga didn't copy messages all over the place, which is where all of its speed really came from. 01:32:45 kc5tja: true, this is multi-user Amiga more or less 01:32:46 The asynchronous I/O model was a huge help too. 01:33:03 Uh oh -- ALL the crickets outside just went silent. :) 01:33:17 * colorg checks his armpits 01:33:25 * kc5tja checks for Bigfoot or Godzilla. 01:34:14 Anyway, L4 should be plenty good enough for what I'm looking to do. 01:34:42 My for channels are block and byte, send and recieve 01:34:45 I'm very satisfied with its feature set and its underlying philosophy. 01:34:46 u 01:36:18 send would be synchronous I guess, i.e. the sender would block. I forget. 01:37:47 or maybe it would block on a subsequent send attempt if the kernel didn't leave a semaphore. 01:39:33 So there is signalling, but that's async, it's just the ring buffer pointers 01:41:00 If you're about to lap the kernel, don't send. 01:42:05 * kc5tja nods 01:42:24 I refuse to go look at my notes :o) 01:42:27 In my earlier Dolphin kernels, I retained AmigaOS's and VMS's concept of event bits. I find them to be incredibly elegant. 01:43:56 Is that how listeners worked? 01:44:15 Pseudocode: 01:44:16 { 01:44:21 while( !done ) 01:44:22 { 01:44:34 signalsPending = Wait( signalsImListeningFor ); 01:44:45 if( signalsPending & MASK_1 ) handle_event_source_1(); 01:44:56 if( signalsPending & MASK_2 ) handle_event_source_2(); 01:44:59 ...etc... 01:45:01 } 01:45:02 } 01:45:20 SO any event bit is event_pending=TRUE 01:45:29 Note that AmigaOS let you "wire up" different objects to event signal bits. 01:45:48 That's what I'm curious about. Who flips the bit? 01:45:54 So you could have two message ports, for example, sharing the same event bit if you wanted. Though, with 32 event bits, this was really rare. 01:46:06 Who turns off the lights? 01:46:07 Outside tasks can only set bits. 01:46:34 Wait() clears them after returning the current state. 01:46:43 I like ring buffers :o) 01:46:49 (think interrupt controllers; the interrupt pending register of most controllers works the same way) 01:47:13 Then, 01:47:17 handle_event_source_X() 01:47:17 { 01:47:25 while( MessagesYetToCome() ) 01:47:26 { 01:47:35 m = GetMessage(); 01:47:38 HandleIt(m); 01:47:43 ReplyMsg(m); 01:47:46 } 01:47:46 } 01:48:06 (this assumes that a single event source is assigned to a single event bit, obviously) 01:48:28 Some Forthiness of Ha3sm, the please syscall is the entry to a Forth dictionary of kernel services. 01:49:37 Some people might balk at the two-levels of event handling -- but this is precisely what allowed AmigaOS to be so damn responsive compared to its Unix bretheren, and *certainly* compared to OS/2 and Windows. 01:50:02 Unix of course now implements the select() (or poll()) function call, which behaves similarly to Wait(), though it's a hell of a lot harder to use, and one heck of a lot less flexible. 01:50:04 please is, say, INT 0x81, which sends a text string of (please) open filesystem ext2 send 01:50:31 OK 01:50:52 (please) is a word that must be specified in the string? 01:52:36 no, but it might be a used as a text word interactively, but it would interpret/compile to the top-level syscall. The 4 channels, once open'ed via a please, might be different syscall #s for speed. 01:53:05 So there's 5 syscalls, one Forth interpreter and 4 fast IO calls. 01:53:34 with the authorization for the IO via the interpreter 01:53:50 ala open() etc 01:54:25 each process will get more stock goodies than 3 file descriptors, too. A clock, for example. 01:54:56 A process would be more like a user in unix. 01:55:17 i.e. a process would be like an Amigados. 01:55:32 With a Forth kernel :o) 01:55:59 * kc5tja nods 01:56:14 Yeah, clock support is one area in Linux that direly needs an overhaul. >:( 01:56:23 it's at about 1200 bytes and I have a bad floppy :o) 01:56:47 clocks are handy critters. 01:58:20 So I use 12 VTs. They'd be 12 Amigadoses. 12 processes. Writing a bunch of buffers wouldn't be that bad. 01:59:40 12 would have clocks, there'd be a filesystem or two with hot disk service, not much traffic 02:00:48 --- quit: imaginator ("sleep") 02:00:55 Can the application set how big its message queue is? 02:01:06 E.g., in anticipation of a lot of data, for example? 02:02:29 yes. There's a stock ring structure so when you open a channel you give the kernel the address, size, yaddayadda. What matters is that the reciever be able to tell when it's been lapped. 02:03:15 And processes don't do anything that would lap the kernel. 02:04:41 You give the kernel the address you want to be byte 0 of the buffer. Negative offsets are standard for size, next available byte, etc. 02:05:30 and a total throughput count maintained by the sender, which is how you can check if you've been lapped 02:06:37 The difference between data and an interrupt is an interrupt is itself a singleton, like a bit. 02:07:23 AN interrupt is either up or down. Data stores. 02:09:26 This lighter I bought this afternoon just made a recorded noise. Scared the fuck out of me. 02:13:50 Hahah 02:18:46 The flame turns green in about a second. I think it's got a little copper ball in the flame outlet. And it's got a girlie pic on it. Quite a glorious little piece of junk. 02:19:46 Ahh, St. Patrick's Day lighter. :D 02:20:17 it would be brilliant on St Patty's 02:50:40 oh dear 02:50:46 --- nick: fridge__ -> fridge 02:54:14 blerf 02:55:42 anyone use LILO? 03:01:04 I've used it in the past 03:01:11 I use grub now, given the choice though 03:02:21 After it loads an image where does it jump? 03:02:52 In other words, I'm thinking about booting a project kernel from LILO 03:03:14 oh, I don't know how it works in that much detail 03:03:33 I've booted a range of things with bootloaders 03:03:37 like memtest86 03:05:23 maybe it's ELF :o) 03:07:03 probably 03:13:20 well the front of a Linux bzimage has the bootsector aa55 and looks like code. 03:13:36 I guess it's bootsect.S 03:14:04 definitely not ELF 03:16:52 Yeah, it's just concatenated code 03:24:15 yeah, it's code at 0000000 03:25:13 It will be loaded into RAM at physical address 0x00007C00 though. 03:25:28 LILO is. 03:25:54 I recommend doing a far JMP to 07C0:0000h to make sure the CS register is set correctly inside your boot code (or, better yet, just plain don't depend on its value somehow). 03:26:23 Guaranteed that Linux's boot sector is loaded at 0x7C00. 03:26:31 LILO has to move itself out of the way to do it. 03:26:40 by the loader at 7c00? 03:27:05 The BIOS loads the MBR at 7c00. LILO.] 03:27:16 LILO is loaded at 7C00. During its start up phase, it moves itself out of the way so that it load the boot sector of the chosen OS at the 7C00 location. 03:27:28 ALL boot sectors, MBR or otherwise, go at 7C00. 03:27:31 AH. Makes sense. 03:27:54 (don't ask me; I frankly think that's a retarded place to put boot code. But I digress.) 03:28:00 That way a kernel image on a floppy works like a LILO-loader one, which they do. 03:28:07 yup 03:28:42 cool. I have a crisp floppy controller, and a germ of a kernel project, so... 03:28:52 :-) 03:30:00 LILO loads whatever size the file is from there? Like up to the PC RAM limit? 03:30:21 (I only need about 50k anyway...) 03:32:23 I guess so, from dim Linux memories 03:32:54 512k was the kernel size bugaboo for a while 03:33:43 I think LILO only boots the first 512 bytes of the image, treating it like a boot sector. I'm nto sure about that though. I know GRUB loads the whole kernel image into memory in one fell swoop. 03:34:00 that makes sense too. 03:34:37 grub knows more about filesystems. LILO is all CHS mapped 03:35:32 i.e. LILO creates a block map for an image 03:36:28 The first 3 bytes of a bzimage is in fact the first instruction of bootsect.S, movw $BLAH,%ax 03:37:20 still rmode of course. LILO uses the BIOS 03:38:28 I'll have to convert DOS to osimplay one of these days. Dear Mister Gates, Yes, you've been replaced by a shell script. 03:39:05 He'd be so horrified he wouldn't prosecute 03:54:22 Hehe 03:54:50 Let's not forget his little sidekick, Ballmer. 03:54:56 He'd sue in a heartbeat. 03:57:17 Indeed 03:58:50 --- join: crc (crc@140-pool1.ras11.nynyc-t.alerondial.net) joined #forth 03:59:22 AH, I did do a register dumper in osimplay. That's what I need for this eforth hurdle now. 04:25:41 anyone online ? i gonna test a new client - Miranda 04:25:58 --- nick: Serg_penguin -> Serg_test 04:27:10 --- join: Serg_Penguin (~Miranda@212.34.52.140) joined #forth 04:27:26 hi from Miranda :) 04:27:34 ACK 04:27:34 re from Mirc ;)) 04:27:43 NACK 04:28:02 Miranda is in Forth? 04:28:07 * Serg_test leaves Mirc - ghosts are BAD THING 04:28:10 no ! 04:28:18 just a client 04:28:22 --- quit: Serg_test () 04:30:06 it hasn't font options - i so used to BIG GREEN letters ;)) 04:30:07 -- multiline test 04:31:19 ACK /msg 04:32:15 e nuf 04:32:27 I beep on /msg, please stop 04:32:39 ok, i stopped 04:34:20 * Serg_Penguin wants to beep but dunno how to do so in Mirc 04:34:54 please /msg me for test 04:36:58 aha, it behaves ICQ way ;)) 04:37:18 Vice-versa I'm sure 04:37:27 IRC goes way back 04:38:03 i stomped on coffin of ICQ client coz of it ads 04:39:34 I've been using skype 04:39:47 hmm.. dunno it 04:39:52 * Serg_Penguin runs win32 04:42:33 I'm saying IRC is much older than other chat datasystems 04:42:55 aha 04:42:56 the damn thing does not show idle time !!! 04:43:49 colorg 36 1097126195 seconds idle 04:43:49 what does it mean ???? 04:44:05 36sec or almost eternity ? 04:44:28 * Serg_Penguin 's date is correct 04:44:37 Heh 04:46:10 :;bases 1097126195 04:46:12 01000001_01100100_11010001_00110011 10131150463 0x4164d133 1097126195 dec 04:46:33 Hmmmm, good thing we didn't STEP in it! 04:47:26 Miranda is mega buggy, last time i used a new version, it just bombed core 04:47:26 now they seem to fix some shroedinbugs ;)) 04:47:52 Not Heisenbugs? 04:48:41 google for Shroedinger cat ;) 04:48:50 0x00 to IER register 04:48:57 err, wrong window :-( 04:49:32 shroedingmice and shroedingrats ;)) 04:49:57 I'm looking at the code for Forreal. It's a good thing I got away from that. I was quite out of my mind. 04:50:29 Jargon File for Heisenbug 04:51:35 aha ! Jargon File _ROCKS_ !!! 04:52:16 Heh, that's a cute name. 04:52:43 i read it first in a RU translation, paper book 04:53:04 though, quite outdated 05:04:59 --- quit: Serg_Penguin ("Miranda IM! Smaller, Faster, Easier. http://miranda-im.org") 05:08:58 imaginator was wondering what 256k of NOPs was for. I was benchmarking osimplay. It took 15 minutes toassemble 256k of NOPs 05:10:31 Make it faster :-) 05:11:35 Ever try to optimize Bash? It's like drop-forging cow manure 05:12:05 I've never written a large script in bash 05:12:12 * crc prefers simpler shells 05:17:28 My assembler in Bash is 130k 05:17:55 Assembler in bash? 05:17:57 Heh. 05:18:04 It must be a pain to update 05:18:04 You ARE crazy. 05:21:14 I don't think I've updated it at all tonight 05:36:53 OK 05:36:57 --- quit: colorg ("ircII EPIC4pre2 cLIeNUX. Can you say that?") 06:02:25 --- quit: madwork (Read error: 104 (Connection reset by peer)) 06:10:26 --- quit: Robert ("You lock the door and throw away the key. There's someone in my head, but it's not me!") 06:33:42 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 06:52:26 --- quit: crc (Client Quit) 06:58:07 --- join: Robert_ (~pink@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 06:59:03 --- nick: Robert_ -> Robert 08:04:16 --- quit: hrmpf ("sorry, had to go looking for myself....") 08:08:22 What's a good name for a word that finds the position of one string within another, like C's strstr()? 08:08:38 substring? 08:08:49 indexOf 08:08:55 inside 08:09:01 contains 08:09:07 pos 08:09:22 Yeah, pos -- that's an old BASIC keyword for the same thing. :) 08:09:31 Ahh, is it? Cool, I'll use that then. :D 08:09:33 And it's _short_ 08:09:38 $pos it is. 08:37:33 Off to bed for me. 08:38:52 night! 09:10:43 --- join: arke-sch00l (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 09:52:28 --- join: crc (crc@248-pool1.ras11.nynyc-t.alerondial.net) joined #forth 10:06:47 --- quit: arke-sch00l ("CGI:IRC (EOF)") 10:08:28 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 10:09:52 --- quit: crc (Client Quit) 10:11:51 --- join: TheBlueWizard (TheBlueWiz@modem-089.nyc-tc04a.fcc.net) joined #forth 10:11:51 --- mode: ChanServ set +o TheBlueWizard 10:56:14 --- quit: TheBlueWizard (Nick collision from services.) 10:56:26 --- join: TheBlueWizard (TheBlueWiz@modem-011.nyc-tc03b.FCC.NET) joined #forth 10:56:26 --- mode: ChanServ set +o TheBlueWizard 11:12:52 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 11:17:05 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 11:24:30 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 11:24:30 --- mode: ChanServ set +o Herkamire 11:26:55 --- quit: TheBlueWizard (Nick collision from services.) 11:27:13 --- join: TheBlueWizard (TheBlueWiz@63.250.24.237) joined #forth 11:27:13 --- mode: ChanServ set +o TheBlueWizard 11:35:31 --- quit: swsch_ ("Leaving") 12:23:30 --- join: arke-sch00l (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 12:24:31 hiya 12:25:58 arke hiya 12:36:14 whats up? 12:39:54 nothing 12:40:36 just chillin' 12:40:37 :p 12:40:45 Hi 12:40:50 fitch deduction system is evil btw. 12:41:08 its not getting thru to me at all >:( 12:41:22 well, i should say not entirely. 12:41:43 I wonder if converting a dictionary into a Forth file is a Good Idea(TM). 12:41:57 to what purpose? 12:42:06 for reference? 12:42:07 To create a simple dict program? :D 12:42:15 i guess... 12:42:26 there should be a large database online 12:42:29 with forth words 12:42:37 not a project i'm gonna dive into though 12:42:43 wiki type of page 12:42:57 multiple words being allowed, with descriptions, etc 12:43:06 i mean multiple instances of the same word 12:43:16 Interesting idea, and if Forth was standardized *AND* the standards were followed, it might even work. 12:43:26 But I'm thinking about natural languages 12:43:26 even if it didnt, so what 12:43:29 oh 12:43:41 Would be pretty cool, especially with a Forth using hashed dictionaries. 12:44:10 sure go ahead and work out 140.000 words, i'll just use webster.com though :) 12:44:25 well, for the website it would be a database type of thing 12:44:47 perhaps with a test-module as kc5tja has been talking about 12:45:08 Hmm.. Perhaps even automatic benchmarking? 12:45:11 and huge discussions about words like to ;) 12:45:16 indeed 12:45:21 So that different words could be compared. 12:45:38 although speed does depend on the implementation, but heck. 12:46:02 Yeah, but a really good word always beats a bad one ;) 12:46:11 (i mean one word might bench good on one forth, where the other type would do better on anohter forth) 12:46:20 I know 12:46:23 :) 12:46:50 anyways. i'm gonna try and see if i can understand fitch when explained by somebody else 12:47:05 been trying to hack this system for hours and getting frustrated 12:48:03 :( 12:48:08 Good luck anyway 12:54:31 --- quit: arke-sch00l ("CGI:IRC (EOF)") 14:04:28 --- quit: wossname (Client Quit) 14:07:39 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 14:23:41 gotta go....all bye 14:23:53 --- part: TheBlueWizard left #forth 15:16:09 --- join: saon (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 15:23:45 --- quit: qFox (Read error: 104 (Connection reset by peer)) 15:41:04 How do y'all prefer to name words that return data conditionally... ie. ( blah -- data -1 | 0 ) 15:41:28 I was thinking GETSTUFF?@ 15:41:50 eww 15:41:55 variable return = suck 15:42:02 FIND does it. 15:42:02 ?getstuff 15:42:07 hehe. 15:42:09 find don't count 15:42:10 :) 15:42:12 actually 15:42:16 depends on the forth 15:42:20 Well, it's rather useful for embedded calls. 15:42:22 ygmyforth and colorforth dont return variable 15:42:58 * Hyrax prefers ( blah -- data flag ) 15:43:21 If the flag is false, you still return data? 15:43:48 yes 15:43:51 yes, often just 0. 15:43:57 Anyway, I'm not caring about the return values, but the naming of the word for such a thing. 15:44:05 But, ?GETSTUFF is maybe a better idea... 16:13:06 --- join: Topaz (~top@sown-88.ecs.soton.ac.uk) joined #forth 16:16:10 --- join: Sonarman (~matt@adsl-64-171-254-168.dsl.snfc21.pacbell.net) joined #forth 16:31:27 --- quit: Topaz (Read error: 113 (No route to host)) 16:33:28 --- join: Topaz (~top@sown-88.ecs.soton.ac.uk) joined #forth 16:44:54 arke is dead, long live arke 16:50:09 4rk3 16:52:14 does he write about masturbation or programming in this channel 16:53:47 primarilly the latter 16:54:59 ok 16:55:29 i was hoping to check the logs and get some hott arke text but it seems my horniness cant be cured so easily :(~ 16:58:46 well, there's meme.b9.com if you wish. 16:59:15 what is that man doing to his anus !! 17:06:20 --- join: hefner (~hefner@pool-141-157-13-173.balt.east.verizon.net) joined #forth 17:22:13 --- quit: Topaz ("Leaving") 17:39:19 --- join: futhin (thin@bespin.org) joined #forth 17:39:19 --- mode: ChanServ set +o futhin 17:43:50 as the graph of the quantity of forth ops approaches infinity it approaches a smaller number!!!! 17:45:42 is no one else shockeD?! 17:48:05 the interesting question is.. "What number?" 17:48:49 hefner: uh, 3 is the average number of ops in the chan at all times not counting chanserv 17:50:05 hefner, 42 17:50:33 --- join: patrix (~patrix@patrix.ott.istop.com) joined #forth 17:50:34 nrn! 17:50:45 haha 17:50:53 hugh hefner! 17:50:54 I was thinking you meant words in forth 17:51:00 hey patrix :P 17:51:05 --- mode: futhin set +o patrix 17:51:05 destroyer of worlds! 17:51:06 hi futhin 17:51:09 NICE 17:51:13 futhin!!!!!!!!!!!!!!!!!!!!!!!!!!1 17:51:15 now I can kick.... myself! 17:51:21 --- kick: patrix was kicked by patrix (haha) 17:51:23 arke: sup 17:51:32 --- join: patrix (~patrix@patrix.ott.istop.com) joined #forth 17:51:34 ok 17:51:37 --- mode: futhin set +o patrix 17:51:39 hi :) 17:51:53 futhin: op me, since slava the traitor wont evn though i was the one who opped him in the first plkace!!!!! 17:52:01 arke: so i had a dream of coding lisp in 10 lines of code this morning 17:52:06 --- mode: futhin set +o arke 17:52:15 ugh lisp 17:52:17 it was a good dream to wake up from.. 17:52:20 hi slava 17:52:27 I met a guy named slava (I think) not too long ago 17:52:39 did you futhin 17:52:43 DID YOU 17:52:44 I dream of coding lisp in 500 bytes of machine code 17:52:44 yeah i just leanred slava is actually a name 17:52:50 but I don't think it's gonna happen ;) 17:53:00 hefner, colorlisp :) 17:53:08 i dream of coding forth in 256 bytes of machine code :) 17:53:11 slava: :) 17:53:12 slava - where are you from? 17:53:12 i'm talking about lisp with cars, cons, cdr, lambda, and the interpreter for all the ()()(()((((()))))) 17:53:17 in 10 lines of code 17:53:19 or something.. 17:53:25 uranus 17:53:30 500 bytes of machine code doesn't sound unreasonable for lisp 17:53:43 futhin: whoa for a minute I read lips with cars, condoms, lambada 17:53:45 slava: you must be rather brown then? 17:53:58 patrix: heh.. lips with cars! 17:54:11 lips in the car seat? 17:54:12 hmmm 17:54:17 yes 17:54:23 lambada and lips in the car seat! 17:54:32 i don't know what lambada is 17:54:51 cool 17:55:13 I don't think I know either 17:55:15 bye 17:55:21 heh 17:55:22 cya 17:55:29 --- kick: patrix was kicked by patrix (I don't want to click the close button! FOR TO CLICK MY LINEX!) 17:58:00 hehe 17:58:03 that guy was awesome 17:59:32 yeah he's a friend but not a forther :( 18:01:19 hey arke i think i just came 18:01:20 slava: so you must be rather brown and smelly if youre from uranus.. 18:01:25 what should i do 18:05:30 wossname: wipe your mom's face 18:06:44 ;_; 18:06:44 that was uncalled for 18:06:44 --- part: wossname left #forth 18:08:18 hahaha 18:08:49 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 18:08:49 heh 18:08:55 wb wossname 18:09:10 --- mode: arke set +o wossname 18:09:15 --- mode: arke set -o futhin 18:09:15 --- mode: ChanServ set +o futhin 18:09:22 futhin: HAH, WHAT ARE YUOU GONNA DO NOW? 18:09:23 ... 18:09:24 ok mayor parkins we are even for now 18:09:25 damn chanserv 18:09:27 heh 18:09:29 --- mode: arke set -o futhin 18:09:29 --- mode: ChanServ set +o futhin 18:09:30 --- mode: arke set +o futhin 18:09:31 chanserv is on my side :P 18:09:33 hehe 18:09:34 :) 18:09:35 does it automatically 18:15:28 arke wake up lol 18:16:10 i440r: how come your not identified! you might be fake! 18:17:33 therse only ONE me 18:17:42 and i know everything 18:17:47 thats profe enough im me :) 18:18:12 i can tell its you because of your bad typos! ;) 18:18:49 eerr which i didnt even notice till you pointed them out 18:18:56 * I440r thwaps futhin 18:18:58 heh 18:19:07 so whats up i440r? 18:19:16 as you almost done the assembler for isforth? 18:19:18 ;) 18:19:34 yea.... (shifty eued look) 18:19:55 eyed even 18:19:55 grrr 18:20:12 are you doing a lot of coding lately? 18:20:35 i think your typos increase when you do more coding 18:20:37 not sure tho 18:26:22 --- quit: saon ("Leaving") 18:31:32 --- quit: Sonarman (Read error: 110 (Connection timed out)) 18:32:31 --- join: Sonarman (~matt@adsl-64-160-164-116.dsl.snfc21.pacbell.net) joined #forth 18:32:43 sonarman 18:32:48 blip! 18:32:50 blip! 18:38:56 I wrote DUMP at work today, hee. 18:39:06 is that a super dup? 18:39:21 super dup? 18:39:25 --- nick: madgarden_ -> madgarden 18:39:59 what is dump 18:41:04 hex dumps memory 18:41:11 oh 18:41:24 addr len dump 18:41:46 Quite handy for analyzing the data packets I'm constructing. 18:41:50 sorry but stack comments don't exist in my reality 18:41:58 That's not a stack comment. 18:42:18 The stack comment would be ( addr len -- ) 18:42:19 :P 18:42:33 heh 18:42:35 How do you comment your inputs/outputs then? Or DO you? 18:42:59 nah as far as i'm concerned stack comments are bad practice 18:43:17 So, uh... how do you remember what parameters a word takes? 18:45:48 * Hyrax uses ANS stack comments and describles there usage in the comment block above the word. 18:46:12 well words presumably have good names. also, they never take more than 2 parameters. and the code is only a line or two so its pretty readable.. 18:46:16 code is the stack comment ;) 18:46:58 me thinks futhin likes to produce write-only code 18:47:18 there's no such thing 18:47:47 futhin, I generally try to write my words like that, but still, stack comments help me through my ADD moments. :) 18:48:20 I don't stack comment every line, just the word itself. 18:49:31 i dunno 18:49:32 bleh 18:49:35 bleh! 18:49:49 Commenting every line is noisy. I sometimes do it temporily and erase them later, but I don't do that as often as I used to. 18:50:20 Yea, I just put 'em where I need 'em. Too much swap rotting -rots my brain at times. 18:50:26 If I have to stack comment every line as I right it, the code is way to complex. 18:50:41 get rid of rot 18:50:59 hyrax: nobody does that anyways 18:51:16 stack commenting every line of code, i did that once upon a time 18:51:44 but i've since learned that coding in forth isn't about the stack 18:52:04 getting caught up in the stack leads to excessive stack manipulation 18:52:15 instead focus on words 18:52:20 and passing messages between words 18:52:25 ZEN! 18:52:47 I don't like going over 3 items, unless I can pick them off sequentially. I try to avoid ROT, -ROT, and definitely avoid PICK 18:54:09 but you can't always only 2 items, but I agree, it is best to avoid more than 2. 18:54:26 Well, how would you factor a word that takes 3 parameters... address and length of a data buffer, and an address of a URL to send the data to? 18:54:52 well just follow chuck moore's advice.. don't pass more than 2 items to a word, don't have more than 3 items on the stack during a word 18:55:22 then how do you copy one buffer to another? 18:55:23 madgarden: i guess i wouldn't since address & lenght of databuffer is practically one item.. 18:55:23 OK, but I want to see how you'd do this with 2 or less parameters. What am I missing? 18:55:28 nah 18:55:33 its a general rule 18:55:40 it gets broken every now and then 18:55:42 So, length goes into the data, you say? 18:55:49 but ya want to avoid breaking it as much as possible 18:55:57 That's no good if I'm sending arbitrary chunks of a buffer. 18:56:41 talking about 2 parameters passed to word.. thats a maximum we want to strive for 18:56:41 No, I can see not making do-all words that take 10 parameters. 18:56:50 (No = now) 18:57:07 But, certain things will require more than 2 parameters. 18:57:20 Unless there's some mystery technique I'm oblivious to. 18:58:31 i'm not disagreein 18:58:36 Just think of ( addr u) as ( xd), then it is only one item. :) 18:58:59 xd? 18:59:36 x is don't care, d is double cell 18:59:45 http://rainbow.arch.scriptmania.com/rainbow_tv_episode.html 19:02:24 #> number-sign-greater CORE ( xd -- c-addr u ) Drop xd. Make the pictured numeric.... 19:10:45 there are operations that involve more than two operands 19:11:03 it is very nice when you if you can think of something that works 19:11:22 eg if you have the count stored as the first cell of the source buffer 19:12:01 : memcopy ( dest src -- ) >a @+ for dup @ !+ 4+ next drop ; 19:12:51 mmmm... maybe that should copy the count too 19:13:02 doesn't always work of course 19:15:24 memcopy >a @+ for dup @ !+ 4+ next drop 19:15:41 we should have colorforth code pasted in here 19:15:44 without the color 19:15:55 ez to understand neways ;) 19:16:13 very cool if you can have the operands in the order you use them: 19:16:24 some ukranian lady posted on the old forth forums.. 19:16:26 http://forum.forth.bespin.org/viewtopic.php?t=19 19:16:29 she's looking for love 19:16:30 lol 19:16:34 Herkamire, doesn't address register cause re-entrancy problems? 19:17:03 : -move ( src u dest ) >a for dup @ !+ 4+ next drop ; 19:17:25 slava: beats me. I don't think about re-entrancy 19:18:00 i think addr register can work only if you're always thinking about (and know) every word definition 19:18:14 oh right 19:18:22 >a xyz a \ what does xyz do? does it use a? 19:18:34 yeah, no use clobbering the address register with some other word while you're trying to use it. 19:18:48 but how do you guarantee this? 19:18:58 know the code 19:19:39 or you can use words to save/restore the old value 19:21:16 in my experience with herkforth, it's been much more of an advantage not having to restore the old value 19:21:50 (more of an advantage, than I think I would get from knowing that no words would clobber the current value) 19:27:23 I use cooperative multitasking, so I don't worry about reentrancy. 19:27:28 easy enough to save the old value. make a macro or word equivilent to: a >r >a 19:27:54 Hyrax: I think he's just talking about recursion, or calling another word that uses the address register 19:29:09 Yah, for recursion that makes sense to allow re-entrancy. 19:32:32 well 19:35:21 re-entrancy is teh sexy 19:36:24 address register always struck me as a hack 19:36:46 the only way foris to ALWAYS push the a reg if u use it 19:36:55 i think th ea register is a bad idea 19:37:24 "for you to guarantee not clobbering it" 19:37:56 it makes forth a NON stack machine 19:38:18 whats wrong with the A register? 19:38:24 its l33t 19:38:56 bu having that register you make your processor REGISTER based and very register starved 19:40:58 anybody know partial diff equations here? 19:42:37 Words that use real address registers (or any other global, as registers are globals) should only be bottom level words. (words that don't call other words, unless the called words are assembly and their register usage know not to conflict). 19:44:30 i440r: huh? but we all use forthchips 19:44:35 so i don't see what the problem is 19:45:23 they are not forth 19:45:27 they are not stack based 19:45:30 they HAVE a stack 19:45:34 but they are register based 19:45:38 the a register dictates that 19:47:12 I don't think it really matters (except for speed) whether the address register is a register or variable 19:47:49 could very easily implement these in gforth: a >a !+ @+ etc 19:48:21 a hybrid stack/register architecture is probably better than only one or the other 19:48:38 just pretend morons won't abuse the a register 19:49:03 futhin the a register takes away all the advantages of having a purly stack based machine 19:49:12 i.e. NATURAL re-entrancy 19:49:28 assuming you dont use variables in a word it will always be reentrant 19:49:33 traditional forth variables have the same problem 19:49:44 yes 19:49:48 and they are frowned upon 19:50:23 tho heavilly used :) 19:53:18 i gotta go zzz. im exhausted 19:53:23 nite ppl 19:54:01 good night 19:54:07 i'm going myself too 19:58:06 --- quit: futhin ("laters") 19:58:07 --- join: Sonarman_ (~matt@adsl-64-169-94-16.dsl.snfc21.pacbell.net) joined #forth 19:58:40 --- quit: Sonarman (Read error: 110 (Connection timed out)) 20:01:15 frowned apon by who? 20:01:27 people who want to write more modular code 20:01:32 you can't freakin do everything on the stack 20:05:05 my phylosophy is to not make code any more indirect, abstract, etc than I need it to be right now 20:05:33 i find abstract code can be easier to understand and reuse 20:05:45 details should be factored out 20:06:33 I don't find abstract code to be useful at all 20:07:33 OMFG!! I slept for 12 hours!! 20:07:42 (or nearly so) 20:07:53 once you have abstract code, concrete code can call it 20:09:51 I guess I'm one of those people that's most interested in how it actually works 20:10:24 thats why i like writing code that doesn't have to explicitly deallocate memory. 20:10:32 deallocation is detail that distracts from the problem at hand 20:10:51 Most software is abstract code. Unless you wiring up state machines by hand or building them with gears what not, the software is an abstraction. 20:11:07 slava: I that attitude is a huge part of the reason so much software these days is so freaking slow 20:11:44 most of what computers do for us is move data around 20:12:17 software is slow because its large and does a not of stuff 20:12:23 s/not/lot 20:13:07 Herkamire: I agree with you for the most part, one should always consider what the code is doing at a low level, and not do more than needs to be done. 20:13:10 I think it's usually slow because it's design is not focussed around memory management, and the way data moves through it 20:13:23 Abstraction does not neccessarily add boat. 20:13:59 abstraction usually adds a little 20:14:08 and it generally makes the software slower and more confusing 20:14:26 I'm not saying abstraction is bad, but being overly abstract is bad 20:16:16 Oh, I definately agree, being overly abstract is terrible.Even when abstraction is used, it is good to know what is going on underneath, and make a clean way of going below the abstraction if staying above it makes something run too slow. 20:16:30 a profiler will tell you if your code is too slow 20:16:36 writing readable code should always be the main goal 20:17:12 slava: I don't really give a crap how readable your code is. if it takes many secconds to get your program started, I'm not interested. 20:17:30 Individual components adds little bloat. 20:17:50 It's when you built a complete suite with all abstract components that you get a lot of bloat, because each of the little bits all add up. 20:18:09 It's an issue of product X does A, B, and C, but you only need C. A and B are never used. 20:18:17 Herkamire, why would it take many seconds for a program to start? the programmer should profile the startup sequence and optimize as necessary. 20:18:37 I do not find that garbage collection adds bloat. 20:18:48 slava: it shouldn't. I don't know why they do 20:18:53 firefox takes 10 secconds to start up 20:19:16 that's not due to abstraction, its due to developers not caring about performance at all 20:19:24 all it has to do is 1) allow me to type a domain name 2) present other options (through a menu or something) 20:19:53 slava: that's not true. I think the main reason for forking from mozilla to create firefox was to create something "fast" 20:20:01 Often code that just runs once without looping can be a bit abstracted and not hurt performance. But code that ends up getting run multiple times and inside loops, that abstraction starts to show the bloat and performance suffers. 20:20:05 well they started from mozilla.... 20:21:01 Herkamire: "Fast" is a relative term. "Fast enough" is more accurate. What is fast enough for them may not be fast enough for us. 20:21:16 Much of what Firefox is doing at startup is initializing and loading in the COM components it uses to render its own toolbars! 20:21:29 this is why i like image-based environments. 20:21:37 you set up your program in a fully initialized state, and dump a memory image 20:21:55 on startup, just map the image and start interpreting the entry point 20:21:59 slava: how long does factor and jedit take to start up? 20:22:08 However, if they optimize the sequence a bit, they can load the minimum number of COM components necessary, present the window to the user, then continue the remainder of the COM components in the background. That alone will vastly improve the responsiveness of Firefox at startup. 20:22:10 Herkamire, factor starts instantly, jedit takes 6 secodns or so 20:22:16 Herkamire, because factor just maps the image 20:22:17 slava: yes, that is the way to go. Hit the ground running, and running hard. 20:22:54 Well, that's because Factor is orthogonally persistant. :) 20:23:13 that works fine 20:23:43 The problem with image-based environments, however, is that they usually have some kind of interoperability issues running in a non-image-based environment. 20:23:51 but computers are so fast, you can do a hell of a lot and still be started up instantly 20:24:03 kc5tja, well, my sources are still files 20:24:05 For example, when one wants to share code between different users, Smalltalk has to have some bizarre source code format. 20:24:16 kc5tja, i load the source file into the image when it changes 20:24:17 eg herkforth compiles all of it's self (except the 1KB kernel) when you start it up, and it's still instant 20:24:43 Sure. 20:24:54 I think most do exactly that. 20:24:58 kc5tja: yeah, I was thinking about that. 20:25:08 ColorForth, for one, doesn't. 20:25:12 Herkamire: but programmers with mentality start writing embedded systems with that mentality (that computers are so fast), and the code performance ends up being terrible. 20:25:12 And the original APL didn't either, IIRC. 20:25:29 Herkamire, if it starts instantly, it doesn't matter how much it does 20:26:30 slava: But, does Factor have its own little backdrop on which it runs? Does it have its own windowing environment inside its runtime? 20:26:44 kc5tja, eventually ;) 20:26:50 See, that's what people hate. 20:26:56 --- join: colorg (r@core-dc-5-30.dynamic-dialup.coretel.net) joined #forth 20:27:03 kc5tja, it probably won't be overlapping windows though. 20:27:06 They want, e.g., Smalltalk's windows to fully integrate with the host system's non-image-based windowing environmnet. 20:27:07 kc5tja, just tiled 20:27:09 Hard to do. 20:27:16 Hi. 20:27:24 slava: Whatever. The point being, the UI is disjunct from the rest of the system. 20:27:27 kc5tja, if i make X11 bindings there is no technical reason i can't open > 1 top level window 20:27:32 kc5tja, or i can use gtk+ 20:27:54 except then there's the issue of gtk objects not persisting. 20:28:12 slava: Except when you re-run Factor, it'll have to reconstruct all those bindings (e.g., re-open all those windows) to give the appearance of a persistent system. 20:28:21 yes. 20:28:28 i don't see any way around this though 20:28:44 a non-image environment simply recurstructs *everything* on startup 20:28:54 Hyrax: yeah, people have such weird priorities 20:29:05 slava: Well, you know me. I'm all for orthogonally persistent environments. 20:29:15 the http server on the other hand persists nicely. 20:29:19 I overwhelmingly prefer them to non-persistent systems. 20:29:30 sessions are saved in the image. 20:29:42 when I think about designing a project such as a web browser, I think "what does it have to do first" 20:29:44 sessions being 'virtual' sessions, not actual socket connections. 20:30:05 answer: give a place to type an address, and make other options available right away (ie within 10 ms) 20:30:26 Herkamire: That's about all it needs to have happen. xref Dillo. 20:30:31 if you have a word, www then its instant 20:30:37 "http://www.forth.com" www 20:31:01 and presumably www would call a bunch of other words, which would already be present in memory. 20:31:07 if you have strings... 20:31:15 want bookmarks? make some colon definitions. 20:31:21 otherwise it's: www http://www.forth.com 20:31:29 well, in either case its the same idea. 20:31:35 :) 20:31:40 and I agree about the bookmarks 20:31:56 can't wait until I have decent keyboard drivers so I can write a humane environment 20:32:00 Herkamire: Personally, I'd change www to open-www, and replace "www" as you used it with http. E.g., http www.forth.com/index.html 20:32:15 (there's no need to retype http:// if you already specified it in the name of the word to launch it!) 20:32:23 kc5tja: here here! 20:32:31 well, one might want a generic word to browse to a url 20:32:35 you'd need it to handle :) 20:32:37 Herkamire: : http 32 word count open-www ; 20:32:39 :) 20:32:39 http forth .com 20:32:42 oops 20:32:44 http forth.com 20:32:54 I'm all for it 20:33:31 slava: That's what open-www is for. 20:33:51 kc5tja, then your def of http is wrong; it would need to prepend http:// to the string :) 20:34:21 S" ftp://ftp.geia.com/pub/seg/pac/chkrootkit.tar.gz" open-www 20:34:33 slava: Same difference. 20:34:51 The point was, higher-level words are conveniences for lower-level words. 20:35:35 i need to do more work on my wiki. 20:36:26 wiki wiki wild wild west 20:39:21 i might have to drop my partial differential equations class. 20:39:37 i simply don't have enough advanced calculus background to really understand what's going on. 20:40:14 wiki wiki wiki wiki wiki wiki wiki wiki MUSHROOM MUSHROOM wiki wiki.... 21:04:09 --- nick: Sonarman_ -> Sonarman 21:04:17 wow, dillo has a very impressive compatibility list: http://www.dillo.org/Compatibility.html 21:06:20 * colorg lives in console 21:08:06 * Herkamire lives in ion 21:10:30 Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 2 4 6 8 A C E 21:10:30 -------- ---- ---- ---- ---- ---- ---- ---- ---- ---------------- 21:10:30 00000000 0000 0000 0000 0000 0000 0000 0000 0000 ................ 21:10:30 00000001 8cfb ffbf 0000 0000 0000 0000 0000 0000 ................ 21:10:30 00000002 8602 0000 0000 0000 0000 5f5f 5350 4557 ..........__SPEW 21:12:52 colorg: what's that from? 21:13:54 That's an osimplay regspew file unix dumped 21:14:29 regspew? 21:14:56 register dump, that's the output of a program that regspew is all it does. 21:15:26 that the whole thing?? 21:15:44 It's just the 8 core regs and flags 21:16:06 I guess 8602 is flags 21:18:39 OK, I'm going to take a shower, and then I'll be off to work. 21:18:40 Back in a bit. 21:18:49 Borscht! 21:22:00 * hefner lives in screen 21:25:36 ok. I'm just used to typing "info registers" in gdb, and seeing 41 registers 21:25:41 but this is ppc 21:26:27 This is Bash 21:33:36 --- quit: wossname (Read error: 238 (Connection timed out)) 21:39:51 hefner: As do I. :) 21:39:59 But I use screen within Ion. 21:40:05 Gives me the best of both worlds. 21:43:23 I do most things in a terminal emulator, but not everything 21:44:24 How would I see my banner ads in a text-only screen?! 21:45:23 "You see a veluptuous, hot young girl...maybe no more than 15 years old...wearing pink pantyhose, pink shoes, a cyan dress, and matching blouse. In her left hand is a sweaty can of ice-cold Coca Cola. In her right hand, a..." 21:45:40 It just wouldn't work... :) 21:46:51 if that's what everybody had, there would be banner ads 21:47:12 they would scroll by, and possibly have blinking and other annoying attributes 21:49:18 http://www.opinionstick.com/tiger/RedmondWeHaveAProblem.jpg 21:52:27 what's in redmond again? 21:52:43 microsoft.... 21:52:51 http://www.salon.com/news/feature/2004/10/08/bulge/index_np.html 21:52:55 ahh 21:53:38 i thought that was funny 21:58:30 hehe :) 22:05:11 oh my god 22:06:52 I bet he was getting fed lines 22:08:06 I only heard about 20 minutes of the debates on the radio, and I was quite supprised at how bush kept coming up with facts and figures. I was expecting him to sound a lot more stupid. 22:08:25 and I did hear the part where he interrupted himself to say "let me finish" 22:08:25 I was wondering what was going on 22:08:43 he's only allowed to speak for so long.. 22:09:00 read the article 22:09:06 heh 22:09:29 sounds like he still had 30 secconds left, and there was a light showing that 22:09:43 I stopped reading Salon when they started expecting me to dance through their ads 22:10:04 yeah, that was annoying 22:11:04 kc5tja: back from work yet? 22:11:39 arke: I think kc5tja leaves _for_ work around now 22:12:06 i meant 22:12:09 kc5tja: at work yet? 22:12:10 :P 22:12:17 oh :) 22:13:47 What kind of asm coding blunder causes a bus error on x86 Linux? 22:13:47 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 22:14:07 colorg: no idea :) 22:14:47 colorg: are you doing HD access? 22:14:49 well then I don't feel so bad 22:15:09 no, starting up eforth 22:18:04 err 22:18:12 i have no idea :) 22:23:47 hmm, I've gotten those on x86, but I couldn't explain why either 22:24:10 --- quit: Sonarman ("leaving") 22:24:51 if I had to take a wild guess, it'd involve trying call the IO instructions 22:26:42 not a bad wild guess. 22:27:51 Now I'm segfaulting on push %ebx 22:29:41 I seem to be jumping past an opcode somewhere 22:36:25 --- join: Serg_Penguin (~Miranda@212.34.52.140) joined #forth 22:40:49 --- quit: wossname (Read error: 110 (Connection timed out)) 22:43:59 --- quit: hefner ("ret") 22:44:00 --- quit: Serg_Penguin (Read error: 104 (Connection reset by peer)) 22:51:50 Man, we're having just so much fun at work. 22:52:09 We lost the keys to our colocation vault. And we're trying to trace back who had them last. 22:52:58 Sounds like a security issue 22:56:43 colorg: The cause of a bus error on x86 is nebulous. I've seen too many side-line cases to say for sure what it is. 22:57:20 colorg: It very much is a security issue. We need to find those keys. The president of the company is on his way down with a spare set of keys so we can do our jobs. But, guaranteed, someone is going to be fired tomorrow. 22:57:24 All I can say is . . . 22:57:28 GLAD IT AIN'T ME!! :-) 22:58:45 heh 23:06:51 :o) 23:07:16 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 23:13:24 on a hack time 23:13:27 --- quit: colorg ("ircII EPIC4pre2 cLIeNUX. Can you say that?") 23:30:55 --- quit: wossname (Read error: 110 (Connection timed out)) 23:58:59 OK, now I will attempt to implement enough business logic in FTS/Forth to scan the Forth dictionary for words. Hopefully, before I leave today, I will have it interpreting simple phrases. 23:59:59 --- log: ended forth/04.10.07