среда, 6 сентября 2023 г.

Микроязык элиты

 \ ******************************************************************************

\

\       Name: TWOK

\       Type: Macro

\   Category: Text

\    Summary: Macro definition for two-letter tokens in the token table

\  Deep dive: Printing text tokens

\

\ ------------------------------------------------------------------------------

\

\ The following macro is used when building the recursive token table:

\

\   TWOK 'x', 'y'       Insert two-letter token "xy"

\

\ See the deep dive on "Printing text tokens" for details on how two-letter

\ tokens are stored in the recursive token table.

\

\ Arguments:

\

\   'x'                 The first letter of the two-letter token to insert into

\                       the table

\

\   'y'                 The second letter of the two-letter token to insert into

\                       the table

\

\ ******************************************************************************


MACRO TWOK t, k


 IF t = 'A' AND k = 'L' : EQUB 128 EOR RE : ENDIF

 IF t = 'L' AND k = 'E' : EQUB 129 EOR RE : ENDIF

 IF t = 'X' AND k = 'E' : EQUB 130 EOR RE : ENDIF

 IF t = 'G' AND k = 'E' : EQUB 131 EOR RE : ENDIF

 IF t = 'Z' AND k = 'A' : EQUB 132 EOR RE : ENDIF

 IF t = 'C' AND k = 'E' : EQUB 133 EOR RE : ENDIF

 IF t = 'B' AND k = 'I' : EQUB 134 EOR RE : ENDIF

 IF t = 'S' AND k = 'O' : EQUB 135 EOR RE : ENDIF

 IF t = 'U' AND k = 'S' : EQUB 136 EOR RE : ENDIF

 IF t = 'E' AND k = 'S' : EQUB 137 EOR RE : ENDIF

 IF t = 'A' AND k = 'R' : EQUB 138 EOR RE : ENDIF

 IF t = 'M' AND k = 'A' : EQUB 139 EOR RE : ENDIF

 IF t = 'I' AND k = 'N' : EQUB 140 EOR RE : ENDIF

 IF t = 'D' AND k = 'I' : EQUB 141 EOR RE : ENDIF

 IF t = 'R' AND k = 'E' : EQUB 142 EOR RE : ENDIF

 IF t = 'A' AND k = '?' : EQUB 143 EOR RE : ENDIF

 IF t = 'E' AND k = 'R' : EQUB 144 EOR RE : ENDIF

 IF t = 'A' AND k = 'T' : EQUB 145 EOR RE : ENDIF

 IF t = 'E' AND k = 'N' : EQUB 146 EOR RE : ENDIF

 IF t = 'B' AND k = 'E' : EQUB 147 EOR RE : ENDIF

 IF t = 'R' AND k = 'A' : EQUB 148 EOR RE : ENDIF

 IF t = 'L' AND k = 'A' : EQUB 149 EOR RE : ENDIF

 IF t = 'V' AND k = 'E' : EQUB 150 EOR RE : ENDIF

 IF t = 'T' AND k = 'I' : EQUB 151 EOR RE : ENDIF

 IF t = 'E' AND k = 'D' : EQUB 152 EOR RE : ENDIF

 IF t = 'O' AND k = 'R' : EQUB 153 EOR RE : ENDIF

 IF t = 'Q' AND k = 'U' : EQUB 154 EOR RE : ENDIF

 IF t = 'A' AND k = 'N' : EQUB 155 EOR RE : ENDIF

 IF t = 'T' AND k = 'E' : EQUB 156 EOR RE : ENDIF

 IF t = 'I' AND k = 'S' : EQUB 157 EOR RE : ENDIF

 IF t = 'R' AND k = 'I' : EQUB 158 EOR RE : ENDIF

 IF t = 'O' AND k = 'N' : EQUB 159 EOR RE : ENDIF


ENDMACRO




BYTE NUMBER --- NEW VALUE ---------- USAGE
-- 12 ---------- 00-FF --- Create a new galaxy
-- 13 ---------- 00-FF --- Create a new galaxy
-- 18 ---------- FF ------ Loads of credits
-- 1F ---------- 46 ------ 7 light years fuel
-- 20 ---------- 01 ------ Escape capsule
-- 23 ---------- 02 ------ Large cargo bay
-- 24 ---------- 01 ------ E-C-M- system ('L'=on/off)
-- 26 ---------- 01 ------ Pulse laser
-- 28 ---------- 01 ------ Galactic hyperdrive (may be Beam Laser)
-- 2C ---------- 01 ------ Escape pod
-- 2F ---------- 01 ------ Energy bomb
-- 31 ---------- 01 ------ ECM jammer
-- 31 ---------- 0C ------ Naval energy Unit
-- 32 ---------- 01 ------ Docking computer
-- 34 ---------- 03 ------ Galactic hyperdrive
-- 36 ---------- 01 ------ Mining laser
-- 38 ---------- 01 ------ Military laser
-- 3F ---------- 01 ------ Cloaking ('Y'=on/off)
-- 40 ---------- 01 ------ Loads of food -- 107 -- QQ20
-- 47 ---------- 01 ------ Loads of textiles
-- 49 ---------- 01 ------ Loads of radioactives
-- 4C ---------- 01 ------ Loads of slaves
-- 50 ---------- 01 ------ Loads of wine
-- 54 ---------- 01 ------ Loads of narcotics
-- 5C ---------- 01 ------ Loads of computers
-- 63 ---------- 01 ------ Loads of machinery
-- 67 ---------- 01 ------ Loads of alloys
-- 69 ---------- 01 ------ Loads of firearms
-- 6C ---------- 01 ------ Loads of furs
-- 72 ---------- 01 ------ Loads of minerals
-- 75 ---------- 01 ------ Loads of gold
-- 79 ---------- 01 ------ Loads of platinum -- 121
GE -- 83 ---------- 01 ------ Loads of gem stones
ZA -- 84 ---------- 01 ------ Loads of alien items
US -- 88 ---------- 01 ------ Refugees from Super Nova
IN -- 8C ---------- 01 ------ Important thargoid doc
AT -- 91 ---------- 00 ------ Clean legal status (may be 97 - 01)
TI -- 97 ---------- 00-08 --- Harmless - Elite ranking
ED -- 98 ---------- FF ------ Loads of combat points
-- 3C ---------- 01 ------ E.C.M. system jammer ('L'=on/off)

-- A3 ---------- 01 ------ AND FOR DIFFERENT MISSIONS CHANGE:
IS -- 9D ---------- 01 ------ Seek & destroy
IS -- 9D ---------- 02 ------ Deliver Thargoid Docs
IS -- 9D ---------- 03 ------ Rescue Refugees
IS -- 9D ---------- 04 ------ Destroy Cougar
IS -- 9D ---------- 05 ------ Destroy Space Station

Pressing the 'ESC' key will return you to the game.

http://www.emuverse.ru/wiki/MOS_Technology_6502/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4

AL -- 80

LE -- 81 -- STA (Oper,X) -- Сохранить аккумулятор в памяти -- A -> M -- IND, X

XE -- 83 -- SAX (Oper,X) -- A and X -> M -- IND, X

CE -- 85 -- STA Oper -- Сохранить аккумулятор в памяти -- A -> M -- ZP

BE -- 86 -- STX Oper -- Сохранить X в памяти -- X -> M

SO -- 87 -- SAX Oper -- A and X -> M

ES -- 89

AR -- 8A -- TXA -- Передать X в A -- X -> A

MA -- 8B -- ANE #byte -- Вар. 1: A = ((A and #581 and X) or ( #$EE and X)) and #byte; Вар. 2: X and #byte -> A -- В реальности параметр #581 может принимать значения #580, #58 или #$00, что зависит от значения, оставленного на шине видеоконтроллером после прерывания команды в режиме DMA

DI -- 8D -- STA Oper -- Сохранить аккумулятор в памяти -- A -> M -- ABS

RE -- 8E -- STX Oper -- Сохранить X в памяти -- X -> M

A? -- 8F -- SAX Oper -- A and X -> M

ER -- 90 -- BCC Oper -- Условный переход, если нет переноса -- Branch on Carry Clear

EN -- 92

BE -- 93 -- SHA (Oper),Y -- A & X & (ADDR_HI + 1)) -> M

RA -- 94 -- STY -- Сохранить Y (XX14) в памяти

LA -- 95 -- STA Oper,X -- Сохранить аккумулятор в памяти -- A -> M

OR -- 99 -- STA Oper, Y -- Сохранить аккумулятор в памяти -- A -> M

QU -- 9A -- TXS -- Передать X в S , не влияет на флаг N   X -> S

AN -- 9B -- SHS Oper,Y -- A and X -> S, S and ADDR_HI -> M

TE -- 9C -- SHY Oper,Y -- Вар. 1: Y & (ADDR_HI + 1) -> M; Вар. 2: Y and ADDR_HI -> M

RI -- 9E -- SHX Oper,Y -- Вар. 1: X and (ADDR_HI + 1) -> M; Вар. 2: X and ADDR_HI -> M

ON -- 9F -- SHA Oper,Y -- A & X & (ADDR_HI + 1)) -> M


Особенно прекрасен вот этот код 

39 -- 27 -- RLA  Oper -- Сдвиг в право содержимого памяти и пересылка в акумулятор -- ROL M, A and M -> A -- абсолютная адрессация на нулевой странице


А это значит что когда мы вводим апостров, который как бы завершает передачу мемоник мы восстанавливаем значение акумулятора из стека

Привем делаем выравнивание адреса на первую половину страницы и перемещаем все в тот самый подозрительный стек в районе 128 байта нулевой страницы .INWK .XX19 .QQ15 .XX18 .QQ17

Причем вывод на печать идет исключительно через видеодрайвер, якобы для сокращения количества тактов на выполнение операции, а на самом деле для контроля правильности ввода и редактирования содержимого исполняемой команды в ручном режиме путем использования кнопки Копи

Про кнопку Копи знали все хакеры. Она была на Космической клавиатуре кадета в МИТ и других традиционных компьюторов. А вот на поделках ИБМ-Интел-Микрософт она куда то исчезла.

В связке вот с этим макросом, который срабатывает во время выполнения кода  и размещения в памети


\ ******************************************************************************
\
\       Name: CHAR
\       Type: Macro
\   Category: Text
\    Summary: Macro definition for characters in the recursive token table
\  Deep dive: Printing text tokens
\
\ ------------------------------------------------------------------------------
\
\ The following macro is used when building the recursive token table:
\
\   CHAR 'x'            Insert ASCII character "x"
\
\ To include an apostrophe, use a backtick character, as in CHAR '`'.
\
\ See the deep dive on "Printing text tokens" for details on how characters are
\ stored in the recursive token table.
\
\ Arguments:
\
\   'x'                 The character to insert into the table
\
\ ******************************************************************************

MACRO CHAR x

 IF x = '`'
   EQUB 39 EOR RE
 ELSE
   EQUB x EOR RE
 ENDIF

ENDMACRO



А вместе с командой RE, напоминаю это первая часть искомой планеты

RE — 8E — STX Oper — Сохранить X в памяти — X –> M

У нас тут происходит классический свам содержимого регистра X и Акумулятора 

А вместе с командой RE, напоминаю это первая часть искомой планеты

RE — 8E — STX Oper — Сохранить X в памяти — X –> M

У нас тут происходит классический свап содержимого регистра X и Акумулятора 

И у нас еще остаются 4  недокументированные возврата BE, TE, RI, ON сохранения регистров в памеять, причем с установкой старшего бита адресс, то есть на первую страницу в рабочий стек.

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

Естественно как только такой код попдал на отличную от Би Би Си микро платформу ничего это не работало. Поэтому заведомо дети Англии, Австралии и Канады были поставлены в привилигированное положение. 

.QQ16

 EQUS "AL"              \ Token 128 Amount of cash
 EQUS "LE"              \ Token 129 Fuel level
 EQUS "XE"              \ Token 130 Competition flags
 EQUS "GE"              \ Token 131 Galaxy number
 EQUS "ZA"              \ Token 132 Front laser
 EQUS "CE"              \ Token 133 Rear laser
 EQUS "BI"              \ Token 134  Left laser
 EQUS "SO"              \ Token 135 Right laser
 EQUS "US"              \ Token 136 unused
 EQUS "ES"              \ Token 137
 EQUS "AR"              \ Token 138 Cargo capacity
 EQUS "MA"              \ Token 139 food
 EQUS "IN"              \ Token 140   textiles
 EQUS "DI"              \ Token 141   radioactives
 EQUS "RE"              \ Token 142  slaves
 EQUS "A?"              \ Token 143  liquor/Wines
 EQUS "ER"              \ Token 144  luxuries
 EQUS "AT"              \ Token 145  narcotics
 EQUS "EN"              \ Token 146 computers
 EQUS "BE"              \ Token 147 machinery
 EQUS "RA"              \ Token 148  alloys
 EQUS "LA"              \ Token 149  firearms
 EQUS "VE"              \ Token 150  furs
 EQUS "TI"              \ Token 151  minerals
 EQUS "ED"              \ Token 152  gold
 EQUS "OR"              \ Token 153  platinum
 EQUS "QU"              \ Token 154 gem-stones
 EQUS "AN"              \ Token 155 alien items
 EQUS "TE"              \ Token 156 ECM
 EQUS "IS"              \ Token 157 Fuel scoops ("barrel status")
 EQUS "RI"              \ Token 158  Energy bomb
 EQUS "ON"              \ Token 159 Energy/shield level


Шутка, а тут вот кодовая книга для кембриджских шпионов в России со списком того на что ведется охота Англичанкой. Обратите внимание на позицию рабы.

этот фрагмент у нас размещается в условном нулевом цикле запуска программы, который расположен как раз под всей иерархией токенов из мемоник.

Таким образом у нас тут 3 вид интерпретации данных. Можно слать шифровки в центр.

Напоминаю что именно эта партия компьютеров была выкуплена за наличку у владельцев компании в обход всех юридических процедур и таким способом, от которого уже компания не смогла оправится. Была вынуждена разрушить всю свою дистрибьютерскую сеть и продать товар за немыслимые 50 фунтов что не покрывает по сути и четверти цены. Если без прибыли то половину. И эта партия поехала в восточную Европу, то есть в страны восточного содружества.

Еще напоминаю что этот компьютер имел максимум интрефейсов и буквально мог быть подключен в любую сложную систему.

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


.xx14

.xx12 - начало отсчёта для всего корабля, все читы начинаются в этой точке (направление от центра корабля к её вершине например носовой)

Вот со следующей координаты имеют отсчет все чит коды игры элита. Приведенный список выше не полный. Там есть переменные времени управления (по сути автопилот корабля). Если расширить шаблон корабля (перезаписать следующие за шаблоном биты), включая подгрузку новой геометрии, то параметры текущей галактики и планеты и звезды так же изменятся. По сути это обещание о бесконечных не лимитированных перемещениях в игре элита.

.xx12 - начало отсчёта для всего корабля, все читы начинаются в этой точке (направление от центра корабля к её вершине например носовой)

.xx13 - рисование линии

.xx14 - адресс семени для текущей планеты

.xx15 - вектор вершины

.xx16 - вектор пузыря или универсума


Если будет настроение в следующий раз посмотрим что там в "стеганографии" текстов с экономическими параметрами скрыта. Может быть и найдем долгожданную Ракслу или хотя бы намеки на её координаты.


Cheap BBC Micro Upgrades you can install yourself


Комментариев нет: