Кіріспе

TI 99/4A бағдарламалау тілі TI BASIC — 1979 жылғы Texas Instruments TI 99/4 үй компьютерінің және оның 1981 жылы жаңартылған нұсқасы TI 99/4A-ның құрамына енгізілген BASIC бағдарламалау тілі үшін ANSI стандартына сәйкес интерпретатор. Қазіргі микрокомпьютерлердегі көптеген BASIC нұсқаларының тарихы Microsoft BASIC-ке байланысты болғанымен, TI BASIC ANSI және ECMA ұйымдары жасаған Minimal BASIC стандартын ұстанған, TI компаниясының жеке әзірлемесі болды. Бұл, өз кезегінде, 1960 жылдардағы түпнұсқа Dartmouth BASIC-ке негізделген. TI BASIC пен кең таралған MS түрлері арасында маңызды, кейде көзге көрінбейтін айырмашылықтар бар. Minimal BASIC-те заманауи BASIC-терде жиі кездесетін көптеген мүмкіндіктер болмады, ал Texas Instruments кейіннен BASIC қолданушыларының мүмкіндіктерін кеңейткен TI Extended BASIC картриджін ұсынды. Ол басқа BASIC-тердегі мүмкіндіктермен қатар, платформаның графикалық объектілерді басқару, дыбыс және басқа да функциялары үшін жаңа жүйелік командаларды қамтыды. Үй компьютеріндегідей, TI BASIC бағдарламалау үшін ғана емес, қарапайым операциялық жүйе ретінде де қолданылды. Minimal BASIC-ке TI мәтін, графика және таспаға немесе басқа файл жүйесіне сақтау сияқты негізгі файл операцияларына арналған командаларды қосты. TI 99 платформасының ерекшеліктеріне байланысты, TI BASIC өте төмен өнімділікке ие болды – әдеттегі компьютерлерге қарағанда шамамен екі есе баяу, бірақ одан да маңыздысы, жоғары сандық дәлдікке қол жеткізді.

Өнер көрсету

TI 99, TMS9900 микропроцессорына негізделген, ол 16 биттік архитектура, бастапқыда TI 990 миникомпьютерлерінің төменгі деңгейдегі модельдеріндегі бір чиптік орталық процессорды (CPU) қамтамасыз ету үшін құрылған. TMS9900 микрокомпьютерде де қолданылуға болатын, бірақ сол кезде толыққанды компьютер құру үшін қажетті қолдау микросхемаларының көп бөлігі 8 биттік болатын, және TI-дің мұндай микросхемалардың кең каталогы осыны қамтыды. Миникомпьютерлерде 16 биттік қолдау жүйелері көптеген жеке микросхемалардан құралатын, бірақ бұл төмен құнмен өнімге жарамсыз болды. Сондықтан TI машинаны негізінен 8 биттік ету және түрлі қолдау микросхемаларын осы 8 биттік шинаға қосу шешімін қабылдады, TMS9900 шинаны екі рет оқып 16 биттік мәнді шығарды. TMS9900-нің командалар жиынтығы архитектурасы 16 биттік операциялық кодтарға негізделген, яғни бағдарламалар әдетте 8 биттік машинадағыдан екі есе үлкен болар еді. Есте сақтау құрылғыларының қымбат болған дәуірінде бұл елеулі шығынға әкелді. Мұны шешу үшін TI өзінің тілімен немесе «Графикалық бағдарламалау тілі» (GPL) деп аталатын аралық өрнекпен 8 биттік виртуалды машина жасады, бұл бағдарламаларды ықшам форматта жазуға мүмкіндік берді. Бұл тәсілдің кемшілігі – әрбір GPL командасы TMS9900 командаларының бір немесе бірнешесіне дереу түрлендірілуі керек болды. GPL кодының өзі машинаның 8 биттік бөлігінде сақталып, оның өнімділігін одан әрі төмендетті. Осы себептердің салдарынан машина теориялық мүмкіндіктерінен әлдеқайда баяу жұмыс істеді. Бұл әсіресе BASIC-те байқалатын. Пайдаланушы бағдарламасының әрбір командасы 8 биттік жадтан оқылып, GPL-де жазылған код арқылы түсіндіріліп, содан кейін қайтадан 8 биттік шина арқылы жіберілуі керек еді. Нәтижесінде TI BASIC нашар өнімділік көрсетті; сол дәуірдің ортақ сынақтарында TI 99 әдетте Commodore PET немесе Apple II сияқты 8 биттік машиналардан екі есе баяу жұмыс істеді. Мысалы, Byte Sieve-ді BASIC-те орындау TI BASIC-те 3960 секундқа созылды, ал Apple II-дегі Applesoft BASIC-те, көріне бергенде, өте баяу машинада 2806 секундқа созылды, бұл TI-ден шамамен 30% жылдам.

Өңдеу және орындау

