2019. április 20., szombat

Gyorskeresés

CP/M-en és MS-DOS-on is futtatható Hello World! program

Írta: | Kulcsszavak: MS-DOS . CP/M . Hello World . 9-es függvény . Bill Gates

[ ÚJ BEJEGYZÉS ]

Az alábbi 32 byte-os Hello World! program érdekessége, hogy DOS és CP/M alatt is fut.

Nézzük a programot CP/M alatt (Z-80 assembly):

0100 B4 OR H
0101 09 ADD HL,BC
0102 BA CP D
0103 0A LD A,(BC)
0104 01 CD 21 LD BC,21CD
0107 C3 17 01 JP 0117
010A "Hello World!$"
0117 0E 09 LD C,09
0119 11 0A 01 LD DE,010A
011C CD 05 00 CALL 0005
011F C9 RET

A program a 0x100 címre töltődik be. A program első felében (0x100–0x106) látszólag értelmetlen kód van. Majd a 0x107-es címen lévő utasítással átugorjuk a 0x10a–0x116 címen tárolt szöveget, és a 0x117-en végre elkezdődik a programunk. A C regiszterbe betöltjük a C_WRITESTR funkcióhívás kódját, a DE regiszterbe a szöveg címét, majd a CALL 5-tel meghívjuk magát a funkciót. Ezután a RET visszatér a CP/M-hez.

Nézzük ugyanezt a kódot x86 assembly-re!

0100 B4 09 MOV AH,09
0102 BA 0A 01 MOV DX,010A
0105 CD 21 INT 21
0107 C3 RET
0108 17 01
010A "Hello World!$"

Rögtön értelmet nyer a program elején lévő 7 byte, ami Z-80-on nem csinál semmi hasznosat. Az AH regiszterbe betöltjük a karakterstring írás függvénykódját (a kód ugyanaz, mint a CP/M-en), majd a a DX regiszterbe a string címét. Ezután 0x21 megszakítással meghívjuk az adott DOS-függvényt, végül a RET visszatér a DOS-hoz. A kód többi része (0x108–0x109 és 0x117–01xff) nem érdekes számunkra, hiszen soha nem fog lefutni.

Kis megjegyzés a 9-es DOS-függvényhez. Jól látható, hogy dollárjelet nem tudnánk írni ezzel a funkcióval, hiszen ez a string-lezáró karakter. Gary Kildal-nak, a CP/M tervezőjének volt a legendás mondása: "Ask Bill [Gates] why the string in [MS-DOS] function 9 is terminated by a dollar sign. Ask him, because he can't answer. Only I know that.".

Hozzászólások

(#1) E.Kaufmann


E.Kaufmann
(őstag)

De miért is kellett volna tudnia Billnek :D szerintem ő csak a Basic interpretereket programozta, bár mintha a FAT is az ő gyermeke lenne.
Amúgy tényleg, miért?
Volt egy film, nem tudom, mennyire pontos. Abban volt, hogy nem is Bill vette meg a cuccot, hanem Paul Allen, ja és az IBM-nek előbb ajánlották fel, mielőtt megvették volna a DOS-t :D
Meg hajszálnyival megelőzték a Machintost a Windows-al, igaz abban a formában sokra nem volt jó :)

[ Szerkesztve ]

(#2) Povi_ válasza E.Kaufmann (#1) üzenetére


Povi_
(újonc)

Mondjuk én úgy gondolom, ha nem megvették volna a DOS-t. hanem nulláról írtak volna egy új oprendszert, akkor is lehet, hogy meghagyták volna a hasonlóságot a CP/M-mel (ugyanazok a függvényhívások), hogy a régi szoftvereket könnyen át lehessen vinni az új oprendszerre.
Most nézem csak, hogy iwiw-en is meg lehet osztani a cuccokat?! :D

*** Speicherplatz zu klein

(#3) Syl válasza E.Kaufmann (#1) üzenetére


Syl
(PH! nagyúr)

hajszálnyival megelőzték a Machintost a Windows-al

Vagy nem. A Mac-et 1984 januárjában mutatták be, a Windows 1.0-át meg 85 novemberében.

Az említett film pedig a Számító emberek (1999) "Pirates of Silicon Valley" és nagyon pontos.

Words cannot express how much i don't care

(#4) E.Kaufmann válasza Syl (#3) üzenetére


E.Kaufmann
(őstag)

Pedig abban a filmben volt, hogy a Mac reklámvideó (1984 téma) előzetes bemutatóján bontogatták már a Windows-t tartalmazó NEC gépeket az Apple-s fiúkák kissé bosszúsan a színpad mögött. Persze, lehet nem volt az végleges kereskedelmi termék, csak valami mintapéldány.

[ Szerkesztve ]

(#5) Syl válasza E.Kaufmann (#4) üzenetére


Syl
(PH! nagyúr)

Hogy melyiket mikor kezdték el fejleszteni, azon lehet agyalni, de a több forrásból megerősített események a következő szerint mentek:
- Jobs meglátogatta a Xerox Parc labort ahol beleszerelmesedett a GUI-ba
- Elkezdték fejleszteni a Lisa-t
- Felkérték az MS-t hogy írjon szoftvert a Lisara
- Billék elmentek a Parc-ba
- A Lisa egy totális anyagi csőd lett, ezért kitalálták a Macintosh-t (ez eredetileg nem Jobs ötlete volt, csak kisajátította)
- Billék elkezdtek dolgozni a Mac szoftvereken és közben beindult a win fejlesztése is.
(Vagyis totális baromság az a duma, hogy az MS az Apple-től lopta a grafikus felhasználói felületet)
Amit demózhattak, az csak a "Presentation Manager" vagyis a grafikus felület picike darabja volt, nem a teljes OS. Egyébként is, a Windows csak egy MS DOS extender volt, míg a Mac System teljes értékű grafikus OS.

Words cannot express how much i don't care

(#6) Povi_ válasza Syl (#3) üzenetére


Povi_
(újonc)

Na, erről a filmről még nem hallottam, de most már kíváncsi vagyok rá! :-)

*** Speicherplatz zu klein

(#7) Syl válasza Povi_ (#6) üzenetére


Syl
(PH! nagyúr)

Ha igazán jó dokumentumfilmet akarsz látni a témában, akkor a youtube-n keress rá a "Triumph Of The Nerds" sorozatra (3 epizód). Nem mai gyerek (95-96-os film), de pontosan bemutatja a "hőskort". :K

Words cannot express how much i don't care

További hozzászólások megtekintése...
Copyright © 2000-2019 PROHARDVER Informatikai Kft.