Λοιπόοοον, μετά τα Firmware Hovercards και κατόπιν πρότασης του @Devlin, προχώρησα και υλοποίησα παρόμοια hovercards για τις λέξεις-κλειδιά της BASIC!
Λόγω της ομοιότητάς τους με τη φυσική γλώσσα, έπρεπε να τα περιορίσω μόνο σε blocks κώδικα:
10 MODE 1: BORDER 0: CLS
20 INK 0, 0: INK 1, 26: INK 2, 6
30 ENV 1, 5, 1, 5: SOUND 1, 239, 50, 12, 1
40 ORIGIN 320, 200: DEG
50 FOR a = 0 TO 345 STEP 15
60 CALL &BD19: REM Sync to vertical flyback
70 DRAWR 100 * COS(a), 80 * SIN(a), 1
80 MOVER -100 * COS(a), -80 * SIN(a)
90 NEXT a
100 LOCATE 1, 24: PRINT "Press any key to reset palette...";
110 CALL &BB18: REM Wait for keypress
120 CALL &BC02: REM Reset inks to defaults
Τα-ντάααα!
Για να λειτουργήσει αυτό, όμως, έπρεπε επίσης να βεβαιωθώ ότι δουλεύει μόνο σε blocks κώδικα BASIC. Και παρόλο που έχω προσπαθήσει να κάνω το σύστημα του φόρουμ να αναγνωρίζει αυτόματα τη BASIC σε προμορφοποιημένο κείμενο, αυτό δεν λειτουργεί πάντα (θα πρέπει να το τακτοποιήσω κάποια στιγμή). Οπότε, βεβαιώσου ότι επιλέγεις BASIC όταν εισάγεις ένα πρόγραμμα BASIC:
Αυτά κι αυτά.
Τα σχόλιά σας είναι πάντα ευπρόσδεκτα!
Υ.Γ.: Αυτό ήταν πολύ πιο εύκολο να γίνει από όσο αρχικά νόμιζα, χάρη στη δουλειά που είχε ήδη γίνει στον FW parser και στα blocks κώδικα BASIC. Παρόλα αυτά, το μεγαλύτερο εμπόδιο ήταν το scraping των εντολών της BASIC από το ίδιο το wiki, λόγω της προστασίας anti-bot ![]()
Υ.Γ.2: Πηγές που χρησιμοποιήθηκαν για τη σύνταξη του οδηγού της BASIC:
- Locomotive BASIC Reference Manual (Χρησιμοποιήθηκε για την ακριβή σύνταξη των εντολών, τις παρενθέσεις παραμέτρων και τις διαφορές μεταξύ εκδόσεων (BASIC 1.0 vs 1.1).
- AMSDOS Firmware & Reference Manual (Soft 158): Χρησιμοποιήθηκε για τις 13 ενσωματωμένες εντολές δίσκου Resident System Extension (|), την αλλαγή drive και τις παραμέτρους σύνταξης.
- CPCWiki Locomotive BASIC Category: Τεκμηρίωση και πίνακες ROM token που χρησιμοποιήθηκαν για την επαλήθευση εντολών ειδικών περιπτώσεων (όπως
COPYCHR$καιWINDOW SWAP) και τις αλληλεπιδράσεις με τους καταχωρητές υλικού (hardware registers).
…τροφοδοτήθηκαν στο Gemini, το οποίο έβγαλε το json που χρειαζόταν για τον parser.
