2024-03-05 12:01:40 zelgomer: I've said before I don't really think there's much meaning in going for hex .txt programming, beyond using assembly, especially as I can dump hex from assembly anyway and go back and forth automatically 2024-03-05 12:02:00 I don't think you're missing much and I don't think it's a good starting place to learn Forth, as some have done in here 2024-03-05 12:02:30 But whatever floats your boat, if people find it intriguing then they'll learn more from it than something they find uninteresting 2024-03-05 12:05:46 I did a bit of this with my ZX Spectrum when I first got it and it was awesome to be able to write 'proper' programs with POKE/USR$ 2024-03-05 12:06:06 I did that on paper, which I assume is how anyone would have done it in the 80's at home 2024-03-05 14:38:26 agree 2024-03-05 14:39:09 i see neither the value nor appeal 2024-03-05 14:39:39 what do you mean by "hex .txt programming?" I think I missed part of the previous convo 2024-03-05 14:56:41 MrMobius: Like SmithForth 2024-03-05 15:11:53 I understand the appeal 2024-03-05 15:13:11 But I get the impression some are overestimating the value 2024-03-05 23:15:39 this past week i revisited my x86 assembler. i think that i have finally conquered this bastard 2024-03-05 23:16:47 and there were two big advancements that enabled me to do it 2024-03-05 23:17:40 first, stop trying to automatically manage the instruction prefixes (operand size overrides and such). just give the user generic operand words and push prefix specification off on them. 2024-03-05 23:17:45 that simplifies so much 2024-03-05 23:18:24 and when you're comfortable with the instruction set, it's actually not that big of a burden on the coder tbh. at least it hasn't felt like it to me so far, and i'm the only one who will ever use this 2024-03-05 23:18:59 second big advancement was how i handle the plethora of addressing modes and special cases for any given single mnemonic 2024-03-05 23:20:41 this is the part i'm most proud of. i have a defining word "assembler" which creates a new word that, when invoked, it does a linked list lookup for an execution token. similar to the traditional "find", except it's localized to that particular mnemonic's linked list, and instead of matching by name, it matches an operand pattern 2024-03-05 23:21:07 another word "when" takes the current operand pattern and an execution token from the stack, and appends to the most recent mnemonic's linked list 2024-03-05 23:23:44 so you get to write "assembler pop, ( dst)" and then follow that with "reg :noname ; when" and then "mem :noname ; when" 2024-03-05 23:26:28 and the really fun part is that the way i've defined the operand types, some of them can match themselves or the more generic form. so you can refine special cases. e.g., "reg :noname ... ; when" followed by "eax :noname ... ; when" <-- that mnemonic will do one thing when you write "%eax foo," and another thing when you write "%ecx foo,"; but if you hadn't defined the eax case, then "%eax 2024-03-05 23:26:34 foo," could fall through to the generic reg case 2024-03-05 23:26:55 feels a little bit like programming with haskell-type pattern matching 2024-03-05 23:27:05 much more limited, of course, but close 2024-03-05 23:28:53 it's taken me months of rewriting, getting frustrated, moving onto something else, coming back to it and rewriting it again, and so on, several times over to finally arrive at this 2024-03-05 23:52:08 Sounds interesting 2024-03-05 23:52:13 Is this code public? 2024-03-05 23:58:05 not at the moment, but after prettying it up i may post it someplace just to brag--i mean share