Теоретически возможно. Если вы когда-то сталкивались с написанием драйверов под различные устройства для согласования их действий с компьютером, то вам приходилось анализировать выходной сигнал этих устройств (аналоговый, дискретный, цифровой и т.п.) и потом по нему определять при каких комбинациях импульсов устройство выполняет те или иные задачи - слепое вызванивание всех функций устройства. Вот когда вы их более-менее вызвонили вы делаете драйвер или генератор импульсов, которые подменяют импульсы устройства заставляя его делать то что вам надо в данный момент. Потом пишется драйвер согласующий внутренюю программу вашего генератора импульсов и компьютер и пишется интерфейс управления драйвером понятный для любого пользователя.
В старгейте уже прошли этот этап много раз и устройства древних частично уже изучены. Значит если написать драйвера, сделать блоки согласования сигналов и интерфейс для управления всем этим с компьютера, то вполне можно управлять устройствами любо расы независимо от того какая логика внутри их техники.
Однако, существует ещё один способ - это думать как думает это устройство и давать ему команды пользуясь его интерфейсом без всяких настроек и драйверов. И, соответственно потом писать софт на основе той же логики на основе которой построено устройство. Когда в университете изучали операции, то нам рассказывали, что они делятся по количеству операндов на унарные(1 переменная), бинарные(переменных 2), тернарные(переменных 3) и т.п. Потом нам давали определённый перечень данных операций и при помощи их сочетания просили отобразить весь перечень известных нам операций, если это возможно. Порой получалось а порой - нет, но это означало что нам просто не хватает ещё одной какой-то ещё непознанной операции при добавлении которой можно будет полностью охватитть всё подмножество возможных операций устройства.
Тернарные растровые операции Tag: GDI. Палитры, растры, метафайлы —
Последний параметр, dwRop, в функциях BitBlt, PatBlt и Stretch Bit задает растровую операцию, которая указывает для GDI, как должны комбинироваться биты исходного изображения с битами изображения-приемника и с битами шаблона текущей кисти. Результат операции определяет новое состояние изображения-приемника. Поскольку число операндов равно трем, то операция относится к классу тернарных операций.
В Win32 API существует 256 ROP-кодов (raster-operation codes). Растровые операции кодируются 32-разрядными двойными словами DWORD. В старшем слове хранится один из 256 однобайтных кодов растровой операции, а младшее слово содержит кодировку формулы, по которой растровая операция реализуется драйвером графического устройства.
Разработчики Microsoft присвоили символические имена только пятнадцати тернарным растровым операциям из 256. Видимо, это как раз те операции, которые использует операционная система.