Uživatelské nástroje

Nástroje pro tento web


unicard:emulation



Emulované periferie

  • řízené CFG soubory
    • FDD
    • QD
    • RAM (SROM/SRAM)
    • EMM
    • HTTP server
    • SIO/USARTShell
    • PS/2 myš
  • řízené ROM soubory
    • MZ-1R23(B)
    • MZ-1R24
  • trvale emulované
    • ALU (AM9511, AM9512, SHARP ALU)
    • GDG, PCG, 80-ti znakový režim (SUC a K&P)
    • RTC
    • PSG (audio, DAC)

Periferie řízené CFG soubory


Význam konfiguračních souborů

     Chování Unicard je možné ovlivnit pomocí textových konfiguračních souborů, umístěných na SD kartě v adresáři \unicard\. Konfigurační soubory můžeme rozdělit do čtyř skupin:

  • nastavení emulace podporovaných periferií
  • konfigurace komunikačních rozhraní Unicard
  • spouštění Unicard Manager prostřednictvím zavaděče MZFLoader
  • ostatní

Popis konfiguračních souborů

Nastavení emulace podporovaných periferií

fd<0..3>.cfg

Pokud existuje a obsahuje cestu a název existujícího souboru s obrazem diskety, je tento obraz vložený do emulované disketové mechaniky, v opačném případě se mechanika jeví jako prázdná. Rozsah portů emulovaných disketových mechanik fd<0..3>.cfg je 0xD8-0xDF, bootovací je mechanika fd0.

  • Obsah souborů fd<0..3>.cfg je následující:
    fd0.cfg: CPM80.dsk
    fd1.cfg: Tutecham.dsk
    fd2.cfg: Lemmings.dsk
    fd3.cfg: Kyrandia.dsk
  • Všechny emulované mechaniky mají vloženou disketu:
    fd0([A]:): CPM80.dsk
    fd1([B]:): Tutecham.dsk
    fd2([C]:): Lemmings.dsk
    fd3([D]:): Kyrandia.dsk
  • Obsah souborů fd<0,1,3>.cfg je následující:
    fd0.cfg: CPM80.dsk
    fd1.cfg: Tutecham.dsk
    fd2.cfg: –odstraněn–
    fd3.cfg: Kyrandia.dsk
  • Mechanika fd2([C]:) je prázdná:
    fd0([A]:): CPM80.dsk
    fd1([B]:): Tutecham.dsk
    fd2([C]:): –prázdná–
    fd3([D]:): Kyrandia.dsk
  • Obsah souboru fd1.cfg je následující:
    fd0.cfg: –odstraněn–
    fd1.cfg: Tutecham.dsk
    fd2.cfg: –odstraněn–
    fd3.cfg: –odstraněn–
  • Kromě mechaniky fd1([B]:) jsou všechny prázdné:
    fd0([A]:): –prázdná–
    fd1([B]:): Tutecham.dsk
    fd2([C]:): –prázdná–
    fd3([D]:): –prázdná–
  • Všechny soubory fd<0..3>.cfg byly odstraněny:
    fd0.cfg: –odstraněn–
    fd1.cfg: –odstraněn–
    fd2.cfg: –odstraněn–
    fd3.cfg: –odstraněn–
  • Všechny mechaniky jsou všechny prázdné:
    fd0([A]:): –prázdná–
    fd1([B]:): –prázdná–
    fd2([C]:): –prázdná–
    fd3([D]:): –prázdná–
fd0disabled.cfg

Pomocí prázdného souboru fd0disabled.cfg můžeme zakázat emulovanou mechaniku fd0([A]:), přestože existuje soubor fd0.cfg se správnou cestou k souboru s obrazem diskety.

  • Konfigurační soubor fd0.cfg pro disketovou mechaniku fd0([A]:) odkazuje na obraz diskety obsahující CPM.
  • Disketová mechanika fd0([A]:) je připojená a emuluje vloženou bootovací disketu s CPM.
  • Po zapnutí počítače proběhne úspěšný boot CPM z emulované mechaniky FD0([A]:).
  • Pokud do adresáře \unicard\ nakopírujeme prázdný soubor fd0disabled.cfg, boot z mechaniky FD0([A]:) zakážeme.
V zobrazení parametrů Unicard pomocí http serveru vidíme stav mechaniky fd0.
qd.cfg

