Page 2 of 3

Re: CLi² (Command Line Interface 2) API

PostPosted: Tue, 06.09.2016 06:49:40
by amixgris
Бриз, не желаешь ли поменять способ перехода на функцию в API? Я тут набросал. По-моему так и короче, и время вызова всех функций одинаково.

Code: Select all
_cliApi:
        push hl
        push bc
        push de

; in:  A = subroutine number.
        LD      HL,sbr_ID
        LD      D,H
        LD      E,L
        LD      BC,sbr_vec - sbr_ID
        CPIR
        JR      NZ,absent; subroutine not found
        LD      BC,sbr_vec
        OR      A,A
        SBC     HL,DE
        DEC     HL
        ADD     HL,HL
        ADD     HL,BC
        LD      E,(HL)
        INC     HL
        LD      D,(HL)
        EX      DE,HL
        pop     de
        pop     bc
        ex      (sp),hl ; put function vector on stack and restore function argument in HL.
        ret
absent: pop     de
        pop     bc
        pop     hl
        ret
       

sbr_ID:
        db      #00, #01, #02, #03, #04, #05, #06, #07, #08, #09, #0A, #0B, #0C, #0D, #0E, #0F,
        db      #10, #11, #12, #13, #14, #15, #16, #17, #18, #19, #1A, #1B, #1C, #1D, #1E, #1F,
        db      #20, #21, #22, #23, #24, #25, #26, #27, #28, #29, #2A, #2B, #2C, #2D, #2E, #2F,
        db      #30, #31, #32, #33, #34, #35, #36, #37, #38, #39, #3A, #3B, #3C, #3D, #3E, #3F,
        db      #40, #41, #42, #43, #44, #45, #46, #47, #48, #49, #4A, #4B, #4C, #4D, #4E, #4F,
        db      #50, #51, #52, #53, #54, #55, #56, #57, #58, #59, #5A, #5B, #5C, #5D, #5E, #5F,
        db      #60, #61, #62, #63, #64, #65, #66
sbr_vec:
        dw      _initSystem
        dw      _reInitSystem
        dw      _getCliVersion
        dw      _reserved
        dw      _clearTxtMemory
        dw      _clearGfxMemory
        dw      _switchTxtMode
        dw      _switchGfxMode
        dw      _setGfxColorMode
        dw      _setGfxResolution
        dw      _setScreenOffsetX
        dw      _setScreenOffsetY
        dw      _printInit
        dw      _editInit
        dw      _printString
        dw      _printInputString
        dw      _printOkString
        dw      _printErrorString
        dw      _printAppNameString
        dw      _printCopyrightString
        dw      _printInfoString
        dw      _printStatusString
        dw      _printStatusOk
        dw      _printStatusError
        dw      _printErrParams
        dw      _printFileNotFound
        dw      _printFileTooBig
        dw      _printRestore
        dw      _printContinue
        dw      _printInputYN
        dw      _printInputRIA
        dw      _printCodeDisable
        dw      _printWithScroll
        dw      _clearIBuffer
        dw      _checkCallKeys
        dw      _loadFile
        dw      _loadFileLimit
        dw      _loadFileParts
        dw      _loadNextPart
        dw      _saveFile
        dw      _saveFileParts
        dw      _saveNextPart
        dw      _createFile
        dw      _createDir
        dw      _deleteFileDir
        dw      _renameFileDir
        dw      _checkFileExist
        dw      _checkDirExist
        dw      _getTxtPalette
        dw      _getGfxPalette
        dw      _setTxtPalette
        dw      _setGfxPalette
        dw      _setFont
        dw      _str2int
        dw      _int2str
        dw      _char2str
        dw      _char2hex-1
        dw      _fourbit2str
        dw      _mult16x8-1
        dw      _divide16_16
        dw      _parseLine
        dw      _printSymbolRepeat
        dw      _eatSpaces
        dw      _setAppCallBack
        dw      _setRamPage0Ext
        dw      _getRamAlloc
        dw      _moveScreenInit
        dw      _moveScreenUp
        dw      _moveScreenDown
        dw      _moveScreenLeft
        dw      _moveScreenRight
        dw      _getNumberFromParams
        dw      _getHexFromParams
        dw      _getHexPairFromParams
        dw      _nvRamOpen
        dw      _nvRamClose
        dw      _nvRamGetData
        dw      _nvRamSetData
        dw      _ps2Init
        dw      _ps2ResetKeyboard
        dw      _ps2GetScanCode
        dw      _getKeyWithShift
        dw      _waitAnyKey
        dw      _reserved
        dw      _reserved
        dw      _enableNvram
        dw      _disableNvram
        dw      _getLocale
        dw      _setMouseCursor
        dw      _enableAyPlay
        dw      _disableAyPlay
        dw      _uploadAyModule
        dw      _setPalNow
        dw      _showHideCursor
        dw      _setCurrentInk
        dw      _getCurrentInk
        dw      _setCurrentPaper
        dw      _getCurrentPaper
        dw      _long2str
        dw      _getCurrentDate
        dw      _getCurrentTime
        dw      _getMonthNameByNumber-1
        dw      _getDayNameByNumber-1

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 08:52:55
by LessNick
Mor-Da wrote: а нам-то простым смертным што делать-то


