Autorem opisu jest Paweł Boguś

Altair BASIC

Paul Allen i Bill Gates William Gates rozpoczął naukę na Harvardzie jesienią 1973 r. Podobnie jak jego przyjaciel, Paul Allen, od czasów szkolnych pasjonował się komputerami. Kupili nawet jeden z pierwszych mikroprocesorów na rynku - Intel 8008. Allen zaproponował wówczas stworzenie interpretera BASIC'a dla procesora i8008, nalegał też, aby założyli firmę zajmującą się mikrokomputerami. Gates uznał jednak, że sam procesor i jego zestaw instrukcji jest zbyt słaby, aby działał na nim BASIC. Pierwszym punktem zwrotnym w ich karierze było ukazanie się styczniowego (1975) wydania Popular Electronics. Zawierało ono zapowiedź sprzedaży pierwszego taniego mikrokomputera Altair 8800 zbudowanego na nowym mikroprocesorze Intel 8080. Firma MITS z Albuquerque, New Mexico, oferowała podstawowy zestaw za 397$ (podczas gdy sam procesor kosztował $360)! Allen pierwszy zobaczył artykuł poświęcony Altairowi i ruszył biegiem przez Harvard Square wymachując pismem, by trzymając je przed twarzą przyjaciela oznajmić "Look, it's going to happen! I told you this was going to happen! And we're going to miss it!". Gates musiał przyznać, że jego przyjaciel miał rację. Wyglądało, że to na co czekali, właśnie się stało. "Pociąg właśnie wyruszył" i jeżeli nie wezmą się zaraz do pracy, to nie znajdą się na jego pokładzie. Obaj nastolatkowie rozumieli, że właśnie tworzy się nowa gałąź przemysłu i że będzie ona potrzebowała języków programowania. Dotychczas nie istniało żadne oprogramowanie dla mikrokomputerów, ponieważ same mikrokomputery nie wychodziły poza teorię i prace eksperymentalne.

Problemem Gates'a polegał na tym, że jego rodzice liczyli na prawniczą karierę swojego syna. Gates musiał wybrać: albo studiować prawo, albo poświęcić cały czas i siły mikrokomputerom. Wybrał to drugie. Gates powiedział później: "We realized, that the revolution might happen without us. After we saw that article, there was no question of where our life would focus." Allen zaproponował stworzenia BASIC'a, prostego języka wyższego poziomu, dla Altaira. Gates i Allen od samego początku byli nastawieni w równym stopniu na tworzenie oprogramowania jak i na zarabianie na nim. Gates zawsze myślał jak businessman. Wiedział, że na rynku jest wiele miejsca dla różnych języków programowania wysokiego poziomu, ale tylko jeden z nich może być "pierwszy". Każdy mógł wziąć udział w rewolucji mikrokomputerowej, ale tylko odpowiedni timing pozwalał nią sterować.

Gates i Allen napisali do Eda Robertsa list o następującej treści: We have available a BASIC language interpreter that runs on MCS-8080 series computers. We are interested in selling copies of this software to hobbyists through you. It could be supplied on cassettes or floppy disks to users of your Altair series microcomputers. [...] If you are interested, please contact us. Podobno Roberts otrzymał go już 2 stycznia 1975, czyli zaledwie kilka dni po ukazaniu się PE z Altairem na okładce (numer styczniowy 1975 ukazał się w grudniu 1974). Ed Roberts doskonale zdawał sobie sprawę z tego, że w obecnej postaci, tzn. bez oprogramowania Altair nie odniesie większego sukcesu. Każdy użytkownik, który upora się z montażem komputera, nie zadowoli się patrzeniem na mrugające światełka i będzie chciał zrobić na nim coś konkretnego, napisać program, rozwiązać jakieś zadanie. A dla początkujących, BASIC jako prosty język programowania wysokiego poziomu, nadawałby się doskonale.

Według jednej z wersji zaintrygowany Roberts natychmiast zadzwonił pod numer podany w liście i zamiast do firmy (Gates i Allen używali wówczas nazwy "Traf-O-Data", firmy założonej przez nich jeszcze w high-school, zajmującej się mierzeniem natężenia ruchu na drogach) dodzwonił się do prywatnego domu w Seattle, gdzie nikt nie wiedział o żadnym liście. Wkrótce Gates zatelefonował do Robertsa. Podczas rozmowy, Roberts był uprzejmy ale też sceptyczny, słyszał już wiele podobnych obietnic, zapytał więc, kiedy mogliby przyjechać do Albuquerque aby zademonstrować swój program. Gates spojrzał na przyjaciela, wziął głęboki oddech i odparł "Oh, in two or three weeks." po czym odłożył słuchawkę, odwrócił się do Allen'a i powiedział "I guess we should go buy a manual.". Obaj poszli prosto do sklepu z artykułami elektronicznymi i kupili podręcznik Adama Osborne'a o procesorze i8080. Podobno w trakcie rozmowy Roberts miał powiedzieć: "We'll buy from the first guy who shows up with one.". Ed Roberts wiedział, że jego Altair 8800 potrzebuje oprogramowania - języka programowania - aby mógł być użytecznym narzędziem, a nie tylko zabawką dla hobbystów. Jedynie hakerzy mogli zadowolić się programowaniem w kodzie maszynowym.

