Welcome, Guest. Please login or register.


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

Offline geco

  • EP addict
  • *
  • Posts: 5430
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.3 Firefox 3.5.3
    • View Profile
Re: Assembly programozás
« Reply #150 on: 2009.September.11. 23:18:33 »
IstvanV a nagy varazslo.... hat ezt meg hogy csinaltad ? Voltak a kodban abszolut ugrasok... meg minden ...

De ha mar igy van, akkor azt tudod hogy esc utan miert nem jon vissza a rendszer ? ASMON- ban siman visszater. BASIC- ban miert nem ?
van egy tippem, kimentette az emulátorral a 100h-a program végéig, és készült elé egy fejléc :)
Az EXOS 5 -ös fejléccel rendelkező programok betöltése után egy melegindítás történik,vagy inicializálás, vagy mi :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #151 on: 2009.September.11. 23:22:13 »
Hmmm.... ez igy tenyleg tok egyszeruen hangzik... persze ha ismered az emut es az exost... es az a tomorites dolog ... az mi volt ?... valakinek nincs ep- n helye ... :)  vagy mi ?


Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #152 on: 2009.September.11. 23:23:44 »
Nemtom hogyan kell, endi... Futtathatot regen is csak 2X csinaltam osszesen ... SOMB1, SOMB2 :)  Valahova masik cimre kellett forditani, es valamilyen fejlecet tett ele az EP fordito, es valami masik szegmenseket kellett lapozgatni, mar nem emlekszek, es annyit nem er az egesz, hogy igy vackoljak vele, csak egy effekt, annak is csak az alapja... neked nem lehet gond asmon- ban elinditani ... tenyleg csak annyi mint amit oda leirtam ... elindit asmon, megnyomkod amit odairtam, es kesz...

A geco által leírt fejlécen kívül még arra kell figyelni, hogy a program elején be kell állítani a veremmutatót (pl. 100H-ra), mert egyébként az első EI vagy EXOS hívásnál lefagy :)
Ha a program nem fér el a 100H-3FFFH területen, akkor a második és esetleges harmadik szegmens az FFH szegmens végén található táblázatból olvasható ki (FFH:3FFCH: 0. lap, 3FFDH: 1. lap, stb.); a megfelelő szegmenseket az 1.-3. lapokra be kell lapozni, mert egyébként ezek indításkor meghatározatlanok.
Melegindítási címet resethez az FFH:3FF8H címre lehet beírni, és ennek a 0. lapon kell lennie. A hívásakor hasonlóak a feltételek, mint a program indításakor, és szintén be kell állítani a veremmutatót, lapozást, stb.

Offline Ep128

  • EP addict
  • *
  • Posts: 1673
  • Country: hu
  • OS:
  • Windows Vista Windows Vista
  • Browser:
  • Firefox 3.0.6 Firefox 3.0.6
    • View Profile
    • Honlapom
Re: Assembly programozás
« Reply #153 on: 2009.September.11. 23:27:42 »
Nekem ez nagyon tetszik, abba ne hagyd!!!  ;-)
(Esetleg nem lehetne a piros helyett kék színt használni? A csillagok inkább kékes fehérek, sem mint pirosas fehérek.  :) De ez csak a hülye fejem kötekedése, meg nem is tudhatom, mit szeretnél majd kihozni az egészbõl, szóval ne hallgass rám!  :lol: )

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #154 on: 2009.September.11. 23:28:27 »
van egy tippem, kimentette az emulátorral a 100h-a program végéig, és készült elé egy fejléc :)

Valóban :oops: De kiegészíthettem volna melegindítási cím beállításával, ami a BASIC-hez vagy az EP logóhoz térne vissza; át is írom, és a szegmenseket is rendesen le kellene foglalni.
A memóriát a 100H-7FFFH területről mentettem ki; ebből a hasznos rész valójában csak az 1000H-2127H és 6000H-7FFFH, de ezt a nem túl elegáns megoldást a tömörítés elrejtette :) :oops:

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #155 on: 2009.September.11. 23:41:26 »

