Ενα μικρό demo που έφτιαξα, για επίδειξη των δυνατοτήτων που προσφέρονται με την αναβάθμιση HRG στο ΖΧ81. Το πως γίνεται, το αναφέρω αναλυτικά εδώ.
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
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.
Langganan:
Postingan (Atom)