Newsgroup: it.comp.os.amiga
Titolo: rom, eprom, domandina....

Ciao a tutti, ma se io avessi un 1200 con le rom 3.0 e volessi fare
l'upgrade e avendo i file .rom delle 3.1 che componente (pensavo ovviamente
una EPROM) dovrei comprare per poi programmarlo per metterlo nello zoccolo
del 1200???
In pratica esiste un EPROM pin to pin compatibile (o anche no con qualche
"magia" a base di wire-wrap) che possa mettere nell'Amighina???
E' suffficiente programmare di brutto con il file .rom l'eventuale EPROM??
Grazie mille
Stefano

 E' suffficiente programmare di brutto con il file .rom l'eventuale EPROM??
Calma, devi prima splittare il file della ROM in due pezzi, ODD ed EVEN, a
16-bit, però. Poi devi programmare ognuno dei due file all'interno di una
delle due EPROM.
Sai mica dove reperire delle 27C400, piuttosto?
--
  ____
 / ___|____   Daniele Gratteri, Italian Commodore and Amiga user  / /
| |   |___/   E-MAIL: 
daniele_...@inwind.it
                 / /
| |___|___\   URL: 
http://utenti.tripod.it/danielegratteri
   \ \/ /
 \____|       IRC: FIAT1100D - ICQ: 53943994                  \/\/

 E' suffficiente programmare di brutto con il file .rom l'eventuale EPROM??
