[Conseguido] CP/M68K para Atari ST

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

[Conseguido] CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 11:45

Este hilo tiene un objetivo, el intento de recopilar, preparar y ensamblar una versión de CP/M68K que sea funcional sobre cualquier Atari ST.

Tras una temporada investigando aquí y allá, se me ha hecho muy cuesta arriba documentar toda la parte necesaria. En primer lugar hay que explicar que Atari presentó en el CES de 1985 sus prototipos de Atari ST que en ese momento ejecutaban CP/M68K puro y duro.

Si alguien tiene el diskette o las imágenes de disco con el CP/M68K para ST me haría un gran favor, ya os digo que si las hay y rulaban por ahí, pero les perdí la pista. Es posible que viendo otros OS pueda terminar de entender porque no me termina de funcionar. Os cuento lo que trae ese diskette, que seguramente estará preservado en la colección de algún aficionado a los ST, ya aparecerá.... y si lo conseguimos antes, pues hale, bienvenido todo.

El diskette que comento tiene el CP/M68K, un interprete de BASIC, los binarios que vienen con el CP/M, STAT, PIP y cuatro cosas más, con lo que tampoco se podría hacer mucho sin tener otros programas para ejecutar, pero contando con el BASIC ya era algo, ¿ si ?.

Tras estudiar las estructuras de los fuentes de CP/M68K y del Atari Development Kit ( basado en el compilador Alcyon ) creo que tenemos los ingredientes necesarios para hacer un intento. Las partes fundamentales del Alcyon

Atari se dio cuenta que si quería competir con IBM y Apple no podía lanzar una máquina con una versión de CP/M, aunque este fuera para el Motorola 68000, ya que su propio nombre sonaba a obsoleto y viejo, a pasado. Por eso mismo tomaron la base del CP/M68K y reescribieron todo lo necesario para tener lo que conocemos como TOS ( The Operating System )... si te interesa el asunto pues puedes si gustas continuar leyendo y ver si de alguna manera alguien puede contribuir con detalles que seguramente se me están pasando o no veo. La ayuda va a ser siempre muy agradecida.

Todas las necesidades de CP/M68K son un conjunto de rutinas dependientes de la BIOS de la máquina que interactúan con el hardware. El antiguo compilador Alcyon C del sistema de desarrollo Atari produce código de objeto compatible con CP/M-68k, por lo que es posible realizar un desarrollo cruzado en TOS. Si, sobre el propio ST y para ello sirve el ZIP que he puesto más abajo, para usar como un HD GEMDOS.

Se puede empezar creando rutinas de BIOS que simplemente hagan llamadas a la XBIOS del ST, no parece difícil, pero definitivamente si parece tedioso. Quizá sea mejor escribir una BIOS nueva para el ST partiendo de las que ya tenemos de ejemplo.

Las herramientas

Código: Seleccionar todo

AR68      Creates and modifies object module libraries

AS68      Processes   assembly  language  source  modules  to  create relocatable object module library files

DUMP      Displays files in hexadecimal and ASCII notation

LINK68    A linker that combines assembled or compiled object modules  with other modules from a runtime library

LO68      Another linker

NM68      Prints the symbol table of an object or command file

RELOC     Converts  relocatable  object  modules  from  one format to  another

SENDC68   Converts a command file to the Motorola S-record format

SID-68K   Tests and debugs programs

SIZE68    Displays the size of each program  segment  within  one  or  more command files

XREF      Creates  a  table  of the symbols defined and referenced by object files


Todo es una cuestión de BIOS.

La BIOS es la parte del CP/M que garantiza la independencia del sistema operativo del hardware. Por ello las extensiones van a ser necesarias en la BIOS siempre que el hardware de sistema se modifique fundamentalmente. De momento no tenemos una BIOS para CP/M68K que nos funcione en un ST como tal, vamos a tener que reescribirla o adaptar las que ya tenemos, puesto que en Atari hicieron ciertas modificaciones a lo que se conoce tradicionalmente como CP/M68K, lo que pasa que son mínimas pero están ahí.

Los TRAPs estándar del CP/M68K

Código: Seleccionar todo

TRAP &A000 - MacOS calls
TRAP &F000 - CoPro calls
TRAP 0     - Unix calls             OS/9 calls
TRAP 1     - Indirect Unix calls    Atari ST GEMDOS BDOS
TRAP 2     - CP/M BDOS calls
TRAP 3     - CP/M BIOS calls
TRAP 4
TRAP 5
TRAP 6
TRAP 7
TRAP 8
TRAP 9
TRAP 10
TRAP 11
TRAP 12
TRAP 13    - Atari ST BIOS          OS/9 C I/O
TRAP 14    - Atari ST XBIOS
TRAP 15    - OS/9 Floating point



-------+----------------------------------------------------------------+-----
########Trap Instruction Vectors (Trap #n = Vector number + 32 + n)     ######
-------+----------------------------------------------------------------+-----
$000080|Trap #0                                                         |SD
$000084|Trap #1 (GemDOS)                                                |SD
$000088|Trap #2 (AES/VDI)                                               |SD
$00008C|Trap #3                                                         |SD
$000090|Trap #4                                                         |SD
$000094|Trap #5                                                         |SD
$000098|Trap #6                                                         |SD
$00009C|Trap #7                                                         |SD
$0000A0|Trap #8                                                         |SD
$0000A4|Trap #9                                                         |SD
$0000A8|Trap #10                                                        |SD
$0000AC|Trap #11                                                        |SD
$0000B0|Trap #12                                                        |
$0000B4|Trap #13 (BIOS)                                                 |SD
$0000B8|Trap #14 (XBIOS)                                                |SD
-------+----------------------------------------------------------------+-----


