Fuzix port για το Amstrad CPC

Πρόσφατες Βελτιώσεις του FUZIX για το Amstrad CPC

Τους τελευταίους μήνες, συνέχισα να εργάζομαι πάνω στη μεταφορά (port) του FUZIX για το Amstrad CPC. Δεν σχεδιάζω μια νέα κυκλοφορία ακόμα, καθώς θέλω πρώτα να ολοκληρώσω και να σταθεροποιήσω την υποστήριξη δικτύωσης για το M4Board. Ωστόσο, η τρέχουσα κατάσταση του αποθετηρίου περιλαμβάνει ήδη σημαντικές αλλαγές στην απόδοση, την κονσόλα, την αποθήκευση και τη συμβατότητα υλικού.

Κύριες Αλλαγές:

Απόδοση και Σύστημα

Η διάταξη του εικονικού τερματικού χρησιμοποιεί πλέον 80×25 χαρακτήρες, μαζί με μια σειρά από μικρότερες σχετικές βελτιώσεις.

Ο κώδικας που καλείται από τη διακοπή συστήματος (system interrupt) τώρα μεταβαίνει στο interrupt_high μόνο όσο είναι ενεργό το vsync. Αυτό μειώνει τον ενεργό ρυθμό διακοπών από τα 300 Hz στα 50 Hz, αποφεύγει προβλήματα επανεισόδου (reentrancy) και βελτιώνει αισθητά τη συνολική απόδοση.

Η ρουτίνα ldir_far έχει βελτιστοποιηθεί ώστε να χρησιμοποιεί τη στοίβα κατά τη μετακίνηση δεδομένων μεταξύ σελίδων μνήμης, μειώνοντας το κόστος ανά μεταφερόμενο byte.

Κονσόλα και Βίντεο

Ριζική αναθεώρηση του οδηγού κονσόλας (console driver) του CPC:

Υποστήριξη για τέσσερα TTY.

Διαχείριση χρωμάτων.

Συμπαγής κέρσορας (block cursor).

Διορθώθηκε η αποτύπωση χαρακτήρων με το γνώρισμα αντιστροφής (inverse attribute).

Προστέθηκε μια καταχώριση fuzixcpc στο termcap, επιτρέποντας στις εφαρμογές που αναγνωρίζουν το termcap να ταυτοποιούν σωστά τις δυνατότητες της κονσόλας του Amstrad CPC και ορίστηκαν τα γλύφα cpc για τα σύμβολα de ACS, ώστε οι εφαρμογές curses να μπορούν να τα προβάλλουν.

Αποθήκευση και RTC

Προστέθηκε συσκευή μπλοκ (block device) κάρτας SD για το M4Board.

Υλοποιήθηκε συσκευή δίσκου M4Board που βασίζεται σε αρχείο εικόνας (image file).

Προστέθηκε υποστήριξη RTC τόσο για το M4Board όσο και για το Symbiface.

Βελτιώθηκε η συσκευή μπλοκ CH376 που υποστηρίζει τα USIfAC, ULIfAC και Albireo.

Ο οδηγός συσκευής μπλοκ m4 και ch376 μπορεί πλέον να χρησιμοποιεί το εγγενές επίπεδο FAT32 για την προσάρτηση εικόνων δίσκου που βασίζονται σε αρχεία ως συσκευή ρίζας (root device).

Τρέχουσα Κατάσταση

Η κύρια εργασία που απομένει είναι η ολοκλήρωση της υποστήριξης δικτύου για το M4Board. Μόλις τελειώσει και δοκιμαστεί σωστά, θα ετοιμάσω μια κυκλοφορία με μια πιο σταθερή, αυτοτελή διαμόρφωση και εικόνες δίσκου. Επίσης, στη λίστα των εκκρεμοτήτων (TODO list) βρίσκεται η μεταφορά του κώδικα ώστε να μεταγλωττίζεται με το Fuzix Compiler Kit αντί για το SDCC.

Στο μεταξύ, όποιος θα ήθελε να δοκιμάσει την τρέχουσα κατάσταση ανάπτυξης μπορεί να τη δημιουργήσει (build) χρησιμοποιώντας τις οδηγίες που διατηρεί ο salvogendut για τον εξομοιωτή 1984 (ευχαριστώ @salvogendut!!):

Το έγγραφο εξηγεί το περιβάλλον μεταγλώττισης και τη ροή εργασίας που απαιτούνται για τη μεταγλώττιση και εκτέλεση της τρέχουσας έκδοσης του FUZIX για το CPC με τον εξομοιωτή 1984.

13 «Μου αρέσει»

:heart_eyes:

Το να έχω ένα είδος Unix στο CPC είναι κάτι που ήθελα να κάνω εδώ και χρόνια.

Λίγοι άνθρωποι γνωρίζουν ότι το αρχικό Unix γράφτηκε σε μηχανήματα με συχνότητες λειτουργίας παρόμοιες με του CPC (αν και με ευρύτερο δίαυλο και περισσότερη μνήμη/αποθηκευτικό χώρο).

Υπάρχουν εναλλακτικές, μία είναι η εκτέλεση ενός εξομοιωτή ARM ή MIPS στην φυσική επεξεργαστική μονάδα (CPU). Ακούγεται τρελό, αλλά κάποιος το έκανε.

Το εύρος ζώνης της RAM είναι παρόμοιο: 300kB/s. Φαντάζομαι ότι η αρχιτεκτονική του Z80 θα δώσει ένα πολύ πιο αργό αποτέλεσμα, αλλά η ταχύτητα δεν είναι το θέμα. Το θέμα είναι να μπορείς να πεις: «Έκανα boot το Linux στο Amstrad CPC μου!». Προφανώς, για να το κάνεις αυτό σε έναν πραγματικό CPC, χρειάζεσαι «τεράστια» RAM (από 1 έως αρκετά megabyte).

3 «Μου αρέσει»

Γνωρίζω ότι αυτό που κάνει το Fuzix είναι πολύ διαφορετικό. Το Fuzix υλοποιεί ένα ελάχιστο, λειτουργικό και χρήσιμο Unix. Σε παλιά τσιπ χωρίς προστασία μνήμης.

1 «Μου αρέσει»