Associazione MSX ITALIA

Unisciti a noi

Il 19 marzo 2023, in concomitanza del Gathering di Vigevano, nasce l’Associazione MSX Italia. Secondo noi la collaborazione virtuale sui social preesistenti non è sufficiente per gestire eventi e progetti come gathering e Devcon in rappresentanza dell’Italia. L’Associazione con le sue democratiche assemblee organizza almeno 3 raduni annuali al Nord, Centro e Sud Italia dove ci sono momenti conviviali di scambio, esposizioni, tornei e mercatino dell’usato. Inoltre l’associazione organizza spazi Educational dove condividiamo le nostre esperienze: come usare la MegaflashROM al meglio, la Carnivore2, la V9990, i moduli musicali, MSX BASIC, MSX-DOS ecc. spiegandola da zero come si installa e si usa. E ancora Dirette registrate e riservate ai soci per lo scambio di esperienze. Un archivio riservato e nuova Fanzine cartacea e in PDF con un Floppy contenente giochi e software esclusivi. Abbiamo creato gruppi di ricerca e sviluppo per il linguaggio C e la creazione di software, mentre alcuni di noi sperimentano riparazioni e prototipazioni in hardware.

Riunire le forze ci permette di fare progetti a più ampio respiro come i Devcon!

Seguici e condividi le tue esperienze.

Riferimenti: associazioneMSXitalia@gmail.com

I nostri post da Facebook

Alcune foto del 6th MSX Gathering ... Vedi altroVedi meno
Visualizza su Facebook
MSX 6th Gathering - Pranzo sociale a base di pesce (e pizza) ... Vedi altroVedi meno
Visualizza su Facebook
Al 6th MSX Gathering presentazione di Andrea Di Dio a proposito di Carnivore2, MsxPI, Rookie Drive, Modem WiFi accesso a BBS, ChatGPT e internet da MSX. ... Vedi altroVedi meno
Visualizza su Facebook
Foto dal post di Associazione MSX Italia ... Vedi altroVedi meno
Visualizza su Facebook
Presentazione al MSX 6th Gathering della cartridge VFM (Virtual Full Music) nuovo hardware realizzato di Ivan Michelucci. La scheda ingloba FM pac (OPLL) , music Module (OPLL), 3PSG, SN78.., SCC e SCC+ configurable per fare Flash ROM e MegaRAM, e interfaccia tastiera e mouse USB. É in studio l'implementazione OLP4. ... Vedi altroVedi meno
Visualizza su Facebook
Il nuovo gioco programmato in C da Nicola Brogelli, presentato al MSX 6th Gathering, in omaggio e in esclusiva per i Soci: The Castle ... Vedi altroVedi meno
Visualizza su Facebook

5 days ago

Il nuovo gioco programmato in C da Nicola Brogelli, presentato al MSX 6th Gathering, in omaggio e in esclusiva per i Soci: The Castle ... Vedi altroVedi meno
Visualizza su Facebook

5 days ago

