| 06:39 |
awt_akris |
$ticker btc usd |
| 06:41 |
busybot |
Current BTC price in USD: $71680.71 |
| |
~ 4 hours 57 minutes ~ |
| 11:38 |
signpost |
coooorn. |
| 11:39 |
asciilifeform |
lol |
| |
~ 3 hours 23 minutes ~ |
| 15:03 |
hapax |
http://logs.nosuchlabs.com/log/pest/2024-03-10#1033250 << interesting |
| 15:03 |
hapax |
seems erc doesn't have an obvious knob to turn it off |
| 15:05 |
hapax |
asciilifeform: been thinking about the "ffa on bare iron" |
| 15:06 |
hapax |
and i think it's not really complicated to implement at this point |
| 15:06 |
hapax |
i mean, ward right now contains enough "runtime" to run peh+ffa |
| 15:08 |
hapax |
and, since there's no need for working along other programs in dos userspace (as you wanna go uart), the start.s can just be a long mode setup |
| 15:08 |
hapax |
(entirely doable within one hd sector, done it before, you probably did as well, but i haven't studied your "toystore os" you once posted) |
| 15:10 |
* |
asciilifeform iirc had a loader-and-longmode-in-1-sector but maybe not in the tar ref'd above |
| 15:10 |
asciilifeform |
not had the identity mapping of memory tho, or irq init |
| 15:10 |
asciilifeform |
(iirc) |
| 15:11 |
hapax |
memory is the easy part |
| 15:11 |
hapax |
fortunately, peh doesn't malloc |
| 15:11 |
asciilifeform |
needs decently-sized stack tho, + however much reseve for tape |
| 15:11 |
asciilifeform |
*reserve |
| 15:11 |
hapax |
sure |
| 15:12 |
hapax |
i'm thinking of int 13hing it out of the drive to memory |
| 15:12 |
hapax |
setting up the segment as read/execute |
| 15:12 |
asciilifeform |
is classically how bootloader goes |
| 15:12 |
hapax |
identity mapping everything we can |
| 15:12 |
asciilifeform |
('first pillage, then burn', however, int13 from disk ~before~ longmoad) |
| 15:12 |
hapax |
and, dunno, knob at compile time to set how much ram for stack, how much for tape |
| 15:13 |
hapax |
sure |
| 15:13 |
asciilifeform |
the latter already in there |
| 15:14 |
* |
asciilifeform notes, re: possible field applications of 'dos ffa', that not 1 single fg purchaser asked for the rs232 plug. tho it aint difficult to buy off shelf |
| 15:14 |
hapax |
as in? |
| 15:15 |
hapax |
my dos peh is like 140k |
| 15:15 |
hapax |
so it fits within conventional memory |
| 15:15 |
asciilifeform |
http://www.loper-os.org/pub/ffa/hypertext/ch21a-ter/limits__ads.htm#25_4 |
| 15:16 |
asciilifeform |
if yer already switching into 32/64, may as well allow tapespace to fill whatever you got |
| 15:16 |
hapax |
well, that's tape space |
| 15:16 |
asciilifeform |
(with coupla MB reserved for machine stack) |
| 15:16 |
hapax |
oh, you mean filling it before going long mode? |
| 15:17 |
hapax |
i don't quite get it |
| 15:17 |
asciilifeform |
no reason why dos conventional mem limit oughta apply to anything in dos ffa |
| 15:18 |
asciilifeform |
i.e. once you're in 32 (or long), oughta be able to access all of physical mem as 1 segment |
| 15:18 |
hapax |
sure, but i'm worried about loading it up in long mode |
| 15:18 |
hapax |
sure thing |
| 15:18 |
hapax |
but how to get ffa to memory? |
| 15:18 |
asciilifeform |
naturally gotta load from disk while int13 still worx (or yer stuck introducing nonportable i/o crapolade) |
| 15:18 |
hapax |
i wanted int 13h first, get it to <640k, long mode + identity mapping after that |
| 15:18 |
hapax |
exactly |
| 15:19 |
* |
asciilifeform nods |
| 15:19 |
hapax |
therefore, long mode after loading peh to memory |
| 15:19 |
asciilifeform |
right |
| 15:19 |
hapax |
and after that we can play with uart |
| 15:19 |
hapax |
exitprocess can just do a GOTO 10 |
| 15:19 |
hapax |
and we're looping, resetting the stack, etc. |
| 15:19 |
hapax |
possibly zapping the tape |
| 15:20 |
asciilifeform |
yea there's no reason to ever exit. zap when tape ends & eat (possible) new tape, until poweroff |
| 15:20 |
asciilifeform |
'ada handily provides a loop with no termination condition, because traditionally the termination condition was detonation'(tm)(r)(fughetwhere) |
| 15:21 |
hapax |
seems reasonable |
| 15:21 |
hapax |
i might try it later, probably won't even require any changes to gcc |
| 15:22 |
asciilifeform |
the 1 gotcha afaik, is that there's nothing resembling a fallback rng on typical naked pc iron |
| 15:22 |
hapax |
yeah, well, i thought an fg is a must in this case |
| 15:23 |
asciilifeform |
not necessarily fg, but asciilifeform not knows of a serial port rng that is reasonably safe to eat raw |
| 15:23 |
asciilifeform |
obv folx can plug in whatever they like. |
| 15:24 |
hapax |
a box with /dev/urandom over serial!!1 |
| 15:24 |
asciilifeform |
lol |
| 15:24 |
asciilifeform |
phunphakt: there was at one time a (reasonably good, if extremely slow) trng hack for msdos |
| 15:25 |
asciilifeform |
... used mb clock crystal jitter |
| 15:25 |
asciilifeform |
afaik lost to the sands of time, but potentially could be recreated for use as fallback |
| 15:25 |
hapax |
oh, cool |
| 15:26 |
asciilifeform |
idea is, if you have rdtsc (pentium & up), can make use of jitter in diff b/w int18's timer and it |
| 15:26 |
asciilifeform |
(given as they came from physically separate crystals) |
| 15:27 |
asciilifeform |
was good for a few bytes/sec. iirc. |
| 15:27 |
asciilifeform |
not a substitute for an actual trng, but considerable improvement over mashing keys & similar a la orig pgp |
| 15:28 |
asciilifeform |
'HPET' (iron 2005 & up) anuther crystal still. |
| 15:29 |
asciilifeform |
where no rdtsc, used simple increment loop. |
| 15:29 |
asciilifeform |
anyways it aint as if there's a hurry, for this. |
| 15:30 |
asciilifeform |
hpex: outta curiosity, what motivated you to put in the sweat for your dos port ? |
| 15:30 |
hapax |
sure, i wanted to try a "peh(1) for plan9" first |
| 15:30 |
asciilifeform |
iirc phf into plan9, maybe will take an interest in that one |
| 15:31 |
hapax |
good question, i don't really remember |
| 15:31 |
hapax |
i actually did most of the job on, i believe, summer 2021 |
| 15:31 |
hapax |
been playing a lot with ada back then |
| 15:32 |
hapax |
i've actually been learning ada with the ffa series |
| 15:32 |
hapax |
(reading some other sources as well, but ffa is a great introduction) |
| 15:32 |
hapax |
i also really like dos for some reason, the only usable os that "fits in head," at least for me |
| 15:33 |
hapax |
guess i wanted to try it |
| 15:33 |
hapax |
first version, back then, was using a gcc-8 or something like that |
| 15:33 |
asciilifeform |
hapax: ffa was originally for a 'realtime' application, but this fell through, asciilifeform decided that it oughta be turned into a rationally-designed replacement for gpg et al |
| 15:34 |
hapax |
running -O2 optimized some code behind a RET |
| 15:34 |
hapax |
so i tried making an ada dev stack with gcc-4.9.4 |
| 15:34 |
hapax |
(since it does work more reliably than newer versions) |
| 15:34 |
hapax |
tried playing with extenders, figured out dos32a, managed to make a tsr |
| 15:35 |
asciilifeform |
^ last version used by asciilifeform , as immediately after that one, was catastrophically broken in various ways |
| 15:35 |
hapax |
and i wanted to have peh on my dos machines, since i sometimes use it as a desk calculator |
| 15:35 |
hapax |
has an elektronika mk-52 feel to it |
| 15:35 |
asciilifeform |
indeed, rather deliberately |
| 15:36 |
* |
asciilifeform grew up with the mostly-identical mk61 but yes |
| 15:37 |
hapax |
asciilifeform: yeah, i got the "use <gcc5" from you guys |
| 15:37 |
asciilifeform |
the details of why, are amply expanded on in the logs, yea |
| 15:38 |
hapax |
been reading it and growing suspicious of it, but what really did it for me was the code being optimized away |
| 15:38 |
hapax |
at first i thought i did something wrong |
| 15:38 |
hapax |
a problem with extender or something |
| 15:38 |
hapax |
caught it while reading the assembly listing |
| |
↖ |
| 15:39 |
asciilifeform |
famously gcc5 snips out crypto zeroizations |
| 15:39 |
hapax |
since then been using exclusively gcc-4.9.4 |
| 15:39 |
hapax |
yeah, i remember that from the logs |
| 15:39 |
asciilifeform |
( asciilifeform not even knows if affects all backends, incl ada's, but is supremely annoying and the simplest cure is to avoid gcc>=5 ) |
| 15:39 |
hapax |
at least a code like that will pretend to work correctly |
| 15:40 |
hapax |
but INTs behind a RET don't really trigger |
| 15:40 |
asciilifeform |
possibly curable by declaring the working memory as volatile |
| 15:40 |
hapax |
no idea what happened there and why gcc even thought it would be a good idea |
| 15:40 |
hapax |
possibly |
| 15:40 |
hapax |
on gcc4 it just works(tm), so i don't complain |
| 15:40 |
asciilifeform |
( subj, but again, not tried ) |
| 15:40 |
asciilifeform |
aaha |
| 15:41 |
hapax |
i compiled the entire system with it, completely musltronic, etc. |
| 15:41 |
asciilifeform |
a++ |
| 15:41 |
hapax |
well, i still don't have x |
| 15:41 |
hapax |
i'll have to sit on it one weekend |
| 15:42 |
hapax |
a road through hell, doing it all from scratch, my gcc is patched to oblivion |
| 15:42 |
asciilifeform |
hapax: ever looked at signpost's gcc ? |
| 15:42 |
asciilifeform |
he also laboriously patched |
| 15:42 |
hapax |
i think i did at some point, i even have some of the same patches |
| 15:42 |
hapax |
hunted the others in the wild |
| 15:42 |
asciilifeform |
( iirc started with ave1's , but went considerably farther ) |
| 15:43 |
* |
signpost needs to get my turds all back on a server. |
| 15:43 |
hapax |
oh, i guess it was ave1's |
| 15:43 |
hapax |
might check the other one later |
| 15:43 |
asciilifeform |
signpost: i'ma mirror , when you get a chance to stand yours up |
| 15:43 |
hapax |
i had to patch some other things to, new c standard apparently allows omitting names for unused parameters |
| 15:44 |
hapax |
(i think i needed that for some alsa utils or something like that, my machine doesn't have x, but it has a soundblaster onboard) |
| 15:45 |
* |
asciilifeform must bbl |