Autore Topic: Commodore 128  (Letto 5725 volte)

Massi cadenti

  • Utente
  • **
  • Post: 237
    • http://massicadenti.altervista.org
  • Gioco Preferito: The Last Ninja
Commodore 128
« Risposta #15 il: 10 Maggio 2006, 02:56:13 »
 
Citazione da: "RedPanda"
Infatti il C128 lo ho definito al 99% compatibile ^^. Esistono dei programmi molto particolari per C64, pero', che sul C128 ho visto non andare, perche' credo questi vadano a toccare certe caratteristiche tecniche proprie del 64, come i banchi di memoria o certe funzioni "estreme" dei chip (tipo i trucchetti per guadagnare velocita' o disattivare rom, kernel, I/O per avere tutti i 64K di memoria).
Le incompatibilità col C64 "vero" erano fondamentalmente due: una in parte risolvibile, l'altra assolutamente non risolvibile perché dovuta a un bug.

1) Quella "risolvibile" riguardava la locazione 1. Normalmente all'accensione (senza che il registratore sia in moto) su C64 contiene 55 (hex $37), su C128 contiene 119 (hex $77). Si risolveva in parte premendo il tasto CAPS LOCK (non shift lock) che però aveva il problema (quantomeno sul mio C128) del cambiamento dei caratteri (diventavano più "sottili"). Con il CAPS LOCK inserito la locazione 1 conteneva correttamente 55 (hex $37).

Questo problema all'atto pratico poteva presentarsi raramente in qualche cassetta pirata da edicola che chiedeva di fermare il registratore (ma questo solo all'inizio; successivamente corressero il problema e se PEEK(1)=119 allora considerava ugualmente lo stop del registratore come premuto).
Un software che sembra avesse problemi a partire per questo motivo era la prima release originale del SEUCK, io non posso confermare perché la mia versione non è originale, in ogni caso credo che col trucchetto del CAPS LOCK si risolva.

2) Quella assolutamente non risolvibile riguardava la modalità a 2 MHz della CPU. Il problema riguardava l'ultimo bit della locazione (mi pare) 55296 che nel C64 vero credo abbia qualcosa a che fare col SID (ma non saprei dire cosa).
In pratica se manipolata in un certo modo questa locazione mandava la CPU a 2 MHz (disabilitando tutte le periferiche di I/O tranne la tastiera, più il SID e il video che diventava pieno di caratteri incomprensibili) anche se il C64 non aveva questa caratteristica. L'unico gioco o programma di cui abbia notizia che attivava involontariamente (alcuni demo poi la attiveranno di proposito) questa modalità, rendendo di fatto bloccato il sistema perché poi non se ne usciva più, è quella schifezza di MASTERS OF THE UNIVERSE (il gioco di He-Man). *NON* il The Movie, l'altro uscito un po' di tempo prima. Al momento di premere return (per iniziare a giocare) lo schermo diventava tutto nero e non andava più avanti.

In realtà con una cartuccia potevi ri-pokare la locazione 55296 in modo tale da recuperare il modo a 1 MHz (e io lo feci una volta per vedermi quel giocaccio rendendomi conto che non m'ero perso proprio nulla ;) ), ma il fatto di "non risolvibile" andava considerata come "senza l'ausilio di apparecchiature o modifiche esterne".

Un altro gioco che forse non partiva per questo motivo era KANE (quello ambientato nel far west), ma qui darei più la colpa alla mia cassetta perché già veniva caricato 1 volta su 4 e quindi è probabile che non fosse colpa del C128. In ogni caso l'ho potuto giocare solo molti anni dopo grazie agli emulatori quindi non saprei dirvi.

Per il resto posso assicurarvi che il C128 era assolutamente compatibile al C64 (e anzi faceva molte cose in più :D). I "trucchetti per guadagnare memoria" e via dicendo quindi erano perfettamente funzionanti.
Anzi, il modo 64 in condizioni normali non veniva attivato nel banco 1, ma nel banco 0. Per attivarlo nel banco 1 era necessaria una routine (pubblicata su CCC, in uno degli ultimi numeri che io comprai quindi più o meno tra il n.68 e il n.77 se può interessarvi) che aveva lo scopo di estrarre schermate grafiche in hires dai giochi C64 utilizzando il C128 "nudo e crudo" senza alcun componente o cartuccia hardware aggiuntivo. Quella routine, tra le altre cose, attivava il "modo64" col banco 1 (perché il banco 0 del "modo 64" ad un reset in "modo 128" viene in parte corrotto e questo poteva inficiare il buon funzionamento del programma).
Questo sempre considerando il banco 1 e il banco 0 nello stesso modo con cui li chiamava CCC (ma non vedo perché non si dovrebbero considerare così ;) ).