FUNCIONES DE GEMDOS, BIOS Y XBIOS y de como funciona el Atari ST

El sistema operativo (TOS) tiene muchas funciones convenientes construidas, listo para ser utilizado por los programadores. Estos pueden ser aproximadamente divididos en los que pertenecen a GEMDOS, BIOS y XBIOS.

Las llamadas GEMDOS son invocadas por el comando mnemónico TRAP # 1. Entonces, el sistema operativo saltará a través del vector GEMDOS en la dirección $ 84

$ 01 CONIN

Esta función se usa para obtener una tecla pulsada. CONSOLE IN

MOVE.W # 1, - (SP)
TRAP # 1
ADDQ.L # 2, SP


Las llamadas a la BIOS son invocadas por el comando mnemónico TRAP # 13. Entonces, el sistema operativo saltará a través del vector BIOS en la dirección $ B4.

RWABS

Esta es la función universal para leer y escribir sectores de y desde al disco duro y al disquete. Esta es también el núcleo de la rutina detrás de las llamadas XBIOS floprd y flopwr. La dirección de esta rutina se encuentra en la variable del sistema hdv_rw

XBIOS

XBIOS ofrece funciones más cómodas para ser utilizadas por el programador. Estas llamadas son invocadas por el comando mnemotécnico TRAP. # 14, en cuyo momento el sistema operativo saltará a través del Vector de XBIOS ubicado en la dirección $ B8

http://www.bighole.nl/pub/mirror/homepa ... _traps.htm
http://deunstg.free.fr/sct1/hardware.htm

Por tanto vamos a nombrar desde ya el posible fichero resultante de BIOS para el Atari ST como STBIOS.S, de esta forma no lo confundimos con otras BIOS que existen y que seguramente tengamos que revisar para poder armar una nueva que nos funcione en el ST.

No hay problema con el tema del acceso a los ficheros, desde ST con Hatari se puede hacer todo sobre un directorio que ejerza de HD. Incluiré un ZIP con todo lo básico y listo para que todos puedan probar y hacer lo que quieran.

Sabemos que la dirección de arranque de la TOS en ROM es $E00000, pero desde disco se puede arrancar desde cualquer dirección / sitio.

$E00000 Start of ROM OS (for version 1.4 and above)
$FA0000 Start of cartridge memory mapped ROM
$FC0000 Start of ROM OS (for versions below 1.4)


En el ST, una llamada BIOS se implementa como una instrucción TRAP en lenguaje de máquina 68000. Todos los parámetros necesarios, incluido el número de llamada del BIOS, se pasan a la pila.

Para la BIOS y su ensamblaje vamos a necesitar disponer de los siguientes ficheros.

STBIOS.S {aun no existe y es el que tendremos que escribir }, CPMLIB y CPM.REL
EDITRDK.68K
AS68.68K y AS68SYMB.DAT
LO68.68K, SIZE68.68K y RELOC.68K


Claro, en CP/M68K y segun la versión y la compilación los binarios pueden tener las siguientes extensiones.
[ 68K ] [ REL ] [ PRG ]
En el caso del ST son PRG o TOS, pero esto de momento no importa, simplemente tomamos nota.

Aquí sería el momento idoneo para hacer los cambios o extensiones a la BIOS. Se debe tener cuidado de no cambiar los ficheros originales y trabajar siempre en una copia. Los cambios se pueden hacer en cualquier editor de textos, tanto desde PC como desde ST.

C> EDITRDK STBIOS.S

Una vez que tengamos el fichero más o menos preparado y después de los cambios es cuando el fuente debe traducirse a lenguaje máquina.

C> AS68 STBIOS.S > STBIOS.LST

Esto nos creará el archivo STBIOS.O y el listado STBIOS.LST ( que tarda un ratín ). La nueva BIOS ahora debería estar vinculada al núcleo del sistema CP/M68K.

C> LO68 -R -UCPM -O CPM.REL CPMLIB STBIOS.O

Esto crea el archivo CPM.REL, cuyo tamaño determinaremos en el siguiente paso. Esto es necesario para que luego se pueda determinar la dirección de carga absoluta.

C> SIZE68 CPM.REL

En la última columna, el tamaño se muestra como un valor hexadecimal. Este valor se resta de la dirección de memoria deseada más alta y se agrega 1.

Un ejemplo:
Longitud determinada de CPM.REL = $0E325
512 KByte de memoria para CP/M = $7FFFF
Dirección de carga determinada = $7FFFF - $0E325 + $00001 = $71CDB


En un Atari ST se nos mostrará de esta manera:
sc68.png
sc68.png (79.35 KiB) Visto 7401 veces


Una vez que se ha corregido la dirección de carga, las direcciones relativas en el archivo CPM.REL se pueden convertir en direcciones absolutas. Esto crea el CPM.SYS final que solo es ejecutable en la dirección calculada.

C> RELOC -B71CDB CPM.REL CPM.SYS

Finalmente se copia el archivo CPM.SYS en un disquete de arranque y reiniciamos el ST, junto con el resto de ficheros necesarios debería de poder arrancar siempre y cuando la BIOS sirva. Tenemos ejemplos y una base desde la que trabajar, quizá esta sea la peor parte, ya que el resto es básicamente estándar sin cambios.

Definición de la dirección de carga en CP/M68K

Anteriormente vimos cómo calcular la dirección de carga absoluta exacta para CP/M68K y como convertir CPM.REL en CPM.SYS. Si no se tiene que usar necesariamente la RAM en el último byte, también puede ir de una manera más simple y especificar un valor fijo como la dirección de carga. Esto tiene la ventaja de que el método también se puede usar como archivos SUBMIT.

128 kB RAM = 18000
256 kB RAM = 38000
384 kB RAM = 58000
512 kB RAM = 78000
640 kB RAM = 98000
768 kB RAM = B8000


Aplicado al ejemplo anterior, uno simplemente usaría la dirección fija en el comando RELOC . La determinación de la longitud con SIZE68 y el cálculo de la dirección de carga ya no es necesaria. Por tanto ha de tenerse muy en cuenta para cuando reescribamos STBIOS, en el ejemplo actual de STBIOS, siga siendo 3335 bytes para realizar más ajustes antes de tener que cambiar el archivo SUBMIT. Hay que ir verificando el tamaño del archivo CPM.REL durante el desarrollo de vez en cuando con SIZE68.
C> RELOC -B18000 CPM.REL CPM.SYS

Sobre la memoria, al contar con 512KBytes de base, sin duda podemos dotar el sistema con más RAM. La memoria restante se integra automáticamente como Ramdisk G:. ó M:

FICHEROS SUBMIT

Para simplificar y acelerar todo el proceso de traducción, vinculación y recarga, se proporcionan archivos SUBMIT en los que se resumen todos los comandos necesarios. Ya hay creados archivos para todos los valores de las tablas anteriores, ejemplos y fuentes. Para crear este archivo, simplemente:

Código: Seleccionar todo

C> EDITRDK MAKE256.SUB

    AS68 -I AS68INIT
    AS68 STBIOS.S
    LO68 -R -UCPM -O CPM.REL CPMLIB STBIOS.O
    RELOC -Bxxxxx CPM.REL CPM.SYS


Posteriormente, el archivo resultante CPM.SYS, podemos llevarlo a floppy para una prueba de arranque. Si siempre usamos la misma configuración de memoria, podemos eliminar la primera línea de archivos SUBMIT, lo que os permite ahorrar unos segundos más. Después de completar el proceso, los archivos STBIOS.O y STBIOS.REL permanecen en el RAMDISK y pueden eliminarse o copiarse al disquete según sea necesario.

La extensión .REL puede ser 68K, PRG, etc...

Cambios y mejoras en los archivos de inicio para ST

A ver, no nos engañemos. En Atari ST el mero hecho de ensamblar un CP/M68K es bastante complejo y mucho más hacerlo funcionar. Esto consta de varios pasos que intentaremos documentarlos y probarlos aquí. Todo comienza cuando encendemos el ST con el floppy que hemos creado y el programa básico toma el control. De nuevo, necesitamos un disco de trabajo con los siguientes archivos:

STBOOT.S y STLDRB.S
STLIB y EDITRDK.68K
AS68.68K y AS68SYMB.DAT
LO68.68K y XPUTBOOT.68K


Básicamente, también podemos crear un disquete con todos los archivos necesarios para ambos métodos y usar este disco cada vez que se cambie algo en el sistema. Ahora se pueden hacer los cambios necesarios en los ficheros fuente. Después de hacer los cambios a los fuentes, por supuesto, estos deben ser traducidos primero.

C> AS68 -f -p STLDRB.S > STLDRB.LST
C> AS68 -f -p STBOOT.S > STBOOT.LST


Esto crea los dos archivos de objeto STBOOT.O y STLDRB.O. Luego, las nuevas rutinas se deben vincular con el Cargador CP/M68K.

B> LO68 -f -s -t400 -u LDR -o CPMLDR.SYS STBOOT.O STIB STLDRB.O

Ahora el CPMLDR.SYS debería estar listo y se puede escribir en el boot sector del diskete que usemos para el sistema.

C> XPUTBOOT CPMLDR.SYS A

Los cambios pueden probarse con una valiente apretón del RESET. -507

Secuencia del proceso de arranque en el Atari ST

Dado que la BIOS del ST no está implementada en CPM.SYS, hay que ir comprobando si lo que ya tenemos funciona y es compatible, el arranque es un poco más complicado que con las implementaciones normales de CP/M68K. Durante la carga, debe buscarse la posición absoluta del programa básico y eso me está dando bastantes quebraderos.

FLOPPY START lee las pistas del sistema del disquete en la memoria
Esto iniciará el programa STBOOT desde un disquete
STBOOT busca en la memoria el programa básico
Luego se inicia el cargador BIOS STLDRB (subconjunto del BIOS)
STLDRB luego carga el CP / M real y lo inicia


Esta es toda la teoría, adjunto el directorio GEMDOS con el podéis ir haciendo vuetras pruebas y pesquisas.

ST_cpm68_alcyon.zip
(1.4 MiB) Descargado 167 veces



BASE e INFO

alcyon1.jpg
alcyon1.jpg (44.53 KiB) Visto 7401 veces


Imagen
alcyon2.jpg
alcyon2.jpg (46.53 KiB) Visto 7094 veces


Si os ponéis a repasar el source veréis que los cambios sobre la versión de CP/M68K y la de AtariST son MINIMOS.

flags68k.jpg
flags68k.jpg (62.53 KiB) Visto 7401 veces


El TOS de Atari ST es en muchos aspectos funcionalmente igual que el CP/M68K, con extensiones para manejar ratón, sonido, interfaz MIDI, un teclado inteligente y los puertos para joysticks. El administrador de entorno de gráficos ( GEM ) proporciona soporte adicional monousuario de ventanas y comunicaciones a través de extensiones VDI y AES, que manejan los gráficos y un entorno de aplicaciones.

