00:00:00 --- log: started forth/04.03.23 00:00:42 --- quit: I440r (Read error: 110 (Connection timed out)) 00:20:08 --- quit: imaginator ("zzZ") 00:27:03 --- quit: ASau (Read error: 104 (Connection reset by peer)) 00:37:28 --- join: madgarden_ (~madgarden@Kitchener-HSE-ppp3576712.sympatico.ca) joined #forth 00:45:04 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 00:50:38 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 00:54:59 --- join: ASau (~asau@158.250.48.196) joined #forth 01:44:58 --- quit: ASau () 02:27:52 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 02:45:31 --- join: crc (crc@1Cust121.tnt1.levittown.pa.da.uu.net) joined #forth 03:23:36 BANZAAAAAAAI 03:26:32 --- quit: crc (Nick collision from services.) 03:26:45 --- join: crc (crc@1Cust168.tnt1.levittown.pa.da.uu.net) joined #forth 03:35:59 --- quit: crc () 04:06:50 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 04:29:00 --- join: _proteus (~proteusgu@workstations.pinnaclesports.com) joined #forth 04:29:32 --- quit: warpzero (orwell.freenode.net irc.freenode.net) 04:29:32 --- quit: proteusguy (orwell.freenode.net irc.freenode.net) 04:29:32 --- quit: ayrnieu (orwell.freenode.net irc.freenode.net) 04:29:32 --- quit: ChanServ (orwell.freenode.net irc.freenode.net) 04:29:32 --- quit: l0C0 (orwell.freenode.net irc.freenode.net) 04:29:32 --- quit: chandler (orwell.freenode.net irc.freenode.net) 04:30:44 --- quit: arke (orwell.freenode.net irc.freenode.net) 04:30:44 --- quit: hefzzz (orwell.freenode.net irc.freenode.net) 04:32:08 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 04:32:27 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 04:32:27 --- join: hefzzz (~hefner@pool-151-196-19-248.balt.east.verizon.net) joined #forth 04:32:33 --- join: ChanServ (ChanServ@services.) joined #forth 04:32:33 --- join: chandler (~chandler@chandler.registered.freenode) joined #forth 04:32:33 --- join: l0C0 (loco@bor.gs) joined #forth 04:32:33 --- mode: irc.freenode.net set +o ChanServ 04:33:12 --- join: proteusguy (~proteusgu@workstations.pinnaclesports.com) joined #forth 04:33:12 --- join: ayrnieu (julian@65.169.246.30) joined #forth 04:33:14 --- quit: proteusguy (No route to host) 05:05:12 --- quit: hovil ("Leaving") 05:07:13 hi 05:10:31 terve 05:10:58 dobruo utro 05:11:00 :) 05:53:48 --- join: ASau (~asau@158.250.48.196) joined #forth 05:53:58 Dobryjj vecher! 05:54:37 terve aleksei 05:56:40 Do you know of any tools to compare and change binary files? Like "diff" and "patch". 05:57:27 I'd like to use RCS or somewhat, but it requires line-oriented files. 06:13:32 rdiff - Binary diff tool for signature-based differences 06:13:50 maybe that? 06:14:37 xdelta - A diff utility which works with binary files 06:16:57 Hmm. 06:17:04 I like requirement: 06:18:05 "A POSIX operating system (...but seems to work under several OSes including... MS-Windows+cygwin)." 06:18:25 Feel better, you've got new OS. 06:18:43 MS "Windows" + "CygWin". 06:19:34 And where's "xdelta"? 06:20:09 Google gives many links... 06:20:21 not sure, I only search through debian packages 06:20:33 Ah! 'Ve got it. 06:33:01 what does 'push' normally do in forth 06:33:23 if its part of ANS or something 06:33:44 Normally, it's entry point for inner interpreter to push single cell onto data stack. 06:33:57 See "FIG Forth Installation Manual" for details. 06:34:10 Chapter "Glossary." 06:35:27 PUSH 06:35:28 This code sequence pushes m3chine registers to the computation stack 06:35:29 and returns to NEXT. It is not directly executable, but is a Forth 06:35:29 re-entry point after machine code. 06:36:26 Like I've said. 06:39:27 : within ( n lo hi - flag) 06:39:27 push over pop < push < not pop and ; 06:41:11 Maybe, it's for >r r> ? 06:41:18 yeah, I was thinking that 06:41:47 Is it for ColorForth? 06:41:53 Or MachineForth? 06:42:46 Some electronic engineers like to call "r>" and ">r" as "pop" and "push". 06:43:00 amrforth 06:43:10 I guess I should have read the documentation 06:43:20 but I'm tired and will retire for the night. 06:48:58 --- nick: _proteus -> proteusguy 06:52:50 * arke is away: 0x5c001 06:52:55 --- quit: arke (Read error: 104 (Connection reset by peer)) 07:48:22 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 07:57:14 Terve! 07:59:04 File size: 1234 bytes. :) 08:00:10 --- quit: mur ("customised quit massage") 08:00:51 --- nick: mur_ -> mur 08:01:06 Well. You've got it. 08:32:01 --- quit: proteusguy (Read error: 54 (Connection reset by peer)) 08:33:52 --- join: proteusguy (~proteusgu@workstations.pinnaclesports.com) joined #forth 08:55:10 --- join: Herkamire (stjohns@h000094d30ba2.ne.client2.attbi.com) joined #forth 08:59:11 Dobryjj vecher! 09:06:06 --- join: networm (~networm@L0626P09.dipool.highway.telekom.at) joined #forth 09:06:20 hello 09:08:00 Guten Abend! 09:08:33 How is/was your Forth today? 09:08:34 Hallo. 09:09:17 I've optimized out one screen of source. :) 09:09:37 my Forth? I just got the ok to do a (small) uni project with forth :) 09:09:52 so i can hack around in forth instead of doing some boring assignment :) 09:10:11 You're lucky enough. 09:10:13 Great 09:10:16 What will you do? 09:10:40 well, just implement a forth.. i had no idea of a more specific topic 09:10:53 Do you want one? 09:11:04 but i could convince the professor that the important is just the learning experience 09:11:19 i already got one :) 09:16:20 Well, I have many ideas what to implement in Forth, but have not time for it. 09:51:43 --- join: networm_ (~networm@L0649P15.dipool.highway.telekom.at) joined #forth 09:58:58 --- quit: networm (Read error: 60 (Operation timed out)) 10:01:29 --- quit: ayrnieu (Read error: 113 (No route to host)) 10:03:08 --- nick: networm_ -> networm 10:16:15 What does anyone know about DARCS? 10:28:30 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 10:30:04 --- join: proteusguy (~proteusgu@workstations.pinnaclesports.com) joined #forth 10:50:30 * warpzero is away: The Einstein-Rosen bridge is a geometrical property of a black hole that manifests itself in that on the other side of the black hole another set of dimensions has been attached to the one from our universe. This makes passage through this bridge and hence into another universe a mathematical possibility. 12:49:31 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 12:49:37 --- mode: ChanServ set +o kc5tja 12:50:43 Aikido? 12:50:50 Man, I haven't been to that in too long. 12:50:55 * kc5tja should go tomorrow evening. 12:51:15 :) 12:51:16 Hi 12:54:08 Hello. 13:01:51 --- join: Mark4 (~Mark4@64.47.44.254) joined #forth 13:01:51 --- nick: Mark4 -> I440r 13:01:51 --- quit: I440r (Client Quit) 13:02:14 --- join: I440r (~Mark4@64.47.44.254) joined #forth 13:04:40 --- quit: hefzzz (Read error: 60 (Operation timed out)) 13:04:40 --- join: hefner_ (~hefner@pool-151-196-19-248.balt.east.verizon.net) joined #forth 13:12:57 Good night! 13:12:59 --- quit: ASau () 14:10:10 * kc5tja is away: errands and paying bills. 14:11:24 Herkamire> i'm kinda done with the finding-set-part :p 14:11:39 at least i think i cought the last bug 14:11:49 since i dont get 20 sets anymore ;0 14:13:31 btw how do you concat output? like i have 3 numbers, how can i output them with no spaces? 1 2 3 . . . will result in 1 2 3, i want 123 :p 14:16:22 --- quit: fridge (Read error: 60 (Operation timed out)) 14:17:14 49 50 51 emit emit emit 14:18:00 hm, add 48 14:18:48 something like this should also work : my. char emit ; 1 2 3 my. my. my. 14:18:57 no 14:19:17 but char should get the value in any case.. 14:19:39 hm ye 14:20:19 my. 1 my. 2 my. 3 14:20:39 problem is that it might be 10 or 11 as well 14:20:47 or preferably in hex 14:20:57 shouldnt it be ascii? 14:21:05 :\ 14:21:19 yeah.. so you need some number conversion words 14:28:15 --- join: fridge (~fridge@dsl-203-33-162-183.NSW.netspace.net.au) joined #forth 14:35:43 is there a standard word to reverse the top 3 of the stack? before i go and define a word thats already there :) 14:36:10 oh i see i already did that :p 14:38:37 Herkamire> according to my code... there should be no sets in this table: 14:38:38 / 1 2 3 4 14:38:38 A 1223 3213 1122 2123 14:38:38 B 3221 2122 2132 2231 14:38:38 C 1131 3312 2211 2212 14:41:10 --- quit: ChanServ (ACK! SIGSEGV!) 14:43:33 lol.. 14:45:24 --- join: ChanServ (ChanServ@services.) joined #forth 14:45:24 --- mode: irc.freenode.net set +o ChanServ 14:57:04 back. 14:57:10 (for now. Getting kind of hungry.) 14:57:39 qFox: You can use <# #S #> to convert a number to a string, which you can then TYPE. 14:57:52 In particular, : U. <# #S #> TYPE SPACE ; 14:57:58 u. ? 14:58:07 Unsigned version of . 14:58:10 ah 14:58:10 -1 . ==> -1 14:58:21 -1 u. ==> 4.2 billion something (on a 32-bit machine) 14:58:26 uhu 14:58:30 fffffffffff 14:58:32 etc 14:58:35 Right. 14:58:46 And then . is defined in terms of U. 14:59:05 so . is derived from u.? 14:59:23 : . dup 0< if negate [char] - emit u. exit then u. ; 15:00:16 do loop uses the return stack right? 15:00:24 Yes. 15:00:25 k 15:00:42 how do you put a double number to the stack btw? 15:00:45 The top two return stack elements are used to maintain loop limit and loop count information. 15:00:58 like, 5 billion 15:00:58 networm: high.low 15:01:30 networm: You can't put a number like 5 billion on the stack directly; you have to split it into two separate words yourself, then use the .-notation to put it in. 15:01:36 It's pretty silly in retrospect. 15:01:39 something like "double 5000000000" ? 15:01:49 oh 15:02:00 you put a . somewhere? 15:02:25 qFox: nice :) I'm glad to hear your code is coming along. I checked as carefully as I can, and I agree there are no sets 15:02:43 :p 15:03:17 now adding the verbose/silent flag to the word. quite hard to do without variables so i decided not to try 15:03:27 5e9 is put in like this on a 32-bit machine: 1.705032704 15:03:43 In decimal base, it doesn't look like it makes too much sense. 15:03:57 But in hexadecimal, it makes some more conceptual sense. 15:03:59 i see. i guess, on 16bit forthes it is a prolbem (oh no, what was 1000000 again in high.low?) 15:04:38 high = (value)/65536 (or 2^32 for 32-bit machines, etc) 15:05:08 Well....correction: high = FLOOR( value / 2^n ) 15:05:20 low = value MOD 2^n 15:06:18 what do you get for: hex 80000000 negate . 15:06:32 You'd bet 80000000 15:07:00 / 1 2 3 4 15:07:00 A 1231 2312 3111 2213 15:07:00 B 3222 2121 1213 2131 15:07:00 C 2123 1211 1313 3232 15:07:00 ok.. 15:07:01 1 find-sets 15:07:01 It's technically an error to negate that number, since it has no counterpart in the spectrum of representable integers. 15:07:03 3222 2213 1231 -> 4 3 0 -> A1 A4 B1 15:07:05 1213 3111 2312 -> 6 2 1 -> A2 A3 B3 15:07:07 1313 2131 3222 -> A 7 4 -> B1 B4 C3 15:07:09 3232 1313 2121 -> B A 5 -> B2 C3 C4 15:07:26 But, the algorithm of : negate INVERT 1+ ; will produce 80000000 as the result if you try it. 15:07:53 there is no 0x80000000 in signed integers 15:08:01 Herkamire: Sure there is. 15:08:03 there is only the negative 15:08:06 0x80 is -128 15:08:21 0x8000 is -32768 15:08:22 etc 15:08:26 0x80000000 is negative 15:08:40 yes, it's about negative 2 billion or so. 15:09:06 gforth gives no -80000000 no matter how many times I negate it in gforth. 15:09:10 Heh 15:09:23 That's the magic number. :D 15:09:33 Herkamire: That's because 80000000 == -80000000. 15:09:37 -0 = 0, -80000000 = 80000000 15:09:43 I just happened to read the manual page for a ppc instruction. 15:09:53 So, I guess it's like zero. Just a lot bigger. ;) 15:10:17 Herkamire: 80000000 . ==> -80000000 15:10:37 winforth shows -80000000h for 80000000h 15:10:39 Which makes perfect sense. 15:10:54 qFox: That's because, when printed as a signed value, it is negative. 15:10:58 The sign bit is set. 15:11:00 i know the theory :) 15:11:11 just wanted to let you know how winforth treats it.. 15:11:16 * kc5tja nods 15:12:00 Negation won't affect the result, and thus it's technically an error to negate this one value. 15:12:10 Consider the 8-bit signed case: 15:12:18 $80 negate ==> -80 15:12:24 This is because: 15:12:28 $80 INVERT == $7F 15:12:39 $7F + 1 == $80. Back to where we started. :) 15:12:57 This property can actually be used to determine the bit-width of the system, too. 15:13:00 which can be handy. 15:13:44 oh! that's what I was reading 15:13:47 I'm not sure why the PPC version of GForth is showing 80000000 as positive. It should be representing it as a negative number on the screen. 15:13:51 the signed devide instruction 15:14:07 gforth on my system shows it negative 15:14:10 (assuming it's not a 64-bit version.) 15:15:13 it says that x/0 and 0x80000000/-1 are undefined (set's the overflow condition bit) 15:15:59 hmmm. gforth doesn't catch this. it just leaves -1 on the stack. 15:16:02 Yeah, I'd say division by zero would set the overflow flag. :) Arithmetically speaking, as you take the limit of x/0 as x approaches infinity, the result of the division for all x is infinity. :) 15:16:17 :) 15:16:20 thought that was fun. 15:16:36 I never knew there was an error with devision except 0 / 15:16:39 gotta go make dinner. 15:16:40 bbiab 15:18:50 hm ok, next problem 15:18:56 in my set game 15:19:00 qFox: 42. 15:19:04 oh 15:19:05 ok 15:19:33 qFox: I'll have to get back to you on what precisely your question was, though. I expect to have an answer in the next couple million years or so. :) 15:19:39 i'm done building up the deck, done shufling, done dealing a table, done displaying, done checking for sets. 15:20:02 now i want to be able to enter a location, and process it to check if this is indeed a match 15:20:10 how do i process the string input? 15:20:21 like a table looks like this 15:20:21 / 1 2 3 4 15:20:21 A 3112 3333 2212 1112 15:20:21 B 3313 1313 2231 2133 15:20:21 C 2322 1321 1322 1212 15:20:29 (btw, this one has no sets, dont bother looking ;) 15:20:44 now i'd like to do something like, check A1 B2 C3 15:20:56 RPN or not doesnt really matter to me, i dont know if i'm forced here... 15:21:12 but how do i process the A1 ? 15:21:45 hm come to think about it i think i wont want rpn 15:21:57 Are the columns and rows fixed in dimensions? 15:22:09 yea for now, the table is always 4x3 15:22:33 it "should" be able to stretch to 5x3 but i wont bother about that :p 15:22:40 Hmm 15:22:51 but this was kind of a general question anyways 15:22:58 I would consider making A, B, and C Forth words, which take a number as input then (in the range 1..4 inclusive). 15:23:00 since i'm not sure how to process this kind of stuff 15:23:13 Otherwise, Forth takes string input and places it in a buffer using the ACCEPT word. 15:23:19 (I'm assuming ANSI Forth here) 15:23:26 winforth has accept 15:23:45 Once in that buffer, you need to process it yourself, treating the buffer as an array of characters, and fetching characters with C@. 15:23:55 k 15:24:17 so right aftter i'm done initializing i put an accept down 15:24:21 and wait for user input 15:24:33 ACCEPT will block until it has the input it needs. 15:24:44 It's like INPUT in BASIC. 15:24:44 a return.. right? 15:24:49 Yes. 15:24:51 k 15:25:08 Only it doesn't spit out that damn annoying "? " prompt. :) 15:25:14 oh 15:25:17 hm 15:25:31 winforth requires you to give the number of chars to read 15:25:38 If you wanted, you could say this: : INPUT ." ? " ACCEPT ; if you wanted it. :D 15:25:40 is that standard? 15:25:46 Yes. 15:25:48 oki 15:26:16 You need the address of the buffer, and the maximum size of the buffer (in characters). The *result* from ACCEPT (yes, there is one) si the number of characters actually read. 15:26:42 oh right 15:26:48 This way, you know how big the string is. 15:27:06 hm 15:27:10 32 accept 15:27:17 then entering fewer characters and entering 15:27:19 results in a crash 15:27:20 :\ 15:27:24 You didn't read what I wrote. 15:27:38 ACCEPT needs the address of a buffer which you create yourself, AND the length of the buffer. 15:27:44 CREATE BUFFER 32 ALLOT 15:27:47 oh 15:27:52 BUFFER 32 ACCEPT . 15:27:59 :) 15:28:01 but it doesnt crash if i give it exactly the amount of bytes i said i would... 15:28:13 That's pure luck. :) 15:28:13 but alright 15:28:13 :) 15:28:27 brb 15:34:21 back 15:35:11 can you trap escape with accept? 15:35:40 i wanna make a while loop, as long as the user didnt enter 8 bytes, except if its an escape 15:35:49 Not to the best of my knowledge. 15:35:59 but by the looks of it accept escapes with escape so that would be an endless loop 15:36:01 hm 15:36:07 In that case, it's probably better to code an alternative to ACCEPT using KEY. 15:36:21 key reads just one char right? 15:36:24 Yes. 15:36:27 k 15:36:31 KEY EMIT 15:36:32 :) 15:36:50 well its just 8 bytes, key will do fine i guess 15:37:00 x x space x x space x x 15:40:02 --- quit: networm ("Client exiting") 15:42:34 does exit just exit the word you are currently in, or does it immidiatly return to the prompt? 15:42:48 Current word. 15:42:56 and what exits to the prompt? 15:43:19 I don't know if there's any standard word for that.... 15:43:22 k 15:43:58 you can just clear the return stack, that'll do the trick ;) 15:44:12 That sounds safe. 15:45:27 I'd just use KEY 15:45:50 Yes, there is: it's called QUIT. 15:46:12 It won't display the prompt, but it will restart the Forth interpreter. It's just a hair shy of a warm boot of the Forth system. :) 15:47:29 exit causes an exception 15:47:32 for me.. 15:47:40 create get-guess-buffer 8 allot 15:47:43 : get-one-key ( -- key ) key dup emit ; 15:47:44 : get-guess2 ( -- flag ) 15:47:44 get-guess-buffer 15:47:44 8 0 do get-one-key dup 27 = if cr ." Sir!" exit else get-guess-buffer i + ! then loop 15:47:44 cr 8 0 do i get-guess-buffer + c@ . loop arrow 8 0 do i get-guess-buffer + c@ emit loop 15:47:44 ; 15:48:19 hm the first get-guess-buffer shouldnt be there 15:49:38 You should also use C! to store characters; remember ALLOT allocates bytes, not cells. 15:49:40 oh and ! should be c! 15:49:41 right 15:49:41 :p 15:49:48 :) 15:50:20 but exit still leads to exception 15:50:23 variable col variable row 15:50:30 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 15:50:50 HI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 15:51:02 Ow, my ears. 15:51:22 :) 15:51:38 how are you? 15:52:32 bahhh 15:52:36 I have to go again. laters 15:52:40 Bye Jason 15:53:41 could exit cause an exception because the return stack has items from the do loop? 15:54:13 create get-guess-buffer 8 allot 15:54:14 : get-one-key ( -- key ) key dup emit ; 15:54:14 : get-guess2 ( -- flag ) 15:54:14 8 0 do get-one-key dup 27 = if cr ." Sir!" exit else get-guess-buffer i + c! then loop 15:54:14 cr 8 0 do i get-guess-buffer + c@ . loop arrow 8 0 do i get-guess-buffer + c@ emit loop 15:54:14 ; 15:54:54 Yes. 15:55:05 k. remove one or two items? 15:55:09 EXIT will attempt to "return to the loop information" if they're still there 15:55:16 Use UNLOOP and it won't matter. 15:55:38 indeed 15:55:40 tnx :) 15:55:43 n/p 15:56:13 is unloop defined as : unloop r> r> 2drop ; ? 15:56:17 Maybe. 15:56:19 :) 15:56:20 May not be. 15:56:25 Depends on specific implementation details. 15:56:32 its code for me, but i'm trying to know what does what 15:56:35 The only detail you can be sure of is that I is the same as R@. 15:57:00 I don't know. I haven't used Win32Forth, so I can't say. 15:57:04 r@ will get the value of the address on the return stack? 15:57:17 and return it on the ..... stack ? 15:58:21 in GForth under Linux, : MyPersonalUnloop r> r> r> 2drop >r ; 15:58:35 No, it returns the top of the return stack. 16:01:02 hm, that doesnt feel right... thats the same as r> does then.... :\ 16:01:07 No. 16:01:12 Because R@ doesn't pop the top of return stack. 16:01:16 oh 16:01:19 ic 16:01:48 the @ is a bit of a bad choice then imo :) 16:01:49 It just copies it. 16:02:18 Yeah, if you look at it in that sense. Personally, I'd expect it to fetch the contents of the return stack pointer itself. 16:02:18 oki 16:02:22 aye 16:03:39 Well, I think I'm going to head out and grab some food. 16:03:43 I'll be back shortly. 16:04:01 (Heading out to fast food joint, to rot my stomach out even further than it currently is.) 16:05:19 :) 16:19:32 (: 16:43:35 --- join: matt_ (1000@adsl-64-160-165-14.dsl.snfc21.pacbell.net) joined #forth 16:43:44 --- nick: matt_ -> Sonarman 16:44:14 Back 16:44:23 HAH! Now I know Sonarman's first name. :D 16:44:33 chris? 16:45:41 no no, john. 16:46:49 kc5tja: how do you know my last name isn't Att, with my first initial being M? :) 16:47:37 --- quit: qFox ("if at first you dont succeed, quit again") 16:48:14 :) 16:48:31 I am Michael Alderman Torzen Three 16:49:13 :) 16:49:51 Sonarman: j00 4r3 Matt KRamer 16:49:57 and today in class i had to find the properties of a polygon ARKE 16:50:01 kc5tja: Sam Falvo 16:50:04 arke: Chris Walton 16:50:11 Sonarman: hahaha cool 16:50:22 hey matt, how old are you? 16:50:40 15, a freshman 16:52:14 arke: You cheated; my information is on the Internet; anyone who knows how to use qrz.com can figure that stuff out. :) 16:52:36 kc5tja: ... 16:52:42 kc5tja: or, one could just /whois you 16:52:45 http://www.qrz.com/detail/KG6DGG 16:52:47 Sonarman: :) 16:53:48 Sonarman: haha, bitch, I'm older than j00! 16:53:56 * arke is gonna be 17 in a few motnhs 16:54:27 17? That's all? 16:54:29 :) 16:54:51 kc5tja: :) 16:57:24 how do I explain to my mom what /. is? 16:57:50 little kids! 16:58:06 geezers! 16:58:32 * slava is 20 16:58:37 perfect age, hah :) 16:59:11 :) 17:00:46 Hahaha, Silly Chuck! Forth is for Kids!!! :D 17:01:49 hey now, let's not be comparing Chuck to some soulless advertising gimick :) 17:02:10 OR YOU SHALL BE BEHEADED (in order to save dictionary space) 17:05:00 :) 17:05:23 Better to be beheaded than forgotten, or worse, emptied. :) 17:06:36 hehe :) 17:09:23 i will increase the dictionary barrier to ensure i'm never forgotten! 17:10:25 i will ' FORGET >BODY ' EXIT COMPILE, 17:11:19 :) 17:16:05 OK, it's currently 5PM. 17:16:33 Where the hell did all of today go? 17:16:55 i ask myself that every night at 10PM :) 17:17:14 kc5tja: I was troubleshooting accounting file formats all day... time flies when you're having fun!!! (ugh) 17:39:22 --- join: blockhead (default@dialin-1001-tnt.nyc.bestweb.net) joined #forth 17:39:23 --- quit: I440r (Read error: 104 (Connection reset by peer)) 17:40:22 --- join: I440r (~Mark4@64.47.44.254) joined #forth 17:50:55 --- quit: I440r ("Leaving") 18:11:14 --- join: I440r (~mark4@64.47.44.254) joined #forth 18:13:53 HI ALLLLLL 18:14:46 hey 18:15:08 HOW ARE YOU :) 18:15:36 * blockhead hands arke a caps lock key 18:15:46 thank you. 18:15:50 i'm ok. how are you 18:16:00 :) 18:17:02 Not unwell, thank you. 18:21:20 --- quit: I440r ("Leaving") 18:21:57 Cheesemonkey why not 18:21:59 woops 18:22:14 mmmmmm, cheese :D 18:28:02 Cheese = Good. 18:28:16 : essence-of-godliness compile cheese ; 18:30:19 forget cheese 18:30:27 *gasp* 18:31:11 * blockhead looks aghast at Sonarman 18:31:31 did I spell that right? :/ :D 18:34:41 :) 18:43:09 evilwm doesn't work right on xsun :( 18:51:24 aah, yes it does, I'm just a dumbass :) 18:52:39 http://cgi.ebay.co.uk/ws/eBayISAPI.dll?ViewItem&item=2796162344&category=163&sspagename=STRK%3AMESSE%3AIT&rd=1 18:52:51 Mark I. Manning is in the Table of Contents :) 19:16:12 nznznz 19:16:14 nz 19:16:16 n 19:16:18 js\\\ 19:16:20 hahaha 19:16:21 hahahaahha 19:16:26 how cpp; 19:16:35 O c an't type todahy 19:16:37 ipoadfh\ 19:18:53 --- nick: madgarden_ -> madgarden 19:21:28 * Herkamire smacks himself in the forhead... gforth doesn't check for devision by zero either 19:25:00 :) 19:34:23 I had a further "eureka" moment with regards to a more readable Forth. 19:35:00 There are 3 simple rules. 19:35:53 Herkamire: don't mention "divide by zero". My stupid forth was doing that today. I may just remove the "/" word altogther :/ 19:36:22 madgarden: cool! 19:36:45 Want to hear them? ;) 19:36:56 madgarden: yes! 19:37:07 (please) 19:37:21 OK, here goes! Feel free to laugh/flame etc. ;) 19:37:45 1) Words that do not take values from the stack start with a capital letter 19:38:04 2) Words that do not leave values on the stack end with a period (.) 19:38:16 3) Words that parse ahead one token end with a colon (:) 19:38:45 The end result looks very much like a sentence, and the general flow of the data is apparent. 19:39:45 --- quit: fridge ("Client exiting") 19:39:52 madgarden, interesting! 19:40:11 So, here's an example, similar to what I posted last night... 19:40:34 Foo. Bar. 10 constant: fred Variable: bob 10 baz Bar. 19:40:47 foo bar 10 constant fred variable bob 10 baz bar 19:40:49 Compare the two. 19:42:26 fred is not sure about the case thing, but the ":" and "." thing does clarify matters 19:42:27 blockhead: what happens when you devide by zero? 19:42:57 --- join: yeoh (~yeoh@219.95.232.182) joined #forth 19:43:15 Herkamire: the machien freezes. I have to do a hard cold boot by holding down the power switch for a 12-count 19:43:39 blockhead, well an alternative could be to start with a period for such words... but case makes sense to me, since a regular English sentence starts capitalized with no previous "data" usage. 19:43:43 So I've started to run the forth inside a dos emulator so it doesn't take the machine down 19:44:17 madgarden: your way makes sens. I just have a personal preference for case-insenstive languages (a reaction to C) 19:45:04 blockhead, to be honest, I'm not a big fan of case sensitivity either. I'm open to other suggestions. 19:45:22 * blockhead has none :( 19:45:36 madgarden, i fear the results of your conventions won't look like english though 19:45:48 madgarden, like you'd have Foo Bar baz. quux. 19:45:59 they don't look like english, but they are easier to "parse" visually 19:47:10 madgarden: I suppose you could have the language be case-insensitve, and the case could be just be a programming style convention 19:47:54 blockhead, that's mostly what I intended with this. A convention. 19:48:26 so Foo foo & fOo would all be the same word 19:48:39 Yep. But foo and foo. would not be. 19:48:44 right 19:48:52 You could retrofit existing Forth words with this. 19:49:19 Though, hmm... I wonder if you'd need different notation for adding or removing from the stack. 19:49:26 drop, for instance. 19:49:38 madgarden: to much detail 19:49:53 Just indicating a stack effect is good enough? 19:49:53 keep it simple 19:49:59 drop. 19:51:14 \ "drop" effect . 19:51:14 ( X -- ) 19:51:45 drop\ 19:53:39 Actually, if no punctuation indicates some stack effect, then drop remains as it is. 19:53:50 there you go 19:53:53 So, what's a good little algorithm to test this out on, see how the code looks. 19:54:37 I think the "start using it in your own projects and see how it goes" algorithm might be suitable 19:54:42 :) 19:55:32 * blockhead might start using it in his forth, once it gets to the point where it has an outer interpreter 19:55:42 eventually i want to do a fancy editor where hovering the mouse over a word shows a tooltip with stack effect+descrption 19:55:53 nice 19:56:53 handy for when you forget which direction "rot" goes in 19:57:06 blockhead, heh. You're quite right. :P And I will use it. 19:57:22 I think it would work especially well with Slava's Factor. 19:58:56 slava, you could colour-code your words to indicate stack effects. :) 19:59:13 colorforth! aaagh! 19:59:19 personally i have more problems with type errors than stack errors 19:59:41 And italicize the text left or right to indicate direction of rotation. ;) 20:00:04 now we're just gettin silly :) 20:07:43 I'm new to Forth. Found many tutorials here: http://www.forth.org/tutorials.html Which is the best? I have experience coding in C,C++ and assembly. 20:08:15 yeoh, do you want to learn how to write Forth code, or create your own Forth? 20:08:31 learn how to write Forth code. 20:09:04 * hefner_ wonders how many people create their own forths without knowing how to write forth code 20:09:29 I learned how to write Forth code by writing my own Forth systems. 20:09:39 I haven't yet finished my last environment yet though. 20:09:47 kc5tja: :) 20:09:48 Been too busy working on other things, with higher priority. 20:09:50 kc5tja: :) 20:09:51 kc5tja: :) 20:09:51 kc5tja: :) 20:09:51 kc5tja: :) 20:09:51 kc5tja: :) 20:09:52 kc5tja: :) 20:09:53 kc5tja: :) 20:10:13 hefner_: that would be me :) 20:10:13 arke, please don't flood 20:10:14 evilwm is sooooo sweet 20:10:15 I think learning Forth by writing a Forth is a good idea. 20:10:23 yeoh, what do you plan on doing with forth? 20:10:50 I'm not sure. I want to know what Forth is good for. :) 20:12:50 yeoh: everything. 20:13:50 correction: you can *write* a forth that is good at any particular thing 20:13:57 but one forth cannot be good at everything 20:14:24 --- join: ayrnieu (julian@65.169.246.16) joined #forth 20:14:25 thanks arke. I think the first tutorial I should read is "What is Forth". 20:15:17 * blockhead is a blockhead. I figure out my divide by zero error. 20:15:54 and on that positive note. good night to all 20:16:13 --- quit: blockhead ("Client Exiting") 20:16:42 I like this part: "a language for writing languages". :) 20:16:48 cool! 20:16:56 yeoh, google for "Forth: An Underview". It's a good intro to some Forth ideas, one of the first things I read that made it click in my mind. 20:17:55 thanks madgarden. you mean this one: http://dec.bournemouth.ac.uk/forth/forth.html 20:19:01 Yes, that's the one. 20:19:09 ok :) 20:19:45 And I agree, Forth is great for making new languages. Each time you use Forth to write programs you're essentially doing so. 20:20:58 I've saved the page for reading later. :) 20:23:31 Does this mean that one could create a new language for each program one writes? 20:24:20 I mean each language unique to that program. 20:26:22 yikes! does x86 break to an interrupt when you try to devide by zero? 20:27:14 yeoh: Generally speaking, yes. 20:27:23 Herkamire: Yes, it will trap (as do most CPUs). 20:28:17 RPM HELL ARGSdggfksjg;kajfga;df 20:28:30 I see but wouldn't it be difficult for others to understand my code? 20:28:55 yeoh, comments, documentation, etc 20:29:01 yeoh, just as with any other language 20:29:03 You either need to document it correctly, write self-describing code, or include your entire source. 20:29:15 Preferably a little of all three. :) 20:29:42 I see. :) Yes, I suppose it needs detailed documentation. 20:32:01 I beginning to see Forth's power now. I love it. :) 20:32:23 :) 20:32:29 don/t listen to Smerdyakov 20:32:40 Yeeeesssss.....feeeeel your anger......FEED your HATRED!!! >:) 20:33:56 I only listen to the truth when I see it with my own mind. :) 20:35:27 Darn. : 20:35:28 :) even 20:36:59 heh, I keep hearing references to Smerdyakov, but have rarely seen him talk 20:38:02 He's over at #hprog. 20:38:20 chandler: he is so hell-bent on strong/static typing that he considers *any* attempts by us to present an argument in favor of typeless/weak typing systems as not a valid argument; therefore, by default, he wins the argument because we're intellectually inferior, and can't hold an argument worth persuing. 20:38:50 I've also heard he's a rabid anti-sexpression troll 20:38:58 Smerdy has some problems...' 20:39:02 Of course; s-expressions are typeless. 20:39:35 wouldn't dynamically typed be a better term for them? 20:39:54 Sure, when viewed in that light. 20:40:06 But you get the idea. 20:40:08 but yeah 20:40:24 eh, sounds like someone who is not worth talking to then :-) 20:40:31 Nope. 20:40:34 Not even close. 20:40:38 He's best kept on /ignore lists. 20:40:41 :) 20:40:55 he's not too bad when he's not on his typing thing 20:41:02 or his "engineering" thing 20:41:08 he takes things way too damn serious 20:41:54 His attitudes towards those things present a brief slice of his global world view, which is unnecessarily condescending to everything except that which he himself has granted special privileges to. 20:42:35 In short, he's a stuck-up, pompous asshole who thinks he's god's gift to man. The reality is, he's a steaming shitpile of diatribe and irrational thought. 20:42:57 kc5tja: I've never agreed with you more ^_^ 20:43:58 I have to wonder though: if he wants to make a simple calculator program for his GUIs, does he build type-safety into them? That is, can he reasonably add 1 to 5.2, without it throwing up all over the user? 20:44:21 After all, integers are not floating point values. Two totally different types! 20:44:53 he'd keep it all as float 20:45:20 or, he digs up some obscure ML function which converts it (He does EVERYTHING in ML if he has a choice!) 20:45:31 * kc5tja loves ML. 20:45:33 oh i remember Smerdyakov 20:45:38 I like how ML handles types, and I appreciate its beauty. 20:45:57 But I won't consider ML to the exclusion of other languages, or even other schools of thought. 20:46:17 * chandler usually excludes static typing from his thought :-) 20:46:40 chandler: interestingly, ML lets you do precisely that. That's why it uses type *inferencing.* 20:46:55 then why would I use ML? :-) 20:47:33 there was actually an interesting point raised on comp.lang.lisp a while back; lisp (and other dynamically typed languages) are statically and strongly typed; everything has a type of (whatever the most inclusive supertype is in your language) 20:47:56 Especially considering the same optimization techniques can be applied to Lisp, the only answer to that question is pure speculation: preference for syntax. 20:48:02 there are no run-time type errors, merely occasional jumps to a failure continuation / error handler when some data does not satisfy a required propery :-) 20:48:02 chandler, by that argument all languages are typed! 20:48:32 slava: I think that is his point. 20:48:43 ML is neat, but .... well .... its just not the sole language of the world 20:48:55 ML produces some rocking code. 20:48:55 yes it is! I have a PhD! 20:49:22 What does having a PhD have to do with anything? 20:49:34 that's called "proof by intimidation" 20:49:52 chandler: precisely *my* point. I was basically asking, "So what?" 20:50:22 I know what you meant; I was supplying the precise name of the logical fallacy. 20:50:26 and he doesn't even have it yet .... he's learning for it 20:50:28 at berkleley 20:50:49 ack, fucking bastard afterstep just took a shit on me 20:50:55 * kc5tja wishes he could focus on schoolwork long enough to get decent grades. :) 20:51:05 oh, he's not officially degreed? 20:51:06 (: 20:51:19 chandler: learning to do so 20:51:57 arke: ah, then I have just as much qualification as him then :-) 20:52:03 * chandler is a PhD student at Indiana University 20:52:35 chandler, whats your language of choice? i notice you're in #scheme, #lisp and #forth 20:52:45 Lisp. 20:53:04 I find it interesting how lisp and forth are such opposites, yet SO alike 20:53:19 Usually I write in Lisp or Scheme, depending on what I'm trying to express. I like Forth a lot, but my mind thinks in Lisp-ish ways :-) 20:53:30 arke: What's more, the Forth and Lisp communities have maintained very amicable relationships, quite unlike *any* other language community. 20:53:45 C and C++ :D 20:53:54 arke: Even they have their violent disputes. 20:53:55 arke: yeah. I think Mies van der Rohe would say that they're both "honest" languages, unlike C/C++/whatever else 20:54:04 :) 20:54:17 * arke puts aside the sparc for the night 20:54:39 and then there's langauges like joy and factor which combine aspects of lisp and forth 20:54:40 Lisp strives to be more mathematically correct, while Forth strives to be more pragmatic (speaking as a language philosophy). 20:54:41 and they do share quite a lot in common, particularly the emphasis on incremental development 20:55:03 kc5tja, lisp is quite pragmatic too, it has a lot of imperitive constructs for instance 20:55:04 :) 20:55:07 both are two halves of a common goal, I think. 20:55:12 I think Lisp has its own pragmatism; it just comes in at a different level 20:55:18 Although I _do_ think forth misses the hiding thing 20:55:21 slava: Not the type of pragmatism I'm talking about. 20:55:48 yeah, I think I grok what kc5tja is talking about. 20:56:19 arke, forth is the opposite of the 'black box' paradigm; its a 'transparent box' 20:56:31 Hmmm, you know, I never considered implementing a Lisp dialect for the Kestrel until now. Not sure why. 20:56:34 It seems like such a natural. 20:56:51 :) 20:57:09 kc5tja, i could try making one :) 20:57:32 You'll need to wait for the Kestrel to be released first. I gave up on the 65816 emulator project. 20:57:33 something very simple, no fancy data types 20:57:35 slava: how's your language coming? 20:57:51 chandler, i'm stuck on 1 compiler issue 20:58:17 out of curiosity, what does it do for error handling? 20:58:28 it gives up and enters the debugger 20:58:32 no 'catch' yet 20:58:41 oh there's something you should see 20:58:43 Oh, and some APL dialect language too. That would be fun! :) 20:59:03 chandler, slava.kicks-ass.org:8888/see.lhtml?httpd 20:59:27 whoa, that's awesome 20:59:38 is that code taken straight from the running httpd image? 20:59:42 yes 21:00:04 slava.kicks-ass.org:8888/dictionary.lhtml 21:00:04 damn, I want this in an editor, with command-click or something similar to jump to the definitions 21:00:09 yes, that's planned 21:00:25 the see/html word takes the name of a word and prints nice html 21:00:30 take a look at it 21:00:30 whoa. massive cool 21:00:53 I think the VIC-20 web server is even cooler. :D 21:00:55 chandler: it's very handy :) 21:00:59 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 21:01:03 my forth has this feature 21:01:05 With its monsterous 4KB of RAM. >:) 21:01:33 editor always shows definition of word under cursor. Shift-F moves the cursor to the definition (on whatever block) 21:01:38 But, I digress. 21:01:57 Herkamire: does it pull the definition from the running environment? 21:02:19 --- join: proteusguy (~proteusgu@workstations.pinnaclesports.com) joined #forth 21:02:38 chandler: um. I guess. it displays the source. it does not decompile 21:02:56 the source is kept in RAM 21:02:58 oh, so it finds the source on-disk? 21:02:59 oh 21:03:00 ok 21:03:38 Shift-S saves everything to a new ELF file (blocks of source, new kernel, dictionary, etc) 21:03:49 so the displayed source is always up to date 21:03:58 what slava is doing to me looks like what InterLisp used to do by keeping the definition of the function as a list (well, a structure with comments actually) tagged to the function definition, so you could always pull it up in the structure editor 21:04:08 chandler, when factor compiles code, it has to transform it from stack form to local-variable-passing-form. there are certain cases of recursive words where i cannot figure out how to do this 21:04:39 I just wanted to say that it is extremely useful to be able to press a key to jump to a definition. 21:04:39 yes, in fact i played with the interlisp emulator 21:04:44 Herkamire, yes 21:04:50 Herkamire, for java, i use CTags to achieve this 21:04:56 much more useful than something like that would be for say C. because my code is so highly factored 21:04:57 C+] on a method name or class -> whammo :) 21:05:03 Herkamire: yes, I do the same now with SLIME / Common Lisp, but it just pulls up the file with the definition 21:05:37 chandler, oh the other day i had the greatest idea 21:05:48 since forth words are so short usually 21:05:55 you don't really need an 'editor' at all 21:06:04 what would you replace it with? 21:06:05 just some way of transferring lines of text to the REPL's input buffer 21:06:12 "hello world" ed 21:06:17 ==> as if you typed "hello world" 21:06:21 and how you can use line editing to change it 21:06:35 oh, hm, I'd love to have a structure editor though 21:06:44 combine this with my previous idea of saving definitions entered at the REPL in a database 21:06:52 structure editing can be done using whatever REPL features 21:07:00 maybe the repl can be a structure editor and not a vector-of-character editor 21:07:00 in fact, everything entered at the REPL can be structure-edited 21:07:02 * arke is away: halo 21:07:03 woot 21:07:19 chandler, you'd need both though, in case user code needs to read unstructured text, etc. but its a good idea 21:07:30 oh of course 21:07:50 but for the UI I definitely want something which operates on entire cons cells / definitions / whatever as a structure 21:07:56 i'm going to do a real debugger soon. 21:07:59 that's my ideal programming UI :-) 21:08:02 or in other words, a continuation editor. 21:08:10 what's REPL stand for again? read enterpret ...? 21:08:22 btw, i read the 'trampolining' style paper, and realized i do the exact same thing in my interpreter. 21:08:25 print loop? 21:08:26 Herkamire, read eval print loop 21:08:26 slava: are you going to have a Java-like exception handling system 21:08:39 chandler, something of the sort, but i haven't figured out how it will play 21:08:42 with continuations 21:08:48 or how try/finally can be done with continuations actually 21:08:59 the finally part is a problem 21:09:06 because finally is the same as unwind-protect 21:09:19 yes that's why 21:09:22 do you know what partial continuations are? 21:09:26 no 21:09:30 http://www.nhplace.com/kent/PFAQ/unwind-protect-vs-continuations.html 21:09:35 that's for unwind-protect vs continuations 21:09:47 http://citeseer.ist.psu.edu/moreau94partial.html 21:09:54 partial continuations are the difference between two continuations 21:10:07 thanks for the links! 21:10:10 they only reify the stack between a marker and the capture point, not the entire stack 21:10:34 when you call the reified partial continuation you don't leave your current dynamic extent then 21:11:22 what this means is that you can start to map some sane semantics onto finally / unwind-protect in the presence of continuations 21:11:38 also, I think you'll like the notion of prefixial extent 21:13:43 so far i only use continuations for co-operative multitasking 21:14:08 oh, and call/cc can be implemented with partial continuations 21:14:27 suspending tasks, and resuming them on certain conditions 21:14:34 im reading the paper now. 21:15:15 oh, does factor have anything like type-of? 21:16:22 not yet, but everything is just a java object 21:16:25 so you could add: 21:16:41 : type-of ( obj -- class ) [ ] "java.lang.Object" "getClass" jinvoke ; 21:17:04 oh 21:20:45 --- join: ASau (~asau@158.250.48.196) joined #forth 21:20:51 Dobre jitro! 21:21:43 Hmm... 21:22:00 * kc5tja is trying to figure out the best way to let the user bank ROM into the 65816's address space. 21:22:29 kc5tja, its a flat 16-bit address space? 21:22:51 slava: 24-bit, and I'm not sure what it being flat has anything to do with it. 21:23:01 oh 21:23:08 that's a big address space! 21:23:10 what will the max ram be? 21:23:19 That remains to be seen. 21:23:40 Initial models might allow only up to 4MB due to tight budgets. 21:23:51 that's more than enough 21:24:00 i thought i'd be something like 256k 21:24:08 BUT, I still need to bank ROM into the address space. 21:24:11 with segment switching (since i thought it was a 16-bit addr space) 21:24:45 The 65816 addresses memory in both a banked and a flat mode, depending on addressing mode used. 21:25:14 It's normal mode of operation is banked: e.g., the upper 8 address bits are found in the program bank register (PBR) or data bank register (DBR). 21:25:35 But there exists several addressing modes which bypasses the bank mechanism, and supplies a raw 24-bit address. 21:26:01 (obviously, the banked approach is faster and smaller, as less bytes are in the code image) 21:26:05 However, . . . 21:26:15 I still need to bank ROM into or out of the memory space. 21:26:59 The 65816 seeks its initial (16-bit!) PC value at $00FFFC. 21:27:09 Not at $FFFFFC, which would make things a bit easier. 21:28:12 Hm. What if the memory is clear (set to zero)? 21:28:37 ASau: Irrelavent: the initial program counter is sought at $00FFFC after the chip resets. 21:29:07 Why? 21:29:14 Because that's the way the CPU works. 21:29:16 00 -> 00.. 21:29:34 And after a reset, you cannot guarantee the state of RAM. 21:29:59 Reasonable. 21:31:00 And you can't give him right address on bus. AIR? 21:31:17 ASau: I'm sorry? can you clarify your sentence? 21:32:06 Can you give him another initial PC address by A23(A15)...A0? 21:32:32 I'm still not understanding. 21:32:41 What did you mean by bus. AIR? 21:32:55 And I don't understand what A23(A15)...A0 refers to exactly. 21:33:29 Well. You maybe could fake data or address. When CPU asks for them. 21:33:49 OK, I got it that time. :) 21:33:54 It requires logic. 21:34:04 Yes, it's possible to do. However, it requires logic that I can't afford (either cost or PCB space). 21:34:07 I don't know how complex it's, though. 21:34:36 ASau: It's pretty easy to do actually for the 65816. It exposes a dedicated signal called VP (Vector Pull) which indicates when a vector is being sought. 21:35:07 But, I don't have the board space or the money budget to include such logic. 21:35:26 And it really wouldn't by me anything: remember the vectors are *16-bits*, not 24; thus, code still will execute at $00xxxx. 21:37:38 Well. You need bank switching or ROM in the bottom, as I understand. 21:39:30 Yes. 21:39:30 I hope 65816 don't have fixed interrupt vectors table's address like 8086 or such. 21:39:39 ASau: It does. 21:39:57 The 65816 is designed to be a drop-in replacement (more or less) to a system equipped with a 6502. 21:40:03 Is it at bottom? 21:40:09 no, it's at the top of bank 0. 21:40:28 FFxx is the start. 21:40:53 Vectors are found at FFFx when in 6502-mode (which it is by default when it boots), and FFEx when in 65816-native mode. 21:42:28 How much ROM do you plan? 21:42:54 8K? 16K? 32K? 21:43:02 4K? 21:45:06 Up to 128KB, but arranged so that there is one 32K chunk in every bank. 21:45:16 So the first 32K chunk appears in bank 0, the next 32K chunk in bank 1, etc. 21:45:29 The address decoder does this by decoding address bits A23, A22, and A15. 21:46:02 Then, A[16..17] is sent to the ROM's A[15..16] address lines, since A15 is used internall for address decoding. 21:46:22 (BTW, the use of A23 and A22 is the reason why it'll likely support only 4MB of RAM space in the first version of the hardware) 21:47:29 Of the 128KB space alloted for it, probably only 16KB to 32KB will be used. But the expandability is there if it's needed. 21:47:31 --- join: fridge (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 21:47:49 Dobre jitro, fridge! 21:47:55 what does that mean? 21:48:05 I know it sounds strange to do things this way, but it really, raelly does take up a lot less gates this way! 21:48:06 Good morning. 21:48:10 in what lang? 21:48:12 ru? 21:48:17 CZ 21:48:20 ahh 21:48:34 shows how much I know =( 21:50:13 I figure RAM can be found at 000000-3FFFFF, the video shift register can sit at 400000-4000FF, and the two VIA chips can sit at 800000-80000F and C00000-C0000F. 21:50:16 kc5tja. I start thinking that ROM out of address space is better. 21:50:26 Lots of wasted address space, but again, the idea is to keep parts count down, and costs affordable. 21:50:44 ASau: The computer needs ROM to boot with. It has to be there. 21:50:47 There is no getting around it. 21:51:11 Otherwise, you have to boot the computer with toggle switches or something. That's unacceptable, even for a project of this nature. 21:51:16 As I understand your question was to switch it off or not. 21:51:52 ASau: The question was how to do it in the most effective way. ROMs are slow; RAM is fast. A ROM access time is around 150 to 200ns. RAM is in the 30ns range. 21:52:09 So the ROM must copy itself to RAM, then turn off the ROM image, so that the CPU can run at maximum speed. 21:52:31 OK. 21:52:51 teehee 21:52:56 I think it's better to run at full speed. 21:53:04 i had another one of my nifty CPU ideaw 21:53:17 ASau: Ummmm........isn't that *precisely* what I just said? 21:53:30 I'm glad we've come to such a heartfelt agreement on that issue. 21:53:57 But you can't run at "full speed" when accessing ROM chips. 21:54:00 The chips are just *too slow*. 21:54:02 the CPU has the ability to receive 3 instructions per cycle, but only has a maximum output of 2 21:55:02 Hence, wait-state generation is required to make sure hardware timing constraints are met. 21:55:22 Turning off the ROM, once it's copied to RAM, will ensure the CPU is able to run at full speed. 21:55:25 kc5tja. As I understood, "outer ROM" means you copy it to RAM and go on. 21:55:50 And you were deciding to do or not to do. 21:55:58 No, that's not at all what I was deciding. 21:56:08 I *KNOW* I'm going to bank-out the ROM. 21:56:13 It's been part of the design since day one. 21:56:20 Ah. 21:56:31 What I'm deciding on is *HOW* to do it, with a minimum of gates and financial expense. :) 21:56:44 A! 21:56:52 kc5tja: no comments on what I just said? 21:57:12 arke: No, beacuse I don't understand where you're coming frmo with it, where you're going to, or why. 21:57:27 ASau: Part of the joy of being an electrical engineer. :) 21:59:06 kc5tja. Sorry, I can't help in this. :) 21:59:13 I'm not EE. 22:01:53 hmm 22:02:05 are float operations like f+? 22:03:12 yeah god dammit how do you input for the floating stack? 22:03:55 Isn't there a word like FNUMBER or some such that does that? 22:04:16 If you're ANTI-standard, see ANTI standard. 22:04:18 * arke is away: bbl 22:04:40 heh -- ANTI. ) 22:04:41 :) 22:05:19 i dont know 22:05:22 dammit forth 22:05:37 What is your Forth? 22:05:40 gforth 22:05:51 is there a forth that does the cool perl scalar thing? 22:06:00 See ANS-94. 22:06:20 There should be separate section for float point numbers. 22:06:20 Cool Perl Scalar Thing? What is that? 22:06:29 where everything is one data type 22:06:42 warpzero, its called 'factor' :) 22:06:45 warpzero. It's done. 22:06:47 warpzero, forth is untyped 22:06:55 slava. No. 22:07:01 Forth is typed. 22:07:08 It has unique type. 22:07:13 The number. 22:07:31 good night 22:07:46 Spokojjnojj nochi! 22:08:10 REXX does the Cool Scalar Thing, and it's 100% better than Perl in every capacity except regular expressions (which ought to be very easy to add as an external library, since REXX is designed for expansion). 22:08:26 But you won't find very many REXX implementations for Linux. 22:08:39 * Herkamire tries to drink, and fails miserably, spilling water all over and caughing 22:08:53 maybe I should stick to things I'm better at like programming ;) 22:08:59 kc5tja: uh i didn't ask for perl, i asked for a forth that used a similar dta type 22:09:03 ASau: And the nice thing about REXX: It too is a derivative of PL/I. :D 22:09:29 I know, I'm just saying, that's the only other langauge I know of that has that capability. 22:10:00 well i guess you could write a forth in perl ^_^ 22:10:30 Now that is just wrong. :D 22:10:37 Maybe in the Perl bytecode that it uses... 22:10:46 But that'd still be pretty slow. 22:10:51 (in comparison) 22:10:58 hmm? parrotcode? 22:11:30 Not sure what it's called. 22:11:56 --- quit: arke (Read error: 60 (Operation timed out)) 22:12:22 well the perl5 bytecode isn't really seperatable from the perl5 interpereter 22:12:34 but perl6 uses parrotcode which is a register-based bytecode vm 22:13:28 kc5tja. REXX is IBM's. PL/I is IBM's. No wonder. 22:13:56 Damn! My galvanic cell has too low emf. 22:14:05 your what 22:14:14 ASau: I used ARexx for AmigaOS. One of the best dang languages I've ever used. A tad on the slow side, though, even compared to BASIC. But it could do a **LOT**. 22:14:25 It should be 4-6 times larger! 22:14:28 It all but replaced the normal shell for shell scripting. :) 22:15:49 kc5tja. Actually there's scsh. 22:15:56 It's Scheme. 22:16:21 Hm. And tclsh. 22:16:29 ASau: Amiga doesn't have scsh. 22:16:39 --- join: Serg (~z@212.34.52.140) joined #forth 22:16:54 And scsh doesn't permit control of independently running programs (e.g., you can't "meta-script" these applications like you can with REXX-aware apps). 22:18:17 Labas ritas, Serg! 22:21:18 ;) 22:26:02 How's your Forth? 22:26:34 --- quit: Sonarman ("leaving") 22:39:20 * Serg is getting a life, not coding 22:39:35 yesterday messed w/ video editor ;) 22:44:57 Ha! 22:45:02 That's right. 22:45:06 BECHA! 22:45:29 And I've written screen editor in 4 lines. 22:46:21 But that does no matter. 22:46:45 My galvanic cell has too low emf. 22:47:11 It should be at least 5 times larger. 22:47:31 11,5 mV is too low. 23:17:56 --- quit: ayrnieu ("system") 23:21:00 --- join: ayrnieu (julian@65.169.246.16) joined #forth 23:26:37 screen ed in 4 lines ? nice ! 23:26:46 what can it do ? 23:39:22 Erase line, replace line with input one, list screen. 23:42:23 hmmm... 23:42:31 i dislike blocks and use text files 23:42:45 Try them. 23:42:53 I've liked. 23:43:15 what advantage do they have over text files ? 23:43:37 It's easy to program an editor. 23:43:53 It's easier to separate comments and real code. 23:44:05 See shadow screens for details. 23:44:38 but hard to exchange w/ file oriented folks, hard to insert... 23:44:53 hard to process/edit by other tools 23:45:00 No problem in exchanging. 23:45:32 "man dd" for details. 23:45:33 if only putting cr/lf for text viewvers, but this wastes RAM 23:45:56 and what if i want to insert some code in full block ? 23:46:37 You don't need to hold CR LF for a long time. 23:46:47 ? 23:46:55 And you never need to insert, append only. 23:47:11 Or move definitions in another screen. 23:47:21 what if size of project is too big for block pool ? 23:47:38 zcat file | dd bs=64 | more 23:47:44 Or smth. like. 23:47:54 What? 23:48:03 16MB is not enough for you? 23:48:22 hmm... 23:48:35 i used to use 64k tiny-model forth ;)) 23:48:42 damn enough for many tasks 23:48:58 Serg, 16 bits for block number. 23:49:03 my email extractor is sub-kilobyte stdin-stdout filter 23:49:17 1 bit is reserved to flag free buffer. 23:49:28 Hence, 15 bits for block number. 23:49:30 ok, ok 23:49:37 1 block is 1/2 KB. 23:49:52 what if i wanna edit my src by external editor ? 23:49:53 2^14 KB. 23:50:30 "dd" does reverse also. 23:50:48 and adding spaces to fill up lines to 64 chars ? 23:51:01 what if i exceeded 64 by mistake ? 23:51:02 Serg, "dd" does it for you. 23:51:30 Either truncated or in the next line, at your choice. 23:51:44 what if added lines break logical layout ? or shift shadow blocks ? 23:52:29 That's your problem. Use special editor for fine tuning. 23:52:43 too cumbersome 23:52:57 Serg, how do you edit HTML? 23:53:16 Options: a) HTML editor; b) plain text editor. 23:53:41 i take a text (content) and fill it w/

,

etc, then make up CSS 23:54:18 Then you take plain text and break it for 64 characters per line and 16 lines per screen. 23:54:20 and tweak CSS till it looks nice, inventing logical 'class' tokens as needed 23:54:52 ...for no more than 64 ch. per line... 23:55:07 Feel analogy. 23:55:37 what i _cannot_ do w/ text and _can_ w/ blocks ? 23:56:07 Try to write standalone Forth. 23:56:31 Or something of that kind. 23:56:59 You can't make "ram disk". 23:57:23 You can't inteprete code, written in memory. 23:57:52 (Or you have to hack KEY word.) 23:58:29 every code is interpreted from memory, either TIB or whatever ;))) 23:58:44 What I've done: 23:59:04 a) copy /b forth.com + initrd.scr newforth.com 23:59:10 b) newforth.com 23:59:18 c) LIMIT TIB @ - IN ! 23:59:23 ?? 23:59:27 LIMIT ? 23:59:29 IN ? 23:59:46 And I've got loaded many things. 23:59:59 --- log: ended forth/04.03.23