Trying to figure out how I want to slice all that. Originally it was all for fun. Then I went to pull down the dev tools for the Raspberry Pi Pico. To do development on a Raspberry Pi proper they wanted a 2GB download of tools. Then, the default "Hello World" build resulted in a whopping 40K UF2 file.
(?!?
) I did some poking and looked at the bare metal version of it and was able to get the same demo down to 512 bytes
(Which is technically bigger than it needs to be, but the smallest block size for the file format.
)
I've played with other things like Raspberry Pi Zero. The ELF files generated by the stock tools have a lot of noise in them. Some of it is just symbol tables and the like that you can work out, but there is also just a lot of sloppy stuff from the multiple layers of abstraction. I realized that some of the stuff that I was doing could likely turn into a general platform for IoT for current platforms. Pondering if I could use turning it into a real tool set for more modern stuff to subsidize working on the older stuff.
(Sell an IoT tool that also has 'vintage' modules
)
That said, I know for a fact that there is a lot of CE equipment still in the field. Symbol scanners are built tough and there are likely a number of IT shops still suffering old tools. Not to mention all the hardware I find laying around for cents on a dollar that is only 'scrap' because folks can't be arsed to support them anymore.
A general purpose assembler was always on my bucket list. If enough folks where interested in playing with it, I could see starting a few general retro themed repos for the port to .Net Core. Getting back into it, I'm curious
(short of the obvious
) what gaps still exist.
Most of this is just 'information' i.e. the right scan of a given older bit of hardware could yield a set of data files that could be used by a tool chain to generate code. Seas of header files are an arcane way of thinking of the issue when you could likely merge some of the information in with the technical bits. Companies have tended to develop tool chains like rockets used to be built... i.e. You build a new one for each effort, and then throw it away. It's depressing that Microsoft itself has taken so long to embrace going pure .Net with tools. There is zero reason that they don't have just modules that you can pull into VS that still support any chipset. That and with both .Net and Java in existence, the notion that an app can ever get 'outdated' is just funny. Java is the new COBOL, Swing is slated to be supported until 2030 and I promise you someone will likely pick up the mantle after that. That I can't just drop something on my current Windows 10, or MacOS daily drivers is just silly.
I would argue that even GCC has sort of dropped the ball some on this. My vision is a stock base system, it can be centered around a build core or an IDE, likely both. A platform is broken down into its base components and a 'store' of sorts is created to host the modules. So if you want to say start an effort for a Pocket PC handheld there is likely a CPU core
(or cores
) for the base machine code bits. There is a container for packaging
(PE building, CAB generation
) that for that platform, and then there is some OS layer support, and finally an outside 'wrapper' that is really just specialized project types so you can easily just select a build target for what you are doing.
I've gotten down to the bits on a ton of platforms. I've written tools to generate PDBs for Palms, EF2, ELF, going to be committing to getting the Windows stack going. If done right, it's a lot of work, but oddly a lot less than it sounds. After a few prototypes and attempts on the assembler, I'm leaning towards a core that would actually treat the instruction sets as data, so that supporting a new chip variant would be as easy as just defining the chip in a way it can understand. This would also allow for the system to 'evolve' without the earlier stuff lagging. Case in point, my shallow 6502 module was good enough to crank out Commodore 64 runnable code, but dealing with the ARM chipset and its flavors expanded how the core needs to work, etc.
It's a lot of fun, but I'm still looking for what the 'tipping point' is where it is anything more than an academic curiosity. Lots of learning to be done. If the community has any utilities or smaller scope things that are needed let me know. Back in the day I started a project for the Palm called Pocket Knife which was just a geeky collection of tools to use on the device for development. Remembering as I get to a bare CE device how maddening it is to not even be able to copy a ROM based app to a CF card to rip it apart and see what makes it tick. I figure I'll start trying to get to 'Hello World' with my tool chain and in parallel start poking around an old tool chain. I actually have Visual Studio 2005 laying around that I had bought back in the day to mess with Pocket PC. I guess I'll be dusting that all off in a VM again.
Glad to have found this site. Mainly looking for a crowd as mad as I am to be dusting this stuff off at this point.