A Microsoft megnyitotta a GW-BASIC forrását

A Build2020 esemény- és bejelentéssorozat lezárásaként a Microsoft részéről Rich Turner bejelentette, hogy megnyitják a Microsoft GW-BASIC forráskódját. Elérhető MIT licenc a GitHub-on.

These sources, as clearly stated in the repo’s readme, are the 8088 assembly language sources from 10th Feb 1983, and are being open-sourced for historical reference and educational purposes. This means we will not be accepting PRs that modify the source in any way.

Hozzászólások

Azt a mindenit!

Jövőre jön a solitaire.exe forráskódja is?

Bizonyos értelemben hiánypótló - egy darabka történelem.

És ha nem is a 38 éves Code_of_Conduct.md file-ra gondolok (ha valami, akkor inkább ez a LOL), hanem arra, hogy megnézheted, miből lett a cserebogár.

Esetleg szemezhetsz az ilyenekből: "The quick and dirty solution is to copy the block into the code segment before doing anything else."

Üdv,
Marci

Eh, talán egy XT-n találkoztam ezzel először. Ha jól rémlik akkor még benne volt a ROM-ban.

Nem is tudtam, hogy volt már git és github 1983-ban is :-)

committed on Feb 10, 1983

Ezen én is röhögök, 83-ban git meg CoC. Én is ilyen korai XT-ken, AT-ken nyomtam vele, a ROM-ban lévőt BASIC-nek, meg BASICA-nak hívták, de ezek is ugyanazok voltak, mint a GW-BASIC, csak az utóbbinak nem kellett ROM. Nagy trógerség volt, teljesen lineáris volt, kötelező sorszámozás, stb..

Nem sok haszna van a forráskódnak, főleg, hogy platformfüggő ASM. Meg az egész annyira primitív mai szemmel, hogy iskolai proggyakorlatra kiadva specifikációk alapján újra lehetne implementálni az egészet, sokkal könnyebb lenne, mint meglévő ASM kódból kiindulni, eleve a fele 16 bites x86 és DOS hack.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Azokban is csak kb. AT-ig. De klónokhoz is lehetett kapni Basic ROM-ot, emlékszem is olyan gépre (nem saját), ami nem eredeti IBM volt, és ROM-ból futtatott BASIC-et. Persze sok jelentősége nem volt, mert DOS alatt futtatta az ember a GW-BASIC-et és nem kellett ROM. Ennek max. a korai gépeken volt értelme, hogy a kód nagyja ROM-ból menjen, meg ne foglaljon az OS, és több maradt a kicsi RAM-ból (64-256 KB) programozásra. Onnantól, hogy volt minden gépben 640-1024KB RAM, onnantól már kb. mindegy volt, hogy miből fut. Meg eleinte azért is volt fontos a ROM BASIC, hogy a Commodore-ral tudjanak versenyezni, és mindenféle OS nélkül lehessen programozásra használni azonnal a gépet, később ennek csökkent a jelentősége, ahogy az IBM PC elterjedt, és standard lett.

Ennek a forráskódnyitásnak sem volt sok értelme, max. viccnek jó. Főleg, hogy nem is az eredeti kód, hanem egy konverteren átküldött módosított. Így is voltak már a MS/GW/Q(uick)-Basic-kel kompatibilis free fordítók, QB64, FreeBasic, ezekben nincs már meg a 64 KB-os korlát, meg egyéb GW limitációk, használhat az ember hozzá akármilyen editort, IDE-t. Az eredeti GW-BASIC meg amúgy is abandonware már hosszú évek óta, és elfut DosBox-ban, dosemu-ban, akármiben, csak nem érte meg használni. Max. amíg az ember ki nem mentette benne a GW-s programjait binárisból plain text formátumban.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Én anno különféle 8 bites gépeken kezdtem, akkortájt a Commodore 64 is egy autó ára volt... És persze gépi kód, mert mire az iskolai HT-1080Z-k betöltöttek volna egy assembly fordítót a beépített kazettás magnóról vége a 10 perces szünetnek, így aztán hexában pötyögtük be a kódot.

Amúgy az első PC sem volt sokkal különb szerkezet: 256 kilobyre RAM volt az alaplapon, amit kártyával 512-re lehetett bővíteni. Volt neki is kazettás magnós csatlakozója, és persze floppy, sőt később akár 10MB-os winchester... Ha pedig semmiről nem tudott oprendszert betölteni, akkor nem a No system disk or disk error jött, hanem a beépített basic indult el. És a korai DOS-okban még volt olyan utasítás (már nem emlékszem mi) amivel a beépített magnót kapcsolhattad ki/be. Persze a későbbi XT-ken ez már nem csinált semmit, de az eredeti PC-ben lehetett hallani a relé kattogását.

Végre ! Éppen egy több ezer soros régi programmal küzdünk, ami a mai napig operatív használatban van. Mondtam a kollégámnak, hogy éppen csak megszületett, amikor ennek kiadták az utolsó verzióját!

Szerkesztve: 2020. 05. 23., szo - 12:05

Retró kedvelőknek: http://www.retroarchive.org/dos/docs/ibm5160techref.pdf
Teljes kapcsolási rajz, klasszikus 8086 még könnyen tanulható mennyiségű assembly utasításának alapos ismertetése.
Ne feledjük, akkoriban a lebegőpontos utasítások valójában csak akkor álltak rendelkezésre, ha a 8088 mellé belenyomtad a 8087-es coprocesszort.

Szerkesztve: 2020. 05. 24., v - 17:53

oh, wow, de rendesek! MS truly loves open source <3

Donald E. Knuth egy könyvében (Structured Programming with Goto Statements) rávilágított arra, hogy a "goto" utasítás használata veszélyes, és ezért ezt kerülni kell.

Ugyanebben a könyvében azonban egy vicces történetet is közöl:
"1971-ben, az IFIP konferenciáján volt szerencsém összefutni a japán Dr. Eiichi Goto nevű úrral, aki tréfásan panaszkodott, hogy őt mindenki kerülni igyekszik."

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Dijsktra híres ember, gráfelméleti algoritmusait már életében tanították az egyetemeken. De a GOTO-val kapcsolatban tévedett. Ahogy a Linux-ban használjuk a GOTO-t, és csak az az egy mód szerintem teljesen jó.

Mellesleg Linus véleménye az ügyről még a régi Linus-t idézi: "Of course, in stupid languages like Pascal, where labels cannot be descriptive, goto's can be bad. But that's not the fault of the goto, that's the braindamage of the language designer."