assembler/mrs/mrs

Memory resident system

O čem je tenhle program ?

Ivan Jedlička - 1989

Je to programový systém pro vývoj a ladění programů ve strojovém kódu - assembleru mikroprocesoru Z80.
Čili verze pro mikropočítače ZX Spektrum, Delta, Didaktik a další klony kompatibilní.

Na položenou otázku si programový skauti budou umět odpovědět sami. Berete-li však do rukou kazetu s programem MRS jako naprostí začátečníci assemblerového programování, vstupujete do nepoznaného labyrintu protkaného sítí temných chodeb. Úvodní slova vám do nich chtějí vnést aspoň trochu mihotavého světla (prozářit je nakonec budete muset sami monumentálními výboji svého intelektu).

Mezi spectristy dosud běhá několik zahraničních i porůznu upravovaných editorů a překladačů assembleru a monitorů paměti s rozličnými možnostmi ladění a analýzy tvořených či zkoumaných programů. Assemblerový metuzalémové nostalgicky vzpomenou dua GENS/MONS s prošedivělými skráněmi. Krátkou sérii variací na dané téma završil nablýskaný LASER GENIUS. Žádný z dosavadních programů však neposkytoval "v jednom kuse" tolik možností jako právě MRS. Proto by jste se měli v nové výzbroji aspoň rámcově zorientovat, než půjdete na zteč.

Začneme editorem EDI - do něj budete zapisovat assemblerové instrukce svého vznikajícího programu. Pozorně si pročtěte, jaké povinnosti vám EDI předepisuje jaké možnosti nabízí. Protože MRS žádá zakončit program slovíčkem END, nezapoměňte na ně. Jinak by se s vámi modul ASM odmítl bavit. Právě on překládá zdrojový text do strojového kód. Kam tento kód umístit, vám řeknou stránky věnované pseudoinstrukci ORG a direktivně *C.

Představte si, že právě přeložený kousek programu je jednou knížkou. Proč? Protože MRS má tu skvělou vlastnost, že si tuhle knížku umí uložit do své knihovny (modulu LIB). V ní je založena ne proto, aby na ni padal prach; naopak - můžete se na ni kdykoli obrátit a využít její obsah. Ovšem to chce vědět, jak s ní komunikovat, když je v ní prakticky ž jen strojový kód. Budete-li chtít z budoucích knížek (částí programu) volat třeba kapitolu (adresu) VSTUP, označíte ji kouzelným slůvkem ENT (vstupní bod) v té části programu, kde VSTUP v editoru definujete. Knihovník si po překladu poznamená absolutní adresu symbolizovanou názvem VSTUP, a kdykoli se na ni nějaký jiný kousek programz bude chtít obrátit (instrukcí CALL VSTUP, LD HL, VSTUP apod.), knihovník už bude umět zařídit potřebné. Budete-li z nějakého psaného kousku assembleru chtít volat nějakou z adres uložených jako vstupní body, musíte na to knihovníka předem upozornit dalším magickým slovíčkem EXT (externí bod).Když je před překladem umístíte do textu a připíšete k němu názvy vstupních bodů v knihovně už uložených, knihovník - za nezbytné podpory modulu LNK - pak knížky propojí ("slinkuje"). Všem výrazům označeným EXT přidělí (podle předtím uložených hodnot ENT) správné absolutní adresy a tak celý program vnitřně prováže. A když jste se nikde nespletli, budou si všechny knížky spolu povídat podle vašich představ, Z toho rovněž vyplývá, že byste neměli spouštět program obsahující pseudoinstrukce EXT, dokud knihovnu neprovážete modulem LNK - na to pozor!

Do knihovny pochopitelně ukládáme jen takové kousky programu, které nám už bezvadně fungují. Knihovník napevno uloží jen takovou knížku, které dáme nějaký titul (každé jiný). Jinak ji po překladu uloží bez názvu a při každém dalším překladu ji přepíše.

Co však, když chcete něco v nějaké knížce upravit a nikde nemáte záznam jejího zdrojového textu? Je přece popsána jen strojovým kódem! Nevadí. Z editoru si modulem DIS vyvoláte zpětný překlad pro převedení jejího obsahu ve tvaru zdrojového textu přímo do editoru. S výsledným assemblerovým výpisem, který se však objeví bcz původních návěští, můžete naložit, jak libo - přidat či ubrat instrukce a upravený text zase založit do knihovny. Když jej založíte pod stejným názvem, zruší se registrace původní knížky (ačkoli její obsah i rozsah zůstane nezměněn) - knihovník vám s ní už nedovolí komunikovat. Vaše upravená knížka se připojí na konec knihovny (a byla-li tam nějaká bez názvu, přepíše ji).

Modulem DIS můžete do editoru posadit zdrojový text jakékoli části paměti - třeba i romky. Při další práci s textem je samozřejmě dobré vědět (či poznat), co jsou data a co instrukce, aby nedošlo k nějakému omylu.

Něco málo můžete upravit i přímou změnou obsahu adres paměti pomocí ladicího modulu DBG - ale nezapomeňte, že tyto změny se samozřejmě neobjeví ve zdrojovém textu (zvláště máte-li jeho měněnou část už někde na pásku). Modul DBG vám mimo jiné umožní prohlížet obsah paměti a modifikovat ji; ale to je jen malá část jeho možností, které máte k dispozici pro ladění svých programů. Jako každý správný debugger ("spray na programové štěnice") má i DBG možnost zpětného překladu, abyste se mohli podívat na assemblerový tvar uloženého strojového kódu. Oproti produktu modulu DIS je tento překlad jen orientační, nikam se neukládá. Prohlížení obsahu paměti a všech registrů procesoru vám pomůže sledovat, co se v nich děje za chodu programu. Často jím budete potřebovat krokovat manuálně, instrukci za instrukcí, ale jde to i automaticky - ve sledovacím režimu a jeho variacích s body přerušení, stanovenými okny paměti a registru PC, hlídáním vámi zakázaných instrukcí atd., atd...

Když jste při ladění odhalili chybičku (jednu ze sta, jak už tomu tak bývá), můžete se z modulu DBG zase vrátit zpět - třeba do editoru - a pokračovat ve tvorbě programu ... i dalších chyb. Proto se snažte zvládnout všechny kombinace programového ladění, které modul DBG nabízí.

MRS dovoluje použít nejvíce 255 návěští (symbolických adres). To je dáno autorovou snahou docílit komprimací a jinými úspornými prostředky maximálního efektu na malé ploše (do volné paměti se vejde přes 4 000 řádek zdrojového textu). Proto při práci s větším programem budete muset trochu víc přemýšlet o jeho struktuře a postupném ukládání jeho autonomních částí do knihovny, abyste s limitovaným počtem návěští vystačili. Po uložení každé části do knihovny a překladu nového zdrojového textu zmizí všechna předchozí návěští (přepíšou se novými). Vlivem komprimace trvají některé manipulace editoru s dlouhým textem podstatně déle než s krátkým. I proto je lepší častěji knihovat (a následně spojovat modulem LNK). Ale nelekejte se, na tak malém počítači (a pohříchu nejen na malém) nebývá nic absolutního. Až se s programem MRS sžijete, zjistíte, že vám u jiných obdobných bude zase chybět to, co MRS umí.

Když spojená část programu nejeví známky slabosti, můžete si knihovnu zapsat na pásek či jiné médium, abyste o ni nějakou fatální chybou nepřišli. Vždy je lepší dát do bezpečí, co zrovna funguje, než o to v nejbližším okamžiku nenávratně přijít. Uschovanou knihovnu si můžete do počítače zase načíst (nová odstraní starou). Na vnější paměť samozřejmě můžete průběžně zapisovat i samotný zdrojový text či jakoukoli část paměti.

O tom všem a přemnohém jiném se dozvíte z dalších stránek manuálu. Při svých prvních kontaktech s programem se nebojte chybovat, i když vám program občas zmizí z obrazovky (stane se i profesionálovi). Nedílnou součástí osvojení programů, jako je MRS, je výuka vlastními chybami. Budete-li se studiu věnovat opravdu pilně, do dvou, tří týdnů už vám to půjde bez velkého listování manuálem. I když toho není zrovna málo, snažic se ovládnout vše, co MRS nabízí. Cokoli vynecháte, nutně sníží efektivitu vašeho programování - a to by byla škoda.

Malá rada - usilujte o to, aby vám vstřebávané detaily jako střípky zapadaly do vynořující se celkové představy o koncepci programu. Když pochopíte, CO všechno MRS umí a JAK to dělá, už to nezapamenete. Už budete vždy vědět, že můžete udělat to či ono, i když si zrovna nevzpomenete, co máte zmáčknout. Tlačítko, které vám vypadne z paměti, si připomenete pohledem do manuálu. Bez vědomí koncepce, celostního pohledu, se s čímkoli zachází hůř, neboť smysl uniká. Přeji dobrý assemblerový start vám i paní MRS (neb Mrs. je "english spoken" dáma).

MRS v08E (Ultrasoft)


 

Info dle BUSYho:

Stalo sa to davno, pradavno, este v roku 1986 v Ustave aplikovanej kybernetiky (UAK) v Bratislave, ked este socialistickemu svetu vladol tajomny mikropocitac PMD-85. Niekolko ludi tu vytvorilo za pomoci pocitaca MO8X pre tento PMD-85 jeden program, ktory bol este tajomnejsi ako samotny mikropocitac na ktorom vznikol. Program dostal meno este tajomnejsie ako bol program samotny, nazvali ho Memory rezident system (MRS). A co vlastne tento tajomny program s este tajomnejsim nazvom robil ? Jeho ucel bol este tajomnejsi ako jeho nazov. Program predstavoval komplexne integrovane prostredie pre pisanie, kompilovanie a odladovanie programov v assembleri. Teda nieco, co sa v tej dobe na osobnych mikropocitacoch len tak nevidelo !
   Tajomnou hrou osudu sa programatori z UAK-u rozhodli, ze urobia tento program aj pre mikropocitac ZX Spektrum. A tak este v tom istom tajomnom roku, jedneho este tajomnejsieho dna 8.10.1986, dopadla tvrda rana osudu na GENS a MONS, dovtedy najpouzivanejsie programy pre pisanie programov v asembleri. MRS (verzie V01, V02 a V03) vytvorili spominanym programom GENSu a MONSu neprekonatelnu konkurenciu...
   MRS sa usilovne siril spektristickym svetom, az sa dostal dokonca aj na Matematicko-fyzikalnu fakultu Univerziny Komenskeho (MFF UK). Tam sa nasli sikovni programatori, ktori ho mierne vylepsili. A tak dna 23.3.1987 svetlo spektristickeho sveta uzrela verzia MRS.V64.2.
   Ale to som uz mal ZX Spektrum aj ja a MRS sa dostal aj ku mne. A hned som ho aj zacal pouzivat. Razom boli prec tie stare krasne a tajomne romanticke casy ked som tvoril taketo este tajomnejsie strojakove versiky: 33 0 0 17 0 64 1 0 27 237 176 201. Ale nelutujem. Konecne som mohol plnou parou vplavat do tajomnych hlbin asemblera, este tajomnejsieho ako tie versiky.
   Vzdy ked bolo MRS nahrane v pameti, citil som sa ako ryba vo vode. Obsah pameti som skumal, prezeral trojakym sposobom, disasembloval, modifikoval, no skratka vzdy uplne rozvrtal. A co bolo hlavne v tej pameti ? No predsa (okrem ineho) vzdy aj samotne MRS ! A tak ani samotne MRS neuslo mojej pozornosti. Skumal som ho, prezeral trojakym sposobom, disasembloval, modifikoval, no skratka vzdy som ho uplne rozvrtal. A tak sa stalo, ze som ho zacal rozne menit a vylepsovat. A do tajomneho MRS zacali pribudat moje este tajomnejsie upravy.
   Ako plynul spektristicky cas, postupne vznikali verzie MRS 04 az MRS 09. Verziu MRS 08E distribuovala firma Ultrasoft a verziu MRS 09 zase Perpetum. Nejake verzie MRS (nie vsak moje) potom neskor zaciatkom roku 1989 distribuovala aj Mlada fronta v spolupraci so Zenitcentrom, centrom mladeze, vedy a techniky SZM. MRS si usilovne dobyval svet, dokonca sa velmi zapacil jednemu mojmu kamaratovi komodoristovi (Hell bytes) az tak velmi, ze sa rozhodol si nieco podobne naprogramovat na svojom C64.
   Zatial posledna je verzia MRS 09/2


  [29 kB]
[Stáhnuto   6 × - naposledy dne:  6. 12. 2023, 21:21 ]
 
  [162 kB]
[Stáhnuto   4 × - naposledy dne:  6. 12. 2023, 21:21 ]

  [153 kB]
[Stáhnuto   5 × - naposledy dne:  6. 12. 2023, 21:21 ]

MRS a BetaDisk

    Disková verze MRS se skládá z těchto souborů:
  • "MRS09/1B" ..... úvodní basic na spuštění diskové verze
  • "cmrs09-1" .... "drajvr" pro obsluhu disketové jednotky
  • "cmrs09-2" .... samotný kód MRS 09 (společný pro disk i mgf)

Nahrání programu

Disková verze se nahrává příkazem LOAD "MRS09/1B" z prostředí TR-DOSu nebo jinak, pokud máte na disku instalován některý z mnoha rozšířených bootovačů. Do paměti se postupně nahrají subory "MRS09/1B", "cmrs09-1", "cmrs09-2" a vzápětí se zobrazí informace, kde seženete manuál. Po stisknutí jakékoli klávesy proběhne inicializace systému, která nastaví proměnné MRS (a vymaže úvodní informaci, vždyť přece pamět je vzácná).

Popis nových diskových operací

Všechny diskové operace v MRS 09/1B univerzálně pracují s jednou nebo čtyřmi mechanikami s 3.5 nebo 5.25 palcovými disketami. Tyto diskové operace jsou realizovány přímým voláním diskových obslužných rutin do stínové romky Betadisku.

Práce s diskem

Diskové rozšíření umožňuje archivovat na disketě zdrojově texty, dělat s nimi všechny běžné operace jako u kazety (nahrát do paměti, uložit na disk, přihrát nový text ke starému, smazat text na disketě), vypisovat katalog diskety. Diskové funkce v zádném případě nezastínují povodně kazetové funkce. Proto v diskové verzi MRS 09/1B normálně fungují i vsechny kazetové funkce, ktere jsou v kazetové verzi.

Zdrojové texty se na disketu ukládají jako standardní subory, ale s připonou "Z". Tím je zajištěna odlišnost od případných stejnojmenných souborů typu "C" - bytes. Také všechny diskové příkazy k nahrávání a ukládání zdrojových textů (kromě "ldc") implicitně předpokládají, že se jedna o soubor s příponou "Z". Ale pokud máte náhodou zdrojový text uložený na disketě koncovkou "B" (např. jste jej překopirovali z kazety nebo se jedna text z nižší verze MRS), je možné nahrát i takový zdrojový text. Slouzí k tomu příkaz "ldc". Pro nahrávání zdrojových textů z nižších verzí MRS platí přesně to samé, co platilo iu kazetových příkazů - bezprostředně po nahrání textu příkazem "ldc" je třeba tento text přetransformovat příkazem "PRE". Ještě malé upozornění ohledně zdrojových textů z MRS 08E (disková verze distribuovaná Robisoftem): Vzhledem k drobné chybičku při ukládání zdrojového textu na disketu v této verzi není možné takto uložené zdrojové texty nahravat přímo příkazem "ldc". Chcete-li si do MRS 09/1B přenést text nahrany na disketě z MRS 08E, můžete to udělat těmito dvěma způsoby: 1. Musíte tento text nejprve nahrát do MRS 08E, odtud jej ulozit na kazetu a poté z ní normálně nahrát příkazy "loa" a "PRE". 2. Druhy způsobem řeší tento přenos inteligentněji - opravou té malé chybičky při ukládání textu na disketu v MRS 08E. Po nahrát MRS 08E skočit do basice, tam se za řádku 25 nachází příkaz SAVE. No a celá oprava té chybičky spočívá v tom, že číslo 51180 v tomto příkazu přepíšete na 51179. Takto opraveno MRS 08E bude fungovat přesně stejně jako původně s chybou až na ten malý a jediný rozdíl, že zdrojové texty jím uložené na disketu se dají bez problémů nahrát do MRS 09/1B příkazy "ldc" a "PRE". Doporučuji vám novým basičům takto opraveného MRS 08E (s cislem 51179) přepisat stary, ve kterém je cislo 51180 abyste to nemuseli dělat pokaždé, když si chcete z něj do MRS 09/1B převést nějaký zdrojový text.
Ale teď už přejděme ke konkrétním operacím:

