Autore Topic: Particle Simulation su ZX Spectrum  (Letto 8867 volte)

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Particle Simulation su ZX Spectrum
« il: 01 Aprile 2013, 19:58:50 »
Fatto in BASIC, con numeri floating-point; ci mette circa 4 secondi per l'elaborazione di 5 particelle.

Com'era quella storia del tarallo? 8)

Particle simulation on ZX Spectrum

Ok, non è proprio come quello di Antonio: questo non usa Verlet-Stormer ma sfrutta semplicemente le equazioni del moto risolte assumendo velocità e accelerazione costanti (lo ho visto chiamare Parabolic o Ballistic integrator), e usa la legge di Coulomb direttamente per trovare la forza.

Ma capite, lo ho implementato in BASIC, pensatelo come una versione Beta di prova! ;D

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Particle Simulation su ZX Spectrum
« Risposta #1 il: 01 Aprile 2013, 20:06:47 »
eheh ebbravo :-D

Offline lucommodore

  • Human Debugger
  • *****
  • Post: 6176
  • Karma: +48/-9
    • Mostra profilo
Re:Particle Simulation su ZX Spectrum
« Risposta #2 il: 01 Aprile 2013, 20:59:54 »
Applaud! ;D
Solo chi è folle sfida le sue molle!
http://www.questolibro.it/retro-garage << Scambio/Vendo RetroGame

Offline Amig4be

  • Human Debugger
  • *****
  • Post: 6000
  • Karma: +45/-27
    • Mostra profilo
    • Commodore Computer Blog
Re:Particle Simulation su ZX Spectrum
« Risposta #3 il: 01 Aprile 2013, 21:35:23 »
havok comprerà direttamente NSA :D

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:Particle Simulation su ZX Spectrum
« Risposta #4 il: 02 Aprile 2013, 08:50:49 »
Spectrum rocks, but C=64 rulez. 8)

Comunque non era così lento. La cosa bella è che, usando il BASIC, hai potuto cambiare il codice "on the fly". :P

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Particle Simulation su ZX Spectrum
« Risposta #5 il: 02 Aprile 2013, 09:15:59 »
Se non ricordo male lo Spectrum tokenizza le righe di basic al volo, per cui si dovrebbero risparmiare preziosi cicli per la sua interpretazione.

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:Particle Simulation su ZX Spectrum
« Risposta #6 il: 02 Aprile 2013, 09:20:13 »
Sì, lo facevano quasi tutti gli interpreti BASIC dell'epoca. Altrimenti scendeva il latte alle ginocchia.

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re:Particle Simulation su ZX Spectrum
« Risposta #7 il: 02 Aprile 2013, 10:37:07 »
Adesso manca solo un MSX :P

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Particle Simulation su ZX Spectrum
« Risposta #8 il: 02 Aprile 2013, 10:41:08 »
L'MSX secondo me spacca di brutto :-)
Ha un BASIC completissimo, una grafica ad alta risoluzione niente male e supporto al CP/M :)

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re:Particle Simulation su ZX Spectrum
« Risposta #9 il: 02 Aprile 2013, 11:23:37 »
Adesso faccio un giro su eBay, all'epoca ero troppo preso con la Commodore ma non nego che l'MSX mi aveva incuriosito

Offline murasame

  • Tech Guru
  • *****
  • Post: 176
  • Karma: +0/-1
    • Mostra profilo
Re:Particle Simulation su ZX Spectrum
« Risposta #10 il: 02 Aprile 2013, 15:44:37 »
Adesso faccio un giro su eBay, all'epoca ero troppo preso con la Commodore ma non nego che l'MSX mi aveva incuriosito

Se lo trovi varrebbe la pena cercare un MSX TurboR, ultima incarnazione della serie e retrocompatibile con tutto il resto ma a costi proibitivi vista la rarità della macchina.
There are only 10 types of people in the world: those who understand binary, and those who don\'t ...

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Particle Simulation su ZX Spectrum
« Risposta #11 il: 02 Aprile 2013, 15:54:58 »
Non mi è mai capitato di vedere un TurboR su eBay :-\

Io ho un MSX 2 della Philips che è un gioiellino. L'unico problema è che mi manca il lettore floppy per cui è parecchio castrato come software.

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re:Particle Simulation su ZX Spectrum
« Risposta #12 il: 02 Aprile 2013, 17:27:27 »
Se non ricordo male lo Spectrum tokenizza le righe di basic al volo, per cui si dovrebbero risparmiare preziosi cicli per la sua interpretazione.