La capacidad de transporte del programa se mantiene dividiendo los sistemas operativos en máquinas independientes ( BDOS, VDI y AES ) y utilidades básicas de entrada / salida dependientes de la máquina ( BIOS y rutinas de línea A ).

La BIOS consta de todas las rutinas de I/O dependientes de la máquina y además proporciona acceso a las rutinas de línea A para gráficos rápidos.

http://www.bighole.nl/pub/mirror/homepa ... uide_2.htm

Aquí he ido descubriendo muchas cosas que necesitaba. Parece ser que para que el ST pueda transferir el arranque desde el disco antes de invocar el GEM debe estar con el sector de boot en formato IBM PC...!

Así que durante el arranque, el sector de boot se carga en un buffer y se comprueba si el boot sector tiene un word con checksum de #$1234. Si es satisfactorio, se realiza un salto de subrutina al principio del código independiente de su posición en el búfer. Debería de producirse una llamada a get BIOS parameter block, que hace que se lea el boot sector, devolviendo un error en caso que algún campo de los parámetros críticos están a cero. Además de un número de serie de 24 bit, el cual se escribe mientras el proceso de formateo, se usa para determinar cuando un disco ha sido cambiado. Finalmente protobt, que es una llamada de la extended BIOS (18), se usa para crear el sector de arranque, el cual debería ser track 0, cara 0, sector 1.

Imagen

Imagen


Enlaces y refencias al post:

Documentación original del DRI:
http://www.retroarchive.org/docs/software/cpm68.html

http://www.retroarchive.org/cpm/archive ... ource.html
http://retrospec.sgn.net/users/tomcat/m ... ernals.htm
http://toshyp.atari.org/en/00300a.html
http://info-coach.fr/atari/software/_fd ... sector.txt
https://mikro.naprvyraz.sk/docs/GEM/TOS.TXT
http://leonard.oxg.free.fr/articles/mul ... atari.html
http://info-coach.fr/atari/software/FD- ... fd_soft_bs
http://www.bighole.nl/pub/mirror/homepa ... uide_2.htm
http://home.earthlink.net/~schultdw/cpm68/index.html
http://mdfs.net/Software/Tube/68000/68k.txt
http://oldcpusrus.xepb.org/my68mon.txt

Continuará en nuevos posts.

Si hubiera que optar a una opción basada en S-RECORDS ( método Ferix ) también sería factible hacer simplemente un loader y ya está. El CP/M68K es tan básico que solo consta de las cosas necesarias para que funcione el micro.

Hay estos documentos que sería bueno tener controlados.:

Atari ST BIOS Technical Reference Manual
Line A-Technical Reference Manual
Engineering Hardware Specification of the Atari ST Computer System
Digital Reseearch C Language Programming Guide for CPM/68K
CP/M-68K Operation System Programmer's Guide
GEM Programmer's Guide Volume 1 : VDI
GEM Programmer's Guide Volume 2 : AES
Introduction to GEM Programming
Kermit User's Guide
MicroEmacs Screen Editor Tutorial
Misc ST Info and Appenix's and Updates
Source Book for Atari Logo
Atari 520 ST Owner's Manual

POR FAVOR:

Si dispones de información o tienes algo , SUBELO !!!!

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor dancresp » 10 Abr 2018 13:48

-shock

Menudo ladrillo más interesante, ron.

Si mal no recuerdo, usé una versión no se si del todo funcional para un Appple Macintosh, y en links de sites de CP/M he visto referencias a versiones de CPP/M-68K, pero no recuerdo para nada versiones para el Atari ST.

Con la de expertos en Atari que corren por aquí y en el resto del mundo, ¿nadie tiene nada? porque lo que cuentas de hacer es una currada de mucho cuidado...

Amplio
la semana pasada me bajé un TOSEC del Atari ST de 15 GB para poder alimentar a mi MiST, y ni rastro del CP/M.
Ni que decir que cuando aparezca, lo pondré encantado en mi colección de sistemas operativos.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 15:07

Hey Wallydancresp !

A ver, no confundamos los dos o tres emuladores de CP/M80 que hay para ST con un Sistema Operativo que es para M68K, se trata de una versión para M68K, a la cual miraremos de primero, hacer funcionar y si va... ya veremos. xD

Por tanto, esto se que lo hay como floppy, que lo metes en el ST y arranca un CP/M68K y su prompt. Seguramente haya pasado inadvertido en alguna preservación de ST, basta que alguien se ponga a mirar y la encuentre..., a saber...

Tamos de suerte y he encontrado todo el codigo fuente del BDOS de ST, junto al Command, parte de las cosas que le faltan al codigo fuente y al Alcyon. Adjuntos en este ZIP
Esto nos permitirá extraer muchos valores que sabemos que son exclusivos de ST

GEM_CPM68.zip
(112.56 KiB) Descargado 178 veces


Vamos a tener que pillar alguna de las bios que ya existen y generar una con los ficheros que adjunto a continuación.
Tenemos que tener en cuenta que ya que el TOS está basado en CPM68K, debemos suponer que su BIOS y las llamadas que implementa no serán tan diferentes, de hecho estoy convencido que cuando tengamos esta parte clara no habrá que tocar nada más.
Para generar un nuevo fichero de bios que llamaremos STBIOS.S necesitaremos conocer las llamadas básicas que probablemente sean comunes además entre el CP/M68 y el TOS.