Pokud existuje a obsahuje cestu a název existujícího souboru s obrazem Quick disku, je tento obraz vložený do emulované QD mechaniky. V případě neexistence souboru se QD mechanika neemuluje. Současná verze firmware již emuluje i zápis.

  • Soubor qd.cfg neexistuje.
  • Obraz Quick disku není připojený, Quick disk není emulován.
  • Příkazy pro obsluhu Quick disku nic neprovádí.
  • Soubor qd.cfg existuje a obsahuje cestu k souboru s obrazem Quick disku.
  • Obraz Quick disku je připojený, Quick disk je emulován.
  • Příkazy pro obsluhu Quick disku fungují.

Quick disk můžeme používat i v BASICu:

  • Soubor qd.cfg existuje a obsahuje cestu k souboru s obrazem Quick disku.
  • Obraz Quick disku je připojený, Quick disk je emulován.
  • Quick disk lze v BASICu 1Z-016 používat.

Použité porty:

RW 0x74/0xF4 - SIO channel A data
RW 0x75/0xF5 - SIO channel B data
RW 0x76/0xF6 - SIO channel A control
RW 0x77/0xF7 - SIO channel B control
Upozornění

Pro Sharp MZ-1500 jsou změněná čísla portů pro práci s Quick diskem z původních hodnot platících pro Sharp MZ-700 a Sharp MZ-800 0xF4-0xF7 na nové hodnoty 0x74-0x77. Pro práci s emulovaným Quick diskem na Sharp MZ-1500 je třeba mít pro programy využívající QD rutiny z ROM upravenou ROM a pro práci s BASICem upravený BASIC. V případě odpojeného QD SIO bude k dispozici firmware se standardními čísly portů i pro Sharp MZ-1500.

Emulovaná QD mechanika umožňuje i spouštění vícediskových programů a her. Pokud má soubor připojeného obrazu Quick disku jméno filename_A.mzq nebo filename-1.mzq (na předposledním místě názvu souboru je znak '_' nebo '-'), pak Unicard po ukončení čtení z emulované QD mechaniky a následném vypnutí motoru inkrementuje po 3 sekundách poslední znak jména souboru ('A'→'B','B'→'C','1'→'2','2'→'3'…) a pokud obraz Quick disku s tímto jménem existuje, připojí ho místo původního obrazu Quick disku. Tímto způsobem lze řetězit i větší počet obrazů. Pokud již další obraz Quick disku s vyhovujícím jménem souboru neexistuje, použije se znovu obraz uvedený v souboru qd.cfg. Po výzvě k výměně Quick disku v emulované QD mechanice je tedy nutné nejméně 3 sekundy počkat, aby Unicard provedla připojení dalšího obrazu emulovaného Quick disku a pak teprve potvrdit výměnu Quick disku.

  • Obrazy programu nebo hry na dva Quick disky musíme mít správně pojmenované Flappy-A.mzq a Flappy-B.mzq. Připojíme Flappy-A.mzq jako emulovaný Quick disk.
  • Je připojený 1. obraz Quick disku Flappy-A.mzq a QD je emulovaný.
Po spuštění hry z Quick disku se spustí první části hry Flappy-A.mzq.
Po zastavení motoru QD a dotazu na další vložený Quick disk se po 3 sekundách automaticky připojí 2. obraz Quick disku Flappy-B.mzq.
Nyní můžeme potvrdit vložení 2. Quick disku Flappy-B.mzq a hra se spustí.
Pokud máme obrazy Quick disku správně pojmenované, můžeme spouštět programy i hry na více Quick disků.

ramdisc.cfg

Pokud existuje a obsahuje cestu a název existujícího souboru s obrazem RAM (SROM/SRAM) disku, je emulace zapnutá. Unicard podporuje emulaci na souborech těchto velikostí: 64k,128k,256k,512k,1M,2M,4M,8M,16M. Pokud je obraz souboru pro emulaci menší než 64kb, Unicard emulaci vypne.

RAM disk můžeme používat i v BASICu:

  • Soubor ramdisc.cfg existuje a obsahuje cestu k souboru s obrazem RAM disku.
  • Obraz RAM disku je připojený, RAM disk je emulován.
  • RAM disk lze v BASICu 1Z-016 používat.

Použité porty pro jednotlivé režimy emulace:

Režim RD:
=========
-W 0xE9 - set bank (0x00-0xFF) for MZ-700 or MZ-800 (not for MZ-1500!)
RW 0xEA - I/O data, addr++
-W 0xEB - set addr, Data(D0-7) = LoBYTE, Addr(8-15) = HiBYTE (on Unicard LoBYTE only)
R- 0xF8 - reset addr and page
-W 0xF8 - set HiBYTE addr

