00:00:00 --- log: started forth/06.10.13 00:04:08 http://www.google.com/codesearch?q=show:xb8ylmz7VSQ:iYCH7ar9va8:GKCls_RcydI&sa=N&ct=rd&cs_p=http://center.cie.hallym.ac.kr/~yuko/cgi-bin/ez2000/system/db/linux/upload/45/1070214716/MS-DOS.6.0.Source.Code.zip&cs_f=dos/msinit.asm 00:05:05 ;End of WIN386 2.xx compatibility bullshit 00:05:51 heh 00:05:57 I like how the version table is called LIE_TABLE 00:13:09 its 3am. i'm craving apple jam. brb 00:13:28 heh 00:18:08 Looks like nearly 3 bytes generated per non-comment LOC. 00:20:15 --- join: crest_ (n=crest@p54896407.dip.t-dialin.net) joined #forth 00:20:26 http://www.google.com/codesearch?q=show:Qjxee7KxfMA:iYCH7ar9va8:oVmhZCme-kA&sa=N&ct=rd&cs_p=http://center.cie.hallym.ac.kr/~yuko/cgi-bin/ez2000/system/db/linux/upload/45/1070214716/MS-DOS.6.0.Source.Code.zip&cs_f=dos/abort.asm 00:20:30 "Sleazy, eh?" 00:31:04 --- quit: Crest (Read error: 110 (Connection timed out)) 00:53:05 --- quit: Quartus (Read error: 54 (Connection reset by peer)) 00:53:40 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 00:53:40 --- mode: ChanServ set +o Quartus 01:45:38 --- quit: Zymurgy (Read error: 104 (Connection reset by peer)) 02:37:15 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 02:46:15 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 02:54:04 --- quit: neceve (Read error: 131 (Connection reset by peer)) 02:54:43 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 03:43:21 --- join: zpg (n=user@user-54474b80.wfd86a.dsl.pol.co.uk) joined #forth 04:03:20 --- join: Bushmills (n=l@212.2.170.157) joined #forth 04:18:46 hi guys 04:18:51 * zpg cheers 04:18:54 got nested lists working. 04:47:25 hmm, okay, when i re-include the file from scratch, i run into problems. the main problem is: .list- is called by .list for printing a list. .list basically envelops the characters typed by .list- in ()s. now, .list- needs to call on .list in the event of reaching a nested list, but .list has to be defined below it in the file, to compile.... 04:47:36 i reached a similar dilemma thinking about how to write recursively in forth. 04:48:00 how do i use a word that i know will be defined further down in my programme source, but isn't yet defined when compiling a given word? 04:50:17 is this a job for postpone? 04:52:16 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 04:52:54 okay, i see RECURSE is defined for the puroses of recursion. i could rewrite this code to be one word i guess. however, it'd be nice to know how to solve this problem as it stands. 04:53:10 have to head out but will read responses when i return. cheers for now. 04:55:02 --- quit: Bushmills (Read error: 104 (Connection reset by peer)) 05:05:44 --- join: jc (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 05:07:23 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 05:18:26 --- nick: crest_ -> Crest 05:25:49 --- quit: jc (Read error: 110 (Connection timed out)) 06:05:38 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:06:40 Good morning. 06:08:24 back. hi Ray_work 06:09:04 hi zpg: Hows the forth comming? 06:12:10 recursive nesting is working --> new-list @ .list ( ( 1 2 3 4 5 ) 6 7 8 9 10 ) ok 06:12:22 the parentheses onward are the printed result from .list 06:12:27 *sis 06:12:33 Ray_work: how're you? 06:13:57 I saw a little of that last night and I was intreged. 06:14:04 I'm well, thank you. 06:14:11 glad to hear it. 06:14:13 Ready for Friday! :) 06:15:14 hehe 06:15:15 time there? 06:15:47 8:14 the work day just started. I'm eating breakfast at my desk and talking in a couple chats. 06:16:29 nice. 06:16:43 btw, do you know how one can use a word in a function before that word has been defined? 06:16:45 --- nick: Raystm2 -> NANSTM 06:16:52 there's my wife 06:17:00 i've opted for recurse and plugged everything into .list now 06:17:00 yes. 06:17:08 you can vector the word. 06:17:14 ah ok, is that the only way? 06:17:26 (i'd considered doing that, but wanted to clarify my options first) 06:17:31 give the word a dead definition, then redefine it later. 06:17:39 i tried that. 06:17:50 i defined .list thus: : .list ." Blankenstein" ; 06:17:54 then defined .list- 06:17:56 then redefined .list 06:18:09 but in my tests, .list was clearly calling Baron von Blankenstein. 06:18:24 so i assumed that .list- had compiled in the address of my first .list function. 06:19:30 oh yes, that's because the dictionary only works in one direction... 06:19:39 what forth are you using? 06:20:18 gforth 06:20:47 --- join: lukeparrish (n=docl@74-36-211-202.dr01.hmdl.id.frontiernet.net) joined #forth 06:20:55 gforth cool. 06:21:17 zpg meet lukeparrish :) 06:21:24 hi zpg 06:21:27 he and I were talking in another chat. 06:21:53 I'm not sure gforth has vectored words like retro does. 06:22:41 ooh okay. well. unfortunately, I don't have a gforth environ here at work. 06:22:44 basically it's a jump that's unset by default, but can be set to any newly created word. 06:22:48 hi lukeparrish 06:23:04 ah ok, i see. 06:23:18 zpg the idea is that you initialy set a work to a local jump like... 06:23:46 : word-to-vector e9 , 0 , ; 06:24:01 then you go back and patch that vector with the new definition. 06:24:42 woah, gotta get ready do go to work. have fun guys 06:24:43 madgarden in another chat says look up DEFER 06:24:45 i was thinking .list being defined as : .list .list-word @ execute ; 06:24:47 nice meeting you zpg 06:24:52 and .list-word ' .list ! ; 06:24:54 oops 06:24:57 you too lukeparrish 06:24:59 basically it's 06:25:20 defer word-to-vector 06:25:29 but i forget how to patch 06:25:41 defer isn't in ANS 06:25:59 but it should be in the gforth manual. 06:26:10 ok 06:27:23 hmm, looking through the standard, i can't find how to make s" 1" into 1 06:27:44 i.e. an integer in a string -> just an integer. 06:33:27 try '1 06:34:37 zpg :) might be best to wait for a real forth helper to arrive. My experiance is mostly colorforth and retroForth. :) 06:34:40 not the string is already on the stack. 06:34:44 *no, the string.... 06:34:49 I got that. 06:34:51 :) 06:35:06 I don't have any way to test things here. :( 06:35:16 ah ok, no worries. 06:35:38 * Ray_work looking into the gforth manual online 06:35:39 there must be a simple way since the input is parsed (string) then numbers are pushed. 06:36:08 may have something to do with eval or evaluate . 06:36:27 yeah, that's what i was thinking. 06:36:46 evaluate works, excellent. 06:36:52 cool 06:37:12 i thought i'd tried that, but evidently i typed EXECUTE instead. 06:37:12 heh 06:37:17 :) 06:40:53 --- quit: k4jcw (Read error: 113 (No route to host)) 06:42:50 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 06:55:59 --- quit: vatic ("*poof*") 06:58:33 here it is: http://forth.pastebin.ca/200944 06:59:35 note the nested lists and the list-pool which contains all the currently defined conses. shall write some list freeing code next. at the moment, the list pool is being used for ?cons, which checks to see whether a list element is a normal single-cell or a nest chain of conses. 06:59:54 --- join: Raystm2 (n=NanRay@adsl-68-95-255-105.dsl.rcsntx.swbell.net) joined #forth 07:01:46 that's neat. 07:01:59 I'd like to take a look at the proggy sometime. 07:07:32 sure. 07:07:35 still polishing it. 07:07:42 i wrote free-list in about 30 seconds. time to test it. 07:09:45 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 07:10:14 good morning 07:10:25 hi snowrichard 07:11:46 my cats going beserk 07:14:49 --- quit: NANSTM (Read error: 110 (Connection timed out)) 07:16:27 --- join: jc (n=jcw@adsl-074-238-180-251.sip.asm.bellsouth.net) joined #forth 08:24:30 --- quit: zpg (Read error: 113 (No route to host)) 08:47:42 --- quit: madwork ("?OUT OF DATA ERROR") 08:48:31 --- join: madwork (n=foo@204.138.110.15) joined #forth 08:52:13 --- quit: madwork (Client Quit) 08:52:28 --- join: madwork (n=foo@204.138.110.15) joined #forth 09:02:14 --- join: vatic (n=chatzill@ool-45740b1c.dyn.optonline.net) joined #forth 09:05:38 --- join: zpg (n=user@user-54474b80.wfd86a.dsl.pol.co.uk) joined #forth 09:22:32 --- quit: virsys (Read error: 110 (Connection timed out)) 09:28:22 --- join: Astrobe (n=fred@82.67.86.119) joined #forth 09:34:14 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 09:34:14 --- mode: ChanServ set +o Quartus 09:38:10 Hey. 09:40:36 Hey hey hey. Hey baby, I wanna know -ow -ow, if you'll be my girl. 09:40:41 Quartus: hey! 09:40:46 vatic hey! 09:40:47 Hey Ray_work, vatic. 09:40:58 Ray_work! 09:45:46 what'd I miss? 09:46:12 just got on myself. Likely will disappear in a second... 09:46:40 bye! 09:46:45 --- quit: vatic ("*poof*") 09:47:19 okay vatic... yikes I had some info for him. ... :( 09:48:24 Quartus: you missed zpg createing his first evaluation string, and his first defered word. Aren't you proud of our boy, Daddy? 09:49:50 heh. 09:55:57 Quartus: have you got any experiance with using the UPS online for product returns? 09:56:10 product returns? 09:56:32 Can't say that I have. 09:56:35 cool. 10:00:36 --- join: francis (n=francis@220-133-150-49.HINET-IP.hinet.net) joined #forth 10:02:26 is there forth for PPC ? 10:04:12 sure 10:04:38 where is it ? 10:06:31 here some links about ppc forths: http://www.forthfreak.net/index.cgi?PowerPCForth 10:07:18 I've used Quartus on Palm but Palm is over. I wanted Windows mobile one. :) 10:09:12 francis, I don't personally think Palm is over :) 10:10:02 UMPC will replace all soon. 10:15:26 use Win32Forth instead then, ;-) 10:19:39 Ah, an industry pundit in our midst. 10:19:59 Should I buy Intel stock? 10:31:34 heck, i'm just now getting my first Palm. I won't let it be over. :) 10:32:48 --- mode: ChanServ set +o I440r 10:41:53 --- part: francis left #forth 10:44:09 hi guys 10:44:31 Hi zpg. 10:44:45 hi Quartus 10:44:53 francis was a curious chap 10:46:51 How polite. 10:47:20 Your description, I mean. :) 10:47:35 :) 10:47:39 well, so it goes. 10:47:54 Quartus: know of any good PDF readers for PalmOS 4? 10:49:18 There's Acrobat Reader for the Palm, I believe it's fine under OS3.5 and up. 10:49:27 oh really, 3+? 10:49:33 will check that out in a sec then 10:49:37 well, 3.5. 10:49:53 k 10:50:58 http://www.adobe.com/products/acrobat/readerforpalm.html 10:53:11 thanks! 10:53:26 does foxit reader work on a palm ? 10:53:32 foxit is WAY better than adobe 10:54:21 i always thought adobe was for >=5.0 10:54:25 glad to know i was wrong :) 10:55:47 Don't think foxit did a palm version. 10:55:55 pity 10:56:13 time to try adobve 10:56:17 adobe, even 10:56:29 There are probably competing viewers. 10:56:30 At the moment there is only limited PDF support for this platform: 10:56:30 - PalmPDF (xpfd port, open source, slow, problems with big files). 10:56:30 - Documents To Go Premium ($49.99, no encryped documents) 10:56:30 - PicselViewer Pro ($29.99, release date mid january, ex-only-Sony CliƩ software) 10:56:30 - Adobe Reader (free, needs a converter on host pc, text only, no layout) 10:56:55 doesnt look like theres ANYTHING for palm thats actually worth using 10:57:21 I've used the Adobe Reader. The lack of layout isn't a problem, you're dealing with a tiny screen after all. 10:57:43 And the convert is actually a boon, as the files become small enough that you don't mind hosting them on the Palm. 10:57:46 depends on what palm your using 10:57:55 heh 10:58:00 Well, all the Palm devices have relatively small screens. 11:00:44 ispin 2.0 looks interesting tho 11:03:26 --- quit: Astrobe (Read error: 113 (No route to host)) 11:06:38 I440r, maybe. I'm wary of 3rd-party stuff that screws around at too low of a level with the operation of the whole system. 11:06:55 ya 11:07:02 it will be great if its "stable" 11:07:07 ispin 1.x is not 11:07:31 Last thing I want is to destabilize my gadget in the name of some graphical novelty. The system already behaves, for 99% of apps, just the same way; apps start up again in the state they were last in. 11:07:37 Quartus Forth is a noteworthy exception. 11:08:04 erm get a treo650 and try using the built in web browser 11:08:17 it does not behave in the above gracefull manner 11:08:22 its a POS basically 11:08:40 Then it should be fixed or replaced by one that does, rather than putting in some helper to make it work right. 11:08:57 cant use an alternative web browser on the treo650 11:09:11 only blazer 11:09:23 you an install another one but it will not function as expected 11:09:50 Oh? I know there are alternatives available. 11:10:14 it works, neat! 11:10:20 what does, zpg? 11:10:31 but not all things work in them. the treo has been fscked iwth to FORCE you to use blazer for web stuff 11:10:36 acrobat 11:10:42 though i need to get my list-freeing working now. 11:10:45 dum de dum 11:10:51 Quartus: did you see i had list nesting working? 11:10:55 thats part of why i refuse to pay verizon for data 11:10:58 I did see. 11:11:07 Is that with a 3-cell cons? 11:12:29 yes 11:12:30 ( ( ( 1 2 3 4 5 ) 6 7 8 9 10 ) 3 ) 11:12:35 i hadn't tried consing and consing again 11:12:36 works well 11:12:51 i'm planning on just making a list of doubles 11:12:56 therefore, it coudl be a string or int list 11:12:57 *could 11:13:13 two pools perhaps, if the cons is in the string-pool, then type it, otherwise d. it 11:13:42 What if a double-cell integer happens to correspond with a string addr and len? 11:13:44 oh sorry, not a three cell cons. 11:14:04 two cell still. i have list-pool which contains the addresses of all consed elements. 11:14:17 if the elemtn to be printed is entered into the list-pool, then .list is called on it instead. 11:14:34 So you're not storing type info, you're just hoping that there's no collissions. 11:14:37 Quartus: yes, that's a good point. 11:14:56 well no, i'm comparing the ADDRESS of the cons cell with the list pool 11:15:00 not the contents of the cons cell. 11:15:16 so my mistake -- i think my method still works. 11:15:19 Any sexy or idiomatic ways of converting a number to 0 if 0, or 1 if not 0, without using an if? 11:15:20 That seems rather cumbersome. Why not store the type info right with the data? 11:15:26 i thought about that. 11:15:37 but decided to test it this way instead. 11:15:51 my C lisp-like was written with type information in the element data structure. 11:15:58 i wanted to see what happened if i did it this way. 11:16:10 jc: 0<> 1 and 11:16:25 i'll likely rewrite it, but it's been a nice experiment so far. 11:16:33 zpg, it sounds like all type-checking becomes an O(n) operation. 11:16:38 Nice. 11:18:19 Quartus: you're right of course. 11:18:40 but this was a 'what if' approach as well as i 'can i write it like that?' test. 11:18:43 Ah. 11:19:20 i'll almost certainly junk this code and re-write it from scratch. 11:19:43 so i'm trying to vary my approach to see what happens, 11:20:43 why not :) 11:25:55 quite. 12:09:53 http://forth.pastebin.ca/201282 Am I doing something wrong here? Because it's seeing foo-f1 and foo-f2 in baz, and it shouldn't be. 12:10:18 And it seems to be related to the expose-module. If I remove them, the interpreter correctly flags that it can't find them. 12:11:18 It's likely a problem in my interpreter, but I'd like to make sure about that. 12:12:26 depends on the precise implementation of module/end-module, but I don't think you should be using expose-module and then switching to public:/private:. 12:12:42 expose-module as needed, previous before switching public to private. 12:13:37 Alternatively, expose-module, move that wordlist to position 2, and then begin your module. 12:13:54 Though that's more awkward in my opinion. 12:15:09 So I should expose-module before the module yyy, instead of after? 12:15:22 I'm using the implementation of module/end-module I got from you. 12:16:48 Reversing the expose-module/module and previous/end-module makes it behaves correctly. 12:18:02 It should. ORDER should show you what's happening. 12:20:36 Quartus: you are the worlds best systems programmer!!! 12:21:09 FOOLS!!! 12:21:46 putting a ORDER in module bar after the expose-module gives this: xxx bar Forth Forth [bar] 12:21:53 So why does it see anything in foo? 12:22:13 His brain is so large, it requires two craniums. 12:27:04 jc, can't run tests: mobile. Check it one step at a time. 12:32:24 i think i just spent far too long writing spaghetti again 12:33:23 Because LISP has burned out all your primary brain cells. 12:35:58 me? 12:36:33 spaghetti -- on the plus side, i can now free lists easily. 12:37:08 but i think a better understanding would have led to better factoring, and hence better code. 13:05:46 --- join: vatic (n=chatzill@ool-45740b1c.dyn.optonline.net) joined #forth 13:08:26 hey vatic 13:13:31 zpg: hey... 13:13:55 how's it going? 13:14:25 he defines forth code as spaghetti code? 13:14:44 no, i think he just says his own code looks like spaghetti code 13:15:26 he means the latter. 13:26:05 zpg, take care not to read from an already-freed cons. 13:26:37 Quartus_: yep, that doesn't seem to cause any problems at the moment. 13:26:48 i've just gone about freeing lists in a really convoluted way 13:26:53 sorry 13:26:57 it may work under gforth, but it's a no-no. 13:27:00 removing members from lists in really convoluted ways 13:27:34 I wrote a delete-head-node, which I call repeatedly until the list is empty. 13:27:36 hell, i've just thought of a 3-4 line implementation 13:27:50 ah ok 13:28:16 i've got one of those too 13:28:24 Quartus_ Does it loop till if finds a nul node? 13:28:25 my free-list looks like this--> 13:28:39 is it nil node? 13:28:47 (bearing in mind the stupid list pool) 13:28:49 : free-list 13:28:49 ( address -- ) 13:28:49 begin 13:28:51 ?cdr swap 13:28:53 dup ?cons if dup list-pool @ remove-member recurse then 13:28:57 free 13:28:59 dup 0= 13:29:03 until drop drop ; 13:32:21 back soon. 13:34:12 ray, until the list contains nothing but nil, yes. 13:35:30 list pool? 13:43:55 Flisp? 13:44:36 virl: that's how most memory managers work, you have a pool of free blocks. 13:45:21 in this case it's a curiously slow implementation of type-checking. 13:50:40 ok.. 13:53:23 zpg, right now, you have two types: lists and integers. What happens if you add a third? 13:57:35 see y'all later... 13:57:39 --- quit: vatic ("*poof*") 14:07:32 --- quit: nighty (Read error: 113 (No route to host)) 14:07:52 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 14:08:23 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 14:23:02 dang it, I keep missing vatic. 14:23:46 Quartus pm please? 14:23:59 go nuts. 14:24:07 --- join: saon (n=saon@unaffiliated/saon) joined #forth 14:34:50 back. Quartus: yes, the implementation is pretty flakey. i'd intended to simply add another field to each cons, but decided to opt for this example as a 'what if' test. 14:35:10 --- quit: jc ("Client exiting") 14:35:18 You'd have to keep piling new logic into each word to handle all the different types. 14:35:46 An improvment might be to store a virtual method table pointer in each node. 14:35:58 Quartus: indeed. it was a one-off test for the integer list. i'm going to scrap the code very shortly and opt for a more sensible method. 14:36:03 the exercise was semi-useful though. 14:37:24 what are you trying to implement zpg? 14:37:55 slava: i've implemented some list code as my first forth project. 14:38:02 i mean this type checking thing 14:38:20 speaking for zpg, his initial motivation was to be able to have lists that can contain other lists. 14:38:23 oh, i used an odd method that basically recorded all allocated list cells (conses) into a main list pool. 14:38:53 therefore, one could check whether a given address was a cons by trying to find its address in the list pointed to by the 'list-pool' 14:39:04 and you need to tell the difference between a cell whose car is an integer, and a cell whose car is ap ointer to another cell? 14:39:07 not quite sure of my reasoning for postponing using types in the cons cells. 14:39:32 a cell should just store a type tag, indicating if the car is an integer, a string, another cons, etc. 14:39:42 slava: yes. i'm just going to do what i did in a recent c implementation -- have an extra cell in the cons that is simply set to List, Double or String. 14:40:23 slava, you'd have to allocate specific bits of a cell for tag use, in that case. An alternative is to keep the type data in adjoining memory, or as I suggested -- point to a table of methods suitable for the type. 14:41:35 i think storing the type information in the cons is cleanest for this example. 14:41:43 can always (and intend to) rewrite this stuff from scratch. 14:41:59 It's not extensible, though. A method table pointer would be. 14:42:02 incidentally, i notice that '( and '* etc. will push the ascii representation of a character.... is this ANS? 14:42:10 Quartus: very true. 14:42:10 No, that's a common extension though. 14:42:12 one step at a time :) 14:42:16 both approaches are wrong, though, because a type is associated with the 'car', not the 'cons' 14:42:20 if you pull the car out, it should still have a type. 14:42:37 perhaps. 14:42:38 good evening 14:42:41 slava, yes, I'm suggesting that the type is associated with the car. 14:42:42 hi crc 14:42:50 then again, if you pull the car out you might want to play with it in other ways. 14:43:02 but the cons is simply a car (now typed) and a pointer to the next cons. 14:43:13 so the type in a cons cell is for the car, not the cons. a cons is a cons is a cons. 14:43:13 Hi crc. 14:43:17 * zpg greets crc 14:47:37 hmm 14:54:36 damn. i gotta get up at 5am sunday 14:54:47 thats going to be a problem if i dont get to sleep till 2 or 3 lol 14:55:51 why 5 Mark? 14:56:06 odd, ': `( 41 parse ; immediate' produces type e b c d e ok 14:56:11 i have a class at 6:30 14:56:23 im going to get an arizona CCW 14:56:33 been as im in az right now i figured it would be a good idea :) 14:56:41 CCW? 14:56:46 but you gotta do an 8 hour course first 14:56:49 oh 14:56:53 allows you to carry a gun concealed 14:57:05 ion az you can carry it in the open without a permit 14:57:05 yikes. :) wild wild west. 14:57:13 ya. 14:57:19 but an az permit is valid in texas where i live too :) 14:57:28 so can you trace your psychosis back to a single point in time, or has it been a gradual decline? :) 14:57:34 That's the answer to the School Killings. ARM THE CHILDREN FUND. 14:57:43 no. just arm the teachers 14:57:57 Right, then if a teacher goes insane, he's already got the gun. Perfect. 14:57:59 however. my father used to take his pump action .22 rifle to school every day 14:58:03 no heck the teachers???? the kids are the ones with the experiance. 14:58:04 from the age of about 5 14:58:15 yeesh 14:58:19 quartus thats a bad arguement 14:58:37 What, you think teachers are immune from personality disorders? 14:58:40 if you arm everyone the nuts will nominate themselves for darwin awards or will chill 14:58:56 an armed society is a polite society 14:59:11 Wild wild west. 14:59:17 if your a nut and you want to go on the rampage you gona do it where all the teachers are armed or where they are not 14:59:19 Tell you what, how about keeping guns completely the fuck out of anywhere children are? I know, crazy-ass liberal idea, right? 14:59:35 quartus there are no crime free zones 14:59:46 And if you have your way, no gun-free ones either. 14:59:51 but making a school a "defensless victim zone" is very VERY crasy 14:59:53 crazy 15:00:00 :) Let them have all the guns they want and make the bullets like $5000,00 each. 15:00:27 quartus. every state taht has enacted laws that allow people to carry a gun has had DRAMATIC reductions in violent crime rates 15:00:57 those that do not allow you to carry a gun (chicago and washington dc spring to mind) have inordinatly high violent crime rates 15:01:06 washington dc is THE murder capital of the world 15:01:20 you are more likely to be shot there than when on active duty in bagdad 15:01:23 Ok. This isn't the right place to have this conversation, and I'm not interested in having it at all, in fact. 15:01:31 cool. 15:01:35 bury head in sand then 15:01:49 lets move to baghdad 15:01:54 I'm about to leave to go home and take on my other pyschotic personna. :) 15:01:57 quartus ill shut up tho... but i suggest you google for "a nation of cowards" and read it 15:02:00 its an education 15:02:17 I'll put it on the pile with Mein Kampf and the back-issues of Guns'N'Ammo. 15:02:24 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 15:27:16 --- join: saon___ (n=saon@c-24-129-41-99.hsd1.fl.comcast.net) joined #forth 15:27:53 quartus thats a moronic statement 15:27:54 --- quit: saon (Nick collision from services.) 15:27:58 im not a fucking nazi 15:28:20 --- nick: saon___ -> saon 15:28:31 you accuse me of being stupid for critisizing ANS forth without reading the spec. what i have read only reinforces my opinion of it 15:29:00 I don't believe I've ever called you stupid, Mark. Uninformed on that topic, yes. 15:29:03 YOU however are being very anti on a subject you know less than nothing about 15:29:24 you read a nation of cowards and ill read the entire ans standard 15:29:26 With all due respect, you have no way of knowing how much knowledge I have on that subject. 15:29:50 you have demonstrated a complete lack of knowledge and a complete lack of interest in gaining any 15:30:05 guns SAVE LIVES 15:30:17 As you like, Mark. I'm not interested in having this conversation with you. This is the wrong forum for it at any rate. 15:30:23 if some nut does come after you in the parking lot are you going to dial 911 ? 15:30:33 do you think your in a Quartus safety zone ? 15:30:52 #forth is not moderated. its an unrestricted forum. it always has been 15:30:58 I think I'm in #forth, so let's leave arguments about guns for people who want to have them, in #politics or wherever else is a good fit. 15:30:58 thats my ONE and only rule 15:31:32 i believe i told you that was my one polacy 15:31:36 policy 15:31:40 err i cant spell :P 15:31:54 read it. and ill read the ans standard 15:31:55 Ok, go ahead and argue gun control; just not with me. 15:32:08 whatever 15:32:49 but dont call me a nazi or tell me my arguements against gun control are nuts 15:32:56 because your wrong on BOTH counts 15:33:06 So suddenly it is moderated? 15:33:23 which. if you read "a nation of cowards" you would know to be true 15:33:32 eh ? 15:34:04 sorry, you lost me. where did i disallow any topic? 15:34:16 You just told me what to say and what not to say. 15:34:18 the answer to school killings is homeschool all the kids. 15:34:28 Look, I'm not going to argue this with you. I don't have any desire to read a pro-gun rant written by anybody. 15:34:34 worked for me, I'm still alive. :P 15:35:47 burry head in sand. but dont expect any COP to come save your life if you are ever in need of it because he is under NO obligation. 15:36:07 Great. Noted. No cop will come to save my life. Got it, thanks for the heads-up. 15:36:28 hmm okay, how do i copy a string? 15:36:35 guess you cant be very religeous either heh. 15:36:40 (to bring us back to tweedville for a second) 15:36:41 zpg cmove 15:36:42 use cmove 15:37:02 heh i've been trying to write my own without luck 15:37:03 ( source destination length --- ) cmove 15:37:45 anyone have a link to chuck moors definition for cmove ? 15:38:14 MOVE is the standard word for moving memory without concern for whether the regions overlap. 15:38:58 CMOVE and CMOVE> are legacy words that copy in a specified direction, so you have to know going in whether the regions overlap or not. 15:39:16 also, 2dup copies a string :) 15:39:29 2dup copies only the address and length, not the string itself. 15:40:25 so if it's in a volatile memory spot, you can still lose it. that's why move is needed. 15:41:44 Well, you may need to copy memory for lots of reasons. To append two strings, to move a data structure, what-have-you. 15:42:21 true 15:42:41 lots of cool uses for move 15:42:48 open up space for new data to be added in the middle.... 15:43:11 --- join: zpg` (n=user@user-514d737a.l2.c2.dsl.pol.co.uk) joined #forth 15:43:47 --- quit: crc (Remote closed the connection) 15:44:10 hmm, i'm a little confused over this c-addr, a-addr business and how to allocate a block of memory sufficient to cmove my string into. 15:44:50 c-addr u is the convention for a string. u is the number of characters. so CHARS ALLOCATE THROW is the idiom for allocating enough memory. 15:45:13 oh i was doing chars cells. duh. 15:45:18 i don't know throw. 15:45:27 THROW handles any error code coming off of ALLOCATE. 15:46:15 okay, and does what with it? 15:46:51 It does nothing if there's no error, otherwise it sends it upwards for error reporting. If nobody handles it via CATCH, it results in an error message in the console and an ABORT. 15:46:54 Have a look at save-mem in Gforth. Its purpose is to copy a string into an allocated block of memory. 15:47:08 okay. 15:47:11 but not in QF? 15:47:21 (i'm looking to write things as barely as possible) 15:47:34 save-mem isn't a standard word, it's a Gforth thing, but you could certainly use it in Quartus Forth. Simple word. 15:48:20 : save-mem ( c-addr1 u -- c-addr2 u ) swap >r dup allocate throw swap 2dup r> -rot move ; 15:48:40 Gforth's S" uses save-mem to make all strings at the console persist until BYE. 15:49:38 save-mem as shown makes the assumption that 1 chars = 1, but that's true in Gforth and Quartus Forth both. 15:49:39 --- quit: saon (Remote closed the connection) 15:49:56 this seems overkill : copy-string s" wow" dup chars allocate drop swap 2dup 2>r cmove 2r> ; redefined copy-string ok 15:50:05 --- join: saon (n=saon@c-24-129-41-99.hsd1.fl.comcast.net) joined #forth 15:50:45 I'd use move instead of cmove there, just on principle. But you don't need to allocate and move at all, if it's a literal string. : wow s" wow" ; does just fine to preserve a copy of a literal string. 15:50:51 --- join: crc (n=crc@pool-70-110-168-22.phil.east.verizon.net) joined #forth 15:51:06 --- mode: ChanServ set +o crc 15:51:33 : copy-string dup chars allocate drop swap 2dup 2>r cmove 2r> ; 15:51:34 : :( 41 parse copy-string ; 15:51:34 :( 1 2 3 4) 15:51:34 type ==> 1 2 3 4 ok 15:51:40 * zpg` ^^^ that's the intention 15:51:58 for some reason, without copying, the :( ...) parsed string is buggered up 15:52:02 Ok. save-mem is the same thing, plus it has THROW instead of DROP after allocate, which is a good idea. 15:52:35 so, is this okay: 15:52:36 : copy-string dup chars allocate throw swap 2dup 2>r cmove 2r> ; 15:52:44 ? 15:52:53 At a glance, looks ok. Does it work? 15:53:04 yes 15:53:34 It's a replica of save-mem, which is more general-purpose, as it doesn't have chars embedded in it. 15:54:16 It's a minor point, but if you're going to have CHARS in there going in, you have to assume that u is transformed somehow, so you'd want to divide by 1 chars later on to turn it back into a character count. 15:54:46 save-mem avoids this by assuming that you're passing it a number of address units, and it returns the same number. 15:54:59 So it's a simpler factor. 15:55:00 divide? 15:55:09 Yes. Suppose 1 chars = 2. 15:55:16 i see. 15:55:18 --- quit: zpg (Read error: 113 (No route to host)) 15:55:20 this is a tad confusing. 15:55:30 Right. So you can avoid the confusion by using save-mem. 15:55:51 oh hang on, i see 15:56:40 move takes a-addr. will the c-addr of the original string be okay to pass to allocate? will we be allocating the same number of units? 15:56:40 s" hello" save-mem, or for real pedantry, copy-string would be : copy-string chars save-mem 1 chars / ; 15:56:54 You don't pass the address to allocate. Allocate takes an unsigned integer only, a size. 15:57:10 ah 15:58:05 I define char/ for portability, it's a do-nothing on systems where 1 chars = 1. So is 'chars'. So if I were writing copy-string, it'd be : copy-string chars save-mem char/ ; which is exactly the same (on 1-byte char systems) as : copy-string save-mem ; 15:58:46 okay i'm beginning to get this. 15:59:06 For your purposes, if you're working only under Gforth and Quartus Forth, don't bother with chars at all for now. 15:59:23 okay 15:59:46 It's equivalent to 1 *, or in other words, nothing at all, on both of those systems. 15:59:55 so save-mem takes a length and allocates that number of cells (? is this right). once this is done (new address is pushed) we retrieve the original address and call move 16:00:25 I mention it only because while it's harmless to throw CHARS in wherever you like on such systems, it is deceptive and will bite you in a tender place if you take that code somewhere with a different char size, unless you're careful to distinguish between counts, and bytes. 16:00:37 Yes, that's what happens in save-mem. 16:00:43 excellent. 16:00:48 glad to know i'm vaguely following this :) 16:01:27 Sure. The process of copying a string to a chunk of RAM is to allocate a chunk of the appropriate size, and copy (MOVE) the characters into it. 16:01:31 okay, so i get save-mem. now you're saying, on gforth and QF, a character is a cell wide, so one can just let save-mem operate without any worries? 16:01:44 No, a character is not a cell wide. It's a byte-wide on those systems. 16:01:53 A cell is a cell wide. :) 16:02:18 oh 16:02:22 so allocate takes ...? 16:02:31 Allocate takes a size in address units. 16:02:45 Bytes, in Gforth and Quartus Forth. 16:03:02 so an address unit happens to be the same width as a bit? 16:03:07 *byte 16:03:18 Right. You'll likely never run into a system where 1 chars <> 1, so worrying about CHARS is without reason, especially at this stage. 16:03:26 If you're writing for portability, then you need to do the extra work. 16:03:36 okay, but now this has confused my understanding of cells :) 16:03:52 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 16:03:55 hi virl 16:03:58 *vatic 16:04:05 In the simplest possible setup, chars are bytes. 8 bits wide. Cells are larger, 16 or 32 bits. 16:04:23 zpg`: man, fast! 16:05:57 Or even larger. 16 is the minimum. 16:07:53 vatic: ? 16:08:11 zpg`: yup? 16:08:14 and allocate takes 'address units'. that's what confuses me 16:08:19 vatic: 'man, fast' 16:08:20 ? 16:08:44 allocate takes bytes, on Gforth, on Quartus Forth, on lots of popular systems, because each address unit holds one byte on those architectures. 16:09:07 zpg`: you're fast with the greets. I'm barely logged on and you're saying hello! ;-) 16:11:06 vatic: :) 16:11:44 Quartus: i see. is this because the address unit for these particular implementations is defined as the byte? 16:12:03 For the x86, for the 68K, for lots of common CPUs. 16:12:08 oh i seeeeeee. 16:12:25 i didn't realise that's the level we were talking at. yeah, okay, that makes sense now. 16:12:33 it's just that, in my list code, i've got 2 cells allocate for the cons. 16:12:37 There are, however, quite a few other systems, many embedded, where an address unit holds a different number of bits, and the cell alignment requirements are again different from that. 16:12:51 --- quit: saon (Success) 16:13:13 and a single = single cell so a single (integer) is a cell wide. on QF that's 16bit and gforth 13bit. 16:13:20 Right. 16:13:38 2 cells allocate throw will allocate 4 bytes in Quartus Forth, 8 bytes in Gforth. 16:13:41 anybody use git? 16:13:41 so by specifying 2 cells allocate i am, as i originally thought before i confused myself, allocating space for two singles. 16:13:49 You are indeed. 16:14:07 JasonWoof -- 'git'? You're kidding, somebody named software 'git'? 16:14:14 sorry if this is coming across as thick, it's just one of those things where assumptions are made but when you think about the assumptions, everything crumbles :) 16:14:14 yep 16:14:17 Linus 16:14:27 that the revision control system? 16:14:33 an rcs 16:14:36 yes 16:14:37 http://www.urbandictionary.com/define.php?term=git 16:14:49 ah thought i'd come across it somewhere (other than the obvious) 16:14:51 DESCRIPTION="GIT - the stupid content tracker" 16:14:52 HOMEPAGE="http://kernel.org/pub/software/scm/git/" 16:15:08 oh, well, if it's meant to imply 'stupid', then I guess it's suitable. 16:15:26 according to my friend it is an amazing piece of software 16:15:45 It's the UK equivalent of 'doofus'. 16:16:01 i could theoretically then say, for savemem, cells 2/ allocate if the TOS is the number of characters in a string. 16:16:07 (this is theoretical, not something i want to do) 16:16:08 that's what the word means, although I haven't heard it used much 16:16:22 come to england 16:16:24 bask in gits 16:16:28 zpg, there's no guarantee that a character is 1/2 of a cell. 16:16:35 hmm okay 16:16:42 I've heard it a lot, but that's my family. :) 16:16:42 "cells 2/" is very silly 16:16:53 i'm just trying to establish the relationship. 16:16:59 zpg`: if you want to allocate room for x "chars" then define "chars" 16:17:02 okay, i see your point quartus. 16:17:06 : chars 2* ; or whatever 16:17:11 There's no required relationship between a char and a cell, except that a cell is at least as big as a char. 16:17:21 as we've established, while cell widths vary between gforth and QF, bytes are still the same. 16:17:26 erm, chars are still the same byte-wise. 16:17:55 Yes. Though there are systems where chars are larger than bytes, and cells are not a multiple of a byte. No desktop systems that I can think of, mind you. 16:18:31 yes, i think i see how this works. 16:18:43 i'm so used to thinking apart from the internal architecture. 16:19:12 umm, mac os x and java use unicode extensively 16:19:16 If you look at old Forth-83 code, you'll see a lot of 2* scattered about. That was how you multiplied an integer to calculate the amount of memory for that many cells, as Forth-83 required a 16-bit cell. 16:19:20 so a char is larger than a byte there 16:19:23 factor also uses unicode 16:19:42 slava, that's true. 16-bit (and up) unicode is larger than a byte. 16:20:38 But memory is byte-addressable on those systems. 16:20:55 On some funky chips, it isn't. 16:21:46 Quartus: how did you start out in forth btw? 16:23:03 I played with Forth first in the late 70's, and touched down on it off and on through a number of toy microcomputers, the ZX81, the C64, the Amiga. Took a greater interest in it when I heard of the standardization effort back in 88 or so. 16:23:28 * zpg` nods 16:24:18 Followed that quite closely, studied it and its ancestors, and when the USR Pilot was first introduced in '96, I saw it as a key opportunity to usefully implement it. 16:24:41 neat stuff. 16:26:00 Oh, I left the Mac out of that list. Had a couple of apples. 16:27:13 My first Forth exposure was, I think, on a TRS-80. 16:28:53 :) 16:28:58 Now I feel old and need a cup of tea. 16:30:28 How about you, zpg? 16:32:38 oh, I acquired an SX-64 recently, speaking of vintage computers. Unfortunately it worked like a charm for a couple of weeks, but I think the PLA is shot now. Have to replace it. 16:33:14 * zpg` nods 16:33:23 tea sounds like a brilliant idea, i might pop downstairs and put on the kettle. 16:33:48 Once I repair the beast (maybe next month), I'm going to heatsink the three main chips, hopefully forstall future failure. 16:34:41 just saw something on slashdot about a water-cooling scheme. could be disastrous if you had a leak 16:34:52 Yeah. Help the tea situation, though. 16:35:02 Just put a spout on the side. 16:35:56 Not hot enough? Calculate PI. 16:36:21 :) 16:37:39 we had some equipment in the Navy that was watercooled. it did get a leak one time 16:37:55 the DS techs were cleaning contacts with toothbrushes 16:38:12 Pencil-erasers work better. 16:38:32 i think it was punishment for letting it happen 16:38:46 I could see a toothbrush putting a lot of nasty scratches in a gold contact. 16:40:18 one time I got to work and that equipment was down. It was the display processor. they said they'd been working on it for hours. I said what is not working? they said it won't draw the circle cursor. I said give me a block diagram. It had 1 processor labeled "conics" so I said replace this one. They tried it and it fixed it. 16:40:39 Heh. 16:40:49 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-187-074.pools.arcor-ip.net) joined #forth 16:41:47 the thing had 14 microprocessors in it and it was just vector graphics, no pictures or anything 16:42:06 No nudie ASCII art? 16:42:40 I have hopes of running VolksForth on the 64 when I get it functioning properly again. 16:42:52 it had little symbols for surface, sub-surface, air contacts (either friendly un-friendly or unknown) 16:43:13 snowrichard, sounds dull. :) 16:44:10 I was on the flight deck one time when we got overflown by a russian recon plane. That was different :) 16:44:26 two f14 escorting it 16:44:45 I'm sure there's room for an "In Soviet Russia..." joke right about now. 16:45:06 hi slava 16:45:10 :) 16:45:51 What about... Aleksejj Saushev 16:46:08 dang, all the magic is gone out of it. 16:47:17 is the Pelc Forth PDF a good resource? seems to be; i've read most of Starting Forth, but it's pretty brief / sketchy on specifics. 16:48:38 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 16:49:01 --- nick: snoopy_1711 -> Snoopy42 16:57:37 zpg, I haven't read the whole of Pelc's book. 17:01:13 I doubt it'll do any damage, give it a try. You're the beginner, so you're better positioned to review it. 17:12:30 --- quit: snowrichard ("Leaving") 17:21:45 --- join: erider (n=erider@unaffiliated/erider) joined #forth 17:22:02 hi 17:22:07 hi erider 17:22:22 Q are you good with gdb? 17:22:48 erider, I don't use symbolic debuggers, as a rule. So no. 17:25:37 ok thanks 17:26:03 In fact I can't remember when I last did. 17:27:32 What are you working on? 17:31:11 I'm working on the run-time code for a macro thingy 17:31:33 Not in Forth, I take it. 17:34:02 well the code we are write is in C but we are going to use rx-core for our compiler 17:37:04 s/write/writing 17:40:21 I'm confused 17:40:43 /usr/bin/ruby -I /usr/lib/ruby/gems/1.8/gems/mongrel-0.3.13.4/lib ./jason.rb 17:40:44 works fine 17:40:58 but if I paste that to the first line of jason.rb 17:41:05 with the #! thing, it doesn't work 17:41:20 ie jason.rb starts with this line: #! /usr/bin/ruby -I /usr/lib/ruby/gems/1.8/gems/mongrel-0.3.13.4/lib 17:41:26 ./jason.rb 17:41:50 fails. the process listing looks exactly the same, but ruby acts as if I hadn't passed that option 17:42:28 Try passing something completely bogus on the #! line 17:42:42 Test the theory. Create a shell script that does #!/bin/bash echo foo If foo does not echo, then there's no parameter passing on the shebang line. 17:42:59 Right. Same idea. See if the parameters are getting passed at all. As I recall it they don't. 17:43:05 /usr/bin/ruby: No such file or directory -- fooooo bat -I /usr/lib/ruby/gems/1.8/gems/mongrel-0.3.13.4/lib (LoadError) 17:43:08 it gets that 17:43:36 that's from this line: #! /usr/bin/ruby fooooo bat -I /usr/lib/ruby/gems/1.8/gems/mongrel-0.3.13.4/lib 17:43:53 hmmm... maybe it's passing it all as one parameter 17:43:59 Could be. 17:48:17 Try -I with no space before the / 17:49:10 yeah, that works 17:49:15 it appears to only pass one parameter 17:49:23 this explains why it looked the same in the precess listing 17:49:33 Looks that way here too under FreeBSD, except on mine it passes only the first space-delimited parameter only. 17:49:51 weird 17:50:36 Shells are odd creatures. I'm always surprised to see people writing large scripts in shell languages. 17:50:56 does this have to do with shells? 17:51:05 I thought it was the kernel 17:51:09 Yeah, the #! thing is all about the shell. 17:51:41 but... I thought you could call exec() from C and pass the filename of such a script 17:51:45 does that run a shell? 17:52:01 I'd have to check. I think it must. 17:52:06 I thought #! files were an executable file format accepted by the kernel 17:52:44 That would surprise me. 17:54:27 Dug into it. Looks like the kernel does indeed recognize #! as a magic number. 17:56:13 What happens then I'm not sure. I'm not sure it's standard throughout. It may pass the script to the default shell, and subsequent processing happens from there. But I haven't found a definitive answer yet. 17:57:53 Some stuff here: http://www.in-ulm.de/~mascheck/various/shebang/ about the maximum length of a #! line. 17:59:27 Wow, look at the table of variations. 18:00:52 Shell-agnostic, so it must be kernel-handled, as you say. 18:05:42 nasty 18:06:40 And the entire file is passed to the program after the #!, so that program has to ignore the #! line. #! is a defined word in Gforth, for instance, it's a comment alias. 18:42:33 --- quit: madgarden ("?OUT OF DATA ERROR") 18:44:00 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 18:44:16 --- join: timlarson_ (n=timlarso@user-12l325b.cable.mindspring.com) joined #forth 18:52:18 --- quit: timlarson_ ("Leaving") 18:52:59 --- join: timlarson_ (n=timlarso@user-12l325b.cable.mindspring.com) joined #forth 19:08:56 --- join: fridge (n=fridge@dsl-220-253-77-54.NSW.netspace.net.au) joined #forth 19:14:37 --- quit: fridge () 19:20:28 --- quit: vatic ("*poof*") 19:26:27 gn 19:28:25 --- quit: timlarson_ ("Leaving") 19:30:40 --- join: timlarson (n=timlarso@user-12l325b.cable.mindspring.com) joined #forth 20:24:59 heading to bed, but i believe the magic number simply allows the script to be run as an executable, but instead of being treated as a real executable (binary) it's instead passed to the programme listed in the shebang line. 20:25:47 i.e., the magic number allows for executable transparency, but simply passes control to the listed programme. i've written small programmes that can take files as arguments, and called the programmes from my own shell script. 20:27:04 erm, s/shell// 20:27:37 right. Actual operation varies quite a bit between OS's. 20:29:10 indeed. in a unix environment, though, the magic number #! (in hex) is simply a flag to say, exec this programme with this file as an argument. 20:29:53 Quartus_: not sure if you saw my query response since you're now _d again, but -- "only just saw this. sure thing, sounds like a useful venture." in response to the forth book, etc. 20:29:57 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 20:30:12 the page I referenced show significant variation in the way arguments are passed, even among unix variants. 20:30:32 zpg, thanks. 20:30:37 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 20:32:40 ah ok, haven't checked that out. 4:33am, and i don't want to miss most of saturday, so ought to head off shortly. 20:32:47 though i've had a swing to oddly awake again. 20:34:01 in terms of forth, i've found that the mixture of extensibility and abstraction is curiously blended with low level access and functionality. there is an elegance to composing a programme comparable with my lisp and smalltalk experience, while at the same time you've got far more control over the VM. at this point, the elegance is beginning to shine through, while the barer internals are still hard to reconcile with implementing 20:34:01 abstract concepts. 20:35:17 a good example is string copying. i go from writing a high-ish level function to toying with address units. i'm still in a lisp way of thinking totally abstractly, so the question becomes how do i learn to think in terms of the VM too. that's the hiccup so far. when thinking of concept implementation (aside from the computer), i end up confusing myself over the lower level details. 20:35:57 also, my points of reference are first editions of the two Brodie books. Starting Forth is quite neat, though I didn't find I learnt much about using forth beyond basic examples and a good documenting of, say, branching functions. Thinking Forth I have yet to delve into. 20:36:14 it's better. 20:36:36 okay, shall check it out more in the next few days. 20:36:42 does what I say make any sense? 20:36:52 it does! 20:37:20 good good. 20:38:11 i think if i get a grasp on the lower-level, i'll really begin to appreciate forth. i can also see why those who persist love the language, those that treat it as 'another language' tend to drop it quite quickly. 20:38:31 but my list example alone (prompted my your code, as you'll recall) really inspires me to continue. 20:38:50 we get a fair few passing through seeking only a reason not to learn. 20:39:03 yeah, i've seen some of those examples. 20:39:11 an odd attitude, "why should i learn forth?" 20:39:54 i confess, i semi-approached it like that. it's natural to say "this looks interesting, but am i wasting my time?" but i think it's a question that you have ask yourself in the learning phase. it's no good asking people to answer for you. 20:40:20 Bolstering one's own self-assurance by the aggressive dismissal of things one does not understand. 20:40:25 indeed. 20:40:32 prevalent in every field. 20:41:16 yes. I've learned to spot it early. 20:42:44 as a flip-side to your query earlier, i'd be interested to know how you found learning forth in the absence of this useful resource. (obviously this applies to every domain, wikipedia-as-knowledge-base included) but even so. forth wasn't as tucked away 20 years ago i guess, it'll be intriguing to know how you came to it, if you self-taught, etc. 20:43:02 "useful resource" meaning #forth 20:43:10 i guess usenet was in place. 20:43:52 one thing I did in the early days was to download Forth archives from genie, compuserve, and usenet, and read every message. 20:45:45 helpful? what sort of problems do you remember having when learning forth? 20:46:22 took awhile to learn to factor well, and to keep stack use down. 20:46:52 had to learn the different 'times' that things can happen, what immediacy is, what postpone does. 20:47:42 * zpg` nods 20:49:42 yeah, i need to look into postpone soon, immediacy i have a vague grasp of. my understanding so far is that an immediate word is not called from a compiled definition that contains it; say we have : xxx ... ; immediate and : yyy ... xxx ... ; 20:50:05 xxx is executed immediately. 20:50:12 my understanding is that yyy doesn't compile in a reference to xxx, rather xxx is evaluated during the compilation of yyy and then is fixed in yyy. 20:50:28 or is that wrong? 20:50:34 I don't follow 'is then fixed iin yyy' 20:50:58 will yyy behave the same whether xxx is immediate or not? 20:51:13 xxx is immediate, so it executes instead of being compiled. It may take some action, or no action. 20:51:33 ( is immediate, for instance. 20:51:47 okay, i follow that 20:51:58 but if we have : yyy ( -- ) ; 20:52:12 ( won't be evaluated each time will it? once its done, it's done. 20:52:14 xxx might compile code into the definition under construction. 20:52:17 so yyy is essentially : yyy ; 20:52:37 yes, ( just parses up to ) and discards it. 20:52:44 yep, gotcha. 20:52:53 so i've got a grasp of immediate (like i said, tentative) 20:53:00 you around tomorrow? (or for me, later today) 20:53:08 i really ought to hit the sack now, encroaching on 5am 20:53:17 but xxx could print hello, ring a bell, display the stack, or compile other code. 20:53:22 indeed 20:53:26 that i follow 20:53:27 ok-- later! 20:53:36 neat. as usual, it's been a pleasure. 20:53:43 take care, night. 20:53:46 you bet. 20:53:49 --- quit: zpg` ("ERC Version 5.1.3 (IRC client for Emacs)") 21:15:19 --- quit: crc (Remote closed the connection) 21:16:50 --- join: crc (n=crc@pool-70-110-168-22.phil.east.verizon.net) joined #forth 21:17:04 --- mode: ChanServ set +o crc 21:29:33 --- quit: segher (Nick collision from services.) 21:29:43 --- join: segher (n=segher@dslb-084-056-182-069.pools.arcor-ip.net) joined #forth 22:13:22 --- quit: slava () 22:31:13 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 22:31:50 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 22:32:02 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 22:32:41 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 23:05:37 --- join: zvrba (n=zvrba@gampen.ifi.uio.no) joined #forth 23:21:02 --- part: zvrba left #forth 23:59:59 --- log: ended forth/06.10.13