ZX Spectrum, Διαβάζοντας την οθόνη

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

Στα μεμονωμένα pixel μας βοηθά η συνάρτηση POINT. H συνάρτηση POINT, μας επιστρέφει την τιμή 1 αν το pixel έχει το χρώμα του ink, ή τη τιμή 0 αν έχει το χρώμα του paper. Δέχεται δύο παραμέτρους εντός παρενθέσεων, που είναι οι συντεταγμένες του pixel, Π.Χ.:

10 CLS
20 PLOT 50,50
30 PRINT AT 2,2;POINT(50,50)
40 PRINT AT 3,2;POINT(60,60)

H SCREEN$ είναι το ακριβώς αντίθετο του PRINT AT, δηλαδή διαβάζει από τις δοθείσες συντεταγμένες ένα χαρακτήρα, οι συντεταγμένες δίνονται μέσα σε παρενθέσεις. Π.Χ.:

10 CLS
20 PRINT AT 5,6;"a"
30 PRINT AT 7,6;SCREEN$(5,6)

Τέλος, αν το περιεχόμενο της οθόνης μας θέλουν να το αποθηκεύσουμε, δίνουμε την παρακάτω εντολή:

SAVE "test" SCREEN$

και τη φορτώνουμε με την εντολή:

LOAD "" CODE  

Bit90, PinOut

Video/Audio/Tape


2, 4, 7, 9: Ground
3: Tape (LOAD)
5: Tape (SAVE)
6: Composite Out
8: Audio Out


Ευχαριστώ τον φίλο μου Geo1977, που διέθεσε αυτό το σπάνιο μηχάνημα για την... "λαπαροσκόπηση"!

ZX Spectrum 128K+3, AV Composite


Γιατί ενώ έχουμε τέλεια εικόνα με το RGB Scart, να θέλουμε και Composite Video? Απλά μπορεί να θέλουμε να συνδέσουμε ένα TFT Monitor, το οποίο δεν έχει είσοδο Scart.

Δεν είναι ότι πιο εύκολο η λύση που προτείνω, μας αποζημιώνει όμως το αποτέλεσμα που αγγίζει το τέλειο! Τα υλικά που χρειαζόμαστε είναι τα εξής:

TEA2014A chip
Πυκνωτές 10μF και 22μF
Αντιστάσεις 100Ωμ, 22Ωμ και 75Ωμ
2 x RCA
1 x 8Pin Din
1 x Αυτοσχέδια επαφή για 2 καλώδια

Κάντε "κλικ" στην εικόνα για μεγέθυνση!

Ενα καλό σημείο για τη σύνδεση του Pin 6 της TEA2000 είναι το δεξί άκρο της διόδου D31, και για το Pin11, το δεξί άκρο της αντίστασης R49. Οι θέσεις τους φαίνονται στο παρακάτω σχεδιάγραμμα.

Κάντε "κλικ" στην εικόνα για μεγέθυνση!
ΠΡΟΣΟΧΗ
Πρέπει ν' αποσυνδέσουμε τον πυκνωτή C24, γιατί αλλιώς θα έχουμε παρεμβολές στο video σήμα από το σήμα του ήχου! Σ' αυτή τη περίπτωση "χάνεται" ο ήχος από το RF σήμα, αλλά είναι μικρό το "κακό". 

Binary Search, δυαδική αναζήτηση


Ο ταχύτερος αλγόριθμος αναζήτησης σε πίνακα είναι της δυαδικής αναζήτησης, εδώ τον έχω "διατυπωμένο" σε μη δομημένη Basic των 8Bit υπολογιστών. Θα πρέπει βέβαια ο πίνακας να είναι ταξινομημένος.

Ξεκινά συγκρίνοντας το κλειδί (key) με την τιμή του στοιχείου που βρίσκεται στο μέσο του πίνακα. Αν είναι ίσα, τότε ο αλγόριθμος τερματίζει επιστρέφοντας τη θέση αυτή. 
Αν το κλειδί είναι μεγαλύτερο, τότε μειώνει το εύρος στο δεξί-μισό τμήμα του προηγούμενου τμήματος που εξέταζε και επαναλαμβάνει το πρώτο βήμα όχι για όλο το πίνακα, αλλά μόνο για το τμήμα του πίνακα που επέλεξε. 
Αν το κλειδί είναι μικρότερο, τότε μειώνει το εύρος στο αριστερό-μισό τμήμα του προηγούμενου τμήματος που εξέταζε και επαναλαμβάνει το πρώτο βήμα όχι για όλο το πίνακα, αλλά μόνο για το τμήμα του πίνακα που επέλεξε.
Μετά από έναν πεπερασμένο αριθμό βημάτων, ο αλγόριθμος είτε θα βρει τη ζητούμενη θέση, είτε θα μειώσει το εύρος της αναζήτησης στο μηδέν, που σημαίνει ότι το κλειδί δεν βρέθηκε στο πίνακα.

100 LET found=0: LET first=1: LET last=length(A)
110 LET mid = INT ((last + first)/2)
120 IF A[mid] = key THEN LET found=1
130 IF A[mid] < key THEN LET last=mid-1
140 IF A[mid] > key THEN LET first=mid+1
150 IF found=0 AND first<=last THEN GOTO 110

Οπου Α τ' όνομα του πίνακα που θέλουμε να εκτελέσουμε  την αναζήτηση, key η μεταβλητή που περιέχει το ζητούμενο και length(A) το μέγεθος του πίνακα Α. 

Αν μετά την εκτέλεση των παραπάνω εντολών η μεταβλητή found έχει την τιμή 1, τότε το περιεχόμενο της μεταβλητής key έχει βρεθεί στη θέση mid, αλλιώς θα έχει τη τιμή 0. 

Αν ο πίνακας είναι ταξινομημένος σε φθίνουσα σειρά, πρέπει να αντιστραφούν οι ανισώσεις στις γραμμές 130 και 140.

ZX81, reverse video

Η εικόνα του ΖΧ81 με λευκό φόντο και μαύρα γράμματα, ίσως είναι κουραστική. Επειδή το σήμα του είναι ασπρόμαυρο, δείχνει πιο όμορφα αν αντιστρέψουμε τα χρώματα, δηλαδή μαύρο φόντο με άσπρα γράμματα!  
Υπάρχει σχετικά εύκολος τρόπος για την "αλλαγή" αυτή! Λειτουργεί σ' όλους του τύπους των τηλεοράσεων και υπάρχει και διακόπτης για "επιστροφή" σε κανονική λειτουργία.

Χρειαζόμαστε τα εξής:
4 x Αντιστάσεις: 100Ωμ, 75Ωμ, 1ΚΩμ και 10ΚΩμ
2 x δίοδοι 1Ν4148
1 x ηλεκτρολυτικό πυκνωτή 10μF
1 x trimmer 4.7 ή 5 KΩμ
1 x τρανζίστορ 2Ν3904
1 x διακόπτη 2 θέσεων
1 x ολοκληρωμένο 74HC86

Κάντε "κλικ" στην εικόνα για μεγέθυνση


 Οι παρακάτω φωτογραφίες είναι από τις δοκιμές, σε TFT 16" TV και CRT 5.5". Στη δεύτερη, εμφανίζεται και η πλακέτα που χωρά μέσα στο υπάρχον modulator.





ZX Spectrum 128K+2 gray, AV composite


Σύμφωνα με το pinout του RGB, υπάρχει έτοιμο το composite σήμα στο pin1. Αυτό όμως δεν είναι τελείως σωστό! Είναι το composite σήμα με συγχωνευμένο το σήμα του ήχου, και με λίγο περισσότερη τάση (δηλαδή τελικά, φαίνεται με πολύ φωτεινά χρώματα και με περιοδικά παράσιτα).


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


Πατήστε "κλικ" στην εικόνα για μεγέθυνση

Για ν' απαλλάξουμε το σήμα video, από το σήμα του ήχου, πρέπει ν' αποσυνδέσουμε τον πυκνωτή C31 από τη πλακέτα του Spectrum, αυτό βέβαια καταργεί τον ήχο από το RF σήμα!

Πατήστε "κλικ" στην εικόνα για μεγέθυνση

ZX_Jim Greece

e-mail: dcotsos2015@gmail.com