Autorun
Z PMD 85 Infoserver
(begin work) |
(pridaná jedna stať a drobné úpravy) |
||
Riadok 7: | Riadok 7: | ||
Autorun programov v stojovom kóde je založený na takom princípe, že sa nahrávaním na zásobníku prepíše návratová adresa z rutiny loadovania bloku dát a tým sa nepriamo skočí na štartovaciu adresu. Tá adresa skoku do nášho programu sa musí nahrať na adresu {{Kbd|7FFBH}}. | Autorun programov v stojovom kóde je založený na takom princípe, že sa nahrávaním na zásobníku prepíše návratová adresa z rutiny loadovania bloku dát a tým sa nepriamo skočí na štartovaciu adresu. Tá adresa skoku do nášho programu sa musí nahrať na adresu {{Kbd|7FFBH}}. | ||
- | + | === príklad === | |
- | + | ||
- | Pred symbolom {{Príkaz|A7FFB}} musí byť voľný priestor pre zásobník o veľkosti 12 bytov, inak sa v prípade PMD 85-2 prepíše už nahratá časť kódu od adresy {{Kbd|7FEFH}}. | + | Nasledujúci program demonštruje asi najjednoduchší spôsob, akým je možné dosiahnuť automatické spustenie programu v strojovom kóde. V tomto prípade ide o uloženie v dvoch blokoch:<br /> |
+ | Prvý (hlavičkový) blok sa nahráva na adresu {{Príkaz|LDRSTART}}, na svojom konci prepisuje hodnotu na zásobníku a zároveň obsahuje loader druhého (hlavného) bloku, ktorý sa následne spustí. | ||
+ | |||
+ | Symbol {{Príkaz|LDRSTART}} sa musí nastaviť na takú adresu, aby symbol {{Príkaz|A7FFB}} mal po preložení hodnotu {{Kbd|7FFBH}}.<br /> | ||
+ | Pred symbolom {{Príkaz|A7FFB}} musí byť voľný priestor pre zásobník o veľkosti aspoň 12 bytov, inak sa v prípade PMD 85-2 prepíše už nahratá časť kódu od adresy {{Kbd|7FEFH}}. | ||
- | ==== Príklad: ==== | ||
LDRSTART EQU 7FD7H | LDRSTART EQU 7FD7H | ||
Riadok 35: | Riadok 37: | ||
A7FFB DW LDRSTART ''; ADRESA PRE AUTORUN LOADERA'' | A7FFB DW LDRSTART ''; ADRESA PRE AUTORUN LOADERA'' | ||
+ | |||
+ | |||
+ | Samozrejme, nie je nutné, aby sa hlavný kód dohrával loaderom, ale samotný program môže rovnako ako uvedený loader končiť "definovaním" adresy autoštartu a tak sa vlastne rovno spustí už hlavný program. | ||
[[Category:Detaily o PMD 85 a kompatibilných]] | [[Category:Detaily o PMD 85 a kompatibilných]] |
Aktuálna verzia
Autorun
"Autorun" je pojem, ktorý označuje spôsob uloženia strojového programu pre PMD 85 na magnetofónovej páske tak, že po nahratí príkazom MGLD xx nie je nutné vykonať naviac príkaz JUMP xxxx pre spustenie.
Autorun programov v stojovom kóde je založený na takom princípe, že sa nahrávaním na zásobníku prepíše návratová adresa z rutiny loadovania bloku dát a tým sa nepriamo skočí na štartovaciu adresu. Tá adresa skoku do nášho programu sa musí nahrať na adresu 7FFBH.
príklad
Nasledujúci program demonštruje asi najjednoduchší spôsob, akým je možné dosiahnuť automatické spustenie programu v strojovom kóde. V tomto prípade ide o uloženie v dvoch blokoch:
Prvý (hlavičkový) blok sa nahráva na adresu LDRSTART, na svojom konci prepisuje hodnotu na zásobníku a zároveň obsahuje loader druhého (hlavného) bloku, ktorý sa následne spustí.
Symbol LDRSTART sa musí nastaviť na takú adresu, aby symbol A7FFB mal po preložení hodnotu 7FFBH.
Pred symbolom A7FFB musí byť voľný priestor pre zásobník o veľkosti aspoň 12 bytov, inak sa v prípade PMD 85-2 prepíše už nahratá časť kódu od adresy 7FEFH.
LDRSTART EQU 7FD7H PRGSTART EQU 1500H PRGLEN EQU 2000H BLKLOAD EQU 8DC2H ORG LDRSTART ; KOD SAMOTNEHO LOADERA JC 8C40H ; PRI MGF. CHYBE SA VRAT DO MONITORA JNZ 8C40H LXI H,PRGSTART ; HL=ADRESA KAM SA BUDE NAHRAVAT LXI D,PRGLEN-1 ; DE=DLZKA BLOKU - 1 CALL BLKLOAD ; NAHRATIE PROGRAMU JC 8C40H ; PRI MGF. CHYBE SA VRAT DO MONITORA JNZ 8C40H JMP PRGSTART ; SKOC DO SAMOTNEHO PROGRAMU DS 12 ; PRIESTOR PRE ZASOBNIK A7FFB DW LDRSTART ; ADRESA PRE AUTORUN LOADERA
Samozrejme, nie je nutné, aby sa hlavný kód dohrával loaderom, ale samotný program môže rovnako ako uvedený loader končiť "definovaním" adresy autoštartu a tak sa vlastne rovno spustí už hlavný program.