Commodore BASIC

Η **Commodore BASIC** είναι μια διάλεκτος της γλώσσας προγραμματισμού BASIC που χρησιμοποιήθηκε στους 8-bit οικιακούς υπολογιστές της Commodore International, ξεκινώντας το 1977 με τον PET 2001 μέχρι τον C128 το 1985. Αργότερα προστέθηκε μια έκδοση που προοριζόταν για τον C65 αλλά δεν ολοκληρώθηκε ποτέ. Η BASIC βασίστηκε στο 6502-Microsoft BASIC, το οποίο είχε αδειοδοτηθεί από τη Microsoft έναντι μιας εφάπαξ πληρωμής. Ορισμένες άλλες διάλεκτοι BASIC για υπολογιστές που χρησιμοποιούν τον επεξεργαστή MOS Technology 6502, όπως το Applesoft BASIC, βασίζονται στην ίδια βάση κώδικα και επομένως μοιάζουν πολύ.

## Εκδόσεις

### V1.0
Η έκδοση V1.0 κυκλοφόρησε για το PET 2001 με το πληκτρολόγιο του τύπου chiclet.
* Σφάλμα: Οι συστοιχίες περιορίζονταν σε 256 στοιχεία.
* Σφάλμα: Η λειτουργία PEEK δεν λειτουργεί με διευθύνσεις πάνω από $C000. 
* Σφάλμα: Σε λειτουργία κειμένου στην οθόνη, το πλήκτρο Shift λειτουργεί αντίστροφα.

### V2.0
Η έκδοση V2.0 κυκλοφόρησε για το PET 2001 με πληκτρολόγιο γραφομηχανής και αναβαθμισμένο ROM, καθώς και για τις σειρές CBM 3000, VIC-20 και C64.
* Τα περισσότερα σφάλματα της έκδοσης V1.0 διορθώνονται.
* Μόνο για PET/CBM: Ενσωματωμένη οθόνη RAM με την ονομασία TIM για την εμφάνιση και τον χειρισμό της RAM.
* Υποστήριξη IEEE-488.

### V4.0
Η έκδοση V4.0 κυκλοφόρησε για τις σειρές CBM 4000, 8000 και τις μεταγενέστερες PET 2001.
* Εντολές δισκέτας: `DLOAD, DSAVE, COPY, SCRATCH, `
* Μεταβλητές συστήματος για το κανάλι σφάλματος δίσκου: DS, DS$ (το DS περιέχει τον αριθμό σφάλματος, το DS$ περιέχει το μήνυμα σφάλματος σε απλό κείμενο).
* Δεδομένου ότι αυτή η έκδοση απαιτούσε περισσότερη μνήμη ROM, ανακατανεμήθηκε μια επιπλέον υποδοχή ROM ($Bxxx) σε σύγκριση με το PET 2001, έτσι ώστε να υπάρχουν μόνο δύο ελεύθερες υποδοχές για επεκτάσεις και η χωρητικότητα ROM να αυξηθεί στα 18 KB.

Έκδοση V4.0+ για τη σειρά CBM-II (CBM 500, 6x0, 7x0) 
* Χρήση του διευρυμένου χώρου διευθύνσεων μέσω bank switching: `BANK`
* Πρόσθεση εντολών δισκέτας όπως: `BLOAD, BSAVE, DCLEAR`
* Εισάγωγή λειτουργίας αναζήτησης συμβολοσειρών: `INSTR`
* Μορφοποιημένη εκτύπωση μέσω των εντολών: `PRINT USING,PUDEF`
* Δυνατότητα εναλλακτικής εκτέλεσης εντολών: `ELSE`
* Ανάθεση πλήκτρων λειτουργίας: `KEY`
* Πρόσθετη εντολή επεξεργαστή: `DELETE`
* Δυναμικός χειρισμός σφαλμάτων μέσω των εντολών: `TRAP,DISPOSE,EL,ERR$(),RESUME`

### V3.5
Έκδοση V3.5 για τη σειρά Commodore 264 (C16, C116, Plus/4)
* Περιλαμβάνει εντολές ήχου και γραφικών.
* Έλεγχος Joystick: `JOY`
* Μετατροπή δεκαεξαδικών: `DEC(),HEX$()`
* Πιο ευέλικτη ανάγνωση δεδομένων μέσω της εντολής: `RESTORE [linenumber]`
* Λειτουργία αναζήτησης συμβολοσειρών: `INSTR`
* Μορφοποιημένη εκτύπωση μέσω των εντολών: `PRINT USING,PUDEF`
* Εναλλακτική εκτέλεση εντολών: `ELSE`
* Πρόσθετες εντολές βρόχου όπως: `DO,LOOP,WHILE,UNTIL,EXIT`
* Ανάθεση πλήκτρων λειτουργίας `KEY`
* Πρόσθετες εντολές του συντάκτη όπως `AUTO,DELETE,RENUMBER`
* Δυναμικός χειρισμός σφαλμάτων μέσω των εντολών `TRAP,RESUME,ERR$()`
* Αποσφαλμάτωση: `TRON,TROFF`

### V7.0
Έκδοση V7.0 για το C128

* Πολυσέλιδο IF με τις εντολές `BEGIN, BEND`
* Αυξημένος αριθμός εντολών ήχου και γραφικών, καθώς και εντολές για τον έλεγχο sprite.
* Έλεγχος paddle και φωτογραφίδας: `POT, PEN`
* Λειτουργία XOR για αποκλειστική διάζευξη: `XOR`
* Δυνατότητα προσδιορισμού διεύθυνσης μεταβλητής: `POINTER`
* Δημιουργία παραθύρου κειμένου: `WINDOW`
* Εντολή παύσης: `SLEEP`
* Χρήση των δύο ταχυτήτων του συστήματος με τις εντολές: `SLOW, FAST`
* Μετάβαση σε λειτουργία C64: `GO64`
* Χρήση του διευρυμένου χώρου διευθύνσεων μέσω bank switching: `BANK`
* Χρήση επέκτασης μνήμης (REU) με τις εντολές: `STASH, FETCH, SWAP`
* Πρόσθετες εντολές δισκέτας: `BOOT, BLOAD, BSAVE, DVERIFY, DCLEAR`
* Εντολές συστήματος όπως: `RREG` που καθορίζει τα περιεχόμενα των καταχωρητών του επεξεργαστή μετά από `SYS`

### V10
Έκδοση V10 για το C65

* Δεν ολοκληρώθηκε ποτέ πλήρως, παρουσίαζε πολλά σφάλματα. 
* Παρόμοιες λειτουργίες με την έκδοση 7.0
* Χρήση της λειτουργίας genlock: `GENLOCK`
* Εντολές για το ποντίκι: `MOUSE, RMOUSE`
* Εμφάνιση αρχείου SEQ στην οθόνη: `TYPE`
* Αναζήτηση/αντικατάσταση στον πηγαίο κώδικα: `FIND/CHANGE`
* Διαχείριση μνήμης με εκτεταμένη λειτουργία `FRE` για τον προσδιορισμό της ελεύθερης μνήμης
* Ορισμός χρωμάτων: `PALETTE`
* Εντολή για λειτουργίες DMA: `DMA`
* Εντολές που είχαν οριστεί αλλά δεν είχαν υλοποιηθεί: `PAINT, PASTE, CUT, LOCATE, SCALE, WIDTH, QUIT, OFF, SET, VIEWPORT`

## Παραπομπές


Κατηγορία:BASIC
Κατηγορία:Commodore