Forum

Z PMD 85 Infoserver

:: späť na začiatok témy :: späť na zoznam tém ::
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  24.11.2015 14:48:05
Predmet  Predmet ::  Re: použití podprogramu Transf (EC00)monitoru
Tak to blahopřeji, ale bez volání funkce, která upraví pointer na konec programu, bych to raději nezkoušel, proměnné by přepisovaly program.
 
Správa
Autor  Autor ::  Jarda páv
Poslaná  Poslaná ::  24.11.2015 17:04:25
Predmet  Predmet ::  Re: použití podprogramu Transf (EC00)monitoru
Tak jsem to vyzkoušel i instantní varianatu a tady jsou výsledky:

Basicovy program v ROM modulu

var.1
uložím do ROM modulu na pozici ROM 0 (2800h) vlastní program, získaný provedením DUMp memory v simulátoru (od adresy 2400h - zacatek basicivého programu velikost - kam až je dávám 1024)
na další pozici v ROM modulu (2C00h) kratký "zavaděč" ve strojáku. Jedná se o volání podprogramu monitoru TRANSF (na adrese EC00h) CALL EC00
DW 2800 - odkud z ROM modulu
DW 03FF - délka
DW 2400 - kam v RAM (zač. basicu)
CALL 2295
RST 0
překlad je CD 00 EC 00 28 FF 03 00 24 CD 95 22 C7 a dorovnat na 1024 byte)

na PMD vyskočím z BAsicu do Monitoru
udělám JOB 2C0003FFB000 - kde přenesu zavaděč do oblasti RAM pro uživatelské ROM (B0000h) a spustím. Zavaděč přetahne basicový program z oblasti ROM0 (2800h) a provede měkký reset s náběhem Basicu

var. 1a
mám vše v ROM jako v předchozím popisu.
Nevyskočím z Basidu, jen dám příkaz ROM0

Nevýhoda varianty 1 a 1a je, že mám pro každý program samostatný zavaděč v samostatném prostoru

Var.2
zavaděč dám před basicový program (ten se posune o 13 byte) a to celé dám do ROM.
Zavaděč se upraví tak, aby přenesl data (basicový program) od adresy 2800h + délka zavaděče t.j. 280Dh
CALL EC00
DW 280D - odkud z ROM modulu (2800h pro pozici ROM0)
DW 02FF - délka (skutečná délka basic + zavaděč)
DW 2400 - kam v RAM (zač. basicu)
CALL 2295
RST 0
překlad je CD 00 EC 0D 28 FF 02 00 24 CD 95 22 C7 a pak navazuje basicový program

zavolám ROM0 z Basicu a je to
ROM0 přenese to celé do oblasti uživatelských ROM (B0000h), spustí zavaděč, ten z EPROM přenese basicový program do RAM od 2400h. Délka je nastavena v zavaděči.

Var 2a
dám do Eprom to co ve var. 2
Vyskočím z Basicu a dám JOB 2800000DB000

Výhodou je , že můžu přenášet libovolně dlouhé programy, nevýhodou je, že mám natvrdo nastavenou adresu pro program, t.j. když ho budu chtít dát do jiné pozice v EPROM, musím přepsat adresu v zavaděči. Var 2a - nepřenáší se zbytečně 1024 byte do RAM B0000
:: späť na začiatok témy :: späť na zoznam tém ::