Según me ha comentado Explorer. en GEMDOS no son muchas rutinas. Y tampoco la BIOS. Y si de ahí quitamos todas las que tengan que ver con archivos y directorios, pues menos aun. OverCLK sugiere ir sacado unas tijeras xD , por tanto en esta nueva supuesta bios STBIOS.S habria que trampear esas excepciones, para luego devolver el resultado correcto. Este parece que es el mejor camino a falta de un loader, que sería otra opción aunque va a necesitar de una bios queramos o no.


bios_cpm68k.zip
(20.69 KiB) Descargado 157 veces

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 16:03

Añado: Atari BIOS/XBIOS source code

BIOS_Listing_7-9-1985.pdf.zip
(8.29 MiB) Descargado 171 veces


bios.zip
(1.1 MiB) Descargado 173 veces

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor dancresp » 10 Abr 2018 16:18

ron escribió:A ver, no confundamos los dos o tres emuladores de CP/M80 que hay para ST con un Sistema Operativo que es para M68K, se trata de una versión para M68K, a la cual miraremos de primero, hacer funcionar y si va... ya veremos.

No, no confundo.
Tengo claro que estás hablando de un sistema operativo puro y duro.

Lo que comento del Apple Mac era un CP/M-68K real y se veía en modo texto. Pero no encuentro la imagen del disco.

Se habló aquí: http://www.retrowiki.es/viewtopic.php?f=30&t=200032164&p=200070642&hilit=mac+cp%2Fm+68k#p200070642

A ver si lo consigues, que sería un punto, aunque desconozco si hay aplicaciones disponibles.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 16:22

Seria estupendo que alguien encuentre esto mismo en Macintosh o Lisa. Lo del GEM es evidente y se dice en todo lo que he visto por la web que en Lisa tenían una versión de CP/M68K totalmente operativa y funcional.

Pero estamos a un nivel muchísimo más bajo que el GEM, de hecho si conseguimos una bios y compila y hace boot el GEM no aparecerá ni sabremos de el para nada.

Lo curioso es que estamos ( intentando hacer... ) involucionando y haciendo una regresión de algo que se mejoró muchísimo como GEMDOS, de un trozo de historia del ST que falta y que se ha mantenido siempre desapercibido. No estamos inventando nada porque esto existió. Pero a saber si se llegó como digo a preservar, y si lo estuviera a saber como se podría identificar entre los miles de imágenes de disco que hay en los ftp...

Con el Zip GEMDOS, lo probáis, es decir, que si un programa CP/M68K lo compilo bajo TOS con Alcyon hay más de un 90% de posibilidades que me funcione a la primera. Si no se lanza directamente en consola, con una programa shell de los que hay ya no hay excusa.

Las aplicaciones se pueden intentar recompilar, o portar de CP/M mismo si son estándar, sota, caballo y rey.

Así que esto abre otra puerta, sin necesidad del CP/M68K, la posibilidad de compilar esos fuentes bajo TOS y ejecutarlos directamente bajo CONSOLA.

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 16:28

Está todo en GitHub:

https://github.com/ggnkua/Atari_ST_Sour ... Inc/alcyon

Imagen
fdgdfg.png
fdgdfg.png (42.69 KiB) Visto 7094 veces


Imagen
656fdgdfg.png
656fdgdfg.png (45.53 KiB) Visto 7094 veces


Imagen
asasfdgdfg.png
asasfdgdfg.png (40.24 KiB) Visto 7094 veces


Imagen
bootseq.png
bootseq.png (41.36 KiB) Visto 7094 veces

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 16:33

ATARI ST DEVELOPMENT PACKAGE
----------------------------


The ST development package consists of six disks. These disks
will enable a developer to compile and link "C" applications or desk
accessories for the Atari ST series.

1. TOS System Disk.
2. Language disk.
3. C-Compiler.
4. Linker.
5. Utilities.
6. Resource Construction Set.

NOTE: Mince editor is available from MARK OF THE UNICORN, INC.

WARNING: It is recommended that the developer make BACKUP COPIES of these
disks and that he/she use the backups as backups ONLY. It is also
sugested that the ST system disk be backed up as well!



The following is a list of files, programs, and other information
that are included on these disks.


THE TOS SYSTEM DISK:
-------------------

TOS.IMG GEM Desktop, AES, VDI, Gem DOS, and BIOS
DESK1.ACC VT52 Terminal Emulator desk accessory.
DESK2.ACC Control panel desk accessory.


NOTE: In order to make a backup of the TOS System Disk you must copy the
entire disk in order for the auto-booting to take place.


THE LANGUAGE DISK:
------------------

LOGO.PRG LOGO interpretive language
LOGO.RSC Resource file for LOGO
ANIMAL.LOG Sample program demonstrating list processing and AI
KNOWN.LOG Data for ANIMAL


THE COMPILER DISK:
------------------

CP68.PRG Three pass "C" compiler.
C068.PRG
C168.PRG

AS68.PRG 68000 asembler.
AS68INIT
AS68SYMB.DAT

BATCH.TTP ST batch processing program.
RM.PRG ST delete file program.
WAIT.PRG ST WAIT to return to desktop.

C.BAT Batch input file.

ST "include" files. These files when included within a "C" program
enable the use of the AES and VDI predefined messages, object types, GEMDOS
definitions etc.

DEFINE.H Typical miscellaneous definitions. Ex. NIL, TRUE, EOS...
GEMBIND.H Do-it-yourself GEM binding kit.
GEMDEFS.H Common GEM definitions as defined in the AES programmers
manual.
VDIBIND.H VDI external definitions.
TOSDEFS.H TOS file attributes and error definitions.
OBDEFS.H Common GEM OBJECT definitions as defines in the AES programmers
manual.
OSBIND.H "C" binding to GEMDOS, extended BIOS, and BIOS.
STDIO.H "C" standard I/O file.

