Συντάκτης άρθρου:Darth Cotsos
Μάθημα 1ο

Με την ύπαρξη cross compilers για τα περισσότερα Home micros της δεκαετίας του '80 γίνετε πλέον εύκολη η ανάπτυξη εφαρμογών για τα αγαπημένα μας μηχανήματα.Στη σειρά αυτών των άρθρων θα ασχοληθούμε με την εισαγωγή στη C και τους cross compilers Ζ88dk και CC65.
O Z88dk ( www.z88dk.org )όπως έχω αναφέρει και σε προηγούμενο άρθρο είναι ένας C compiler για τους υπολογιστές που στηρίζονται στον Z80A της Zilog ενώ ο CC65 ( www.cc65.org ) αφορά τους υπολογιστές που είναι υλοποιημένοι γύρω από τον 6502 της MOS.Και οι δύο προαναφερόμενοι compilers δεν έχουν κάποιο περιβάλλον ανάπτυξης. Το πρόγραμμα γράφετε σε όποιον editor θέλουμε εμείς και κατόπιν από την γραμμή εντολών δίνουμε την αντίστοιχη εντολή και το πρόγραμμα μας μετατρέπετε σε εκτελέσιμο αρχείο για τον παλιό υπολογιστή μας. Μπορούμε πλέον να το τρέξουμε μέσα από έναν emulator ή και να το μεταφέρουμε κατ' ευθείαν στον παλιό μας υπολογιστή!!!Εδώ για το άρθρα και τα screen shoots θα χρησιμοποιήσω το Notepad2 πού είναι ένας εύχρηστος free program editor.
Το notepad2 μπορείτε να το κατεβάσετε από εδώ http://www.flos-free.../notepad2.html. Στο διαδίκτυο βέβαια μπορείτε να βρείτε και άλλους free editors για να δοκιμάσετε και να διαλέξετε αυτόν που σας ταιριάζει καλύτερα!!!
Για το άρθρο θα υποθέσουμε ότι οι compilers είναι εγκατεστημένοι στο δίσκο C:\ και αναλυτικότερα ο Z88dk στο C:\z88dk\ και ο CC65 στο C:\cc65\
Έτσι για τον Z88dk ο compiler βρίσκετε στο C:\z88dk\bin και για τον cc65 στο c:\cc65\bin. Θα συνιστούσα να βάζετε εκεί και την όποια εργασία δουλεύετε και να την μεταφέρετε αφού έχετε ολοκληρώσει την εφαρμογή σας!!!
Το compile θα γίνετε για τα 2 κυριότερα μηχανήματα της εποχής τον ZX Spectrum και τον Commodore 64.
Η εντολή για τον ZX Spectrum είναι η εξής:
zcc +zx -lndos -lm -create-app program.c όπου program.c το όνομα του source αρχείου.
Τον πηγαίο κώδικα θα τον σώζετε πάντα ως <όνομα αρχείου.c> χωρίς τα <>!!!
Ο compiler αν όλα πάνε καλά θα δημιουργήσει ένα αρχείο TAP με το όνομα a.tap!!! Εσείς μετά του δίνετε ότι όνομα θέλετε κρατώντας πάντα την επέκταση .tap .
Για τον Commodore 64 η αντίστοιχη εντολή είναι:
cl65 program.c και εδώ ισχύουν τα ίδια που είπαμε για τον Spectrum εκτός από το TAP αρχείο!!! Εδώ ο compiler παράγει ένα αρχείο με το ονομα του προγράμματος εδώ πχ θα
παράγει το αρχείο program που είναι και το εκτελέσιμο. Μετονομάστε το σε program.prg και τρέξτε το με τον emulator!!!
Αν κάποιοι θέλουν να το μεταγλωττίσουν σε άλλο σύστημα εκτός από τα δύο προαναφερθέντα για τα μεν συστήματα που έχουν Z80 θα πρέπει να αλλαχθεί η εντολή με:
zcc +cpc -lcpcfs -lmz -create-app -o program adv_a.c -> για Amstrad CPC
zcc +msx -create-app adv_a.c -> για MSX
zcc +zx81 -startup=2 -lm -create-app program.c -> για ZX81 Slow
zcc +zx81 -lm -create-app program.c -> για ZX81 fast
zcc +zx81ansi -lm -startup=4 -lgfx81hr192 -create-app program.c -> για ΖΧ81 High Res (τώρα που το έχουμε... μην το αφήσουμε να πάει χαμένο!!!)
Για τους υπολογιστές που έχουν 6502 η εντολή θα πρέπει να αλλάξει σε:
cl65 -t sys program.c όπου sys το σύστημα για το οποίο θέλουμε να γίνει compile το πρόγραμμα μας!!!!
Έτσι τα συστήματα είναι τα:
apple2 -> Apple II
atari -> Atari 8bit
atmos -> Oric Atmos
c128 -> Commodore 128
c16 -> Commodore 16
cbm510 -> Commodore 510
cbm610 -> Commodore 610
lynx -> Atari Lynx
nes -> Nintendo Entertainment System
pet -> Commodore PET
plus4 -> Commodore Plus/4
supervision -> Supervision Console
vic20 -> Commodore Vic20
Και μετά τα προκαταρκτικά ας περάσουμε στο... δια ταύτα!!!!
Η C είναι μία γλώσσα προγραμματισμού που αναπτύχθηκε για το λειτουργικό σύστημα UNIX την δεκαετία του '70 και βασικός της δημιουργός είναι ο Daniel Ritchie.
Η γενική δομή ενός προγράμματος C είναι η εξής:
α. Οδηγίες προ επεξεργαστή
β. Ορισμοί τύπων
γ. Δηλώσεις συναρτήσεων
δ. Ορισμός της συνάρτησης main (οπού θα βρίσκετε και το βασικό πρόγραμμα)
ε. Ορισμοί συναρτήσεων
Οι οδηγίες προς τον προ επεξεργαστή αφορούν την ενσωμάτωση στο πρόγραμμα βιβλιοθηκών που είναι βασικές στη C αλλά και βιβλιοθήκες ορισμένες από τον προγραμματιστή.
Έτσι μια οδηγία για την ενσωμάτωση μιας βασικής βιβλιοθήκης της C είναι η:
#include
Αυτή λέει στον προ επεξεργαστή να ενσωματώσει τη StandarIO βιβλιοθήκη της C στο πρόγραμμα μας.
Αν θέλαμε να ενσωματώσουμε μια δική μας βιβλιοθήκη θα δίναμε:
#include
Οι τύποι δεδομένων στη C έχουν 2 κατηγορίες. Τους βασικούς και τους σύνθετους.
οι βασικοί τύποι δεδομένων της C είναι οι εξής:
int -> ακέραιος
short -> για μικρούς ακέραιους
long -> για μεγάλους ακέραιους
char -> χαρακτήρας
double -> διπλής ακρίβειας (μέχρι 64 δεκαδικά ψηφία)
float -> πραγματικός
void -> κενό (για συναρτήσεις που δεν επιστρέφουν κάποιο αποτέλεσμα!!!!)
Υπάρχουν βέβαια και άλλοι τύποι απλά εδώ ανέφερα τους βασικούς. Αν χρειαστεί θα αναφερθούμε και στους υπόλοιπους κατά την διάρκεια των άρθρων!!!!
Οι σύνθετοι τύποι παράγονται από τους βασικούς τύπους. Ένας σύνθετος τύπος δηλαδή μπορεί να αποτελείτε από πολλούς βασικούς τύπους.
Ξεκινάμε λοιπόν να γράψουμε το πρώτο μας προγραμματάκι (ΝΑΙ ΤΟ HELLO WORLD ΕΝΟΩ!!!!). Εδώ όμως θα βάλω Silogomania.com!!!!
#include -> Εδώ λέμε στον προ επεξεργαστή να ενσωματώσει την βιβλιοθήκη standard IO (stdio.h) η οποία έχει και τις βασικές εντολές input - output της C.
void main() -> Η main είναι η βασική συνάρτηση στη οποία υπάγετε και το κυρίως πρόγραμμα (O τύπος είναι void αφού δεν επιστρέφει καμία τιμή!!!)
{ -> Η { δηλώνει την αρχή του προγράμματος και έχει την ίδια χρήση όπως η begin της Pascal για όποιους γνωρίζουν. Επίσης δηλώνει και την αρχή συνάρτησης καθώς και εντολών βρόγχου όπως η FOR αλλά και IF!!!!
printf("retrovisions.gr\n"); -> H printf τυπώνει στη οθόνη το αλφαριθμητικό όρισμα που θα της δώσουμε αλλά χρησιμοποιήται και για να τυπώσουμε τιμές μεταβλητών κ.α. Ο κοντρόλ χαρακτήρας \n λέει στον κέρσορα να πάει στη επόμενη γραμμή!!!
} -> Η } αντίθετα από τη { δηλώνει το τέλος του προγράμματος.
Ο Compiler CC65 για τον 6502 δεν δίνει κανένα μήνυμα όταν η διαδικασία είναι επιτυχής!!!
Αντίθετα ο Z88dk βγάζει πολλά μηνύματα... μην τρομάζετε είναι φυσιολογικό!!!!! Αν υπάρξει λάθος θα το καταλάβετε από τα μηνύματα error.
Στα μηνύματα error αναφέρονται επίσης και οι γραμμές στις οποίες εντοπίστηκαν τα errors.
Το προγραμματάκι μας σε C64!!! ξεχωρίζει το μήνυμα retrovisions.gr Η οθόνη δεν καθαρίστηκε γιατί η εντολή είναι διαφορετική για τους 2 compilers οπότε και θα μιλήσουμε σε άλλο μάθημα.
Και στη οθόνη από τον ZX Spectrum!!! και εδώ η οθόνη δεν καθαρίστηκε. Ωστόσο προσέξτε ότι είναι σε 64 στήλες και όχι 32. Αυτό έμεινε από προηγούμενη ενέργεια μου και το άφησα για να σας δείξω ότι με το Z88dk έχουμε και αυτή τη δυνατότητα στον ZX Spectrum!!!
Εδώ θα ήθελα να επισημάνω ότι στη προσπάθεια αυτή συμβουλεύομαι αρκετά βιβλία οπότε όποιος έμπειρος δει κάποιες ομοιότητες ας μη βάλει τις φωνές. Την πλήρη βιβλιογραφία θα την δημοσιεύσω φυσικά στο τέλος!!!
- Δεν βρέθηκαν σχόλια









Σχόλια