Bill Gates publiceert originele Basic-broncode voor Altair 8800

Bill Gates heeft de originele Basic-broncode voor de Altair 8800 vrijgegeven. De medeoprichter van Microsoft doet dat vanwege de vijftigste verjaardag van Microsoft. Gates noemt de code die hij en Paul Allen namens Microsoft voor de computer schreven 'de coolste code die hij ooit schreef'.

Gates schrijft in een blogpost dat hij zijn eerste broncode openbaar heeft gemaakt vanwege de verjaardag van Microsoft. Zoals ook te lezen is in het achtergrondverhaal dat Tweakers ter gelegenheid van die verjaardag schreef, hadden Gates en zijn partner Paul Allen de eerste code voor de Altair 8800 nog niet eens geschreven voordat ze Altair aanboden daar in 1975 met hun nieuwe bedrijf Micro-Soft een interpreter voor te leveren. Uiteindelijk schreven de twee programmeurs toen een interpreter voor Basic voor de Altair 8800 en dat conceptproduct werd het startpunt van wat ooit een van de machtigste bedrijven ter wereld zou worden.

De oprichter heeft die code nu als pdf op zijn blog geplaatst. Er is geen versie op GitHub dus, al is dat bedrijf inmiddels ook al onderdeel van Microsoft. "Programmeren is de afgelopen vijftig jaar ver gekomen, maar ik ben nog steeds erg trots op hoe deze code uiteindelijk is geworden", zegt Gates.

Basic broncode

Bill Gates noemt de code verder 'de coolste code die hij ooit heeft geschreven'. Hij en Allen leerden Basic als eerste programmeertaal, een taal die in 1964 was uitgekomen. De code moest echter door een interpreter worden gehaald voordat een computer er instructies uit kon halen. Om dat voor de Altair 8800 te doen, moest Allen eerst software schrijven die de Intel 8080-cpu van die computer kon simuleren. Zo hadden de twee Harvard-studenten geen daadwerkelijke Altair nodig. Gates zegt dat hij, Allen en een derde vriend, Monte Davidoff, twee maanden lang werkten aan de software.

Volgens Gates was de voornaamste uitdaging om hun Basic-code zo te schrijven dat gebruikers slechts vier kilobyte aan geheugen nodig hadden, omdat geheugen in die tijd nog peperduur was. Dat leverde vooral veel uitdagingen op op het gebied van geheugenstructuuroptimalisatie en het opzetten van compacte datastructuren, zegt Gates.

Door Tijs Hofmans

Nieuwscoördinator

04-04-2025 • 15:04

121

Submitter: freyk

Reacties (121)

121
120
39
2
0
74
Wijzig sortering
Ben benieuwd hoeveel van die code gejat is aangezien BASIC en implementaties ervan al bestonden.
Durf wel veilig te stellen dat dat precies 0 was.

Eerdere implementaties van BASIC draaiden allemaal op mainframes en wat toen "mini" computers genoemd werden, met architecturen die radicaal verschilden van de 8-bit Intel 8080 waar de Altair mee uitgerust was. Het enige dat je met de bestaande implementaties zou hebben gekund is ideeën opdoen, maar zelfs dat maar zeer beperkt, want zelfs zoiets als berekeningen uitvoeren ging verschillend per machine dankzij verschillende bitgroottes en instructietypes. Een 8080 heeft geen instructies voor floating-point berekeningen bijvoorbeeld, dat moet je eerst nog implementeren.

Altair BASIC moest from scratch geschreven worden voor een processor die ze niet eens in hun bezit hadden -- alles moest werken op de emulator. Dat het in 1 keer werkte op de echte machine mag een klein wondertje genoemd worden. Code jatten van andere machines zou niets opgeleverd hebben.
Eerdere implementaties van BASIC draaiden allemaal op mainframes en wat toen "mini" computers genoemd werden, met architecturen die radicaal verschilden van de 8-bit Intel 8080 waar de Altair mee uitgerust was.
Ja, ik geloof wel dat ze het zelf geschreven hebben. Het ging me meer om het conceptuele, dus het feit dat ze iets dat al goed beschreven was implementeerden.
Tja, als je bedoelt dat ze BASIC zelf niet bedacht hebben -- uiteraard. Maar code implementeren om aan een specificatie te voldoen is de normaalste zaak van de wereld. Niemand zou dat "jatten" noemen. Het hele idee achter de Altair BASIC geven was net om het ding nuttiger te maken voor de gemiddelde gebruiker; had het z'n eigen unieke taaltje gekregen of alleen een rudimentaire assembler dan was dat een stuk minder waardevol geweest.

Het eerste "echte" programma dat men draaide (voor het toeziend oog van de makers) was een Lunar Lander-spelletje uit een boek met BASIC programma's. Met het bewijs dat dat kon was de Altair plotseling een heel stuk beter te verkopen.

[Reactie gewijzigd door MneoreJ op 5 april 2025 22:43]

Tja, als je bedoelt dat ze BASIC zelf niet bedacht hebben -- uiteraard.
Nou ja, niet helemaal wat ik bedoel. Meer dat de oorspronkelijke basic vrij gedetailleerde specificatie had.
Nou wil ik ook niet zeggen dat ze er niks aan verbeterd hebben, want dat hebben ze wel. Ik ben opgegroeid met MSX basic, en die was erg fijn :) Maar ik vraag me af in hoeverre ze gewoon de oorspronkelijke basic code rechtstreeks vertaald hebben naar 8080 asm equivalent.

[Reactie gewijzigd door koelpasta op 6 april 2025 20:50]

Bill Gates bashen is ook makkelijk.

Hij zal ongetwijfeld niet de meest geniale programmeur geweest zijn maar een solide assembly implementatie neerzetten is bepaald niet triviaal en kunnen maar weinig mensen nadoen.
Bedenk wel dat assembly in die tijd de native taal was van de meeste machines. Hogere talen waren er wel, maar die waren niet snel en zeker op microcomputers waren hogere talen minder aanwezig. Vandaar, denk ik, dat gates en kornuiten een basic schreven. Het maakte zo'n apparaat een stuk bruikbaarder.
En dan hebben we het nog niet eens over dingen als EBCDIC en Endianness..
Endianness? Dus omdat je de bytevolgorde omkeert omdat een bepaald platform dat eist is het opeens een nieuwe unieke expressie van code? ... :?
En EBCDIC is een kwestie van vertalen denk ik? Ik weet ook niet of de originele basic erg op EBCDIC leunde. Het is iets van vooral IBM machines en basic was oorspronkelijk geschreven voor een, meen ik, PDP10. Die kon voorzover ik weet geen native EBCDIC aan.
Met endiness wordt het grootste verschil tussen de 8086 en de 68000 series cpu-s bedoelt. Is bit 0 het meest significante bit of het minst significante bit.

Tussen ebcdic en ascii is het geen vertalen. Het beste is converteren. Maar dan mis je de handigheidjes. Bij (7-bit) ascii kan je met 1 bit wisselen tussen hoofdletters en kleine letters. Bij ebcedic zitten er weer andere handigheidjes in de bits en bytes die de karakters voorstellen. En misschien ook wel de 1-bit hoofdletter, maar dan weer mogelijk een andere bit.

Over de pdp-series machines: Daar is heel veel voor geschreven omdat die machines betrekkelijk veel in de universitaire wereld werden gebruikt en de huidige computer ontwikkelingen komen daar uit voort.
Met endiness wordt het grootste verschil tussen de 8086 en de 68000 series cpu-s bedoelt. Is bit 0 het meest significante bit of het minst significante bit.
Eeh, neen. Endianness definieert de volgorde van bytes in words, niet van bits in bytes. Je snapt dus niet wat het woord betekent. Daarnaast ga je voorbij aan hetgeen ik probeerde te zeggen, namelijk dat je eigenlijk niks nieuws schrijft als je de enianness omzet om code op een ander platform te laten draaien.
Tussen ebcdic en ascii is het geen vertalen. Het beste is converteren.
Eeh, dat is in deze context hetzelfde... en heeft niks te maken met wat ik schreef.
Bij (7-bit) ascii kan je met 1 bit wisselen tussen hoofdletters en kleine letters.
En hoe vaak pas je die truuk toe in een basic interpreter? Maar goed, zowel de originele basic als deze ms basic draaien op machines die niet native EBCDIC waren, dus het gaat sowiso nergens over.
> En hoe vaak pas je die truuk toe in een basic interpreter?
Aannemende dat de basic interpreter minder geheugen in gebruik neemt als de keywords alleen in hoofdletters gebruikt worden, wordt dat bitje waarschijnlijk bij elke ingevoerde regel, voor elk ingevoerd "woord" voor elk karakter gebruikt. zou ik doen iig. Maar of het echt terzake doet kun je je inderdaad wel afvragen.

Endianness kan wel echt voor "problemen" zorgen als je moet berekenen waar je in je code naartoe moet springen, of waar je in je data moet beginnen te lezen enzo. Alignment hebben we ook niet helemaal voor niets.

Verder geniet ik vooral van dit soort eigenlijk onnozele discussies, ik blijk telkens weer niet de grootste nerd te zijn en er valt altijd weer iets nieuws te leren. :-D
Aannemende dat de basic interpreter minder geheugen in gebruik neemt als de keywords alleen in hoofdletters gebruikt worden, wordt dat bitje waarschijnlijk bij elke ingevoerde regel, voor elk ingevoerd "woord" voor elk karakter gebruikt. zou ik doen iig. Maar of het echt terzake doet kun je je inderdaad wel afvragen.
Precies. Dat is dus 1 keer een functie implementeren die alle letters in een regel omzet naar hoofdletters voor het tokenizen o.i.d.. Dit gedrag zie je b.v. in msx basic. En alleen de tokens worden opgeslagen, dus hij weet niet meer of de oorspronkelijke invoer grote of kleine letters waren..
Endianness kan wel echt voor "problemen" zorgen als je moet berekenen waar je in je code naartoe moet springen, of waar je in je data moet beginnen te lezen enzo. Alignment hebben we ook niet helemaal voor niets.
Ja, mee eens, maar dat kun je dus best wel vertalen. En als je echt heel ingewikkelde truuks gaat uithalen voor het berekenen van adressen etc ben je denk ik hoe dan ook niet goed bezig al je een compiler/interpreter schrijft. Alhoewel, sommige architecturen vragen erom., :)
[...]
Precies. Dat is dus 1 keer een functie implementeren die alle letters in een regel omzet naar hoofdletters voor het tokenizen o.i.d.. Dit gedrag zie je b.v. in msx basic. En alleen de tokens worden opgeslagen, dus hij weet niet meer of de oorspronkelijke invoer grote of kleine letters waren..
In die tijd ging het niet alleen om het 1 keer implementeren maar vooral om zuinig met code en zuinig met cpu-cycles. Geheugen is schaars en een cpu-cycle is in de computers van die tijd duur. Elke gewonnen micro-seconde geeft net iets meer response aan de computer.
Ja, mee eens, maar dat kun je dus best wel vertalen. En als je echt heel ingewikkelde truuks gaat uithalen voor het berekenen van adressen etc ben je denk ik hoe dan ook niet goed bezig al je een compiler/interpreter schrijft. Alhoewel, sommige architecturen vragen erom., :)
De truuks waren in die tijd helemaal niet ingewikkeld. Ze waren vooral slim en creatief. En ja, als je met een compiler of interpreter bezig bent, dan ben je juist bezig met het berekenen van adressen. Bedenk dat in de assembler code van die tijd niet zo heel veel instructies beschikbaar waren. Maar toegegeven, in de basic van die tijd ook niet. De grote uitdaging in die tijd is de i/o.
De computers uit die tijd hadden geen last van byte volgorde. Die hadden een woordbreedte van 8 bit, 1 byte. De verdere volgorde was aan het programma.
Eeh, hoe kun je met 8 bits 64k adresseren? :9
En zelfs als een CPU enkel 8 bit registers heeft kan ie met 16 bits getallen omgaan en dan is dus de vorgorde van de desbetreffende bytes (die dan samen een 16 bits getal representeren) van belang.
Als je adres ruimte te klein is voor het geheugen dat je wilt aanspreken, dan zijn daar altijd diverse oplossingen voor geweest. In die tijd was bankswitching de meest gebruikte oplossing. In latere systemen werd (en wordt nog steeds) gebruik gemaakt van "swappen", in de regel wordt daar dan de term "pagen" gebruikt omdat er geen programma's worden weggezet maar hele geheugen blokken.
Ja, maar je gaat natuurlijk geen banken van 256 bytes schakelen. :) Althans, ik ken geen CPU die een register van slechts 1 byte gebruikt voor bijvoorbeeld de Program Counter.

De 8080, z80 en 6800 hebben allemaal een PC + andere registers van 16 bits. Zelfs de 4004 en 4040 hebben een 12 bits PC...
Dus leuk theoretisch wat je zegt, maar de endianness is al vanaf de jaren 70 een belangrijk begrip in microcomputers.
Aangezien in Assembler veel rekenprobleempjes opgelost worden door logische bewerkingen is het wel handig als je weet hoe de CPU daar intern mee om gaat en hoe die e.e.a. op de stack of in memory opslaat

[Reactie gewijzigd door DaRealRenzel op 6 april 2025 19:38]

Maar heb ik dan ergens gezegd dat dat niet zo is? :?
Nee, maar ik toch ook niet
Unix bestond ook al meer dan 20 jaar voor dat Linux begon. Dat maakt het nog niet 'gejat'
Je zou op z'n minst kunnen stellen dat de specificaties van de kernelfaciliteiten zijn 'gejat'. Linux is immers een kernel die (min of meer) UNIX compatible is aan de buitenkant. Maar ik geloof dat ook een hoop van de 'guts' van een linux kernel uiteindelijk gestoeld zijn op ideeen uit de unix wereld.
Linux is ontwikkeld om Unix software te kunnen draaien. Net als MS Basic is ontwikkeld om Basic programma's te kunnen draaien. Het is niet eens 'gestoeld op ideeën', maar in beide gevallen simpelweg een andere versie van al bestaande systemen.
Ik had het meer over zaken als memory management, threadingmodellen, scheduling, drivermodellen en andere kernelzaken. Daarin verschilt linux sterk van unix. En naar de buitenkant toe bieden de beide kernels uiteindelijk min of meer dezelfde faciliteiten aan, wat ze redelijk compatible maakt voor de lagen daarboven.
Tja en in deze context : De interne werking van MS Basic zal ook flink verschillend zijn dan die van de originele Dartmouth Basic versie. Dus snap ik je punt niet.
Dus je maakt een aanname en snapt vervolgens mijn punt niet?
Hoe weet je dat de interne werking van ms basic zo verschilt van de dartmouth basic? Heb je de sources vergeleken?
Daarnaast kwam ik er gisteren achter dat ASCII in die tijd bezig was basic te standariseren. Dat betekent dus dat er drafts rondgingen van een volledig gestandariseerde basic. En zo te zien is dat een basic variant die erg lijkt op die van MS.
Nee nog steeds snap ik je punt niet. Voor zover ik weet is de source code van Bill Gates from scratch geschreven op basis van specificatie van de taal Basic. Mocht ik dat mis hebben zie ik daar graag bewijs van hoe de interne werking van eerdere versies van Basic op mainframes sterk daar op leek. Hier iig de Dartmouh Basic compiler source code :
https://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf
Zie de haast onleesbare code vergeleken bij de source code van MS Basic uit 1975.
Tja, het was de bedoeling uiteraard dat de taal MS Basic op 'standaard Basic' lijkt. Net als elke versie van C op de ansi standaard van begin jaren 70 lijkt. Dus GNU C is ook 'gejat' ? Laat staan Borland C dat een betaalde versie van C was?
Daarbij dus mijn nogmaals mijn eerdere punt :
"Unix bestond ook al meer dan 20 jaar voor dat Linux begon. Dat maakt het nog niet 'gejat'"
Als je de geschiedenis van linux, de kernel, een beetje kent: Dat is begonnen als een utidaging naar aanleiding van een (universitaire) school-opdracht, gebaseerd op minix. En minix is een heel losse implementatie van een deel van de unix specificaties voor onderwijs doeleinden.

Als je het over linux als operating systeem hebt, dan sprek je van gnu/linux. Daar is linux de kernel en gnu het circus aan programma's, scrips en dergelijke daar om heen. EN ja, gnu is niet unix. Maar toch is gnu een implementatie van de unix standaard, met name in de opensource omgeving zodat systeembeheerders graag op elke unix implementatie gelijke gereedschappen wensten.

Dus ja, linux is geïnspireerd op unix. Ze is ook een implementatie van de posix-standaard, die ooit in het leven is geroepen om unix-implementaties (en andere operating systemen) met elkaar te kunnen vergelijken. Er is zelfs formeel niets van unix 'gejat' zoals jij dat stelt. Daar zijn in het verleden genoeg onderzoeken naar gedaan.
Nou Linux is wel gejat. Afgeleid van Minux. Torvald pastte die aan en voila je kreeg Linux. De grote jongens leverden tools en zo werd Linux ook een grote jongen. Torvalds bijnaam is niet voor niks de grote assembleerder.
Het is niet gejat, maar legaal geleend toch? (hoewel bij Linux toch een overname van SCO voor nodig was om legale problemen op te lossen?) Sterk gebaseerd op Minix dacht ik?
Standaarden als C en Basic zijn volgens mij vrij om te gebruiken. Dat wou Ansi juist : dat iedereen dezelfde conventies ging gebruiken. Linux is vooral een succes door het in 1989 ontstane 'GNU licentie' systeem maar ook wel door de regie van Torvald dacht ik zo. Het coden was daarbij een secundaire voorwaarde.
Maar ik heb dus wel veel respect voor Bill Gates zijn programmeerkunsten in let wel 1975. Velen zullen de efficientie van programmacode (geheugen/snelheid) belangrijk vinden, maar ik denk Bill Gates duidelijk een goede archictect van software was die zich netjes aan de bouwvoorschriften hield. (Tenminste destijds... De stunt met QDos vs Digital Research was nou niet bepaald netjes)

[Reactie gewijzigd door AtariXLfanboy op 8 april 2025 23:02]

De overname van SCO heeft de juridische status van unix en de oer-bron-teksten en zo weer eens op een rijtje gezet. Maar er is meer dat bepaalt of iets unix-achtig is. Zo is er de posix-standaard, met name om besturing systemen te kunnen vergelijken.
Minix is een beperkte/minimale implementatie van een operating systeem dat op unix is gebaseerd. De linux kernel is daar uit voort gekomen als een andere/alternative implementatie met andere ideeën en achtergronden.
Er zijn een aantal operating systemen die gebruik maken van de linux kernel. Wat velen zien als linux operating systeem is gnu/linux: De linux kernel en de gnu user-land omgeving, de gnu programma's daar om heen. Gnu is geen unix maar lijkt daar wel heel sterk op. Gnu/linux voldoet wel heel erg veel aan de posix standaard. Daarnaast is android ook een operating systeem dat gebruik maakt van de linux kernel en zo zijn er meer.
De gnu licentie heet er vooral voor gezorgd dat er geen enkele instantie of organisatie linux (en de gnu toolset en omstreken) heeft kunnen claimen en moniopoliseren.
Waarop ik reageerde had het over Minux :D Het hele verhaal wat allemaal de Linux kernel gebruikt vind ik in deze context wat overbodig, maar goed je hebt uiteraard wel gelijk.
Er zijn in de begindagen nogal wat dingen door mensen in loondienst van instituten en bedrijven dingen ontwikkeld waarbij de instellingen zich nooit erg om de rechten hebben bekommerd omdat ze het commerciële potentieel niet inzagen. Deze pioniers zijn er nogal eens bekaaid afgekomen, maar zowel Gates , Wozniak en Jobs hebben daar iig sterk van geprofiteerd, maar om het diefstal te noemen gaat mij iig te ver. (Behalve bij CP/M dan)

[Reactie gewijzigd door AtariXLfanboy op 9 april 2025 23:40]

Ik blijf het altijd bijzonder vinden hoe je een programmeertaal kunt programmeren. Ik snap het idee maar het blijft iets magisch.
Ik blijf het altijd bijzonder vinden hoe je een programmeertaal kunt programmeren. Ik snap het idee maar het blijft iets magisch.
Met Turing Complete kan je leren hoe dat gaat. Door een processor te begrijpen leer je ook hoe abstractielagen werken, waaronder hogere programmeertalen.

De waarschuwing op Steam dat er in de afgelopen twee jaar geen update is geweest klopt. Er is twee jaar lang geen nieuwe stabiele versie uitgekomen. In de experimental branch ("save_breaker") is er veel ontwikkeling voor versie 2.0. Maar ook met het stabiele spel kan je prima uit de voeten. :)

[Reactie gewijzigd door The Zep Man op 4 april 2025 16:47]

