СВИТ16
SWEET16 — это интерпретируемый набор команд байт-кода, изобретенный Стивом Возняком и реализованный как часть Integer BASIC ROM в компьютерах Apple II . Он был создан потому, что Возняку нужно было манипулировать 16- битными указателями , а Apple II был 8-битным компьютером. [1]
SWEET16 не использовался в основном коде BASIC, но позже использовался для реализации нескольких утилит. Среди них следует отметить процедуру перенумерации строк, которая была включена в ПЗУ Programmer's Aid #1, добавлена в более поздние модели Apple II и доступна для установки пользователем на более ранних примерах. [2]
Код SWEET16 выполняется так, как если бы он работал на 16-битном процессоре с шестнадцатью внутренними 16-битными с прямым порядком байтов регистрами , называемыми R0 через Р15 . Некоторые регистры имеют четко определенные функции: [1]
- R0 – аккумулятор
- R12 подпрограммы – указатель стека
- R13 – хранит результат всех операций сравнения для ветвей . тестирования
- R14 – регистр состояния
- R15 – счетчик программ
16 виртуальных регистров общей массой 32 байта расположены на нулевой странице реальной физической карты памяти Apple II (по адресу $00 – $1F ), где значения сохраняются в виде младшего байта, за которым следует старший байт. [1] Сам интерпретатор SWEET16 находится из $689 до $F7FC в Integer BASIC ROM.
По словам Возняка, реализация SWEET16 представляет собой модель экономного кодирования , занимающую всего около 300 байт в памяти. [3] SWEET16 работает примерно на одну десятую скорости эквивалентного собственного кода 6502 . [1]
Операторы
[ редактировать ]Зарегистрировать операторов | Нерегистрируемые операторы | ||||
---|---|---|---|---|---|
00 | РТН | Вернитесь в режим 6502. | |||
1н | НАСТРОЙКА Rn | Постоянный набор | 01 | БР шт. | Филиал всегда |
2н | ЛД Рн | Нагрузка | 02 | БНК | Ветвь, если нет переноса |
3н | СТ Рн | Магазин | 03 | до н.э. | Ответвление, если керри |
4n | ЛД @Rn | Загрузка косвенная | 04 | АД | Ветвь, если Плюс |
5 н | СТ @Rn | Магазин косвенный | 05 | БМ из | Разветвление, если Минус |
6н | ЛДД @Rn | Загрузить двухбайтовый косвенный | 06 | БЖ | Ветвь, если ноль |
7н | ЗППП @Rn | Хранить двухбайтовый косвенный | 07 | БНЗ | Ветвь, если ненулевое значение |
8н | ПОП @Rn | Поп-косвенный | 08 | БМ1 из | Разветвление, если минус 1 |
9н | СТП @Rn | Магазин Pop косвенный | 09 | БНМ1 ее | Ветвь, если не минус 1 |
Ан | ДОБАВИТЬ Rn | Добавлять | 0А | БК | Перерыв |
Бн | СУБ РН | Вычесть | 0Б | РС | Возврат из подпрограммы |
Сп | ПОПД @Rn | Pop двухбайтовый косвенный | 0С | БС еа | Переход к подпрограмме |
Дн | СЛР Рн | Сравнивать | 0D | Неназначенный | |
В | индийская рупия Rn | Приращение | 0Е | Неназначенный | |
Фн | ДКР Рн | Декремент | 0Ф | Неназначенный |
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д Возняк, Стивен (ноябрь 1977 г.). «SWEET16: Машина мечты 6502» . Байт . Проверено 5 января 2011 г.
- ^ Помощь программистам Apple (PDF) . Яблоко. 1978.
- ^ Возняк, Стивен (май 1977 г.). «Яблоко II» (PDF) . Байт . Проверено 18 мая 2012 г.
Внешние ссылки
[ редактировать ]- Call-APPLE Wozpak II - буклет Call-APPLE 1979 года , который включает «Введение в SWEET 16» Дика Седжвика и версию «SWEET 16: Машина мечты 6502» Стива Возняка с подробными описаниями каждого кода операции.
- Стротманн, Карстен (21 марта 2004 г.). «Портирование Sweet 16» . 6502.org . Архивировано из оригинала 03 марта 2021 г. Проверено 03 марта 2021 г.