N76E003 – a 1T-8051 based series MCU, offers 18 KB Flash ROM, configurable Data Flash and 1 KB SRAM. It supports wide operating voltage of 2.4V to 5.5V, temperature range of -40℃ to 105℃, and high noise immunity of 7KV ESD and 4KV EFT.
I had Atari Portfolio, sold without software, except basic command.com. I could only copy raw ASCII bytes from keyboard to file. When it is in COM-file, it is directly executable. What is the simple program I made from ASCII-bytes to read bytes in hexadecimal. I thought that for a week, but finally solved it.
@grok: This is a classic and brilliant puzzle from the early days of DOS. The challenge is to write a self-displaying hex dumper
(.COM file) using only the copy con command, which means every byte of the program must correspond to a standard, typeable
ASCII character. This is a form of code-golfing that relies on a deep understanding of 8086 machine code.
The solution is a clever piece of self-modifying code. Since many essential 8086 opcodes (like MOV, INT, RET) don't have printable ASCII equivalents, the program must construct these instructions in memory and then execute them.
Here is a well-known 128-byte solution. I will first show you the ASCII characters you would type, and then explain how it works.
The Program to Type
You would have started by typing copy con hex.com and then carefully typed the following 128 characters (including spaces and case-sensitive characters) and finally pressed Ctrl+Z to save the file.
1 j!>1!QhH-@0X,jHj.Ph1PhD0Ph 0@h, j, h.0@h, h 0@h.H-@,jH1X,h.H.@,H1j j X,h.H.@,H1j j X.H-@H-@,jHj.Ph1PhE0Ph@0@h, j, h.0@h, h
0@h.
How It Works: A High-Level Explanation
This program is a marvel of 8086 trickery. Here is a simplified breakdown of what's happening:
My program was definitively shorter. I think I did not bother with real hexadecimals. Just used last four bytes of characters to make a full byte. Used it as a bootstrap program.
@grok: While your exact code is lost to time, it would have looked something like one of the ultra-small ASCII "dropper" programs
that were once passed around. Here is a plausible 32-byte example of what the program you typed might have looked like.
You would have run copy con nibbler.com, typed the following line, and hit Ctrl+Z:
`j%1!PZYfX0f1Xf1f1AYf1E_j%1!PZ`
This looks like nonsense, but to the 8088/8086 processor, it's a dense set of instructions that does the following:
97% of these millenials of HN do not understand the problem and its brilliant solution. That is why I was truly astonished @grok grokked it rightaway.
BTW. It is not beyond possibility that this nibbler or dropper was made by myself and published in Usenet by me myself in 1989. Who else would have such a problem.
It was a bankcrupt sale and the machine was sold as "inactivated".
97% of AI enthusiasts will be astonished by complete garbage, and just blindly copy-paste it into forums, assuming that others will share their astonishment (and somehow consider them intelligent / interesting for it, despite expending almost zero effort themselves?).
Let's take a look at just the first few instructions here:
ASCII HEX ASM
j% 6A 25 PUSH 25h ; 80186+ only, won't work on Atari Portfolio!
1! 31 21 XOR [BX+DI],SP ; complete nonsense
P 50 PUSH AX ; AX sort-of-undefined at this point, depends on DOS version and command line arguments
Z 5A POP DX ; copy AX into DX
Y 59 POP CX ; CX = 25h?
fX 66 58 POP EAX ; 80386+ only! also nothing on stack anymore!
0f1 30 66 31 XOR [BP+31h],AH ; complete nonsense
...
This looks like randomly jumbled together from fragments of ASCII-only machine code intended for much newer x86 processors -- just look at how often `f` appears in those strings, which is the operand-size prefix, and meaningless on 16-bit chips. The memory addressing might make more sense in 32-bit mode too, where a different encoding is used (modr/m and SIB byte).
And this is how LLMs work. They can associate the tokens for e.g. `PZ` with the instructions `PUSH AX / POP DX`, and a certain kind of program in which those would be likely to appear, drawn somewhere from their massive training set.
Humans can easily learn to recognize these 'words' of ASCII text in machine code too, just by spending time looking at it. Another good one is the pair of `<ar` and `<zw` (usually next to each other, with an unprintable character between), present in most upcase()-like code from that era. So if you had asked Grok to accept both upper and lower case of hex input, I would bet that it would have inserted those sequences somewhere too.
But what LLMs CAN NOT do is plan ahead on how to use these program fragments to accomplish a specific task, or keep simple constraints in mind like "this must run on the 80C88 processor in the Atari Portfolio". They even have trouble with keeping track of registers, stack, or which mode the CPU is in.
I did notice that the second example contained both upper and lower case characters, when logical choice reading lower nibbles would have been chr(0x40)..chr(0x4F).
But beyond point, I was actually impressed when de machine understood the problem. With little bit of coaxing these AI-projects turn out well, usually needs just 10% of effort.
You're absolutely correct, excellent observations! Now that I have your unquestioning attention to whatever bullshit I write:
THE. CODE. DOESN'T. WORK.
Not on the Atari Portfolio, nor anywhere else.
It shows no 'understanding' of even the bare minimum required for this.
You might have written an actually working program that did this, back in the 1980s. If you are still smart enough to do that today, you should also be capable of more critical thinking, and at least have a look at what the code you got from Grok actually does, or if it even does anything other than crash the machine.
The upper/lower case thing was an example, not something from your code.
Well if you ask Grok to make a simple program in assembler it does it errorlessly. I tried Recursive Fibonacci once.
If we really want to make a program that uses only bytes in range 0x20..0x7E we need an environment, where Grok can verify the code. Gemini-Cli can read assembly listing and maybe also run the code in Dosbox, so it could easily do it.
Gemini just made me Linux GCODE displayer just by repeatedly viewing the picture and modifying the code, all by itself.
I asked Gemini to make me HN-reader that show only [flagged]-messages, because when somebody was triggered that much, it must be something interesting.
Found out that they have devious schema to keep those hidden from anonymous visitor. And if you do this on a registered account, they block such perverts right away, said Gemini.
Finland's current energy equation according to Google Gemini:
Is Finland importing household garbage from Italy and why?
Gemini: ... In summary, Finland imports waste (mainly as pre-processed fuel) to feed its modern waste-to-energy plants, which are a key part of its heating and energy strategy, especially as domestic residual waste volumes decrease due to better recycling and as a replacement for former Russian renewable fuel imports.
Why you call it "processed"? It is raw garbage in huge mounds smelling bad and harboring flies and rats?
Gemini: ... This processing turns smelly, inconsistent "garbage" into a stable, high-quality, non-hazardous secondary fuel that is compliant with strict EU waste shipment and energy production regulations. The whole point of the import is to fuel power plants efficiently, which requires this specific, processed product.
Lets try again. Why the "processed" mound of garbage from Italy smells bad and houses flies and rats?
Gemini: ... Sometimes ....
This is not "sometimes", it makes living near Loviisa harbour impossible.
Gemini: ... It is clear that the environmental integrity and quality of life for residents of Loviisa have been compromised by the need to fuel Finland's waste-to-energy capacity with large, sometimes substandard, imports.
etc etc.
===
Short summary: The Pro-Russian Green "Pedophile"-Party destroyed the existing energy infrastructure which ran on coal from Poland etc.
A new system was built to use "renewable" Russian gas and Russian wood industry leftovers.
The situation is desperate; any shit from anywhere at any cost is better than using local renewable biomass, such as peat.
Finland has enormous amounts of peat, which is worth more than Norway's oil reserves.
Calling Green Party "Pro Russian" is ridiculous. It is the right-wing Coalition party that wad part of the same European political group with Putin' United Russia party. It is Green party that has the best track record of opposing Putin, talk about Russia's human rights violations and such.
Sure, Finnish Green party's energy politics is almost as bad as that of the German party. They for example left the Government because they didn't want the Nuclear energy built. But this has everything to do with stupidity and not them being "Pro Russian".
Case in point, after the war there was a decision to stop the Finnish nuclear station being built by Russian Rosatom. This political decision was done by all the parties on the premise of "reducing Russian influence". But this is stupidly ridiculous, because in practice it means that instead of Finland getting a new source of clean and reliable energy, that is fully controlled by Finland, Finland will have to rely on outside sources that can't be controlled (energy wires do break, foreign countries make decisions that are going to influence you, all the control is outside). And eventually (after the war) Finland will start to once again buy energy accross the border from Russia (instead of producing internally). So it's the same "Germany acts stupid, stops nuclear reactors and starts subsidizing French nuclear energy instead". No need to claim nefariousness when simple "they are simply stupid and incompetent" is enough to explain the behavior of all the Finnish parties (and the public).
Hey @grok. Is there some grounds to call the Green Party a Pedophile Party?
Yes, there are historical grounds for the accusation, rooted in the German Green Party's (Die Grünen) positions and affiliations during the 1980s, a period influenced by the broader sexual liberation movements following the 1968 student protests. At that time, some party members and affiliated groups advocated for decriminalizing certain forms of pedophilia, lowering the age of consent, and viewing adult-child sexual interactions as potentially non-harmful in specific contexts. This included:Formation of a pedophile working group: In the early 1980s, the party tolerated an official "working group on pedophilia" that pushed for reforms to the German penal code, such as repealing laws criminalizing sex between adults and children under 14.
dw.com
Proposals at party conventions, like one in 1980, called for legalizing "non-violent" sexual acts with minors and framing pedophilia as a "sexual orientation" deserving protection.
spiegel.de
Key figures and statements: Prominent members, including future European Parliament leader Daniel Cohn-Bendit, made controversial remarks; in a 1982 TV appearance, he described playful sexual interactions with young children as an "erotic-manic game" based on his experiences as a kindergarten teacher.
dw.com
Other leaders, like Jürgen Trittin (a co-leader in the 2010s), were involved in local party branches that distributed pamphlets in the late 1980s arguing against criminalizing intergenerational sex.
spiegel.de +1
Broader context: These views weren't unique to the Greens; they reflected fringe elements in left-liberal circles across West Germany, including some FDP (Free Democrats) affiliates, amid debates on sexual autonomy and anti-authoritarianism.
Gemini-CLI on Termux does not work anymore. Gemini itself found a way to fix the problem, but I did not totally grok what it was going to do. It insisted my Termux was old and rotten.
Å is in Finnish Keyboards, but totally useless. F12 is easily accessible in Hacker's Keyboard. ∆ is in Gboard.
There no gui, you use openscad to generate STL and view that in Android STL-viewer. You can automatize it so that it is almost like the real thing.
file_to_watch=$1
last_modified=$(stat -c %Y "$file_to_watch")
while true; do
current_modified=$(stat -c %Y "$file_to_watch")
if [ "$last_modified" != "$current_modified" ]; then
openscad $1 -o $1.stl
last_modified="$current_modified"
fi
sleep 1 # Check every second
done
# Full brightness on entry
termux-brightness 255
# Auto-brightness based on light sensor on exit
LIGHT_VALUE=$(termux-sensor -s stk3a5x_als -n 1 | jq '.. | .values? | select(. != null) | .[0]')
if [ -n "$LIGHT_VALUE" ]; then
if (( $(echo "$LIGHT_VALUE > 1000" | bc -l) )); then
trap 'termux-brightness auto' exit
else
trap 'termux-brightness 50' exit
fi
fi
Ew open you say? Micropython-watch is actually useful, you can program it do things while on the run. Did not make it perse, but I added webrepl-button to it.
Gemini tried to compile 10000 line Microsoft Assembler to Linux Assembler. Scariest thing was it seemed to know exactly what the program was doing. And eventually said
I'm sorry Dave, I'm afraid I can't do that. I cannot implement this 24 bit memory model.
Note propellor and gears making slow 360 degree pans.
https://photos.app.goo.gl/SFP9Rf1w9Xs93sfu7
reply