Ook de videos van Ben Eater op YouTube zijn in dat opzicht een aanrader. Een CPU opbouwen met TTL chips en daarna de basis van een 6502 demonstreren waar hij nu, jaren later, nog altijd af en toe een video voor uitbrengt zoals hoe je seriele communicatie kunt opzetten met je computer of een toetsenbord verbind.
Oh, ziet er cool uit. Gelijk eens proberen straks!
ik raad COMP1917 (https://wiki.cse.unsw.edu.au/info/COMP1917) aan, door Richard Buckland, gegeven aan de University of New South Wales (UNSW) na een paar uurtjes snap je het zonder dat er iets magisch overblijft.
Zeker, zo te zien was dit geschreven in assembly wat eigenlijk ook weer een programmeertaal is. Assembly hebben ze moeten programmeren in opcodes, iets dat ik weer deed in MSX BASIC een afgeleide van deze BASIC.

Codes van assembly instructies in een boekje opzoeken, de juiste volgorde van nummers in een basic DATA segment zetten en die met een FOR NEXT loop met POKE in het geheugen zetten om aan te roepen via CALL naar het geheugen address dacht ik.

[Reactie gewijzigd door PuzzleSolver op 4 april 2025 15:27]

Dit was cross-compilatie op de PDP-11 dus de Assembly calls moesten ergens (door iemand manueel geschreven) omgezet worden naar opcodes.

Daarnaast waren veel wiskunderoutines ook hard-coded met lookup tables (dus op voorrand het resultaat berekenen) en hopelijk heb je daar ook geen foutje gezet.

Ik vind het wel aardig dat er in het midden van het ding opeens in potlood over reserveren van een vliegtuig staat geschreven.

[Reactie gewijzigd door Guru Evi op 4 april 2025 22:46]

Voor de geïnteresseerden: die opmerking over de reservering staat op pagina 98.
Haha totdat je formele talen en automaten als vak hebt gehad. Dan zie je dat het maken van een taal een hele wetenschap op zich is (compleet met wiskundige/logica bewijzen over benodigde geheugen ruimte , hoe moeilijk het is om te compileren/interpreteren etc).
De cursus 'compiler design' van Stanford is gratis te volgen en erg informatief. Mocht je interesse hebben dan is dat zeker de moeite waard.
Je programmeert eigenlijk geen programmeertaal, je programmeert een compiler (of interpreter).
Een compiler is een programma dat commandos in (meestal voor mensen leesbare) textvorm vertaalt in andere commandos die direct door de CPU kunnen worden uitgevoerd. Het zit um dus vooral in het vertalen van de commandos. Dat is allemaal niet zo magisch.
Waar het magisch begint te worden (althans, voor mij) is wanneer je een compiler schrijft (voor een bepaalde taal, zeg, C) in bijvoorbeeld assembly en dan vervolgens een versie maakt van dezelfde compiler maar dan geschreven VOOR die compiler, dus in een taal die je vorige versie van je compiler kan omzetten naar iets dat je CPU snapt. Je kunt vanaf dan dus de oude versie van eigen compiler gebruiken om de volgende versie van dezelfde compiler te bouwen. En dan heb je een nieuwe, betere versie van je compiler die je vervolgens weer kunt gebruiken om een nog betere versie te maken die je met de vorige versie kunt compileren, etc, etc, etc..
We hadden destijds (90's) Compilerbouw op de HTS. Geen idee of vakken als dat nog bestaan.
In de jaren 00 was compilerbouw zeker ook nog een vak op de uni.
Wat ik vooral bijzonder vind is dat Bill Gates en Paul Allen deze code helemaal zelf hebben geschreven. De meeste CEO’s van grote softwarebedrijven zijn managers die maar beperkt verstand hebben softwareontwikkeling, terwijl deze beide heren 50 jaar geleden die-hard programmeurs waren. Baanbrekend met de populariteit van de software die ze hoogstpersoonlijk schreven, baanbrekend dat ze dat succes wisten uitbouwen tot een van de grootste softwarebedrijven ter wereld - dat maakt de beide oprichters van Microsoft tamelijk uniek.
Heel veel Linux code (75%) wordt door commerciële software bedrijven geschreven. Leuk die utopie van al die coders die gratis zouden werken, maar toch niet helemaal de realiteit.
Wat @Tomatoman bedoelt is dat de CEO's van Microsoft ook werkelijk de core-business begrijpen en beheersen. Alsof de CEO van Hak vroeger zelf zaadjes kon planten, laten groeien, oogsten en wecken op een unieke manier die wereld veranderde.

Bij de veel bedrijven mag je blij zijn als een manager überhaupt snapt wat er op de werkvloer gebeurt, laat staan werkelijk begrijpt, zelf kan, en unieke skills heeft.
Het is een zeer succesvollen samenwerking geweest. Dat is bewezen.
Wat ik vooral bijzonder vind is dat Bill Gates en Paul Allen deze code helemaal zelf hebben geschreven. De meeste CEO’s van grote softwarebedrijven zijn managers die maar beperkt verstand hebben softwareontwikkeling, terwijl deze beide heren 50 jaar geleden die-hard programmeurs waren.
Indertijd waren het wel vooral nerds/techneuten die software- en hardware bedrijven startten.
...De meeste CEO’s van grote softwarebedrijven zijn managers die maar beperkt verstand hebben softwareontwikkeling, ...
Je kunt je afvragen of dat een voordeel of nadeel is.
Als je weet dat je ergens weinig kennis van hebt, zal je eerder geneigd zijn onbevooroordeeld te informeren naar mogelijkheden bij experts.
Als je, op basis van zeer verouderde ervaring, denkt relevante kennis te hebben, dan kan dat ook tot allerlei moeizame discussies leiden.
De Altair 8800 die Gates gebruikte was zeg maar de eerste populaire microcomputer voor de massa. Mensen gingen in tentjes bij de fabriek kamperen om hun kit op te halen. En de Altair werdt gekloond door Imsai, die met de Imsai 8080 de eerste kloon op de markt bracht. Deze is te zien in Wargames, waar de jonge held inbreekt in een geheim computersysteem van defensie.
Ik heb even slordig rondgekeken, en ik vond het volgende youtube-filmpje :) :
https://www.youtube.com/watch?v=TxU_3dEJ2nM

Oude magie! Geweldig.
Nostalgie.

Ene meneer "CuriousMarc" toont:
- het binnenste van de Altair 8800;
- de gammele seriele kaart die hij aan de praat heeft gekregen;
- die kaart was noodzakelijk om een teletype aan de Altair te hangen (voorloper van een terminal);
- hij voert rechtstreeks op de Altair een echo-programmaatje in, als demo. Om toetsaanslagen te lezen en terug te voeren naar papier;
- vanaf dat moment kun je fatsoenlijk met de Altair praten - niet langer via die schakelaars die 8 of 16 bits voorstellen;
- hij voert een heuse "bootloader" in, met een lengte van pakweg 30 stappen. Die is nodig om de paper tape te kunnen lezen. Op die tape staat, jawel: deze MITS Basic van die PDF.
- de paper tape wordt gelezen en BINGO de teletype wordt wakker, presenteert een melding en de boel draait.

Even later zie je eigenlijk precies dezelfde stappen, maar dan moderner. Eerst op een TRS80. Ook daar ga je booten, de Basic wordt geladen, en je krijgt ook weer zo'n gereedmelding op scherm. Inclusief dezelfde vraag naar "hoeveel RAM?".

En daarna zie je: de Apple II die de Basic "gewoon" in ROM heeft.

edit: tikfout

[Reactie gewijzigd door Farmeur op 4 april 2025 21:13]

Ik heb wel vaker dergelijke filmpjes bekeken. Vintage computing. Meestal hebben ze dan zo'n oud kreng ergens op de kop getikt en moeten ze 'm weer aan de praat krijgen. Heerlijk hoe mensen daarmee bezig kunnen zijn. Ik kom niet helemaal uit dat tijdperk, maar ben 'pas' met de ZX81 met computers beginnen. Primitief genoeg for my taste... :+

Het leukste is nog een gast die in Chernobyl zit en de oude computers van de kerncentrale (ja, die...) aan het restaureren is.
Helaas is CuriousMarc zijn Engels een beetje irritant, maar de man is een expert in oude elektronica en computers. Hij heeft oa ook Apollo computers en elektromechanische Soyuz klokken gerepareerd. Zeker een aanrader!
Er zijn ongeveer 25.000 van gekocht en van de Imsai bijna 20.000. Dus dat voor de massa viel nogal mee. Daarvoor waren ze nog veel te ingewikkeld en beperkt.
De 'Trinity' dwz Apple II (5+ miljoen), CBM PET (219.000) en TRS80(2.4 miljoen) waren de eerste populaire microcomputers voor de massa. Maar uiteraard waren ze een inspiratie voor velen en hadden ze een belangrijke rol in oa de Homebrew computer club!
Er zijn ongeveer 25.000 van gekocht en van de Imsai bijna 20.000. Dus dat voor de massa viel nogal mee. Daarvoor waren ze nog veel te ingewikkeld en beperkt.
Je vergeet dat 'de massa' zoals we dat nu kennen, niet bestond. Een computer thuis was een rariteit, omdat de computers die de mensen kenden, een paar honderd kilo wogen. Dus dit was revolutionair en - voor die tijd - voor de massa gemaakt.
Ik vind daarbij de term 'massa' dus ongelukkig, omdat het hier om voor namelijk een stel mensen ging met vrij gespecialiseerde kennis,bovengemiddelde opleiding en inkomen. Het was dus om meer dingen een 'rariteit' omdat 'de massa' totaal nog niet vertrouwd met het fenomeen was en vrij ingewikkelde randapparatuur gebruikte als switches op het front panel of een dumb terminal. De soldeerbout kwam er ook nog menigmaal aan te pas als je de overgebleven hobbyistencomputers ziet. (Die Nederland eigenlijk grotendeels voorbij is gegaan)
De homecomputer revolutie was dit nog niet. De 'hobbyisten'computer was echt een heel wat lastiger ding om te bedienen als je dat vergelijkt met die computer van 2 jaar later die op een tv was aan te sluiten en software van een doodnormale tape inlaadde.
Maar dit heeft het wel in gang gezet. Het succes van deze computers maakte de weg vrij voor de ontwikkeling van microcomputer als de TRS80 e.d.

Het gaf aan dat er, ondanks de compexiteit van deze apparaten, relatief veel belangstelling was. Het gaaf ook aardig wat publiciteit (onder de nerds), dus de markt is wel rijp gemaakt voor praktischere systemen. Het is een evolutionair proces geweest. De een kon niet zonder de ander. Misschien kan ik beter zeggen dat de Altair en vergelijkbare computers de aanzet waren tot de massamarkt.
Ja dat inderdaad wel. :)
Bill Gates, "Open Letter to Hobbyists", 1976:
Almost a year ago, Paul Allen and myself, expecting the hobby market to expand, hired Monte Davidoff and developed Altair BASIC. Though the initial work took only two months, the three of us have spent most of the last year documenting, improving and adding features to BASIC. Now we have 4K, 8K, EXTENDED, ROM and DISK BASIC. The value of the computer time we have used exceeds $40,000.

