00:00:00 --- log: started forth/03.10.16 00:33:42 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 00:33:50 hi ! 00:34:05 i just reinstalled my win2k - it crashed miserably 00:40:48 --- quit: Serg_Penguin () 01:21:38 --- join: ferringb (~ferring@ras-c5800-1-49-252.dialup.wisc.edu) joined #forth 01:27:59 --- part: ferringb left #forth 01:30:10 --- quit: a7r (Read error: 60 (Operation timed out)) 03:27:28 --- join: yasam (~sam@210-54-229-21.dialup.xtra.co.nz) joined #forth 03:28:07 stirling engines alright! 03:59:43 --- quit: yasam (Read error: 110 (Connection timed out)) 04:10:09 --- join: XeF4 (xef4@lowfidelity.org) joined #forth 05:09:37 --- join: andreou (~tautology@195.130.107.55) joined #forth 05:32:03 --- join: mur (~mur@smtp.uiah.fi) joined #forth 05:33:16 hello 05:33:39 --- quit: andreou ("-") 05:44:31 --- join: schihei (~schihei@p5085DE23.dip.t-dialin.net) joined #forth 06:06:30 you're mail admin at uiah? 06:14:48 no 06:28:10 --- quit: skylan (Read error: 113 (No route to host)) 06:50:54 --- join: nav (~tautology@195.130.107.55) joined #forth 06:51:14 --- nick: nav -> andreou 06:56:45 --- join: arke (~chris@ca-cmrilo-cuda1-c3b-66.vnnyca.adelphia.net) joined #forth 07:05:15 --- quit: andreou ("-") 07:24:15 --- quit: arke (Connection timed out) 08:18:32 --- join: Stepan (~stepan@frees.your.system.with.openbios.org) joined #forth 08:18:40 hi there 08:31:18 --- join: usa (~isparry@public01.syndeocorp.com) joined #forth 08:34:18 --- quit: schihei (Client Quit) 08:34:44 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 08:49:44 --- part: usa left #forth 10:06:35 --- quit: onetom (leguin.freenode.net irc.freenode.net) 10:06:55 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 10:14:35 --- quit: onetom (leguin.freenode.net irc.freenode.net) 10:15:46 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 10:15:47 --- quit: onetom (leguin.freenode.net irc.freenode.net) 10:17:58 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 10:24:53 --- join: ez4 (~ez4@pcp01518726pcs.reding01.pa.comcast.net) joined #forth 10:31:03 --- quit: onetom (leguin.freenode.net irc.freenode.net) 11:05:20 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 11:55:52 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 11:55:52 --- mode: ChanServ set +o kc5tja 11:56:15 Hi 11:57:58 why, it's kc5tjenna 11:58:18 Tjena 11:58:26 whatever 11:58:40 huh? 11:58:51 tjena="hello" in Swedish 11:58:59 I see. 11:59:16 --- quit: ez4 () 12:00:04 Well, I got my last test back from Calc II, and it's official -- I failed the whole class. There is little hope of bringing the grade much above a D, and a high likelyhood of receiving an F. 12:00:18 and I have seen it abbriviated 'tja' (or was it 'tjna'? don't remember, ti has been ~5 hyears since I've tried to IRC in Swedish) 12:00:26 But this is not for lack of trying. Quite the contrary -- I busted my ass in this class. 12:00:28 eek 12:01:26 * kc5tja was told that 'tja' means something along the lines of, "Whatever" (as in the Californian "Whateverrrrr" idiom). 12:02:07 I think it was Murr who told me that. 12:02:20 Or was it Onetom? I forget. It was a few years ago. 12:03:07 XeF4: "tja". 12:03:12 kc5tja: :( 12:03:21 Hmm.. 12:03:40 "tja" can mean two things, either "hi" or "well...." 12:04:02 Well, there you go. :D 12:04:35 Though, if/when I upgrade my ham radio license to amateur extra class, it's a high probability that KC5TJA may be relinguished for some call in the 6-call area. 12:05:14 Awww. 12:05:30 It'll probably be something like AE6__ or AF6__. 12:08:19 callsigns aren't permanent? 12:08:40 Nope. 12:08:45 kc5tja: it wasnt me. im hungarian, so we say 'hja' while murr is finnish :) 12:09:06 They were never intended to be anyway. That number in the middle is supposed to indicate (roughly) your geographical location. 12:09:34 * XeF4 can't think of "tja" meaning anything in Finnsih 12:10:08 Besides, I am hoping for a shorter callsign anyway, because it's easier to transmit in morse code. 12:10:29 -.- -.-. ..... - .--- .- is a pain in the rear to bang out on the key. 12:10:55 .- . -.... --.. -..- (AE6ZX) would be much easier for me to key out. 12:11:05 I'd even argue it'd be easier to copy too. 12:11:22 TJA is too easily confused with TJ; KC5TJ is a whole different person than me. :) 12:12:43 is ; ever used in a callsign? 12:13:09 semicolon? 12:13:10 No. 12:13:15 it's purely base 36. 12:14:22 The format for a callsign is [A-Z]{1,2}[0-9][A-Z]{1,3} 12:14:42 I would really like a 1x2 or 2x1 callsign. 12:14:46 --- join: andreou (~tautology@195.130.107.55) joined #forth 12:14:48 AE6N would be nice... 12:14:53 Or A6EN. 12:16:31 every (US) amateur callsign I'veheard has a number as the 3rd character 12:18:19 aha. nm. 12:20:44 moi 12:23:57 no ahtoota 12:24:40 ... --- ... 12:24:43 eiku ehtoota 12:24:49 sitä 12:24:54 (kin) 12:25:10 * XeF4 harrastaa taas epäraittiuta 12:25:16 raittiutta jopa 12:25:24 uutta 12:25:45 mutta uuttakin onkin toinen asia 12:25:56 harrastan siis epäraittiuutta 12:26:02 niin sitä 12:28:34 * XeF4 syyttää C-kieltä kun semmosta ei voi ohjelmoida raittiina 12:30:14 Wow. We just had a fighter airplane just do a fly-by of our house. 12:32:02 is that unusual where you are? 12:32:13 Yes 12:32:27 I mean, I live next to a Marine Air Base, so there are always fighters coming and going. 12:32:38 But a low-level fly-by like this is definitely unusual. 12:45:26 hui perskules. alkaakohan kaljanmyynti seitsemältä vai yhdeksältä? 12:45:50 eos :) 12:45:59 viina loppui enkä kerkiä mennä kapakkaan 12:46:18 jaahas :\ 12:47:28 Holy cow. The planes are the Blue Angels. :) 12:47:38 They must be training, because they're doing the same thing over and over again. 12:49:26 seitsemältä alkaa =) 12:49:43 aamulla vai illalla? 12:49:51 aamulla tietenkin 12:49:54 ok 12:50:05 suomen lain mukaan siis 12:50:43 kc5: are there mm.. how many blue angel pilots? 12:54:20 --- join: proteusguy (~username@65.196.135.240) joined #forth 12:56:41 I think 12. 12:56:46 but I only see three planes. 12:57:16 Anyway, I think I'm going to head out for a bike ride. 12:57:17 so few? they seem to be at practically every US air slow 12:57:30 Well, it's only a training session, I think. 12:57:47 That's what it looks like to me. 12:58:04 They're not really doing anything too fancy -- looks like they're just practicing formations and tight turns. 12:58:20 (which happens to be directly over my house at the moment) 12:58:33 anyway, I'm going to head out for a bike ride. 12:58:45 I haven't ridden in a while, and I feel the urge to ride. 12:59:13 * kc5tja is away: I want to ride my bicycle, I want to ride..... 13:09:53 I walk around until I find brake cables lying on the side of the street so I can fix my bicycle 13:15:13 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 13:16:28 --- nick: andreou -> andreou-away 13:17:36 --- part: Stepan left #forth 13:38:04 --- nick: andreou-away -> andreou 13:40:33 * kc5tja is back (gone 00:41:20) 13:40:54 I found the perfect circuit for me to ride on. 13:41:22 There's a road that loops back onto itself, but before it does, there is a very steep down hill, followed immediately by an even steeper uphill. 13:41:28 These are quite sizable hills too. 13:41:36 I had to drop to 2nd gear on my bike for the up-hill portion. 13:42:17 And as you can see, I had about 30 minutes of ride time, so that tells you how steep these hills are. :) 13:42:29 30 minutes to just go "around the block" so to speak. 13:44:29 wheee! 13:44:57 * kc5tja is stretching. 13:49:38 --- quit: tathi ("leaving") 13:49:51 * MysticOne watches kc5tja stretch too far 13:49:59 *pop* 13:52:54 heh 13:53:01 What's funny is that I'm typing while I'm stretching. 13:53:09 I actually stretched the farthest I've ever stretched just now. 13:57:18 --- quit: TreyB () 13:58:00 Much better. :) 13:58:13 I can't stretch very far 13:58:17 unless I'm trying to reach something I really want 13:58:22 :) 14:02:00 Just take it slow, and don't push yourself beyond the threshhold of pain. 14:02:06 They say, "No pain, no gain." 14:02:33 I say, "No pain, no gain. But with pain, you actually recede. Walk the thin line instead." 14:03:16 I usually don't care too much :) 14:05:07 You know, I'm overweight -- clinically obese, technically. 14:05:21 Yet, because of my flexibility, I'm way more in shape than most non-obese people I know. 14:05:30 Flexibility, i find, is quite important. 14:05:34 are you really? 14:05:36 Yes 14:05:43 you sure didn't look like it in pics I've seen 14:05:51 I am some 40 pounds overweight for my height. 14:06:11 is that clincially obese? 14:06:14 Well, no, I don't LOOK overweight at all. But I am, and it is all fat (well, mostly fat). 14:06:16 Yes. 14:06:21 hehehe 14:07:56 I should weigh 175 pounds; but I actually weigh something like 220 or so. 14:09:03 I'm about 240, and I think my ideal is about 185 or so 14:45:01 are you comparing your experience poinst in RPG? 14:45:40 No, we're comparing our weights, in pounds. 14:45:53 Multiply those numbers by 4.45 for equivalent weights in Newtons. 14:46:19 Newtons! 14:46:25 how aboug kg? :) 14:46:27 about 14:53:13 kg is a unit of mass, not weight. 14:53:17 Weight is a force 14:57:28 kc5tja: isn't a pound a unit of mass too? :) 15:02:48 No 15:02:56 The imperial unit for mass is the 'slug.' 15:25:12 --- join: Sonarman (~matt@adsl-67-113-234-100.dsl.snfc21.pacbell.net) joined #forth 15:35:47 --- join: arke (~chris@ca-cmrilo-cuda1-c3b-66.vnnyca.adelphia.net) joined #forth 15:38:24 --- quit: Sonarman ("Lost terminal") 15:39:29 --- join: Sonarman (~matt@adsl-67-113-234-100.dsl.snfc21.pacbell.net) joined #forth 15:39:57 y0 fav people :) 15:40:04 re 15:40:16 whats up kc? 15:40:21 youre on early today :) 15:41:03 I don't work on Tuesdays or Thursdays. 15:41:06 I have school. 15:46:18 :) 15:48:49 --- quit: Sonarman ("leaving") 15:49:37 --- join: Sonarman (~matt@adsl-67-113-234-100.dsl.snfc21.pacbell.net) joined #forth 15:50:10 * kc5tja is reading up on the Hellschreiber communications method. 15:54:21 * arke is reading up on huffman encoding 16:32:58 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp252182.sympatico.ca) joined #forth 16:33:23 vlbengines.com could go into the topic as well 16:33:46 bourke-engine.com too, same thing 16:36:39 y0 16:37:28 so what are you guys doing forthwise lately? 16:38:32 i'm almost off the hook, i work on my project at school between classes 16:39:08 im still thinking about conditional implementations, colorofrth used the datastack at compile time to keep addresses 16:39:36 but i use it now for every call, to be able to compile them as pushes 16:40:09 i thought maybe putting another zero on stack 16:40:52 another, since i already pushed one before starting to stack addresses 16:40:59 * arke thought of a nibble-based forth machine :) 16:41:13 yeah me too, what was it like? 16:41:24 Atmel got the marc4 processor 16:41:32 forthish and nibble based 16:46:00 --- join: skylan (sjh@vickesh01-4505.tbaytel.net) joined #forth 16:48:31 * kc5tja hasn't had much time to do anything Forth related in what seems like almost a month. 16:50:46 me neither, ive been reading spiritual and paradigm-switch stuff mostly 16:51:00 aside from overburdenning schoolwork 16:51:28 * kc5tja nods -- work and school have been consuming all of my time lately too. 16:51:46 well, 16 instructions 16:52:24 and, or, xor, fetch, store, set, push, pop, rpush, rpop, and some others 16:52:29 oh yeah 16:52:40 add, sub, mul, div, shl, shr 16:52:50 the processor could be nibble based but use 32 bit or more memory as "cache" 16:53:21 well, its actually dword based, but uses nibble-size instructions 16:53:40 possibly another nibble as arg, if required. 16:53:52 references to word could be relative, let say a jump(nextslot) instruction using the next nibble as an index into a circular adresses stack 16:54:03 address* 16:54:11 hrm 16:54:19 i just realized that it cant work the way i just did it 16:54:21 embed the compiler in the chip 16:54:24 because 16:54:35 theres no conditionals and no jumps lol 16:54:53 1-relative i.e. bitwise short word references 16:55:19 2-no call instructions needed, push, ret, jmp are enough 16:55:21 :) 16:55:27 push ret have priority 16:55:44 hrm 16:55:45 3- to go with 1, a new definition opcode 16:55:57 aah 16:55:58 i got it 16:56:02 im working with those ideas and i truly see them as an improvement 16:56:32 i have no working example its a shame im so lazy, or perfectionist or whatever problem 16:56:52 The best solution to control flow is where the microprocessor supports only a single jump instruction. If the target address is non-zero, the jump occurs. Otherwise, it doesn't. 16:56:53 it will be done by next year promised 16:57:16 hmmmmm 16:57:21 and, or, xor, add, sub, mul, div, push, fetch, store, shl, shr, ret, retz, and 2 more :) 16:57:43 kc5tja: where does that comes from? 16:58:17 kc5tja: ack. :) 16:59:01 Here would be my selected instruction set: NOP, LIT, @, !, AND, XOR, +, JNZ, >R, R>, DUP, DROP, SWAP, OVER, and two left over for whatever. 16:59:28 suprdupr: I forget precisely, but it's from a 4-bit-per-instruction MISC processor I saw a while ago. 16:59:28 maybe a NOT 16:59:56 LIT?? 17:00:00 Technically, all you need are the first eight instructions: NOP, LIT, @, !, AND, XOR, +, and JNZ. 17:00:08 arke: Pushes a literal onto the data stack. 17:00:25 yeah the not can be a xor 17:00:27 hrm 17:00:44 you dont need nop, really :) 17:00:50 yeah for padding 17:00:51 Yes, you do. 17:00:53 essential 17:00:54 ;p 17:01:26 1 2 + @ would be encoded as $1162 $0001 $0002 in memory. 17:01:41 where NOP is opcode 0, LIT is 1, @ is 2, etc. 17:02:33 hrm 17:02:39 how could you implement div? 17:02:43 * kc5tja finds it intriguing that the Steamer16 does not have a hardware return stack, nor does it support subroutine calls in hardware. :) 17:02:49 and/or mod? 17:02:51 using ?lit in the compiler 1 2 + would be encoded as 3 and etc. is 6=+ ;p 17:03:20 arke: Probably the same way you'd implement it on an 8-bit microprocessor that lacks those instructions. Shift and subtract algorithm. 17:03:33 suprdupr: I'm trying to illustrate a point. 17:03:51 yeah, me too, a complimentary one 17:04:09 kc5tja: can you give me an example? 17:04:15 4-lookback optimization is essentially the compiler's job 17:04:31 I find it absolutely fascinating that, despite the relative inadequacies of the Steamer16, it's actually got more performance than a 6502, and actually outright rivals the 80386 in run-time performance. 17:04:54 arke: No, because it would take me many hours to re-derive the implementation. I don't have that kind of mental bandwidth right now. 17:05:10 --- quit: proteusguy ("Client Exiting") 17:05:24 mental bandwidth, almost poetic ;pp 17:05:38 suprdupr: I would personally never write 1 2 + @, so the compiler need not concern itself with catching 1 2 +. 17:06:05 what is a circular stack? 17:06:23 yeah but genetic code generation would maybe benefit from this... ;o) 17:06:28 But the Steamer's data stack is only three elements deep anyway, so it's not at all capable of functioning like the F21's stack. 17:06:39 circluar stack never under or overflows 17:06:44 suprdupr: I don't believe in genetic code generation. 17:06:54 its a shift register with a "perpendicular" window 17:06:55 kc5tja: ? 17:06:59 genetic code regen? 17:07:28 Sonarman: The head and tail of the stack is the same. If you have a stack containing 0 1 2 3, and you push 4, then you'll get 1 2 3 4 (note the 0 is overwritten by 4). If you drop an item, you get 4 1 2 3. 17:07:41 arke: You know what genetic algorithms are, right? 17:07:56 thznks 17:07:57 suprdupr: Perpendicular what? 17:08:44 genetic programming try to do what darwin thought was nature's inner working: do natural selection with programs 17:08:58 no.... 17:08:58 suprdupr: Oh, I see what you're getting at. That's a hardware-level implementation detail, and isn't the only way to implement one. 17:09:11 perpendicular....the circular stack is like a ring, and a "window" accesses it at a defined position 17:11:53 http://www-2.cs.cmu.edu/Groups/AI/html/faqs/ai/genetic/top.html 17:12:22 arke: See URL above. 17:12:54 arke: Secifically, section 2/6 has the answers to what various types of evolutionary computing actually are. They explain it far better than I can right now. 17:14:10 * arke is away: g4m3s 17:17:26 anyway, i would love to build a chip myself, i think i found a solution to small jumps opcodes with long absolute adresses 17:18:01 --- quit: arke ("I f34r n0n3, f0r f0rth sh4ll guid3 m3") 17:18:28 the index trick, using a circular data array to stack addresses in with an instruction, or as jeff fox suggested 17:19:06 use an array and reference a slot, if its zero then define else compile/execute/fetchaddress/whatever 17:22:28 in the nibble based machine, the next nibble could be a word, one of the 16 last defined words 17:23:08 --- join: SDO (~SDO@co-trinidad1a-10.clspco.adelphia.net) joined #forth 17:27:09 anyway, thanks for the jnz idea 17:27:36 n/p 17:27:54 --- quit: suprdupr ("thanks and bye!") 17:59:40 --- quit: andreou ("-") 18:13:56 --- join: I440r (~nospam@12-178.lctv-a5.cablelynx.com) joined #forth 18:21:14 --- quit: I440r () 18:21:23 --- join: I440r (~nospam@12-178.lctv-a5.cablelynx.com) joined #forth 18:26:00 --- join: TheBlueWizard (TheBlueWiz@207.111.96.125) joined #forth 18:26:00 --- mode: ChanServ set +o TheBlueWizard 18:26:04 hiya 18:27:04 re TheBlueWizard 18:27:04 hi 18:27:12 hiya kc5tja 18:27:15 hiya I440r :) 18:28:03 * kc5tja is playing with a morse code-over-IRC program for Linux. Pretty cool stuff. :) 18:28:41 sounds very retro 18:31:44 Hey, morse code is fun stuff. 18:31:55 It's my favorite mode to use when on ham radio. 18:32:53 ok :) 18:42:30 --- join: arke (~chris@ca-cmrilo-cuda1-c3b-66.vnnyca.adelphia.net) joined #forth 18:43:22 AAAARRRRRGGGGHHHH 18:43:36 Halo PC requires a 32MB non-nvidia video card. 18:43:39 what do i have? 18:43:41 16 bit nvidia. 18:44:41 What is Halo PC? 18:44:47 I thought PCs are video card neutral (to a large degree anyway).... 18:45:06 at=r{_a,cw=Z]Q(NlQQE)PhNbP}NxP|NlP9 18:45:08 at=r{_a,cw=Z]PSG4PiNYT6JM 18:45:10 at=r{_a,cw=Z]L:S`I)Q(J- 18:45:12 at=r{_a,cw=Z]F~RENNPpNXRdNNQ2OC 18:45:14 at=r{_a,cw=Z]H"PrNNS7HB 18:45:16 at=r{_a,cw=Z]OKQ2NbS/NdQ(C= 18:45:18 at=r{_a,cw=Z]J.PrNbS-H?P|NnP9 18:45:20 at=r{_a,cw=Z]R}NkP|NYQ2H"PVNES@ 18:45:22 at=r{_a,cw=Z]PKGDP}NbSVNbQ at=r{_a,cw=Z]MlP_O7P}O$PsO$PiO$PiNvPrO#P|O-PrJB 18:45:26 at=r{_a,cw=Z]LVS-NxRXFbP|O8 18:45:28 at=r{_a,cw=Z]O~P}O.PsNxP@>t 18:45:30 at=r{_a,cw=Z]K}RXNbPsO$RdG6 18:45:35 NOO! 18:45:36 TheBlueWizard: well, it seems that the all seem to work right, except about 50% of nvidia cards 18:45:36 Dammit! 18:45:38 Wrong channel! 18:45:42 wtf was that? :) 18:45:49 That's encoded morse code. 18:46:02 I was in the wrong channel. >:( 18:46:08 actaully, it does support nvidia, but only geforce 18:46:17 kc5tja: well, thanks for showing us what morse code looks like :) 18:50:58 On IRC at least. 18:52:18 :) 18:58:15 :) :) 18:58:18 :) :) :) :) 18:58:40 hrm ... my uncles card is a 32mb .... dunno what kind, but it might work. 18:58:50 if it does, then all for the better :) 19:01:18 hrm ... my current one is an onboard. 19:01:24 i really hope ive got an AGP slot 19:01:32 otherwise, ima be peessed 19:01:53 Most modern boards have AGP of some kind. 19:02:17 yeah 19:02:19 hrm 19:02:23 does CF support onboard? 19:02:28 i heard it doesnt... 19:02:43 You just have to write the software interface for it. 19:05:50 huh? 19:05:52 so 19:06:00 when i boot up CF, its not gonna work? 19:06:15 Probably not, I don't know. 19:06:28 I don't know how on-board nVidia is different from AGP video cards. 19:07:29 kc5tja: have you ever done anything remotely similar to OS devel? 19:08:26 Does writing three multitasking kernels count? 19:08:39 heh 19:08:39 yeah 19:08:43 * TheBlueWizard chuckles re: arke's question.... kc5tja *is* developing an OS 19:08:48 multitaksing is slow, huh? 19:08:58 kc5tja: you are? 19:09:13 Multitasking is not slow. 19:09:18 Improper multitasking is slow 19:09:31 or balky 19:09:57 PIC 1 IRQ 1 is the time 19:09:57 r 19:10:15 right 19:10:41 you just hook up your interrupt handler to that ... do a task switch if certain slice has been given. Also, do a task switch on OS call. 19:11:46 Riast * kc5tj/w 2 19:15:10 In the most basic system, yes. 19:16:05 kc5tja: that would be a combined coop-timer multitasking system. 19:16:12 whats a better and/or more complex way? 19:17:12 Well, the only problem with your approach is that you lack timer resolution, because your sole PC timer now interrupts at a fixed rate, typically a few hundred times per second. 19:17:35 A more sophisticated solution would be to dynamically adjust the PIT timer as applications need it. 19:17:40 It's difficult to explain. 19:18:11 I won't worry about it, but suffice it to say that it enables microsecond timer resolution for an almost unlimited number of tasks, plus arbitrary numbers of software timers to boot. 19:18:18 --- quit: I440r (Read error: 104 (Connection reset by peer)) 19:19:00 PIT = PIC???/ 19:19:07 Programmable Interval Timer 19:19:13 Programmable Interrupt Controller 19:19:20 Two different chips/circuits on the PC. 19:19:33 The PIT chip is what generates IRQ 1. 19:19:46 The PIC merely relays it to the microprocessor for processing. :) 19:19:51 hrm ... :) 19:19:58 what would be a good interval? 19:20:07 That depends. 19:20:20 A decent fixed interval would be as close to 100 times per second as you could make it. 19:20:26 That's my personal preference. 19:20:33 so every 10ms 19:20:37 hrm 19:20:48 * kc5tja nods 19:23:53 * arke is away: dinner 19:24:44 Enjoy. :) 19:25:19 gotta go...bye all 19:25:26 Laters :) 19:25:31 bye kc5tja 19:26:12 --- part: TheBlueWizard left #forth 19:38:19 away 19:40:35 * arke is back (gone 00:16:41) 19:50:13 --- join: arke_ (~arke@adsl-68-73-208-253.dsl.chmpil.ameritech.net) joined #forth 19:50:49 OK, I'm taking a small nap. 19:50:53 * kc5tja is away: nap 19:52:36 bye :) 19:54:25 :) 20:27:45 --- join: I440r (~I440r@12-178.lctv-a5.cablelynx.com) joined #forth 20:28:14 --- quit: I440r ("brb") 20:28:19 --- join: I440r (~I440r@12-178.lctv-a5.cablelynx.com) joined #forth 20:28:47 * kc5tja is back (gone 00:37:54) 20:28:52 hey kc 20:29:12 Howdy 20:29:41 how was sleep??? 20:29:43 lol 20:31:30 It was just a nap. 20:31:34 :) 20:31:35 I'm still fairly tired. 20:31:49 But at least my head isn't bobbing at th ekeyboard. 20:31:50 :P 20:32:03 * kc5tja is doing some research into various approaches one can take to learn CW. 20:32:10 im working on my 16-instruction CPU :) 20:32:14 CW? 20:32:15 CW = morse code; stands for Continuous Wave. 20:33:19 :) 20:33:32 kc5tja: i've got my opcodes almost figured out 20:33:36 can i paste them here? 20:33:40 its only 16, lol 20:34:14 btw, is OR needed? 20:34:29 or can it be substituted by some combo of AND and XOR? 20:34:54 It can generally be substituted by some combination of XOR and AND. 20:35:20 : OR -1 XOR SWAP -1 XOR AND -1 XOR ; 20:35:42 hrm 20:35:50 i might or might not have xor 20:35:57 or* 20:36:48 hrm ... fsck 20:37:04 gotta get rid of some stuff... 20:37:13 :) 20:37:37 The life of a microprocessor designer. :) 20:37:47 i REALLY wanna keep the shifts 20:37:55 as well as add, mul, div 20:38:01 dont need sub 20:39:00 i do need ret and retz 20:39:24 i need push/pop for rstack 20:39:32 that gives me 7 20:39:35 er, 9 20:39:41 and nop, 10 20:41:59 hrm 20:42:02 i need to think LOWER 20:42:18 :) 20:42:35 Shifts, I think, are more important than mul and div. 20:42:46 They allow you to create mul and div in software. 20:42:52 div is soooo friggin hard 20:42:52 The reverse, however, isn't necessarily true. 20:43:12 And, on top of that, DUP + is equivalent to 2*, so *really*, only 2/ need explicitly exist in the instruction set. 20:43:27 Though 2* is faster than DUP + by one clock. 20:43:32 (or, would be if you were to implement it). 20:43:51 The Steamer16 doesn't have anything of this nature. :) It only has the 8 instructions I talked about earlier. 20:44:04 which were those again? 20:47:50 NOP LIT @ ! AND XOR + ZGO 20:47:59 where ZGO branched if the top of stack was zero. 20:48:13 hrm 20:48:15 no regs... 20:48:22 Nope. 20:48:33 It had only a 3-element deep data stack, and no return stack. 20:48:37 s/had/has/ 20:48:44 3? 20:48:45 wow 20:48:54 All instructions executed in a single clock cycle. 20:48:54 lol 20:49:15 With careful programming techniques, that little CPU was able to compete admirably with the 80386. 20:49:40 :) 20:49:45 intel is bloated anyway. 20:50:14 im sure theres not one app out there that uses every instruction 20:50:21 Subroutine calls were implemented entirely in software too; for non-leaf subroutines, it took 28 cycles to call and return (combined). For leaf subroutines (e.g., a subroutine that does not call upon the services of another), 17 cycles. 20:50:23 the most brainless instruction, i find, is xlatb 20:52:14 wow 20:52:14 The Steamer16 would pack 5 instructions per instruction word. So, after six cycles, five instructions would execute (one to fetch the next instruction word, and five to execute each instruction contained therein), giving a total execution performance of 1.2 clock cycles per instruction. 20:52:18 i have one spare instruction.... 20:52:55 nope 20:52:56 im full 20:53:22 nop, and, xor, or, shl, shr, brk, brz, add, lod, sto, dup, drp, lit, mul, div 20:53:30 all 3 chars :) 20:54:23 3 character opcodes, from the school of 6502. :) 20:54:43 anything you like and/or dont like about my instructions? 20:55:03 brk = ret, brz = retz 20:55:32 Why not just call them ret and rtz or something? 20:55:49 because brk and brz look more complicated. 20:55:50 How do that actually work? I don't see a call instruction in the list. 20:56:02 dont need a call. 20:56:03 s/that/they/ 20:56:09 you gave me that idea earlier. 20:56:10 --- quit: I440r (Read error: 104 (Connection reset by peer)) 20:56:22 lets say, you wanna jump to cheese 20:56:25 you do: 20:56:27 lit cheese 20:56:28 brk 20:56:40 ack 20:56:42 i meant 20:56:45 lit cheese 20:56:51 oh 20:56:53 wait 20:56:55 haha 20:57:05 i dont have any rstack manipulation words 20:57:09 lol 20:57:26 which two instructions should I drop? 20:58:11 or & mul i would guess 20:58:17 Personally, I'd replace mul and div with psh and pop 20:58:25 Hmmm....Yeah. 20:58:28 That'd work too. 20:58:34 div might be complex enough to warrent a hardware implementation. 20:58:39 yeah 20:59:11 or is now pop and div is now psh 20:59:11 :) 20:59:25 lets make some proggies with this! 21:02:29 whats an efficient way to do if(true) not_true else true; 21:03:11 or 21:03:14 nevermind :) 21:03:44 That would be where your conditional return would come in handy, I guess. 21:04:07 at=r{_a,cw=YcPYNUPf=Q 21:04:31 i think i should drop a word to make a call 21:04:40 hmm 21:04:42 Yeah. 21:04:49 or 21:06:17 i just dropped div 21:06:26 but i decided to change my approach a little 21:07:29 brn = callz, brk = jz, ret = ret 21:07:51 callz and jz each consume the top pstack argument 21:08:18 callz pushes the return address on the rstack. 21:08:56 ret gets an address from the rstack and jumps there, consuming its rstack argument 21:09:42 and I keep ret to allow literal jumps :) 21:11:24 Right now, my interest isn't so much in CPUs per se. 21:11:36 aww :P 21:11:48 My primary interest lies in the creation of a video circuit using the least possible components, but yielding the best possible results. 21:11:55 Which in many ways is actually more challenging. 21:14:17 This is especially the case for my 6502 and 65816 computers I want to build. 21:14:42 Communicating with the kits via an RS-232 port is OK for bootstrap purposes, but eventually, I want the ability to drive a VGA monitor directly with them. 21:17:21 yeah :) 21:27:19 brb -- bathroom 21:27:34 ok :) 21:29:29 back 21:29:54 :) 21:29:59 * kc5tja was originally thinking of just using an absolutely raw DMA engine to produce video. 21:30:10 One DMA channel, always going all the time. 21:30:11 im writing a hello world app for my little 16-instruction CPU :P 21:30:12 :) 21:30:19 Each byte read would be interpreted various ways. 21:30:39 hehe ... my CPU is just made for STC :P 21:30:52 00rrggbb would set the current video color to rrrrggggbbbb (note that rr is replicated twice, as is gg, and bb) 21:31:14 01RRGGBB would set the current video color to rrRRggGGbbBB, where rr, gg, and bb are held from the previous 00rrggbb setting. 21:31:37 This way, at 640 pixel resolution, I can get 64 colors on the screen, while at 320 pixel resolution, I can get 4096. :) 21:31:47 hrm 21:32:00 how does DMA work? 21:32:16 Then 10ihv000 is a command byte, where i is the "interrupt" bit (which interrupts the CPU), and h and v are my horizontal and vertical sync control bits. 21:32:20 Direct Memory Access. 21:32:29 ooh :) 21:32:39 so, like a command queue directly in memoryu? 21:32:56 In this particular case, yes. 21:34:24 A VGA display of 640x480 resolution consists of 800 pixels by 525 pixels. Since I have one byte per pixel, that translates to 411KB of RAM consumed by the display (even though only 300KB of it will be visible). 21:34:41 But what I like about this solution is that I don't have any video mode switching hardware at all. 21:35:12 Everything always displays at the same memory bandwidth, and the pixel data is interpreted as a contiguous stream of state-changing commands. 21:35:51 The only thing is, I'll be needing a command to reload the DMA pointer (a "jump" command, basically). 21:36:11 * arke thinks of something 21:36:12 I can probably do that in my 10ihvj00, where if j is set, it resets the DMA offset to zero. 21:36:22 how much memory can you afford on video? 21:36:33 * arke has an idea :P 21:36:34 How much memory are you thinking? 21:37:03 i dont know. whats the maximum amount of memory you are willing to give to video stuff? 21:37:12 Well, explain your idea. 21:37:13 :) 21:37:24 The solution I detailed is pretty wasteful of memory. 21:37:37 25% of it is wasted in syncing and borders and such. :) 21:38:09 well, lets say that your Video stuff starts at 0x7000 (just a random example) 21:39:25 OK 21:39:52 and lets say you wanted to set the color mode to 1 2 3 21:40:06 What do you mean by color mode? 21:40:13 well, current video cololr :) 21:40:26 Ahh, I see. 21:40:33 OK 21:41:04 does the 6502 have a stack? and/or a general purpose register? 21:41:13 * arke would assume so 21:41:30 Of course. 21:41:43 It has three registers: the accumulator, and two index registers X and Y. 21:41:51 hrm 21:41:52 It has a 256-byte long stack located between $0100-$01FF. 21:41:52 ok 21:42:25 push the arguments in reverse order on the stack, then the command byte, and do a call to 0x7000 21:42:45 and it will return, with the stack arguments consumpted, and the action set. 21:43:00 You just confused the heck out of me. 21:43:04 What is at $7000? 21:43:21 And push what arguments at $7000? 21:43:22 err 21:43:28 what arguments does the routine at $7000 take? 21:43:42 lets say you wanted to set the color to FFFF FFFF FFFF 21:43:58 you would do (in intel, since i dont know 6502 .. it should translate tho) 21:44:04 push 0xffff 21:44:04 push 0xffff 21:44:05 push 0xffff 21:44:08 push 0x00 21:44:16 call 0x7000 21:44:27 ack, just 0xff, not 0xffff :) 21:44:46 Well, whatever. I get what you're getting at, at least I think, and that is not feasible. 21:45:08 at 0x7000, squeezed somewhere around all the video memory, is code that does that stuff, including the state variables. 21:45:10 After the four PUSHes and CALL instructions, hundreds of pixels would have been displayed on the CRT. 21:45:39 how would yours look like? im not too sure about it. 21:45:46 I already outlined it above. 21:45:56 The frame buffer consists of 411KB of raw video data. 21:45:59 well, gimme a code example, i learn better by code :) 21:46:05 OK. 21:46:06 There is no code example. 21:46:11 well, of using it lol 21:46:12 It's pure, unadulterated data. 21:46:18 Digitized VGA signal data. 21:46:19 but only 300kb is used. 21:46:37 so, you got 111kb leftover (what a number! :) ) 21:46:48 Remember that a horizontal line consists of syncing, border, 640 pixels of video data, and then more border. 21:47:01 All total, a single horizontal line consumes 800 pixels. 21:47:25 Ok. 21:47:58 so that would make exactly 375KB 21:48:18 800*525 = 410,10x bytes. 21:48:28 oh, 525 lol 21:48:31 hrm 21:48:40 There are top and bottom borders too. :) 21:48:49 where are you gonna fit the other stuff though? youd have to put it somewhere else then... 21:49:00 What other stuff are you talking about? 21:50:02 eck 21:50:18 you gotta fit the state stuff somewheree... 21:50:18 Let me start over. 21:50:22 or am i missing something? 21:50:27 Yes. Everything. :) 21:50:42 :( 21:50:47 A VGA display, with 640x480 resolution, actually consists of 525 lines of 800 pixels each. 21:51:26 To create a VGA display at that resolution easily, and with a minimum of components (even at the expense of RAM), I was going to employ only a single DMA channel to do it with. 21:51:51 I was going to literally stream the VGA signals out the VGA port, directly from what was in RAM. 21:52:11 Each byte in RAM corresponds to a single pixel. 21:52:36 yeah .. thats how it works in mode 13h too ... 21:52:38 00rrggbb sets the current red, green, and blue gun registers to rrrr, gggg, and bbbb, respectively. 21:52:59 arke: No, it doesn't. The CRTC generates syncing information, and there's all sorts of CLUT bullcrap going on and whatnot. 21:53:03 Please, let me explain. 21:53:33 So, 00rrggbb sets the current red, green, and blue gun registers (e.g., state maintained by the hardware) to rrrr, gggg, bbbb. 21:54:07 Note that rr -> rrrr, gg -> gggg, bb -> bbbb, so only 64 colors (out of 4096) are visible at this point. 21:54:28 So at 640x480 resolutions, 64 colors are visible on the screen at once. 21:54:52 But, if I spend two bytes per pixel, I can get 4096 colors displayed. 21:55:18 01RRGGBB causes the red, green, and blue registers to change only its lower two bits: RR -> rrRR, GG -> ggGG, BB -> bbBB 21:55:50 So, to set the color to the exact value, we need at most two pixels -- thus dropping our horizontal resolution effectively to 320. 21:56:13 Thus, in memory, you'll see either: 21:56:23 00rrggbb 00rrggbb 00rrggbb 00rrggbb 00rrggbb 00rrggbb 21:56:27 (high resolution) 21:56:27 or 21:56:40 00rrggbb 01rrggbb 00rrggbb 01rrggbb 00rrggbb 01rrggbb 21:56:42 (low resolution) 21:57:14 ooooh 21:57:20 lol 21:57:31 i thought 00rrggbb was 4 bytes, not 1 lol 21:57:35 No. 21:57:49 But, these pixel interpretations make sense only for the visible video data. 21:58:13 We need to consider horizontal blanking (which is just a zero byte, setting RGB to $000). 21:58:42 And then synchronization. That's the job of yet another special "pixel" form: 10ihv000. 21:59:01 Ignoring i for the moment, we have two bits that we can alternately set or clear on a per-pixel basis: h and v. 21:59:14 h controls the _HSYNC signal right on the VGA port, while v controls the _VSYNC signal. 22:00:00 Now, I just figured out how to avoid dealing with "jumping" too. 22:00:27 The DMA pointer registers would reload whenever they would overflow to 0. 22:02:07 So, if I have 512KB of video memory available to me, I'd place my video frame buffer at $019760. 22:02:50 After it reads from $07FFFF, it'd wrap around to $000000. That condition would trigger the register reload to reset its value to $019760. :) 22:03:09 Thus, bytes between $000000 and $01975F are free for me to use as I please. 22:03:30 :) 22:03:36 i think i sorta get it now :) 22:04:01 The 'i' bit, btw, is there to trigger a CPU interrupt at various points in the display. 22:04:30 * kc5tja would really much rather have a video system similar to Atari's 8-bits / Amiga's, but that's a bit out of my scope right now. 22:05:54 My system as only two real disadvantages: RAM is accessed at a monsterous 25.2MHz, which is hard to keep up with no matter what, and it consumes RAM voraciously. 22:07:50 "hard to keep up with"??????/// 22:08:09 I'd need RAM which is quite fast to keep up with those kinds of speeds. 22:08:16 OR, I'd need wide RAM widths. 22:08:40 15ns RAM is adequate, and fortunately, cheap enough to get thanks to the enormous caches that Intel CPUs require. 22:09:08 btw, i gotta go sleep now. 22:09:17 thanks for the convo again :) 22:09:45 * arke is away: sleep 22:09:55 n/p. :) 22:12:44 --- join: Serg_Penguin (~z@212.34.52.140) joined #forth 22:14:15 re 22:17:49 --- quit: Sonarman ("leaving") 22:24:51 re 22:25:02 i'm now coding a noter 22:25:13 parallel in Forth and ASM 22:25:24 i'm in doubt what version to finish 22:26:02 --- join: anagappa (~anagappa@sj-natpool-220.cisco.com) joined #forth 22:28:47 --- quit: arke (Read error: 110 (Connection timed out)) 22:31:44 Serg_Penguin: What is a noter? 22:39:17 --- part: anagappa left #forth 22:39:53 --- quit: Serg_Penguin (Read error: 104 (Connection reset by peer)) 22:48:01 --- quit: Robert (leguin.freenode.net irc.freenode.net) 22:48:07 --- join: Robert (~snofs@h31n2fls31o965.telia.com) joined #forth 22:54:40 --- join: gilbertdeb (~gilbert@fl-nked-ubr2-c3a-37.miamfl.adelphia.net) joined #forth 22:59:15 --- join: Serg_Penguin (~z@212.34.52.140) joined #forth 22:59:33 Dzrastivanya 22:59:48 s/Dra*/!spell/g 23:00:05 gilbertdeb: czech ? 23:00:10 not RU, sure 23:00:28 Privet :) 23:00:33 But now - time for school! 23:00:56 heh ! 23:00:57 heheh. 23:01:04 it's supposed to mean ummm. 23:01:06 drastivanya? 23:01:12 zrastivanya? 23:01:25 i shot some nasty pics of my nasty home w/ canon a70 ;) 23:01:47 gilbertdeb: zdravstvooyte = hello 23:02:10 gilbertdeb: zdravstvooyteE 23:02:20 but not so slow as OO 23:02:35 actually, RU can't be written good in Latin letters 23:06:10 you can describe them apl-style. 23:06:15 so {pi} 23:06:19 {rho} 23:06:20 etc 23:06:26 ie apl-latin style. 23:10:23 terve gilbertdeb ja Serg_Penguin ! 23:11:58 hi Mur ! 23:12:04 terve mur 23:12:17 mur: had you been to Finnish demoparty at summer ? 23:12:49 demoparty? 23:12:57 oh you mean assembly 2003? 23:13:02 sure 23:13:08 i just forgot ze name 23:13:13 * mur wondered if you meant demonstrations or political parties :) 23:13:24 no i wasnt, why? 23:13:37 coz it's cool ! 23:13:54 i had been to a very local lame one... 23:14:22 it's an atmosphere, oldies (Spec namely, but i;ll be glad to see C64 or Ami too ) 23:15:12 ... lotsa creative folks 23:16:51 :) 23:38:30 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:43:09 --- quit: Serg_Penguin () 23:59:15 --- join: karingo (karingo@5.portland-15-20rs.or.dial-access.att.net) joined #forth 23:59:59 --- log: ended forth/03.10.16