Nincs kedvetek Dos-t fejleszteni?
A 8086 is rendelkezett szorzó áramkörrel, MUL utasítással, de a 8 bites korszak processzorai (6800, 8080, 6502, z80, 1802) nem tudtak szorozni. Osztani sem, a régebbi gépek, mint pl. a PDP sorozat első tagjai, nem, hogy szorozni/osztani, de még kivonni sem tudtak.
Gondolok itt natív szorzó, osztó és kivonó utasításokra és a mögöttes áramkörökre.
2D -> 1D transforming.
Mivel tudjuk, hogy a képernyő hány karaktert képes egyszerre megjeleníteni (80*25), ami ugye egy szép, kerek, 10-es számrendszer-beli szám (2000d), így ebből képezhetünk egy szimpla, egy dimenziós char tömböt.
Ezzel az általam említett három eszközből az egyik már meg is van. A tömb.
A másik kettő művelet lesz. Gondolom, ezt már csak kitaláljátok önerőből.
Eltelt több, mint egy nap, és megoldás még sehol.
Nem sikerül meghatározni azt a két műveletet, ami nyilván nem a szorzás. Nem is az összeadás, teszem hozzá gyorsan. Hát akkor mi lehet?
Az általam jósoltnál is keservesebb lesz így az operációs rendszer fejlesztése, nem gondoljátok?
2024-04-30
A Microsoft legújabb lépése: Az MS-DOS 4.0 forráskódja mostantól nyíltan elérhető
Itt van, karácsonyi ajándék a -szellemi- szegényeknek:
10 x 4 screen. Egy-egy 'O' karakter jelöl egy-egy karakterhelyet. Az X és Y tengely metszéspontja jelöli ki a kurzor pozícióját.
A 2D reprezentáns:
OOOOOOOOOO
OOHelloOOO
OOOOOOOOOO
OOOOOOOOOO
Ugyanez 1D transzformálva (tömbösítve):
OOOOOOOOOO + OOHelloOOO + OOOOOOOOOO + OOOOOOOOOO
azaz, [OOOOOOOOOOOOHelloOOOOOOOOOOOOOOOOOOOOOOO].
Ehhez adott egy tömbindex és adott a karakter-szélesség (terminal-width), ami itt, a példa kedvéért 80 helyett 10. Belátható, hogy a terminal-width nevű konstans és a tömbindex birtokában nyilvántartható és lekérdezhető a kurzor pozíciója, illetve az X vagy Y értéke ebből a pozícióból (tömbindexből) bármikor számítható a MOD és a DIV segítségével.
Tehát, szorzás vagy összeadás, az ide pont nem kell.
Amúgy, annyira ritka ez a megoldás, hogy kb. mindenki ezt valósítja meg.
Boldog Karácsonyt.
Ezzel csak két gond van...
1./ Ez a megoldás egészen addig tökéletesen működik, amíg telehányjuk a képernyőt. Az első "kezd el a következő új sort" karakterig tök jól működik.
2./ Hogyan oldod meg azt, hogy a Cursor egy adott pozícióra kerüljön?
3./ Nyilván kicsavartad, hogy megint igazad legyen.
4./ Egész más miatt kellett egy korai gép esetén valamit megnézzek, és ha már kezembe került a BIOS-a megnéztem a képernyő meghajtó BIOS szubrutinokat MUL és ADD utasítás van benne. Nyilván egy soron belül azt használja amit ide böffentettél. De az új sor, és a "menj a képernyő X. sor Y. pozícióra" ott MUL és ADD van.
5./ Érdemes általános megoldásokat használni. Ami működik akár karakteres, de akár egy 10K felbontású képernyőn is.
Lásd be végre, nem való ez neked, 23:23-as. Vérszegény vagy, ötletszegény vagy.
Leírtam, hogy a képernyő bármely pozíciója kiszámítható, ergo, bárhova tudod a kurzort pozicionálni.
Az egy dolog, hogy a régi, soros terminálok működését emulálva erre nincs sem szükség, sem lehetőség, hiszen a kiírás sorfolytonos, egy korábbi sorba, vagy soron belüli pozícióra visszatérni nem lehetséges. Amit elvársz, azt én nem igértem sehol, de ettől függetlenül a te óhajod (posXY) is teljesül, hiszen az X és Y pozíció kinyerhető a tömbindexből és a terminal-width konstansból.
Y - tombindex DIV CONST
X - tombindex MOD CONST
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!