Questo, perche' penso che, siccome sono almeno 15 anni che siamo nell'era RISC,
allora bisogna anche adeguarsi, ed e' per questo motivo che, piuttosto che proseguire con quelle carriole che ho elencato prima, ho preferito ri-schedulare le priorità del mio tempo libero per buttarmi nei RISC, prima tappandomi il naso (sopratutto i RISC di tipo MIPS, di cui sono appassionato ma che sono veramente spacca ossa), poi ridisegnando la loro ISA sulle ceneri del 68k.Il risultato e' tutto lavoro in corso, ovvero una ISA tutta nuova ibridata tra un MIPS di classe 1, ed un 68k ridotto all'osso.Questa roba trova asilo nelle FPGA (di classe spartan3-500 almeno) e si programma molto bene in assembly, ed e' RISC pura, pero' umana, anche perche' e' una esigenza forte, dato che un C compiler per questa architettura non esiste, e me lo scordo di realizzarlo in poco tempo, ci vorranno anni per metterlo in piedi, e possibilmente senza passare da gcc & suoi amici, anche perche' io non aderisco alle linee guida di casa GNU, nemmeno un po'.
Citazione da: cdimauro - 22 Ottobre 2014, 06:56:28Visto che vengono usati 2 tipi di ROM, magari utilizza quello A (fisso) per metterci del codice "di servizio"secondo me "dipende"all'inizio avevo parlato di una BSP, ovvero di codice di servizio, questa può anche stare in A, e ogni altra cosa (immagino cose come oggetti grafica/suono) in B, in questo modo si caricano all'occorrenza lasciando il codice eseguibile TUTTO in A, addirittura si può strutturare B in modo indicizzato, oppure meglio ancora far linkare tutti i suoi oggetti in un header, in questo modo ci si svincola dal dove ritoccare a mano quanto non saprebbe fare diversamente il linkerc'e' da capire come e' strutturato il gioco, quanto codice eseguibile c'e', se può stare tutto in A o se sconfina in B
Visto che vengono usati 2 tipi di ROM, magari utilizza quello A (fisso) per metterci del codice "di servizio"
Citazione da: cdimauro - 22 Ottobre 2014, 06:56:28Comunque è strano che si possa usare soltanto 1MB alla volta. Il 68000 può indirizzare 16MB in tutto sul local bus lato CPU hai 24 bit lineari di address space, tipicamente da A23 ad A1, questi a loro volta condizionati dal sizing, tipicamente a 16bit ma indirizzabile anche al byte (sfruttando i segnali UDS, LDS, A1, ed AS per i cicli bus necessari), e volendo puoi anche usare FC + address, questo ti apre ben 8 subspaces, di cui uno per lo user, uno per il superuser, uno per eventuali cooprocessori (ha mai avuto senso?), e altri che non ho mai capito
Comunque è strano che si possa usare soltanto 1MB alla volta. Il 68000 può indirizzare 16MB in tutto
ci sono vari trucchiil punto e' che quella console e' di retaggio, ovvero mi sa tanto che hanno iniziato con un modello di memoria per le cartucce, la cosa andava bene, loro non hanno guardato al futuro, e ad un certo punto si sono trovati con … programmatori che volevano + ROM, a quel punto … la "pezza" hw e' stato usare il bank switching sfruttando i latchlo dico a naso, mi sembra il classico caso in cui si cerca una pezza hw, difatti a me quella console non piace come design perche' rende le cose contorte
magari per risparmiare qualche dollaro, avranno usato un 68000 modificato con meno pin sul package?
Io di tiles ne ho circa 60k...Il motore di gestione delle tiles non l'ho fatto io ma non credo sia ulteriormente ottimizzabile, e se anche non lo fosse , non lo sarebbe a sufficienza da permettermi di ignorare tattiche come il bankswitching.
Adesso sto seriamente pensando a cosa fare con il mio linker.Se potessi solo dire di non capirci un cavolo stapperei lo champagne...