← Επιστροφή στην εφαρμογή

ΑΝΑΦΟΡΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΩΝ / ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ C128

Η εφαρμογή σας.
Ο πυρήνας AIS μας.

Ίσως θέλετε διαφορετική προβολή, δικούς σας χειρισμούς ή εφαρμογή σε άλλη γλώσσα. Το API του AIS4CBM παρέχει πρόσβαση στον πυρήνα γλώσσας μηχανής, ώστε η λήψη, αποκωδικοποίηση και αποθήκευση AIS να παραμένουν δική του δουλειά.

Βασισμένο στο README · Οι εξαγωγές ελέγχθηκαν με κώδικα και σύμβολα κατασκευής, 18 Σεπτεμβρίου 2026

Ο ΣΚΟΠΟΣ

Κρατήστε τον πυρήνα. Φτιάξτε το δικό σας περιβάλλον.

Η προβολή κειμένου BASIC 7 και η γραφική προβολή BASIC 8 μοιράζονται ήδη τον ίδιο πυρήνα γλώσσας μηχανής. Σειριακή λήψη, αποκωδικοποίηση AIS, μητρώο σκαφών, REU και φίλτρα χάρτη βρίσκονται κάτω από την παρουσίαση. Το API προσφέρει αυτόν τον διαχωρισμό και σε άλλες εφαρμογές.

Εδώ, η διεπαφή προγραμματισμού εφαρμογών είναι ένα σύνολο διευθύνσεων εισόδου με καθορισμένα ορίσματα και αποτελέσματα. Η BASIC τις καλεί με SYS· η assembly μπορεί να χρησιμοποιήσει JSR· άλλη γλώσσα μπορεί να χρησιμοποιήσει μια μικρή γέφυρα καταχωρητών και μνήμης. Ο καλών δεν χρειάζεται να είναι γραμμένος σε BASIC.

BASIC 7, BASIC 8 και προσαρμοσμένη εφαρμογή συνδέονται με κλήσεις, συμβάντα και αναγνωριστικά εγγραφών στον πυρήνα AIS4CBM. Εκείνος χειρίζεται σειριακή είσοδο, αποκωδικοποίηση, φίλτρα, μητρώο Bank 1 και REU.
Το περιβάλλον αλλάζει ενώ η εργασία AIS παραμένει στην ML. Ένα προσαρμοσμένο περιβάλλον παρέχει γέφυρα κλήσης και πρόγραμμα εκτέλεσης. Πλήρες μέγεθος ↗

Η τρέχουσα διεπαφή προέκυψε από τις προβολές BASIC. Ορισμένες είσοδοι είναι άμεσες κλήσεις καταχωρητών· άλλες προετοιμάζουν λειτουργία BASIC USR() ή διαχειρίζονται την κατάσταση γραφικών BASIC 8. Η χρήση των δυαδικών από άλλη γλώσσα είναι δυνατή, αλλά το νέο περιβάλλον πρέπει να σέβεται αυτές τις εξαρτήσεις και τη μνήμη του C128.

Η ΣΥΜΒΑΣΗ ΚΛΗΣΗΣ

Η διεύθυνση είναι μόνο το μισό API.

Οι δημόσιες είσοδοι καταλαμβάνουν το τμήμα BasicApi που αρχίζει στη $8000. Αυτές οι μικρές γέφυρες δίνουν γνωστά σημεία εισόδου, ενώ η εσωτερική υλοποίηση μπορεί να μετακινείται. Χρησιμοποιήστε σύμβολα και μονάδες της ίδιας κατασκευής: out/buildBASIC8.sym είναι η αυθεντία για τις διευθύνσεις.

Η τυπική έκδοση χρησιμοποιεί σειριακή είσοδο SwiftLink και διάταξη REU για 512 KiB ή περισσότερα. Ένα άλλο περιβάλλον πρέπει να διατηρεί τη δεσμευμένη μνήμη και τις συμβάσεις υλικού, μαζί με τις διευθύνσεις κλήσεων.

  • Οι καταχωρητές μεταφέρουν ορίσματα. Κάθε κλήση ορίζει τη δική της χρήση των A, X, Y και του carry. Μην θεωρείτε ότι διατηρούνται καταχωρητές ή σημαίες χωρίς σχετική εγγύηση.
  • Οι ανακτήσεις δεικτών επιστρέφουν A/X. A είναι το χαμηλό byte και X το υψηλό. Το αποτέλεσμα είναι διεύθυνση, όχι ο μετρητής ή η τιμή της εγγραφής που βρίσκεται εκεί.
  • Η χαρτογράφηση μνήμης είναι μέρος της σύμβασης. Ο καλών πρέπει να κάνει ορατό τον κώδικα και τη μνήμη εργασίας, με την αναμενόμενη MMU και μηδενική σελίδα. Μια απλή JSR από αυθαίρετη τράπεζα δεν αρκεί.
  • Οι κλήσεις ανήκουν στην κύρια εκτέλεση. Ο πυρήνας μοιράζεται περιοχές εργασίας, χειριστές και βοηθήματα τραπεζών. Θεωρήστε τις διεπαφές μη επανεισερχόμενες και κρατήστε έναν ιδιοκτήτη της συναλλαγής πρόσβασης σκάφους.
Assembly 8502 · εύρεση διεύθυνσης ειδοποιήσεων
// Called after runtime initialization, in its valid memory mapping.
jsr $8004             // getNotifyFlagPointer
sta eventAddress      // low byte
stx eventAddress+1    // high byte
// Continue in the caller; eventAddress is its own two-byte variable.

Είναι η ίδια είσοδος που χρησιμοποιεί η BASIC. Η γέφυρα του καλούντος αλλάζει· η σημασία του αποτελέσματος παραμένει ίδια. Προτιμήστε ρουτίνα ανάκτησης αντί να αντιγράφετε εσωτερική διεύθυνση στην εφαρμογή.

Η ΒΑΣΙΚΗ ΣΥΝΑΛΛΑΓΗ ΔΕΔΟΜΕΝΩΝ

Κλείδωμα. Ανάγνωση. Αποδέσμευση.

Η εφαρμογή αναγνωρίζει ένα σκάφος με αναγνωριστικό εγγραφής 16 bit, σήμερα 0–999. Είναι αναφορά μητρώου, όχι δείκτης Bank 0 ούτε MMSI. Οι εγγραφές βρίσκονται στην Bank 1· καθεμία έχει σταθερή θέση 128 byte στην REU. Τα αναγνωριστικά επαναχρησιμοποιούνται, άρα ένα παλιό ID από μόνο του δεν εγγυάται την ίδια ταυτότητα σκάφους.

getVesselData στη $8022 — X = χαμηλό byte ID, Y = υψηλό byte ID σε κάθε ενέργεια
A / ενέργειαΣημασία
1Κλειδώνει την εγγραφή και ανακτά μεταδεδομένα και διαθέσιμα φορτία στην περιοχή εργασίας. Carry μηδέν σημαίνει επιτυχία· carry ένα μη διαθέσιμη εγγραφή. Επιλέγει και τον αναγνώστη πεδίων για την USR της BASIC.
0Αποθηκεύει τα καταναλωμένα οπτικά μεταδεδομένα και ξεκλειδώνει την ίδια εγγραφή. Μπορεί να προάγει το τελευταίο κελί σε σχεδιασμένο και επιβεβαιώνει την εκκρεμή ειδοποίηση σκάφους.
4Ξεκλειδώνει χωρίς αποθήκευση μεταδεδομένων ή αλλαγή σχεδιασμένου κελιού. Για έλεγχο μόνο ανάγνωσης. Δεν επιβεβαιώνει εκκρεμή ειδοποίηση σκάφους.

Μετά από επιτυχές κλείδωμα, η BASIC διαβάζει πεδία μέσω USR(field). Οι αριθμοί χρησιμοποιούν τον συσσωρευτή κινητής υποδιαστολής· το κείμενο τις υπηρεσίες συμβολοσειρών BASIC. Η $807A παρέχει την περιοχή ανακτημένων δεδομένων και η $800E την εγγραφή εργασίας μητρώου των εννέα byte. Ένα άλλο περιβάλλον μπορεί να περιβάλει τον αναγνώστη πεδίων ή να ερμηνεύσει τα δεδομένα με τη διάταξη της αντίστοιχης κατασκευής.

Κρατήστε την εγγραφή κλειδωμένη όσο αντιγράφετε τα πεδία και μετά αποδεσμεύστε τη. Ο χώρος εργασίας ανήκει στον πυρήνα και επαναχρησιμοποιείται στην επόμενη συναλλαγή· δεν είναι μόνιμη μνήμη ανά σκάφος. Ξεκλειδώστε το ίδιο ID και μόνο μετά από επιτυχές κλείδωμα.

Για αναλυτικό παράδειγμα της πλευράς BASIC, δείτε Ανάκτηση δεδομένων σκάφους με USR, με επιλογείς πεδίων και αριθμητικά αποτελέσματα/συμβολοσειρές.

ΚΛΗΣΕΙΣ ΕΙΣΟΔΟΥ / ΕΙΔΟΠΟΙΗΣΕΙΣ ΕΞΟΔΟΥ

Ο πυρήνας λέει στην εφαρμογή τι άλλαξε.

Ο δείκτης ειδοποιήσεων που επιστρέφει η $8004 οδηγεί σε κοινό byte σημαιών και πληροφορίες συμβάντος. Η BASIC χρησιμοποιεί WAIT για αναμονή επιλεγμένων σημαιών. Άλλο περιβάλλον μπορεί να διαβάζει την ίδια κατάσταση στον δικό του βρόχο.

Το byte ειδοποιήσεων, από το λιγότερο στο περισσότερο σημαντικό bit
ΜάσκαΣήμαΕρμηνεία
$01ΑφύπνισηΕπιτρέπει στην κύρια εκτέλεση του πυρήνα και της εφαρμογής να προχωρήσει.
$02ΠοντίκιΔημοσιευμένη ειδοποίηση ποντικιού· λεπτομέρειες στη μετατόπιση +8.
$04ΠαλμόςΕναλλασσόμενη κατάσταση: συγκρίνετε με τον τελευταίο εξυπηρετημένο παλμό αντί να τη μηδενίζετε ως εκκρεμές συμβάν.
$08ΣύνδεσηΚατάσταση σειριακής σύνδεσης.
$10Ροή δεδομένωνΠρόσφατη εισερχόμενη δραστηριότητα· είναι ένδειξη κατάστασης.
$20Μήνυμα σκάφουςΔημοσιευμένη ενημέρωση σκάφους για το περιβάλλον.
$40Κατάσταση / σφάλμαΚωδικός κατάστασης, προειδοποίησης ή σφάλματος· χρησιμοποιείται και για επιτυχή ολοκλήρωση QR.
$80Πάτημα πλήκτρουΠλήκτρο που προωθήθηκε από τον κύριο διαχειριστή.
Μετατοπίσεις ως προς τον δείκτη ειδοποιήσεων
ΜετατόπισηΠεριεχόμενο
+0Σημαίες ειδοποιήσεων.
+1Ενέργεια σκάφους και τύπος AIS σε ένα byte.
+2, +3ID εγγραφής μηνύματος σκάφους, χαμηλό και μετά υψηλό byte.
+4Κωδικός πλήκτρου.
+5Κωδικός κατάστασης / σφάλματος / προειδοποίησης.
+6, +7Πληροφορίες για τον κωδικό κατάστασης. Για QR-ready 14, το χαμηλό/υψηλό byte ID εγγραφής.
+8Λεπτομέρειες ποντικιού.
+9Τρέχον αντίγραφο μάσκας αναμονής του περιβάλλοντος, διαθέσιμο και μέσω $8045.

Οι σημαίες είναι κοινή χειραψία, όχι ουρά συμβάντων. Επαναλαμβανόμενα σήματα μπορεί να συγχωνευθούν. Διαβάστε τις πληροφορίες πριν επιβεβαιώσετε το συμβάν, διατηρήστε άσχετα bit και συντονίστε την επιβεβαίωση με τις ενημερώσεις διακοπών. Η μάσκα αναμονής πρέπει να συμφωνεί με όσα μπορεί να χειριστεί το περιβάλλον: ο πυρήνας τη χρησιμοποιεί για να αποφασίσει τι θα παραδώσει.

Η IRQ δίνει τα bit που επανεκκινούν την BASIC· μετά την IGONE, η κύρια ML δημοσιεύει επιπλέον συμβάντα. Ένας εγγενής βρόχος αντικαθιστά αυτόν τον ρόλο χρονοπρογραμματισμού, αλλά πρέπει ακόμη να εξυπηρετεί τον πυρήνα και να καταναλώνει τις ειδοποιήσεις.

ΤΡΕΧΟΥΣΕΣ ΕΞΑΓΟΜΕΝΕΣ ΕΙΣΟΔΟΙ

Βρείτε την υπηρεσία που χρειάζεστε.

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

Εκτέλεση και κύκλος ζωής

Εκτέλεση και κύκλος ζωής — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8000nmiΓέφυρα αρχικοποίησης πυρήνα (παλαιό όνομα, όχι είσοδος NMI υλικού). Αρχικοποιεί αποκωδικοποιητή και αποθήκευση· για εκκίνηση, όχι για περιοδική εξυπηρέτηση.
$80BBrestartRuntimeIrqApiΕγκατάσταση κατά την εκκίνηση: μηδενίζει σειριακές περιοχές εργασίας, εγκαθιστά IRQ και IGONE, ξεκινά το ρολόι και ενεργοποιεί IRQ. Δείτε τις σημειώσεις ενσωμάτωσης πριν τη χρήση εκτός BASIC.
$80A1rearmRuntimeIrqTimerApiΕπανενεργοποιεί μόνο τον χρονομετρητή CIA1 του πυρήνα μετά από I/O δίσκου. Διατηρεί σημαίες/MMU· δεν μηδενίζει σειριακές περιοχές ούτε επανεγκαθιστά παρεμβάσεις.
$804EresumeDecoderΕίσοδος συμβατότητας· σήμερα επιστρέφει αμέσως. Δεν συνεχίζει τη σειριακή ροή.
$804FstartIdleCleanupApiΖητά περιορισμένο πέρασμα εκκαθάρισης. Η κύρια εξυπηρέτηση πρέπει να συνεχίζεται για να προχωρά.
$8052getIdleCleanupStatusApiΚανονική έκδοση: bit 6 του A δηλώνει ενεργή διαδικασία· X/Y = χαμηλό/υψηλό πλήθους ανακτημένων θέσεων. Οι debug εκδόσεις κωδικοποιούν και σφάλματα· δείτε idleCleanup.asm.
$8073setDataDriveA = μονάδα δεδομένων, X = σημαία καταγραφής ακατέργαστων δεδομένων. Αποθηκεύει τις ρυθμίσεις.

Πρόσβαση σκάφους και χώρος εργασίας

Πρόσβαση σκάφους και χώρος εργασίας — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8022getVesselDataA = ενέργεια· X/Y = χαμηλό/υψηλό ID εγγραφής. Δείτε τη σύμβαση συναλλαγής.
$8035getVesselAtLocationA = στήλη, X = γραμμή. Επιστρέφει Y = πλήθος αντίστοιχων σχεδιασμένων, ξεκλείδωτων σκαφών· A/X = πρώτο ID χαμηλό/υψηλό. Y=0 σημαίνει κανένα αποτέλεσμα (και A/X μηδέν)· το ίδιο το ID μηδέν είναι έγκυρο.
$800EgetVesselBufferAddressPointerΕπιστρέφει A/X προς την εγγραφή εργασίας μητρώου των εννέα byte στην Bank 0 για την BASIC. Δεν είναι το κανονικό μητρώο της Bank 1.
$8013getVesselRegistryMemoryLocationPointerΕπιστρέφει A/X προς το όριο bufferTail 16 bit (επόμενο αχρησιμοποίητο ID), παρά το παλιό όνομα. Δεν είναι βάση μητρώου ούτε πλήθος ενεργών σκαφών.
$807AgetBASICScratchPointerΕπιστρέφει A/X προς την περιοχή ανακτημένων μεταδεδομένων και φορτίων. Διαβάστε μέσα σε επιτυχές κλείδωμα σκάφους.

Ειδοποιήσεις και κατάσταση δείκτη

Ειδοποιήσεις και κατάσταση δείκτη — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8004getNotifyFlagPointerΕπιστρέφει A/X προς την περιοχή ειδοποιήσεων.
$8045getBasicWaitMaskPointerΕπιστρέφει A/X προς το αντίγραφο ενός byte της μάσκας αναμονής περιβάλλοντος.
$807FgetMouseQueryPointerΕπιστρέφει A/X προς το byte στήλης του τρέχοντος ερωτήματος, ακολουθούμενο από τη γραμμή.

Μετρητές εκτέλεσης

Μετρητές εκτέλεσης — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8009getTotalVesselsTrackedCounterPointerΕπιστρέφει A/X προς μετρητή διαθέσιμων θέσεων 16 bit, παρά το όνομα. Παρακολουθούμενα σκάφη = διαμορφωμένη χωρητικότητα μείον αυτή την τιμή (σήμερα 1.000).
$8018getTotalMessagesReceivedCounterPointerΕπιστρέφει A/X προς τον συνολικό μετρητή μηνυμάτων 32 bit.
$801DgetTotalFailedUpdatesCounterPointerΕπιστρέφει A/X προς τον μετρητή αποτυχημένων ενημερώσεων 16 bit.
$8084getCRCFailuresCounterPointerΕπιστρέφει A/X προς τον μετρητή αποτυχιών αθροίσματος ελέγχου NMEA 16 bit.
$8089getMessageTypeCountersPointerΕπιστρέφει A/X προς εννέα μετρητές 16 bit, με σειρά τύπων AIS: 1, 2, 3, 4, 5, 9, 18, 21, 24.
$808EgetSkippedNotificationsCounterPointerΕπιστρέφει A/X προς τον μετρητή παραλειφθεισών ειδοποιήσεων 16 bit.
$80F5getRawDataDropCounterΕπιστρέφει A/X προς τον μετρητή απορρίψεων καταγραφής ακατέργαστων δεδομένων ενός byte.

Φίλτρα και όρια χάρτη

Φίλτρα και όρια χάρτη — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8069setAISMaskBlockΕπιστρέφει A/X με διεύθυνση δεύτερης ρουτίνας. Καλέστε την με A = μάσκα και X = μπλοκ 0–7. Το μπλοκ 0 αντιστοιχεί στους τύπους AIS 1–8, το 1 στους 9–16 κ.ο.κ.
$806ElistenToAISMessageTypeΕπιστρέφει A/X με διεύθυνση δεύτερης ρουτίνας. Καλέστε την με A = τύπος AIS 1–63, X=0 για απενεργοποίηση ή μη μηδενικό για ενεργοποίηση. Επιστρέφει carry ένα για έγκυρο τύπο, αλλιώς μηδέν.
$8038setChartExtendΕπιλέγει τον ορισμό ορίων μέσω BASIC USR. Ακολουθήστε με USR(north), USR(east), USR(south), USR(west), με αυτή τη σειρά.
$8057getChartExtendΕπιλέγει αναγνώστη USR που σήμερα επιστρέφει μηδέν. Δεν επιστρέφει προς το παρόν τα όρια χάρτη.

Βοηθήματα BASIC και προβολής

Βοηθήματα BASIC και προβολής — δημόσιες είσοδοι
ΔιεύθυνσηΕίσοδοςΣύμβαση
$8025getTimeStringΑνανεώνει το στιγμιότυπο ώρας και επιλέγει την Time.getDateTimeBasic ως χειριστή USR. Η ίδια η κλήση δεν επιστρέφει δείκτη συμβολοσειράς A/X.
$8093setDelegateUSRΕγκαθιστά τη γέφυρα USR του πυρήνα στο διάνυσμα USR της BASIC. Δεν επιλέγει μόνη της νέα λειτουργία πεδίου.
$804ArequestCurrentCellQueryApiΞεκινά ερώτημα σκάφους στο κελί του δείκτη γραφικών / διαδρομή QR. Η επιτυχία QR φτάνει ασύγχρονα ως κωδικός 14 στη σημαία κατάστασης/σφάλματος.
$8064getWindowRoutineΕπιστρέφει A/X με την καλούμενη διεύθυνση windowPreparePrintAtRowLine, για επαναφορά δρομέα παραθύρου κειμένου.
$809EenableBasic8MouseBridgeA=0 δεσμεύει/απενεργοποιεί τη γέφυρα· A=1 αποδεσμεύει μία δέσμευση και ενεργοποιεί όταν μηδενιστούν· A=2 μηδενίζει δεσμεύσεις και συγχρονίζει από τον δείκτη BASIC 8.
$80BEcopyBackgroundToBank1Αντιγράφει το αποθηκευμένο φόντο REU του κλειδωμένου σκάφους στη σταθερή περιοχή BASIC 8 της Bank 1.
$80D2copyBackgroundFromBank1Αντιγράφει τη σταθερή περιοχή BASIC 8 της Bank 1 στο αποθηκευμένο φόντο REU του κλειδωμένου σκάφους.
$80E6clearOwnerMatrixApiΜηδενίζει τον πίνακα ιδιοκτησίας κελιών οθόνης στην Bank 1.
$80E9claimOwnerCellApiΧρησιμοποιεί το κλειδωμένο ID· X=στήλη, Y=γραμμή. Επιστρέφει A=0 για επιτυχία, 1 για άλλον ιδιοκτήτη, 2 για μη έγκυρο κελί.
$80ECreleaseOwnerCellApiΧρησιμοποιεί το κλειδωμένο ID· X=στήλη, Y=γραμμή. Επιστρέφει A=0 για επιτυχία, 1 αν δεν είναι ο ιδιοκτήτης, 2 για μη έγκυρο κελί.
$80EFstartScreenRefreshApiA = μάσκα κλάσεων προβολής (bit 0–4: κλάση A, κλάση B, σταθμός βάσης, βοήθημα ναυσιπλοΐας, SAR). Καθαρίζει την οπτική κατάσταση και αρχίζει σταδιακές ειδοποιήσεις· carry ένα σημαίνει ενεργή.
$80F2getScreenRefreshStatusApiΠροχωρά την ανανέωση και επιστρέφει carry ένα όσο είναι ενεργή, μηδέν όταν τελειώσει. Αυτή η κλήση κατάστασης εκτελεί εργασία.

Οι πολυ-byte μετρητές εδώ είναι little-endian. Πάρτε συνεπές στιγμιότυπο πριν από μετατροπή ή εμφάνιση· τα byte τους είναι κοινόχρηστη κατάσταση. Σημαίες και αναπαραστάσεις πεδίων/συμβολοσειρών έχουν δικές τους συμβάσεις.

ΤΟ ΔΙΚΟ ΣΑΣ ΠΕΡΙΒΑΛΛΟΝ

Η BASIC είναι ένας καλών. Ο δικός σας μπορεί να είναι άλλος.

Μια εφαρμογή σε άλλη γλώσσα μπορεί να παρέχει δικό της κύριο βρόχο: εξυπηρέτηση πυρήνα AIS, έλεγχος ειδοποιήσεων, ενημέρωση περιβάλλοντος και επανάληψη. Οι IRQ/NMI συνεχίζουν τη δουλειά διακοπών. Η ενσωμάτωση χρειάζεται γέφυρα που δίνει καταχωρητές, συλλέγει αποτελέσματα και διαχειρίζεται τη χαρτογράφηση μνήμης γύρω από τις κλήσεις.

  1. Φορτώστε συμβατό σύνολο μονάδων. Χρησιμοποιήστε τις μονάδες και τις τοποθετήσεις της τρέχουσας κατασκευής και του φορτωτή. Η δισκέτα χωρίζει σειριακό κώδικα, γέφυρες, μητρώο, αποκωδικοποιητή/API, υποστήριξη εκτέλεσης, λογική AIS, αρχεία και REU. Η φόρτωση μόνο του DECODER δεν παρέχει τον πλήρη πυρήνα.
  2. Σεβαστείτε τη σύμβαση μνήμης. Δεσμεύστε μητρώο και hash της Bank 1, θέσεις REU, κοινές περιοχές εργασίας, γέφυρες χαμηλής μνήμης και περιοχές μηδενικής σελίδας/FAC. Χρησιμοποιήστε τα υπάρχοντα βοηθήματα τραπεζών και REU· κάθε DMA REU πρέπει να περνά από τη reu.runDma, που επιβάλλει 1 MHz για τη μεταφορά.
  3. Δώστε πρόγραμμα εκτέλεσης. Αρχικοποιήστε στο αναμενόμενο περιβάλλον, οργανώστε IRQ/NMI και κύρια εξυπηρέτηση, και επιλέξτε τα συμβάντα που θα καταναλώνετε. Μην εγκαταστήσετε την IGONE και υποθέσετε ότι θα εκτελείται σε βρόχο χωρίς BASIC.
  4. Επιλέξτε γέφυρα πρόσβασης πεδίων. Οι κλήσεις καταχωρητών περιβάλλονται εύκολα. Τα βοηθήματα USR/FAC/συμβολοσειρών χρειάζονται ακόμη τις συμβάσεις ROM και χώρου εργασίας BASIC του C128, ακόμη και αν η εφαρμογή είναι σε άλλη γλώσσα. Μια εγγενής διεπαφή πεδίων με τύπους θα ήταν πρόσθετος προσαρμογέας.

Ο ίδιος διαχωρισμός ευθυνών μπορεί να καθοδηγήσει μελλοντική υλοποίηση σε άλλη πλατφόρμα. Η χρήση όμως αυτών των δυαδικών απαιτεί το περιβάλλον C128 ή εξομοίωσή του.

Κρατήστε την υλοποίηση δίπλα στην αναφορά

  • README.md — αρχιτεκτονική, επισκόπηση API, τρέχουσα κατασκευή και χάρτης μνήμης.
  • Basic8Config.asm — εξαγόμενες είσοδοι, αρχικοποίηση και βοηθήματα προβολής.
  • basicinterface.asm — συναλλαγές σκαφών και μετατροπή πεδίων BASIC.
  • ais4cbmManager.asm — κύρια εργασία, ειδοποιήσεις και μάσκες μηνυμάτων.
  • buildBASIC8.asm — μονάδες της τρέχουσας δισκέτας.

Οι σύνδεσμοι GitLab ακολουθούν το main. Για ενσωμάτωση, κρατήστε συγκεκριμένη αναθεώρηση κώδικα και τα παραγόμενα σύμβολά της δίπλα στα δυαδικά που χρησιμοποιείτε.