Circa. Il basic Sinclair (fin dal ZX80) memorizza solo token per le parole chiave, infatti le keyword non si inseriscono digitandole ma inserendo il giusto token che appare come una parola intera (con tanto di spazi), ma è memorizzato come un singolo byte. In più l'editor di linea esegue molti controlli "statici" di sintassi prima di inserire la riga; in questo modo l'interprete può limitarsi a eseguire controlli di runtime.

La cosa interessante che aiuterebbe nella scrittura di una versione assembly, è che nella ROM, ben diviso, c'è un calcolatore floating-point programmabile, un po' come lo SWEET16 del Woz: si inseriscono i valori nella zona di memoria che fa da stack per il compilatore, si mette un RST 28h nel codice Z80 e subito dopo si inseriscono i "bytecode" per il calcolatore, direttamente dove andrebbe il codice Z80.

Mica male 'sti inglesi! :D

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Particle Simulation su ZX Spectrum
« Risposta #13 il: 02 Aprile 2013, 17:40:06 »
Sul C64 si usa un approccio leggermente diverso: piazzi gli operandi in opportune locazioni di memoria (fissate) e poi chiami la corretta routine (somma, sottrazione, moltiplicazione, ecc...) con l'opcode JSR: http://www.c64-wiki.com/index.php/Floating_point_arithmetic#Using_floating_point_routines

Comunque leggevo che l'implementazione del floating point del Microsoft Basic era più ottimizzata di quella Sinclair (per confronto c'è un'implementazione sull'MSX e una sull'Olivetti M10 rispettivamente per Z80 e 8085). Mi pare di averlo letto su qualche numero d'epoca di MC, ma non ho mai approfondito più di tanto e non ho capito se si riferissero all'uso tramite Assembly oppure all'uso da Basic o entrambi.
Inoltre ho notato che sul mio M10 la precisione dei floating point è più bassa che sul Commodore Basic.

Una cosa, invece, che ho sperimentato direttamente è che un mio vecchio programmino in Basic per il calcolo dell'integrale definito con il metodo Simpson (quello dell'interpolazione quadrata), usando quasi esattamente lo stesso codice (al netto di piccole variazioni sintattiche) su un Commodore 16 (compatibile 6502 a 1.8MHz) e sull'M10 (8085 a 2.5MHz), il Commodore 16 lo brucia nettamente pur usando un byte in più di precisione e la cosa mi ha riempito di orgoglio (ma è anche vero che 2.5MHz sono pochini per quella CPU, che se non fosse a batteria potrebbe girare tranquillamente al doppio) :D

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re:Particle Simulation su ZX Spectrum
« Risposta #14 il: 02 Aprile 2013, 18:06:13 »
Comunque leggevo che l'implementazione del floating point del Microsoft Basic era più ottimizzata di quella Sinclair (per confronto c'è un'implementazione sull'MSX e una sull'Olivetti M10 rispettivamente per Z80 e 8085). Mi pare di averlo letto su qualche numero d'epoca di MC, ma non ho mai approfondito più di tanto e non ho capito se si riferissero all'uso tramite Assembly oppure all'uso da Basic o entrambi.
Inoltre ho notato che sul mio M10 la precisione dei floating point è più bassa che sul Commodore Basic.
Bisogna vedere che formato usa il Microsoft BASIC; il Sinclair usa numeri a 5 byte, 1 per l'esponente e 4 per la mantissa.
In più quest'ultimo ha una modalità speciale per trattare velocemente piccoli interi da -65535 a +65535.

Citazione
Una cosa, invece, che ho sperimentato direttamente è che un mio vecchio programmino in Basic per il calcolo dell'integrale definito con il metodo Simpson (quello dell'interpolazione quadrata), usando quasi esattamente lo stesso codice (al netto di piccole variazioni sintattiche) su un Commodore 16 (compatibile 6502 a 1.8MHz) e sull'M10 (8085 a 2.5MHz), il Commodore 16 lo brucia nettamente pur usando un byte in più di precisione e la cosa mi ha riempito di orgoglio (ma è anche vero che 2.5MHz sono pochini per quella CPU, che se non fosse a batteria potrebbe girare tranquillamente al doppio) :D
Già, per un confronto "pari" l'8085 dovrebbe andare ad almeno 5 MHz. :P

Adesso manca solo un MSX :P
Per concludere i macinini Z80 sarebbe interessante provare anche il SAM Coupé.

Tags: