00:00:00 --- log: started forth/19.03.28 00:01:47 ttmrichter: you make a fair point with your left/right thing - though personally, i detest the whole thing about trying to pigeon hole anyone by a binary choice 00:05:46 but then politics in europe is a lot more complex - britain very nearly has a 2 party thing, but not quite, and the division between the parties not strictly on left/right grounds - both hold traditionally left and right policies after all 00:06:34 in most of the rest of europe ... ooh boy... way more complicated :) 00:09:36 since i don't consider democrats 'left', using it as a metric in the US seems particularly weird - it's basically a choice of right or further right :) 00:10:31 Yeah, as a Canuckistani I'm pretty baffled by the binary nature as well. 00:11:01 And all the major parties in the USA would be center-"right" to Nazi by Canadian standards. 00:11:50 indeed 00:14:46 anyway - i said the other day that i try to avoid talking politics in tech forums :) - and that's my third time in as many days :) - will try to go back to adopting the default stance 00:16:34 Heh. 01:41:46 YANG GANG 2020 01:41:56 that's all I have to say on the matter 02:04:28 --- quit: ashirase (Ping timeout: 246 seconds) 02:04:55 I'm sure I'd be slapping my thigh if I had any clue what that actually meant. 02:07:20 yang gang is a chinese politician - i guess he's going to sort out everything in 2020? 02:07:41 strange to find such support for the communist party of china here though 02:09:31 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:12:49 How is he going to get past the current jackass in power? 02:12:59 I mean dude set himself up as president for life, practically. 02:13:37 i predicted that the whole russian investigation was going to backfire big time - and guess what? 02:17:23 it's weird how the plugged ins don't even care that CNN has been lying to them every day for 2 years 02:19:42 can't say i've ever watched it? any good? 02:21:34 i don't tend to watch much tv tbh - it just reminds me of work - i get paranoid every time i see a glitch and think, 'shit, was that my fault?' 02:26:11 the_cuckoo: he's not Chinese 02:26:39 Andrew Yang 02:26:39 yang gang is :) - andrew yang isn't :) 02:26:49 I see :| 02:27:05 it was what google told me :) 02:27:42 my little assembler program posted yesterday works. Now to delete it without a trace and write it again? 02:28:35 --- quit: proteusguy (Remote host closed the connection) 02:39:43 fwiw, according to his wikipedia page, yang gang is currently serving a 12 year sentence for taking bribes - seems to me he'd be a perfect fit for western politics :) 02:44:57 $1,000 a month in bribes? 02:45:59 Yang was accused of abuse of power, taking "massive bribes", and adultery, and was expelled from the Communist Party of China.[2] On January 20, 2016, Yang Gang was sentenced to 12 years in jail for taking bribes worth 12.16 million yuan (~$2.0 million), $11,000 in U.S. dollars, and other assets worth 1.56 million yuan 02:47:07 somewhat over that - unless you only consider the dollars he directly received as the crime :) 02:57:51 --- join: wa5qjh (~quassel@175.158.226.110) joined #forth 02:57:51 --- quit: wa5qjh (Changing host) 02:57:51 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 03:20:47 --- quit: wa5qjh (Remote host closed the connection) 03:22:52 --- join: wa5qjh (~quassel@175.158.226.110) joined #forth 03:22:52 --- quit: wa5qjh (Changing host) 03:22:52 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 03:52:18 --- quit: wa5qjh (Remote host closed the connection) 04:11:57 Just seeing "adultery" included in a list like that makes me grimace. That's a personal life thing and is really no one's business - we shouldn't be judging people on such things when we have no clue as to the circumstances of their personal life. 04:12:46 That stuff's between them, their spouse, and whatever third parties may be involved. 04:13:16 adultery is an indication that someone has bad character though 04:13:23 why wouldn't you take that into account 04:14:07 See above - without knowing the circumstances of their life you can't really draw that conclusion. 04:14:41 I think "it depends." 04:15:01 How has the other spouse behaved? What sort of "accomodations" have the two of them made? Etc. etc. 04:16:18 Adultery could be an act of deceit and dishonesty. Or it could be a symptom of two people making the best of a difficult situation. 04:17:27 And I certainly don't trust the news media to give us an accurate picture of such a thing - I expect them to do everything in their power to sensationalize it and make it the juiciest story they possibly can. 04:20:13 --- join: wa5qjh (~quassel@175.158.226.110) joined #forth 04:20:13 --- quit: wa5qjh (Changing host) 04:20:13 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 04:20:34 well i agree with you there 04:20:59 I've just almost given up completely on the media. :-( 04:21:17 Which is a shame, because I always took it seriously and tried to pay good attention when I was younger. 04:21:31 It's a sad thing - to feel like there is no really trustworthy source of news. 05:14:03 --- quit: wa5qjh (Ping timeout: 250 seconds) 05:55:03 revisiting color: I prefer to edit with normal text, but find color useful when reading the source later (I find it helpful to more easily identify structure and word types when used with color) 05:56:01 I generate HTML w/colorized text for this purpose 05:58:17 e.g., http://forth.works/5c190df9cfe9dd8049af6773d49102fd.html is generated from http://forth.works/5c190df9cfe9dd8049af6773d49102fd 06:01:43 --- quit: rprimus (Ping timeout: 250 seconds) 06:04:33 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 06:05:33 KipIngram: i've gone the other way - was never interested when i was younger - i'd pick up my news through the bbc world service morning news, would never buy a paper (other than to attempt the crossword every now and then - i thought it might attract women - didn't work, but i kinda enjoyed doing them anyway :)) 06:06:30 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 06:07:00 started paying attention a few years ago, and while it was a bit topsy turvy, there was some optimism - now, there's little of that left - just pessism and argument and dispute 06:07:17 makes me wonder if it was ever worth the effort 06:10:57 and the one thing that really grates is the whole 'let's divide ourselves and everyone into two camps' thing :) - we're one group with many disagreements within itself - dividing like this spreads as they too divide on specific points, and this happens on both sides 06:11:12 you now have many divisions than have actual problems 06:14:26 can we please talk about real problems here 06:14:35 like i have a dentist appointment today and i hate going to the dentist 06:14:44 :) 06:15:12 i used to really hate doing that too 06:15:59 my current dentist has an appreciation of malt whiskies, so at least we have something to talk about before the pain begins :) 06:19:29 my teeth suck and i'm at the point where pretty much every time i go in there's probably an old filling that needs to be replaced 06:21:39 we should come up with something better than teeth - iTeeth or something 06:22:09 didn't james bond already come up with something better with the jaws character? 06:22:50 that is true, but i was thinking of something more... tech... than just the ability to bite better 06:23:27 imagine - chewing without expending any physical energy at all 06:23:52 there must be someone who looks at that and goes "hmm - sounds cool" - right? 06:24:02 so just release some acid, like a venus fly trap 06:24:58 well, actually - you do have acid in your stomach - maybe you could some how use that to power the iTeeth? 06:27:45 --- quit: CORDIC (Ping timeout: 268 seconds) 06:29:22 --- quit: dave0 (Quit: dave's not here) 07:25:28 --- quit: tabemann (Ping timeout: 250 seconds) 07:55:21 ttmrichter> I mean dude set himself up as president for life, practically. 07:55:23 lol what? 09:11:40 zy]x[yz: i interpreted to mean as a result of the investigation - for it to turn up empty (on him at least and so far), his position has been strengthened 09:36:39 trump has also removed all term limits 09:39:56 lol what? 09:45:37 * PoppaVic facepalms... 09:45:51 people are so toopid 09:59:56 rain1: no he hasn't 10:03:54 rain1: that would require a constitutional amendment, which needs a constitutional convention or by a 2/3 vote by both the House and Senate, and ratification by 3/4 of the states 10:22:35 rain1: Where did you hear that? Whereever it was, you should stop consulting that source. 10:31:19 * the_cuckoo guesses that was meant as a joke 10:36:58 yeah but ttmrichter's bullshittery still hasn't been accounted for 10:38:32 do you think he'll lose the next election? 10:39:25 disturbingly, yes i think there's a chance. how is that relevant? 10:40:59 do you think he'll survive a second term? 10:41:20 it might just be that he'll be president for the rest of his life 10:41:32 oh, please 10:41:36 :) 10:42:11 was just joking of course - black and inappropriate of course 10:42:47 i know ttmrichter is deranged enough that that's likely not what he meant 10:42:53 :) 10:43:31 well, i don't think his current position is good for anyone, let alone himself 10:43:38 (trump that is) 10:44:09 seems to me like it's been good for a lot of people 10:44:44 possible - i only see it from the outside, in terms of international relationships 10:45:38 hasn't been so good for bump stock owners lately. that's a straight up unconstitutional injustice that's been done 10:46:32 so who do you think has gained? 10:48:11 the worst thing that comes out of the trump presidency is lack of respect for online gamers imo 10:52:51 ... why is that? 10:55:20 oh - has he started a crusade against computer games? 10:56:24 rain1 is trolling you 10:57:16 i've gained, for one. the government stole less of my income this year, and of what they stole they withheld less of it from my paycheck 10:58:16 i would say the exposure of the state of our media as completely untrustworthy is a gain for everyone overall 10:59:07 surely record low unemployment is good for those people who were previously unemployed and aren't now 10:59:49 --- quit: pierpal (Quit: Poof) 10:59:58 backing out of the paris accord was pretty great 11:00:08 --- join: pierpal (~pierpal@host161-197-dynamic.245-95-r.retail.telecomitalia.it) joined #forth 11:00:38 so all in all, you think he's doing the right thing? 11:01:07 i think he's not the demon he's made out to be. i don't think he's perfect 11:01:42 as i mentioned earlier, the bump stock ban is probably one of the most egregious constitutional violations of my lifetime 11:02:12 but it's in line with the left's confiscation goals so of course they won't hold his feet to the fire over that one 11:05:13 maybe if americans stopped shooting each other they could keep their guns 11:08:07 completely beside the point 11:09:03 if you want to ban something, congress should write a law to ban it. the bump stock ban was basically royal decree, completely circumventing how our government is supposed to work 11:43:36 --- quit: nighty- (Quit: Disappears in a puff of smoke) 12:26:54 Hmmm. According to this document: 12:26:56 http://stackosaurus.com/figforth-1.3.3.1/GUIDE.TXT 12:27:15 FIG Forth *did* search the CURRENT vocabularly during FIND, but did so AFTER searching CONTEXT. 12:30:10 Well, that addresses my biggest complaint - words I just defined via factoring would be accessible, without anything having to be done to make them so. 12:30:39 It would not, however, prevent a forgotten word tucked into one of the CONTEXT vocabularies from overriding a definition you made just a few lines up 12:31:31 That still bothers me a lot. Is there any other language in which you can define something in the SAME FILE / MODULE / WHATEVER and not establish that binding? 12:51:46 --- quit: gravicappa (Ping timeout: 250 seconds) 13:09:27 KipIngram: might be misreading you, but surely c would reject that too? 13:09:32 #include 13:09:34 int fopen( char * ) { return 0; } 13:09:36 int main( ) { return fopen( "blah" ); } 13:09:47 results in a failure at compilation time 13:09:49 Well, that would be an error in C, wouldn't it? 13:09:58 Multiply defined symbol. 13:10:06 yup 13:10:15 Would it be compile time or link time? 13:10:19 Actually link time, right? 13:10:38 When it tried to pull in the library? 13:10:46 compile with gcc 13:10:56 Yeah, it does both at once kind of. 13:11:09 Anyway, my complaint was not that Forth allows the redefinition. 13:11:31 My complaint was that under some circumstances it can use a remote definition, even when your new definition is sitting right there above the references. 13:11:33 yeah - i get that - it's getting the wrong one 13:11:39 yup 13:11:43 That just seems very odd and confusing to me. 13:12:00 I modified my system yesterday to search the CURRENT vocabulary FIRST. 13:12:18 So if you have defined a word right there in the same little region, it will use your new definition. 13:13:13 pros and cons to both approaches i guess - seems to me that if the system isn't going to use it, it should reject the second definition? 13:13:39 I doubt many Forth folk would like that. 13:14:05 probably not - it conflicts with the general ability to write and rewrite as you go 13:14:22 One of my concerns yesterday (when people were advocating leaving CURRENT out of the search completely) was that it flies against factoring. 13:14:35 You factor a word, but the upper word can't find the lower words. 13:14:46 Unless you explicitly add that vocabulary to CONTEXT. 13:15:01 In other words, that's saying that you MUST put the vocabulary in CONTEXT if you want to be able to factor. 13:15:04 I dislike that. 13:15:06 a namespace concept seems applicable here 13:15:23 It turned out that FIG did solve that problem, by searching CURRENT *after* CONTEXT. 13:15:36 But that doesn't keep your "right there" definition from getting overridden. 13:15:45 I'm leaving mine like I have it - CURRENT first. 13:15:50 Then the CONTEXT stack. 13:16:30 I think namespace ideas are applicable too. 13:16:53 And I seriously doubt there are many languages out there were names you define in the *immediate vicinity* are not in your namespace. 13:17:18 can make for quite clean separations of contexts i think 13:17:50 the_cuckoo: Folks yesterday were citing metacompilation as one example of a time you want the CURRENT vocabulary excluded. I still haven't thought that through all the way, but I am willing to provide an OPTION to suppress CURRENT from the search. 13:17:56 I just don't want that to be my default behavior. 13:19:08 not necessarily excluded, could just appear in the search order after some other vocabulary 13:20:43 my own approach is a bit too loose in this regard - i have a namespace concept (vocabs) which give a loose grouping for words - but once they belong to that vocab, they always belong to it - hence you can rewrite them, but their semantics shouldn't change 13:21:32 feel it's consistent, but very easy to screw up entirely 13:21:33 --- join: dave0 (~dave0@223.072.dsl.syd.iprimus.net.au) joined #forth 13:22:02 hi 13:22:08 hey dave0 13:22:32 hi the_cuckoo 13:27:21 good evening dave0 13:28:59 hi crc 13:54:06 I've made some small improvements to my source->HTML export/colorizer 14:03:41 it now preserves the commentary and better identifies immediate & primitive words. Examples: http://forth.works/2cbbdc8342964e9f9378b1aa364037b9.html and http://forth.works/RetroForth.html 14:04:37 Hallo Forth 14:05:24 hi WilhelmVonWeiner 14:07:29 --- quit: rprimus (Ping timeout: 244 seconds) 14:09:50 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 14:12:55 zy]x[yz: Hu Jinping has set himself up for president for life, effectively. What's the bullshittery? 14:15:30 it's really confusing to track what country you guys were talking about at the time 14:25:30 ttmrichter: :) 14:39:11 Be nice the the_cuckoo. He wears MAGA. He can't help it. 15:01:32 ttmrichter: superglued to him as a prank or? 15:06:02 ttmrichter: i will indeed - but that was funny :) 15:40:10 ttmrichter: Regarding Hu Jinping setting himself up for president for life: doesnt that mean that will then be rather short? 15:40:49 Zarutian: It depends. He seems to be as savvy as Mao for building up a power base. 15:40:59 So the question is ... how savvy are the people opposing him? 15:41:53 It doesn't really matter, though. The Mao Dynasty is the short-lived dynasty immediately after the downfall of the long-lived one that led to national collapse. 15:42:05 It's happened often enough in Chinese history that there's a novel about it. 15:42:37 The general pattern is a long-lived dynasty ends in a whimper of corruption and incompetence. 15:42:45 (Qing.) 15:43:01 There's a period of turmoil with splinter states and internal strife. 15:43:07 no, I mean, such figgures seem somehow get more accident prone the more 'power' they gather and I am not talking about opposition trying to assasinate him or such. 15:43:19 (Chinese Civil War culminating in the warlords of the Guomindang.) 15:43:41 Out comes a ruthless, brilliant leader to found a new dynasty. 15:43:44 (Mao.) 15:43:49 Most blatant such example is the first Pharao being trampled to death by a startled hippo 15:44:19 That new dynasty collapses in on itself from the very forces that brought it into being. 15:44:22 (???) 15:44:32 Finally a new, long-lived dynasty takes hold. 15:44:45 The Mao Dynasty is the short-lived violent one. :D 15:45:10 There are loads of people who broke that pattern. 15:45:16 Mao lived to a relatively old age. 15:45:37 he started out doing that stuff reletively old iirc 15:46:23 Eh? As a revolutionary he was quite young. 15:47:13 that I know but how long was he actually 'powerfull'? 15:47:30 He was a major power by the time of the Nanchang Uprising. 15:47:47 Not cemented as the ultimate leader yet, but clearly on a meteoric path. 15:48:35 so were many others if I recall what many had written about the period 15:49:08 Many craters so to speak 15:49:33 By the Long March he was basically the power around which the other powers circled. 15:51:33 The guy was vermin ethically, a gibbering moron economically, but when it came to power and tactics he was really quite good. 15:52:10 do you like something? IF true exit THEN somethingelse? IF true exit THEN false or something? IF true ELSE somethingelse? IF true ELSE false THEN THEN ? 15:53:05 exit's vs else's 15:54:45 ttmrichter: yeah, I recall my ruler-classifications that he pretty much falls into the one that is called a 'power-mad gorge-rat' category. 15:55:18 That's about right. 15:57:17 I asked someone I knew once (he's dead now) who was a cadre of Mao why he followed an obvious glory-hound who didn't give two tosses for the people. 15:57:21 The answer was chilling. 15:57:30 "He fed us." 15:57:43 As bad as Mao was ... the alternatives of the time were WORSE. :-o 15:58:11 The Qing were downright crazed. 15:58:16 an nifty military man you want to take personal charge at attacking powerfull enemys. But like incidentary ambo you want to be sure of proper self destruction. 15:58:44 The Guomindang were busy infighting by killing each other's peasants. 15:58:59 And Mao was feeding and arming those very same peasants. 15:59:04 OF COURSE he had fanatical following! 16:00:26 so basically food love? 16:01:01 Well, love for, you know, living instead of dying of starvation. (The irony of the later Great Leap Forward being deliciously tragic.) 16:01:14 --- part: PoppaVic left #forth 16:02:29 ttmrichter: right. 16:03:03 This is something activists who come here trying to get converts don't understand. 16:03:09 Yes, this government is shit. 16:03:19 It's utterly and completely horrible with very few redeeming qualities. 16:03:30 It's still THE BEST GOVERNMENT THE CHINESE HAVE HAD IN THEIR ENTIRE HISTORY. 16:03:48 So when outsiders come in to tell them how shit their lives are, it falls on deaf ears. 16:04:00 yeah, that tells you something. 16:04:01 There's ways to sell messages, but the way chosen by most activists is not that one. 16:06:26 most Chinese I have read stuff by are quite ambivaliant about their government. So long as you stay out of 'trouble' you can live your life mostly without interference. 16:07:34 though there is bribery and such by and at Chinese officials rising 16:08:19 heck some of the 'purges' are basically some more but deviously corrupt officials getting rid of the more blatantly corrupt ones. 16:29:27 that sounds like a good way to go through life. "just don't look at them and they won't mess you up and your family" 16:49:56 zy]x[yz: sadly, it usually does not last. Why? Because of the greed of the powerfull. 16:51:14 Sounds better to me than "Look out there's a guy with a gun!". 16:51:24 lol 16:51:50 you're a moron if you think that's what the us is like 16:53:15 naah, more likely that USA is more like those "Florida MAN! The worst superhero!" newsstories indicate. 16:54:04 Irony, apropos of nothing in particular, is my very favorite thing. 16:55:06 * Zarutian recalls the local news story where a tourist managed to find a new way to be rescued. Grandma off an iceberg that drifted out to sea. 17:04:05 Oh, that was local to you? 17:04:08 I heard about that one. 17:04:39 Ok, I'm fretting over the details of this display system (based on rdrop-exits). 17:04:46 There are lots of things you could do to make it fast. 17:04:58 Like TYPE could CMOVE the data into the local display buffer. 17:05:18 Except then things like carriage returns and so on - control characters - wouldn't be interpreted until they were sent to the real display. 17:05:32 And that's not what you want, because those actions affect where the NEXT character goes. 17:05:56 As far as I can tell the only way to get a true emulation of the behavior we're accustomed to is to test every character and see if you need to do anything special. 17:06:20 So you either accept lower performance, or you accept a "non-standard" way of doing things. 17:24:09 --- quit: john_cephalopoda (Ping timeout: 240 seconds) 17:37:56 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:52:52 KipIngram: Couldn't you pre-process, in effect, scanning forward to where special handling needs to be done and then rapidly moving the data that's a single blob? Then you'd handle your special case and do that again and so on. 17:53:47 You could even scan forward building a list of extents, most built up of just a pointer and a count, some with the special handling passes, then handle each extent the fast way. 17:57:08 Yes, I could do that. 17:57:22 But that's still much more expensive than a single cmove. 17:57:36 But, looks like the cmove just isn't good enough, so... 17:57:57 It's cheaper, however, than a character-by-character approach. Seems a decent middle ground. 17:58:08 Yes. 17:58:29 Anything to avoid having to call the OS syscall once for each char. 17:58:31 For sure. 17:59:07 If I were stark raving nutters I'd say parse the string at creation (compile or other) time into a rope of extents that consist of the code pointer to handle that extent. 17:59:21 Most extents would be push pointer push count cmove. 17:59:35 Some would be manipulating the inner state to position the next cmove. 17:59:40 I also might be able to do something at the point in time where the process originally writes its buffer. 17:59:46 In fact, that probably would work fine. 18:00:22 Oh, wait - I think I know how to do it. 18:00:26 Potentially at least. 18:00:27 (I've always found "strings" a bit dubious of a notion precisely because of the whole positioning issue.) 18:00:47 We're already scanning the buffers during the comparison pass, to identify where the "differences" between the new screen and old screen are. 18:01:09 A test inserted there would at least not require a whole new loop. 18:01:18 So you could dynamically build the code as you do that scan. 18:01:29 Right, it's a possibility. 18:01:45 One of those two things - do it at process output time, or do it like I just said, is probably the right answer. 18:02:13 I like processing at input. 18:02:27 Gives you an object you can hand around at need, invoke multiple times if you like, etc. 18:03:03 The cost of generating that required sequence of code is paid for only once (which you'd have to pay for anyway), but potentially can be used several times. 18:04:42 --- join: nighty- (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 18:08:50 --- join: rdrop-exit (~markwilli@112.201.169.15) joined #forth 18:09:20 Greetings Forthlings :) 18:10:29 c[_]~~~ 18:20:10 --- join: X-Scale` (~ARM@117.125.166.178.rev.vodafone.pt) joined #forth 18:20:59 --- quit: X-Scale (Ping timeout: 250 seconds) 18:21:00 --- nick: X-Scale` -> X-Scale 18:22:07 Howdy r-e. 18:22:11 Question for you. 18:22:20 Hi KipIngram 18:22:27 Where do you handle control characters (like carriage return) embedded in strings? 18:22:41 Or do you avoid them altogether? 18:23:39 I'm thinking at the moment the best place would be right in EMIT, and whatever got done would get done with respect to the process's local display buffer. 18:24:23 So that by the time we got to the "real display update" that had all gotten flushed out. 18:24:57 I handle all characters, not sure what you're asking 18:25:29 Ok, so normally if we emit a 13, it does something. Depending on the system, it's either a full CR/LF, or at least a CR. 18:25:50 I'm just asking at what point in your full process do you take those considerations. 18:26:09 I'm thinking in EMIT - it would just change where the local process then put characters in its local buffer. 18:26:46 i finally wrote >number ! yay https://termbin.com/j91c 18:26:49 Similar with backspace - it usually backs the cursor up a notch and rubs out that char. 18:27:01 Cool, dave0. 18:27:27 KipIngram: it took me 2 days :-/ 18:28:09 Just a sec 18:29:38 I actually think it has to be done there (in emit). If we just put the character into the buffer and moved on, our buffer would wind up in NO WAY the way it needed to be. 18:29:44 It would be completely wrong. 18:30:23 Are you conflating the handling of a character on input and a character on output? 18:32:15 No. 18:32:26 I'm apparently just expressing myself very poorly. 18:32:32 But I think I know what to do. 18:33:05 Here, I'll try once more. 18:33:20 Suppose my application TYPEd this string: 18:33:38 7, 'A', 'B', 'C', 13, 'D', 'E', 'F' 18:33:52 Where would the 13 get special handling? 18:34:16 And I'm proposing that it's at the point the data is placed in the local display buffer by TYPE (or EMIT, more likely). 18:34:46 EMIT would see that 13 and say "I don't just put this in the next buffer slot. I move down the start of the next row and I'm doine." 18:35:41 What you're describing is the behavior you want for a 13 on input 18:36:04 Yes, but that's not what I'm thinking about. 18:36:08 You also want it on output. 18:36:32 Not necessarily 18:36:39 You can't just treat the 13 as data like all the others. 18:36:47 If you do it will eventually get sent to the OS. 18:36:55 ? 18:37:34 Really? I don't feel like I'm doing THAT bad of a job stating these things. 18:37:53 I'm just not fully coffee'd up :) 18:37:59 It's a simple question - take that 7-character string above. 18:38:08 Exactly how far into the software stack does the 13 exist? 18:38:27 Ok let me explain 18:39:29 Input and output processing are separate things in a full screen interface 18:40:08 Yes. I'm not asking about input at all here. 18:40:55 Let me give an example 18:41:05 That's why I asked the last question in terms of a TYPEd string - that completely takes us away from input. 18:42:19 On output I derive a depiction for each ASCII character 18:43:04 0 preamble Host UI - Character-Cell - Depiction 1|2 18:43:04 1 18:43:04 2 Our default depiction of a byte value in a VDT character-cell 18:43:04 3 uses underlining and boldness to denote byte values that are 18:43:04 4 outside the ASCII display character range. Control characters 18:43:06 5 are displayed as their corresponding "caret notation" character 18:43:09 6 in bold, and bytes that have their high bit set are underlined. 18:43:11 7 18:43:14 8 18:43:16 9 (continued) 18:43:19 a 18:43:21 b 18:43:24 c 18:43:26 d 18:43:29 e 18:43:31 f 18:43:34 0 preamble Host UI - Character-Cell - Depiction 2|2 18:43:36 1 18:43:39 2 byte | depicted as... 18:43:41 3 --------+--------+-------+-----------+------ 18:43:44 4 hex | ascii | underline | bold 18:43:46 5 --------+--------+-------+-----------+------ 18:43:49 6 00..1f | 40..5f | @.._ | n | y 18:43:51 7 20..7e | 20..7e | bl..~ | n | n 18:43:54 8 7f | 3f | ? | n | y 18:43:57 9 --------+--------+-------+-----------+------ 18:43:59 a 80..9f | 40..5f | @.._ | y | y 18:44:02 b a0..fe | 20..7e | bl..~ | y | n 18:44:04 c ff | 3f | ? | y | y 18:44:07 d --------+--------+-------+-----------+------ 18:44:09 e 18:44:12 f 18:44:43 Your example of 13, i.e. ^M, would be depicted as a bold M 18:45:42 That is what displaying a 13 on the screen results in. 18:46:23 i.e. outputing a raw 13 byte to the VDT display 18:46:28 Ok - so that to some extent falls into what I meant above by "avoid them altogether." 18:46:46 In your system, outputing those bytes outputs something visible, but does not have the traditional affect on the cursor position and so on. 18:47:16 So if your application wants a carriage return, you'd use the CR word for that. 18:47:23 What you're describing is the effect of the input of a character 18:48:01 For example, I receive an 8 from key, i.e. a ^H or backspace. 18:48:03 It's also what they do in many systems. GForth, for example. 18:48:22 13 emit puts the ok on the next line. 18:48:30 I perform the behavior of backspacing. 18:48:35 I'm sorry - that's wrong. 18:48:48 It puts the ok at the beginning of the line you were on. 18:48:51 Instead of at the end. 18:48:56 That is a different thing from outputing an 8 to the VDT display. 18:48:56 It DOES the CR. 18:49:24 Gforth is not full screen 18:49:56 AFAIK 18:50:03 So is what I just said a minute ago right? If your application level code wants to move the cursor to the beginning of the next line, it uses CR? 18:50:49 Input processing of a 13 causes the system to go to the next line, yes 18:51:22 What does your application do if it has just printed a line on the screen and it now wants to print the line below that? 18:51:31 What does it do in between to re-position the cursor. 18:51:34 Please forget input. 18:52:06 It calls nl 18:52:17 Ok - good. CR by another name. 18:52:20 Probably a better name. 18:52:24 Definitely a better name. 18:52:49 Ok, so there is no way to create a single string that has that operation embedded in it as data, then? 18:53:03 You print the first string, call nl, print the second string. 18:53:43 Yes 18:53:54 Yes I'm correct or yes there is? 18:54:24 You are correct 18:54:34 Ok - good. That answers the full quesiton. 18:55:18 Cool 18:55:58 Plus some bonus information - the expansion of the control chars to their ^ for is pretty cool. 18:56:53 Thanks, also any byte that has it's high bit set is underlined 18:57:55 I can depict all 256 byte values on the screen that way 18:58:08 Right. 18:58:38 DEPICT converts a byte value into a display depiction 18:59:15 If I point my editor to a binary block, every byte is displayed 18:59:37 :-) That is neat. 19:00:00 be back in 5 19:00:10 If you backspace into one of those 2-char ones, does it remove them both? 19:03:45 2-char ones? 19:05:06 The ones you render as, say, ^M. 19:05:31 I don't render 13 as ^M, I render it a M in bold 19:05:39 I guess the editor actually works with the original byte itself, right? 19:05:48 Yes 19:05:53 And the transition to ^M or whatever happens on the way to being seen. 19:06:26 It happens as part of the rendering done in refresh 19:07:45 When I render a byte with the value 141 (i.e. 128+13) it shows up on 19:07:57 the display as M in bold and underlined 19:08:17 doesn't that foul up your panel widths? 19:08:37 How would you display a whole 64-char line of ^M's? 19:08:59 No it's still only one character cell, an "M" that is bold and underlined 19:09:21 Obviously as 64 copies of ^M but wouldn't that overflow that pretty set of boxes you showed me the other day? 19:09:22 OH. 19:09:30 You don't print the ^ - that just makes it bold? 19:09:35 Yes 19:09:41 Ok, I missed that bit above. 19:09:44 Cool. 19:10:23 Every one of the 256 possible values of a byte has a one-character cell depiction 19:10:33 (see the chart I posted above) 19:10:53 * one character-cell depiction 19:12:57 i.e. a combination of a displayable character, and possible boldness and underlining 19:13:19 13 is displayed as a bold M 19:13:38 141 is displayed as an underlined bold M 19:13:54 The underline tells me the high bit is set 19:15:31 All 256 possible byte values have a single character-cell depiction 19:19:17 brb 19:21:13 back 19:23:42 --- quit: dave0 (Quit: dave's not here) 19:26:40 I think the main point here is that a full screen text UI splits up the handling of the input behavior assigned to a key, from the ouput depiction of a byte. 19:28:38 Well, I think you still could have chosen to take a "position action" on, say carriage return or line feed. You chose not to, and I think what you've described is quite cool for anyone who has frequent exposure to binary data. But I think a variety of different things could be done differently - what you've got is really a "set of ideas." 19:31:32 But you may have other things in your system that depend on all of these things being the way they are. 19:31:42 It's a very interesting approach. 19:31:52 Yes, the details may vary between implementations, but the main point is that input and output effect are not conflated unlike a command line interface. 19:31:57 So I guess you can just move around on the screen with the cursor keys? 19:32:30 I use control keys, my keyboard doens't have cursor keys, it's a 60%. 19:33:10 Well, "conflate" is a negative word - it implies a mistake. It's perfectly possible that someone could WANT the CR and LF characters, when sent successively, to have the same effect as nl. 19:33:52 In fact, you can't get Forth's normal output if you handle the Enter key on the input side. 19:33:54 No conflate doesn't have a negative connotation 19:34:12 To bring together; meld or fuse 19:34:18 If the cursor move to the beginning of the next line when you hit Enter, then that's where your output will show up. 19:34:39 yes 19:37:23 If I'm in the editor pane hitting enter bring me to the next line of that block, if I'm in the console pane, hitting key starts a new line of history. 19:38:04 * hitting the enter key starts a new line of history 19:39:48 In a full screen UI hitting the enter key (or any key for that matter) can result in a range of behaviors 19:43:54 --- join: tabemann (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) joined #forth 19:54:25 For example when I do control-P on the keyboard my focus is switched to the viewport pane (i.e. the one used by the editor), if I hit the escape key I'm returned to the console pane (where the command line and its history are). 19:58:09 So your screen partitioning is woven into your system down very deep, right? 19:58:28 I might want to have several processes, each partitioning their screen in different ways. 19:59:01 So for me the primary purpose of this layer is to make it possible for each process to have its own display. 19:59:18 Then the tiling will be handled in another layer. 19:59:26 I wouldn't call it very deep, my whole system is quite shallow :) 19:59:34 There's very likely an efficiency pelty for that generality. 19:59:44 Haha - excellent point. 20:00:29 Abstraction always entails an Abstraction Penalty 20:00:41 Everythings a tradeoff 20:00:57 * Everthing's 20:02:13 My layering is thus: 20:02:17 +----------------------------------------------+ 20:02:18 | Utility Words | 20:02:18 +----------------------------------------------+ 20:02:18 | User Interface Words | 20:02:18 +---------------------+------------------------+ 20:02:20 | VDT Control Words | Tether Control Words | 20:02:22 +---------------------+------------------------+ 20:02:25 | NFF Base Words | 20:02:27 +----------------------------------------------+ 20:02:30 | NFF Virtual Machine Executable | 20:02:33 +----------------------------------------------+ 20:02:35 | POSIX | 20:02:38 +----------------------------------------------+ 20:02:40 ``` 20:03:49 VDT is "Video Display Terminal" for the young'uns out there 20:07:23 --- quit: dddddd (Remote host closed the connection) 20:07:31 Basically you've done exactly what Chuck preaches. 20:07:51 Your system realizes an environment optimized for a particular purpose. 20:07:54 That's cool. 20:08:09 I'm going for more generality than that, and I realize that departs from his teachings. 20:08:12 Thanks 20:08:43 I can't help but like it, because the application you targeted is more or less embedded design, something near and dear to my heart. :-) 20:08:59 Cool 20:09:46 NFF stands for No-Frills Forth 20:09:59 Nie. 20:10:02 Nice. 20:10:10 But I do like shrubbery. 20:10:39 Yes, perhaps it could do with some shrubbery :) 20:10:44 Wow - if you don't know that reference, then that had to sound pretty nuts. But I suspect most of us know it. 20:11:05 I was just imagining how it would play to someone clueless. :-) 20:11:41 Brave Sir Robin 20:12:07 One thing I really like about this output handling is that it removes all the obstacles that would otherwise keep you from implementing TYPE using a high speed tool like CMOVE. 20:12:21 Here's some data - just slam it in there. 20:14:23 Yes, but it's only really suitable for a host computer (i.e. PC) 20:15:32 It's more or less an ncurses approach but much less sophisticated and bloated 20:17:22 Have to walk the dogs, nice chatting, catch you tomorrow. Keep on Forthin' 20:17:30 :) 20:17:44 --- quit: rdrop-exit (Quit: Lost terminal) 21:12:44 --- join: gravicappa (~gravicapp@h109-187-213-103.dyn.bashtel.ru) joined #forth 22:06:29 --- quit: djinni (Quit: Leaving) 22:10:09 --- join: djinni (~djinni@68.ip-149-56-14.net) joined #forth 22:49:55 --- join: wa5qjh (~quassel@175.158.225.215) joined #forth 22:49:55 --- quit: wa5qjh (Changing host) 22:49:55 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 23:05:43 --- join: proteusguy (~proteusgu@49.145.102.106) joined #forth 23:05:43 --- mode: ChanServ set +v proteusguy 23:12:30 --- quit: proteusguy (Ping timeout: 245 seconds) 23:49:34 --- quit: gravicappa (Ping timeout: 245 seconds) 23:59:59 --- log: ended forth/19.03.28