Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 254369 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #735 on: 2013.November.19. 10:47:40 »
Quote from: Z80System
Lehet, hogy van már az EXOS/EXDOS kódokból visszafordított, fordítható állomány, csak én még nem hallottam róla ?

Nincs. Ill. az EXDOS már lefordul, de valahol vannak még benne kód relatív címzések, mert ha bele van írva, akkor már nem működik :oops:

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #736 on: 2013.November.19. 10:53:00 »
Quote
Nincs. 
Pedig ha lenne, akkor sokkal több lehetőség közül választva tudnád hekkelni, nem ? Mikor helyet kell csinálni valaminek, vagy ilyesmi ...


Quote
de valahol vannak még benne kód relatív címzések

Az mi is ? Valami kódból számolt címzésre gondolsz ?
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #737 on: 2013.November.19. 10:57:03 »
Quote from: Z80System
Pedig ha lenne, akkor sokkal több lehetőség közül választva tudnád hekkelni, nem ?
Igen, ezért is ez a célkitűzés.

Quote
Az mi is ? Valami kódból számolt címzésre gondolsz ?
Igen, pl amikor mondjuk egy LD HL, szám esetén a szám az nem érték, hanem valaminek a címe a kódban. Ezeket mind meg kell találni és becimkézni, ahogy az a eredeti forrásban lehetett.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #738 on: 2013.November.19. 15:59:48 »
Quote from: Zozosoft
Nincs mondjuk Spectrumra olyan, amiben már benne van? Akkor csak azzal kéne összevetni, hogy ott mit fejlesztettek.
ááá, még a CP/M-es változatban sincs olyan... :-)
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Assembly programozás
« Reply #739 on: 2013.November.19. 21:43:58 »
Quote from: Zozosoft
Igen, ezért is ez a célkitűzés.
Igen, pl amikor mondjuk egy LD HL, szám esetén a szám az nem érték, hanem valaminek a címe a kódban. Ezeket mind meg kell találni és becimkézni, ahogy az a eredeti forrásban lehetett.

IDA nem tud ilyet? Amikor meg az epbas -al disasm-oltam eppen, ott kerultem olyan helyzetben, hogy linearis code fragment eseten, ha konstansokat teszel regiszterben, akkor adott esetben tudja a disam pl hogy az LDIR-nel a regiszterek tartalma konstans, es az opcode jellegebol persze azt is, hogy ez egy masolas, ha lenne PHASE support benne, akkor pl itt mar ossze lehetne kapcsolni, hogy amutomatice kitalalja _bizonyos_esetekben_, hogy pl egy LD HL, szam eseten az egy memoriacim lesz.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #740 on: 2013.November.19. 21:51:35 »
Quote from: lgb
IDA nem tud ilyet?
Leginkább ott is kézzel megadni az ilyeneket.
De az EXDOS az DZ80-al van, mert annak el tudtam magyarázni az EXOS hívásokat, meg a CALL után még adatbájt féle trükköt, amiből kismillió van az EXDOS-ban.
(Nem véletlenül írogattam anno lelkesen milyen disassemblerre vágnyék :oops: )

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #741 on: 2013.December.10. 09:10:30 »
Zozo!
AZ EP logóhoz kilépő rutinod (ami az LD c,40h exos 0-val kezdődik) esetében mire kell állítani az SP-t, és az RST_ADDR-t?
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #742 on: 2013.December.10. 22:02:38 »
Valahova a 0-ás lapra, annyi fontos, hogy maga a bejelentkező kép programja 200h-ra állítja majd a vermet. Ne ott legyen az újraindítás rutinunk :-)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #743 on: 2013.December.11. 11:37:49 »
van egy darab nyitott video-csatornánk, és létrehozunk egy saját lpt-t

miután már nem használjuk saját lpt-t, vissza is adtuk az exos-nak a lefoglalt video-szegmensüket, hogyan tudom visszaállítani láthatóvá a még mindig nyitott video-csatornát? gondolom előtte el kellett volna menteni a video lap lpt címét? és azt kell megmondani a Nick-nek, ugye? na de hogyan?
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #744 on: 2013.December.11. 13:29:31 »
Quote from: Povi
van egy darab nyitott video-csatornánk, és létrehozunk egy saját lpt-t

miután már nem használjuk saját lpt-t, vissza is adtuk az exos-nak a lefoglalt video-szegmensüket, hogyan tudom visszaállítani láthatóvá a még mindig nyitott video-csatornát? gondolom előtte el kellett volna menteni a video lap lpt címét? és azt kell megmondani a Nick-nek, ugye? na de hogyan?
a BFF4h címen (vagyis az FFh szegmens 3ff4h címén) lakozik az LPT címe 4000h-t hozzá kell adni, és ki kell számolni belőle 82-83h portoknak megfelelő értéket.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #745 on: 2013.December.16. 21:47:42 »
Quote from: geco
a BFF4h címen (vagyis az FFh szegmens 3ff4h címén) lakozik az LPT címe 4000h-t hozzá kell adni, és ki kell számolni belőle 82-83h portoknak megfelelő értéket.
köszi, működik

a BIAS-t hogy állíthatom be?
van ugyebár a 80h port alsó öt bitje, de mire állítsam a b5-b6-ot?
ezt megszakításból fölülírja-e az EXOS (úgy mint a 81h-t)?
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #746 on: 2013.December.16. 21:53:51 »
Quote from: Povi
ezt megszakításból fölülírja-e az EXOS (úgy mint a 81h-t)?
Igen, tehát célszerű EXOS változóval állítani, hacsak nem valami demó trükk, de akkor ott úgy sincs EXOS megszakítás :-)

Itt az EXOS rutinja:
Code: ZiLOG Z80 Assembler
  1.         ;50Hz-es videó megszakítás esetén a változók értékének
  2.         ;megfelelően 80h, 81h, és B5h portokra új érték kiküldése.
  3.                
  4. LC516:  LD      HL,(0BFE0H)     ;L-be BORD_VID
  5.                                                         ;H-ba BIAS_VID
  6.                                                         ;változó értéke
  7.         LD      A,L                     ;BORD_VID értéke A-ba
  8.         OUT     (81H),A         ;BORDER - keretszín beállítása
  9.                
  10.         ;A következő részben használt jelölések:
  11.         ; M2           a MUTE_SND változó 2. bitje
  12.         ; B7,B6,...,B0 a BIAS_VID változó 7.,6.,...,0. bitje
  13.         ; S1,S0        a SPRITE változó 1.,0. bitje
  14.         ; X értéke közömbös
  15.        
  16.         LD      A,(0BFD3H)      ;MUTE_SND - belső hangszóró
  17.                             ;engedélyezésének állapota A-ba
  18.                             ;A= X X X X X M2 X X
  19.         XOR     H                       ;BIAS_VID felső 5 bitje A-ba
  20.         AND     07H                     ;00000111b maszk
  21.         XOR     H                       ;A=B7B6B5B4B3M2 X X
  22.                             ;!!!EXOS 2.0-ban nincs:
  23.         LD      HL,(0BFEBH)     ;!!!SPRITE - külső sprite
  24.                             ;!!!szín prioritása L-be
  25.         XOR     L                       ;!!!SPRITE alsó 2 bitje A-ba
  26.         AND     0FCH            ;!!!11111100b maszk
  27.         XOR     L                ;!!!A=B7B6B5B4B3M2S1S0
  28.         RRCA                            ;A=S0B7B6B5B4B3M2S1
  29.         RRCA                            ;A=S1S0B7B6B5B4B3M2
  30.         RRCA                            ;A=M2S1S0B7B6B5B4B3
  31.        
  32.     ;!!!EXOS 2.0-ban itt nullázza a külső szín prioritás bitjeit: 
  33.     ;!!!AND     9FH                     ;A=M20 0 B7B6B5B4B3            
  34.    
  35.         OUT     (80H),A         ;FIXBIAS új értékének kiküldése
  36.         LD      HL,(0BFD1H)     ;TAPE_SND értéke L-be
  37.         LD      BC,0BFF3H       ;PORTB5 változó címe
  38.         LD      A,(BC)          ;változó értéke A-ba
  39.         XOR     L                       ;TAPE_SND változó
  40.         AND     0DFH            ;értékétől függően
  41.         XOR     L                       ;az 5. bit beállítása
  42.         LD      (BC),A          ;új érték letárolása
  43.         OUT     (0B5H),A        ;új érték kiküldése
  44.         RET
  45.  
Akárhogy rakom be, szétdobja :evil:
« Last Edit: 2013.December.16. 21:58:08 by Zozosoft »

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #747 on: 2013.December.16. 22:01:26 »
Quote from: Zozosoft
Igen, tehát célszerű EXOS változóval állítani, hacsak nem valami demó trükk, de akkor ott úgy sincs EXOS megszakítás :-)

ööö, tényleg, 28-as változó... kicsit szét vagyok esve ma :-)
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #748 on: 2013.December.17. 17:08:15 »
Zozo, a alap-példaprogramodban lévő LPT táblát hogy kell módosítani, hogy legyen még egy 36 pixelsor magas szöveges lapom, a grafikus rész alatt, hasonlóan a BASIC graphics parancsához? ha jól számolom, akkor az még pont belefér egy szegmensre, ugye?
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #749 on: 2013.December.20. 16:55:38 »
valahonnét (az újabb EXOS-ok esetében) ki lehet olvasni, hány MHz-es a gép? Ha nem, hogyan lehet megállapítani viszonylag egyszerűen?
*** Speicherplatz zu klein