Кіріспе
VIC 20 кеңейту картриджі
VIC 1211 Super Expander – VIC 20 үй компьютеріне арналған картридж. Ол компьютердегі BASIC интерпретаторын кеңейту үшін, көбінесе графика мен дыбыс бағдарламалауға көмектесу мақсатымен жасалған. Сондай-ақ, ол 3 килобайт қосымша жадты (оның 136 байты картридждің өзіне жұмсалды) қамтамасыз етті. Картриджді Commodore Business Machines (CBM) компаниясы жасап, 1981 жылы шығарды.
Сипаттама
VIC 20 компьютерімен бірге келген BASIC диалектісі, Commodore BASIC V2.0, өте шектеулі мүмкіндіктерімен танымал болды. Ол тіпті Commodore компаниясының бұрынғы компьютерлер қатарының, PET-тің, мүмкіндіктеріне де сай келмеді, ол кезде PET-те Commodore BASIC 4.0 нұсқасы орнатылған еді. Осының салдарынан, ол VIC 20 шығарылымынан бастап ескіріп, басқа микрокомпьютерлерде қол жетімді BASIC диалектілерімен салыстырғанда өте қарапайым көрінді. Шындығында, Commodore компаниясының ескі BASIC-ті қайта пайдалану туралы шешімі және оның тек 16 кБ ROM-ға (KERNAL-ды қоса алғанда) сыйып қалуы VIC 20 бағасын мүмкіндігінше төмен ұстауға көмектесті, соның арқасында ол үлкен жетістікке жетті. Сонымен қатар, ол тұрақты және дерлік қатесіз жұмыс істеді, бұл кейбір бәсекелес BASIC-тер туралы айта алмаймыз. Дегенмен, "VIC BASIC" BASIC тілінде негізгі деп саналатын "else" және "renum" сияқты командалардан ғана емес, графикалық және дыбыстық эффекттерге де қолдау көрсетілмеді. VIC 20-ның графикалық және дыбыстық мүмкіндіктерін пайдалану үшін бағдарламашылар байттарды тікелей VIC 20 графикалық/дыбыстық аппараттық құрылғысынан, 6560 бейне интерфейс чипіне (VIC) "PEEK және POKE" арқылы жіберуге мәжбүр болды. Бұл бағдарламалауды өте қиын және қателерге бейім етті, себебі құпия жад адрестері мен кодтарын үнемі пайдалану қажет болды, ондағы қателер қате туралы хабарлама шығарудың орнына компьютердің жұмысын тоқтатуы мүмкін еді, тіпті қарапайым тапсырмаларды орындау үшін көптеген командалар қажет болды. Мұндай жағдай сол кездегі шағын RAM және баяу интерпретацияланған BASIC жүйесі үшін өлімге алып келді. Бағдарламашылар осы мәселелерді машиналық кодты пайдалану арқылы белгілі бір деңгейде азайта алатын болды, бірақ бұл өзі қиын процесс және күрделі оқу қисынына ие еді. Осы кемшіліктерді жою үшін Commodore Super Expander картриджін жасады. Ол VIC 20-да графика мен дыбысты пайдалануды жеңілдету үшін қосымша BASIC командаларын ұсынды. Сондай-ақ, джойстик пен жарық қаламын оқуға арналған командалар және функциялық пернелерді пайдалану мүмкіндігі де ашылды.
Графика
VIC 20 жоғары ажыратылатын графикті тікелей қолдамады. Жоғары сапалы графикалық бейнелер дисплейді таңбалармен "бояу" және таңбалардың биттік карталарын "қайта анықтау" арқылы іске асырылды. Бұл күрделі және ұзақ процесс болды; оны BASIC бағдарламасында іске асыру, кез келген нәрсені салу үшін қажетті орындау уақытына байланысты, дерлік пайдасыз еді. Super Expander барлық қиын жұмысты өз мойнына алды. Ол бағдарламалаушыға нүктелер, сызықтар, эллипстер және доғаларды салуға, сондай-ақ бір жолды нұсқаулармен жабық аймақтарды бояуға мүмкіндік берді. 6560 чипінің шектеулеріне байланысты шектеулер болғанымен, VIC 20-ның барлық 16 түсін пайдалануға болады. Дисплейдің ажыратылатындығы 160×160 пикселге тең болды, бұл 6560 чипінің рұқсат еткен 192×200-ден төмендетілді, пикселдерге жеке адрестеу мүмкіндігін қамтамасыз ету үшін. Көп түсті жоғары ажыратылатын графика да қолдау көрсетілді (80×160 ажыратылатындығымен) және оны қалыпты жоғары ажыратылатын графикамен араластыруға болады.
Дыбыс
VIC 20-ның дыбыс мүмкіндіктері өте қарапайым болғандықтан, "PEEK және POKE" арқылы дыбыс эффектілерін бағдарламалау, графика бағдарламалау сияқты қиынға соқпады. Дегенмен, Super Expander VIC 20-ның төрт дауыс арнасында қарапайым үндік сигналдарды ойнату және дыбыс деңгейін басқару үшін команда ұсынды. VIC 20-да музыка ойнату мүмкіндігі болмады; әдетте музыкалық нотаны орындау үшін for цикліндегі уақытты кідірту ішінде үндік сигнал ойнатылатын. Ал Super Expander арқылы музыкалық ноталарды әріптер тізбегін PRINT арқылы ойнатуға болады. (Музыкалық тізбектер, VIC 20 бағдарламаларында түстерді немесе курсорды басқаруды қолданғандарға таныс, кері басқару таңбасы арқылы қалыпты тізбектерден ерекшеленеді.) VIC 20-ның төрт дауыс арнасының әрқайсысы бір уақытта өз ноталарын ойната алады, бұл сол кездегі стандарттар бойынша керемет әсер беретін үйлесімді дыбыстарды жасады.
Басқа құрылғылар
Супер-экспандер джойстик пен қақпақтардың күйін, сондай-ақ жарық қаламының орнын оқуға арналған командаларды ұсынды. Джойстик болса, "цифрлық" немесе "ауыстырғыш" типті болғандықтан, оның орнын анықтау үшін қосымша биттермен жұмыс істеу қажет болды.
Функция кілттері
Көбінесе VIC 20 функциялық пернелерін бағдарламада ғана пайдалануға болады, пернетақтадан мәлімет алғанда тиісті перне коды іздеу арқылы. VIC 20-ның тікелей режимінде олар ештеңе жасауға мүмкіндік бермейтін. Super Expander көмегімен функциялық пернелерге командаларды дереу орындау үшін міндеттеме беруге болады. Олар әдетте IBM PC-дегі GW BASIC сияқты, ең көп қолданылатын BASIC командаларымен алдын ала бағдарламаланған. Пайдаланушы функциялық пернелерге өздерінің командаларын немесе тіпті кез келген мәтіндік тізбекті тағайындай алады.
Кемшіліктері
Супер-экспандердің тартымдылығы мен пайдалылығының негізгі шектеулері мыналар. Commodore компаниясы Супер-экспандерді графикалық дисплейді 1024×1024 координаттар жүйесіне бейімдеу үшін жасады. Осы схема бойынша әрбір бейне пикселінің мөлшері 6,4 (немесе 12,8) «виртуалды» пикселді құрады. Бұл, экранда пиксельдерді нақты орналастыру үшін қосымша масштабтау операциясын бағдарламалау қажеттігін білдірді. BASIC 3.5 және 7.0 нұсқаларында SCALE командасы арқылы ұқсас мүмкіндік ұсынылды, бірақ BASIC-тің осы нұсқаларында масштабтау міндетті емес еді және кез келген пайдаланушы көрсеткен мөлшерге сәйкес келуі мүмкін. Координаттар жүйесі шығару құрылғысының (мысалы, теледидар) пропорцияларын ескермеді. Сондықтан NTSC форматында 300×300 пішіндес шеңбер эллипс тәрізді көрінер еді. Сол сияқты, (0,0) нүктесінен (300,300) нүктесіне салынған түзу сызық 45° бұрышпен көрсетілмейтін еді. Дөңгелек доғаларын салу кезінде бастапқы және соңғы бұрыштар 100 «градиан» бірлігімен (360 градусқа немесе 400 нақты градианға қарама-қарсы) стандартты емес өлшемдерде көрсетілуі керек еді. Супер-экспандер дисплейге биттік картаны шығару мүмкіндігіне ие болмады. Бұл, жоғары ажыратымдылықтағы ойындарда қолданылатын кез келген биттік картаны пиксел бойынша салу қажеттігін білдірді. BASIC интерпретаторының баяу жұмыс істеуі оны аркада стиліндегі ойындар сияқты қолданбалар үшін қолайсыз етті. Нәтижесінде, Супер-экспандердің мүмкіндіктері көбінесе пішінге бағытталған суреттерге, мысалы, кестелер мен қарапайым суреттерге немесе статикалық кескіндері бар приключение стиліндегі ойындарға пайдалы болды. Қосымша Супер-экспандер командаларын пайдаланып жазылған бағдарламалар көшірілмейтін еді. Бұл болжамды еді (өйткені бағдарламалар кеңейтілмеген VIC 20 жадына сыймас еді және қосымша BASIC командалары танылмайтын еді). Пайдаланушы қосымша командалармен жазылған бағдарламаны іске қосу үшін картриджді иеленуі және орнатуы керек еді. Бағдарламаны кеңейтілмеген VIC 20-ға жүктеу қателерге әкелді. Сондықтан Супер-экспандердің мүмкіндіктерін пайдалануға арналған бағдарламалық жасақтаманың көлемі, соның ішінде журналдарда жарияланған бағдарламалар өте шағын болды. Жоғарыда айтылғандарға қарамастан, Супер-экспандердің мүмкіндіктері VIC 20 бағдарламалау ортасындағы көптеген кемшіліктерді жойды. Сонымен қатар, нарықтағы ұқсас микрокомпьютерлер де осындай немесе ұқсас мәселелерге тап болды.