LocoPad, ένας web-based code editor για CPC devs

Γεια σε όλους,

Κάτι πάνω στο οποίο δούλευα, σε συνέχεια της συζήτησης για τα BASIC Hovercards.

Με χαρά σας παρουσιάζω το LocoPad, έναν web-based επεξεργαστή κώδικα, πρόχειρο (scratchpad) και διαδραστικό εργαλείο αναφοράς firmware, φτιαγμένο ειδικά για τη συγγραφή Locomotive BASIC και την ανάπτυξη για τον Amstrad CPC απευθείας στον περιηγητή σας.

Αυτό δημιουργήθηκε αφού ολοκληρώθηκε το μεγαλύτερο μέρος της εργασίας στις εντολές firmware και BASIC για ενσωμάτωση στο φόρουμ.

  • Εκτέλεση με ένα κλικ σε εξομοιωτή CPC: Πατήστε Run in CPC (►) και το LocoPad μεταγλωττίζει αμέσως τα ενεργά αρχεία του έργου σας σε μια εικόνα AMSDOS 40-track .DSK και εκκινεί απευθείας σε έναν εξομοιωμένο Amstrad CPC 6128 (RVMPlayer, όπως ακριβώς στο φόρουμ και στο Wiki) εκτελώντας το πρόγραμμά σας.
  • Άμεση εξαγωγή AMSDOS .DSK & .BAS: Εξαγάγετε τυπικά αρχεία .BAS ή πλήρεις εικόνες δίσκου .DSK πολλαπλών αρχείων, έτοιμα για χρήση.
  • Ενσωματωμένος οδηγός βοήθειας & πλήρης αναφορά CPC (498 σύμβολα):
    • Επιθεωρητής BASIC & Firmware: Περάστε το ποντίκι πάνω από (hover) ή αναζητήστε οποιαδήποτε από τις 187 εντολές Locomotive BASIC ή τα 311 διανύσματα CPC Firmware Jumpblock (&BB00–&BD5D) για να δείτε σε πραγματικό χρόνο τη σύνταξη, τις απαιτήσεις καταχωρητών εισόδου/εξόδου, τους καταχωρητές που επηρεάζονται και πρότυπα κώδικα.
    • Παλέτα υλικού CPC 27 χρωμάτων: Διαδραστικό εργαλείο επιλογής χρωμάτων με γεννήτρια αποσπασμάτων κώδικα PEN, PAPER και INK με 1 κλικ (απλώς επειδή μου αρέσει η ετικέτα στη μονάδα δίσκου του 6128).
  • Διαχείριση έργων πολλαπλών αρχείων: Οργανώστε προγράμματα BASIC πολλαπλών μερών, πίνακες δεδομένων και έγγραφα κειμένου με αυτόματη τοπική αποθήκευση στον περιηγητή και πλευρικές γραμμές με δυνατότητα αλλαγής μεγέθους (Ctrl+B).
  • Διπλή μηχανή επεξεργαστή: Επιλέξτε ανάμεσα σε μια ελαφριά, εξαιρετικά γρήγορη μηχανή CodeMirror 6 (προεπιλογή) ή στον Monaco Editor (τη μηχανή του VS Code).
  • Μόνο τοπικά. Η εργασία σας αποθηκεύεται αυτόματα τοπικά στον αποθηκευτικό χώρο του περιηγητή σας. Τίποτα δεν μεταφορτώνεται πουθενά.

Το LocoPad τρέχει εξ ολοκλήρου από την πλευρά του χρήστη (client-side), είναι ελαφρύ και δεν απαιτεί λογαριασμό:

https://www.cpcwiki.eu/locopad/

Πείτε μου πώς σας φαίνεται, αν θα θέλατε να δείτε κάποια άλλα χαρακτηριστικά, αν υπάρχουν bugs ή αν είναι εντελώς για τα μπάζα.

Ω, αυτό είναι τέλειο! Πάντα ήθελα να έχω κάτι τέτοιο!

Ένα μόνο πράγμα: τα εικονίδια λήψης/ανέβασματος φαίνεται να έχουν αντιστραφεί. Αυτό που περιμένω να είναι η λήψη (download) είναι στην πραγματικότητα το ανέβασμα (upload) και το αντίστροφο.

Ευχαριστώ για τα σχόλια :slight_smile: Ειλικρινά δεν ήξερα αν θα ήταν χρήσιμο σε κάποιον. Το BASin φαίνεται να είναι δημοφιλές στην κοινότητα του Speccy και, παρόλο που είναι φυσικά ένα πολύ πιο προηγμένο πρόγραμμα, του λείπουν κάποιες ευκολίες και η απλή ροή εργασίας.

Όσον αφορά τα κουμπιά — δεν είναι μεταφόρτωση/λήψη (upload/download), αλλά εισαγωγή/εξαγωγή (import/export), οπότε η λογική είναι σωστή, αλλά αν ο κόσμος τα θέλει ανάποδα, είναι δουλειά 10 δευτερολέπτων :smiley:

