MBASIC - MBASIC

MBASIC
Paradygmat tryb rozkazujący
Zaprojektowany przez Microsoft
Deweloper Microsoft
OS CP / M
Stronie internetowej www .microsoft .com
Wpływem
PODSTAWOWY

MBASIC jest M icrosoft BASIC realizacja BASIC dla CP / M systemu operacyjnego. MBASIC jest potomkiem oryginalnych tłumaczy Altair BASIC, które były jednymi z pierwszych produktów firmy Microsoft. MBASIC był jedną z dwóch wersji BASICa dołączonych do komputera Osborne 1 . Nazwa „MBASIC” pochodzi od nazwy pliku dyskowego MBASIC.COM interpretera języka BASIC.

Środowisko

MBasic 5.21 działający na systemie Z80 CP / M wyświetlanym na typowym dla tego czasu monochromatycznym monitorze.

MBASIC wersja 5 wymagał systemu CP / M z co najmniej 28 kB pamięci o dostępie swobodnym (RAM) i co najmniej jednym napędem dyskietek.

W przeciwieństwie do wersji Microsoft BASIC-80, które zostały dostosowane przez producentów komputerów domowych do korzystania z określonych funkcji sprzętowych komputera, MBASIC polegał tylko na wywołaniach systemu operacyjnego CP / M dla wszystkich wejść i wyjść. Dostępna była tylko konsola CP / M (ekran i klawiatura), drukarka liniowa i urządzenia dyskowe.

MBASIC w nie dostosowanej formie nie miał funkcji graficznych , kolorów, joysticków, myszy, komunikacji szeregowej , sieci , dźwięku ani nawet funkcji zegara czasu rzeczywistego. MBASIC nie obsługiwał w pełni funkcji systemu operacyjnego hosta CP / M, na przykład nie obsługiwał obszarów użytkowników CP / M do organizowania plików na dyskietce. Ponieważ systemy CP / M były zazwyczaj przeznaczone dla jednego użytkownika i były samodzielne, nie było możliwości blokowania plików lub rekordów ani jakiejkolwiek formy wielozadaniowości . Oprócz tych ograniczeń, MBASIC był wówczas uważany za potężną i użyteczną implementację języka BASIC.

funkcje

System językowy

MBASIC jest tłumaczem . Tekst źródłowy programu był przechowywany w pamięci w formie tokenizowanej , ze słowami kluczowymi BASIC zamienionymi na jednobajtowe tokeny, co pozwoliło zaoszczędzić miejsce w pamięci i przyspieszyć wykonanie. Każda linia poprzedzona numerem linii została zapisana jako tekst programu; Instrukcje BASIC, które nie były poprzedzone numerem linii, były wykonywane natychmiast jako polecenia. Programy mogą być wyświetlane na ekranie do edycji lub zapisywane na dysku w skompresowanym formacie binarnym lub jako zwykły tekst ASCII . Każda linia źródłowa została oznaczona numerem, który może służyć jako cel transferu GOTO lub GOSUB . Udostępniono tylko polecenia edycji linii. Często korzystne było zapisanie programu jako zwykłego tekstu i edytowanie go za pomocą w pełni funkcjonalnego edytora.

Tekst programu, zmienne, bufory dyskowe i sam system operacyjny CP / M - wszystko to musiało współdzielić 64 kilobajtową przestrzeń adresową procesora 8080. Zwykle przy pierwszym uruchomieniu MBASIC było mniej niż 32 kB pamięci dostępnej dla programów i danych, nawet na komputerze wyposażonym w pełne 64 kilobajty pamięci RAM. Wiersze komentarza, poprzedzone REM słowem kluczowym lub apostrofem, mogły być umieszczone w tekście programu, ale zajmowały cenną przestrzeń pamięci, co zniechęcało użytkowników BASIC-a do pełnego dokumentowania ich kodu. Aby umożliwić uruchamianie większych i bardziej złożonych programów, nowsze wersje MBASIC obsługiwały funkcje, które umożliwiały wczytywanie fragmentów tekstu programu i wykonywanie ich pod kontrolą programu („ CHAIN ” i MERGE instrukcje). Nie zapewniono obsługi wykonywania poleceń „powłoki”, chociaż ta funkcjonalność mogłaby zostać zduplikowana przez określonego programistę.

Szczególną zaletą MBASIC były pełnotekstowe komunikaty o błędach dla błędów składniowych i czasu wykonywania. MBASIC miał również funkcję „śledzenia”, która wyświetlała numery wierszy w trakcie ich wykonywania. Chociaż zajmowało to tę samą przestrzeń na ekranie, co normalne wyjście programu, było przydatne do wykrywania warunków, takich jak niekończące się pętle .

Pliki i wejście / wyjście

Dane mogą być odczytywane i zapisywane na dysku jako pliki sekwencyjne (ograniczone konwencją CP / M CR / LF na końcu każdej linii) lub jako pliki o stałym dostępie o stałej długości rekordu, co przy odpowiednio określonym programatorze , może służyć do manipulacji rekordami typu bazy danych. Formacie Microsoft Binary dla zmiennoprzecinkowej liczb była zastrzeżona do wykonania, co oznacza, że dane mogą być wymieniane tylko w przypadku innych programów wykorzystujących ASCII reprezentację tekstową albo z dużym programowania do konwersji formatu binarnego.

Zmienne i typy danych

MBASIC obsługiwał następujące typy danych:

  • 8-bitowe dane znakowe, w łańcuchach o długości od 0 do 255 znaków;
  • 16-bitowe liczby całkowite;
  • 32-bitowy zmiennoprzecinkowy (pojedyncza precyzja), odpowiadający sześciu cyfrom dziesiętnym, z dwucyfrowym wykładnikiem;
  • 64-bitowy zmiennoprzecinkowy (podwójna precyzja), odpowiednik szesnastu cyfr dziesiętnych, z dwucyfrowym wykładnikiem.

Operatory ciągów obejmowały wybór podciągów, konkatenację, przypisanie i testowanie pod kątem równości.

Tablice powyższych typów były dozwolone z maksymalnie 7 wymiarami, ale żadne funkcje ani operatory nie działały na tablicach; na przykład nie było przypisania tablic. W przeciwieństwie do innych ówczesnych implementacji języka BASIC, MBASIC nie zapewniał obsługi operacji macierzowych , liczb zespolonych ani typu danych dziesiętnych (BCD) do obliczeń finansowych. Wszystkie operacje zmiennoprzecinkowe były wykonywane w oprogramowaniu, ponieważ typowe systemy CP / M nie miały sprzętu zmiennoprzecinkowego . Wbudowane funkcje matematyczne (sinus, cosinus, tangens, logarytm naturalny, wykładniczy, pierwiastek kwadratowy) dawały tylko wyniki o pojedynczej precyzji. Dostarczono programowy generator liczb pseudolosowych ; polegało to na wpisaniu przez użytkownika numeru początkowego w celu uzyskania sekwencji liczb przydatnych w grach i niektórych symulacjach. MBASIC dozwolone, ale nie wymagało LET słowa kluczowego dla instrukcji przypisania.

Wczesne wersje języka BASIC na mikrokomputerach były niesławne ze względu na jedno- lub dwuznakowe nazwy zmiennych, co utrudniało przywołanie znaczenia zmiennych w złożonych programach. MBASIC w wersji 5 dopuszczał identyfikatory o długości do 40 znaków, co pozwalało programistom nadawać zmiennym czytelne nazwy.

Kontrola przepływu programu

Sterowanie przepływem programu w MBASIC było kontrolowane przez IF...THEN...ELSE... testy warunkowe, WHILE...WEND pętle GOTO i GOSUB instrukcje. Żadna CASE instrukcja nie była dostępna, chociaż ON...GOTO... (obliczone GOTO) zapewniało rozgałęzienia wielodrogowe. Podprogramy nie miały parametrów, a wszystkie zmienne były globalne. Dzięki MBASIC programowanie strukturalne nie było obowiązkowe dla programistów, a pisanie kodu spaghetti było łatwe .

PEEK, POKE i funkcje użytkownika

Żadna dyskusja na temat języka BASIC na 8-bitowych komputerach późnych lat 70. i wczesnych 80. nie byłaby kompletna bez wspominania o znaczeniu funkcji PEEK i POKE dla bezpośredniego odczytu i zapisu do pamięci. Ponieważ systemy te zazwyczaj nie miały ochrony pamięci , umożliwiło to programiście dostęp do części systemu operacyjnego lub funkcji, które w innym przypadku nie byłyby dostępne. Dało to również możliwość zawieszania systemu przez programy użytkownika. Na przykład programista CP / M może użyć POKE funkcji umożliwiającej BASIC-owi przełączenie urządzenia konsoli na port szeregowy, jeśli system BIOS to obsługuje. W przypadku maszyn z zegarami czasu rzeczywistego PEEK można było użyć zestawu instrukcji, aby uzyskać dostęp do czasu.

W przypadku bardziej złożonych operacji MBASIC dopuszczał funkcje zdefiniowane przez użytkownika, które można było wywołać z programu w języku BASIC. Zwykle były one umieszczane w zarezerwowanym obszarze pamięci lub POKEd w stałych łańcuchowych jako seria kodów maszynowych (kodów operacyjnych ). MBASIC dostarczył również sprzęt INP i OUT instrukcje, które odczytują i zapisują bezpośrednio do sprzętowych portów wejścia / wyjścia 8080. Można to wykorzystać do sterowania urządzeniami peryferyjnymi, chociaż w co najmniej jednym wspólnym systemie CP / M, Osborne 1, wszystkie instrukcje we / wy były wcześniej wykorzystywane przez system.

Żadne programy MBASIC, które wykorzystywały PEEK i POKE oraz funkcje użytkownika kodu maszynowego nie były przenoszone między maszynami bez modyfikacji.

Następcy MBASIC

Oprócz BASIC-80 firmy Microsoft dla CP / M, dostępny był również wariant MBASIC dla systemu operacyjnego ISIS-II .

MSX-BASIC jest również dobrze znanym następcą MBASIC-a, zawierającym kilka rozszerzeń specyficznych dla maszyn MSX .

Wszystkie funkcje CP / M MBASIC były dostępne w dyskowym BASICA lub GWBASIC IBM PC, co umożliwiło migrację programów z systemów CP / M do kompatybilnych z PC. Tokeny używane do reprezentowania słów kluczowych były różne, więc programy CP / M musiały być zapisane w postaci źródłowej ASCII. Zwykle sekwencje specjalne formatujące ekran wstawione do wersji CP / M zostałyby zastąpione poleceniami pozycjonowania kursora, które można znaleźć w wersjach BASIC na komputery PC, w przeciwnym razie nie byłoby potrzebne niewiele przepisywania.

BASCOM

Microsoft sprzedał kompilator CP / M BASIC (znany jako BASCOM ), który używał podobnego języka źródłowego co MBASIC. Program z debugowaniem w MBASIC-u można skompilować za pomocą BASCOM. Ponieważ tekst programu nie znajdował się już w pamięci, a elementy wykonawcze kompilatora były mniejsze niż interpretera, więcej pamięci było dostępne dla danych użytkownika. Szybkość rzeczywistego wykonywania programu wzrosła około 3-krotnie.

Deweloperzy z zadowoleniem przyjęli BASCOM jako alternatywę dla popularnego, ale powolnego i niezdarnego CBASICa . W przeciwieństwie do CBASIC, BASCOM nie potrzebował preprocesora dla kodu źródłowego MBASIC, więc mógł być debugowany interaktywnie. Wadą był wymóg Microsoftu dotyczący 9% tantiem za każdą skompilowaną kopię programu i 40 USD za kombinacje sprzęt-oprogramowanie. Firma zastrzegła sobie również prawo do badania dokumentacji finansowej deweloperów. Ponieważ typowe stawki honorariów autorskich za oprogramowanie wynosiły 10–25%, InfoWorld w 1980 roku stwierdził, że dodatkowe 9% tantiem BASCOM „może sprawić, że tworzenie oprogramowania stanie się całkowicie nieopłacalne”, stwierdzając, że „Microsoft ma rozwiązanie techniczne [do wad CBASIC], ale nie ekonomiczny ”.

Znaczenie MBASIC

MBASIC był ważnym narzędziem w erze 8-bitowych komputerów CP / M. Doświadczeni użytkownicy mogliby pisać procedury w MBASIC, aby zautomatyzować zadania, które we współczesnych systemach byłyby wykonywane przez potężne polecenia aplikacji lub języki skryptowe. Wymiana przydatnych programów MBASIC była powszechną funkcją grup użytkowników komputerów . Wpisywanie długich list w języku BASIC z artykułu w czasopiśmie było jednym ze sposobów „załadowania” oprogramowania do nowego systemu CP / M. Przynajmniej jeden kompilator dla języka wysokiego poziomu został napisany w MBASIC-u, a także wiele małych gier i programów użytkowych, od kilku do kilku tysięcy wierszy kodu.

Inne zastosowania

MBASIC to także nazwa komercyjnego kompilatora BASIC dla rodziny mikrokontrolerów Microchip Technology PIC opracowanej przez Basic Micro, Inc., niezwiązanego z interpreteriem CP / M.

Bibliografia

  • Thom Hogan i Mike Iannamico, Podręcznik użytkownika Osborne 1 (1982) Osborne Computer Corporation
  • David A. Lien, The BASIC Handbook , 2nd Edition Encyclopedia of the BASIC Computer Language ”, (1981), Compusoft Publishing
  • BASIC 80 Reference Manual , Microsoft Corporation, brak daty