PSN

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Djb (Diskusia | príspevky)
(pridany nadpis poznamky a zmena slova bytami)
Djb (Diskusia | príspevky)
(+kompatibilne)
Riadok 3: Riadok 3:
== PSN - formát snapshot súboru PMD 85 Emulátora ==
== 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 [[Emulátor|PMD 85 Emulátor]] preto, aby sa do súboru mohli odpamätávať aj stavy všetkých základých periférií.
+
PSN súbor reprezentuje "snímku" ''(z angl. snapshot)'' obsahu a stavu počítača [[PMD 85]] a [[Kompatibilné s PMD 85|kompatibilných]] v danom momente, kedy bol snapshot vytvorený. Tento typ súboru vznikol pre [[Emulátor|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:
Š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:

Verzia zo dňa a času 14:24, 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 a kompatibilných 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