Мдэ. пичально всё это конечно. Ну давай попробуем с малого. Вот вариант, с задержкой перед повтором клавиши - 10 (в оригинале 3). Попробуй как кнопки будут нажиматься.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 10:01:04
by amixgris
Нет, в твоём случае лучше так:

Code: Select all
_cliApi:

MAXSBR equ      #66

; in:  A = subroutine number.
        cp      MAXSBR+1
        ret     nc
       
        push hl
        push de
        ld      l,a
        ld      h,0
        add     hl,hl
        ld      de,sbr_vec
        add     hl,de
        ld      a,(hl)
        inc hl
        ld      h,(hl)
        ld      l,a
        pop     de
        ex      (sp),hl
        ret

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 12:06:29
by VBI
amixgris, уже лучше. а то "хранить" номера от 0 до 66 без дыр и разрывов в номерации довольно примитивно

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 17:58:09
by Mor-Da
LessNick wrote:Вот вариант, с задержкой перед повтором клавиши - 10 (в оригинале 3). Попробуй как кнопки будут нажиматься.
Спасибо, что не бросаете утопающих... Вообщем так, стало немного лучше, но все равно "даблит". По ощущениям, надо 30, а то и все 50.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 18:44:05
by LessNick
Mor-Da wrote:По ощущениям, надо 30, а то и все 50.


Ну по правде говоря это боюсь вообще изврат бутет, но давай попробуем. в архивах соответственно 30 и 50 задержка.

В будущем это настраиваемый параметр, просто в API настроек пока не вытащено.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 19:15:36
by Mor-Da
LessNick wrote:Ну по правде говоря это боюсь вообще изврат бутет, но давай попробуем. в архивах соответственно 30 и 50 задержка.
Все равно маловато. Комфортной работой и не пахнет. Нужно ишо искать костыль... или увеличить до 252?

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 20:11:47
by LessNick
Mor-Da wrote:увеличить до 252?


да я могу хоть 1000 прикрутить, проблемы это явно не решит. Ибо как я уже писал раньше, железо не правильно возвращает код отпускания клавиши. Я уже честно говоря сильно сомневаюсь в комфорте с набором текста с задержкой в 1 секунду, а что уже говорить про 252/50 = в 5 секунд???

Короче ерунда всё это. Надо подумать. С ходу не могу сказать как это можно решить. Проблема в том, что Коши использует софтварный автоповтор, а я использую автоповтор самой клавиатуры, но для этого она должна НОРМАЛЬНО возвращать коды.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 20:39:22
by Mor-Da
Еще, при запуске keyscan коды постоянно бегут не останавливаясь.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 23:16:46
by MVV
MVV wrote:В build 20160830 сделал возможность чтения HID Keyboard Report [modifier, Key1, Key2, Key3, Key4, Key5, Key6]
Port #0004 = modifier:
bit 0: left control
bit 1: left shift
bit 2: left alt
bit 3: left GUI (Win/Apple/Meta key)
bit 4: right control
bit 5: right shift
bit 6: right alt
bit 7: right GUI

Port #0104 = Key1
...
Port #0604 = Key6

Сразу получаем состояние восьми функциональных клавиш + 6 обычных, драйвер в разы меньше и проще, а не как в PS/2 - 4 кода только одной клавиши ))

Для того, чтобы разобраться как сейчас работает передача сканкода от клавиатуры, набери следующее
Code: Select all
10 PRINT AT 0,0;IN 4;" ";IN 260;" ";IN 516;" ";IN 772;" ";IN 1028;" ";IN 1284;" ";IN 1540;" ":GOTO 10

Заметь, это в разы удобнее, чем передача от PS/2. Аналогично передается дескриптор мыши (Byte 1:Buttons; Byte 2:Left/Right delta; Byte 3:Up/Down delta; Byte 4:Wheel delta; Byte 5 - 8: not used) и gamepad.

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 23:43:09
by LessNick
MVV wrote:Заметь, это в разы удобнее


удобнее кому? у меня вся система завязана на приём и обработку 4х сканкодов. Ты сейчас мне предлагаешь выкинуть всё и переделывать под порты которых у меня нет ни в железе, ни хотя бы в эмуляторе? Где я буду в слепую тыкаться, ловить глюки и не понимать что я делаю? Зачем мне одновременный опрос 6 клавиш? я что управляю игрой? нет, у меня набор текста. Если ты сейчас в винде в блокноте зажмёшь 6 клавиш, то получишь повторяющийся последний код «AAAAAAAAAAAAAAAAAAAAAAAAAAAA» так в чём мой профит? Вот честно скажу, нет ни времени, ни тем более желания писать софтварные костыли для хардварной недоработки.

Я реально не понимаю, В ЧЁМ ПРОБЛЕМА реализовать на U16, нормальную передачу 4 скан кодов, как это сделано на ОРИГИНАЛЬНОМ железе?

Re: CLi² (Command Line Interface 2)

PostPosted: Tue, 06.09.2016 23:44:39
by LessNick
Mor-Da wrote:Еще, при запуске keyscan коды постоянно бегут не останавливаясь.