PS In realtà esiste un'altra incompatibilità, riguardava la cartuccia CP/M per C64 (sul manuale era segnalato chiaramente che non si poteva usare sul C128) e forse anche altre cartucce che sfruttano chissà cosa. In questo post mi sono limitato a normale software reperibile su floppy e cassette (e ai bug documentati e noti), se ce ne sono altri io non ne sono a conoscenza (il che potrebbe voler dire che ce ne sono anche miliardi ma che in quasi 20 anni non me ne sono mai accorto, e mi sembra come minimo *improbabile* anche se comunque *possibile*).
Lo so, per tanti è difficile da capire anche se ormai sono 12 anni che lo uso, ma <b>il mio nick ha la "c" <u>minuscola</u></b>...
"Prima volta" nel settembre 1982 (Vic20 di mio cugino)
Utente C16 dal 25 dicembre 1984. Utente C128 dal 24 dicembre 1987
C16(4), C128, Vic20, 1541, 1541-II, 1530(3), 1531(2), X1541, MPS802, CaptainMikyII, Moviola x C64, esp.16KB x C16, ca.1300 cassette, ca.900 floppy, ca.10 joystick, paddles, accessori vari
<a href="http://massicadenti.altervista.org/algasoft.html">La mia pagina sulle Alga Soft, sulle cassette napoletane e su come Napoli ha vissuto a modo tutto suo gli anni d'oro della pirateria</a>
<a href="http://ready64.it/forum/?showtopic=2252#">Massi cadenti non è né un esperto (anche se si millanta tale) né un frequentatore di questo forum</a>
Importante: <a href="http://ready64.massicadenti.com">Ready64 è un sito che <B><U>non</U> è di Massi cadenti</B> ma di Rob Nicoletti</a>

eregil

  • Administrator
  • Utente
  • *****
  • Post: 710
  • Gioco Preferito: Impossible Mission
Commodore 128
« Risposta #16 il: 10 Maggio 2006, 15:57:52 »
Citazione da: Massi cadenti
Anzi, il modo 64 in condizioni normali non veniva attivato nel banco 1, ma nel banco 0. Per attivarlo nel banco 1 era necessaria una routine (pubblicata su CCC, in uno degli ultimi numeri che io comprai quindi più o meno tra il n.68 e il n.77 se può interessarvi) che aveva lo scopo di estrarre schermate grafiche in hires dai giochi C64 utilizzando il C128 "nudo e crudo" senza alcun componente o cartuccia hardware aggiuntivo. Quella routine, tra le altre cose, attivava il "modo64" col banco 1 (perché il banco 0 del "modo 64" ad un reset in "modo 128" viene in parte corrotto e questo poteva inficiare il buon funzionamento del programma).

Per gli interessati, l'articolo in questione è già su Ready64, e precisamente è apparso nell'inserto Campus di CCC numero 70 (pag. 39 e ss.).
« Ultima modifica: 21 Febbraio 2015, 18:35:40 da eregil »
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Commodore 128
« Risposta #17 il: 10 Maggio 2006, 22:27:26 »
 
Citazione
2) Quella assolutamente non risolvibile riguardava la modalità a 2 MHz della CPU. Il problema riguardava l'ultimo bit della locazione (mi pare) 55296 che nel C64 vero credo abbia qualcosa a che fare col SID (ma non saprei dire cosa).
La locazione $D030 e' assolutamente neutra su un C64 perche' non connessa ad alcunche', i registri del VIC-II vanno da $D000 a $D02E, i byte a $D02F-$D03F non sono connessi e leggendoli si ottiene sempre $ff (255), la scrittura non sortisce effetti. Dopo di che i 64 byte sono replicati a riempire la memoria fino a $D3FF.
Nel C128 invece, sia in modo nativo che C64, i registri $d02f e $d030 sono registri aggiuntivi, il primo serve per gli scancode del tastierino numerico, l'altro ha giusto i primi 2 bit utilizzati di cui il primo appunto per switchare a 2Mhz quando acceso, il secondo attiva un test-mode che incrementa di uno la posizione del raster ad ogni ciclo (!).
Programmi come He-man che ingenuamente sovrascrivono anche questi byte mentre settano i registri del VIC-II, causano danni se in questa locazione ci scrivono qualunque cosa che abbia uno dei 2 bit accesi ($x1, $x2, $x3,$x7 mentre $x4 ad es. sarebbe irrilevante)

Ho debuggato He-man solo ora - purtroppo quando lo rilasciai non sapevo di questa incompatibilita' e non avrei modo di testarlo non essendo emulata la modalita' 2hmz da x128 di Vice - e ho trovato ben 2 punti in cui $d030 e' sovrascritto con valori presi da una tabella, che serve appunto per inizializzare il VIC con alcuni valori stabiliti. Correggerlo dovrebbe essere questione di un attimo, o accorciando il ciclo o mettendo 0 nella tabella in corrispondenza del valore scritto in d030.
Vedro' se ne vale la pena fare una fixed release.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -