00:00:00 --- log: started forth/05.01.29 00:06:31 hmmmmmm, that is sad. 00:06:41 weird about the mat. 00:06:42 math 00:06:45 fixed already 00:06:52 what was the problem, was it a string? 00:07:03 and had to do var.value or something 00:07:03 it was indeed 00:07:15 parseInt worked 00:24:53 --- quit: skylan (Remote closed the connection) 00:24:56 --- join: skylan (~sjh@dialup-216-211-5-121.tbaytel.net) joined #forth 01:03:36 alternative implementations of words (for different standards) are simpler than i thought. in fact, no extra work 01:04:14 just redefinitions, each one masking only the standard they correspond with 01:14:36 also a great way to hide header internal words (as far i made them headerless which is not nice for decompiling) 01:18:31 re 01:40:38 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 01:48:15 --- join: arke_ (f2@bespin.org) joined #forth 01:56:48 --- quit: arke (Read error: 60 (Operation timed out)) 02:05:07 looks like it works allright. i tick tick, and get its cfa, than i say "f79", tick tick again and gets its body address. 02:07:42 --- nick: arke_ -> arke 03:12:15 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 03:20:25 --- join: Narrenschiff (~ritchie@itsnotthatbig.plus.com) joined #forth 03:23:25 decisions, decisions 03:23:55 wheeee 03:23:58 trojan moo 03:23:59 yay 03:24:03 i love windows 03:24:06 what to do in the system-default exception handler, if user does a 'throw' outside of a 'catch', in an environment where tty is not available 03:24:07 grrr 03:24:18 abort 03:24:22 :) 03:24:25 top level error handler 03:24:39 like, saying "error " 03:24:49 got no output 03:25:29 or print out the error message, corresponding to throw value, if one exists 03:25:31 or, no guarantee of a char output 03:25:38 nothing to print out on 03:25:51 i could flash LEDs with the throw code 03:25:55 beep speaker 03:26:05 no speaker 03:26:42 :) 03:26:55 send an email 03:27:22 haha 03:27:25 no internet either 03:27:31 platform is a PIC microcontroller 03:27:43 :) 03:27:55 ... 03:28:00 i could flash out the throw code in morse 03:28:05 wow, this m00.exe thing sure likes to fuck with me 03:28:18 wtf is m00.exe? 03:28:34 bcd 03:28:41 windows trojan, caused by windows vulnerability 03:29:12 nice 03:29:26 yep 03:29:28 I'm happy. 03:29:32 AVG didnt find it 03:29:35 :) 03:32:06 might be becasue the virus database is over 2 months old ^_^ 03:36:47 --- quit: ycchang (Remote closed the connection) 03:47:12 --- quit: aum () 04:13:02 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 04:23:17 quick poll - 'throw' and 'catch' in forth - lame or 1337? 04:44:06 useful 04:47:07 personally, i love it 04:47:23 but there are those in the forth community who sneer at exception handling 04:48:01 and there are those who sneer at locals too 04:48:07 and oo 05:05:01 what's wrong with exception handling? 05:05:25 i think it's good 05:05:37 just implemented it in my forth 05:05:38 i mean, why do some people not like it? (i don't really have enough experience with it to know pros/cons/fetishes) 05:06:39 there's a whole spectrum of attitudes in the forth community 05:07:06 i'm on the liberal end - in favour of oo, locals, exceptions, deep stack access etc 05:07:31 on the conservative end, there are those who believe programs should be refactored to eliminate all need for such things 05:08:32 * crc tends to be on the conservative side :) 05:09:09 maybe i'm just lazy, but i enjoy being able to understand my own code after not touching it for 6 months 05:09:40 I still understand code I wrote over 4 years ago 05:12:46 * saon is more conservative even though he can't really write proper forth 05:13:14 i'm learning rpl for my hp calc now anyways 05:22:21 --- quit: aum (Read error: 111 (Connection refused)) 05:41:52 ooh, hp calc! 05:42:12 I tried to buy some russian RPN calculator a while back... 06:06:08 * crc posts gForth and isForth versions of his RetroEditor to the forthfreak wiki 06:06:56 where's that wiki? 06:07:04 http://www.forthfreak.net/wiki 06:07:10 cheers, ears. 06:07:20 ? 06:07:27 thanks. 06:07:33 ahh 06:07:38 no problem :) 06:08:49 the start page has been redone a bit. http://forthfreak.net would do 06:09:43 cool 06:12:43 the only difference i see between the 3 versions is one cmove instead of move 06:13:12 There's not a lot of differences :) 06:13:25 for/next don't seem to exist in isForth 06:13:43 And I had to use "0 stream" rather than "10 parse" in JSForth 06:13:46 oh right, missed that one 06:13:57 not anymore 06:14:02 Oh? 06:14:06 has parse now 06:14:08 I can use 10 parse now? 06:14:24 which way is faster? 06:14:31 identical 06:14:38 parse = stream 06:14:53 cool 06:15:11 So I could do "0 parse" or "0 stream" then 06:15:23 http://www.forthfreak.net/wiki/index.cgi?ForthCoreWords 06:15:29 here is what it has got 06:16:05 the jsf version uses parse already ... 06:16:24 gf and jsf are identical as far i can see 06:18:53 (at least if you leave jsf on "0 compliance !") 06:19:48 ok 06:19:59 crc, i haven't looked at retroforth native recently, does it boot from a single sector yet? 06:20:10 from a single sector? 06:20:22 erm, track 06:20:40 No. I'm still having trouble dealing with int 13h :( 06:21:03 It's a bit more compatible now (doesn't cross track boundaries), but it's still doing multisector reads 06:22:05 bluddy #$%# 06:23:21 hrmm, i'll get the latest to test and see 06:23:29 (i just notice that JS support pushing and popping to/from arrays - all my stack pointer handling for using arrays as stacks are needless) 06:26:38 hehe 06:26:52 * crc dislikes javascript 06:29:17 --- quit: onetom ("leaving") 06:33:03 you got to mill with the stones you got 06:33:21 :) 06:38:20 what was it you didn't have in jsf for the full editor ? 06:38:32 a) colors 06:38:43 b) positioning of text 06:39:23 colors may be a problem 06:39:31 i doubt i can get them in a form 06:39:37 Me too 06:39:53 positioning should be possible 06:39:54 It works without colors, but colors make it easier to keep track of things 06:39:57 really? 06:40:09 --- quit: Purdu3 (Remote closed the connection) 06:40:42 whole "screen" is buffered 06:41:03 is just the question of inserting output at the right spot 06:41:34 I just need to be able to put the view code in the top left corner of the screen 06:41:43 And clear the input line below that 06:42:25 And ideally load it from an external source ;) 06:42:45 Typing each line in to test it is bothersome 06:42:51 indeed 06:43:44 the "lines" in screen buffer are now space padded to line length 06:44:24 positioning calculation should be easy with this 06:44:51 (but the code still got glitches which i need to work out first) 06:45:57 upon screen update (event suspend, cr), whole screen buffer gets written to form 06:48:02 cool 06:49:37 btw, key? works 06:49:50 I don't use key? 06:50:03 It doesn't even exist in retroforth 06:53:23 key event handler underwent major changes 06:53:31 (3 lines of code now) 06:54:54 while working on all js-enabled browsers :) 06:56:20 this sounds interesting! 06:57:30 was about 30...40 lines in the prev. version 07:00:33 --- join: madgarden (~madgarden@Ottawa-HSE-ppp4082712.sympatico.ca) joined #forth 07:55:08 --- quit: Narrenschiff ("Leaving") 08:09:17 ill rename "debugging section" to "flaw control", for better symmetry with "flow control" 08:24:06 :) 08:37:32 --- join: snowrichard (~richard@adsl-69-155-177-153.dsl.lgvwtx.swbell.net) joined #forth 08:39:44 my system partially crashed yesterday. I upgraded to mandrake10.1 08:44:01 Hi snowrichard 08:44:02 :( 08:44:14 * crc runs Ubuntu on this box 08:44:53 I still have the data in my orginal hard drive but apache was acting up 08:45:52 hmm 08:46:06 I'd like to get a web server running on this box, but not Apache 08:46:22 a forth web server? 08:46:34 Only if it runs in RetroForth ;) 08:48:11 I could probably write one, but I'm willing to use any small one that runs well 08:48:29 I ran some program that said it was a cross-assembler and it say you must be suid root and the the screen went blank. After that the web server had problems 08:48:41 i've been running boa on the local box, which is pretty compact 08:48:42 hmm 08:48:52 sounds fishy to me 08:49:01 apache would be overkill on this machine 08:49:01 zol1: what language is boa written in? 08:49:23 not sure. not in forth though 08:49:56 twisted python has httpd server and ircd server and some others in it. 08:50:15 I don't have python, or enough free space to install it. 08:51:10 could be python 08:52:34 http://www.boa.org 08:53:17 C it is 08:54:22 It needs yacc and autoconf, neither of which I have 08:56:51 --- quit: snowrichard ("Leaving") 09:23:28 * crc goes to get a haircut, bbs 09:40:41 haircut?! 09:59:45 --- part: slava left #forth 10:01:30 --- quit: Raystm2 ("User pushed the X - because it's Xtra, baby") 10:28:40 --- join: tathi (~josh@pcp01375108pcs.milfrd01.pa.comcast.net) joined #forth 11:26:04 --- join: Topaz (~top@cerberus.saywell.net) joined #forth 11:32:48 --- join: Sonarman (~snofs@adsl-64-169-94-31.dsl.snfc21.pacbell.net) joined #forth 11:38:34 Aah, fuck you virus! I got you by your balls now bitch!!! :) 11:46:17 Hi all 11:47:24 saon: I get a haircut every 3-4 weeks 11:49:22 hmm, i last had a haircut... two years ago :D 11:49:33 :) 11:54:44 :) 11:54:52 I get a hair cut every few months 11:58:41 My hair is very thick & looks dirty when it starts getting long 11:59:20 * crc returns to work on retroforth 8.0 now 12:06:19 --- join: Raystm2 (~Ray@adsl-69-149-63-57.dsl.rcsntx.swbell.net) joined #forth 13:02:57 --- quit: crc (tolkien.freenode.net irc.freenode.net) 13:09:22 --- join: crc (~crc@pool-70-20-194-120.phil.east.verizon.net) joined #forth 13:09:22 --- mode: ChanServ set +o crc 14:08:10 --- quit: qFox ("this quit is sponsored by somebody!") 14:56:24 --- quit: manuel_ ("ircII EPIC4-2.0 -- Are we there yet?") 16:14:49 --- quit: Topaz (Read error: 60 (Operation timed out)) 16:22:29 --- join: Topaz (~top@cerberus.saywell.net) joined #forth 16:26:09 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 16:26:21 hi all 16:26:29 hi aum 16:26:52 quick poll:... 16:27:07 "My preferred multitasking model is:" 16:27:16 1) tasks are lame, don't use them 16:27:27 2) round-robin, tasks voluntarily relinquish cpu 16:27:41 3) tasks-as-event-handlers, finish quickly 16:27:53 4) pre-emptive task-switching at VM level 16:28:06 (end of options) 16:28:14 2 16:28:35 With optional compiler support for forced yields during loops :) 16:29:02 and with implied yield during potentially blocking calls, like 'key'? 16:29:06 2, with forced pause 16:29:10 :) 16:29:40 I've been playing with some early cooperative multitasking in retroforth 16:30:26 All tasks share the same heap, dictionary, and stack 16:32:45 I should do a per-task data stack though 16:34:02 i was thinking of separate data/return stacks for all tasks 16:34:26 task control block - (i) inst ptr, (ii) ret stk ptr, (iii) dat stk ptr 16:34:29 that would work too 16:34:57 I seldom touch the return stack in my words, so it's not a big issue for me 16:35:25 fwict, problem with shared return stack is that all tasks except one can only safely yield inside topmost word 16:36:24 My topmost word contains a loop; I only yield in that word, not the lower words 16:37:39 * aum is tempted to go for pre-emptive, but doesn't like the performance cost 16:38:17 : a. 'a emit yield a. ; : b. 'b emit yield b. ; ' a. add-task ' b. add-task run-task 16:38:26 Would display abababab..... forever :) 16:38:49 is "'a emit" same as "[char] a emit" ? 16:38:59 Yes 16:39:05 k 16:39:12 RetroForth supports prefixes for various bases :) 16:39:53 how do you specify space in rf? 16:40:00 apart from $20 ? 16:40:10 : space $20 emit ; space 16:40:11 :) 16:40:40 i mean, space as a constant, not the imperative to emit a space 16:40:41 : space 32 emit ; 16:40:54 32 16:41:00 heh 16:41:04 Or you could do: 16:41:04 k 16:41:08 32 constant bl 16:41:13 Or even : bl 32 ; 16:41:21 --- quit: Topaz (Remote closed the connection) 16:41:53 (both constant and the : definitions end up compiling to the same code) 16:42:37 one pre-emptive scheme - each task having a 'priority', where higher values give more cpu - each time a task gets switched in, the priority is copied, and decremented once each time a bytecode is executed, when count reaches zero, do switch 16:42:58 hmm 16:43:24 preemptive seems a bit of a waste in an embedded system 16:43:48 i can afford to waste - my bytecodes are way compact 16:44:37 heh, I'm running on a 600MHz Celeron w/256MB RAM, and I strive to avoid waste even on this hardware 16:44:43 heres an idea 16:44:48 ret = jmp pause 16:45:00 hmm 16:45:10 That wouldn't work on many of my words 16:45:17 whereas yield-based is easier for I/O - eg, : key begin key? if tty_getc exit else yield then again ; 16:45:35 Tail call elimination kills most of the ret's :) 16:46:12 crc: thx for reminding me - i /so/ gotta implement tail call opto in pic18forth 16:46:20 : key begin key? if tty_getch exit then yield again ; 16:46:24 Wouldn't that work? 16:46:37 nicer - yes 16:46:46 * crc doesn't even have "else" in retroforth 16:47:10 wow, that's extreme fundamentalism :P 16:47:21 I've never missed it 16:47:43 Actually, if that was RetroForth, the code would look a little different :) 16:48:03 : key key? ?if tty_getch ;; then yield key ; 16:50:24 wtf is ';;'? 16:50:35 Basically the same as "exit" 16:50:53 oh, ok 16:51:12 and '?if'? 16:51:20 checks the carry flag 16:51:33 I have =if >if if and ?if as the conditionals 16:51:48 And 0; 16:51:54 0; ? 16:52:17 Exit the word if TOS=0, dropping TOS on exit. If TOS <> 0, do nothing 16:55:09 sweet 16:55:31 is rf just x86 at present? 16:55:35 Yes 16:55:46 planning ports? 16:55:46 Though PPC and ARM support is planned 16:55:59 ah yes, we talked about ARM before, iirc 16:56:14 Yup 16:56:38 ARM seems like a nice CPU arch. 16:58:37 sweet piece of silicon, for sure 16:58:57 * aum wishes ARM Thumb chips were available in DIL packages 16:59:15 breadboard heaven :] 17:00:11 :) 17:00:11 --- join: TheBlueWizard (TheBlueWiz@63.250.24.230) joined #forth 17:00:41 hiya crc 17:00:51 hi tbw 17:03:44 hi 17:04:05 hiya arke 17:05:48 --- quit: I440r ("Leaving") 17:10:41 ahh, got tail-call opto working - things are starting to look respectable 17:13:20 :) 17:14:05 * aum ponders on a general optimiser based on pattern-match 17:14:14 eg, '3 4 +' -> '7' 17:16:30 no need dude 17:16:42 ? 17:16:45 keep track of the last X stack elements 17:16:49 err 17:16:53 last X ocompiled elements 17:17:03 when you call +, its a macro that injects code, rigth? 17:17:19 it injects a bytecode to call the '+' primitive 17:17:27 arke: he's writing this in python IIRC 17:17:36 so it looks. If, for one case, the last two were literals, then it deletes the last two compiled literals and adds a literal 7 17:17:38 language is immaterial 17:17:46 crc: so? 17:18:13 arke: keeping track of compiled code is a pain 17:18:24 i just did tail-call opto by recording the address of the last 'call word' bytecode - if it is here-3, replaces with 'goto word' 17:19:04 That's what I do. 17:19:11 k 17:19:22 exactly 17:19:25 Though I also check just to make sure that a CALL opcode was generated before changing it to a JMP 17:19:26 that works 17:19:35 not much you have to keep track of 17:19:39 i could also keep a list of the last n 'literal' opcodes 17:19:47 (RetroForth allows a lot of programmer flexibility in modifying code...) 17:19:50 just keep track of the address of the beginning of the last instruction 17:20:00 then, you can look there if you compiled a literal 17:20:13 no, you're making it too complicated 17:20:18 so if the last 2 'literal' instructions are here-3 and here-6, then '+', '-' etc can ditch them and replace with a single one 17:20:27 yes 17:20:29 exactly 17:20:38 you only need to keep here-3 and here-6 17:20:44 k 17:20:53 you can check the opcode byte what it is 17:20:56 :) 17:21:22 that's not safe - i could confuse an opcode arg with an opcode byte 17:21:47 different opcodes have different num args, so blindly checking 'here-3' or 'here-6' could be misleading 17:22:54 but you dont 17:23:00 no 17:23:11 you dont use here-3 and here-6 17:23:23 you use last_instruction and 2nd_to_last_instruction 17:23:25 which you set each time 17:23:32 the bigger question with optimisation is where to draw the line between the user's responsibility and the compiler's responsibility 17:23:45 if you compile an instruction of length 2, then 2nd_to_last = last; last = here-2; 17:23:54 this is really easy dude 17:23:57 eg, why optimise '1 +' to '1+' if the user's being lazy 17:23:59 :) 17:24:06 heh 17:24:39 and why invoke a costly multiplication primitive, if user is doing '4 *' which can optimise to 2 shifts 17:25:29 its not complicated 17:25:35 all of those are not complicated at all 17:25:36 speaking of shifts - are '2*' and '2/' the standard names for 'left-shift' and 'right-shift'? 17:25:48 : + ?lit if 1+ else 45135 , then ; 17:26:27 colorforth uses those, ANSI uses lshift and rshift. I prefer shl and shr (v n - v ) 17:26:52 2* and 2/ only are for a single shift 17:27:00 k 17:27:19 : shl for 2* next ; 17:28:07 yes, except that thats slow :) 17:28:16 does the PIC18 support variable length shifts? 17:28:21 no 17:28:32 or yes, as long as it's only 1 bit 17:29:09 thank goodness, there are good instruction modes to optionally use carry bit 18:21:27 bye all 18:21:37 --- part: TheBlueWizard left #forth 18:27:44 --- join: ez4 (~ez4@pcp01518726pcs.reding01.pa.comcast.net) joined #forth 19:06:58 aum, 2 and 3 combined 19:07:52 like, putting task in a sleeping task queue, and waking them on event. 19:08:19 'morning 19:21:55 --- join: samc (~sam@203-114-131-154.inspire.net.nz) joined #forth 19:22:22 --- quit: tathi ("leaving") 19:34:00 ok 19:34:07 --- quit: aum () 20:02:42 bah 20:03:10 foo = abs(-10) doesn't work in js 20:03:24 you must say foo = Math.abs(-10) 20:03:58 luckily, = works 20:04:20 That sucks 20:04:25 i don't have to say foo = Assignment.= Math.abs(Number.10) 20:05:03 Variable.foo Assignment.= ... 20:05:26 * crc sighs. JS has grown far more complex since it moved beyond LiveScript :) 20:05:41 can't compare 20:06:30 i've been doing quite some math by hand, rather than using js fns 20:06:34 LiveScript was JS before 1.0 20:06:42 cause i couldn't find them first 20:06:46 ye i know 20:07:05 can't compare because i didn't anything with LS 20:07:10 didn't do 20:07:19 :) 20:08:07 only now i found the integer fn .. 20:08:28 (was taking modulus, subtracting from divident, then doing division before ...) 20:09:36 similar with abs 20:09:48 compare, < if -operand then ... 20:21:26 i dislike that the stack effect of words between <# #> are specified, rather than saying "working on what has been provided by <#" 20:22:05 because that doesn't leave much room for alternative implementations 20:22:26 I don't have <# # #> in RetroForth 20:22:35 I never use them in other forths either 20:22:53 imagine a newbie, reading the tutorial section of pictured output 20:23:24 and i tell him "what you read in your tutorial won't work because retroforth doesn't support it" 20:23:44 :) 20:23:54 * crc should write a tutorial for retroforth 20:24:36 jsforth *could* be made rf compliant, i reckon, using the compliancy selector 20:24:42 hmm 20:24:54 Maybe I'll work on that one of these days 20:25:10 only fig, f79, f83 and ans given as selectable standards now 20:25:15 but those are bit masked 20:25:31 theefore, no prob adding another dialect 20:26:18 the same information, which you get with "help", is used for masking 20:26:59 also, words with different behaviour can be selected that way 20:27:18 (such as fig/f79 ' , compared to f83/ans ' ) 20:28:23 only thing one would need to do then to mask out non-retro, is typing "retro" 20:28:37 hehe, cool 20:29:10 the masked words are ignored by find and words 20:30:03 (this feature is active in current versions already) 20:30:52 thought that would be essential for a tutorial system, where tutorials describe different standards 20:31:22 therefore it *could* be used for retroforth tutorial as well 20:32:14 is actually easy to apply to words 20:32:22 looks like: 20:32:52 describe("x -- x x","duplicate top stack element",any) (a word, compliant with all standards) 20:32:57 or 20:33:35 describe("x1 x2 -- x2 x1 x2","insert copy of top stack below second stack element",dpans) ( a word only complying with dpans) 20:33:39 or 20:34:09 describe("unspecified","unspecified",fig|f79) ; (only f79 and fig) 20:34:34 or describe("unspecified","unspecified") ; (no standard at all) 20:35:25 retro words would then all those with "any" or "retro" 20:35:26 describe("0;","exit word if TOS=0. Consumes tos if 0, otherwise do nothing", retro) 20:35:36 like that? 20:35:36 exactly 20:35:41 nice 20:35:52 no 20:35:54 almost 20:36:02 the first string is stack effect 20:36:05 hmm 20:36:08 "--" 20:36:19 But it eats TOS if TOS=0 20:36:27 ah, ok 20:36:55 stack effect is just a string 20:36:56 How would that stack effect look? 20:37:10 only "( " and " )" are added 20:37:17 free text 20:37:37 hmm 20:37:53 only standard compliance is not free text, but bit mask 20:38:00 ok 20:48:56 is that for political correctness that #> is pronounced "number-sign-greater" rather than "hash-more" ? 20:55:56 goodnight 20:56:04 'nite 22:03:23 zol1: hahahha 22:11:55 --- quit: zol1 (Read error: 60 (Operation timed out)) 22:12:00 --- part: samc left #forth 22:43:38 --- join: tdfc (tdfc@sverige.freeshell.org) joined #forth 22:43:44 --- part: tdfc left #forth 23:42:16 --- quit: Sonarman ("leaving") 23:59:59 --- log: ended forth/05.01.29