Emulazione General Processor Modello T

106 views
Skip to first unread message

roberto.lavarone

unread,
Nov 19, 2011, 9:37:34 AM11/19/11
to GP Users Group
Salve a tutti,
sto iniziando a raccogliere la documentazione necessaria a sviluppare il
driver per
l'emulatore MESS.

Mi rivolgo a chiunque possegga qualsiasi tipo di materiale o
informazione tecnica utile.

Ciᅵ che occorre:
- Schemi elettrici (in ordine di importanza)
- scheda CPU con decodifica memoria ed I/O
- scheda video
- tastiera
- interfaccia floppy 5.25" ed 8"
- interfaccia hard disk
- interfaccia registratore a cassette
- schede I/O (seriale, centronics, ecc.)
- Mappa della memoria e dei dispositivi di I/O
- Dump del firmware (comprese le ROM del generatore di caratteri)
- Immagini dei dischi di sistema e di altri software (preferibile il
formato .DMK)
- Immagini .wav del software su cassetta (Mini Basic, Extended Basic)

Inutile dire che sarebbe utilissimo poter mettere le mani su una
macchina funzionante, ma
anche da una macchina guasta, considerata la tecnologia costruttiva
dell'epoca, si
possono ottenere informazioni molto importante.

Sarebbe bello poter pubblicare tutte queste informazioni sul modello del
lavoro fatto da
Roberto Bazzano con il suo sito http://www.z80ne.com/

Luigi Serrantoni

unread,
Nov 19, 2011, 12:13:15 PM11/19/11
to gp-user...@googlegroups.com
From: "roberto.lavarone"

>sto iniziando a raccogliere la documentazione necessaria a sviluppare il
>driver per l'emulatore MESS.

Ciao Roberto!
� una iniziativa splendida e spero che chi ha qualsiasi informazione si
faccia vivo e contribuisca a salvaguardare questa macchina
sto invitando alla lista tutti quelli che mi vengono in mente che hanno
macchine General Processor o sono interessate all'argomento
spero vivamente che qualcuno fi faccia vivo con delle informazioni

>Ci� che occorre:


>- Schemi elettrici (in ordine di importanza)
> - scheda CPU con decodifica memoria ed I/O

....
mi permetto di aggiungere che anche le foto delle schede sono interessanti
perch� consentono di identificare la componentistica utilizzata

>Sarebbe bello poter pubblicare tutte queste informazioni sul modello del
>lavoro fatto da
>Roberto Bazzano con il suo sito http://www.z80ne.com/

non ti dico quanto piacerebbe anche a me....
computerhitory.it ha tutto lo spazio necessario per poterlo fare
io inizierei col mettere in ordine sul blog le informazioni tecniche in un
paio di articoli

ciao
Luigi

Nino Porcino

unread,
Oct 18, 2021, 10:54:35 AM10/18/21
to GP Users Group
Ciao,
non so se c'è ancora qualcuno che legge questo vecchio post, purtroppo scopro solo adesso dell'esistenza di questo gruppo :-) 

Volevo solo dire agli interessati che negli ultimi 2-3 anni il General Processor Model T è stato quasi completamente analizzato ed è stato fatto un emulatore che funziona in 64x16, 80x24, dischi WDC1791 e hard disk SASI.

Se siete ancora interessati all'argomento, scrivete qui oppure alla mia mail: nino.p...@gmail.com (sono presente anche su FB: https://www.facebook.com/profile.php?id=100010871234988

Ciao!

Roberto Lavarone

unread,
Oct 18, 2021, 12:52:13 PM10/18/21
to GP Users Group
Benissimo che esista un emulatore specifico; io vorrei invece sviluppare un emulatore per il sistema MAME/MESS (https://www.mamedev.org/).
Per questo avrei bisogno della documentazione tecnica (mappa della memoria e dell'I/O, schema), del firmware e di qualche immagine dei floppy di sistema e applicazioni.
Per chi non lo conoscesse gli scopi principali del MAME sono la conservazione dei vecchi sistemi e l'accuratezza dell'emulazione.

Saluti
Roberto

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "GP Users Group" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a GP-Users-Grou...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/GP-Users-Group/2051db47-2113-48f2-b54d-541c5b838df2n%40googlegroups.com.
Message has been deleted

Roberto Lavarone

unread,
Oct 19, 2021, 6:59:20 AM10/19/21
to GP-User...@googlegroups.com, Nino Porcino
Non è che chi ha realizzato l'emulatore ha già raccolto tutta la documentazione e la può mettere a disposizione?
Qualcuno ne sa qualcosa?

Saluti
Roberto

Il 18/10/21 16:54, Nino Porcino ha scritto:
--

Nino Porcino

unread,
Oct 19, 2021, 1:39:57 PM10/19/21
to GP Users Group
sviluppare un emulatore nel MAME è sicuramente possibile e auspicabile; personalmente però ho trovato più conveniente scriverlo di sana pianta perchè non ho dimestichezza con il codice del MAME (ci ho provato anni fa con il computer Laser 500 ma alla fine ho rinunciato).

L'emulatore è stato un valido strumento di indagine per il lavoro di reverse-engineering delle varie parti; essendo scritto in JavaScript è stato possibile fare modifiche al volo e ispezionare lo stato della macchina emulata in condizioni "live".

Non esiste ancora una vera documentazione (dobbiamo mettere ordine tra i nostri files) -- se vuoi comunque ti posso dare tutti i dettagli necessari, ormai abbiamo sviscerato quasi tutti i segreti di questa macchina! 

Siamo partiti da un precedente emulatore per il ChildZ (sempre della General Processor) che avevamo scritto in occasione del restauro di una macchina con ROM customizzate. (L'emulatore è online e si trova qui: https://nippur72.github.io/ChildZ-emu). Grazie all'esame di varie macchine reali (o pezzi di queste) e dei pochi schemi sopravvissuti siamo stati in grado di adattare l'emulatore e far in modo che facesse girare le EPROM del Model T.

All'inizio emulava solo il T05, macchina con solo registratore a cassette, ed infatti siamo riusciti a caricare il nastro del "minibasic" dal file WAV. Poi siamo passati all'analisi delle EPROM e del BIOS CP/M che abbiamo quasi completamente disassemblato e ricostruito. Da qui è stato possibile implementare l'emulazione del controller floppy WDC 1791 e far girare le immagini dei dischi. Abbiamo anche ricreato le immagini del CP/M in versione 5.25" (per il modello T08) che erano mancanti, adattandola dalla versione 8". 

Successivamente è stata recuperata l'immagine di un hard disk SASI contenente il CP/M e vari files utente; da questa abbiamo implementato l'emulazione del controller SA1400 e fatto girare il CP/M per quello che era il modello T20 (80 colonne).

L'emulatore si può provare a questo indirizzo: https://nippur72.github.io/gpmodelt-emu ma purtroppo non ha ancora una interfaccia grafica, che spero di aggiungere in futuro. Il codice è open source e si trova al repo: https://github.com/nippur72/gpmodelt-emu


Roberto Lavarone

unread,
Oct 19, 2021, 1:47:24 PM10/19/21
to GP-User...@googlegroups.com
In passato (2011 circa), ho scritto l'emulatore dello Z80 di Nuova Elettronica, pescando a piene mani dal sito www.z80ne.com. Oggi il framework del MAME è piuttosto cambiato, dovrò studiare le novità (e nel frattempo il mio C++ si è un po' arrugginito).
Sarebbe comunque bello poter accedere al firmware e al software recuperati.
--
Roberto Lavarone

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità.

Nino Porcino

unread,
Oct 19, 2021, 6:01:21 PM10/19/21
to GP Users Group
Alcune info preliminari:

Mappa di memoria:
0000 .. BFFF RAM utente
C000 .. CFFF RAM video  (replicata C400, C800, CC00)
D000 .. DFFF (non usato) espansione EPROM
E000 .. EFFF EPROM sistema
F000 .. FFFF (non usato) espansione EPROM

ci sono vari set di EPROM dei quali ne abbiamo identificati due buoni: 
- il primo supporta il video 64x16 e due floppy con controller WDC1791 (Modelli T05/T08/T10) ed ha il programma TMON come monitor di avvio; c'è anche la parte relativa al registratore a cassette (ACI)
- il secondo supporta il video 80x24 con controller HD SASI e floppy 1791 (Modello T20) e ha un monitor d'avvio ridotto all'essenziale

All'avvio il sistema fa un JP $E000 (non abbiamo ancora definito come poiché ci manca lo schema della motherboard).

Il video ha una matrice 8x13 con due differenti set di caratteri in ROM una per 64x16 e una 80x24.
VIDEO RAM:
- 64x16 da $C000 a $C3FF
- 80x24 da $C000 a $CBFF, ogni riga 128 bytes (48 non usati)
- reverse: 7th bit=1 normale, 0=reverse

La tastiera è di tipo ASCII 7 bit + segnale di strobe.
- Tasto BRK genera RESET sullo Z80
- I/O porta $FF 
- bit 0..6: carattere ASCII premuto (invertito)
- bit 7: 1=strobe

I/O

FF      Tastiera
3f      floppy porta drivesel per wdc1791
bc-bf   floppy wdc1791
5c-5f   porta parallela
78-7b   seriale
6c-6d   HD sasi
77      ACI (registratore a cassette)

La parte veramente complicata sono i due controller WDC1791 e SA1400, sarebbe ottimo se fossero già stati codificati nel MAME, altrimenti tocca riscriverli o quantomeno partire dalla mia implementazione in JavaScript.

Roberto Lavarone

unread,
Oct 20, 2021, 1:55:39 AM10/20/21
to GP Users Group
Grazie!
Il 20/10/21 00:01, Nino Porcino ha scritto:
Alcune info preliminari:

Mappa di memoria:
0000 .. BFFF RAM utente
C000 .. CFFF RAM video  (replicata C400, C800, CC00)
D000 .. DFFF (non usato) espansione EPROM
E000 .. EFFF EPROM sistema
F000 .. FFFF (non usato) espansione EPROM

ci sono vari set di EPROM dei quali ne abbiamo identificati due buoni: 
- il primo supporta il video 64x16 e due floppy con controller WDC1791 (Modelli T05/T08/T10) ed ha il programma TMON come monitor di avvio; c'è anche la parte relativa al registratore a cassette (ACI)
- il secondo supporta il video 80x24 con controller HD SASI e floppy 1791 (Modello T20) e ha un monitor d'avvio ridotto all'essenziale

All'avvio il sistema fa un JP $E000 (non abbiamo ancora definito come poiché ci manca lo schema della motherboard).

Qualcosa di simile lo fa lo Z80NE: al reset, per i primi due cicli M1, viene forzato a 1 il bit A15 (0x0000 diventa 0x8000). Sarebbe bello indagare per realizzare un'emulazione accurata.


Il video ha una matrice 8x13 con due differenti set di caratteri in ROM una per 64x16 e una 80x24.
VIDEO RAM:
- 64x16 da $C000 a $C3FF
- 80x24 da $C000 a $CBFF, ogni riga 128 bytes (48 non usati)
- reverse: 7th bit=1 normale, 0=reverse
Viene usata logica TTL oppure c'è un chip dedicato?


La tastiera è di tipo ASCII 7 bit + segnale di strobe.
- Tasto BRK genera RESET sullo Z80
- I/O porta $FF 
- bit 0..6: carattere ASCII premuto (invertito)
- bit 7: 1=strobe

I/O

FF      Tastiera
3f      floppy porta drivesel per wdc1791
bc-bf   floppy wdc1791
5c-5f   porta parallela
78-7b   seriale
6c-6d   HD sasi
77      ACI (registratore a cassette)
Anche qui: ci sono chip dedicati (SIO, PIO, ecc.) o è tutta logica TTL?


La parte veramente complicata sono i due controller WDC1791 e SA1400, sarebbe ottimo se fossero già stati codificati nel MAME, altrimenti tocca riscriverli o quantomeno partire dalla mia implementazione in JavaScript.

WDC1791 è emulato.

SA1400 devo verificare.


Partirei dai sistemi più semplici, video 16x64, TMON, floppy.

Sarebbe bello anche realizzare una matrice con la configurazione di ogni modello (allestimento hardware, firmware).


Saluti

Roberto

Marcello Ferri

unread,
Oct 20, 2021, 2:40:09 AM10/20/21
to GP-User...@googlegroups.com
Buongiorno a tutti,
vi seguo con interesse e anche se non ho molto tempo libero, ho un
Modello T funzionante (non sempre) con doppio disco da 8" e modeste
conoscenze elettroniche/informatiche che metto volentieri a
disposizione.
A presto,
Marcello Ferri

Nino Porcino

unread,
Oct 20, 2021, 6:33:23 AM10/20/21
to GP Users Group
@Roberto Lavarone:

> Qualcosa di simile lo fa lo Z80NE: al reset, per i primi due cicli M1, viene forzato a 1 il bit A15 (0x0000 diventa 0x8000). 
> Sarebbe bello indagare per realizzare un'emulazione accurata.

mi ricordo di aver discusso la questione con Piero Andreini agli inizi, forse lui si ricorda qualche ulteriore dettaglio. Mi pare che anche il ChildZ abbia un meccanismo simile. 

> Viene usata logica TTL oppure c'è un chip dedicato?

per la scheda video tutta logica TTL. La generazione del video è simile a quelle che erano le prime schede video per sistemi S-100, tant'è vero che con Francesco Sblendorio usiamo l'emulatore GP per simulare il comportamento di un Altair 8800 con scheda video VTI Poly 88 della Polymorphic Systems. La modalità 64x16 è clockata a 10 MHz e il clock della CPU viene ottenuto dividendo per 4. La modalità 80x24 ha un clock di 12 Mhz con CPU clock diviso 5. Entrambi i modi producono 312 linee (tipo Standard PAL), la 64x16 aggiunge dei bordi, mentre la 80x24 è senza bordi (infatti ci vuole un monitor dedicato).

> Anche qui: ci sono chip dedicati (SIO, PIO, ecc.) o è tutta logica TTL?

PIO e SIO dovrebbero essere quelli standard, qui Piero Andreini o Enrico Lazzerini potrebbero meglio rispondere poiché io non dispongo di una macchina reale per verificare direttamente.

La tastiera è una normale tastiera ASCII tipo S100, vi è però una differenza di collegamento tra ChildZ e Model T:
- nel ChildZ il pin di strobe è collegato a /INT (interrupt) in modo tale da richiamare un'interrupt alla pressione del tasto
- nel Model T non c'è interrupt, la tastiera deve essere letta con dei poll continui, infatti risponde peggio rispetto al ChildZ (alcuni keystroke si perdono se la CPU sta elaborando). Il motivo di questa scelta credo sia la necessità di dover collegare l'interrupt a PIO e SIO mediante "daisy chain". 

Riguardo al WDC 1791, è implementata la versione del chip con i segnali dei dati a logica negata sul bus. Infatti una cosa che abbiamo scoperto è che sul disco del CP/M i dati sono negati prima di essere inviati al chip (istruzione "CPL") in modo tale da risultare in chiaro ed essere compatibili con altri sistemi CP/M. Al contrario il boot sector e la CCP del CP/M sono scritti in forma negata.

Al 1791 si affianca un meccanismo di selezione che opera sulla porta $3F. Questa permette di scegliere fino a 3 unità e permette la selezione del lato del floppy disk. 

> Partirei dai sistemi più semplici, video 16x64, TMON, floppy.

se hai il 1791 già implementato puoi tranquillamente emulare T05, T08 e T10 con schermo 64x16. 


@Marcello Ferri :

> ho un Modello T funzionante (non sempre) con doppio disco da 8" e modeste
> conoscenze elettroniche/informatiche che metto volentieri a disposizione.

sarebbe interessante capire che set di EROM hai, non so se hai già fatto il "dump" del contenuto. Se la macchina è funzionante si potrebbe fare un piccolo programma in MBASIC per calcolare il checksum e confrontarlo con quelli che abbiamo noi. Due domande: il video è 64x16? Ti esce la scritta "your highest ram loc is : BF00" all'accensione? 

Marcello Ferri

unread,
Oct 20, 2021, 7:53:52 AM10/20/21
to GP-User...@googlegroups.com
On Wed, Oct 20, 2021 at 12:33 PM Nino Porcino <nino.p...@gmail.com> wrote:
> ...
> @Marcello Ferri :
>
> > ho un Modello T funzionante (non sempre) con doppio disco da 8" e modeste
> > conoscenze elettroniche/informatiche che metto volentieri a disposizione.
>
> sarebbe interessante capire che set di EROM hai, non so se hai già fatto il "dump" del contenuto. Se la macchina è funzionante si potrebbe fare un piccolo programma in MBASIC per calcolare il checksum e confrontarlo con quelli che abbiamo noi. Due domande: il video è 64x16? Ti esce la scritta "your highest ram loc is : BF00" all'accensione?

Confermo tutto, video 64x16, 48K RAM ed EPROM originali smontate e
sostituite con delle copie (da qualche parte dovrei avere i relativi
files)

Roberto Lavarone

unread,
Oct 20, 2021, 9:49:11 AM10/20/21
to GP Users Group
Ho forkato il MAME su https://github.com/napobear/mame

Inizierei lo sviluppo creando un branch.

E adesso la parte più difficile: dare un nome coerente al driver MAME, in modo coerente con eventuali ulteriori emulazioni dello stesso produttore.
gpmodellot, gpchildz possono andare bene? Oppure gpt, gpcz? Proposte?

A titolo di esempio, per lo Z80 N.E. i nomi erano:
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1980, z80ne, 0, 0, z80ne, z80ne, z80ne_state, init_z80ne, "Nuova Elettronica", "Z80NE", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
COMP( 1980, z80net, z80ne, 0, z80net, z80net, z80net_state, init_z80ne, "Nuova Elettronica", "Z80NE + LX.388", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
COMP( 1980, z80netb, z80ne, 0, z80netb, z80net, z80netb_state, init_z80ne, "Nuova Elettronica", "Z80NE + LX.388 + Basic 16k", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
COMP( 1980, z80netf, z80ne, 0, z80netf, z80netf, z80netf_state, empty_init, "Nuova Elettronica", "Z80NE + LX.388 + LX.390", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )



Enrico Lazzerini

unread,
Oct 20, 2021, 11:41:06 AM10/20/21
to GP-User...@googlegroups.com

Abbiamo una certa collezione di parecchi firmware provenienti da T/05, T/10,
e T/20. Alla fine quello che si è dimostrato il piu completo è proprio
quello proveniente dal T/20. La collezione è descritta qui:
https://www.vintagesbc.it/vintage-computer-board/collezione/general-processo
r/general-processor-modello-t/codice-firmware/

Enrico

-----Messaggio originale-----
Da: gp-user...@googlegroups.com [mailto:gp-user...@googlegroups.com]
Per conto di Marcello Ferri
Inviato: mercoledì 20 ottobre 2021 13:54
A: GP-User...@googlegroups.com
Oggetto: Re: [GP-Users-Group] Emulazione General Processor Modello T
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "GP Users Group"
di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email,
invia un'email a GP-Users-Grou...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita
https://groups.google.com/d/msgid/GP-Users-Group/CAPMKM7B87bmWPxXpPXLM93hHKS
maM8CXJqvNGRbDf%3D9mk%3Db%2BHA%40mail.gmail.com.

Enrico Lazzerini

unread,
Oct 20, 2021, 11:43:45 AM10/20/21
to GP-User...@googlegroups.com

Qui puoi vedere tutti i modelli che erano descritti nei pochi manuali recuperati
https://www.vintagesbc.it/vintage-computer-board/collezione/general-processor/general-processor-modello-t/storia-e-modelli/modello-t-05/
Enrico

 


Da: gp-user...@googlegroups.com [mailto:gp-user...@googlegroups.com] Per conto di Roberto Lavarone
Inviato: mercoledì 20 ottobre 2021 15:49
A: GP Users Group


Oggetto: Re: [GP-Users-Group] Emulazione General Processor Modello T

 

Ho forkato il MAME su https://github.com/napobear/mame

--

Hai ricevuto questo messaggio perché sei iscritto al gruppo "GP Users Group" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a GP-Users-Grou...@googlegroups.com.

Reply all
Reply to author
Forward
0 new messages