to what extent is this Smalltalk all the way down ? Can I replace the drivers with Smalltalk code ?

Not in the current version, here the drivers are implemented in C/C++ in the circle bare-metal library [1].

In general, I think Smalltalk is not that well suited as a systems programming language since garbage collection might mess with your timing and you would also need to find a way to handle asynchronous events (such as interrupts).

Nevertheless, Smalltalk has been used for low-level control of robots, e.g. in NXTalk [2] for the Mindstorms NXT ARM7 platform. However, the VM also relied on C code (the LegOS project) for driver code.

[1] https://github.com/organix/pijFORTHos [2] https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/in...

There is an almost all-Smalltalk bare metal system for X86, CogNOS. It runs on top of NopSys, about 3500 lines of C and 600 lines of assembler for booting, accessing device registers, and responding to interrupts. But the file system etc. are in Smalltalk.

https://github.com/nopsys/CogNOS

https://charig.github.io/assets/papers/SCDE-DLS.pdf