Of course, my knowledge of the history of writing extends to a single undergrad course and a quick skim of Wikipedia as a refresher. I'll happily admit I'm wrong if that turns out to be the case.
Anyway, in this context I'm counting 300BCE - 300CE as "very roughly 0CE".
Other alphabets (Greek and Cyrillic) created capital letters in emulation much later (circa 1800's). Most alphabets/sylabaries (Arabic, Hebrew, Korean, Japanese, etc) don't have upper and lower cases.
Likewise punctuation, which prosidic languages (like English) need to signal stress and emphasis which can transform meaning, but which are also absent from lots of other writing systems.
I think talk of 'more modern' or 'less modern' is nonsense though. Writing is an imperfect representation of speaking, and whatever works is just fine.
Having written code which renders Arabic text, I found “joining” up the letters to be quite simple. It's just a few rules to choose which glyph to display for each character depending on context. The tricky bits, I found, is in integrating a right-to-left script with systems which were made with only left-to-right in mind.
What I usually (not always) found out diring my experiments woth Persian is that the gnu tools themselves deal with it quite fine - but the terminal application shows them at pretty random places. If there is both LTR and RTL in one file, havoc usually ensues.
(persian also has this funny "invisible space", but it causes only small annoyances)
Plan 9 had the courage to shed this cruft by having simple text windows which have a prompt. No curser addressing and no crazy control codes. That makes rendering it just as easy (and beautiful) as rendering text box contents. I wish the Linux desktop environments would follow suit.