Paul Laughton tenía una buena motivación para hacerlo en 7 semanas
Usando una calculadora de inflación en USA que hay en algunas páginas, sale que "
13,000.00 US Dollars of 1978 are worth 36,669.92 US Dollars of 2013".
Creo que a pocos informáticos les pagarán hoy en día esa cantidad por apenas 2 meses de trabajo, y menos en España.
mentalthink escribió:me ha llamado la atención que las lineas del código ASM son correlativas o sea 3800-3801 esto es porque el 6508 cada instrucción es de un ciclo no?
Bueno, el código corresponde a ensamblador del MOS Tech 6502. No sé si el Apple II tenía un 6508 (versión especial del 6502 con puertos I/O, similar al 6510 que después incorporaría el C64) pero eso se traduciría en la disponibilidad de puertos, mientras que el código base sería compatible con el 6502 original, y al menos en la primera página del listado hace referencia a que es una CPU 6502.
Como ya han comentado, la primera columna marca simplemente el número de renglón: puedes notar que hay muchísimos renglones vacíos, colocados entre las rutinas simplemente para mejorar la legibilidad, y que no corresponden a ningún código ensamblado. La segunda de las columnas es la que sí marca la dirección de memoria, para a su derecha mostrar el volcado hexadecimal de dicha instrucción. Obviamente hay instrucciones de 1 byte, de 2 bytes y de 3 bytes, como en cualquier procesador de 8 bits (el Z80 tenía a veces instrucciones de 4 bytes porque tiene más modos de direccionamiento y porque el conjunto completo de sus instrucciones no cabían con solo 256 opcodes). El tiempo en ciclos es dispar, según si se debe acceder a memoria o no, y las instrucciones varían desde 2 a 7 ciclos. Hay muchísimas páginas en Internet sobre el 6502 con dichos listados... la primera que me sale en Google es ésta:
http://www.6502.org/tutorials/6502opcodes.htmlEn un vistazo muy rápido del código, lo que me ha llamado la atención es que, parece copiar parte de sí mismo en la RAM más alta que encuentre (según el el albarán de precios disponible en el artículo, la máquina base se distribuía con solo 4 KB y la diferencia hasta 48 KB eran unos brutales 1600 dólares) y parchea los offsets de las estructuras dependiendo de la posición. Me recuerda al firmware del Amstrad, que tiene parte de sus rutinas copiadas a RAM y que pueden ser modificables por el usuario. O sucede esto que cuento, o no entiendo muy bien cómo es posible que el código escriba en una posición de memoria cercana, que supuestamente debería de estar protegida por estar en ROM.