Machinetaal vraagje

Door Michiel van der...

Supporter (1)

afbeelding van Michiel van der Leeuw

11-11-2022, 14:39

Ik heb mijn bejaarde msx2 (een Philips 8250) weer eens van stal gehaald en ben nu wat aan het experimenteren met machinetaal. Ik loop tegen een raar probleempje op: om een karakter op het scherm af te drukken zou je moeten gebruiken:
LD A, (ascii-waarde van het karakter)
call &H00A2

Dit heeft echter geen effect. Ik krijg alleen maar een lege regel te zien, ongeacht de ascii-waarde.

Wat wel werkt is:
LD E, (ascii-waarde van het karakter)
LD C,2
CALL &H0005

Waarom werkt die call naar &H00A2 (alias CHPUT) niet? Ik werk met MSXDOS 2.20, maar onder basic is het hetzelfde verhaal.

Michiel

Aangemeld of registreer om reacties te plaatsen

Van Gesture68

Supporter (11)

afbeelding van Gesture68

15-11-2022, 12:28

Weet je zeker dat je &h0005 aanroept? Dit lijkt nergens naar te verwijzen... (of is dit een MSXDOS 2.20 routine). De call naar &H00A2 zou moeten werken, ervan uitgaande dat je huidige cursor op een 'logische' positie staat

Van Gesture68

Supporter (11)

afbeelding van Gesture68

15-11-2022, 12:30

Of gebruik je LD A,(&h41) voor bijvoorbeeld 'A' ? De haakjes moeten wel weg bij de LD functie...: LD A,&h41

Van MagicBox

Master (209)

afbeelding van MagicBox

12-12-2022, 16:48

Hallo medelander,

Die call &H00A2 print een character op de huidige positie op het scherm. Deze positie kun je met call &H00C6 (dacht ik) instellen, of je past direct de rij en kolom waarde aan in het systeem geheugen. Een beschrijving van deze calls en van de systeem locaties kun je hier vinden:

BIOS: https://map.grauw.nl/resources/msxbios.php
Systeemgeheugen: https://map.grauw.nl/resources/msxsystemvars.php