[pascal] Zmiana znaczków ASCII

0

Czy może ktoś wie, jak pomodyfikować znaki ASCII? Ja je odnalazłem, tylko nie wiem, od jakiego sektora pamięci zaczyna się strona kodowa 852 (ta powiedzmy, międzynarodowa z polskimi znaczkami). Ja wiem tylko, że zaczyna się pod

mem[$FFFF:2xxxx]

, przy czym to x, to nie wiem, jakie to cyferki, bo zapomniałem, a to jest na innym kompie, nie mam czasu go odpalać.
A program do prezentacji graficznej zawartości pamięci:

uses crt;
var a,b : Word; z : Byte; s : String;
begin
 TextMode(co80*127);
 for a := $ffff to $ffff do for b := $eeee to $ffff do begin
  z := Mem[a:b];
  Write(a, ':', b, '  ', z);
  GotoXY(30, WhereY);
  if (z and 128)<>0 then Write('#') else Write(' ');
  if (z and 64)<>0 then Write('#') else Write(' ');
  if (z and 32)<>0 then Write('#') else Write(' ');
  if (z and 16)<>0 then Write('#') else Write(' ');
  if (z and 8)<>0 then Write('#') else Write(' ');
  if (z and 4)<>0 then Write('#') else Write(' ');
  if (z and 2)<>0 then Write('#') else Write(' ');
  if (z and 1)<>0 then Write('#') else Write(' ');
  Writeln;
 end;
end.

Proszę o pomoc, bo chciałbym zrobić bayerki w swojej textowej nakładce na dosa (TYT).

0

Jakoś nie rozumiem o co dokładnie ci chodzi... [???]
Możesz jaśniej?
Jeżeli to DOS to może potrzebujesz przerwania 10h z parametrami 1130h w AX i 0600h w BX?

0

nie wiem czy to o to ci chodzi ale zobacz. kiedys widzialem krotki tekscik w internecie na ten temat (niestety nie wiem czyjego autorstwa :/) i napisalem artykul na ten temat, masz go pod tym linkiem: http://www.computersun.int.pl/pascal.php?id=O-czcionka

0

ifrost, DZIĘKI WIELKIE :] :] :] :] :] :] :] , bo ja myślałem, że to trzeba grzebać w pamięci, a to po prostu asemblerem. ;) ;)

Ale mam tak:

 type TWzorzecZnaku = array[0..15,0..7] of char;
 procedure SetCharFont(chnum :byte; ch :TWzorzecZnaku);
 var czcionka: array[0..15] of byte; i,j, maska,wynik : byte;
 begin
  for i := 0 to 15 do begin
   maska := 255;
   for j := 0 to 7 do begin
    if ch[i,j]='#' then Inc(wynik, maska);
    maska := maska shr 1;
   end;
   wynik := czcionka[i];
  end;
  asm

   mov cx, 1
   mov al, chnum
   mov dx, ax
   mov bl, 0
   mov bh, 10h
   mov ax, seg czcionka
   mov es, ax
   mov ax, offset czcionka
   mov bp, ax
   mov ax, 1110h
   int 10h

end;
 end;

i mi nie chce chodzić :( pod Windozą XP na fullscreenie, tylko wyświetla, że napotkano niedozwoloną instrukcję. [green] :/ [green] [green] :/ :/

<font color="white">// Jest mały problem z wyświetlaniem Asemblera (cytując podpatrzcie źródło postu, chodzi o to kombinowanie przed i za asmem z <code></code></span>

0
adiblol napisał(a)

i mi nie chce chodzić :( pod Windozą XP na fullscreenie, tylko wyświetla, że napotkano niedozwoloną instrukcję. [green] :/ [green] [green] :/ :/

to piszesz to pod DOSa czy pod Windows XP ??

btw chyba normalne ze predzej kompa odpalisz niz Ci ktos na forum odpowie i to jeszcze w dziale nietuzinkowe tematy :/

0
adiblol napisał(a)

nie chce chodzić :( pod Windozą XP na fullscreenie, tylko wyświetla, że napotkano niedozwoloną instrukcję.

Ja robilem to pod Windows 98 i nie wiem jak to dziala w XP... ale to ze nie dziala wynika zapewne z tego DOS byl nieodlaczna czescia systemow Win 3.1x/9x a w XP calkowiecie z niego zrezygnowano, pojawil sie jedynie emulator DOS'a a on niestety nie jest zbyt dobry :/

0

i mi nie chce chodzić pod Windozą XP na fullscreenie, tylko wyświetla, że napotkano niedozwoloną instrukcję.

pod Win32 chyba przerwań nie da się wywołać...

0
cr0n napisał(a)

pod Win32 chyba przerwań nie da się wywołać...

Nie zupelnie, przerwania sa no bo jak inaczej proces by sie komunikowal z kernelem na i386? W nowszych procesorach i bodaj od Win2k5 uzywane sa syscall (w intelu), sysenter i sysexit (w amd) albo vice verca, nie wiem, ale do czego zmierzam - tych zabawek w 386 nie bylo i Windows (jak i unixy) robil to za pomoca przerwan softwarowych. (Nowsze Windowsy przeszly na szybsze syscalle i sysentery podczas gdy np Linux z tego co wiem, dalej uzywa przerwan - to tak ot). Inna bajka jest gdy mamy doczynienia z programami dosowymi, wtedy Windowsy z seri 9x (w NT nie wiem co sie dzieje) uzywaly do uruchamiana dosowych aplikacji trybu Virtual 8086 ktory pozwalal na emulowanie trybu rzeczywistego, wtedy wracaly (nie wiem czy zaczela obowiazywa tablice wektorow przerwan czy Windows jakos to porobil w IDT, nie wazne) przerwania dosowe (np 21h) i programy dosowe byly happy. To taka moja poranna bablanina, pozdro.

// z tego co wiem, XP używa po prostu call, skacząc do systemu przez bramę zadania, a nie przez bramę przerwania; NT używa V86 tak samo jak w9x - Ł

0

A pod DosBoxem by chodziło?

1 użytkowników online, w tym zalogowanych: 0, gości: 1