Το έπιασα… Εξαρτάται, λοιπόν, από το τι θεωρεί κανείς ως προορισμό και τι ως πηγή. Μπορώ να ζήσω με αυτό :wink: Κανένα πρόβλημα.

Δεν είμαι σίγουρος πόσο συχνά θα το χρησιμοποιώ, αλλά σίγουρα θα το χρειάζομαι πού και πού. Φαίνεται εξαιρετικό για να δοκιμάζεις γρήγορα πράγματα και να μπορείς να κάνεις αντιγραφή/επικόλληση ή αποθήκευση.

Και όταν ανέπτυσσα το παιχνίδι μου, το Cameronne, θα με είχε βοηθήσει πάρα πολύ στο refactoring που έπρεπε να κάνω κάθε τόσο..

Stin υgeiá mas. Loipón, an to chrēsimopoiēseis kanoniká, pes mou an ētheles kápoto neo stoicheio kai tha prostpathēsō na to ylopoiēsō (chōrís na yposchomai kátis)!

Excellently!

Και το έργο υποδοχής για να το δοκιμάσεις γρήγορα.

Το παράδειγμα έργου φαίνεται να τρέχει τόσο γρήγορα. Είναι επιταχυνόμενη η εξομοίωση;

Μια λεπτομέρεια: εφόσον απαιτείται ένα κλικ στο κουμπί «Play», θα ήταν καλύτερο ο εξομοιωτής να ξεκινά αμέσως χωρίς να εμφανίζει τη διαφήμιση του «RVM» και να απαιτεί το συνηθισμένο κλικ.

(Και, τώρα που το σκέφτομαι, το ίδιο συμβαίνει και σε άλλες ιστοσελίδες όπου εμφανίζεται ο εξομοιωτής.)

Μικρό σφάλμα (bug): αν έχετε τρέξει τον εξομοιωτή και μετά κάνετε κλικ στο χ για να τον κλείσετε, ο εξομοιωτής συνεχίζει να τρέχει και διατηρεί την εστίαση πληκτρολογίου. Μπορείτε π.χ. να πληκτρολογήσετε γράμματα, μετά να πατήσετε το πάνω ή το κάτω βέλος και να ακούσετε τον μπιπ ήχο του CPC.

Επίσης, αν πατήσετε ξανά το κουμπί «αναπαραγωγή» (play), φαίνεται σαν να ξεκινάει άλλος ένας εξομοιωτής, καθώς ο φόρτος του συστήματος αυξάνεται ακόμα περισσότερο.

Ω, αυτό είναι πραγματικά πολύ ωραίο δυνατότητα!

Και που να έβλεπες το πρόσωπό μου όταν ανακάλυψα ότι το κουμπί εκτέλεσης μεταγλωττίζει τον κώδικά σου και εκκινεί τον εξομοιωτή… :joy:

Όσον αφορά τα κουμπιά εισαγωγής/εξαγωγής, πιστεύω ότι είναι όντως ανάποδα και θα προσέθετα ότι μπορείς να δεις πως το εικονίδιο για τη «Λήψη τυπικού αρχείου ASCII .BAS» έχει το βέλος να δείχνει προς τα πάνω, ενώ το ίδιο εικονίδιο χρησιμοποιείται εδώ στο φόρουμ με την αντίθετη λειτουργία (το κουμπί Κοινοποίηση).

Επομένως, η κοινοποίηση και η εισαγωγή είναι το ίδιο πράγμα, στέλνεις πράγματα από τον υπολογιστή σου σε άλλα προγράμματα, ενώ η εξαγωγή/λήψη… κατεβάζει τα αρχεία στον υπολογιστή σου και θα έπρεπε να έχει το εικονίδιο με το βέλος να δείχνει προς τα κάτω.

Στην υγειά σου,

Rob

Όχι, τρέχει ακριβώς όπως είναι από τη μάνα του!

