Page 6 of 7

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 9:13 am
by ALEXS1983
Pathoswithin wrote:Наоборот, общая архитектура гораздо важнее чем низкоуровневая оптимизация.
Ну да! Я так и говорил когда-то: "Набахкал", главное, чтобы работало, а там смотришь, - что нужно оптимизировать, чтобы "ко дну не тянуло", а то, что неактуально, - вообще не трогать!... и такое хоть на асме хоть, на самом чёрте. :-)
Вот ты, Pathoswithin и CleverMouse говорили мне, что в процедуру должна быть передача через стэк, и возврат тоже. Вот посмотри эту процедуру....
Spoiler:

Code: Select all

    ; запускасть 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:

Code: Select all

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 не поймите меня неправильно!... я опредёленно вам благодарен за многое! Но спор есть спор! Спор требует фактов! В споре рождается истина! Поэтому не сочтите эти строки за оскорбление или неуважение!

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 10:17 am
by ALEXS1983
viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 10:58 am
by ALEXS1983
Yason wrote:Берёшь парсер. Переделываешь под себя, если надо. Парсер, как минимум, должен получить путь с именем файла. После, загружаешь файл в память сисей 68.27 и передаёшь управление эмулю по обработке полученного файла(например, игры ). Алгоритм простой. Я бы, даже сказал - примитивный. :)
Это для тебя он простой и приметивный! :-)
давай пока getparam.asm, оставим в стороне.
Вот...
= Функция 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 ? или только в самой КОС ?
Это всё только лишь вопросы которые "сходу" "атаковали" мой мозг. То ли еще будет!... когда коснусь сути да дела! :-(
В общем, ощущаю, что мрачно это всё как-то.... Может проще самому нагенерить и генератор (виндовый) выложить, на случай если кому то не что-то понравится из мной на генерированного... пусть каждый сам нагенерирует как захочет... а винду найдёт, :-) или попросит у кого нибудь, у кого винда есть. :-)
Понимашь, генератор в дельфи для меня написать, это как два пальца... и всё будет как говорится без сучка, без задиринки, а вот тут, я чувствую, застрял надолго! Буду морочится долго и нудно! Вопросы бомблят мне мозг!

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 11:53 am
by ALEXS1983
Хотел создать опрос, но не знаю как это делать
Какой наиболее удачный и приемлемый графический режим для эмулятора ?
1. 256х256 (оригинал)
2. 512х512 (2-кратное увеличение :-) )
3. 768х512 (не является прямопропорциональным)
==============================
Под какую среду, должен быть ориентирован эмулятор ?
1. КОС (оригинальная система)
2. QEMU
3. KolibriWin
4. другую.
==============================
Скорость работы игр в эмуляторе...
1. Лучше помедленнее (чтобы детям было приемлемо)
2. Нормальная (приблизительно такая же как и в других эмулях)
3. Быстрая (чтобы веселей и нескучно играть было бы)
4. Каждую игру регулировать отдельно.
================
Ну вот пока и всё.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 12:19 pm
by Yason
ALEXS1983 wrote:viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
1 скачивание моё. Скачал из любопытства. Писать всерьёз на бейсике, не собираюсь, ибо не моё. :)
ALEXS1983 wrote:Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)
Я лично, документацию на оф.сайте скачал. :)

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 12:23 pm
by Yason
ALEXS1983 wrote:А где функция обратная этой функции?.. т.е. выгрузить файл (записать файл) ? что-то я её не нахожу. Для начала чтобы что-то считать надо бы выгрузить такое какое оно есть в модуле эмуля, чтобы внимательно всё рассмотреть.
То есть записать в файловую систему? Тогда, сися 70.2.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 12:37 pm
by Yason
ALEXS1983 wrote:А как подставлять в командную строку ? в винде в фаре, навёл на запускной файл, жмёшь Ctrl+Enter, далее навёл на нужный файл, жмёшь Ctrl+Enter, далее, Enter, и живи и жизни радуйся!... :-) А ЗДЕСЬ КАК ЭТО ? шото я не понял как это в кос...
Командная строка передаётся 2-мя прогами: консолью и файловым менеджером (ассоциации в kfar.ini, kfm.ini, assoc.ini). Командная строка приходит прямо в приложение.

