nedoPC.org

Community for electronics hobbyists, established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 12 Dec 2024 05:00



Reply to topic  [ 120 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 8  Next
[SDK] Старая тема про nedoPC SDK (август 2004) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
Shaos wrote:
Shaos wrote:
соберу туда всё что актуально с SourceForge, а также из незарелизенного RW1P2/SprinterSDK...

Нашёл способ импортировать исходники из CVS (SourceForge) в GitHub со ВСЕЙ историей изменений! :mrgreen:

Кроме того накидал все версии RW1P2 - теперь можно отследить как оно менялось со временем...

Блин, не успел перенести репозиторий, как гитхаб решил мелкомягким продаться :(

http://www.businessinsider.com/microsoft-github-acquisition-could-be-announced-monday-2018-6

Свершилось:

https://blog.github.com/2018-06-04-github-microsoft/

и свободолюбивый народ повалил дружными косяками с гитхаба на гитлаб...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


04 Jun 2018 20:12
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
GitLab рапортует массовый наплыв - его даже можно отслеживать вживую :o

https://monitor.gitlab.net/dashboard/db/github-importer?orgId=1


Attachments:
GitLab-2018-06-05.png
GitLab-2018-06-05.png [ 84.21 KiB | Viewed 20265 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
05 Jun 2018 10:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
создал себе аккаунт на гитлабе:

https://gitlab.com/shaos

а также завёл группу "Balanced Ternary Group" :)

https://gitlab.com/ternary

P.S. группу nedoPC projects тоже завёл ;)

https://gitlab.com/nedopc

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


05 Jun 2018 12:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Зашел - чисто из спортивного интересу...

Гитхаб всегда мне говорил, что "Опера 9.64" - устаревший браузер и ничего практически не показывал... :-?

ГитЛаб мою "Оперу 9.64" никак не ругал, но показал всё вот так:
Attachment:
GitLab.gif
GitLab.gif [ 22.71 KiB | Viewed 20256 times ]

Видимо, это не совсем всё же правильно... но терпимо. :wink:

Гитхаб мне и скачивать ничего не давал... надо будет проверить, как с этим у ГитЛаб-а... :D

_________________
iLavr


05 Jun 2018 12:46
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Lavr wrote:
Гитхаб мне и скачивать ничего не давал... надо будет проверить, как с этим у ГитЛаб-а... :D

Ок - перенесу для теста некоторые репозитории и дам знать - попробуешь ;)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


05 Jun 2018 13:54
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
создал себе аккаунт на гитлабе:

https://gitlab.com/shaos

а также завёл группу "Balanced Ternary Group" :)

https://gitlab.com/ternary

P.S. группу nedoPC projects тоже завёл ;)

https://gitlab.com/nedopc

Перенёс все репы и кое-что даже разложил по группам ;)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


05 Jun 2018 22:15
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Lavr wrote:
Гитхаб мне и скачивать ничего не давал... надо будет проверить, как с этим у ГитЛаб-а... :D

Ок - перенесу для теста некоторые репозитории и дам знать - попробуешь ;)

Скачалось! :roll:
Для примера ткнул первое попавшееся: Kostyantyn Matlayev / Flights · GitLab
И скачал архив! :kruto:

Я вообще не знаю, зачем Гитхаб так выкаблучивался - ну не было там особого функционала,
который не могла бы осилить "Опера"... :-?

_________________
iLavr


06 Jun 2018 04:05
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Всё - мой гитхаб пуст :mrgreen:


