PSN

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Djb (Diskusia | príspevky)
(pokračovanie po obede :))
Djb (Diskusia | príspevky)
(pridany nadpis poznamky a zmena slova bytami)
Riadok 82: Riadok 82:
* ak {{Kbd|val < 16384}} - pakovaný ROM Monitor
* ak {{Kbd|val < 16384}} - pakovaný ROM Monitor
* ak {{Kbd|val > 32768}} - ROM Monitor v čistej forme
* ak {{Kbd|val > 32768}} - ROM Monitor v čistej forme
-
<br />Umiestnenie ROM Monitora je dané modelom počítača. Ak ROM Monitor nie je v snapshote prítomný, použije sa aktuálne zvolená ROM pre daný model počítača.<br /></ref>
+
<br />Umiestnenie ROM Monitora je dané modelom počítača. Ak ROM Monitor nie je v snapshote prítomný, použije sa aktuálne zvolená ROM pre daný model počítača.
 +
<br /></ref>
|-
|-
| 22
| 22
Riadok 220: Riadok 221:
| 56 ...
| 56 ...
| ...
| ...
-
| jednotlivé bloky v takom poradí a forme, ako to je nastavené bajtami [20] až [29] hlavičky.
+
| jednotlivé bloky v takom poradí a forme, ako to je nastavené bytami [20] až [29] hlavičky.
|}
|}
 +
=== poznámky: ===
<references/>
<references/>

Verzia zo dňa a času 14:21, 2. december 2009


PSN - formát snapshot súboru PMD 85 Emulátora

PSN súbor reprezentuje "snímku" (z angl. snapshot) obsahu a stavu počítača PMD 85 v danom momente, kedy bol snapshot vytvorený. Tento typ súboru vznikol pre PMD 85 Emulátor preto, aby sa do súboru mohli odpamätávať aj stavy všetkých základých periférií.

Štruktúra súboru je binárna a úvodná hlavička o dĺžke 56 bytov obsahuje všetky informácie o momentálnom type a stave počítača, tak ako popisuje nasledujúca tabuľka:

offset dĺžka význam
0 3 text "PSN" - PMD 85 SNapshot
3 1 verzia Snapshotu - teraz 1
4 2 offset, kde začínajú bloky pamäti - teraz 56
6 1 model počítača:
7 1 príznaky prerušenia:
  • 0. bit : iff - log.1 = povolené prerušenie
  • 1. bit : ei1 - log.1 = bola vykonaná inštr. EI
  • 2. bit : ei2 - log.1 = po nasled. inštrukcii povol prerušenie
  • 3. bit : halt - log.1 = procesor je v stave HALT
  • 4. bit : inta - log.1 = bolo akceptované prerušenie
  • bity 5-7 sú nastavené na log.0 a vyhradené pre budúce využitie
8 2 AF
10 2 BC
12 2 DE
14 2 HL
16 2 PC
18 2 SP
20 2 dĺžka ROM monitora[1]
22 2 dĺžka 16kB RAM bloku v priestore 0000h až 3FFFh[2]
24 2 dĺžka 16kB RAM bloku v priestore 4000h až 7FFFh[2]
26 2 dĺžka 16kB RAM bloku v priestore 8000h až BFFFh[2]
28 2 dĺžka 16kB RAM bloku v priestore C000h až FFFFh[2]
30 1 system PIO - CWR (F7)
31 1 system PIO - zvuk, LED, stránkovanie (F6)
32 1 system PIO - klávesnica (F4)
33 1 GPIO - CWR (4F)
34 1 GPIO - port C (4E)
35 1 GPIO - port B (4D)
36 1 GPIO - port A (4C)
37 1 GPIO - povolenie prerušení
  • 0.bit : port A na vstup
  • 1.bit : port A na výstup
  • 2.bit : port B
  • bity 3-7 : nastavené na log.0 a vyhradené pre budúce využitie
38 1 IMS-2 - CWR (7F)
39 1 IMS-2 - port C (7E)
40 1 IMS-2 - port B (7D)
41 1 IMS-2 - port A (7C)
42 1 IMS-2 - povolenie prerušení
  • 0.bit : port A na vstup
  • 1.bit : port A na výstup
  • 2.bit : port B
  • bity 3-7 : nastavené na log.0 a vyhradené pre budúce využitie
43 1 čítač 0 - CWR (5F)
44 1 čítač 0 - init hodnota L (5C) - ak (CWR & 16) != 0
45 1 čítač 0 - init hodnota H (5C) - ak (CWR & 32) != 0
46 1 čítač 1 - CWR (5F)
47 1 čítač 1 - init hodnota L (5D) - ak (CWR & 16) != 0
48 1 čítač 1 - init hodnota H (5D) - ak (CWR & 32) != 0
49 1 čítač 2 - CWR (5F)
50 1 čítač 2 - init hodnota L (5E) - ak (CWR & 16) != 0
51 1 čítač 2 - init hodnota H (5E) - ak (CWR & 32) != 0
52 1 USART - CWR (1F)
53 1 USART - Sync1 (1F) - ak (CWR & 3) == 0
54 1 USART - Sync2 (1F) - ak (CWR & 131) == 0
55 1 USART - Command (1F)
56 ... ... jednotlivé bloky v takom poradí a forme, ako to je nastavené bytami [20] až [29] hlavičky.

poznámky:

  1. dĺžka ROM Monitora

    Keďže dĺžka ROM monitora nemusí byť pre niektoré modely konštantná, a pri rozpakovaní je potrebné poznať cieľovú dĺžku, 15.bit hodnoty označuje, či je blok pakovaný:

    • 15.bit = log.0 - ROM Monitor je uložený v komprimovanej forme
    • 15.bit = log.1 - ROM Monitor je uložený v čistej forme

    Teda nech val = [20], potom:

    • ak (val & 0x7FFF) > 16384 - nedovolené hodnoty
    • ak val = 0 - ROM Monitor nie je v snapshote prítomný
    • ak val < 16384 - pakovaný ROM Monitor
    • ak val > 32768 - ROM Monitor v čistej forme


    Umiestnenie ROM Monitora je dané modelom počítača. Ak ROM Monitor nie je v snapshote prítomný, použije sa aktuálne zvolená ROM pre daný model počítača.


  2. 2,0 2,1 2,2 2,3
    dĺžka RAM bloku
    • 0 - blok nie je v snapshote prítomný
    • 1 - celý blok je vyplnený daným bytom
    • < 16384 - pakovaný blok
    • 16384 - nepakovaný blok "v čistom tvare"
    • > 16384 - nedovolené hodnoty

kompresia

Bloky sú pakované jednoduchou RLE kompresiou. Formát kompresovaných dát je nasledovný:

Flag | Data | Flag | Data | Flag | Data | ...

Pričom:

  • Flag = 0x00 až 0x7F => 1 byte ako Data pre 3 až 130 rovnakých bytov
  • Flag = 0x80 až 0xFF => blok 1 až 128 nepakovateľných bytov ako Data