00:00:00 --- log: started forth/02.08.03 00:04:32 --- part: MrAway left #forth 00:10:36 --- join: geakazoid (JB@adsl-63-206-89-171.dsl.snfc21.pacbell.net) joined #forth 00:10:48 --- quit: geakazoid (Client Quit) 04:01:36 --- join: gNoam (trilluser@ip2-20.vancbccqac02.dialup.ca.telus.com) joined #forth 04:01:40 --- part: gNoam left #forth 08:18:42 --- join: CrowKiller (Vapo_Rulez@cnq5-233.cablevision.qc.ca) joined #forth 08:29:38 Now I think I got a glimpse of how huffman encoding of characters can speed things up and ease programming 08:30:24 the dictionary is easier to do, and not necessary, its the best way to "hash" a word to a known value to place it in the dictionary 09:59:31 However, you still have to maintain a linked list structure, as certain operations require you to search the dictionary in order. 09:59:55 Well, reverse order. 10:04:50 --- join: kc5tja (~kc5tja@ip68-8-206-226.sd.sd.cox.net) joined #forth 10:06:42 hi 10:08:14 For my keyboard implementation I think the Shift key will only fetch the next ASCII value and then substract 20H from it, no need to keep it down to make it work, just press it, like a shift "prefix" 10:09:05 The dictionary structure and character set my editor will use are still unclear to me 10:09:38 I'm slowly putting things togheter., hope I'll finish it soon 10:09:59 * kc5tja has begun the redesign of FS/Forth for DOS. It'll be more like the 32-bit version. 10:10:26 It will employ multitasking, an event-driven architecture, and a scene-graph based screen update mechanism. 10:10:58 The whole system will likely fit in about the same size as a traditional Forth implementation for DOS; I predict 10KB. 10:11:32 scene graph? 10:12:22 are you going to use interrupts to implement your some of your events? or only polling? 10:14:31 That's up to the hardware driver. It could easily work with both. 10:14:42 Scene graph is a data structure that describes the contents of the screen. 10:14:51 Usually, it's implemented as a tree. 10:15:36 So my block editor application can allocate a region in memory that is precisely 66x18 characters in size (64x16 plus room for a border), and link it into the scene graph. Updating of the screen is accomplished by a background task. 10:16:24 For a simple text-mode display, scene graphs are trivial to implement. For graphics, they're more involved, because they include primitives like lines, boxes, circles, etc., but the basic concept is still the same. 10:16:58 It's nice because you can implement a user interface not unlike a multi-window environment with only a few lines of code. 10:17:38 For more information, check out the Berlin project (aka Fresco now). They use scene graphs in their implementation with really excellent results. 10:18:02 will you use graphics from the start, or use textmode and graphics afterwards? 10:18:15 i'll go check it right now 10:18:46 I'm going to start off with text-mode. 10:18:52 I have no immediate need for graphics. 10:19:02 Eventually, however, I will be switching to graphics mode. 10:19:48 Berlin is a windowing system derived from Fresco 10:20:07 Fresco came before Berlin ;p 10:23:59 glyphs seems like great way of representing chars, that concept alone impress me lol 10:27:20 Berlin and Fresco are the same project. 10:27:35 The "windowing system" is just a set of predefined scene graph conventions. 10:27:46 Notice how its total simplicity thoroughly confused you. :) 10:28:02 A "window" is nothing at all but a collection of structured graphics that "looks" like a window. 10:28:24 The GUI implementation is utterly trivial. The scene graph render does all the hard work. 10:28:53 Contrast this against something like Windows or X11, where windows are fundamentally different from lines and boxes. 10:33:53 text mode ASCII is killing me 10:34:10 I'm about to go graphical all the way 10:34:26 I'm using it because it's simple. 10:34:49 Graphics mode is unbelievably hard to configure and get right on all machines. 10:35:07 For example, I tried ColorForth on a huge variety of computers that I own. NONE of them worked. 10:35:14 The reason is the video interface. 10:35:39 I haven't tried it on this machine yet though. I should do that some day. :) 10:36:09 mayeb there's a better way to do graphics, i'll search for it 10:36:17 * kc5tja laughs 10:36:18 theres a modified 800x600 version somewhere 10:36:20 No naive... 10:36:29 of colorforth 10:37:14 The only way to do better with graphics is to just flat out design your own video card. 10:37:27 There isn't a single video card vendor who discloses full programmers information for them. 10:37:41 Matrox is the closest you'll get, and you still need to sign an NDA to get the docs. 10:37:57 (or at least, you used to. Maybe they changed their attitude by now. Doubt it though.) 10:38:23 The other alternative is to read the Linux driver sources for these video cards, and reading through X11 driver sources isn't trivial. 10:38:28 In some cases, it's utterly impossible. 10:38:57 Consider the fact that I have an nVidia GeForce 4 chipset video card in my system. nVidia refuses to release any kind of documentation *OR* source code for their video cards. 10:39:01 Binaries only. 10:39:15 So I'm flat out of luck with respect to my computer's video card. 10:39:24 i know I installed a geforce 3 driver on a friend's linux box 10:40:43 but i do not want to get acceleration, there must be an alternative to chuck's code in terms of simplicity/compatibility 10:41:05 You can't get simpler than calling a BIOS interrupt routine to set the video mode. 10:41:25 ok ill reformulate 10:41:32 But the fact of the matter is, it either doesn't even get that for, or he's ignoring an error return from BIOS indicating that the video card doesn't support the video mode in question. 10:41:32 why does it crash on your machines? 10:41:38 I have *NO IDEA*. 10:41:46 This is the problem: it just hangs the computer. 10:41:50 so there must be a better way to do it, less crashy way 10:41:55 * kc5tja sighs 10:42:07 What is so hard about loading AX with 0117h and calling BIOS int 10h? 10:42:12 How much "crashy" is that? 10:42:22 I do notice that he doesn't check for errors. 10:42:26 That's bad. 10:42:36 *ALWAYS* check for errors, because they can happen at any time. 10:42:54 This is why I don't know where his code is hanging. 10:42:55 for him, every modern computer have a 1024x768 res 10:43:01 Excuse me. 10:43:02 i'd go more for 800x600 10:43:05 I'm using a 1600x1200 display. 10:43:14 True-color at that. 10:43:23 I think I might have the ability to use 1024x768. 10:43:48 you tried on this machine and it crashed? 10:44:00 I've tried it on 4 computers so far, all with the same results. 10:44:08 i tried on a geforce 3 and the system is booting perfectly 10:44:18 on my machine the 800x600 version works 10:44:22 My laptop, my network router box, and my two machines at work. 10:44:29 My two machines at work are GeForce 2 cards. 10:45:11 I even tried copying COLOR.COM to a floppy raw, as Chuck prescribed, using Linux's dd command. It won't boot. 10:45:22 you should try the 800x600 version, dont know if its 100% compatible though 10:45:36 (Which makes sense; I didn't expect a .COM file to also double as a bootable partition image. But anything is possible.) 10:47:15 the only prerequisite is that it must start with a jump and the first sector to finish with 0xAA55, so its surely possible, maybe the floppy would not be readable by dos, but it would boot 10:47:37 unless the bios call screw the system of course ;p 10:48:29 Are they binaries, or is it in source form? 10:49:16 CrowKiller: I just told you that the system didn't boot with COLOR.COM copied raw to the disk. Ergo, it's not a bootable partition. :) 10:49:55 Is this 800x600 ColorForth "2.0" in source form, or binary? I ask because I do not have MASM, nor do I intend on installing MASM or anything even remotely related to it. 10:51:03 binary 10:51:49 Where do I get it then, because all I see are "MASM Build Kits" -- e.g., source? 11:05:33 sorry was away 11:05:58 http://www.users.qwest.net/~loveall/binary/c4-800x600-p2bd-02.zip 11:18:56 DAMMIT...now I'm hungry for pizza!! >:( 11:25:12 --- quit: Mongrel ("Read error: 666 (Connection reset by Satan)") 11:25:20 Nope. It doesn't work 11:25:26 Hangs the computer all the same. 11:25:50 i dont like colorforth, even if it boot i dont use it 11:26:27 I think I would like it if I could boot it. :) ColorForth is just a colored versin of cmForth, basically, and cmForth is also the parent of Pygmy. 11:26:32 (And indirectly, of FS/Forth) 11:26:44 the keyboard layout is terrible 11:27:00 Well, change the code to use QWERTY instead. :) 11:27:18 do it and change it so it could boot on your machine =) 11:27:31 Why bother, when I am writing my own Forth to suit my own tastes? 11:36:04 wasnt serious on that one 11:49:00 Actually, I am. I'm famished. 11:49:23 But I'm too lazy to go and order it. :) 11:49:29 I'm hesitant to spend the money. 11:50:37 But, I do know one thing is for sure... FS/Forth is going to have explicitly managed tasks, and not implicit ones like ColorForth has. 11:51:08 It may be more complicated for the programmer to have to deal with, but it'll be a lot simpler for the task scheduler to deal with. 12:08:51 Taking a shower. brb 12:27:18 the char map of the video display can be changed! 12:28:09 if the letters are mapped to their scancode the code get a lot easier and my editor get the simplicity I want it to have 12:30:02 But now you're restricting yourself to a very bizarre subset of the keyboard's output. However, you are correct in that you can do this. The Commodore PET through to the Commodore 64 did exactly this, dividing the character map into two segments: one normal video, and one reverse video. 12:31:48 i want to change the fonts so that I can discard the traditional ASCII <-> Scancode table lookup 12:32:03 I wish I could have played with the Commodore 12:32:11 Don't know much about this machine 12:32:16 * kc5tja wrote for Dolphin a keymap to VKey (Virtual Keycode) translator that took less than 600 bytes; 512 of which was used for the tables. 12:33:27 "virtual keycode" is your own format or is it a standard? 12:35:42 My own format; it's not ASCII, but it lets me detect key up and down events for virtually any keyboard you have a translation table for. 12:36:19 It also ignores the weirded behavior of keys that respond to NumLock. 12:36:32 changing the char map could also provide little "builiding blocks" for windows, such as the 4 corners and the 4 sides encoded into 8 chars, ANSI does that IIRC but i dont know for sure 12:36:49 ANSI doesn't have windows. 12:36:55 but i mean 12:36:57 the char set 12:37:04 theres little "corners" 12:37:22 that can be put on screen on different lines to synthetise screen display 12:37:23 No, that's IBM's character set. ANSI doesn't specify anything except codes 32 through 127. 12:37:36 of a window 12:37:36 kk 12:38:14 I'll try to learn how to change those fonts and create my own 12:38:29 * kc5tja nods 12:39:48 theres also mention of using the blinking bit of the 16bit Char representation to toggle another char map 12:40:26 I remember reading about the CRTC and demo stuff when I was using a 486 12:40:35 I was too young to understand fully though 12:44:34 Yeah, it's possible to use that blinking bit also as an additional color bit too, so you can have 16 background colors as well. 12:45:51 * kc5tja wants to keep it simple though, for the time being. There is a lot I can do with a text-mode display, and it'll let me refine my software for when I want to go graphics mode. 12:47:16 maybe textmode is enough to "hack" a gui,even if the screen isnt pixel adressable, I'm gonna dig a max of information possible on VGA 12:49:43 the icon editor in colorforth should edit those "tiles" textmode render by hardware 12:52:29 vga is standardised enough to make every computer happy, a colorforth rewritten to take advantage of that could be even smaller I guess 12:55:52 vga is also present on my old laptops with almost no memory, so it could be useful 12:57:15 Well the core engine of the text-mode user interface and the graphical interface is exactly the same when using a scene graph system. 12:57:28 Which is one of the reasons why I'm taking this route. 12:57:43 Combined with the event driven architecture, this will not be your "Grandfather's Forth." 12:58:13 The command line for the Forth will be an 'application,' just like the text editor, just like the clock, etc. 12:59:23 http://www.textmodegames.com/download/index.html 12:59:36 That is one of the biggest problems I've had with Forth over the years, is its continued reliance on ancient, out of date user interaction techniques. 13:00:28 I tried to implement a GUI for Pygmy once, and it failed. Even a TUI wasn't very successful, because it required rewriting a large portion of Pygmy. 13:10:32 i can't find doc or even code that dont use the bios to change fonts in textmode 13:15:28 viva simtel, think I got something 13:15:48 simtel and ftp.funet.fi should have something on it. 13:24:07 YAY! Pizza's here! 13:25:00 --- join: futhin (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 13:27:13 howdy 13:28:27 re 13:29:43 hi 13:41:00 --- join: proteusguy (~scherrey@24-197-147-197.charterga.net) joined #forth 13:44:18 where do I put my custom VGA font in memory? 13:45:25 there's a regsietr for choosing the map, but i dont know where the map is located 13:50:20 You have to understand how the VGA renders its textmode display first. 13:50:34 It's stored in bitplane 2 of the framebuffer when running in text-mode. 13:50:44 --- join: geakazoid (JB@adsl-63-206-90-236.dsl.snfc21.pacbell.net) joined #forth 13:50:46 However, you have to "turn off text mode" manually to access bitplane 2. 13:51:03 I forget how to do this. I used to have a book which detailed all this (man, it was a glorious book!). 13:53:06 when does the UK Forth Group begin their chat online? 13:53:51 I have a demo coding book, called "PC Interdit" but it doent talk about textmode much 14:00:48 geakazoid: I don't know. 14:01:13 Hey, that Snipes! game is pretty cool. :) Not bad for a 9K game. 14:02:29 http://www.engineering.missouri.edu/~devaney/WS2002labs/lab7.htm 14:02:42 it talks about bitplanes 14:04:29 * geakazoid is gone, autoaway/10m (l!on) 14:08:14 --- join: proteus (~scherrey@24-197-147-197.charterga.net) joined #forth 14:09:07 --- quit: proteusguy (Read error: 110 (Connection timed out)) 14:17:20 There's no information anywhere to eb found about changing fonts 14:17:36 only premade 16 bit binaries 14:33:54 I've finally found a vague description of the method 14:34:01 to change the fonts in text mode 14:41:41 --- join: Xuz (~Xuz@bgp01079860bgs.wanarb01.mi.comcast.net) joined #forth 14:51:59 --- join: TheBlueWizard (TheBlueWiz@216.25.205.151) joined #forth 14:52:05 hiya all 14:52:09 hi 14:52:21 Hiya 14:53:25 hiya CrowKiller and Xuz 14:55:44 Does someone here already changed fonts in VGA textmode manually, without using the bios? 14:59:15 ok... I guess I'll have to find by myself ;p 15:00:09 * Xuz thinks 15:00:11 I might have. . . . 15:00:54 I don't have the Big Book of Secret Knowledge. . . it might be in the Big Textfile of Secret Knowledge though 15:01:16 it would enable an efficient editor, by passing directly from scancode to character on screen 15:02:00 You can look in here if you like. 15:02:33 thanks 15:03:51 geakazoid: where do the UK forth group chat ? 15:04:28 hello xuz, long time no see :) 15:04:39 here 15:04:44 Good evening :) 15:04:52 -) 15:05:21 geakazoid: the uk forth group gets on a different server i remember.. but i forget which 15:05:37 the vga.zip file from OS Dev. for Dummies got exactly what I wanted, just a little more research and I'll try some quick test code 15:06:31 OS Dev for Dummies? :) 15:06:33 What's this then? 15:08:35 futhin, geakazoid: It's posted on comp.lang.forth -- #FIGUK on IRCnet. 15:09:01 --- join: proteusguy (~scherrey@24-197-147-197.charterga.net) joined #forth 15:09:22 --- quit: proteusguy (Client Quit) 15:09:25 I swear proteusguy has an activity detector for this channel. 15:09:32 Everytime I type something here, not 30 seconds later, he joins. 15:10:33 --- quit: proteus (Read error: 110 (Connection timed out)) 15:10:56 kc5tja I thought I was here the last time we had a UK forth chat 15:14:08 kc5tja I keep my IRC client IRC logs and I do not have anything about ircnet on my list of IRCs 15:16:02 I'm reading the newsgroup now. I'll post a URL to the message so you can see. 15:16:55 http://groups.google.com/groups?dq=&hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=n1qkku0oql7549d52r0lrsse9ogoddk788%404ax.com&prev=/groups%3Fq%3Dcomp.lang.forth%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den 15:20:20 futhin you were the moderator for Chuck Moore, where are we supposed to be today? 15:20:29 Hopefully that'll contain enough information. I was going to join in myself, but it's more than two hours since the posting says it's scheduled. 15:21:06 Xuz: http://my.execpc.com/~geezer/osd/index.htm 15:23:34 This is an interesting webpage. I'm going to bookmark it. 15:24:28 I especially appreciate the fact that they have sample floppy disk sources. That's going to be handy, even though floppies just never seem to last more than two weeks for me. 15:30:26 kc5tja I guess I thought that the IRC.openprojects.net was on the network with the ircnet 15:30:27 http://pasky.ukeer.de/IRCnet.gif 15:36:29 --- quit: geakazoid ("Leaving... ") 15:39:54 Hmm 15:40:02 Nope, they are definitely quite different networks. :) 15:41:49 --- join: geakazoid (JB@adsl-63-206-90-236.dsl.snfc21.pacbell.net) joined #forth 15:43:33 kc5tja I don 15:44:31 know what I missed but I could only see two ircnet servers in the UK, ircnet.demon.co.uk and ircnet.easynet.co.uk and I could not log onto eithr one 15:44:48 --- quit: geakazoid (Client Quit) 15:47:18 --- join: geakazoid (JB@adsl-63-206-90-236.dsl.snfc21.pacbell.net) joined #forth 15:48:29 --- quit: geakazoid (Client Quit) 15:48:33 --- join: geakazoid (JB@adsl-63-206-90-236.dsl.snfc21.pacbell.net) joined #forth 15:48:45 --- quit: geakazoid (Client Quit) 15:48:49 --- join: geakazoid (JB@adsl-63-206-90-236.dsl.snfc21.pacbell.net) joined #forth 15:51:40 --- quit: geakazoid (Client Quit) 15:54:32 Whoa...I think he's got some network problems... :( 15:54:45 maybe.... 15:54:54 well, I must go now...bye all 15:55:20 Whoa 15:55:25 Where'd you come from? I didn't even see you join! 15:55:38 * TheBlueWizard laughs 15:55:50 not too long ago :) 15:56:08 That would explain it then. I was off designing the architecture of my Forth. 15:56:38 So I'm more AFK than I am AK. :D 15:56:41 ah...cool...well, I gotta go 15:56:50 * Xuz laughs 15:56:51 bye kc5tja 15:57:02 --- part: TheBlueWizard left #forth 16:09:17 --- join: cleverdra (jfondren@0-1pool37-117.nas2.florence1.sc.us.da.qwest.net) joined #forth 16:09:30 re cleverdra 16:09:44 hello kc5tja 16:10:59 --- quit: Xuz ("ircII EPIC4-1.1.5 -- Are we there yet?") 16:19:34 the fonteditor program made by BlackLight (simtel) is truly excelent 16:24:57 --- join: geakazoid (JB@adsl-63-206-93-228.dsl.snfc21.pacbell.net) joined #forth 16:27:57 --- join: ayrnieu (jfondren@0-1pool37-117.nas2.florence1.sc.us.da.qwest.net) joined #forth 16:28:09 --- quit: cleverdra (Read error: 104 (Connection reset by peer)) 16:28:27 --- nick: ayrnieu -> cleverdra 16:28:54 does anyone know where the UK Forth Chat is or was? 16:30:10 #fig-uk on IRCnet, if we're talking about the same thing. 16:40:02 * geakazoid is gone, autoaway/10m (l!on) 16:40:32 cleverdra what is the full ircnet address and port # 16:41:13 geekazoid - I don't remember, but a websearch should be fruitful -- I know that there are two good serverlists. 16:43:54 dfd 16:43:56 oops 16:44:54 cleverdra my Xircon in acting up, I looked at the ircnet.demon.co.uk and could not log on 16:45:18 and, I tried the ircnet.easynet too and could not login 16:45:28 * kc5tja tries 16:46:17 I think they're having problems. I can't connect either. 16:46:31 Lots of "unauthorized connection" messages. 16:46:52 I tried irc.ircnet.org, and I logged on, but nobody seems to be in any channels right now. 16:46:58 They must be having one hell of a netsplit right now. 16:49:12 kc5jta I know that I used openproject.net last time and here is what it says on c.l.f (John Peters in ref. to Chris Jakeman > > FIG UK's monthly IRC session takes place on Saturday 6th October from 16:49:12 > > 9:00pm (BST). 16:49:12 > > All welcome - you will find us on channel #FIGUK, server IRCNet. 16:49:12 Right. 1PM here in California. Get and install IRC software 16:49:12 ahead of time. Select your server that works well in your 16:49:13 part of the world and then open channel #FIGUK. Everyone 16:49:15 will see "John Peters" (or whatever your handle is) "is 16:49:17 joining the discussion." People come and go for a few 16:49:19 hours as the monthly session takes place. 16:50:26 does anyone know how to query the rooms online ie, /join 16:50:36 --- quit: geakazoid ("Leaving... ") 16:51:43 --- join: geakazoid (JB@adsl-63-206-93-228.dsl.snfc21.pacbell.net) joined #forth 16:52:27 I wish I had a forth IRC client, my xircon(tcl) one is too simple 16:57:33 Usually /map or /list will give you a listing of available channels. 16:57:43 I think it's /map. 16:57:59 I stand corrected -- it's /list. 16:58:07 * cleverdra doesn't IRC much, so just uses Xircon. 17:02:49 --- quit: geakazoid ("Leaving... ") 17:03:11 --- join: geakazoid (JB@adsl-63-206-93-228.dsl.snfc21.pacbell.net) joined #forth 17:04:15 hm 17:04:22 kc5tja my xircon had followed Alice the Rabit down the hole and is not doing what I thought it is spposed to do, well, if #ukforth was online, they came and went 17:04:36 i've never been to the figuk chan 17:04:44 #fig-uk, I think 17:04:46 it isn't #fig-uk ? 17:04:49 or #figuk 17:05:04 * futhin is unable to connect to ircnet :( 17:06:25 futhin that is what I thought, I know I never use anything but this network so it must be that #ukforth is merely another channel 17:07:08 are you not still on ircnet ? 17:07:15 or, maybe Chuck was on #forth? Chuck Moore will be making an online appearance on IRC (Internet Relay 17:07:16 Chat). It will take place on Saturday, May 4, at 2pm Pacific Time. The 17:07:17 location is at the #forth channel on the server IRC.openprojects.net 17:07:24 xircon supports multiple servers ( /newserver ) 17:07:29 No, I only use IRC.openprojects.net 17:07:45 geakazoid: what server addy for ircnet did you use? 17:08:18 chuck moore made an appearance here 17:08:18 futhin I do not have a record of using another server 17:08:32 geakazoid: so you didn't connect to ircnet after all? 17:08:51 you are confusing me, you sound really confused yourself 17:08:58 futhin so the UK forth is somewhere else? 17:09:05 well, you are confusing me, -) 17:09:17 #fig-uk is on IRCnet, chuck moore's appearance was on this server 17:09:30 the fig uk guys came here when chuck was here 17:10:12 did i clear your confusion? 17:10:12 futhin oic, I thought that this was the ONLY forth Channel 17:10:37 ah 17:10:47 the only forth channel on this server probably 17:10:53 futhin that part. I guess I assumed that IRC was networked since you can log onto one machine and I can log onto another. I did not know there were separate IRCs 17:12:03 geek - there are IRC servers which are part of IRC networks. 17:12:06 Here I am on the IRC http://www.forth.org.ru/~mlg/toussovki/cm.05.04.2002.txt and I was on IRC.openprojects.net while the Russian FIG states that they were on 06.05.2002 mlg: Online interview with Chuck Moore (05.04.2002 on #forth IRC channel, server irc.linpeople.org port 6667) 17:12:08 there are separate IRC networks, this network is called OPN (openprojects network) and you can connect to it thru many different addresses. varley.openprojects.net irc.debian.net etc.. irc.openprojects.net is a random redirector 17:12:21 irc.openprojects.net redirects you randomly to another ip addy i think 17:13:49 geakazoid: yeah, they came over to irc.linpeople.org (which is OPN) when they heard the chuck moore interview was happening, and they presumabely canceled their monthly meeting 17:13:57 for that month 17:14:05 futhin did you ever use the old BBSes when I was on then they were net worked with nodes or something like that and you could talk to people all over the state or country 17:14:16 fidonet ? 17:14:21 so I was thinking that the IRC was like that, netted together by nodes 17:14:26 They are. 17:14:36 But FidoNET, though quite large, wasn't the only net. 17:14:43 they are, but there are separate irc networks 17:14:46 You had Citadel network, WWIV-Net, and many others. 17:14:50 --- join: Phoon (~fsck@reef060.ithink.net) joined #forth 17:14:57 with servers inside each irc network connecting to each other 17:15:05 kc5tja I cannot even recall what I was on but it was a local modem dialup 17:15:10 and it was free 17:15:17 hello phoon :) 17:15:31 * Phoon tries to figure out the appeal of forth... 17:15:40 phoon: done any forth coding yet? 17:15:45 futhin: nope 17:15:45 Phoon why try? 17:15:48 futhin: can't figure it out 17:16:04 Phoon have you done other lang coding? 17:16:13 phoon: what implementation are you using? 17:16:16 geakazoid: C, perl, python, dabbled in others 17:16:28 futhin: I tried colorforth once 17:16:33 The appeal of Forth is its simplicity. 17:16:46 futhin: I gave up after a couple of minutes, especially since I couldn't get used to the keyboard layout 17:16:49 Phoon ok, so the issue is that you have to learn to see the tree in a forrest then you will see forth 17:17:03 phoon: same here, colorforth isn't the best implementation to start with 17:17:08 Phoon: ColorForth is a very advanced Forth, despite it currently represents the ultimate in simplicity. 17:17:21 Phoon colorforth is not from Planet Earth 17:17:27 I recommend learning an ANSI dialect of Forth first (like GForth for example); it's easier for beginners, and has a much wider userbase. 17:17:27 phoon: do you use windows or linux? if you use windows, i recommend pygmy (its a DOS forth) 17:17:30 the Marsians use it 17:17:34 hey, I'm willing to try anything 17:17:36 (runs in ms-dos that is) 17:17:41 futhin: both, but prefer linux 17:18:09 Phoon what do you want to develop? games, communications? 17:18:10 Pygmy is another good system to learn on; though it's not ANSI, so there might be some differences, it's "normal enough" that people can cling to it. 17:18:12 isforth and gforth and bigforth are decent unix Forths, I think. 17:19:35 geez, I hope that wasn't an omen 17:19:40 cleverdra I don't know about isforth but I did not choose gforth or bigforth because of licensing, if you develop non FSF don't you have to pay for a license 17:19:46 I tried to download pygmy and mozilla crapped itself 17:20:13 geakazoid: Nonetheless, they're good systems to learn on. 17:20:32 geakazoid: right now I'm just wanting to play with it a while 17:21:11 Phoon you should know what you want to design for so you can get as close to your target as possible while you are learning 17:21:39 once you develop test code, and you get used to the forth way, you will want to save and re-use your code bits 17:21:49 geak - neither gforth's nor bigforth's licenses have anything at all to do with FSF (developing for- or otherwise) or paying for anything. 17:21:59 Forth encompasses not only the language, but the philosophy as well. 17:22:13 cleverdra I thought they are GPL 17:22:20 gforth at least IS GPL. 17:22:20 geak - also, gforth at least makes it clear that a program written in it can be given any kind of license. 17:22:30 geak - yes, but it's obvious that you don't understand the GNU GPL. 17:22:39 geak - what I said about them stands. 17:22:40 * kc5tja isn't sure about bigForth. 17:22:57 I haven't really used bigforth, for some reason. 17:23:31 I tried to use it once looooong ago, at least a few years. I really wasn't too impressed with it. 17:23:37 It seemed ... clunky to me. 17:24:51 I am actually using Swiftforth on Windows, but I do have dual boot and I tried all of the downloadable forths I could find last summer, I wanted a supported lang while I was learning 17:25:14 I tried the evaluation version of SwiftForth. I also was unimpressed with it. 17:25:15 but if I knew then what I know now, I woud choose eforth http://homepage.mac.com/forth/ 17:26:02 geak - "supported lang"? 17:26:11 kc5tja I know what you mean by that. I was not impressed with the simplicity and it did not seem like it was going to be worth more than a PD forth, but I wanted some hand holding 17:26:22 I bought it for support 17:26:36 But it certainly didn't seem clunky, like bigForth does. To me, SwiftForth was like using Win32Forth, but with slightly better integration. 17:26:53 * kc5tja nods 17:26:55 Understandable. 17:26:59 I wanted a guarantee that the code was windows compatible and that does not come with win32forth 17:27:01 * Phoon downloads gforth 17:27:32 Phoon gforth does not have graphics and it is C 17:27:53 Phoon but Apple is using it to compile Open Boot 17:28:01 swiftforth seems less clunky than win32forth 17:28:04 geakazoid: ? 17:28:22 geak - it's GNU C, rather than C. It can access graphics libs. 17:28:24 There is nothing wrong with a Forth written in C, especially if you're just learning the language. 17:28:43 cleverdra: How? As far as I knew, the C interface words haven't been documented. 17:28:48 phoon: just stick with isforth or pygmy, don't listen to all the noise everyone else is spouting ;) 17:29:03 kc5tja yes, I know but there are limitations that if Phoon gets serious will have to figure out which way to go 17:29:04 phoon: er.. try TILE for linux 17:29:06 Phoon: Or continue to use GForth while you're learning, and move up to something more powerful when you're ready for it. 17:29:20 * cleverdra boggles that geak won't use {g,big}forth because he can't bother to understand the GPL, but will pay $2000+ for SwiftForth. 17:29:29 eforth is ported to many machines, has a asm core and has been stable for almost a decade 17:29:31 geakazoid: I don't think that'll be a problem for phoon this early in the game. 17:29:44 What's more powerful on unix, kc5tja? iforth? 17:29:56 bigforth might be better than gforth (better integration), isforth is new, so not much documentation, but it's probably the "best" forth for linux, i hear TILE is REALLY nice, so check it out 17:30:01 phoon: bigforth might be better than gforth (better integration), isforth is new, so not much documentation, but it's probably the "best" forth for linux, i hear TILE is REALLY nice, so check it out 17:30:26 heh 17:30:35 cleverdra: I don't know, but I'm going to be finding out soon enough. I think I've outgrown GForth's limitations myself. IForth appears very attractive, but I'm not going to say anything until I evaluate the others. 17:30:44 I've heard a *lot* of good things about PFE Forth too. 17:31:01 kc5tja you see then, that now that you outgrew it you will have to learn another 17:31:11 * cleverdra shied away from PFE's everything-in-C nature, but it did look to be OK. 17:31:13 here are my conversations with FSF http://www.dolfina.org/GNUTools.htm 17:31:15 --- join: proteusguy (~scherrey@24-197-147-197.charterga.net) joined #forth 17:31:31 geakazoid: Forth teaches the programmer high factoring. When you factor your software aggressively, learning a new Forth environment becomes a very cheap operation. 17:31:55 Chuck Moore himself is fond of pointing out: Portability is a myth. 17:32:02 And it's demonstrably true, even in the Unix world. 17:32:31 "factoring"? 17:32:33 and, I support my code with under a GNU Compatible License: http://www.statistica.unimib.it/utenti/dellavedova/software/artistic2.html which is what I recommend so you can choose between licenses 17:32:59 geak - oh, you're using Perl's GPL/Artistic choice? 17:33:46 kc5tja all the more reason to start out with a forth you really want to use, abuse, edit, etc... 17:34:10 kc5tja portability has to do with being able to control your code by knowing the ins and outs of it 17:34:21 Exactly. 17:34:25 I know the ins and outs of my code. 17:34:35 So I have no problem with switching from GForth to IForth, or PFE, or whatever. 17:34:45 Porting my software will take, at most, one hour. 17:34:56 --- quit: futhin (Read error: 104 (Connection reset by peer)) 17:35:08 geak - I don't understand the purpose of your GNUTools.htm URL. Are your conceptions of the GPL supposed to follow from it? 17:35:17 If I can port my software from a 32-bit ANSI Forth like GForth, to a 16-bit NON-ANSI Forth like Pygmy, in less than 30 minutes, I certainly can port my software between two 32-bit ANSI Forths. 17:36:11 cleverdra I asked Elizabeth at Forth Inc about GPLing my code and there are no issues for my own code, just I cannot pub a kernel or allow others to use the compiler, so I felt that I could write code and later I could port it if I wanted complete GPL. 17:36:44 cleverdra yes 17:37:02 oh, it is really for people I work with to refer to when we are working together 17:38:40 OK. 17:40:04 cleverdra but I spent more than a few years researching licensing and had discussions with many people including the FSF on these issues because I want code for clients who will want to be able to re-use their code 17:40:14 OK, I'm thinking of using TILE... any pros/cons? 17:40:35 I don't know anything about it. 17:41:06 geakazoid never heard of it 17:47:45 OK, quick question... how the hell do I quit isforth? 17:48:05 BYE 17:48:12 or 17:48:18 BYE BYE ? 17:48:21 err, bye 17:48:27 ah, worked 17:48:29 isForth is case-sensitive. 17:48:35 cleverdra: ok 17:48:40 wanted an argument 17:49:11 --> bye <-- is the Forth word; is the syscall 17:49:18 Hmmm. screws up my shell 17:49:48 no, it's just that isForth's deferred --> bye <-- didn't reset your terminal settings. 17:50:12 cleverdra: 'bye' works fine. '' didn't reset the settings. 17:50:13 because you called the 'exit' syscall. 17:52:08 --- quit: cleverdra ("Leaving") 18:08:07 --- join: proteus (~scherrey@24-197-147-197.charterga.net) joined #forth 18:09:43 --- quit: proteusguy (Read error: 110 (Connection timed out)) 18:17:13 what kind of forth programming projects is everyone working on? PDAs Games, etx? 18:18:30 Well, that's an interesting question for me. I'm working on FS/Forth for DOS, so I can bootstrap my 32-bit FS/Forth implementation. However, yesterday, I was approached to use FS/Forth for DOS to control some CNC milling equipment. 18:18:56 So once I get FS/Forth for DOS booting and interactive, I'll be using it to design and develop CNC mill control software. 18:19:34 Otherwise, I'll be using the 32-bit version of FS/Forth to develop a self-contained operating environment that works on my laptop, to replace DOS and GEM. 18:20:17 That specific version of FS/Forth will also probably be used to write an exokernel for my operating system called Dolphin, but that's a semi-advanced project. 18:31:54 kc5tja cool 18:33:37 kc5tja did you have a bootable floppy of dolphin on its own irc channel a few years ago 18:34:32 A looong time ago, yes. 18:34:37 That floppy is long since gone though. 18:35:24 how do I break an infinite loop in isforth? 18:35:29 But that's OK, because Dolphin and FS/Forth 32-bit will both boot using GRUB this time. There's no way I'm going to spend the time re-inventing the wheel when one already exists that I can use. 18:36:21 Phoon: I would assume that CTRL-C doesn't work for you then? I'm not sure how isForth handles the CTRL-C signal, IF it does. 18:36:28 kc5tja I think I have a floppy that I got from you then 18:37:34 Probably Dolphin 0.3 then. :) 18:37:34 I had to go to another shell and kill it 18:37:55 Phoon: That's good to know. If someone else asks about that, I'll be sure to remember that. 18:38:43 kc5tja so you are still working on that project, did you get an account at Sourceforge? 18:39:05 I have an account on SourceForge (two actually, because I forgot my password for Dolphin's account). 18:39:15 However, nothing has been updated since I created that account. 18:39:47 kc5tja so you are using forth for Dolphin? 18:41:52 I am now, yes. 18:41:58 I used to be using C and assembly language. 18:44:12 kc5tja did you check out the http://www.forthos.org/ 18:44:22 Yes 18:44:29 and http://www.ynet.com.au/sean/enthrel.html 18:44:50 I have no intention of using their code; I also have no intention of relying on Flux or Enth at this time, though I might possibly borrow some code. 18:45:13 However, CrowKiller informed me of another OS development website that contains a number of useful links for various peripheral devices. 18:45:18 I understand, but they might have covered some areas 18:45:38 kc5tja which one? 18:49:14 Just a second... 18:49:20 http://my.execpc.com/~geezer/osd/index.htm 18:49:36 Well, they're certainly worth looking at, for sure. 18:50:09 It's just that I don't want to use their code. (For example, I've looked over the ColorForth sources, got some neat ideas, and quickly discarded any thoughts of using portions of his code verbatim, even though it's public domain) 18:52:32 Wow, I just figured out my password for my Dolphin SF account. 18:52:59 --- join: Stepan (~stepan@ns.virtualhost.dk) joined #forth 18:53:03 g'evenign 18:55:22 re 18:55:35 kc5tja yes, I looked when you first posted it earlier, they have a bootable grub and I needed that to try out the osforth 18:55:38 Well, this right stinks. I can't remove people from the developers list. What the hell is this? 18:56:18 kc5tja yes, I have seen Chuck Moore completely change his code and it is hard to follow him 18:56:47 kc5tja (just recalled the password -) ) 18:59:30 Stepan hello 19:00:15 I think kc5tja is off configuring out his sourceforge account for dolphin 19:00:42 kc5tja just in case you had not read this one: http://www.forth.org/svfig/osf.html 19:01:24 Could someone point me to a good beginner's tutorial? 19:02:24 Yeah, I just submitted a bug report to the SF team. 19:03:01 Hmm....I'm not sure there exists a good one anymore. There used to be one on taygeta.com, but when that site decides to work, I can't seem to locate it anymore. 19:03:07 Let me try again just to be sure... 19:05:28 phoon http://www.albany.net/~hello/forth.htm 19:06:55 Phoon actually the Win32forth has a good tutorial inside its help files 19:09:02 --- join: procomp (~scherrey@24-197-147-197.charterga.net) joined #forth 19:09:10 --- quit: procomp (Remote closed the connection) 19:09:36 --- quit: proteus (Read error: 110 (Connection timed out)) 19:13:13 geakazoid: this osf article.. i think that guy should do some more research 19:13:47 i cant see any negative point in microkernels nor why they should be designed for slow cpus 19:14:19 rather the opposite. they're a clean design, whereas on a slow cpu you want a compact, monolithic design 19:15:32 Stepan since I have not written one, I am not an expert 19:16:37 ah.. was it you who wrote this? 19:16:59 it's nice written though.. contains a lot of thoughts.. 19:20:02 Stepan no I did not write it 19:22:44 Stepan have you written a kernel in forth? 19:23:22 geakazoid: I am trying to write an open firmware implementation 19:23:33 i wrote some memory management stuff.. 19:23:44 but must other parts are missing still. 19:23:51 http://www.pysmatic.com/forth/ is the closest I could find as far as Forth tutorials online are concerned, and there's frankly not much here. 19:23:54 http://www.openbios.net/ 19:25:07 Stepan you are not the guy that demo'd the gforth on the Mac OS X last weekend are you? 19:25:21 Stepan at the SVFIG I meant 19:32:02 geakazoid nope.. wasnt me.. 19:32:09 what kind of demo was that? 19:32:16 was it bernd paysan? 19:33:22 one of the programmers that worked for Forth Inc works for Apple for their Forth based boot OS, he was demoing running gforth on the Mac OS X on which he uses to develop code 19:33:32 Phoon: http://www.geocities.com/SiliconValley/Bay/2334/4thtutor.htm is 4th specific, but the basics should (and does, from what I've seen) apply to gforth or whatever Forth you're using. 19:33:43 Stepan Bernd is in Europe isn't he? 19:34:41 i guess so 19:34:59 Phoon: It even provides a link you can click on which has an include file for converting your ANSI Forth into a 4TH compatible environment for the purposes of the tutorial. 19:56:23 --- join: TheBlueWizard (TheBlueWiz@ip-216-25-205-173.vienna.va.fcc.net) joined #forth 19:56:29 hiya all 19:57:04 re TheBlueWizard 19:57:12 hiya kc5tja 19:57:32 hoping to catch I440r...guess I failed 20:01:08 Yup. He hasn't been on all day today. 20:01:19 It's been quite a productive day. ;D 20:02:28 how's that being productive? 20:09:47 TheBlueWizard hello 20:10:26 TheBlueWizard you missed that kc5tja rediscovered his sourceforte password 20:10:26 hiya geakazoid 20:10:42 what sourceforte thing? 20:11:10 kc5tja has been working a project called dolphin for more than a few years now 20:11:22 --- quit: Phoon (Remote closed the connection) 20:11:24 --- join: Angus (~fsck@lagoon224.ithink.net) joined #forth 20:11:25 kc5tja dolphin is a bootable os 20:13:22 geakazoid: I'm aware kc5tja has been working on Dolphin OS project... 20:13:42 it seems Dolphin OS is being rewritten again 20:17:40 --- join: MrReach (~mrreach@209.181.43.190) joined #forth 20:17:49 --- part: MrReach left #forth 20:19:28 Heheh :) 20:20:15 as I understand it, it was originally written in a mix of C and asm, then the C part is ditched in favor of Forth 20:32:16 gotta go...bye all 20:32:25 --- part: TheBlueWizard left #forth 20:58:59 i was afk sorry 21:15:21 --- join: sbk_ (~kbs@dsl-65-184-98-221.telocity.com) joined #forth 21:15:39 Heheh :) 21:15:51 I was just given a unique challenge by someone in Australia. 21:16:21 "If Forth is so good, why not write a graphics library in it? It should be comparable to what libart does. If it can do that, then I might look into programming in Forth." 21:16:22 :) 21:19:46 If I can poke the VGA fonts directly in memory using under your 600 bytes of code required, it might be the single most simple textmode implementation, in a macro, like a booster to any forth system using text mode 21:20:15 i mean if the method work well in practsie it might be possible to teach it to others as the way on x86 to process the keyboard data 21:21:12 its my challenge, write a keyboard handler less thaking less than 600 bytes that can interact with the keyboard. 21:22:32 its not necesarly 600 bytes, the amount of code need to interface this method should also be accounted for a more real challenge 21:24:48 like a linear function lol y = ax +b were y is the result in bytes, a the number of time this structure is referenced, x the number of bytes used per access and b the initial loading payload 21:25:38 quantitatization could be easly possibles for challenge judges program, that could graph those results, sicne they are graphable heh lol 21:26:05 is there a good online resource you suggest to learn how to trap and read keyboard interrupts? 21:26:26 os dev for dummies 21:26:37 --- join: futhin (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 21:26:45 You're confused. 21:26:49 http://my.execpc.com/~geezer/osd/index.htm 21:27:02 thanks 21:27:03 My 600 bytes was for keycode to virtual key translation; it had nothing at all to do with the video display at all. 21:27:16 i know 21:27:59 maybe you want to participate into another challenge? lol 21:28:21 i would love to prove forth is great to that guy (or girl) 21:28:31 No, I find the challenge I have now to be far more interesting, especially since I learned I can't use IForth to do it -- they want it to run on a PowerPC box! 21:29:16 haaa ;p i'm out on that one ;p real challenge for sure (at least for me ;o) 21:29:48 * kc5tja may need to get some kind of PowerPC emulator going on his box to emulate the user-space realm of PowerPC, so he can port FS/Forth to the PowerPC architecture, assuming he can't find an already existing native code Forth compiler for PowerPC. 21:30:38 what's the challenge? 21:31:06 check the logs ;p 21:31:38 <kc5tja> Heheh :) 21:31:38 <kc5tja> I was just given a unique challenge by someone in Australia. 21:31:38 <kc5tja> "If Forth is so good, why not write a graphics library in it? It should be comparable to what libart does. If it can do that, then I might look into programming in Forth." 21:31:38 <kc5tja> :) 21:31:48 is that chanserv that logs all the time? 21:32:21 I remember there was a bot that recorded all that happenend on this chan somewhen but I can't recall. 21:34:31 libart? 21:35:04 * futhin is interested in porting most of the postscript graphics stuff to forth 21:35:16 porting the basic graphic words that is 21:35:27 moveto, lineto, etc 21:36:46 No, it's clog 21:37:10 futhin: libart is a graphics library which offers Postscript-like capabilities to C applications in Linux. 21:37:33 okay, so it's not as extensive as opengl? (just mostly 2d) ? 21:38:00 Correct. 21:38:09 In fact, it's nowhere near as sophisticated as OpenGL. 21:39:44 hell, the basic postscript graphic words can probably be coded up in an hour by a forth coder with a clue 21:39:45 me 21:39:53 i don't know where to start with drawing pixels and stuff 21:40:06 if somebody gives me that info, i could wing something ;) 21:41:25 Yeah, but he wants it to be as fast as libart, and *I* want it to be smaller than libart. :) 21:41:39 (in other words, I want to deliver him a double-whammy of a whopper of a graphics library) 21:44:42 well why shouldn't it be fast as libart? 21:44:56 i guess some asm-level primitives will have to be coded eh? 21:48:57 --- nick: Angus -> Phoon 21:49:01 I would prefer to stay away from coding assembly. 21:49:14 But I'd still like a native code generating Forth for the PowerPC, so that I don't have any extra overhead. 21:49:25 The idea is to level the playing field as much as possible. 21:51:08 Well, if I have to make a PowerPC native code Forth, I'll do just that. 21:51:18 It's just that I don't have a PowerPC box to play with. 21:51:35 I do know someone who does have one that I might be able to telnet into, but I doubt that'll be a regular thing. 21:56:25 --- quit: sbk_ ("Leaving") 21:59:35 ummm 21:59:48 can't we just code it for pygmy or isforth and then port it later? ;) 22:02:25 Well, it'll be written for FS/Forth first. 22:02:33 Since that's the environment I'm most familiar with. 22:02:46 Actually, I may write it for PFE first, and get it working in Linux. 22:02:53 We'll see. 22:02:57 is fs/forth coded yet? 22:04:27 No; it's still in development. 22:04:40 And it's currently only 16-bit because it's designed to run in DOS> 22:08:47 hmm, how would i go about drawing lines and pixels in forth? 22:08:53 (let's assume pygmy??) 22:08:58 or whatever forth you think is best 22:09:40 The same way you'd do it in assembly language. 22:09:50 You'd need a buffer of memory to treat as the bitmap. 22:10:06 Next, you'd need to code up a Bresenham line drawing implementation. 22:10:14 for lines just use some bresenham, as usual 22:13:26 bye 22:13:32 --- quit: geakazoid ("Leaving... ") 22:15:18 hmm 22:16:07 so it's possible for me to draw lines in forth with no assembly by pushing bits to b8000 ? 22:16:36 if the video mode is set correctly that waht you must do 22:16:53 that what's* 22:16:58 lol 22:17:09 * CrowKiller is really sleepy 22:17:21 that's what you must do to write pixels actually 22:17:31 yeah 22:18:19 but won't it be slow if i don't use that asm mnemonic that shoots the bits really fast 22:18:32 it was REP?? where the ? are wildcards 22:21:04 if you want o use that, you must put b8000h into EDI (destination string), the bytestream pointer into ESI (start string) and the length of the bytestream in ECX and do "rep movs" 22:21:18 its the smaller you can get in assembly, but not the fastest 22:21:40 pairing on the pentium and other processors enable you to get better performance with longer, simpler code 22:22:11 in my compiler I use the REP familiy of operations everytime I can to keep things small 22:23:02 3 to 4x compression that way everytime I compile something or touch at compiled code or token array 22:23:40 Actually, no, because REP only moves bytes or words or dwords, AND the overhead for moving 6 to 16 pixels isn't worth it (the average for most lines). 22:23:50 REP works best for drawing lines that are predominantly horizontal. 22:24:18 And, as if that weren't enough, you wouldn't want to draw a line into the framebuffer directly anyway -- it's dog slow. 22:24:50 It's better to render it into an off-screen framebuffer, THEN block-move (with REP if you want) it into the frame buffer when you're done. Strange, but true: it's faster. 22:25:26 (as long as you only move that portion of the screen that's been modified of course) 22:27:33 why wouldn't i want to block move it with REP ?? 22:28:47 On Intel CPUs, REP MOVS instructions cost more in time than individual instructions. 22:29:07 It sits in one pipeline, where the microcode for it executes no faster than a 486. 22:29:15 (a really fast 486, but a 486 nonetheless) 22:29:33 In contrast, simpler instructions don't even HAVE microcode, so they whip through the pipeline substantially faster. 22:29:36 i know, but this is smaller 22:29:48 So if you use a longer sequence of instructions, you'll find that it runs faster. 22:29:49 thats why i sue it I specified it early ;p 22:30:18 what is the smaller instruction instead of REP ? 22:30:22 Not only does each instruction take less time, you're dispatching more than one per clock cycle. 22:30:25 er 22:30:27 the simpler instruction 22:30:35 MOV SI,source buffer 22:30:40 MOV DI,dest buffer 22:30:44 _label: 22:30:50 MOV AX,[SI] 22:30:56 INC SI 22:31:00 MOV [DI],AX 22:31:02 INC DI 22:31:03 DEC CX 22:31:09 JNZ _label 22:31:27 cool 22:31:30 MOV AX,[SI] and INC SI pair, so those execute in one cycle. 22:31:38 Ditto for MOV [DI],AX and INC DI. 22:31:54 Note that I interleaved the increments between the use of AX -- this prevents a read-after-write interlock, so the pipes will flow smoother. 22:32:01 It basically cuts a clock cycle per loop iteration. 22:33:05 ahh 22:33:06 ok 22:33:07 So what we see is that MOVS takes about 2 to 3 clocks per loop iteration, while REP MOVSx will take about 6. 22:33:22 does forth do this stuff properly? :) 22:33:40 what forth primitive 22:33:55 does the similar actions of that code above 22:35:06 in my compiler the binary record use that code to compile 1:1 form source to compield code 22:35:12 The block move would be implemented either in MOVE, CMOVE, or CMOVE> 22:37:11 i'll try to us the A register in compile mode to implement chuck's literal optimizations 22:38:05 oh no, i must keep focused on my challenge 22:38:41 and mov eax, lit were supposed to be enough for me now, if i want the project to advance 22:39:31 www.quantasm.com is one of the ebst sites to learn x86 optimization techniques at asm level 22:40:06 kc5tja: it doesn't appear there is SEE in pygmy? 22:40:09 (i tried VIEW) 22:40:16 i forget what the f83 word is i guess.. 22:40:30 s/tried/also tried/ 22:41:07 futhin: SEE in Pygmy tells you what word a DEFER'ed word points to. 22:41:14 futhin: VIEW is what brings up the source for a word. 22:41:25 tried those, i guess i'm using an old version 22:41:29 VIEW CMOVE should work. 22:41:39 i have the pygmy tutor which comes with 1.1 22:41:43 i also have 1.4 and 1.5 22:41:51 Use 1.5 22:42:01 Pygmy 1.1 is useless by today's standards. :-) 22:42:08 heh 22:42:13 except for the tutor 22:42:14 :P 22:42:20 Perhaps. 22:42:28 I never had a tutor. I had to learn the hard way. :/ :) 22:43:00 yeah, probably the better way, especially if you started at the lowest level of forth 22:43:15 i find my mind is too cluttered by the higher level crap 22:43:15 heh 22:44:06 WELL 22:44:09 oops 22:44:25 well, CMOVE CMOVE> and FILL all show REP in their code 22:44:26 heh 22:44:32 Yup. 22:44:40 That doesn't mean it's the best choice. 22:44:45 It just means it's the smallest choice. 22:45:00 Pygmy was written to run well on 8086 CPUs, not Pentium IVs. 22:45:20 i don't have Pentium IV 22:45:25 i got Pentium I or II 22:45:28 Same deal. 22:45:29 133 mhz 22:45:40 my comp is the best! :P 22:45:50 My rear end. My laptop is 1337. 22:45:51 especially since i don't play games 22:45:57 naw 22:46:12 Don't make me bust out my 7.15909MHz Amiga 500... 22:46:13 :) 22:46:13 your laptop is probably clunky and weighs more than it should with a bad LCD 22:46:23 hehe :) 22:46:29 Actually, its LCD is perfectly fine, which is pretty amazing after all these years. 22:46:30 the amiga is probably cooler than my comp 22:46:47 Thermally speaking, definitely. :) There's not a single fan in it anywhere. 22:47:22 heh 22:48:10 * kc5tja just realized that making a PowerPC assembler for FS/Forth will take hours, instead of weeks. 22:48:10 it's probably better than my comp 22:48:15 that's what i should've said :P 22:48:32 It is in that the hardware is more accessible than the PCs. 22:48:47 Plus the OS it runs will run circles around Linux in terms of usability and programmer friendliness. 22:49:00 it runs faster than my comp! i can do stuff more efficiently on it! :P 22:49:07 It's graphics capabilities are limited compared to today's machines, however. 22:49:08 can i do irc in it? 22:49:17 graphics are overrated 22:49:22 If you install Internet software and a TCP/IP stack for it, sure. 22:50:36 can pygmy be changed to deal with lowercase typing? 22:50:54 Change its word comparison word to use case insensitive compares, then recompile the kernel. 22:51:20 the word COMPARISON ? 22:51:29 I think it might be COMP, but I'm not sure. 22:51:37 It's been awhile since I walked through that code. 22:52:15 man, sometimes i wish dos was forth or something, i would love to change the names of a whole bunch of files easily 22:52:34 got any ideas? i could use the bash that's ported over to dos.. 22:52:48 ? 22:53:22 hmm 22:53:30 DOS also has a FOR construct IIRC. It's basic compared to Bash of course, but it might work for you. 22:53:50 You can also change the extension of a whole bunch of files too: ren *.dat *.txt 22:54:39 well i've got logs 01.02.03 22:54:44 and i want to add .txt to all of them 22:55:08 i tried: ren *. *.txt and ren *.*.*. *.*.*.txt 22:55:09 heh 22:55:28 http://www3.sympatico.ca/rhwatson/dos7/z-for.html 22:55:31 futhin: if all you want to do is add an extension... 22:55:47 futhin: er, wait, never mind 23:00:51 FOR %v DO ren %v %v.txt 23:00:56 doesn't work, bleh 23:01:02 Read the construct carefully. 23:01:13 FOR %v IN (*.) DO ren %v %v.txt 23:02:23 What operating system are you trying this under, BTW? 23:04:16 win 98 23:04:35 Type LFNFOR ON before your FOR statement to enable long-filename support. 23:04:58 The reason nothing is working is because you have multiple periods in a filename (you said it took the form of 01.02.03.), and you must have LFN enabled for that to work. 23:05:36 the new FOR doesn't work 23:05:42 even with LFNFOR on 23:06:07 and i tried the REN 23:06:07 stuff 23:06:13 I can't believe that. 23:06:29 ren *. *.txt 23:06:35 and ren *.*.*. *.*.*.txt don't work 23:06:39 But at the same time I can. It's a microsoft product. 23:06:59 *.*.* won't work under DOS, because * matches the remainder of the filename.....Ah ha. That's it. 23:07:09 I'm afraid you're fresh out of luck with this. 23:07:15 heh 23:07:31 abc*def is the same as abc* in DOS. 23:07:50 with a forth os and a console interface, no scripting language is needed to be created :) 23:07:53 forth will already do 23:08:18 :) 23:08:23 You wouldn't have files in Forth anyway. 23:08:31 Not typically, at least. 23:08:35 Maybe I could be wrong. 23:08:53 there's no files, only blocks 23:09:13 essential forth from jeff fox @ ultratechnology demonstrate it well 23:09:23 ummm 23:09:29 the blocks model could be replaced 23:09:32 Chuck also said not to abuse files, not to drop them completely. 23:09:38 will most likely be replaced in a forth os 23:09:45 files fro transfer are great 23:09:53 but for internal representation they sucks 23:09:53 Exactly. 23:10:15 CrowKiller: Precisely -- Forth is what OS developers have been trying to implement for years: PERSISTENT. 23:10:41 A persistent OS rarely will need filesystem for representing internal data. Even data that's in a "common format" for use by other programs. 23:11:12 having a custom Forth charset that would ease keybaord to video interfacing would be great also, for the oevr system if it uses textmode 23:11:17 And frankly, now that the blocking that Forth once did explicitly can now be done with the CPU's MMU automatically, BLOCK is really no longer needed. 23:11:24 Even Chuck reduced its meaning to just 1024 * 23:11:55 (though his blocks are still explicitly managed) 23:11:58 --- join: proteus (~scherrey@24-197-147-197.charterga.net) joined #forth 23:13:33 Hmm...you know, using 7-bit ASCII in a source block will give two extra lines of text. :) 23:13:47 whoaaaaaaa ;ppp 23:13:47 hmm. so we implement files ontop of blocks and keep the blocks in place for persistence? 23:14:20 files 23:14:24 would be for me 23:14:30 only names in the dictionary 23:14:49 futhin: I've pondered that, but I'm also pondering the reverse: using files to provide a backing store for blocks. 23:14:58 the name define the start point of the file, not its path 23:15:03 Using RAM as a 1:1 set-associative cache for file contents. 23:16:20 kc5tja: instinctively for me, implementing files over blocks seems more efficient. besides, weren't you talking about persistence? 23:16:54 isn't blocks important? i thought you implied that 23:16:57 for persistence taht is 23:16:58 Why wouldn't a system that used blocks over files be persistent? PC/GEOS demonstrates the viability of the latter solution extremely well. 23:17:23 hmm?!?! 23:17:26 i didn't say it wouldn't 23:17:38 All persistence is is the segmentation of memory into quantized chunks, and where dirty flags on each allows the OS to be able to periodically flush them out to disk on behalf of the process. 23:17:40 You implied it. 23:18:26 It doesn't matter if they're fixed sized chunks (like MMU pages or Forth Blocks) or variable sized chunks (like PC/GEOS's objects). 23:18:37 i only implied it with FILES 23:18:39 heh 23:18:45 hm 23:18:46 okay 23:18:53 nevermind 23:19:11 * futhin misread "blocks over files" and "latter solution" 23:19:20 Right, and that's what confused me. :) 23:19:23 heh 23:19:38 In fact, GEOS does its "vm file" concept the way it does with good reason... 23:19:54 Opening a file in PC/GEOS is the same as suddenly walking into an address space. 23:20:02 Saving a file is merely the flushing of the address space. 23:20:02 hmm 23:20:16 That's one of the reasons why PC/GEOS is so ungodly fast. 23:20:24 heh 23:20:34 neat 23:20:41 And it doesn't even use the MMU. :D 23:20:48 (it runs in 8086 real-mode) 23:22:08 :) 23:22:23 so what is it? blocks or files? heh 23:22:37 earlier you sounded like you were for blocks? 23:22:54 I'm for using what works. 23:23:12 I have a preference towards blocks because they're easier to implement, but files aren't necessarily a bad thing either. 23:23:20 yeah.. 23:23:23 Here's the relative pros and cons of each. 23:23:31 any advantages to be realized by implementing files over blocks? 23:24:06 like do blocks have advantages inside forth, like being easily accessible, fix sized and all, and with 7-bit ascii you get two extra lines ;) 23:24:11 In a system where you implement blocks first, you end up mapping each block to the boot device. This means, basically, you have a finite set of blocks which are persistent in RAM. 23:24:14 (but the 7-bit ascii is applicable to files) 23:24:43 In the case of a floppy, you have 1440 blocks that are usable. The rest map *only* into RAM, and therefore, are not persistent. 23:25:21 Blocks have advantages for LOTS of things, not just Forth. This is why CPU MMUs have page tables (a page is just a protected 4096-byte long block) 23:26:29 Now one system that you can use is you can map another storage device to another block range. However, there are some logistical issues with this. For example, consider if you have two floppies: A: is mapped to 0-1439, and B: is mapped to 1440-2879. 23:26:59 If you had a floppy in A: and you wrote some data to some block, say source code, and then mounted it in B:, you couldn't compile the source code you put on it, because all the block references would be off! 23:27:10 It gets worse with CD-ROM drives and harddrives. 23:27:58 So realistically speaking, for persistence, you're really best off just sticking with the boot partition/device for persistence, and leaving the remainder of the system as volatile. 23:29:01 In this system, files could perhaps be implemented only on the boot volume by using blocks. In all other cases, you'd need some manner of mapping blocks to devices which do not provide automatic writebacks for. 23:29:14 The reverse, however, is different (but just as complicated in some cases). 23:29:31 Here, you have a uniform, flat block space, but it's all virtualized. 23:29:58 You explicitly map blocks to *files* instead of to devices, and you let the underlying filesystem deal with the storage allocation and management. 23:30:05 PygmyForth uses this approach, for example. 23:30:56 hm 23:31:00 Actually, if you're willing to define a new loader word and a slightly new behavior for LOAD, then the former solution could work. 23:31:03 * kc5tja just got an idea. 23:31:20 For example, in my assembler's regression test program, I have the first block as reading this: 23:31:31 ( loads at screen 4000 ) 23:31:36 : E 4001 LOAD ; 23:31:43 3000 LOAD ( loads assembler ) 23:31:47 4002 4018 THRU 23:32:25 Tradition dictates that a variable called BLK be set to the currently executing block (there's reasons for this, but I won't get into them) 23:32:36 We could then do something like this: 23:32:47 : E [ BLK @ ] LITERAL 1+ LOAD ; 23:32:56 3000 LOAD ( loads assembler ) 23:33:03 BLK @ 2 + DUP 16 + THRU 23:33:25 But wouldn't it be nice if we could just give relative block numbers? These numbers would be offsets from the currently loaded block. 23:33:46 : E [ BLK @ ] LITERAL 1+ LOAD ; ( CAN'T change this, unfortunately ) 23:34:03 2 18 THRU-FROM-HERE ( or some better named word ) 23:34:12 ah 23:34:31 Such that: 23:34:36 : thru-from-here swap BLK @ + dup + thru ; 23:34:37 :P 23:34:42 : THRU-FROM-HERE BLK @ + SWAP BLK @ + SWAP THRU : 23:34:46 Yes. 23:35:09 And there'd be an equivalent to LOAD like that too: 23:35:15 : LOAD-FROM-HERE BLK @ + LOAD ; 23:35:30 That *would* allow us to map physical devices to block ranges. 23:35:50 fetching blk @ two times in thru-from-here ? 23:35:50 And that would easily give us a leg up on how most other persistent operating systems behave. 23:35:57 Just because it's easy. 23:36:17 You're waiting for I/O mostly there anyway, so there's no point in optimizing. 23:37:02 Yes, I really like this. 23:37:21 And the nice thing about this is that if you "unmount" a device, those blocks are just "RAM" at that point. 23:37:58 So, for example, you could write a filesystem implementation that uses a block range in RAM, and test it long before you bind those blocks to a physical device. 23:38:50 blk @ two times is slower tho right? fetching from ram is slow.. 23:39:23 --- quit: CrowKiller ("User pushed the X - because it's Xtra, baby") 23:39:35 A few extra nanoseconds executed only once just before an operation that potentially will take seconds? 23:39:39 I don't think it'll be an issue. 23:39:46 If it does, it's easily fixable. 23:40:15 : thru-from-here BLK @ >R R@ + SWAP R> + SWAP ; 23:40:24 That'll actually be no faster on x86 hardware. 23:40:51 hm, unless there's two registers for the return stack? ;) 23:41:08 Even so, it won't be much faster. 23:41:19 hm 23:41:27 But it's straight ahead code that's executed only once upon occurance of a THRU -- it's not worth optimizing here. 23:42:15 i suppose it's a better idea to go for readability 23:42:20 except with loops and stuff 23:44:55 I go for readability even with loops. 23:45:01 I'm not the type to optimize early. 23:45:23 I prefer slow working code over fast incorrect code. 23:52:50 yeah 23:54:28 Interesting: if we make each block range handled by a different handler, we could support blocks on files, but those files can themselves be on top of blocks in a physical volume. :) 23:55:22 heh 23:55:22 * kc5tja thinks to himself: 0 1440 DEVICE: (fd0) 23:55:27 err 23:55:33 0 1440 ' (fd0) DEVICE 23:55:43 blocks on top of files on top of blocks? 23:55:48 1440 1440 ' (fd1) DEVICE 23:55:52 why not go all out 23:55:59 I'm just saying it's possible. 23:56:07 Not necessarily preferable. :) 23:56:08 blocks on top of files on top of blocks on top of files on top of blocks on top of files on top of blocks 23:56:19 ;) 23:56:28 If you're willing to set up the chain of command for that, you can do exactly that. 23:56:29 there _must_ be some advantage 23:56:30 Have at ye. 23:56:41 we could treat blocks and files as 0 and 1 23:56:48 and have a meta computer embedded ! 23:56:50 heh 23:56:52 or something 23:56:56 or treat them as code 23:57:33 Nahh. 23:57:41 I like the idea of making general handlers for blocks. 23:57:57 Chuck generally thinks adding "hooks" is a bad idea, but this is one area where I have to disagree with him. 23:58:43 Because I was thinking, what would be the best way to bring in my Pygmy Forth blocks from a filesystem? It would be very, very convenient to map them right into the block range of the compiler. 23:59:48 Otherwise, I'd have to write a word to import them into the local block space (e.g., basically reading a whole file into RAM, or maybe into persistant blocks). 23:59:59 --- log: ended forth/02.08.03