Добавлю... Enter Esc Anykey Arrows работают.
Добавлю... Enter Esc Anykey Arrows работают.
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
Вот вопрос denpopov оказался СУЩЕСТВЕННЫМ!
... к чему постоянные конструкции BEGIN-END?
Я долго искал и нашел.
Это оказалась сложная конструкция, исполняющая разные функции при компиляции для разных задач.
Например для процедуры MAIN() BEGIN производит подсчёт адреса начала скомпилированных машинных кодов, а END определяет их конец, то есть это адреса для создания полноценного атарьского *.COM файла.
Для обычных вызываемых процедур BEGIN производит все необходимые PLA для передачи параметров (только для своего программного, а не для аппаратного атарьского стека), а END производит все необходимые PHA, RTS для правильного выхода из программы.
Для процедур INTERRUPT, BEGIN делает то же, что и для обычных процедур, а END к тому же возвращает RTI.
В случае, если процедура должна возвращать данные, то есть является функцией, её END также кладёт возвращаемое на программный стек.
И наконец, в случае применения ПРИМАТИВНЫХ процедур, (От слова ПРИМАТЫ) то есть процедур, являющимися только исполняемыми машинными кодами, BEGIN и END являются только адресами входа и выхода.
Вот например как устанавливается VBI в PL65:
Код:PROC SetVBI*() BEGIN STX XSAVE LDA #$06 LDX #VBI/256 LDY #VBI AND $FF JSR SETVBV LDX XSAVE END
![]()
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
странный пример, конечно.
по идее в прерывании должны X и Y сохраняться, если задействованы.
На самом деле, это делает сам язык при BEGIN, однако он не сохраняет регистр X !
В PL65 регистр X используется только при работе с программным стеком языка, поэтому если он нужен в коде, сначала его сохраняют в XSAVE - (байт на нулевой странице), а потом восстанавливают.
Не во всяком языке ассемблер встроен, а где встроен, так там та ещё морока.
Кстати, я на PL65 перегнал руссификатор, который изначально на Си.
Мучался недельку методом тыка, потом прочитал мануал и вуаля!
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
Регистры A и Y сохраняются при вызове BEGIN и восстанавливаются при вызове END автоматически.
Вот сорц программульки:
Код:INCLUDE TERMINAL.LIB CONST EN=$E0 BYTE RU,OLDCONS BYTE CONSOL=$D01F,COLBAK=$02C8,CHBAS=$02F4 CONST BLUE=$80,RED=$32,SELECTED=$05 CONST SETVBV=$E45C,SYSVBV=$E45F,XITVBV=$E462 STRING FName$[20] BYTE BumpUp[$400-(@ AND $3FF)],NewCSet[$400] PROC VBI*() BEGIN LDA CONSOL CMP OLDCONS BEQ Exit CMP #SELECTED BNE Exit ! LDA COLBAK CMP #RED BNE ToRED ! LDA #BLUE STA COLBAK LDA #EN STA CHBAS GOTO Exit :ToRED LDA #RED STA COLBAK LDA RU STA CHBAS :Exit LDA CONSOL STA OLDCONS JMP SYSVBV END PROC SetVBI*() BEGIN STX XSAVE LDA #$06 LDX #VBI/256 LDY #VBI AND $FF JSR SETVBV LDX XSAVE END MAIN() BEGIN FName$="D1:RUS.FNT" COLBAK=BLUE CHBAS=EN RU=.NewCSet/256 OPEN(1,4,0,FName$) GCHAR(1,.NewCSet,$400) CLOSE(1) SetVBI*() END
А во вложении atr
Я только заменил расширение на zip, и надо переименовать в atr.
Сейчас пытаюсь сделать программу управления языком резидентной, чтобы по ресету не сбрасывалась.
Теорию ещё не знаю, пока читаю чужие коды.
![]()
Последний раз редактировалось ezswift; 26.03.2014 в 16:58.
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
запустил fld.com, а русских букв не видать. я что-то неправильно сделал?
все же мне думается, что тот вариант, который я сделал, проще. Это ребята из кооператива "Формат" написали, мы немного модифицировали потом русификатор, по Reset подпрограмма рестартует, но я не помню как делали..
Надо набрать FLD.
Когда рамка станет синей для переключения шрифта надо нажать Select. А потом писать русские буквы.
Мне не подходит рестарт программы по Reset, так как она читает шрифт с диска.
Нехорошо каждый раз загружать шрифт.
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
Я думаю, я добью эту программку...
Она будет ЛЮБОЙ шрифт подгружать, даже, переключаемый по Caps.
(Типа по звучанию, как KOI-8 Z=З и пр.)
На самом деле, мне эта программа вообще не интересна.
Я - учу PL65.
Там столько неведомого, что ВАЩЕ!
Я очень люблю Си, но Это - сухая выжимка из компьютерного опыта.
А PL65 = САМ компьютерный опыт!
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)