... o cómo escribir un sistema operativo de disco en 7 semanas.
http://www.computerhistory.org/atchm/ap ... urce-code/
Código fuente del Apple II DOS liberado
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Código fuente del Apple II DOS liberado
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- mentalthink
- Amiga 2500
- Mensajes: 2840
- Registrado: 11 Abr 2010, 15:06
- Gracias dadas: 45 veces
- Gracias recibidas: 14 veces
Re: Código fuente del Apple II DOS liberado
Muy interesante, una consultilla, en el códgio que hay en papel de impresora, 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?¿, pero entonces en el Amstrad porque siempre son 2, habrá alguna que sea de 1, y creo que hay alguna instrucción de 4 ciclos...
Vamos que son suposiciones mias, que a lo mejor no he dao pie con bola

Vamos que son suposiciones mias, que a lo mejor no he dao pie con bola


Re: Código fuente del Apple II DOS liberado


Si te refieres a las líneas del lado izquierdo, no tienen nada que ver con el ASM, solo son numeración de líneas como podrían serlo las del Basic antiguo. Lo que tú comentas serían las direcciones físicas que ocupan los bytes en memoria, y ahí, dependen del tipo de instrucción, que pueden ir desde 1 hasta donde queramos, según CPU. Lo normal es que sean de 1, 2, 3 o 4 bytes en la mayoría de CPU.
Hay CPU que ejecutan todas las instrucciones con el mismo número de ciclos que van en parejas (2 o 4 creo recordar, como los ARM por ejemplo).
- falvarez
- Amstrad PCW 8256
- Mensajes: 173
- Registrado: 10 Mar 2013, 16:59
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo SNES
- Primera consola: Nintendo GameBoy
- Gracias dadas: 11 veces
- Gracias recibidas: 4 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
mentalthink escribió:Muy interesante, una consultilla, en el códgio que hay en papel de impresora, 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?¿, pero entonces en el Amstrad porque siempre son 2, habrá alguna que sea de 1, y creo que hay alguna instrucción de 4 ciclos...
Vamos que son suposiciones mias, que a lo mejor no he dao pie con bola![]()
Vaya por delante que no he visto el código fuente.
Conceptualmente, una instrucción puede ocupar una o varias palabras de memoria y necesitar uno o varios ciclos de reloj para su ejecución. Eso sí, ambos conceptos no están relacionados entre sí.
Saludos.
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
mcleod_ideafix escribió:... o cómo escribir un sistema operativo de disco en 7 semanas.
http://www.computerhistory.org/atchm/ap ... urce-code/
Es que este hombre, Wozniak, tuvo lo que yo llamo "el momento informático perfecto". Se produce cuando uno tiene las ideas clarísimas en su cabeza, no necesita planificar nada, y con una pequeña libreta como mucho es capaz de hacer un proyecto de principio a fin en tiempo récord. Evidentemente hay que ser un lumbreras y un hacha, esto es muy difícil que le pase a un novato o con pocos conocimientos.
Y es normal, todo lo aprendido del Apple I lo retuvo en su cabeza y lo soltó del tirón con el Apple II.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
radastan escribió:mcleod_ideafix escribió:... o cómo escribir un sistema operativo de disco en 7 semanas.
http://www.computerhistory.org/atchm/ap ... urce-code/
Es que este hombre, Wozniak, tuvo lo que yo llamo "el momento informático perfecto".
Errrr.... un apunte: Wozniak hizo el hardware (la controladora de discos con 8 chips): el software lo hizo otra persona.
In an incredible tour-de-force, Paul Laughton, a contractor for Shepardson Microsystems, wrote the Disk Operating System for the Apple II in only seven weeks, and Apple delivered it to eager customers in June of 1978.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
-
- Amiga 1200
- Mensajes: 1489
- Registrado: 07 Nov 2009, 11:38
- Sistema Favorito: C64
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo SNES
- Primera consola: Nintendo SNES
- Ubicación: Madrid
- Gracias dadas: 14 veces
- Gracias recibidas: 244 veces
Re: Código fuente del Apple II DOS liberado
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.
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.html
En 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.

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.html
En 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.
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
mcleod_ideafix escribió:Errrr.... un apunte: Wozniak hizo el hardware (la controladora de discos con 8 chips): el software lo hizo otra persona.In an incredible tour-de-force, Paul Laughton, a contractor for Shepardson Microsystems, wrote the Disk Operating System for the Apple II in only seven weeks, and Apple delivered it to eager customers in June of 1978.
¡Ondia! pues yo llevo toda la vida creyendo que hasta el Apple II era todo cosa de Wozniak.
Voy a mirar más hazañas del Paul Laughton este, porque el tío se marcó un puntazo.
PD: Acabo de encontrar nada menos que la historia de este hombre de primera mano, contada por él:
http://www.laughton.com/Apple/Apple.html
Wozniak hizo algo único con el hardware de la disquetera.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
radastan escribió:Wozniak hizo algo único con el hardware de la disquetera.
¿Sabes cuál es el secreto de la controladora de disco de Woz? Que algunos de esos chips los usó como lógica programable: en concreto usa una pequeña ROM bipolar preprogramada, que viene a ser como usar una PLA para implementar un circuito combinacional. Eso evitó que tuviera que usar decenas de puertas lógicas para implementar el mismo circuito.
Es el mismo tipo de ROM que te puedes encontrar, por ejemplo, en las entrañas de un Oric Atmos. En el Oric, esa pequeña ROM se usa como tabla de traducción para sacar los valores de codificación PAL para cada uno de los colores del aparato. Es decir, que el Oric implementa, también con lógica programable, un sencillo codificador PAL.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Código fuente del Apple II DOS liberado
mcleod_ideafix escribió:radastan escribió:Wozniak hizo algo único con el hardware de la disquetera.
¿Sabes cuál es el secreto de la controladora de disco de Woz? Que algunos de esos chips los usó como lógica programable: en concreto usa una pequeña ROM bipolar preprogramada, que viene a ser como usar una PLA para implementar un circuito combinacional. Eso evitó que tuviera que usar decenas de puertas lógicas para implementar el mismo circuito.
Es el mismo tipo de ROM que te puedes encontrar, por ejemplo, en las entrañas de un Oric Atmos. En el Oric, esa pequeña ROM se usa como tabla de traducción para sacar los valores de codificación PAL para cada uno de los colores del aparato. Es decir, que el Oric implementa, también con lógica programable, un sencillo codificador PAL.
Ahora lo vemos lógico, pero él lo hizo cuando nadie antes se le había ocurrido (por lo menos en lo que a controladoras de disco se refiere)
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
Volver a “Otros microordenadores”
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados