Λίγη θεωρία

Τα cartridge για τον commodore 64 ήταν πάντα ο πιο άμεσος τρόπος να έχει πρόσβαση κανείς στα προγράμματα του commodore 64. Αντί τα δεδομένα να μεταφέρονται από την κασσέτα, την δισκέτα ή οποιοδήποτε άλλο μέσο στην μνήμη RAM του υπολογιστή, γίνονται άμεσα προσβάσιμα αντικαθιστώντας μια περιοχή της μνήμης με τα περιεχόμενα της μνήμης ROM που βρίσκεται στο cartridge. Ο πυρήνας του c64 (kernal) αναλαμβάνει να εκκινήσει το πρόγραμμα αντί του μεταγλωττιστή της basic, όπως γίνεται αν δεν έχει συνδεθεί cartridge στο πίσω μέρος του υπολογιστή. Ο kernal κατά την εκκίνηση ελέγχει τις γραμμές /GAME και /EXROM (pin 8 και 9 της θύρας επέκτασης). Οι γραμμές αυτές όταν δεν είναι συνδεδεμένο cartridge βρίσκονται σε τάση 5V (λογικό 1). Για να μεταβούν σε λογικό 0, θα πρέπει απλά να συνδεθούν με την γραμμή της γείωσης, που βρίσκεται στις 4 ακριανές ακίδες (1,22,A και Ζ) των ακίδων της θύρας επέκτασης. Βάση της κατάστασης αυτών των γραμμών στον παρακάτω πίνακα ο υπολογιστής αντιλαμβάνεται τι είδους cartridge έχει συνδεθεί.

/GAME /EXROM Τύπος cartridge
1 1 Δεν υπάρχει συνδεδεμένο cartridge
1 0 Normal 8Kb cartridge (θέση μνήμης $8000-$9FFF)
0 1 Ultimax 16kB cartridge (θέση μνήμης $8000-$9FFF τα πρώτα 8Kb και $E000-$FFFF τα υπόλοιπα 8Kb)
0 0 Normal 16kB cartridge (θέση μνήμης $8000-$BFFF)

Το μέγεθος του προγράμματος στο cartridge είναι 8Kb ή 16Kb. Ωστόσο υπάρχουν cartridge που φτάνουν τα 512Kb μνήμης. Η κατασκευή τέτοιων cartridge είναι πιο περίπλοκη και βασίζεται σε μια τεχνική που λέγεται bank switching κατά την οποία διαφορετικά κομάτια μνήμης 8 ή και 16Kb ενεργοποιούνται κατά την διάρκεια εκτέλεσης του προγράμματος από το cartridge. Την διαδικασία αυτή αναλαμβάνει ειδικό κύκλωμα πάνω στο cartridge ενώ ο υπολογιστής βλέπει ότι έχει συνδεθεί ένα cartridge 8Kb χωρίς να γνωρίζει εάν αυτό περιέχει πολλά κομάτια των 8Kb που εναλλάσονται κατά την ροή του προγράμματος.

Τι χρειάζεται για να φτιάξεις το δικό σου cartridge 8 ή 16Kb

Για να φτιάξετε το δικό σας cartridge χρειάζεστε :
1) μια πλακέτα cartridge η οποία να δέχεται chip eprom 16Kb (όπως datel cartridge development kit)
2) ένα προγραμματιστή μνημών eprom
3) το chip της eprom (όπως 27128 ή 27c128 διαφόρων κατασκευαστών όπως intel, atmel, microchip, κ.α.)
4) μια συσκευή με λάμπα υπεριώδους, για το σβήσιμο του περιεχομένου της μνήμης αν κάτι δεν πάει καλά στον προγραμματισμό.
5) ένα πρόγραμμα editor δεξαεξαδικής μορφής (όπως hexedit, HxD editor , κλπ) με τη βοήθεια του οποίου μπορούν να μετατραπούν τα αρχεία crt σε δυαδική μορφή bin
Πληροφορίες για το datel cartridge development kit και τον προγραμματιστή eprommer64 για τον c64 μπορείτε να βρείτε σε αυτό τον σύνδεσμο
Για να γράψετε τα δεδομένα στην μνήμη eprom αυτά θα πρέπει να είναι σε format αρχείου με κατάλυξη .bin. Για cartridge 8kb το αρχείο πρέπει να έχει μέγεθος 8192 bytes ακριβώς, ενώ για 16Kb 16384 bytes. Στο παρακάτω site υπάρχει μια καλά οργανωμένη συλλογή από αρχεία cartridge σε μορφή crt :
http://www.mayhem64.co.uk/main.htm
Στην παρακάτω εικόνα φαίνονται τα εργαλεία κατασκευής ενός cartridge. Ο προγραμματιστής είναι ο eprommer64 για τον commodore 64. ο προγραμματιστής eprommer64, τσιπ eprom και ολοκληρωμένο cartridge 16Kb
Παρατηρείτε ότι στην πάνω πλευρά του cartridge έχει ανοιχθεί ένα παράθυρο μέσα από το οποίο διακρίνεται η μνήμη eprom. Ο λόγος είναι ότι το τσιπ έχει τοποθετηθεί σε βάση, και στο σημείο εκείνο δεν θα μπορούσε να κλήσει αλλιώς το καπάκι λόγω ύψους του εξαρτήματος. Αν δεν χρησιμοποιούνταν βάση θα μπορούσε η πλακέτα να χωρέσει στην θήκη του cartridge. Στην περίπτωση αυτή όμως για να αλλάξει το περιεχόμενο της eprom, θα πρέπει να αποκολληθεί το chip από την πλακέτα, κάτι που δεν είναι καθόλου πρακτικό.