00:00:00 --- log: started forth/19.02.23 00:24:04 --- nick: jedb_ -> jedb 00:39:13 --- join: dys (~dys@tmo-100-207.customers.d1-online.com) joined #forth 01:23:58 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 01:48:41 --- quit: pierpal (Remote host closed the connection) 01:52:54 --- quit: dddddd (Remote host closed the connection) 02:02:30 --- quit: ashirase (Ping timeout: 245 seconds) 02:07:36 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 03:56:09 --- quit: nighty- (Quit: Disappears in a puff of smoke) 05:14:29 --- quit: Zarutian (Read error: Connection reset by peer) 05:14:48 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 05:23:54 --- join: `presiden (~presiden@unaffiliated/matematikaadit) joined #forth 05:31:12 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:36:40 --- join: pierpal (~pierpal@host105-222-dynamic.3-87-r.retail.telecomitalia.it) joined #forth 06:06:43 --- join: proteusguy (~proteusgu@203.160.190.58) joined #forth 06:06:43 --- mode: ChanServ set +v proteusguy 07:20:02 4 FOR..NEXT runs 5 times 07:20:04 fuck me 07:20:10 that's so retarded 07:20:52 is that a gforth thing? 07:24:41 Must be, : foo for i . next ; would typically print "3 2 1 0", what does gforth do? 07:26:30 :NONAME 4 FOR I . NEXT ; EXECUTE 4 3 2 1 0 ok 07:27:10 Well that's special 07:28:24 "To avoid problems, don't use FOR loops. " 07:28:40 "In Gforth, this loop iterates n+1 times" is SO DUMB 07:30:40 Why would they sabotage for..loops like that. Bizarre 07:31:18 ANS enforcement maybe 07:31:26 might ask on the mailing list 07:31:52 For..Next is not ANS AFAIK, just common practice 07:32:10 yeah, and gforth denounces it for the holy DO-LOOP 07:33:42 Both for..loops and do..loops have their uses, there's no reason to sabotage for..loops like that. 07:37:27 It might not be sabotage, but the docs call FOR...NEXT "the preferred loop of native code compiler writers who are too lazy to optimize ?DO loops properly" 07:40:17 What horseshit. 07:42:22 --- quit: dave0 (Quit: dave's not here) 07:42:50 from what I've seen of forth-imps, for/next is cheap to implement and easy. Nothing about do/loop is cheap & easy. 07:50:38 The guy just has some weird biases I guess. 07:53:38 bbl 08:11:54 maybe ANSI forth is ANTI forth after all 08:12:01 lol. 08:44:37 one can easily implement a do/loop via a for/next loop, no? 08:45:50 according to the gforth docs that's lazy. 08:51:24 Zarutian: no you cant define do/loop with for/next 08:51:45 you cant do 0 -11 do i . loop with a for loop 08:51:53 or +loops 08:52:24 for/next is much simpler 08:52:43 it puts a count on the return stack and decrements it each itteration. they are more efficient than do loops 08:54:14 what does DO do? put the limit and current count on the return stack? 08:54:30 also you can LEAVE a do loop. so : foo ... ... 100 0 do ... leave .... loop xx yy zzz ; leaving the loop starts execution after the 'loop' 08:54:45 ok gimme a sec 08:54:52 code '(do)', pdo 08:55:01 pop edx ; loop start index 08:55:14 xchg ebp, esp ; point esp at return stack 08:55:27 lodsd ; fetch the compiled in loop exit point 08:55:28 sorry, x86 assembly doesnt illuminate well enough 08:55:36 it will 08:55:44 when i explain it 08:55:45 At least the limit and count, depends on the implementation. 08:55:58 code '(do)',pdo 08:55:58 pop edx ; get loop start index 08:55:58 .L0: 08:55:58 xchg ebp, esp ; point esp at return stack 08:55:58 lodsd ; get compiled in loop exit point 08:55:58 push eax ; put loop exit point on return stack 08:56:01 add edx, $80000000 ; fudge loop index 08:56:04 sub ebx, edx 08:56:06 push edx ; push fudged loop indicies onto return stack 08:56:08 push ebx 08:56:10 xchg ebp, esp ; point esp back at parameter stack 08:56:12 pop ebx ; cache new top of stack iten 08:56:14 next 08:56:16 thats the isforth implementation and thats a good starting point 08:56:32 DO pops the loop start index and adds 80000000 to it (make it negative sort of) 08:56:38 then subtracts the loop start index from that 08:57:14 it then fetches the address of the XT immediately following LOOP and pushes that and then the to fudge indicies onto the return stack 08:57:19 DO is compiled as 08:57:31 .int (do), EXIT-POINT 08:57:49 so the loadsd above fetches the exit point 08:58:10 leave is then simmply a drop of the two indicies and a pop of the exit point into IP 08:58:19 ip being esi in x4 08:58:54 on each itteration of the loop (loop) simply adds 1 (or more) to the top index and if an overflow occurs the loop ends 08:59:16 I J and K have to be calculated. simply fetch the TWO indicies and add them together 08:59:28 do loops are much more complex than for loops 08:59:30 but more powerful 08:59:32 that implementation looks brittle as hell. 08:59:38 in what way 08:59:55 you can do -11 243 do .... 15 +loop 09:00:03 you can also do -15 +loop 09:00:17 you can start negatvie and go positive. nyou can start positive and go legative 09:00:26 you can start negative and go further negative.... 09:00:39 show me the cracks :) 09:01:20 its the implementation in laxen and perrys F83 and tom zimmers FPC and just about every other forth i have looked at implement do loops in that way 09:02:28 i think swiftx has a similar definition too 09:05:27 ode "(do)", pdo 09:05:27 pop { r1 } @ r0 = start index, r1 = end index 09:05:27 _do: 09:05:27 bic lr, #1 09:05:27 ldrh r2, [lr] @ fetch compiled in loop exit point 09:05:28 sxth r2, r2 @ sign extend 16 bit relative branch vector 09:05:30 add r2, r2, lr 09:05:32 add lr, lr, #3 09:05:36 rpush r2 @ push it to the return stack 09:05:38 add r1, r1, #0x80000000 @ fudge loop indicies 09:05:40 subs r0, r0, r1 09:05:42 rpush r1 09:05:44 rpush r0 09:05:46 pop { r0 } 09:05:52 next 09:05:54 thumb2 version :) 09:06:46 hang on brb, i have a popup window that wont go away, im going to restart X 09:07:04 --- quit: mark4 (Remote host closed the connection) 09:07:39 --- join: mark4 (~mark4@12.41.103.244) joined #forth 09:08:37 do loops have some computational overhead to set up, give you more control over the way the loop itterates but when you simply need to itterate N times for loops are better 09:08:43 x4 also has 10 rep foo 09:08:47 foo gets called 10 times 09:09:02 and yes you can do that interactively. REP is defined using for/nxt loops 09:09:16 i dont call nxt 'next' because 'next' has special meaning in the kernel 09:09:48 it is often called donxt or some such 09:10:02 well, FOR is so simple, it just needs an end-marker: FOR{ and }FOR works as well as anything 09:10:25 ive never seen that but i would also not use that name because of confusion with 'do' loops 09:10:30 for{ } 09:10:30 for/foreend, whatever 09:10:31 I usually call that TIMES as in : spaces ( # -- ) times space ; 09:10:34 i would not object to 09:10:55 of course, I get other ideas for the weekend with "foreend" 09:10:58 except braces make forth code look like c :P 09:11:16 rdrop-exit: nuttin' wrong with TIMES, either 09:11:31 mark4: which is OK with me, as I know what they mean ;-) 09:11:34 for/next is ancient tradition 09:11:48 your banned from #forth! lol 09:12:03 oh wait. this isnt #c 09:12:13 mark4: that'd be mean, as I was one of the few that recall you from ##C ;-P 09:12:51 PoppaVic: ive only actually banned ONE person in the entire history of this channel 09:13:07 and i have always enforced only ONE RULE. you can talk about any subject what so ever 09:13:22 mark4: I recall suffering quartus and asau for years 09:13:24 i rarely even police HOW you talk about it 09:13:40 omg i forgot about them lol 09:13:46 couple of nitwits 09:13:58 they left of their own accord yes? 09:14:21 I particularly enjoyed being muted/kicked by quartus for ridiculing his efforts at something 09:14:31 nah, someone nuked asau iirc 09:14:48 if an oper in here takes exception to someones BEHAVIOR then thas one thing. getting anal retentive about "this channel is about forth only" would piss me off lol 09:14:58 nuked? 09:15:08 mark4: well, yeah: since forth can implemented uympty wats 09:15:26 mark4: I think CRC may have finally banned him. 09:15:41 he was ANTI forth in every way 09:15:41 well he was a disruption lol 09:15:46 yup 09:15:47 he was a dickweed 09:15:57 but in general i dont silence opposing opinions 09:16:12 but he was annoying lol 09:16:21 forth is not the penultimate and C isn't the antichrist, although I might nod a lot at OO anything ;-) 09:16:45 Correct. THe opinions can reveal bias, or even pop out an AH-HAH! moment 09:17:09 oop is not bad. oop is bad in the same way GOTO is bad. when you treat it as the ONLY WAY TO GO or are foced by there being no other option, THEN it is bad 09:17:14 (and frankly, lotsa folks need AH-HAH moments in their lives) 09:17:24 bingo 09:17:38 oop is a tool, any tool when used correctly is good 09:17:50 c++ is therefore just outright bad in all cases 09:17:55 nuff sed 09:18:00 I've never even worried about GOTO, and I worked with cp/m.. Folks just gotta' have some goddamned restraint. 09:18:05 java oop is actually nicely done 09:18:11 * PoppaVic chuckles 09:18:49 Forth, as-is, is a better example of useful OOP than anything else you will find. 09:18:51 and java does not NEED to be slow, even for GUI type games. take one look at minecraft! 09:19:12 PoppaVic: I claimed for years that forth was MORE oop than anything else i ever saw 09:19:21 if you want OOPificated code forth does it better 09:19:23 object, verb. Done 09:20:18 all that class stuff is just... baah.. 09:20:37 i have to go break into the libncurses sources now and try to figure out the format of the new 256 color xterm terminfo file. he doesnt really give a good description of that 09:21:04 Zarutian: it can be either a well designed solution OR the millstone around your neck. usually the latter 09:21:05 heh 09:21:21 Zarutian: are you implementing a forth btw? 09:22:06 mark4: slowly extending a ported version of eForth (it doesnt use x86 or arm code words, runs ontop of a dualstack virtual machine) 09:22:52 Zarutian: do you know how to code x86 asm well enough to read it at all? if you can get your head around forth even a little then ASM would be trivial for you, asm is not really difficult 09:23:09 i would highly recommend learning it at least enough to read it with confidence 09:23:42 mark4: I rather not read terrible x86 assembly. Assembler isnt that hard for my, it is just x86 has, is and allways will be terrible 09:23:59 i LIKE the simplicity of efort but its not really efficient 09:24:40 Zarutian: actually the terribleness of x86 asm is a result of historical crap that no longer applies when not doing 16 bit 09:24:53 and with 64 bit its no longer even register starved the way it used to be 09:25:11 and if you look at the instruction encoding SANELY it is actually very VERY well engineered 09:25:20 mark4: nope, it is still fucking terrible. 09:25:23 sanely is "in octal" 09:25:27 there are so many flavors of asm it's embarassing.. But wait! Add terrible macros and even worse - linkers 09:25:47 and the instruction encoding is not well engineered, regardless of the octal fetish of its designer 09:25:58 Zarutian: in what way? the move eax, ebx can actually mean move eax INTO ebx :) 09:26:03 thers actually a direction bit lol 09:26:39 Zarutian: every time arm comes out with a new chip they have to totally reinvent their instuction encoding, drop this opcode or that opcode or repurpose it etc etc etc 09:26:55 intel simply takes the opcode encoding design they already have and extends it 09:27:12 they did repurpose one opcode for 64 bit tho i think, forget what that was 09:27:32 x86 is orders of orders of orders of magnitude simpler to extend than arm 09:27:36 well, intel still has to do the same thing arm does. ARM is slightly better than Intels designs but not by much 09:27:47 and dont forget arm has arm, thumb, thumb2, aarch64, jazell... 09:27:54 * PoppaVic chuckles 09:28:33 Zarutian: i MUCH prefer arm asm to x86 but i still like x86 asm more than C or c++ (ick) 09:28:57 a lot of those extended instructions are things that would be better at home as an aux io devices 09:29:04 but aarch64 is an abomination, they took out EVERYTHING that made thumb2 beautiful and threw it away 09:29:05 ..but wait! Let's design a forth-assembler! again. yet.. still! ;-) 09:29:27 Zarutian: actually there are hundreds of opcodes in x86 that i would never use 09:29:33 on that i agree 09:29:51 PoppaVic: i have to implement an x86_32 and a thumb2 assembler 09:30:02 its been the thorn in my side for 17 years 09:30:17 thumb2 can't be too horrific 09:30:34 yeah, why the fuck are those opcodes there? A good cpu design would have opcode space where the histogram of used opcodes in most program would flatish 09:30:36 no. thumb2 was the only time arm got it right 09:30:38 period 09:31:21 would be* 09:31:49 its called competition. crap they are adding an opcode to make coffee! we have to add a coffee opcode too! 09:32:17 personally i think ALL the floating point address space should just be DUMPED 09:32:23 and that includes all the MMX and SSE opcodes 09:32:31 rm -rf / 09:32:48 do all that crap on the GPU lile pukevidia said 09:32:59 middle-finger-vidia 09:33:33 maybe in 40 or 50 years intel might actually make a gamers GPU that can ALMOST compete with AMD and nvidia 09:33:47 tho they say they are releasing one for desktops next year 09:33:50 pffft 09:34:42 oh lol my T4 forth DOES use neon opcods to do a faster version of /mod lol 09:34:44 oopts 09:35:11 i think in over 30 years of coding thats the only time i did anything with an FPU 09:36:45 I usually do #define float COMPILE_ERROR and #define double int64 09:37:31 usually I can get away with using fixed point or scaled integers 09:37:51 scaled integers is the way to go imho usually 09:37:54 if not then I use A PROPER FUCKING NUMERICAL TOWER, like Scheme provides. 09:38:51 like at work where im calculating mAs (milli amp seconds) the AMPS could be 1.25... so i just scale it up by 100 mAs = (125 * time) / 125 09:39:12 tho that mAs usually has LOTS of other mAs added to it and i only do the division once :) 09:40:11 so that thing over there draws 1.25 amps, this over here draws 2.1 amps... 125 * 210 * time then divide the result by 100 09:40:33 or something 09:40:34 meh 09:40:40 i got it right at work :P lol 09:40:46 hehehe 09:40:48 anyway i have to go pay my motel bill... 09:41:05 yeah, I must too soon ride for the saltmine 09:41:41 its nice to be working an actual CODING job again... but living in a motel kinda sucks lol 09:41:58 if I do need to have floating point numbers then I use one composed of arbitrary precision integers (mantissa exponent mantissa-base exponent-base) 09:42:34 the cortex cpu were using in this product has a built in radio but no built in FPU :P 09:42:36 mark4: a job away from home or? 09:42:48 im in alpharetta ga 09:43:09 nice. Radio that is fully or even just partially SDR or more speciailized? 09:43:13 my home of record is indiana. was liging in dallas tx for years, moved to NC about a year ago... 09:43:18 ]im kind of NFA lol 09:43:20 paid to program? wow.. I'd be clean every day - and charge 3-4x as much hourly 09:43:31 it can do mesh networking 09:44:00 im earning $45 an hour but saving very little even thogh im not spending like a payday millionaire 09:44:19 im not getting any per-diem or i would definately be making bank right now 09:44:22 anyway brb 09:44:23 mark4: what kinds of protocols? XBee or such? Or can you define it yourself? 09:44:44 its a software radio. you define 09:44:46 brb 09:44:51 neat 09:45:47 I must tell you about an Disruption&delay Tolerant Network bundle routing protocol that you might be interested in. 09:57:16 lol im not acutually developing code for the radio itself 09:57:25 and im sure the people who are know all that stuff 09:57:33 this is in a water meter by Landis + Gyr 09:57:44 who has 8256928586 yeasrs doing power metering :P 09:58:33 my job basiclaly engtails calculating batter drain because the hardware does not have a volt meter built into it. 09:59:08 so im calculating a mAh drain over life of battery against a known capacity so we can issuen "hey change the battery already" warnings 09:59:36 hmm write x86 assembler... play minecraft.... write x86 assembler... play minecraft???? 09:59:39 decisions decisions 10:00:04 mark4: Write an x86 assembler in Redstone! 10:00:06 I ain't had a computer game in decades - I vote "go reload some ammo" 10:00:12 tho im actually also in the middle of a reverse engineer of an old dos game written in forth 10:00:26 john_cephalopoda: thats evil lol 10:00:48 PoppaVic: actuallyh i need to buy some brass, powder and primers 10:00:55 i have three "Lee Loaders" here with me 10:00:57 if you know what those are 10:01:51 john_cephalopoda: ive not messed with redstone, thats a hardware problem :P 10:02:29 john_cephalopoda: you know the guy who wrote minecraft sold it to microsoft right? do you know how much money he got? 10:02:30 I love my lee cast-iron turret, yes. 10:02:48 PoppaVic: look up LEE LOADER> its a small handheld thingie 10:02:52 alas, I gotta' drive near an hour anymore to shoot in friggin' sandbox-wasteland 10:03:01 PoppaVic: where do you live? 10:03:07 western WA 10:03:12 cool 10:03:15 sorrt, eastern 10:04:47 ..and I still need to goddamned bed the mauser and find someone to install that winchester-style safety.. I refuse to dremel on the bolt. 10:05:31 my father used to sporterize mousers, he would shop off the bolt and weld a new one that drops down instead of sticking out sideways 10:05:38 you could never tell the new one was welded on 10:05:39 EVER 10:06:59 mark4: I picked up a BSA mauser, refinished the stock; bedding is being put off as my tools today are vastly limited, and I want that 250$ dakota safety install so I can use a scope and still remove the bolt - otherwise I will simply ignore the safety entirely. 10:07:07 bsa/GSA 10:07:53 Nice metalwork, but the stock was a nightmare - it really needs a new stock, but.. Not until I can shoot a 1/4" group at 100yd 10:07:58 how did you refinish? 10:08:24 stripped the nasty poly; sanded heavily; linseed oil in about 8 or so coats. 10:08:35 if thats not sporterized your talking iron sites? 10:09:00 PoppaVic: do this EVERY DAY. take a 50/50 mixtuer of linseed oil and mineral spirits 10:09:11 GSA sporterized with cleaner action, stepped/folding leave-sights and drilled for a scope. 10:09:27 dip your finter in the linseed oil and rub your hands together and then rub the stock for about 15 to 20 minuts wiht your hands. all over 10:09:29 do that every day 10:09:51 I got Leopold mounts, but I hate trying to align the bastards AND fighting the original safety 10:09:57 i put a scope on my adl-700 (30-06) but wish i had not done so 10:10:27 unfortuntely my savatge 111 shoots about 2 inches to the left and 3 inches down at 25 yards 10:10:29 literally 10:10:35 need to get that fixed :( 10:10:38 did that from the factory 10:10:38 well, my eyes are always worse; and I'm nearsighted, but a scope usually lets me drop them inside an inch at 200, or I ditch it 10:10:42 apparently iforth and bigforth do n+1 iterations with `FOR` 10:10:47 which is why gforth does it 10:11:13 WilhelmVonWeiner: thats the problem with FOR, some fotrths do N itteratioins, others do N+1 10:11:21 forgot to mention taht. ty for bringing that up 10:11:24 mark4: hmm, left and down?? that's the sights for sure.. god bless mildot scopes ;-) 10:11:32 nope. replaced sites 10:11:33 but Anton is ANS cult, as he prefers swiftForth and VFX forth's `?` behaviour 10:12:10 mark4: it's "alignment", and that speaks to the sights being too high and right 10:12:58 anyway, off to the saltmine - laters. 10:13:01 10 for r@ . nxt in x4 does 9 8 7 ,.... 0 10:13:26 PoppaVic: my father had a class 7 FFL for a while :) 10:13:29 nothing he cant fix 10:13:31 cant fix this 10:38:58 --- quit: gravicappa (Ping timeout: 246 seconds) 11:05:45 Nice. I realized that the way keep up with where I am in the input stream was not done in a way that was going to be friendly with my file system ideas. 11:05:55 I re-wrote that today, and now it's going to fit in very very nicely. 11:26:38 I can see why "10 Gs is simpler than a loop" 11:27:01 makes following the logic so much simpler, and really, I have the memory to spare 12:05:19 --- quit: dys (Ping timeout: 272 seconds) 12:13:19 Ok, so I still have the null word operational, but I added a variable max>in, and if >in reaches max>in that also terminates interpretation. 12:14:58 --- join: dys (~dys@tmo-103-120.customers.d1-online.com) joined #forth 12:16:25 MAX>IN defaults to my disk/heap page size. 12:16:43 But you can change it to do whatever you want. 12:18:32 --- quit: pierpal (Read error: Connection reset by peer) 14:41:24 mark4: #3son is the machinest w/o access to tools anymore; and I'll be goddamned if I pay these "gunsmiths" $250+ to install a $250 safety on a $250 rifle. 15:07:58 ,LOL 15:08:28 my father has a smithy mill drill lathe but he dropped it moving and the ways are very VERY probably bent 15:08:38 with the right tools i can fix that 15:09:07 heh. Ouch 15:19:57 --- join: yrm (~yrm@KD182251078191.au-net.ne.jp) joined #forth 15:49:28 --- join: nighty- (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 16:18:41 --- quit: yrm (Quit: yrm) 16:38:54 --- join: yrm (~yrm@KD182251078191.au-net.ne.jp) joined #forth 16:54:35 --- quit: yrm (Ping timeout: 245 seconds) 16:56:45 --- join: yrm (~yrm@KD182251078191.au-net.ne.jp) joined #forth 17:01:20 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 17:02:04 --- quit: yrm (Ping timeout: 255 seconds) 17:03:06 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:17:33 --- join: yrm (~yrm@KD182251078191.au-net.ne.jp) joined #forth 17:43:41 --- quit: yrm (Quit: yrm) 18:08:43 --- quit: tabemann (Ping timeout: 250 seconds) 18:11:32 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 18:13:37 --- quit: MrMobius (Ping timeout: 255 seconds) 18:13:37 --- nick: [1]MrMobius -> MrMobius 18:23:45 --- join: yrm (~yrm@KD182251078191.au-net.ne.jp) joined #forth 18:35:27 --- quit: yrm (Quit: yrm) 18:39:51 --- join: tabemann (~travisb@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 19:06:05 --- quit: proteusguy (Ping timeout: 250 seconds) 19:06:31 --- join: reepca (~user@208.89.170.37) joined #forth 20:16:46 --- join: gravicappa (~gravicapp@h109-187-233-79.dyn.bashtel.ru) joined #forth 20:17:56 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 20:18:15 hey guys 20:18:36 hi 20:20:01 good evening 20:22:17 hi tabemann, crc 20:52:30 --- quit: tabemann (Ping timeout: 245 seconds) 21:25:32 --- join: tabemann (~travisb@2600:1700:7990:24e0:a106:f1e:e4eb:7e2d) joined #forth 22:17:17 --- quit: dddddd (Remote host closed the connection) 22:32:49 --- quit: gravicappa (Ping timeout: 255 seconds) 23:59:59 --- log: ended forth/19.02.23