Правильно! потому что когда ничего не нажато железо возвращает 4 нуля #00 #00 #00 #00, а U16 судя по твоему фото #F0 #00 #00 #00 <- что это за мусор я х/з

Re: CLi² (Command Line Interface 2)

PostPosted: Wed, 07.09.2016 09:03:04
by MVV
LessNick wrote:Я реально не понимаю, В ЧЁМ ПРОБЛЕМА реализовать на U16, нормальную передачу 4 скан кодов, как это сделано на ОРИГИНАЛЬНОМ железе?

В том, что это в разы проще и универсальнее реализовать софтово в виде драйвера устройства, как это делают в нормальных устройствах. Реализация в железе съест около 1К5 LEs, т.к. используется табличное преобразование 8 + 6 сканкодов USB клавиатуры с двумя буферами (для отслеживания отпущенных клавиш) в последовательность сканкодов PS/2, а это соизмеримо с одним NextZ80 или двумя YM2149.

Re: CLi² (Command Line Interface 2)

PostPosted: Wed, 07.09.2016 09:42:00
by TS-Labs
Таблицу можно засунуть в М9К...
И второй вопрос: как автору пришла идея не ставить внешний МК для такого рода задач?

Re: CLi² (Command Line Interface 2)

PostPosted: Wed, 07.09.2016 10:03:55
by MVV
TS-Labs wrote:И второй вопрос: как автору пришла идея не ставить внешний МК для такого рода задач?

Ну почему-же, VNC2 чем не внешний контроллер? Прикрученный к ПЛИС двумя каналами - UART(6 Mbaud) и SPI(Full/Half Duplex 24МГц). Осталось допилить для него прошивку, с поддержкой OSD меню; FLASH; SD Card. Кто возьмется помочь?

Re: CLi² (Command Line Interface 2)

PostPosted: Wed, 07.09.2016 10:10:00
by TS-Labs
А PS/2 на нем сделать можно?

Re: CLi² (Command Line Interface 2)

PostPosted: Wed, 07.09.2016 10:15:52
by MVV
TS-Labs wrote:А PS/2 на нем сделать можно?

Можно проще поступить, сделать переходник для uBus - PS/2, добавить два аппаратных модуля поддержки PS/2 клавиатуры и мыши... Но я его хотел под ZiFi задействовать или под FT81x...
Сейчас набросаю схемку подключения PS/2 к U16 через uBus+, сопряжение к LVTTL только придумать попроще...

Re: CLi² (Command Line Interface 2)

PostPosted: Sat, 13.04.2019 10:23:16
by asve79
Тема покрылась пылью, решил ее смахнуть )

Не могу понять почему не запускается. Скоипровал папочку bin, system и wc, прописал в WC, но при вызове плагина пишет:

Try to boot /system/kernel.sys
Error: sysytem path not found

Хотя в /system/kerne.sys имеется.!

Re: CLi² (Command Line Interface 2)

PostPosted: Sun, 14.04.2019 11:06:08
by asve79
По крайней проблеме. Удалось загрузиться без WC, записал на флеху содержимое вот этого каталога: https://github.com/LessNick/cli2/tree/master/install

Re: CLi² (Command Line Interface 2)

PostPosted: Sun, 14.04.2019 15:08:34
by LessNick
asve79 wrote:Не могу понять почему не запускается. Скоипровал папочку bin, system и wc, прописал в WC, но при вызове плагина пишет


CLi² давно уже работает без WC. У неё самостоятельный драйвер FAT32 (тот же что и у зифирки)

asve79 wrote:Удалось загрузиться без WC


Всё правильно, так оно и работает. Если после F12 удерживать кнопку W — то boot.$c загрузить Wild Commander.

В планах было написать полноценный лоадер по типу grub, но… как говорится пока никак.

Re: CLi² (Command Line Interface 2)

PostPosted: Mon, 15.04.2019 00:27:12
by idxi
А до "как" довести, чего стоить будет ? :) надо доделать до "как" - серьезные люди интересуются :ura:

Re: CLi² (Command Line Interface 2)

PostPosted: Fri, 19.04.2019 15:03:39
by LessNick
idxi wrote:серьезные люди интересуются


это конечно хорошо, что серьёзные люди интересуются, но:

1) Желание есть
2) Идеи есть
3) Времени нет, от слова совсем.

Так, что печаль во все поля. Даж не могу предварительные сроки назвать.

Re: CLi² (Command Line Interface 2)

PostPosted: Sun, 05.05.2019 21:02:19
by LessNick
Вброшу свежую струю, так сказать :smoke:

sshot000000.png

Re: CLi² (Command Line Interface 2)

PostPosted: Sun, 05.05.2019 21:56:08
by LessNick
Блин! немного поторопился, перепутал Ы и Ь местами. :facepalm: Если кто там уже скачал, просьба перекачать:

sshot000000.png


Дабы не опростоволоситься в следующий раз, добавил вывод текста.

Re: CLi² (Command Line Interface 2)

PostPosted: Mon, 06.05.2019 10:32:09
by VBI
класс! ура!