Autore Topic: [Pascal] Hello World su Commodore 128  (Letto 2874 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
[Pascal] Hello World su Commodore 128
« il: 05 Luglio 2011, 03:25:11 »
Un simpatico Hello World con Oxford Pascal v1.0, per Commodore 64, lanciato per l'occasione su un Commodore 128 che in teoria doveva essere guasto ma...  :dance:

Codice: [Seleziona]
program nsa;
begin
  writeln('Ciao a tutti da www.nonsoloamiga.com');
  writeln('by TheKaneB');
end.

Ok ok... il codice è banalotto... ma ho trovato un modo per renderlo più simpatico e lolloso  :dance:

[youtube:uijl2s4c]http://www.youtube.com/watch?v=vdQ8uSGz3zw[/youtube:uijl2s4c]

 :banana-linedance:  :banana-rock:  :happy-partydance:  :happy-partydance:  :happy-partydance:  :music-listening:  :techie-computer:  :techie-typing:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: [Pascal] Hello World su Commodore 128
« Risposta #1 il: 05 Luglio 2011, 03:46:56 »
Che pazzi scatenati! :D
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: [Pascal] Hello World su Commodore 128
« Risposta #2 il: 05 Luglio 2011, 06:42:20 »
Ma c'è il barbatrucco: il 128 viene fatto girare in modalità 64! :snooty:

Offline MazinKaesar

  • ASM Lover
  • *****
  • Post: 412
  • Karma: +3/-0
  • Super Robot Pilot
    • Mostra profilo
Re: [Pascal] Hello World su Commodore 128
« Risposta #3 il: 05 Luglio 2011, 08:38:05 »
Io usavo il Turbo Pascal Emulator della System!!!  :dance:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »






Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #4 il: 05 Luglio 2011, 12:46:21 »
Citazione da: "cdimauro"
Ma c'è il barbatrucco: il 128 viene fatto girare in modalità 64! :snooty:

eh beh... non ce l'ho un Pascal che gira in modalità C128 nativa...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #5 il: 05 Luglio 2011, 13:22:50 »
Il C128 non usa lo Z80 in modalità nativa, viaggia sempre con il suo 8502 e può switchare tra 1 e 2MHz, e sfruttare la memoria "a banchi" per un totale di 128KB di Ram effettivi, invece dei 64KB "castrati" del C64 (dove i banchi sono sovrapposti con la Basic Rom, il Kernal e il CharMap).

Lo Z80 si può usare, ma questo comporta parecchio lavoro per sincronizzare i dati, dal momento che alcune chiamate del BIOS Z80 vengono comunque tradotte in chiamate per il KERNAL del 8502. Viene usato tipicamente in modalità CP/M, ma è molto lento. E' uno Z80A, quindi dovrebbe andare a 3.5MHz, ma a causa di numerosi wait state dovuti all'interfacciamento con il bus del VIC-II la sua velocità effettiva è di soli 2.5MHz.

In confronto, l'8502 a 2 MHz (che si ottiene spegnendo il VIC-II oppure switchando direttamente sul chip per la grafica a 80 colonne), è mediamente 2-3 volte più veloce dello Z80 a 2.5MHz.

PS: Non ho capito la domanda sul cross compiling da 8088 a Z80...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #6 il: 05 Luglio 2011, 13:42:50 »
Compilo direttamente sul C128, come puoi vedere dal video.

Conosco molto bene l'8085, ma non abbastanza lo Z80 per poter fare un confronto completo.

Comunque, lo Z80 è un sovrainsieme dell'8080, ed esegue praticamente senza modifiche tutto il codice 8080. L'8085 ha un paio di istruzioni in più (Serial Input e Serial Output) rispetto all'8080 e credo che non siano presenti sullo Z80.

Quello che lo Z80 ha in più sono due registri index supplementari a 16 bit IX e IY e tutta una serie di modalità di indirizzamento usando questi registri.
In più, sullo Z80 i registri sono doppi, e si può cambiare set di registri con una sola istruzione (disabilitando il banco principale e attivando il banco secondario). Questo serve per implementare delle routine di Interrupt molto veloci, per eseguire temporaneamente un context swtich e poi ritornare al codice utente in modo rapido.

Detto questo, se compilo codice per 8080, lo posso eseguire tranquillamente su Z80 anche se chiaramente non sarà il massimo dell'ottimizzazione perchè non sfrutto tutte le sue funzioni peculiari.

Il codice binario in uscita da questo Oxford Pascal, essendo tra l'altro un programma per C64, è compilato per la famiglia MOS 65xx.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #7 il: 05 Luglio 2011, 14:05:25 »
Non esiste un "object model" sui computer Commodore a 8 bit...

Il formato del file binario è composto sostanzialmente da un header di 2 byte, che dice l'indirizzo a cui caricare il codice, e poi un chunk di byte che vengono copiati pari pari a quell'indirizzo. Il problema è che la memory map è totalmente differente e dovrei rilocare il codice del compilatore per funzionare ad un offset diverso. Poi c'è la Ram che sul C128 funziona tramite bank switching, e non sarei in grado di modificare opportunamente il compilatore (magari se avessi i sorgenti si...) per sfruttare quella memoria aggiuntiva (e compilare quindi sorgenti più grandi e complessi).

Insomma, è un casino :D
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #8 il: 05 Luglio 2011, 14:08:01 »
questo compilatore poi ha il problema che lavora solo in RAM, quindi codice sorgente e compilato devono entrare in ram per poter essere trattati.

Esistono compilatori più sofisticati che lavorano direttamente sul disco. Sono più lenti ma gestiscono anche progetti molto grossi senza problemi, in quanto l'unica Ram che consumano è quella della Symbol Table.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #9 il: 05 Luglio 2011, 14:48:12 »
dai, acchiappati un C64 e un 1541 che ormai te li tirano in testa :-)

Ci sono venditori tedeschi e francesi su ebay che danno via periferiche e computer funzionanti per 20-30 euro, o magari intanto vai di emulatore. C'è VICE che è un emulatore praticamente perfetto, emula tutte le macchine Commodore a 8 bit, e del C128 emula entrambi i chip video ed entrambi i processori. :-)
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #10 il: 05 Luglio 2011, 15:12:24 »
www.6502.org

scialati :-)
Se ti serve qualche manuale specifico (tipo C128 Programmers Manual) chiedi pure...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #11 il: 05 Luglio 2011, 17:34:51 »
Citazione da: "dsar"
Intendevo il mos 8502 :P

c'è anche quello nel sito... spulciatelo bene :)

EDIT:
considera comunque che il MOS 8502 è una versione modificata del MOS 6510 con una differente disposizione dei pin (e un differente sistema di clock), ma identico come ISA. A sua volta il 6510 è un 6502 modificato con una porta di I/O integrata a 8 bit.
Tra le varie versioni cambia poi il tipo di tecnologia, NMOS e HMOS per la maggior parte. Per il resto puoi tranquillamente studiare il 6502 come base e poi integrare le pochissime differenze che ci sono con i vari successori.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Pascal] Hello World su Commodore 128
« Risposta #12 il: 05 Luglio 2011, 17:40:27 »
ho editato sopra
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: