Ο ΣΚΟΠΟΣ
Κρατήστε τον πυρήνα. Φτιάξτε το δικό σας περιβάλλον.
Η προβολή κειμένου BASIC 7 και η γραφική προβολή BASIC 8 μοιράζονται ήδη τον ίδιο πυρήνα γλώσσας μηχανής. Σειριακή λήψη, αποκωδικοποίηση AIS, μητρώο σκαφών, REU και φίλτρα χάρτη βρίσκονται κάτω από την παρουσίαση. Το API προσφέρει αυτόν τον διαχωρισμό και σε άλλες εφαρμογές.
Εδώ, η διεπαφή προγραμματισμού εφαρμογών είναι ένα σύνολο διευθύνσεων εισόδου με καθορισμένα ορίσματα και αποτελέσματα. Η BASIC τις καλεί με SYS· η assembly μπορεί να χρησιμοποιήσει JSR· άλλη γλώσσα μπορεί να χρησιμοποιήσει μια μικρή γέφυρα καταχωρητών και μνήμης. Ο καλών δεν χρειάζεται να είναι γραμμένος σε BASIC.
Η τρέχουσα διεπαφή προέκυψε από τις προβολές BASIC. Ορισμένες είσοδοι είναι άμεσες κλήσεις καταχωρητών· άλλες προετοιμάζουν λειτουργία BASIC USR() ή διαχειρίζονται την κατάσταση γραφικών BASIC 8. Η χρήση των δυαδικών από άλλη γλώσσα είναι δυνατή, αλλά το νέο περιβάλλον πρέπει να σέβεται αυτές τις εξαρτήσεις και τη μνήμη του C128.
Ξεκινήστε από το README του αποθετηρίουκαι εξετάστε την υλοποίηση του εξαγόμενου API. Είναι τοπική δυαδική διεπαφή C128· τα υπάρχοντα δυαδικά περιέχουν κώδικα 8502.
Η ΣΥΜΒΑΣΗ ΚΛΗΣΗΣ
Η διεύθυνση είναι μόνο το μισό API.
Οι δημόσιες είσοδοι καταλαμβάνουν το τμήμα BasicApi που αρχίζει στη $8000. Αυτές οι μικρές γέφυρες δίνουν γνωστά σημεία εισόδου, ενώ η εσωτερική υλοποίηση μπορεί να μετακινείται. Χρησιμοποιήστε σύμβολα και μονάδες της ίδιας κατασκευής: out/buildBASIC8.sym είναι η αυθεντία για τις διευθύνσεις.
Η τυπική έκδοση χρησιμοποιεί σειριακή είσοδο SwiftLink και διάταξη REU για 512 KiB ή περισσότερα. Ένα άλλο περιβάλλον πρέπει να διατηρεί τη δεσμευμένη μνήμη και τις συμβάσεις υλικού, μαζί με τις διευθύνσεις κλήσεων.
- Οι καταχωρητές μεταφέρουν ορίσματα. Κάθε κλήση ορίζει τη δική της χρήση των
A,X,Yκαι του carry. Μην θεωρείτε ότι διατηρούνται καταχωρητές ή σημαίες χωρίς σχετική εγγύηση. - Οι ανακτήσεις δεικτών επιστρέφουν A/X.
Aείναι το χαμηλό byte καιXτο υψηλό. Το αποτέλεσμα είναι διεύθυνση, όχι ο μετρητής ή η τιμή της εγγραφής που βρίσκεται εκεί. - Η χαρτογράφηση μνήμης είναι μέρος της σύμβασης. Ο καλών πρέπει να κάνει ορατό τον κώδικα και τη μνήμη εργασίας, με την αναμενόμενη MMU και μηδενική σελίδα. Μια απλή
JSRαπό αυθαίρετη τράπεζα δεν αρκεί. - Οι κλήσεις ανήκουν στην κύρια εκτέλεση. Ο πυρήνας μοιράζεται περιοχές εργασίας, χειριστές και βοηθήματα τραπεζών. Θεωρήστε τις διεπαφές μη επανεισερχόμενες και κρατήστε έναν ιδιοκτήτη της συναλλαγής πρόσβασης σκάφους.
// 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 από μόνο του δεν εγγυάται την ίδια ταυτότητα σκάφους.
| A / ενέργεια | Σημασία |
|---|---|
1 | Κλειδώνει την εγγραφή και ανακτά μεταδεδομένα και διαθέσιμα φορτία στην περιοχή εργασίας. Carry μηδέν σημαίνει επιτυχία· carry ένα μη διαθέσιμη εγγραφή. Επιλέγει και τον αναγνώστη πεδίων για την USR της BASIC. |
0 | Αποθηκεύει τα καταναλωμένα οπτικά μεταδεδομένα και ξεκλειδώνει την ίδια εγγραφή. Μπορεί να προάγει το τελευταίο κελί σε σχεδιασμένο και επιβεβαιώνει την εκκρεμή ειδοποίηση σκάφους. |
4 | Ξεκλειδώνει χωρίς αποθήκευση μεταδεδομένων ή αλλαγή σχεδιασμένου κελιού. Για έλεγχο μόνο ανάγνωσης. Δεν επιβεβαιώνει εκκρεμή ειδοποίηση σκάφους. |
Μετά από επιτυχές κλείδωμα, η BASIC διαβάζει πεδία μέσω USR(field). Οι αριθμοί χρησιμοποιούν τον συσσωρευτή κινητής υποδιαστολής· το κείμενο τις υπηρεσίες συμβολοσειρών BASIC. Η $807A παρέχει την περιοχή ανακτημένων δεδομένων και η $800E την εγγραφή εργασίας μητρώου των εννέα byte. Ένα άλλο περιβάλλον μπορεί να περιβάλει τον αναγνώστη πεδίων ή να ερμηνεύσει τα δεδομένα με τη διάταξη της αντίστοιχης κατασκευής.
Κρατήστε την εγγραφή κλειδωμένη όσο αντιγράφετε τα πεδία και μετά αποδεσμεύστε τη. Ο χώρος εργασίας ανήκει στον πυρήνα και επαναχρησιμοποιείται στην επόμενη συναλλαγή· δεν είναι μόνιμη μνήμη ανά σκάφος. Ξεκλειδώστε το ίδιο ID και μόνο μετά από επιτυχές κλείδωμα.
Για αναλυτικό παράδειγμα της πλευράς BASIC, δείτε Ανάκτηση δεδομένων σκάφους με USR, με επιλογείς πεδίων και αριθμητικά αποτελέσματα/συμβολοσειρές.
Υλοποίηση κλειδώματος, πρόσβασης πεδίων και ξεκλειδώματος · Μητρώο και αναγνωριστικά εγγραφών · Διάταξη REU
ΚΛΗΣΕΙΣ ΕΙΣΟΔΟΥ / ΕΙΔΟΠΟΙΗΣΕΙΣ ΕΞΟΔΟΥ
Ο πυρήνας λέει στην εφαρμογή τι άλλαξε.
Ο δείκτης ειδοποιήσεων που επιστρέφει η $8004 οδηγεί σε κοινό byte σημαιών και πληροφορίες συμβάντος. Η BASIC χρησιμοποιεί WAIT για αναμονή επιλεγμένων σημαιών. Άλλο περιβάλλον μπορεί να διαβάζει την ίδια κατάσταση στον δικό του βρόχο.
| Μάσκα | Σήμα | Ερμηνεία |
|---|---|---|
$01 | Αφύπνιση | Επιτρέπει στην κύρια εκτέλεση του πυρήνα και της εφαρμογής να προχωρήσει. |
$02 | Ποντίκι | Δημοσιευμένη ειδοποίηση ποντικιού· λεπτομέρειες στη μετατόπιση +8. |
$04 | Παλμός | Εναλλασσόμενη κατάσταση: συγκρίνετε με τον τελευταίο εξυπηρετημένο παλμό αντί να τη μηδενίζετε ως εκκρεμές συμβάν. |
$08 | Σύνδεση | Κατάσταση σειριακής σύνδεσης. |
$10 | Ροή δεδομένων | Πρόσφατη εισερχόμενη δραστηριότητα· είναι ένδειξη κατάστασης. |
$20 | Μήνυμα σκάφους | Δημοσιευμένη ενημέρωση σκάφους για το περιβάλλον. |
$40 | Κατάσταση / σφάλμα | Κωδικός κατάστασης, προειδοποίησης ή σφάλματος· χρησιμοποιείται και για επιτυχή ολοκλήρωση QR. |
$80 | Πάτημα πλήκτρου | Πλήκτρο που προωθήθηκε από τον κύριο διαχειριστή. |
| Μετατόπιση | Περιεχόμενο |
|---|---|
+0 | Σημαίες ειδοποιήσεων. |
+1 | Ενέργεια σκάφους και τύπος AIS σε ένα byte. |
+2, +3 | ID εγγραφής μηνύματος σκάφους, χαμηλό και μετά υψηλό byte. |
+4 | Κωδικός πλήκτρου. |
+5 | Κωδικός κατάστασης / σφάλματος / προειδοποίησης. |
+6, +7 | Πληροφορίες για τον κωδικό κατάστασης. Για QR-ready 14, το χαμηλό/υψηλό byte ID εγγραφής. |
+8 | Λεπτομέρειες ποντικιού. |
+9 | Τρέχον αντίγραφο μάσκας αναμονής του περιβάλλοντος, διαθέσιμο και μέσω $8045. |
Οι σημαίες είναι κοινή χειραψία, όχι ουρά συμβάντων. Επαναλαμβανόμενα σήματα μπορεί να συγχωνευθούν. Διαβάστε τις πληροφορίες πριν επιβεβαιώσετε το συμβάν, διατηρήστε άσχετα bit και συντονίστε την επιβεβαίωση με τις ενημερώσεις διακοπών. Η μάσκα αναμονής πρέπει να συμφωνεί με όσα μπορεί να χειριστεί το περιβάλλον: ο πυρήνας τη χρησιμοποιεί για να αποφασίσει τι θα παραδώσει.
Η IRQ δίνει τα bit που επανεκκινούν την BASIC· μετά την IGONE, η κύρια ML δημοσιεύει επιπλέον συμβάντα. Ένας εγγενής βρόχος αντικαθιστά αυτόν τον ρόλο χρονοπρογραμματισμού, αλλά πρέπει ακόμη να εξυπηρετεί τον πυρήνα και να καταναλώνει τις ειδοποιήσεις.
Το μάθημα WAIT εξηγεί μάσκες και επιβεβαίωση· το μάθημα IGONE εξηγεί εκτέλεση και αφυπνίσεις. Το γραφικό περιβάλλον δείχνει τον πλήρη χειρισμό συμβάντων.
ΤΡΕΧΟΥΣΕΣ ΕΞΑΓΟΜΕΝΕΣ ΕΙΣΟΔΟΙ
Βρείτε την υπηρεσία που χρειάζεστε.
Οι πίνακες διατηρούν τα ονόματα του κώδικα, μαζί με τα παλαιότερα. Οι διευθύνσεις αφορούν την ελεγμένη κατασκευή. Οι λεπτομερείς διατάξεις φορτίων και οι βοηθητικές ρουτίνες πρέπει πάντα να λαμβάνονται από τον κώδικα και τα σύμβολά της.
Εκτέλεση και κύκλος ζωής
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8000 | nmi | Γέφυρα αρχικοποίησης πυρήνα (παλαιό όνομα, όχι είσοδος NMI υλικού). Αρχικοποιεί αποκωδικοποιητή και αποθήκευση· για εκκίνηση, όχι για περιοδική εξυπηρέτηση. |
$80BB | restartRuntimeIrqApi | Εγκατάσταση κατά την εκκίνηση: μηδενίζει σειριακές περιοχές εργασίας, εγκαθιστά IRQ και IGONE, ξεκινά το ρολόι και ενεργοποιεί IRQ. Δείτε τις σημειώσεις ενσωμάτωσης πριν τη χρήση εκτός BASIC. |
$80A1 | rearmRuntimeIrqTimerApi | Επανενεργοποιεί μόνο τον χρονομετρητή CIA1 του πυρήνα μετά από I/O δίσκου. Διατηρεί σημαίες/MMU· δεν μηδενίζει σειριακές περιοχές ούτε επανεγκαθιστά παρεμβάσεις. |
$804E | resumeDecoder | Είσοδος συμβατότητας· σήμερα επιστρέφει αμέσως. Δεν συνεχίζει τη σειριακή ροή. |
$804F | startIdleCleanupApi | Ζητά περιορισμένο πέρασμα εκκαθάρισης. Η κύρια εξυπηρέτηση πρέπει να συνεχίζεται για να προχωρά. |
$8052 | getIdleCleanupStatusApi | Κανονική έκδοση: bit 6 του A δηλώνει ενεργή διαδικασία· X/Y = χαμηλό/υψηλό πλήθους ανακτημένων θέσεων. Οι debug εκδόσεις κωδικοποιούν και σφάλματα· δείτε idleCleanup.asm. |
$8073 | setDataDrive | A = μονάδα δεδομένων, X = σημαία καταγραφής ακατέργαστων δεδομένων. Αποθηκεύει τις ρυθμίσεις. |
Πρόσβαση σκάφους και χώρος εργασίας
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8022 | getVesselData | A = ενέργεια· X/Y = χαμηλό/υψηλό ID εγγραφής. Δείτε τη σύμβαση συναλλαγής. |
$8035 | getVesselAtLocation | A = στήλη, X = γραμμή. Επιστρέφει Y = πλήθος αντίστοιχων σχεδιασμένων, ξεκλείδωτων σκαφών· A/X = πρώτο ID χαμηλό/υψηλό. Y=0 σημαίνει κανένα αποτέλεσμα (και A/X μηδέν)· το ίδιο το ID μηδέν είναι έγκυρο. |
$800E | getVesselBufferAddressPointer | Επιστρέφει A/X προς την εγγραφή εργασίας μητρώου των εννέα byte στην Bank 0 για την BASIC. Δεν είναι το κανονικό μητρώο της Bank 1. |
$8013 | getVesselRegistryMemoryLocationPointer | Επιστρέφει A/X προς το όριο bufferTail 16 bit (επόμενο αχρησιμοποίητο ID), παρά το παλιό όνομα. Δεν είναι βάση μητρώου ούτε πλήθος ενεργών σκαφών. |
$807A | getBASICScratchPointer | Επιστρέφει A/X προς την περιοχή ανακτημένων μεταδεδομένων και φορτίων. Διαβάστε μέσα σε επιτυχές κλείδωμα σκάφους. |
Ειδοποιήσεις και κατάσταση δείκτη
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8004 | getNotifyFlagPointer | Επιστρέφει A/X προς την περιοχή ειδοποιήσεων. |
$8045 | getBasicWaitMaskPointer | Επιστρέφει A/X προς το αντίγραφο ενός byte της μάσκας αναμονής περιβάλλοντος. |
$807F | getMouseQueryPointer | Επιστρέφει A/X προς το byte στήλης του τρέχοντος ερωτήματος, ακολουθούμενο από τη γραμμή. |
Μετρητές εκτέλεσης
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8009 | getTotalVesselsTrackedCounterPointer | Επιστρέφει A/X προς μετρητή διαθέσιμων θέσεων 16 bit, παρά το όνομα. Παρακολουθούμενα σκάφη = διαμορφωμένη χωρητικότητα μείον αυτή την τιμή (σήμερα 1.000). |
$8018 | getTotalMessagesReceivedCounterPointer | Επιστρέφει A/X προς τον συνολικό μετρητή μηνυμάτων 32 bit. |
$801D | getTotalFailedUpdatesCounterPointer | Επιστρέφει A/X προς τον μετρητή αποτυχημένων ενημερώσεων 16 bit. |
$8084 | getCRCFailuresCounterPointer | Επιστρέφει A/X προς τον μετρητή αποτυχιών αθροίσματος ελέγχου NMEA 16 bit. |
$8089 | getMessageTypeCountersPointer | Επιστρέφει A/X προς εννέα μετρητές 16 bit, με σειρά τύπων AIS: 1, 2, 3, 4, 5, 9, 18, 21, 24. |
$808E | getSkippedNotificationsCounterPointer | Επιστρέφει A/X προς τον μετρητή παραλειφθεισών ειδοποιήσεων 16 bit. |
$80F5 | getRawDataDropCounter | Επιστρέφει A/X προς τον μετρητή απορρίψεων καταγραφής ακατέργαστων δεδομένων ενός byte. |
Φίλτρα και όρια χάρτη
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8069 | setAISMaskBlock | Επιστρέφει A/X με διεύθυνση δεύτερης ρουτίνας. Καλέστε την με A = μάσκα και X = μπλοκ 0–7. Το μπλοκ 0 αντιστοιχεί στους τύπους AIS 1–8, το 1 στους 9–16 κ.ο.κ. |
$806E | listenToAISMessageType | Επιστρέφει A/X με διεύθυνση δεύτερης ρουτίνας. Καλέστε την με A = τύπος AIS 1–63, X=0 για απενεργοποίηση ή μη μηδενικό για ενεργοποίηση. Επιστρέφει carry ένα για έγκυρο τύπο, αλλιώς μηδέν. |
$8038 | setChartExtend | Επιλέγει τον ορισμό ορίων μέσω BASIC USR. Ακολουθήστε με USR(north), USR(east), USR(south), USR(west), με αυτή τη σειρά. |
$8057 | getChartExtend | Επιλέγει αναγνώστη USR που σήμερα επιστρέφει μηδέν. Δεν επιστρέφει προς το παρόν τα όρια χάρτη. |
Βοηθήματα BASIC και προβολής
| Διεύθυνση | Είσοδος | Σύμβαση |
|---|---|---|
$8025 | getTimeString | Ανανεώνει το στιγμιότυπο ώρας και επιλέγει την Time.getDateTimeBasic ως χειριστή USR. Η ίδια η κλήση δεν επιστρέφει δείκτη συμβολοσειράς A/X. |
$8093 | setDelegateUSR | Εγκαθιστά τη γέφυρα USR του πυρήνα στο διάνυσμα USR της BASIC. Δεν επιλέγει μόνη της νέα λειτουργία πεδίου. |
$804A | requestCurrentCellQueryApi | Ξεκινά ερώτημα σκάφους στο κελί του δείκτη γραφικών / διαδρομή QR. Η επιτυχία QR φτάνει ασύγχρονα ως κωδικός 14 στη σημαία κατάστασης/σφάλματος. |
$8064 | getWindowRoutine | Επιστρέφει A/X με την καλούμενη διεύθυνση windowPreparePrintAtRowLine, για επαναφορά δρομέα παραθύρου κειμένου. |
$809E | enableBasic8MouseBridge | A=0 δεσμεύει/απενεργοποιεί τη γέφυρα· A=1 αποδεσμεύει μία δέσμευση και ενεργοποιεί όταν μηδενιστούν· A=2 μηδενίζει δεσμεύσεις και συγχρονίζει από τον δείκτη BASIC 8. |
$80BE | copyBackgroundToBank1 | Αντιγράφει το αποθηκευμένο φόντο REU του κλειδωμένου σκάφους στη σταθερή περιοχή BASIC 8 της Bank 1. |
$80D2 | copyBackgroundFromBank1 | Αντιγράφει τη σταθερή περιοχή BASIC 8 της Bank 1 στο αποθηκευμένο φόντο REU του κλειδωμένου σκάφους. |
$80E6 | clearOwnerMatrixApi | Μηδενίζει τον πίνακα ιδιοκτησίας κελιών οθόνης στην Bank 1. |
$80E9 | claimOwnerCellApi | Χρησιμοποιεί το κλειδωμένο ID· X=στήλη, Y=γραμμή. Επιστρέφει A=0 για επιτυχία, 1 για άλλον ιδιοκτήτη, 2 για μη έγκυρο κελί. |
$80EC | releaseOwnerCellApi | Χρησιμοποιεί το κλειδωμένο ID· X=στήλη, Y=γραμμή. Επιστρέφει A=0 για επιτυχία, 1 αν δεν είναι ο ιδιοκτήτης, 2 για μη έγκυρο κελί. |
$80EF | startScreenRefreshApi | A = μάσκα κλάσεων προβολής (bit 0–4: κλάση A, κλάση B, σταθμός βάσης, βοήθημα ναυσιπλοΐας, SAR). Καθαρίζει την οπτική κατάσταση και αρχίζει σταδιακές ειδοποιήσεις· carry ένα σημαίνει ενεργή. |
$80F2 | getScreenRefreshStatusApi | Προχωρά την ανανέωση και επιστρέφει carry ένα όσο είναι ενεργή, μηδέν όταν τελειώσει. Αυτή η κλήση κατάστασης εκτελεί εργασία. |
Οι πολυ-byte μετρητές εδώ είναι little-endian. Πάρτε συνεπές στιγμιότυπο πριν από μετατροπή ή εμφάνιση· τα byte τους είναι κοινόχρηστη κατάσταση. Σημαίες και αναπαραστάσεις πεδίων/συμβολοσειρών έχουν δικές τους συμβάσεις.
Υλοποιήσεις: Γέφυρες API και βοηθήματα προβολής · κατάσταση εκκαθάρισης · χειριστές ορίων χάρτη · τρόποι λειτουργίας γέφυρας ποντικιού
ΤΟ ΔΙΚΟ ΣΑΣ ΠΕΡΙΒΑΛΛΟΝ
Η BASIC είναι ένας καλών. Ο δικός σας μπορεί να είναι άλλος.
Μια εφαρμογή σε άλλη γλώσσα μπορεί να παρέχει δικό της κύριο βρόχο: εξυπηρέτηση πυρήνα AIS, έλεγχος ειδοποιήσεων, ενημέρωση περιβάλλοντος και επανάληψη. Οι IRQ/NMI συνεχίζουν τη δουλειά διακοπών. Η ενσωμάτωση χρειάζεται γέφυρα που δίνει καταχωρητές, συλλέγει αποτελέσματα και διαχειρίζεται τη χαρτογράφηση μνήμης γύρω από τις κλήσεις.
- Φορτώστε συμβατό σύνολο μονάδων. Χρησιμοποιήστε τις μονάδες και τις τοποθετήσεις της τρέχουσας κατασκευής και του φορτωτή. Η δισκέτα χωρίζει σειριακό κώδικα, γέφυρες, μητρώο, αποκωδικοποιητή/API, υποστήριξη εκτέλεσης, λογική AIS, αρχεία και REU. Η φόρτωση μόνο του
DECODERδεν παρέχει τον πλήρη πυρήνα. - Σεβαστείτε τη σύμβαση μνήμης. Δεσμεύστε μητρώο και hash της Bank 1, θέσεις REU, κοινές περιοχές εργασίας, γέφυρες χαμηλής μνήμης και περιοχές μηδενικής σελίδας/FAC. Χρησιμοποιήστε τα υπάρχοντα βοηθήματα τραπεζών και REU· κάθε DMA REU πρέπει να περνά από τη
reu.runDma, που επιβάλλει 1 MHz για τη μεταφορά. - Δώστε πρόγραμμα εκτέλεσης. Αρχικοποιήστε στο αναμενόμενο περιβάλλον, οργανώστε IRQ/NMI και κύρια εξυπηρέτηση, και επιλέξτε τα συμβάντα που θα καταναλώνετε. Μην εγκαταστήσετε την IGONE και υποθέσετε ότι θα εκτελείται σε βρόχο χωρίς BASIC.
- Επιλέξτε γέφυρα πρόσβασης πεδίων. Οι κλήσεις καταχωρητών περιβάλλονται εύκολα. Τα βοηθήματα USR/FAC/συμβολοσειρών χρειάζονται ακόμη τις συμβάσεις ROM και χώρου εργασίας BASIC του C128, ακόμη και αν η εφαρμογή είναι σε άλλη γλώσσα. Μια εγγενής διεπαφή πεδίων με τύπους θα ήταν πρόσθετος προσαρμογέας.
Ο ίδιος διαχωρισμός ευθυνών μπορεί να καθοδηγήσει μελλοντική υλοποίηση σε άλλη πλατφόρμα. Η χρήση όμως αυτών των δυαδικών απαιτεί το περιβάλλον C128 ή εξομοίωσή του.
Κρατήστε την υλοποίηση δίπλα στην αναφορά
- README.md — αρχιτεκτονική, επισκόπηση API, τρέχουσα κατασκευή και χάρτης μνήμης.
- Basic8Config.asm — εξαγόμενες είσοδοι, αρχικοποίηση και βοηθήματα προβολής.
- basicinterface.asm — συναλλαγές σκαφών και μετατροπή πεδίων BASIC.
- ais4cbmManager.asm — κύρια εργασία, ειδοποιήσεις και μάσκες μηνυμάτων.
- buildBASIC8.asm — μονάδες της τρέχουσας δισκέτας.
Οι σύνδεσμοι GitLab ακολουθούν το main. Για ενσωμάτωση, κρατήστε συγκεκριμένη αναθεώρηση κώδικα και τα παραγόμενα σύμβολά της δίπλα στα δυαδικά που χρησιμοποιείτε.