PORTAB.H ST "include" files. For use in porting IBM applications to
MACHINE.H the ST series.
TADDR.H



THE LINKER DISK:
----------------

LINK68.PRG ST linker program.
RELMOD.PRG ST relocation program.
BATCH.TTP ST batch processing program.
RM.PRG ST delete file program.
WAIT.PRG ST WAIT to return to desktop.

LINKAP.BAT Batch input files to link GEM application programs.
LINKACC.BAT Batch input files to link GEM desk accessory programs.

ACCSTART.O GEM accessory start file.
APSTART.O GEM application start file.
GEMS.O "C" run time library start file.
GEMSTART.O "C", VDI, AES library start files.

AESBIND AES run time library.
VDIBIND VDI run time library.
GEMLIB "C" run time library.
OSBIND.O GEMDOS trap routine.
LIBF Floating point library.



THE UTILITIES DISK:
-------------------

COMMAND.PRG Command line interpreter.
DUMP.PRG Hexadecimal file print utility.
FIND.PRG File string locator utility.
HIGH.PRG ST medium resolution program.
LOW.PRG ST low resolution program
KERMIT.PRG File transfer program.
NM68.PRG Symbol table print utility.
SID.PRG Symbolic Interactive Debugger
SIZE68.PRG Program segment size utility.
APSTART.S Source to application start routine.
ACCSTART.S Source to desk accessory start routine.
GEMSTART.S Source to "C", VDI, AES start routine.
GEM.S Source to "C"-run-time library start routine.
ACSKEL.C Example GEM desk accessory program.
APSKEL.C Example GEM application program.
README.DOC ST development package document (the one you are in).

AR68.PRG Library creation utility. (Future release.)


THE RESOURCE CONSTRUCTION:
--------------------------

RCS.PRG Resource construction set program.
RCS.RSC File for RCS.
BASIC.RSC Example resource #1.
BASIC.C "C" Source produced by the resource construction set.
BASIC.DEF Tree definition file produced by the RSC construction set.
BASIC.H "C" include file produced ny the RSC construction set.
DOODLE.RSC Example resource #2
DOODLE.C
DOODLE.DEF
DOODLE.H
DOODLE.PRG Program to run data from example #2

Do not attempt to modify the resource files for the example
programs until you have backed this disk up.



-------------------------------------------------------------------------------


COMPILING A PROGRAM ON THE ST.
------------------------------

The three development disks have been arranged so that compiling and
linking on the ST is a very simple process. The following is an example on
how to compile and run the sample APSKEL.C program supplied on the compiler
disk.

WARNING:
Remove the write protection tab from the compiler and linker
disks before compiling and linking.

IMPORTANT NOTE:

The following instructions apply to a dual drive system. Some
developers will have a single drive system. There may not be enough disk
space on a single drive system to compile, assemble, and link. If a write
error occurs, remove all unnecessary files from the disk. For a single drive
system, follow the alternative step --if required--in parenthesis.


1) After making backups of the three development disks copy APSKEL.C and
ACSKEL.C to a newly formated disk. (For a single drive system move
ONE of these files to the compiler disk.)

2) Place the compiler disk in drive A: and the disk containing APSKEL.C
and ACSKEL.C in drive B:. (No disk required for drive B)

3) Select the BATCH.TTP program and open it.

4) Type "C B:APSKEL" ( "C APSKEL") in the open application
dialog box and select "OK". At this point the screen will
turn white and the batch program will begin compiling the APSKEL.C
program. The compile is finished when the program askes for a
carriage return. Hit carriage return to return to the desktop.

(For a single drive system you must use a single disk copy to move
the APSKEL.O file from the compiler disk to the linker disk. Drag
the icon to drive B and follow the directions on swapping disks.)

5) Replace the compiler disk with the linker disk and double click on
the BATCH.TTP program. Type "APLINK b:APSKEL" (APLINK APSKEL) in the
open application dialog box and select "OK". The screen will turn
white while the batch program links the proper files together. The
link is finished when the wait for carriage return prompt is
displayed. Hit the return key to return to the desktop.

6) Now just double click on the file APSKEL.PRG on drive B: (drive A:).
The move, size, close, and full boxes are all active in this program.
Selecting the close box returns you to the desktop.



To compile and link the desk accessory ACSKEL.C program do the
following.


1) Follow the same procedure to compile and link the ACSKEL.C desk
accessory that you moved to the new disk. Remember to use
"LINKACC ACSKEL" when linking the desk accessory together.

2) Next rename the ACSKEL.PRG program to DESK3.ACC. DESK1.ACC and
DESK2.ACC are the Control Panel and VT52 Emulator included on your
system disk.

3) The final step is to transfer the DESK3.ACC accessory you have just
created to your system disk and reboot the system. (Rebooting the
system installs the accessory under "DESK" on the menu bar of the
desktop.

4) To run, move the mouse to DESK on the menu bar and click on "Sample
Accessory". If you resize the window you will see disk icons and
other windows on the desktop. Selecting the close box will remove
the desk accessory.


If you type C.BAT and APLINK.BAT you will be able to see the proper
order of instructions necessary to compile or link a program file. For more
information on compiling and linking please consult the ATARI ST developers
manuals.



INCLUDE / LINK TABLE:
--------------------

The following table represents the proper "include" files necessary
to link to different portions of the TOS operating system.


