CPC-Firmware-Hovercards

Hallo zusammen!

Ich weiß nicht, ob das für euch wirklich nützlich ist, aber für mich war es ein kleines, spaßiges Projekt.

Ich habe gerade ein Beitrags-Referenz-Tool für Firmware im gesamten Forum aktiviert. Wenn du Maschinencode oder Hardware-Routinen postest und mit dem Mauszeiger über einen Firmware-Vektor, einen Kernel-Neustart, ein CRTC-Register usw. fährst, erscheint jetzt eine Karte mit Informationen zu Eingaben, Ausgaben, veränderten Registern und einer kurzen Zusammenfassung der Funktion.

Das funktioniert im normalen Text, in Inline-Code und in Code-Blöcken.

Dafür habe ich den Firmware Guide von Bob Taylor und Thomas Defoe in das JSON-Format konvertiert:
cpc-glossary.json (112,5 KB) und der Forum-Renderer liest die Werte aus, wenn er einen Eintrag (aus einer Liste von 311) in einem Beitrag erkennt, den du gerade schreibst.

Fahre einfach mit dem Mauszeiger über die Vektoren in diesen Ausschnitten, um es in Aktion zu sehen:

Inline-Code:

; Wait for frame flyback to avoid screen snow
call &BD19 ; MC WAIT FLYBACK

; Set border ink to bright white
ld b, 26
ld c, b
call &BC38 ; SCR SET BORDER
ret

Formatierte Blöcke:

; Switch to 320x200 4-colour mode
ld a, 1
call &BC0E       ; SCR SET MODE

; Print ASCII character
ld a, 65         ; 'A'
call &BB5A       ; TXT OUTPUT
ret
; Query attached joystick directions and fire buttons
call &BB24       ; KM GET JOYSTICK
; H = Joystick 0, L = Joystick 1

Feedback jeder Art ist mehr als willkommen – ihr könnt es natürlich auch komplett zerpflücken!

Oh, das ist ein tolles Feature!

Lass mich mal versuchen…

CALL &BB18

CALL &BB18

CALL &BB18

Erinnert sich noch jemand an CALL &BA0A? Dasjenige, das senkrechte Striche über den gesamten Bildschirm gelegt hat? War das ein ungewollter Effekt, weil man mitten in eine Routine gesprungen ist?

Edit: Ich bin wirklich beeindruckt, dass das sogar beim Zitieren oder innerhalb eines Code-Blocks funktioniert!

Es hat ein Weilchen gedauert, das zu beheben, aber ich bin zufrieden damit, wie es jetzt funktioniert (die Erstversion funktionierte nur außerhalb von Code-Blocks, weil Syntax-Highlighting eben auch in Code-Blocks greift).

Ich hatte überlegt, dasselbe auch für BASIC zu machen, aber das würde sich mit natürlicher Sprache überschneiden.

Das ist EXTREM cool!

Viel besser, als jedes Mal nachschlagen zu müssen, was jeder Sprungblock macht.

Ah, das freut mich wirklich sehr zu hören. Da ich selbst kein Entwickler bin, hatte ich keine Ahnung, ob das nützlich sein würde oder nur eine nette Spielerei – wie gesagt, es hat einfach Spaß gemacht, ein bisschen mit den Forum-Funktionen herumzuprobieren :slight_smile:

Wenn du Ideen hast, wie man es noch besser machen kann, lass es mich wissen!

Oh, das ist ja genial. Ich liebe es. Tolle Idee!

Vielleicht innerhalb von Code-Blöcken?

Macht es bereits, es sei denn, wir meinen verschiedene Dinge?

10 PRINT "HELLO"
20 GOTO 10

Schlüsselwörter von BASIC erhalten Hinweise in Code-Blöcken, ist das gemeint, glaube ich?

Ahh, du meintest BASIC, alles klar. Ja, das wäre machbar.

Mein erstes Hindernis ist: Was ist das Ausgangsmaterial? Es war ziemlich einfach, das Firmware-Handbuch in ein strukturiertes Dokument umzuwandeln, wie du im ersten Beitrag sehen kannst, aber was nutzen wir als Input für BASIC?

Bearbeitung: Selbst Codeblöcke würden Probleme bereiten, da selbst Assembler-Blöcke meist Wörter in natürlicher Sprache enthalten, die zufällig BASIC-Schlüsselwörter sind.

Das könnte man lösen, indem man das benutzerdefinierte Element verwendet, wenn Leute BASIC-Listings hinzufügen möchten, wie:

10 MODE 1: CALL &BC0E
20 SOUND 1, 478, 50

(beachte, dass dies ein BASIC-Codeblock ist).

Das würde jedoch voraussetzen, dass die Leute darauf achten, den Code korrekt als BASIC zu kennzeichnen.

Ich habe die BASIC-Codeblöcke eingerichtet, als ich das automatische Syntax-Highlighting gemacht habe, und theoretisch läuft das automatisch. Es ist allerdings nicht gut getestet – jedenfalls nicht von mir.

Erledigt!

Es wäre gut, wenn du dasselbe im Wiki selbst machst. Es gibt mindestens eine Erweiterung, von der du dich inspirieren lassen könntest – Extension:Lingo - MediaWiki.

Ich habe tatsächlich selbst schon darüber nachgedacht, weil der zugrundeliegende Mechanismus sich so ähnlich ist, dass man sogar Code wiederverwenden könnte. Aber gibt es im Wiki überhaupt genug Code, um das zu rechtfertigen?