Porting di Fuzix per Amstrad CPC

Recenti miglioramenti a FUZIX per Amstrad CPC

Negli ultimi mesi ho continuato a lavorare al porting di FUZIX per l’Amstrad CPC. Non ho ancora in programma una nuova release, perché prima voglio completare e stabilizzare il supporto di rete per M4Board. Tuttavia, lo stato attuale del repository include già modifiche significative alle prestazioni, alla console, allo storage e alla compatibilità hardware.

Modifiche principali:

Prestazioni e sistema

Il layout del terminale virtuale ora utilizza 80×25 caratteri, insieme a una serie di altri piccoli miglioramenti correlati.

Il codice richiamato dall’interrupt di sistema ora salta a interrupt_high solo mentre il vsync è attivo. Questo riduce la frequenza effettiva degli interrupt da 300 Hz a 50 Hz, evita problemi di rientro e migliora notevolmente le prestazioni complessive.

La routine ldir_far è stata ottimizzata per utilizzare lo stack durante lo spostamento dei dati tra le pagine di memoria, riducendo il costo per byte trasferito.

Console e video

Profonda revisione del driver della console del CPC:

Supporto per quattro TTY.

Gestione dei colori.

Cursore a blocco.

Corretta la resa grafica dei caratteri con l’attributo inverso.

Aggiunta un’voce fuzixcpc in termcap, che consente alle applicazioni compatibili con termcap di identificare correttamente le funzionalità della console dell’Amstrad CPC e di definire i glyph CPC per i simboli ACS, permettendo così alle app curses di renderizzarli.

Storage e RTC

Aggiunto un dispositivo a blocchi per scheda SD M4Board.

Implementato un dispositivo disco M4Board basato su un file immagine.

Aggiunto il supporto RTC sia per M4Board che per Symbiface.

Migliorato il dispositivo a blocchi CH376 che supporta USIfAC, ULIfAC e Albireo.

Il driver del dispositivo a blocchi m4 e ch376 ora può utilizzare il livello FAT32 nativo per montare immagini disco basate su file come dispositivo root.

Stato attuale

L’attività principale rimasta è il completamento del supporto di rete per M4Board. Una volta terminato e adeguatamente testato, preparerò una release con una configurazione più stabile e autonoma e le relative immagini disco. Tra le cose da fare c’è anche la migrazione del codice per la compilazione tramite Fuzix Compiler Kit al posto di SDCC.

Nel frattempo, chiunque voglia provare lo stato di sviluppo attuale può compilarlo seguendo le istruzioni curate da salvogendut per l’emulatore 1984 (grazie @salvogendut!!):

Il documento spiega l’ambiente di build e il flusso di lavoro necessari per compilare ed eseguire l’attuale porting per CPC di FUZIX con l’emulatore 1984.

12 Mi Piace

:heart_eyes:

Avere una sorta di Unix sull’Amstrad CPC è un qualcosa che desideravo fare da una vita.

Poche persone sanno che lo Unix originale è stato scritto su macchine con frequenze operative simili a quelle del CPC (sebbene con un bus più ampio e più memoria/spazio di archiviazione).

Ci sono delle alternative: una è far girare un emulatore ARM o MIPS sulla CPU fisica. Sembra una follia, ma qualcuno l’ha fatto davvero.

La larghezza di banda della RAM è simile: 300 kB/s. Immagino che l’architettura dello Z80 porterà a un risultato molto più lento, ma la velocità non è questo il punto. Il punto è poter dire: «Ho avviato Linux sul mio Amstrad CPC!». Ovviamente, per farlo su un vero CPC hai bisogno di una quantità di RAM “enorme” (da 1 a diversi megabyte).

3 Mi Piace

Sono consapevole che quello che fa Fuzix è molto diverso. Fuzix implementa un Unix minimo, funzionale e utilizzabile. Su vecchi chip senza protezione della memoria.

1 Mi Piace