TOS OP SYSTEM INCLUDE IN PROGRAM LINK TO...
-----------------------------------------------------------------------------
VDI <define.h>* VDIBIND library
<vdibind.h>

AES <define.h>* AESBIND library
<gemdefs.h>
<obdefs.h>

GEMDOS <define.h>* OSBIND.O trap routine
BIOS <osbind.h>
XBIOS

"C" library <define.h>* GEMLIB library

VDI <define.h>* VDIBIND library
AES <vdibind.h> AESBIND library
"C" library <gemdefs.h> GEMLIB library
<obdefs.h>


* Include if necessary.

All of the above libraries can be mixed depending on the needs of the
developer.

ATTENTION:

TO CREATE A GEM APPLICATION:
---------------------------
YOU MUST LINK TO APSTART.O AS THE FIRST FILE IN YOUR LINK STATEMENT.

TO CREATE A GEM DESK ACCESSORY:
------------------------------
YOU MUST LINK TO ACCSTART.O AS THE FIRST FILE IN YOUR LINK STATEMENT.


"C" RUN TIME LIBRARY:
---------------------

To link to the "C" run time library (GEMLIB) you must link to
GEMS.O as the first file in your link statement and GEMLIB as the
last file.

NOTE: You may not link to AESBIND or VDIBIND when using GEMS.O.


Using GEMSTART.O you MAY link to AESBIND or VDIBIND libraries and the
"C" run time library. You must link to GEMSTART.O as the first file
in your link statement and GEMLIB as the last file.

EXAMPLE
-------
link68 [u,s] file.68k = gemstart,program,vdibind,aesbind,gemlib

WARNING:

GEMSTART is a new replacement for GEMS. We recommend the uses
of GEMSTART rather than GEMS. If any problems occur, please
contact Richard Frick at Atari Corp.

-------------------------------------------------------------------------------

FURTHER PROGRAM INFORMATION
---------------------------

BATCH PROCESSING ON THE ST:
---------------------------


BATCH.TTP This is a batch program for the ST. To use, you must
create a file with the extention .BAT. (example C.BAT)

To execute the C.BAT file you must open BATCH.TTP
and enter "C PARM1" in the open application
dialog box.

Where C.BAT is defined as:

cp68 %1.c %1.i
c068 %1.i %1.1 %1.2 %1.3 -f
rm %1.i
c168 %1.1 %1.2 %1.s
rm %1.1
rm %1.2
as68 -l -u %1.s
rm %1.s ******** SEE RM.PRG *****
wait ******** SEE WAIT.PRG *****

PARM1 is the C file to compile. (B:PARM1 to compile files on drive
B:.) PARM1 is substituted for %1 in C.BAT. No file extension is
needed -it is included in C.BAT)

There is also a APLINK.BAT file which is defined as:

link68 [u] %1.68k=apstart,%1,vdibind,aesbind
relmod %1
rm %1.68K
wait

Again, to execute just open BATCH.TTP and type "APLINK APSKEL".

REMEMBER: The linker disk must contain link68.prg, rm.prg,
batch.prg, link.bat, and relmod.prg.



RM.PRG This is a delete file program necessary for the BATCH.TTP program
so that files can be deleted from drive B:.

WAIT.PRG This program waits for a carriage return before continuing.


RELMOD.PRG Converts the output file from LO68 or LINK68 into a form
that is executable by GEMDOS.

The full form of the commandline is:

RELMOD [-]inputfil[.68K] [outputfile[.PRG]] ...

(stuff between brackets is optional)

If the input file has no extension, ".68K" is automatically appended.
If there is no output filename specified, the name of the input file
(with a ".PRG" appended) is assumed. If an output file IS specified,
it has the default extension of ".PRG".

If the input filename begins with a dash ('-'), the dash is ignored,
except for the fact that it indicates an input filename. (If that's
confusing, don't worry -- read on).


EXAMPLES
--------

RELMOD FOO
Will look for a file called "FOO.68K", and produce a file
called "FOO.PRG".

RELMOD BAR -BAZ.ZIP
Will look for a file called "BAR.68K", and produce a file
called "BAR.PRG". Similarly, it will look for "BAZ.ZIP" and
produce "BAZ.PRG".



MISCELLANEOUS:
--------------

ALLOCATING MORE STACK SPACE:
----------------------------

Stack space for applications and desk accessories has been
preallocated to 1K. We realize that for some application this may not be
enough stack room. For this reason we have included the source files
APSTART.S and ACCSTART.S on the Utilities disk. You now can make appropriate
changes to these files to create the necessary environment for your
application or desk accessory.


SETTING UP YOUR MINCE.SWP FILE.
-------------------------------

If you have purchased MINCE, a word processing program from Mark
of the Unicorn Inc, you can configure the MINCE.SWP file for the ATARI ST
as follows:

1) Run the Mince configure program.

2) Would you like to change disks? answer NO

3) Select #1. (Read defs from existing swap file)

4) Use these definitions now? answer NO

5) Select #5 (Edit definitions?)

6) Select #1 (rows, columns)

7) Number of rows? answer 25

8) Number of columns? answer 80

9) Any Changes? answer YES

10) Select #4 (Home-and-clear)

11) Does your terminal have a command to clear the entire
screen, leaving the cursor at "home" (the upper left
corner?) answer YES

12) Ok what is it? answer 1b 48 1b 4a

13) Select #5 (Clear-to-eol)

14) Does your terminal have a special command to clear from the
current cursor position to the end of the line?
answer YES

15) Okay, what is it? answer 1b 4b

16) Select #6 (Clear-to-eos)

17) Does your terminal have a special command to clear from the
current cursor position to the end of the screen?
answer YES

