Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Aug 25, 2019 9:19 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 104 posts ]  Go to page Previous 13 4 5 6 7 Next
Author Message
PostPosted: Thu Mar 31, 2016 9:13 am 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Pathoswithin wrote:
Наоборот, общая архитектура гораздо важнее чем низкоуровневая оптимизация.

Ну да! Я так и говорил когда-то: "Набахкал", главное, чтобы работало, а там смотришь, - что нужно оптимизировать, чтобы "ко дну не тянуло", а то, что неактуально, - вообще не трогать!... и такое хоть на асме хоть, на самом чёрте. :-)
Вот ты, Pathoswithin и CleverMouse говорили мне, что в процедуру должна быть передача через стэк, и возврат тоже. Вот посмотри эту процедуру....
Spoiler: Show
Code:
    ; запускасть ScanCodeKey
    ;Результат обработки в
    ScanCodeKey1 rd 1 ; "Чистый" код
    ScanCodeKey2 rd 1 ; обработаный код (-128 если больше 128)
    ScanCodeKeyUD rd 1 ; если 0 - отжата, если 1 -нажата
    ScanCodeKeyExt rd 1 ; 0- обычный код; 1 - доп ext (224); 2 - доп2 ext2 (225)
    ScanCodeKeyUnitedCode rd 1 ; "единый" код
   
  ScanCodeKey_int40_2dop:
     mov  eax,2
     mcall
     shr  eax,8         ; scancode
     and  eax,0xff
   ret


ScanCodeKey:   ; START ScanCode
 call ScanCodeKey_int40_2dop

  cmp  eax,224 ; если доп код....
  jne  ScanCode_cmp_225;  если не равно нулю
  mov [ScanCodeKeyExt],1
  mov [ScanCodeKey1],0
    JMP ScanCode_m2;ScanCode_m2

ScanCode_cmp_225:
   cmp   eax,225 ; если доп2 код....
    jne  ScanCode_m1;  если не равно нулю
  mov [ScanCodeKeyExt],2
  mov [ScanCodeKey1],0
  jmp ScanCode_m2

ScanCode_m1:
; САМА кодировка
ScanCode_m2:
mov[ScanCodeKey1], eax ; "Чистый" код
 ; Клавиша нажата DOWN
mov[ScanCodeKeyUD],1 ; если 0 - отжата, если 1 -нажата
    cmp  eax,128
    jb    no_up
; Клавиша отжата секция UP
 mov[ScanCodeKeyUD],0 ; если 0 - отжата, если 1 -нажата

no_up:
    mov    ebx,eax
    and    ebx,0x7f
mov [ScanCodeKey2],ebx ; обработаный код (-128 если больше 128)

; "единый" код
mov eax,[ScanCodeKeyExt]
shl eax,8
add eax,ebx
mov[ScanCodeKeyUnitedCode],eax

ScanCodeKey_ret: ret

...... и вот скажи мне, какие у меня должны быть печали?... :-), что результат работы процедуры, в переменных
ScanCodeKey1 ,ScanCodeKey2, ScanCodeKeyUD, ScanCodeKeyExt, ScanCodeKeyUnitedCode ,
а не в регистрах и стэке ?!
А далее, процедура которая вызывает ScanCodeKey
Spoiler: Show
Code:
KeyProcess2:
call ScanCodeKey
mov eax,[ScanCodeKey2]
mov [readmask_keynum],eax
           call readmask2
cmp [readmask_Result],0
jz KeyProcess2_ret ; если нет клавиши в таблице         
       mov eax,[readmask_Result]
       mov [kbd_mask],eax
  mov eax, [ScanCodeKeyUD]; если 0 - отжата, если 1 -нажата
  mov [kbd_press],eax
     call kbdA
     mov [ScanCodeKeyExt],0
KeyProcess2_ret:
    ret

когда какие надо возвращаемые данные из ScanCodeKey, тогда она их от туда и берёт! И процедуры как "на ладони"(!), просты и понятны ВСЕМ, и новичкам в том числе, и себе любимому. В чём ты, Pathoswithin и CleverMouse меня пытались убедить, - ума не приложу! :-)
В быстродействии через стек ? В меньшем коде ? А ведь Push, Pop тоже ведь занимают место в памяти(!), да и по тактам они ведь не "нулевые"(!), а [SP+$04], ведь тоже самое, что обращение, что mov eax,[readmask_Result], например ?... ничем не быстрее, ведь правильно я говорю?!... а сколько примудростей (подготовки Push`ами), надо чтобы доступатся вот так вот [SP+$04], а потом, Pop`ами это всё "утрясать", да нигде и не в чём не ошибится.
А у меня всё просто: в одной процедуре получает переменная значение вот так mov [ScanCodeKey2],ebx), в другой использует его вот так mov eax,[ScanCodeKey2].
ВСЁ! Чего еще надо?!... особенно новичку!
Не любите вы новичков, ох, не любите! :-)
Вместо того, чтобы мне вот такое объяснить, (это я бы так новичку объяснял, тому кто новее меня....) :-) вы мне про какие-то стандарты передачи, в процедуру... из процедуры :-)
видимо вообще мне захотели мозги "зашить" напрочь! :D :D :D
Не, ну, Pathoswithin и CleverMouse не поймите меня неправильно!... я опредёленно вам благодарен за многое! Но спор есть спор! Спор требует фактов! В споре рождается истина! Поэтому не сочтите эти строки за оскорбление или неуважение!


Top
   
PostPosted: Thu Mar 31, 2016 10:17 am 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)


Top
   
PostPosted: Thu Mar 31, 2016 10:58 am 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Yason wrote:
Берёшь парсер. Переделываешь под себя, если надо. Парсер, как минимум, должен получить путь с именем файла. После, загружаешь файл в память сисей 68.27 и передаёшь управление эмулю по обработке полученного файла(например, игры ). Алгоритм простой. Я бы, даже сказал - примитивный. :)

Это для тебя он простой и приметивный! :-)
давай пока getparam.asm, оставим в стороне.
Вот...
Quote:
= Функция 68, подфункция 27 - загрузить файл ===================
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 27 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем файла
Возвращаемое значение:
* eax = указатель на загруженный файл или 0
* edx = размер загруженного файла или 0
Примечания:
* функция загружает и, при необходимости, распаковывает файл (kunpack)

---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_FILE (27)
======================================================================

А где функция обратная этой функции?.. т.е. выгрузить файл (записать файл) ? что-то я её не нахожу. Для начала чтобы что-то считать надо бы выгрузить такое какое оно есть в модуле эмуля, чтобы внимательно всё рассмотреть.
А как подставлять в командную строку ? в винде в фаре, навёл на запускной файл, жмёшь Ctrl+Enter, далее навёл на нужный файл, жмёшь Ctrl+Enter, далее, Enter, и живи и жизни радуйся!... :-) А ЗДЕСЬ КАК ЭТО ? шото я не понял как это в кос...
Привязать расширение к эмулю?! Ну и как это в кос сделать ?
Создать .bat-файл и прописать в него типа "Emul game.lvt" ? - а БАТ-файлы как в кос делать ?
Немаловажный вопрос: а как и где это всё проверять возможно ?... в KlbrInWin, смогу проверять ? или QEMU ? или только в самой КОС ?
Это всё только лишь вопросы которые "сходу" "атаковали" мой мозг. То ли еще будет!... когда коснусь сути да дела! :-(
В общем, ощущаю, что мрачно это всё как-то.... Может проще самому нагенерить и генератор (виндовый) выложить, на случай если кому то не что-то понравится из мной на генерированного... пусть каждый сам нагенерирует как захочет... а винду найдёт, :-) или попросит у кого нибудь, у кого винда есть. :-)
Понимашь, генератор в дельфи для меня написать, это как два пальца... и всё будет как говорится без сучка, без задиринки, а вот тут, я чувствую, застрял надолго! Буду морочится долго и нудно! Вопросы бомблят мне мозг!


