Кіріспе

BASIC бағдарламалау тілінің диалектісі. MBASIC – CP/M операциялық жүйесі үшін Microsoft компаниясы жасаған BASIC-тің нұсқасы. MBASIC – Microsoft-тың алғашқы өнімдерінің бірі болған бастапқы Altair BASIC интерпретаторларының тікелей жалғасы. MBASIC – Osborne 1 компьютерімен бірге келген BASIC-тің екі нұсқасының бірі. "MBASIC" атауы BASIC интерпретаторының MBASIC.COM дискілік файлының атынан шыққан.

Қоршаған орта

MBASIC 5-ші нұсқасы кем дегенде 28 КБ кездейсоқ кіру жады (RAM) және кем дегенде бір дискета жетегі бар CP/M жүйесін қажет етті. Microsoft BASIC 80 нұсқаларынан өзгеше, үй компьютерлерін өндірушілер компьютердің ерекше аппараттық мүмкіндіктерін пайдалану үшін өзгертіп жасаған болатын, ал MBASIC кіріс-шығыс операцияларының барлығы үшін тек CP/M операциялық жүйесінің командаларына сүйенді. Тек CP/M консолі (экран және пернетақта), қатарлы принтер және дискілік құрылғылар қол жетімді болды. MBASIC-тің өзгертілмеген түрінде графика, түс, джойстик, тышқан, тізбекті байланыс, желілік қосылым, дыбыс немесе тіпті нақты уақыт сағаты функциялары болған жоқ. MBASIC хост CP/M операциялық жүйесінің мүмкіндіктерін толыққанды қолдамады, мысалы, дискетада файлдарды ұйымдастыру үшін CP/M-нің пайдаланушылық аймақтарын қолдамады. CP/M жүйелері көбінесе бір пайдаланушылық және жеке жұмыс істейтін болғандықтан, файлдарды немесе жазбаларды құлыптауға, немесе көп тапсырмалы жұмыс істеуге мүмкіндік болмады. Бұл шектеулерге қарамастан, MBASIC сол кезде BASIC-тің қуатты және пайдалы нұсқасы деп есептелді.

Тіл жүйесі

MBASIC – аудармашы. Бағдарламаның бастапқы коды жадта токенделген күйде сақталды, BASIC кілт сөздері бір байттық таңбалармен алмастырылды, бұл жадты үнемдеп, орындалу жылдамдығын арттырды. Жол нөмірімен басталатын кез келген жол бағдарлама коды ретінде сақталды; ал жол нөмірі жоқ BASIC операторлары дереу команда ретінде орындалды. Бағдарламаларды экранда өңдеу үшін тізімдеуге немесе дискіге сығылған екілік форматта немесе қарапайым ASCII мәтіні ретінде сақтауға болады. Көз жолының әрқайсысы нөмірмен сәйкестендірілді, оны GOTO немесе GOSUB командасының мақсаты ретінде пайдалануға болады. Тек жол өңдеу командалары ғана ұсынылды. Бағдарламаны қарапайым мәтін ретінде сақтап, оны толық мүмкіндіктерге ие редактормен өңдеу көбінесе тиімді болды. Бағдарлама коды, айнымалылар, дискілік буферлер және тіпті CP/M операциялық жүйесінің өзі 8080 процессорының 64 килобайттық жад кеңістігін бөліседі. MBASIC-ті алғаш іске қосқанда, тіпті 64 килобайт жады бар машинада да бағдарламалар мен деректер үшін 32 килобайттан кем жад қол жетімді болуы мүмкін. REM кілт сөзімен немесе апострофпен басталатын түсіндіру жолдарын бағдарлама кодына қоюға болады, бірақ олар құнды жадты алады, бұл BASIC қолданушыларын кодтарын толыққанды құжаттаудан ой талдарды. Үлкен және күрделі бағдарламаларды іске қосуға мүмкіндік беру үшін MBASIC-тің кейінгі нұсқалары бағдарлама кодының бөліктерін оқуға және бағдарлама бақылауымен орындауға мүмкіндік беретін функцияларды қолдады ("CHAIN" және "MERGE" операторлары). "Shell" командаларын орындау мүмкіндігі болмады, бірақ тәжірибелі бағдарламашы бұл мүмкіндікті қайта жасай алатын. MBASIC-тің ерекше артықшылығы – синтаксистік және орындалу кезіндегі қателерге толық мәтіндік хабарламалар беруі. MBASIC сонымен қатар "trace" функциясына ие болды, ол орындалған жол нөмірін көрсетті. Бұл қалыпты бағдарлама шығысымен бірдей экран кеңістігін алғанымен, шексіз цикл сияқты жағдайларды анықтауға көмектесті.

Файлдар және кіріс/шығыс

Деректерді дискке жолдармен (әр жолының соңында CR/LF CP/M конвенциясы бойынша белгіленген) немесе белгілі бір ұзындықтағы жазбалары бар, тікелей қолжетімді файлдар түрінде сақтауға және оқуға болады. Олар, егер бағдарламашы жеткілікті білгір болса, деректер базасындағы жазбаларды өңдеуге қолданылуы мүмкін. Microsoft-тың екілік форматы, қозғалатын нүктелі сандар үшін жасалғандықтан, өнімге тән еді, сондықтан деректерді басқа бағдарламалармен тек ASCII мәтін форматында немесе екілік форматты түрлендіруге арналған кеңейтілген бағдарламалау арқылы алмасуға болады.

Бағдарлама ағынын басқару

MBASIC бағдарламасының ағыны IF THEN ELSE шартты тексерулермен, WHILE WEND циклдарымен және GOTO және GOSUB командаларымен реттелді. CASE операторы болған жоқ, бірақ ON GOTO (есептелген GOTO) көп тармақты өткелдерді қамтамасыз етті. Ішкі бағдарламалар параметрлерсіз болды және барлық айнымалылар глобалдық еді. MBASIC бағдарламашыларға құрылымдық бағдарламалауды міндеттемеді және спагетти кодты жазу оңай шаруа болды.

PEEK, POKE және пайдаланушы функциялары

70-ші жылдардың соңы мен 80-ші жылдардың басындағы 8-биттік компьютерлердегі BASIC туралы әңгіме PEEK және POKE функцияларының жадтан тікелей оқу және жазу үшін маңыздылығын атамайынша толық болмайды. Бұл жүйелерде көбінесе жадты қорғау болмағандықтан, бағдарламашы операциялық жүйенің бөліктеріне немесе әдетте қол жетімді емес функцияларға қол жеткізе алатын. Бұл сонымен қатар пайдаланушы бағдарламаларына жүйені тоқтата тұруға мүмкіндік берді (көбінесе жаңсақпен). Мысалы, CP/M бағдарламашысы POKE функциясын BASIC-ке консольдік құрылғыны тізбектік портқа ауыстыруға мүмкіндік беру үшін қолдануы мүмкін, егер жүйе BIOS мұны қолдаса. Нақты уақыт сағаттары бар машиналар үшін уақытты алу үшін PEEK нұсқаулары жиынтығы қолданылған болуы мүмкін. Күрделірек операциялар үшін MBASIC BASIC бағдарламасынан шақырылатын пайдаланушы анықтаған функцияларды қолдады. Бұлар әдетте жадтың резервтелген аймағына орналастырылды немесе машиналық кодтар тізбегі ретінде жол константаларына POKE арқылы енгізілді. MBASIC сондай-ақ 8080 аппараттық кіріс/шығыс порттарына тікелей оқу және жазу үшін INP және OUT нұсқауларын ұсынды. Бұл жүйелік аппараттық құралдар болса, BASIC бағдарламасынан перифериялық құрылғыларды басқару үшін қолданылуы мүмкін. PEEK және POKE, сондай-ақ машиналық кодты пайдаланушы функцияларын қолданған MBASIC бағдарламалары, түзетулерсіз машиналар арасында үйлесімді болмайтын.

MBASIC-тің мұрагерлері

CP/M үшін Microsoft BASIC 80-ден басқа, ISIS II операциялық жүйесі үшін MBASIC-тің бір түрі де қол жетімді болды. MSX BASIC сондай-ақ MBASIC-тің жақсы танымал мұрагері болып табылады, ол MSX машиналарына тән бірнеше кеңейтімдерді қамтиды. CP/M MBASIC-тің барлық функциялары IBM PC дискіге негізделген BASICA немесе GWBASIC-те де болды, бұл CP/M жүйелерінен бағдарламаларды PC-ге үйлесімді машиналарға көшіруге мүмкіндік берді. Тірек сөздерді көрсету үшін қолданылатын таңбалар әртүрлі болғандықтан, CP/M бағдарламаларын ASCII түрінде сақтау қажет болды. Көбінесе CP/M нұсқасына енгізілген экранды форматтау тізбектері BASIC-тің PC нұсқаларындағы курсорды орналастыру командаларымен алмастырылар еді, әйтпесе бағдарламаны аздап өңдеу қажет болар еді.

BASCOM

Microsoft MBASIC-ке ұқсас бастапқы тілді қолданатын CP/M BASIC компиляторын (BASCOM деп аталады) сатты. MBASIC-те түзетілген бағдарлама BASCOM арқылы құрастырылуы мүмкін. Бағдарлама мәтіні енді жадыда сақталмағандықтан және компилятордың жұмыс кезіндегі элементтері интерпретатордан кіші болғандықтан, пайдаланушы деректері үшін көбірек жад босады. Бағдарламаның нақты орындалу жылдамдығы шамамен 3 есеге артты. Бағдарламашылар BASCOM-ды танымал, бірақ баяу және қолайсыз CBASIC-ке балама ретінде қуана қарсы алды. CBASIC-тен өзгеше, BASCOM-ға MBASIC бастапқы коды үшін алдын ала өңдеуші қажет болмады, сондықтан оны тікелей түзетуге болады. Бір кемшілігі, Microsoft бағдарламаның әрбір құрастырылған данасы үшін 9% роялти және аппараттық-бағдарламалық жиынтықтар үшін 40 доллар талап етті. Компания сонымен қатар бағдарламашылардың қаржылық есептерін тексеру құқығын өзінде сақтады. Авторлардың бағдарламалық қамтамасы үшін әдеттегі роялти ставкалары 10-25% болғандықтан, InfoWorld 1980 жылы BASCOM-ның қосымша 9% роялтисі "бағдарламалық жасақтаманы жасауды тікелей залалға ұшыратуы мүмкін" деп мәлімдеді, сонымен қатар "Microsoft-тың CBASIC-тің кемшіліктеріне техникалық шешімі бар, бірақ экономикалық шешімі жоқ" деген қорытынды жасады.

MBASIC-тің маңызы

MBASIC 8 биттік CP/M компьютерлер дәуірінде маңызды құрал болды. Шебер пайдаланушылар MBASIC-те қазіргі заманғы жүйелерде қуатты қолданба бағдарламаларының командаларымен немесе сценарий тілдерімен орындалатын міндеттерді автоматтандыруға арналған бағдарламаларды жаза алатын. Пайдалы MBASIC бағдарламаларын тарату компьютер пайдаланушыларының топтарының әдеттегі қызметі болды. Журналдан BASIC-тің ұзын тізімдерін теру жаңа CP/M жүйесіне бағдарламалық жасақтаманы "қадамдық түрде енгізудің" бір жолы еді. Жоғары деңгейдегі тілге арналған кем дегенде бір компилятор MBASIC-те жазылды, сондай-ақ бірнеше жолдан бірнеше мың жолға дейінгі көптеген шағын ойындар мен пайдалы бағдарламалар жасалды.

Басқа қолданыстар

MBASIC – Basic Micro, Inc. компаниясы Microchip Technology PIC микробасқарушылар отбасы үшін жасаған коммерциялық BASIC компиляторының да атауы, және ол CP/M интерпретаторымен ешқандай байланысы жоқ.