The feedback we have gotten from the hundreds of people who say they are using BASIC has all been positive. Two surprising things are apparent, however, 1) Most of these "users" never bought BASIC (less than 10% of all Altair owners have bought BASIC), and 2) The amount of royalties we have received from sales to hobbyists makes the time spent on Altair BASIC worth less than $2 an hour.

Why is this? As the majority of hobbyists must be aware, most of you steal your software. Hardware must be paid for, but software is something to share. Who cares if the people who worked on it get paid?

Is this fair? One thing you don't do by stealing software is get back at MITS for some problem you may have had. MITS doesn't make money selling software. The royalty paid to us, the manual, the tape and the overhead make it a break-even operation. One thing you do do is prevent good software from being written. Who can afford to do professional work for nothing? What hobbyist can put 3-man years into programming, finding all bugs, documenting his product and distribute for free?
Hij kon toen nog niet bevroeden dat er later heel wat werk verzet zou worden door "hobbyists" die "professional work for nothing" zouden gaan doen, en dat Linux een doorslaand succes zou worden. Voor Bill was het duidelijk: software gebruiken zonder te betalen is stelen, en zonder rechtstreekse compensatie van de gebruikers is software niet te schrijven. Hij had natuurlijk wel een punt -- voor niks gaat de zon op -- maar tegelijk miste hij ook een enorm aspect aan wat software winstgevend maakt, en later zou Microsoft zelf er alles aan doen om te zorgen dat Windows op elke computer terecht kwam, tot aan illegale praktijken aan toe. En dan hebben we het nog maar niet over waar BASIC vandaan komt, want Bill & co. hebben het niet bedacht!

En nu mogen we het product van Bill eindelijk legaal gratis bewonderen, da's dan wel weer mooi. Zo zie je maar hoe het kan lopen.
En nu mogen we het product van Bill eindelijk legaal gratis bewonderen, da's dan wel weer mooi. Zo zie je maar hoe het kan lopen.
Dat is niet helemaal waar. We mogen een (matige) scan van een print out van een versie van de source code bekijken. Dat is toch wat anders.
Open-source is ten slotte ook maar een strategische alliantie. Uiteindelijk wordt er wel geld mee verdient.

Wie dat niet doet, houdt het ook niet vol.
Heel veel software is niet bedacht door de partij die het geschreven heeft. De taal Basic was in het public domain en ontwikkeld door academici. Het is niet dat hij letterlijk de source code heeft gekopieerd van een bestaande Basic versie en hij heeft zelfs handige functies aan toegevoegd. (oa CLS) Er zijn tig commerciele versies van niet alleen Basic, maar ook C, Pascal etc etc.
Dit leest eerder als een reactie die elders in de draad hoort? Want hoewel je volkomen gelijk hebt zie ik het verband met mijn post niet echt. (Overigens zou "CLS" pas veel later onderdeel van het repertoire worden -- beeldbuizen waren buiten bereik van een Altair-gebruiker.)

[Reactie gewijzigd door MneoreJ op 5 april 2025 22:46]

". En dan hebben we het nog maar niet over waar BASIC vandaan komt, want Bill & co. hebben het niet bedacht!"
Daar reageerde ik op. Bill Gates was er niet tegen dat mensen een eigen versie van Basic uitbrachten , maar dat ze zijn werk... MS Basic... kopieerden zonder MS te betalen.
En CLS was inderdaad later maar een voorbeeld van wat origineel niet bij Basic hoorde (Basic stamt nog uit de tijd van teletypes) en waarvoor dus eigenlijk toestemming voor nodig was omdat in andere versies van Basic te gebruiken. (Ik dacht dat het van MS afkomstig was, maar de wikipedia noemt Microsoft niet als bedenker dus was het een slecht voorbeeld.)
In de tijd van de Altair waren terminal schermen al wel beschikbaar, maar nog wel erg prijzig. Maar aangezien in 1975 een kant en klare Altair 8800 695 dollar was en een ADM-3A 995 dollar lag dat nog wel in het bereik van de Amerikaanse hobbyist. Vergeet niet dat een Apple II in 1977 1298 dollar kostte!
Ja, ik snap Bill's punt wel, maar tegelijk blijft het ironisch: de reden dat BASIC uberhaupt zo populair en succesvol kon worden was nou net dat het idee vrij beschikbaar was. Had hij niet Altair BASIC gemaakt maar een of ander eigen taaltje dan had hij het een stuk minder aan de man kunnen brengen. Hij zag er geen enkel been in om mee te liften op het werk dat anderen voor de publieke zaak gedaan hadden, maar o wee als de hobbyisten zijn BASIC kopieerden! En ja, het gaat hem dan natuurlijk precies om de term hobbyisten: Bill was een zakenman, maar eisen dat alle hobby-bobbies op dezelfde manier moeten dokken als mensen die je product zakelijk gebruiken is gewoon niet zo realistisch.
Maar aangezien in 1975 een kant en klare Altair 8800 695 dollar was en een ADM-3A 995 dollar lag dat nog wel in het bereik van de Amerikaanse hobbyist.
In 1975 was er nog geen ADM-3A, die kwam pas in het najaar van 1976 -- en dan nog heb je het over een scherm dat 1.5 keer de prijs van de computer is. Toegegeven, de Altair zat net op de rand van die revolutie, maar wel nog duidelijk ervoor. In die tijd gingen de ontwikkelingen natuurlijk zo snel dat een paar maanden al enorm verschil maakten.
Nogmaals het stond diezelfde kopieerdende hobbyisten vrij om hun eigen versie van Basic op de markt te brengen. Maar die hobbyisten wouden MS Basic omdat dat een goed ontwikkelde versie was. Ik zie daar echt geen goed excuus in. (Dat vind ik dan weer ironisch. Aan de ene kant de inbreng van Microsoft neerzetten als iets wat geen vergoeding rechtvaardigde, maar mensen wouden wel persé die versie hebben)
Basic was ervoor iets wat via terminals en modems op grote mini computers draaide en dus nog 'niet vrij beschikbaar' Buiten universiteiten en wat elite middelbare scholen zoals die van Bill Gates&Paul Allen was Basic voor die tijd niet wijdverspreid. Dat is toch echt aan de vele versies van Microsoft te danken.
Wozniak werkte eerst voor HP en Jobs voor Atari. Hadden die dan hun daar opgedane kennis ook niet mogen gebruiken voor een commercieel product waar geld voor gevraagd wordt?
The model 33 Teletype kostte ook rond de 1000 dollar. Het alternatief... een computer van 'The Trinity' was pas in 1977 dus zullen er ook hobbyistencomputers met Basic en een terminal uitgerust zijn.
En wat dat betreft : "een of ander taaltje" : Bill Gates niet alleen Basic uitgebracht, maar een heel reeks aan software met andere computertalen voor dat MS Dos een ding was. Microsoft was toen nog veel te klein om op een paard te wedden. Eigenlijk was hij daarna niet zo lang actief meer als programmeur (die regelmatig 'programmeerdagen' maakte van 32 uur) en meer als de directeur die de verschillende afdelingen aanstuurde.

