PC-01 Lviv

It is currently 10 May 2024, 09:35

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 16 7 8 9 1015 Next
Author Message
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 13:34 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
Вы какой файл используете? Я имею в виду lvt.
А lvt тоже самое... т.е $81AC: CALL $80D4... Ведь так ?..


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 16:29 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Файл какой? Взяли где?


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 19:57 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
Файл какой? Взяли где?
Да невспомню уже... а что, тот что на форуме там токого нет?!... Сейчас гляну...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 20:38 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
На сайте есть *.sav. А по нему крайне трудно определить начало и конец файла :)


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 21:49 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
На сайте есть *.sav. А по нему крайне трудно определить начало и конец файла :)
Уже скачал из сайта но у меня не такие... такого как на сайте у меня нет и небыло
Может расположи на сайт тот который у меня т.е. PL.lvt...
Только внимательно проверь дизасемблированием, хотя я по
;Начальный адрес: $81A0 (33184)
;Конечный адрес: $867C (34428)
;Адрес запуска: $81A0 (33184)
дизассемблировал, а потом ассмеблировал и у меня она работала

Вот все файлы игры Пьяный лифтер (Pl.e3 PL.emu PL.lvt)
http://file.oboz.ua/download.php?fid=139514
какой из какого произошел уже не вспомню, наверной из Pl.e3 произошли PL.emu PL.lvt, а может и из PL.lvt
По факту то что они жискомпилируются одинаково и имеют одинаковое содержимое (во всяком случае начало одинаковое у всех)
$81A0: LXI SP, $AFFF
$81A3: CALL $83B4
$81A6: LXI H, $85F4
$81A9: SHLD $80D5
$81AC: CALL $80D4
Где $81A0 начало и старт программы, а $81AC: CALL $80D4
Вызов процедуры которая находится до программы…. Итересно?!,,, Как это?!...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 21:53 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Скорее всего все файлы произошли от Pl.e3, а он из кассеты и в нем сохранились оригинальные адреса загрузки с кассеты


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:00 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Кстати в popcornfvi.lvt тоже такие приколы наблюдаються что вызов подпрограммы которая вне адресов, начала и конца…
;Имя программы:(popcornfvi.lvt)
;--------------------------------------
;Адреса загруженной программы в память ПК-01 "Львов"
;Начальный адрес: $8300 (33536)
;Конечный адрес: $9145 (37189)
;Адрес запуска: $8300 (33536)

А вызов подпрограммы $8347:CALL $80E8 и $8351:CALL $80E8


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:07 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Все очень просто: после запуска ПК-01 копирует в ОЗУ процедуру, которая выводит красивую заставку с выезжающими буквами. Заставка выводится, а процедура так и остается в ОЗУ, чем и пользуется данная игра. Почему нельзя было оставить эту процедуру в ПЗУ - тайна сия велика. Хотя эффект, конечно, оригинальный.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:15 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
На сайте есть *.sav. А по нему крайне трудно определить начало и конец файла :)
А что там в адресах памяти?... там где хранится "Начальный адрес" "Конечный адрес" "Адрес запуска" ?
Я в своем дизасемблере для определения из формата Е3 использовал адреса Памяти львова
Code:
var Word_:Word;
Byte_: array [1..2]of byte absolute Word_;// для абсолютирования ворда и 2 байтов
.........
Byte_[1]:=MemoryLVByte[48804];Byte_[2]:=MemoryLVByte[48805];// начальный адрес из памяти програмы
PosizBeginPROG:=word_;
Byte_[1]:=MemoryLVByte[48806];Byte_[2]:=MemoryLVByte[48807];// конечный адрес из памяти програмы
PosizEndPROG:=word_;
Byte_[1]:=MemoryLVByte[48809];Byte_[2]:=MemoryLVByte[48810];// конечный адрес из памяти програмы
PosizStartPROG:=word_;
адреса взятые из проги "разведчик" которая для ПК-01 Льовов, дак а что в формате SAV так нельзя "выпасти" эти ячейки?...
Я формат SAV не изучал, и нереализовывал дискомпиляцию для него... так как посчитал это лишним, ведь SAV можно преобразовать какой-то из програм Е3 или Башкирия, или даже обоими програми, уже не помню....


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:17 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
Все очень просто: после запуска ПК-01 копирует в ОЗУ процедуру, которая выводит красивую заставку с выезжающими буква. Заставка выводится, а процедура так и остается в ОЗУ, чем и пользуется данная игра. Почему нельзя было оставить эту процедуру в ПЗУ - тайна сия велика. Хотя эффект, конечно, оригинальный.
А в документации ведь этого не написано, а автор откуда-то знал?... Иль сам "наковырял"...
А чего там еще интересного остается ?... :D И где?...:D


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:21 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
а процедура так и остается в ОЗУ
И это что получается.... если те адреса перед загрузкой программы будет использованы (изменены, затерты) и комп не перегружался, то загруженная игра попросту не запустится?....


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 22:49 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Создал черновой дизпаскаль для своего модуля… скоро выложу, хоть никому похоже это и не интересно.. :-)
Пытался дизпаскалировать и запустить программы Пьяный лифтер, Аэрокобру и popcornfvi… успехи пока неахти… :-( ничего толком не получается, а только «что-то» и «как-то»… popcornfvi вообще очень сложно, а может даже невозможно дизпаскалировать, структура проги не позволяет…
Обращаюсь к тем кто рассматривал (дизассемблировал) программы. Подскажите программу (игру) которую реально можно попробовать дизпаскалировать под мой модуль… требования к программе:
Минимальный размер, хотя бы до 3000 байт; простая структура, возможная для реализации в Дельфи; минимальное либо вообще не используя подпрограммы ПЗУ.
В поисках минимальных прог накнулся на kobra.lvt, стоит лиее пытаться дизпаскалировать и кстати как в нее вообще играть то?... Как управлять в ней?...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jul 2012, 23:29 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
А что там в адресах памяти?... там где хранится "Начальный адрес" "Конечный адрес" "Адрес запуска" ?
Нигде. sav - это дамп. Просто записанные в определнный момент состояния памяти ипроцессора, по которому можно возобновить работу компьютера. Только вот узнать, где там в памяти начинается программа, а где "мусор" - очень трудно.
Quote:
И это что получается.... если те адреса перед загрузкой программы будет использованы (изменены, затерты) и комп не перегружался, то загруженная игра попросту не запустится?....
Возможно, и не запустится. Трудно предугадать, что окажется на том месте.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 08 Jul 2012, 17:41 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
to sas9568635: что я могу сказать, liberation абсолютно прав, это процедура вывода экранной заставки, она копируется в ОЗУ в ходе загрузки, откуда и запускается. Зачем надо было "портить" ещё один участок памяти - мне самому неясно (там код не настолько сложный). Впрочем, есть ещё СБР+Ц ...
Quote:
Почему нельзя было оставить эту процедуру в ПЗУ - тайна сия велика. Хотя эффект, конечно, оригинальный.
там и другие тайны есть, однако.
в частности, после вывода заставки заново повторяется инициализация системы (не железо, которое программируют один раз перед этим, но распределение памяти, стек, повторно копируют бейсик в ОЗУ и т.п.)
Code:
RAM:80C0 RAM_ShowBanner:
...
RAM:80D4 RAM_ShowBan_Go: lxi     h, aPk01@Lxbib@@@R
...
RAM:8195 aPk01@Lxbib@@@R:.text "pK-01@"
RAM:8195                 .db 27h
RAM:8195                 .text "lxBIB"
RAM:8195                 .db 27h
RAM:8195                 .text "@@@:R"
RAM:8195                 .db 0
...
ROM:FCA6 ROM_ShowBanner:


               ...........................


RAM:BE3C CursorStatus:   .db 0

RAM:BFEB jBasicStart:    jmp     BasicStart
ROM:D7D9 BasicStart:     jmp     loc_FA8C

ROM:F809 PrintChar:      jmp     sub_BFF4
RAM:BFF4                 jmp     loc_DF68

ROM:F800 GoBoot:         jmp     jBasicStart

               ----------[BEGIN]-----------------------

ROM:E0C2                 lxi     h, jBasicStart
ROM:E0C5                 mvi     m, 0C3h ; jmp
ROM:E0C7                 lxi     h, doShowBanner
ROM:E0CA                 shld    jBasicStart+1
ROM:E0CD ResumeBoot:

                     ...........................

ROM:E11C                 jmp     GoBoot

               ----------[END]-------------------------


ROM:E1F8 doShowBanner:
ROM:E1F8                 lxi     h, BasicStart
ROM:E1FB                 shld    jBasicStart+1
ROM:E1FE                 mvi     a, 1            ; hide cursor
ROM:E200                 sta     CursorStatus
ROM:E203                 lxi     h, ROM_ShowBanner
ROM:E206                 lxi     d, ROM_ShowBanner
ROM:E209                 lxi     b, 0EAh ; 'ъ'
ROM:E20C                 call    CopyMem
ROM:E20F                 call    PrintChar       ; c=0, so just effectively
ROM:E20F                                         ; initialize TTY subsystem
ROM:E212                 call    RAM_ShowBan_Go
ROM:E215                 jmp     FlashPalettes

ROM:E6E4 FlashPalettes:
ROM:E6E4                 call    Pause
ROM:E6E7                 mvi     a, 3Ch
ROM:E6E9                 out     0C1h
ROM:E6EB                 call    Pause
ROM:E6EE                 mvi     a, 5Fh
ROM:E6F0                 out     0C1h
ROM:E6F2                 call    Pause
ROM:E6F5                 mvi     a, 8Fh
ROM:E6F7                 out     0C1h
ROM:E6F9                 jmp     ResumeBoot


ROM:E218 Pause:
ROM:E218                 lxi     b, 0FFFFh
ROM:E21B
ROM:E21B loc_E21B:
ROM:E21B                 dcx     b
ROM:E21C                 mov     a, b
ROM:E21D                 ora     c
ROM:E21E                 jnz     loc_E21B
ROM:E221                 ret

ROM:E11F CopyMem:
ROM:E11F                 ldax    d
ROM:E120                 mov     m, a
ROM:E121                 inx     d
ROM:E122                 inx     h
ROM:E123                 dcx     b
ROM:E124                 mov     a, b
ROM:E125                 ora     c
ROM:E126                 jnz     CopyMem
ROM:E129                 ret


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 09 Jul 2012, 10:19 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
А в документации ведь этого не написано, а автор откуда-то знал?... Иль сам "наковырял"...
А чего там еще интересного остается ?... :D И где?...:D
"Тогда" это была очевидная вещь, вроде бы все сами собой об этом знали. Возможно, есть еще чудности в стандартном ПЗУ, но сейчас ничего уже не припомнить.
Quote:
Создал черновой дизпаскаль для своего модуля… скоро выложу, хоть никому похоже это и не интересно.. :-)

Трудно ожидать острого интереса, все-таки "Львов" это ретроПК, сейчас интерес к нему подогревается иной мотивацией, чем двадцать лет тому назад. Кто хотел для него писать, тот уже все написал. Нынешние "львовисты" - кружок историков-аматоров, к тому же малочисленный. Опять-таки - Дельфи. Не то чтобы есть претензии к языку, но все-таки - Дельфи.
Quote:
Пытался дизпаскалировать и запустить программы Пьяный лифтер, Аэрокобру и popcornfvi… успехи пока неахти… :-( ничего толком не получается, а только «что-то» и «как-то»… popcornfvi вообще очень сложно, а может даже невозможно дизпаскалировать, структура проги не позволяет…
Если начали копать "Пьяного лифтера", то какой смысл менять коней на переправе? Вряд ли можно найти что-то проще. К тому же требование "простая структура, возможная для реализации в Дельфи" откровенно ставит в тупик. По каким критериям такую структуру оценивать?

p.s.
Кстати, а что там с popcornfvi такого сложного?

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 16 7 8 9 1015 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 5 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:
cron
Powered by phpBB® Forum Software © phpBB Limited