Кіріспе
BASIC бағдарламалау тілдері 4 КБ-дан төмен көлемдегі құрылғылар үшін жасалған. Tiny BASIC – 4 КБ немесе одан аз жадқа сыятын BASIC бағдарламалау тілінің бірнеше түрі. Tiny BASIC-ті Деннис Эллисон мен People's Computer Company (PCC) компаниясы Билл Гейтстің Altair BASIC-тің пираттық көшірмелеріне қатысты шағымын жариялаған ашық хатына жауап ретінде құрастырды, ол 150 долларға сатылды. Tiny BASIC – BASIC-тің толығымен тегін нұсқасы болуы тиіс еді, ол сол кездегі алғашқы микрокомпьютерлерде жұмыс істейтін еді. Tiny BASIC 1975 жылғы қыркүйек айындағы PPC бюллетенінде спецификация ретінде жарияланды, бірақ іске асырылмады. Мақалада бағдарламашылар оны өздерінің машиналарында іске асырып, құрастырылған тілдегі нұсқаларын үш жоспарланған бюллетеньге қосу үшін жіберуге шақырылды. Palo Alto Tiny BASIC авторы Ли Чен Ванг осы тұжырымды сипаттау үшін «copyleft» терминін енгізді. Қоғамның жауабы күшті болғандықтан, бюллетень Dr. Dobb's Journal болып қайта құрылды – микрокомпьютерлік бағдарламалауға арналған тұрақты журнал. Dr. Dobb's 34 жыл баспа түрінде, содан кейін 2014 жылға дейін онлайн форматта шықты, одан кейін веб-сайты статикалық архивке айналды. Шағын көлемі мен ашық кодтың болуы осы нұсқаларды 1970 жылдардың ортасында микрокомпьютерлердің даму кезеңінде өте құнды етті, сол кезде RAM қымбат болды және жад көлемі әдетте 4-8 КБ құрады. Microsoft-тың Altair BASIC-тің минималды нұсқасы да 4 КБ машиналарда жұмыс істесе де, BASIC бағдарламалары үшін бар болғаны 790 байт бос орын қалды. Tiny BASIC көбірек бос орын ұсынды, бұл оның маңызды артықшылығы болды. Осы қатаң көлемдік шектеулерді сақтау үшін Tiny BASIC түрлерінде әдетте басқа түрлерде кездесетін көптеген мүмкіндіктер болмады, мысалы, көптеген нұсқаларда жолдармен жұмыс істеуге мүмкіндік болмады, қалқыма нүктелі арифметика қолданылмады және айнымалы атаулары бір әріптен ғана тұруы мүмкін еді. Tiny BASIC нұсқалары бүгінге дейін Arduino сияқты микроконтроллерлерді бағдарламалау үшін қолданылады.
Tiny BASIC is a family of dialects of the BASIC programming language that can fit into 4 or fewer KBs of memory. Tiny BASIC was designed by Dennis Allison and the People's Computer Company (PCC) in response to the open letter published by Bill Gates complaining about users pirating Altair BASIC, which sold for $150. Tiny BASIC was intended to be a completely free version of BASIC that would run on the same early microcomputers. Tiny BASIC was released as a specification, not an implementation, published in the September 1975 issue of the PPC newsletter. The article invited programmers to implement it on their machines and send the resulting assembler language implementation back for inclusion in a series of three planned newsletters. Li Chen Wang, author of Palo Alto Tiny BASIC, coined the term "copyleft" to describe this concept. The community response was so overwhelming that the newsletter was relaunched as Dr. Dobb's Journal, the first regular periodical to focus on microcomputer software. Dr. Dobb's lasted in print form for 34 years and then online until 2014, when its website became a static archive. The small size and free source code made these implementations invaluable in the early days of microcomputers in the mid 1970s, when RAM was expensive and typical memory size was only 4 to 8 KB. While the minimal version of Microsoft's Altair BASIC would also run in 4 KB machines, it left only 790 bytes free for BASIC programs. More free space was a significant advantage of Tiny BASIC. To meet these strict size limits, Tiny BASIC dialects generally lacked a variety of features commonly found in other dialects, for instance, most versions lacked string variables, lacked floating point math, and allowed only single letter variable names. Tiny BASIC implementations are still used today, for programming microcontrollers such as the Arduino.
Altair BASIC бағдарламасы
Алғашқы микрокомпьютерлер, мысалы, MITS Altair 8800, әдетте, алдыңғы панельдегі қосқыштар мен LED шамдардан басқа кіріс/шығыс (I/O) құрылғыларына ие болмады. Құрылғылы жұмыс істеу үшін көбінесе I/O кеңейту картасын қосу және терминалдың бір түрін пайдалану қажет болды. Сол кезде бейнелі терминалдар өте қымбатқа бағаланып, компьютерден әлдеқайда қымбат болғандықтан, көптеген пайдаланушылар Teletype Model 33 сияқты механикалық құрылғыларға жүгінді. Model 33, сол дәуірдегі телепринтерлердің көпшілігі сияқты, операторларға хабарларын алдын ала жазып алып, кейін оларды "жоғары жылдамдықпен", көптеген адамдар тікелей теруге үлгере алмайтындай жылдам ойнатуға мүмкіндік беретін перфокарта соғу жүйесімен жабдықталған. Алғашқы микрокомпьютерлер үшін бұл компьютерлік деректерді сақтаудың ыңғайлы форматы болды, пайдаланушыларға бағдарламаларды қағаз таспаға жазып, оларды басқа пайдаланушыларға таратуға мүмкіндік берді. Homebrew Computer Club 1975 жылдың наурыз айында алғаш рет жиналды, ал оның мүшелері көп ұзамай жиналыстарды перфокартадағы бағдарламалық жасақтаманы алмасу үшін пайдаланды. Маусым айындағы жиналыста Altair BASIC-тің сынақ нұсқасы бар таспа жоғалып кетті. Таспа Стив Домпиерге берілді, ол оны жоғары жылдамдықты перфокарта соғу құрылғысына қол жеткізе алатын Дэн Сокольге тапсырды. Келесі жиналыста Altair BASIC-тің 50 данасы қағаз таспаға түсіріліп, картон қорапқа салынған күйі табылды. MITS-тің негізін қалаушы Эд Робертс бұл туралы білген соң: "MITS BASIC-тің ұрланған көшірмесін пайдаланған әркім өзін ұры деп мойындауы керек" деді. Билл Гейтс бұл мәселені "Хоббистерге ашық хат" арқылы ресми түрде көтеріп, "Хоббистердің көпшілігі, сіздердің көптеріңіз бағдарламалық жасақтаманы ұрлайтыныңызды білесіздер" деп жазды.
Кішкентай BASIC
Шағым жақсы қабылдамады. Көптеген жауаптардың ішінде Homebrew мүшесі және People's Computer Company (PCC) негізін қалаушы Боб Альбрехт, ең жақсы жауап – кез келген адам пайдалануға толық еркін BASIC жасау екенін ойлады. Ол Стэнфорд университетінің компьютерлік ғылымдар факультетінің мүшесі Деннис Эллисонға 2-3 килобайт жадыға сыятын BASIC нұсқасының спецификациясын жазуды ұсынды. Порттауды жеңілдету үшін дизайн аралық тілге (IL) негізделді, ол аудармашы үшін аудармашы болды, яғни кодтың аз бөлігін ғана порттау қажет болды. Эллисонның бастапқы дизайны 1975 жылғы қыркүйекте PCC жаңалықтарында, сонымен бірге Intel 8080 нұсқасындағы IL аудармашысымен бірге жарияланды. Мақалада бағдарламалаушылар өздерінің компьютерінде осы жобаны іске асырып, құрастыру тіліндегі нұсқасын PCC-ға қайта жіберуге шақырылды. Олар пайдаланушылар ұсынған нұсқалар, қателерді түзетулер, жаңа BASIC-те жазылған бағдарламалар, ұсыныстар мен жақсартуларды қамтитын үш арнайы бюллетень жариялау жоспарларын мәлімдеді. Бұл идея 1976 жылғы қаңтарда ACM бағдарламалау тілдері жөніндегі арнайы тобының басылымында жарияланғанда одан әрі танымал болды. Ұсыныстар көптеп түсті. Ерекше ерте нұсқалардың бірі Дик Уиппл мен Джон Арнольдтың Tiny BASIC Extended болды, ол 3К оперативті жадыда жұмыс істеді, FOR NXT циклдарын қосты және бір сандық массивке рұқсат берді. Олар IL-ді пайдаланбады және оны тікелей машиналық кодпен, октада жазды. Ол Альбрехттің «аждаһа» деген псевдониммен жазған жазбасымен басталады, онда үш басылым жеткіліксіз екенін айтады және оқырмандардан оның жалғасын көргілері келетінін сұрайды. Сондай-ақ ол PCC-ден Tiny BASIC туралы түпнұсқа мақаланы қайта басып шығарды, Extended TB-нің толық тізімін және Эллисоннан кеңестер мен амалдарды қоса алғанда, бірқатар кішкентай BASIC бағдарламаларын қамтыды. Бірінші нөмірге жауап соншалықты әсерлі болды, екінші нөмірдің кіріспесінде жаңа бюллетеньді қарапайым Dr. Dobb's Journal атауымен жариялауды жалғастыру туралы шешім қабылданды. Келесі бірнеше санда тілдің қосымша нұсқалары жарық көрді, ал ұқсас мақалалар Interface Age сияқты басқа журналдарда да пайда бола бастады.
Таралу
[[File:Copyleft All Wrongs Reserved.png|thumb|240px|right|alt=Monospaced font reads "Tiny basic for Intel 8080, version 2.0 by Li Chen Wang, modified and translated to Intel mnemonics by Roger Rausklob, 10 October 1976. @ Copyleft, All Wrongs Reserved."|1976 жылы «Copyleft; All Wrongs Reserved» қолданысы Компьютер хоббистері қағаз ленталарын, кассеталарды алмастыратын, тіпті басылған тізімдерден файлдарды қайта теріп жазатын. Джим Уоррен, Dr. Dobb's журналының редакторы, 1976 жылғы шілдедегі ACM Programming Language хабархатында осы жобаның мақсаты мен әдістері туралы жазды. Ол былай деп бастады: «Билл Гейтс компьютер хоббистеріне бағдарламалық жасақтаманы «көшіру» туралы жазған ашулы хатына қатысты туындаған мәселелерге тиімді шешім бар. Бағдарламалық жасақтама тегін болса немесе оны көшіруге қарағанда төлеу оңай болса, онда ол «ұрланбайды»». Билл Гейтс хаты бағдарламалық жасақтаманы өнімге айналдыру мақсатымен жазылған. Балама әдіс – тәжірибелі маманның жалпы жобалауын жасауы және оны жүзеге асыру стратегиясын белгілеу. Білімі бар дилетанттар бұл жобаны әртүрлі компьютерлік жүйелерге енгізер еді. Уоррен бұл стратегия жалғастырылып, кеңейтілетінін болжады. Homebrew Computer Club мүшесі Роджер Раусколб Ли Чен Ванның бағдарламасын өзгертіп, жақсартты және бұл 1976 жылғы желтоқсанда Interface Age журналында жарияланды. Роджер өзінің атын қосып, COPYLEFT ескертуін сақтап қалды.
Негізгі түсініктер
Tiny BASIC мүмкіндігінше аз жадты пайдалану үшін жасалды, бұл оның интерпретатор жүйесінің мүмкіндіктерінің және егжей-тегжейлі сипаттамаларының шешімділігінде көрінеді. Алғашқы микрокомпьютерлерде BASIC компиляторы үшін жеткілікті RAM және қосымша жад болмады, бұл уақытты бөлісу жүйелеріне тән еді. Көптеген BASIC-тер сияқты, Tiny Basic те пайдаланушының командалық жолға операторларды енгізуі арқылы өзара әрекеттеседі. Микрокомпьютерлер көбінесе телетайп машиналарымен немесе "ақылсыз" терминалдармен қолданылғандықтан, қолданыстағы мәтінді тікелей өңдеу мүмкін болмады, сондықтан редактор пайдаланушының өңдеу үшін қай жерге қайту керектігін көрсету үшін, көбінесе кері қисық сызықты (backslash) пайдаланды. Егер пайдаланушы командалық жолға оператор енгізсе, жүйе оның санмен басталатынын тексерді. Егер басталмаса, жол дереу талданып, орындалды, нәтижесі шығарылды, бұл "тікелей режим" деп аталды. Егер жол басында сан болса, онда ондық форматтағы сан, мысалы "50", 8 биттік мәнге айналдырылып, бұл жағдайда ондық санға түрлендірілді. Бұл сан массив сияқты жад аймағына индекс ретінде қолданылды, онда жолдың қалған бөлігі енгізілгендей дәл форматта сақталды. Пайдаланушы командалық жолға енгізген кезде жүйе массивті аралап өтіп, жол нөмірін қайтадан ондық форматқа аударды, содан кейін жолдағы мәтіннің қалған бөлігін басып шығарды. Егер бағдарлама жадыда болса және пайдаланушы команданы енгізсе, жүйе "жайындаған режимге" (indirect mode) кіреді. Бұл режимде, бағдарламаның бірінші жолына нұсқаушы (pointer) орнатылады, мысалы, 10. Осы жолдың бастапқы мәтіні сақтаудан алынып, пайдаланушы оны тікелей режимде енгізгендей орындалады. Содан кейін нұсқаушы келесі жолға жылжып, процесс жалғасады.
Құрылымнан ауытқулар
Питтман Tiny BASIC-ті Homebrew Computer Club-қа анықтама беріп, былай деп жазды: "Tiny BASIC – бұл Dartmouth BASIC-тің дұрыс кіші жиынтығы, тек келесі оператор түрлерінен тұрады: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST, RUN. Арифметика 16 биттік бүтін сандарда + * / операторларымен және ішкі жақшалармен ғана орындалады. Бар болғаны 26 әріптік A, B, Z айнымалылары бар, ал функциялар жоқ. Жолдар мен массивтер жоқ. Tiny BASIC 256-дан кем жол нөмірін анықтайды". Одан әрі ол өзінің іске асырылуын сипаттап былай деді: "Бұл тіл RND, USR, PEEK және POKE функцияларын қосу арқылы кеңейтілді, бұл пайдаланушыға BASIC бағдарламасынан 6800 жүйесінің барлық компоненттеріне қол жеткізуге мүмкіндік береді". Көптеген іске асырушылар HP Time Shared BASIC немесе DEC BASIC PLUS тәжірибесін өз жобаларына енгізіп, Tiny BASIC тілінің ресми спецификациясын жеңілдетті. 1977 жылға дейін жарияланған жеті маңызды іске асырудың арасында: Барлығының құрамында кездейсоқ сан функциясының бір түрі болды, әдетте. Бұл спецификацияға енбегенмен, Tiny BASIC дизайнына қатысты хабарламада осы функция ғана сұралған. Барлығында STOP операторы қосылды және көбінесе тапсырма операторларында салыстыру операторларын қолдану мүмкіндігі болды. 6800TB-ден басқа барлығы жолдарда операторларды бөліп көрсетуді қолдады, әдетте, TBX қолданса да, ал PATB операторларды қолданды. MINOL-ден басқа барлығы салыстыру операторларын қамтитын өрнектердің қажеттілігін жойды (мысалы, жарамды болды). Іске асырулар оны мүлдем жойды немесе оны қосымша опция ретінде қалдырды немесе оны тек қана жасырын клаузалар үшін қолдады. Көптеген іске асырулар басу аймақтарын қолдау үшін өзгертілді, келесі аймаққа өту үшін және курсорды жылжытпау үшін қолданылды. 6800TB және DTB-ден басқа барлығы қосылды. 6800TB және MINOL-ден басқа барлығы жад көлемін қайтару функциясын қосты: TBX-де , DTB және PATB-де , L1B-де және NIBL-де. Төрт іске асыру массивтерді қосты, PATB және L1B-де бір өлшемсіз массив немесе TBX және DTB-де өлшемді массивтер. Төрт іске асыру сандық операторды қосты. Төрт іске асыру цикл операторын қосты: PATB, NIBL және L1B ұсынды, ал TBX циклді қолдамады және циклді аяқтау үшін кілт сөзді қолданды. Тек NIBL ғана құрылымдық бағдарламалауға жақындады, оның ішінде , Allison-ның BASIC-пен байланысты проблемалар туралы 2-ші нөмірдегі шағымына қарамастан. Токендеуге балама ретінде RAM-ды үнемдеу үшін TBX, DTB және MINOL кілт сөздерді қысқарды: for , for , for. Толық, дәстүрлі кілт сөздер қабылданбады. Керісінше, PATB дәстүрлі кілт сөздерді қабылдады, сонымен қатар кез келген кілт сөзді оның ең аз бірегей тізбегіне қысқартуға рұқсат берді, соңында нүкте қойылатын. Мысалы, , , және басқа да нұсқалары жұмыс істесе де, олар енгізілуі мүмкін. Бұл жүйе PATB қолданған TRS 80 үшін Level I BASIC-те сақталды, сондай-ақ кейіннен Atari BASIC және әртүрлі Sharp Pocket Computers BASIC-те табылды.
All added some sort of random number function, typically Though not included in the specification, a newsletter article prior to the Design Note for Tiny BASIC requested only this function. All enabled to be optional and most let expressions in assignment statements contain relational operators. All but 6800TB supported statement delimiters in lines, typically although TBX used and PATB used In statements, all but MINOL removed the need for expressions to contain relational operators (e. g., was valid). Implementations removed altogether or made it optional or supported it only for implied None supported clauses. Many modified to support print zones, using to go to the next zone and to not advance the cursor. All but 6800TB and DTB added All but 6800TB and MINOL added a function to return memory size: TBX had , DTB and PATB had , L1B had , and NIBL had Four implementations added arrays, whether a single, undimensioned array in PATB and L1B or ensionable arrays in TBX and DTB. Four implementations added the ark statement. Four implementations added the loop: PATB, NIBL, and L1B offered , while TBX did not support and used the keyword to end a loop. Only NIBL had any nod towards structured programming, with , despite Allison's lament in Issue 2 about problems with BASIC. As an alternative to tokenization, to save RAM, TBX, DTB, and MINOL truncated keywords: for , for , for The full, traditional keywords were not accepted. In contrast, PATB allowed accepted traditional keywords but also allowed any keyword to be abbreviated to its minimal unique string, with a trailing period. For instance, could be typed , although and other variations also worked. This system was retained in Level I BASIC for the TRS 80, which used PATB, and was also later found in Atari BASIC and the BASIC of various Sharp Pocket Computers.
Диалектілері
Tiny BASIC-тің ең белгілі диалектілері – бастапқы Design Note, Tiny BASIC Extended, Palo Alto Tiny BASIC және 6800 Tiny BASIC еді. Дегенмен, Tiny BASIC-тің тағы да көптеген түрлері болған.
Белгілі диалекттер тізімі
Tiny BASIC алғаш рет People's Computer Company жаңалықтарының бір бөлігінде жарияланды, бұл жаңалықтар кейін Dr. Dobb's Journal, ұзақ жылдар бойы шыққан компьютерлік журналға айналды. Журналда шамамен он нұсқасы жарық көрді. + Tiny BASIC-тің танымал диалектілері (Dr. Dobb's Journal) Жарияланған күні Шығарылымы Диалектісі Авторы Процессоры Көлемі 1975 жылғы желтоқсан 1 Дизайн ескертуі Дэннис Эллисон 1976 жылғы ақпан 2 6800 Tiny BASIC (6800TB) Том Питтман 6800 2K 1976 жылғы сәуір 4 Пало-Альто Tiny BASIC (PATB) Ли Чен Ван 8080 1.77K 1976 жылғы қараша 10 Ұлттық өнеркәсіптік BASIC тілі (NIBL) Марк Александр және Стив Лейнингер SC/MP 4K 1980 жылғы қазан 49 Күшейтілген 6800 Tiny BASIC Роберт Хадсон 6800 1985 жылғы ақпан 100 TBI68K Гордон Брэндли 68000 2006 жылғы қаңтар 351 Tiny BASIC-тің оралуы Том Питтман (C) TBX сондай-ақ Texas Tiny BASIC деп те белгілі болды. SCELBAL және 6800 Tiny BASIC журналда хабарланды, бірақ олардың бастапқы коды жарияланбады.
TBX was also known as Texas Tiny BASIC. Both SCELBAL and 6800 Tiny BASIC were announced in the magazine but did not publish their source code.
Palo Alto Tiny BASIC (Пало-Альто шағын BASIC)
Tiny BASIC-тің көптеген нұсқаларының ең танымалдарының бірі Ли Чен Вангтың Palo Alto Tiny BASIC, немесе қысқаша PATB болды. PATB алғаш рет 1976 жылғы мамырдағы Dr. Dobbs журналының санында пайда болды, стандартты емес мнемоникамен жазылған арнайы құрастыру тілінде. Бұл 8080 процессорларында дәстүрлі құрастырушылармен жұмыс істейтін басқа да порттардың жасалуына әкелді. Tiny BASIC ешқандай ресми түрдегі авторлық құқық шектеулерімен таратылмады, бірақ бастапқы кодты бөлісу және өзгерту мүмкіндігімен ұсынылды. Шындығында, Ван өзінің интерпретаторын жазудан бұрын Tiny BASIC Extended-ке түзетулер енгізген. PATB-дегі ең маңызды өзгерістердің бірі – FOR NEXT циклын қосу. Алғашқы TB-де циклдарды тек арқылы іске асыруға болады. Microsoft BASIC-тегідей, циклдің жоғарғы және төменгі шектері цикл басталғанда белгіленетін және цикл ішінде өзгермейтін. Сондықтан, егер шектердің бірі айнымалы өрнегіне негізделген болса, айнымалыны өзгерту шекті өзгерте қоймайды. Модификатор MS-дегідей міндетті емес. Кейін ол тілді Cromemco үшін 3K Control Basic-ке бейімдеді, әріп-цифрлы айнымалы атауларын (мысалы, A0-ден Z9-ға дейін), логикалық функцияларды (AND, OR, XOR), машиналық кодты орындау үшін CALL командасын, PRINT пішімдеудің қосымша опцияларын және басқаларын (PEEK және POKE орнына GET және PUT; I/O порттарының функцияларын) қосты. Palo Alto Tiny BASIC көптеген басқа да жүзеге асырулар үшін бейімделді, соның ішінде I деңгейлі BASIC (1977), Sharp PC 1211 ұсынылмалы компьютері үшін BASIC (1980) және Astro BASIC (1982, Джейми Фентон).
MINOL
Орта мектепте оқитын оқушы жазған MINOL – толық Design Note-ты қолдамайтын жалғыз жүйе, операторлардың басымдығы болмады, тек үш релятивтік операция (<, =, #) ғана бар, және одан басқасы жоқ. Ол тек 8 биттік қолтаңбасыз нақтылықты (басқа барлық жүйелер 16 биттік қолтаңбалы нақтылықты қолданды) және 0-ден 254-ке дейінгі жол нөмірлерін қолдады. Строкалардан басқа, бос орындарға рұқсат етілмеді; өрнек сол мекен-жайдағы строканы жүктемес бұрын, кездейсоқ санды қайтарады; операциялық жүйеге қайтарады. Жады, жоғары және төмен байттардың екі өлшемді массиві ретінде қарастырылды (мысалы, "(0,0)" және "(255,255)"); машиналық кодтың кіші бағдарламасын орындайды. Томас Ф. Уайтман 1976 жылы Hewlett Packard HP 2640 және HP 2645 терминалдары үшін (Intel 8008 және 8080 процессорларын қолданған) Tiny BASIC жүйесін жазды, ол Hewlett Packard Journal журналында жарияланды. 1976 жылғы желтоқсанда Interface Age журналында LLL (Lawrence Livermore Laboratory) BASIC жарияланды, оның алғашқы нұсқасын Стив Лейнингер Allison-ның техникалық тапсырмасы бойынша жасады, содан кейін National Semiconductor компаниясынан Tandy Corporation компаниясына ауысты. Ақырғы интерпретаторды Джон Диккенсон, Джерри Барбер және Джон Титер Айдахо университетінде LLL-мен шарт бойынша жасады. 5К көлемді жүйе Дэвид Мид, Хал Брэнд және Фрэнк Олкен жасаған қозғалатын нүктелік пакетті қамтыды. LLL бағдарламаны қоғамдық доменге берді, ол АҚШ Энергиялық зерттеулер және даму басқармасының қолдауымен жүйені әзірледі.
U. S. Energy Research and Development Administration.
4K BASIC-тер
Altair BASIC, 4K BASIC, 4 КБ жедел жадтағы машинада жұмыс істей алады, бағдарламалық код үшін шамамен 790 байт бос орын қалдырады. Tiny BASIC бастамасы Altair 4K BASIC үшін талап етілген 150 доллар төлемге жауап ретінде пайда болды. 1975 жылы Стив Возняк жаңа құрылған Homebrew Computer Club клубына қосылды, онда Ли Чен Ванг (Palo Alto Tiny BASIC) және Том Питтман (6800 Tiny BASIC) сияқты мүшелер болды. Возняк өзінің машинасына өзіндік BASIC қажет екеніне келді, ол MOS Technology 6502 процессоры үшін бірінші болар деп үміттенеді. Тілге 4 КБ жедел жад қажет болғандықтан, ол оны жобалау үшін ең төменгі жад көлемі деп белгіледі. Integer BASIC алғаш рет 1976 жылы Compact Cassette тасбасында жарияланды. 1977 жылы Radio Shack (сол кездегі атауы) өзінің алғашқы компьютерін – 4 КБ ROM-дағы I деңгейлі BASIC-пен Z80 жүйесін, TRS 80-ді шығарды. Tandy компаниясының қызметкері Стив Лейнингер National Semiconductor компаниясында жұмыс істеген кезде SC/MP үшін NIBL (National Industrial Basic Language) интерпретаторының алғашқы нұсқасын жазған. 1979 жылы әзірленген Sinclair 4K BASIC, Джон Гранттың жазуымен, тілдік анықтамасы ретінде 1978 жылғы American National Standards Institute (ANSI) Minimal BASIC стандартын пайдаланды, бірақ ол тек бүтін санмен арифметикалық амалдарды орындайтын, толық емес 4 КБ-лық жүзеге асырылым болды.
Кейінгі орындалулары
2002 жылы Эммануэль Шайлу, Паскаль Манури және Бруно Пагано Objective Caml қолданбасын әзірлеуде Tiny BASIC (/) мысалы ретінде жариялады. 2013 жылы Алекс Янг Python-да оның іске асырылуын жариялады. 2019 жылы Сергей Кузнецов Ruby тіліндегі нұсқасын жариялады. Сондай-ақ 2019 жылы Оскар Толедо Гутьеррес bootBASIC-ті жариялады, ол 8086/8088 машинасының жүктеу секторының 512 байтының ішіне сыяды, осылайша ол ең кішкентай BASIC іске асырылуы болып табылады. Мұны істеу үшін тіл реляциялық операторларды (IF операторлары нөлден өзге мәндермен жұмыс істейді), код жолдарының ұзындығын 19 символға дейін шектейді және бос орын пернесі басылғанда дисплейді жаңарта алмайды. Бұдан өзге, GOSUB және RETURN командалары жоқ, бірақ RND функциясы бар (аргументсіз, 0 мен 255 аралығындағы мәнді қайтарады). Тіл бағдарлама жолдарын сақтау үшін массивті пайдаланады, бұл үшін 20 000 байт қажет. 2023 жылы Гордон Хендерсон 6502 ассемблерінде Tiny Basic іске асырылуын жариялады. Ол NIBL-дің ықпалында және 3,5 КБ ROM-да жұмыс істей алады, деректер мен бағдарламаны сақтау үшін кем дегенде 1 КБ RAM қажет. Ол DO/UNTIL, FOR/NEXT, қарапайым жолдар, жадты қарау/өзгерту (байт немесе 16 биттік сөз), GOSUB/RETURN, CALL, RND және гексадецималды енгізу/шығару мүмкіндіктерін қолдайды.
Салыстырмалы диалектілер
Келесі кестеде Tiny BASIC-тің тілдік ерекшеліктері, оларды басқа танымал BASIC-термен салыстырылады. + BASIC іске асыруын салыстыру – Tiny BASIC және басқа BASIC бағдарламалаушы(лар) Процессор түрі INPUT LET PRINT GOTO IF THEN GOSUB RETURN END RUN LIST CLEAR NEW REM FOR/NEXT READ / DATA / RESTORE Қосылған BASIC командалары Өзгертулер Сөз тіркестері relop Функциялар RND Жады функциясы Сызық нөмірлері Мәлімдеме шектеуіші Қателер Дәлдік Арифметикалық Айнымалылар Массивтер Стрингтер (Дартмут студенттері) GE 225 Компиляция және [!] LET var = өрнек PRINT өрнек тізімі {, / ; / } GO TO сан IF өрнек relop өрнек THEN жол нөмірі GOSUB сан RETURN END RUN LIST бастау NEW [бағдарлама атауын сұрайды] REM FOR / TO / STEP / NEXT READ, DATA STOP артықшылық, ^ < <= = >= > <> INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0 1 1 – 99999 22 9 цифр анықталған ±999,999,999; E белгісі негіз 2 256 – +255 (E±76). A–Z, A0–Z9 DIM (бір әріпті атау, екі өлшем); егер алынып тасталса, 0-ден 10-ға дейін; барлық массивтерде 1500 элементке дейін (версия 4-ке қосылды) (DEC қызметкерлері) PDP 8 Компиляция және INPUT var тізімі LET var = өрнек PRINT өрнек тізімі {, / ; / } GO TO сан IF өрнек relop өрнек [THEN/GO TO] жол нөмірі GOSUB сан RETURN END RUN LIST (бірінші (, соңғы)) NEW [бағдарлама атауын сұрайды] REM FOR / TO / STEP / NEXT READ, DATA, RESTORE STOP, OLD, SAVE, UNSAVE DELETE (бірінші (, соңғы)), BYE артықшылық, ^ < <= = >= > <> INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0 1 1 – 2045 23 анықталған ±134,217,727; 14E 38<N<1.7E38 A–Z, AA–Z9 DIM (бір әріпті атау, екі өлшем) Альфред Уивер, Майкл Тиндалл, Рональд Дэниелсон 8008 Интерпретатор INPUT <айнымалы> {, <айнымалы>}* LET var = формула PRINT <жол> / <формула> {, <жол> / <формула>}* GO TO сан IF өрнек THEN жол нөмірі GOSUB сан RETURN END RUN REM FOR / TO / STEP / NEXT DEF FN, STOP артықшылық, ^ < <= = >= > <> AND OR NOT FNA Z, SIN, COS, LOG, SQR, EXP, ATN 0 – 999 4 байт мантия және 1 байт экспонента [Datapoint 2200 қалқымалы арифметикалық пакеті] A–Z, A0–Z9 DIM (бір әріпті атау, үш өлшем) Билл Гейтс, Пол Аллен, Монте Давидофф 8080 Интерпретатор INPUT ("жол",) var тізімі (LET) var = өрнек PRINT өрнек тізімі {, / ; } GOTO сан IF өрнек THEN жол нөмірі/мәлімдеме GOSUB сан RETURN END RUN LIST (бастау) NEW REM FOR / TO / STEP / NEXT READ, DATA, RESTORE STOP артықшылық < <= = >= > <> ABS, INT, SGN, SQR, TAB, USR RND(X) <0, X-ті тұқым ретінде пайдалану; =0, қайталау; >0, келесі 1 – 65535 : 12 анықталған 40 биттік оператор қалқымалы DIM (бір өлшем) Деннис Эллисон Интерпретатор INPUT var тізімі LET var = өрнек PRINT өрнек тізімі GOTO өрнек IF өрнек relop өрнек THEN мәлімдеме GOSUB өрнек RETURN END RUN LIST [= NEW] артықшылық < <= = >= > <> >< 1 – 255 8 анықталған 16 бит ± 32767 A–Z Дик Уиппл & Джон Арнольд 8080 Интерпретатор IN (LET) var = өрнек ;} GO TO IF өрнек [THEN жоқ] мәлімдеме GO SUB RET END RUN LST (бірінші (, соңғы)) NEW FOR NXT (бірінші (, соңғы)) DTA (массив LET) артықшылық < <= = >= > <> >< TB басып шығарудағы бос орындар RN (келтірікті 0 10000) SZE 1 – 65535 $ 14 16 бит ± 32767 AZ DIM, 1 немесе 2 өлшем, 255x255 максимум Фред Гриб 8080 Интерпретатор IN (LET) var = өрнек} GO TO IF өрнек [THEN жоқ] өрнегі GUBET RUN END RUN LIST (соңғы бірінші) [= NEW] артықшылық < <= = >= > <> >< RND(0), RND(1) SIZE 2 – 255 : 20 16 бит ± 32767 AZ, A1 – A6 – Z6 DIM, 1 өлшем Эрик Т. Мюллер 8080 Интерпретатор IN [бастапқы мәлімдемеге кері секіру] END RUN LIST CLEAR [тек айнымалылар] NEW < = # 1 – 254 : 6 анықталған 8 бит 0 – 255 A–Z (H,L) жад орны бір таңба Ли Чен Ванг 8080 Интерпретатор INPUT [(өрнек) var]* (LET) var = өрнек PRINT өрнек тізімі GOTO өрнек IF өрнек [THEN жоқ] мәлімдеме GOSUB өрнек RETURN STOP RUN LIST (бастау) NEW REM FOR / TO / STEP / NEXT STOP артықшылық < <= = >= > # ABS SIZE 1 – 32767 ; 3 16 бит ± 32767 A–Z @(1 өлшемді массив) Марк Александр & Стив Лейнингер SC/MP Интерпретатор INPUT ($)var (LET) var = өрнек PR/PRINT өрнек тізімі GOTO өрнек IF өрнек (THEN) мәлімдеме GOSUB өрнек RETURN END RUN LIST (бастау) CLEAR [айнымалылар және стек] NEW REM FOR / TO / STEP / NEXT DO/UNTIL Жадыны адрестеу (@ [PEEK/POKE], STAT, PAGE) артықшылық < <= = >= > <> MOD , AND, OR, NOT, RND(A,Z) TOP 0 – 32767 : 13 төрт таңба анықталған 16 бит ± 32767 A–Z жадыны адрестеу Стив Лейнингер Z80 Интерпретатор INPUT (#сан) [(өрнек) var]* (LET) var = өрнек PRINT (#сан) өрнек тізімі GOTO сан IF өрнек THEN мәлімдеме GOSUB сан RETURN END RUN (бастау) LIST (бастау) NEW REM FOR / TO / STEP / NEXT READ, DATA, RESTORE STOP, CONT, ON GOTO/GOSUB CLOAD, CSAVE, CLS, SET, RESET артықшылық < <= = >= > <> >< ABS , INT , MEM, POINT(X,Y) RND MEM 1 – 32767 : 3 анықталған 16 бит ± 32767 A–Z A(1 өлшемді массив) Роберт Уиттервик 6800 Интерпретатор INPUT var тізімі (LET) var = өрнек PRINT өрнек тізімі {, / ; } GOTO өрнек IF өрнек relop өрнек THEN мәлімдеме GOSUB өрнек RETURN END RUN LIST (бірінші (, соңғы)) NEW FOR/TO/NEXT (STEP жоқ) TAB артықшылық < <= = >= > <> >< RND, SIZE RND [1 32762 қайтарады] SIZE (байты пайдаланылған және бос байттарды басып шығаратын мәлімдеме) 1 – 65535 17 анықталған 16 бит [кейінірек BCD!] ± 32767 A–Z DIM (екі өлшем, ең үлкені 255) Стив Возняк 6502 Интерпретатор INPUT ("жол",) var тізімі (LET) var = өрнек PRINT өрнек тізімі {, / ; } GOTO өрнек IF өрнек relop өрнек THEN жол нөмірі/мәлімдеме GOSUB өрнек RETURN END RUN (бастау) LIST (бірінші (, соңғы)) SCR REM FOR / TO / STEP / NEXT AUTO, DEL, POKE TAB (команда), CALL артықшылық < <= = >= > <> # AND OR NOT MOD SGN, ABS, PEEK , LEN RND(X) 0 X (немесе X 0!) HIMEM, LOMEM 1 – 32767 [алғашқы нұсқасы, содан кейін:] 16 16 бит ± 32767 AZ анықталды, содан кейін кез келген санды әріптік сандар (бір өлшем) өлшемді (Айдахо штабының қызметкерлері) 8080 Интерпретатор INPUT var тізімі (LET) var = өрнек PRINT өрнек тізімі {, / ;} GO TO сан IF өрнек relop өрнек (THEN) мәлімдеме GO SUB сан RETURN END RUN LIST SCREM REM FOR/TO/NEXT (STEP жоқ) STOP CALL, GET , PUT артықшылық < <= = >= > <> >< 0 – 32767 : 14 32 бит анықталған, AZ, A0Z9 DIM (бір әріпті атау, бір өлшем, өлшем мөлшері 255) Джон Грант Z 80 Интерпретатор INPUT var LET var = өрнек PRINT өрнек тізімі {, / ;} GO TO сан IF өрнек THEN мәлімдеме GO SUB сан RETURN RUN (сан) LIST CLEAR NEW REM FOR/TO/NEXT (STEP жоқ) STOP POKE артықшылық < = > ABS, CHR$, CODE, PEEK, RND, STR$, TL$, USR RND, RANDOMISE 1 – 9999 10 16 бит 16 бит A–Z DIM A Z (тек сандар, бір әріпті атау, бір өлшем, өлшем мөлшері 255)