Сол кездегі көптеген BASIC тілдерінен айырмашылығы, TI BASIC толық экрандық редакторды ұсынбады. Оның орнына, пайдаланушыға бір жолды қосуға немесе өңдеуге мүмкіндік беретін жолдық редактор берілді. Әрбір операторды реттеу үшін нақты жол нөмірлері қолданылды. Тікелей режимдегі ағымдағы жаңа жолды көрсету үшін бірден іздеу сұрауы пайдаланылды, бұл көптеген жағдайлардағы жол нөмірлерінен өзгеше болды. Жол нөмірлері 1-ден 32767-ге дейін болды, және осы диапазоннан тыс жол енгізілсе, "BAD LINE NUMBER" қатесі пайда болатын. Жолды енгізуге көмектесетін команда тек тікелей режимде қолжетімді болды, ол жол нөмірін өсіретін болса, ал ескі бағдарламаны қайта нөмірлеуге мүмкіндік берді. TI BASIC сонымен қатар бірнеше қателіктерді жою командаларын қамтыды. белгілі бір жолдарда орындалуды тоқтату сияқты жұмыс істеді. , командасынан айырмашылығы, тікелей режимге шығу командасы пайда болған жолда емес, көрсетілген жолдарда орын алды. Мысалы, бағдарлама 130-шы жолға өткен сайын тікелей режимге шығаратын. Бұл, мысалы, кодтың ортасына емес, бағдарламаның басына бір команданы қою арқылы орындалуды басқару үшін қолданылуы мүмкін. командасы бұрынғы тоқтау нүктелерін өшірді. Сонымен қатар, командасы қазіргі орындалып жатқан жолдың нөмірін бұрышты жақшалармен шығарды: және т.б., ал командасы оны өшірді.

Айғақтар

TI BASIC-тің ANSI-ге үйлесімді нұсқалары, олардың көпшілігі MS-дегі әріптестері сияқты жұмыс істейді, бірақ екі қосымша мүмкіндігі бар: кездейсоқ сан генераторын белгілі бір "тұқым" мәнімен қайта іске қосады, ал массивтердегі алғашқы элементті 0 немесе 1 деп белгілейді, ал MS әрқашан нөлден басталады. Бұл стандартты жиынтыққа CALL, CLOSE, DISPLAY және OPEN командалары қосылды. Минималды BASIC стандартына сәйкес, операторлар тек тармақталуға ғана қолданылады, олар кез келген операторды орындай алмайды, бұл сол дәуірдегі көптеген BASIC тілдерінде кең таралған еді. Мысалы, TI BASIC-те: сияқты код жарамсыз. Оның орнына, мұны бірнеше жолдар арқылы орындау керек: Егер түрлендіру логикалық салыстырудың мағынасын өзгертуге қатысты сақ болмаса, қате пайда болуы мүмкін. Дегенмен, TI BASIC мынадай шартты операторды қолдады: Операторда екі нүктелер әртүрлі жолдардағы элементтерді ажырату үшін қолданылды, бұл әдеттегі үтір немесе нүктелі үтірден өзгеше. Бұл оны операторды ажыратушы ретінде пайдалануға мүмкіндік бермеді, себебі TI BASIC-те мұндай ұғым болған жоқ. Яғни, бір жолда тек бір ғана оператор болуы мүмкін. BASIC интерпретаторларының жұмыс істеу принципіне байланысты, циклдарды жеделдету үшін кодты бір жолға біріктіруге болады, бұл бағдарламадағы жол нөмірін іздеу қажеттілігін жояды. Бұл көріне бермейтін кемшілік кодтың өте баяу жұмыс істеуіне әкелуі мүмкін, ал осы мүмкіндікті қосу Extended BASIC-тің құрамына кірді. Минималды BASIC жүйесінің кеңейтімдері көбінесе BASIC-те тікелей көрсетілмейді, бірақ оларға команда және GPL негізіндегі атаулы кіші программалар арқылы қол жеткізіледі. Мысалы, экранды тазалайды, ал қазіргі уақытта басылған перненің коды қайтарылады. Тілде PEEK және POKE операторлары болғандықтан, BASIC ішінде жаңа CALLable кодты жасаудың ресми жолы болған жоқ. Мұны жасау үшін TI Editor/Assembler, кішкентай ассемблерді қамтитын TI Mini Memory картриджін немесе Extended BASIC қолдану қажет.

Кеңейтілген BASIC

TI BASIC жүйедегі ішкі ROM-да орналасты. 1981 жылы TI ROM картриджінің плагинін шығарды, ол қолданыстағы кодқа қосымша функцияларды қосып, тілді бірнеше жағынан жақсартты. Extended BASIC деп аталатын бұл платформаға көптен күткен жаңалық болды. Өзгерістердің бірі – бір жолда бірнеше оператор болу мүмкіндігінің қосылуы. Бірнеше операторды пайдалану өнімділікті арттыруы мүмкін; бір жолда орындалған циклдар әлдеқайда жылдам жұмыс істейді. Сонымен қатар, операторлар бірнеше жолға созылуы мүмкін. Негізгі диалект бұрыннан бері екі нүктені жол таңбасы ретінде пайдаланғандықтан, Extended BASIC осы мақсатта қос нүктені пайдаланды. Қызығы, TI BASIC-те де екі нүктенің тіркесімі мүмкін болды, мысалы, , ол "A" шығарып, содан кейін бос жол және "B" шығаратын еді, сондықтан Extended BASIC-те мұндай операторларға бос орын қосу қажет болды. Тағы бір қабылдаған жаңалық – операторлар енді тек ғана емес, кез келген операторды орындай алатын болды. Extended BASIC-те қарапайым операторды былай жазуға болады. Бұл сөйлемде де жұмыс істейді, басқа операторларға мүмкіндік береді. Extended BASIC сонымен қатар жаңа операторлардың шағын жиынтығын, соның ішінде , , , , , , , және операторларын қамтыды. Соңғы үш оператор құрылымдық бағдарламалау үшін қолданылады, атаулы кіші бағдарламаларды жасауға мүмкіндік береді. Extended BASIC сонымен қатар көптеген жаңа функцияларды және әсіресе CALLable процедураларды қамтыды. Соңғылардың ішінде автоматты түрде жалғасатын қозғалысты жасауға арналған спрайт командаларының кітапханасы бар еді.