Attachments:
github.png
github.png [ 203.14 KiB | Viewed 20206 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
06 Jun 2018 20:30
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
GitLab рапортует массовый наплыв - его даже можно отслеживать вживую :o

https://monitor.gitlab.net/dashboard/db/github-importer?orgId=1


Массовый наплыв закончился, но ежедневные небольшие всплески ещё продолжаются...


Attachments:
GitLab-2018-06-08.png
GitLab-2018-06-08.png [ 98.78 KiB | Viewed 20173 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
08 Jun 2018 18:00
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Всё - сегодня микрософт официально купил гитхаб, заплатив 7.5 миллиардов долларов:

https://techcrunch.com/2018/10/26/microsoft-closes-its-7-5b-purchase-of-code-sharing-platform-github/

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


26 Oct 2018 17:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
Вот пример с циклами:
Code:
ROBOT "Test"
AUTHOR "Shaos"
+INC/ROBBY
+MYSPR

main()
{
 for(A=0;A<20;A++)
 {
   for(B=0;B<10;B++)
   {
      select A B
      set @MYSPR
   }
 }
}

и вот во что они превращаются после препроцессора:
Code:
ROBOT "Test"
AUTHOR "Shaos"
START:
A=0;_l1: (A<20);IFN L _l2
B=0;_l3: (B<10);IFN L _l4
SELECT A B
SET 8192
B=B+1;GOTO _l3;_l4:
A=A+1;GOTO _l1;_l2:
NOP
__END: END

после компиляции в байткод:
Code:
// Generated by ROBBYC version 2.3.0
// Alexander "Shaos" Shabarshin <me@shaos.net>

>>>>(1) ROBOT "Test"
>>>>(2) AUTHOR "Shaos"
>>>>(3) +INC/ROBBY
>>>>(4) +MYSPR
>>>>(5)

// HEADER OF THE ROBOT

// Robot 'Test'
// 0 variables
// 108 bytes of code
// 0 bytes of image

02 9A 30 1F 00 04 54 65 73 74 00 00 00 6C 00 FF |..0...Test...l..
FF FF 00 00 00 00 00 53 68 61 6F 73 00 00 00    |.......Shaos...

// CODE OF THE ROBOT

>>>>(6) main()
TEST.R(6) START:
0000 20
0001 01
0002 0A
0003 FF
0004 00
0005 00
0006 00

>>>>(7) {
>>>>(8)  for(A=0;A<20;A++)
TEST.R(8) A=0;_l1: (A<20);IFN L _l2
0007 40
0008 0C
0009 F5 REG L
000A 0E
000B FF
000C F5 REG A
000D 0A
000E FF
000F F3 LOAD
0010 F5 PUSH 20
0011 14
0012 00
0013 93 <
0014 F4 SAVE
0015 42
0016 01
0017 0E
0018 FF
0019 00
001A 6A
001B 00

>>>>(9)  {
>>>>(10)    for(B=0;B<10;B++)
TEST.R(10) B=0;_l3: (B<10);IFN L _l4
001C 20
001D 01
001E 0B
001F FF
0020 00
0021 00
0022 00
0023 40
0024 0C
0025 F5
0026 0E
0027 FF
0028 F5
0029 0B
002A FF
002B F3
002C F5
002D 0A
002E 00
002F 93
0030 F4
0031 42
0032 01
0033 0E
0034 FF
0035 00
0036 58
0037 00

>>>>(11)    {
>>>>(12)       select A B
TEST.R(12) SELECT A B
0038 69
0039 01
003A 0A
003B FF
003C 01
003D 0B
003E FF

>>>>(13)       set @MYSPR
TEST.R(13) SET 8192
003F 6A
0040 00
0041 00
0042 20
0043 00
0044 00
0045 00

>>>>(14)    }
TEST.R(14) B=B+1;GOTO _l3;_l4:
0046 40
0047 0C
0048 F5 REG B
0049 0B
004A FF
004B F5 REG B
004C 0B
004D FF
004E F3 LOAD
004F F5 PUSH 1
0050 01
0051 00
0052 A0 +
0053 F4 SAVE
0054 43
0055 00
0056 23
0057 00

>>>>(15)  }
TEST.R(15) A=A+1;GOTO _l1;_l2:
0058 40
0059 0C
005A F5 REG A
005B 0A
005C FF
005D F5 REG A
005E 0A
005F FF
0060 F3 LOAD
0061 F5 PUSH 1
0062 01
0063 00
0064 A0 +
0065 F4 SAVE
0066 43
0067 00
0068 07
0069 00

>>>>(16) }
TEST.R(16) NOP
006A 00
TEST.R(0) __END: END
006B FF 

и после кросс-копиляции в код 8080:
...
путём добавления более оптимального кода для A=0, B=0, C=0, A<N, A=A+1 и т.д. в __RULES можно сделать более опитимальное представление этого кода для 8080 (и соответственно более быстрое)...

Вот чего действительно недостаёт в nedoPC SDK так это компиляции Robby-программы в исходник на сях, который можно было бы затем скомпилировать под целевую платформу (текстовый дос или текстовый (ncurses) линух (а может даже графический дос и графический линух?)) - это сильно бы упростило отладку и соответственно разработку нового робби-кода (хотя не - графическим пусть будет интерпретатор байт-кода, а компилятор^2 пусть будет только текстовым)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


02 May 2020 23:18
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Кстати оказалось, что в линухе текст можно раскрашивать и переставлять по экрану без ncurses :mrgreen:

https://wiki.bash-hackers.org/scripting/terminalcodes

Нвдо чтоли свой conio.h накидать для линуха, чтобы один и тот же исходник собирался и в досе, и в линухе :kruto:
Code:
    clrscr <<<
    cprintf ???
    delline
    getch <<<
    getche <<<
    gotoxy <<<
    kbhit <<<
    wherex ???
    wherey ???
    textcolor <<<
    textbackground <<<
clrscr, gotoxy, getch[e] уже есть вот тут: https://github.com/pushkar147/conio4gcc
плюс раскрашивание (textcolor и textbackground) сделать как описано по ссылке выше - ескейп-последовательностями
и по сути всё (разве что если надо спецкнопки обрабатывать - типа функциональных, стрелок и т.д. то проверка по getch в программе будет другая в случае линуха)
P.S. kbhit можно взять отсюда: https://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html
P.P.S. cprintf можно свой накатать (в досе надо cprintf юзать, чтобы раскрашивало), в котором подсчитывать текущую позицию курсора - вот и wherex с wherey покроются!

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


03 May 2020 09:01
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Post Re:
Shaos wrote:
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 и выше идут коды "регистров"

Переосмысливая идеи 2014 года можно предложить следующее
Пакет с именем файла - это массив слов, в первом слове которого указано количество следующих далее букв и сейчас поддерживается только чтение (например в Circuits.CC):
"filename" - прочитать текст из файла с именем filename, разместив его начиная с адреса #8000 по одной букве на слово, причём количество скопированных букв приходит в ответе от @filesystem
По аналогии добавляем:
"filename!" - записать буфер в файл с именем filename, причём пишем только младшие байты и останавливаемся, когда встретили ноль
"filename%" - прочитать двоичный файл, упаковав байты по 2 в слово (от системы придет прочитанный размер в байтах)
"filename%hhh" - записать двоичный файл с байтовым размером hhh (шестнадцатиричное число) пользуясь словами из буфера (если размер нечётный, то из последнего слова возьмется только младший байт)
"filename+" - дополнить текстовый файл строкой из буфера (буква на слово, писать до нуля) - хотя может быть проще say перенаправить в файл...
Работу с произвольным адресом пока можно отложить на будущее, но уже можно считать, что там в систему будут передаваться не строки, а структуры - с адресом, длиной, смещением внутри файла и т.д.

P.S. Скелет программы (вырезка из TERNARO.R):
Code:
robot "Test"
author "Shaos"
+INC/ROBBY
main()
{
 def tmp[17] = "START" // тут хранится пакет - в ячейке 0 будет 5, что есть длина слова, и далее 5 ячеек с буквами
 sendp tmp[0] @filesystem // хотим файл с именем START
 while(TRUE) // вечный цикл в котором мы будем обрабатывать приходящие сообщения
 {
   code = 0
   recv code // принять сообщение и записать его в переменную code
   if(N==0) continue // буфер принятых сообщений пуст
   if(N==@mouse) // это сообщение от мыши
   {
     ...
   }
   if(N==@filesystem) // это сообщение от файловой системы, сообщающее, что файл записан в буфер (в регистре K будет размер)
   {
      A = @filebuffer // начинаем читать с адреса #8000
      while(A[0]) // пока не встретили ноль (либо любой другой маркер окончания полезной информации - этот символ должен быть в файле)
      {
           // что-то делаем с очередной буквой A[0]
           A = A + 1 // сдвигаем указатель на 1
      }
   }
 }
}


P.P.S. На самом деле просто имя файла это чтение текстового файла где через запятую идут целые числа со знаком (обычно 16-битные т.е. signed short) и именно эти значения записываются в память при чтении из файла - одно значение на ячейку. Соответственно чтобы читать произвольный текстовый файл надо вводить спец.символ - например $ т.е. запросив чтение из файла filename$ мы читаем его как текстовый по одной букве на ячейку (по идее так можно и UTF8 читать, разворачивая его в полноценный 16-битный Unicode)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


03 May 2020 13:21
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
путём добавления более оптимального кода для A=0, B=0, C=0, A<N, A=A+1 и т.д. в __RULES можно сделать более опитимальное представление этого кода для 8080 (и соответственно более быстрое
также можно пойти ещё дальше и специально для z80 сделать робби-регистры A,B и C представляемыми индексными регистрами IX, IY и скажем HL'

P.S. в случае z80 можно вообще убрать из памяти секцию регистров, распределив все доступные в RW1P2 регистры Robby либо по теневым регистрам процессора, либо сделав их полностью процедурными:
Code:
_base   equ     %base
_regs   equ     %regs
_reg_x  equ     %reg_x --> B'
_reg_y  equ     %reg_y --> C'
;reg_d
_reg_n  equ     %reg_n --> DE' (?)
;reg_k
_reg_r  equ     %reg_r --> procedure (16-bit RANDOM)
_reg_t  equ     %reg_t --> procedure (0.1sec COUNTER)
;reg_e
;reg_m
;reg_i
_reg_a  equ     %reg_a --> IX
_reg_b  equ     %reg_b --> IY
_reg_c  equ     %reg_c --> HL'
;reg_p
_reg_l  equ     %reg_l --> HL (?)
;reg_s

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


27 Dec 2020 17:35
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23469
Location: Silicon Valley
Reply with quote
Shaos wrote:
Кстати оказалось, что в линухе текст можно раскрашивать и переставлять по экрану без ncurses :mrgreen:

https://wiki.bash-hackers.org/scripting/terminalcodes

Нвдо чтоли свой conio.h накидать для линуха, чтобы один и тот же исходник собирался и в досе, и в линухе :kruto:
Code:
    clrscr <<<
    cprintf ???
    delline
    getch <<<
    getche <<<
    gotoxy <<<
    kbhit <<<
    wherex ???
    wherey ???
    textcolor <<<
    textbackground <<<
clrscr, gotoxy, getch[e] уже есть вот тут: https://github.com/pushkar147/conio4gcc
плюс раскрашивание (textcolor и textbackground) сделать как описано по ссылке выше - ескейп-последовательностями
и по сути всё (разве что если надо спецкнопки обрабатывать - типа функциональных, стрелок и т.д. то проверка по getch в программе будет другая в случае линуха)
P.S. kbhit можно взять отсюда: https://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html
P.P.S. cprintf можно свой накатать (в досе надо cprintf юзать, чтобы раскрашивало), в котором подсчитывать текущую позицию курсора - вот и wherex с wherey покроются!

Вот так в линуксе можно раскрашивать текст в терминале:
Code:
#define BLACK   "\x1B[30m"
#define RED     "\x1B[31m"
#define GREEN   "\x1B[32m"
#define BROWN   "\x1B[33m"
#define BLUE    "\x1B[34m"
#define MAGENTA "\x1B[35m"
#define CYAN    "\x1B[36m"
#define WHITE   "\x1B[37m"

#define _BLACK   "\x1B[40m"
#define _RED     "\x1B[41m"
#define _GREEN   "\x1B[42m"
#define _BROWN   "\x1B[43m"
#define _BLUE    "\x1B[44m"
#define _MAGENTA "\x1B[45m"
#define _CYAN    "\x1B[46m"
#define _WHITE   "\x1B[47m"

#define RESET   "\x1B[0m"
#define BRIGHT  "\x1B[1m"
#define INVERSE "\x1B[7m"

int main() {

  printf(RED "red\n"     RESET);
  printf(GREEN "green\n"   RESET);
  printf(BROWN "brown\n"  RESET);
  printf(BLUE "blue\n"    RESET);
  printf(MAGENTA "magenta\n" RESET);
  printf(CYAN "cyan\n"    RESET);
  printf(WHITE "white\n"   RESET);

  printf(_BLUE BLACK "black"     RESET "\n");
  printf(_BLUE RED "red"     RESET "\n");
  printf(BRIGHT _BLUE RED "red"     RESET "\n");
  printf(_BLUE GREEN "green"   RESET "\n");
  printf(BRIGHT _BLUE BROWN "yellow"  RESET "\n");
  printf(BRIGHT _BLUE BLUE "blue"    RESET "\n");
  printf(_BLUE MAGENTA "magenta" RESET "\n");
  printf(_BLUE CYAN "cyan"    RESET "\n");
  printf(_BLUE WHITE "white"   RESET "\n");
  printf(BRIGHT _BLUE WHITE "white"   RESET "\n");
  printf(INVERSE BRIGHT _BLUE WHITE "i.white"   RESET "\n");
}

Результат вышеприведённой программы вот:


Attachments:
Screenshot from 2021-02-20 19-21-45.png
Screenshot from 2021-02-20 19-21-45.png [ 11.39 KiB | Viewed 14607 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
20 Feb 2021 20:20
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 120 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 8  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.