Nastąpiła pewna zwłoka, która nie przeszkadzała żadnej ze stron. Czas był potrzebny zarówno MITS na opracowanie kart rozszerzających pamięć do min. 4 kB (aby zmieścić sam interpreter oraz program użytkownika i dane), jak również Gates'owi i Allen'owi na opracowanie i zoptymalizowanie kodu programu.

Posługując się podręcznikiem opisującym zestaw instrukcji procesora i8080 oraz artykułem z PE zawierającym schemat Altaira, rozpoczęli pisanie interpretera BASIC'a, który zajmowałby nie więcej niż 4 kB. Zresztą, nie musieli pisać od podstaw, gdyż BASIC został udostępniony jako public domain. Użyli fragmentów kodu z różnych wersji interpretera, połączyli z własnym i stworzyli nową wersję przeznaczoną dla Altaira. Musieli ograniczyć rozmiary interpretera, aby użytkownik mógł umieścić w pamięci także kod własnego programu i dane. Nie było to proste. Przy pewnym "upchaniu" kodu i nieco innowacyjnym wykorzystaniu instrukcji procesora udało im się jednak osiągnąć zamierzony cel. Ponieważ nie posiadali własnego Altaira, interpreter był pisany i testowany na minikomputerze DEC PDP-10 w pracowni komputerowej na Harvardzie. Allen pracował nad symulatorem procesora i8080 dla PDP-10, a Gates pisał interpreter dla maszyny, którą widział tylko na zdjęciach i schematach. Testowanie i quot;odpluskwianie" interpretera odbywało na symulatorze. Pozostawało im tylko mieć nadzieję, że symulator wiernie odwzorowuje zachowanie prawdziwego procesora i8080. Po miesiącu gorączkowej pracy Gates ponownie zadzwonił do Albuquerque i zaoferował demonstrację BASIC'a. Gates i Allen zdawali sobie sprawę, że ich BASIC tworzony na symulatorze może nie działać w prawdziwym środowisku i do ostatniej chwili przeglądali kod programu w poszukiwaniu błędów, a podobno w samolocie Allen pisał jeszcze nową procedurę inicjującą (bootstrap routine), którą skrócił z 46 do 17 bajtów.

Po przybyciu do MITS, załadowaniu taśmy do czytnika (Teletype) i wprowadzeniu procedury inicjującej za pomocą przełączników na panelu czołowym, wciśnięty został przycisk START. Taśma przeleciała przez czytnik i ku wielkiemu zadowoleniu wszystkich obecnych, a zwłaszcza Allena, na ekranie ukazał się napis:

           MEMORY SIZE?
Po poprawnej odpowiedzi na komendę
           PRINT 2+2
Roberts wiedział już, że zawrą umowę. Było to pierwsze i póki co jedyne oprogramowanie pozwalające sensownie korzystać z tego komputera.


Allen i Gates zawarli z MITS umowę, na mocy której ich BASIC był sprzedawany wraz z zestawem do budowy Altaira. Zachowali jednak prawa do samodzielnej jego sprzedaży. Altair BASIC był często kopiowany (pierwsze przypadki piractwa) i przekazywany pomiędzy użytkownikami z naruszeniem warunków licencji.

MITS 4K BASIC potrzebował do efektywnej pracy 6 kB i zawierał nadal sporo błędów. Gates i Allen przenieśli się do New Mexico by kontynuować pracę nad ulepszoną wersją programu, utworzyli w Albuquerque własną firmę - Micro-Soft (początkowo pisane jako oddzielne słowa) i w ciągu następnych miesięcy ulepszali i rozszerzali swój program, dostosowując go także do pracy na innych maszynach. Efektem była wersja - MITS 8K BASIC (istniała również wersja 8K BASIC zapisana w ROM). Z biegiem czasu powstała jeszcze wersja Extended BASIC, a po opracowaniu i wprowadzeniu do sprzedaży napędów dysków elastycznych także Altair Disk Extended BASIC. Paul Allen został wiceprezesem MITS ds. oprogramowaniem (np.: Altair DOS i FORTRAN). Najbardziej znanym i popularnym językiem programowania pozostał jednak BASIC. Ed Roberts sprzedał firmę Pertec Computer Corporation, a sam został lekarzem w Georgia. Po przegranym przez Pertec procesie Microsoft odzyskał prawa do BASIC'a, przeniósł go także na inne platformy, np. CP/M czy później MS-DOS i rozpoczął gwałtownie się rozwijać. Pertec wkrótce zaprzestał produkcji Altairów.

