GW-BASIC - GW-BASIC
Deweloper | Microsoft |
---|---|
Po raz pierwszy pojawiły się | 1983 |
Wersja stabilna | 3.23/1988
|
OS | DOS |
Licencja |
Zastrzeżona licencja MIT (v1.0) |
Wpływem | |
IBM Cassette BASIC , IBM Disk BASIC , IBM BASICA | |
Pod wpływem | |
QBasic , QuickBasic , MSX BASIC |
GW-BASIC to dialekt języka programowania BASIC opracowany przez Microsoft z IBM BASICA . Funkcjonalnie identyczny z BASICA, jego interpreter BASIC jest w pełni samodzielnym plikiem wykonywalnym i nie potrzebuje pamięci ROM Cassette BASIC, którą można znaleźć w oryginalnym IBM PC . Został dołączony do systemów operacyjnych MS-DOS na kompatybilnych z IBM PC przez Microsoft.
Język jest odpowiedni dla prostych gier, programów biznesowych i tym podobnych. Ponieważ był dołączony do większości wersji MS-DOS, był to również tani sposób dla wielu początkujących programistów na poznanie podstaw programowania komputerowego . Microsoft sprzedał również kompilator BASIC-a , BASCOM, kompatybilny z GW-BASIC, dla programów wymagających większej szybkości.
Według Marka Jonesa Lorenzo, biorąc pod uwagę zakres języka, „GW-BASIC jest prawdopodobnie ne plus ultra z rodziny BASIC -ów z numeracją wierszy Microsoftu, sięgającej wstecz do Altaira – a być może nawet ogólnie BASIC-a z numeracją wierszy”.
Wraz z wydaniem MS-DOS 5.0 miejsce GW-BASICa zajął QBasic , część interpretująca oddzielnie dostępnego kompilatora QuickBASICa .
21 maja 2020 r. Microsoft udostępnił kod źródłowy asemblera 8088 dla GW-BASIC 1.0 na GitHub na licencji MIT .
Cechy
IBM BASICA i GW-BASIC to w dużej mierze porty MBASIC w wersji 5.x, ale z dodatkowymi funkcjami specjalnie dla sprzętu IBM PC. Wspólne cechy BASIC-80 5.x i BASICA/GW-BASIC to:
- WHILE...WEND pętle
- Zmienne nazwy do 40 znaków
- Instrukcja OPTION BASE do ustawienia początkowego indeksu zmiennych tablicowych na 0 lub 1
- Dynamiczna alokacja przestrzeni ciągów
- LINE INPUT, które pozwalało na ignorowanie znaków separatora pól, takich jak przecinek
- Instrukcja CALL do wykonywania procedur języka maszynowego
- ŁAŃCUCH i MERGE polecenia
- Możliwość zapisywania programów w tokenizowanym formacie binarnym lub w tekście ASCII
Z BASIC-80 5.xi BASICA/GWBASIC usunięto możliwość „zgniatania” linii programu przez pomijanie spacji, wspólną cechę wcześniejszych implementacji Microsoft BASIC.
Programy w BASIC-80 nie używające instrukcji PEEK/POKE uruchamiane pod GW-BASIC. BASICA dodaje wiele funkcji dla IBM PC, takich jak dźwięk, grafika i polecenia pamięci. Funkcje nieobecne w BASIC-80 to m.in. możliwość wykonania funkcji RND bez parametrów oraz możliwość zapisywania programów w „chronionym” formacie, uniemożliwiającym ich umieszczenie na LIŚCIE. BASICA pozwala również na używanie liczb o podwójnej precyzji z funkcjami matematycznymi i trygonometrycznymi, takimi jak COS, SIN i ATN, co nie było dozwolone w 8-bitowych wersjach BASICa. Ta funkcja nie została włączona i zazwyczaj wymaga opcjonalnego parametru / D przy starcie, tj , GWBASIC /D
. Wykorzystanie pamięci BASICa nieznacznie się zwiększało, jeśli było używane.
Microsoft nie oferował generycznej wersji MS-DOS aż do wersji 3.20 w 1986 roku; wcześniej wszystkie warianty systemu operacyjnego były wersjami OEM. W zależności od OEM, BASIC był dystrybuowany jako BASICA.EXE lub GWBASIC.EXE. Tego pierwszego nie należy mylić z IBM BASICA, który zawsze pojawiał się jako . plik COM . Niektóre warianty BASICa mają dodatkowe funkcje do obsługi konkretnej maszyny. Na przykład wersje AT&T i Tandy DOS zawierają specjalny GW-BASIC, który obsługuje ich ulepszone możliwości dźwięku i grafiki.
Początkowa wersja GW-BASICa jest tą dołączoną do Compaq DOS 1.13, wydaną z Compaq Portable w 1983 roku i była analogiczna do IBM BASICA 1.10. Wykorzystuje bloki kontroli plików pochodzące z CP/M w celu uzyskania dostępu do dysku i nie obsługuje podkatalogów. Nowsze wersje obsługują podkatalogi, ulepszoną grafikę i inne możliwości.
GW-BASIC 3.20 (1986) dodaje obsługę grafiki EGA (żadna wersja BASICA ani GW-BASIC nie miała obsługi VGA) i jest ostatnią dużą nową wersją wydaną, zanim została zastąpiona przez QBasic .
Nabywcy kart graficznych Hercules otrzymali specjalną wersję GW-BASIC na dysku narzędziowym karty o nazwie HBASIC, która dodaje obsługę grafiki monochromatycznej 720×348. Inne wersje BASICA/GW-BASIC nie obsługują grafiki Hercules i mogą wyświetlać grafikę tylko na tej karcie za pomocą emulacji CGA innej firmy , takiej jak SIMCGA.
GW-BASIC posiada zintegrowane środowisko programistyczne (IDE) oparte na wierszu poleceń , oparte na Dartmouth BASIC . Za pomocą klawiszy ruchu kursora można edytować dowolną linię wyświetlaną na ekranie. Zawiera również skróty klawiszowe funkcyjne u dołu ekranu. Podobnie jak inne wczesne wersje BASICa dla mikrokomputerów , GW-BASIC nie ma wielu struktur potrzebnych do programowania strukturalnego, takich jak zmienne lokalne, a programy GW-BASICa są wykonywane stosunkowo wolno, ponieważ był to język interpretowany . Wszystkie wiersze programu muszą być ponumerowane; wszystkie nienumerowane wiersze są uważane za polecenia w trybie bezpośrednim, które mają zostać wykonane natychmiast. Pliki źródłowe programu są zwykle zapisywane w formacie skompresowanym binarnie z tokenami zastępującymi słowa kluczowe, z opcją zapisu w formie tekstowej ASCII .
Środowisko wiersza poleceń GW-BASIC zawiera polecenia do RUN, LOAD, SAVE, LIST
bieżącego programu lub wyjdź z operacji SYSTEM
; te polecenia mogą być również używane jako instrukcje programu. Wsparcie dla programowania strukturalnego w GW-BASIC jest niewielkie . Wszystkie IF/THEN/ELSE
instrukcje warunkowe muszą być napisane w jednym wierszu, chociaż WHILE/WEND
instrukcje mogą grupować wiele wierszy. Funkcje można definiować tylko za pomocą instrukcji jednowierszowej DEF FNf(x)=<mathematical function of x>
(np DEF FNLOG(base,number)=LOG(number)/LOG(base)
. ). Typ danych zmiennych można określić za pomocą znaku na końcu nazwy zmiennej: A$
jest ciągiem znaków, A%
jest liczbą całkowitą itp. Grupy zmiennych można również ustawić na typy domyślne na podstawie początkowej litery ich nazwy przez korzystanie z DEFINT, DEFSTR
oświadczeń itp. Domyślnym typem dla niezadeklarowanych zmiennych, które nie są identyfikowane przez takie instrukcje wpisywania, jest zmiennoprzecinkowy o pojedynczej precyzji ( 32-bitowy MBF ).
GW-BASIC umożliwia korzystanie z joysticka i urządzeń wejściowych z piórem świetlnym . GW-BASIC może odczytywać i zapisywać pliki i porty COM ; może również wykonywać pułapki na zdarzenia dla portów. Ponieważ interfejs portu kasety z oryginalnym komputerem IBM PC nigdy nie został zaimplementowany na kompatybilnych, operacje na kasetach nie są obsługiwane. GW-BASIC może odtwarzać prostą muzykę za pomocą PLAY
instrukcji, wymagając ciągu nut reprezentowanych w muzycznym języku makr , np PLAY "edcdeeL2edfedL4c"
. . Większa kontrola na niskim poziomie jest możliwa dzięki SOUND
instrukcji, która przyjmuje argumenty częstotliwości w hercach i długości w taktach zegara dla standardowego wewnętrznego głośnika PC w maszynach IBM. W związku z tym dźwięk ogranicza się do jednokanałowych sygnałów dźwiękowych i gwizdów, jak przystało na maszynę „biznesową”. Komputery domowe, takie jak Tandy 1000, umożliwiają do trzech kanałów dźwiękowych dla poleceń SOUND
i PLAY
.
Nazwa
Istnieje kilka teorii na temat tego, co oznaczają inicjały „GW”. Greg Whitten , wczesny pracownik Microsoftu, który opracował standardy w linii kompilatorów BASIC, mówi, że Bill Gates wybrał nazwę GW-BASIC. Whitten określa go jako Gee-Whiz BASIC i nie jest pewien, czy Gates nazwał ten program jego imieniem. Pod tą nazwą odnosi się również do podręcznika użytkownika firmy Microsoft wydanego przez Microsoft Press . Może być również nazywany Gee-Whiz ze względu na liczne polecenia graficzne . Inne popularne teorie dotyczące pochodzenia inicjałów to „Grafika i Windows”, „ Gates, William ” (ówczesny prezes Microsoftu) czy „Gates-Whitten” (dwóch głównych projektantów programu).
Zobacz też
- Format binarny Microsoft (MBF)
Bibliografia
Zewnętrzne linki
- Kod źródłowy GW-BASICa na GitHub
- Classic Basic Games Page , źródło podstawowych gier i innych programów
- Powrót do BASICs , kolejnej strony z zasobami BASIC
- Program interpretera GW-BASIC i strona pobierania plików w Wayback Machine (archiwum 27 października 2009)
- Instrukcja obsługi GW-BASIC
- Centrum informacyjne Gary'ego Beene dotyczące języka BASIC, z datami osi czasu dla dialektów DOS, Windows i BASIC
- GW-BASIC - Jezu świst! Strona Cory'ego Smitha poświęcona GW-BASICowi.
- PC-BASIC - emulator GW-BASICa dla nowoczesnych systemów operacyjnych.
- GW-BASIC – Zasób dla GW-BASICa, zebrany z różnych źródeł.