Az van a kek szinnel ( persze hogy en is azt szerettem volna ), hogy ep- n abbol osszesen csak 3 arnyalat van, mig pirosbol es zoldbol 7 arnyalat. szal ha kek, akkor kevesebb mint fele annyi szinarnyalat... de kiprobaltam zolddel es sargaval ( piros + zold = sarga ) es erdekes modon az emuban eleg ronda a zold is es a sarga is ...

mintha csak a pirosat hozna szepen az emu ...

aztan lehet h az eredeti EP- nek is ilyen ronda zold es sarga szinei voltak, de nem tom kiprobalni, mert sajna nem tok betolteni vas EP- be...

hat abbahagyni nem akarom, de ( oke- oke fel kellett mindent eleveniteni, de) azert csak majd egy hete irtam mar ezt, es ezzel is szerencsesnek mondhatom magam, hogy megtehettem, de a jovoben azert nem foallasban fogok EP- zni, csak ugy neha- neha, holnaptol visszaterek a regi kerekvagasba, melozok ezerrel, es neha egy kicsit EP fejlesztgetek, de kikerekitem ezt valami kerekebb dologga, es latok neki amajd a kovetkezo effektnek is, de itt nem napokrol, meg csak nem is hetekrol beszelunk ...



Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #156 on: 2009.September.11. 23:47:38 »

Es ugy siman visszaterni a basic- be, vagy ahonnan elinditottuk a programot, ugyanugy mint asmonba, nem lehet, IstvanV ?

Ugye egy ret hatasara az asmon csilingel egyet, es visszater siman, es folytathatod vele a munkat, ha figyeltel hogy milyen szegmensekre pakoltal a programodban, akkor az asmon sertetlen marad visszateres utan.

Ezt nem lehet megcsinalni barmivel, csak asmonnal ? ( mer akko nekem asmon a baratom )





Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #157 on: 2009.September.12. 00:13:20 »
Ez már egy remélhetőleg jobb változat:
  * d.com (12.43 kB - downloaded 155 times.)
A memóriát rendesen lefoglalja, resetre kilép a BASIC-be (ha van ilyen, egyébként az Enterprise logóhoz), és nincs tömörítve.
Forráskód:
  * d.s (1.85 kB - downloaded 164 times.)
« Last Edit: 2009.September.12. 00:28:37 by IstvanV »

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #158 on: 2009.September.12. 00:19:04 »

esc megnyomasos ( ret - tel visszateres ) kerdes tovabbra is fennall: olyat csak asmonban lehet ?

Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #159 on: 2009.September.12. 00:24:08 »
Es ugy siman visszaterni a basic- be, vagy ahonnan elinditottuk a programot, ugyanugy mint asmonba, nem lehet, IstvanV ?

Ugye egy ret hatasara az asmon csilingel egyet, es visszater siman, es folytathatod vele a munkat, ha figyeltel hogy milyen szegmensekre pakoltal a programodban, akkor az asmon sertetlen marad visszateres utan.

Ezt nem lehet megcsinalni barmivel, csak asmonnal ? ( mer akko nekem asmon a baratom )

EXOS 5 (.com) típusú programból nem lehet "visszatérni", de az egyszerűen megoldható, hogy a program pl. BASIC-be kilépjen:

Code: ZiLOG Z80 Assembler
  1. warmreset:
  2.         ld      sp, 0100h
  3.         ld      a, 0ffh
  4.         out     (0b2h), a
  5.         ld      c, 60h
  6.         exos    0
  7.         ld      de, basiccmd
  8.         exos    26
  9.         ld      a, 01h
  10.         out     (0b3h), a
  11.         ld      a, 6
  12.         jp      0c00dh
  13.  
  14. basiccmd:
  15.         defb    5
  16.         defm    "BASIC"

Itt természetesen a "BASIC" helyett más parancs, pl. EXDOS, ASMON, stb. is használható. Érdemes megfigyelni az exos 26 utáni részt, amely az Enterprise logo képernyőhöz lép ki, ha előtte a BASIC hívás nem volt sikeres.

A fenti rutin automatikusan lefut a reset gombra ezzel a kóddal:

Code: ZiLOG Z80 Assembler
  1.         ld      a, 0ffh
  2.         out     (0b2h), a
  3.         ld      hl, warmreset
  4.         ld      (0bff8h), hl

Esc billentyűre csak akkor, ha azt a program figyeli, és a billentyű lenyomásakor ráugrik. :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #160 on: 2009.September.12. 00:33:57 »

aham... valami ilyesmi remlett... es ennek szerinted mi lehet az oka... hogy nem csinaltak ilyen "low level call -t" szamitva arra, hogy a hivott program majd baratsagosan hasznalja a dolgokat, es ret- tel vissza akar terni... az asmon- ban ugye van ilyen... a "g" parancs. namost lenne az exosnak egy ilyen funkcioja, hogy exos 666, ami raugrana call- lal a de- be rakott cimre ... es kesz. es akkor ez a funkcio, akar egy fejlecet is kaphatott volna ( 666 fejlec ), es akkor betoltene a progit es raugrana ugyanugy mintha 5- os lenne, de "varna vissza" a vezerlest... es a basic (ha abbol hivtad) onnan folytatodna ahonnal meghivta a programot ... vagy ha exdos- bol is hasznalnak, akkor az exdos folytatodna... asmonban is mukodne ez is, nem csak a "g"... stb ...

me nincs ilyen ? :)

mint a dos- os progik... azok is visszatertek... a hivashoz ...


Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #161 on: 2009.September.12. 00:37:17 »
aham... valami ilyesmi remlett... es ennek szerinted mi lehet az oka... hogy nem csinaltak ilyen "low level call -t" szamitva arra, hogy a hivott program majd baratsagosan hasznalja a dolgokat, es ret- tel vissza akar terni... az asmon- ban ugye van ilyen... a "g" parancs. namost lenne az exosnak egy ilyen funkcioja, hogy exos 666, ami raugrana call- lal a de- be rakott cimre ... es kesz. es akkor ez a funkcio, akar egy fejlecet is kaphatott volna ( 666 fejlec ), es akkor betoltene a progit es raugrana ugyanugy mintha 5- os lenne, de "varna vissza" a vezerlest... es a basic (ha abbol hivtad) onnan folytatodna ahonnal meghivta a programot ... vagy ha exdos- bol is hasznalnak, akkor az exdos folytatodna... asmonban is mukodne ez is, nem csak a "g"... stb ...

me nincs ilyen ? :)

mint a dos- os progik... azok is visszatertek... a hivashoz ...

Tulajdonképpen meg lehet oldani azt is, hogy a program visszatérjen, de akkor nem 5-ös fejlécű programot, hanem pl. 6-os fejlécű rendszerbővítőt kell írni, ami valamivel bonyolultabb. Így lehet például új EXOS parancsokat is létrehozni.

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #162 on: 2009.September.12. 00:40:47 »
tehat akkor azt lazan meg lehet csinalni, hogy vmi elindul ilyen rendszerbovitokent, es akkor lefut, tezsi a dolgat es esc- re meg kiterminalja magat mint rendszerbovitot, es ha mondjuk ez basic- bol lett hivva,  es mindenre vigyaztunk, akkor sertetlen basic jon vissza, programmal, mindennel ?

Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Assembly programozás
« Reply #163 on: 2009.September.12. 00:45:18 »
tehat akkor azt lazan meg lehet csinalni, hogy vmi elindul ilyen rendszerbovitokent, es akkor lefut, tezsi a dolgat es esc- re meg kiterminalja magat mint rendszerbovitot, es ha mondjuk ez basic- bol lett hivva,  es mindenre vigyaztunk, akkor sertetlen basic jon vissza, programmal, mindennel ?

Vissza lehet térni RET utasítással, de a bővítő a memóriában marad (és később újra meg lehet hívni pl. EXOS paranccsal). Törölni és a memóriát felszabadítani csak a ZozoTools :RL parancsával lehet.

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Microsoft Internet Explorer 8.0 Microsoft Internet Explorer 8.0
    • View Profile
Re: Assembly programozás
« Reply #164 on: 2009.September.12. 00:49:57 »
hat az ugy megint nem tetszik... azert nyomott esc- t mert ki akar lepni... nem akarja rezidens progikent ... de hat van ep- re cp/m, meg ilyesmi... abba tuti nem igy van... az exos fejlesztoi nem ismertek azt a szitut, hogy betolt/futtat/kilep ???

hat hiaba, en ezeket ma sosem fogom megerteni...


Z80 System