Režim SROM/SRAM:
================
R- 0xF8/0xA8 - reset addr
R- 0xF9/0xA9 - read data, addr++
-W 0xFA      - write data, addr++

emm.cfg

Pomocí souboru o velikosti 640kB emuluje PIO-3034 EMM 640kB disk, který podporuje HuBASIC pro MZ-700 (jede i na MZ-800 a MZ-1500), PIO EMM používá porty 0x00-0x03, Unicard podporuje maximálně jednu EMM mechaniku.

EMM disk můžeme používat i v BASICu:

  • Soubor emm.cfg existuje a obsahuje cestu k souboru s obrazem EMM disku.
  • Obraz EMM disku je připojený, EMM disk je emulován.
  • EMM disk lze v HuBASICu používat.

Použité porty:

RW 0x00 - read/set LowBYTE addr
RW 0x01 - read/set MidBYTE addr
RW 0x02 - read/set HiBYTE addr
RW 0x03 - read/write data, addr++

Konfigurace komunikačních rozhraní

network.cfg

Obsahuje v textové podobě nastavení parametrů sloužících ke konfiguraci sítě pro zpřístupnění HTTP Serveru, v závorce jsou uvedené přednastavené hodnoty:

HWADDR
IPADDR
NETMASK
GATEWAY

= <addr>
= <addr>
= <addr>
= <addr>

(hash z UniqueID procesoru v rozsahu 00:1C:EE:XX:XX:XX)
(192.168.1.10)
(255.255.255.0)
(192.168.1.20)

Parametry sítě můžeme vypsat přes HTTP Server rozhraní nebo pomocí rozhraní USARTShell programem UniUSARTShell. DHCP není podporováno.

Nastavení souboru network.cfg

IPADDR=192.168.1.111
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

ushelldisabled.cfg

Pokud existuje v adresáři /unicard/ushelldisabled.cfg, tak je USB k dispozici pro Sharpa jako emulované SIO kanál B porty 0xB0-0xB3, v opačném případě běží komunikační rozhraní USARTShell.

RW 0xB0 - Z80SIO channel A data
RW 0xB1 - Z80SIO channel A control
RW 0xB2 - Z80SIO channel B data
RW 0xB3 - Z80SIO channel B control

MZFLoader

mzfloader.cfg

Konfigurační soubor obsahující cestu k MZF, který se má spustit zavaděčem MZFLoader - většinou obsahuje cestu a název souboru s Unicard Managerem. Zavaděč MZFloader je obvykle spouštěn z emulovaného SRAM disku nebo Quick disku. Unicard po resetu nastaví počítači dočasně vlastní SRAM disk s MZFloaderem a ten je natažen a spuštěn. Po zavedení MZFloader prohlédne soubor mzfloader.cfg a spustí program v něm uvedený (obvykle Unicard manager). Pak teprve nastaví RAM (SRAM) disk podle obsahu příslušného konfiguračního souboru. Tato funkcionalita poměrně dobře funguje na MZ-1500, ale na MZ-800 není zcela spolehlivá. Někdy pomůže vstoupit do monitoru klávesou M (nebo M+Reset) a MZFloader ze SRAM disku spustit přes příkaz EB. Pokud nepotřebujete aktivně využívat RAM disk, můžete do něj přímo vložit mzfloader.ram, což funguje lépe, ale je potřeba si dát pozor na přepsání RAM disku například při spuštění BASICu nebo CP/M. Pokud nepotřebujete aktivně využívat Quick disk, je ideální startovat MZFloader z něj - do zařízení QD: vložte mzfloader.mzq. Spouštění zavaděče MZFloader z QD: je spolehlivé na všech platformách. Pokud potřebujete jen spouště MZF programy a hry, je to prozatím doporučované řešení. Současně, pokud máte vloženou disketu v některé z virtuálních floppy, použijte Q+Reset pro přímé načtení QD místo spuštění FD, které má jinak vyšší prioritu.

Nastavení konfiguračního souboru pro Sharp MZ-800 a UniManager mgr800.mzf

/unicard/mgr800.mzf

Nastavení konfiguračního souboru pro Sharp MZ-1500 a UniManager mgr1500.mzf

/unicard/mgr1500.mzf

Ostatní

mouse.cfg

Přítomnost tohoto souboru zapne emulaci PS/2 myši na portu 0x71. Normálně programy s podporou myši používají druhý JoyPort na portu 0xF1. Protože ho není možné vypnout a emulace Unicard na stejném portu by s ním kolidovala, je emulace Unicard přesunuta na port 0x71. Pokud chceme tuto emulaci využít, musíme mít v programech nebo hrách opravený původní port na emulovaný.