Per cominciare, su A1200 le rom sono due e contengono ciascuna una meta' del
kickstart. La cosa migliore, se hai una scheda acceleratrice con della fast
ram, e' rimappare la rom in fast ram ad ogni boot... aminet e' pieno di
programmi che svolgono questa funzione. :-)
-- 
Ciao!
     Mule` Antonio         ICQ: 16738896  Nick: Yanosh
-- 
Cerchi il manuale o i dischi di installazione di hardware usato per Amiga? 
Li trovi su: 
http://www.L8R.net/install/index.html
-- 
<tsb>AmiWorld - #
http://www.amiworld.it#
<tsb>God's in his heaven, allright with the world
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 E' suffficiente programmare di brutto con il file .rom l'eventuale EPROM??
Si, una volta fatto l'acrocchio meccanico, tutto e' a posto... basta
spaccare la rom in due pezzi, composti uno dalle sole word pari e
l'altro dalle sole word dispari (la rom del 1200 e' a 32 bits, in due
pezzi da 16 bits l'uno).

grazie per l'aiuto raga... vi tengo informati. Ma aldilà dei pin
elettricamente è compatibile con qualsiasi componente di memoria CMOS?
Allora basta avere lo schema dell'Amiga, un saldatore, un paio di zoccoli,
una millefori, una birra, un CD di Moby e un pacchetto di Marlboro pieno (e
aggiungo un rosario) e mescolando a fuoco lento viene fuori l'aggeggio??
Per quando riguarda lo split del file rom in odd e even va a word quindi se
per esempio questo è l'ordine dei byte è:
1234567890
sulla rom odd (pari) vanno
125690
e su quella even vanno
3478 etc
Giusto??
Ciao
Stefano

 ops mi sono loggato con la login di mio fratello....
Cmq, sě, č giusto. Ma, vuoi dire che hai trovato le 27C400?


 125690
Odd, vuol dire dispari... comunque l'ordine č sbagliato in ogni caso,
assumendo il contenuto: 01 23 45 67 89 ab cd ef ...
nella rom 0 vanno: 01 23 89 ab ...
e nella rom 1 vanno: 45 67 cd ef ...
Da divisione non e' in bytes ma in WORDS.

 Cmq, sě, č giusto. Ma, vuoi dire che hai trovato le 27C400?
Le eprom sono svanite da anni, le trovi tra i fondi di magazzino, ma le
flash compatibili si trovano ovunque. Ma pensando a quanto č semplice il
tutto, viene effettivamente voglia di fare l'intero cirtuito per mettere
la flash (e magari una rom vera come supporto) e permettere all'amiga di
scriversi la flash da solo...

 scriversi la flash da solo...
Eppure sul sito della STMicroelectronics risultano tuttora in catalogo...


 assumendo il contenuto: 01 23 45 67 89 ab cd ef ...
Se serve ho un programma, passato tempo fa su comp.sys.amiga.hardware, che
splitta la ROM nei due files ODD ed EVEN (però la ROM da splittare deve
essere su chip).


c'è qualcosa che non capisco 
posso ripassare la lezione con voi per vedere se faccio i calcoli giusti:)
queste cose mi intrippano na cifra !!
-----riepilogando------
 
nell'amiga 1200 ci sono due rom di 16 bit 
      62408 (hi)           62408 (lo)     
        ______               ______       
A20    |o     | A1   A20    |o     | A1   
A19    |      | A10  A19    |      | A10  
A9     |      | A11  A9     |      | A11  
A8     |      | A12  A8     |      | A12  
A7     |      | A13  A7     |      | A13  
A6     |      | A14  A6     |      | A14  
A5     |      | A15  A5     |      | A15  
A4     |      | A16  A4     |      | A16  
A3     |      | A17  A3     |      | A17  
A2     |      | GND  A2     |      | GND  
ROMEN# |      | VCC  ROMEN# |      | VCC  
GND    |      | GND  GND    |      | GND  
OE#    |      | D31  OE#    |      | D1   
D16    |      | D23  D0     |      | D7   
D24    |      | D30  D8     |      | D14  
D17    |      | D22  D1     |      | D6   
D25    |      | D29  D9     |      | D13  
D18    |      | D21  D2     |      | D5   
D26    |      | D28  D10    |      | D12  
D19    |      | D20  D3     |      | D4   
D27    |______| VCC  D11    |______| VCC  
indirizzate (bus indirizzo) 
in parallelo con le stesse linee a1-a20 ( manca l'a18 !!!!! )   
in questo modo escono dalla prima 16bit alti + dalla seconda 16bit bassi   
totale  un bus dati da 32bit (hi + lo) 
che è anche una doubleword (1 double word = 32 bit)
se ci sono 19 linee la capacità di indirizzamento è 
2^19  = 524.288
per ipotesi sfruttando l'indirizzamento in parallelo
si possono inserire con adattamenti elettrici due flash o eeprom (di 16 bit )
al massimo di 524.288 word  = 1.048.576 byte (1 word = 16 bit)
totale    2 flash (16bit) * 524.288 word  = 2.097.157 byte
          4 flash (8bit) *  524.288 word  = 2.097.157 byte
che sono 2.097.157 byte approssimando 2Mbyte
possibile 2Mega ma non è che va ad occupare altre aree? 
qualcuno ha la mappa della memoria di amiga1200 ? da questa
si potrebbe vedere quanto spazio max è stato riservato per la rom
ma il kickstart rom 3.1 quello originale com'è composto ?
è di 512 kbyte  = 256 kword 
cioè le due rom sono una di 128kword (hi )e l'altra di 128kword (low)
o dico delle bestialità
tornando indietro di generazioni dallo schema elettrico della a500 
si vede un unico chip chiamato:
HN62402 256kbyte (128kword )con 16 bit di  dati in uscita
e 18 linee di indirizzamento 
significa dunque che in realtà si può mettere un chip circa di 
2 ^18  256kword = 512kbyte !
infatti dalla mappa della memoria si vede riservato da FC a F8 uno spazio 
di 512kbyte dunque anche nell'amiga500 si può inserire una rom da 512kbyte 
tipo il3.1 ma questa volta non diviso in 2.
 
in sostanza nella amiga 1200 si può metterci una rom da 2Mbyte 
e usarla per inserici 0ltre alla rom3.1 anche librerie.. programmi ecc.. ? 
:)
saluti   

Dear Daniele Gratteri,
let me quote your message dated 06-Gen-02 14:24:44, where you wrote to All
 DG> Se serve ho un programma, passato tempo fa su comp.sys.amiga.hardware,
 DG> che splitta la ROM nei due files ODD ed EVEN (però la ROM da splittare
 DG> deve essere su chip).
Nel lontano 96 il mio 4000 aveva il ks 3.0, poi ho comperato il wb 3.1 e le
rom ma non c'era verso di fare il boot... :-(
Un amico ingegnere con programmatore di eprom a disposizione mi disse che uno
dei due chip "sembrava" vergine...
Allora mi sono procurato l'immagine del 3.1 (le rom le avevo pagate, quindi
mi sentivo perfettamente in regola...) e vai di remap...
Non ero però molto soddisfatto dei tempi di boot, così ho pensato di farmi
riscrivere le eprom dal mio amico! :-)
Mi sono informato e, con l'aiuto dell'amico Wiz, avevo preparato un piccolo
programma in C che legge un kickfile e crea le due immagini (notare che NON
sono un programmatore C quindi niente commenti sul sorgente! :-)
Il problema era come essere certi che il tutto funzionasse? ...temevo di
rovinare il mio caro 4000 e quindi non ne feci nulla ma comprai nuovamente le
rom 3.1 appena ne ho avuto l'occasione! Tra l'altro mi erano indispensabili
per passare al wb 3.5 e 3.9 poi...
Ad ogni modo ecco il sorgente in C, a suo tempo l'ho compilato col DICE (che
ora è free...)
Se interessa posso mandare il tutto su Aminet, eseguibile e sorgenti...
---8<---
                           SplitKick 1.3 (13.1.97)
               Gian Maria Calzolari, 2:332/
502...@fidonet.org
  !! L'autore declina ogni responsabilità per eventuali danni provocati !!
 !! al computer dall'utilizzo del programma o dei files da esso generati !!
             Questo programma *NON E' LIBERAMENTE DISTRIBUIBILE*
                                Introduzione
Questa piccola utility legge un kickfile da 512k e ne prepara la versione  da
inserire  in  due eprom da installare su 1200 o 4000 (macchine che leggono il
kickstart *a 32bit*!).
Le due eprom vengono viste dal sistema come un'unica area di memoria a  32bit
quindi  vengono  lette in blocchi alternativi da 16bit l'una! In poche parole
SplitKick legge 2 bytes e li scrive in un file, ne legge altri 2 e li  scrive
nel secondo file poi ricomincia daccapo fino alla fine dei 512k.
                                     Uso
SplitKick Input/A Output
    Input   Nome qualificato del kickfile da processare, obbligatorio
    Output  Nome qualificato della radice dei files da creare, il default è
            Ram:KickImg. Alla radice viene aggiunto un suffisso numerico, 1
            per l'immagine "low" e 2 per quella "hi".
---8<---
---8<--- SplitKick.c
/*
** $VER: SplitKick.c 1.003 (13.01.97) © Gian Maria Calzolari
**
**
**  FUNCTION:
**      Dato un kickfile lo splitta per essere scritto su due eprom:
**
**      AmigaOS accede al kick a 32bit e quindi usa due chip in cui preleva
**      una WORD (16bit) da ognuna per "comporre" i 32bit!
**
** $HISTORY:
**
** 13 Jan 1997 : 001.003 : Lettura diretta del file anzichè da un buffer di
**                          memoria, aggiunta gestione argomenti
** 06 Jan 1997 : 001.002 : Aggiunti controlli vari
** 05 Jan 1997 : 001.001 : Da esempio di Wiz
**
*/
#include "SplitKick.h"
// Questo serve *solo* per avere EOF definito...
#include <stdio.h>
void main( void ) {
    LONG i, ic;
    TEXT Out1[256], Out2[256];
    args[ARG_INPUT ] = (APTR) NULL;
    args[ARG_OUTPUT] = "Ram:KickImg";
    if ( (rda = ReadArgs(Template, (LONG *)args, NULL) ) == NULL)
        erroreAD(NULL);
    sprintf(Out1,"%s%d", args[ARG_OUTPUT], 1);
    sprintf(Out2,"%s%d", args[ARG_OUTPUT], 2);
    from = Open(args[ARG_INPUT], MODE_OLDFILE);
    if (from == 0)
        erroreAD("Apertura KickFile input");
    to1 = Open(Out1, MODE_NEWFILE );
    if (to1 == 0)
        erroreAD("Apertura 'lo' image");
    to2 = Open(Out2, MODE_NEWFILE );
    if (to2 == 0)
        erroreAD("Apertura 'hi' image");
    PutStr ( version );
    PutStr ( "\n" );
    // 131072 è il numero di words (16bits) in 256K
    for( i = 0; i < 131072; i++ ) {
        // 16 bits in uno...
        if ( (ic = FGetC(from) ) == EOF)
            erroreAD("Fine prematura file input!");
        if ( FPutC(to1, ic) == EOF)
            erroreAD("Errore inatteso scrittura primi 8 bits 'lo'");
        if ( (ic = FGetC(from) ) == EOF)
            erroreAD("Fine prematura file input!");
        if ( FPutC(to1, ic) == EOF)
            erroreAD("Errore inatteso scrittura secondi 8 bits 'lo'");
        // ...e 16 bits nell'altro!
        if ( (ic = FGetC(from) ) == EOF)
            erroreAD("Fine prematura file input!");
        if ( FPutC(to2, ic) == EOF)
            erroreAD("Errore inatteso scrittura primi 8 bits 'hi'");
        if ( (ic = FGetC(from) ) == EOF)
            erroreAD("Fine prematura file input!");
        if ( FPutC(to2, ic) == EOF)
            erroreAD("Errore inatteso scrittura secondi 8 bits 'hi'");
    }
    fine();
    exit(RETURN_OK);
}
/// Routines generiche
/* ----------------------------------- fine ------------------------------------
 Comment:
 Chiusura programma
*/
void fine(void) {
    if (rda) {
        FreeArgs(rda);
        rda = NULL;
    }
    if (from) {
        Close( from );
        from = 0;
    }
    if ( to1 ) {
        Close( to1 );
        to1 = 0;
    }
    if ( to2 ) {
        Close( to2 );
        to2 = 0;
    }
}
/* --------------------------------- ErroreAD ----------------------------------
 Comment:
    Visualizza un messaggio per errori generati da AmigaDOS
    str -> puntatore ad una stringa di testo
*/
void erroreAD(STRPTR str)
{
    TEXT c[256] = "";
    if ( IoErr() )
        Fault(IoErr(), str, c, sizeof(c) );
      else
        PutStr( str );
    PutStr( c );
    PutStr( "\n" );
    fine();
    exit(RETURN_FAIL);
}
///
---8<---
---8<--- SplitKick.h
/*
** $VER: SplitKick.h 0.002 (13.01.97) © Gian Maria Calzolari
**
**
** $HISTORY:
**
** 13 Jan 1997 : 000.002 : Aggiunta gestione argomenti
** 05 Jan 1997 : 000.001 : Prima versione
**
*/
#include <Proto/Exec.h>
#include <Proto/dos.h>
#include <Exec/Memory.h>
#define COPYRIGHT   "by Gian Maria Calzolari"
#define ADDRESS     "2:332/
502...@fidonet.org
"
//#define GMCCOPYR     static char GMCCopyR[] = COPYRIGHT
#include "SplitKick_rev.h"
const char ver[]       = VERSTAG " " COPYRIGHT;
const char version[]   = VSTRING " " COPYRIGHT ", " ADDRESS;
// dichiarazioni per gli argomenti
enum ARG_INDEX { ARG_INPUT, ARG_OUTPUT, ARG_COUNT };
TEXT Template[] = "INPUT/A,OUTPUT";
APTR            args[ARG_COUNT];
struct RDArgs   *rda = NULL;
// variabili comuni a più funzioni
BPTR  from = 0, to1 = 0, to2 = 0;
void    fine(void);
void    erroreAD(STRPTR);
int     HandleCtrlC(void);
---8<---
    Ciao, Giangi
--
/MotorCycle travels/    
http://www.gcalzo.net/viaggi/
Reverse (right to left) the domain to write me...
--
~M`'~   camel

 HN62402 256kbyte (128kword )con 16 bit di  dati in uscita
