Ayuda emulación NewBrain en MESS

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Ayuda emulación NewBrain en MESS

Mensajepor ron » 14 Mar 2011 19:46

Les he preguntado a estos genios, cual era el status de emulación del NewBrain y cuanto tiempo estimaban en tener algo preparado. Resulta que solo les falta la emulación del COP420.


Newbrain emulation isn't going anywhere until someone provides a dump of the COP420 keyboard controller MCU.


http://www.newbrain.info/specifications/newbrain/cop420-4-bit-processor.html

http://www.datasheetarchive.com/COP402N-datasheet.html

http://mamedev.org/source/src/emu/cpu/cop400/cop420ds.c

Esto es lo que me dice Curt Coder en los foros de MESS
FOROS DE MESS entrada NEWBRAIN por RON



The standalone Newbrain emulator simulates the COP420 behavior.

The chip has to be removed from the computer and dumped using a programmer which can trick the COP420 into test mode:

http://www.nalanda.nitc.ac.in/industry/appnotes/Natsemi/CN-7.pdf



Evidentemente no tengo los medios, pero ¿hay alguien que tenga algo que decir al respecto ?.

Espero ansiosamente vuestros comentarios, joder quiero el NewBrain emulado en MESS, el otro emu, es una cosa rara en delphi y aunque funcione, lo que está por venir es muy grande.

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 15 Mar 2011 08:48

Jepalza está mirando el tema, pero no pinta nada fácil, de ahí que hasta que se pueda sacar el contenido tendremos que esperar para disfrutar del NewBrain en MESS:

A ver si Jepalza dice algo, o nos hace un copy/paste de lo que me dijo.

jepalza

Re: Ayuda emulación NewBrain en MESS

Mensajepor jepalza » 15 Mar 2011 08:55

Despues de leer el tema, lo veo complejo. No es cosa de un dia. No me extraña que no quieran. Se debe construir una circutería externa y realizar un proceso curioso, que provoca un error en la CPU y le hace volcar la ROM. El proceso, según leo, es hacer una llamada sobre las últimas direcciones altas de la ROM, y poner un registro en alto, y la CPU, hace un recorrido por todas las direcciones y las va volcando. En un circuito "demo" que viene, se vuelca en contenido en una RAM externa, y eso permite, a su vez, volcarla por el bus y poder leerla en un grabador. Tengamos en cuenta, que ese chip, no tiene lineas de direcciones como tal, solo de datos, asi que, para poder leer, se necesita, o bien hacer una copia en una ram/rom externa y entonces leer esa ram con sus A0-A15 en un grabador, o bien, hacer un circuito que conecte las lineas de datos en un puerto paralelo del PC y leer en sincronía con la velocidad de la CPU.[/color]


[/color]


O sea, toda una virguería de ingeniería, para "intentar" leerlo.



Por eso no se ha leído aún, y solo se ha "simulado". Se entiende, debido a la comlejidad.



Otra forma, podría ser, empleando el basic del Newbrain, enviando datos que obliguen al chip a dumpear la ROM, aunque sea byte a byte, pero es solo una suposición, y no sé si será posible. Para eso hay que saber un poco progrmar en Newbrain, suguro, que a nivel CPU.



Por mi parte, lo veo complejo, y no es cosa de hoy para mañana. Si el equipo Mess no ha podido hacerlo, no veo por que nosotros lo íbamos a logar. Imagen

[/color]



Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 15 Mar 2011 09:02

Lo que pensábamos, el otro emu, usa un interprete ( simulador ) y no emulador del COP420. Entonces, ya tenemos claro que no les interesa algo que simule el comportamiento, aunque hacer eso por ingeniería inversa, vaya tela tío.

Cuando he portado emuladores, he intentado siempre usar código de emulación ya probado,  pero el jodío  COP420 es más raro que un perro verde. De hecho es un microcontrolador E/S de 4 bit.

Tienen todo hecho excepto esa parte, que es la que les falta, obviamente la emulación que les brinda la parte de mame no debe de ajustarse o funcionar como ellos quieren, son bastante escrupulosos y pejigueras con la fidelidad de lo emulado. No me extraña tampoco.

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 10 May 2011 08:57

