Forum

Z PMD 85 Infoserver

:: späť na začiatok témy :: späť na zoznam tém ::
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  17.07.2009 22:09:04
Predmet  Predmet ::  Re: Autorun - Update!
Je to presne tak. Autorun programov v stojovom kóde je založený na tom, ž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:

LDRSTART EQU  7FD7H
PRGSTART EQU  1500H
PRGLEN   EQU  2000H
BLKLOAD  EQU  8DC2H

; KOD SAMOTNEHO LOADERA
         ORG  LDRSTART

; PRI MGF. CHYBE SA VRAT DO MONITORA
         JC   8C40H
         JNZ  8C40H
; NAHRATIE PROGRAMU
; HL=ADRESA KAM SA BUDE NAHRAVAT
; DE=DLZKA BLOKU - 1
         LXI  H,PRGSTART
         LXI  D,PRGLEN-1
         CALL BLKLOAD
; PRI MGF. CHYBE SA VRAT DO MONITORA
         JC   8C40H
         JNZ  8C40H
; SKOC DO SAMOTNEHO PROGRAMU
         JMP  PRGSTART

; PRIESTOR PRE ZASOBNIK
         DS   12
; ADRESA PRE AUTORUN LOADERA
A7FFB    DW   LDRSTART

Symbol LDRSTART sa musí nastaviť na takú adresu, aby symbol A7FFB mal po preložení hodnotu 7FFBH.
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.

Update:
Pred symbolom 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 7FEFH.
 
Správa
Autor  Autor ::  Vldo
Poslaná  Poslaná ::  19.07.2009 12:02:29
Predmet  Predmet ::  Re: Autorun - Update!
O tech 12ti bajtech jsem netusil... vycerpavajici vysvetleni... dekuji
:: späť na začiatok témy :: späť na zoznam tém ::