00:00:00 --- log: started forth/05.11.26 01:08:36 --- join: Snoopy42 (i=snoopy_1@dslb-084-058-157-098.pools.arcor-ip.net) joined #forth 01:08:38 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-157-098.pools.arcor-ip.net) joined #forth 01:42:12 --- quit: Snoopy42 (Nick collision from services.) 01:42:18 --- nick: snoopy_1711 -> Snoopy42 01:42:30 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-157-098.pools.arcor-ip.net) joined #forth 01:42:37 --- quit: Snoopy42 (Nick collision from services.) 01:42:39 --- nick: snoopy_1711 -> Snoopy42 01:42:47 --- join: snoopy_1611 (i=snoopy_1@dslb-084-058-157-098.pools.arcor-ip.net) joined #forth 02:27:59 --- join: aum (n=aum@60-234-156-82.bitstream.orcon.net.nz) joined #forth 03:30:39 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 03:33:42 --- quit: aum () 03:33:58 I'm back... 03:36:10 --- join: nyingen (n=jeeves@216-39-182-234.ip.theriver.com) joined #forth 03:40:31 and I'm using 8bit for cells at the moment, because 1) the stack can be more memory friendly implemented on 8bit cpus 2) it somehows fits for me better to the concept of bytecode, knows the hell why. 3) 8 bit are the smallest widely used unit on computers, so it's easier to build with it datastructures than with only 16 bit, if you don't want to waste memory in the case of work with a theoretically memory limited system. 03:44:50 anyone here done anything with colorforth? 03:52:44 --- join: akebono (i=fujiwara@218.231.206.36.eo.eaccess.ne.jp) joined #forth 03:52:45 Quote: Let us live for the beauty of our own reality. -- Charles Lamb 04:23:30 --- join: akebono2 (i=fujiwara@218.231.206.36.eo.eaccess.ne.jp) joined #forth 04:23:36 Quote: Let us live for the beauty of our own reality. -- Charles Lamb 04:33:58 ny 04:34:10 nyingen : I have done things with colorforth. 04:40:35 --- quit: akebono (Read error: 110 (Connection timed out)) 04:41:31 --- quit: akebono2 ("Leaving") 04:58:28 --- quit: swalters_ (Read error: 104 (Connection reset by peer)) 05:05:49 --- join: swalters_ (n=swalters@6532183hfc82.tampabay.res.rr.com) joined #forth 05:55:04 --- quit: swalters_ (Read error: 104 (Connection reset by peer)) 05:55:07 --- join: swa_ters_ (n=swalters@6532183hfc82.tampabay.res.rr.com) joined #forth 05:56:30 --- join: thinkinginbinary (n=tom@pool-68-163-203-96.bos.east.verizon.net) joined #forth 05:57:40 Quartus: what does M* do? 06:07:55 Mixed-precision multiplication. 06:08:40 Multiplies two single cells to produce a double-cell result. 06:08:57 I'll be here only intermittently for a bit. 06:12:05 --- join: thinking1nbinary (n=tom@pool-68-163-229-26.bos.east.verizon.net) joined #forth 06:28:04 --- join: PoppaVic (n=pete@0-1pool75-225.nas24.chicago4.il.us.da.qwest.net) joined #forth 06:28:49 --- quit: thinkinginbinary (Read error: 110 (Connection timed out)) 06:39:34 --- join: FiLa (i=LNIX@12-208-98-237.client.insightBB.com) joined #forth 06:49:29 --- nick: thinking1nbinary -> thinkinginbinary 06:52:33 hello! 06:53:29 howdy 06:53:45 PoppaVic: 71% done with CORE, things are going well. 06:53:54 good 06:54:23 PoppaVic: yeah, I should work on the UI for a little... 06:54:57 PoppaVic: I might actually implement BLOCKS instead of files because they would map well to the phone's "record management system" 06:55:20 iirc, the block interface is still required, isn't it? 06:55:35 ..or did they finally make that an option? 06:55:48 PoppaVic: nope, it's in the optional BLOCK wordset 06:56:03 PoppaVic: section 7 06:57:22 I'm considering my options here... I'm beginning to think I need an IF word for the stupid datafile. Or (basically) good ol ... ? ... : ... 06:57:32 PoppaVic: ? : is good 06:57:45 too difficult to merge into current design 06:57:54 PoppaVic: well ? : isn't forthish really 06:58:24 PoppaVic: you could do conditional subroutine calls, like IF FOO, and then it calls FOO. Then you don't have to parse THEN and ELSE. 06:58:29 it'd be of the form $FX[if] (expression) then (expression) else (expression) ) 06:58:48 PoppaVic: what's $FX? 06:58:50 nono.. this is just the datafile for the intel-gathering phase 06:59:03 it's the "section" where functions would live 06:59:30 I may end up abandoning that "feature" 07:00:35 PoppaVic: how do you edit text in a block? an editor? 07:00:37 However, it sure helps to clue you that "this is not a string" 07:00:58 yes, you'd include a really shitty editor and add an optional block-editor 07:01:08 It's prolly listed in dpans 07:01:36 PoppaVic: it mentions "SCR", which keeps track of the last LISTed block, suggesting that other routines would edit the block using that variable to know which one it is 07:01:55 PoppaVic: ah, it's in PROGRAMMING-TOOLS. 07:01:55 yeah.. THe lack of a nice block-editor is horrid 07:02:07 Frankly, I hated blocks 07:02:27 PoppaVic: I'm thinking I will make the block editor a native call that opens the text in a text box on the phone. It's better than writing my own editor. 07:02:37 PoppaVic: that would be much nicer. 07:02:40 whomsoever, dude 07:02:43 PoppaVic: lol 07:02:56 PoppaVic: I mean why write a shitty editor when you can create a real textbox with a few lines of code? 07:03:45 PoppaVic: do you know the internals of MARKER? 07:03:58 as in forget and friends? 07:04:07 it varies all over 07:04:11 PoppaVic: no, just MARKER. does it erase code, or just defs? 07:04:33 PoppaVic: because my code and data will be fragmented (combined data space) 07:04:38 as I said - it varies all over. It's a really sloppy/flakey system. 07:05:04 PoppaVic: well I can do it easily, but it will have memory "leaks". 07:05:12 PoppaVic: not worth the trouble 07:05:27 it can cause issues, particularly if you use DEFER. 07:05:31 PoppaVic: is there a software "reset button" in FORTH that will clear everything, data, code, dictionary, etc...? 07:05:47 maybe restart 07:06:08 Personally, I find it easiest to ^X and then rerun 07:06:17 er, ^C even 07:06:35 PoppaVic: yeah but my phone doesn't have a control key ;-) 07:06:50 PoppaVic: I like blocks, they will be the perfect system for my phone. 07:07:08 PoppaVic: I might do files too (it's got a file API, I dunno if unsigned code can access it) 07:07:37 PoppaVic: (don't get me started on code signing... there's a pile of features I can't write MY OWN CODE to access on MY OWN PHONE without paying SOME STUPID COMPANY to SIGN my FREAKING CODE!) 07:07:59 PoppaVic: (including such mundane stuff as NON-HTTP NETWORKING! I want Gopher!) 07:08:30 PoppaVic: 07:08:46 good, I'm going blind 07:08:51 PoppaVic: lol 07:09:30 PoppaVic: are there primitive functions to convert single digits from text to numbers and back? (ans doesn't specify them, but I assume there's a traditional name?) 07:09:48 sure there are.. look int <# # #> 07:09:59 into (and add HOLD) 07:10:27 I prefer printf, but I'm a curmudgeon. 07:10:28 PoppaVic: okay 07:10:34 PoppaVic: your forth has printf? 07:10:37 PoppaVic: that's a good idea 07:10:47 prolly does - I was thinking C ;-) 07:10:52 PoppaVic: lol 07:11:15 PoppaVic: in Java it's probably a 30M "Sun Java Locale-Specific Enterprise Number Processing and Formatting SDK" ;-) 07:11:21 Some of the guys here are very comfortable with <# and friend. 07:12:17 PoppaVic: is there a minimum requirement for the buffer size of WORD? 07:12:38 hmm.. I got a baad feeling that adding if/then/else would be a logistics nightmare. 07:12:44 check dpans 07:12:48 PoppaVic: is this a standard compiled forth? 07:12:59 what 'this'? 07:13:04 no. 07:13:07 wait a sec.. 07:13:09 PoppaVic: the thing you're working on. 07:13:24 brb 07:13:40 http://rafb.net/paste/results/LczqcR72.html 07:13:40 see url 07:18:25 there, now my cpu fan is cleaner 07:20:42 see above url 07:20:46 ok 07:23:14 PoppaVic: looks interesting 07:23:40 Yeah.. Folks bitched about the old format, so.. This is like the 3rd attempt. 07:23:45 PoppaVic: lol 07:24:10 THe overriding concern isthe KISS Principle. 07:24:13 PoppaVic: i don't think any autotools-type thing will ever please even 50% of the people, since it has to be pretty intuitive for people to like it 07:24:29 PoppaVic: like I find autotools absurd, it's waaaay too many tacked-on steps 07:24:45 Yeah, and using at 3 semantic systems 07:24:49 at least 07:25:03 PoppaVic: i mean they're all well-defined, and serve a separate purpose, but, yeah, it's 3 things to learn 07:25:13 PoppaVic: most of my programs are ant-powered 07:25:36 PoppaVic: ant is nice, it's an [/me ducks] XML-based build system for [/me runs for the door] Java. 07:25:43 I plan to use 1 datafile form. And there will be a systemwide, groupwide, user-possible, and build-specific form 07:25:49 PoppaVic: it's overengineered, as are XML and Java, but it pairs well with JAva. 07:26:19 ..Then, Metabuilder itself will be a forth-like pseudo-shell with similarities to Make 07:26:30 PoppaVic: cool 07:26:56 1 for of datafile; 1 form and REQUIRED platform for the build. Anything else is an option I'd discourage. 07:27:05 for of/form of 07:29:47 Of course, the questions become: What should the systemic datafile manage? And, what do - should we - allow group/user/app programs to "override" (if anything). 07:30:21 PoppaVic: that would *ROCK*! 07:30:22 I've always been extremely irked with every distro because of related issues. 07:30:35 PoppaVic: If I could globally set in /etc/thingy.conf where I want my programs installed! 07:30:42 sure. 07:30:47 ANd it SHOULD work that way 07:30:48 PoppaVic: and then in ~/.thingy.conf, set ~/bin for my own programs 07:30:53 PoppaVic: this is AWESOME! 07:30:53 yep 07:31:35 I've been trying to write it such that we require minimal human-input for configuring. I may have to admit that the human needs a couple clues. 07:32:16 For example: "is this an ELF machine, or are we use Mach-o and their special libs?" 07:32:39 PoppaVic: run `file' on some random (e.g. gcc) binary. 07:32:42 Perhaps breaking out the questions further 07:32:46 PoppaVic: unless it's going to be used from cross-compiling. 07:33:09 yes, see the url ;-) I do use 'file' - which is not necessarily installed. 07:33:13 PoppaVic: oh ok 07:33:18 PoppaVic: sorry, wasn't paying attention :-\ 07:33:26 and, remember: POSIX is weird anyway 07:33:49 Yes.. I would absolutely LOVE thinking of HOST and TARGET stuff. 07:34:03 PoppaVic: yeah, have you ever read the man pages for POSIX stuff? they're not man pages, they're specs. it's hideous 07:34:32 Perhaps... hmm Perhaps we can systemic-install the HOST file, and allow folks to generate TARGET... 07:34:49 PoppaVic: Assume the HOST is the TARGET, and allow specifying another file if it's different 07:34:53 Yes, there are several POSIX stds - and everyone supports bits and pieces 07:34:56 PoppaVic: you don't wanna complicate things for regular compilation 07:35:04 right, that was my point 07:35:09 PoppaVic: oh sorry 07:35:17 the Systemic file wouldbe "that host" 07:35:19 --- join: akebono (i=fujiwara@218.231.206.36.eo.eaccess.ne.jp) joined #forth 07:35:19 Quote: A book worth reading is worth buying. -- John Ruskin 07:35:21 hi 07:35:33 ..but, damn - defining for a TARGET would be nice. 07:36:04 akebono: A book that costs more than a case of beer is getting goddamned prices -- PoppaVic 07:36:12 prices/pricey 07:37:18 Rusking could afford to buy any expensive books. 07:37:26 prolly 07:37:27 Ruskin 07:37:49 Buy used, and give away or sell-cheap - any you can't use regular 07:38:08 As a novice, can I make another naive question on forth? 07:38:31 it's a very simple question on ALLOT 07:38:31 I used to donate to the library.. Nowadays, I'd burn it: the fuckers threw out the 5 early years of Byte I gave them. 07:38:36 ask 07:38:51 What does allot really do? 07:39:00 does it just updated the dictionary pointer? 07:39:01 it advances the dict-space ptr 07:39:16 basically - it's a half-assed method of doing malloc() 07:39:50 so, we can rely on the address we get from 07:39:57 here, 07:40:06 "here" ? 07:40:10 "HERE" 07:40:16 yes, that system is typical - yes. 07:40:33 I never really liked it, but - they use it 07:40:34 until the next ALLOT is called. 07:40:54 or they comma something, or build a header, or - whatever 07:41:16 so, if you copy a char string 07:41:31 you damn well better be in the buffer 07:41:33 from a pad temporary space to a variable length memory area, 07:41:48 yeah 07:41:59 first use HERE, to find the last position 07:42:12 akebono: try it 07:42:41 and cmove the pad contents to the address, then use ALLOT by the number of bytes to update the pointer. 07:42:47 worst that happens is a crash and burn while testing 07:42:55 nonono! 07:42:59 you'd allot first 07:43:04 --- join: reuben (n=ben@leb-cr1-220-16.peak.org) joined #forth 07:43:05 --- quit: FiLa (Remote closed the connection) 07:43:19 you can almost never be sure how a system piddles all over the memory 07:43:34 I installed forthos (derived from eforth), and now I would like to display the stack. How do I do that? 07:43:45 try .s 07:44:02 .s that doesn't look right.. i had just put 3 numbers on the stack 07:44:49 1 2 3 .s cr <3> 1 2 3 07:44:49 ok 07:45:12 perhaps forthos is defective 07:46:35 but how can one dynamically allocate a memory by using allot? 07:47:10 you'd use alloc or some such 07:47:12 Once allot is called, the dictionary pointer is incremented. 07:47:31 ah, 07:47:34 alloc. 07:47:51 in the forth tutorial i am reading, it says to show a stack with .S 07:47:55 but forthos does not know that word 07:47:57 as a rule, forths are as fucked up as POSIX - so, (like POSIX), DPANS becomes sorta' a std 07:48:50 generally, I use gforth. PFE is sorta' interesting, and FICL meshes well with C 07:49:14 Since I mostly tinker, I use gcc and run gforth as needed. 07:49:20 i am eventually hoping to get forth running on a z80, but i want to play with it on my PC first to get a feel for it 07:49:37 well, trust me: there are a ton of Z80 forths 07:49:38 play with it as an OS, I mean 07:49:47 it will never be an OS 07:50:23 in the Days Of Old, sure - Forth thought it was the OS - it wasn't. 07:51:10 PoppaVic: color forth's an OS 07:51:16 bah 07:51:25 PoppaVic: ...humbug 07:51:56 If it were, it'd be able to play with perl, sh, m4, gcc, modula, libs, shared-libs, plugins, objectfiles, etc 07:52:21 an OS is one complex mofo 07:52:32 ..made up of a LOT of complex lil' mofo 07:52:48 years ago i made a 400k linux kernel, hacked up my own little C library, and hacked up bzip2 to sit behind file operations, and made a little book reader, and made a 1.44mb floppy that would boot up and let one read the bible 07:52:57 it was a fun little project, but 400k seems a little overkill 07:53:06 a friend of mine wants to make a roguelike on the ti86 07:53:33 so basicall i am looking into forth to lose some weight 07:53:38 People in hell want icewater, too 07:53:38 y 07:53:55 Forth is really, really handy 07:54:02 ..an OS it ain't 07:54:14 i found an implementation of kermit written in forth 07:54:31 of course, it's ancient 07:54:32 forthos includes unix-like file utilities and a vi-like block editor 07:54:41 doesn't matter. 07:54:52 vi is not an OS (emacs may be ;-) 07:55:01 if i can have files, an editor, a terminal emulator, and file transfer over a serial port, then i am part way there 07:55:13 just piling a ton of utilities into a language does NOT make it an OS 07:55:41 in the strict definition of the term, an OS just provides facilities to run programs 07:55:51 "other programs" 07:55:56 such as kermit 07:56:02 * PoppaVic sighs 07:56:10 OK, well - good luck with that 07:56:27 did you drop your head down when you sighed? 08:10:34 PoppaVic: are number formats built backwards? from right to left? 08:10:44 What do you mean? 08:10:57 oh.. the <# stuff? 08:11:15 I think dpans documents it - I never liked it, as I said. 08:11:24 PoppaVic: # is supposed to "Divide the number by the number in BASE giving...the remainder n. Convert n to [a char] and add the...character to the *beginning* of the pictured numeric output string." 08:11:25 ..it's "per digit" 08:11:43 yeah, that sounds typically insane 08:11:56 PoppaVic: forth is postfix, why wouldn't formats be too? 08:12:04 PoppaVic: trying to do it forwards in a procedural way wouldn't work. 08:12:10 make sure you check on HOLD, too 08:12:12 PoppaVic: I mean how does it know what the first digit would be? 08:12:56 in C, I'd break out each digit/base and push or list them, then pop or run the list in reverse - but thats just me ;-> 08:13:03 PoppaVic: wait, if you start a <#, does the buffer from the last one get reused? 08:13:21 I'm not sure - as I said, I never liked the system. 08:13:45 see d.r 08:13:45 : d.r 08:13:45 >r tuck dabs <<# #s rot sign #> r> over - spaces type #>> ; ok 08:13:55 PoppaVic: what's <<# ? 08:14:08 see <<# 08:14:08 : <<# 08:14:08 holdend @ holdptr @ - hold holdptr @ holdend ! ; ok 08:14:26 Are you confused and irked yet? ;-) 08:14:26 PoppaVic: i don't mean "what is the code", i mean "what is it supposed to do?" 08:14:41 no idea, I told you: I hate the mess 08:14:47 PoppaVic: lol 08:14:51 PoppaVic: well mine will be simpler 08:14:53 I'd need to crank up the gforth info-file 08:15:04 PoppaVic: no need 08:15:30 yeah - it's a horrific mess, tomy mind. Some folks love it all 08:15:43 PoppaVic: is this right? : DIGIT>CHAR BASE @ MOD DUP 10 >= IF 65 + ELSE 48 + THEN ; 08:15:51 PoppaVic: well, i'm just aiming for CORE ;-) 08:16:05 no idea if right - no idea what'shappening 08:16:31 PoppaVic: it converts a number (e.g. 123) to the character representation of the last digit, in BASE (e.g., "3") 08:16:38 ok 08:16:54 remember, ASCII is mostly a promise ;-) 08:17:06 PoppaVic: my box and phone both use UTF-8 :-) 08:17:18 yer scaring me more and more 08:17:36 PoppaVic: hey, not my choice, Java uses UTF (8 and 16) 08:17:46 I do NOT want to know 08:17:47 PoppaVic: and I wanted to be able to see the characters in my Japanese spam. 08:17:51 PoppaVic: ;-) 08:17:51 eww 08:17:56 PoppaVic: ^^ funny 08:18:59 see # 08:18:59 : # 08:18:59 base @ ud/mod rot 9 over < 08:18:59 IF 7 + 08:18:59 THEN 08:19:00 48 + hold ; ok 08:19:26 Messy as hell 08:19:33 PoppaVic: yeah, mine was neater :-b 08:19:45 PoppaVic: and i could have done this: 08:20:46 PoppaVic: : # base @ mod 10 < if [char] 0 + else 10 - [char] A + then hold ; 08:21:20 PoppaVic: mine is very clear: take last digit (base @ mod), if < 10, use digit starting at "0" else subtract 10 and use digit starting at "A". 08:21:29 PoppaVic: but theirs is more efficient 08:21:35 I just dislike the mess 08:21:41 PoppaVic: yeah 08:23:02 Quartus: you around? 08:25:02 gforth 08:25:02 1234. .s 08:25:02 1234. .s <2> 1234 0 ok 08:25:02 <# #s #> .s <2> 116730 4 ok 08:25:02 type 1234 ok 08:25:31 I find that mess disgusting 08:25:47 i know next to nothing about forth.. does the ansi standard specify .s? 08:25:54 reuben: yes, it's in programming-tools 08:25:56 reuben: not core 08:26:19 PoppaVic: what's the s in #s stand for? 08:26:21 1234. cr <# # # # # #> cr .s 08:26:21 <2> 116730 4 ok 08:26:21 type 1234 ok 08:26:30 process the rest 08:26:47 PoppaVic: i know what it does, but why #s, why not #q, #n, #z, #x? 08:26:56 #s(tring) ? 08:27:01 PoppaVic: ok 08:27:14 It's a whore 08:27:18 PoppaVic: lol 08:27:26 i see, it is optional 08:27:36 ..and, it requires doubles 08:27:47 reuben: .S requires doubles? 08:27:55 PoppaVic: do you mean <# ... #> or .S? 08:27:55 the <# does 08:28:00 PoppaVic: it does? 08:28:03 yep 08:28:10 hence, the 1234. 08:28:18 PoppaVic: the . makes it a double? 08:28:24 yep 08:28:31 PoppaVic: is that "official"? 08:28:44 or, you can do 1234 s>d or some other silliness 08:28:48 http://www.taygeta.com/forth/dpans15.htm#15.6.1.0220 08:28:52 PoppaVic: that's not silly, it's clearer 08:28:59 not to me 08:29:15 reuben: yeah i know 08:31:42 what's the traditional way to implement the buffers used for PAD, WORD, and #>? 08:32:02 are they their own buffers, or the same buffer, or just stored after HERE? 08:32:50 In RetroForth, PAD is a floating buffer stored above HERE 08:32:53 ANS says that WORD and #> *may* overlap in memory 08:32:54 check (again) dpans. 08:33:02 crc: yeah, typical 08:33:27 crc: but ANS says WORD and #> can't use PAD... do they share a dedicated buffer? 08:33:30 I don't have the <# # #S #> words yet; but whenever I add them to the ans.forth module; they'll have a separate buffer 08:33:38 crc: do you have WORD? 08:33:47 Yes, but I call it PARSE 08:33:48 crc: you're allowed to share them. 08:33:55 it parses in the TIB 08:33:56 crc: so what is your PARSE called? 08:34:02 crc: oh 08:34:07 crc: so you have PARSE, not WORD. 08:34:08 My forth is not ANS compliant :) 08:34:12 crc: that's okay 08:34:32 I've always felt, for all it's simplicity, forth parsing/strings were ungodly. 08:34:47 PoppaVic: yeah, but what can you replace it with? 08:34:58 PoppaVic: putting strings on the stack would ruin the uniform cell size 08:35:10 not sure, but then - I am cogitating a "stack per type" thing 08:35:35 PoppaVic: (unless you kept them this way: ! d l r o w BL , o l l e H 13, with the length on top 08:35:39 PoppaVic: hmm, interesting 08:35:52 PoppaVic: but then your string stack would require a lot of manipulation 08:36:14 I've almost concluded that I really, really dislike mixed & unidentifiable datum on a single stack 08:36:46 thinkinginbinary: it might just be as simple as an ID-stack paralleling the datum 08:36:46 PoppaVic: part of that is what gives forth its amazing simplicity. 08:36:55 PoppaVic: ah, now that would be cool 08:37:10 PoppaVic: like { num, 0 }, { addr, 123 }, { string, 123, 6 }? 08:37:15 PoppaVic: so like types? 08:37:23 yes, simple is lovely. Simple and the inability to id/track interactively means I might as well compile. 08:37:55 or even just leave the dstack alone and add an idstack of {foo, bar, etc} 08:37:57 PoppaVic: i should add a debug option to my forth system that adds and checks magic numbers on all the internal structures put on the stack while compiling 08:38:11 well.. 08:38:12 PoppaVic: take a 32-bit system, use 16 bits for each 08:38:12 * PoppaVic sighs 08:38:20 PoppaVic: or 8 and 24, but that's harder 08:38:20 There are issues on the issues 08:38:46 ...this sorta' tracking is mostly of use for interactivity and precompile-testing 08:38:47 I assume a good way to implement <# ... #> would be to build the string down from the top of data memory? 08:39:01 PoppaVic: yeah, it would be optional, to speed things up. 08:39:23 ..once a working word/app runs, it's not much of an issue: just do yer job, yah know? 08:39:30 PoppaVic: yeah 08:39:54 PoppaVic: right, it would be only during compile 08:40:16 So, I sorta' think I'm leaning toward a variant of IDE for "interactive" and compiled/relocatable/etc for "this works, burn the bitch" 08:41:21 I get these weird feelings over the whole mess.. Terms like interpreter, preprocessor, compiler, fractal, object, lib, etc.. 08:42:01 And, I get so goDAMNED tired of folks talking speed and asm 08:43:10 I believe forthish is the key to "A better world", but getting there is painful. 08:44:36 oh yeah.. PoppaVic you should found a new religion 08:48:39 brb - lemme' recycle the isp... 08:48:41 --- quit: PoppaVic ("Pulls the pin...") 08:50:14 --- join: PoppaVic (n=pete@0-1pool75-96.nas24.chicago4.il.us.da.qwest.net) joined #forth 08:50:19 PoppaVic: welcome back 08:50:28 Tanks 08:50:28 PoppaVic: what ISP do you use anyway, that you have to reconnect so often? 08:50:29 --- quit: akebono (Read error: 110 (Connection timed out)) 08:50:46 all my ISP's recycle at about 3 hours 08:50:51 PoppaVic: dialup? 08:51:00 ..it's irksome for downloads; yeah 08:51:26 PoppaVic: eww 08:52:09 we can't DSL, and I won't pay for cable 08:52:16 PoppaVic: cable is absurd 08:52:46 PoppaVic: it's too bad, I get a good deal on DSL... Verizon, 3.0Mbit/768kbit, for $30, minus $5 because we get phone service, so $25 a month--about as much as AOL dialup ;-) 08:53:05 PoppaVic: and you can get 384kbit/128kbit for $20 or $15. 08:53:10 and, Amerischreck STILL thinks I owe them $500, so - I not only won't pay, I'd also never again get a second line 08:53:28 PoppaVic: $500 for what? 08:53:34 yeah, DSL is like 100yds out of range 08:53:41 PoppaVic: aww, that's too bad. 08:53:57 PoppaVic: I'm at 7650 feet, I think 08:54:16 PoppaVic: oh, 7580. 08:54:18 when I had my apt, they crossed lines with another res.. He called AZ daily - to his dad - I got billed his outgoing, he and I switched incoming - for over a month 08:54:30 PoppaVic: oh that's *really* annoying. 08:54:48 PoppaVic: did he pay you back for it? 08:54:56 yep. I told them and told them - and they STILL have me listed as owing them.. Not in my fuckin' lifetime. 08:55:16 PoppaVic: well your neighbor/worst enemy should pay you, not the phone company. 08:55:23 ..and all this, while we had a 2nd line they kept disconnecting 08:55:23 PoppaVic: small claims court? 08:55:37 nope - I'll go to my grave not paying them 08:55:55 PoppaVic: well, at least get the money back from your neighbor, go buy a Mac mini with it or something ;-) 08:56:08 that was nearly a decade ago 08:56:11 PoppaVic: Oh. 08:56:12 PoppaVic: lol 08:57:25 I dunno' why I should have to fight them for stupid billings: talking to more and more stupid underlings My entire family lived no more than 30 minutes away 08:59:02 Soo, I'm sorta' a "fugitive" and they are never going to see a dime from me. I figure I COULD owe them under a C-note, but they're nuts. 08:59:54 PoppaVic: pay them in pennies, $0.10 a day http://www.theglobeandmail.com/servlet/story/RTGAM.20051123.wxvisa23/BNStory/Business/ 09:00:10 I'm not even bothering. 09:00:23 PoppaVic: meh 09:00:36 I've even heard that judges and biz can refuse to accept pennies and dimes - they can REFUSE CASH 09:01:01 PoppaVic: that's stupid 09:01:08 yep 09:01:12 PoppaVic: cash is "legal tender for all debts, public and private"! 09:01:21 PoppaVic: i mean, that's PLAINLY IDIOTIC! 09:01:24 Tells me a lot about "legal tender" 09:01:48 PoppaVic: they don't want the money, they want to hassle you 09:01:57 I've several friends.. My powder, primers, cases, primers and reloader. 09:02:01 Yep. 09:02:45 I am, frankly, watching the collapse with some trepidation and interest. 09:03:31 PoppaVic: never underestimate the power of using a capacitor to send a 100,000 volt spike down the phone line, either... ;-) 09:03:49 shit, they don't need my help 09:04:14 They are forever screwing the phones 09:05:18 http://rafb.net/paste/results/mGFkwW45.html 09:05:18 PoppaVic: lol, but 100000v will mess things up for real, not just temporarily ;-) 09:05:18 above is latest 09:05:24 PoppaVic: if you're really looking for revenge 09:05:28 see [ EXAMPLE ] 09:05:42 "revenge" is really not corporate 09:05:53 --- quit: Snoopy42 () 09:05:59 --- nick: snoopy_1611 -> Snoopy42 09:09:08 thinkinginbinary: is the EXAMPLE section explaining a bit more? 09:09:15 PoppaVic: lemme take a look 09:10:06 PoppaVic: much better, especially the part on literals 09:10:12 cool 09:10:35 PoppaVic: it's much clearer what things do, before it was hard to tell whether the literals used in your examples were part of the code 09:10:42 PoppaVic: (they sounded like explanations of stuff) 09:10:46 Trying to catch and cogitate all the variations, but strings are slick 09:11:07 right. This format should be as clear as possible. 09:11:39 PoppaVic: all right, i'm allocating a 256-byte "MISC" buffer for WORD and #> 09:11:49 I might even nuke EXAMPLE[a] 09:12:18 PoppaVic: nah, EXAMPLE[a] is required for EXAMPLE[b] to make sense 09:12:19 hmm. I rarely use 256 for other than a potential word 09:12:21 PoppaVic: it looks good 09:12:40 PoppaVic: too big or too small? and don't forget, i'm building for a small platform, and each cell is a 32-bit signed int. 09:12:41 thinkinginbinary: no, I mean for US - losing the =".." 09:12:49 PoppaVic: oh ok 09:12:52 hehehe 09:12:58 32-bit is LARGE 09:13:08 PoppaVic: yeah, I guess there are shorts... 09:13:11 PoppaVic: BAM! 09:13:16 64-bit are MONSTERS 09:13:29 PoppaVic: if I used shorts, then I could convert short <-> char and do signed/unsigned math easily! and ints would be double cells! 09:13:43 a cell should be unsigned or a union 09:13:53 PoppaVic: oh 09:14:01 PoppaVic: but items on the stack are signed 09:14:10 shoot me an email, I'll send you a tarball to peruse 09:14:21 pfv@hypercon.net 09:14:27 no. 09:14:35 items on the stack are just cells 09:14:53 PoppaVic: oh, but i'm sure you can use negative literals... really? 09:15:10 a 'cell' being whatever sized 'int' you live with. It's sad, but it's true 09:15:38 PoppaVic: well, a short would be good, because a short is a 16-bit signed int and a char is a 16-bit unsigned int. That would make math easier. 09:15:48 C handled it all poorly and half-assed; Forth did worse. It's just a mess 09:16:17 PoppaVic: sent email 09:16:32 brb 09:17:49 cool 09:19:34 --- join: akebono (i=fujiwara@218.231.206.36.eo.eaccess.ne.jp) joined #forth 09:19:35 Quote: A book worth reading is worth buying. -- John Ruskin 09:20:08 * PoppaVic sighs 09:20:53 Hey. 09:21:46 * akebono is away: 多忙です 09:22:31 --- quit: akebono (Client Quit) 09:33:28 PoppaVic: see akebono's away message? 09:33:37 I ignored him 09:33:52 PoppaVic: why? 09:34:02 I got tired of the useless quotes 09:34:08 PoppaVic: lol 09:34:16 PoppaVic: anyway, his away message is in UTF-8 09:34:21 figures 09:34:24 PoppaVic: yeah. 09:34:28 ..another reason to avoid it 09:34:44 PoppaVic: but if you *weren't* ignoring him, wouldn't you rather see the characters than just boxes? 09:34:54 I'd rather see the ascii 09:35:35 So far - in my experience - fonts and such are really better off in html. 09:35:39 PoppaVic: but they would be random high-ASCII characters... 09:35:47 that'd be sad 09:36:15 PoppaVic: yeah, that's why they invented UTF-8. 09:36:20 Fine 09:36:30 PoppaVic: so you can pretend it's ASCII, but still use it to show any of the gazillions of character sets 09:36:32 thinkinginbinary, any progress? 09:36:33 Now show me one good HTML widget 09:36:55 Quartus: yeah, 73.68% done with CORE, working on numeric conversion 09:37:00 PoppaVic: what do you mean widget? 09:37:03 Good. Any roadblocks? 09:37:14 thinkinginbinary: bear in mind, I've read "Shogun" repeatedly. WOrks fine. 09:37:28 Quartus: I assume WORD and #> can share a buffer? 09:37:46 I can't recall if the Standard allows it. I wouldn't, it's not much memory. 09:37:52 Quartus: mostly the <# and "where is it" issues 09:38:01 I dedicate buffers for each. 09:38:04 Quartus: okay 09:38:14 34 bytes for a 16-bit Forth, for the picnum stuff. 09:38:18 think "recursive" 09:38:34 PoppaVic: think "oh shit, my return stack is only 16 levels deep" 09:38:37 PoppaVic: ;-) 09:38:45 yeah - that's a scream and die 09:39:13 Quartus: and I realized, Java shorts and chars are both 16-bits. A short would be better (smaller), and then I could convert easily between short and char for signed or unsigned arithmetic! 09:39:56 Quartus: do you think I should switch again? 09:40:25 java is not C, or asm, or MC 09:40:28 Quartus: do you build numbers from the top down? 09:40:40 PoppaVic: then what would be recursive? 09:40:49 Quartus: like starting at the end of the buffer? 09:40:56 trust me: yer talking about FFI 09:41:06 PoppaVic: ??? 09:41:15 Foreign Function Interface 09:41:25 PoppaVic: no I wasn't! 09:41:29 ..it's global, universal and goofy 09:41:37 PoppaVic: I was debating switching to short because I can convert shorts to chars for easy unsigned arithmetic! 09:41:43 thinkinginbinary, yes, numbers are built right-to-left. 09:41:46 sure you are: java data-rep is not C, and C is not asm, etc 09:41:51 What are you using now, instead of 16-bit shorts? 09:42:05 PoppaVic: yes, java data-rep is ASM, because my ASM is built in Java :-b 09:42:10 Quartus: 32-bit ints. 09:42:15 Quartus: I forgot about shorts ;-) 09:42:23 oy, geesus - stir that crap more 09:42:31 You could use shorts, use 32-bit ints for computing the double-cell values. 09:43:03 no sizeof() ? 09:43:10 PoppaVic: look, if you're not willing to consider my environment when suggesting things, because you hate it so much, then don't keep mentioning other stuff and complaining when I tell you that it works another way. 09:43:22 PoppaVic: there's Integer.MIN_VALUE and Integer.MAX_VALUE -- basically equivalent. 09:43:38 fine.. I can't handle java. 09:43:52 stay well, th 09:44:14 PoppaVic: but the Java spec says that: booleans are "1"-bit", bytes are 8-bit signed, chars are 16-bit unsigned, shorts are 16-bit signed, ints are 32-bit signed, longs are 64-bit signed, floats are 32-bit, doubles are 64-bit. 09:44:56 Should be fun when they hit 128-bit 09:45:18 PoppaVic: ;-) 09:45:23 PoppaVic: maybe it will be "reallylong" 09:45:33 PoppaVic: but that's quite a while off 09:45:38 nope 09:45:41 PoppaVic: they can add it in Java 7 or something 09:45:53 but, I'll just ignore and avoid for a day or two. 09:54:33 --- quit: humulus (Read error: 101 (Network is unreachable)) 10:03:24 --- join: humulus (n=humulus@xover.htu.tuwien.ac.at) joined #forth 10:06:26 hi humulus 10:11:55 --- quit: PoppaVic ("Pulls the pin...") 10:15:57 virl: hi 10:46:40 PoppaVic: my problem was that I had not installed forthos correctly 10:47:08 .s is working for me now 11:00:28 g2g 11:00:30 --- quit: thinkinginbinary ("leaving") 11:41:04 --- join: Topaz (n=top@sown-85.ecs.soton.ac.uk) joined #forth 14:07:39 --- quit: reuben ("peace") 15:06:30 --- quit: Topaz (Read error: 104 (Connection reset by peer)) 15:21:26 --- join: Topaz (n=top@sown-85.ecs.soton.ac.uk) joined #forth 15:31:01 --- join: thinkinginbinary (n=tom@pool-68-163-229-26.bos.east.verizon.net) joined #forth 15:54:08 Quartus: you around? 15:54:13 Right here. 15:54:17 ;-) 15:54:27 does CREATE set LATEST, or just latest-create? 15:55:05 LATEST isn't Standard -- what are you using it for? 15:55:09 IMMEDIATE? 15:55:09 IMMEDIATE 15:55:10 yeah 15:55:12 Yes, then. 15:55:14 Both. 15:55:25 or can I use LATEST *for* CREATE and DOES>? 15:55:36 Best not to. 15:55:39 oh 15:55:41 Why not? 15:55:46 The 15:56:22 ? 15:56:25 DOES> needs a CREATE word; you don't want it dancing on some other kind of definition. 15:56:42 Yeah, but will another definition ever occur between the two? 15:56:55 Suppose a CREATE never happens, but you run a DOES> anyway. 15:57:06 Yeah, well "an ambiguous condition exists" :-b 15:57:13 Yes. Avoid it with one extra global pointer. 15:57:16 Okay. 15:57:48 So CREATE sets LATEST as well? 15:57:55 Sure, CREATEd words can be set IMMEDIATE. 15:59:02 now, LATEST keeps some reference to the *dictionary entry*, right? 15:59:10 Right. 15:59:41 and LATEST-CREATE keeps track of the address at which the address of the DOES> clause should be written, right? 15:59:46 Right. 16:01:30 You might want DOES> to validate that it's modifying a CREATE word. 16:01:40 Check the pointer to see if it's valid, in other words. 16:01:57 Quartus: how do you check if it's a CREATE word? check the instructions before it? 16:02:17 No need; the pointer will never have been set unless CREATE has been run. 16:02:22 oh 16:02:23 ok 16:02:43 >BODY has to do a bit of checking, though. 16:02:46 But that's later. 16:04:09 You could have any use of (header) that's not a CREATE clear a certain flag, so that you could report on attempts to use DOES> with an intervening definition, if you get bored and want something to add. :) 16:05:07 So, in immediate mode, DOES goes like this: pretend there's a semicolon, start a new unnamed definition, and set the value in the cell pointed to by LATEST_CREATE to CSHERE? 16:06:59 I'm not sure what you mean by 'immediate mode', but DOES> first ends the current definition -- compiles an EXIT. Then it lays down code to set the latest CREATE semantics to the semantics that follow -- no need to create a new unnamed definition. Then it lays down code for an EXIT, and subsequent code follows up to the normal ;. 16:07:22 No need to add extra steps. 16:07:29 Simple, as I keep repeating. :) 16:08:10 Quartus: I mean DOES> is an immediate word. 16:08:24 Yes, it is. 16:09:56 So CREATE doesn't actually need to enter the word in the dictionary? but how does it know if it's immediate? 16:10:15 CREATE creates a new header, yes. What did I say that suggested it didn't? 16:10:53 "No need to create a new unnamed definiton"... isn't an unnamed definition a header without a name? 16:11:02 DOES> doesn't need to create a new unnamed definition. 16:12:15 Oh I get it, DOES> can't be set immediate because it's "part" of the word created by CREATE. IMMEDIATE would act on the header created by CREATE. 16:12:21 Right. 16:12:34 Well, DOES> can be in a separate word, but that doesn't change anything. 16:13:02 Quartus: wait, doesn't DOES> apply immediately? 16:13:07 No. 16:13:16 Well, what do you mean by 'immediately'? 16:14:26 What I was saying is that this is valid: : foo create ; : bar does> . ; 16:14:33 then foo baz bar 16:14:40 Quartus: oh ok 16:15:06 okay, create is not an immediate word (otherwise it would only work once)... 16:15:12 No, CREATE is not immediate. 16:15:40 so DOES> *is* an immediate word, that ends a definition and compiles code to set mem[LATEST_CREATE] to CSHERE. 16:16:06 And compiles code that then EXITs. 16:16:15 Compiles an EXIT, that is. 16:16:19 Quartus: yeah (that was included in "ending a definition") 16:16:39 The order matters. 16:17:34 Yeah, you have to write the LATEST-CREATE @ CSHERE ! first, then EXIT 16:17:43 so this means CSHERE has to be accessible. 16:17:52 Internal to DOES>, at least, yes. 16:18:03 But of course it's a global, so you have access to it. 16:18:26 Quartus: actually it's in the VM. 16:18:32 Move it out. 16:18:33 Quartus: so I need to make a word CSHERE to output it. 16:18:52 That's overkill, but if you like. 16:19:00 Quartus: well that's how HERE works. 16:21:08 From your native routines, it's a little bizarre to call a function to access a global. 16:21:16 It'll work, but as I say, it's overkill. 16:22:33 I'm trying to keep the native routines as close to FORTH as possible in case I want to write them in VM code later. 16:22:46 It escapes me as to why you'd want to do that, but ok. 16:23:15 I'd think esp. on a phone you'd want speed as much as possible. 16:24:34 So does can be implemented (in FORTH) as: : DOES> POSTPONE LATEST_CREATE POSTPONE CSHERE POSTPONE ! POSTPONE ; ; IMMEDIATE 16:24:54 GAH! 16:25:03 whoops 16:25:09 CSHERE and LATEST_CREATE are switched 16:25:16 That's not even why I said GAH! 16:25:21 ugly? 16:25:33 I was sloppily paraphrasing my Java. 16:25:41 : (does>) cshere latest_create ! ; : DOES> postpone (does>) postpone EXIT ; immediate 16:25:56 Go easy on the POSTPONEs, son! Factor! :) 16:26:15 oh ok 16:26:18 good idea ;-) 16:26:41 that will make DOES> really short, only two lines 16:26:47 Short, simple. 16:27:31 Factoring is a hugely important thing to practice and learn. 16:29:40 Wait, doesn't the cshere that DOES> lay down have to be a previous value of cshere (the one when DOES> was executed)? 16:29:59 Yes, sorry. DOES> needs to lay it down as a literal. 16:30:15 I'm trying to sand plastic at the same time, it's distracting. :) 16:30:22 Quartus: lol, what for? 16:30:35 Building toys. 16:30:40 Quartus: ah, cool. 16:37:20 --- quit: Topaz (Remote closed the connection) 16:44:25 Quartus: can you give me a quick example of DOES> to test with? 16:47:37 Quartus: problem... the ; at the end of the definition expects to do more than just end a definition--it wants to make the word visible as well... however, it shouldn't if there's a DOES> in the word. what to do? 16:54:47 ...? 17:00:39 Quartus: you still there? 17:10:59 Quartus: right now it doesn't work, because the ; after DOES> tries to pop the dictionary ID of the : definition off the stack to show it. 17:15:51 Sorry. 17:15:52 Here I am. 17:16:09 : constant create , does> @ ; 17:16:25 It most certainly should make the word visible, why not? 17:23:34 : foo create does> . ; 17:49:44 The problem is, I have DOES> call ;. So both DOES> and ; (at the end) try to show it, and the stack underflows. 17:50:42 Don't have DOES> call ;. 17:50:47 Have it postpone EXIT. 17:50:59 Okay. 17:58:38 Quartus: just found a bug, using HERE instead of CHERE. 17:59:30 Good :) 18:01:36 eek, forgot to add , to the switch block! 18:01:43 no wonder it wasn't executing! 18:03:37 Quartus: W00T!!!! 18:04:16 Quartus: : COUNTER CREATE 0 , DOES> DUP @ 1+ DUP ROT ! ; 18:04:22 Quartus: COUNTER FOO 18:04:31 Quartus: and then each time I call FOO, it pushes a higher number on the stack. 18:07:56 Score! 18:08:25 Quartus: yeah! 18:08:45 Quartus: and I have UNLOOP, and LEAVE uses it instead of compiling R> DROP R> DROP 18:08:55 now reached 75% of CORE 18:12:20 working on number formatting 18:13:23 --- join: TheBlueWizard (i=TheBlueW@ts001d0592.wdc-dc.xod.concentric.net) joined #forth 18:14:15 Quartus: you said <# #> etc... work on double-cell numbers? 18:18:40 Yes, indeedily. 18:19:19 Quartus: so I need to implement 1. S>D and 2. native functions to convert between single and double cell signed and unsigned values. 18:21:06 S>D is DROP. 18:21:08 Oops. 18:21:12 D>S is DROP. 18:21:29 *if* you store the higher half first. 18:21:29 S>D is DUP 0< 18:21:29 do you always? 18:21:34 You have to. Uppermost on the stack. 18:21:36 ok 18:21:50 so stack[0] is LSB, stack[1] is MSB (if B = cell ;-) 18:22:06 --- join: akebono (i=fujiwara@218.231.198.94.eo.eaccess.ne.jp) joined #forth 18:22:06 Quote: A book worth reading is worth buying. -- John Ruskin 18:22:07 er, top of stack is most-significant. 18:22:13 ok 18:22:22 hmm, CORE doesn't specify D>S 18:22:44 Quartus: wait, what's with 0< ? 18:23:36 Quartus: propagates the sign bit? 18:24:06 Quartus: oh, if I have 16-bit ints, do I need to make the less significant int allow all 16 bits to be used? one is the sign bit, it's awkward 18:25:40 In C/Java/etc.., converting signed to unsigned is like so? unsigned short u = (s >= 0) ? s : (s + 65536) 18:25:45 (where s is a signed short 18:25:47 ) 18:31:14 ? 18:43:59 Quartus: should PARSE-WORD skip initial spaces? 18:50:53 thinkinginbinary, give me 5 minutes, I'll be back. 18:51:00 Quartus: okay, i gotta walk the dog anyway 18:51:04 Quartus: I'm working on S" 19:18:16 You don't need to convert signed to unsigned, pretty much ever. 19:18:18 Or vice-versa. 19:18:49 In a two's-complement architcture (virtually all, that is) the top bit is always the sign bit. 19:19:31 well, sometimes you do need to worry about the range, especially the negative numbers 19:21:33 Worry about? 19:23:44 Quartus: for example... # takes an unsigned double-word number... but my stack cells are signed. 19:23:50 Quartus: what do I do? 19:24:00 Quartus: or is the assumption that I will have removed the sign using SIGN? 19:24:13 Your stack cells are neither signed nor unsigned, they're just cells; signed or unsigned is based on interpretation. 19:24:16 e.g. if you want to convert -5 to a 'unsigned' version and want it in proper range, then it would be simply erroneous 19:24:44 Quartus: no, mine are shorts, which are by definition signed in Java... and I *grr* can't use a union to access them as unsigned directly. 19:24:50 but if you don't care about the range...just want the raw representation, then fine, it's fine :) 19:26:43 They may be internally represented as shorts, but I'm sure you can figure out how to treat them as unsigned. 19:28:13 Quartus: wait, if <# ... #> only works on unsigned numbers, wouldn't I need to convert the number to unsigned *in Forth* before displaying it? 19:29:57 No conversion is required. A 16-bit cell is a pattern of bits. You can consider it a signed integer, and display it as such, or you can consider it an unsigned integer, and display it as such. 19:30:15 I fear Java has poisoned you into thinking signed vs. unsigned is a magical property of the number itself. 19:30:28 Quartus: but if the stack can hold negative numbers, it is inherently signed. 19:30:45 No. 19:30:52 Sorry, I don't mean to be abrupt, but that's not the case. 19:30:57 Quartus: ok 19:31:20 Take any given bit pattern: 1011010110111110 19:31:22 What is that? 19:32:58 You're thinking in terms of a strongly typed language -- you define the data type as signed, so the compiler chooses (or forces) specific operators to be used on it. In Forth, you the developer choose the operator. 19:33:07 There's nothing at all that stops you from adding 5 to the letter A. 19:33:23 --- join: skylan (n=sjh@dialup-216-211-4-172.tbaytel.net) joined #forth 19:34:09 If you want unsigned division, you use um/mod. If you want floored signed division, you use fm/mod. If you want symmetrical signed division, you use sm/rem. Etc. 19:34:43 * TheBlueWizard nods 19:35:34 The stack holds cells. Cells are a given number of bits wide. They can, at any given time, represent signed integers, unsigned integers, bit patterns, ASCII characters, what-have-you. 19:35:37 as I said yesterday, the usual Forth philosophy is to leave the responsibility of coding to the coder 19:36:47 On a 16-bit Forth, for instance: -5 u. -> 65531 19:37:32 You enter -5, and that's translated into an appropriate cell, with a bit pattern that represents the signed value of -5. You then ask it to display that same bit-pattern as an unsigned value, and it's happy to do so. 19:37:55 No type information is stored with each cell. 19:39:14 Make sense? 19:40:55 Quartus: yeah 19:42:10 --- join: Teratogen (i=leontopo@intertwingled.net) joined #forth 19:42:13 Quartus: wheee, casting between short and char deals with everything. 19:42:29 We'll see, the coretest will be the judge of that. :) 19:42:46 Quartus: well I haven't coded this yet, I'm just happy it's easy 19:43:07 --- join: Amanita_Virosa (n=jenni@adsl-69-154-189-66.dsl.hstntx.swbell.net) joined #forth 19:45:36 Hopefully it is. 19:46:03 Type-enforcing systems feel like a straightjacket to me. 19:51:17 Quartus: okay, <# ... #> *seems* to work. 19:51:28 Quartus: can you give me any hairy tests for it? 19:53:16 Quartus: um, does TRUE = -1 or 1 19:54:05 TRUE is all-bits-set. 19:54:24 Quartus: oh ok 19:54:33 Hairy tests... -1 -1 <# #S #> Type 19:54:56 Should give you your max-int. 19:55:05 Double-cell. 19:55:11 --- quit: Amanita_Virosa ("Whoops.") 19:55:24 What does it give? 19:55:28 Quartus: just a sec 19:55:38 NOW! TELL ME NOW! 19:55:39 :) 19:56:21 Quartus: hmm, it exploded 19:56:29 Quartus: just a sec 19:57:43 Quartus: unrelated error, while instead of until 19:58:14 --- quit: akebono ("Leaving") 19:59:10 And the answer is? 19:59:14 Quartus: / 19:59:16 Quartus: ;-) 19:59:23 Quartus: for some reason it didn't convert to unsigned 19:59:29 Quartus: and 0 - 1 = / 20:00:22 Hmm. / is not a good answer. 20:00:27 Quartus: i know ;-) 20:00:59 Quartus: oh 20:02:38 Quartus: hmm... 20:06:33 does 4294967295 mean anything? 20:06:39 Better answer. 20:06:41 Quartus: I think it worked! 20:06:49 Quartus: ugly code though ;-) 20:07:06 Quartus: it's like write-only Java... better comment it 20:07:11 Good idea. 20:13:22 w00t! 80% done with CORE! 20:13:47 Neat. 20:14:27 Quartus: someone should make an IRC protocol (CTCP-based?) to handle timezones, so you can see "local time" clocks next to people's nicks. 20:14:56 Wouldn't surprise me if somebody already has. 20:30:51 Quartus: alright, just added LITERAL 20:35:54 thinkinginbinary: are you the guy who's writing a forth in java for his phone? 20:37:12 JasonWoof: yes 20:37:19 JasonWoof: thinkinginbinary == ashorternick 20:37:33 I like to think I'll get a small credit somewhere on the acknowledgements page ;) 20:37:41 Quartus: oh, of course 20:37:50 Quartus: I already decided to. 20:38:00 :D 20:43:22 Quartus: how does RECURSE work? do you keep track of the XT of the *current* definition? 20:44:08 gotta go...bye all 20:44:23 --- part: TheBlueWizard left #forth 20:45:13 My RECURSE codes a call to the top of the current word, so yes. 20:45:31 Quartus: so it keeps track of the current def's xt? 20:45:34 Quartus: in a var? 20:45:56 ... not sure what you mean. RECURSE is immediate. Compiles a call to the top of the current word, which you should already know. 20:46:00 how is tail recursion normally handled? 20:46:04 Quartus: how do I know it? 20:46:05 Quartus: or... how do you handle it? 20:46:10 You should already know the cshere addr -- you created the header. 20:46:37 JasonWoof, there's no Standard requirement to handle it specially, but most implementations do convert the last call followed by an EXIT into a jump. 20:46:38 Quartus: yes, but it may be buried on the stack under a bunch of control-flow junk. 20:46:49 thinkinginbinary, then store a copy of it on the way in. 20:46:53 Quartus: ok 20:47:24 I boldly update 'latest' when creating a new word, and just reference that. 20:47:30 Quartus: oh ok 20:49:22 My 'latest' stores a header-pointer, but I have a word that derives the xt from that. 20:49:35 Quartus: ok 20:49:52 Quartus: mine too (actually an index into a native-code array of dict entries) 20:51:42 Weren't you storing an invalid xt until ; time though? 20:51:50 Quartus: no 20:51:59 How are you arranging for invisibility until ;? 20:52:02 Quartus: i just didn't add the entry to the hashtable, so it's invisible 20:52:07 Oh ok. 20:52:09 Quartus: _show adds it 20:52:18 Quartus: might as well use the native code stuff if i have it 20:52:43 Yes. 20:53:47 Quartus: so, POSTPONE just does ' COMPILE, ? 20:54:03 Quartus: (in immediate mode) 20:54:11 --- join: akebono (i=fujiwara@218.231.198.94.eo.eaccess.ne.jp) joined #forth 20:54:11 Quote: Let us live for the beauty of our own reality. -- Charles Lamb 20:55:08 akebono, I think it's fair to say we've all seen that quote about seven thousand times now. 20:55:25 My reality would be more beautiful without it. :) 20:55:38 hahaha 20:56:12 because only three phrases are in the database in perl now. 20:56:32 lol 20:56:48 okay, it's almost midnight, i should go to bed 20:57:15 bye 20:57:22 Quartus: you rock, thanks again for your help. 20:57:29 --- quit: thinkinginbinary ("leaving") 21:30:02 --- join: richard_ (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 21:31:10 --- quit: richard_ (Client Quit) 21:31:25 --- join: richard_ (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 21:32:04 --- nick: richard_ -> snowrichrad 21:32:09 --- nick: snowrichrad -> snowrichard 21:37:50 --- quit: snowrichard ("Leaving") 21:56:21 --- quit: Snoopy42 (brown.freenode.net irc.freenode.net) 21:56:21 --- quit: crispexi (brown.freenode.net irc.freenode.net) 21:56:24 --- quit: cp (brown.freenode.net irc.freenode.net) 21:56:24 --- quit: Quartus (brown.freenode.net irc.freenode.net) 21:56:24 --- quit: JasonWoof (brown.freenode.net irc.freenode.net) 21:56:28 --- quit: akebono (brown.freenode.net irc.freenode.net) 21:56:28 --- quit: Teratogen (brown.freenode.net irc.freenode.net) 21:56:30 --- quit: humulus (brown.freenode.net irc.freenode.net) 21:56:30 --- quit: crc (brown.freenode.net irc.freenode.net) 21:56:30 --- quit: Ray_work (brown.freenode.net irc.freenode.net) 21:56:30 --- quit: saon (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: cmeme (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: OrngeTide (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: skylan (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: swa_ters_ (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: nyingen (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: virl (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: warpzero (brown.freenode.net irc.freenode.net) 21:56:32 --- quit: ianp (brown.freenode.net irc.freenode.net) 21:56:36 --- quit: Jim7J1AJH (brown.freenode.net irc.freenode.net) 21:56:36 --- quit: _james (brown.freenode.net irc.freenode.net) 21:58:17 --- join: crc (i=crc@pdpc/supporter/active/crc) joined #forth 21:58:17 --- join: akebono (i=fujiwara@218.231.198.94.eo.eaccess.ne.jp) joined #forth 21:58:17 --- join: Teratogen (i=leontopo@intertwingled.net) joined #forth 21:58:17 --- join: skylan (n=sjh@dialup-216-211-4-172.tbaytel.net) joined #forth 21:58:17 --- join: humulus (n=humulus@xover.htu.tuwien.ac.at) joined #forth 21:58:17 --- join: swa_ters_ (n=swalters@6532183hfc82.tampabay.res.rr.com) joined #forth 21:58:17 --- join: nyingen (n=jeeves@216-39-182-234.ip.theriver.com) joined #forth 21:58:17 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 21:58:17 --- join: Snoopy42 (i=snoopy_1@dslb-084-058-157-098.pools.arcor-ip.net) joined #forth 21:58:17 --- join: Ray_work (n=vircuser@adsl-66-142-169-152.dsl.rcsntx.swbell.net) joined #forth 21:58:17 --- join: saon (i=1000@unaffiliated/saon) joined #forth 21:58:17 --- join: warpzero (n=warpzero@wza.us) joined #forth 21:58:17 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 21:58:17 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 21:58:17 --- join: crispexi (i=y@hackphreak.info) joined #forth 21:58:17 --- join: ianp (i=ian@82.165.242.39) joined #forth 21:58:17 --- join: _james (i=jcp@adara.cs.pdx.edu) joined #forth 21:58:17 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 21:58:17 --- join: cp (n=cp@bsd-talk.de) joined #forth 21:58:17 --- join: OrngeTide (i=orange@rm-f.net) joined #forth 21:58:17 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 21:58:17 --- mode: irc.freenode.net set +oo crc JasonWoof 22:02:44 --- join: ianp_ (i=ian@audiowiki.com) joined #forth 22:04:45 --- quit: nyingen (brown.freenode.net irc.freenode.net) 22:04:45 --- quit: warpzero (brown.freenode.net irc.freenode.net) 22:04:53 --- quit: swa_ters_ (brown.freenode.net irc.freenode.net) 22:04:53 --- quit: ianp (brown.freenode.net irc.freenode.net) 22:04:53 --- quit: skylan (brown.freenode.net irc.freenode.net) 22:04:53 --- quit: virl (brown.freenode.net irc.freenode.net) 22:05:02 --- quit: _james (brown.freenode.net irc.freenode.net) 22:05:02 --- quit: Jim7J1AJH (brown.freenode.net irc.freenode.net) 22:05:06 --- quit: akebono ("Leaving") 22:07:03 --- join: warpzero (n=warpzero@wza.us) joined #forth 22:07:04 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 22:07:16 --- join: skylan (n=sjh@dialup-216-211-4-172.tbaytel.net) joined #forth 22:07:24 --- join: nyingen (n=jeeves@216-39-182-234.ip.theriver.com) joined #forth 22:23:50 --- join: swa_ters_ (n=swalters@6532183hfc82.tampabay.res.rr.com) joined #forth 22:38:19 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 23:16:25 --- join: macr0 (n=macr0@pcp09536008pcs.gadsdn01.al.comcast.net) joined #forth 23:19:55 --- join: akebono (i=fujiwara@218.231.198.94.eo.eaccess.ne.jp) joined #forth 23:19:55 Quote: A book worth reading is worth buying. -- John Ruskin 23:21:26 akebono: hmm, I agree, if you add in the stipulation "used" = ) 23:23:43 unless I am not "identified", /privmsg doesn't work. 23:24:17 yup, an anti-spam/harassment policy I think 23:25:46 but i have been identified, unfortunately. 23:26:10 Oh, you said it fails if you *are* identified? 23:26:14 that's odd... 23:26:16 no 23:26:41 I just mean I am identified, so you read my message. 23:26:58 without /msg nickserv identify..., 23:27:12 Hmm 23:27:17 I didn't get a message I don't think 23:27:41 a quote by John Ruskin my bot wrote... 23:28:41 oh, I did get that. 23:28:43 nevermind = ) 23:28:47 I was just confused. 23:28:56 btw, yesterday I learnt using allocate. 23:29:13 cool 23:29:25 I haven't actually got around to coding yet...still figuring out how to do things with colorforth 23:29:34 I did crash it a little while ago, that's something I guess 23:31:01 colorforth is Chuck's invention, I read. 23:31:20 yeah 23:31:34 why is it named "color"? 23:31:37 It's a very strange idea, but I want to try it 23:31:41 It uses colors for syntax 23:31:53 not highlighting, but you type words in different colors and the colors have meanings. 23:32:21 hmmm. weird. 23:32:35 More what attracts me is that it's a mini-OS running on the bare hardware 23:32:43 you boot into it from a floppy. 23:33:11 but many forth systems are self-running. 23:33:15 True 23:33:23 how different is it from others. 23:33:30 I'm not sure, my experience is very limited 23:33:38 I used gforth a little with some tutorials. 23:33:41 but that's about it. 23:33:52 gave up when I couldn't figure out how to call C libraries easily. 23:34:15 Chuck doesn't call C functions, I guess. 23:34:24 No, he wants to redo everything from scratch. 23:34:29 Hence colorforth on custom chips. = 0 23:34:40 er, that was supposed to be a smiley. Oh well. 23:35:20 but I read he was using a 20-bit chip... 23:35:34 Where? 23:35:43 I'm sure you're right, I'd just be interested to read too. 23:37:41 I am interested in forth, as it's very unique. 23:37:55 Lisp and prolog may be closer to forth. 23:38:34 Yeah 23:38:51 I used to do a lot of RPL programming on the HP-48 calculator, which is a postfix language 23:39:06 I had had one. 23:39:12 So when I first saw Forth code, I wasn't too mystified = ) 23:39:37 Would like to use it for development but in my line of work I really need to be able to call C libraries 23:39:37 RPL is useful as it can avoid using parentheses. 23:39:40 yep 23:39:57 what sort of stuff have you been using Forth for? 23:40:05 Not yet, 23:40:17 I am just learning forth. 23:40:48 C is a low-level version of Pascal, and useful. 23:41:07 Hmm, never heard anyone call it that, but I can see it 23:41:53 I've been thinking about digging my Palm III out of the closet and playing with Quartus Forth on it 23:42:03 ah. 23:42:16 Probably a lot more fun than developing Palm apps in C. 23:42:59 Programming in C is not so interesting. 23:43:11 nope, gets boring, especially these days 23:43:36 Although I did a few programs recently that had to be done in C for technical reasons, and were fun to write 23:43:54 but I almost never choose C for new stuff unless I have to. = ) 23:44:49 Using C++ with giga bytes of library is the standard way of making big applications today. 23:45:03 yeah, unfortunately 23:45:27 It's like a automated factory of programs. 23:45:45 I've managed to avoid C++ so far though. I don't even know how to program in it, although if desperate I can read it. 23:46:04 do you do programming work for a living? 23:46:19 I used to need to write programs before, but not today. 23:46:37 I wrote tiny routines in Fortran and C. 23:47:15 But programming languages like forth were very interesting. 23:48:31 Yeah, I wish I could have used it for the instrument control stuff I was writing last year 23:48:36 seems like a good fit 23:48:59 but I needed ethernet and GPIB support, plus multithreading, so I ended up with C again. 23:49:21 GPIB is still used today? 23:49:24 oh yeah 23:49:35 I remember "talker" and "listener" 23:49:39 still going strong, despite all the cables smelling musty = ) 23:49:59 and sometimes I had to "reset" the line. 23:50:20 because handshaking had some problem.... 23:50:34 You can do cool stuff with it nowadays, thanks to GPIB modules for high-level langs 23:50:42 doing GPIB with C is a real pain 23:51:06 I had to use Fortran on Micro VAX. 23:51:08 GPIB in general gets you headaches though, as you mention 23:51:12 VAX? 23:51:17 neat. 23:51:28 Digital's MicroVAX with GPIB card. 23:51:45 it was more than 15 years ago. 23:51:48 So were you working with an engineering lab or something then? 23:52:04 printing equipment maker. 23:52:08 gotcha 23:52:30 sending bitmaps to an experimental imagesetter was 23:52:35 the purpose of using GPIB. 23:52:40 interesting 23:53:10 We always just used it for control, like sending commands...our main devices supported NFS, so we used that to transfer all the data around 23:53:59 using NFS on Unix machines is fine, but clients on PCs tend to have problems. 23:54:08 Yeah, I never tried that actually = ) 23:54:18 We were an all-linux shop, one of the reasons I loved working there 23:55:12 But we had high-end chip analyzers and stuff, and they supported GPIB, ethernet, *and* NFS, which is pretty smart I think 23:55:26 very easy to get it working well with Linux or SunOS boxes. 23:56:26 I know you need to use various different lines such as SCSI, ethernet, RS232-C, to communicate with a reference board on a machine. 23:57:41 Hmm, never had to use SCSI I don't think, but the others, certainly 23:57:55 we also had some proprietary stuff that was a big pain to get working 23:58:21 National Instruments Inc, the Microsoft of the electrical engineering world... 23:59:22 I had a friend who is one of smartest digital circuits in Japan. 23:59:37 designers in japan. 23:59:59 --- log: ended forth/05.11.26