00:00:00 --- log: started forth/04.01.14 00:09:12 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 00:13:54 --- quit: Serg () 01:15:15 --- quit: Nutssh ("Client exiting") 03:52:29 --- quit: rO| (Read error: 104 (Connection reset by peer)) 04:56:19 --- quit: ayrnieu (No route to host) 05:44:58 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 05:55:22 --- join: downix (~downix@adsl-153-121-56.mia.bellsouth.net) joined #forth 06:52:37 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 07:20:44 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 07:30:27 --- quit: cmeme (Connection reset by peer) 07:34:50 * warpzero is away: Let's get a party goin', let's get a part goin', let's get a party goin', party hard, party hard: irc.wsyntax.com 07:38:58 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 07:52:19 --- quit: Nutssh ("Client exiting") 08:00:19 --- quit: arke (Read error: 60 (Operation timed out)) 08:12:05 --- join: arke (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 08:13:57 --- join: proteusguy (~proteusgu@65.196.135.240) joined #forth 08:21:12 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 08:39:37 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 08:53:41 --- quit: Nutssh ("Client exiting") 09:01:27 --- quit: warpzero (Read error: 110 (Connection timed out)) 09:01:48 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 09:11:04 --- join: Nutssh (~Foo@gh-1029.gh.rice.edu) joined #forth 09:29:01 --- quit: warpzero (Read error: 60 (Operation timed out)) 09:38:56 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 10:25:08 --- join: schihei (~schihei@p5085DD2E.dip.t-dialin.net) joined #forth 10:27:06 --- join: Sonarman (~matt@adsl-67-113-235-198.dsl.snfc21.pacbell.net) joined #forth 10:33:40 --- quit: warpzero (Read error: 60 (Operation timed out)) 10:43:10 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 11:28:29 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 11:34:04 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 11:34:04 --- mode: ChanServ set +o kc5tja 11:40:16 --- quit: tathi ("leaving") 12:39:16 --- quit: Nutssh ("Client exiting") 13:03:14 --- quit: hovil ("Leaving") 13:20:44 --- quit: proteusguy ("Leaving") 14:07:32 weee :) 14:07:37 I have graphics in ppforth 14:07:54 :) 14:08:31 Herkamire, cool! 14:08:35 cool 14:08:41 I've never done 1 bit graphics :) 14:11:33 :) 14:11:37 1 bit graphics? 14:12:49 black and white 14:13:05 can't you even use other colour combinations? 14:13:34 it's an lcd screen 14:13:45 black and white 14:13:55 hmmm maybe it does grayscale 14:14:15 this is on Palm Pilot V 14:14:58 You have to bit-bang the hardware to get earlier Palms to do greyscale. 14:15:16 The native OS didn't support it (or color for that matter) until PalmOS 4. 14:15:46 that's what I thought. by "bit-bang" you mean keep switching the pixel from white to black right? 14:15:53 No. 14:16:03 But not quite too far from the truth either. 14:16:16 The 68332 chip's LCD controller supports a 4-shade greyscale mode in hardware. 14:16:26 But you have to set that video mode by bit-banging the LCD controller's registers. 14:16:48 what does bit-bang mean? 14:16:49 PalmOS 3.x and earlier do not support grey-scale at the OS API level. 14:17:02 Herkamire: : foo reg @ $FE AND $2 OR reg ! ; 14:17:15 E.g., you touch the bare-metal of the LCD controller directly. No OS intervention. 14:17:29 I see 14:17:32 You're clandestine to the OS. 14:18:02 you can upgrade the OS with the Palm line right? 14:18:07 Not all of them. 14:18:11 oh. 14:18:12 I'm pretty sure you cannot with the Palm V. 14:18:18 ok 14:18:21 If you had a Palm III, you could. 14:18:21 weird. 14:18:39 I remember it being a disadvantage of the Visor I got that you couldn't upgrade the system. 14:18:41 Some models use a real ROM (versus Flash ROM) for the OS because it was cheaper. 14:19:17 yeah. that's what Handspring did 14:19:36 do you know the name of a program I can use to store a couple of my documents on the builtin flash (asuming there is some) 14:39:57 --- join: scope (~junk@njd.paradise.net.nz) joined #forth 14:54:06 --- quit: downix ("Leaving") 15:04:11 Nope. 15:06:06 --- quit: schihei (Client Quit) 15:06:29 --- quit: warpzero (Connection timed out) 15:07:01 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 15:15:56 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 15:31:14 --- join: oooo____ (o@virgo.bombsquad.org) joined #forth 15:31:53 --- quit: oooo___ (Read error: 54 (Connection reset by peer)) 15:44:00 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 16:06:51 --- quit: qFox ("if at first you dont succeed, quit again") 16:19:42 --- quit: Nutssh ("Client exiting") 16:19:53 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 16:39:50 --- part: Nutssh left #forth 17:06:48 --- quit: tathi ("leaving") 17:06:54 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 17:12:42 --- join: KOHTPA (~asau@158.250.48.196) joined #forth 17:12:58 Dobroe utro! 17:13:04 --- quit: TreyB () 17:41:04 hi 17:47:07 --- join: blockhead (default@dialin-649-tnt.nyc.bestweb.net) joined #forth 18:00:01 --- quit: scope () 18:03:28 greetings 18:11:39 --- join: ayrnieu (julian@206.61.132.159) joined #forth 18:17:13 --- quit: tathi ("leaving") 18:36:22 ayrnieu, i'm facing a little dilemma with factoring. in forth, do you go for the stack effect that is simplest for the caller of the word, or simplest for the implementation? 18:36:24 --- join: downix (~downix@adsl-21-130-7.mia.bellsouth.net) joined #forth 18:36:49 ayrnieu, look at this definition in my language: 18:36:50 : replace ( replace input find -- string ) 18:36:50 replace* ; 18:36:59 the stack effect is non-intutive 18:37:11 it could be solved with a rot at the start 18:37:22 but should i have a stack word at the beginning of a def?... 18:38:13 slava - what of the stack effect do you say seems unintuitive? 18:38:37 ayrnieu, well, you would expect it to be "hello world" "e" "E" replace 18:38:38 slava: As a general rule, the simplest word implementation always has the simplest stack effects. 18:38:39 to replace e with E 18:38:58 but without the 'rot' you write "E" "hello world" "e" replace 18:39:20 and as for starting defs with stack words, I just finished doing that with my gforth networking library =) I have library functions that do pointless stack manipulations just so that the API makes sense -- and gforth's lib.fs will just rotate the stack when it gets to calling a C function. 18:39:27 slava - oh, indeed. 18:39:52 slava - I would prefer either "E" "e" "hello world" or "hello world" "E" "e" over that. 18:40:11 Dobroe utro! 18:40:12 slava - think of how you expect to build on that word. 18:40:17 --- nick: KOHTPA -> ASau 18:40:23 : lower-e "E" "e" replace ; 18:40:40 something like that yes 18:41:51 I use simple euristik that the less frequently changed argument should be on the top. 18:42:55 for my socket library, I have the socket always at the TOS. 18:42:56 This makes things easier when you have this argument constant. 18:43:09 begin foo bar baz r@ send quux again 18:44:13 ASau: Interesting heuristic. I'll have to keep that in mind when programming Forth code, to see how well that generally applies. I hadn't noticed that pattern before, so I'll keep an eye out for it. 18:46:07 As an example, this made me write file access words another way than in C. 18:46:52 In C you have read(fd, buf, size) with ( size buf fd -- count ) effect. 18:48:10 * kc5tja nods 18:48:24 I think that it'd be better to make read with stack effect ( buf size fd -- count ). 18:48:30 I can see how that applies; it's just I never really thought of it as the parameter that changes least versus the parameter that changes most. :) 18:48:33 I hate Linux's file systems 18:49:35 First, I have constant buffer size, second this is counted string. 18:50:19 downix: The filesystem interface is not itself the filesystem. 18:50:29 Anyway, I'm off cooking some pasta. Be back in about 10 minutes. 18:50:51 I ment the filesystems. I have a messed up reiser and I can't mount it read-only 18:50:55 so I can fix it 18:51:02 Also, counted string is done good, you can feel this when you use constant C/L = 64 characters per line. 18:53:53 ayrnieu, so how does 'factor' sound as a new name for the lsd langauge? 18:57:46 --- quit: downix ("[BX] Tabardation - the inability to master use of the key. See: retardation; Headcase.") 19:01:57 --- quit: ayrnieu (Read error: 113 (No route to host)) 19:21:03 I440r has tabardation :) 19:44:03 bxtardation - the use of BitchX, causing you to look like an idiot due to its asinine defaults and puerile quit messages 19:53:13 hehe 19:54:06 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 19:57:18 hello 20:12:39 --- quit: blockhead ("Client Exiting") 20:18:00 * Sonarman is away -- [BX] Auto away after 20 minutes 20:18:05 ;) 20:46:54 Hi. 20:49:22 hi Nutssh 20:54:34 hi 20:54:37 * arke is back (gone 12:42:40) 20:58:09 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 21:05:53 --- quit: proteusguy (Read error: 54 (Connection reset by peer)) 21:06:04 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 21:10:06 yay :) 21:10:35 I made a primative little drawing program in ppforth 21:10:48 Herkamire: Nice. 21:11:16 hiya 21:11:20 I didn't see much documentation, so I was a bit worried about it, but so far it hasn't been much trouble to learn from the examples and included source 21:11:23 I got an UltraSPARC to work today. 21:11:39 OpenBoot 3.5 is a forth, so I kinda got carried away with it :) 21:12:21 arke: All OpenBoots are Forth systems. :) 21:12:30 which is sweet! 21:12:40 I had some fun with it. 21:12:49 --- quit: warpzero (Read error: 110 (Connection timed out)) 21:12:53 * kc5tja nods 21:13:08 My friend was like "0.0" when I wrote : fuck-you page ." fuck you too, bitch!" ; 21:13:17 then even more 0.0 when i actually wrote fuck-you 21:13:18 ^_^ 21:13:20 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 21:13:29 Heh 21:14:18 * arke considers getting rox-filer+0install 21:14:44 this is so cool to have a forth with decent graphics performance 21:15:30 :) 21:15:37 * kc5tja is still trying to determine the best approach towards video for the ForthBox system I'm wanting to make. 21:15:39 * arke is most likely getting a G3 with built in USB' 21:15:44 you know what that means? :) 21:15:59 mac os x 21:16:08 kc5tja: how much RAM? 21:16:10 Herkamire: yay! 21:16:27 arke: Just enough to make it usable, with a little more for the frame buffer. 21:16:58 kc5tja: gimme an amount and desired maximum video mode 21:17:05 E.g., if I run the CPU at 6.25MHz (1/4 the dotclock frequency of the VGA hardware), then I'd need 4 byte-lanes of RAM to get the required 25MBps bus throughput to feed the VGA circuitry with. 21:17:26 Since SRAMs come in 512Kx8 packages now-a-days, and 15ns access times at that, that means 2MB of RAM. 21:17:41 not much :) 21:17:53 arke: that's 2MB for the framebuffer 21:18:01 No, that's 2MB total system RAM. 21:18:01 oh 21:18:04 er 21:18:05 heh 21:18:08 oh 21:18:08 The framebuffer is only 300KB in size. 21:18:14 kc5tja: whats your desired maximum video mode? 21:18:22 the srams total 2MB 21:18:33 arke: This system is to have 640x480, 256 fixed colors out of a palette of 512. 21:18:36 kc5tja: what are you using for storage? flash? 21:19:00 Herkamire: Some kind of solid-state storage device. Either CompactFlash or SmartMedia. MMC is a possibility too. 21:19:19 CompactFlash would grant me the ability to use harddrives as well (and, with suitable software, ATAPI CD-ROM drives too). 21:19:25 kc5tja: so one byte per pixel which makes 307200 bytes = 300KB :) 21:19:49 arke: Yes, I do believe I already said that. 21:19:59 ^___^ 21:20:17 kc5tja: there's some sort of flash<-->IDE adapter or something? 21:20:38 Herkamire: Only the plug. Electronically speaking, CompactFlash *is* an IDE drive. 21:20:53 neat 21:21:16 do you have to write to flash in blocks? 21:21:23 Of course. 21:21:28 512 byte sectors, just like a harddrive. 21:21:42 and reading is the same? 21:21:46 Yes 21:22:10 is that because of IDE, or the way the storage works? 21:22:37 (I don't know how flash works. I just know that it has no moving parts) 21:23:20 Flash ROM is just EEPROM. 21:23:39 kc5tja: I came in late in the game. What cpu you using? 21:23:46 It's because of how IDE (Integrated Drive Electronics) works. 21:23:53 proteusguy: 65816 most likely. 21:24:25 kc5tja: does it lend itself well to forth? 21:24:29 kc5tja: whats teh regs? :) 21:24:40 interesting. so CompactFlash is just EEPROM with an IDE interface? 21:24:44 Ah ok. Does this use a 68X00 command set? 21:25:10 arke: It lends itself to Forth much better than it lends itself to C, let's just say that. 21:25:20 arke: The registers are A, X, and Y. That's it. 21:25:24 * arke googles 21:25:40 arke: (Well, and S, the stack pointer, and PC, the program counter, and P the processor flags register). 21:26:02 oh, only one stack? :( 21:26:06 proteusguy: No. It's a 16-bit 6502 that is backward compatible. It's the main processor used in the Apple IIgs and SNES machines. 21:26:17 arke: One hardware stack. Yes. 21:26:42 but....6502 has 2 hardware stacks? 21:26:47 arke: No. 21:27:01 The 6502 has one stack, that must always reside between $0100 and $01FF in memory. 21:27:09 The 6502's stack pointer register is only 8-bits wide. 21:27:10 oh... totally off. hmm... I don't recall the 6502 addressing to be so flexible. Guess you don't need that or is this one improved? 21:27:36 The 65816's is 16-bits wide, so is limited to $000000-$00FFFF. But, still, even today, most apps still use $000100-$0001FF. 21:27:55 proteusguy: ??? 21:28:06 There are a myriad of addressing modes to the 6502. 21:28:09 oh sorry, that was the 6809 21:28:18 Relative addressing schemes were limited compared to 6809 as I recalled. 21:28:42 That is rarely a problem in practice. 21:28:43 i quote moving forth: 21:28:44 In the world of 8-bit CPUs, the 6809 is the Forth programmer's dream machine. It supports two stacks! It also has two other address registers, and a wealth of orthogonal addressing modes second only to the PDP-11. ("Orthogonal" means they work the same way and have the same options for all address registers.) The two 8-bit accumulators can be treated as a single 16-bit accumulator, and there are many 16-bit operations. 21:28:53 I can't think of what program I want to create with ppforth now that I've figured out how to do graphics and get (x,y) for clicks. 21:28:59 arke: Too bad the 6502 outperforms the 6809. 21:29:07 kc5tja: ek 21:29:53 Actually I want to make a little Atmel forth system. I love that chipset. But that won't happen until I actually get free time. 21:30:07 proteusguy: Also, remember that the 65816 is a 16-bit version of the 6502. While it is binary compatible with the 6502, you can also set the A or X/Y registers to be 16-bits wide, giving more flexibility. 21:30:20 6502 was my very first assembler. Apple II. Fun stuff. 21:30:48 The 6502 was engineered by the same person who designed the 6800 (which, of course, begat the 6809 later on). 21:30:54 Yep - sounds like a good little hacker tool. What applications you go in mind? 21:31:03 kc5tja: why does the 6502 outperform teh 6809 21:31:21 proteusguy: All the time-consuming applications I am using my main PC for (e.g., Internet, IRC, maybe the occasional ham radio tool, etc) 21:31:39 arke: Try this on for size: One memory access, one clock cycle. 21:31:54 neat... 21:31:55 arke: Or this: The fastest instructions execute in two cycles. 21:32:03 Atmel is like that too. 21:32:16 arke: Or this: If an opcode has 3 bytes, it'll usually execute in 3 clock cycles. 21:32:18 But doesn't reach the speeds of your processor. 21:32:28 (there are exceptions to this rule, but they are always deterministic) 21:32:28 kc5tja: coolness 21:32:52 The longest-duration instruction in the 65816 takes something like 9 clock cycles to execute (not including subroutine calls or returns). 21:32:57 This is comparable to the 68000. 21:33:05 what chip does my Palm V have in it? it's a 68K right? 21:33:18 Herkamire: Yes, it's 68332, an embedded version of the 68000. 21:33:20 Yes - the dragonball series. 21:33:32 hrm, the 6809 seems like a souped up version of the 6502 21:33:40 but thats probably not the case :) 21:33:45 arke: Correction: the 6502 is a RISC-ified version of the 6809. 21:34:14 but....less registers !? 21:34:39 Bill Mensche thought the 6800 could be made faster by eliminating its microcode, by shortening all the registers to 8-bits, and by using little-endian instead of big-endian numbers (less transistors, as we discussed before), etc. 21:34:50 Motorola thought he was looney, so Bill left and made the 6502 on his own. 21:35:03 Little did he know that it would come to utterly *dominate* the 8-bit home computer market. 21:35:04 :)' 21:35:26 arke: When your memory is accessed as fast as a CPU register, why do you need CPU registers? 21:35:48 Only cause Woz found it first. He coulda gone with another processor! Coulda gone Z80! 21:35:58 proteusguy: Not true. 21:36:00 kc5tja: true :) 21:36:05 Atari had been using 6502 for years. 21:36:10 Commodore had also been using the 6502. 21:36:12 kc5tja: whats the relation of the 8088/6 to the z80? 21:36:22 In fact, Commodore supplied the 6502s to both Apple and Atari for many, many years. 21:36:35 Commodore was out before the Apple I?? I didn't think so. 21:36:51 Yeah - forgot about the Atari game box. 21:36:53 arke: 8080 -> Z-80 -> 8086 -> 8088 -> 80186 -> 80286 -> 80386 -> 80486 -> Pentium -> Pentium Pro -> Pentium II -> .... 21:37:11 proteusguy: Commodore used the AIM-65 single-board computer. 21:37:12 !?!?!?!?!?! 21:37:20 kc5tja: eek!? 21:37:36 The Z-80 is what introduced all the nightmarish bullshit that now makes the x86 series famous for being a retarded architecture. 21:37:38 Was that the Commodore Pet? 21:37:52 kc5tja: it looks different :P 21:37:53 Things like prefix bytes, a horridly nonorthogonal architecture, string-manipulation instructions, etc. 21:37:54 haha but the Z80 had all kinds of registers! :P 21:38:00 proteusguy: So? 21:38:10 proteusguy: No, the PET was a new design for Commodore. 21:38:22 BC,DE - LD A indirect, INC, DEC 21:38:22 also exchange DE/HL 21:38:22 HL - LD r indirect, ALU indirect, INC, DEC, ADD, ADC, 21:38:22 SBC, exchange w/TOS, JP indirect 21:38:27 Well that's what all the TRS-80 guys used to tell me when I was an Apple II guy. :P 21:38:28 IX,IY - LD r indexed, ALU indexed, INC, DEC, ADD, ADC, 21:38:30 SBC, exchange w/TOS, JP indirect (all slow) 21:38:34 SP - PUSH/POP 16-bit, ADD/ADC/SUB to HL/IX/IY 21:39:01 i have a z80 processor..... my ti83 :) 21:39:05 proteusguy: Yeah, and I'd laugh when my 1MHz 6502 could haul memory around at 32KB/second when their little Z-80 could barely keep up at 16KB/s. 21:39:37 The only way for the Z-80 to keep up was with the LDIR instruction. Even LDI was slower than the 6502. 21:39:52 Yes - I was always amazed what that little box did at 1MHz. Was blowing away 4MHz CPM machines all the time. 21:40:59 arke: To put things into a perspective you might be more familiar with: An 8MHz 65816 is roughly equivalent in power to a 6.75MHz 68000. For 8-bit stuff, it's faster. For 16-bit stuff, it's just a *hair* slower. For 32-bit stuff, it's about half as fast. 21:41:46 Ok. 21:42:06 Heh, I'm gonna be mad assembly coding once I get my G3 :) 21:42:10 Compared to an equivalently clocked 8086 (yes, THE 8086, with a real 16-bit databus), the 65816 (with it's 8-bit databus) wipes the floor with the 8086. 21:42:14 I think the 68K is still my favorite general cpu architecture though. 21:42:29 proteusguy: Definitely. 21:42:35 I prefer the 68010 for overall best of the family. 21:42:48 But, the 65816 won out on several factors. 21:42:54 The most important one was cost. 21:42:56 Now I'm curious! 21:43:03 haha ok... 21:43:21 While the actual chip itself costs about the same as the 68000 chip, it has only an 8-bit databus. This means less wires to route on a PC board, smaller chip size (40 versus 64 pins), etc. 21:43:33 coolness. 21:43:55 And with an acceptable performance compared to an equivalent 68000, the 65816 was a no-brainer choice for someone like me, who can't afford a commercial development and fabrication process. 21:43:57 kinda odd how am 8-bit bus CPU blows away an equivalent one with 16-bit bus 21:43:59 I never thought of that as a plus! :P 21:44:03 but then again, it _is_ x86 ^__^ 21:44:44 arke: That's basically it. The 8086 has instruction timings that are, well, pretty much the same as an 8080. 21:45:06 Fast x86s didn't really arrive until the 80286, when instructions finally started having 2 clock latencies. 21:45:19 And even then, those were *best case* timings, which were still moderately rare. 21:45:29 Though an 80286 actually did compete with the 65816 in terms of speed. 21:45:47 and then the 80486 made so many fast instructions slow and vice versa ^__^ 21:45:57 Yes - Abrash's book was about the only way one could learn how to get performance out of the x86. 21:46:00 kc5tja: :) 21:46:01 The 80486 adopted the first RISC core. 21:46:11 pipelines, yes. 21:46:17 Well, RISC-like, I should say. 21:46:25 although they probably should have tried to add more registers. 21:46:42 8 registers per pipeline is about adequate. 21:46:50 What they should have done was added registers at least in the Pentium Pro. 21:47:32 now that I think about this ... wouldn't a 3-step pipeline where every instruction used only one cycle in every step be faster than the p4's new 20 step pipeline? 21:47:37 The first PPro's were pretty cool. A lot better for system developers. 21:47:49 proteusguy: Just don't use 16-bit instructions. 21:47:57 They incured a massive pipeline stall penalty. 21:48:06 Due to utterly retarded register access methods. 21:48:10 --- join: Ralph (~htp@h24-68-59-145.gv.shawcable.net) joined #forth 21:48:37 what's not retarded on that system, eh? 21:48:44 yep yep - it had its oddities. But I think its my favorite x86 still for what you got out of it. 21:48:51 arke: The paging MMU is about the only thing that isn't retarded on it. 21:49:09 proteusguy: Not me. I think the original Pentium was the best. 21:49:10 * arke knows nothing about x87 or MMU or MMX/SSE/SSE2 21:49:22 MMU is not an instruction set. 21:49:32 in a sense it is 21:49:34 * proteusguy doesn't do floating point. 21:49:35 It's the memory management unit that enables things like virtual memory and whatnot. 21:49:38 arke: No, not even close. 21:49:39 if you use paging.. 21:50:16 kc5tja: well, yes and no, right? I mean, it also implements those instructions that manage the memory, right? 21:50:24 arke: No. 21:50:29 arke: There are no instructions to manage memory. 21:50:39 gdt/idt stuff etc. 21:50:50 er, not idt, ldt 21:50:52 they dont manage memory 21:50:52 arke: That's the segmentation system. 21:50:54 that's all memory stuff. 21:51:03 managing memory is paging for example 21:51:08 and there are no paging instructions 21:51:28 Ralph: They do in the sense that segments map things to memory locations, and can itself be used to implement a segment-based virtual memory model. Segmentation is also superior than paging in memory protection. 21:51:34 (and one HELL of a lot faster than the paging system) 21:51:42 yah that's true 21:51:50 kc5tja: ?? 21:51:50 but in that case we're not talking about a mmu anymore 21:51:52 But I deliberately said, paging MMU. 21:52:03 Ralph: Yes, it's a segment-based MMU. 21:52:14 x86 has two MMUs on it. 21:52:25 One is the protected-mode segmentation unit, and the other one is a paging unit. 21:52:31 right 21:52:32 I'm a bit curious how segmentation is better than paging. 21:52:52 Nutssh: Segments can have byte-sized granularity. 21:53:17 Nutssh: TLBs must be loaded for each unreferenced page; this requires a page table walk every time. 21:53:23 *nods* Ok.. Is that useful? 21:53:30 Nutssh: Segmentation, however, uses a single descriptor to refer to a whole range of memory. 21:53:41 a PT walk on every TLB miss, yes.. But with variable size pages 4kb-64mb, that can be cheap. 21:53:42 Nutssh: Extremely useful. 21:53:58 But you have to swap segment descriptors constantly. No flat memory model. 21:54:20 Nutssh: Sorry, but it's not. I don't remember the last time my software ever came *close* to 64MB that it could benefit with a 64MB-sized page table entry. 21:54:47 Nutssh: Not true either. x86's segmentation unit is always in effect, yet x86 Linux is a flat memory model. 21:54:49 Well, yeah, but variable size means that a 256 entry TLB can deal with apps up to 16gb. 21:55:00 So how far along are you on this thing kc5tja? 21:55:05 Nutssh: Yeah, but how many PTEs are 64MB PTEs? 0. 21:55:19 I know, it maps the segment descriptors to the same address. (Well, mostly, there's an exception or two used for thread-local storage I believe.) 21:55:37 proteusguy: Not very. I don't have many resources. 21:55:48 proteusguy: And I still haven't solved a rather critical problem: video. 21:55:55 I know the feeling. 21:56:12 Video? Wow - you stepping up to a full pc type box eh? 21:56:22 --- join: ayrnieu (julian@206.61.132.159) joined #forth 21:56:29 proteusguy: Stepping up? That's always been a requirement. 21:56:44 You can always pull Woz's hack with the shared video mem and display to TV. 21:57:03 proteusguy: That doesn't solve my problem. Read the logs above; you'll see that is what I'm doing anyway. 21:57:08 kc5tja: you could probably employ a little more memory, then use a DMA stream (like you suggested for your kits), and then translate the framebuffer to DMA, maybe using a separate CPU? 21:57:10 I was just thinking little embedded device. Didn't know you had a full standalone box. 21:57:22 arke: Dude, 2MB is hhhhuuuugggggeeeee for this kind of system. 21:57:34 kc5tja: how big would the DMA have to be? 21:57:46 arke: Huh? 21:57:48 what is it that you're working on kc5tja? 21:57:57 Let me start from the beginning. 21:58:04 I'm trying to make a home PC that: 21:58:06 kc5tja: how big would the memory range have to be for the monitor DMA thingy 21:58:16 1) Doesn't suck the life-energy out of the planet. 21:58:35 2) Doesn't emit half of that energy back into the RF spectrum, thus rendering my ham radio hobby absolutely futile. 21:58:53 and 3) Provides no operating system above and beyond a minimal Forth environment. 21:59:09 4) Instant ON. Flip the switch, and "OK>" prompt is on the screen. 21:59:13 hm, doesn't a laptop running retro forth satisfy most of that? 21:59:24 5) No fscking memory checks every g*ddamned time. It's a waste. 21:59:26 Ralph - it satisfies none of that, I think. 21:59:29 Ralph: No. 21:59:39 Laptops emit as much hash as a desktop PC. 21:59:41 They also suck a lot of power. 21:59:42 Ralph: don't think so, laptops suck power mad :) 21:59:55 Sure, it's lowER power than a desktop, but it's not LOW power. 22:00:04 pda then 22:00:10 can't be too hard to get it booting forth 22:00:13 *sigh* lol 22:00:35 Ralph: PDAs are nigh-impossible to boot into Forth. Everyone has its OS embedded in ROM now-a-days. Also, very few disclose hardware details. 22:00:37 kc5tja: hehe, in 3 months, I'm gonna CTCP version you and get "FS/IRC Version 0.2" :P 22:00:41 And PDAs have limited battery life. 22:00:52 arke: No, this is a long-term, part-time project. 22:00:54 * arke is away: sleep 22:01:01 Sounds pretty cool. I like the instant on bit. What's the video issue you got? 22:01:10 Bandwidth. 22:01:38 sorry, it just doesn't seem revolutionary or anything to me. i'm sure most people in here are after what you described 22:01:40 At my desired 640x480 resolution, at 256 colors, it would take the CPU at 6.25MHz between 1.33 and 0.67 seconds to clear the screen. 22:01:45 hmm... because of your 8 bit bus? 22:01:49 otherwise they'd be in #c++ 22:01:59 proteusguy: More because of its low clock speed. 22:02:04 kc5tja: OUCH 22:02:08 Ralph - what does revolutionaryness have to do with anything? 22:02:12 no DMA? 22:02:18 * arke is away: REALLY sleeping now.... 22:02:20 proteusguy: No. Too complex to implement. 22:02:34 Ralph - and I'd probably flee Forth in the direction of Lisp or O'Caml or such, as I did the first time. 22:02:53 ayrnieu, to me that implies that it has already been done 22:03:02 DMA that bad? Not supported well by the processor or you just don't want to deal with the supporing hardware? 22:03:03 Remember, I don't have that big of a budget. I can't just purchase an FPGA programming environment, use it once or twice for this project, and let it go. 22:03:06 Ralph - what implies that who has already done what? 22:03:15 proteusguy: I just don't want to deal with the hardware. 22:03:16 heh 22:03:43 hmm... I don't think you got a real choice. Otherwise you never gonna have any cpu available. Its not that bad actually. 22:03:50 Ralph - you seem to have failed to pay proper attention to kc5's list of features, anyway. Obviously people have native Forth systems. 22:04:01 no i did not 22:04:23 ayrnieu: Lisp I can see, but that's god-awful slow on a CPU like 65816. SLower than C. O'caml requires what seems like gigabytes to compile even the simplest of programs, due to all the passes the compiler needs to make over the source to do adequate type and memory usage inferencing. 22:04:30 (otherwise, it's damn cool technology, I admit) 22:04:30 low-power is something people have been after ever since the lovely e- came out 22:04:49 and instant on is what everyone that ever used a calculator wishes he had 22:05:08 Ralph: And at one point in time, had. 22:05:11 I don't understand "the lovely e-", sorry. 22:05:20 But now it's gone, for reasons unknown to many of the world's finest engineers. 22:05:32 abstraction 22:05:37 Ralph: Bull. 22:05:55 kc5 - aye. Implementations for languages such as O'Caml and Haskell work very very hard. 22:05:56 no? what is the bios doing then? 22:05:58 AmigaOS was about as abstracted as any version of Windows I'm aware of. It virtually was instant-on. The only thing that slowed its boot was its RAM check. 22:06:04 kc5tja: ?? I use ocaml pretty regularily. Its pretty good. 22:06:05 Ralph: Who the fuck knows? 22:06:11 Nutssh: Your point? 22:06:13 feeding windows 22:06:18 among other things 22:06:29 What BIOS does post-boot is of no concern here. 22:06:42 What BIOS does *at* boot-time is what concerns me. 22:06:52 post-boot meaning past what point? 22:06:58 I don't recall it using much memory, at least compared to other compilers I use. Are you comparing it to a forth compiler? 22:06:59 execution of the boot sector? 22:07:04 Ralph: The point of first disk access to read the bootsector. 22:07:09 right 22:07:22 Nutssh: Forth compilers use, maybe, 120 bytes of RAM for compile-time state. 22:07:24 and before that it sets up the IVT among other things 22:07:35 Nutssh: I don't think your insinuation that Forth is a memory hog holds water. 22:08:12 i agree, a lot of the shit in the bios is useless by now, but it's still about abstraction 22:08:16 kc5 - I don't think that Nutssh meant to insinuate that. 22:08:43 Ralph: Sets up the IVT (maybe a millisecond), and determines how much RAM is installed (maybe a few other milliseconds), probes the PCI bus (another couple of milliseconds), .... why then does my BIOS take 45 seconds on cold-boot to get to the point where I see LILO on the screen? 22:08:53 What the *heck* is it doing that can possibly take that much time? 22:08:54 that's we PC users can be their OS of choice by simply writting 512 bytes of code to the boot sector, where others need to struggle with hardly documented shit 22:09:08 why 22:09:12 Ralph: Again, abstraction has *nothing* to do with it. 22:09:13 and boot.. 22:09:26 then what's the point of loading the boot sector? 22:09:30 Ralph - to what others do you refer? 22:09:45 mac for example. ofw 22:09:53 Ralph: Name me one other computer in this whole world that has to deal with half-assed partition tables, undocumented chipset features, and other things during boot-time? 22:09:57 Certainly not AmigaOS. 22:10:08 that is irrelevent 22:10:08 Certainly not Apple II, Atari, or Commodore 8-bit machines. 22:10:12 NO IT IS NOT. 22:10:17 This is **THE** thing I'm talking about. 22:10:33 Oh no, I'm not saying that at all. Its gotta be one of the densest software implementations imaginable. I was wondering what made you decide that ocaml was heavyweight. 22:10:48 that belongs into the useless category 22:10:57 Ralph - what belongs in that category? 22:11:07 half-assed partition tables, undocumented chipset features, and other things during boot-time 22:11:12 Ralph: Umm...no...it belongs front and center in every engineer's head. 22:11:25 Ralph - how does it belong in the 'useless category'? 22:11:26 of course, but that is completly off topic now 22:11:30 --- quit: Sonarman ("leaving") 22:11:36 Ralph: Then why did you try to make it on-topic above? 22:11:39 Ralph - what language do you speak, natively? 22:11:40 --- join: Serg (~z@212.34.52.140) joined #forth 22:12:02 hi ! 22:12:04 i did not. i was defending my point about abstraction 22:12:13 Ralph: Hence making it on-topic. 22:12:13 ASau ! :))) 22:12:15 I learned the RPL variant of forth a few years ago. That was very pretty and amazing for the size. 22:12:38 Abstraction does not cause BIOS to take 45 seconds to boot a PC running 800MHz. 22:12:40 Sorry. 22:12:45 I absolutely don't buy that arguemnt. 22:12:48 Positively, 100% not. 22:12:50 we were talking about the bios, not code design 22:13:09 Yes, and you keep bringing up abstraction, which is 100% code design. 22:13:12 no, and i agreed with you on that long ago 22:13:23 I didn't comprehend what you wrote then. 22:13:37 I apologize if we're violently agreeing with each other. 22:13:52 I've heard claims that I've not followed up on because I'm not interested in embedded machines that you can boot a PC in about a second. It dealt with flashing linux as the bios? 22:14:13 there's a linux bios project 22:14:22 freebios on sourceforge i believe 22:14:45 The biggest problem I have with BIOS right now is its memory check. Eliminating that alone from the normal, every-day boot process would make computers much more user friendly, I think. 22:15:12 kc5tja, i agree with the fact that the bios has way too much useless shit in it, but i do believe that abstraction is also part of the problem 22:15:17 I can see forcing a memory check somehow (e.g., a certain key combination on the keyboard when you turn the machine on or reset it, for example) 22:15:32 My first serious embedded project was a board that plugged into an IBM PC. It had a Rom in the area that the PC POST checked out. Upon starting, the cpu discovered that ROM and jumped into it. We just took over and never came back. Instant on PC. 22:15:44 i don't know of too many system where the microcode is actually patched on bootup for example 22:16:03 Ralph: Oh, yeah, the CPU's microcode. :) 22:16:12 Gotta love it. 22:16:23 oh man 22:16:29 "oops, we fucked up cpuid. let's just release a patch" 22:16:45 proteusguy: Yeah, I have an unused network card with a ROM socket. I'm very interested in using that. :) 22:16:58 Maybe someday, I'l burn FS/Forth into that ROM socket. 22:16:58 sorry if that goes against language rules here 22:17:05 (well, into a ROM chip that fits the socket at least) 22:17:16 There you go. Just gotta get your BIOS to skip mem check and you're off. 22:17:45 i've been playing with booting a forth from my bios, but until i get a dual-bios motherboard i'm going to stick to bochs i think 22:17:58 proteusguy: Does the video card get initialized before or after the custom ROM gets detected? 22:18:28 Before. For a while I actually made BIOS calls to draw on the screen before I wrote my own. 22:19:07 * kc5tja nods 22:19:51 Anyway, that's my rationale. Extremely low power, low RF hash, low bullshit factor. 22:20:07 how are you dealing with the power point? 22:20:21 and are you still using traditional components? 22:20:24 Fun way to jump start a PC. We had our own cpu on the board though. NEC V20. Own memory and everything except the video and keyboard. 22:20:49 Well, a combination of low clock speed, and using circuitry that doesn't have Sagans of transistors on them. 22:20:51 i mean, off-the-shelf motherboards and such 22:21:45 Good night folk. Lemme know when you give up and decide to go DMA kc5... ;) 22:21:47 Ralph: Custom motherboard layout, with a number of gate-array chips serving various purposes. 22:21:51 kc5 - five points for good use of a special unit. 22:21:55 oh ok 22:21:58 proteusguy: Give up? 22:22:02 --- nick: proteusguy -> proteus-sleeps 22:22:04 proteusguy: Giving up is going to DMA. 22:22:19 DMA is the answer! 22:22:27 22:22:46 ayrnieu: I had considered the possibility of adding in a vector math unit (integer of course) for graphics and other things like audio processing for ham radio, but that's a distant dream if any. 22:23:09 proteus-sleeps: Even with DMA, you're still limited by the CPU -- information to DMA stuff TO has to come from somewhere. 22:23:21 s/TO/FROM/ rather 22:25:43 kc5tja, can't you get pretty decent results by just hacking up a normal pc? 22:26:14 PCs, by their nature, (a) can't be adequately shielded, which emits massive amounts of RF hash into the radio spectrum, and (b) they still consume massive amounts of power. 22:26:25 (compared to what I'd like to see) 22:27:13 Then you have to get specific details about the chipset used on the motherboard, lest you triple-fault the CPU in accessing some register that you think does one thing, but really does another. 22:27:25 Those kinds of faults can be particularly insideous to diagnose. 22:28:32 hm, yah that's true. my goal for the past little while has been an instant-on forth based pc, so that never really came into play 22:29:08 It will as soon as you try to use USB ports, or MTRRs, or other bizarre things that even a Cray Supercomputer didn't have. 22:29:13 yah 22:30:07 I've joked about making an Atari 2600-like system, where the CPU itself feeds the video data to the video circuitry. 22:30:18 That'd actually be *fun*. 22:30:22 But it wouldn't be very practical. 22:30:38 (although it's not too far from the architecture I envision.) 22:31:00 what kind of performance hits can you expect from that? 22:31:01 Basically, have a CPU-stuffable video circuit, and then bolt on a DMA channel to feed it data autonomously. 22:31:07 It's how the Amiga and all 8-bit Atari's worked. 22:31:25 Ralph: From the CPU feeding video data manually to the video circuits? Massive. :) 22:31:53 While the display is active, the CPU must manually refresh the video screen data. Only during vertical sync or horizontal sync could the CPU get any useful work done, which is less than 25% the CPU's available time. 22:31:54 :) 22:32:35 yah i figured 22:32:53 why ? just embed video card in CPU, so bypass the slow bus 22:32:55 You know, maybe I should go with a monochrome display system instead of a color one. 22:32:58 so you plan on using dma transfers? have you experimented at all? 22:33:15 heh, personally i'd be more than happy with text only 22:33:17 Serg: Because the CPU itself still has to LDA from memory, then STA to the video port, LDA from memory again, STA to video port, etc. 22:33:23 but this is a PC replacement you said.. 22:33:31 Serg: The bus has absolutely zero to do with performance of the CPU. 22:33:37 Well, in this particular case. 22:33:57 The point is, the CPU itself takes the role of the DMA that would normally occur as part of video refresh. 22:34:26 Ralph: Text-modes take up vastly more transistors than a flat frame buffer. 22:35:12 Ralph: You need to store the current text line (unless you intend on wasting bus bandwidth by refetching characters all the time), you need character raster counters (as distinct from line raster counters), you need the logic to DMA the suitable byte from font memory, ... 22:35:27 Screw that. I'll take care of text in software. 22:35:29 right, but from my perspective it's so much easier to use :) 22:35:38 So is a flat bitmap. 22:35:48 It's just slower, that's all. 22:35:54 then you have to deal with fonts and the like 22:35:58 No. 22:36:15 If I have a fixed-width, 8x8 pixel font, then displaying a character is a very simple set of 8 store instructions. 22:36:20 No logical operations need be performed. 22:36:37 It's only when you get into fancy GUIs and sprites and other goodies that you start encountering those kinds of things. 22:37:19 that's still 8 store verus one mov ah,"A" / stosw 22:37:42 Yeah. 22:37:42 So 22:37:43 ? 22:37:55 8 stores is still just as easy to use as a text-mode screen. 22:38:01 Like I said, it's only speed that is affected. 22:38:09 yah true 22:38:14 I can live with a slight slow-down in exchange for a simple interface to the hardware. 22:40:07 Besides, the occasional graphics is nice to have. 22:40:16 E.g., I'll sometimes do some data visualization. 22:40:33 Or construct some bar graphs or something. Graphics are nice for that. 22:41:05 Though, what would suck with the monochrome screen idea is that 8 pixels would be packed in a single byte, so if you're drawing a line (for example), there would be logical operations performed on that. 22:41:24 (but for text rendering, it'd always be an 80x60 character matrix) 22:41:59 yah and sometimes i do wish i had more than 25 lines 22:43:51 --- quit: Herkamire ("time to sleep") 22:48:09 Another good reason for doing this project is just the personal satisfaction of a job well done. 22:52:40 yah, or at least multiple smaller jobs well done. no offense, but i find it hard to picture anyone looking at a source tree and be able to honstly call the project finished 22:53:47 Well, that's what I love about Forth. 22:53:54 Nothing's ever finished in a true Forth system. 22:54:06 That's part of what's hard to "pin down" about what Forth truely "is." 22:54:23 Just like it's hard to say, distinctively, what is music and what isn't. 22:54:39 Or what is aikido, versus aikijutsu, versions jiujutsu, etc. 22:55:41 Do some people have trouble saying what qualifies as music? Strange. Whenever I want to hear music I just go to the hills. 22:56:09 ayrnieu: Well, yes. Some people have too narrow a definition of what is music. 22:56:18 ayrnieu: Others have too wide. 22:56:22 Some music sounds like ambient noise. 22:56:38 Other natural or artificial sounds sound like music, but isn't. 22:56:56 Perhaps it would help to use E-Prime =) 22:57:04 I suppose I could ask my roommate (who has a degree in music) to explain it all, but, well, all he knows is that even he doesn't have the answer. 22:57:15 bye. 22:57:21 Later Nutssh 22:57:30 --- part: Nutssh left #forth 22:59:03 --- quit: ASau () 23:00:20 i just consider forth a framework 23:01:51 That's as good as any definition I've heard. 23:02:10 To me, Forth is two things: a philosophy, and an enabling tool to realize that philosophy. 23:03:44 echo "2 base ! : unixkey key dup 0< if bye then ; : silly begin unixkey . again ;" > silly.fs; echo "Hello, 'binary' world!"|gforth silly.fs -e silly 23:05:17 ayrnieu: :) 23:05:45 someone in #zaurus wanted a program to 'convert text to binary' and it turns out that he wanted exactly this. 23:06:22 ayrnieu: He has gforth running on his Zaurus? Cool. :) 23:06:39 I don't think he does, but somebody ported gforth to the zaurus. 23:07:21 * kc5tja nods 23:59:59 --- log: ended forth/04.01.14