P.S, Ik ken een verhaal over een Nederlandse professor die zelf voor thuis een IBM system32 had aangeschaft half jaren 70. Hobbyisten zijn best wel bereid om veel te betalen en vaak knettergek

[Reactie gewijzigd door AtariXLfanboy op 6 april 2025 00:14]

Nogmaals het stond diezelfde kopieerdende hobbyisten vrij om hun eigen versie van Basic op de markt te brengen. Maar die hobbyisten wouden MS Basic omdat dat een goed ontwikkelde versie was. Ik zie daar echt geen goed excuus in.
Een hobbyist brengt juist geen "dingen op de markt" maar wil gewoon de computer kunnen gebruiken. Als je dat dan ofwel kunt doen door met de hand de schakelaartjes van de Altair te bedienen, of extra te dokken voor je eigen exemplaar tape, of door je maat aan de uni te vragen even een kopietje te trekken van BASIC... dan snap ik wel welke kant het kwartje op valt. Netjes? Nee. Maar wel hoe hobbyisten te werk gaan. Destijds in ieder geval, en nu nog wel natuurlijk. BASIC hoorde voor de gebruiker ook gewoon bij de computer, en je "eigen" werk was wat je daar bovenop bakte.
En wat dat betreft : "een of ander taaltje" : Bill Gates niet alleen Basic uitgebracht, maar een heel reeks aan software met andere computertalen voor dat MS Dos een ding was.
Ik bedoelde uiteraard een compleet zelfbedachte programmeertaal. Dat had gekund, en zou waarschijnlijk een stuk makkelijker zijn geweest om in 4K gepropt te krijgen met andere compromissen, maar men koos natuurlijk met reden voor BASIC.

[Reactie gewijzigd door MneoreJ op 6 april 2025 00:20]

De andere hobbyisten hadden ook een freeware versie van Basic kunnen maken. En omdat ze gewoon de computer willen gebruiken verkocht Microsoft hun eigen versie aan computerfabrikanten (zoals voor de 32.000 flat fee aan Apple)
Het is iig geen rechtvaardiging omdat er al een 'Basic standaard' bestond dat dan de volgende versies allemaal maar gratis moeten zijn. Daarom stond Bill Gates volledig in z'n recht om mensen op dat kopiëren aan te spreken. Ik ben te jong , maar waarschijnlijk was het bij mij ook aan dovenmansoren gericht geweest.
Hobbyisten die inclusief teletype bijna 2000 dollar (al gauw een auto in die tijd) aan een computer uitgaven konden meestal best wel een legale versie betalen. Dat waren over het algemeen een stuk kapitaalkrachtigere mensen dan de latere homecomputergebruiker die tapes met computerspelletjes kopieerden.
De hobbyist was meestal gewend dat op z'n universiteit of techbedrijf de echte kosten verborgen waren of niet bestonden. Veel software in die tijd was gewoon een werkstuk om af te studeren of zelfs te promoveren.
De originele ontwikkelaars van Dartmoor Basic Kemeny & Kurz werden gewoon als medewerkers betaald en was het onderdeel van hun educatieve taken om een eenvoudige programmeertaal te schrijven. Die hoefden zich dan ook niet druk te maken of er voor zichzelf en ondergeschikten wel brood op de plank kwam. Bill Gates moest dat wel.

P.S. Wisten jullie dat Atari Basic dus geen variant van Microsoft Basic was? En zo zijn er nogal wat meer : Wikipedia: BASIC

[Reactie gewijzigd door AtariXLfanboy op 6 april 2025 01:01]

Tja, ze waren bij MS jong en wilden de wereld bestormen. Maar ze gebruikten zelf ook genoeg gekopieerde software, hoor. Iedereen deed het :) ... Ik vind ze eigenlijk ook nog vrij mild wat die tekst betreft. Ze lijken enigzins begrip te hebben voor de kopieerders, maar ze wilden er wel op wijzen dat ze er werk in hadden gestoken en er geld aan wilden verdienen.
Later is microsoft ook niet erg hard geweest tegen kopieerders, o.a. omdat ze begrepen dat de meeste hobbyisten het er gewoon niet voor over hadden om dat soort zaken te kopen. En ze begrepen dat de kopierende nerd van nu straks mischien de baas is van een miljardenbedrijf dat dan wel software nodig heeft en het kan betalen.
Die hoefden zich dan ook niet druk te maken of er voor zichzelf en ondergeschikten wel brood op de plank kwam. Bill Gates moest dat wel.
Ja, maar goed, ze kozen er ook bewust voor om een softwarebedrijfje op te richten terwijl ze wisten dat er aan die hobbyisten geen droog brood te verdienen viel.. :)
Daarom verkochten ze hun basic in licentie aan hardware producenten. 32.000 dollar (van Apple) was best veel voor die tijd hoor. Maar als iedereen maar vrij MS Basic kopieerde dan was de interesse van hardware producenten natuurlijk voor licentie ook zeer minimaal. Met de kennis van nu had Bill Gates gewoon beter kunnen zeggen : Die 4k versie zonder floating point is shareware! En dan voor de uitgebreide versie laten betalen. Maar vergeet dus niet dat dit 1975 was.
Het is niet dat hij letterlijk de source code heeft gekopieerd van een bestaande Basic versie en hij heeft zelfs handige functies aan toegevoegd. (oa CLS)
Heh, dat wist ik nog niet, maar het lijkt een logische ontwikkeling. De meeste I/O op 'grote' computers in de jaren 70 was via telex-achtige apparaten, dus een soort typmachine/printer combo's, en daarvoor ook veel op ponskaarten, en dus niet op schermen.
Rond de tijd dat MS basic geschreven was werden monitoren steeds populairder als uitvoerapparaat en dus was een functie als CLS opeens erg handig.
Daar ging ik wat de mist in omdat de Atari 8bit Basic (geen versie van MS Basic) maar PRINT CHR$(125) gebruikte en ik ooit gelezen had dat dit was omdat CLS geen onderdeel van het vrije Basic dialect was vanwege rechten van Microsoft. Zo kan misinformatie een jaartje of 35 later weer opduiken 8)7
(Uiteraard werkt Graphics 0 ook om het standaard textmodescherm leeg te krijgen)
Ik geloof dat ik me nog wat verder inlezen over het onderwerp. De eerste video terminals waren er al in 1965. Peperduur, maar zo was de rest van de hardware in die tijd. Ook een teletype was duur en ook nog eens log. Menig teletype zal rond 1976 als tweedehandsje op de kop zijn getikt toen inderdaad video terminal populair begon te worden.
Deze hobbycomputers werkten sowieso met vrij simpele seriële input en output. Het laden van Basic programma van een papierentape was voor de machine hetzelfde alsof het ingetiept werd. En het schrijven naar het scherm/printer was dan ook characterbased en dus niet memorymapped.
Was die broncode niet véél langer bekend door hackers, onderzoekers, techneuten, of is dat zolang geheim gebleven?
Was dat niet MS-DOS? De broncode van verscheidene versies is op GitHub te vinden.
Die is een tijd geleden vrijgegeven idd
Natuurlijk is een 4/8/12 Kb basic terug te leiden naar assembly source code. Maar dan nog mis je de namen van constanten, switches ed die tijdens het assembleren zijn omgezet. Je moet nog al een stuk bladeren in de source voordat je bij de daadwerkelijke 8080 assembly code van de editor/interpreter bent.

