Livros. E antigamente, disquetes eram compartilhados com informações de cracking e tutoriais, ótimos para programação de baixo nível. As revistas também tinham toneladas de exemplos de código fonte. Mas, na verdade, você tinha que fazer muito por conta própria e descobrir as coisas.