18) Okay, what is it? answer 1b 4a

19) Any changes? answer NO

20) Any changes? (BIOS) answer NO

20) Any changes? (Miscellaneous) answer YES

21) Select #3? (Default tab column width)

22) Mince sets tab stops at regular... answer 8

23) Select #6 (Keyboard idle delay)

24) The keyboard idle delay constant... answer 600
(This setting will slow the swapping action down)

25) Any changes? answer NO

26) Select #6 (Test terminal defines)

27) If your screen DOESNOT "looks write"?
answer YES/NO
If no repeat procedure!!!!

28) Select #7 (Install definitions?)

29) Update exsisting swap file? answer YES

30) Select #8 (Exit to operating system)

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 16:48

dancresp escribió:
ron escribió:A ver, no confundamos los dos o tres emuladores de CP/M80 que hay para ST con un Sistema Operativo que es para M68K, se trata de una versión para M68K, a la cual miraremos de primero, hacer funcionar y si va... ya veremos.

No, no confundo.
Tengo claro que estás hablando de un sistema operativo puro y duro.

Lo que comento del Apple Mac era un CP/M-68K real y se veía en modo texto. Pero no encuentro la imagen del disco.

Se habló aquí: http://www.retrowiki.es/viewtopic.php?f=30&t=200032164&p=200070642&hilit=mac+cp%2Fm+68k#p200070642

A ver si lo consigues, que sería un punto, aunque desconozco si hay aplicaciones disponibles.


Si y además me has picado y cuando se tira del hilo....

cpm68macinfopressrw.png
cpm68macinfopressrw.png (68.96 KiB) Visto 7307 veces


cpmparamacamstradsemanal25.png
cpmparamacamstradsemanal25.png (39.61 KiB) Visto 7307 veces


Ya tenemos material en ST para hacer pruebas, hay documentación y ahora si toca, pues en cualquier momento quien lo desee y quiera aportar y subir cosas, comentar pruebas, comentarios históricos, etc. todo es bienvenido, no hay que decirlo. A ver si sale algo.... a mi me parece interesante conocer el origen de todo esto y salir del mar de dudas. ¿ Qué es un port y un intento ?, algo aprenderemos.

Avatar de Usuario
eldelcairo
Mensajes: 654
Registrado: 06 May 2015 17:32
Ubicación: Andorra la Vella
Agradecido : 699 veces
Agradecimiento recibido: 168 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor eldelcairo » 10 Abr 2018 17:47

Que curioso eso, que para usar CP/M en el Mac, necesita Fat Mac con 512 Kb de ram?

Alguien tiene una expliación a eso?

P.D.: vale, lo pillo, es para usar el CP/M con emulación de Amstrad CPC... es así?
.
Grupo Comunidad -j4tar1 en TelegramAquí
Contenido Oculto
Este foro requiere que este registrado e identificado para ver el contenido oculto.

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor dancresp » 10 Abr 2018 17:59

eldelcairo escribió:Que curioso eso, que para usar CP/M en el Mac, necesita Fat Mac con 512 Kb de ram?

Alguien tiene una expliación a eso?

P.D.: vale, lo pillo, es para usar el CP/M con emulación de Amstrad CPC... es así?
.

No, no es así.

Era un disco que cuando arranca el Mac (mediante emulador) lo hace en CP/M-86K, en modo texto, con letras negras sobre fondo blanco.

Recuerdo haberlo usado y si no recuerdo mal, no era muy estable, pero sólo usé instrucciones del S.O. y no aplicaciones.
Pero no se donde tengo esa imagen de disco !!! -banghead
Buscando la IP de la W.O.P.R. he encontrado mi índice

dancresp
Mensajes: 6224
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 664 veces
Agradecimiento recibido: 1016 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor dancresp » 10 Abr 2018 18:12

Supongo has visitado esta página: http://www.cpm.z80.de/source.html

Hay un pequeño apartado para el 68000 con fuentes en C.

O esta: http://www.retroarchive.org/cpm/archive ... ource.html
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 18:48

Adjunto otro directorio comprimido para usar como GEMDOS_dir con una versión actualizada del Alcyon en estructura original de los discos 1 de 5.

alcyonHD.zip
(1.05 MiB) Descargado 201 veces

Avatar de Usuario
Solderboy
Mensajes: 112
Registrado: 28 Feb 2018 19:45
Ubicación: En la tierra de los olivos
Agradecido : 23 veces
Agradecimiento recibido: 60 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor Solderboy » 10 Abr 2018 21:12

Una pregunta obvia y tal vez tonta:

Si el problema es conseguir el arranque, ¿cómo lo han hecho los chicos del proyecto Emutos? ¿Puede ser que el código de este proyecto sirva de ayuda?

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 21:29

Ese y tantos otros, ahora hay que ir probando, si compila bien , que si esto y lo otro....
el material está todo ahí para que podáis hacerlo vosotros mismos, esto no es cosa de un momentín, hay que darle unas cuantas vueltas, al menos para entenderlo y saber que está haciendo.

Saludos

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Intentando ensamblar un CP/M68K para Atari ST

Mensajepor ron » 10 Abr 2018 23:08

Estaba haciendo unas pruebas con el cpmsim68k y con el easy68k y a mi la versión 1.2 me funciona perfectamente.
De hecho cambié la fuente de la consola a la de Atari ST y el mockup parece tal cual, así es como lo recuerdo.

mockupcpm68st.jpg
mockupcpm68st.jpg (33.75 KiB) Visto 13536 veces


Volver a “Atari ST”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados