Forum

From PMD 85 Infoserver

Jump to: navigation, search
:: back to topic list ::
Message
Author  Author ::  Jakub Ladman
Posted  Posted ::  2013-08-17 12:55:38 AM
Subject  Subject ::  jak získat programy v čistě binární formě?
Asi to není moc srozumitelné v tom titulku.

Nemám funkční magnetofonový vstup PMD.

Za to mám funkční KZD-1 a přenos dat z PC pomocí sériové linky.

Pokud mi někdo poradí, jak z kazetových archivů dostat holá data bez hlaviček a dalších zbytečností (např. loaderů) udělal bych si pomocí programu pro pc co jsem si napsal z nich sekvenci příkazů INBLOCK a 128bytových bloků dat a ty přenesl z pc do pmd.

Potom bych je uložil na KZD-1.

Jde nějak přijatelně jednoduše taková data získat?

Díky za pomc

Jakub
 
Message
Author  Author ::  Roman Bórik
Posted  Posted ::  2013-08-17 08:05:57 AM
Subject  Subject ::  Re: jak získat programy v čistě binární formě?
Úplne jednoduchá cesta neexistuje.

V emulátore je v Prieskumníkovi pásky možnosť uložiť blok, na ktorom stojí kurzor, ako čisté dáta (určite to platí o Win verzii, pravdu povediac neviem, či to platí aj pre Linuxovú verziu, ktorú má pod palcom Martin).

V prípade programu v BASICu je tento blok priamo použiteľný. Je ho treba potom nahrať na adresu 2401h (keď je v pamäti BASIC) a zavolať rutinu na adrese 2296h.

V prípade strojových programov bez špeciálneho loadera a Autoštartu je daný blok tiež priamo použiteľný a treba ho nahrať na adresu, ktorá je uvedená v hlavičke. Program sa spúšťa od rovnakej adresy.

Programy a hry, ktoré majú Autoštart a nejaký vlastný loader sa takto priamočiaro upraviť nedajú. Hlavný blok programu je obvykle v bezhlavičkovom bloku za loaderom a prípadným obrázkom a tak informácia ako a kam sa má tento blok do pamäti nahrať je v samotnom loaderi. Preto je nutné tento loader preskúmať a k tomu je nutné ovládať strojový kód a poznať rôzne detaily a rutiny Monitora.
 
Message
Author  Author ::  Jakub Ladman
Posted  Posted ::  2013-08-17 09:37:09 AM
Subject  Subject ::  Re: jak získat programy v čistě binární formě?
Ach jo

Já tyhle speciální loadery vždycky nenáviděl.
Na spectru to často znamenalo, že se loader bude pokoušet o vyšší rychlost, neboli větší šanci že se program nenahraje. Na MZ-800 zase, že program není přenositelný na disketu.

A tady zase průser.

S obtížemi a pomalu přečtu stroják i8080, ale rutiny monitoru pochopitelně vůbec neznám :-(

A že bych to tedy opravdu převést chtěl, když už jsem včera vychytal způsob, jak data po přiměřených částech přenést po sériovce, potom přes sériovku nastavit parametry pro rutiny KZD-1 a přímo přes sériovku odstartovat zápis bloku na kazetu. Jen chybí odstranit předgenerování do souborů (k použití v terminálu) a místo toho otevírat rovnou sériovku ve vlastním programu.

Tu možnost exportu surových dat z emulátoru jsem našel. V linuxové verzi ta nabídka je vyšedlá, neaktivní, tak jsem musel spustit win emulátor pod wine (nezobrazuje obrázky na tlačítkách, nevím jestli mám optimální verzi).

Nejdou podobně dostat programy z disketových image? Ty by snad měl driver disketovky natáhnout rovnou na své místo, ne?
 
Message
Author  Author ::  Roman Bórik
Posted  Posted ::  2013-08-17 10:41:51 AM
Subject  Subject ::  Re: jak získat programy v čistě binární formě?
Tá možnosť s obrazmi diskiet mi samozrejme napadla tiež, ale nechcel som to hneď rozpisovať...

Hry na obrazoch diskov P32 sú upravené tak, aby sa dali spusti pod CP/M cez program Runner. Samozrejme, na disketách sú už všetky hlavné bloky čisté, takže to možno využiť.
Na extrahovanie jednotlivých súborov z obrazov diskov treba použiť utilitu CP/M Image Manager, ktorá je aj pre Linux.

- každý program má svoj INF súbor, ktorý popisuje, čo a kam sa má nahrať do pamäte
- pre jednoduchosť treba obrázky ignorovať (príkaz PICTURE), zaujíma nás teda až to, čo je za prípadným obrázkom
- najdôležitejší je príkaz FILE, ktorý nahraje uvedený súbor na danú adresu
- príkazy POKE sa môžu v drvivej väčšine ignorovať, pretože modifikujú program kvôli disketovke alebo Joysticku, ale nemusí to byť vždy tak
- príkaz JUMP určuje adresu spustenia programu
- príkaz MONIT určuje, ktorý Monitor je nutný pre beh programu. Ak je tam MONITOR 1, tak tento program na PMD 85-2A nebude korektne fungovať. Musí tam byť buď 2 alebo môže príkaz MONITOR úplne chýbať
:: back to topic list ::