¿Hay alguna lógica detrás del orden de los códigos ASCII?

Estaba enseñando C a mi hermano menor estudiando ingeniería. Le estaba explicando cómo los diferentes tipos de datos se almacenan realmente en la memoria. Le expliqué la logística detrás de tener números firmados / sin firmar y un bit de coma flotante en números decimales. Mientras le contaba sobre el tipo de char en C, también lo llevé a través del sistema de código ASCII y también cómo char también se almacena como un número de 1 byte.

Me preguntó por qué 'A' ha recibido el código 65 de ascii y no otra cosa. Del mismo modo, ¿por qué 'a' recibe el código 97 específicamente? ¿Por qué hay una brecha de 6 códigos ASCII entre el rango de mayúsculas y minúsculas? No tenía idea de esto. ¿Puedes ayudarme a entender esto, ya que esto también me ha creado una gran curiosidad? Nunca he encontrado ningún libro que haya discutido este tema hasta ahora.

Cuál es la razón detrás de esto ? ¿Los códigos ASCII están organizados lógicamente?