Atari BASIC – język programowania BASIC dla ośmiobitowych komputerów Atari. Rozprowadzany na cartridge z komputerami Atari 400/800/1200XL lub sprzedawany osobno. Wbudowany w komputery serii XL (oprócz 1200XL), XE i XE Game System. Stworzony w 1978 roku przez firmę Shepardson Microsystems na zamówienie Atari Inc. Nie bazuje jak większość mu współczesnych implementacji na Microsoft BASIC.
Edytor umożliwia wprowadzanie kodu programu w dowolnym miejscu na ekranie i jego dowolną edycję. Wprowadzenie nowej linii programu wymaga naciśnięcia klawisza Return.
Sprawdzanie składni odbywa się natychmiast po wprowadzeniu linii programu.
Program przechowywany jest w pamięci w postaci zakodowanej, słowa kluczowe BASIC zamieniane są na 1 bajtowe znaczniki[2].
Możliwe jest użycie skrótów przy wpisywaniu wszystkich słów kluczowych. Należy wpisać pierwsze kilka liter i zakończyć je kropką, np. zamiast LIST użyć L. lub LI. lub LIS.
Słowa kluczowe i zmienne muszą być zapisane dużymi literami.
Zmienne przechowujące ciągi znakowe muszą być zadeklarowane przed użyciem.
Nie ma konieczności deklarowania zmiennych numerycznych.
Wszystkie liczby przechowywane są jako zmiennoprzecinkowe. Nie ma typu całkowitego.
Komenda jest wykonywana natychmiast jeśli nie ma numeru linii.
Słowo kluczowe LET może być pominięte, np. LET A=10 jest równoznaczne A=10.
Nie ma konieczności użycia GOTO w konstrukcji IF THEN. IF A=10 THEN GOTO 200 może być zastąpione przez IF A=10 THEN 200.
Możliwe jest użycie zamiennie: GOTO i GO TO oraz PRINT i ?.
Po przełączeniu się w inne tryby graficzne niż standardowy tekstowy 40×24 znaków, w dolnej części dostępne jest okno tekstowe 40×4 które umożliwia wprowadzanie komend.
Naciśnięcie klawisza Esc a potem kombinacji innych klawiszy powoduje wstawienie znaku specjalnego, np. kasującego ekran.
Atari BASIC jest wolniejszy od innych implementacji na komputery 8 bitowe[3]. Spowodowane jest to następującymi czynnikami: wolna systemowa biblioteka liczb zmiennoprzecinkowych, używanie tylko liczb zmiennoprzecinkowych, w celu znalezienia linii skoku dla GOTO przeszukiwany jest cały program, ten sam mechanizm jest używany w przypadku pętli FOR NEXT.
Rozpowszechnianie
Wydany na cartridge CXL4002[4]. Rozprowadzany wraz z komputerami Atari 400, Atari 800 i Atari 1200XL lub sprzedawany osobno. W późniejszych modelach 600XL, 800XL, serii XE oraz XEGS BASIC był wbudowany w komputer. Po włączeniu zasilania komputer uruchamiał interpreter BASIC. Przytrzymując klawisz OPTION przy starcie można wyłączyć BASIC. Dla konsoli gier XEGS jeśli nie wykryto podłączonej klawiatury, BASIC był wyłączany automatycznie.
Historia
Pod koniec lat 70 XX wieku w Stanach Zjednoczonych nastąpił gwałtowny rozwój rynku komputerów osobistych. Jako podstawowy język programowania do nauki jak i tworzenia profesjonalnych aplikacji uważany był w tym czasie BASIC. Stąd też praktycznie dla każdego komputera był on dostępny jako kluczowy komponent istotny dla jego sprzedaży. Najbardziej popularną implementacją BASIC był dialekt stworzony przez Microsoft[5]. Używano go w pierwszych komputerach osobistych takich jak Altair 8800/IMSAI, Apple II, Commodore PET i innych.
W roku 1978 firma Atari Inc. pracowała nad swoim pierwszym komputerem Atari 800 i jego tańszą wersją Atari 400. O ile system operacyjny był tworzony przez inżynierów Atari, to przy BASIC postanowiono użyć gotowego produktu. Zakupiono licencję Microsoft 8k BASIC[a] dla procesora MOS 6502. Microsoft miał dostosować BASIC do nowego komputera ale po roku braku postępów Atari zrezygnowało z ich usług[6]. Atari rozpoczęło modyfikację BASIC we własnym zakresie. Kluczowym aspektem był rozmiar wynikowy skompilowanego kodu który miał zmieścić się na 8 KiB cartridge[b]. Microsoft BASIC kompilował się do 8 KiB na procesorach Intel 8080 (procesor na który powstała pierwsza wersja BASIC dla komputera Altair 8800) ale na MOS 6502 było to 9 KiB co po dodatkowych modyfikacjach dawało 11 KiB[potrzebny przypis]. Problemy z rozmiarem i presja czasu – nowy komputer miał być zaprezentowany na targach Consumer Electronics Show w styczniu 1979 – skłoniły Atari to poszukiwania zewnętrznej firmy by przyśpieszyć prace.
We wrześniu 1978 roku Atari skontaktowało się z firmą Shepardson Microsystems Inc[7]. Firma ta miała doświadczenie w tworzeniu oprogramowania dla komputerów Apple II (Apple DOS) opartych o ten sam procesor MOS 6502. Ponadto opracowała BASIC dla innego komputera – Cromemco.
Po zapoznaniu się z istniejącym kodem źródłowym Microsoft firma stwierdziła, że woli napisać BASIC od nowa. W październiku 1978 po zaakceptowaniu specyfikacji Paul Laughton i Kathleen O’Brien rozpoczęli prace. Zawarta umowa mówiła, że Shepardson Microsystems musi dostarczyć BASIC wraz z systemem zarządzania plików (później znanym jako DOS 1.0) najpóźniej do 6 kwietnia 1978[7]. Atari planowało zaprezentować wczesną wersję Microsoft BASIC na targach Las Vegas Consumer Electronics Show w styczniu 1979, a później rozpowszechniać nowy Atari BASIC[potrzebny przypis].
Prace nad nowym językiem programowania postępowały jednak dość szybko i BASIC był gotowy w grudniu 1978 roku po 2,5 miesiącach prac. Atari zaprezentowało na targach tę wersję a później rozpowszechniało ją na cartridge.
Na początku lat 80 XX wieku prawa autorskie do Atari BASIC zostały odkupione od Shepardson Microsystems przez nowo powstałą firmę Optimized Systems Software (OSS) założoną przez Billa Wilkinsona.
Kod źródłowy wraz z komentarzem twórców został opublikowany w książce „The Atari BASIC Source Book” w roku 1983.
Wersja Microsoft BASIC była później sprzedawana jako Atari Microsoft BASIC, jednak nigdy nie zdobyła popularności.
Bill Wilkinson – specyfikacja, procedury zmiennoprzecinkowe.
Paul Krasno – funkcje matematyczne.
Bob Shepardson – modyfikacja assemblera IMP-16.
Mike Peters – młodszy programista, obsługa kart perforowanych.
Wersje
Revision A – wersja dostarczona przez Shepardson Microsystems w grudniu 1978. Atari rozpoczęło produkcję cartridgy zanim wszystkie błędy zostały znalezione. Rozpowszechniana na cartridge z Atari 400/800 lub sprzedawana oddzielnie.
Revision B – poprawia błędy z Revision A ale wprowadza nowy, bardziej poważny błąd. Dostępna w pierwszej serii Atari 600XL i 800XL. Nigdy nie była dostępna na cartridgu.
Revision C – poprawia błędy Revision B. Wersja ta znalazła się w komputerach późniejszej serii XL i XE oraz w XEGS. Wyprodukowano tylko niewielką ilość cartridgy.
Wersję można zweryfikować pod adresem pamęci 43234[8]wykonując komendę BASIC: PRINT PEEK(43234)
Wartość
Wersja
162
Revision A
96
Revision B
234
Revision C
Błędy
Najpoważniejszym problemem w Revision A jest błąd w procedurze przenoszenia bloków pamięci o długości równej wielokrotności 256 bajtów. Generuje to błędy przy każdej operacji która wymaga przesuwania pamięci o tej długości w szczególności przy usuwaniu linii programu[9].
Revision B usuwa ten błąd, ale wprowadza inny bardzo podobny błąd który powoduje problemy częściej, bo przy dodawaniu linii programu[10]. Ostatecznie rozwiązano to w Revision C.
Revision
Opis
A
B
C
✗
Usunięcie linii programu może zawiesić komputer[11].
✗
Instrukcja GET nie inicializuje systemowego wskaźnika do bufora co prowadzi do błędów jeśli wcześniej użyto wyrażenia które zmieniło systemowy wskaźnik do bufora[9], np. GET po READ może zmienić numer linii DATA.
✗
Przypisanie ciągu które wymaga przesunięcia wielokrotności 256 bajtów powoduje zawieszenie się programu lub utratę części programu[9], np. A$=B$(257,512).
✗
Dodanie nowej linii programu może zawiesić komputer[10].
✗
✗
Użycie CSAVE nawet bez podłączonego magnetofonu generuje dźwięk zapisu który nie znika po pojawieniu się READY[12].
✗
✗
✗
Błędne wyniki potęgowania niektórych liczb1^44 to błędnie 2 (Rev. B i C) lub 2^3=7.99999991 (Rev. A).
✗
✗
✗
Zamiast -0 wyświetlany ciąg losowy[9], np.PRINT -0 daje -E-<8
✗
✗
✗
INPUT, READ[9] i DIMmogą być wprowadzone bez argumentu, np. 10 INPUT.
✗
✗
✗
Użycie NOT może prowadzić do zawieszenia komputera[9], np. PRINT NOT NOT 1.
✗
✗
✗
Wyrażenie CHR$(A) = CHR$(B) jest zawsze prawdziwe.
✗
✗
✗
Dwukropek jako separator instrukcji może być zastąpiony przez znak Escape (o kodzie 27).
✗
✗
✗
Funkcje OPEN, XIO i POINT akceptują argumenty tylko z zakresu od 0 do 32767.
✗
✗
✗
Funkcja TRAP powoduje zawieszenie programu jeśli linia w której występuje jest taka sama jak jej argument, np. 10 TRAP 10:GET #1,A.
✗
✗
✗
W programie możliwe zadeklarowanie tablicy większej niż dostępna wolna pamięć, np. DIM A(10922).
Błąd wprowadzania danych, próba wprowadzenia tekstu do zmiennej numerycznej.
9
Błąd deklaracji DIM; zadeklarowany rozmiar większy niż 32767 lub odwołanie do indeksu spoza zakresu lub zmienna już zadeklarowana.
10
Zbyt wiele instrukcji GOSUB lub zbyt duże wyrażenie.
11
Dzielenie przez zero lub przekroczono zakres dla liczb zmiennoprzecinkowych.
12
Nie istnieje linia prgramu do której odwołuje się GOTO, GOSUB lub THEN.
14
Zbyt długa linia programu.
15
Użyto NEXT lub RETURN kiedy odpowiadające FOR lub GOSUB zostało usunięte.
16
Użyto RETURN bez odpowiadającego GOSUB.
17
Próba wykonania niewłaściwego kodu w pamięci.
18
Niewłaściwy znak początku zmiennej lub pierwszy znak argumentu VAL nie jest cyfrą.
19
Próba załadowania zbyt dużego programu.
20
Niewłaściwy numer urządzenia, dozwolone numbery od 1 do 7.
21
Próba załadowania programu instrukcją LOAD programu nie zapisanego SAVE.
128
Naciśnięty klawisz BREAK podczas operacji wejścia/wyjścia.
129
Próba otwarcia już otwartego kanału.
130
Próba użycia nieistniejącego urządzenia.
131
Próba odczytu kanału tylko do zapisu.
132
Nieprawidłowa komenda dla urządzenia.
133
Urządzenie lub plik nie zostało otwate.
134
Nieprawidłowy numer urządzenia.
135
Próba zapisu do kanału tylko do odczytu.
136
Koniec pliku.
137
Próba odczytu rekordu o długości większej niż 256 znaków.
138
Urządzenie nie odpowiada (timeout).
139
Błędne dane na porcie szeregowym lub uszkodzona dyskietka.
140
Błąd ramki portu szeregowego.
141
Kursor poza dozwolonym zakresem.
142
Błąd transmisji szeregowej.
143
Błąd sumy kontrolnej portu szeregowego.
144
Próba zapisu na dyskietce zabezpieczonej przed zapisem.
145
Błąd weryfikacji zapisu na dyskietce lub błędny handler ekranu.
146
Funkcja nie jest zaimplementowana dla urządzenia.
147
Brak pamięci dla operacji w wybranym trybie graficznym.
160
Zły numer stacji dysków.
161
Zbyt dużo otwartych plików.
162
Brak miejsca na dyskietce.
163
Błąd wejścia/wyjścia.
164
Zła struktura dysku.
165
Zła nazwa pliku.
166
Argument dla POINT wskazuje nieistniejące miejsce.
167
Plik jest zabezpieczony przed zapisem.
168
Niewłaściwa komenda.
169
Zbyt dużo plików na dyskietce.
170
Nie znaleziono pliku.
171
Zły argument dla POINT.
Alternatywne produkty
Na 8 bitowe komputery Atari powstało kilka alternatywnych implementacji języka BASIC zarówno interpreterów jak i kompilatorów. Typowo były szybsze i oferujące więcej komend niż Atari BASIC.
Kompatybilne
BASIC A+ – rozszerzona wersja Atari BASIC wydana na dyskietce przez firmę Optimized Systems Software.
BASIC XL – wariant BASIC A+ wydany na cartridge przez firmę Optimized Systems Software.
BASIC XE – rozszerzona wersja BASIC XL wydany przez firmę Optimized Systems Software. Wymaga 64 KiB przez co nie może być uruchomiony na Atari 400/800.
Turbo-BASIC XL – wersja BASIC stworzona przez Franka Ostrowskiego. Opublikowana w zachodnioniemieckim czasopiśmie „Happy Computer” w grudniu 1985 roku. Dostępny interpreter i kompilator, wymaga 64 KiB[15].
The Basic Compiler – kompilator firmy Datasoft z 1983 roku.
MMG Basic Compiler – kompilator wydany przez MMG Micro Software[16] w 1984 roku. Licencjonowana wersja The Basic Compiler.
ABC Compiler – kompilator wydany przez Monarch Data Systems w 1982 roku[17].
Advan BASIC – kompilator BASIC firmy Advan Language Designs z 1986 roku. Rozszerzone komendy w stosunku do Atari BASIC ale z nim niekompatybilny[18].
Uwagi
↑Jest dostępny oryginalny kod źródłowy BASIC M6502 8K VER 1.1 BY MICRO-SOFT z 1978 który był użyty do zbudowania Microsoft BASIC dla kilku komputerów opartych o procesor MOS 6502, m.in. Commodore PET i Apple II. Brak informacji którą wersję Atari otrzymało od Microsoft.
↑Był to rozmiar cartridge standardowo obsługiwany przez Atari 800/400. W późniejszym czasie pojawiły się rozwiązania techniczne pozwalające na produkcję cartrige większych niż 8 KiB.
↑Atari BASIC: A High-Level Language Translator. W: Bill Wilkinson, Kathleen O’Brien, Paul Laughton: The Atari Basic Source Book. COMPUTE! Books, 1983, s. 1. (ang.).
↑ abcPreface. W: Bill Wilkinson, Kathleen O’Brien, Paul Laughton: The Atari Basic Source Book. COMPUTE! Books, 1983, s. ix. (ang.).
↑Matthew Ratcliff. Revision C Converter. „ANTIC”. 4 (5), wrzesień 1985. (ang.).brak numeru strony
↑ abcdefThe Bugs in Atari BASIC. W: Bill Wilkinson, Kathleen O’Brien, Paul Laughton: The Atari Basic Source Book. COMPUTE! Books, 1983, s. 275–278. (ang.).
Louisiana's gun law Location of Louisiana in the United States Gun laws in Louisiana regulate the sale, possession, and use of firearms and ammunition in the state of Louisiana in the United States.[1][2] Summary table Subject/Law Long Guns Hand Guns Relevant Statutes Notes State permit required to purchase? No No Firearm registration? No No Assault weapon law? No No Magazine capacity restriction? No No Owner license required? No No Permit required for concealed carry? N/A Yes...
Church in Australia, AustraliaSt Stephen's Uniting ChurchThe sandstone facade of St Stephen's, pictured in 2019.St Stephen's Uniting ChurchLocation in the Sydney central business district33°52′02″S 151°12′43″E / 33.8673°S 151.2120°E / -33.8673; 151.2120Location197 Macquarie Street, Sydney central business district, City of Sydney, New South Wales, AustraliaCountryAustraliaDenominationUniting (since 1977)Previous denominationPresbyterian (1935 –&...
Pour les articles homonymes, voir Moselle. Ne doit pas être confondu avec Moselle (ruisseau). la Moselleallemand : Mosel Boucles de la Moselle à Liverdun en France. Bassin versant de la Moselle. la Moselle sur OpenStreetMap. Caractéristiques Longueur 545 km (544, en considérant, comme la plupart des hydrologues français et allemands, la Moselotte-module 13.7- comme étant la branche mère du système et non la Moselle à cette confluence, de module 9,3. Cf. Carte ci-dessus) Ba...
Teatro delle VittorieIngresso del Teatro su Via Col di LanaUbicazioneStato Italia LocalitàRoma Indirizzovia Col di Lana, 20 Dati tecniciTipoTeatro di posa RealizzazioneCostruzioneXX secolo ProprietarioRai Modifica dati su Wikidata · ManualeCoordinate: 41°55′02.99″N 12°27′47.98″E / 41.917498°N 12.463329°E41.917498; 12.463329 Il Teatro delle Vittorie è un teatro di posa sito in Roma, in via Col di Lana 20, nel quartiere Della Vittoria, di proprietà dell...
Combat support provided by forces not directly in combat An M198 howitzer firing a 155 mm caliber shell to provide artillery fire support Fire support is a military term used to describe weapons fire used to support friendly forces by engaging, suppressing, or destroying enemy forces, facilities, or materiel in combat. It is often provided through indirect fire, though the term may also be used for some forms of supporting direct fire. The United States Department of Defense defines fire supp...
Building in New York, United States of AmericaThe Church of the Holy FamilyGeneral informationTown or cityStaten Island, New YorkCountryUnited States of AmericaClientRoman Catholic Archdiocese of New York The Church of the Holy Family is a Roman Catholic parish church under the authority of the Roman Catholic Archdiocese of New York, located in Staten Island, New York City. The parish was founded in 1966 and is located at 366 Watchogue Road Westerleigh, Staten Island. References vteRoman Cath...
American basketball player (born 1995) Jabari ParkerParker with the Milwaukee Bucks in 2014No. 22 – FC BarcelonaPositionPower forwardLeagueLiga ACBEuroLeaguePersonal informationBorn (1995-03-15) March 15, 1995 (age 29)Chicago, Illinois, U.S.Listed height6 ft 8 in (2.03 m)Listed weight250 lb (113 kg)Career informationHigh schoolSimeon (Chicago, Illinois)CollegeDuke (2013–2014)NBA draft2014: 1st round, 2nd overall pickSelected by the Milwaukee BucksPlay...
Voce principale: Vicenza Calcio. Associazione Calcio VicenzaStagione 1950-1951La squadra biancorossa in Vicenza-Verona 2-1 del 28 gennaio 1951 Sport calcio SquadraVicenza Calcio Allenatore Alfredo Mazzoni Presidente Ludovico Di Thiene Serie B9º posto Maggiori presenzeCampionato: Mario Caciagli e Roberto Lerici (40) Miglior marcatoreCampionato: Bruno Quaresima (20) 1949-1950 1951-1952 Si invita a seguire il modello di voce Indice 1 Rosa 2 Risultati 2.1 Campionato 2.1.1 Girone di andata 2.1.2...
Benny Andersson discographyStudio albums11 (excluding contributions), 31 (including contributions)Live albums1 Benny Andersson has been active as a recording artist since 1964, when he joined Swedish rock band The Hep Stars. With them, and more recently as a member of ABBA and Benny Anderssons Orkester, he became one of the most successful Swedish composers and artists. He also wrote the musicals Chess, Kristina från Duvemåla and Mamma Mia!. This album-discography provides a comprehensive ...
Persilangan yang rumit dengan banyak jalur kendaraan, jalur sepeda, dan jalur pejalan kaki seperti ini membutuhkan pengaturan menggunakan ilmu teknik lalu lintas Teknik lalu lintas adalah cabang ilmu teknik sipil yang memanfaatkan ilmu teknik untuk keamanan dan efisiensi pergerakan dan transportasi barang dan benda di jalan raya. Fokus utama adalah keamanan dan efisiensi debit lalu lintas, geometri jalan, trotoar, penyebrangan, jalur sepeda, lampu lalu lintas, dan sebagainya. Teknik lalu lint...
Photometric measure Not to be confused with Luma (video), Luminescence, or Illuminance. For other uses, see Luminance (disambiguation). This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Luminance – news · newspapers · books · scholar · JSTOR (April 2023) (Learn how and when to remove this message) A tea light-...
National beauty contest in Ghana For the most recent edition, see Miss Grand Ghana 2022. Miss Grand GhanaFormationAugust 9, 2020; 3 years ago (2020-08-09)FounderSandy AmissahTypeBeauty pageantHeadquartersAccraLocationGhanaMembership Miss Grand InternationalOfficial language EnglishNational DirectorAbena AppiahParent organizationLegacy Pageants Limited (2020)Akuaba Entertainment (2022 – present) Abena Appiah, the national director of Miss Grand Ghana, since 2022 M...
Ne doit pas être confondu avec Ézéchias. Pour les articles homonymes, voir Ézéchiel (homonymie). ÉzéchielLe prophète Ézéchiel, par Michel-Ange (1510)dans la chapelle Sixtine.FonctionProphèteJudaïsmeChristianismeIslamBiographieNaissance 622 av. J.-C.JérusalemDécès 571 av. J.-C.BabyloneNationalité Israélite de la tribu de LéviActivité Troisième des quatre grands prophètesPériode d'activité VIe siècle av. J.-C.Autres informationsÉtape de canonisation SaintFête 10 avril...
German politician (1898–1977) You can help expand this article with text translated from the corresponding article in German. (April 2021) Click [show] for important translation instructions. View a machine-translated version of the German article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translate...
Industrializing countries in world-systems theory A world map of countries by trading status, late 20th century, using the world system differentiation into core countries (blue), semi-periphery countries (yellow) and periphery countries (red). Based on the list in Dunn, Kawana, Brewer (2000). International relations theory Constructivism Feminist constructivism Liberalism Idealism Democratic peace theory Capitalist peace Republican liberalism Liberal institutionalism Marxism Dependency theor...
American legal system intended to promote competition among businesses The Bosses of the Senate, an 1889 political cartoon by Joseph Keppler depicting corporate interests—from steel, copper, oil, iron, sugar, tin, and coal to paper bags, envelopes, and salt—as giant money bags looming over the tiny senators at their desks in the Chamber of the United States Senate[1] In the United States, antitrust law is a collection of mostly federal laws that regulate the conduct and organizati...
Football league seasonGirabola 1982Season1982(12/6/1982–6/2/1983)ChampionsPetro LuandaRelegatedInter HuílaM.C.H. UígeSagrada1983 African Cup of Champions ClubsPetro de Luanda (Girabola winner)Matches played182Top goalscorerJesus (21 goals)Biggest home win1º Agosto 7–2 Sagrada (09 Jan 1983)Biggest away win1º Agosto 2–6 Petro (04 Dec 1982)Highest scoringPetro 7–6 1º Maio (22 Jan 1983)← 1981 1983 → The 1982 Girabola was the fourth season of top-tier football competition in Angol...
La grafologia (dal greco γραφή: scrittura λογεῖν: studiare) è una tecnica che presume di dedurre alcune caratteristiche psicologiche di un individuo attraverso l'analisi della sua grafia. La validità e l'attendibilità di questa tecnica non sono mai state validate scientificamente, la sua attendibilità risulta quindi nulla[1][2][3]; per questo motivo le analisi grafologiche di personalità non sono ammesse in ambito forense, al contrario della perizia ca...