probando el resaltado de sintaxis
ORG &8000
start:
LD HL, &C000 ; Inicio de la RAM de video
LD BC, 256 ; Contador
loop:
LD (HL), &AA ; Escribir patrón
INC HL
DEC BC
JP NZ, loop
RET
probando el resaltado de sintaxis
ORG &8000
start:
LD HL, &C000 ; Inicio de la RAM de video
LD BC, 256 ; Contador
loop:
LD (HL), &AA ; Escribir patrón
INC HL
DEC BC
JP NZ, loop
RET
;;
;; Este programa demuestra cómo convertir el número en HL a
;; ASCII y mostrarlo en pantalla.
;;
; Establesca HL en 0xffff
ld hl, 0
dec hl
; Mostrar el valor
call DispHLhex
halt
;
; Muestra un número de 16 u 8 bits en hexadecimal.
; El valor a mostrar debe almacenarse en HL
;
DispHLhex:
; mostrar "0x" como prefijo
ld a, '0'
out(1),a
ld a, 'x'
out(1),a
; Mostrar el valor alto
ld c,h
call OutHex8
; Mostrar el valor bajo
ld c,l
call OutHex8
; Volver al llamador
ret
;
; Muestra el valor hexadecimal del número de 8 bits almacenado en 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
; Mostrar el valor.
out (1),a
ret
¡Qué bien! Va a ser de mucha ayuda.
Sí, se ve bien. No estoy seguro de si está completo, pero al menos parece que hice algo bien: tuve que crear y definir las reglas de resaltado a mano
Vale, así que tal vez tengamos que echar un vistazo para completar y añadir información (registros / etiquetas / valores)…
¿Puedes compartir cómo lo haces para que podamos ayudarte?
Sí, claro.
Discourse usa componentes —básicamente, scripts en segundo plano— que se adjuntan a los Temas (por eso alguna funcionalidad puede funcionar en un tema y en otro no).
Los resaltadores de sintaxis interceptan el texto plano antes de renderizarlo e inyectan CSS.
Ahora bien, hay cierta ambigüedad sobre cómo funciona exactamente un resaltador personalizado: el z80 no forma parte del grupo principal de lenguajes que soporta el foro, por lo que no se puede elegir al citar código; se supone que el bloque de código debería empezar con " ```z80" (dos espacios, tres comillas invertidas), pero ¿lo he visto funcionar sin esa declaración? La verdad es que no estoy muy seguro de esto.
De todos modos, aquí está lo que se añadió al código del foro:
EDITO: pensándolo bien, si quieres echarle un vistazo te lo puedo enviar; mejor no ponerlo aquí públicamente por razones de seguridad.
Qué raro que RRA y DAA no estén resaltados en tu ejemplo… Forman parte de tus palabras clave. ¿O tal vez solo copiaste y pegaste el resultado en tu mensaje? Eso lo explicaría.
Para integrar completamente el lenguaje z80, encontré este enlace: Configure which programming languages are available for syntax highlighting - Site Management - Discourse Meta
Y Google Gemini propuso esto para 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(’;’, ‘$’), // Comentarios que empiezan con un punto y coma
hljs.C_NUMBER_MODE, // Números estándar
{
className: ‘number’,
begin: ‘\\b[0-9a-fA-F]+h\\b’ // Soporte para el formato hexadecimal “0ffh”
},
{
className: ‘symbol’,
begin: ‘^[a-zA-Z_][a-zA-Z0-9_]*:’ // Detección de etiquetas (ej: LOOP:) },
hljs.QUOTE_STRING_MODE // Cadenas de texto ]
};
};
Lo conseguí antes de que desaparezca ![]()
Sí, me quedé trabado porque las instancias de RRA y DDA no se resaltan. Creo que deberían, pero…
Le echaré un vistazo a tus patrones, gracias.
Tal vez esté usando x86asm en lugar de z80… Eso podría explicar por qué funciona sin el ‘’'z80
Ah sí, podría ser — aunque creo que sí vi que lo etiquetaba como ‘z80’ al editarlo. Ve a saber ¯\_(ツ)_/¯
Acabo de publicar algunos fragmentos de código de Z80 y me di cuenta de que los resaltadores de sintaxis disponibles no incluyen el lenguaje ensamblador Zilog/Z80. Al final seleccioné avrasm entre las opciones disponibles, ya que parece ser bastante similar, pero no todas las instrucciones se resaltaron de manera precisa, prácticamente como en tu fragmento de prueba de arriba.
¿Enlace?
Vale, le echaré un vistazo cuando termine con las tarjetas superpuestas de BASIC y del firmware. No lo volví a intentar después del push inicial, pero ahora conozco mejor el funcionamiento interno del foro, así que tal vez pueda hacer algo.