Código fuente del Apple II DOS liberado

BBC, Dragon, Sam Coupé, Oric ...
Avatar de Usuario
mcleod_ideafix
Amiga 2500
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: 53 veces
Contactar:

Código fuente del Apple II DOS liberado

Mensajepor mcleod_ideafix » 13 Nov 2013, 00:02

... o cómo escribir un sistema operativo de disco en 7 semanas.
http://www.computerhistory.org/atchm/ap ... urce-code/
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
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

Mensajepor mentalthink » 13 Nov 2013, 05:10

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 :mrgreen: :mrgreen:

jepalza

Re: Código fuente del Apple II DOS liberado

Mensajepor jepalza » 13 Nov 2013, 05:23

:?: :?:
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).

Avatar de Usuario
falvarez
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 172
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: 6 veces
Gracias recibidas: 1 vez
Contactar:

Re: Código fuente del Apple II DOS liberado

Mensajepor falvarez » 13 Nov 2013, 09:20

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 :mrgreen: :mrgreen:


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.

Avatar de Usuario
radastan
Amiga 2500
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

Mensajepor radastan » 13 Nov 2013, 11:40

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.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
mcleod_ideafix
Amiga 2500
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: 53 veces
Contactar:

Re: Código fuente del Apple II DOS liberado

Mensajepor mcleod_ideafix » 13 Nov 2013, 13:40

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

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1442
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: 9 veces
Gracias recibidas: 209 veces

Re: Código fuente del Apple II DOS liberado

Mensajepor BlackHole » 13 Nov 2013, 14:11

Paul Laughton tenía una buena motivación para hacerlo en 7 semanas :mrgreen:

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.

Avatar de Usuario
radastan
Amiga 2500
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

Mensajepor radastan » 13 Nov 2013, 16:10

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.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
mcleod_ideafix
Amiga 2500
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: 53 veces
Contactar:

Re: Código fuente del Apple II DOS liberado

Mensajepor mcleod_ideafix » 13 Nov 2013, 16:52

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

Avatar de Usuario
radastan
Amiga 2500
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

Mensajepor radastan » 13 Nov 2013, 18:40

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 6 invitados