2022-05-09 04:45:51 KipIngram: Why ask where the cursor is except when user is moving cursor? Terminal handles it automatically otherwise 2022-05-09 06:52:31 Yes - exactly. It was a misguided hack. A day or two ago I thought I needed it in order to be able to put the cursor back at the initial position in preparation for re-printing the string. Let's not quibble over whether I should be re-printing the string on each keystroke or not - it's the strategy I'm using for now. My original way of putting the cursor back there was to take my current cursor position 2022-05-09 06:52:32 and issue that many "cursor left operations." That operation moved not only the cursor, but also my state variable holding cursor position and my state variable holding insert point position in the string buffer. It knows how to scan backward across utf8 chars. But I saw no way to scan backward across an ansi sequence, so the cursor position report was to get an initial record of that starting cursor 2022-05-09 06:52:34 position, so I could just PUT the cursor there. 2022-05-09 06:52:52 But, I don't need to do it that way. I didn't see how to avoid it a day or two ago, but it's actually pretty straightforward. 2022-05-09 06:53:01 Almost obviously so - don't know why I initially overlooked it. 2022-05-09 06:53:27 But anyway, I agree with you - it's not a well-functioning feature to start with, so I'm happy to not use it. 2022-05-09 06:53:51 The cursor report thing, I mean - it's just not something that works under all circumstancess for the reasons I outlined last night. 2022-05-09 06:54:16 If any unread input at all is in the keyboard buffer, then you effectively can't use that method. 2022-05-09 06:54:42 I'm in the process of yanking that out right now. 2022-05-09 07:00:06 Anyway, the simple and right answer was sitting right in front of me. ANSI sequences make it impossible to do a left scan by a single character. But I actually have a RECORD of how far to the right my cursor is. So to go back to the initital position I just need to issue [D, where is how far right the cursor has come. 2022-05-09 07:00:51 That was sitting right in front of me for the last couple of days and I overlooked it. I didn't really need to record where the cursor was at the outset as coordinates at all - I just need to be able to get back to that point, and that sequence does it. 2022-05-09 07:01:26 It's done and working now, without any "incremental leftward motion." 2022-05-09 07:01:47 And without any glitches due to trying to read the cursor position. 2022-05-09 08:08:23 "Let's not quibble over" Not wanting to quibble but it could be you're making this harder for yourself 2022-05-09 08:08:23 Sounds good 2022-05-09 08:24:57 I'm not sure I am - I just want a set of features, not all of which are important to you. I do think I was overcomplicating it earlier on, because what I've just done now was much simpler and better, but I didn't initially see that path. Nothing's to say there's not an even better one I'll think of sometime in the future. 2022-05-09 08:25:14 The way I'm doing it now is actually pretty straightforward. 2022-05-09 08:29:49 Which makes it annoy me a little that I didn't just do it that way in the first place. 2022-05-09 08:57:59 Yeah that's the impression I have 2022-05-09 08:58:18 I mean it wasn't a quibble earlier, it sounds like you've got a saner approach now 2022-05-09 08:58:33 I like 'quibble' it's a nice word lol 2022-05-09 09:27:44 :-) 2022-05-09 14:33:04 Speak slowly please, I'm a forth programmer 2022-05-09 19:58:24 Zarutian_HTC: Regarding BitGrid, the one negative I've been able to think of is logic utilization efficiency. I suspect the main reason we've gotten the particular FPGA architectures we've gotten, and not gotten BitGrid, is that by making decisions about what specific blocks of logic are going to look like, one winds up with much more efficient interconnect circuitry. The capability to connect those chunks 2022-05-09 19:58:26 of logic in "other ways" is not there, so the resources that would be reqired to provide that capability are saved and can be used to offer more specific functionality resources. 2022-05-09 19:59:00 The engineers designing them have tried to find the "sweet spot" in the general <--> specific spectrum, and therefore get more usable functionality out of a given total amount of logic. 2022-05-09 19:59:25 BitGrid wins hands down on allowing totally general experimentation. But it probably doesn't win on "total offered functionality." 2022-05-09 20:00:21 You might get dozens or hundreds of multipliers on someone's FPGA. A BitGrid that supported creating that number of multipliers would probably have a lot more gates total. 2022-05-09 20:01:15 What I really like about BitGrid is the way it supports "previously un-dreamt of possibilities." 2022-05-09 20:01:34 With the more common "specialized" approach, you get what someone has been able to think of and considers useful. 2022-05-09 20:16:52 I have looked at older designs of fpgas and cplds few years back 2022-05-09 20:17:44 with cplds you basically get macro cells you can wire together 2022-05-09 20:18:52 those macro cells vary in functionality from simple and gates and such, d flipflops and up to whole adders and registers 2022-05-09 20:20:12 with fpgas you get often slices of luts that are nearest connected to other slices in feed forward pipeline 2022-05-09 20:20:48 then the trend has been more and more specialized 'hard ip cores' 2022-05-09 20:22:31 what I like about BitGrid is that it reminds me of an fpga that AVR designed and was more isotropic uniform that current day fpgas 2022-05-09 20:24:34 what I have in mind is to have BitGrid blocks whose edges can be connected together to neighbours or connected to buses of various block strides 2022-05-09 20:24:54 KipIngram: ^ 2022-05-09 20:26:48 also the idea is that a BitGrid blocks config space access port could be connected in same way, making it possible to use that block just like block ram in Spartan 6 2022-05-09 20:27:26 Yeah, it really is "supremely complete" when it comes to flexibiity. 2022-05-09 20:29:55 ACTION thinks https://www.digikey.com/en/products/detail/microchip-technology/AT94S40AL-25DGJ/6829439 or something like it was what I had in mind as that reference 2022-05-09 20:30:55 the thing is that I suspect BitGrid in that kind of setup is rather akin to Forth in some ways 2022-05-09 20:32:59 I do not recall the correct terminology but I think I heard of a ratio between the logic circuit you can use to implement versus the amount of logic circuits require to keep and effect the configuration 2022-05-09 20:33:24 and in early fpgas it was pretty amissal 2022-05-09 20:34:11 that is quite a bit silicon logic went into configuration stuff versus the configured stuff 2022-05-09 20:34:50 hence the atractiveness of going into more and more 'hard ip core' 2022-05-09 20:35:59 but in BitGrids case I think the ratio is nearer to 1:1 than those early fpgas 2022-05-09 20:37:52 for instance a BitGrid cell can implement an inverter in one direction whilist in perpendicular direction a 'wire' crosses it 2022-05-09 20:40:31 plus if we go the memristor route of keeping configuration (but we could loose that memory block feature above) then the BitGrid becomes smaller in silicon area as we can build the memristors in the metal layers above 2022-05-09 20:41:40 basically you need two memristors per configuration bit 2022-05-09 20:42:30 and you can select the pair via the usual crossbar arangement 2022-05-09 20:44:10 the memristors would basically be voltage dividers where the connection point between them is muxed to that side output of the BitGrid cell 2022-05-09 20:45:06 usually the rows would be connected to ground while the columns were connected to Vcc 2022-05-09 20:48:14 the memristors would be connected common anode or common kathode so that either the column connected memristor goes low resistance when they are being driven through the hysterisis curve at change time whilist the other goes high resistance. And vice versa 2022-05-09 20:49:14 Vcc is say around 5V while the change voltage is 12-48V 2022-05-09 20:51:27 that kind of BitGrid device would be more like cpld in that regard 2022-05-09 20:53:35 I am no silicon design expert but I would not be surprised if it turns out such chips at 1 micron feature-size/node would be radiation resistant 2022-05-09 20:54:58 ACTION is thinking of this for the future possible Belters (see the Expanse) making homegrown chips or clanking replicator 2022-05-09 20:55:59 plus the opensource ecology folks 2022-05-09 21:00:04 KipIngram: re logic utilization efficency, you have not looked at the quote on the BitGrid blog? it is okay to waste some transistors 2022-05-09 21:37:12 Yeah - we've already discussed that to some degree - 64 bits of config per cell. So a cell is capable of 2^64 different functions. Symmetry stuff from physics would come in - some would be like rotated versions of others, so maybe we don't count those as unique (though practically speaking they're still different in a useful way). But at any rate, a lot of possibilities. 2022-05-09 21:37:20 There's an exponential thing here. 2022-05-09 21:37:58 One bit of config gives you two functions, 2:1. Two bits gives you four - 2:1 again. But then it takes off - three bits gives you eight, which is more than 2:1, and it just rises from there. 2022-05-09 21:38:38 So wider config boosts that ratio in a systematic way. 2022-05-09 21:41:22 I imagine there's something here that's similar to proteins. I read somewhere that a 100-amino acid long protein has 20^100 different possibilities, but only about 1 in 10^77 of those is "useful." Lot of garbage in functionality space. 2022-05-09 21:57:49 KipIngram: note that proteins are linearly specified but folds up in 3d space while following a folding path in time 2022-05-09 21:58:38 I think that BitGrid is not as bad in that way 2022-05-09 22:05:31 Very possibly. I do think that's the main reason there's so much junk in the config space. 2022-05-09 22:06:16 I didn't mean to imply this is any sort of show stopper for BitGrid. Just that it's a factor to be considered. 2022-05-09 23:04:20 so I was trying to use the example at the bottom of this page: https://gforth.org/manual/Assembler-Definitions.html and then enter this: 3.1416e0 1.619e0 my-f+ f. and then it prints the two values I inputted (I don't know how to pass the parameter back to forth). 2022-05-09 23:04:59 I am using a 32-bit copy of gforth 2022-05-09 23:05:33 if anyone is using a 64-bit arch, the example is on the next page or so