1. El Videobasic nº 12 escaneado.
2. EL P.D.S., un sistema de programación y conexión Spectrum-PC,
destripado por Jose Leandro. Fue usado por las casas de soft para
el desarrollo de programas. Novedad mundial.
Saludos, J.M:
El trastero del Spectrum <http://www.speccy.org/trastero/>
> 2. EL P.D.S., un sistema de programación y conexión Spectrum-PC,
> destripado por Jose Leandro. Fue usado por las casas de soft para
> el desarrollo de programas. Novedad mundial.
Simplemente.... FASCINANTE!!
Joer, si hasta da pena de que existan hoy día emuladores, porque tendría
que ser toda una experiencia trabajar en un entorno así en el año 87 ...
o incluso hoy día :O
[PDS]
> Simplemente.... FASCINANTE!!
Sí, lo has definido muy bien. Y la currada de José Leandro todavía lo es
más, hay gente que llevaba preguntando por este trasto en WoS desde
tiempos inmemoriales, pero hasta ahora la documentación que había en la
red era nula. Ahora creo que de nula no tiene nada... ;-)
> Joer, si hasta da pena de que existan hoy día emuladores, porque
> tendría que ser toda una experiencia trabajar en un entorno así en el
> año 87 ... o incluso hoy día :O
Es curioso que el sistema tenía sus detractores y admiradores. Al
parecer, se utilizó de forma bastante habitual en Ocean durante su
última época, y su uso era muy extendido entre las compañías españolas,
empezando por Dinamic. Veréis como, por ejemplo, entre sus detractores
estaba Jon Ritman, como comentaba en CSS hace ya unos cuantos añitos:
http://groups.google.com/group/comp.sys.sinclair/msg/545864e95d3306d0
Es de suponer que los fuentes que aparecieron hace bien poquito de Maz
Spork (Buggy Boy y Chain Reaction)...
http://maz.spork.dk/src/index.html
...eran código ensamblador para el PDS. Lamentablemente no se pueden
compilar sin el hardware, lo cual me lleva a la siguiente pregunta:
¿Hay alguien por aquí con la suficiente paciencia como para "hackear"
este software y saltarse ese chequeo, de tal manera que el objeto
ensamblado se vuelque en el disco duro del PC, en vez de enviarlo tal
cual a través de la tarjeta ISA?
Si se pudise hacer eso, podríamos tener acceso a otros fuentes, y abrir
la posibilidad de ampliar viejos juegos cuyo código fuente sea liberado
por sus autores.
Ahí os dejo la propuesta. A ver si alguien se anima y coge el guante.
Saludicos,
--
Juan Pablo López
mailto: http://www.speccy.org/spa2/spa2-mailto.gif
> Esta semana dos novedades (sin contar la página de la semana):
Rectifico, eran tres, incluida la versión coloreada del Sol Negro
de Opera, gracias a El Elfo Oscuro.
Saludos, J.M:
> Rectifico, eran tres, incluida la versión coloreada del Sol Negro
> de Opera, gracias a El Elfo Oscuro.
Lo de Jose leandro, una vez más, es un gran trabajo. documentación y
explicaciones de CALIDAD en mayúsculas.
Y lo de Sol Negro ¡genial también! uno se pregunta porque no los
vendian así directamente....
Un Saludo
T.Brazil
> en un emulador estilo (conectar PDS). Tampoco se si ese ensamblador
> sería realmente superior a tasm z80asm o pasmo o si traería nuevas
> expectativas de programaíón.
A juzgar por un vistazo que he echado a fuentes que lo usan, no parece tener
nada especial. He visto que dicen que tiene algunas construcciones de algo
más alto nivel de lo habitual en ensamblador, para bucles por ejemplo, pero
no parece que hayan sido muy usadas.
He recibido sugerencias de añadir características de ese tipo a Pasmo, pero
las he rechazdo por dos motivos: ante todo, creo que cuando se quieren usar
cosas de ese tipo lo más adecuado sería ensamblador en línea dentro de un
compilador, y segundo que me parece preferible ampliar las capacidades de
las macros en vez de incluir algo específico para cada posible necesidad.
La ampliación de las capacidades de las macros ya está hecha... es decir, lo
estará cuando lance la versión definitiva, por ahora sólo para los que se
aventuren a probar la pre.
A mi me parece preferible seguir desarrollando los ensambladores cruzados
existentes desarrollados con técnicas actuales a revivir esa pieza de
museo. Al menos desde el punto de vista de nuevos desarrollos, como estudio
de material de época sí que puede ser muy interesante, claro.
Una cosa que sí podría ser útil sería buscar la forma de usar ese hardware
para cargar en la máquina objetivo los programas desarrolados con otras
herramientas. Pero por lo que he leído es una tarjeta ISA, y no abundan
mucho actualmente los PC con ellas. Quizá alguno de los competentes en
hardware podría mirar de diseñar algo similar conectable a un usb, por
ejemplo.
--
Salu2
>Una cosa que sí podría ser útil sería buscar la forma de usar ese hardware
>para cargar en la máquina objetivo los programas desarrolados con otras
>herramientas. Pero por lo que he leído es una tarjeta ISA, y no abundan
>mucho actualmente los PC con ellas. Quizá alguno de los competentes en
>hardware podría mirar de diseñar algo similar conectable a un usb, por
>ejemplo.
>
>
Este tema lo hemos comentado y realmente es muy engorroso, si usas la
ISA malo, deberías
tener un PC exprofeso (como el que se hizo Jose Leandro sólo para este
artículo), el tema
del USB, mejor no hablar, es complicadísimo de tratar, cualquier
solución bajo hard no merece la
pena, nos cuesta mas el collar que el perro.
Lo ideal sería implementar una solución bajo software y usar el propio
PC como máquina
destino, salvando incluso con formato TZX o TAP, al estilo de los
emuladores.
> Lo ideal sería implementar una solución bajo software y usar el propio
> PC como máquina destino, salvando incluso con formato TZX o TAP, al
> estilo de los emuladores.
Una posibilidad podría ser un emulador tipo dosemu que emulara la tarjeta
esa conectada a un emulador de spectrum. Pero no veo que eso fuera de mucha
utilidad, para trabajar con emuladores Pasmo sirve perfectamente, en mi
interesada opinión ;)
--
Salu2
Para mí es indiscutible que Pasmo es la mejor opción para desarrollar
nuevo software en ensamblador, hoy en día, para Spectrum.
Sin embargo, existen fuentes de programas desarrollados para este
sistema, y es previsible que salgan más en el futuro, y existen dos
opciones:
1. Se adaptan sistemáticamente esos fuentes para que sean ensamblables
por Pasmo, lo cual se haría a mano (a menos de que alguien se currara
una herramienta para portar el código).
2. Se hackea el PDSZ80.EXE para que se salte el chequeo de la tarjeta y
grabe el objeto en disco, en vez de enviarlo por una comunicación puerto
serie (o se captura dicha salida de alguna manera).
El caso es que ya tenemos varios de estos fuentes, y ciertas personas
incluso nos han prometido más en caso de que esto se solucione, de ahí
que sea especialmente interesante.
Resumiendo: que se busca una solución definitiva, no como alternativa a
Pasmo, que no es necesaria, sino como una vía para recuperar viejos
desarrollos sobre este sistema.
Lo que viene en la línea de lo que tú comentabas en otro post :)
Saludicos,
--
Juan Pablo López
> Sin embargo, existen fuentes de programas desarrollados para este
> sistema, y es previsible que salgan más en el futuro, y existen dos
> opciones:
> 1. Se adaptan sistemáticamente esos fuentes para que sean ensamblables
> por Pasmo, lo cual se haría a mano (a menos de que alguien se currara
> una herramienta para portar el código).
Hay un par de posibles opciones. Una la que dices, escribir una herramienta
para portar el código, y otra adaptar Pasmo. Si hay gente interesada podría
abordar la segunda opción, pero haría falta colaboración de alguien con
acceso a "la cosa real", y en este momento no podría ser, tengo ya
demasiadas cosas nuevas que terminar para la próxima versión.
> 2. Se hackea el PDSZ80.EXE para que se salte el chequeo de la tarjeta y
> grabe el objeto en disco, en vez de enviarlo por una comunicación puerto
> serie (o se captura dicha salida de alguna manera).
No me había fijado en la posibilidad de enviarlo por puerto serie. Eso quizá
sea fácilmente capturable desde dosemu, por ejemplo.
Otra idea sencilla es capturar la salida serie por el viejo procedimiento de
un cable de com1 a com2 y un programa recibiendo.
Lo de meter un parche al exe sería cuestión de encontrar a alguien que siga
siendo aficionado a esas cosas. Quizá sea más fácil meter algo en dosemu
que simule la respuesta de la tarjeta, pero mis escasos conocimientos de
dosemu no dan para ello.
--
Salu2
> Hay un par de posibles opciones. Una la que dices, escribir una herramienta
> para portar el código, y otra adaptar Pasmo. Si hay gente interesada podría
> abordar la segunda opción, pero haría falta colaboración de alguien con
> acceso a "la cosa real", y en este momento no podría ser, tengo ya
> demasiadas cosas nuevas que terminar para la próxima versión.
Eso sería fantástico en mi opinión; creo que a la larga tendría interés
pues era un método de desarrollo habitual (por ejemplo, en Ocean o en
Dinamic) así que es fácil que aparezcan nuevos fuentes. De hecho, nos
han prometido unos poquitos más si conseguimos solucionar este pequeño
problema (y hasta aquí puedo leer ;-)
Cualquiera de estas dos opciones sería óptima, pero creo que conllevan
más trabajo que la de hackear, por eso la propuse primero.
En cualquier caso, he planteado también la cuestión en los foros de WoS,
sección Miscelánea. A ver si hay suerte y alguien se lanza a la piscina;
estaría fantástico y sería el broche de oro al trabajo de José Leandro.
>> Hay un par de posibles opciones. Una la que dices, escribir una
>> herramienta para portar el código, y otra adaptar Pasmo. Si hay gente
>> interesada podría abordar la segunda opción, pero haría falta
>> colaboración de alguien con acceso a "la cosa real", y en este momento no
>> podría ser, tengo ya demasiadas cosas nuevas que terminar para la próxima
>> versión.
>
> Eso sería fantástico en mi opinión; creo que a la larga tendría interés
> pues era un método de desarrollo habitual (por ejemplo, en Ocean o en
> Dinamic) así que es fácil que aparezcan nuevos fuentes. De hecho, nos
> han prometido unos poquitos más si conseguimos solucionar este pequeño
> problema (y hasta aquí puedo leer ;-)
>
> Cualquiera de estas dos opciones sería óptima, pero creo que conllevan
> más trabajo que la de hackear, por eso la propuse primero.
Según para quien... para mi la de parchear un exe de ms-dos llevaría un
tiempo infinito, por que nunca tuve mucha práctica con esas cosas y no me
interesa mejorarla a estas alturas.
--
Salu2
Sí, tienes razón, para mí también es muy compleja. Pero supongo que para
alguien con experiencia es bastante más rápido que empollarse las gramáticas
y desarrollar un traductor. Pero, evidentemente, son sólo suposiciones.
Por cierto, apunte cultural. Comenta karingal en los foros de WOS que
Raffaelle Cecco lo usó para desarrollar Cybernoid 2 y Stormlord (según el
propio autor comentaba en la sección Cecco's Log de la revista británica
Crash).
>> Según para quien... para mi la de parchear un exe de ms-dos llevaría un
>> tiempo infinito, por que nunca tuve mucha práctica con esas cosas y no me
>> interesa mejorarla a estas alturas.
>
> Sí, tienes razón, para mí también es muy compleja. Pero supongo que para
> alguien con experiencia es bastante más rápido que empollarse las
> gramáticas y desarrollar un traductor. Pero, evidentemente, son sólo
> suposiciones.
Pues la verdad es que no había pensado bien el asunto, por el poco código
que había mirado me había parecido que bstaría con incluir un par de
directivas pero claro, para que fuera plenamente útil habría que considerar
las diferentes precedencias de operadores y seguramente algunas cosas más.
Así que pensándolo mejor me uno a la opinión de que aprovechar el exe
original es la posibilidad más prometedora. Y para los programas que se
quieran ampliar y modificar en cierto grado, adaptación manual a la
sintaxis de algún ensamblador actual.
--
Salu2
>¿Hay alguien por aquí con la suficiente paciencia como para "hackear"
>este software y saltarse ese chequeo, de tal manera que el objeto
>ensamblado se vuelque en el disco duro del PC, en vez de enviarlo tal
>cual a través de la tarjeta ISA?
Tras probar el debugger gratuito de la página de Borland, que solo es
para 32 bits, y tras instalar un Borland C++ Builder 4 que tenía por ahí
y comprobar que tampoco traía el debugger para DOS, he estado
buscando en Google hasta que he podido encontrar para descargar la
versión 4.0 del TurboDebugger para DOS, que por lo visto consume
solo 20Ks de memoria convencional, y es justo lo que necesitaba porque
usando el TD de la versión 3.1 no se ejecutaba por falta de memoria.
Así que estoy listo para echarle un vistazo en cuanto vuelva del trabajo,
aunque no puedo prometer nada. ¡Deseadme suerte!
METALBRAIN
(C) 1977 Tejedor & Gómez Research Ltd.
Yo con el DEBUG de MSDOS "detodalavida", he conseguido averiguar esto:
En determinado punto del programa, después de marearte redirigiendo la
interrupción 01 un par de veces, inutilizando así cualquier intento de
ejecución paso a paso con un debugger de modo real (el debug trabaja
así), me encuentro con una llamada a una rutina, que entre otras cosas,
redirige la interrupción de breakpoint (la 03), inicializa el contador 0
del 8254, y redirige las interrupciones 8 y 9 (esta última, la de
teclado) a rutinas propias suyas.
Después eso está lo más interesante: según el esquemático, los puertos
usados en el PC están del rango 300h - 31Fh, así que el programa se pone
a escribir valores en puertos dentro de ese rango, concretamente en los
puertos 306h, 302h y 304h. Cada OUT está seguido de 3 saltos para "hacer
tiempo" al bus ISA que es muy lento.
El último OUT es el interesante: mete el valor 8Bh en el puerto 302h, y
después de los 3 saltitos, hace un IN a ese mismo puerto y mira si el
valor leido es 8Bh. Si es así, sigue el programa. Si no...
... DEBERIA VOLVER A HACER IN A ESE PUERTO PARA SEGUIR CHEQUEANDO PERO....
... NO LO HACEEEEEEEEEEE!!!
Miren, miren:
1E6A:6BB9 EC IN AL,DX
1E6A:6BBA 3C8B CMP AL,8B
1E6A:6BBC 75FC JNZ 6BBA
Esto parece ser un fallo: el JNZ debería haberse hecho a 6BB), y no a
6BBA. Ni que decir tiene que si el primer "IN" no da el valor esperado
(8Bh), jamás lo dará!
Esta es la parte de rutina que hace estos IN y OUT's a la tarjeta, con
el IN dichoso al final:
1E6A:6B87 BA0603 MOV DX,0306
1E6A:6B8A B098 MOV AL,98
1E6A:6B8C EE OUT DX,AL
1E6A:6B8D EB00 JMP 6B8F
1E6A:6B8F EB00 JMP 6B91
1E6A:6B91 EB00 JMP 6B93
1E6A:6B93 B202 MOV DL,02
1E6A:6B95 B0FF MOV AL,FF
1E6A:6B97 EE OUT DX,AL
1E6A:6B98 EB00 JMP 6B9A
1E6A:6B9A EB00 JMP 6B9C
1E6A:6B9C EB00 JMP 6B9E
1E6A:6B9E B204 MOV DL,04
1E6A:6BA0 EE OUT DX,AL
1E6A:6BA1 EB00 JMP 6BA3
1E6A:6BA3 EB00 JMP 6BA5
1E6A:6BA5 EB00 JMP 6BA7
1E6A:6BA7 B08B MOV AL,8B
1E6A:6BA9 B202 MOV DL,02
1E6A:6BAB EE OUT DX,AL
1E6A:6BAC EB00 JMP 6BAE
1E6A:6BAE EB00 JMP 6BB0
1E6A:6BB0 EB00 JMP 6BB2
1E6A:6BB2 803E801701 CMP BYTE PTR [1780],01
1E6A:6BB7 7411 JZ 6BCA
1E6A:6BB9 EC IN AL,DX
1E6A:6BBA 3C8B CMP AL,8B
1E6A:6BBC 75FC JNZ 6BBA
1E6A:6BBE EB00 JMP 6BC0
Bueno, pues lo que he probado es a cambiar ese JNZ 6BBA por 2 NOP's
monísimos, y lo que he conseguido es que me salga la ventana del editor,
con el cursor en rojo, y el teclado parece que responde, aunque de ahí
no he pasado...
Para conseguir esto, coged vuestro editor de ficheros binarios favorito,
y desplazarse hasta el offset 17CBCh : a partir de ahí, cambiad la
secuencia "75 FC" por "90 90" y grabad el resultado.
Es que se me atascó el dedo en las mayúsculas :P
> En cualquier caso, he planteado también la cuestión en los foros de WoS,
> sección Miscelánea. A ver si hay suerte y alguien se lanza a la piscina;
> estaría fantástico y sería el broche de oro al trabajo de José Leandro.
Ayer, al leer wos vi tu mail, perraco :-)
Me ha hecho mucha gracia ver el artículo en indio-ingles :-)
Saludos
José Leandro
>
> Después eso está lo más interesante: según el esquemático, los puertos
> usados en el PC están del rango 300h - 31Fh, así que el programa se pone
> a escribir valores en puertos dentro de ese rango, concretamente en los
> puertos 306h, 302h y 304h. Cada OUT está seguido de 3 saltos para "hacer
> tiempo" al bus ISA que es muy lento.
Estupendo trabajo :-)
>
>
> Bueno, pues lo que he probado es a cambiar ese JNZ 6BBA por 2 NOP's
> monísimos, y lo que he conseguido es que me salga la ventana del editor,
> con el cursor en rojo, y el teclado parece que responde, aunque de ahí
> no he pasado...
Cuidado con la disposición de teclas. Espera un teclado XT de 84 teclas
por lo que algunas de nuestros teclados no van.
>
> Para conseguir esto, coged vuestro editor de ficheros binarios favorito,
> y desplazarse hasta el offset 17CBCh : a partir de ahí, cambiad la
> secuencia "75 FC" por "90 90" y grabad el resultado.
Lo probaré
Saludos
José Leandro
Pues probado y funciona como habías indicado ( aunque lo único que he
hecho es navegar por los menus). Curiosamente a mi me aparece el cursor
me aparece a mi en verde
Felicidades.
Saludos
José Leandro
Pues será verde.... yo y mi vista :P
[Parcheo del PDSZ80.EXE]
Felicidades y gracias por la currada :)))))
Ahora sólo queda averiguar la mejor manera de grabar el objeto
ensamblado al disco duro (capturando el puerto serie, o lo que sea).
Esta noche me pongo con ello.
Gracias de nuevo!!
Estoy estudiando una forma alternativa de hacer esto, y es, en lugar de
parchear el ejecutable hasta hacer lo que queramos (que puede ser más o
menos fácil), coger y "parchear" al Windows. Me explico: consiste en
escribir un driver de modo kérnel para Windows 2000/XP que emule a
nuestra tarjeta ISA, de tal forma que el programa siga creyendo que está
ahí (aunque yo parchearía el PDSZ80.EXE para que la comprobación del IN
la haga como debe hacerse...), y mande su salida a través de los puertos
300 - 31F, que serán convenientemente interceptados por nuestro driver,
que a su vez escribirá todo lo que le echen hacia un fichero.
Como tenemos el esquemático, y éste no es especialmente complejo, es
factible la emulación :)
He hecho una consulta al respecto con uno de mis compañeros, que tiene
más experiencia que yo en drivers para Windows. Según lo que me
conteste, abordaré o no el asunto.
>> Ahora sólo queda averiguar la mejor manera de grabar el objeto
>> ensamblado al disco duro (capturando el puerto serie, o lo que sea).
>
> Estoy estudiando una forma alternativa de hacer esto
(...)
> menos fácil), coger y "parchear" al Windows. Me explico: consiste en
> escribir un driver de modo kérnel para Windows 2000/XP que emule a
> nuestra tarjeta ISA,
Bueno... ¡¡¡¡qué profesionalidad!!!! :-)
A ver si hay suerte y al final es factible, sería una solución
inmejorable (porque no sólo valdría para el PDSZ80, sino también para la
versión del 6502).
Lo dicho, que a ver si va bien la cosa. ¡Gracias por el curro!