Miért nem működik az alábbi rutin? Arra tippelek, hogy rosszul próbálom kivenni/visszatenni a stackből/be a paramétereket. Hogyan lehet ezt korrekten megcsinálni? Nézegetem a Z88dk forrásait, de nem jövök rá. Köszönöm! Még egy kérdés: 8 bites (unsigned char) változót így bele lehet tölteni egy 16 bites regiszterbe? Megcsinálja rendesen, vagy 8 bites regisztert kéne megadni? Emiatt nem jó?
#include <stdio.h>
void Set_EXOS_Var(unsigned char Variable, unsigned char Value)
{
#asm
pop BC ; return address
pop HL ; Variable
pop DE ; Value
push DE ; restore stack
push HL
push BC
ld B,1 ; SET mode
ld C,L ; Variable
ld D,E ; Value
rst 30H
defb 16
#endasm
}
void main()
{
printf("Black ");
while (getk() != 13) {};
printf("Purple ");
Set_EXOS_Var(27, 104);
while (getk() != 13) {};
printf("White ");
Set_EXOS_Var(27, 255);
while (getk() != 13) {};
}