Code: Select all

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 парсером и грузишь файл в память эмуля.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 12:49 pm
by Yason
ALEXS1983 wrote:Создать .bat-файл и прописать в него типа "Emul game.lvt" ? - а БАТ-файлы как в кос делать ?
Без понятия, потому как, очень редко пользуюсь. Но когда пользуюсь, то всё делаю вручную. Но там, помоему расширение .cmd используется.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 12:51 pm
by Yason
ALEXS1983 wrote:Немаловажный вопрос: а как и где это всё проверять возможно ?... в KlbrInWin, смогу проверять ? или QEMU ? или только в самой КОС ?
Скорее всего, только QEMU и КОС.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 1:12 pm
by Yason
ALEXS1983
Пример ассоциации для assoc.ini.

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

Code: Select all

lvt=$SASEmul
Пример ассоциации для kfar.ini. После пункта [Associations]

Code: Select all

lvt=/sys/sasemul
Пример ассоциации для kfm.ini. После пункта <>files_associations

Code: Select all

lvt /sys/sasemul
Только не забудь прописать, правильный путь и название.

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 2:48 pm
by ALEXS1983
Yason wrote:1 скачивание моё. Скачал из любопытства. Писать всерьёз на бейсике, не собираюсь, ибо не моё. :)
Ну напиши в шутку! :-) Ведь необязательно программу написать именно в серьёзе! :-)
Ну да ладно! То всё была моя шутка! :-) Хотя...
в каждой шутке.....
и если вдруг найдутся такие новички-маньяки, которым лишь бы, что написать и лишь бы как, то вполне возможно, что получится, и даже результативно! Ведь эмуль можно разогнать как захочешь, и программа дубово написанная на жалком васике ПК-01 станет вполне приемлемой. :-) Вот правда ресурсы жрать будет если эмуль разогнать, но то уже как говорится,- дело третье! Для таких писак, оно не актуально, по себе знаю :-)
ALEXS1983 wrote:Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)Я лично, документацию на оф.сайте скачал. :)
О-о-о-о! Можно и так! Кто захотел тот нашёл!
Надеюсь и с моим эмулем, так будет: кто захочет, - воспользуется генератором и найдет как и где запустить, и нагенерит себе как надо!.... :-) и забросит в сторону!... генератор, в смысле :-)
===========
Yason wrote:То есть записать в файловую систему? Тогда, сися 70.2.
Нда! Очень уж сильно они "похожи", прям как в зекрале! И главное "простая" как семь копеек одной монетой, :-) ну почти как 68, 27. :-)
А если серьёзно, - ожидал другого!
Не, Yason, наверное пока на этом СТОП! Буду делать как могу! Далее время покажет! Может быть после написанного и выложенного генератора, я всё таки созрею, для написания того, что ты предложил! Если это будет нужно, хоть кому-то, кроме меня.
Спасибо за всё! Пересмотрю это всё когда созрею! :-)
===========
Yason wrote:Скорее всего, только QEMU и КОС.
Фигнишка, однако! :-( :-)

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 4:18 pm
by Sewer
ALEXS1983 wrote:viewtopic.php?f=43&t=3253&start=60#p65014
Пк-01 Львов.7z [22.25 КБ]
4 скачивания -
наверное всё таки нашлись желающие писать на старом добром васике! :-)
Странно, что документации не просят!... :-)
наверное всё прекрасно знают и без документации! :-)
Я просил...

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 6:22 pm
by ALEXS1983
Sewer wrote:Я просил...
Я думал, что ты шутишь.... в ответ на мою шутку :-)
Ну Yason то уже ссылку выложил, - http://lvovpc.cu.cc/

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

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

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 6:24 pm
by ALEXS1983
Что-то мой опрос который viewtopic.php?f=43&t=3253&start=75#p65030
никто буд-то бы не видит! :-( А мне это очень важно, между прочим!

Re: SAS Emulator (эмулятор «ПК-01 Львов»)

Posted: Thu Mar 31, 2016 7:46 pm
by ALEXS1983
В эмуляторе реализована пауза (кл. "DELETE"). Думаю, что работы над эмулятором закончены, начинаю заниматься генератором.
Boulder Dash
Boulder Dash.7z (30.47 KiB)
Downloaded 320 times
Image