Δοκιμή συντακτικού z80

δοκιμή επισήμανσης σύνταξης

ORG &8000

start:
    LD HL, &C000        ; Έναρξη Video RAM
    LD BC, 256          ; Μετρητής
loop:
    LD (HL), &AA        ; Εγγραφή μοτίβου
    INC HL
    DEC BC
    JP NZ, loop
    RET
;;
;; Αυτό το πρόγραμμα επιδεικνύει τη μετατροπή του αριθμού στον καταχωρητή HL σε
;; ASCII και την έξοδό του.
;;

; Ορισμός του HL σε 0xffff
ld hl, 0
dec hl

; Εμφάνιση της τιμής
call DispHLhex
halt

;
; Εμφάνιση ενός δεκαεξαδικού αριθμού 16- ή 8-bit.
; Η τιμή προς εμφάνιση πρέπει να είναι αποθηκευμένη στον HL
;
DispHLhex:

; Εμφάνιση του "0x" ως προθέματος
ld a, '0'
out(1),a
ld a, 'x'
out(1),a

; Εμφάνιση της υψηλής τιμής (high-value)
ld  c,h
call  OutHex8

; Εμφάνιση της χαμηλής τιμής (low-value)
ld  c,l
call OutHex8

; Επιστροφή στον καλούντα
ret

;
; Έξοδος της δεκαεξαδικής τιμής του 8-bit αριθμού που είναι αποθηκευμένος στον C
;
OutHex8:
ld  a,c
rra
rra
rra
rra
call  Conv
ld  a,c
Conv:
and  $0F
add  a,$90
daa
adc  a,$40
daa
; Εμφάνιση της τιμής.
out (1),a
ret

Ωραία, θα είναι χρήσιμο.

Ναι, φαίνεται ωραίο. Δεν είμαι σίγουρος αν είναι πλήρες, αλλά τουλάχιστον προφανώς κάτι έκανα σωστά — έπρεπε να δημιουργήσω και να ορίσω τους κανόνες επισήμανσης (highlight) με το χέρι

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

Μπορείς να μοιραστείς μαζί μας πώς το κάνεις, ώστε να μπορέσουμε να βοηθήσουμε;

Nαι, αμε.

Το Discourse χρησιμοποιεί components -στην ουσία, background scripts- που προσαρτώνται σε Θέματα (γιο αυτό και κάποια λειτουργικότητα μπορεί να δουλεύει σε ένα θέμα και όχι σε άλλο).

Οι syntax highlighters παρεμβάλλονται στο ανεπεξέργαστο κείμενο πριν την αποτύπωσή του (rendering), εισάγοντας CSS.

Τώρα υπάρχει μια ασαφήεια ως προς το πώς ακριβώς λειτουργεί ένας custom highlighter: η z80 δεν ανήκει στην βασική ομάδα γλωσσών που υποστηρίζει το φόρουμ, επομένως δεν μπορεί να επιλεγεί όταν κάνεις παράθεση κώδικα· θεωρητικά το block κώδικα θα έπρεπε να ξεκινάει με « ```z80» (δύο κενά, τρία backticks), αλλά το έχω δει να δουλεύει και χωρίς αυτή τη δήλωση; Πραγματικά δεν είμαι σίγουρος γι’ αυτό.

Όπως και να 'χει, ορίστε η προσθήκη στον κώδικα του φόρουμ:

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

Περίεργο που τα RRA και DAA δεν είναι επισημασμένα στο δείγμα σου… Είναι μέρος των λέξεων-κλειδιών σου. Ή μήπως απλά έκανες αντιγραφή/επικόλληση το αποτέλεσμα στο μήνυμά σου; Αυτό θα το εξηγούσε.

Για την πλήρη ενσωμάτωση της γλώσσας z80, βρήκα αυτόν τον σύνδεσμο: Configure which programming languages are available for syntax highlighting - Site Management - Discourse Meta

Και το Google Gemini πρότεινε αυτό για το highlightjs z80:

const z80Language = function(hljs) {
return {
name: ‘z80’,
aliases: [‘z80asm’],
case_insensitive: true,
keywords: {
$pattern: ‘[a-zA-Z_][a-zA-Z0-9_]*’,
keyword: 'ld adc add and bit call ccf cp cpd cpdr cpi cpir cpl daa dec di djnz ei ex ’ +
‘exx halt im in ind indr ini inir jp jr ld ldd lddr ldi ldir neg nop or ’ +
‘otdr otir out outd outi pop push res ret reti retn rl rla rlc rlca rld ’ +
‘rr rra rrc rrca rrd rst sbc scf set sla sll sra srl sub xor’,
built_in: ‘a b c d e h l i r ix iy af bc de hl sp ixh ixl iyh iyl’ },
contains: [
hljs.COMMENT(’;’, ‘$’), // Σχόλια που ξεκινάνε με ερωτηματικό
hljs.C_NUMBER_MODE, // Πρότυποι αριθμοί
{
className: ‘number’,
begin: ‘\\b[0-9a-fA-F]+h\\b’ // Υποστήριξη δεκαεξαδικής μορφής “0ffh”
},
{
className: ‘symbol’,
begin: ‘^[a-zA-Z_][a-zA-Z0-9_]*:’ // Ανίχνευση ετικετών (π.χ. LOOP:) },
hljs.QUOTE_STRING_MODE // Συμβολοσειρές ]
};
};

To πρόλαβα πριν εξαφανιστεί :grin:

Nαι, έχω κολλήσει με το ότι τα instances των RRA και DDA δεν επισημαίνονται. Πιστεύω ότι θα έπρεπε, αλλά…

Θα ρίξω μια ματιά στα patterns σου, ευχαριστώ.

Ísws xrisimopoieí x86asm antí gia z80… Autó ísWs eksigeí giatí leitourgeí xōrís to ‘’'z80

Α ναι, μπορεί - αν και νομίζω ότι όντως το είδα να το επισημαίνει ως ‘z80’ κατά την επεξεργασία. Άβυσσος ¯\_(ツ)_/¯

Mόλις δημοσίευσα μερικά αποσπάσματα κώδικα (code-snippets) για Z80 και παρατήρησα ότι οι διαθέσιμοι επισημαντές σύνταξης (syntax highlighters) δεν περιλαμβάνουν τη γλώσσα assembly της Zilog/Z80. Τελικά επέλεξα το avrasm από τις διαθέσιμες επιλογές, καθώς φαίνεται να είναι αρκετά κοντά, αλλά δεν επισημάνθηκαν σωστά όλες οι εντολές, σχεδόν όπως συμβαίνει και στο παραπάνω δοκιμαστικό σου απόσπασμα.

Σύνδεσμος;

Ok, θα ρίξω μια ματιά μόλις τελειώσω με τις κάρτες επισκόπησης (hover cards) του BASIC και του firmware. Δεν το ξαναπροσπάθησα μετά την αρχική προώθηση, αλλά τώρα ξέρω περισσότερα για το πώς λειτουργεί το φόρουμ εσωτερικά, οπότε ίσως μπορέσω να κάνω κάτι.