Hacker News new | ask | show | jobs
by bsder 452 days ago
256KB ROM/128KB RAM isn't very small.

That is larger than the average computer through about 1990 ...

(I know people will say I'm being pedantic. However, RAM and Flash define most of the price of a microcontroller. So, a factor of two--especially in RAM--means a significantly smaller and cheaper chip.)

2 comments

Depends on use case for sure, though I'm not sure why you'd want an interpreted language on a microcontroller unless you had plans to be able to execute dynamically loaded code in the field, which probably means it has some kind of network connection, and 256KB ROM/128KB RAM isn't too big for your Espressif chips and such.
> I'm not sure why you'd want an interpreted language on a microcontroller

Using a microcontroller to interrogate itself is a really valuable debugging technique.

Generally, you have attach to a UART port and attach a terminal emulator. This is especially important when considering the plethora of sleep modes that now exist for modern SoCs. Debug probes generally put the chip in maximum performance mode which often wipes out the state your trying to debug (especially important for sleep bugs).

Yeah, but 1990 was 35 years ago and Ruby even didn't exist. And the average computer was quite bigger than a RP2040, and consumed much more power :)

I mean, it's very difficult to compare those things. It's a high level language runtime weighting a very small fraction of the JavaScript we're loading on any silly webpage, and we can run in on an stamp sized microcontroller that costs a couple dollars and you'd typically need to program using a relatively low level language.

I think it's neat.

Edit: I was trying to remember our computer then. I think we already had an Amstrad PC1512 with 512KB of RAM by '87 or '88, and by 1990 the 286s with 1 or 2MB of RAM were already common.

No, but BASIC did.

And by the time of Amstrad PC1512, BASIC compilers became an option as well, although originally Darthmound BASIC was compiled, CP/M systems also had compilers available, it just did not fit into 8 bit home computers, which had to wait for the 16 bit wave of home computers.

There were other high level dynamic languages with compilers like Lisp subsets, xBase/Clipper.

So if we managed back then, there is no reason to not have a tiny Ruby version nowadays for similar environments.

Yeah. Many of the 8bit machines were lower than 128K stock, but those were uncommon by 90s. Even then, RAM expanders were common. The XT and AT had more than 128K, and the 286 was released in 1982 (volume production in 1983). The 386 was out, and had way more. The 486 was 1989, and it was commonly found with far more. So, really, 128K was only really a good amount of RAM in the early 80s.
Yeah, I'd need to ask my dad, but we got the Amstrad around '86 or '87 maybe, then a Nokia branded(weird, I know) 386sx/16 with 4MB, maybe around '90/'92, then a generic clone with a Pentium 120 and and magnificent Sound Blaster AWE32 around 96.
My household was Atari and then PCs, so I missed out on many different machines. Exploring them now is fun, but always time limited unlike childhood.
i share the same sentiment as you. why suffer writing C when one can enjoy the fruits of language features? it's certainly not optimal, but neither is 99+% of software nowadays. There's the feeling of waste and bloat, but the trade-off is language features!

on the other hand, nowadays, we can just generate C code using ai.. as long as the project doesn't get too big to grasp without abstractions. ;)

And we only had ASM for microcontrollers in 1990! (Or mostly, I think C PICs didn't arrive till later). And the tooling was terrible!

I don't hate those languages or think they shouldn't be used, but I don't know how to use them and I already know Python, so if I can easily do MicroPython on a microcontroller, I welcome it :D

And we only had ASM for microcontrollers in 1990!

Who is this 'we' you are talking about?

Jovial and CORAL-66 had been compiling for various microcontrollers and embedded systems since the 1970s. In the '80s, Ada took over that space.

By 1990, the 8051 (probably the most common uC at the time) had several C compilers, PL/M, at least 1 BASIC compiler, a Pascal, PL/M and several more. Some of those were years old by 1990. There was at least 1 Modula-2 compiler for the 8051, but that might have been a few years after 1990.

Keil, IAR and Tasking went on from 8051 C compilers to write compilers for dozens of microcontroller targets by 1990.

There were C compilers from others for 8096 (multiple vendors), TMS320xx and TMS340x0 (TI), 68xx (Hitachi), ADSP-2100 (Analog Devices), and more.

Intel had PL/M compilers for 8048, 8051 and 8096. Gary Kidall ported a PL/M subset compiler to the Signetics 2650, if you want something really obscure. Green Hills had Pascal compilers for a couple of embedded procs (i960, anyone?).

Lots more I've forgotten.