00:00:00 --- log: started retro/06.07.26 01:29:36 crc: it is completely possible to code everything in forth. 01:30:31 After all, intel's instruction format is not completely bad. 01:31:26 We could construct an instruction encoder which does all the ugly job for us, then write the assembler on top of that, therefore providing an assembler with very strong macro system. 01:32:17 After that we could code the kernel to the part that we actually get a forth interpreter to run in the target platform. 01:32:44 make sense? 01:33:34 this way, even the kernel we built could operate on it's own, never needing assembly to support. 01:53:28 --- part: Cheery left #retro 02:41:44 --- join: cheery (n=Cheery@a81-197-20-242.elisa-laajakaista.fi) joined #retro 03:04:23 --- quit: ChanServ (Shutting Down) 03:11:23 --- join: ChanServ (ChanServ@services.) joined #retro 03:11:23 --- mode: irc.freenode.net set +o ChanServ 05:46:14 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #retro 06:00:59 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #retro 06:05:16 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #retro 07:48:21 --- quit: tathi ("leaving") 08:18:19 cheery: that is essentially metacompiling 08:18:28 * crc will explore that at some point 08:39:56 --- quit: Shain (Remote closed the connection) 08:43:22 --- join: Shain (i=steve@c-67-161-56-76.hsd1.ca.comcast.net) joined #retro 09:01:19 --- join: timlarson__ (n=timlarso@65.116.199.19) joined #retro 09:19:30 --- quit: timlarson_ (Read error: 113 (No route to host)) 09:29:40 http://yorickhaan.sp.nl/images/friends_ms.jpg 12:10:24 --- join: Raystm2_ (n=Raystm2@adsl-69-149-33-39.dsl.rcsntx.swbell.net) joined #retro 12:10:27 --- mode: ChanServ set +o Raystm2_ 12:21:26 --- quit: Raystm2_ (Read error: 104 (Connection reset by peer)) 12:21:34 --- join: Raystm2_ (n=Raystm2@adsl-69-149-33-39.dsl.rcsntx.swbell.net) joined #retro 12:21:34 --- mode: ChanServ set +o Raystm2_ 12:23:46 --- quit: Raystm2 (Read error: 110 (Connection timed out)) 12:28:14 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-92.dsl.rcsntx.swbell.net) joined #retro 12:32:31 --- quit: Raystm2_ (Read error: 145 (Connection timed out)) 13:05:28 --- join: Raystm2_ (n=Raystm2@adsl-69-149-39-226.dsl.rcsntx.swbell.net) joined #retro 13:05:28 --- mode: ChanServ set +o Raystm2_ 13:11:33 --- join: Raystm2- (n=Raystm2@adsl-69-149-39-226.dsl.rcsntx.swbell.net) joined #retro 13:12:23 --- quit: Raystm2_ (Read error: 104 (Connection reset by peer)) 13:16:00 --- join: nighty_ (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #retro 13:16:10 --- quit: Raystm2- (Read error: 104 (Connection reset by peer)) 13:18:53 --- join: Raystm2_ (n=Raystm2@adsl-69-149-39-226.dsl.rcsntx.swbell.net) joined #retro 13:18:54 --- mode: ChanServ set +o Raystm2_ 13:21:28 --- quit: Raystm2 (Read error: 110 (Connection timed out)) 13:22:34 --- quit: Raystm2_ (Read error: 104 (Connection reset by peer)) 13:25:41 --- join: Raystm2 (n=Raystm2@adsl-68-93-112-1.dsl.rcsntx.swbell.net) joined #retro 13:28:32 --- quit: Raystm2 (Client Quit) 13:29:20 --- join: Raystm2 (n=Raystm2@adsl-68-93-112-1.dsl.rcsntx.swbell.net) joined #retro 13:29:45 --- quit: timlarson__ ("Leaving") 13:49:07 variable ln :: @ln (line) swap copy ~eval 5 + execute @ln 1 ln +! ; is eval 13:49:28 command logger 13:54:17 darn, new editor breaks bdump 13:55:29 http://retroforth.net/paste/?id=66 nicer formatted version 14:12:19 hi docl 14:12:58 docl, do you think this C name: pix_interpreter_inner is too long? 14:13:10 is it logical? 14:43:52 seems logical. what's pix stand for? 14:44:55 pix = portable implementation of xell 14:48:50 hmm too long for a forth word :) 14:49:04 I'm not a c coder really. I read it, but that's about it. 14:50:46 that's a c name not a forth name 14:54:55 as long as you don't have to type it a lot, it's fine. really a matter of personal style I guess. 14:57:46 important things like pushing something on stack is short: pix_push for example 15:04:32 --- quit: Ray_work ("Client exited") 15:04:45 good evening 15:05:07 docl: did you fix bdump, or should I work on it? 15:07:23 hi crc 15:07:32 no I haven't looked into fixing it yet 15:07:37 ok 15:07:43 * crc will do it in a moment 15:08:11 question: should it dump both the code and shadow blocks when we do "1 bdump" or just the code block? 15:10:08 hmm. not sure 15:10:17 maybe we should change to lines instead of blocks 15:10:49 ok 15:14:27 not sure I like n and p going in increments of 2. 15:14:47 I am going to make that adjustable 15:16:09 I did it with increments of 2 for the shadow blocks to keep in sync 15:18:40 do you have any problem with bdump dumping the lines in a countdown (highest line first) fashion? 15:19:52 not as readable in a text editor that way 15:20:01 ok 15:24:59 bdump? 15:25:45 exports a block file in a format that can be edited in a text editor, then reimported to a blockfile 15:29:21 --- quit: cheery ("Download Gaim: http://gaim.sourceforge.net/") 15:30:50 ah cool 15:37:21 docl: having it dump entire blocks is the cleanest way to proceed 15:39:22 several patches are in the repo 15:39:25 I guess that overwrites empty lines 15:40:05 docl: with the repo version, try "shadow off" to disable the shadow block feature 15:40:44 cool 15:41:23 I also added --> which is the same as the "n e" phrase used to chain blocks together 15:41:27 off/on is neat 15:42:30 29 15 ia --> is a handy phrase when you need to chain blocks together 15:42:55 I also added in macro: forth: self: and class: 15:43:52 cool. this works together with shadow, I see. 15:44:14 how about vector:? 15:44:33 (I know it's not a class word, but resembles one sort of) 15:47:05 done 15:48:52 the basic difference between a vector and a normal word is it can be devectored safely :) 15:49:14 yeah 15:51:17 you see the eval logger snippet I posted earlier? 15:51:59 yes 15:52:13 * crc may add a word to allow access to the default definition in a vector 15:53:20 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #retro 15:54:37 so instead of ~eval 5 + execute it'd be d: eval or some such 15:54:57 I can do that 15:55:30 --- join: Raystm2_ (n=Raystm2@adsl-68-93-114-220.dsl.rcsntx.swbell.net) joined #retro 15:55:30 --- mode: ChanServ set +o Raystm2_ 15:55:47 hi Raystm2_, hi tathi 15:56:26 hey docl 15:57:12 docl: grab the latest two patches 15:57:13 how's it going tathi? 15:57:16 this adds the d: 15:59:57 --- quit: Raystm2 (Read error: 145 (Connection timed out)) 16:01:02 much better :) 16:01:04 http://retroforth.net/paste/?id=67 16:02:47 docl: put that into the contrib section of the site 16:02:56 ok 16:03:07 * crc will prepare 9.2.2 for release 16:05:41 hmm, I'm getting write permission denied in contrib/files 16:06:39 --- join: Raystm2 (n=Raystm2@adsl-69-149-58-206.dsl.rcsntx.swbell.net) joined #retro 16:06:45 try again 16:07:19 got it :) 16:07:23 good 16:07:38 * crc forgot to set the group write permission on that directory, sorry ;( 16:07:59 is logger.f a good name? 16:08:03 yes 16:10:05 * docl will have lots more stuff to add in the future 16:11:45 good 16:12:08 * crc will eventually try to organize the his library and the public library, and then setup a repo for it 16:16:09 9.2.2 is out 16:17:57 --- join: Raystm2- (n=Raystm2@adsl-68-93-114-23.dsl.rcsntx.swbell.net) joined #retro 16:22:05 --- quit: Raystm2_ (Read error: 110 (Connection timed out)) 16:29:08 --- quit: Raystm2 (Read error: 110 (Connection timed out)) 16:31:58 * docl thinks about the logistics of making a forth-based assembler 16:32:19 we have one, but it's not easy to follow 16:32:23 you could assign each opcode to a constant 16:32:24 &351 constant jmp 16:32:39 don't forget that it's not just numbers, but also encoding 16:33:24 http://tom.bespin.org/src/opcodes.html and http://tom.bespin.org/src/opcodes.txt 16:35:27 cool 16:35:44 just remember to use octal, and most of the encodings are easy 16:36:06 until you reach the sib byte.... (that is a messy area of x86 machine language encoding....) 16:39:45 interesting stuff. 16:42:51 encoding is how you refer to the registers? 16:43:38 encoding is the setting of certain bits in an opcode to "encode" the use of registers or memory addressing 16:45:05 opcode = instruction + encoding? 16:45:18 yes 16:45:51 ah, making more sense now 16:45:53 the opcode may also be followed by operands, like in a jump which has an opcode of $e9 and an operand of the relative number of bytes to jump 16:46:28 it's pretty straightforward until you reach the 586 and beyond instruction sets 16:48:43 &351000 = jump zero bytes 16:49:59 the operand for jump is 4 bytes long 16:50:18 there is a shorter form as well though 16:52:03 4 bytes, chuck M. would scream like a baby... :-D 16:52:44 it's necessary to allow for full flexibility in jumping anywhere in memory 16:53:16 4 bytes = 32-bit signed integer = ~ 4gb address space 16:53:58 well, it can't be 4 bytes, it must be longer 16:54:07 why not? 16:56:23 because to get a 32 bit adress space, you also need some bits for identifying the opcode 16:56:38 that's the opcode 16:56:47 &351 = 1 byte 16:56:53 4 bytes = the operand 16:56:56 as I said 16:57:10 ? 16:57:12 total of 5 bytes: &351xxxxxxxxxxxx 16:57:17 yes 16:57:45 the instruction isn't counted as part of the operand 16:58:02 but it is part of the opcode 16:59:37 well, it depends other cpus like most microcontrollers see that as a part of the opcode 17:00:28 x86 isn't like other processors... it's a risc core with a cisc instruction set :) 17:01:07 so, with all the instructions as constants you'd only have to worry about encodings with the operands that you feed into them. 17:01:19 crc, that only fits on the new ones... 17:01:26 true 17:01:39 but the core 386 instruction set isn't all that complex either 17:15:55 --- quit: Raystm2- (Read error: 104 (Connection reset by peer)) 17:19:00 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 18:20:42 --- quit: Raystm2 ("Raystm2 has decided to ignore the entire internet, so sorry you had to he there.") 18:21:26 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 18:24:52 --- quit: Raystm2 (Client Quit) 18:26:29 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 18:26:48 --- quit: Raystm2 (Remote closed the connection) 18:30:17 --- quit: nighty_ ("Disappears in a puff of smoke") 18:43:02 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 19:37:48 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-132-107.pools.arcor-ip.net) joined #retro 19:43:49 --- quit: snoopy_1711 () 19:46:04 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 19:54:51 --- join: Snoopy42 (i=snoopy_1@dslb-084-058-132-012.pools.arcor-ip.net) joined #retro 20:54:28 --- quit: Raystm2 ("Raystm2 has decided to ignore the entire internet, so sorry you had to he there.") 22:01:00 '+ case: name literal? [[ c: tuck @ + swap ! ]] [[ tuck @ + swap ! ]] choose true break 22:01:28 now you can do @baz +foo 22:02:49 ok I'm not sure how c: works so this probably breaks inside a define 22:10:14 http://retroforth.net/paste/?id=68 + and - works in definitions. 22:12:13 --- join: Raystm2 (n=NanAndRa@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 22:13:56 hi Raystm2 22:15:14 hi docl brb, configuring my messed up chat client. 22:15:19 --- quit: Raystm2 (Client Quit) 22:15:58 --- join: Raystm2 (n=NanAndRa@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 22:18:18 http://retroforth.net/paste/?id=69 * and / prefixes added 22:18:28 one last... 22:18:32 --- quit: Raystm2 (Client Quit) 22:23:37 --- join: Raystm2 (n=NanRay@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 22:23:45 ya back? 22:24:37 --- mode: ChanServ set +o Raystm2 22:24:50 I don't seem to be... wait there I am. 22:25:41 some how, earlier today, I dismissed a part of the chat gui that wasn't supposed to disappear. 22:26:16 I was left with less then optimal buttonage, to mess with my client, so I had to download another and reconfigure everything. 22:26:46 the stupid thing won't save window sizes and a positions till you shut it down. 22:26:54 did you see my latest paste? 22:27:07 number ple--azzz 22:27:12 it lets you use * / - + as prefixes 22:27:13 http://retroforth.net/paste/?id=69 22:27:44 oh like ~ and ! and @ ? 22:27:48 yup :) 22:27:54 thats cool. :) 22:28:04 forth -- the language that you can prefix. 22:28:19 prefix and later. some great stuff there. 22:28:26 I'm not sure, but seems like you could get away with never having more than one element on the stack at a time 22:28:46 instead of foo @ 1 + foo ! it's 1 foo+ 22:28:57 er +foo 22:28:57 and then you wouldn't have to worry to much about data types... 22:29:09 seems like it 22:33:18 okay, now I can sit down and take in your paste :) 22:34:22 isn't the (case) variable already available in that loc: or is there another reason for defining it that I should be aware of. 22:34:23 ? 22:38:45 I just copied it out, I don't know if you need all the code or not 22:38:55 I see, okay. 22:39:02 just trying to learn the finer points :) 22:39:26 those math symbols. Practically becomes infix, no? 22:39:28 I only made the + - * / parts, which are mostly just copies of @ 22:39:32 yeah 22:39:34 ya 22:40:00 it's very cool. 22:40:10 start of a smart parser/compiler. 22:40:17 right 22:41:11 there suddenly exists an uncoded shortcut language. 22:41:45 shortcut language? 22:42:12 I don't think i'm giving the thought justice, trying to describe it. 22:42:20 prefixes galore? :) 22:42:23 :) 22:42:32 plus lots of other fun stuff of course 22:42:37 PreTroForth 22:43:09 you could built a quick type language using prefixes 22:43:32 you could have a parsing prefix. that lets you do postfix, delimeters, etc. 22:44:01 be cool if + was found prefixed to a string it concatenated to the previous string, but if literal it added to TOS, NOS 22:45:02 Python calls that overloading the ... 22:45:25 object? no dang it what is it... 22:45:33 the operator. 22:45:54 overloading the operator. 22:46:42 the parser would have to take in for account what was the next thing after the prefix. 22:48:47 well /me thinks about it and the concatenater would prob'ly be a word named +." 22:49:03 hmm. you could define +" to mean something else. it would add the tos to pad and redefine that as the temporary new pad. 22:49:25 ya that's the idea. 22:49:51 " hello " +" there" 22:49:58 Ya 22:50:57 but really, doesn't " hello" " there" do that already? 22:53:07 no, it makes two of "there" 22:59:52 : +" dup allot x: " rot dup negate allot -rot ; 23:00:27 couldn't get the revectoring pad idea to work, but changing pad with allot works fine :) 23:02:08 actually that solution isn't good enough because it only allows two strings 23:04:34 here we go 23:04:34 : +" dup allot x: " nip over negate allot + ; 23:05:15 that actually concatenates them right away, so the higher number is available for the next allot 23:05:28 goodnight 23:07:28 --- join: Raystm2- (n=NanRay@adsl-69-149-43-16.dsl.rcsntx.swbell.net) joined #retro 23:07:31 --- quit: Raystm2 (Read error: 104 (Connection reset by peer)) 23:09:08 --- join: Cheery (n=Cheery@a81-197-20-242.elisa-laajakaista.fi) joined #retro 23:59:59 --- log: ended retro/06.07.26