Kilka słów o samym interpreterze

Po włączeniu komputera z dyskiem zawierającym Altair BASIC w napędzie nr 0, BASIC uruchamiał się i zadawał kilka pytań w celu dokonania konfiguracji (w nawiasach "bezpieczne" odpowiedzi):
        MEMORY SIZE? [enter]
        LINEPRINTER? [C i enter]
        HIGHEST DISK NUMBER? [0 (cyfra zero) i enter]
        HOW MANY FILES? [4 lub 5 i enter]
        HOW MANY RANDOM FILES? [2 lub 3 i enter]
Następnie na ekranie pojawiał się napis określający nazwę i wersję programu oraz charakterystyczny prompt: "Ok", po czym BASIC był gotowy do pracy.

W BASIC'u każdy dysk przed użyciem należy "podłączyć/zamontować" komendą MOUNT. Np. MOUNT0 podłącza dysk nr 0. W praktyce często zdarzało się, że na ekranie pojawiał się komunikat DISK I/O ERROR, co wynikało po prostu z zawodności ówczesnego sprzętu. Aby zobaczyć zawartość katalogu podłączonego dysku należało wprowadzić polecenie FILES. Jako wynik pojawiał się prosty listing zawartości katalogu. Nazwy plików mogły składać się z maksymalnie ośmiu znaków, zawierać litery, cyfry, odstępy i niektóre znaki specjalne. Duże i małe litery były rozróżniane. Ładowanie programu do pamięci odbywało się poleceniem LOAD "MOJPROG". Po wprowadzeniu programu do pamięci, można było używać wszystkich poleceń BASIC'a w celu jego edycji lub wykonania np. LIST - wyświetla tekst programu na ekranie (w trakcie wyświetlania Ctrl-S wstrzymuje, Ctrl-Q wznawia wyświetlanie; nie ma trybu wyświetlania "strona po stronie"), RUN - uruchamia wykonywanie programu (w trakcie wykonywania programu Ctrl-C powoduje przerwanie wykonywania programu i powrót do linii poleceń BASIC'a).

Linie programu w BASIC'u muszą być ponumerowane i wykonywane wg kolejności. Wpisanie nowej linii z numerem istniejącej linii powoduje jej zastąpieni. Wpisanie linii z nowym numerem, dodaje ją do tekstu programu w odpowiednim dla wybranego numeru miejscu. Polecenie DELETE 400 kasuje linię 400, EDIT 400 powoduje przejście do edycji linii 400. Więcej szczegółów w karcie referencyjnej i manualu MS BASIC-80 (pdf 2.39 MB - w wersji on-line niedostępny).

Aby zapisać zmodyfikowany program należało użyć polecenia SAVE "MOJPROG". Aby sprawdzić ilość dostępnej pamięci należało wprowadzić:

        PRINT FRE(0)   ...podaje ilość dostępnych bajtów pamięci
        PRINT FRE(A$)  ...podaje ilość dostępnej pamięci
                          dla zmiennych tekstowych (string)
        PRINT DSKF(0)  ...podaje ilość wolnych bloków w napędzie nr 0
Zakończenie pracy odbywało się poprzez wyłączenie komputera.


Susan Lammers w swojej książce "Programmers at Work" cytuje słowa Gates'a o początkach jego kariery:

The really great programs I've written have all been ones that I have thought about for a huge amount of time before I ever wrote them. I wrote a BASIC interpreter for a minicomputer in high school. I made massive mistakes in that program, and then I got to look at some other BASIC interpreters. So by the time I sat down to do Microsoft BASIC in 1975, it wasn't a question of whether I could write the program, but rather a question of whether I could squeeze it into 4K and make it super fast... Paul Allen had brought me the magazine with the Altair, and we thought, "Geez, we'd better get going, because we know these machines are going to be popular." And that's when I stopped going to classes and we just worked around the clock. The initial program was written in about three and a half weeks. We ended up spending about eight weeks before I had it fully polished the way that I really liked it. And then I later went back and rewrote it. No great programmer is sitting there saying, "I'm going to make a bunch of money," or "I'm going to sell a hundred thousand copies." Because that kind of thought gives you no guidance about the problems. A great programmer is thinking, Should I rewrite this whole subroutine so that four people, instead of three, could call it? Should I make this program ten percent faster? Should I really think through what the common case in here is so I know how to order this check?


Wywiad z Billem Gates'em (144 kB) poruszający oprócz początków kariery także inne tematy.

Wypróbować Altair BASIC możecie:


Główny spis treści  ||  Główna strona MITS Altair

Masz uwagi? Napisz.