Periferie řízené ROM soubory


ROM karty

     Unicard emuluje i periferie, které se nekonfigurují ani neaktivují obsahem nebo přítomností CFG souboru. Jsou to periferie, jejichž emulace se aktivuje přítomností binárních obrazů ROM v adresáři \unicard\

MZ-1R23(b)

Pokud do adresáře \unicard\ nakopírujeme soubor mz1r23.rom (mz1r23b.rom) obsahující binární obraz ROM KANJI karty MZ-1R23(mz1r23b.rom), bude Unicard tuto kartu emulovat na portech 0xB8-0xB9.

MZ-1R24

Pokud do adresáře \unicard\ nakopírujeme soubor mz1r24.rom obsahující binární obraz ROM slovníkové karty MZ-1R24, bude Unicard tuto kartu stejně jako v případě MZ-1R23 emulovat na portech 0xB8-0xB9.


Trvale emulované periferie


Matematické koprocesory

     K 08/2018 emuluje Unicard 3 typy matematických koprocesorů. AM9511(I8231,CI8231..), AM9512(I8232,CI8232..) a koprocesor pro výpočty v SHARP BASIC číselné reprezentaci interně nazvaný SHARP ALU. ALU při zadání příkazu nahodí bit BUSY a po dokončení ho vrátí na nulu. Rutina, která čte data tak musí počkat, až ALU není BUSY. Není třeba blokovat wait ani nic podobného. Komunikace i podporované matematické funkce a operace jsou pro všechny typy koprocesorů podobné.

ALU

AM9511, AM9512, SHARP ALU

AM9511

  * 0x00 NOP - No Operation
  * 32-Bit Floating Point Instructions
    * 0x01 SQRT - Square Root of A
    * 0x02 SIN  - Sine of A (radians)
    * 0x03 COS  - Cosine of A (radians)
    * 0x04 TAN  - Tangent of A (radians)
    * 0x05 ASIN - Inverse Sine of A
    * 0x06 ACOS - Inverse Cosine of A
    * 0x07 ATAN - Inverse Tangent of A
    * 0x08 LOG  - Common Logarithm (base 10) of A
    * 0x09 LN   - Natural Logarithm of A
    * 0x0a EXP  - eA Function
    * 0x0b PWR  - B^A Power Function
    * 0x10 FADD - Add A and B
    * 0x11 FSUB - Substract A from B
    * 0x12 FMUL - Multiply A and B
    * 0x13 FDIV - Divide B by A
    * 0x15 CHSF - Sign Change of A
    * 0x17 PTOF, PTOD - Stack Push
    * 0x18 POPF, POPD - Stack Pop
    * 0x19 XCHF, XCHD - Exchange A and B
    * 0x1a PUPI - Push PI onto Stack
    * 0x1C FLTD	- 32-Bit Integer to Floating Point Conversion
    * 0x1D FLTS	- 16-Bit Integer to Floating Point Conversion
    * 0x1E FIXD	- Floating Point to 32-Bit Integer Conversion
    * 0x1F FIXS	- Floating Point to 16-Bit Integer Conversion
  * 32-Bit Integer Instructions
    * 0x2C DADD - 32-bit fixed point add
    * 0x2D DSUB - 32-bit fixed point substract
    * 0x2E DMUL - 32-bit fixed point multiply, lower
    * 0x2F DDIV - 32-bit fixed point divide
    * 0x34 CHSD - 32-bit fixed-point sign change
    * 0x36 DMUU - 32-bit fixed point multiply, upper
  * 16-Bit Integer Instructions
    * 0x6C SADD - Add Au and Al
    * 0x6D SSUB - Substract Au from Al
    * 0x6E SMUL - Multiply Al and Au (R=lower 32-bits)
    * 0x6F SDIV - Divide Au and Al
    * 0x74 CHSS - 16-bit fixed-point sign change
    * 0x76 SMMU - Multiply Al and Au (R=upper 32-bits)
    * 0x77 PTOS - Stack Push
    * 0x78 POPS - Stack Pop
    * 0x79 XCHS - Exchange A and B
    * 0x7f      - Push ALU1 signature '9511' onto stack