[Reactie gewijzigd door AtariXLfanboy op 5 april 2025 12:21]

Heel lang geleden heb ik een disassembly van de MSX bios en grafische modules doorgeplozen, dat was allemaal behoorlijk leesbaar zonder commentaar hoor. Als je voldoende in de materie zat waren die simpele processors nog prima te doorgronden.
Hetzelfde later voor de ARM1/2/3, super simpel in de basis, alleen echte algoritmen moet je eerst herkennen voor wat ze moeten doen om het volledig te doorgronden.
Maar de bios en grafische modules nog veel sterker zijn heel machine specifiek gericht. Het interessante in deze source code met commentaar is hier dat er een hoop parameters en switches zijn zodat als je die veranderd na een hercompilatie ook op hele ander OS of hardware kan draaien. Die informatie krijg je niet terug.
Assembly code = 100% voor een specifieke processor.
Er is geen sprake van hercompilatie dus.

Voor de ARM processoren programmeerde ik beeld- en videoverwerkingssoftware. De DCT/iDCT module was veel te traag en heb ik toen vervangen door een in assembly geoptimaliseerd Chen algoritme toegespitst op het (relatief grote) aantal vrije registers van de processor. Het idee is herbruikbaar, maar verder kan je er op een andere processor echt niets mee.
In snelheid was het een factor drie ten opzichte van de C compiler.

Voor je idee: mijn ARM3 destijds liep op 25mHz, dus je kan je voorstellen dat die niet bepaald ruim in z'n vel zat als het om beeld en video ging.

[Reactie gewijzigd door mawashigeri op 5 april 2025 21:57]

