2023-06-13 06:53:12 just reading through the Jupiter Ace rom disassembly https://jupiter-ace.co.uk/romlisting.html 2023-06-13 06:53:12 it has an interesting word that drops you into assembly in the middle of a word ... it doesn't seem to have a name but it looks like inline assembly 2023-06-13 06:56:47 something like : test dup cells + @ INLINE-ASM [ $eb c, $f0 c, $00 c, $57 c, ] ; 2023-06-13 06:57:52 and it executes the forth code, then the machine code EB F0 00 57 2023-06-13 06:58:42 nice feature 2023-06-13 07:01:36 i thought it was cool :-) 2023-06-13 07:03:47 co-incidentally, been messing around with (almost) interactive 8086 machine code: https://imgur.com/a/rxZGvc2 2023-06-13 07:06:56 nice 2023-06-13 07:08:16 https://news.ycombinator.com/item?id=29385006 2023-06-13 07:08:44 it's a REPL for x86 assembly .. i remember the article a couple years ago 2023-06-13 07:14:16 cool find, i can see that sort of symbolic exec without a VM being very handy (https://github.com/tenderlove/asmrepl) 2023-06-13 07:17:04 dave0: That link of yours - that's a lot like how Forth development works. You write a bottom level word and play with it until it works. Lather rinse repeat, working your way up. 2023-06-13 07:17:32 Just different ways of running your "code so far." 2023-06-13 07:19:13 KipIngram: it's the interactiveness of forth that sucked me in :-) 2023-06-13 07:19:29 Yes, that's one of the things that will do it. 2023-06-13 07:20:42 These days my most common way of writing something new is a bit the other way around, though. I will write my top level definition, just "believing" it's going to work - it's usually short enough that I'm confident in it. Then I'll go up a line and write a word that that first part used, etc. 2023-06-13 07:21:09 I generally wind up with anything from six or seven to 10-15 sort lines. 2023-06-13 07:21:32 I stare at it a few minutes and tweak if necessary, "executing it" mentally. Then run it. 2023-06-13 07:21:51 Often these days it works the first time; if not, then I'm generally at least close. 2023-06-13 07:24:11 this is how i encode the instructions i want, so far: https://pastebin.com/Rd7FzJX1 https://github.com/jhswartz/xfasm/blob/master/doc/xfasm.txt#L94 2023-06-13 07:30:10 xfasm, that's new 2023-06-13 07:31:36 no relation to the fasm / fasm-g that you already know 2023-06-13 07:31:47 i've noticed, yeah. 2023-06-13 07:31:57 this one's shell based 2023-06-13 07:32:07 impressive stuff. 2023-06-13 07:33:16 it seems to have a different assembly syntax? 2023-06-13 07:35:47 [operands ...] is easier to parse in something like POSIX sh than trying to handle intel or AT&T syntax 2023-06-13 07:36:18 unjust, that link doesn't seem to work for me. 2023-06-13 07:36:24 Brings up a "not found" pastebin. 2023-06-13 07:36:49 works here 2023-06-13 07:36:53 https://pastebin.com/Rd7FzJX1 2023-06-13 07:38:05 that syntax works for me as a human, but in what'll become the next incarnation of xfasm (where i've been slowly doing i386 and x86-64) i realized my instruction encoding approach in xfasm was a lot more bloated than it should have been 2023-06-13 07:40:41 KipIngram: try https://termbin.com/d9g7 - it's the same content as https://pastebin.com/Rd7FzJX1, which is the beginning of that code in the imgur screenshots. 2023-06-13 07:41:54 That works. 2023-06-13 07:42:35 Yeah, that is "different. 2023-06-13 07:42:37 " 2023-06-13 07:45:50 https://github.com/jhswartz/eczema neat 2023-06-13 07:45:55 a forth hosted on javascript 2023-06-13 07:50:41 hm, it seems that the author wrote an irc client with it 2023-06-13 07:50:50 and the readme points to joining here among other channels 2023-06-13 07:51:00 https://github.com/jhswartz/eczema-irc 2023-06-13 07:56:31 drakonis: almost a linker in shell script -> https://github.com/jhswartz/shelf 2023-06-13 07:56:48 oh is that yours? 2023-06-13 07:57:03 because this is pretty cool 2023-06-13 07:57:20 yes 2023-06-13 07:57:25 huh, my brain fails me 2023-06-13 07:57:36 i didnt realize it was your repositories in the first place 2023-06-13 08:00:17 very cool repos though 2023-06-13 08:00:34 so you're doing an assembler toolchain in shell 2023-06-13 08:01:51 thanks, glad they're getting seen by people who might be able to have constructive/destructive criticism 2023-06-13 08:04:35 i can see some good uses for it 2023-06-13 08:06:19 it'd be nice if they all come together as toolchain at some point, but the idea is to have a crude set of tools you can drop in on less than ideal unix-like systems and at least have some greater degree of freedom than what you're given by default 2023-06-13 08:06:39 all in the name of making it easier to roll out custom layouts 2023-06-13 08:06:56 plus low on dependencies 2023-06-13 08:07:08 its posix shell, yeah? 2023-06-13 08:07:41 as much as possible, yes - and shell builtins wherever possible 2023-06-13 08:07:52 hm, interesting. 2023-06-13 08:08:03 i bet the folks over #bootstrappable will like it 2023-06-13 08:08:08 busybox sh on ARM and MIPS targets is obviously a prime target 2023-06-13 08:08:17 interesting. 2023-06-13 08:08:33 also the folks over #permacomputing 2023-06-13 08:09:25 the only downside is that it only works on unix systems 2023-06-13 08:09:31 but that's hardly an issue anyways 2023-06-13 08:10:01 but ksh on legacy OSes long forgotten like QNX 4.x or SCO OpenServer 5.x are also viable targets - as it is a bitch to get going with producing binaries if you don't have access to a suitable toolchain 2023-06-13 08:10:14 aye 2023-06-13 08:10:37 thanks for pointing those channels out, never heard of them 2023-06-13 08:11:29 forth is a common interest 2023-06-13 08:14:29 in any case, these tools are meant to be stepping stones more than anything else as shell script is slow at the best of times 2023-06-13 08:14:32 yes. 2023-06-13 08:14:45 that is exactly why the bootstrappable people would like it :v 2023-06-13 08:16:54 although shell might be a bit too late in the bootstrapping chain 2023-06-13 08:17:02 as they would already have a c compiler by then 2023-06-13 08:18:40 i agree 2023-06-13 08:22:36 hmm, couldn't you use it as a step to write an assembler in assembly? 2023-06-13 08:22:49 definitely could 2023-06-13 08:23:55 that and an assembler that also works as a preprocessor 2023-06-13 08:24:30 you can also use shell script itself for preprocessing and macros 2023-06-13 08:24:34 dangerous code generation superpowers 2023-06-13 08:24:51 but for baremetal bootstrapping, i like the 3-instruction 'forth' idea 2023-06-13 08:25:38 ah, that would be fun. 2023-06-13 08:26:20 https://pages.cs.wisc.edu/~bolo/shipyard/3ins4th.html 2023-06-13 08:27:05 XC@ fetch a byte, XC! store a byte, XCALL jump to a subroutine 2023-06-13 08:27:23 and then start building up a bigger forth with that 2023-06-13 08:27:36 https://github.com/fogus/thunks/blob/main/langdev/forth.txt 2023-06-13 08:27:38 related 2023-06-13 08:28:01 yep, it's kinda like a poor man's JTAG or SWD interface over UART i guess 2023-06-13 08:29:17 nice diagram/summary 2023-06-13 08:30:00 you can find some really interesting stuff out on the internet sometimes 2023-06-13 08:30:26 just imagine if search engines were half as good as they used to be 2023-06-13 08:31:36 it would be great. 2023-06-13 08:31:56 but then, that's why we have things like lobsters 2023-06-13 08:32:05 sometimes you get some very interesting things 2023-06-13 08:35:14 you mean there are crustations responsible for handling search queries? 2023-06-13 08:36:35 that would be funny but no https://lobste.rs/ 2023-06-13 08:37:41 something that came up on another channel during the weekend 2023-06-13 08:40:26 forths benefit a lot from improving cpu hardware 2023-06-13 08:41:20 ie: branch prediction units makes forths more competitive with register machines 2023-06-13 09:00:42 have you seen any implementations that don't use threading at all? yet still retain interactivity? 2023-06-13 09:01:04 Hey guys - I'm trying to get box A to ssh passwordless into box B. A has dsa keys instead of rsa keys, which I'm more familiar with. I catted A's id_dsa.pub onto B's .ssh/authorized_keys file, and usually that's all it takes. But it's not working. Any ideas? 2023-06-13 09:01:08 (i mean threading as in threaded code) 2023-06-13 09:01:40 unjust: what do you mean exactly? Do you still consider subroutine threaded code "threaded"? 2023-06-13 09:03:50 i'd still consider subroutine threaded (ie. call ...; call ...; call ...; ret?) as threaded - i'm referring to an implementation where all code words are inlined into definitions, and so composite words become code words themselves 2023-06-13 09:03:54 Never mind my question - there was also an id_ecdsa.pub key on A, and moving it to B resolved the issue. 2023-06-13 09:04:23 I see. 2023-06-13 12:39:04 So - some time back I told you guys I'd gotten two new boxes to turn into SSD test stands. First got my hands on them in March, only to discover that they had a "secure boot" feature that the original one I already had successfully working didn't have. Caused all manner of grief. 2023-06-13 12:39:34 Well, I'm happy to report that just this morning I have an actual honest-to-god drive test job running on one of those. It's taken all this time and has been a "head / brick wall" situation the whole time. 2023-06-13 12:39:39 But... I win. 2023-06-13 12:40:15 I had to have help, and getting the attentio of the right people was half the battle. Fortunately I have one friend in a high place, and he got the help orchestrated. 2023-06-13 12:40:43 He's what IBM calls a "Fellow." There are about 40 of them in the whole 400k employee company. 2023-06-13 12:40:53 And he seems to have an awful lot of influence. 2023-06-13 12:41:15 Couldn't have accomplished this without his support. 2023-06-13 13:19:22 how did you end up bypassing (or appeasing?) secure boot? 2023-06-13 13:20:48 Replaced my initially preferred Rocky 9 Linux with an internal IBM "SpecV Linux." We have experts on that, and one of them helped me get the kinks worked out. 2023-06-13 13:21:13 So I've had to accomodate the minor differences between the two os implementations, but it wasn't THAT bad. 2023-06-13 13:22:03 It's a fairly bare-bones system, so I've had to give up some "interaction frills." For example, I don't have mosh on it. 2023-06-13 13:22:21 But that just lets me keep an eye on a running test a little easier - it's not strictly necessary. 2023-06-13 13:22:49 I've tried to design this test harness so that I don't have to actually log into these systems at all - I can fly it from a remote server. 2023-06-13 13:23:11 The idea being that I'll be able to fly all three systems from the one remote server. 2023-06-13 13:23:44 This isn't a "real" test that's running now, but I still want to see it run all the way through and see the data land in my database. 2023-06-13 13:23:57 All of the log files it's collected so far look perfect. 2023-06-13 13:24:13 It'll be done in three hours or so. 2023-06-13 13:24:36 So that's one of the two systems - tomorrow I'll recover that non-bootable canister and see if I can get that one caught up. 2023-06-13 13:24:59 I've got two meetings this afternoon I get to crow about this in - now they need to give me drives to stuff these things with. 2023-06-13 13:26:06 Hey, how do I run a script in Linux that I want to export environment variables into my *session*? If I just run it, a la ./script, it does the export but only for itself and doesn't change the parent environment. 2023-06-13 13:26:21 Do I do something like sh ./script or . ./script etc? 2023-06-13 13:26:25 . ./script 2023-06-13 13:26:30 Thank you. 2023-06-13 13:27:12 no problem, in some shells you can also do: source ./script 2023-06-13 13:27:19 Most of the stuff I had to deal with were "minor housekeeping" things. Like, these systems use port 26 for ssh instead of port 22, and the root directory is /home/root instead of /root. 2023-06-13 13:28:10 For most of the ssh interaction I had config files that gave the "target" for the comm, and just sticking -p26 at the front of that line of data handled the port change. 2023-06-13 13:28:19 There were a couple of places I had to edit in the main script. 2023-06-13 13:28:58 do these drives offer some sort of test/debug interface that you interact with for this sort of testing? 2023-06-13 13:29:01 or you can put Port 26 into a suitable .ssh/config file 2023-06-13 13:29:33 thrig: Yeah, I figured there was a "more proper" way to do it - I just did my usual "shortest path I could think of" thing. 2023-06-13 13:29:56 They do have debug ports. The prior generation did not, though, so my setup doesn't make use of it. It is there if I want it, though. 2023-06-13 13:30:22 And I can also pretty easily get a serial line into the test stands themselves, which is what I'll do tomorrow with that one that's not booting. 2023-06-13 13:30:31 There's no place to plug a monitor into these boxes. 2023-06-13 13:31:05 That serial line is how I installed the new OS in the first place last week. 2023-06-13 13:31:36 On the old stand I have to use a serial connection routinely, to do "virtual reseating" operations on the drives. That's required to activate newly patched firmware. 2023-06-13 13:31:49 These new ones provide a smoother way to do that, from the os itself no serial required. 2023-06-13 13:32:04 That's one of the things I've been helped with. 2023-06-13 13:32:27 The drives still don't show up immediately on boot, but the SpecV guy gave me a script I can run that "shows them up." 2023-06-13 13:33:03 At the moment I can't do that "per drive" and I will need to - he said he'd sort that out for me tomorrow. 2023-06-13 13:36:30 Late the week before last, the very day I overcame the really big hurdle I'd been facing, some folks around the office started pressuring me to swap these canisters in for ones without the secure boot. If they'd offered me that even a couple days sooner, I'd likely have been all over it. But given that success we'd just bagged, that no longer seemed like the shortest path. 2023-06-13 13:36:39 I had to hold them off while I pushed on through. 2023-06-13 13:36:52 But hopefully today's news will shut that talk down. 2023-06-13 13:37:08 It's a TEST STAND now. Ready to roll.