Un anteprima di una delle novità per il Gathering di domani ... Vedi altroVedi meno
Visualizza su Facebook
Un nuovo logo per il MSX++ di KdL. Ecco il Logo messo a punto dallo sviluppatore del firmware per 1Chip MSX e altri FPGA!Nel link alla pagina il sito dove poter aggiornare il proprio dispositivo e dove è possibile anche lasciare una donazione ad uno dei massimi esperti italiani dei sistemi MSX per ringraziarlo del suo utilissimo lavoro. ... Vedi altroVedi meno
Visualizza su Facebook
Nishi released a progress report about the replacement the Z80 of MSX 1 or 2. Here the prototype, for now, the hardware is using SPRAM-based EPS32, but Nishi plans to replace it with M5Stamp in the next prototype. This will make it as a MSX0 equivalent running DOS, BASIC, and the Internet.Nishi ha rilasciato un rapporto sullo stato di avanzamento della sostituzione dello Z80 per 'MSX 1 o 2. Qui nelle foto si può vedere il prototipo, per ora, l'hardware utilizza EPS32 basato su SPRAM, ma Nishi prevede di sostituirlo con M5Stamp nel prossimo prototipo. Ciò lo renderà un equivalente del MSX0 con DOS, BASIC e Internet. ... Vedi altroVedi meno
Visualizza su Facebook
Easy SCREEN3 Animation Converter per MSX2 È stato aggiornato con l'aggiunta della funzione colore della tavolozza manuale: ora è possibile modificare i colori nella tavolozza.Eccone un esempio con l'anime di Yubel realizzato da TooLucky!Di seguito il link alla pagina del Converter. nazo.main.jp/prog/retropc/acmsxs3.html ... Vedi altroVedi meno
Visualizza su Facebook
Una bellissima animazione di Mitchell Hammond, frutto di un lavoro molto accurato durato anni, ispirato dal Big Boss Head Gray Fox di Solid Snake e dal MSX 2 Sony HB F1XD!Link all'autore nel commento alla pagina ... Vedi altroVedi meno
Visualizza su Facebook
Turbo Pascal MSX – Lezione 7da Stefano Roperto | Feb 5, 2024 | Programmazione, Turbo PascalI FILES (parte 1)Turbo Pascal fornisce un completo set di istruzione per la gestione dei file. Il tipo FILE è rappresentato da una sequenza di oggetti dello stesso tipo, la dimensione di un file non è determinata dal tipo, ma viene fornito un puntatore che si sposta lungo il file, per esempio quando viene aggiunto un dato, il puntatore si sposta al successivo, ma può anche essere gestito dal programma in modo da recuperare le informazioni cercate.Vediamo un esempio di definizione di FILETypeNames = string[30];varNumeri: file of integer;nomi: file of names;Nell’esempio abbiamo definito due variabili, la prima numeri, che è un file di tipo integer e nomi che abbiamo definito come file di stringhe. Una volta che abbiamo definito uno o più variabili di tipo file, vediamo come operare. Turbo pascal mette a disposizione un certo numero di procedure e funzioni con le quali manipolare il file:Considerando come file il file numeri che abbiamo dichiarato nell’esempio, le procedure di assegnazione, lettura, scrittura ecc. sono le seguenti:Assign (Numeri, NomeDelFile) NomeDelFile è una variabile di tipo stringa che indica il nome del file, secondo gli standard ammessi dal sistema operativo. Il nome viene associato alla variabile di tipo file e tutte le operazioni di lettura e scrittura eseguite sulla variabilemodificheranno il file NomeDelFile. Per esempioassign(Numeri,’Prod.txt’); Assegna univocamente la variabile Numeri al file ‘Prod.txt’ sul disco.Rewrite(Numeri, dim); Se il file assegnato con Assign esiste, viene reinizializzato, il contenuto perso e il puntatore del file viene posto a zero.Reset(Numeri,dim); Se il file aperto non esiste viene generato un errore, altrimenti il puntatore viene posto all’inizio del file, ma il contenuto viene mantenuto.Le procedure di Rewrite e Reset dispongono di un secondo parametro facoltativo (dim) che può essere utilizzato con file non tipizzati e Consente di specificare il numero di byte per blocco. Ad esempio, è possibile specificare una dimensione del blocco di 1 byte ed eseguire un BlockRead di 128 blocchi e ottenere lo stesso risultato della lettura di un blocco di 128 byte. Il vantaggio di questo secondo parametro è che il programma non deve più per gestire il troncamento o l’eccedenza di un file perché la lunghezza del file non è divisibile per 128.Read(Numeri,dato); l’informazione letta dal file, viene assegnata a una o più variabili dato (separate da virgola), che devono essere del tipo indicato nella dichiarazione, una volta letto l’informazione , il puntatore viene spostato al valore successivo. Write(Numeri,dato); l’informazione contenuta nella, o nelle variabili dato (separate da virgola), viene scritta nel file e il puntatore viene spostato alla posizione successivaSeek(Numeri,n); Seek sposta il puntatore del file sull’ennesimo componente del file. n è un’espressione di tipo intero. La posizione del primo elemento di un file è 0. È possibile utilizzare un valore per n che sia maggiore della lunghezza del file per scrivere oltre l’ultimo elemento di un file. La dichiarazione seek(Numeri, DimensioneFile(Numeri); quindi posiziona il puntatore al file alla fine del file (FileSize restituisce il numero di componenti nel file e man mano che i componenti sono numerati da zero, il numero restituito è maggiore di unoFlush(Numeri);Flush svuota il buffer interno del file Numeri e quindi assicura che il buffer del settore venga effettivamente scritto sul disco in caso di operazioni di scrittura dall’ultimo aggiornamento del disco. Flush assicura anche che L’operazione di lettura successiva eseguirà effettivamente una lettura fisica dal file su disco. Flush non deve mai essere utilizzato su un file chiuso.Close(Numeri); Chiude il file Numeri e aggiorna il contenuto del disco. E’ sempre opportuno chiudere un file dopo l’utilizzo in modo da non tenere occupati troppi puntatoriErase(Numeri);rename(Numeri,NuovoNomeFile); Rinomina il file Numeri, con il nome contenuto nella variabile di tipo string, NuovoNomeFile. Quindi tutte le operazioni verranno effettuate sul nuovo file. Rename va utilizzato su un file aperto. E’ compito del programmatore assicurarsi che NovoNomeFile non esista già sul discoVengono poi fornite una serie di funzioni standard che operano sui file:Eof(Numeri); Funzione booleana che restituisce True se il puntatore al file è posizionato in corrispondenza della fine del file su disco, ovvero oltre l’ultimo componente del file. altrimenti EOF restituisce False.FilePos(Numeri); restituisce un valore intero che indica la posizione del puntatore, se all’inizio del file, restituisce 0File Size(Numeri); restituisce un valore intero che indica la dimensione del file espressa come numero dei dati di cui è composto un file.Una menzione particolare è necessaria per i file di testo che si dichiarano con il tipo Text. I file di testo hanno la particolarità di utilizzare le stesse istruzioni che si utilizzano per scrivere del testo sullo schermo, con la differenza che va indicato il file di destinazione. Ad esempio per stampare su schermo una costante stringa utilizziamo l’istruzione Write 0 Writeln se vogliamo un ritorno a capo dopo la stampa, in questo modo:Write(‘Hello World!’);oppureWriteln(‘Hello World!’);per scrivere in un file di testo le stesse informazioni, è sufficiente dichiarare un file di testo e inizializzarlo, nello stesso modo che abbiamo visto prima:Var FileDiTesto testo : Text {dichiariamo un file di tipo text}Assign (FileDiTesto,’testo.txt’); {assegniamo al file il nome su disco ‘testo.txt’}A questo punto per scrivere nel file non faremo altro che scrivere utilizzando le parole chiave Write o Writeln passando come parametro, l’identificatore del file prima dei dati da scrivere:Write(FileDiTesto,‘Hello World!’);oppureWriteln(FileDiTesto,‘Hello World!’);Il file che otterremo sarà organizzato logicamente in righe di testo terminate con i caratteri CR LF (asci 13 e ascii 10) ovvero ritorno a capo e avanzamento di riga.Naturalmente un file di questo tipo può essere aperto e modificato come un qualsiasi altro file di testo.Trovi la lezione sul sito:msxitalia.org/turbo-pascal-msx-lezione-7/Tutto il corso qui:msxitalia.org/turbo-pascal/ ... Vedi altroVedi meno
Visualizza su Facebook
LEZIONE 23 – I DATI GESTITI DAL MSX (2° Parte)da Orazio Cacciola | Feb 22, 2024 | MSX BASICRiprendiamo la nostra lezione della volta scorsa, di cui la mia ultima spiegazione è stata sui comandi per poter “lavorare” con i files. Oggi parlerò come creare i files sequenziali, ma prima di non aver detto 2 parole del comando MAXFILES=. questo comando ci fa lavorare con più files contemporaneamente. All’accensione del Nostro MSX, il suddetto è per default 1, perciò non possiamo aprire più di un file alla volta, ad esempio se stiamo lavorando in modo grafico ed abbiamo aperto la periferica GRP per scrivere su di esso, non possiamo aprire nessun’altro file. Modificando questo parametro, abbiamo risolto il problema. Il comando inizializzerà tutti le variabili, perciò conviene usarlo sempre all’inizio del programma: MAXFILES=3. Adesso possiamo lavorare con 3 files contemporaneamente. Esso riserverà spazio in memoria per ogni file che verrà aggiunto, perciò conviene usarlo solo quando serve. Per creare un file dati usiamo il comando OPEN e visto che è un nuovo file dobbiamo crearlo per la scrittura: OPEN “[Unità:]Nome File” FOR OUTPUT AS #[numero di porta]. Unità, come ho detto nella lezione precedente può essere il registratore e in questo caso sarà CAS: oppure il DRIVE A: o B: . Le regole sono uguali a quello che ho detto, sempre nella lezione precedente, 6 caratteri senza estensione per le cassette ed 8 caratteri + estensione (anche se non è obbligatoria) per i Drives. Vi ricordate quel programma che ho scritto qualche lezione fa, un’agenda, ecco, useremo quello per i nostri esempi. Avevo messo il Nome, L’indirizzo è il Numero telefonico. Dopo averli creati li possiamo salvare sul nostro file, che chiameremo “AGENDA.DAT” su disco. Per il registratore sarà: CAS:AGENDA. La riga di programma sarà: OPEN “AGENDA.DAT” FOR OUTPUT AS #1. Se possediamo più di un drive e vogliamo creare il nostro disco dati sull’altro, basta aggiungere il nome del drive prima del nome file: “B:AGENDA.DAT”, tutto quello che faremo su di esso, sarà trasferito sul drive B. Salviamo i nostri dati con il comando PRINT #1. Creeremo il record diviso in 3 campi. Adesso prestate attenzione a quello che dirò in seguito. Se vogliamo registrare 3 campi nello stesso record, usando PRINT #1 N$,I$,T$, che sarebbero le variabili di Nome, Indirizzo e Telefono, mettendo le virgole come ho fatto, li vedrà come segni di spaziatura ma non come divisori di variabili, e quando verranno letti, saranno visti come unica variabile. Per fare capire all’MSX che sono più variabili, dobbiamo inserirli dentro con il corrispettivo codice ASCII oppure tra virgolette: PRINT #1, N$; “,”; I$; “,”; T$. Ogni volta che inseriremo un nuovo record verrà accodato sempre dietro l’ultimo, questo avverrà fino a quando non chiuderemo il file con il comando CLOSE: CLOSE #1 . Usato senza cancelletto e numero di porta chiuderà tutti i files aperti. Su cassetta, una volta chiuso il file sequenziale non potrà più essere modificato, perché se lo riapriamo in output cancellerà tutto il suo contenuto, la stessa cosa vale anche su disco. Ma su quest’ultimo c’è la possibilità di poterlo aprire senza cancellare il suo contenuto. OPEN “AGENDA.DAT” FOR APPEND AS #1. Così facendo continueremo ad aggiungere i nostri dati sul file. Possiamo salvare anche dati formattati usando PRINT #1, USING “Stringa Formato”; variabile, variabile, . . Possiamo usare anche una variabile a stringa invece del Nome File. Ad esempio, un programma che lavora con tanti files ed il nome verrà specificato all’interno di esso: INPUT “Nome del File”; NF$: OPEN NF$ FOR OUTPUT AS#1. Passiamo alla fase di lettura dei dati. Adesso il file verrà aperto in entrata, cioè in modalità lettura: OPEN”AGENDA.DAT” FOR INPUT AS #1. Per leggere i dati scritti in precedenza useremo il comando INPUT #1 oppure LINE INPUT #1. La differenza tra i due 2 è che il primo leggerà un campo alla volta mentre il secondo tutto il record anche se abbiamo aggiunto le virgole di separazione. Per fare un esempio, con il salvataggio dei dati fatto sopra, se vogliamo leggere un campo alla volta per inserirlo in 3 variabili, useremo: INPUT #1, N$,I$,T$, se invece vogliamo leggere tutto il record, useremo : LINE INPUT #1, A$. La variabile A$ sarà N$+I$+T$. Quando l’MSX legge i dati dal file sequenziale, dovrà sapere quando questi finiranno, per questo c’è la funzione EOF (Numero porta). EOF (End Of File) controlla se ci sono ancora dati da leggere. La linea di programma da inserire sempre prima della lettura del file è così composta: IF EOF(1) THEN CLOSE #1. Eviteremo un increscioso errore che ci darà l’MSX se facciamo leggere un file dove non ci saranno più dati. Come detto sopra, di seguito inserisco il programma con tutte le modifiche per lavorare con il file. E’ valido solo per i dischetti, ma con qualche modifica può essere usato anche per il registratore a cassette.5 KEY OFF: SCREEN 0,,,2: WIDTH 40: CLEAR(2000):DEFINT A-Z: DIM M$(50,2)10 ON ERROR GOTO 1000: CN=0: GOSUB 60020 CLS:LOCATE 15,1: PRINT “M E N U”: GOSUB 10030 S$=INKEY$: IF S$=”” THEN 3040 IF S$<“1″ OR S$>”4” THEN 3050 ON VAL(S$) GOSUB 200,300,400,50060 GOTO 30100 LOCATE 1,4 : PRINT”1 – INSERIMENTO DATI”110 LOCATE 1,8 : PRINT”2 – MODIFICA DATI”120 LOCATE 1,12: PRINT”3 – VISUALIZZA DATI”130 LOCATE 1,20: PRINT”4 – USCITA PROGRAMMA”140 RETURN200 IF FRE(“”)<50 OR CN=50 THEN PRINT “ATTENZIONE !! Non si possono fare piu’ inserimenti”: FOR R=0 TO 2000:NEXT R: RETURN ELSE OPEN “AGENDA.DAT” FOR APPEND AS#1 205 CLS: LOCATE 12,0: PRINT “INSERIMENTO” 210 LOCATE 1,4: LOCATE 1,4:INPUT “NOME (MAX 10 CARAT.)”;N$ 215 IF LEN(N$)=0 OR LEN(N$)>10 THEN LOCATE 0,4:PRINT SPACE$(39): GOTO 210220 LOCATE 1,8: INPUT “INDIRIZZO (MAX 18 CARAT.)”;I$225 IF LEN(I$)=0 OR LEN(I$)>18 THEN LOCATE 0,8:PRINT SPACE$(39): GOTO 220230 LOCATE 1,12:INPUT “TELEFONO (MAX 10 CARAT.)”; T$235 IF LEN(T$)=0 OR LEN(T$)>10 THEN LOCATE 0,12:PRINT SPACE$(39): GOTO 230240 LOCATE 1,18: PRINT “CORRETTO (S/N)? “250 S$=INKEY$: IF S$=”” THEN 250260 IF S$=”s” OR S$=”S” THEN PRINT #1,N$;”,”;I$;”,”;T$:CN=CN+1:M$(CN,0)=N$:M$(CN,1)=I$:M$(CN,2)=T$:GOTO 280270 IF S$=”N” OR S$=”N” THEN 205 ELSE 250280 LOCATE 1,18: PRINT “ALTRO INSERIMENTO (S/N)?”285 S$=INKEY$: IF S$=”” THEN 285290 IF S$=”N” OR S$=”N” THEN CLOSE #1: RETURN 20295 IF S$=”s” OR S$=”S” THEN 205 ELSE 285300 CLS:LOCATE 15,0: PRINT “MODIFICA”303 INPUT “INSERIRE IL NOME DA RICERCARE”;NO$306 FOR I=1 TO CN:IF NO$=M$(I,0) THEN 310308 NEXT: PRINT “Nome non trovato”: FOR R=0 TO 2000:NEXT: RETURN 20310 LOCATE 0,4:INPUT “NOME(Confermare per non cambiare)”;N$320 IF N$=”” THEN LOCATE 0,5:PRINT M$(I,0) ELSE M$(I,0)=N$330 LOCATE 0,8: INPUT “INDIRIZZO(Confermare per non cambiare)”;I$340 IF I$=”” THEN LOCATE 0,9:PRINT M$(I,1) ELSE M$(I,1)=I$350 LOCATE 0,12:INPUT “TELEFONO(Confermare per non cambiare)”;T$360 IF T$=”” THEN LOCATE 0,13:PRINT M$(I,2) ELSE M$(I,2)=T$370 OPEN “AGENDA.DAT” FOR OUTPUT AS #1380 FOR I=1 TO CN: PRINT #1, M$(I,0);”,”;M$(I,1);”,”;M$(I,2):NEXT I390 CLOSE #1: RETURN 20400 CLS:LOCATE 10,0: PRINT “VISUALIZZAZIONE”410 FOR I=1 TO CN420 PRINT M$(I,0);TAB(11);M$(I,1);TAB(30);M$(I,2)430 IF IMOD10=0 THEN GOSUB 450440 NEXT: GOSUB 450: RETURN 20450 PRINT:PRINT “Premere spazio per continuare”460 IF INKEY$=” ” THEN RETURN ELSE 460500 CLS:END600 OPEN “AGENDA.DAT” FOR INPUT AS #1610 IF EOF(1) THEN CLOSE #1: RETURN620 CN=CN+1:INPUT #1,M$(CN,0),M$(CN,1),M$(CN,2)630 GOTO 6101000 IF ERR=53 THEN OPEN “AGENDA.DAT” FOR OUTPUT AS #1: CLOSE #1: RESUME 201010 RESUME NEXTLa spiegazione del programma la farò nella prossima puntata.Grazie a tutti e arri sentirci.Questa lezione sul nostro sito: msxitalia.org/lezione-23-i-dati-gestiti-dal-msx-2-parte/Tutto il corso qui:msxitalia.org/category/programmazione/msx-basic/ ... Vedi altroVedi meno
Visualizza su Facebook
The software for MSX0CARD is ready. Here the pictures of the MSX0CARD with the MIDI interface. ... Vedi altroVedi meno
Visualizza su Facebook
UN APPELLO per aiutare il gruppo di MSX CLUB TRIDENTUM conosciuto anche come Dalax Soft. Stiamo cercando di recuperare tutto ciò che è stato distribuito da questo gruppo negli anni 1984-1995! Chiunque abbia una cassettina o rivista o altro ci contatti.Grazie mille per il contributo! ... Vedi altroVedi meno
Visualizza su Facebook
Harumakkin ha rilasciato un progetto per realizzare un player delle musiche MSX con un Raspberry Pi Pico! Questo player è compatibile con le musiche MSX FM utilizzando il MGSDRV per Raspberry Pi Pico ed esegue MGSDRV per MSX utilizzando un emulatore dedicato a MGSDRV chiamato HopStepZ.Ecco i componenti necessari per fare un MGSPICO in casa:MGSDRV.COM(Versione 3.20) gigamix.hatenablog.com/entry/mgsdrv/MGS楽曲データファイルmicroSD カードFM音源カートリッジSCC音源カートリッジDC5V源(microUSB、もしくは、センタープラス 2.1mm DCプラグ)Ecco il link con tutte le infogithub.com/cliffgraph/MGSPICO?tab=readme-ov-file ... Vedi altroVedi meno
Visualizza su Facebook
Continuano gli sviluppi della versione per MSX turbo R del gioco Mechanical Brain da parte del giapponese Team Redherring. In questo video possiamo ammirarne la stupenda grafica e parallaase.In questo link è possibile scaricare l'immagine DSK.www.team-rh.com/mechanical-brain-for-msx-turbor-diskimage-free-download-page/ ... Vedi altroVedi meno
Visualizza su Facebook
Un nuovo progresso nella programmazione del gioco d'azione di Kung Fu per MSX2 "Otome Retsuken Bungarua" (WIP). Ipheion78 infatti ha migliorato lo sprite di Yuuri quando perde.Link nel commento sulla pagina. ... Vedi altroVedi meno
Visualizza su Facebook
Dopo più di 20 anni di assenza dal mondo MSX, Chaos (Frederiq Boelens) si è fatto nuovamente prendere dalla febbre del MSX e ha ripreso a programmare.Il suo nuovo gioco, Princess Paloma's Rescue, è un gioco platform per MSX2 ispirato al vecchio gioco Manic Miner in cui devi raccogliere le chiavi. Il gioco avrà - 50 livelli - 5 mondi con diversi GFX e oggetti nemici - Musica FM realizzata con Trilotracker FM Lo sviluppo è in fase avanzata, quindi speriamo che possa essere rilasciato presto. ... Vedi altroVedi meno
Visualizza su Facebook
it_ITIT_IT