Hacía tiempo que no retomábamos lo de la emulación del NewBrain.

Nos hemos puesto en contacto con Chris Desp, que es el autor del Newbrain Emulator .

Nos ha dicho que no tiene la ROM interna del coprocesador COP420, que lo que hace es emular este chip al Z80. Le da al procesador lo que necesita, si es una tecla del teclado pues le pasa la tecla pulsada en el PC al NBEmu, si es un fichero cargando o salvando tan solo le pasa los bytes de un fichero binario.

Lo que se dijo en su día, lo interpreta y eso a los tíos de MESS no les mola.

Nos recomienda de paso que para preservar software de NewBrain se puede usar el emulador para transferir ficheros por RS232 y luego salvarlos a cinta.

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 10 May 2011 09:32

Jepalza, Curt Coder nos invita a que escribamos un simulador de COP420.

Entre otras cosas les he preguntado que pasa con lo que ya existe en MAME

El colega Chris Desp , tiene esta información en su web

TJ’s Workshop – COP Tips

Here are some tips for using the second processor inside the NewBrain Computer.

In addition to the Z80A which is its main processor, the NewBrain contains a National Semiconductor COP420 4-bit processor which is used as an intelligent I/O controller and manages the keyboard, line display, and tape I/O.

Communication between the two processors is handled via two page zero locations; COPCTL and COPST. The COPCTL is a command byte which is written to the COP at interrupt time, and COPST is a series of flags which tell the Z80 what the COP has done, or is doing. There is also a third location, COPBUFF, which is used as a data buffer either to or from the COP. The COPCTL, COPST, and COPBUFF (the names are those used by the technical manual) are at 59, 60 and 61 respectively.

Unless tape I/O is going on, COPBUFF will normally contain the keyboard matrix value of the last key pressed. This value will remain until another key is pressed (it won’t change when you release the key).

The technical manual mentions the function of several of the commands, but is inexplicably coy about telling you what their values are … a deficiency which a little trial and error soon remedies.

It appears that only the top four bits of COPCTL are read by the COP, and those values for which I have been able to discover the function are as follows:

D0 - Do nothing (the default value, and the only one given in the technical manual).

80 - Perform tape I/O (I am uncertain of the details of the operation).

F0 - Rescan keyboard; this will rewrite COPBUFF with the value of any key currently pressed (it will not clear it if no key is being pressed).

A0 – Update line display from buffer area. The line display buffer runs from 62 - 77 inclusive, and is in reverse order (62 is the rightmost character).

So what use is all this? Well the rescan keyboard’ command allows us to tell when a key is being pressed, and also when it is released, which is otherwise impossible on the Newbrain. The following Basic subroutine will return the matrix value of any kept currently being held down (except STOP, REPEAT, the STOP can be detected by other means, of course). If more than one key is held down at once, only one will register, exactly which depends on the key.

The value is six bits wide, the top two bits give the status of SHIFT, CONTROL and GRAPHIC; SHIFT sets bit six, CONTROL bit seven, and GRAPHIC both bits, when pressed. The value returned from each key on the keyboard follows:

1000 a = PEEK(61): IF a = 0 RETURN

1010 POKE 61,0: POKE 59,240: RETURN

(This returns the key in a. It clears COPBUFF and rescans the keyboard if a key is being pressed).

Key Value Key Value Key

1 9 2 8 3

6 4 7 3 8

( 22 ) 23 ‘

E 12 R 11 T

L 36 0 38 P

ESC 31 A 46 S

G 42 J 51 K

+ 29 NLN 30 Z

V 57 B 56 N

55 / 47 VTX

SPC 15 CRL 2 CRU

Value Key Value Key Value

7 4 6 5 5

19 9 20 0 21

24 Q 14 W 13

10 Y 37 U 35

26 = 27 - 28

45 D 44 F 43

62 L 39 ; 40

60 X 59 C 58

52 M 53 , 54

25 HOM 63 INS 61

50 CRD 34 CRR 18

ESC = Escape, NLN=Newline