Nové příkazy pro diskové operace v editoru:

 svd  - save zdrojového textu. Zdrojový text se uloží na
      disketu pod zadaným Max. 8 znakovým jménem s připonou "Z".
      Není-li jméno zadané, automaticky se vezme jméno z
      informačního řádku editoru.
       Pokud soubor pod tímto jménem a připonou "Z" už existuje,
      tehdy se vypíská dotaz "Owerwrite ? (Y)". Po stisknutí
      klávesy "Y" se starý soubor přepíše novým.

 ldd  - load zdrojového textu. Jméno je nepovinné a je-li
      uvedeno, musí být od příkazu odděleno jednou mezerou. Pokud
      jméno není uvedeno, automaticky se sem dosadí jméno z
      informačního řádku editoru.

 ldc  - speciální příkaz, který je určen k nahrávání
      zdrojového textu ktery je na disku ulozen s priponou "C".
      Jinak pron platí totéž jako pro příkaz "ldd".
       Příkazy svd,ldd,ldc jsou vybaveny souborovou orientací
      podobně jako příkazy sav,loa.

 mrd jméno - připojení nového zdrojového textu do starého. Jméno
      musí být vždy zadané. Tímto příkazem lze přihrát
      pouze texty vytvořené ve verzi MRS 09.

 era jméno - smazání zdrojového textu ulozeného na disku. Jméno
      je třeba vzdy zadat. Maze subory s koncovkou "Z".

 dev  - nastavení aktuální disketové jednotky. Jako jméno
      musíte napsat pouze "a,b,c,d" (např. dev a, dev b). Pokud
      odeslete příkaz bez jména, nastavit se jako aktuana jednotka
      "A". Nesnažte se definovat diskové jednotky, které nemáte
      připojeno, TR DOS to neumí identifikovat a může dojít k
      "zamrznutí" programu. Nadefinování aktuální jednotky
      plati pro všechny příkazy až do další následující změny
      děv.

 cat - katalog disku. Jedině on není realizován výpisem v
      rastru 8*4. Je pouze jednoduše volána služba v ROM. Pokud by
      byl katalog realizován pomocí vlastní rutinky, diskový
      drajver by se musel zvětšit minimálně o 300 B, což je
      neunosně.

 dos - skok do TR-DOSu. Tato funkce se hodí, když potřebujete
      přihrát do paměti nějaký blok CODE, případně provést SAVE
      CODE. Z TR-DOSu se do MRS dostanete standartním příkazem
      RETURN.

Souborova orientace u příkazů ldd a ldc funguje trosku jinak jako u příkazu loa. Pokud v příkazu loa nezadáte jméno zdrojového textu, nahra se první, ktery se najde. Jenze pokud se nahravá z diskety tak nahrávat první soubor, který se najde nemá velký vyznam. Proto pokud v příkazech ldd a ldc nezadáte jméno souboru, toto jméno se vezme z informačního řádku editoru a bude se nahravat soubor s tímto jménem.
Tento typ práce se jménem má takový prakticky význam: Nahrajete si nějaký zdrojový text příkazem ldd. Tehdy se jméno v hlavičce tohoto souboru přenese do informačního řádku editoru. V textu podělte pár velkých úprav, poté text přeložíte, přeložen program spusťte - a zjistěte, že ty úpravy nadělaly více škody jako uzitku. Cíze chcete text dostat do původního stavu. Jenze úpravy byly dost velké na to, aby se vám je chtělo odstraňovat. V této situaci stačí vběhnout do dialogového režimu editoru, odeslat příkaz ldd bez jména. No a tehdy se nahraje ten text, který jste nahravali naposledy - a to je právě náš text, ale bez těch úprav, které nadělali více škody než užitku.

Jméno souboru napsané v příkazech svd, ldd, ldc, mrd, era se už nijak syntakticky nekontroluje - prostě vezme se fyzicky 8 bajtů a ty se přímo zapisují do jména souboru (při ukládání souboru na disketu) nebo se tímto jménem porovnávají (při hledání souboru).