Si, ma c'è un pin in piu' per mettere una rom da 512K (ad esempio la rom
del 3.1), il 500 usa un 68000, che ha appunto un bus dati a 16 bits.

 I/O del bus zorro II, quindi non si può usare.
grazie per le informazioni
sul link
http://members.tripod.co.uk/amigahacker/Amiga_Hacks/A1200_Info/A1200_Mem/a1200_mem.html
ho trovato la
A1200 Memory Map
000000 to 1FFFFF   2 MB Chip RAM(or system ROM overlay)
200000 to 5FFFFF   4 MB Zorro II expansion space
600000 to 9FFFFF   4 MB Credit Card memory if CC present
AOOOOO to A1FFFF   128 KB Credit Card Attributes
A20000 to A3FFFF   128 KB Credit Card I/O
A40000 to A5FFFF   128 KB Credit Card Bits (similar to CDTV)
A60000 to A7FFFF   128 KB PC I/O
A80000 to B7FFFF   1 MB System ROM selected
B80000 to BEFFFF   448 KB Not used(Reserved for CDTV)
BF0000 to BFFFFF   64KB 8520CIAs
C00000 to CFFFFF   1 MB C00000 Memory
D00000 to D7FFFF   512 KB PC memory
D80000 to D8FFFF   64 KB SPARE chip select
D90000 to D9FFFF   64 KB ARCNET chip select
DA0000 to DA3FFF   16 KB IDE drive
DA4000 to DA4FFF   16 KB IDE reserved
DA8000 to DAFFFF   32 KB Credit Card and IDE configregisters
DB0000 to DBFFFF   64 KB Not used(reserved for external IDE)
DC0000 to DCFFFF   64 KB Real Time Clock(RTC)
DD0000 to DDFFFF   64 KB RESERVED for DMA controller
DE0000 to DEFFFF   64 KB Not Used
DF0000 to DFFFFF   64 KB Chip Registers
E00000 to E7FFFF   512 KB System ROM(lst half if 1MB ROM)
E80000 to EFFFFF   512 KB Configuration and I/O card space
F00000 to F7FFFF   512 KB Flash ROM space
F80000 to FFFFF    512 KBSystem ROM(2nd half if 1MB ROM)
Remember that the  68EC020 only has 24 Address lines and therefore can only address 16 MBytes of memory.
--------------------------------
ora mi chiedo a che serve F00000 to F7FFFF   512 KB Flash ROM space?
non è la mappatura delle rom che occupano:
F80000 to FFFFF    512 KB System ROM(2nd half if 1MB ROM)
E00000 to E7FFFF   512 KB System ROM(lst half if 1MB ROM)
(se qualcuno trova su internet degli schemi elettrici migliori
mi potrebbe indicare l'url , quelli che ho trovato 
su 
http://www.amiga-hardware.com/a1200.html
 si vedono male!!)
sempre sul sito 
http://www.amiga-hardware.com/a1200.html
ho trovato un file compresso con gli
schemi di amiga1200 e alla pagina10
si vede come sono collegati le 62408  a 32 bit 
e come sono collegate  le memorie flash 28f20 256kbyte
(con 18 linee di indirizzamento)
che usano le stesse linee di indirizzo usate per le 2 rom 62408.
.
forse potrebbe essere un espansione prevista da commodore per 
le successive rom ma successivamente mai usata ?
saluti 
 Dante

 Se interessa posso mandare il tutto su Aminet, eseguibile e sorgenti...
Credo che potrebbe essere una cosa interessante. Io sono a favore ;-)
Ad ogni modo ho provato a compilare il programma creandomi i files
'SplitKick.c' e lo 'SplitKick.h' secondo quanto era nel post a cui sto or
ora rispondendo. Però il DICE mi dà un errore quando si tratta di processare
questa riga di 'SplitKick.h'
#include "SplitKick_rev.h"
dove viene a tutti gli effetti richiesto di includere un file,
SplitKick_rev.h, che però non è esistente. Come si deve fare? Lo chiedo
perchè neppure io sono programmatore, sto muovendo i primi passi col
linguaggio C a scuola e se ho sbagliato qualcosa non c'è niente di meglio
per imparare che non un'occasione simile :-)


> Se interessa posso mandare il tutto su Aminet, eseguibile e sorgenti...
 DG> Credo che potrebbe essere una cosa interessante. Io sono a favore ;-)
Preparo un pacchetto! :-)
Dovrebbe apparire in util/boot come SplitKick13.lha!
 DG> processare questa riga di 'SplitKick.h'
 DG> #include "SplitKick_rev.h"
 DG> dove viene a tutti gli effetti richiesto di includere un file,
Hai ragione, è dove ho messo la stringa $VER, file gestito col BumpRev della
C= oppure direttamente dal DICE...
---8<--- SplitKick_rev.h
#define VERSION        1
#define REVISION         3
#define DATE    "13.1.97"
#define VERS    "SplitKick 1.3"
#define VSTRING "SplitKick 1.3 (13.1.97)"
#define VERSTAG "\0$VER: SplitKick 1.3 (13.1.97)"
---8<---
    Ciao, Giangi
--
/MotorCycle travels/    
http://www.gcalzo.net/viaggi/
Reverse (right to left) the domain to write me...
--
:/7)    Cyrano de Bergerac

eccomi qua.... vista la moria di eprom sul mercato sto sviluppando un
"emulatore di eprom a 16 bit" basato su due eprom da 8... a breve la netlist
Stay tuned!!!
Andrea