VTX = Videotext, HOM = Home

INS = Insert, SPC = Space

CRL = Cursor left

CRU = Cursor up

CRD = Cursor down

CRR = Cursor right

SHIFT adds 64 to value

CONTROL adds 128

GRAPHIC = adds 192



The other COP command which I have found useful is the one to rewrite the line display. Using this, the line display can be poked with values, and then updated by setting COPCTL to A0 (POKE 59,160).

The following short program demonstrates that the line display can in fact display 256 different characters, not the 64 or so sated in the manual, the characters are displayed 16 at a time; pressing any key shows the next group.

10 CLOSE #1: OPEN #1,5

20 ba=62: FOR i=0 TO 255 STEP 16

30 FOR j=15 TO 0 STEP -1: POKE ba+j,i+15-j: NEXT j

40 POKE 59,160: GET #1,a: NEXT i

50 CLOSE #1: END

As you will notice, the top 128 characters are simply flashing versions of the bottom 128, and the ‘new’ characters are mostly pretty weird and wonderful …

I have written a game using the line display only using some of the new ‘graphics’ (a world first?), but a more practical use is to enable upper and lower case to be distinguished on the line display, by flashing lower case letters. The following subroutine does just that, displaying a$ in upper/lower case.

1000 IF LEN(a$)}16 THEN a$ = LEFT$(a$,16)

1010 FOR i=1 TO LEN(a$)

1020 a=ASC(MID$(a$,i))

