Локомотив BASIC: Amstrad CPC тілінің тарихы мен мүмкіндіктері
Locomotive BASIC
Locomotive BASIC: Amstrad CPC, PC1512 тілі. Mallard BASIC-тің мұрагері, BBC Micro үшін жазылған. Нұсқалары: 1.0, 1.1. Программирование, ойын құруға арналған.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Locomotive Basic — Locomotive Software компаниясы Amstrad CPC үшін жазған BASIC бағдарламалау тілінің авторлық диалектісі (ол ROM-ға кіріктірілген), ал кейінірек Amstrad PC1512 және 1640 компьютерлерінде GEM қолданбасы ретінде Locomotive BASIC 2. Ол Amstrad PCW компьютермен бірге келген CP/M жүйесі үшін жасалған Mallard BASIC-тің тікелей жалғасы болды. Locomotive BASIC-тің екі нұсқасы бар: 1.0 нұсқасы тек CPC 464 моделімен бірге шықты, ал 1.1 нұсқасы барлық басқа модельдермен бірге жеткізілді. BASIC 1.1 Amstrad CPC Plus сериялы машиналармен бірге, жиынтықтағы ойын картриджінің құрамында да болды.
Locomotive Basic is a proprietary dialect of the BASIC programming language written by Locomotive Software on the Amstrad CPC (where it was built in on ROM) and the later Locomotive BASIC 2 as a GEM application on the Amstrad PC1512 and 1640. It was the main descendant of Mallard BASIC, the interpreter for CP/M supplied with the Amstrad PCW. There are two versions of Locomotive BASIC: 1.0 which only came with the CPC model 464, and 1.1 which shipped with all other versions. BASIC 1.1 was also shipped with the Amstrad CPC Plus series machines, as part of the included game cartridge.
Даму
Даму жақында BBC Micro үшін Acorn Computers Z80 қосымшасы үшін Mallard BASIC жазу бойынша жасалған жұмысқа негізделді. Бар кодты жетілдіруге шамамен 12 апта уақыт кеткенін хабарлады, және ол BBC BASIC-тен "күшті әсер алды", бірақ BBC-де құрастыру тілін қажет ететін нәрселерді істеу үшін қосымша мүмкіндіктерді қосты.
Development was based on existing work recently undertaken writing Mallard BASIC for Acorn Computers Z80 addon for the BBC Micro. It is reported to have taken around 12 weeks to enhance the existing code, and was "very influenced" by BBC BASIC, though adding additional functions to do things that would have required assembly language on the BBC.
Ерекшеліктері
Ол сол кездегі стандарттарға қарағанда өте қарапайым, бірақ қуатты BASIC нұсқасы болды, графикалық өңдеуге арналған арнайы командаларды (DRAW, PLOT, INK және PAPER сияқты барлық нұсқаларда; сондай-ақ v1.1 нұсқасында FILL) қамтиды, тіпті бірнеше экран, терезелер және т.б. жасауға мүмкіндік берді, бірақ түс жүйесі мен палитраны басқару қиын болды. 664 және одан кейінгі модельдерде орнатылған 3 дюймдік дискінің корпусына 27 жүйелік түстің сандық кодтарын көрсеткен кесте жазылған. Қарапайым болғанымен, ол сол кездегі басқа BASIC нұсқаларынан ерекшеленді, уақыт бойынша бағдарламалық үзіліс механизмін ұсынды, ол EVERY немесе AFTER командаларын пайдаланды; бұл пайдаланушы таңдаған BASIC жол нөміріне уақыт бойынша қайталайтын немесе бір рет шақыру мүмкіндігін берді. Сонымен қатар, сол кездегі басқа үй компьютерлерімен салыстырғанда, Amstrad Locomotive BASIC CPC дыбыс чипін, AY 3 8912-ні (3 мелодиялық және 1 шу арнасы бар) басқарудың салыстырмалы түрде жоғары деңгейін қамтамасыз етті. Осы чип соңғы үлгідегі ZX Spectrum, сондай-ақ Atari ST және MSX компьютерлерінде де қолданылды, бірақ олардың ешқайсысы толыққанды енгізілген SOUND командасына ие болған жоқ. Белгілі бір арнаны немесе арналар комбинациясын таңдау, конверттерді, дыбыс деңгейін, биіктігін, шуды және т.б. орнату сияқты көптеген нәрселерді 7 параметрге дейін қолдайтын бір SOUND командасымен жасауға болады. Дегенмен, BASIC-те өте күрделі және/немесе төмен деңгейдегі техникаларды іске асыру мүмкін болмады, себебі олар аппаратқа тікелей немесе дәл қол жеткізуді қажет етті, мысалы, трекерлерден күрделі музыка (арпеджио арқылы имитацияланған аккордтарды қоса алғанда), RoboCop сияқты ойындардағы цифрлық үлгіленген дыбыстарды ойнату және т.б. Дискілер, таспалар және файлдарды басқару BASIC-тің өзі арқылы жүзеге асырылды және әдетте GET, PUT, ERASE, SAVE, MERGE, RUN, CAT, LOAD сияқты командалармен қарапайым файлдарды басқару үшін жеткілікті болды. Шындығында, сол жылдары көптеген үй компьютерлерімен бірге келетін BASIC стандартты операциялық жүйе ретінде де қызмет етті. Сондай-ақ, жадты бөлу және басқару үшін MEMORY және параметрлік LOAD командасы сияқты арнайы командалар бар болды, олар, мысалы, бейне жадына "шикі" сурет деректерін қамтитын файлды жүктеуге және бірнеше BASIC командаларымен оны көрсетуге мүмкіндік берді. LOAD немесе SAVE командаларына дұрыс жад адрестерін параметр ретінде қосу 16 КБ сығылмаған экрандық суреттерді оңай жүктеуге мүмкіндік берді. Басқа адреске шақыру (CALL) мәжбүрлі жүйелік қайта жүктеуді (call 0), әйгілі "Кез келген пернені басыңыз" (&bb18 қоңырау) немесе монитордың растрлық сканерлеуімен синхрондау арқылы анимациядағы жыпылықтауды жоюды қамтамасыз етті ("синхронды кадрлық қайтару" - &bd19 қоңырау); бұл Basic 1.1 нұсқасында FRAME командасы ретінде енгізілді. PEEK және POKE командаларымен бірге CALL BASIC-тен ассемблерлік тілде бағдарламалауға интерфейс ұсынды.
It was a rather simple but powerful BASIC implementation by the standards of the day, featuring dedicated commands for handling graphics (such as DRAW, PLOT, INK, and PAPER in all versions; plus FILL in v1.1), even allowing the creation of multiple screens, windows, and the like, although the color system and palette handling was awkward. A table giving the numeric codes for the 27 system colors was printed over the built in 3" disk drive casing on the 664 and later machines. Simple as it was, it did stand out however among other BASICs of the time by offering a timer based software interrupt mechanism using the EVERY or AFTER commands; this offered a timed repeating or one off call respectively to the BASIC line number of the user's choice. Also, when compared to other home computers of the time, the Amstrad via Locomotive BASIC granted a relatively high level of control over the CPC sound chip, an AY 3 8912 with 3 melodic channels and 1 noise channel. The same chip was also used on late model ZX Spectrums, as well as the Atari ST and MSX computers, but none of those had such a complete built in SOUND command. Many things, from selecting a particular channel or a combination of channels, setting envelopes, volume, pitch, noise, and so on could be done with a single SOUND command, with up to 7 parameters. Granted, especially complex and/or low level techniques could not be done with BASIC due to their requiring more precise or direct access to the hardware, e. g. especially complex music from trackers (including simulated chords using arpeggios, etc. ), the playback of digitally sampled sounds as in the game RoboCop for example, and so on. Disk, tape, and file management were managed by BASIC itself, and were usually good enough for simple file management, with commands such as GET, PUT, ERASE, SAVE, MERGE, RUN, CAT, LOAD etc. In fact, during those years, the BASIC supplied as standard with most low cost home computers also acted as a more or less simple operating system. Also available were some special commands for memory allocation and handling, like MEMORY and a parametric LOAD command, allowing, for example, to load a file containing "raw" picture data into video memory, causing it to be displayed, with a couple of BASIC instructions. Adding the right memory address(es) as parameter to the commands LOAD or SAVE would allow easy loading of raw uncompressed 16 KB screen pictures. CALLing another address gave a forced system reset (call 0), the famous "Press Any Key" (call &bb18) or for eliminating flicker in animation by allowing you to synchronize with the monitor's raster scan via "sync frame flyback" (call &bd19); this was given its own dedicated command in Basic 1.1 FRAME. With PEEK and POKE, CALL provided an interface to assembly language programming from BASIC.
Қазіргі бәсекелестері
Commodore 64 BASIC-те (Commodore BASIC) құрылыс бойынша графика немесе дыбысқа арналған арнайы командалар болмағаннан өзгеше, Locomotive BASIC машинаның стандартты мүмкіндіктерінің шегінде кез келген нәрсені жасауға мүмкіндік берді. Бұл аз маңызды емес, себебі сол дәуірдегі кейбір басқа машиналар бағдарламалаушылардан өздерінің жүйесінің толық дыбыс және графикалық мүмкіндіктеріне қол жеткізу үшін ассемблерді пайдалануды талап еткен. MSX, Sinclair Spectrum және басқалары дыбыс және графика мүмкіндіктері үшін ұқсас, көбінесе толыққанды командалар жиынтығын ұсынды. BASIC мүмкіндіктерінен асып түсетін жалғыз нәрсе – ойындар мен демонстрацияларда қолданылатын артық сканилеу режимдері, 27 түсті графикалық режимдер, цифрлық дыбыстың ойнатылуы және тегіс прокрутка болды. Символдар мен түстерді таңдау үшін әртүрлі пернетақта командаларының қысқартқыштары немесе арнайы пернелері бар Sinclair BASIC немесе Commodore 64 BASIC-тен айырмашылығы, Locomotive BASIC кілт сөздері толық жазылып, интерпретатор оларды талдап, танып, токендеді. Дегенмен, "?" сияқты қысқартулар болды, "PRINT" үшін және бірнеше шақырулар. Бағдарламалар компакт-кассетаға немесе дискетаға сақталып, екілік немесе ASCII файлдары түрінде қайта алынуы мүмкін.
Unlike the Commodore 64's built in BASIC (Commodore BASIC), which had no dedicated commands for graphics or sound, Locomotive BASIC allowed doing pretty much anything that was within the standard capabilities of the machine. This was not unimportant, as some other machines of the era required programmers to use assembler in order to access the full sound and graphics capabilities of their system. MSX, Sinclair Spectrum and some others offered a similar, more or less complete command set for their sound and graphics capabilities. The only things going clearly beyond BASIC capabilities were the overscan modes used in games and demos, 27 color graphics modes, digital sound playback, and smooth scrolling. Unlike Sinclair BASIC or Commodore 64 BASIC, which had various keyboard command shortcuts or specialized keys for choosing symbols or colors, Locomotive BASIC keywords were typed in full and the interpreter parsed, recognized and tokenised them. However, there were abbreviations like "?" for "PRINT" and a few shortcuts. Programs could be saved onto Compact Cassette or floppy disk and retrieved as binary or ASCII files.