CPU4917

User avatar
Mr. Kibernetik
Site Admin
Posts: 4509
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPad, iPhone, MacBook
Location: Russia
Flag: Russia

Re: CPU4917

Post by Mr. Kibernetik » Thu Jan 15, 2015 5:34 pm

Dahl wrote:если сделать версию для AppStore, то будут ли в ней нормально работать файловые команды?
Да, все.

Версия в Апсторе - это все то же самое, только без текстового редактора, файл менеджера, документации и с предустановленной программой пользователя (с автозапуском).

User avatar
Dahl
Posts: 53
Joined: Thu Jan 01, 2015 10:42 am

Re: CPU4917

Post by Dahl » Thu Jan 15, 2015 6:01 pm

Просто уже выскочили нюансы с проигрыванием музыки и выходом по STOP, решил уточнить. Мало ли какой для этих файловых операций требуется доступ к памяти… если фоновый процесс под музыку может вызвать нарекания, то и тут тоже…

User avatar
Mr. Kibernetik
Site Admin
Posts: 4509
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPad, iPhone, MacBook
Location: Russia
Flag: Russia

Re: CPU4917

Post by Mr. Kibernetik » Thu Jan 15, 2015 6:10 pm

С выходом по STOP - просто выходить некуда - нет ни редактора, ни файл менеджера - поэтому выходит просто в черный фон. А куда еще?

С фоновым МИДИ уже обсуждали, но если МИДИ звучки оформить как МИДИ файлы, то думаю у Эппл вопросов не возникнет - будет очевидно для воспроизведения чего нужен фоновый процесс. Эппл цеплялись и к самому Бейсику - он ведь тоже использует фоновый процесс для воспроизведения - и им было показаны МИДИ файлы, воспроизведением которых Бейсик занимается - их это вполне удовлетворило. Просто требовать необходимости фонового процесса без очевидных файлов, которые должны воспроизводиться - не в правилах Эппл.

User avatar
Dahl
Posts: 53
Joined: Thu Jan 01, 2015 10:42 am

Re: CPU4917

Post by Dahl » Sun Jan 18, 2015 12:21 pm

Приложение доведено до бета-версии. Я бы даже сказал, final beta. Папка со всем необходимым доступна здесь: https://www.dropbox.com/sh/e6jta6fm7m7a ... aKJ1a?dl=0

Что изменилось по сравнению с начальной концепцией.

Тумблер выключения. Поскольку iOS-приложение не может завершать себя, он теперь не закрывает приложение, а всего лишь действительно выключает устройство. Гаснут все табло и индикаторы, устройство перестаёт реагировать на всё, кроме включения питания. Поведение в выключенном состоянии реалистичное: можно всё нажимать и переключать, оно будет нажиматься и переключаться, но это ни к чему не приведёт. Однако при включении питания конфигурация тумблеров будет опознана правильно, и все нужные режимы выставятся.

При этом, поскольку бэйсик-программу (пока она ещё не стала самостоятельным приложением) завершать всё-таки как-то надо, оставлена такая неявная возможность. При включенном устройстве (индикатор на тумблере питания светится красным) и в режиме ожидания (кнопка RUN/STOP в зелёном состоянии) можно коснуться пальцем левого нижнего угла экрана — самый-самый уголок, — и тогда программа завершится.

Исчезла за ненадобностью кнопка ресета. Чтобы сбросить устройство в ноль, достаточно его выключить и включить обратно.

Реалистично реализована работа со внешней памятью. Она теперь скидывается не во внутренний массив программы, а в файл, и сохраняется там даже если приложение будет перезапущено. Не говоря уже о включении-выключении устройства. Изначально там хранится пресловутая программка печати всех шестнадцатеричных чисел от 0 до F.

Добавлены примеры демонстрационных программ. При включенном устройстве в режиме ожидания можно коснуться символа книги на справочной панели с кодами-командами, и откроются три примера. Если коснуться нужного, то он загрузится в память. Если передумали — коснитесь книги ещё раз, и примеры скроются. Первый пример — та же самая печать чисел, второй пример — числа Фибоначчи, третий пример — двойной проход по коду программы со сдвигом. Грязная программистская технология, но когда-то подобное реально использовалось, ибо иначе не получалось.

Табло на отладочной панели DEBUG теперь используется не только при отладке, но и для некоторых информационных сообщений. Типа того, что память сброшена на диск и т.п.

Добавлены кнопки очистки „принтера“ и копирования „принтера“ в буфер обмена. В первой как бы нет прямой необходимости (принтер очищается автоматически при включении питания и запуске программы), но такую кнопку захотели тестеры. Аргументация: „непустое поле принтера меня может отвлекать, хочу иметь возможность очистить его в любой угодный мне момент“. Копирование в буфер раньше выполнялось автоматически, но тестеры логично заметили „пусть лучше буфер не портится без моего ведома и желания“. Обе кнопки расположены справа от принтера: прямоугольник с диагональной стрелкой — „перевод страницы“ (=очистка поля), заполненные странички — копирование в буфер.

Добавлен тумблер автоматического ввода кодов в память. Если он включен, то нажатие кнопки на клавиатуре INPUT DATA не только заносит соответствующий код по текущему адресу в регистре IP, но и автоматически увеличивает этот регистр на единицу. Таким образом, чтобы ввести программу в память с бумажки, достаточно просто последовательно нащёлкать нужные символы подряд на клавиатуре, не отвлекаясь на манипуляции с установкой IP. Тестеры предлагали сделать такой режим ввода единственно возможным, я не согласился из соображений исторической достоверности. Сделал тумблер, и пусть каждый выбирает себе желаемое.

В данный момент весь интерфейс имеет Retina-разрешение. Основной фон — панель устройства 1000х700@144DPI при этом неприлично тянет аж на полтора мегабайта. При 72DPI — в три раза меньше. Вот думаю, нужна ли тут ретина… В динамических элементах (кнопки, тумблеры, табло) нужна без вопросов, а тут не знаю. С интересом выслушаю чужие соображения.

Забавно, что на iPad2 работает быстрее, чем на iPad3. (: Не очень намного, но заметить можно.

В общем, как-то вот так оно получилось. Вопросы, пожелания, жалобы принимаются.

User avatar
Mr. Kibernetik
Site Admin
Posts: 4509
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPad, iPhone, MacBook
Location: Russia
Flag: Russia

Re: CPU4917

Post by Mr. Kibernetik » Sun Jan 18, 2015 5:00 pm

Очень круто!

Еще комментарии по дизайну:
- красный цвет индикации лично мне кажется резковатым, я бы предложил зеленый;
- для подложек под кнопки и пр. вы как-бы сделали менее проявленным под ними общий фон, то есть оно полупрозрачные. Более стильно было бы убрать фактуру фона под ними полностью, оставив, например, однородный серый цвет для этих подложек;
- в режиме медленной работы нужно много времени, чтобы остановить работу программы - нужно держать нажатой кнопку Стоп в течение всей паузы медленной работы.

User avatar
Dahl
Posts: 53
Joined: Thu Jan 01, 2015 10:42 am

Re: CPU4917

Post by Dahl » Sun Jan 18, 2015 5:19 pm

Первые два момента думал. К тому, чтобы сделать фон панелей однородным, сам склоняюсь. Особенно после того, как увидел полтора мегабайта фоновой картинки в ретина-разрешении. (: С однородным фоном она однозначно полегчает.

Зелёный цвет индикации вошёл в моду у электронщиков значительно позднее красного, но это не тот случай, когда ради исторической достоверности стоит раздражать зрение, согласен. Надо будет просто попробовать, благо это всего лишь поменять одно число в программе.

Вот с остановом не очень представляю, чего бы сделать. Есть такой момент, безусловно. Но спрайт, в отличие от интерфейсной кнопки, не умеет сообщать о том, трогали ли его с момента предыдущей проверки этого факта. Можно только выяснить, трогают ли его в данный момент. Попробовать разве что разбить секундную паузу на пять по 0.2 и между ними четырежды проверять нажатие? Завтра попробую.

User avatar
Mr. Kibernetik
Site Admin
Posts: 4509
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPad, iPhone, MacBook
Location: Russia
Flag: Russia

Re: CPU4917

Post by Mr. Kibernetik » Sun Jan 18, 2015 5:26 pm

Dahl wrote:Вот с остановом не очень представляю, чего бы сделать. Есть такой момент, безусловно. Но спрайт, в отличие от интерфейсной кнопки, не умеет сообщать о том, трогали ли его с момента предыдущей проверки этого факта. Можно только выяснить, трогают ли его в данный момент. Попробовать разве что разбить секундную паузу на пять по 0.2 и между ними четырежды проверять нажатие? Завтра попробую.
Думаю, задержку в этом случае нужно делать не одной командой типа PAUSE, которая блокирует работу программы, а циклом с анализом времени по TIME(), внутри которого не терять контроль над интерфейсом.

User avatar
Dahl
Posts: 53
Joined: Thu Jan 01, 2015 10:42 am

Re: CPU4917

Post by Dahl » Sun Jan 18, 2015 6:16 pm

Мда. Специфика образования математика-вычислителя: мыслить в программировании категориями реального времени не привык совершенно. (: Нам бы всё подавай прерывания да события… (:

Идея перспективная, завтра опробую.

Кстати, убрать прозрачность с панелей на пульте попробовал. Размер файла уменьшился почти вдвое. Выглядит нормально, так и оставлю.

User avatar
Dahl
Posts: 53
Joined: Thu Jan 01, 2015 10:42 am

Re: CPU4917

Post by Dahl » Mon Jan 19, 2015 4:50 pm

Итак.

Фон панелей сделал однородным. Улучшилось однозначно.

Обработку стоп-кнопки переделал. Аналогично.

Индикаторы перекрасил в зелёный. В общем особой разницы не заметил. Но стало некрасиво смотреться сочетание зелёного индикатора и красной подсветки активного адреса. Изменил подсветку на более спокойную светло-оранжевую. В таком зелёно-оранжевом виде понравилось много больше, чем в прежнем красно-красном. Оставляем так.

Всё лежит там же.

Post Reply