AM9512

  * 0x00 CLR - CLR status
  * 32-Bit Floating Point Instructions
    * 0x01 SADD - Add A and B
    * 0x02 SSUB - Substract A from B
    * 0x03 SMUL - Multiply A by B
    * 0x04 SDIV - Divide B by A. if exponent = 0 then R = B
    * 0x05 CHSS - Change sign of A
    * 0x06 PTOS - Push stack
    * 0x07 POPS - Pop stack
    * 0x08 XCHS - Exchange
  * 64-Bit Double Floating Point Instructions
    * 0x29 DADD - Add A and B
    * 0x2A DSUB - Substract A from B
    * 0x2B DMUL - Multiply A by B
    * 0x2C DDIV - Divide B by A, If A = 0, then R = B
    * 0x2D CHSD - Change sign of A
    * 0x2E PTOD - Push stack
    * 0x2F POPD - Pop stack
    * 0x7f      - Push ALU2 signature '8232' onto stack

SHARP ALU - BASIC 5-Byte číselný formát

  * 0x00 NOP  - No Operation
  * 0x01 SADD - Add A and B
  * 0x02 SSUB - Substract A from B
  * 0x03 SMUL - Multiply A by B
  * 0x04 SDIV - Divide B by A. if exponent = 0 then R = B
  * 0x05 CHSS - Change sign of A
  * 0x06 PTOS - Push stack
  * 0x07 POPS - Pop stack
  * 0x08 XCHS - Exchange
  * 0x10 SQRT - Square Root of A
  * 0x12 SIN  - Sine of A (radians)
  * 0x13 COS  - Cosine of A (radians)
  * 0x14 TAN  - Tangent of A (radians)
  * 0x15 ASIN - Inverse Sine of A
  * 0x16 ACOS - Inverse Cosine of A
  * 0x17 ATAN - Inverse Tangent of A
  * 0x18 LOG  - Common Logarithm (base 10) of A
  * 0x19 LN   - Natural Logarithm of A
  * 0x1a EXP  - eA Function
  * 0x1b PWR  - B^A Power Function
  * 0x2a PUPI - Push PI onto Stack
  * 0x7f      - Push ALU3 signature 'M801' onto stack

BASIC je upravený tak, aby přes SHARP ALU počítal tyto funkce:

SQR
EXP
LOG
LN
SIN (COS)
TAN
ATN
x ^ y
x * y
x / y
x + y
x - y

VGA výstup

GDG, PCG, 80-znakový režim (SUC a K&P)

Unicard odchytává veškerou komunikaci s GDG a videopamětí a emuluje grafický výstup, který posílá na VGA v plném rozlišení.

  • MZ-700 - prozatím není emulace externí periferie PCG700, jsou ale emulovány obě 80-ti znakové úpravy - Sharp Users Club (SUC) i K&P 80-column interface
  • MZ-800 - je plně emulovaná standardní funkcionalita. U japonských programů pro MZ-700 je při spouštění MZF klávesou 'J' možno nadefinovat japonskou znakovou sadu
  • MZ-1500 - je rovněž plně emulovaná grafika včetně RGB PCG, ale některé programy mají zatím na VGA výstupu Unicard grafické artefakty kvůli problémům s časováním
Na VGA výstupu Unicard MZ-700 je emulovaná SUC modifikace takže funguje 80-ti znakový režim.
U MZ-700 bez SUC hardwarové modifikace uvidíte přes kompozitní výstup klasický 40-znakový režim a v něm každý druhý znak, protože emulace SUC modifikace je funkční jen na VGA výstupu Unicard.

Ostatní

RTC

Unicard obsahuje hodiny reálného času udržované baterií. Pokud hodiny nechcete nebo nepotřebujete, nemusíte baterii instalovat. Hodiny jsou využívány souborovým systémem Unicard při vytváření nebo modifikaci souborů a jsou ovladatelné přes MZFrepo. Toho pak můžou využívat některé aplikace. Například UNIUTIL umí vyčíst čas z Unicard a nastavit ho do CP/M. To je ideální dělat automaticky při startu CP/M.

PSG (audio, DAC)

Emulace zvuku na audio výstupu, mono výstup je rozbočený na stereo. Zatím je emulován pouze výstup PSG, nikoli i8253, výstup je pouze linkový, neutáhne sluchátka. Jumpery SV2 přepínají zapojení dvou pinů čtyřpólového jacku na Samsung × Apple standard - zem je buď nejblíže kabelu nebo druhá nejbližší a vstup ten druhý, pro třípólový konektor by to mělo být jedno, zem je přes oba.

unicard/emulation.txt · Poslední úprava: 2018/10/14 22:47 (upraveno mimo DokuWiki)