"Andrea" <NOan...@hotmail.comSPAM> ha scritto nel messaggio
news:jrW_7.761$aD.2...@twister2.libero.it...

Più che una netlist, sarebbe utile tutto uno schema dell'attrezzo :-)


 ---8<---
Perfetto! Creando questo file il programma si è compilato senza problemi e i
due pezzi di Kickstart che si ottengono sembrano essere corretti.


 "emulatore di eprom a 16 bit" basato su due eprom da 8... a breve la netlist
Onestamente, schema per schema, non varrebbe la pena di fare un
adattatore per usare le flash (che esistono a 16 bit in un ampio numero
di formati?
L'adattatore non è neanche esattamente da "fare": basta amputare i pin
1,2 e 41,42 ad un convertitore da tsop a dip ed usare la flash A28F400BX
che è praticamente pin compatibile con la mask rom, ed è ampiamente
disponibile...

> Dovrebbe apparire in util/boot come SplitKick13.lha!
 DG> Fai una bella comunicazione ufficiale sul NG quando sarà disponibile!
Su 
http://ftp.uni-paderborn.de/aminet/
 è già disponibile:
   Ciao, Giangi
Short:    a Kickstart rom image splitter, v1.3
Uploader: 
gia...@gcalzo.net
 (Gian Maria Calzolari)
Author:   
gia...@gcalzo.net
 (Gian Maria Calzolari)
Type:     util/boot
Version:  1.3
This little utility reads a 512k kickstart image file ad split it ready to be
written un eprom for A1200 or A4000.
A very old one, but recently a discussion on it.comp.os.amiga let me decide
to release both the source and the executable.
Do whatever you want with it but DO NOT BLAME ON ME if something will get
wrong! Actually I HAVE NEVER tested it for real!!
...and, off course, do not ask me a kickstart image file... :-)

 Su 
http://ftp.uni-paderborn.de/aminet/
 è già disponibile:
Grazie!
