nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 29 May 2020 11:32



Reply to topic  [ 43 posts ]  Go to page Previous  1, 2, 3
nedoPC SDK 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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/

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

_________________
:eugeek: https://twitter.com/Shaos1973


04 Jun 2018 21:12
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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 3713 times ]

_________________
:eugeek: https://twitter.com/Shaos1973
05 Jun 2018 11:03
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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

_________________
:eugeek: https://twitter.com/Shaos1973


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

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

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

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

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

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

_________________
iLavr


05 Jun 2018 13:46
Profile
Admin
User avatar

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


05 Jun 2018 14:54
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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

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

_________________
:eugeek: https://twitter.com/Shaos1973


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

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

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

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

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

_________________
iLavr


06 Jun 2018 05:05
Profile
Admin
User avatar

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


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

_________________
:eugeek: https://twitter.com/Shaos1973
06 Jun 2018 21:30
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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 3621 times ]

_________________
:eugeek: https://twitter.com/Shaos1973
08 Jun 2018 19:00
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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/

_________________
:eugeek: https://twitter.com/Shaos1973


26 Oct 2018 18:43
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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:
Code:
\ Generated by RW0COMP v2.0 (part of NedoPC SDK, see http://www.nedopc.org)
\ Copyright (c) 2001-2005, Alexander Shabarshin <shaos@mail.ru>

        ORG     #0000
@BASE   EQU     #4000
@REGS   EQU     16448
@REG_X  EQU     16448
@REG_Y  EQU     16450
\REG_D
@REG_N  EQU     16454
\REG_K
@REG_R  EQU     16458
@REG_T  EQU     16460
\REG_E
\REG_M
\REG_I
@REG_A  EQU     16468
@REG_B  EQU     16470
@REG_C  EQU     16472
\REG_P
@REG_L  EQU     16476
\REG_S
@RAND   EQU     1000
   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
        \ ERASE FROM BASE TO REGS+32
   LHLD   _L_BASE
   XCHG
   LHLD   _L_REGS
        LXI_B,  32
        DAD_B
        XCHG
        MVI_C,  0
_STD_1: MOV_M,C
        INX_H
        MOV_A,H
        CMP_D
        JNZ     _STD_1
        MOV_A,L
        CMP_E
        JNZ     _STD_1
        \ SET SP & SAVE RETADDR
        POP_D
   LHLD   _L_STAK
   SPHL
        PUSH_D
_START:
\ *0x20 0x01 0x0A 0xFF %m2
_j0000:         LXI_H,  #0000
        SHLD   @REG_A
\ *0x40
_j0007: \ 0xF5
        PUSH_H
        LXI_H,  #FF0E
\ 0xF5
        PUSH_H
        LXI_H,  #FF0A
\ 0xF3
        MVI_A,  #FF
        CMP_H
        JNZ    _l0001
        \ REGISTER
   CALL   _R_GET
   JMP   _l0002
_l0001: NOP
        \ VARIABLE
        CALL    _B_GET
_l0002: NOP
\ 0xF5
        PUSH_H
        LXI_H,  #0014
\ 0x93
        POP_D
        CALL CCLT
\ 0xF4
        POP_D
        XCHG
        MVI_A,  #FF
        CMP_H
        JNZ    _l0003
        \ REGISTER
   CALL   _R_SET
   JMP   _l0004
_l0003: NOP
        \ VARIABLE
        CALL   _B_SET
_l0004: NOP
        POP_H
\ *0x42 0x01 0x0E 0xFF 0x00 %w1
_j0015:         LDA @REG_L
        ORA_A
        JZ _j006A
\ *0x20 0x01 0x0B 0xFF %m2
_j001C:         LXI_H,  #0000
        SHLD   @REG_B
\ *0x40
_j0023: \ 0xF5
        PUSH_H
        LXI_H,  #FF0E
\ 0xF5
        PUSH_H
        LXI_H,  #FF0B
\ 0xF3
        MVI_A,  #FF
        CMP_H
        JNZ    _l0005
        \ REGISTER
   CALL   _R_GET
   JMP   _l0006
_l0005: NOP
        \ VARIABLE
        CALL    _B_GET
_l0006: NOP
\ 0xF5
        PUSH_H
        LXI_H,  #000A
\ 0x93
        POP_D
        CALL CCLT
\ 0xF4
        POP_D
        XCHG
        MVI_A,  #FF
        CMP_H
        JNZ    _l0007
        \ REGISTER
   CALL   _R_SET
   JMP   _l0008
_l0007: NOP
        \ VARIABLE
        CALL   _B_SET
_l0008: NOP
        POP_H
\ *0x42 0x01 0x0E 0xFF 0x00 %w1
_j0031:         LDA @REG_L
        ORA_A
        JZ _j0058
\ *0x69 %m1 %m2
_j0038:         LXI_H,  #000A
        CALL    _R_GET
        PUSH_H
        LXI_H,  #000B
        CALL    _R_GET
        POP_D
        MOV_A,E
        STA _CURX
        MOV_A,L
        STA _CURY
\ *0x6A 0x00 %w1 0x00 0x00 0x00
_j003F:         LXI_H,  #2000
        CALL    _SET
\ *0x40
_j0046: \ 0xF5
        PUSH_H
        LXI_H,  #FF0B
\ 0xF5
        PUSH_H
        LXI_H,  #FF0B
\ 0xF3
        MVI_A,  #FF
        CMP_H
        JNZ    _l0009
        \ REGISTER
   CALL   _R_GET
   JMP   _l0010
_l0009: NOP
        \ VARIABLE
        CALL    _B_GET
_l0010: NOP
\ 0xF5
        PUSH_H
        LXI_H,  #0001
\ 0xA0
        POP_D
        DAD_D
\ 0xF4
        POP_D
        XCHG
        MVI_A,  #FF
        CMP_H
        JNZ    _l0011
        \ REGISTER
   CALL   _R_SET
   JMP   _l0012
_l0011: NOP
        \ VARIABLE
        CALL   _B_SET
_l0012: NOP
        POP_H
\ *0x43 0x00 %w1
_j0054:         JMP _j0023
\ *0x40
_j0058: \ 0xF5
        PUSH_H
        LXI_H,  #FF0A
\ 0xF5
        PUSH_H
        LXI_H,  #FF0A
\ 0xF3
        MVI_A,  #FF
        CMP_H
        JNZ    _l0013
        \ REGISTER
   CALL   _R_GET
   JMP   _l0014
_l0013: NOP
        \ VARIABLE
        CALL    _B_GET
_l0014: NOP
\ 0xF5
        PUSH_H
        LXI_H,  #0001
\ 0xA0
        POP_D
        DAD_D
\ 0xF4
        POP_D
        XCHG
        MVI_A,  #FF
        CMP_H
        JNZ    _l0015
        \ REGISTER
   CALL   _R_SET
   JMP   _l0016
_l0015: NOP
        \ VARIABLE
        CALL   _B_SET
_l0016: NOP
        POP_H
\ *0x43 0x00 %w1
_j0066:         JMP _j0007
\ *0x00
_j006A:    \ NOP is empty operation
\ *0xFF
_j006B:
+./LIB/I8080/ORION
+./LIB/I8080/_CLIB
+./LIB/I8080/_VARS
+./LIB/I8080/_PLATF2
+./LIB/I8080/NULL_

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


03 May 2020 00:18
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
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 покроются!

_________________
:eugeek: https://twitter.com/Shaos1973


03 May 2020 10:01
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18590
Location: Silicon Valley
Reply with quote
Post Re:
Shaos wrote:
Shaos wrote:
Вопрос возник - нужно добавить в RW1P2 файловые операции. Я за эти годы несколько подходов окучил - пока ни один не понравился (каналы, спец-команды, ассемблерные вставки). Вобщем думается сделать на нижнем уровне передачу файлов блоками по 256 байт (как на CP/M-80), а на строки или на байты уже будет делить библиотека, написанная на RW1.


Weberta-интерпретатор байткода RW0 имеет следующую реализацию файловых операций:
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:
...
+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(TRUE)
      {
        while(A[0]) // пока не встретили ноль (либо любой другой маркер окончания полезной информации - этот символ должен быть в файле)
        {
           // что-то делаем с очередной буквой A[0]
           A = A + 1 // сдвигаем указатель на 1
        }
     }
   }
}

_________________
:eugeek: https://twitter.com/Shaos1973


03 May 2020 14:21
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 43 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 1 guest


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.