> I've come to the conclusion that it wasn't coding on assembly level that made development in the 80s slow, but old vs modern tooling
Well, perhaps a bit of both, coupled with the fact that there were extremely restrictive hard limits to deal with - processor speed, amount of memory, as well very limited instructions sets such as the 6502 (although you got used to that).
As far as tooling, macro assemblers have been around for a long time. When I used to work for Acorn Computers in the early 80's, some people chose to use MASM, while others just used the BBC BASIC assembler. I'm not sure that it really made much difference. Fighting the limited hardware - speed and memory - was always the challenge.
Another factor that made development difficult/different was just the slow speed of iteration, especially if you were dogfooding as we were at Acorn and developing on the same impoverished hardware you were developing for. A combination of slow build times and a less expressive language (assembler) made for a very different feel to development - you were making more of a commitment to design choices rather than them being fluid and easy/fast to change. When TurboPascal came on the scene many people found it revolutionary just due to the speed.
I do think that language and libraries (which only becomes possible with capable enough hardware that efficiency isn't the main concern) makes a big difference to development though - you can just think at a higher more abstract level. How great it is in C++ to be able to use something like std::map with no concern for efficiency, when back in the day you'd be hand coding a custom hash table and sweating every cycle of the hash function.