Code: Alles auswählen
procedure TextStr;
begin
asm db $5,'Hallo' { Längenbyte und der Text selbst }
end;
Sowas kommt mir sehr bekannt vor, bei Turbo-Pascal, hat man nur 64KB für Konstanten zu Verfügung.
Das Programm selbst, konnte den ganzen Heap nutzen.
Ich hatte mal einen ganze Font so abgespeichert:
Code: Alles auswählen
procedure CharTab; assembler;
asm
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 126, 129, 165, 129, 129, 189, 153, 129, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
............
Der Zugriff habe ich dann par ASM gelöst:
Code: Alles auswählen
procedure LoadoldChar; assembler; { Lädt Zeichensatz aus ROM }
asm
push bp
push ds
mov ax, 1130h
mov bh, 02h
int 10h
mov si, bp
mov di, offset CharTab
mov cx, 1792
mov ax, es
mov bx, ds
mov ds, ax
mov es, bx
rep movsw
pop ds
pop bp
end;
Dazumal musste man noch recht basteln.
Die Lösung mit dem Pointer ist auch sehr gut.