OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 12:56

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 156 ]  Přejít na stránku Předchozí  1 ... 7, 8, 9, 10, 11
Autor Zpráva
PříspěvekNapsal: 17.04.2020, 22:48 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Martin1 píše:
Busy píše:
A usetri to zopar bajtov rutinky IJUMP a jeden dalsi bajt pre kazde volanie sluzieb v uzivatelskych programoch.
Pokial sa na volanie nepouzije RST xx namiesto CALL. A vtedy sa uz pomer zasadne obracia
Mas pravdu. Otazka, preco na to nepouzijes RST XX ked to mas dole, ma napadla hned ako prva :)

Pokusne som len tak narychlo napisal rozskokovu rutinku, je velmi dlha a velmi pomala (ako keby napisana vo vyssom jazyku), ale zato uchovava aj obsah flagov :)
Kód:
;; Volanie

        rst     #XX
        db      cislo_sluzby

;; Handler

        org     #XX
        push    af
        push    af
        push    hl
        push    ix
        ld      ix,#06
        add     ix,sp
        ld      l,(ix+2)
        ld      h,(ix+3)
        ld      a,(hl)
        inc     hl
        ld      (ix+2),l
        ld      (ix+3),h
        add     a,a
        add     a,low table
        ld      h,high table
        ld      l,a
        ld      a,(hl)
        ld      (ix+0),a
        inc     l
        ld      a,(hl)
        ld      (ix+1),a
        pop     ix
        pop     hl
        pop     af
        ret

table   dw      sluzba1
        dw      sluzba2
        ..      .......
Rutinka pocita s tym ze cela tabulka lezi v jednej 256-bajtovej stranke.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.04.2020, 20:14 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
Busy píše:
Pokusne som len tak narychlo napisal rozskokovu rutinku, je velmi dlha a velmi pomala (ako keby napisana vo vyssom jazyku), ale zato uchovava aj obsah flagov

Je to priblizne to iste, ako moj druhy pokus. Len si sa uchylil k dlhym indexovym instrukciam.
Nakoniec to asi po vzore Z88 vyriesim tou "trojbajtovou" tabulkou (JPxxxx pre kazdu sluzbu), ktora umozni obidva pristupy, univerzalny cez jeden vstupny bod a rychlejsi cez priamy skok do tabulky.
Kedze ziadna sluzba nepouziva tienove registre, bude vhodnejsie ich pouzit namiesto odlozenia hodnot na zasobnik.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.04.2020, 21:00 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 168
Has thanked: 25 times
Been thanked: 225 times
Martin1 píše:
Kedze ziadna sluzba nepouziva tienove registre, bude vhodnejsie ich pouzit namiesto odlozenia hodnot na zasobnik.
cim ich (nepriamo) zacne pouzivat kazda sluzba a tak ak v nich ma hlavny program nieco ulozene a zavola sluzbu, po navrate zo sluzby kruto zaplace ;]


Nahoru
 Profil  
 
PříspěvekNapsal: 19.04.2020, 21:25 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
ub880d píše:
Martin1 píše:
Kedze ziadna sluzba nepouziva tienove registre, bude vhodnejsie ich pouzit namiesto odlozenia hodnot na zasobnik.
cim ich (nepriamo) zacne pouzivat kazda sluzba a tak ak v nich ma hlavny program nieco ulozene a zavola sluzbu, po navrate zo sluzby kruto zaplace ;]

Na to sa da zvyknut. Aj Spectrum pri volani RST10 prepne na tienove registre, a vieme s tym zit.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.04.2020, 22:51 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Martin1 píše:
ub880d píše:
Martin1 píše:
Kedze ziadna sluzba nepouziva tienove registre, bude vhodnejsie ich pouzit namiesto odlozenia hodnot na zasobnik.
cim ich (nepriamo) zacne pouzivat kazda sluzba a tak ak v nich ma hlavny program nieco ulozene a zavola sluzbu, po navrate zo sluzby kruto zaplace ;]
Na to sa da zvyknut. Aj Spectrum pri volani RST10 prepne na tienove registre, a vieme s tym zit.
Ano, ale v aplikaciach budu potom sialene konstrukcie ako napriklad tato:
Kód:
0C3B D5          H0C3B   push    DE                      ;; #0C3B  uschova registru
0C3C D9                  exx                             ;; #0C3C
0C3D D7                  rst     PRTOUT                  ;; #0C3D  vypis znaku z _A
0C3E D9                  exx                             ;; #0C3E  obnoveni registru
0C3F D1                  pop     DE                      ;; #0C3F
0C40 C9                  ret                             ;; #0C40
To uz radsej nech sa v IJUMP handleri tie registre pushuju...


Nahoru
 Profil  
 
PříspěvekNapsal: 19.04.2020, 22:53 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
Keď sa teda nemusia zachovať všetky registre, tak sa to môže využiť aj takto:
Kód:
exx
pop hl
inc hl
push hl
dec hl
ld l,(hl)
sla l
sla l
ld h,tab/256
jp (hl)

tab:
exx
jp prog1
exx
jp prog2
exx
jp prog3


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 156 ]  Přejít na stránku Předchozí  1 ... 7, 8, 9, 10, 11

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz