[SDK] Древняя тема про nedoPC SDK (август 2004)

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Через 19 лет "Virtual TR-DOS" обнаружил мой Тетрис 2002 года, переписанный с GPL-ного сишного на RW1 :)
- Just another Tetris RW1 от Shaos'а. Ну Тетрис и Тетрис, минималистичный. Но! Есть версия для Спринтера :)
https://vtrd.in/

Там даже TRD можно в онлайне поиграть :rotate:

Забыли написать правда, что это GPL-ный софт и есть исходники :)

Надо реанимировать nedoPC SDK, чтобы этот Тетрис там снова собирался :mrgreen:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:А теперь немного о том, как устроен nedoPC SDK (точнее его дедушка RW1P2):
- на верхнем уровне есть 2 каталога - INC и LIB:
-- в INC находятся инклудники с константами для языка роботов (инклудятся до функции main)
-- в LIB находятся инклудники с описанием функций для языка роботов (инклудятся после функции main), а также подкаталоги с названием процессоров (сейчас только I8080 и Z80), в каждом из которых есть:
--- файл __RULES с описанием правил трансляции байткода роботов в ассемблер выбранного процессора
--- файлы подсистем на ассемблере для выбранного процессора как _SAY.A, _CLIB.A и т.д.
--- файлы основных системо-зависимых ассемблерных подпрограмм для всех поддерживаемых систем с выбранным процессором (например RADIO.A, ORION.A и т.д.)
--- опциональные подкаталоги с именами поддерживаемых систем, где могут лежать дополнительные файлы (заголовки бинарных файлов типа EXE, заглушки для TAP и т.д.)

Наибольший интерес вызывает файл __RULES: https://gitlab.com/nedopc/sdk/-/blob/master/sdk/LIB/I8080/__RULES (живёт на гитлабе с июня 2018)
Комментарии в нём идут как в C++ после // и далее файл поделён на секции, разделяемые звёздочками - слова после звёздочки дают секции название (а звёздочка без названия просто закрывает предыдущую секцию). Наиболее часто встречаемые секции - это правила трансляции байткода - когда после звёздочки следует шестнадцатиричное число, например:

Code: Select all

// 0x68 M // COLOR varn // set current color
*0x68 0x00 %w1
        MVI_A, %w1
        STA    _COLOR
*0x68 %m1
#mem1
        MOV_A,L
        STA    _COLOR
*
Здесь можно видеть 2 секции - обе относятся к трансляции байткода 0x68 (COLOR), но первая секция более детальная, а вторая - более общая (общая секция сработает, если ни одна детальная не прошла проверку - точнее секции вычитываются одна за другой и срабатывает первая, которая подошла, поэтому более общие секции надо ставить после детальных). Спец-идентификаторы %wN (где N - порядковый номер) означают 2-байтовое слово, %mN означают переменную языка Robby (может занимать от 2 до 5 байт), ещё бывают %aN для адресов и %bN для байтов. Они далее используются прямо как есть (MVI_A, %w1) либо путём вставки спец-кода для расшифровки переменных языка Robby - #memN где N это порядковый номер переменной, соответствующий %mN. С решётки начинаются и другие спец-коды (не только #memN) - ещё бывают #addsub (для указания кросс-компилятору какие файлы с подпрограммами нужно инклудить в результирующий исходик), #error (для прекращения работы кросс-компилятора с рапортованием ошибки), #genlab (для генерации временных меток в месте вставки кода) и т.д.

Кроме того секции выделяемые звёздочками могут быть специальными - например секция *ASM TABLE предназначена для скармливания ассемблеру RASM в качестве таблицы трансляции, *COMMENT указывает, что используется в качестве отделителя комментария в выбранном ассемблере, *EXPR 0x?? используется для трансляции байткодов стековой машины (скомпилированные длинные выражения) и т.д.

Вобщем вот как-то так...

P.S. Оказывается у меня есть нереализованные спец-коды, например передача управления по адресу из массива #atable:

Code: Select all

//-0x43 M      // GOTO var
*0x43 0x00 %w1
        JMP %j1
*0x43 %m1
#mem1
#atable
	PCHL
*

//-0x44 M      // CALL var
*0x44 0x00 %w1
        CALL %j1
*0x44 %m1
#genlab %l2
	LXI_H,	%l2
	PUSH_H
#mem1
#atable
	PCHL
%l2
*
P.P.S. По большому счёту с помощью такой системы правил можно транслировать не только ROBBY-байткод во что-то, но и вообще что угодно во что угодно (при необходимости добавляя новые спец-идентификаторы и спец-коды в транслятор), например из кода 8080 в PDP-11 и т.д.
Когда 5 лет назад делал это описание __RULES, то забыл написать про секцию *BEGIN - это то, что всегда копируется в начало генерируемого ассемблерного текстового файла - там например заведены области системных переменных, в которых в частности хранятся адреса начала областей памяти программы на Robby, регистров Robby и стэка, а также инициализирующий код:

Code: Select all

        JMP     HEADER
        \ DATA
_L_BASE DW  @BASE
_L_REGS DW  @REGS
_L_STAK DW  @REGS
CHX     DB  0
CHY     DB  0
CHS     DB  4
CHB     DB  0
_NPLANE DW  0
_ANGLE  DB  0
_COLOR  DB  0
_CURX   DB  0
_CURY   DB  0
_SAYX   DB  0
_SAYY   DB  0
_SAYC   DB  2
_ATRS   DB  0
HEADER: \ INIT SYSTEM
        CALL    INIT 
        \ SET _SAYX & _SAYY
        XRA_A
        STA     _SAYX
        MVI_A,  @DY
        DCR_A
        STA     _SAYY
...
Адрес начала области регистров может быть использован скажем для обмена данными между программой на языке Robby и ассемблерной вставкой - скажем через регистр A (смещённый от начала блока регистров на 20 байтов):

Code: Select all

 ...
 for(A=0;A<32767;A++) // 9.4 sec (3486 циклов в секунду)
 {
   say "\! LHLD _L_REGS"
   say "\! LXI_B, 20"
   say "\! DAD_B"
   say "\! MOV_A,M" // считываем младший байт регистра A
   say "\! OUT #FE" // выводим его значение в бордюр 
 }
 say "\! MVI_A, 2"
 say "\! OUT #FE" // выводим в бордюр 2
 say "\! CALL #9000" // вызываем кодовый блок, который компилировался отдельно
 ...
(надо будет вместо трюка say "\! ..." добавить поддержу директивы asm "..." которая компилируется компилятором Robby с 2012 года)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Научился делать CI/CD на GitLab - это когда на каждый коммит сервером запускается специальный скрипт, который компилирует и запускает тесты:

https://gitlab.com/nedopc/sdk/-/blob/master/.gitlab-ci.yml

Пока начал с RASM в котором запускаются давно существующие 2 теста - для 8080 и для 8086 - вот например содержимое файла TEST86:

Code: Select all

../rasm TEST86.A -t../i8086.tab
cp TEST86.BIN TEST86.COM
rm TEST86.BIN
md5sum -c TEST86.MD5
в TEST86.MD5 сидит строка с хэшом бинаря, который должен получиться:

Code: Select all

e0431b180b92f24627bd3547dfe61672  TEST86.COM
если файл не сассэмблируется или хэш бинаря не сойдётся, то задача CI/CD зафейлится, заставив гитлаб послать емейл - ну и плюс ещё индикатор на первой странице репозитория есть для последнего коммита - типа зелёный кружочек это SUCCESS, а красный - FAILURE:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:
Shaos wrote:Итак, в прошлом году я принял решение переименовать язык RW1 в Robby (см. http://www.nedopc.org/forum/viewtopic.php?f=46&t=11565) поэтому в nedoPC SDK будет так:
rw1c -> robbyc (Robby Compiler)
rw0comp -> robbycc (Robby Cross Compiler)
*.RW1 -> *.R (исходник на языке Robby)
*.RW0 -> *.RO (скомпилированный байткод Robby)
*.RWI -> INC/*.R (Robby макросы для включения в исходники программ на языке Robby до функции main)
*.RWL -> LIB/*.R (Robby библиотеки для включения в исходники программ на языке Robby после функции main)
*.A -> *.A (исходники и промежуточный код для RoboAssembler)
shjob -> nedo (думал сначала переименовать в nedomake, но потом подумалось, что это всё-таки не make)
*.shj -> *.ne (скрипты для сборки недопроектов)
ну и виртуальная машина будет называться RobbyVM (а исполняемый файл интерпретатора байткода наверное таки будет называться просто robby):
http://www.nedopc.org/forum/viewtopic.php?f=46&t=11565

P.S. Как я и писал выше, пока предполагается работа nedoPC SDK только на двух платформах - консольный Linux (в виде исходников собери сам) и 16-битный DOS (бинарный дистрибутив), а потом может и ShaOS подтянется ;)
Первая часть задачи выполнена - RW1C переименован в ROBBYC :)

https://gitlab.com/nedopc/sdk/-/tree/master/robbyc (живёт на гитлабе с июня 2018)

P.S. и оно даже работает :)

P.P.S. Вижу что в nedo (бывший shjob) надо бы сделать условное выполнение (чтобы иметь один файл на все платформы, а не как сейчас - для каждой платформы свой файл), а также засунуть команды addbin (склеивание бинарей) и leadzero (убирание нулевой области из начала бинарного файла) - только назвать их соответственно \glue и \ltrim (а также за компанию сделать \rtrim)

P.P.P.S. Например аргументы скрипта могут использоваться как ${1}, ${2} и т.д. Добавляем команду \if которая может проверять наличие переменных и сравнивать строки (а также \elif, \else и \endif), например:
\if ${1}
$mach=${1}
\else
$mach=ORION
\endif
\if $mach==ORION
...
\endif
для сравнения строк ещё можно != поддержать (не равно)
а в случае <,>,<=,>= можно переводить строковые значения в числа и сравнивать их как числа...

P.S. более сложные условия поди тоже надо поддержать - типа && и II, хотя это всё можно сымитировать многочисленными ифами с дополнительными переменными...

P.P.S. или таки оставить название утилиты shjob?...

P.P.P.S. хотя ладно - пусть будет nedo
кстати вместо аргументов командной строки можно диалоговый режим устроить - сначала вывести варианты через новую команду печати на экране:
\say 1.ORION
\say 2.SPETSIALIST
\say 3.ZX-SPECTRUM
а потом вызвать новую команду, ожидающую нажатия на кнопку:
\wait $user
\if $user==1 и т.д.
Сегодня взялся таки доделать то, что запланировал более 6 лет назад - работаю в полноэкранном DOSBox, компилируя 16-битные версии утилит компилятором Borland-C++ 3.1, а 32-битные - компилятором OpenWatcom-C/C++ 1.9 со встроенным pmodew...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:NOP-ы после меток в нагенерённом коде выше из-за того, что это я так в данный момент пытаюсь обойти только что обнаруженную багу в моём старом добром робоассемблере RASM - если после метки стоит комментарий, то метка почему-то исчезает, а во все места её использования подставляются нули...
Вышеописанная проблема всё ещё есть - она проявляется если в строке где стоит одна метка, которую использовали раньше, чем она объявлена, нету ничего, а в следующей строке идёт комментарий, но вот если комментарий идёт в той же строке или комментария нет вовсе, то всё собирается как надо - буду фиксить...

P.S. Ещё убей не помню зачем я в ноябре 2022 года разрешил в именах иметь символы $ и ` (RASM v2.6.1)...

P.P.S. Косяк с меткой исправлен в RASM версии 2.6.2 (см. ниже) - лишние NOP-ы теперь ненужны!
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:
Shaos wrote:NOP-ы после меток в нагенерённом коде выше из-за того, что это я так в данный момент пытаюсь обойти только что обнаруженную багу в моём старом добром робоассемблере RASM - если после метки стоит комментарий, то метка почему-то исчезает, а во все места её использования подставляются нули...
Вышеописанная проблема всё ещё есть - она проявляется если в строке где стоит одна метка, которую использовали раньше, чем она объявлена, нету ничего, а в следующей строке идёт комментарий, но вот если комментарий идёт в той же строке или комментария нет вовсе, то всё собирается как надо - буду фиксить...
Блиииин - я в прошлом веке (?) оказывается с односвязным списком накосячил :oops:

Code: Select all

 printf("\n### Deleting of comments and empty lines\n");
 libu = libu0 = text->first;
 while(libu!=NULL)
 {
    c00 = *libu->str;
    if(c00==0||c00=='\\'||c00=='/')
    {  
       libu1 = libu->next;
       if(libu->type==0)
       {
         if(libu==text->first)
            text->first = libu1;
         else
            libu0->next = libu1;
         LineDel(libu);
       }         
       libu = libu1;
    }
    else 
    {
       libu0 = libu;
       libu = libu->next;
    }   
 }
Короче если строка пустая либо с комментом (см. проверку значения cc0), то она удаляется, однако если с ней проассоциирована метка (libu->type ненулевой), то нет - получается мы уже внутри условия, которое не переводит libu0 и сдедующая пустая строка "съедает" предыдущую пустую строку с меткой. Исправленный вариант:

Code: Select all

 printf("\n### Deleting comments and empty lines\n");
 libu = libu0 = text->first;
 while(libu!=NULL)
 {  fempty = 0;
    c00 = *libu->str;
    if(c00==0||c00=='\\'||c00=='/') fempty++;
    if(libu->type==0&&fempty)
    {  libu1 = libu->next;
       if(libu==text->first)
          text->first = libu1;
       else
          libu0->next = libu1;
       LineDel(libu);
       libu = libu1;
    }
    else
    {  if(fempty) *libu->str = 0;
       libu0 = libu;
       libu = libu->next;
    }
 }
Я тут заодно ещё и обнуляю оставленную строку если там вдруг была и метка, и коммент...

P.S. Закоммитил фикс в репу: https://gitlab.com/nedopc/sdk/-/commit/0af4a1b93ad5d97083a05495c3420b980bd9507f
( также до кучи сделал возможным EQU объявлять через знак равно раз уж мой ассемблер уже имеет особенный синтаксис )
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Хм, в первоначальном коде от 1997 года этой баги небыло (а в версии 2006 года, что я залил на SourceForge CVS, уже была) - старый RASM вообще не разрешал метки в пустых строках судя по всему - это я потом его так "апгрейднул", сломав один маленький кейс...

P.S. В версии 2.2 от декабря 2005 года бага уже есть - возможно я это сломал когда делал короткие переходы для 8086 получается 19 лет назад :roll:

P.P.S. Приаттачил архив с исправленными 16-битными и 32-битными сборками RASM и тестами под DOS в тему про ассемблер 8086: viewtopic.php?p=174289#p174289
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Обнаружил в архивах зачудительные ассемблерные библиотеки для 8086, которые я написал в 2005 году на RASM (точнее переписал из своей старой масмовской библиотеки макросов начала 90х) и выкладывал их в составе сборки RASM версии 2.2 - теперь включаю их сборку в репу как второй тест 8086, чтобы они запускались вместе с другими тестами через гитлабовский CI/CD :lol:

Кстати там функционала достаточно, чтобы по быстрому нагородить правила для сборки 8086 кода в nedoPC SDK :mrgreen:

P.S. Поправил маленький косячок в i8086.tab - там не полностью задавался код для MOV_AL,AH
А вообще там ещё дополнять и дополнять - много i8086 опкодов отсутствуют (за ненадобностью)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

rw0comp -> robbycc (Robby Cross Compiler) с переписыванием на голых сях сделано и работает :mrgreen:

Code: Select all

ROBBYCC v2.0 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

Usage:

  ROBBYCC [options] FILE.RO

  where options could be:
      -Pprocessor (-Pi8080,-Pz80,-Pm68k etc.)
      -Ssystem (-Sorion,-Sspeccy,-Sdos,-Spalm etc.)
      -Oaddress (ORG address in decimal or #hex)
      -Baddress (BASE address in decimal or #hex)

Теперь надо заниматься shjob -> nedo
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:rw0comp -> robbycc (Robby Cross Compiler) с переписыванием на голых сях сделано и работает :mrgreen:
Это у меня ROBBYCC в досе заработал, а чтобы он ещё и в линухе заработал пришлось немного поковыряться - имена подкаталогов и файлов внутри директория LIB должны быть написаны большими буквами и обращаться к ним надо тоже большими буквами - пришлось и __RULES поправить, и код:

https://gitlab.com/nedopc/sdk/-/blob/master/sdk/robbycc.c

Завтра уже буду делать интерпретатор скриптов для сборки nedo[make]
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Вобщем вручную вся цепочка сборки работает на ура - осталось интерпретатор сборочных скриптов допилить как предполагалось ранее и всё - можно релизить :)

Ещё можно модель расположения проектов взять из SprinterSDK, где на одном уровне с INC и LIB имелся каталог project и там уже подкаталоги с проектами (только я наверное назову его PRJ для единообразия), а то сейчас всё в одной куче лежит - и исходники утилит, и собранные утилиты, и исходники примеров, и скрипты сборки примеров под разные платформы, и (если собирать примеры) все промежуточные файлы (как в RW1P2 вплоть до версии 1.4). Ещё ради SprinterSDK я тогда делал возможность поиска файлов не только в текущем директории, но и в директории откуда вызываются исполняемые файлы - это тоже надо будет поддержать на уровне nedo[make]...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:Вобщем вручную вся цепочка сборки работает на ура - осталось интерпретатор сборочных скриптов допилить как предполагалось ранее и всё - можно релизить :)
Не совсем на ура - вывод чисел через SAY похоже не фурыкает (MAPGEN для Ориона запущен из коммандера в эмуляторе Orionix):
Screenshot from 2024-07-07 18-28-11.png
А должно быть так (сборка для ZX-спектрума 2006 года):
Screenshot from 2024-07-07 18-25-56.png
Но вот математика всё ещё работает - внешний вид расположения объектов, расставленных псевдослучайно, совпадает (я генерацию лишних NOP-ов убрал и была опасность что всё сломается)...

P.S. Похоже оно так косячит только под линухом - в досе всё ок...

P.P.S. Пофиксил кросскомпиляцию - там проблема была в том, что я char сравнивал с 240, что работало в досовской версии т.к. там unsigned char задавался при сборке :mrgreen:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Shaos wrote:shjob -> nedo (думал сначала переименовать в nedomake, но потом подумалось, что это всё-таки не make)
*.shj -> *.ne (скрипты для сборки недопроектов)
Для единообразия пусть расширение таких скриптов будет просто .N

В настоящий момент в SHJOB поддерживаются следующие команды:

Code: Select all

# comments
$name=value # set variable
command -k${name} # system command with using value of variable
\need file # check file existing, exit if it does not exist
\del file # remove file
\add file string # add string to end of file
\rename oldfile newfile # rename files
\copy oldfile newfile # copy files
Перенеся это всё в nedo я планирую переименовать
\del в \remove
\add в \append
и добавить
\glue - чтобы склеивать бинаринки (то что до настоящего времени делала внешняя утилита ADDBIN)
\ltrim - чтобы убирать нули в начале бинарного файла (то что до настоящего времени делала внешняя утилита LEADZERO)
\rtrim - чтобы убирать нули в конце бинарного файла (пусть будет)
также надо будет сделать всё что было описано ещё в мае 2018 года:
Shaos wrote:...Вижу что в nedo (бывший shjob) надо бы сделать условное выполнение (чтобы иметь один файл на все платформы, а не как сейчас - для каждой платформы свой файл) ... Например аргументы скрипта могут использоваться как ${1}, ${2} и т.д. Добавляем команду \if которая может проверять наличие переменных и сравнивать строки (а также \elif, \else и \endif), например:
\if ${1}
$mach=${1}
\else
$mach=ORION
\endif
\if $mach==ORION
...
\endif
для сравнения строк ещё можно != поддержать (не равно)
а в случае <,>,<=,>= можно переводить строковые значения в числа и сравнивать их как числа ... более сложные условия поди тоже ... можно сымитировать многочисленными ифами с дополнительными переменными
...
кстати вместо аргументов командной строки можно диалоговый режим устроить - сначала вывести варианты через новую команду печати на экране:
\say 1.ORION
\say 2.SPETSIALIST
\say 3.ZX-SPECTRUM
а потом вызвать новую команду, ожидающую нажатия на кнопку:
\wait $user
\if $user==1 и т.д.
Диалоговый режим подождёт (точнее его потом отдельной программкой можно сделать), а всё остальное вполне подъёмно сделать в ближайшие несколько дней (пока я в отпуске)...

P.S. Текущее состояние дел: https://gitlab.com/nedopc/sdk/-/blob/master/sdk/nedo.c
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Нашёл тут статью на лоре со скриншотом, которые там оставил cr0acker в ноябре 2002 года :lol:


https://www.linux.org.ru/gallery/screenshots/244277
cr0acker wrote: rw1p2 лучшее средство для создания программ для микрокомпутеров!


Типа это еще один скриншот из серии, линух лучшая ОС для межплатформеной разработки! Типа слево на право: 1)Терминал rxvt, с октрытым вимом, в нём файл с описанием тайлов(спрайтов). 2)Terminal rxvt, с открытым вимом, а в нём сам текст программы 3)Терминал в котором происходит компиляция, 4)Терминал с миднайтом, бин2трд, который идёт вместе с рв1п2, создает неправильный пермишн в трдшнике, а миднайте я его аккуратненько правлю! На переднем плане емулятор Спекутрма-глюкалка(Да уж,давно новых версий не было:(). В емуляторе вобственно и запущенна программа, качалки там работаю, бак наполняется, еще и есть геологи, но они не попали на экран! Внизу экрана мы видим страницу проекта NedoPC(http://www.shaos.ru/nedopc), пакет рв1п2, является частью этого проекта! Оконный манагер АфтерСтеп! После ВМ, впечатления просто рулезные! Единственное, что есть грабля! Русские заголовки не кажет! Я блин уже и темы ручками подпровлял! А он всё равно не кажет! Вот РУЛЕЗ!

>>> Просмотр (1280x960, 191 Kb)

cr0acker ★
02.11.2002 07:49:55 -08:00
Проверено: maxcom
На экране судя по всему RW1P2 v1.4 - первая версия SDK портированная на Linux :kruto:

Разместил эту находку в первом сообщении этого топика тоже ;)

P.S. Вот до чего мы в 2002 году в итоге дошли - ниже приаттачена версия куда я в 2006 году воткнул шрифт nedoPC: viewtopic.php?p=74658#p74658

Image
BGOLD.ZIP
P.P.S. Как утверждал cr0acker новые бочки, а также пока неиспользованных новых геологов и новые качалки, нарисовал не кто иной как Schafft :esurprised:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: nedoPC SDK

Post by Shaos »

Дофорумную версию BGOLD.TRD от декабря 2002 года тоже нашёл - там был обычный спековский шрифт и тот же самый функционал (геологи размножаются разбегаясь):
Screenshot from 2024-07-08 16-53-18.png
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net