1030 IF a}96 AND a{123 THEN a=a+96

1040 POKE 78-i,a

1050 NEXT i

1060 FOR i=i TO 16

1070 POKE 78-i,32

1080 NEXT i

1090 POKE 59,160

1100 RETURN

The loop from 1010 to 1050 puts the string into the buffer, converting any lower case letters to their flashing upper case equivalents. The loop from 1060 to 1080 clears the rest of the display, and 1090 makes the COP display the buffer.

By Stephen Burt

PCW 165

Digitized by Colin Appleby © 2008

jepalza

Re: Ayuda emulación NewBrain en MESS

Mensajepor jepalza » 10 May 2011 14:23

ron escribió:Jepalza, Curt Coder nos invita a que escribamos un simulador de COP420.



¡Jolines! Si no sabría no por dónde empezar. El NewBrain no lo he usado en mi vida, y aunque lo tengo en la colección, lo tengo "como oro en paño" para que no se estropee. Tendría que empaparme al 100% de sus tripas para poder hacer eso.

No digo que no pueda, (lo intentaré), pero lo veo complejo, cuando nunca se ha hecho.

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 10 May 2011 18:47

Acaban de contestar en el foro del MESS.

If someone has a newbrain and can lend the cop420 out, there is a documented dumping mode built into the chip which should allow the contents to be read out without a decap at all. (the reason the one on the Apple Lisa was decapped is because the chip that was decapped was electrically dead).
see http://www.national.com/an/AB/AB-4.pdf


Vuelven a lo mismo, hay que usar el COP420 de un NB y dicen que ahora hay un modo documentado de extraer el contenido [ lógico es lo que quieren ].

Por otro lado lo que sugiere Curt Coder es la posibilidad de escribir en C un programa que simule precisamente lo que hace el NBEmulator.


Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 01 Jun 2011 08:53

Bueno ya hay mas luz.

Chris Desp acaba de liberar el source del COP420 y del I/O

Ya me he puesto en contacto con la gente de MESS para que lo tengan.

El tema es que está escrito en PASCAL / DELPHI y hay que portarlo a C o a C++



Vamos a ver que nos cuentan, os mantengo informados con el siguiente paso.

unbcop.rar

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 01 Jun 2011 09:11

Voy a poner el código fuente para que se vea que evidentemente lo que dijo Chris Desp es tal cual. Le escribe directamente al Z80 el evento. Le da al procesador lo que necesita, si es una tecla del teclado pues le pasa la tecla pulsada, etc....

En el fichero uNBCop.pas se ve como se gestiona todo el IO. Es Pascal y hace años que no leo una línea de pascal, esto hay que portarlo.

Código: Seleccionar todo

{ if not (value  in [128,0])then
 Begin
  ODS('Port 128 Out ='+inttostr(Value));
  b:=z80_get_reg(Z80_REG_BC);
  ODS('BC ='+inttohex(b,4));
  d:=z80_get_reg(Z80_REG_DE);
  ODS('DE ='+inttohex(d,4));
  h:=z80_get_reg(Z80_REG_HL);
  ODS('HL ='+inttohex(h,4));
  a:=z80_get_reg(Z80_REG_AF);
  ODS('AF ='+inttohex(a,4));
  p:=z80_get_reg(Z80_REG_PC);
  ODS('PC ='+inttohex(p,4));

 end;
 }

end.


jepalza

Re: Ayuda emulación NewBrain en MESS

Mensajepor jepalza » 02 Jun 2011 08:41

Estuve ayer mirando el fuente Pascal, y no me enteré de nada. No hay comentarios, no hay separaciones, está todo "apiñado" y sin orden alguno. Pocas ganas tenía de documentar lo que hacía. Y como "solo" ha pasado el núcleo principal (ni el Z80 ni los accesorios), no sirve para recompilar de vuelta.
Y para curiosear dentro, necesitas pillarlo "descansado".

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 02 Jun 2011 09:26

Lo he intentado.

No hay nada que hacer, al menos de momento.

La primera perla es esta:

once again: this is simulation, not emulation. since Curt has stated already that he's not interested into a simulation of the COP (not to mention that it would be against the scope of MESS), I think this is not of much use


La segunda:

The source provided is under the GPL v2, which is incompatible with the MAME/MESS license. Normally I'm pretty pragmatic about HLEing stuff in order to at least exercise the rest of the driver while someone works on a decap or whatever, but GPLed Pascal code is a bit much.


y la tercera:

If MESS was the only Newbrain emulator in the world then HLEing it temporarily wouldn't be a problem. As a workaround you can use the standalone emulator which works just fine. In the mean time I'll wait for someone to dump the COP, which will eventually happen.


Por tanto, no esperéis emulación de NewBrain a corto o medio plazo en MESS porque la cosa va para rato. Hasta que alguien decapée o vuelque el COP420 no hay nada que hacer. Ojalá alguno que tenga la opción de hacerlo lo haga pronto y fin del cuento.

Me jode un poco que digan que te curres o busques la pieza que falta para luego descubrir que dentro del equipo MESS cada uno tiene puntos de vista diferentes. A mi opinión han sido un poco bordes, nada más.

Respecto al código de Chris Desp, yo sabía desde el principio que este simuador/emulador de NewBrain estaba escrito en Pascal / Delphi.- Lo suyo es que estuviera en C o en C++ pero cada uno programa como quiere o como puede y de momento y por mucho tiempo el único emulador de NewBrain existente seguirá siendo el único.


Avatar de Usuario
Commodoro
Mensajes: 253
Registrado: 17 May 2011 22:04

Re: Ayuda emulación NewBrain en MESS

Mensajepor Commodoro » 02 Jun 2011 22:42

Una lastima, aver si alguien dumpea el chip este y se termina.
A mi me parece bien que esperen.

Avatar de Usuario
habisoft
Mensajes: 26
Registrado: 16 Nov 2011 13:16

Re: Ayuda emulación NewBrain en MESS

Mensajepor habisoft » 19 Nov 2011 13:05

Por lo que he podido ver en el datasheet y modo de depuración del COP420 creo que se podría volcar por el puerto paralelo (modo bidireccional); L[0-7] a D[0-7], CI (reloj) a /Strobe (para hacerlo funcionar a nuestro ritmo), SO a nivel alto (resistencia mediante, como bien nos advierten) y SI a alguna salida cualquiera para alternar entre el modo de ejecución de instrucciones externas y el del volcado de ROM.

Si tenéis alguno de esos integrados desoldados, podría echársele un ojo al tema.

Por otro lado, respecto al código en pascal, ¿qué habría que hacer? ¿Portarlo a C para el MESS?

(El trozo de código que has puesto Ron, al estar entre llaves, es un comentario. De hecho parece código de depuración, para saber el estado del micro al efectuar el acceso a puerto si el valor es mayor de 128.)

Avatar de Usuario
ron
Mensajes: 17206
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 511 veces
Agradecimiento recibido: 546 veces

Re: Ayuda emulación NewBrain en MESS

Mensajepor ron » 19 Nov 2011 20:13

Hola HABI ! ya estás aquí , vamos al tema:

Código: Seleccionar todo

CPU:    Zilog Z80A @ 4Mhz
Co-Processor: National Semiconductor Cop-420
RAM: 32KB
ROM: 24KB
Color: Black & White
Graphics: 256,320,510,640 x250
Text: 80x24 , 40x24, 80x30, 40x30
Storage: 2 Tapes @ 1200 BAUD
BASIC:    Enhanced ANSI Basic + Maths Pack + Graphs Pack
Printer: 1 Serial Port (RS232/V.24) Uni-Directional S/W
Display: Monitor + TV + 16 Char VF Display
Comms:    1 Serial Port (RS232/V.24) Bi-Directional S/W
Expansion: 1 Port


Por un lado, es importante que podamos valorar el disponer de un emulador de NewBrain alternativo. El que hay es este:

NewBrain Emulator

Beta 13 Version of the emulator New FeaturesEmulator is compatible with series 2 roms (not version 2)Assembler can save to file and CAN ASSEMBLE PROJECT FILES (Linking)Assembler is possible to produce NB Roms from the sources. Includes NB Digitizer 3.0 RC 1


Especificaciones del Cop420 para el NBEmu.

Ahora vamos a ver lo que tienen los chicos de MESS:

Aquí está la ultima versión de MESS 0.144 en Source

newbrain [NewBrain MD with Expansion Interface]
newbraim [NewBrain MD]
newbraia [NewBrain AD]
newbraiv [NewBrain VD]


¿que es lo que buscamos?

O bien emular o escribir un emu del cop420 o reconvertir ese código. Si es necesario se podría hablar con Chris Desp ( por los sources en Delphi )pero vamos, ¿ se puede hacer algo ?

Sobre lo de un Cop420 desoldado, como creo haberte comentado va a ser realmente difícil que alguien saque un cop420 de un NewBrain con lo buscados y cotizados que están.-

Ni falta hará que decir que en Mess.org tienen todas las herramientas para compilar el mess, y que la emulación de NewBrain aunque el emulador que hay lo emula bastante bien, a mi personalmente me gustaría tener un emulador mas light, menos complicado y más abierto.

Lo hablamos.

Ahh el fichero de marras :

unbcop.rar

SALUDOS

Avatar de Usuario
habisoft
Mensajes: 26
Registrado: 16 Nov 2011 13:16

Re: Ayuda emulación NewBrain en MESS

Mensajepor habisoft » 20 Nov 2011 19:27

Hmmm... para hacer un emulador (decente) hacen falta bastantes más datos que las especificaciones técnicas (cómo se pagina la memoria, la contención (aquí tenemos un coprocesador que accede directamente a la memoria), las interrupciones, el sistema de vídeo, ...).

Echándole un ojo a esos ficheros he visto que en uno se emula el COP420 leyendo y escribiendo directamente sobre memoria, sin tener en cuenta la contención. Es bastante simple en ese aspecto y fácil de emular aparentemente.

En el otro fichero trata el I/O genérico, y he visto que existen al menos dos interrupciones (supongo que ambas mediante /INTR), para timer e impresora. También veo una arquitectura de bancos, y el uso de páginas de 8KB. Pero no nos aclara otro hardware como por ejemplo el tema de vídeo.

Teniendo en cuenta que no conozco para nada la arquitectura ni tengo uno de estos cacharros para hacer pruebas veo difícil el hacer un emulador. De todas formas le echaré un vistazo al código del MESS, a ver si me aclara algo.

Por otro lado, desoldar un integrado no significa dejar inservible un ordenador (se le vuelve a colocar luego, incluso en zócalo); pero en cualquier caso, lo entiendo perfectamente.


Volver a “NewBrain”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado