2022-04-29 09:45:30 Ok, so as far as I can tell this code works: 2022-04-29 09:45:35 .: next 8 << s1 @ 1 << s1 ! ; 2022-04-29 09:45:37 .: keep over * s2 +! next ; 2022-04-29 09:45:39 .: ?all; s1 @ x:40 and 0=;; ; 2022-04-29 09:45:41 .: _key key keep ?all; me ; 2022-04-29 09:45:43 .: asc? dup x:80 and 0=;; ; 2022-04-29 09:45:45 : ukey key asc? dup x:100 { _key 2 } ; 2022-04-29 09:45:47 : uemit dup emit 8 >> .0!=me drop ; 2022-04-29 09:45:49 utf8 capable key and emit 2022-04-29 09:46:31 In both cases the stack item is a utf8 char, first byte low, last byte high. 2022-04-29 10:02:18 Think I'll change asc? to ?asc; to mirror the name pattern of ?all; - they're both doing the same sort of thing. 2022-04-29 10:53:37 any opinions on mill computing? 2022-04-29 11:04:25 What is that? I googled, but mostly found proper names. 2022-04-29 11:05:39 Do you mean belt computers? 2022-04-29 11:05:53 https://millcomputing.com/ 2022-04-29 11:06:22 Oh - I did see the right thing. :-) Reading... 2022-04-29 11:06:49 That's a belt machine, isn't it? 2022-04-29 11:07:06 Ah - that'll take a bit of time to absorb. I like it that people are out there trying, though. 2022-04-29 11:07:13 All the really good ideas come from the grass roots. 2022-04-29 11:07:25 Big corporations just buy them after they've proven themselves. 2022-04-29 11:07:28 It's far from being a new concept. Belt machines have been around for a while. 2022-04-29 11:07:49 But yeah, I agree. 2022-04-29 11:08:56 whats a belt machine? 2022-04-29 11:09:12 I posted a link on something the other day - a new "in between CISC and RISC" open source instruction architecture. 2022-04-29 11:09:13 which other ones are there? I only know of mill and they don't have anything I can try, last I checked (though I should check again now :P) 2022-04-29 11:09:21 Like I said - I like seeing these projects. 2022-04-29 11:09:39 I'm not sure mine was exactly the same; I'll try to find the link again. 2022-04-29 11:09:46 Just the same "type" of stuff. 2022-04-29 11:10:25 A type of computer, like register and stack computers. 2022-04-29 11:10:38 I think this company is _the_ belt machine company. 2022-04-29 11:11:03 https://www.forwardcom.info/ 2022-04-29 11:11:19 Or at least, one of, if not the only, companies who taped out a belt processor. 2022-04-29 11:23:33 Ok, well, I haven't watched the video yet, but the marketing pitch sure sounds good. The devil will be in the details. 2022-04-29 11:24:07 I usually go into such things with at least a little skepticism - I have this quaint idea that if some idea really is THAT much better then it would have caught on by now. 2022-04-29 11:24:21 Maybe under three different names as every company tries to act like it's their thing. 2022-04-29 11:24:28 But it would be "out there." 2022-04-29 11:25:28 Sort of like how the guts of Windows and Linux have in some ways "converged" - best ideas taking hold. 2022-04-29 11:25:56 "Without the wind, the grass does not move. Without software hardware is useless." 2022-04-29 11:26:19 And without hardware, software is impotent. 2022-04-29 11:26:38 I like to think of them both as parts of the same solution. 2022-04-29 11:26:50 my point is that unless this computer can run something useful for representative comparisons, of course it won't catch on. 2022-04-29 11:27:02 Some of the most fun parts of embedded projects I've done has been deciding how things would be split between hardware and software. 2022-04-29 11:27:36 Considering how tightly coupled most major OSs out there are to register machines, it will require considerable effort. 2022-04-29 11:27:38 You can make the hardware simpler, if the software's willing to jump some hoops, or vice versa - finding that sweet spot is fun. 2022-04-29 11:28:12 Yeah, I've been recently lamenting how strong a stranglehold legacy software has on the CPU industry. 2022-04-29 11:28:22 Not just OS's, but they're definitely part of it. 2022-04-29 11:28:32 I'd say it's the other way around. 2022-04-29 11:28:41 Language structures, too. 2022-04-29 11:28:58 That article we linked up recently - "C is NOT a Low Level Langage" - that really underscored it for me. 2022-04-29 11:29:00 its C 2022-04-29 11:29:13 CPUs evolved to make old C code go faster. 2022-04-29 11:29:18 im an avid hater of the for loop 2022-04-29 11:29:53 And, say, software performing tasks a belt machine would excel at are probably already primarily riddled with register machine ISA assembly language, that you'd have to go a long way to making useful comparisons for people to switch. 2022-04-29 11:30:03 Yeah. 2022-04-29 11:30:17 I think the last major attempt at that was itanium which, aiui, was a complete failure. 2022-04-29 11:30:29 I think only Oracle uses it. 2022-04-29 11:30:44 Not sure why they canned sparc, really. 2022-04-29 11:30:49 CPUs evolved to help OS's enforce security. Then someone decided they wanted to run more than one OS at a time, and CPUs evolved again for that. 2022-04-29 11:30:55 Anyway, it's whiskey o'clock. 2022-04-29 11:31:03 Hey, good for you, man. 2022-04-29 11:31:10 6-7 hours to go for me. 2022-04-29 11:31:26 With that attitude, certainly! 2022-04-29 11:31:31 But it is Friday, and that's happy. 2022-04-29 11:31:35 The sun is surely all the way up. 2022-04-29 11:31:41 :-) 2022-04-29 11:32:19 I have no room to complain - I've been working from home since early 2020. I'm horribly spoiled now - sooner or later they'll tell me to come back and I'll grouse over it. 2022-04-29 11:34:56 I know the feeling man. 2022-04-29 11:35:33 I'll have to take my cat to work or something; I'm just used to having him here lying up against my leg. :-) 2022-04-29 11:36:13 Having a lab at home helps, at least in my experience. I have all of the tools I need here to do my job. 2022-04-29 11:39:14 My job involves almost exclusively mosh-ing into machines in my lab at work. 2022-04-29 11:39:26 Once in a while I have to go in and touch 'em, but I try to minimize it. 2022-04-29 11:40:46 Which is pretty funny, considering I'm actually a hardware guy by training and early experience. 2022-04-29 11:42:17 Aye, sounds much like my situation. Good way to have it. 2022-04-29 11:50:47 Yeah, I make the most I've ever made, and my stress is a LOT lower than it was back a couple of decades ago. Like I said - no complaints. 2022-04-29 12:22:39 boru, yes. 2022-04-29 13:26:04 Hmmm. Ok, the belt machine is interesting - it's definitely different. But this video is pretty high level - this all looks nice when it's little boxes sliding across the screen from place to place. I think I'll have to think more deeply on it to make sure that the actual implementation won't still leave you with a lot of the same issues. Or, rather to "understand" that - I presume they wouldn't be 2022-04-29 13:26:06 showing this if they hadn't been able to make it work. 2022-04-29 13:26:27 He said they'd done years of simulation - if we take him at his word, then "it must turn out ok." 2022-04-29 15:22:42 KipIngram: what video are you talking about? 2022-04-29 15:33:17 Oh, one second. 2022-04-29 15:38:04 This one, I think - I'd already closed it. But the first few seconds look right: 2022-04-29 15:38:05 https://www.youtube.com/watch?v=QGw-cy0ylCc&t=1s 2022-04-29 15:39:01 thanks. 2022-04-29 15:39:18 The link remexre put up earlier has a docs subsection that gets to all of it. 2022-04-29 15:45:58 ok. 2022-04-29 17:49:49 I've got a word called insert in my expect stuff - it's what actually inserts a character into my string, and echos it. 2022-04-29 17:49:53 I think if I define 2022-04-29 17:50:14 : inserts dup insert 8 >> .0!=me drop ; 2022-04-29 17:51:08 and call that instead of the current insert (and continue to use single-byte emit for the echo), it'll "just work." I think the screen will look right and the buffer will be modified properly, even if I'm puttin the utf8 char into the middle of the string. 2022-04-29 17:51:56 That will leave just the cursor control and backspace keys to deal with - in all of those cases I loop on what I'm doing now until the byte I just acted on doesn't contain 10 as the top two bits. 2022-04-29 19:20:23 Wow - some of these mill chip videos are very interesting. Definitely some ideas I've not been exposed to previously. 2022-04-29 20:16:47 Looks like the belt is Mill's most unusual feature - they did that to eliminate knowing whether or not rename registers still have the right value in them or not. Once a value goes onto that belt, it doesn't change. Eventually it's pushed off the other end, and the goal is to have everything that's going to need it done by them. So having those values immutable offers them some benefits. 2022-04-29 20:17:51 But they've also done a really squirlley thing with how they lay out parallelizable streams in RAM. Apparently there's a complexity issue associated with variable width instruction decode that is polynomial in instruction count (count being the number they're trying to process at once). 2022-04-29 20:18:17 So they break those instructions into two streams - you're only allowed to jump or call to the beginning of such a stream. 2022-04-29 20:18:50 You'd think two streams woud have two addresses, but they start the two streams at the same point and run one up in memory and one down. 2022-04-29 20:18:58 Two decoders - one on each side. 2022-04-29 20:19:14 That factor of two works through the polynomial equation and brings them a payoff. 2022-04-29 20:20:04 And a host of other little sneakies like that. Apparently they can issue 33 instructions per cycle at peak performance, compared to Intel's four on some of its chips. 2022-04-29 20:21:04 Oh, they also split the instruction cache into two pieces and service each of those two decoders from one. That brings the backside of the cache closer to the decoder and increases possible clock speed. 2022-04-29 20:21:34 I hadn't actually thought about the limits of making the cache bigger, but yeah - if you have to slow down to support a bigger one, then there would be a sweet spot. 2022-04-29 20:22:18 Fetching from the L0 cache is 400 times faster than fetching from DRAM. 2022-04-29 20:22:49 It occurred to me that this notion we have these days (well, a lot of folks do) that "code size doesn't matter anymore" is somewhat misguided. 2022-04-29 20:23:08 More compact code means more instructions in your L0, and that's where the speed is. 2022-04-29 20:23:21 THAT RAM isn't unlimited. 2022-04-29 20:23:39 Their average instruction size is 15 bits. 2022-04-29 20:24:04 They can have just over a thousand instructions for all 33 of their issue streams in the cache at the same time. 2022-04-29 20:24:35 Could then, that is - I think these videos are from a number of years ago. 2022-04-29 20:26:47 So, I haven't looked yet into utf8-ing the cursor and backspace keys, but I I've got all the code now, I think, for handling just the straight entry of characters in EXPECT. I just need to spend a half hour or so hand translating that code I posted this morning into the assembly and I can try it out. 2022-04-29 20:27:19 90% chance I'm forgetting something, but we'll see. 2022-04-29 20:27:27 If so it won't take long to know it. :-) 2022-04-29 20:55:52 Here's an article on Mill's split stream encoding: 2022-04-29 20:55:54 https://millcomputing.com/blog/wp-content/uploads/2013/12/mill_cpu_split-stream_encoding.pdf 2022-04-29 21:38:17 Ok - this is fascinating: 2022-04-29 21:38:19 https://www.youtube.com/watch?v=LitwrElTCLs&t=19s 2022-04-29 21:38:32 It describes their design process and tool chain. Innovative. 2022-04-29 21:39:43 They actually use conventional C++ compilers as the "front end" of their process. They use it in a particular way, and then the executable produced drives later phases of their process.