Top
   
PostPosted: Thu Mar 31, 2016 11:53 am 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Хотел создать опрос, но не знаю как это делать
Какой наиболее удачный и приемлемый графический режим для эмулятора ?
1. 256х256 (оригинал)
2. 512х512 (2-кратное увеличение :-) )
3. 768х512 (не является прямопропорциональным)
==============================
Под какую среду, должен быть ориентирован эмулятор ?
1. КОС (оригинальная система)
2. QEMU
3. KolibriWin
4. другую.
==============================
Скорость работы игр в эмуляторе...
1. Лучше помедленнее (чтобы детям было приемлемо)
2. Нормальная (приблизительно такая же как и в других эмулях)
3. Быстрая (чтобы веселей и нескучно играть было бы)
4. Каждую игру регулировать отдельно.
================
Ну вот пока и всё.


Top
   
PostPosted: Thu Mar 31, 2016 12:19 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983 wrote:
http://board.kolibrios.org/viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
1 скачивание моё. Скачал из любопытства. Писать всерьёз на бейсике, не собираюсь, ибо не моё. :)
ALEXS1983 wrote:
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)
Я лично, документацию на оф.сайте скачал. :)


Top
   
PostPosted: Thu Mar 31, 2016 12:23 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983 wrote:
А где функция обратная этой функции?.. т.е. выгрузить файл (записать файл) ? что-то я её не нахожу. Для начала чтобы что-то считать надо бы выгрузить такое какое оно есть в модуле эмуля, чтобы внимательно всё рассмотреть.
То есть записать в файловую систему? Тогда, сися 70.2.


Top
   
PostPosted: Thu Mar 31, 2016 12:37 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983 wrote:
А как подставлять в командную строку ? в винде в фаре, навёл на запускной файл, жмёшь Ctrl+Enter, далее навёл на нужный файл, жмёшь Ctrl+Enter, далее, Enter, и живи и жизни радуйся!... :-) А ЗДЕСЬ КАК ЭТО ? шото я не понял как это в кос...
Командная строка передаётся 2-мя прогами: консолью и файловым менеджером (ассоциации в kfar.ini, kfm.ini, assoc.ini). Командная строка приходит прямо в приложение.
Code:
use32
   org 0x0
   db 'MENUET01'   ; 8 byte id
   dd 0x01      ; header version
   dd START   ; start of code
   dd IM_END   ; size of image
   dd I_END   ; memory for app
   dd stacktop   ; esp
   dd cmdline   ; I_Param           <----- адрес буфера для командной строки.
   dd path      ; APPLICATION PATH  <----- адрес буфера для пути к программе.

; code area.

;data area.

IM_END:
;unitialized data area.
cmdline:  rb 1024    ; буфер для командной строки.
path:     rb 1024    ; буфер для пути к программе.
          rb 1024
stacktop:
I_END:
Разбираешь данные cmdline парсером и грузишь файл в память эмуля.


Top
   
PostPosted: Thu Mar 31, 2016 12:49 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983 wrote:
Создать .bat-файл и прописать в него типа "Emul game.lvt" ? - а БАТ-файлы как в кос делать ?
Без понятия, потому как, очень редко пользуюсь. Но когда пользуюсь, то всё делаю вручную. Но там, помоему расширение .cmd используется.


Top
   
PostPosted: Thu Mar 31, 2016 12:51 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983 wrote:
Немаловажный вопрос: а как и где это всё проверять возможно ?... в KlbrInWin, смогу проверять ? или QEMU ? или только в самой КОС ?
Скорее всего, только QEMU и КОС.


Top
   
PostPosted: Thu Mar 31, 2016 1:12 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
ALEXS1983
Пример ассоциации для assoc.ini.

Надо прописать в начале файла.
Quote:
[SASEmul]
exec=/sys/sasemul
Надо прописать после пункта [Assoc] /=$Eolite
Code:
lvt=$SASEmul

Пример ассоциации для kfar.ini. После пункта [Associations]
Code:
lvt=/sys/sasemul

Пример ассоциации для kfm.ini. После пункта <>files_associations
Code:
lvt /sys/sasemul
Только не забудь прописать, правильный путь и название.


Top
   
PostPosted: Thu Mar 31, 2016 2:48 pm 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Yason wrote:
1 скачивание моё. Скачал из любопытства. Писать всерьёз на бейсике, не собираюсь, ибо не моё. :)

Ну напиши в шутку! :-) Ведь необязательно программу написать именно в серьёзе! :-)
Ну да ладно! То всё была моя шутка! :-) Хотя...
в каждой шутке.....
и если вдруг найдутся такие новички-маньяки, которым лишь бы, что написать и лишь бы как, то вполне возможно, что получится, и даже результативно! Ведь эмуль можно разогнать как захочешь, и программа дубово написанная на жалком васике ПК-01 станет вполне приемлемой. :-) Вот правда ресурсы жрать будет если эмуль разогнать, но то уже как говорится,- дело третье! Для таких писак, оно не актуально, по себе знаю :-)
ALEXS1983 wrote:
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)Я лично, документацию на оф.сайте скачал. :)

О-о-о-о! Можно и так! Кто захотел тот нашёл!
Надеюсь и с моим эмулем, так будет: кто захочет, - воспользуется генератором и найдет как и где запустить, и нагенерит себе как надо!.... :-) и забросит в сторону!... генератор, в смысле :-)
===========
Yason wrote:
То есть записать в файловую систему? Тогда, сися 70.2.

Нда! Очень уж сильно они "похожи", прям как в зекрале! И главное "простая" как семь копеек одной монетой, :-) ну почти как 68, 27. :-)
А если серьёзно, - ожидал другого!
Не, Yason, наверное пока на этом СТОП! Буду делать как могу! Далее время покажет! Может быть после написанного и выложенного генератора, я всё таки созрею, для написания того, что ты предложил! Если это будет нужно, хоть кому-то, кроме меня.
Спасибо за всё! Пересмотрю это всё когда созрею! :-)
===========
Yason wrote:
Скорее всего, только QEMU и КОС.

Фигнишка, однако! :-( :-)


Top
   
PostPosted: Thu Mar 31, 2016 4:18 pm 
Offline
User avatar

Joined: Thu Apr 30, 2015 11:50 pm
Posts: 102
ALEXS1983 wrote:
http://board.kolibrios.org/viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)

Я просил...

_________________
Юзер, просто юзер...со времён MS-DOS.


Top
   
PostPosted: Thu Mar 31, 2016 6:22 pm 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Sewer wrote:
Я просил...

Я думал, что ты шутишь.... в ответ на мою шутку :-)
Ну Yason то уже ссылку выложил, - http://lvovpc.cu.cc/

Персональная ЭВМ ПК-01 «Львов». Описание языка «Бейсик»
http://lvovpc.cu.cc/files/BasicBook.pdf

А у себя я кстати, где-то потерял по васику. Думал, что есть у меня. :-(
У меня вот такая http://lvovpc.cu.cc/article.shtml?id=2


Top
   
PostPosted: Thu Mar 31, 2016 6:24 pm 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
Что-то мой опрос который viewtopic.php?f=43&t=3253&start=75#p65030
никто буд-то бы не видит! :-( А мне это очень важно, между прочим!


Top
   
PostPosted: Thu Mar 31, 2016 7:46 pm 
Offline

Joined: Sat Nov 14, 2015 11:15 am
Posts: 299
В эмуляторе реализована пауза (кл. "DELETE"). Думаю, что работы над эмулятором закончены, начинаю заниматься генератором.
Boulder Dash
Attachment:
Boulder Dash.7z [30.47 KiB]
Downloaded 77 times

Image


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 104 posts ]  Go to page Previous 13 4 5 6 7 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 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 Limited