00:00:00 --- log: started forth/02.06.02 01:32:54 --- quit: sif (Read error: 110 (Connection timed out)) 06:12:12 --- join: mur` (ammu@baana-62-165-189-112.phnet.fi) joined #forth 06:12:29 --- nick: mur` -> mur 06:42:07 --- join: davidw_ (~davidw@adsl-66-101.38-151.net24.it) joined #forth 06:42:25 --- nick: davidw_ -> davidw 07:42:57 --- join: sif (~siforth@ip68-9-58-81.ri.ri.cox.net) joined #forth 07:42:57 Type sif: (or /msg sif to play in private) 07:43:57 wow, bot is the most active person on this channel! :D 07:44:08 :-) 07:47:55 radioactive... 07:53:16 3am :/ 07:53:19 --- nick: Soap` -> SoapSleep 07:58:10 does any1 have any experience w enth/flux? 09:10:02 --- join: Speuler (~l@195.30.184.4) joined #forth 09:10:28 g'day 09:10:38 Good afternoon. 09:11:10 ah. the_rob 09:11:17 well done 09:11:24 Uhmm.. thanks. 09:11:31 * rob_ert . o O (What did I do?) 09:11:39 plural you 09:11:45 swedish football team 09:11:51 draw against england 09:11:54 I see. 09:12:01 Congratulations yourself. 09:12:07 8-0 against Saudi Arabia. 09:12:27 yaeh, sent them back to the desert 09:12:59 :) 09:13:05 They'll bomb you. 09:13:48 be glad germany doesn't sit in the same pool as sweden :) 09:14:49 --- quit: SoapSleep (Read error: 113 (No route to host)) 09:30:04 cta 09:30:17 cya 09:30:21 miht return next week 09:30:36 bye jukka 09:37:03 --- quit: mur ("MURR! end of file reached. continuing filling logs some other time.") 09:38:09 --- quit: davidw (Read error: 113 (No route to host)) 09:38:11 --- join: davidw_ (~davidw@adsl-66-101.38-151.net24.it) joined #forth 09:40:45 --- nick: davidw_ -> davidw 10:27:42 --- nick: Speuler -> PhoodPhrenzy 11:19:48 --- join: CrowKiller (Vapo_Rulez@cnq5-233.cablevision.qc.ca) joined #forth 11:19:57 hi 11:20:54 hi 11:25:03 so anybody here got ideas fot the 32bits forth vm? 11:26:24 ill try to put mine into a html page soon 11:28:06 no 11:34:43 --- quit: PhoodPhrenzy (Remote closed the connection) 12:04:25 --- join: Fare (fare@samaris.tunes.org) joined #forth 12:05:39 hi 12:07:27 hi 12:11:04 hi 12:13:58 is there any enth expert here? 12:14:22 i can even browse its sources :( 12:14:35 coz they r in blocks 12:19:35 --- quit: Fare ("31453") 12:20:37 dont know sorry 12:24:30 --- join: futhin (thin@h24-64-175-61.cg.shawcable.net) joined #forth 12:24:45 anybody alive? 12:24:58 hey crowkiller 12:25:33 --- part: futhin left #forth 12:25:37 --- join: futhin (thin@h24-64-175-61.cg.shawcable.net) joined #forth 12:25:37 --- mode: ChanServ set +o futhin 12:25:43 --- topic: set to 'Actual Project: To design the easiest, simplest and mightiest 32bit Virtual Foth Machine for x86/ARMthumb/PowerPC possible -- CrowKiller' by futhin 12:28:16 yes? 12:28:23 howdy 12:28:37 i forget how to use create.. 12:28:39 i'm doing something like 12:28:39 hello futhin 12:28:43 i never used it 12:28:48 create cartesian 0 , 0 , 0 , 12:28:55 but it's wrong or something 12:28:58 not even sure of what is does 12:29:09 yeah, i'll go find a tutorial 12:29:51 btw thanks for letting the topic hanging up there 12:30:11 I hope it might inspire people doing something actually useful lol 12:30:25 yeah 12:33:13 this is the most recent paper 12:33:14 hm, you really should learn more forth if you don't know about CREATE heh 12:33:25 about chuck moore c18 core 12:33:27 http://dec.bournemouth.ac.uk/forth/euro/ef01/moore01a.pdf 12:34:30 thats exactly what everybody's telling me when I share my ignorance about create/does 12:35:10 yeah 12:39:08 its a little more complicated than its previous design embodiement 12:40:07 theres 18 bits in a word, and there 4 5bits instructions in each, the last one must thus end with two zeroes to be put there or else its a nop 12:40:20 it's times like these i wish i had starting forth or thinking forth on hand 12:41:23 forth is simple and easy, dont bother yourlsef using books! 12:41:38 its not forth like to not be able to do something with it lol 12:41:52 here what i tried to explain 12:41:53 The c18 has 192 words of 18-bit memory. RAM addresses are 0-7f; ROM are 80-bf. Instructions are 5 bits long. There 12:41:53 are 4 slots for instructions in each word. From left to right: S0, S1 and S2 are 5 bits; S3 is 3 bits and has 2 low-order zeros 12:41:53 appended. The most common instructions end in 00. 12:42:36 forth is simple and easy, but first we must know how to use CREATE , C, and other words 12:42:40 the nop instruction is 11100 12:43:00 hmmm i dont need them myself when i think in forth 12:43:02 i really loved MUF.. great help system, really easy to learn the language and start coding immediately 12:43:03 hi 12:43:05 futhin: 12:43:08 onetom!!!! :D 12:43:10 and i dont know about the C word 12:43:13 :) 12:43:21 crowkiller: you can't code any forth :P 12:43:41 the C, (c and comma) word 12:44:11 i don't need create to code in forth 12:44:14 onetom: i'm trying to create a "variable" with three bytes in it 12:44:16 onetom: 12:44:27 CREATE CARTESIAN 0 , 0 , 0 , 12:44:32 c, allocate bytes 12:44:35 --- quit: davidw (Read error: 104 (Connection reset by peer)) 12:44:37 , allocate cells 12:44:43 thats it 12:45:05 a cell is fine for now 12:45:12 CREATE CARTESIAN 0 , 0 , 0 , 12:45:23 CARTESIAN 1+ 234 ! 12:45:25 gforth: create x $12345678 , x c@ . x 1+ c@ . 12:45:28 onetom: 120 86 12:45:32 will that store to the second cell ? 12:45:35 gforth: hex create x $12345678 , x c@ . x 1+ c@ . 12:45:39 onetom: 78 56 12:46:03 ! ( data address -- ) 12:46:19 implementing such basic data structure is really easy 12:46:32 do a cartesian word 12:46:34 gforth: create cartesian 0 c, 0 c, 0 c, cartesian 1+ 234 ! cartesian 1+ @ 12:46:38 futhin: in file included from *the terminal*:-1 12:46:38 futhin: /tmp/fsock-sh-server.request.tmp:46: Invalid memory address 12:46:38 futhin: create cartesian 0 c, 0 c, 0 c, cartesian 1+ 234 ! cartesian 1+ @ 12:46:38 futhin: ^ 12:46:38 futhin: Backtrace: 12:46:39 :cartesian 3* 12:46:45 its ugly 12:46:57 lol 12:47:00 becasue off odd bondaries, 12:47:10 there's no odd boundaries 12:47:11 you could use 12:47:19 :cartesian 4 * 12:47:32 and number your cartesian coordinates 12:47:40 or use the 4 byte for anything you like 12:47:45 dont need the create does 12:47:50 or anything fancy 12:48:26 crowkiller: you make no sense 12:48:46 you don't appear to know much forth.. 12:48:53 especially if you make the mistake of typing 12:48:54 maybe the cartesian word use a variable and would be defined like this: :cartesian 4 * baseaddressofmemoryarea + 12:48:55 :cartesian 12:49:06 the ":" is a WORD ! 12:49:12 i know 12:49:17 cartesian must be defined as a word 12:49:26 all these things are words: : ! . , C, 12:49:37 dont you know the block word?? 12:49:46 :block 1024 * 12:49:56 so if you say "24 block" 12:50:01 you have to have a space between the : and the word you are defining 12:50:05 : cartesian 12:50:05 then you get to the 24th block 12:50:09 not :cartesian 12:50:20 doesnt matter at all you get the point 12:50:22 ;ppp 12:51:11 first you CREATE the CARTESIAN 12:51:14 then you create a structure 12:51:19 that allows you to type 12:51:29 0 COORD 12:51:30 the thing is that you dont need a structure 12:51:32 and it returns that coord 12:51:36 or 24 COORD 12:51:37 or whatever 12:51:53 you said 24 BLOCK 12:52:07 i still do that AFTER i create the frigging variable 12:52:10 anyways gtg 12:52:11 --- quit: futhin ("gtg") 12:52:15 lol 12:52:26 he doesnt do assembler 12:52:30 its so evident lol 14:07:56 --- join: geakazoid (JB@adsl-63-202-177-112.dsl.snfc21.pacbell.net) joined #forth 14:13:39 --- join: sbk_ (~500@dsl-65-184-108-105.telocity.com) joined #forth 14:18:38 --- quit: sbk_ ("Leaving") 14:18:46 * geakazoid is gone, autoaway/10m (l!on) 14:44:54 --- join: davidw (~davidw@adsl-8-74.38-151.net24.it) joined #forth 14:47:04 --- join: futhin (thin@h24-64-175-61.cg.shawcable.net) joined #forth 14:48:15 crowkiller: i know the basics of assembler and i'm familiar with the paradigm 14:48:21 that is why i took so easily to forth 14:48:55 you completely misunderstand me i think 14:49:29 you don't understand what CREATE is.. 14:49:42 CREATE is what VARIABLE uses 14:49:54 : VARIABLE CREATE, ALLOT ; 14:49:57 or something like that 14:50:11 now i basically want a variable with 3 cells 14:50:27 because i'm using cartesian coordinates.. x, y, z 14:50:41 i want a cartesian "variable" 14:50:51 and when i want to find what x is 14:50:57 i type: 14:51:06 0 coord 14:51:09 or if i want to find y 14:51:12 i type 1 coord 14:51:16 and coord is defined as: 14:51:48 : coord 2* cartesian + @ ; 14:51:55 or something like that 14:52:39 i could even do this: 14:52:44 : x 0 ; 14:52:49 : y 0 ; : z 0 ; 14:52:53 and then 14:52:55 x coord 14:52:56 y coord 14:52:57 etc 14:53:35 you used the BLOCK example 14:53:43 24 BLOCK returns the 24th block 14:54:20 but you don't understand that there is an address stored in HERE or some other variable that BLOCK accesses 14:54:45 : BLOCK 1024 * HERE ! ; or something like that 14:54:52 hi 14:54:52 when i talk about 14:55:09 CREATE CARTESIAN 0 , 0 , 0 , i'm trying to create a variable with three cell spaces 14:55:23 onetom: hello 14:55:25 are you busy? 14:55:28 what are you up to? 14:56:09 no, not really 14:56:29 i was backreading the log 14:56:32 ahh 14:56:52 have u solved the problem finally? 14:56:58 can you tell me if "CREATE CARTESIAN 0 , 0 , 0 ," looks right to you? 14:57:01 shall i tell the solution? 14:57:04 no i was away, just got back 14:57:20 i want to store numbers to each cell 14:57:21 its okay 14:57:26 and fetch those numbers 14:57:34 in the CARTESIAN variable 14:57:53 tho its only good 4 creating initialized adat structures 14:58:04 look: 14:58:04 i tried 14:58:13 CREATE CARTESIAN 1 , 2 , 3 , 14:58:15 and then i tried 14:58:23 CARTESIAN @ 14:58:25 and i get a 0 14:58:26 not a 1 14:58:28 what gives? 14:58:34 i'm forgetting something here 14:58:58 eh 14:59:00 it works now 14:59:01 weird 14:59:25 lol 14:59:45 it works cool 15:00:39 gforth: create P1 1 , 11 , 111 : x ; : y cell+ ; : z cell+ cell+ ; : .p dup x @ . dup y @ . z @ . ; P1 .p 222 P1 z ! P1 .p 15:00:42 onetom: 1 11 1075038348 1 11 222 15:01:20 gforth: create P1 1 , 11 , 111 , : x ; : y cell+ ; : z cell+ cell+ ; : .p dup x @ . dup y @ . z @ . ; P1 .p 222 P1 z ! P1 .p 15:01:23 onetom: 1 11 111 1 11 222 15:01:35 it's so ugly sending the code that way 15:01:41 why? 15:01:44 it's not as readable when it's all on one line 15:01:57 what else can i do? :) 15:01:59 it would be nice if you could send it to gforth in multiple lines 15:02:02 or 15:02:04 here's an idea 15:02:15 you type gforth: begin 15:02:21 and then everything you type after that 15:02:26 gets read by gforth 15:02:28 then you type end 15:02:30 or something like that 15:02:51 sure, but it requires user handling :/ 15:03:00 how so? 15:03:21 gforth: readallmyforthcode henceforth 15:03:24 futhin: in file included from *the terminal*:-1 15:03:25 futhin: /tmp/fsock-sh-server.request.tmp:46: Undefined word 15:03:25 futhin: readallmyforthcode henceforth 15:03:25 futhin: ^^^^^^^^^^^^^^^^^^ 15:03:25 futhin: Backtrace: 15:03:25 gforth: begin 15:03:27 create blah 0 , 15:03:34 gforth.. begin 15:03:40 20 blah ! 15:03:46 blah @ 15:03:50 gforth: i'mdone 15:03:54 futhin: in file included from *the terminal*:-1 15:03:54 futhin: /tmp/fsock-sh-server.request.tmp:46: Undefined word 15:03:54 futhin: i'mdone 15:03:54 futhin: ^^^^^^^ 15:03:54 futhin: Backtrace: 15:03:58 :) 15:04:06 yes 15:04:10 you should handle separate users 15:04:23 it would be nice 15:04:25 anyways 15:04:30 i know :) 15:04:55 but i dont have & absolutely not in the mood :( 15:05:08 :( 15:05:19 not in the mood to mess with forth these days? :( 15:05:23 im really pissed off, but uve been told.. 15:05:28 yeah 15:05:32 no, no, no.. 15:05:34 sucks 15:05:37 futhin: thats fine with me do what you want, but my point is i dont need create/does and the block word only return the block start address in memory, nothing else, so dont need here or other things 15:05:49 iwas messing w enth all this day, eg 15:06:26 but not in the mood 4 doing other than what is the most interesting 15:06:59 crowkiller: uh ??? let me see your code for handling cartesian coordinates.. for remembering what the current caretesian coordinate is 15:07:07 crowkiller: it's gotta be stored somewhere 15:07:37 crowkiller: i use CREATE to make the variable that stores the cartesian coordinates 15:07:40 there's no way out of it 15:07:46 if there is, enlighten me 15:07:50 enth is pretty exciting, clean, simple, short & functional anyway 15:08:17 onetom: i'm working on my forth mud right now 15:08:42 i440r motivated me to just code a simple mud and throw that away and start from scratch 15:08:56 so that i don't get paralyzed 15:09:00 tho, its still a bit infelxible (cant change screen resolution, not even on the fly, but @ compile time either) 15:09:35 but it also disappointed me 1 some extent, coz 15:09:49 it requires windows 2 be recompiled :( 15:10:12 it wasnt a lucky & productive day 4 me :( 15:10:35 hmmm futhin I said that I cant use create/does and to solve a problem I dont need to bother solving other problems such as using constructs I dont understand fully 15:10:49 but ioor is right, code up 1 then throw it away 15:11:01 to solve your problem hmm i dont know 15:11:08 maybe you want signed coordinates 15:11:09 b minimalistic & dare 2 make ugly code 4 the 1st time 15:11:09 ?? 15:11:16 it could help a lot :) 15:11:24 i dont at all what the specs are so i cant solve this its up to you ;p 15:11:48 i dont know at all what the specs are so I can't solve this, its up to you ;p 15:11:51 crowkiller: using cartesian coordinates for simulating a virtual world 15:12:16 you know what a mud is right? 15:12:29 a multiplayer game 15:12:29 multi-user dimension? text-based online multiplayer game 15:12:54 the game i played that look the most like this is tradewars 2002 15:13:11 tradewars 2002 was fun 15:13:28 i was into a project at asynchrony to make a clone 15:13:34 but guy only coded it in vb 15:13:36 lol 15:13:45 i plan on implementing an economic system in the mud 15:13:48 damn i dont have vb so screw him ;p 15:13:52 i think it'll be really cool ;) 15:14:23 maybe you dont need the coordinates in the format you actually wanted them to be 15:14:32 look carefully at what you want 15:14:47 naw, code first, scratch it, and then i'll know what i need 15:15:34 coding first is not the best way, you have to think of the most efficient implementation possible, at the lowest level possible 15:15:36 then code 15:15:37 futhin: did u write any specifications about what do u expect from your program 2 do? 15:16:02 some 15:16:26 futhin: im good @ prototyping, remember? ;) i could help u, if ud like 2 15:16:59 crowkiller: doesn't sound like you've coded much 15:17:03 brb 15:17:13 be back in 20 mins 15:17:18 no I didnt 15:17:29 eg, enlist the 3d vector operations u think u gonna need 15:17:30 brb 15:18:13 futhin: you should develop a good virtual machine to start with, so that your code could run on xbox, pc, gba or any 32 bit platform 15:24:50 crowkiller: first i must master forth 15:25:22 no need, because you think forth has create does 15:25:25 and you might want to do that too 15:25:28 this forth dont need to be masterized 15:25:40 you only need to know about stacks 15:25:45 yeah sure 15:25:49 the basic philosophy of forth 15:25:50 and definitions 15:25:53 and thats all 15:26:06 if youw ant speed 15:26:12 design your own speedy forth 15:26:25 if you want something compact design you own compact forth 15:26:36 CREATE is the word used to add stuff to the dictionary, it's a pretty basic word 15:26:47 unless you want a forth with no dictionary 15:27:01 onetom: you know uml? 15:27:06 do you know aha? 15:27:28 yes i read part of jeff fox's aha page awhile ago 15:27:33 what a dictionary is to you? 15:28:04 the most efficient way of doing a dictionary is using an array, or maybe a hardware stack dedicated to this 15:28:18 containing only adresses in memory where the word begin 15:28:21 so in your source 15:28:25 you write 15:28:38 let say 10 or 15 definitions 15:28:45 and after write 15:28:57 word1, word5, word2 word 3 word 2 15:29:21 your words in the source are only indexes into the Code Field Address table 15:29:24 so bang 15:29:28 no more dictionary 15:29:33 unless you want one at edit time 15:30:11 so you know, to master forth you only have to factor things out of the over all picture, its that easy 15:30:33 hmmm 15:30:36 so now you see why i dont need create/does 15:31:39 i'd be interested in seeing your code, if you stay true to that philosophy you could create some amazing code 15:31:44 thats why an efficient virtual machine design is important, because its the fondation of forth and if the vm is inneficient then the system is inneficient 15:32:07 i posted some code to the colorforth mailing list 15:32:15 i could cut and paste it here 15:32:24 sure please do 15:32:58 i will cut and paste all the reply 15:33:13 since the archives arent up to date 15:33:20 I also forgot to underline the fact that this is the page of 15:33:20 Mark Slicker and its all been discussed already on this list, 15:33:20 just search the (not up to date) archives at 15:33:20 http://www.strangegizmo.com/forth/ColorForth/index.html 15:33:20 And for the new stuff, I thought about a simpler IF construct, 15:33:21 that I use when im coding for AVRs: there's some asm 15:33:23 instructions on those chips that i.e. "skip the following instruction 15:33:25 if the Z flag is set". in asm its not that powerful because it skips 15:33:27 only a one memory cell instruction, like short jumps. but in forth, 15:33:29 if the if could skip only the following word if the flag is true it would 15:33:31 make the code much more clean and reusable. Example from a 15:33:33 aha like system i would like to implement coded from thin air but 15:33:35 embodies the general concepts of a 8 bit aha system: 15:33:37 Basic info about tokens to understand the code below: 15:33:43 1- Word Token 15:33:45 0|1111111 min:0 max:127 Range:127 15:33:47 2- Function Token 15:33:49 10|111111 min:128 max:191 Range:63 15:33:51 3- New Word Token 15:33:53 1100|1111 min:192 max:207 Range:15 15:33:55 4- Comment Token 15:33:57 1101|1111 min:208 max:223 Range:15 15:33:57 --- quit: CrowKiller (Excess Flood) 15:34:07 --- quit: davidw (Read error: 113 (No route to host)) 15:34:13 --- join: CrowKiller (Vapo_Rulez@cnq5-233.cablevision.qc.ca) joined #forth 15:34:15 lol 15:34:19 um 15:34:32 what last line did you see? 15:34:32 dcc it to me? 15:34:50 hmm ok 15:36:10 i hope this msg will spark a finally interesting discussion thread 15:36:35 because I'm tired of seeing this community doing plain nothing 15:36:40 same here 15:36:51 um, so there's code in the reply.txt? 15:37:01 a little 15:37:06 i coded it from thin air 15:37:12 but you can decipher it im sure 15:37:37 i don't see any forth code :P 15:38:21 i'm a lazy reader 15:38:21 haaaaa at the bottom 15:38:38 in that case why did you asked me for the entire text 15:38:40 i'm insulted by people who can't write information in easily accessible ways 15:38:56 no don't worry 15:38:59 i'll read it 15:39:02 just have to concentrate a little 15:40:06 i just have a preference for stuff that just flows over my mind, caresses my brain, makes love to my pink convoluted matter, where the logic flows and is open, where minimum thinking needs to be done 15:40:22 i think that information accessibility should be a science 15:40:38 and everyone should learn to present their information in the most accessible ways 15:40:39 do you understand how my if work? 15:40:52 so that everyone can absorb the information and knowledge like sponges 15:41:05 what does AVR stand for again? 15:41:09 it add the corresponding flag to the PC, so it can add 0 or 1; skip 0 or 1 word 15:41:22 www.atmel.com, look into the microcontrollers 15:41:35 8bit microcontrollers 15:41:44 chips that i.e. "skip 15:41:51 just pointing out to you that 15:41:57 i.e stands for "That is" 15:42:09 so "chips that that is.." sounds weird :P 15:42:12 i thought it was in example 15:42:18 nope, it's latin 15:42:19 lol 15:42:28 ok ill remember that ;p 15:42:30 id exemplia 15:42:33 or something likethat 15:43:26 the assembly instruction is actually scs: Skip if Carry is Set 15:43:44 what does AVR stand for (it's an acronym isn't it :P) 15:43:50 nothing lol 15:43:58 its the snappy name for their cores 15:44:00 ewwwww 15:44:06 heh 15:45:08 e.g is also latin, means for example 15:45:28 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 15:45:40 ill use that in the future then ;p 15:46:58 : run ?true if runtask exit then runtask2 ; instead of : run ?true if runtask else runtask2 then ; 15:47:20 : run ?true if runtask else runtask2 then ; <-- normal solution 15:47:31 : run ?true if runtask exit then runtask2 ; <-- faster solution 15:48:35 : run ?true if runtask2 runtask ; 15:48:55 the runtask2 should implement a rdrop at the start of it 15:49:06 to make it behave like a jump 15:49:17 because the word after the if is called 15:49:22 if the condition is true 15:49:28 skipped if the condition is false 15:50:59 if it's false, it goes to the word after THEN.. 15:51:10 er 15:51:12 i eliminate the then 15:51:21 its futile 15:51:26 you are influenced by colorforth 15:51:43 well thats the way to go 15:51:43 some forth implementations THEN isn't separate from IF 15:51:48 yes true 15:51:52 and the example is influenced by aha 15:52:30 i hate looking at colorforth code and searching for the then 15:52:43 to see what the code does if the condition is true 15:54:11 yeah 15:54:21 rpn needs to get in our way less 15:54:57 i was thinking of implementing a (REVERSE) word 15:55:06 it would be included with forth source 15:55:17 and would compile the code reverse 15:55:30 so that you could have the high-level code at the top 15:55:33 and the low level at the bottom 15:55:48 it would start from the bottom, find the second ; 15:55:52 execute the stuff after that 15:55:59 go to the next ; above 15:56:09 execute stuff 15:56:10 and so on 15:56:18 it executes from the ; 15:56:27 in order to not miss executing stuff like 15:56:31 VARIABLE BLAH 16:00:00 you only need 16:00:05 to have this in the editor 16:00:11 this a editor only feature 16:00:19 having top level funtions on top 16:00:26 at a compile and execution level 16:00:40 you need to have the definitions before calling them 16:00:57 you should really listent to the aha video presentation 16:01:04 it explain a lot about forth history 16:01:15 and the philosophy of early binding 16:01:34 netween design phase, edit phase, compile phase and execution phase 16:01:38 sure the (REVERSE) thing can be assumed to be part of the editor's functionality 16:01:51 an editor 16:01:52 it is an edit thing 16:01:57 is the top of the dessert 16:02:09 you can play with all sort of concepts 16:02:15 implement a lot of features to help you 16:02:37 cream of the crop is the expression I think 16:02:56 the cherry on the top of the icecream dessert 16:03:01 anyway ;p 16:04:18 if we get a good execution model, then formating source in a database format much like aha becomes easy and profitable, because the editor is simplified no more need to parse strings 16:04:46 hmm 16:04:50 and the overall forth can be made smaller and faster, thus more elegent ;p 16:05:24 elegant in fact ;p 16:07:24 you said elegant twice :P 16:08:10 elegent didnt pronounce the same as elegant i think 16:08:20 just wanted to correct my mistake 16:09:39 ah 16:09:43 didn't notice :P 16:09:48 i'm impervious to ppl's typos 16:10:11 hey 16:10:25 next time you make a post to that thread 16:10:33 send me the post first and i'll edit it for you :P 16:10:43 lol 16:10:44 it'll give you more credibility and make your ideas understandable 16:10:54 more understandable that is 16:11:01 it was the third email in a row 16:11:14 i send something, and then something i forgot to include 16:11:36 and then that reply, so i wrote this quite as fast as I could 16:11:57 but im sure 16:12:05 chuck and jeff will get the point 16:12:34 and thats,s the most important to me;p 16:13:24 only if they read the post 16:13:37 other really dont care about what I think, their post are really pissing me off, even mark slicker reacted to them quite violently 16:14:01 people were talking about "colorforth to ascii" 16:14:24 when i joined the list 1month ago i posted some links were we could finf the source code translated in html 16:14:30 in color and all 16:15:04 and ive written also how to modify the css file to make the text printable 16:15:22 because it was defines with the l ++large attribute or something 16:15:33 anyway now thsoe people started a thread about it 16:15:43 and they already discussed it before 16:15:57 and chuck himslef wrote 16:16:12 why colorForth in ASCII? html is much better 16:16:18 he only sent that to the list 16:17:00 so right after that i posted my links to the colorForth 2.0 source at merlintec.com and the cf2html.c program 16:17:09 anyway 16:17:50 people in the forth community mainly suck hard at Forth, maybe not in other areas, but as forthers they dont get it at all 16:18:26 yeah, that is true 16:18:37 i suck hard at forth too 16:18:43 im no better than anyone lol 16:18:51 people get distracted by fluff easily! :) 16:19:06 but at least I try to get that fluff out of my way 16:19:49 and if at least one other person would get that attitude it might get interesting to code with them 16:20:11 i try to have that attitude 16:20:19 i get distracted every now and then 16:20:21 because its like being on a circle, we only need to point toward the same cneter, the same goal 16:20:25 but i'm honest about it ;) 16:20:41 i try to be honest to myself 16:20:53 that's a big way to eliminate fluff 16:21:24 i might get angry and someone when he isn't speaking sense, but once i start to understand, i open up more :) 16:21:33 s/and/at 16:21:42 great ;p 16:23:19 * onetom is back 16:23:25 wb onetom :) 16:24:05 * futhin predicts onetom is reading backlog :P 16:25:38 crowkiller: where's the post by chuck moore about ASCII vs html ? 16:25:40 :)) u r right 16:25:58 i was diving in the backlog 16:26:03 i dont know uml 16:26:10 it was only a little line 16:26:15 tho, i should, coz i learnt it 16:26:19 i erased it from my inbox 16:26:32 and the archive isnt up to date since a long time 16:26:43 CrowKiller: what archive? 16:26:44 weird 16:26:56 http://www.strangegizmo.com/forth/ColorForth/index.html 16:27:08 crowkiller: why isn't the archive up to date on the website? 16:27:33 dont know at all 16:27:44 i dont maintain it so I can't say ;p 16:28:38 heh 16:28:56 so how is the virtual forth machine progressing? :P 16:30:08 ive got the if problem settled 16:30:09 --- quit: deltab ("BitchX-1.0c18 -- just do it.") 16:30:27 now i have to look at what I need 16:30:33 for opcodes 16:30:50 such as inc/dec, details like that 16:32:16 http://www.ultratechnology.com/fsc2001.htm 16:32:23 im also looking right now at this file 16:32:34 since it talks about the c18 core redesigned 16:35:37 chuck implemented a B register to hold another address 16:35:57 like the a register but with less functionality 16:37:44 I must go, the building next to my mother's library is in flamme 16:37:56 bye 16:38:04 --- nick: CrowKiller -> CrowAway 16:41:51 --- nick: CrowAway -> CrowKiller 16:42:00 well 16:42:18 my family left the house without me lol 16:42:35 i was too slow for them 16:47:39 heh 16:49:57 oops, sorry 16:50:24 i found myself hunting amiga rom for the emulator :) 16:54:06 25x for 1 buck 16:54:15 or even 50x for 1 buck 16:54:33 50 forthchips on one chip 16:55:54 I think it can be doable in a cpld or an FPGA 16:59:11 in my forth chips i would add special registers at least for a compiling forth chip 16:59:23 2 stream pointer 16:59:34 2 address register 16:59:59 the stream pointer woud have a @+ instruction 17:00:21 what's @+ ? 17:00:25 the address register would have a +@ instruction 17:00:32 what does fetch-plus 17:00:34 do 17:00:37 @+ is fetch then increment pointer 17:00:42 k 17:00:53 like ++i and i++ 17:01:05 no 17:01:07 +@ and @+ 17:01:13 the +@ would be used 17:01:18 to do indexed fetches 17:01:28 +@ doesn't increment then fetch? 17:01:51 fetch "tos + content of the register" 17:02:31 it woudl increment 17:02:36 but temporarly 17:02:41 by the content of the tos 17:03:36 > I hope to hear suggestions from people on this list. Please dont 17:03:36 > sprut into thin air like the previous thread about ascii, thanks. 17:03:36 ok, get back in your hole, jerk. 17:03:36 KBK 17:03:38 lol 17:04:12 i know a french sentence that describe this phenomena 17:04:20 "La vérité choque" 17:04:29 the truth makes angry ;p 17:05:42 i dont like flamewars at all so ill let him tell whatever he wants, cause he has proven to everyone who really the jerk is lol 17:07:04 sprout is the correct spelling 17:07:31 ok ;p 17:07:46 but it was really a out from nowhere statement lol 17:17:15 l you are at 0 ,0 ,0 . ok 17:17:15 n you are at 0 ,1 ,0 . ok 17:17:15 s you are at 0 ,0 ,0 . ok 17:17:15 e you are at 1 ,0 ,0 . ok 17:17:16 w you are at 0 ,0 ,0 . ok 17:20:43 l you are at 0,0,0. ok 17:20:43 n you are at 0,1,0. ok 17:20:43 s you are at 0,0,0. ok 17:20:43 east you are at 1,0,0. ok 17:20:50 it doesn't look like much heh :P 17:25:09 thats a great way to implement coordinates 17:25:23 sarcasm? 17:25:23 you can express them in terms of multiples of directions 17:25:30 liek 3 east 2 north 17:25:45 hmmm 17:25:51 good idea 17:26:52 i wasn't quite doing it that way heh 17:27:14 I thought you defined those words using your create does or something 17:27:15 because when i type "north" it increments the cartesian variable and then calls LOOK 17:27:25 like : w 0,0,0 17:27:35 kk 17:27:41 no, i haven't used DOES> yet 17:27:43 no need 17:27:54 CREATE is just simply for making variables 17:28:02 does is for code 17:28:05 yes 17:28:08 yes its true ;p 17:28:10 haven't been using DOES> yet 17:28:21 i posted to the colorforth mailing list again 17:28:28 4th time in a day lol 17:28:41 without getting me to edit your post? :P 17:28:46 heh jk 17:28:56 hehehe ;p 17:29:09 ill cut and paste it without flooding 17:29:20 Hi everyone, it's me again for the 4th time today, 17:29:20 sorry if I'm bothering you. 17:29:37 I've read the c18 paper at: 17:29:37 http://dec.bournemouth.ac.uk/forth/euro/ef01/moore01a.pdf 17:29:37 I saw the new B register added to the chip and I thought about it 17:29:37 and I came to the conclusion that those chips need only 17:29:37 4 registers aside from the T, S, R and the physical stacks: 17:29:37 the A and B could be eliminated and replaced 17:29:40 by 2 stream pointers and 2 table pointers. The stream pointers 17:29:41 would use the @+ and !+ instructions and the table pointers 17:29:43 would use as a special instruction +@ and +!, aside from classical 17:29:45 @ and ! to change their content. 17:29:51 *** space between paragraph *** 17:30:10 One register pair could use the following mechanism 17:30:10 @+ fetch from the value of the register then increment it, 17:30:10 +@ fetch from the TOS+ContentOfRegister, leaving the 17:30:10 register as it is. 17:30:13 *** space between paragraph *** 17:30:26 and the other pair could use 17:30:26 !+ to store at the value of the register then increment it and 17:30:26 +! to store the value at S at address registervalue+T. 17:30:28 *** space between paragraph *** 17:30:43 It would make implementing a lot of programming task a 17:30:43 lot easier (i'm thinking mainly of aha here ;o) 17:30:43 I'm in the design phase of my VM and I would be glad to 17:30:43 hear from open minded individuals that don't call everyone 17:30:43 jerks because truth makes them angry =) (btw I dont like 17:30:44 flame wars so please get over it, I wont make anymore 17:30:45 personnal comments like those, I promise ;p) 17:30:47 CrowKiller 17:30:49 EOF 17:31:01 i try to put blank lines 17:31:09 by typing "space enter" 17:31:17 between paragraphs and the server respond no text to send 17:31:24 anyway heres the post 17:31:37 yeah 17:31:42 theres the post 17:31:53 u you are at 0,1,0. ok 17:31:54 d you are at 0,0,0. ok 17:31:54 d you are at 0,-1,0. ok 17:31:54 d you are at 0,-2,0. ok 17:31:54 s you are at 0,-2,-1. ok 17:31:54 w you are at -1,-2,-1. ok 17:31:56 e you are at 0,-2,-1. ok 17:32:26 so.. 17:32:35 what was your idea? 17:32:50 you thought i was using create does> and you had an idea? 17:34:13 i thought you defined 17:34:23 the directiosn as being those quantities 17:34:41 so you could express them in terms of : mydirection 2 north 3 east 17:34:45 or something like that 17:35:10 i thought it was a great factoring idea 17:35:45 the z word would be up and down 17:35:54 nope, the y 17:35:54 like 3 north 1 up 2 east 17:36:25 x, y, z x is east-west y is up-down, z is north-south.. that's just the convention out there i think 17:36:27 it woukld be easy to compute the component of a vector this way ;p 17:36:35 kk 17:37:00 i _could_ factor it out like that 17:37:09 anyway changing it would be easy with that system 17:37:15 but i need to call LOOK 17:37:24 after the person has "moved" to those coordinates 17:37:36 i just had 17:37:54 : north increment_z_coord look ; 17:39:14 i was going to try to code this mud without coding a new parser 17:39:24 just use what forth already gives you.. 17:39:34 yep good idea 17:39:45 beware of hackers though lol 17:39:51 heh yeah 17:39:53 imagine someone emssing with your forth system ;p 17:39:54 i'll worry about that later 17:40:17 shouldn't be too hard to lock out all vocabulary except the mud vocabulary 17:40:51 trivial if the system is well made ;p 17:40:57 yep 17:43:17 i need to call look 17:43:22 after i do something like 17:43:26 3 north 2 east 17:43:48 i want it to be inside north and east i think.. 17:44:23 crowkiller: 17:44:30 because the player coudl define new words 17:44:45 no, i would lock that out 17:44:54 crowkiller: lets code the virtual forth machine in forth 17:45:10 such as : pathtosecretplacetosharewithothers 2 north 3 east 6 up 4 west 17:45:45 the virtual forth machine is an expression of my view such as aha is the best compiler technology around 17:45:58 in my vm i would need stream pointers and table pointers 17:45:59 i need look to be called after 2 north 3 east occurs 17:46:07 or 1 east 5 north 17:46:08 or whatever 17:46:15 one with read instructions one with write instructions 17:46:26 i need look to be called after the person types and enters " 1 east 5 north " 17:46:58 just make a loop to parse the entry made by the user and then do a look automagically? ;p 17:47:27 well it can't be all entries 17:47:36 only after movement occures 17:48:01 what would the code for a parsing loop look like anyways? 17:48:27 @+ (test code) if statement if statement if statement etc 17:48:47 @+ (test code) if statement (testcode) if statement code again if statement etc 17:48:50 i dont know 17:50:38 bbl in an hour and half or so 17:51:48 k 17:51:57 --- join: CrowKilr (Vapo_Rulez@cnq5-233.cablevision.qc.ca) joined #forth 17:51:59 * onetom goes 2 bed 17:52:03 --- part: CrowKilr left #forth 17:52:11 see ya onetom 17:52:15 bye 18:21:25 --- join: I440r (~mark4@1Cust160.tnt3.bloomington.in.da.uu.net) joined #forth 18:23:09 hi 18:23:33 hi :) 18:23:42 isforth now compiles about 900k of sources per second :) 18:23:45 ish 18:24:16 did you achived metacompilation? 18:24:35 achieved* 18:25:12 no 18:25:20 cant do that till i have an assembler 18:25:59 hmmm tell me how your forth work then? what are your primitives? 18:27:24 like i stated earlier with futhin, we need to get the best 32 bits forth VM, for a ton of reasons. 18:27:59 coded in assembler 18:28:06 kernel is assembled using nasm 18:28:07 i would be interested to know how you implemented your forth 18:28:11 kk 18:28:23 the extend compiles pure forth 18:28:33 about 117k of sources in a tenth of a second :) 18:28:38 about 20 files 18:30:14 are you subscribed to the colorforth mailing list? 18:30:59 nope 18:31:09 ha then you didnt saw my posts... 18:31:22 what did you say ? 18:31:24 ill resume them here 18:31:53 i think if statements should be made 18:31:58 that way 18:32:04 the should add the flag to the pc 18:32:07 like a if 18:32:19 is behavior is to add the zero flag to pc 18:32:26 so it can only skip the following word 18:32:48 the -if add the last bit of the number to the PC so it can only skip the following word 18:32:54 its a lot simpler 18:32:56 a lot faster 18:33:02 and promote code reuse 18:33:09 if you want to make jump tables 18:33:16 easy 18:33:26 --- part: geakazoid left #forth 18:33:28 just add a Rdrop to the start of the called word 18:33:59 example: : newword test if cacaboudin blopblopblop ; 18:34:23 : cacaboudin Rdrop blabla blabla ; 18:35:19 my ?: does EXACTLY that 18:35:35 ?: true-word false-word blah blah blah 18:35:54 anyway its lot better than looking after the then in colorforth source 18:36:02 and the other thing ive posted about 18:36:14 is the use of registers in forth chip designs 18:47:32 sorry i was distratcted 18:47:36 ill go on with my resume 18:47:44 there should be 4 registers 18:47:54 2 stream pointers and 2 table pointers 18:47:55 :) 18:48:05 each of them have ! and @ 18:48:08 and also 18:48:24 for one of the strem pointer the instruction @+ 18:48:30 and for the other !+ 18:48:50 the table register would have +@ and +! 18:49:22 the behavior of @+ and !+ is to fetch or store waht is pointed by the register and then increment it 18:49:46 the behavior of +@ and + 18:49:51 the behavior of +@ and +! 18:50:19 are to fetch the content of TOS+valueofregister without changing the content of the register 18:51:33 and to store the second stack item at value of register+TOS 18:52:28 those 4 register would make faster than light compilation of aha source and execution of other tasks possible 18:53:45 i proposed them on the colorforth mailing list as I knoe jeff and chuck read it 18:56:04 I need new principles for the 32 bits VM I want to implement 18:59:25 i440r: ah cool, you already implemented it with ?: 19:00:17 ?: executes ONE of the following tokens 19:00:22 depending on the state of a flag 19:00:31 ?: true-word false-word 19:01:28 btw im about to release 1.07b 19:01:42 isforth now compiles about 900k ish of source per second 19:03:02 ? : is a javascript construct 19:03:17 i would rather use if 19:03:27 then other strange symbols ;p 19:04:27 its a c construct 19:04:38 but when i devised my ?: i wasnt thinking of the c version heh 19:04:42 it just turned out that way 19:07:00 i was doing alot of.... 19:07:00 --- quit: I440r (Remote closed the connection) 19:07:01 --- join: I440r (~mark4@1Cust96.tnt3.bloomington.in.da.uu.net) joined #forth 19:07:31 oopts :) 19:07:33 i was doing ALO of blah-test 0= 1 and exec: false-word true-word 19:07:37 so i devised a word to effect the same more efficiently 19:07:56 and called it ?: 19:19:33 --- join: CrowKilr (Vapo_Rulez@cnq5-233.cablevision.qc.ca) joined #forth 19:19:33 --- quit: CrowKiller (Read error: 104 (Connection reset by peer)) 19:19:39 re 19:19:43 [CrowKiller] i find its a much betetr way of expressing if statement 19:19:43 [CrowKiller] because it factor out the then 19:19:56 i wrote this and my connection broke up 19:23:50 lol so did mine! 19:24:00 i accidently removed the modem from the serial port :P 19:26:31 i actually have to unplug the wall wart from my cable modem to get my connection back 19:27:05 aha 19:27:20 some cable modems and dsl modems go kaphoie on you 19:27:35 you sometimes need to disconnect them from everything, let them sit there for 2 minutes 19:27:37 then reconnect 19:28:36 totally unreliable sometime 19:28:39 s 19:28:44 yes 19:36:47 i440r: show me an example usage of ?: inside a word please 19:37:24 ok hang on ill get a REAL example 19:37:46 : test isthistrue? ?: yestrue nottrue 19:37:49 : test isthistrue? ?: yestrue nottrue ; 19:38:02 ill make one up here.... watch 19:38:20 eh, thought you were gonna get a REAL example, and be a REAL man with CHEST hair :P 19:38:33 : blah ( f1 --- ) ?: f1-is-true f1-is-false blah blah ; 19:38:46 true blah will execute f1-is-true 19:38:51 false blah will execute f1-is-false 19:38:56 ok 19:39:02 its like an if/else 19:39:21 you should see my ugly mud code 19:39:29 but an if/else takes 8 tokens tocompile PLUS what ever is inside each if/else block 19:39:41 this takes ONE token plus one token per block :) 19:43:00 --- join: kc5tja (~kc5tja@stampede.org) joined #forth 19:44:28 kc5 just released 1.07b :) 19:44:50 she now compiles about 900k of source per second :) 19:45:38 Cool. Blows Pygmy Forth out of the water. :) What structure are you using for the dictionary? 19:46:14 * kc5tja is going to spend some time coding on FS/Forth for the rest of tonight. 19:46:31 u mean hashing method ? 19:46:43 Well, it is a data structure. 19:46:55 Are you using hashing for your dictionary? 19:46:58 the headers are L( 19:47:01 yes 19:47:03 i am 19:47:14 64 threads per vocab 19:48:18 the speed is due to hashing and one other innovation 19:48:29 that i said i would do 19:48:57 i point 'tib at a memory mapped source file 19:49:04 * kc5tja is just going to stick with a simple list for his vocabularies for the time being. I want to get the basic system running before I do anything to the vocabulary structure. 19:49:13 and set #tib to the file size 19:49:25 thats what i did... 19:49:34 Makes sense; a variable length block. :) 19:49:41 i didnt even have vocs to behin with 19:49:49 yes 19:50:11 I'll support vocabularies, but not in the way most people will think. 19:50:15 the entire source file is interpreted inside one VERY tight loop 19:51:14 There's a compiler and interpretter vocabulary by default, and the user can create any number more that he pleases. Default word lookups, however, work only in the interpretter vocabulary (if interpretting; if compiling, the compiler vocabulary is also searched, but only during compilation), though tools will exist to search for words in any arbitrary vocabulary. 19:51:15 kc5tja: are you subscribed to the colorforth mailing list? 19:51:23 CrowKilr: No. 19:51:24 the same interpret loop used in interactive mode :) 19:51:59 kc5 nice idea 19:53:05 aha implement this by doing a distinction betwen functions (and opcodes) and defined words 19:53:39 CrowKilr: Please explain? That sentence doesn't provide any useful information. 19:54:02 you talk about default lookup and different vocabularies 19:54:24 Yes... 19:54:55 e.g. my aha forth is using a function token for opcodes and other language statements and a token for user defined words 19:55:06 aha does this but splitting the thing in three 19:55:14 opcode, functions and words 19:55:20 That's essentially exactly what I'm doing. 19:55:31 i know it was just a quick note ;p 19:56:08 Only my method uses the same representation for "functions" (VERY poor name, by the way) and "defined words" (which immediate words are also). 19:57:08 but i asked you about the colorforth mailist because i posted soem thoughts i had while thinking about the best [CrowKiller] i find its a much betetr way of expressing if statement 19:57:08 i asked you about the colorforth mailing list because i posted some ideas and thought i had since i started to design the vm in the topic 19:57:37 one thing i thought about is if/thens 19:57:49 in your machineforth do you use them? in wich way? 19:58:40 IF ELSE and THEN are supported as per ANSI specifications. They just emit the required x86 machine code to implement their functionality. 19:59:05 I thought about If implemented in micros such as the AVR or PICs 19:59:13 like skip if the x flag is set 19:59:45 in forth the if should really be add the corresponding flag to the PC 19:59:58 so if only use if and no then or else they are implied 20:00:11 crow nec 75x has no psw - all if/else is done by doing.... if this reg = that reg skip the following instruction 20:00:31 like : myword blopblopblop if iftrueExecutethis elseexecutethatword 20:01:30 CrowKilr: I would use a word other than "if" for that; that is a horribly non-standard (and I'm not talking about ANSI here) interpretation of IF. It's more like Fortran's 3-way IF statement, and there isn't a single person in the world who likes that method. 20:01:32 and implementing jump tables is easy, just do a rdrop at the begining of the "called by if" word 20:02:41 and also i thought about machine forth and registers such as A and B in the new c18 paper chuck released in november 2001 20:03:20 and truly to me there should be 4 registers along with the T, S and R one: 2 stream pointers and 2 table pointers 20:03:59 the stream pointers would have the classical @ and ! word associated with them along with a @+ for one of them and a !+ for the other 20:04:11 each register have 3 instructions btw 20:04:14 In the uP21 compatible CPUs, T, S, and R are not programmer visible registers. 20:04:51 the two table pointers would use @, ! +@ for one and ! 20:04:58 and !+ for the other 20:05:06 er i meant +! 20:05:09 I think the MISC processors should have three address registers: two source registers and one destination register. This makes vector-like operations easy to implement. 20:05:26 that word woul add the T to the content of the register and perform a fetch or a store 20:05:59 without changing anything, or maybe doing a drop of the content of the stack 20:06:06 * kc5tja also prefers post-increment addressing and pre-decrement addressing modes. 20:06:14 yes 20:06:38 bit i think post dec and pre inc should exist too 20:06:50 post and pre in either direction 20:07:01 So if I were to make a MISC, I'd ahve three registers: A, B, and D (A and B are intended for source operands, and D for destination), and each register has a x! x@ !x+ @x+ !-x @-x 20:09:58 Also, I would implement rotate instructions instead of shift instructions. It's easy to rotate and mask to impersonate a shift operation. 20:10:20 It's somewhat more difficult to DUP, shift each twice in opposite directions, mask both, then OR, to emulate a rotation. 20:10:27 Rotation is *critical* for high performance 2D graphics. 20:10:27 i agree with that 20:11:29 It also frees up one opcode, since you don't need two shift right operations (a single rotate right will take its place; sign or zero extension for a shift can take place in software) 20:12:10 --- quit: Soap` (Read error: 104 (Connection reset by peer)) 20:14:55 ill definetly use rotates as part of my vm opcodes, but i like more 4 registers with 3 instruction each than 3 register with 6 ;o) 20:15:20 brb 20:16:58 crowkiller: sadly, most ppl here don't see much into colorforth or haven't taken the time :) (reading backlog) 20:17:38 using those 4 registers, an aha compiler would be under 50 words im sure lol 20:17:49 under 100 to be conservative 20:18:15 but it could be really small 20:18:24 and fast ;p 20:19:29 My register and opcode selection is optimized for data processing beyond the core compiler; it's optimized for graphics and real-time I/O management. 20:20:12 kc5tja: what do you think about the design & implementation of a 32 bit virtual forth machine ? 20:20:15 (as per the topic) 20:20:22 me too, input stream, output stream, lookup table, variable array 20:21:08 I have no idea. I wasn't paying attention, and have no real intention to intervene on the subject. 20:22:18 kc5tja: i'm asking about it out of the blue.. what do you think are the obstacles? do you have any problems with a forth virtual machine? 20:22:36 I'm not even understanding what you're talking about. 20:22:44 Virtual in what way? 20:22:50 the point 20:22:50 All Forths implement a virtual machine. 20:22:54 is to design 20:23:02 the best forth cocnepts to put into practide 20:23:05 paractise 20:23:11 practice 20:23:23 if we have a good virtual machine then putting it into hardware would yield great reults 20:23:26 practise (english) practice (american) :P 20:23:44 sorry for the bad typing its very dark in here 20:23:46 eh? or is "practise" context sensitive? 20:24:13 Practice is the "rationalized" version of the word; you don't write "practisal" after all, but you do write practical. 20:25:27 Anyway, I tried implementing a 32-bit variation of the Steamer16 in software, and it worked pretty well. It was naive, so it was pretty slow. But it did work. 20:25:36 but the cchoice in the topic of x86/arm/powerpc is for the 3 32 bits gaming consoles avaibles, xbox, gba and gamecube 20:25:50 However, even its naive solution was very large to emulate everything, especially interrupts. 20:26:09 did you read the paper about c18 variation with the b register? 20:26:19 * kc5tja never did get the interrupt facility to work correctly. 20:26:28 No, but I'm somewhat aware of it. 20:26:38 http://dec.bournemouth.ac.uk/forth/euro/ef01/moore01a.pdf 20:26:56 theres 4 5 bits instruction in any 18bits word 20:27:24 the 4th instruction must finish by 00 20:27:35 and the nop is obviously 11100 20:28:07 steamer was like that iirc, with jumps and arithmetic opcodes packed into larger words 20:28:54 Yes. 20:29:12 I really enjoy the Steamer architecture, but it is really practical only if you don't implement interrupts. 20:29:54 Of course, you could just have it service interrupts only when fetching the next instruction word, which means up to 4 (or in my case, 8) cycles could elapse before the CPU started its interrupt acknowledgement cycle. 20:30:26 --- quit: I440r (Excess Flood) 20:30:42 --- join: I440r (~mark4@1Cust96.tnt3.bloomington.in.da.uu.net) joined #forth 20:30:49 --- quit: I440r (Read error: 104 (Connection reset by peer)) 20:31:12 The latter approach is what I was doing, but the software implementation got **VERY** complicated by the introduction of interrupts. 20:31:19 This, of course, does not mean the hardware will be complex. 20:36:13 kc5tja: did you tried the realdigital CPLDs from Xilinx? 20:36:35 No, I do all my logic stuff with discrete component TTL logic. 20:36:57 I simply and utterly do not have the income to afford any CPLD or FPGA development tools or the parts for them. 20:37:07 they are a lot less power hungry because they dont use traditional sense-amp, and they go up to 300mhz 20:37:11 me neither 20:37:25 but i dont have a pcb lab 20:37:35 Neither do I. 20:37:50 However, you *MUST* have a PCB to use CPLDs or FPGAs -- they have way too many pins not to. 20:38:13 yeah and smt is so small you need flux and all those pastes and stuff 20:38:16 Building a PCB "lab" is also not terribly difficult, if you're willing to babysit the PCBs while they're etching. 20:38:24 You need those anyway. 20:39:12 for discrete logic, wich chips do you use? I can order things from digikey and they have a lot of TI parts 20:39:46 I'm not so concerned with specific manufacturers as I am the technology. I typically use 74ALSxx(x) parts for my work. 20:40:34 do you use caps near every chip or only one big decoupling cap? 20:40:52 Caps near every other chip (a cap per chip is ideal, but expensive). 20:41:00 One big cap simply will not do. 20:43:21 Damn, I wish I had my Genesis ABACAB MP3s... :( 20:43:30 * kc5tja is really in the mood for those right now. 20:43:38 after seeing this youll want to have a gba: http://www.charmedlabs.com/ 20:44:55 Not really. :) 20:45:36 it was a joke, but i think the devkit is nice ven if you dont own a gba 20:50:09 hard to build a pcb for thise parts 20:50:29 those* 20:50:38 --- join: I440r (~mark4@1Cust96.tnt3.bloomington.in.da.uu.net) joined #forth 20:50:49 It just takes patience. It can be done. 20:54:23 anyway i'm going to bed, I hope chuck and jeff will read my post on the colorforth mailing list and reply me with their thoughts about it 20:54:30 good night everyone 20:54:37 Night. :) 20:55:22 good night crow 20:55:31 --- quit: CrowKilr ("Forthhh all the way ;p") 21:30:46 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 21:31:07 hi soap 21:31:43 'ello 21:40:39 Hmm... I've identified 12 major sections to FS/Forth. 21:41:09 Character input, character output, string input, string output, string to number, number to string, block cache manager, block input, block output, interpretter, compiler, and Forth primitives. 21:42:00 string i/o can be a superset of character i/o 21:42:05 no need to list seperatly 21:42:15 I list it separately because it won't fit on a screen. 21:42:56 It's also sometimes more efficient to treat string data in bulk instead of character-by-character. 21:43:02 (depends on output device of course) 21:44:34 yes. my original type used syswrite on the whole string 21:44:45 but theres advantages to using emit for each character of a string 21:44:50 so i changed it 21:45:05 I'm not arguing that. 21:45:12 But the split is a real split. 21:46:11 ok 21:46:41 deep in the inner bowels of the computer, when we want to display a string, we have a magicall command instead of lamely emitting each char individually.. or do we? 21:46:42 Basically I'm breaking the architecture of FS/Forth into convenient screen-sets. 21:46:55 ." blah" 21:47:06 kc5 thats what i did with isforth 21:47:35 futhin: Yes and no. String output in text-mode consoles is often done with the REP MOVSB instruction to blast a whole chuck of characters to the frame buffer at once. 21:47:43 (actually REP MOVSW) 22:08:59 --- quit: Soap` () 22:26:25 Man, that Pat Lafarre guy on comp.lang.forth sure likes to push a lot of buttons. :) 22:26:34 Oh well. 22:43:43 look out...Microsoft Nuclear Stockpile Management Server 1.0 released 22:44:29 Hehe :) 22:44:44 :) 22:45:16 * kc5tja is glad he took the time to think about how to order the screens in his FS/Forth sources... 22:45:22 Things are coming in nice and modular. 22:48:33 --- quit: futhin ("sleep") 22:49:17 Now I need to define DEFER, ', and IS in the target compiler... 22:49:25 Oh, and CONSTANT. 22:49:38 will you do constant as a does> word ? 22:49:45 or use ;uses doconstant 22:49:46 ? 22:49:50 No. 22:49:56 : constant create , ;uses doconstant ; 22:49:59 ? 22:50:06 32 CONSTANT BL is exactly equivalent to : BL 32 ; in my Forth. 22:50:17 aha 22:50:40 so it compiles a colon definition with nothing but a (lit) XXX in it 22:50:42 hmm 22:50:53 Yes; because it's a native code compiler, it can get away with this. 22:50:54 was it easier to do it that way ? 22:51:00 cool :) 22:51:05 of corse 22:51:08 (lit) xxx 22:51:08 Yes. The end result is actually the same. :) 22:51:12 will probably equate to 22:51:17 mov som-reg, xxx 22:51:41 The generated code for a literal is this: 22:51:50 SUB BP,2 22:51:54 MOV [BP],BX 22:51:57 MOV BX, nnnn 22:52:05 (use EBP and EBX for 32-bit version) 22:52:27 bp is the parameter stack pointer ? 22:52:32 Yes 22:52:34 ok 22:52:45 what assembler assembles this ? 22:52:49 None 22:52:53 oh 22:53:02 I use a Machine Forth-like code generator. 22:53:12 sub bp, 2 would be better as a sub bp, BYTE 2 22:53:19 or isnt that legal in 16 bit 22:53:34 Does it really save any space? 22:53:36 The above code is equivalent to the following MachineForth: D-, T->S, #, 22:53:55 rob_ert: in 32-bit mode, sub bp, BYTE 2 saves 3 bytes of space. 22:54:03 I meant in 32-bit mode. 22:54:04 er 22:54:06 16 22:54:07 yes heh 22:54:37 Actually, two bytes. 22:54:42 * kc5tja forgot about the SIB byte. 23:26:46 Ahhh...the sweet taste of success. I love Forth. :D 23:30:44 heh 23:41:20 I just need to implement string input words now, and I'll be all set. 23:41:42 Right now, KEY always returns $0D, and FSForth$InterpretLine just returns to DOS. 23:42:05 I suspect the finished interpretter will consume around 2KB of memory, including word headers. 23:50:53 heh 23:59:59 --- log: ended forth/02.06.02