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

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

Moderator: Shaos

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

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

Post by Shaos »

Sprinter SDK by NedoPC team предлагаю переименовать в nedoPC SDK и выпустить с поддержкой всех процессоров и компьютеров, которые сейчас поддерживает RW1P2 (Спринтер, Спектрум, Орион, Радио, Специалист). В дальнейшем предполагается добавлять в список поддерживаемых все новые nedoPC устройства...

P.S. Выяснилось, что арифметика 16-битных целых чисел со знаком для процессора 8080 позаимствована мной из компилятора сей Small-C для CP/M:
SMALL C v2.1 by Jim Hedrix ( http://www.cpm.z80.de/small_c/smallc21.zip ) - точнее из текстового файла CLIB.ARC, у которого был свой собственный копирайт:
Small-C Library: Copyright 1984 J. E. Hendrix, L. E. Payne

P.P.S. Немного истории (добавлено 19 ноября 2014 года):

28.04.2001 RW1P2 v1.0 (орион, спектрум)
15.05.2001 RW1P2 v1.1 (орион, спектрум)
16.01.2002 RW1P2 v1.2 (орион, спектрум, рк86)
18.01.2002 RW1P2 v1.2.1 (орион, спектрум, рк86) <--- первая версия где добавился тетрис в качестве примера
20.01.2002 RW1P2 v1.3 (орион, спектрум, рк86, специалист)
12.06.2002 RW1P2 v1.4 (орион, спектрум, рк86, специалист + z80 спектрум и z80 спринтер + Linux порт)
26.04.2003 RW1P2 v1.5 beta aka Sprinter SDK (только z80 спринтер, только под Windows, причём с интегрированным редактором исходных текстов и эмулятором Спринтера):
sdk.gif
Дальнейшие модификации вплоть до января 2006 года никогда не релизились, от 1.4 они отличаются попиксельным графическим режимом в z80/speccy, использованном для построения хаотичных 3D гор, а также наличием nedoPC шрифта)

UPDATE 2016: Предполагается выпустить "nedoPC SDK v2.0" с языком высокого уровня Robby (это переименованный RW1 v2), а потом, если всё получится, "nedoPC SDK v3.0" с опциональной поддержкой языка Си в лице пока ещё несуществующего компилятора nedoC


UPDATE 2018: Все исходники SDK теперь живут на гитлабе: https://gitlab.com/nedopc/sdk
You do not have the required permissions to view the files attached to this post.
Last edited by Shaos on 19 Nov 2014 22:29, edited 18 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Одобряю

Shaos: Вот как выглядела разработка софта с помощью линуксовой версии RW1P2 v1.4 в 2002 году (это cr0acker сделал скриншот для лора):


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
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:Одобряю
Ну тогда мне понадобится некоторая помощь товарищей - надо кое-что разработать и доработать.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Shaos wrote:
cr0acker wrote:Одобряю
Ну тогда мне понадобится некоторая помощь товарищей - надо кое-что разработать и доработать.
Что?
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:
Shaos wrote:
cr0acker wrote:Одобряю
Ну тогда мне понадобится некоторая помощь товарищей - надо кое-что разработать и доработать.
Что?
Основная задача ВСЁ переписать на RW1 и добавит пару новых программ. Помнишь настройщик конфигурации, что ты писал? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Shaos wrote:
cr0acker wrote:
Shaos wrote:
cr0acker wrote:Одобряю
Ну тогда мне понадобится некоторая помощь товарищей - надо кое-что разработать и доработать.
Что?
Основная задача ВСЁ переписать на RW1 и добавит пару новых программ. Помнишь настройщик конфигурации, что ты писал? ;)
Угумс:) Правла он тока у мну и работал. Могу что нить подобное опять написать на сях теперь:)
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Основная задача ВСЁ переписать на RW1 и добавит пару новых программ
Что-то решил вернутся к старой теме (в связи с перелопачиванием сайта nedoPC да и просто так - время пришло) - в качестве первого шага к созданию nedoPC SDK предлагаю первым делом все переписать на чистый Си (щас часть исходников на Си++) чтобы к примеру оно собиралось с помощью Pacific C for MS-DOS v7.51. А уже потом из C в RW1 переписывать потихоньку. В связи с этим также планирую добавить поддержку 8086 процессора в RW1P2 (который будет основой для nedoPC SDK) - чтобы была возможность получать COM-файлы для доса, работающие с VGA 320x200 (быстрая графика 256 цветов) или EGA 640x350 (медленная графика 16 цветов).
Last edited by Shaos on 21 Jan 2012 19:33, edited 2 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Основная задача ВСЁ переписать на RW1 ...
Некоторые утилиты уже сейчас можно переписать на RW1 и их интерпретацией займется новый интерпретатор RW0-байткода, который придёт на смену скрипту SHJOB
Я тут за главного - если что шлите мыло на me собака shaos точка net
acidrain
Senior
Posts: 159
Joined: 28 Feb 2005 02:31
Location: Krasnodar, Russia

Post by acidrain »

ох, помнится мне, что несколько лет назад, при знакомстве с Shaos'ом я порывался на амигу портировать RW... а вот теперь думаю мож на аврку свою забацать? =)
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Что-то мне думается, что надо NedoPC SDK в виде существующих эмуляторов-компиляторов на http://sourceforge.net поселять - там CVS есть ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Что-то мне думается, что надо NedoPC SDK в виде существующих эмуляторов-компиляторов на http://sourceforge.net поселять - там CVS есть ;)
Процесс поселения буду отражать в соседнем топике
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот список платформ под которые будет реализовываться nedoPC SDK:
1) DOS 16-bit (обычный MS-DOS или FreeDOS на 8086/8088 машинах)
2) DOS 32-bit (PMODE/W 32-битный расширитель доса - требуется как минимум 80386)
3) Windows 32-bit (Win9X и выше)
4) Linux x86 (обычный линукс на обычном пц)
5) Linux PPC (на маках с поверпц процессором)
6) MacOS X (на маках с поверпц процессором)
7) MacOS 9 ?
8) Amiga ?
9) Sprinter ?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вопрос возник - нужно добавить в RW1P2 файловые операции. Я за эти годы несколько подходов окучил - пока ни один не понравился (каналы, спец-команды, ассемблерные вставки). Вобщем думается сделать на нижнем уровне передачу файлов блоками по 256 байт (как на CP/M-80), а на строки или на байты уже будет делить библиотека, написанная на RW1.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Вопрос возник - нужно добавить в RW1P2 файловые операции. Я за эти годы несколько подходов окучил - пока ни один не понравился (каналы, спец-команды, ассемблерные вставки). Вобщем думается сделать на нижнем уровне передачу файлов блоками по 256 байт (как на CP/M-80), а на строки или на байты уже будет делить библиотека, написанная на RW1.
Weberta-интерпретатор байткода RW0 (который теперь входит в состав Rgrid.js) имеет следующую реализацию файловых операций:
Shaos wrote:Файлы читаются так - получателю -4 (@filesystem) посылается пакет с именем файла (одна буква на ячейку), далее ждём евента от @filesystem - в нём будет размер прочитанного файла, далее обращаемся (через указатели A/B/C) в отрицательную область памяти переменных (ячейки с адресами от -32K до -1) за телом файла.

Аналогичным образом можно сделать запись - добавив к имени файла какой-то суффикс, например !, что будет обозначать запись из отрицательной области памяти переменных в файл с указанным именем (длину записи можно указать следом за !)...
P.S. На самом деле ячейки с адресами от -32768 до -257 (т.е. 32512 слов или 65024 байта) потому что от -256 и выше почти до нуля идут коды "регистров"
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ещё одна проблема с RW1P2 была в том, что все переменные и операции 2-байтовые, даже если надо хранить и оперировать однобайтовыми величинами. Есть мысль как это победить (т.е. не кодогенерить лишнего кода если работа идёт с однобайтовыми величинами) - для начала заведём макросы для работы с половинками слов:

Code: Select all

@lobyte(1)=((@1) & #00FF)
@hibyte(1)=(((@1)>>8) & #00FF)
@setlobyte(2)=@1=(@1 & #FF00)|((@2) & #00FF )
@sethibyte(2)=@1=(@1 & #00FF)|((@2) << 8)
lobyte и hibyte будут вытаскивать соответствующий байт из слова, а setlobyte и sethibyte будут устанавливать соответствующий байт слова - тогда при интерпретации оно будет работать как написано, а при кодогенерации можно детектировать соответствующие последовательности байткодов и заменять на более простой код целевой платформы:

// lobyte(var)
#F5 PUSH
#??
#??
#F3 LOAD
#F5 PUSH 255
#FF
#00
#C0 &
// прочитать байт по адресу ????

// hibyte(var)
#F5 PUSH
#??
#??
#F3 LOAD
#F5 PUSH 8
#08
#00
#D0 >>
#F5 PUSH 255
#FF
#00
#C0 &
// прочитать байт по адресу ????+1

// setlobyte(var,expression)
#F5 PUSH
#??
#??
#F5 PUSH
#??
#??
#F3 LOAD
#F5 PUSH #FF00
#00
#FF
#C0 &
.......
#F5 PUSH #00FF
#FF
#00
#C0 &
#C1 |
#F4 SAVE
// произвести вычисления и сохранить однобайтный результат по адресу ????

// sethibyte(var,expression)
#F5 PUSH
#??
#??
#F5 PUSH
#??
#??
#F3 LOAD
#F5 PUSH #00FF
#FF
#00
#C0 &
.......
#F5 PUSH 8
#08
#00
#D1 <<
#C1 |
#F4 SAVE
// произвести вычисления и сохранить однобайтный результат по адресу ????+1

P.S. Причём вычисления внутри setlobyte/sethibyte можно делать однобайтовыми (и беззнаковыми?) - как минимум сложение, вычитание и логические операции...
Я тут за главного - если что шлите мыло на me собака shaos точка net