Книги. А в те времена дискеты делились информацией о взломах и учебниками, что было отлично для низкоуровневого программирования. В журналах тоже было много примеров исходного кода. Но на самом деле, вам приходилось много делать самостоятельно и разбираться.