Έτσι λειτουργεί το RVM Player, δεν έχω επιλογή να το παραλείψω αυτό (…νομίζω;

Ενδιαφέρον, δεν είχα τέτοια συμπεριφορά. Ποιον περιηγητή χρησιμοποιείς;

Ναι, την πρώτη φορά που το έκανα να δουλέψει ένιωσα κι εγώ τόσο ωραία!

Ναι, ναι, εντάξει, εντάξει. Θα αλλάξω τη θέση των κουμπιών και τη διατύπωση :joy:

Τέλεια.

ΥΓ. Πιστεύεις ότι θα ήταν καλύτερα οι αριθμοί γραμμών στα αριστερά να έχουν ελαφρώς διαφορετικό χρώμα από το κύριο κείμενο; Επειδή φαίνεται σαν να γίνονται ένα με αυτό, αφού βρίσκονται δίπλα στους βασικούς αριθμούς γραμμών.

  • Διορθώθηκε το πρόβλημα κατά την έξοδο από τον εξομοιωτή (πραγματικά χαζό εκ μέρους μου· καθάρισα το <div>, αλλά δεν επιβεβαίωσα ότι ο εξομοιωτής σταμάτησε να τρέχει στο παρασκήνιο…)

  • Αντιστράφηκαν τα κουμπιά εισαγωγής/εξαγωγής (ορίστε, το διόρθωσα)

  • Προσαρμόστηκαν οι αριθμοί γραμμών στο περιθώριο (και παράλληλα έβαλα χρωματική κωδικοποίηση στους αριθμούς γραμμών της BASIC):

Συνεχίστε να στέλνετε προτάσεις :slight_smile:

Ωραίο πάνελ προτιμήσεων με τις κατάλληλες επιλογές.

Δεν θυμάμαι ποια ήταν η προεπιλεγμένη γραμματοσειρά

Retro CRT Monitor Effects:

Kαλό που επιτρέπεται το απλό, βασικό pixel rendering.

Mια πολύ πιστή εξομοίωση οθόνης είναι πράγματι καλή για πολύ προχωρημένες εργασίες γραφικών, όπως το Sylvestre Amstrad CPC - Technique graphique (7-épaisseur & luminosité des pixels). Αλλά για τις περισσότερες άλλες εργασίες, συμπεριλαμβανομένης της ανάπτυξης σε BASIC, θεωρώ ότι τα εφέ οθόνης είναι εντελώς άχρηστα και αποτελούν εμπόδιο.

Όμως… φαίνεται να αγνοείται; Ο εξομοιωτής ξεκινά πάντα με τα εφέ ενεργοποιημένα.

Aυτός ο ιστότοπος γίνεται όλο και καλύτερος.

Τι φανταστική δυνατότητα!

Προσπάθησα να το κρατήσω απλό· νομίζω ότι η τρέχουσα υλοποίηση είναι ξεκούραστη στο μάτι, ααακριβώς όσο πρέπει.

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

Σε ευχαριστούμε πολύ :slight_smile:

Eυχαριστώ πολύ για το εργαλείο. Είναι απίστευτα διασκεδαστικό!!

Ευχαριστώ — και καλώς ήρθες!

Ωραία προσπάθεια @Gryzor ! :+1:
Από όσο έχω δει, πρόκειται για ένα ήδη πολύ ώριμο project!
Κατά τη γνώμη μου (IMO) μπορεί να λείπει μια σημαντική διάκριση: BASIC 1.0 έναντι BASIC 1.1.
Θα μπορούσε να είναι χρήσιμο να επισημανθεί ποιες εντολές δεν είναι διαθέσιμες στο Amstrad CPC 464. Σημείωσε ότι δεν σου ζητάω να προσθέσεις υποστήριξη για BASIC 1.0· θα ήθελα απλώς οι χρήστες να ενημερώνονται για τυχόν απαιτήσεις που είναι ειδικές για τη BASIC 1.1. :stuck_out_tongue:
Και πάλι, πολύ ωραία δουλειά, συγχαρητήρια!

Aaaaargh!!! Κι ήμουν έτοιμος να κάνω push την επόμενη έκδοση! :grinning_face_with_smiling_eyes:

Αυτή είναι μια πολύ εύστοχη πρόταση, και ναι, νομίζω ότι μπορώ να το κάνω εύκολα επειδή η πληροφορία υπάρχει ήδη εκεί.

Οπότε, φιλτράροντας τα json αρχεία μου, έχω αυτές τις εντολές ως επισημασμένες για τη 1.1:

FRAME, FILL, SWAP, ROUND, MASK, GRAPHICS PEN, GRAPHICS PAPER, DEC$, COPYCHR$, CURSOR, REMAIN, DERR, WINDOW SWAP, καθώς και τις τρεις δηλώσεις ON BREAK (CONT, GOSUB, STOP). Ελπίζω να μην ξεχνάω κάτι;

Μπορούμε να δοκιμάσουμε να προσθέσουμε επίγνωση συμβατότητας γι’ αυτό στο LocoPad:

  1. Linter CPC 464 Hints: Αν χρησιμοποιείς οποιαδήποτε από αυτές τις 16 οδηγίες, το linter εμφανίζει μια υπόδειξη συμβατότητας με την εναλλακτική λύση (workaround) για το εργοστασιακό 464 (π.χ. προτείνοντας το CALL &BD19 για το FRAME, ή ανταλλαγή μεταβλητών για το SWAP).
  2. Inspector Badges: Το Symbol Inspector και το dock μπορούν να επισημαίνουν κάτι όπως [BASIC 1.1 Only (CPC 664/6128)] και να παρέχουν την αντίστοιχη σύνταξη για το 464 όπου υποστηρίζεται.

Αυτό είναι απλά δύο ακόμα συνθήκες για προσθήκη - όχι, για την ακρίβεια μία. Πρέπει επίσης να φτιάξω έναν πίνακα αντιστοιχιών, φυσικά. Υπάρχει κάποια πηγή γι’ αυτό;

Σε ευχαριστώ για τα καλά σου λόγια, σημαίνουν πολλά ερχόμενα από εσένα!