ASCII karaktertábla hozzáférés DOS környezetben
2012-11-16T11:13:03+01:00
2012-11-21T08:55:50+01:00
2022-07-23T18:56:19+02:00
  • Nem akartam pontatlanul idézni senkit, ezért inkább nem tettem. Tegnap viszont megnéztem a könyvtárban azt a könyvet, amiből emlékeztem erre a módszerre. Szó szerinti idézet László József könyvéből a 256. oldalról:
    "
    11.3 A VGA regiszterkészlete

    Ismerjük meg most a szabványos IBM VGA kártya regisztereit.
    "

    (a 310/311. oldalakon ír konkrétan erre vonatkozó példát)
    Ez a könyv is foglalkozik már a VESA videomódokkal is(hogyan lehet lekérdezni, hogy melyik módokat támogatja a kártya, használata, stb...)

    Azt ugyan megintcsak nem tudom biztosan, hogy igaz-e, amit Mekkelek5 írt: "Eddig a pontig szabványosak voltak a kártyák (az utolsó bitig minden ugyanott volt,...". Viszont ugyanez a könyv pl. a képszerkezetek tárgyalásánál ír ilyent is:
    "
    11.2.5 A modex képszerkezet

    A szabványos VGA videomódok között nem szerepel, mégis minden VGA kártya ismeri és képes kezelni a módosított bájt/pixel, vagy elterjedtebb nevén a modex képformátumot.
    "

    Ez viszont jelzi, hogy szabvány ide, vagy oda, a szabványtól függetlenül is létezhet olyan, ami minden videokártyán működik.

    De a karakterkészlettel kapcsolatos dolgoknál nem is feltétel, hogy minden egyes bájt minden regiszter esetén ugyanott legyen, elég az, ha ezek a regiszterek, amiket használunk, egységes. Amit a neten találtam "standard vga registers"-re, az első két találat:
    Link1
    Link2

    Itt mind a 2 helyen a standard VGA regiszterek között említi a használt regisztereket(ez persze még mindig nem zárja ki, hogy vannak/lehetnek nem standard regiszterek is).

    ---

    De ha használható hardvertől teljesen függetlenül, ha nem, azt azért mindenképpen túlzásnak tartom, hogy még említést sem lehet erről a módszerről tenni...
    Mutasd a teljes hozzászólást!
  • nincs igazad.
    Nagyon nincs.
    VGA-n kártya /chip családokat kellett kezelni.
    Mutasd a teljes hozzászólást!
  • Uramisten, de rég volt, amikor én is a SWAG kódjaiból tanultam
    Mutasd a teljes hozzászólást!
  • CGA..EGA..VGA
    Eddig a pontig szabványosak voltak a kártyák (az utolsó bitig minden ugyanott volt, nem kellett driver stb).
    Csak amikor a VGA képességeit akarták bővíteni, akkor szaladtak 100 irányba a fejlesztők, és ezért kellett a VESA, hogy mégis legyen egy szabvány. Ami talán nem mindig működött tökéletesen (aztán jött a Win95 és megoldotta a problémát).

    Ettől függetlenül valószínűleg biztosabb megoldás, ha BIOS rutinokat használ az ember, mert a mai kártyákat már tényleg ki tudja hogy rakták össze.
    Mutasd a teljes hozzászólást!
  • A
    DOS
    "fénykorában" lenyűgözött a
    Norton Utilities
    -ben, szöveges módban alkalmazott, "grafikus" jellegű egérkurzor... Jópár évvel ezután, amikor a net valamelyest már számomra is valamilyen formában elérhető volt (úgy kb. 15 éve), ezen forráskód alapján elkészítettem a magam változatát. Azokon a gépeken, amelyen kipróbáltam, javarészt működött, de könnyelműség lett volna kijelenteni, hogy mindegyiken működik.
    Mutasd a teljes hozzászólást!
  • Azért nem jó mert a vga regiszterekre nincs általános szabvány.
    Ami megy az egyik vga kártyán nem biztos, hogy másikon is működik.
    Ezért találták ki a VESA bios-t.
    Az ad egy szabványost interfészt a hardverhez.
    Mutasd a teljes hozzászólást!
  • Miért nem jó? Abban az időben én próbáltam is, nem is csak egy gépen, mindegyiken működött. Vagy lehet, hogy amit belinkeltem oldalt, azon elírás van és nem működik(azért fejből nem tudom az egész kódot, csak az elvet)?
    Mutasd a teljes hozzászólást!
  • 2. módszer nem jó!

    bios függvényekkel lehet/kell megoldani.
    Mutasd a teljes hozzászólást!
  • Szerinted akkor a 2. módszer nem is létezik, semmi köze nincs nemhogy a karakter bittérképhez, még csak a számítógéphez sem, mert 'ammmeg ugye juhokat terel a réten, mi?
    Mutasd a teljes hozzászólást!
  • :D
    Köszönöm szépen a válaszokat, a linkeket átnézem. Már végülis bevittem egy szöveges fájlba a 256 karakter bittérképét egy HEX editorból, amely ki tudta azokat rajzolni kinagyítva... :) Csak három órába telt, egész jól belejöttem.
    Szerintem valahogy úgy lehet, hogy a ROM-ban tárolódik az alap karakterkészlet, mely indításkor betöltődik a videomemóriába, és onnantól szét lehet hack-elni. És persze reset-elni is, újratölteni a ROM-ból. Gondolom.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • A 2-re itt van egy (látszólag)működő példa. Persze ki nem próbáltam, de jónak tűnik...
    Mutasd a teljes hozzászólást!
  • 1. INT 10h megszakítással, ahogy ValakiMás írta, ill. linkelte.

    2. A karakterkészlet szöveges módban a videómemóriában tárolódik(0A000h), így szöveges módban azt kell átírni, viszont a hozzáférés ehhez a szokásosnál bonyolultabb, mert valamelyik(vagy lehet, hogy több) videoregiszert is át kell állítani "out" segítségével.
    Mutasd a teljes hozzászólást!
  • Régen én is csináltam ilyet, bár már nem emlékszem.

    De gyanús, hogy a karakterek képe a ROM-ban van tárolva. Ezt gondolom át kell másolni a RAM-ba, szólni a BIOS-nak (vagy VGA-nak?) hogy onnan vegye őket, ezután pedig szabadon átrajzolhatóak.

    De a módjára nem emlékszem.
    Mutasd a teljes hozzászólást!
  • Szerintem fuss neki még egyszer: pontosan mit szeretnél, milyen platformon, milyen eszközzel...
    Mutasd a teljes hozzászólást!
  • Arra gondolsz, hogy a dos-os karakterek képét átirogatni meg ilyesmi? Mert ahhoz például itt találsz izgalmas dolgokat.
    Mutasd a teljes hozzászólást!
  • Szóval ez lenne. Nagyon retro téma, az interneten már minden Win alapú, C#, Visual C++, az "open source ascii art", s egyéb kifejezésekre való kereséssel sem találok nekem való eredményt. Tudom, hogy régen írtam olyan progit, hogy átírtam a karaktertáblát. De az már több, mint 10 éve volt. Hogy férek hozzá ehhez a memóriaterülethez?... Assembly rutinokkal gondolom, megszakítások segítségével. Emlékszik még valaki a dologra? :) Vagy esetleg van bármilyen nyelvű programozási oldal, amely még a régi időkből maradt fent?
    Mutasd a teljes hozzászólást!
abcd