Tento způsob práce se jménem přináší s sebou tuto změnu:
Nemůžete lokálně přesměrovat aktuální zařízení jako v basicu:
SAVE "b:jméno"
- chcete-li soubor uložit jinam, musíte použít příkaz "dev b" a teprve potom "svd jméno".

Chybová oznámení diskových operací

Jako každá operace, i disková se nemusí vždy vydat celkem podle našich představ. Možná chybová hlášení jsou tato:

"mem full" ... pokus o nahrání zdrojového textu ktery se nevejde do paměti. Může nastat při ldd, ldc, mrd. "No found" ... pokus o práci se souborem, který se na disku nenachází. Může nastat v těchto příkazech: ldd, ldc, mrd, era. "IO error" ... jakákoli jiná disková chyba. "No space" ... na disku jiz není místo pro ulození souboru. Může to mít dvě příčiny: a) na disku už není dostatek volných sektorů b) počet souborů na disku je 128 (což je maximum)

Vzhledem k způsobu zjišťování o jakou chybu vlastně jde se nedají od sebe odlišit jednotlivé chyby popisované pod "IO error". Proto při výši kterékoli z nich se vypíská tento chybový oznámení.

Několik závěrečných upozornění a rad:

Pokud překládáte nějaký text, samotný systém MRS se chrání před přepsáním. Ale drajver pro diskové operace chráněn není, proto musíte vy sami dát pozor na to, abyste si ho nepřepisovali. Samotné MRS je schopno fungovat i bez tohoto drajveru, ale nepojedou diskové operace. Kdyby se vám drajver náhodou přece jen poškodil, přepsal, stačí jej pouze nahrát z diskety znovu příkazem LOAD "cmrs09-1" CODE. Už jej nemusíte inicializovat.
MRS 09 při vykonávání původních funkcí potřebujících pro svou činnost normální romku nekontroluje zda je tato přistrankovaná. Proto si na toto musíte dát pozor sami. Jedna se o load-save na kazetu s voláním rutin do romky (při "spd" 2 a více), skok do basicu ("mon", CS+Q) a body přerusení (přikaz I a krokování pomocí C).
Úvodní zaváděcí basic je nutný pouze pro nahrání MRS 09 a první inicializaci diskového drajveru, po spuštění MRS 09 ho můžete klidně smazat. Při použití příkazu "svd" si můžete všimnout, že dochází k přepisování posledního mikrořádku obrazovky. Není to zádná chyba, tato oblast se používá jako pomocný bufr.

Poznámka k uložení ovladače tiskárny

Drajver pro Vaši tiskárnu je nejvhodnější umístit do printer buferu od adresy 23296 nebo můžete snížit RAMTOP basicu a do takto vytvořeného místa umístit svoji rutinku. Doporučuji nesnižovat RAMTOP o více než 100 B. Dá se sice jít i níž, ale někde kolem adresy 23450 (závisí na počtu a rozsahu basicových řádků) je hranice, kdy už BETADISK odmítá fungovat.

No a na závěr jedno malé doporučení

(ktere pokud nechcete vůbec nemusíte dodržovat):

Celý program MRS 09 si nejprve překopirujte na pracovní disketu, na kterou si budete ukládat i zdrojové texty. Originální disketu si pečlivě odlozte do suflika a vytáhněte ji odtud jen a pouze tehdy, pokud se vám poskodí nahrávka na pracovní disket.

Stránka byla uľ zobrazena: 102

Aktualizováno: 31. 1. 2022, 19:47



     psp-ikona.gif, 2 kB    Text to HTML converter and formatter  builder_ikonka.gif, 3 kB
           
  Best Old Games      kabelmanie.gif, 2 kB  root_ico.gif, 2 kB  český diskmag pro počítače ZX Spectrum a kompatibilní
synapse.gif, 4 kB   TuningPC.cz - Vše pro tuning a casemodding vašeho PC        pspad88x31.gif  delphix.gif, 1 kB
sgatlantis_88x31_3.jpg, 4 kB  atlan.gif, 22 kB  arkon.jpg, 12 kB  ico_abeceda.gif, 888B  blog.idnes.cz   
           
       
 
  torry_logo.gif, 4 kB  

Stránka načtena za 0.00322 sekund.