1

Тема: SUPER-CHIP v1.1

Передмова перекладача

Сією чернеткою започатковую цикл перекладів про віртуальну машину CHIP-8. Перекладач не має програмованого куркулятора ГевельПаккард і ганяти SUPER-CHIP в емуляторі йому ліньки, тому переклад неточний. Сподіваюся з наступними перекладами виправлятиму попередні неточності й відточуватиму стиль.

SUPER-CHIP v1.1
===============

... змінена версія ігрового інтерпретатора CHIP-8, початково створеного Андреасом Ґюстсафссоном.

S-CHIP надає:

- повноекранне відображення в новому розширеному відеорежимі
- зворотню сумісність (ви можете запускати старі ігри для CHIP-8)
- збільшення швидкодії в розширеному режимі
- наявність більших 16x16 спрайтів
- більші шрифти для балів
- взаємодію з S-CHIP програмами, надсилаючи та одержуючи інформацію
- можливість припинити роботу інтерпретатора програмно
- не потрібно вимикати годинника
- команди процесора для листання екрану вниз, вліво і вправо


Ознайомлення з CHIP
-------------------

Нагадаю, що мова програмування CHIP-8 використовувавлася на багатьох домашніх комп'ютерах, основою яких був RCA'шний CDP1802 процесор в кінці 1970'х. Ця маленька інтерпретована мова була створена для написання простих відеоігор. Вона має менш ніж 40 машинних команд, включно з арифметикою, графікою, звуком і передачею керування. Всі команди мають довжину 16 бітів та виконувалися дуже маленьким інтерпретатором віртуальної машини (імплементація для 1802 має довжину 512 байтів).


Технічний опис
--------------

Віртуальна машина CHIP-8 адресує байти та має адресний простір 4 кб для шістнадцяткових адрес 000-FFF. Проте, адреси 000-1FF зарезервовані для місця розташування інтерпретатора CHIP-8, тому програми CHIP-8 починаються з адреси 200. Всі машинні команди довжиною 16 біт та завжди починаються з парної адреси.

Машина має 16 8-бітних регістрів загального призначення, які називаються V0..VF.

Регістр VF змінюється багатьма командами, бо слугує парпорцем переносу та показником перетину спрайтів. Також наявний 16-бітний вказівний регістр I (хоча лише 12 молодших бітів зазвичай використовуються).

CHIP-8 програми відображають графіку малюванням спрайтів, які мають 8 пікселів ширини і 1..15 пікселів висоти. Роздільна здатність екрану складає 32 на 64 пікселів в звичайному режимі. Координати екрану починаються з лівого верхнього кута екрану і всі вони додатні. Спрайти зберігаються в тупокінцевому вигляді (англ. big endian), тобто найбільш значимий біт відповідає найлівішому пікселу. Все малювання відбувається XOR режимі. Якщо хоча б один піксель при цьому гаситься, то VF <> 00, інакше - 00.

В розширеному відеорежимі роздільна здатність екрану складає 64 на 128 пікселів. Також в ньому наявний розмір спрайтів 16x16.

Два таймери: затримковий таймер і звуковий таймер.  Обидва таймери зменшують значення 60 ріазів на секунду, доки значення таймерів не дорівнюватиме нулеві, але
звуковий таймер при цьому гуде.

В нижче наведеній таблиці команд, NNN означає 12-бітові адреси, KK - 8-бітові сталі, X і Y - 4-бітові номери регістрів. Шістнадцяткові цифри означають себе. Перші два символи коду команди утворюють байт команди з меншою адресою, де перша літера є найбільш значимим ніблом.

Командти, позначені(*) є новими в SUPER-CHIP.

00CN*    Листання екрану на N пікселів вниз
00E0     Очищення екрану
00EE     Повернення з процедури
00FB*    Листання екрану на 4 пікселів вправо
00FC*    Листання екрану на 4 пікселів вліво
00FD*    Припинення роботи
00FE*    Вимкнення розширеного відеорежиму
00FF*    Увімкнення розширеного відеорежиму для повноекранної графіки
1NNN     Перехід до NNN
2NNN     Виклик процедури NNN
3XKK     Пропуск наступної інструкції, якщо VX == KK
4XKK     Пропуск наступної інструкції, якщо VX <> KK
5XY0     Пропуск наступної інструкції, якщо VX == VY
6XKK     VX := KK
7XKK     VX := VX + KK
8XY0     VX := VY, VF може змінитися
8XY1     VX := VX or VY, VF може змінитися
8XY2     VX := VX and VY, VF може змінитися
8XY3     VX := VX xor VY, VF може змінитися
8XY4     VX := VX + VY, VF := переніс
8XY5     VX := VX - VY, VF := нема позики
8XY6     VX := VX shr 1, VF := переніс
8XY7     VX := VY - VX, VF := нема позики
8XYE     VX := VX shl 1, VF := переніс
9XY0     Пропуск наступної інструкції, якщо VX <> VY
ANNN     I := NNN
BNNN     Перехід за адресою NNN+V0
CXKK     VX := псевдовипадкове_число and KK
DXYN*    Показ N-байтового спрайта з M(I) за координатами (VX,VY), VF := перетин. Якщо N=0 і чинний розширений режим, показує спрайти 16x16.
EX9E     Пропуск наступної інструкції, якщо клавша з кодом VX натиснена
EXA1     Пропуск наступної інструкції, якщо клавша з кодом VX не натиснена
FX07     VX := затримковий_таймер
FX0A     Очікування натиснення клавіші, зберігання значення натисненої клавіші в VX
FX15     затримковий_таймер := VX
FX18     звуковий_таймер := VX
FX1E     I := I + VX
FX29     Посилання в I на 5-байтовий шрифтовий спрайт для шістнадцяткового значення VX
FX30*    Посилання в I на 10-байтовий шрифтовий спрайт для цифри в VX (0..9)
FX33     Збереження двійково-десяткове відображення VX в M(I)..M(I+2)
FX55     Збереження V0..VX в пам'яті, починаючи з M(I)
FX65     Зчитування V0..VX з пам'яті, починаючи з M(I)
FX75*    Збереження V0..VX в RPL користувацькі прапорці (X <= 7)
FX85*    Зчитування V0..VX з RPL користувацьких прапорців (X <= 7)


Нотатки про HP48SX iмплементацію
--------------------------------

CHIP-8 програми зберігаються в HP48SX як стрічкові об'єкти, що містять програмні байти в зростальному порядку адрес, які починаються з 0200. Сам інтерпретатор є об'єктом машинного коду, який здатний виконувати CHIP-8 прогамні стрічки на рівні 1. Потрібно 4 kB вільної пам'яті. Якщо відбувається помилка під час виконання, адреса поточної CHIP-8 команди повертається як двікове ціле на рівень 1.

Натискання клавіші пробіла призводить до припинення роботи, ENTER - до перезавантаження CHIP-8 программ, а клавіш +/- - до вмикання/вимикання звуку.

Вкладеність процедур обмежена 16 рівнями.

Більшість chip-8 програм писані для 16-клавішних шістнадцяткових клавіатур з наступною розкладкою:

  1 2 3 C                                      7 8 9 /
  4 5 6 D    Ця клавіатура емулюється HP48SX   4 5 6 *
  7 8 9 E    наступними клавішами:             1 2 3 -
  A 0 B F                                      0 . _ +

Це може призвести до деякого непорозуміння з програмами, які потребують числового вводу.


Copyrights, etc
---------------

Частини цього документу зкопійовані з початкового CHIP-48 документу, писаного Андреасом Ґюстафссоном.
Зміни від CHIP v2.25 до S-CHIP v1.1 зроблені Еріком Бринтсем (erikmb@etek.chalmers.se)

Оригінал

Подякували: Monolith, 0x9111A, NaharD, /KIT\4

2

Re: SUPER-CHIP v1.1

Прихований текст

шрифт ламає очі, трошки

Подякували: 0xDADA11C71

3

Re: SUPER-CHIP v1.1

Дякую за переклад. (можете мені закидувати: coderhero.win).

А за шрифт навпаки  *THUMBSUP*

Подякували: 0xDADA11C71