00:00:00 --- log: started forth/02.02.26 00:54:22 --- join: nilsw (00000@ncdial1-51-2-nc.nordcom.net) joined #forth 01:08:41 --- quit: rob_ert (Read error: 113 (No route to host)) 01:09:01 --- quit: adu ("BitchX: now with wings") 01:59:48 --- quit: nilsw ("Delay for N seconds") 02:54:44 --- quit: aum () 04:01:30 --- join: rob_ert (~robert@h173n2fls33o898.telia.com) joined #forth 04:02:45 Hi 04:41:35 --- join: nilsw (00000@ncdial4-84-2-nc.nordcom.net) joined #forth 05:13:16 --- join: Stepan (~stepan@Charybdis.suse.de) joined #forth 09:33:18 Anyone home? 09:33:51 I'd need to know a bit how forth programs work, from an assembler programmer's point of view 09:34:08 How a compiled program really works 09:34:34 afaik, there's a simple "intepreter" that calls the defined words 09:37:02 bert 09:37:35 hallo, Nils :D 09:38:02 hey :D 09:38:20 grr... what does the word '*' do? 09:38:34 FUCK ME 09:38:37 ehm 09:38:43 sorry for overreacting 09:38:47 just noticed I'm dumb 09:38:56 of course it's multiplication :) 09:41:46 meh 09:41:48 --- quit: nilsw ("Delay for N seconds") 09:55:35 I'm just curous...but it is possible to mess with the stack without using pen&paper? :) 09:59:07 --- quit: Stepan ("Do you think it is air you are breathing? Hmm?") 10:02:42 --- join: I440r (~mark4@1Cust111.tnt3.bloomington.in.da.uu.net) joined #forth 10:02:49 hey 10:02:57 this fucking rocks :) 10:03:00 I'd need to know a bit how forth programs work, from an assembler programmer's point of view :-) 10:03:01 isforth now interprets the command line 10:03:02 I440r: What does? 10:03:05 :) 10:03:14 and it will also work from a shebang :) 10:03:22 #! /bin/isforth 10:03:34 rob ask :) 10:03:44 what do you need to know 10:04:45 I'm just wondering... 10:04:55 do you understand nest, unnest and next ? 10:04:58 How does all this shit work? :) 10:04:59 Nope 10:05:00 hehe 10:05:11 as in - how they work internally 10:05:14 can you paste them in asm? 10:05:15 Yes 10:05:19 That's what I want to know 10:05:25 understanding them is fundamental to understanding forth 10:05:25 ok 10:05:34 let me give you an anolog 10:05:36 That's why I want to understand them :P 10:05:43 let me explain them 10:05:57 ok 10:06:13 a processor fetches instructions executes them and fetches the next instruction 10:06:31 if the instruction is a branch it changes the address it fetchs from next 10:06:42 forth basically works in th esame way 10:06:53 it uses a register to hold IP (read interprative pointer) 10:07:28 forth fetches the contents of the mempry pointed to by IP, and advances IP 10:07:42 it then JUMPS to the address it fetched 10:07:51 in order to do this 10:08:21 every forth word has to end with the code that "loads the next token to execute, jump to that token" 10:08:21 this is called a next 10:08:33 because it executes the next token 10:08:33 the one pointed to by IP 10:09:04 this works perfectly if ALL the tokens in the definition are coded definitions 10:09:10 how does it know if it's a low or high level word? 10:09:15 but lets say were half way through the current definition and we execute a new COLON definition 10:09:27 forth has to save the current IP adress in the calling word 10:09:40 point IP at the NEW word (the one being called) 10:09:40 ill get to that heh 10:09:40 but it was a good question 10:09:52 just ignroe that for now ehhe 10:09:54 sorry :-D 10:10:01 forth saves the current IP onto the return stack 10:10:08 this is seperate from the parameter stack 10:10:15 heh 10:10:33 dont appologies for asking a good question 10:10:43 that question proved that your not just sitting there reading blah blah blah from me heh 10:10:53 heeh 10:10:54 ok 10:11:01 firth saved the interprative pointer onto the return stack 10:11:05 jumped to the new : definition 10:11:22 the last thing in that definition will be an UNNEST 10:11:28 unnest fetches the saved IP off the return stack 10:11:40 forth now comtinues to interpret where it left off 10:11:46 now for you question 10:11:59 ever forth word starts with some machie code 10:12:15 for a coded definition it just starts with the asm code for that definition 10:12:30 coded definitions end with a NEXT - always! 10:12:38 colon definitions start with a call to nest 10:12:47 the "call" will leave an address on the stack 10:12:54 that address being the address to interpret from 10:13:22 nest pushes the current IP onto the return stack as descrived above, pops the not realy a return address off the stack 10:13:28 and puts that in IP 10:13:34 it then executes a next 10:13:41 which fetches the token 10:13:41 advances ip 10:13:47 jumps to where the token pointed 10:14:08 the last token in ALL colon definitions is a pointer to unnest 10:14:15 you code asm ? 10:14:18 yes 10:14:23 x86 specificaly i mean heh 10:14:39 x86, and I've got a bit into pic asm, too 10:14:39 ok well 10:14:39 ESI is used as IP 10:14:47 next is defined as 10:14:47 lodsd 10:14:47 jmp eax 10:15:07 the lodsd fetches the item pointed to by IP into the eax register 10:15:16 and advances ESI (ip) to the next token 10:15:26 the jmp eax jumps to where that toklen pointed 10:15:38 NO FORTH CODED DEF MAY TOUCH ESI 10:15:45 not unless it first saves it away 10:15:52 esi is a reserved register 10:15:53 hehe :-) 10:15:58 forth uses it 10:16:06 in isforth the ebx register is also reserved 10:16:08 but I concider it a good coding style to save registers anyway 10:16:13 that holds the top of stack item 10:16:22 ebp is the return stack pointer 10:16:22 all other registers are free for use 10:16:30 not always 10:16:39 not if you know they are scratch 10:16:56 in forth any non reserved register is automatically scratch between definitions 10:16:56 free for use 10:17:05 eax, ecx and edx need not be saved 10:17:06 oh, another thing... when you manipulate for example chars, do you have to load them to the 32-bit data stack before you can mess with them? 10:17:14 saving them would be a waste 10:17:25 and - you might not be able to save them to the stack anyway 10:17:37 er no 10:17:42 they are in memory 10:17:54 lets say eds points to a string 10:18:00 mov eax, byte [edx] 10:18:05 erm 10:18:05 make taht 10:18:14 movzx eax, byte [edx] 10:18:19 thatsxz move with zero extend 10:18:24 yeah. 10:18:43 you can also movsx to sign extend the bythe throughout eax 10:18:49 do you have to do like that, or can you do f.e. add byte[edx],5 directly? 10:18:58 I mean, using forth 10:19:13 i add byte [edx], N all the time heh 10:19:22 there are no "protected memory" rules in isforth heh 10:19:22 where? 10:19:33 I mean, where do you use that? 10:19:36 look at the definition for store and cstore 10:19:46 tho that doesnt quite do it that way 10:19:49 store does 10:19:55 pop dword [edx] 10:20:04 erm no 10:20:10 pop dword [eBx] 10:20:24 pop the item at the top of the stack into the memory location pointed to by ebx 10:20:31 cstore does 10:20:32 pop eax 10:20:38 mov byte [ebx], al 10:20:49 uhm... another little thing... how can I handle strings in forth? How to declare them? 10:20:58 you dont declare them heh 10:21:02 you allocate them 10:21:12 oh 10:21:13 lets say you want to print "foo" to the display 10:21:18 how to copy data to them? 10:21:20 : foo ." foo" ; 10:21:22 well 10:21:26 ok 10:21:27 watch 10:21:34 if I want to f.e. print something to a file, or whatever 10:21:34 create buffer 16 allot 10:21:46 somestring buffer 16 cmove 10:21:55 moves a string from somestring to buffer 10:21:59 of 16 bytes length 10:22:05 f.e. ? 10:22:26 ok... somestring is like "Hello, world!", or? 10:22:33 f.e. = e.g. :P 10:22:37 ok if you waht to print something to a file you can use the as yet unwritten fwrite 10:22:43 fwrite will take 2 parameters 10:22:49 the byte to write and the file handle 10:23:02 another way is to defer emit to some file write word 10:23:15 so any characters emmited will be redirected to the file instead of to the terminal 10:23:22 the terminal afterall is just a file 10:23:37 wtf is f.e. ? 10:23:49 for example ;) 10:23:52 oh hehe 10:24:09 e.g. i understand 10:24:13 speak latin man! 10:24:14 heh 10:24:19 * rob_ert speaks latin 10:24:29 Exemple gratia on you, my friend! 10:24:39 heh 10:24:51 qed :) 10:24:55 neway 10:24:58 any more questions ? 10:25:09 Hehe 10:25:11 did my explanations totally fonfuze you or cear it up ? 10:25:28 look at the sourcs to isforth 10:25:31 in exec.1 10:25:39 nest, next and unnest are in there 10:25:43 I'm going to see if I understand all of the runtime things 10:25:46 oh, nice 10:26:03 im assuming you have the sources by now ? 10:26:15 nope, hehe 10:26:17 where? 10:26:26 ok hang on 10:26:31 ill let u grab the latest 10:26:35 :-D 10:26:55 when I start executing a high level word, what assembler code do I call then? 10:27:31 call nest 10:27:34 dd token1 10:27:36 dd token2 10:27:40 dd tonek N 10:27:42 dd unnest 10:27:55 oh.. thanks :-) 10:28:04 ftp 65.224.146.111 10:28:07 and nest calls token1, token2 etc.? 10:28:07 cd pub 10:28:09 ok, thankyou 10:28:14 get the bz2 file 10:28:15 erm 10:28:18 are you in linux ? 10:28:25 yes 10:28:28 ok heh 10:28:33 then you can extract a bz2 ? 10:29:04 yes 10:29:14 there are 2 ways to do next 10:29:24 every coded definition needs a next on the end 10:29:28 they can either jmp _next 10:29:32 where _next is defined as 10:29:34 _next: 10:29:36 lodsd 10:29:38 jmp eax 10:29:44 hm.. who has a picture of a gun on the root of his ftp? :P 10:29:44 or they can have next coded inline 10:29:50 me 10:29:51 :) 10:29:53 :) 10:29:53 MY gun 10:29:58 my guns even 10:30:15 the 45 is within arms reach of me right now :P 10:30:19 fully loaded 10:30:20 one in the chamber 10:30:23 safety on 10:30:50 that way if some evil c coder tryis to come get me ill be ok :) 10:31:02 * rob_ert gets scared 10:31:03 * I440r does a shifty eyed look 10:31:22 u grabbed that already ? 10:31:46 What's the name? isforth-feb26.tar.bz2 ? 10:31:52 yes 10:32:03 --- part: I440r left #forth 10:32:03 --- join: I440r (~mark4@1Cust111.tnt3.bloomington.in.da.uu.net) joined #forth 10:32:03 --- mode: ChanServ set +o I440r 10:32:14 uhm, wb 10:32:27 --- topic: set to 'todo - write save-exe - releaseversion 1.0' by I440r 10:32:40 hehe had to cycle to get ops to set channel topic :) 10:32:47 --- topic: set to 'todo - write save-exe - release version 1.0' by I440r 10:32:53 /msg chanserv op #forth I440r 10:33:00 ;-) 10:33:05 too lazy :P 10:33:12 just do /cycle 10:33:13 heh 10:33:15 hehe 10:35:57 root:/home/robert/forth# bzip2 -d isforth-feb26.tar.bz2 10:35:57 bzip2: isforth-feb26.tar.bz2 is not a bzip2 file. 10:36:04 grr 10:36:07 do you have mc ? 10:36:15 have mc try open it 10:36:23 hehe 10:36:23 and if it can - copy the isforth directory oyut 10:36:29 it was just a tar file 10:36:34 grrrr 10:36:36 tar -xvf worked fine 10:36:37 ;) 10:36:47 its suppozed to be a BZIP grrr 10:36:48 heh 10:37:08 do you have nasm ? 10:38:36 yup 10:38:40 0.98.22 I think 10:38:53 "2 5 + . . ? 10:38:54 " <-- how to output? :) 10:39:40 cd isforth 10:39:42 make linux 10:39:57 if it doesnt crap out on you your version if nasm is fine heh 10:40:11 hmm 10:40:14 suuuure 10:40:16 ;) 10:40:22 hm 10:41:55 did it assemble ? 10:44:21 oh no. my sources have sucked him in and he cant escape! 10:44:52 sorry 10:44:58 I was on the toilet 10:45:01 it sucked me in 10:45:06 and I couldn't escape 10:45:18 and yes, it did assemble 10:45:48 root:/home/robert/forth/isforth# make linux 10:45:50 make[1]: Entering directory `/home/robert/forth/isforth/asmsrc' 10:45:50 make[1]: Leaving directory `/home/robert/forth/isforth/asmsrc' 10:46:11 That I accidently was root in that console shouldn't do anything, or? :-) 10:47:19 do you have your own assembler, or do you use NASM? 10:49:12 i use nasm 10:49:20 isforth needs an assembler extention 10:49:38 mrreach says he will write one for me :) 10:49:44 :-) 10:50:15 im closing in on the time when it would be realy needed too heh 10:50:20 A forth doesn't have to have interactive mode, right? 10:50:24 no 10:50:26 do this 10:50:32 ./kernel.com 10:50:46 I did...and? 10:50:48 say this when ur in thre 10:50:50 words 10:50:55 tell me what it says :) 10:51:09 robert:~/forth/isforth# ./kernel.com 10:51:10 ok 10:51:10 words words ? 10:51:13 :-) 10:51:17 it doesnt know words 10:51:19 say this 10:51:23 fload load.f 10:51:38 fload load.f ..... (do-#!) ? 10:52:07 eek! 10:52:10 say bye 10:52:15 cd forthsrc 10:52:21 edit args.f 10:52:25 search for (do-#!) 10:52:34 change it to (do#!) 10:52:41 quit and save heh 10:52:47 that was my last edit 10:52:52 do- was pissing me off heh 10:52:57 the dash wasnt needed :P 10:53:44 fload load.f ...... done 10:53:44 ok 10:53:52 NOW say 10:53:53 words 10:54:25 those are all of the words defined in isforth 10:54:36 heh 10:54:36 the code to display them wsnt entered interactivly 10:54:39 quite a lot 10:54:45 you told forth to compile a source file 10:54:49 actually about 4 or 5 hyehe 10:55:05 it compiled them and you extended the capabilities of the kernel 10:55:14 non interactivly 10:55:25 the only interaction was to tell it what source file to use 10:55:32 nice :-) I was more thinknig of a traditional compiler model for forth 10:55:45 well im gong to get to that hehe 10:55:45 you know edit-compile-try-cry-debug 10:55:46 say byt 10:55:51 byt? 10:55:51 no 10:55:55 forth doesnt do taht 10:55:57 bye 10:56:00 hehe 10:56:02 you do 10:56:05 edit debug repeat 10:56:20 do you have a test.f there ? 10:56:26 yes 10:56:32 ok 10:56:34 say this 10:56:42 erm hangn on 10:57:03 ok 10:57:06 ./test.f 10:57:12 nothing will happen yet 10:57:18 robert:~/forth/isforth# ./test.f 10:57:18 ok 10:57:24 except the #! in the file will lauhch isforth 10:57:30 fload load.f 10:57:41 normally all of load.f would already be a part of your kernel 10:57:53 you would have extended the kernel with load.f and saved it out 10:57:59 were emulating that now 10:58:08 whe you type ./test.f 10:58:11 it would lo9ad isforht 10:58:18 isforth would do its init 10:58:27 and part of its init would be to run the word 10:58:30 do!# 10:58:33 type that 10:58:34 do!# 10:58:44 do!# do!# ? 10:58:48 yes 10:59:00 did it do anything ? 10:59:17 that was the reply ;) 10:59:23 oh 10:59:26 it didn't recognize the command 10:59:27 did you fload load.f ? 10:59:37 i thought i told you to do that heh 10:59:38 should I load load.f? 10:59:38 hehe 10:59:40 I will 10:59:40 yes 10:59:45 i was saying 10:59:51 load.f is the extention to the kernel 10:59:57 but we cant save out after extending 10:59:57 do #! ok 10:59:59 so were faking it 11:00:02 no 11:00:04 do#! 11:00:07 one word not 2 11:00:09 that didn't work 11:00:16 say by 11:00:17 byue 11:00:19 argh 11:00:20 bye 11:00:23 ./test.f 11:00:26 fload load.f 11:00:27 do#! 11:00:28 ah 11:00:50 it worked :-) 11:01:00 once we can saveexe the extended kernel would automatically run do#! in its init 11:01:10 IF isforth was launced from a shebang 11:01:16 if not - it would run dotail 11:01:20 say bye 11:01:22 shebang? 11:01:28 a shebabng is a 11:01:35 #! /path/interpreter 11:01:38 ok 11:01:41 at the top of a script 11:01:48 she = sharp 11:01:51 ! is a bang heh 11:02:04 its unixspeek 11:02:09 ok 11:02:09 Hehe 11:02:10 bye 11:02:13 ./isforth 11:02:19 er mo 11:02:20 bye 11:02:28 ./isforth - fload test.f 11:02:36 ./kernel.com ? 11:02:38 no isforth there 11:02:40 now ere faking it again... 11:02:45 oh no i forgot hehe 11:02:55 ./kernel.com - fload test.f 11:03:11 i just renemed it to kernel.com 11:03:14 fload test.f #! ? 11:03:27 no 11:03:29 bye 11:03:36 kernel.com - fload test.f 11:03:43 dont FLOAD it manualy hehe 11:03:50 just have - fload test.f in your command line 11:03:57 THEN run 11:03:58 oh, hehe 11:04:00 fload load.f 11:04:12 the first thing load.f loads is comment.f 11:04:18 THAT defines all the commenting words 11:04:23 #! is a coment heh 11:04:32 run do#! 11:05:00 we wernt run from a #! so it doesnt interpret the #! command 11:05:11 it goes on to interpret the commanbd line tail 11:05:15 the first arg is a - 11:05:20 that means interpret the tail 11:05:28 if you sayd ./kernel test.f 11:05:36 it would just mark that file asthe current file 11:05:41 robert:~/forth/isforth# ./kernel.com - fload test.f 11:05:41 ok 11:05:41 fload load.f ...... done 11:05:41 ok 11:05:41 do#! 11:05:42 fload open error 11:05:44 so whe u say ed - you eedit that fikle 11:05:47 eep 11:05:57 what did you have on your command line exactly > 11:06:06 I pasted that... 11:06:09 ./kernel.com - fload test.f ? 11:06:14 robert:~/forth/isforth# ./kernel.com - fload test.f 11:06:36 quit forth and say ls 11:06:40 is test.f still there ? 11:06:55 ther was a bug that caused files to go to file size 0 but i thunked i had fixed it 11:07:05 source files arent opend with write access by default 11:07:08 -rwxr-xr-x 1 robert users 148 Feb 26 15:59 test.f 11:07:13 ok 11:07:22 hrm 11:07:23 hehe well 11:07:31 it should have interpretd the fload 11:07:34 loaded the file 11:07:48 and did the test stuff again heh 11:07:51 worked for me :P 11:07:53 try it again 11:08:04 ./kernel.com - fload test.f 11:08:08 fload load.f 11:08:11 do#! 11:08:37 robert:~/forth/isforth# ./kernel.com - fload test.f 11:08:37 ok 11:08:37 dload load.f dload ? 11:08:37 fload load.f ...... done 11:08:37 ok 11:08:38 do#! 11:08:40 fload open error 11:08:50 grr 11:08:57 it works for me :P 11:09:00 its you 11:09:02 hehe 11:09:04 it doesnt like you :P 11:09:05 it hates me! 11:09:07 exactly 11:09:11 your not a forther yet L( 11:09:12 :) 11:09:15 and it knows it heh 11:09:21 hehe 11:09:37 hrm 11:09:43 it didnt say what file it couldnt open 11:09:45 weird 12:15:09 --- join: futhin (thin@24.64.175.123) joined #forth 12:15:36 hihi 12:17:31 futhin 12:17:39 isforth is VERY close to release 1.0 12:17:42 very close 12:17:48 all i gotta write now is save-exe 12:18:03 and where the futh have you been :P 12:21:34 it's supposed to be foo-thin 12:21:38 think of it as foo-thin :P 12:23:07 like fu man chu but different :) 12:23:42 --- join: Speuler (~icafe@195.30.184.21) joined #forth 12:23:48 yeah 12:23:57 g'day 12:24:11 hi :) 12:24:23 isforth can interpret the commanbd line tail 12:24:29 ./isforth - fload foo.f 12:24:32 works 12:24:42 isforth can execute from a shebang 12:24:48 #! /bin/isforth 12:24:53 forth source goes here 12:24:55 works 12:24:56 tat's good 12:24:59 back.. 12:25:00 very useful indeed 12:25:20 all i need now is save-exe and im going to release 1.0 12:25:28 i use that feature of gforth to execute some scripts for the icafe setup 12:25:36 if isforth is launcehed from the shell it interprets the tail. 12:25:52 if its launced from a shebang it leaves the tail for the script to interpret 12:26:10 the shebang mechanics are FUCKED UP!!! 12:26:20 normally when you enter a program in linux 12:26:26 the top of stack is argc 12:26:30 next is arg0 12:26:33 next is argp 12:26:36 next is envp 12:26:54 if you are launced from a shebang and the shebang doesnt have any parameters on it 12:27:06 argp will point at the enbvironment and envp will be null 12:27:10 fucked in the head 12:27:17 we got a new candiate forth programmer here ! 12:27:38 where? 12:27:43 * rob_ert  12:27:45 :P 12:28:22 who ? 12:28:40 he told ya already ... 12:28:52 he's a bit slow ;) 12:28:56 rob_ert: you are going to become a l33t f0rth hax0r!? 12:29:00 im a bit tired :) 12:29:06 i was up all nite coding :P 12:29:15 well you seem to be coding pretty fast 12:29:21 if you are so close to release 1.0 12:29:26 i just spent the morning explaiining next, nest and unnest to him :) 12:29:33 forth devel IS fast 12:29:36 futhin: pff... exactly 12:29:42 once i got going 12:29:53 rob_ert: eh? 12:30:10 rob_ert: you are going to become a l33t f0rth hax0r!? 12:30:17 I was refering to that ;) 12:30:22 once i get save-exe done isforth can be used to compile actual applications 12:30:28 --- join: nilsw (00000@ncdial1-219-1-nc.nordcom.net) joined #forth 12:30:36 zero! 12:30:49 brb 12:30:51 Hi Nils 12:30:56 mister I440r! 12:30:58 bert! 12:31:01 Speuler! 12:31:20 :) 12:32:08 rob_ert: got any forth projects? 12:32:21 Learning a bit about forth ;-) 12:32:25 And then writing a forth 12:32:52 That's why I've been harassing the people in here with questions about how the runtime environment workd ;-) 12:32:54 works 12:33:12 u got nest, next and unnest sorted ? 12:33:38 hi nils ! 12:33:42 almost ;) 12:34:05 nest, next and unnest aren't important :P 12:34:22 i don't know them, i don't care, i am an elite forth hax0r 12:34:29 rob_ert: i440r doesn't mean bad, he's just naturally nasty to people :) 12:34:44 Heh 12:34:48 He's not nasty :-D 12:34:52 heh 12:34:55 grrrrr! 12:35:06 btw, does "nest" get the address to go to from the data stack? 12:35:07 specially people who use tabs in their sources :) 12:35:31 futhin: nest, unnest, next are THE most important thing in a forth interpreter 12:35:40 especially if you want to learn the inner workings 12:35:48 and that's required to become a good fort hprogrammer 12:36:16 yes 12:36:21 all : defs CALL nest 12:36:24 in isforth anyway heh 12:36:31 futhin: how old are you? You don't sound like ~40 ;D 12:36:34 rob_ert: no 12:36:40 im 38 12:36:49 gets it from program memory, from where ip points to 12:37:02 rob_ert: i'm 20, and i'm a day trader 12:37:07 :D 12:37:12 futhin: :D 12:37:13 futhin you are MAD!!!! 12:37:21 dont day trade on margin!!!! heh 12:37:40 naw, i read a bunch of books on risk & money management 12:37:45 nest: 12:37:45 sub ebp, byte 4 ;open space on return stack 12:37:45 mov [ebp], esi ;save current interpritive pointer to it 12:37:45 pop esi ;get new ip and interpret from here 12:37:45 next 12:37:59 pop esi <-- doesn't that pop from the data stack= 12:38:02 ? 12:38:29 nest pushs the ip, before reloasding it with a new address 12:38:44 lies, i don't see any push 12:38:59 there is no push 12:39:00 sub ebp ... mov [ebp] 12:39:01 its a CALL 12:39:09 call puhses the return address automatically 12:39:26 well, first it saves the IP to the return stack 12:39:28 but then? 12:39:36 does it get the new IP from data stack, or what? 12:39:40 yes] 12:39:42 .. but uses SP which may serve well as data stack 12:39:59 from the processor stack which is also the data (parameter) stack 12:40:19 bloody waste to use SP for return addresses ... 12:40:35 and also - NOT forth 12:40:44 thas subroutine threading and does not count :P 12:40:53 well 12:41:00 it wouldnt NEED to be sub threading 12:43:04 --- nick: Speuler -> PhoodPhrenzy 12:46:06 * PhoodPhrenzy will soon be known as CafeinJunky 12:47:27 do you spell cafein with two ff , like caffein ? 12:47:50 caffeine 12:48:11 --- nick: PhoodPhrenzy -> CaffeineJunky 12:48:22 thank you . 12:48:27 np 12:57:08 --- quit: CaffeineJunky ("changing machines") 13:53:00 --- join: Etaoin (~david@ljk11.sat.net) joined #forth 13:53:12 gasp 13:53:30 i eta!! 13:53:47 gasp ??? heh 13:53:50 hi etaoin 13:53:56 hello. 13:54:44 Hi :-) 13:55:03 eta what was the gasp for heh 13:55:32 etaoin: you have hurt our feelings :( 13:55:45 i expect you to devote 25% of your life on this channel from now on ;) 13:56:04 I was surprised that this channel existed 13:56:07 only 25%? 13:56:46 well, the other 50% is for sleeping 13:56:51 heh 13:56:53 and the other 25% is for eating and work 13:57:13 eta on an x86 linux based machine ? 13:57:30 futhin: Work? :-) 14:02:45 Etaoin: do you use an x86 based linux os 14:02:45 ? 14:03:47 sorry, I was in the bathroom. 14:03:53 unexcusable! 14:03:54 I440r: yeah. 14:03:55 :P 14:04:03 <-- ignore this guy 14:04:13 k heh 14:04:13 do you ? 14:04:19 do you code forthv ? 14:04:25 im assuming mayube you do 14:04:26 no, I don't know forth 14:04:31 fu thats a given :P 14:04:37 hey mark 14:04:40 how are you? 14:04:46 oh heh 14:04:51 I haven't started coding any or looking at any examples 14:04:54 asm ? 14:05:11 a little 14:05:15 nil - im doing ok for someone who didnt sleep last nite heh 14:05:38 i'm doing bad for someone who wants sex so much :| 14:05:43 #@^$%(*%^ 14:05:56 if yer intersted in forth - this is the place to be :) 14:06:07 fu do yu still read the logs for this channel ? 14:06:24 nilsw: me too - you got a cutensexy sister i can have ?? heh 14:06:33 I'm interested in learning more about the language so I can see if I'm interested in it 14:06:35 fu i got a job for you. 14:06:49 your first REAL task for this project :) 14:06:57 eta well thats a start :) 14:07:10 no I440r 14:07:15 i don't have brothers or sisters 14:07:30 maybe that's why i'm so antisocial now 14:07:31 fu = me? or fu = fuck you ? 14:07:43 :P 14:07:46 doh :P 14:07:50 i confuse them 14:07:57 fu = you :P 14:08:00 heheh 14:08:08 i got a job for you!!! 14:08:12 no i haven't really been reading the logs 14:08:31 go through the logs of this channel and pick out anything anyone ever said since clog has been in here - and put it in a file 14:08:43 to be included in the distro for isforth :) 14:08:52 spam! :P 14:09:13 yes :) 14:09:20 thats your job now 14:09:27 you are the official isforth spammer :P 14:10:44 no editing of the stuff? 14:10:54 heh 14:10:54 put it all into one huge file? 14:10:58 50 meg file? :P 14:11:02 no 14:11:06 dotn quote the whoe thing 14:11:14 stuff related to isforth ? 14:11:17 pick and chose what to quote 14:11:21 oh 14:11:21 anything 14:11:28 hm 14:11:32 funny, interesting, stupid (unless I said it :) 14:12:50 nuh uh, you don't get special status ;) 14:13:01 i do so too!!!!!!!!!!!!!!1 14:13:04 rm -rf futhin 14:13:05 heh 14:13:14 heheh 14:13:15 mke2fs futhink 14:13:18 no 14:13:23 thats too good for you 14:13:32 mkdos futhin 14:13:32 heh 14:13:38 heh 14:13:39 nkemsdos 14:13:42 mke even grr 14:13:48 mental note - must learn to type 14:13:56 rm -rf mental note 14:14:06 er 14:14:17 that happens automaticaly after a few minutes anyway heh 14:14:23 garbage collection 14:14:25 u know 14:14:34 yeah 14:14:37 there's a cron process 14:14:40 running mv mental note /dev/null 14:14:44 every now and then 14:15:27 yup 14:15:41 im suppries /dev/null isnt full by now :) 14:16:02 they must be using a realy good compression method on it :) 14:16:47 well it's a holographic universe :P 14:16:56 :) 14:22:57 yay. I have gforth installed 14:24:04 ugh heh 14:24:12 instal isforth - its ALMOST useable :P 14:24:32 well i8 gtg zzz - was up all nite 14:24:37 ok 14:24:38 bye 14:24:43 tomorrow i start coding save-exe 14:24:46 !! 14:24:51 !!!! 14:24:55 !!!!!! 14:25:01 --- quit: I440r ("Reality Strikes Again!") 14:25:44 Hmm... I'm really starting to wonder if it's even possible to do all this stack magic in your head :-) 14:26:30 you don't really deal with more than 2 or 3 levels of stack 14:26:34 if you are dealing with more 14:26:36 you are doing it wrong 14:26:50 you factor up the words, so that you keep it simple 14:27:07 and don't pass more than 2 parameters to words. 14:27:18 if you pass than 2 parameters, you are doing something wrong :P 14:27:48 hehe 14:27:58 do you know how to declare a string? 14:28:11 like... char s[10]; 14:28:15 and then copying something to it 14:29:18 well.. i'm not really the right guy to ask, but what you actually do is you create a variable.. and there's a way to make the variable bigger (which i forget).. then you can put stuff in it.. 14:30:36 hehe 14:31:03 I more and more begin to doubt forth really is that powerful ;) Seems like ugly hacks to do simple things 14:31:18 not really 14:31:26 it's not really an ugly hack 14:33:28 it's not a hack.. there's no real rules. creating a variable and expanding it is acceptable, and probably produces nearly identical code that a C compiler would produce.. 14:33:49 forth is very flexible.. it's lowlevel and it is highlevel 14:35:31 --- quit: nilsw ("Life > computers.") 15:05:41 --- join: Speuler (l@195.30.184.52) joined #forth 15:05:52 'oi 15:06:01 Hi :-) 17:29:12 forth is pretty low level. 17:29:27 Yup 17:31:11 it's high level too 17:31:30 it can be described as an application oriented language.. 17:31:40 you code the language of the application 17:32:36 yeah 17:33:29 an application oriented language is actually higher level than procedural languages.. 17:33:56 with forth you can do low level and you can create a language for an application 17:34:04 it's beautiful :) 17:34:07 no layers 17:34:13 no layers of interfaces 17:34:19 just one interface between you and the computer 17:34:36 assembler... :D 17:34:45 oh.. you were talking about forth 17:34:57 heh 17:35:05 ;) 17:35:08 you can have everything in forth.. the gui, the assembler 17:35:08 etc 17:35:14 it's all continuous 17:46:16 --- quit: Speuler (Read error: 110 (Connection timed out)) 17:47:47 I need something to write 17:48:21 i recommend downloading the pygmy tutor 17:48:31 it comes with pygmy forth 17:48:37 I hate downloading 17:48:41 hehe 17:48:53 you are on a dialup connection? 17:48:59 yes 17:49:11 fprimer.zip :D 17:49:43 i downloaded that 17:49:49 haven't opened it up or anything yet 17:49:52 I've got a doc here with all the specifications of the words, but I need an objective 17:49:55 and that was like 6 months ago :P 17:50:22 etaoin: code a program that displays a pyramid of asterisks 17:50:26 factor it up 17:50:35 should use at least 3 words 17:50:47 not like a centered pyramid? 17:51:19 I mean a right triangle, not an equilateral one 17:51:20 ? 17:52:24 um 17:52:25 like 17:52:29 * 17:52:32 *** 17:52:35 ***** 17:52:43 okay 17:52:51 make it so that you type: 20 pyramid 17:53:02 and it prints a 20 line pyramid 18:25:16 : NIGHT CR ." Good night." ; 18:25:17 NIGHT 18:25:19 :-) 18:26:03 --- quit: rob_ert ("Riders on the storm...") 18:55:18 done 18:56:40 heh 18:56:40 cool 18:56:47 show me the code :P 18:56:48 paste it 18:57:30 : pyramid-do-spaces ( n -- ) 18:57:31 1 - 0 ?DO 18:57:31 space 18:57:31 LOOP ; 18:57:31 : pyramid-do-stars ( n -- ) 18:57:31 2 * 1 + 0 ?DO 18:57:33 ." *" 18:57:35 LOOP ; 18:57:39 : pyramid { n -- } 18:57:41 CR 18:57:43 n 0 ?DO 18:57:45 n i - pyramid-do-spaces 18:57:47 i pyramid-do-stars 18:57:49 CR 18:57:51 LOOP ; 18:59:14 looks good to me 18:59:47 yay! you are forth coder now! ;) 18:59:50 yay 18:59:56 you can never turn back from the dark side, bwahahahah! :P 19:00:05 sure I can 19:01:07 you don't need a 0 in front of ?do 19:01:14 it can be: 1 ?do 19:01:19 so that you don't have to have 1 - 19:01:45 in do-spaces? 19:01:56 yeah 19:02:06 : spaces 1 ?do space loop ; 19:02:40 yup 19:02:42 i dunno what's up with ?do 19:02:46 i just use do :P 19:03:12 ?do checks the arguments to make sure one isn't bigger than the other 19:03:21 hm 19:03:21 yeah 19:03:38 now try making a diamond :P 19:04:26 easy 19:05:00 ack 19:11:54 : diamond { n -- } 19:11:55 n pyramid 19:11:55 n 1 + 2 ?DO 19:11:55 i pyramid-do-spaces 19:11:55 n i - pyramid-do-stars 19:11:55 CR 19:11:57 LOOP ; 19:12:00 that works, though I don't know why 19:13:35 heheh 19:13:47 coding instinctively is pretty good, it's faster 19:14:05 it's bad if you want to understand what you write later though 19:14:12 yeah 19:14:25 generally you should instinctively code and understand it :P 19:14:39 i don't get what's up with the 2 in front of ?do 19:15:02 I already told you I don't know how it works, just that it does 19:15:08 :P 19:15:15 heh 19:16:20 : n dup ; 19:16:45 you can define n as dup 19:16:49 it should work 19:16:56 hopefully you aren't defining it as a variable 19:17:06 you don't want to abuse variables :P 19:17:15 okay 19:17:26 don't be afraid of dup swap drop, etc 19:17:36 there's some adjustments 19:17:46 in thinking 19:18:04 forth code looks ugly until you understand most of it instinctively :) 19:19:18 dang it 19:19:27 : n dup ; doesn't work? 19:19:28 xmms is segfaulting for no reason 19:19:40 xmms ? 19:19:47 an mp3 player 19:24:01 ah 19:26:49 I have a feeling something's messed up 19:27:09 well 19:27:26 the only part that seems weird is the n 1 + 2 ?DO 19:27:37 I mean with my computer 19:27:39 do you know why a 2 is there? 19:27:40 oh 19:33:08 oh, well. see you later. 19:33:19 --- quit: Etaoin ("raise MappingError, "arg, somebody folded the maps instead of rolling them"") 20:52:32 --- join: Soap` (~flop@210-86-47-50.dialup.xtra.co.nz) joined #forth 20:58:24 --- quit: futhin () 21:11:06 --- join: futhin (~thin@h24-64-175-123.cg.shawcable.net) joined #forth 22:53:57 --- quit: futhin ("goodnight") 23:59:59 --- log: ended forth/02.02.26