10 komentářů u „Programy

  1. Libor L.A.

    Protože se na to někdo ptal, doplnil jsem (stále nedokončenou) verzi komentovaného výpisu PMD BASICu verze 2A. Přiznám se, že intuitivně nechápu, jak tato verze pracuje s řetězci. A když to nechápu, moc se mi do toho nechce..

  2. mmartinka

    Trochu tápu v jaké sekci se zeptat :), hledám rutinu na detekci jednotlivých modelů PMD. A mám pocit že jsem to viděl na vašich stránkách. Byla by možnost to třeba přidat do sekce „Jak na to“. Děkuji

    1. Libor L.A.

      Určitě jsem to řešil celkem komplexně u Lemmings (vč. rozpoznání Consul 2717) ale pohledám a doplním.

    1. Libor L.A.

      Takto propracovaný systém nemám, a asi nemá smysl, abych vymýšlel podobný.

      Moje rutina pouze uměla podle toho, jak se chová přepínání AllRAM režimu nastavit optimální režim stránkování. Ta moje procedura vlastně ani explicitně negenerovala typ stroje. Pro systém stránkování RAM ve hře Lemmings to tak stačilo, a tak jsem toto zjednodušené řešení použil. Musel bych tam stejně doplnit podmínky a podle toho generovat výstupní kód typu PMD-85. Tímto ale nerozliším verze 1 a 2. Musel bych si pomoci testováním obsahu ROM (například adresa 8DDBh). Takže já bych osobně použil Romanovo řešení.

      Pro samotné rozlišení rodin verze 1 a 2 používám v zavaděčích něco podobného:

      setmgf: lxi h,8ddbh     ; detekce typu PMD a modifikace
              mov a,m         ; čtecí rutiny pro vstup byte
              ani 40h         ; z MGF
              rz
              shld ldbyte+1
              ret
      
      ldbyte: jmp 8b6ch       ; vektor LOAD BYTE z MGF
      

      Procedura setmgf se zavolá na začátku zavaděče a případně modifikuje vektor načtení bajtu z MGF. Čtení bajtu z MGF pak řeším výhradně přes proceduru ldbyte. Jde to dělat mnoha způsoby, já spíše vždy volím takové řešení, aby mi na konci testu zůstaly v registrech takové hodnoty, které použiju pro navazující úlohu. Třeba v tomto případě hodnota 8DDBh je jednak místem, ze kterého z ROM čtu bajt, určující typ PMD a jednak tuto hodnotu případně uložím instrukcí SHLD jako nový skokový vektor pro čtení bajtu z MGF.

    1. Libor L.A.

      Díky moc. Kouknu se. Mohlo by to opravdu nakopnout další práce. Sice jsem pro odreagování začal dělat analýzu hry Magician’s Course – ale to počká. Trailblazer má v podstatě všechny problémy vyřešeny, teď už je to otázka času, než doladím zbytky a pak nějaké to testování. Ale PoP bych v tom případě asi fakt oprášil..

  3. Libor L.A.

    Ediční plán pro zbytek roku 2018

    1) dokončit definitivně Trailblazer (asi už jsem přišel na to, jak obejít problémy s 8253-kou)
    2) dokončit Funny Fruits (zbývá jen menu)
    3) a nejžhavějším kandidátem na další komplexní projekt je … JetSetWilly

    Ano avizovaný Magician’s Curse je sice ve stádiu 60% rozpracovaného zpětného překladu s doplněným komentářem, ovšem myšlenka na realizaci JSW je silná. Láká mě vyzkoušet v praxi efekt dvojitého vykreslovacího buferu. A také je to výzva – i8080 s efektivním taktem 1,7MHz versus Z80 na 3,5MHz.

    1. Libor L.A.

      Prolog mě fascinoval už od první zmínky v našich časopisech (asi ve VTM?). Tehdy jsem nechápal. Ale taky jsem tehdy nechápal, jak funguje BASIC. Takže proč ne.

      Ale popravdě, až dokončím JSW, chystám se spíše uklízet a vydat opravné edice mých předchozích děl. Přeci jen je všude dost chyb. První díla jsem ladil jen na emulátoru a na reálném hardware to není ono.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.