00:00:00 --- log: started forth/04.02.19 00:23:03 --- join: imaginator (~George@166.70.196.201) joined #forth 00:23:45 --- quit: Serg () 01:08:28 --- join: Serg (~z@212.34.52.140) joined #forth 02:39:51 --- quit: imaginator (Read error: 60 (Operation timed out)) 02:39:51 --- quit: Serg (Read error: 104 (Connection reset by peer)) 02:40:47 --- join: Nutssh (~Foo@gh-1081.gh.rice.edu) joined #forth 02:56:57 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:30:47 --- quit: MarkT ("I'm outta here") 05:24:23 --- join: Serg (~z@212.34.52.140) joined #forth 06:31:31 --- quit: Nutssh ("Client exiting") 06:45:53 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 06:57:51 --- quit: Serg () 07:03:04 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 07:18:08 later all 07:18:23 gonna be here for a few minutes at around 1pm Pacific 07:37:52 --- join: Nutssh (~Foo@gh-1081.gh.rice.edu) joined #forth 07:45:50 whooooooo 08:21:48 --- join: downix (~downix@adsl-214-34-245.mia.bellsouth.net) joined #forth 08:24:44 --- join: proteusguy (proteusguy@51.sub-166-153-180.myvzw.com) joined #forth 09:14:14 --- quit: Nutssh ("Client exiting") 09:37:18 --- join: _proteus (proteusguy@209.sub-166-153-179.myvzw.com) joined #forth 09:41:28 --- quit: proteusguy (Operation timed out) 09:53:39 --- join: Nutssh (~Foo@gh-1204.gh.rice.edu) joined #forth 10:20:19 --- quit: _proteus ("Leaving") 10:59:19 --- quit: Nutssh ("Client exiting") 11:20:56 --- join: I440r (~mark4@165.139.76.25) joined #forth 11:37:23 think i fixed the isforth.clss.net font problem 11:40:29 --- quit: slava (Read error: 104 (Connection reset by peer)) 11:51:20 my head 11:51:24 it hurts 11:51:57 stop banging on it then 12:11:10 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 12:18:32 --- join: wossname (wossname@HSE-QuebecCity-ppp80676.qc.sympatico.ca) joined #forth 12:26:59 --- quit: Nutssh ("Client exiting") 12:44:17 --- join: proteusguy (proteusguy@176.sub-166-153-181.myvzw.com) joined #forth 13:05:44 --- quit: hovil ("Leaving") 13:11:25 --- quit: I440r ("Leaving") 13:13:14 --- quit: arke (Read error: 104 (Connection reset by peer)) 13:13:25 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 13:13:35 hi :) 14:12:11 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 14:36:17 --- join: slava (~slava@CPE0080ad77a020-CM.cpe.net.cable.rogers.com) joined #forth 14:36:18 hi 14:38:03 --- quit: qFox ("if at first you dont succeed, quit again") 14:45:21 hey 15:22:40 --- quit: Nutssh ("Client exiting") 15:24:17 hi 15:48:55 hey arke 15:49:03 whats up slava? 15:49:11 working on the game ;) 15:49:24 artist guy sent some new additions, like a hovercraft and 747 aeroplane 15:49:56 cool\ 15:49:58 what kind of game are you making? 15:50:52 downix, action game 15:51:01 & rpg 15:51:24 --- join: ASau (~asau@158.250.48.196) joined #forth 15:51:39 Dobryjj vecher! 15:53:25 terve ASau 15:55:42 --- quit: proteusguy ("Leaving") 15:56:30 ok cool 16:00:46 Reserved value effect: 16:01:24 in order to 0 LIST you have to 1 40 INDEX 0 LIST 16:03:52 1 40 INDEX is here to use all buffers and eliminate free ones. 16:13:29 --- quit: wossname ("^_~") 16:54:52 Is this be considered bad form for multi-value constants? 16:54:52 : box1 10 10 32 20 ; 16:54:52 box1 draw_box 16:57:56 --- join: Nutssh (~Foo@gh-1204.gh.rice.edu) joined #forth 16:58:47 --- quit: kc5tja ("leaving") 16:58:58 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 16:59:05 --- mode: ChanServ set +o kc5tja 16:59:50 hi kc5tja 16:59:59 re 17:00:40 how are you my firneknd? 17:00:41 ack 17:00:41 fuck 17:00:45 Friend* 17:02:09 hey sam 17:06:32 * kc5tja ought to put that in a frame and hang it above my desk. 17:06:48 ssh 17:06:49 quiet 17:06:49 say fun stuff 17:06:49 ssh? into your box? sure. 17:06:59 :) 17:13:14 Is this be considered bad form for multi-value constants? 17:13:14 : box1 10 10 32 20 ; 17:13:14 box1 draw_box 17:13:22 Anyone? Bueller? 17:14:58 madgarden: That's perfectly fine. 17:15:40 Alrighty, thanks. Seems like it would be more work any other way. 17:17:55 I see that as a proper use of factoring, which is the intention of colon definitions. 17:18:04 If you use those coordinates a lot, it makes sense to factor them out. 17:20:45 Yep, that's exactly what I was thinking. ANd if I need to tweak them, they only change in one place. 17:21:13 So this means I will expose more Forth words to my animation configuration scripts. 17:21:55 That's one of the greatest things about Forth too -- the invisibility of data type. 17:22:04 In the above case, box1 is a set of four constants. 17:22:14 But later on, you might want to *compute* those values from some other input. 17:22:22 Constants? Computations? Forth doesn't care. 17:23:11 Zactly. And it makes configuration files really flexible. 17:26:33 Im going to be the next hitler 17:26:33 Im going to kill all the jews and 1 clown 17:26:33 why the clown 17:26:33 See? no one cares about the jews 17:26:33 lmao 17:26:44 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 17:26:51 *** Quits: TITANIC (Excess Flood) 17:27:46 HAHA -- I like the Hitler bit. That is quite amusing. 17:27:51 As is the Titanic line. 17:28:02 good old bash.org 17:40:24 yep 17:40:29 such simple entertainment... 17:40:36 they redid their engine, its alot better now 17:40:41 especially the adding thing :) 18:05:58 --- join: hefner (~hefner@pool-141-157-60-195.balt.east.verizon.net) joined #forth 18:06:52 hola forthers 18:07:44 what are the smallest (in bytes..) forths people are aware of? 18:08:06 greetings hefner 18:08:53 hey there 18:09:01 hefner: Bare bones PygmyForth (16-bit cmForth clone for PC under DOS), without block editor or assembler, comes in at 6K to 8K in size. 18:09:31 hmm, I thought the core of colorforth was smaller than that 18:09:56 It probably is. 18:10:16 I think Chuck said it weighed in somewhere around 2.5K to 4K or so. 18:10:17 hefner: the core of my ppc colorforth-ish thing is under 1K PPC binary 18:10:31 but it's useless without the dictionary and source 18:10:36 But that also includes font data too. 18:10:47 And the integrated editor -- the editor is a requirement to use ColorForth. 18:13:08 with simpler/smaller hardware, a forth could easily be smaller 18:13:38 Yes. 18:14:21 On Forth-specific hardware, the Forth run-time environment can be a few hundred bytes in size. But usually, it's the interactive text interpreter and editor that bulk up the system usually. 18:17:50 my forth is 148K 18:17:55 but a lot of that is padding 18:18:07 gzip takes it down to 20K 18:18:15 bzip2 takes it down to 18K 18:19:27 that's the ELF file containing the meta-compiled kernel, dictionary, and sources for the assembler, compiler and editor 18:22:01 oh, that contains the documentation in my shadow blocks too 18:22:11 --- quit: Nutssh (Read error: 60 (Operation timed out)) 18:23:26 hmmmm... quite a lot of padding it looks like. I replaced all strings of null bytes in the elf with one byte, and the file size went down to 31K 18:23:56 :) 18:38:19 hefner, postForth, Min(i)Forth 18:40:02 --- join: ree (~jwm@ns.fasthost.net) joined #forth 18:40:14 Dobre jitro! 18:42:40 Herkamire, My Forth gzipped is 4392 bytes. It's padded to 16K 18:45:35 Herkamire, 5690 really. 18:46:15 --- quit: fridge ("Client exiting") 18:54:25 --- join: fridge (~fridge@dsl-203-113-229-145.NSW.netspace.net.au) joined #forth 19:46:21 --- quit: hefner ("I'm the operator with my pocket calculator") 19:56:12 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 20:10:19 Alive? 20:10:47 dead in the water 20:10:55 sir! 20:11:19 I'm experimenting with "ramdisk". 20:11:24 Forth blocks in RAM. 20:12:07 i cannot help thee with that, sorry :\ 20:12:08 It might be interesting for those, who want standalone Forth or OS. 20:12:18 someone else might tho, just not me 20:20:13 asau pretty small. what does that include? 20:20:46 ASau: aren't blocks always used in RAM? 20:24:35 I'm going to make a solitare numbers game in my forth 20:26:25 Core, compiler (IF, THEN, WHILE etc), VLIST, LOAD, INDEX, LIST. 20:46:58 --- quit: downix ("Leaving") 20:51:59 --- join: LOOPHOG (jdamisch@207.191.240.70) joined #forth 20:53:00 --- quit: LOOPHOG (Client Quit) 21:11:18 --- join: imaginator (~George@166.70.196.201) joined #forth 21:14:21 hi allll 21:15:40 hi arke 21:15:54 :) 21:42:08 Dobre jitro, arke! 21:42:36 Dobryjj vecher! 22:06:20 Crazy idea. 22:06:58 To make my 5690-bytes Forth 12-bit. 22:20:10 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:39:48 --- quit: ASau () 23:41:02 haah.. this is neat. direct threaded forth in C using gcc tail recursion optimization. 23:41:35 if you enable debugging it won't work though. cuz that will disable the optimzation and you'll end up consuming gobs and gobs of stack 23:46:28 OrngeTide: how is direct threading down in C in that case? 23:46:58 down/done 23:47:14 imaginator, well you let the C compiler write the NEXT portion for you. my NEXT looks like: return curr[1](curr+1); 23:47:37 with tail recusion optimization it actually does a jump instead of a call. 23:48:46 of course you eventually have to return somewhere. I return in my routine for bye. 23:49:21 Aren't function calls costly? 23:49:51 imaginator, it's not a function call. it's a jump 23:49:58 oh 23:50:04 imaginator, like i said. you have to have tail recursion optimization enabled. 23:50:17 I see. So it's just the initial call that starts it and then the jmps. 23:50:37 otherwise 1. you'll end up consuming progressively more stack as your program runs, 2. you would have the same problems that a subroutine threaded app would have 23:50:42 imaginator, yes:) 23:51:12 i've been looking at the asm dumps and if i keep the number of args I pass down to only a few I can have them in registers. 23:51:36 of course it's pretty evil to write forth in C. but hey. i was bored. 23:51:59 i actually found this trick in this article: http://www.complang.tuwien.ac.at/forth/threaded-code.html .. (it's under the section of Call Threading) 23:52:22 In my Forth before I began working on the machine code VM, I had an array of instructions and I'd use goto *jump_table[offset]. Where offset is the code for the word. 23:52:29 wait. i mean it's under the header Continuation-passing style 23:53:47 cool 23:54:20 imaginator, oh. I see. i've seen something like that but instead you write a macro NEXT that is goto *(ip++); 23:54:29 yep 23:54:35 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 23:54:37 And I store the operands in the array too. 23:54:48 yea. that's a pretty fast way to go. 23:55:04 It's pretty fast. 23:55:15 how do you handle the allocation of the dictionary? 23:55:18 But now I'm trying to get rid of next in between. 23:55:51 Well I make core words have a numeric value via: enum { ADD = 1, SUB }; 23:56:26 Then in my run() I use the codes in a jump table. gcc has a special && operator that you can use to get the address of a local label. 23:56:43 yea. i wrote one using && before 23:57:17 My current idea is to copy machine code at runtime for the execution. 23:57:18 i'm thinking of using mmap to allocate my dictionary. 23:57:45 My dictionary was a hash table, but I implemented a 4-bit association engine that seems to be faster, but it uses a little more memory. 23:59:17 http://www.xmission.com/~georgeps/var/trie_playground.c 23:59:39 I call it a 4-bit association engine, even though someone told me it's also known as a ternary hash trie IIRC. 23:59:59 --- log: ended forth/04.02.19