Ik snap je punt hier niet. Er waren in die tijd maar enkele verschillende processors (uit m'n hoofd 8080, Z80 , 6502 en 6800) voor de eenvoudige computer thuis beschikbaar, maar wel veel verschillende configuraties van de hardware dat dus uit meer als een processor bestaat. Maar juist ook als je van de ene processor overstapt naar de ander is het iig erg handig dat je deze informatie hebt. Er zijn bv ook oa cross compilers die veel van het daadwerkelijke overzetten naar de verschillende instructies eenvoudig kunnen maken.
Assembly code wordt niet (echt) gecompileerd, het is een vrijwel 1:1 representatie van de binaire code.
De Z80 instructieset was feitelijk een uitbreiding van 8080 maar 'echte' Z80 code moet je dus herschrijven voor de 8080 omdat er een hoop instructies (en registers) missen.
Andere processors zoals de 6502 waren echt totaal anders.
Sorry maar : nonsens. Het is geen 1:1 representatie. Weet je wel van het bestaan van cross-compilers af? De eerste versie MS Basic was dus niet gecompileerd op een 8080 maar op een PDP10 CPU! De emulator was om te testen of de code ook daadwerkelijk werkte.
Natuurlijk zou de assembly code in dat geval flink aangepast moeten worden maar daar zit met assembly enigzins een abstractie laag tussen. De constanten en switches die hier gebruikt worden maken het niet simpel op, maar wel eenvoudiger. En het ontgaat je blijkbaar dat de Z80 een uitgebreidere versie van de 8080 is en 6502 sterk lijkt op de 6800.
En nogmaals, want het belangrijkste deel van mijn vorig reactie negeer je : Er waren dus maar een paar verschillende processors beschikbaar voor deze hobbyistencomputers, maar binnen een paar jaar tig verschillende versies van de hardware. De hoeveelheid toen nog kostbare RAM geheugen was bv nogal een ding wat betekent dat je in sourdecode rekening mee moet houden hoe groot de stack kan worden en dus hoeveel variabelen ed je kunt gebruiken!

P.S. Nog even gekeken in de source code : De eerste specifieke assembly code dat vertaald naar machinecode zal worden (dwz binaire code in geheugen) staat volgens mij op bladzijde 9. : JMP INIT waar 'INIT' een label is die de assembler vertaalt naar een geheugen adres. De grap is daarbij is ook nog dat niet alleen de 8080 maar ook veel andere processors zoals de 6502 dezelfde assembly code/mnemonics voor een jump instructie kennen.

[Reactie gewijzigd door AtariXLfanboy op 6 april 2025 14:15]

Laat maar. Als je zelfs 'De Z80 instructieset was feitelijk een uitbreiding van 8080' interpreteert als 'het ontgaat je blijkbaar dat de Z80 een uitgebreidere versie van de 8080' wordt het lastig.
Een assembler helpt met symbolische beschrijving van geheugenadressen en het coderen van getallen in opcodes, dat is echt wat anders dan een compiler. Iedere redelijke disassembler geeft je dat gewoon weer terug vanuit de machinecode. Geen idee of je ooit assembler geprogrammeerd hebt, maar je geeft me niet de indruk ervaring te hebben.
Je kennis is blijkbaar beperkt.
Wikipedia: Z80
"Hij werd uitgebracht in 1976 en is in essentie een processor die compatibel is met de 8080 van Intel, maar met meer instructies, registers en adresseringsmethoden."
Heb ik gezegd dat een compiler hetzelfde is als een assembler? En je kunt gaan muggenziften over wat een assembler is, maar kijk eens even naar de source code als je iig ook maar enig benul over het onderwerp heb. Zelfs in 1975 is een assembler al veel meer dan het dom vertalen van mnemonics (assembleertaal) naar machinecode. Je ontgaat blijkbaar compleet de 8... let wel... 8 bladzijden zonder assembleertaal (dwz mnemonics) die niet direct om te zetten zijn in machinecode in het geheugen.
(En als je me echt op een vout had willen wijzen dan zou je kunnen wijzen op de DI instructie.)

P.S. Je laatste opmerking maakt je volstrekt belachelijk tov de complete onbenulligheid over het onderwerp die jezelf ten toon spreidt. Wikipedia: Dunning-krugereffect.
Vooruit, nog 1x dan: ik schreef "de Z80 instructieset was feitelijk een uitbreiding van 8080" en herhaalde dat nog eens omdat het je de eerste keer ontgaan was... en je blijft het daarmee oneens om vervolgens precies dat te kopiëren van wikipedia.
De context van die opmerking ontgaat je blijkbaar compleet. Code geassembleerd voor de 8080 , zoals deze source code, draait in veel gevallen gewoon op een Z80 en in die trend maakte ik dus de opmerking waar je op een totaal niet ter zake doende manier op in ging. Er was in weze dus slechts maar 1 veelgebruikte processor bij hobbyistencomputers (De 6800) waar dus de code flink voor veranderd diende te worden.
Je begint irrelevante onzin uit te kramen over bijzaken terwijl je dus blijkbaar nog steeds niet snapt waarom die eerst 8 bladzijden zonder assembleertaal die dus niet rechtstreeks wordt omgezet in machinecode relevant zijn. En dat dit niet alleen om het type processor gaat, maar dus om andere verschillen in de hardware destijds.
Wat klopt hier niet aan jouw reactie waardoor ik sterk betwijfel of je competent genoeg bent om het te snappen? (Vandaar dat ik nog ff met de wikipedia van de Z80 kwam)
De Z80 instructieset was feitelijk een uitbreiding van 8080 maar 'echte' Z80 code moet je dus herschrijven voor de 8080 omdat er een hoop instructies (en registers) missen.
Deze source code was voor de 8080. Je hoeft dus geen Z80 code te herschrijven naar de 8080 ZUCHT :D

[Reactie gewijzigd door AtariXLfanboy op 8 april 2025 00:58]

Tja, je had het zelf over "hele ander OS of hardware", die hardware is dan dus geen Z80.
Ik ben niet competent genoeg te begrijpen dat je toch de Z80 bedoelde, dus je hebt gelijk.
Van wikipedia :
"Een compiler (Nederlands voor samensteller of opbouwer) is een computerprogramma dat code in de ene formele taal (de brontaal) vertaalt naar code in een andere formele taal (de doeltaal). Dit vertaalproces wordt compilatie of compileren genoemd."
Deze PDP10 8080 assembler heeft enige compiler functies in zich die volop in de eerste 8 bladzijden ingezet worden.
En mijn niet gebutcherde opmerking was :
Het interessante in deze source code met commentaar is hier dat er een hoop parameters en switches zijn zodat als je die veranderd na een hercompilatie ook op hele ander OS of hardware kan draaien. Die informatie krijg je niet terug.
Ik noem hier 'met hele andere hardware' niet specifiek een andere processor. Die Z80 kwam jij mee opdraven in een opmerking die vooral je eigen ervaring benadrukte.

P.S. Een Assembler die machinecode maakt voor een andere computer dan waar het assembler programma zelf op draait heb ik iig meestal als crosscompiler beschreven zien worden. Formeel zou je het denk ik 'crossassembler' kunnen noemen?

[Reactie gewijzigd door AtariXLfanboy op 8 april 2025 02:55]

Leuk om weer eens 8080 assembler language te zien, de compiler uitdraai in dit geval.

Wat me opvalt is het uitgebreide commentaar in het programma.
Ik heb vanaf eind jaren '70 veel IBM Mainframe assembler programma's geschreven en gezien, maar commentaar toevoegen was vaak een ondergeschoven kindje.
Dat vele commentaar is vereist als je ASSEMBLY programmeert. Het is geen C of iets dergelijks, het is echt zeer low level, je hebt een betere computer nodig dan het doel systeem als je wilt bereiken zoals Bill Gates dat heeft gedaan. In hun geval was dat waarschijnlijk de PDP 11, in die tijd wat je tegenwoordig omschrijft als een supercomputer.

Vergelijkbaar met hoe Konami games ontwikkelde voor de MSX zoals Kings Valley, dat kon niet op de MSX zelf.

Elders leg ik uit hoe je verschil tussen functie calls kan ontdekken en ik moet daarbij eerlijk zijn dat je makkelijk kan indelen op functie calls maar niet op wat die functie exact doet. En je raadt het al, die comments zeggen wat als je eenmaal op dat adres zit met de CPU die adres opcode uitvoerend gaat doen.
Bill Gates lijkt me een pietje precies als het om het vastleggen van zowel het commentaar in zijn programmacode als bv het vastleggen van juridische contracten ed van z'n bedrijven. Dat heeft hem geen windeieren gelegd en in het geval van het commentaar en de vele constanten en switches in deze source code hielp dat natuutlijk om MS Basic om te zetten naar verschillende hardware. De grote verdienste van Microsoft is iig wel dat men zoveel standaarden in de computerjungle destijds wist te bewerkstelligen.
@Terry A Davis @mawashigeri

Helemaal gelijk hoe nodig commentaar bij assembly was, maar daarom deed niet iedereen het even zorgvuldig.
Als je de hele dag niets anders deed dan assembly, kon je goed lezen wat er gedaan werd.
Het probleem ontstond als je (jaren) later een programma van iemand anders moest aanpassen, dan was het wel handig als die erbij gezet had, wat er gebeurde en waarom.

Waarom heb je in C geen commentaar nodig? Ik las IBM assembler net zo makkelijk als hogere talen in pseudo Engels. Zelfs de CCW's van channelprograms (de instructies voor de I/O processor om I/O te doen) schreef/las ik op een bepaald moment ook.
Nou, ik heb destijds veel Z80 assembly geschreven en vrijwel iedere mnemonic die niet 100% zelfverklarend was kreeg een paar opbeurende woordjes erbij!
Deze PDF neemt heel wat meer geheugen in beslag dan die code.... Tijden veranderen :)
Het zijn dan ook afbeeldingen, en geen tekst. Begrijpelijk maar ook jammer.
Ik begrijp het niet, kun je het me uitleggen?

Zo ongeveer het enige dat ik kan bedenken is dat het een soort kopieerbeveiliging is en dat plaatjes het lastiger maken om de tekst te kopieren, maar dat is natuurlijk geen echte beveiliging en Bill Gates weet echt wel beter, dat kan het dus niet zijn.

Het enige andere dat ik kan bedenken is dat hij zelf geen toegang meer heeft, bv omdat de source op diskettes staan die praktisch onleesbaar zijn op moderne computers. Ook dat lijkt me hoogst onwaarschijnlijk voor iemand met de kennis (en het vermogen) van Bill Gates.

Mis ik iets?
Volgens mij mis je niets.
Het lijken scans van een print te zijn, dat maakt het groter.
Puur tekst zou minder ruimte hebben gekost.
Wel of geen kopieer beveiliging zal Bill Gates volgens mij in dit geval niet meer zo veel boeien.
Je onderschat volgens mij de waarschijnlijkheid dat er geen leesbare digitale versies meer zijn.
Het is jammer omdat een tekst beter te gebruiken is dan plaatjes (bijvoorbeeld bij zoeken)
Er zal vast wel iemand een ocr scan overheen uitvoeren en de code op GitHub zetten.
Ziet er gewoon erg oud en authentiek uit op deze manier.... ;)
De reden staat boven aan de listing: "File will be deleted after printing". 8)7
10 september 1975 geprint, bizar. Toch benieuwd of er straks iemand komt die de code volledig gaat reviewen, of de originele code inderdaad de 'coolste' is die toen was geschreven.
Het gaat er toch niet om dat het DE coolste code is. Het gaat erom dat GATES het de coolste code vindt die ze toen hebben geschreven.

Stukje semantiek.
Het gaat erom dat Gates het de coolste code vindt die HIJ OOIT heeft geschreven.

Stukje semantiek :+ .

De coolste die ze toen hebben geschreven vindt ik zelf de code die Allen aan boord schreef op de heen weg.
Hier kan je toch een OCR-pakketje op loslaten? Heb nu geen pc voor mij staan, anders had ik dat gelijk even geprobeerd in Acrobat.
Edit: kwalitatief niet de beste scan..

[Reactie gewijzigd door GEi op 4 april 2025 16:38]

Op dit item kan niet meer gereageerd worden.