2022-12-16 09:49:26 Ugh. 2022-12-16 09:49:35 My personal computer has gotten borked - it won't boot. 2022-12-16 09:49:47 I'm going to have to do a whole live boot process to try to recover it. 2022-12-16 09:49:52 Regenerate grub2, etc. 2022-12-16 09:49:55 What a pain in the ass. 2022-12-16 09:50:17 And I have to wait for my wife to wake up, because my employer has the USB ports on my work computer crippled. 2022-12-16 09:50:21 Can't make the stick using it. 2022-12-16 09:50:36 Fortunately I've been able to connect to all my critical stuff from there. 2022-12-16 09:50:40 (the work computer). 2022-12-16 09:51:37 "And I have to wait for my wife to wake up, because my employer has the USB ports on my work computer crippled." 2022-12-16 09:51:54 My wife doesn't have any USB ports 2022-12-16 09:52:34 And there's something wrong with her sleep mode, can't activate it after waking in middle of night 2022-12-16 10:09:36 Heh heh. 2022-12-16 10:09:53 Good - levity is helpful to my mood right now. I get wound up when my computer isn't working. 2022-12-16 10:09:57 So thank you. 2022-12-16 10:10:17 She has a computer I can use to make the boot stick. 2022-12-16 10:12:01 I've no real idea exactly what's wrong. It's a layered problem at the moment - there is the "the problem" and then there is the fact that there is no root password set, so the root account is locked. 2022-12-16 10:12:14 So first thing to do is live boot, chroot in, and set a root password. 2022-12-16 10:12:34 Then supposedly I'll at least be able to log into emergency mode as root and see what I can figure out. 2022-12-16 10:12:58 I have instructions for regenerating the Grub2 data, which it's claimed will make all detected systems on the machine bootable. 2022-12-16 10:13:16 There were three "real" options for me to try to boot from, but none of them worked. 2022-12-16 10:13:30 The emergency mode tried to work, but ran into this root lock problem. 2022-12-16 10:14:05 Used to be they had you specify both a root password and a primary user password when you set Linux up, but somewhere along the way they dropped the requirement for a root password. 2022-12-16 10:14:11 And just locked that account instead. 2022-12-16 10:14:42 So, regenerating grub2 looks straightforward enough - if that doesn't get me out of the woods I'll have to do some more digging. 2022-12-16 10:14:57 I really, REALLY would rather not have to start from scratch with a new install. 2022-12-16 10:15:35 I do have an image of the disk I made a while back that would probably be preferable to doing a vanilla installation; I might try restoring that if necessary. 2022-12-16 10:15:56 But I made that before I fixed that "half of my SSD is invisible" problem, so I'd have that to do again if I go that route. 2022-12-16 10:16:26 But at least that would get me all the vendor installed firmware and so on. 2022-12-16 10:16:55 Most of the content I really care about to any big degree is on Dropbox, so I'm not to agitated over "losing data." 2022-12-16 10:31:57 Very first thing I'm going to do, though, is just turn it on and let it sit for a while, in case it just needs time to work through something. 2022-12-16 11:18:41 Ok, I got a root password set and can now enter emergency mode. 2022-12-16 11:34:04 HAH!!!! Fixed it! 2022-12-16 11:43:00 That turned out to be not so bad. Last night while trying to get that Lattice Semi software to run, I re-directed a soft link in /usr/lib64 to another version of the same file it was already pointing at. It was pointing at a .30 version, which was there in /usr/lib64 with it, but there was a .28 version in hte Lattice directory hierarchy. So I aimed it at that instead. 2022-12-16 11:43:09 Didn't help, but apparently it was enough to prevent booting. 2022-12-16 11:43:27 I got lucky - an error message that popped up earlier mentioend that same filename and looked very similar to one I got last night. 2022-12-16 11:43:33 So that got me to thinking it was related. 2022-12-16 11:43:55 So from the emergency shell I just re-directed that soft link to its original target, and power cycled. Came right up. 2022-12-16 11:44:59 /usr/lib64/libstdc++.so.6, apparently it MUST point to /usr/lib64/libstdc++.so.6.0.30. 2022-12-16 11:46:18 Another thing I noticed last night was that my text snippet system, that I have on a hotkey, wasn't working. It's working again now too. 2022-12-16 11:47:10 You know, I will find another chip to tinker with - I don't want the one I linked yesterday enough to be willing to putz around with stuff that close to my system's integrity. 2022-12-16 11:47:18 I'm not really "good enough" to hunt in those woods. 2022-12-16 11:47:37 I'm interested in this "Forth in a CPLD" thing. 2022-12-16 11:47:55 A very power efficient CPLD, rather than a power hog FPGA. 2022-12-16 11:49:12 I got to thinking about a possible future project yesterday. An LCD panel, a palm-size one, with a stylus touch screen. Then a circuit board with a CPLD running Forth, some RAM, a flash chip for mass storage, and bluetooth and Wifi. 2022-12-16 11:49:17 And nothing else - that would be it. 2022-12-16 11:50:02 I was picturing an LCD big enough to display one block of Forth source, and I'd move the cursor by tapping the screen and then make a text entry system like the old Palm Graffiti system. 2022-12-16 11:50:24 No "special place" to enter the Grafitti - you'd make the Graffiti strokes anywhere on the screen. 2022-12-16 11:50:34 And the whole thing would be stylus driven. 2022-12-16 11:51:07 The goal would be a power profile that allowed a day of heavy use before needing to re-charge. 2022-12-16 11:51:44 No Linux, no anything like that - all self-implemented. Slowly, maybe, but still done personally. 2022-12-16 11:52:30 One thing that really attracted me to that Lattice part I linked was that the documentation mentioned it having special features oriented toward voice recognition, so I was thinking a microphone would be interesting. 2022-12-16 11:52:39 Make my own little gadget that I could talk to. 2022-12-16 11:52:58 Shirt-pocket sized. 2022-12-16 11:53:14 Something along the form of a pack of cigarettes or a deck of cards. 2022-12-16 12:02:26 Ugh. Now my system says there's a pile of software updates to install. 2022-12-16 12:02:41 I'm still rattled by this morning's problems, and I never really like big updates in the first place. 2022-12-16 12:22:20 I particularly hate updates when I see in the details list that it's planning to futz around with kernel modules, and that is the case this morning. 2022-12-16 12:25:11 Oh, also, re: that little gadget I was describing, I could try making it work the way I was describing the other day. At home I could have a monitor / keyboard / mouse setup, and I could design the thing so when I lay it down on an inductive charging pad it would immediately pair with the fixed setup and I could then use it that way. Have that be seamless, so I just toss it on the pad and sit down and start 2022-12-16 12:25:13 to work. 2022-12-16 12:28:14 oh noes all 12 patches for OpenBSD 7.2 2022-12-16 12:29:01 :-) 2022-12-16 12:29:04 That sounds better. 2022-12-16 12:29:13 This was over 600 packages affected. 2022-12-16 12:29:32 But, it looks like Fedora 37 is available, so it's been a while since I've refreshed my system. 2022-12-16 12:31:09 When I bought this computer, it was my first new computer purchase in almost a decade. I decided to get one of the Lenovo support options, so I paid a little more for that. Well, that turned out to be a mistake. 2022-12-16 12:31:42 Which is frustrating, because avoiding such purchases has really always been a standard operating procedure for me - my decision to get it was quite exceptional for me. 2022-12-16 12:32:24 Anyway, later I approached them for assistance on getting the other half of that SSD to be accessible. My reasoning was that I PAID them for a 512 GB SSD, but what they shipped me only offered access to half of it, so in my mind that was on them. 2022-12-16 12:32:28 Seemed obvious to me. 2022-12-16 12:32:50 But when I got in touch with them they used the fact that I had kept my operating system up to date as an excuse to deny support. 2022-12-16 12:32:58 I wanted to punch someone, just on general principles. 2022-12-16 12:33:08 (darn, a customer who called us on our support obligations) 2022-12-16 12:33:22 I only updated it when IT SAID I SHOULD - it's not like I went and installed a bunch of discretionary stuff. 2022-12-16 12:33:37 So, I thought of that as a true asshole move. 2022-12-16 12:33:56 Especially when it probably would have taken a knowledgeable engineer only a few minutes to help me resolve my sisue. 2022-12-16 12:33:58 issue 2022-12-16 12:34:15 engineers with knows cost money 2022-12-16 12:34:16 Once I got it done, it turned out to be not that hard - it was mostly just figuring out "what to do." 2022-12-16 12:34:27 I was LVM-based, and that ultimately made it simple. 2022-12-16 12:35:09 Anyway, I was royally unimpressed, and now I DAMN SURE will never pay for support again, for anything. 2022-12-16 12:35:38 So not only was I annoyed at them; I was also annoyed with myself for not following my own rule. 2022-12-16 12:36:02 the DELL support things are pretty good, when I've used them 2022-12-16 12:36:02 I felt like I was on the shitty end of the "fool me twice" thing. 2022-12-16 12:36:38 That's good, I guess, but I've written Dell off of my future purchase list because my daughter's Dell computer wouldn't charge using a third party charger. 2022-12-16 12:36:58 They deliberately put a chip in there that let them make sure it was a Dell brand charger, which was COMPLETELY UNNECESSARY. 2022-12-16 12:37:15 AND they proved unable to sell me a new one even when I tried to order one from them. 2022-12-16 12:37:25 I found a source on eBay and bought three of them. 2022-12-16 12:37:34 Two are in a plastic box on my closet shelf. 2022-12-16 12:37:48 For the next time my daughter abuses her tech to the point of failure. 2022-12-16 12:38:00 I've been AMAZED over the years at what poor care my kids take of their gadgets. 2022-12-16 12:38:18 I am positively anal about it, and they're... well, not. 2022-12-16 12:38:48 I'm interested in seeing if / how their habits change one of these days when it's their money. 2022-12-16 12:39:32 And one of these days when it's my grandkids doing the same thing to them, I *do* intend to needle them. 2022-12-16 12:39:38 They'll have no room to complain. 2022-12-16 12:40:44 When I was little kids just didn't GET expensive toys like that. 2022-12-16 12:41:04 But these days they're wired into the school system and so on, and they can't function without them. They've become necessities. 2022-12-16 12:41:49 So I may or may not have been just as careless when I was a kid, but if I was it didn't involve things my parents would have thought of as "major purchases." 2022-12-16 12:42:30 Not to say they never bought me anything expensive, but those weren't things that the world "demanded" I have. If I broke something, it was GONE. 2022-12-16 12:42:38 Would not have gotten replaced. 2022-12-16 12:55:33 Anyway, I'm looking at this Lattice device at the moment: 2022-12-16 12:55:35 https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/MachXO23/FPGA-DS-02026-1-1-MachXO3D-Family-Data-Sheet.ashx?document_id=52590 2022-12-16 12:55:50 It's actually bigger than the other one; a little more expensive but still not bad. 2022-12-16 12:55:58 9400 LUTs. 2022-12-16 12:58:30 That first chip from yesterday, the iCE40 UltraPlus, had special "always on" circuitry for voice recognition, that would let you trigger such functions even from a deeply powered down state. 2022-12-16 12:58:39 what sort of LUTs? 2022-12-16 12:59:08 3 input, one output? 2022-12-16 13:07:43 One sec - lemme make sure I'm remembering right. 2022-12-16 13:09:13 Four input LUTs, not counting a dedicated carry in, and one output, not counting a dedicated carry out. 2022-12-16 13:09:38 ah the usual slice setup 2022-12-16 13:10:06 Yeah. 2022-12-16 13:10:17 basically you can make an adder slice easily 2022-12-16 13:11:03 It's got between 50 and 60 kB of onboard block RAM, and about half a GB of flash. 2022-12-16 13:11:24 Enough to run a system, though in both cases (especially the RAM) I might like to have some external as well. 2022-12-16 13:11:57 That's just the block RAM; there's some distributed RAM scattered around as well. 2022-12-16 13:12:19 I haven't put pencil to paper, but gut-feel wise it strikes me as enough to do something interesting with. 2022-12-16 13:12:45 Especially if I made it a 16-bit system. 2022-12-16 13:13:09 32 would be nicer, though; just for address space considerations. 2022-12-16 13:13:45 Oh, after I got my computer working again I immediately made myself a Fedora 37 live stick. 2022-12-16 13:13:55 Just for future purposes. 2022-12-16 13:16:29 I briefly thought about approaching that gadget idea with an LCD panel paired with a Raspberry Pi - you can get that so that they're ready to just plug and play. But all the pictures I saw made that look like a thicker stackup than I found pleasing. 2022-12-16 13:19:26 And besides, that would be less challenging. 2022-12-16 13:20:50 That Forth Dimensions article on the CPLD-based system implied that they did it all with Forth - there was no reference to any vendor-supplied design environment, even. 2022-12-16 13:21:13 Of course, it was old. Back in the day the config streams for programmable devices were more open. 2022-12-16 13:21:55 For the really old PAL chips you could just look at the data sheet and suss out the structure of the program file. 2022-12-16 13:22:40 My boss and I (way back around 2000 or so) once encountered a bug in the PAL programming software and we edited a fuse map file with DEBUG to fix the problem. 2022-12-16 13:23:12 It was misprogramming a single fuse. 2022-12-16 18:58:13 The atmel programming software is an old vb6 app that is just full of bugs 2022-12-16 18:58:25 For GALs and CPLDs 2022-12-16 19:12:32 I looked around a few weeks ago to see if I could find the old "ABLE (or ABEL)? software we used for 22V10's and stuff, but I couldn't find anything. Barely even found a few references to it. 2022-12-16 19:12:44 Those were fun days, man. I loved that work. 2022-12-16 19:13:29 "Cleverness" was appreciated; these days a lot of places seem to frown on it - they'd rather have everything be brutally, painfully obvious and "idiot-ized." 2022-12-16 19:14:15 And digital logic was a great playground to be clever in. 2022-12-16 19:18:42 They still sell those 22V10s 2022-12-16 19:20:16 I know - I've got a bag of 'em in the garage. 2022-12-16 19:20:28 I was once contemplating a 22V10 only computer. 2022-12-16 19:20:35 Stack-based, of course. 2022-12-16 19:20:50 Well, 22V10 and some memory and so on. 2022-12-16 19:21:19 Somewhere out there I've got a little cheap programmer for them too. 2022-12-16 19:21:43 I started a little before that, though - when I showed up the 22V10 was the "Cadillac." 2022-12-16 19:21:54 We were told to use them only where absolutely necessary. 2022-12-16 19:22:13 Then a little later came a family from AMD called MACH; those were nice too. 2022-12-16 19:22:15 Ya I considered that too. Got down to a 22 chip design I liked then down to 19 for ultra minimal design. No easy way to do counters in GALs though so wouldn't be that great I think 2022-12-16 19:23:06 Ya the TI 866 or whatever I have from China programs them just fine 2022-12-16 19:23:21 Yeah, it's either ripple counters are else the look-ahead circuitry eats your lunch. 2022-12-16 19:23:40 The ones I have are 10ns or around there. You need 7ns to run a modern 6502 at the full 14mhz 2022-12-16 19:24:03 I don't remember how fast mine are. Probably not the absolute fastest. 2022-12-16 19:24:46 Have you thought about 7400 logic for some of all of it? 2022-12-16 19:25:14 Not on that particular project, but yeah, tossing in some of that for special purposes would help. 2022-12-16 19:26:01 I was once so annoyed at how much logic just incrementing a program counter at high speed would take that I contemplated an "out of order" execution processor that used a pseudorandom shift register instead. 2022-12-16 19:26:18 Because you can bump one of those to the next state in one cycle, and it's a perfectly well-defined, repeatable sequence. 2022-12-16 19:26:29 Just put the code wherever "next" was. 2022-12-16 19:27:04 Compiler would have a software copy of the thing, and would just work out where everything needed to go. 2022-12-16 19:28:55 If you had a reserved range of RAM for code that could work just fine. 2022-12-16 19:29:37 Guess it would make desinging a cache very easy, though. :-) 2022-12-16 19:29:47 wouldn't 2022-12-16 19:34:19 KipIngram: if you're feeling bad about pipes in forth, some Ken Thompson guy said he had trouble with the mesh concept too 2022-12-16 19:37:06 Oh, hadn't thought about that in a few days. :-) 2022-12-16 19:38:04 On thinking about it I decided that Forth actuall already behaves a lot like a pipeline, only with the stack gluing the pieces together. In a way it kind of "doesn't leave room" to do a whole lot with the input stream. 2022-12-16 19:38:15 Forth seems to use the input stream for commands, rather than for data. 2022-12-16 19:38:37 When we make a pipe in Linux, in some sense we're flowing data of some sort through. Some information of interest. 2022-12-16 19:39:31 it's somewhere in https://www.youtube.com/watch?v=EY6q5dv_B-o 2022-12-16 20:30:42 Oh, that story about the chess machine at the end of that is classic. 2022-12-16 20:36:14 So I've been tinkering this afternoon with a pure register transfer process for Forth. System does nothing except shuffle values around from register to register. Got one to supply RAM address, etc. Various operations like next, nest, un-nest, etc. take several cycles, even if you can do more than one transfer a cycle. Just trying to see how cleanly it would all come together. 2022-12-16 20:36:28 So the "machine code" for such a thing would just be a sequence of transfer sets. 2022-12-16 20:37:12 I've not approached a Forth machine in that way before; previously I've had "basic operations" that were at a higher level and managed by hardware with state machines and so on. 2022-12-16 20:37:31 Guess these transfers would be regarded as microcode. 2022-12-16 20:38:23 I'm interested in how few cycles things can take, and also in how few parallel transfer paths I can get it down to without sacrificing speed. 2022-12-16 20:38:36 And how wide the microinstruction word would need to be for that. 2022-12-16 20:39:07 Still pretty fuzzy; I haven't quite gotten my thinking sharpened up on it yet. 2022-12-16 20:40:59 If I really wanted to minimize logic units I'd use the ALU to increment the IP and move the stack pointers, but that would slow it down quite a lot. Probably will opt for having one or perhaps two separate "+/- cell" units; their inputs would be target registers and their outputs sources. 2022-12-16 20:42:31 And I'm assuming I can load a unit's output and its next input on the same cycle; that's a little dangerous because it means assuming that the minimum propagation time exceeds the output hold time requirement. It's not the best practice to rely on MINIMUM propagation delays at all. 2022-12-16 20:42:56 But it's common enough, really, to use flip flop outputs on the same edge that loads new inputs into them. 2022-12-16 20:56:49 Looking at the J1 cpu here: 2022-12-16 20:56:51 https://github.com/jamesbowman/j1/blob/master/verilog/j1.v 2022-12-16 20:57:05 Man, behavioral Verilog just doesn't bring me any joy whatsoever. 2022-12-16 20:57:13 That's not *hardware* design. 2022-12-16 20:57:21 Not *really*. 2022-12-16 20:57:41 You're just getting some smart piece of software to design your hardware for you. 2022-12-16 20:59:07 I'm talking, for instance, about this for the + operation: 2022-12-16 20:59:10 8'b011_?0010: st0N = st0 + st1; 2022-12-16 21:01:02 I wanna see wires and gates and registers. 2022-12-16 21:03:34 Oh, hey - here's the source code for Chuck's OK operating system: 2022-12-16 21:03:36 http://www.ultratechnology.com/ok101.html 2022-12-16 22:20:48 Some interesting thoughts here: 2022-12-16 22:20:51 http://www.ultratechnology.com/forth3.htm 2022-12-16 22:21:37 The bit near the bottom on circular stacks particulary intrigued me. The main point being that with circular stacks you can never have a run-away underflow or overflow corrupt the rest of your memory. 2022-12-16 22:22:04 But wow - at least at that time Chuck was working with 8-deep data stacks and 4-deep return stacks. 2022-12-16 22:22:20 I feel sure I go deeper than five levels in some of my words. 2022-12-16 22:23:34 One happy bit was that Fox said he analyzed some of Chuck's code and found that Chuck's average definition length was 44 characters. 40-50 (and closer to 40 than 50) is right where I've been in the recent path. :-) 2022-12-16 22:24:01 It also said that Chuck has abandoned some of the traditional looping structures in favor of tail recursion.