Enterprise Forever  |  :HUN  |  Programozás  |  Topic: Assembly programozás
Author Topic: Assembly programozás  (Read 35818 times)« previous next »
Z80System
EP lover
*
Offline Offline

Hungary

Posts: 514


OS:
Windows 7
Browser:
Microsoft Internet Explorer 8.0


View Profile WWW
New Posts
« Reply #165 on: 2009.September.12. 00:53:36 »

egyebkent az SDCC az nem egy assembler, hanem C fordito, igy lehet C- ben tolni EP- re... csak iszonyat nagy kodokat general... de mindegy a nagyon unalmas inicializalo reszeket akkor is abba irom, megha 1 szegmens ra is megy az inicializalasi kodokra ... es float- okat hasznalni vegkepp nem szabad, muveletenkent dobja a kilobytokat ra ... Smiley Smiley nem is ertem, nincs ebbe az SDCC -be call, vagy mi Huh?


Logged

Z80 System - Flying Time Studio

Enterprise Forever
« Reply #165 on: 2009.September.12. 00:53:36 »

 Logged

geco
EP addict
*
Offline Offline

Hungary

Posts: 1170


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile
New Posts
« Reply #166 on: 2009.September.12. 08:43:26 »

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 Huh?

hat hiaba, en ezeket ma sosem fogom megerteni...
Van egy másik megoldás, Basicben is meg lehet írni egy gépi kódú betöltőt, ami betölt egy fejléc nélküli file-t a megadott címre, majd betöltés után meghívni, ha ott térsz vissza RET-tel, akkor simán visszatér  a Basic progidhoz
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile WWW
New Posts
« Reply #167 on: 2009.September.12. 09:09:57 »

Van egy másik megoldás, Basicben is meg lehet írni egy gépi kódú betöltőt, ami betölt egy fejléc nélküli file-t a megadott címre, majd betöltés után meghívni, ha ott térsz vissza RET-tel, akkor simán visszatér  a Basic progidhoz
Ezzel viszont az a gond, hogy akkor csak BASIC-ből fog működni a program, ill. előfordulhat, hogy bizonyos gép verziókkal fog működni. (Sok gyári programmal is ez okozta az angol/német gép problémát!)
Lehetséges még a 2-es fejlécű felhasználói áthelyezhető modul, de olyat ember nem írt még a pár gyári programon kívül és ezzel szintén a BASIC-hez láncoljuk magunkat.
Logged


Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile WWW
New Posts
« Reply #168 on: 2009.September.12. 09:30:51 »

az exos fejlesztoi nem ismertek azt a szitut, hogy betolt/futtat/kilep Huh?
Akkoriban a számítástechnika aktuális fejlettségi szintje ez volt: betölt, futtat, kikapcsol.
Még reset sincsen a Spectrumon, C64-en és még egy csomó más gépen se. C64-en legalább kikapcsoló volt
Ehhez képest az EP a maga reset gombjával már király különösen, hogy kétféle reset módot ismer, amihez hasonlót én még nem láttam más gépen (kivéve a TVC, de az igen közeli rokon ), még a PC se tudja!
És az EXOS már lehetőséget adott arra, hogy kilépéskor vagy reset gomb megnyomásakor visszatérj pl a BASIC-hez, úgy hogy közben megmaradtak a betöltött bővítők, ramdisk, változó beállítások, stb. (gyakorlati használatát bemutatta István)
Kár, hogy az EP-re készült programok 99% nem használta ki ezeket a lehetőségeket, és csak hideg indítással lehetett kilépni belőlük. Ezért is készült az EXOS 2.3 ami jobban ragaszkodik az életéhez, és ha lehet, akkor hidegindítás helyett a bejelentkező képhez ugrik.
Logged


Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile WWW
New Posts
« Reply #169 on: 2009.September.12. 11:57:20 »

Ez már egy remélhetőleg jobb változat:
A JP 1000H helyére kell CALL, és akkor ESC-re rámegy a kilépésre.
Logged


Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile WWW
New Posts
« Reply #170 on: 2009.September.12. 11:58:35 »

Nekem ez nagyon tetszik, abba ne hagyd!!!  ds_icon_wink
Egyetértek, nagyon jó!!!
Logged


geco
EP addict
*
Offline Offline

Hungary

Posts: 1170


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile
New Posts
« Reply #171 on: 2009.September.12. 13:11:47 »

Akkoriban a számítástechnika aktuális fejlettségi szintje ez volt: betölt, futtat, kikapcsol.
Még reset sincsen a Spectrumon, C64-en és még egy csomó más gépen se. C64-en legalább kikapcsoló volt
Kár, hogy az EP-re készült programok 99% nem használta ki ezeket a lehetőségeket, és csak hideg indítással lehetett kilépni belőlük. Ezért is készült az EXOS 2.3 ami jobban ragaszkodik az életéhez, és ha lehet, akkor hidegindítás helyett a bejelentkező képhez ugrik.
Kapott is szegény kikapcsológombom a C64-esen rendesen Cheesy, csoda, hogy nem az adta meg magát, hanem a táp. Cheesy
De hála neked, az új programok/átiratok már EXOS kompatibilisek. Wink
Logged

IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux (Suse)
Browser:
Konqueror 3.5.9


View Profile
New Posts
« Reply #172 on: 2009.September.13. 17:34:53 »

Ezzel viszont az a gond, hogy akkor csak BASIC-ből fog működni a program, ill. előfordulhat, hogy bizonyos gép verziókkal fog működni. (Sok gyári programmal is ez okozta az angol/német gép problémát!)
Lehetséges még a 2-es fejlécű felhasználói áthelyezhető modul, de olyat ember nem írt még a pár gyári programon kívül és ezzel szintén a BASIC-hez láncoljuk magunkat.

Esetleg még olyan bővítőt lehetne írni, amely betölt egy megadott nevű file-t a memóriába, és futtatja (melegindítás nélkül) Smiley

A JP 1000H helyére kell CALL, és akkor ESC-re rámegy a kilépésre.

Javított változat:
  * d.com (12.43 KB - downloaded 53 times.)
  * d.s (1.85 KB - downloaded 47 times.)
Logged

endi
EP addict
*
Offline Offline

Hungary

Posts: 1028


OS:
Windows XP
Browser:
Opera 9.80


View Profile WWW
New Posts
« Reply #173 on: 2010.May.02. 13:43:01 »

Volt már szó itt a fórumon arról, hogy bizonyos gépeken az IM2 megszakítás címének vétele hibás eredményt ad, mert az alsó byte-ban valami "zaj" van. (Ilyen volt az én gépem is, nem is futottak az im2-t használó játékok.)
Na most tudna valaki olyat csinálni hogy kiiratja egy file-ba vagy tga/bmp képre ezt a zajt? Tök kíváncsi lennék hogy néz ki. Smiley
Lehet hogy ezek az EP-k valódi véletlenszám generátorral rendelkeztek. Shocked)
Logged


Attus
EP lover
*
Offline Offline

Hungary

Posts: 887


OS:
Linux
Browser:
Firefox 3.6.3


View Profile
New Posts
« Reply #174 on: 2010.May.02. 20:54:28 »

Volt már szó itt a fórumon arról, hogy bizonyos gépeken az IM2 megszakítás címének vétele hibás eredményt ad, mert az alsó byte-ban valami "zaj" van. (Ilyen volt az én gépem is, nem is futottak az im2-t használó játékok.)
Az én gépem is ilyen volt, a BAM és janó féle átratokból elég sok nem is futott emiatt a gépemen.
Mondjuk nem ért túl nagy veszteség velük. ds_icon_mrgreen
Ezért is csináltam teljes 256 bájtos im2 táblát mindig. A profik által csinált spectrum programok is teljes tabellát csináltak, nem véletlenül.
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows
Browser:
Opera 9.80


View Profile WWW
New Posts
« Reply #175 on: 2010.May.02. 21:22:22 »

Ezért is csináltam teljes 256 bájtos im2 táblát mindig. A profik által csinált spectrum programok is teljes tabellát csináltak, nem véletlenül.
Vagy vissza kell rakni IM1-re, es megsporoljuk a tablat
Logged


Attus
EP lover
*
Offline Offline

Hungary

Posts: 887


OS:
Linux
Browser:
Firefox 3.6.3


View Profile
New Posts
« Reply #176 on: 2010.May.02. 21:37:49 »

Vagy vissza kell rakni IM1-re, es megsporoljuk a tablat
smt045
Logged

Zozosoft
EP addict
*
Online Online

Hungary

Posts: 5610


OS:
Windows XP
Browser:
Firefox 3.6.3


View Profile WWW
New Posts
« Reply #177 on: 2010.June.12. 11:11:21 »

Ez megválaszolta a következőnek szánt kérdésemet: mitől lassul be brutálisan az LDIR, ha az utasítás kódja a videó memóriába kerül. Naivan eddig azt hittem, csak egyszer olvassa be a Z80  ds_icon_redface és így akkor megúszhatóak a várakozások.
De így akkor egyértelműen az jön ki, hogy minden esetben gyorsabb a kiírt LDI LDI LDI... sorozat, mint az LDIR. Persze bizonyos mennyiség felett elég memória pazarló ez a módszer
És van még egy módszer, ami memória takarékosabb, és még gyorsabb is mint az LDI-s, a POP-PUSH, itt egy félképernyő (TEXT 80) scrollozásra van próbálkozás:
Code
SPSCROLL:
               LD HL,4000H          
               LD DE,4000H-9*80+20  
               LD A,198              
               CALL SPSCROLL1        
               LD HL,4000H-9*80      
               LD DE,4000H+189*80+20
               LD A,9              
SPSCROLL1  
               LD (SPCEL+1),DE      
               LD (SPCOUNT+1),A      
               LD (SPSAVE+1),SP      
SPKEZD:        
               LD SP,HL              
               POP BC                
               POP DE                
               POP HL                
               POP IX                
               POP IY                
               EXX                  
               POP BC                
               POP DE                
               POP HL                
               POP AF                
               EX AF,AF'            
               POP AF                
               LD (SPKEZD2+1),SP    
SPCEL:          LD SP,4000H-9*80+20  
               PUSH AF              
               EX AF,AF'            
               PUSH AF              
               PUSH HL              
               PUSH DE              
               PUSH BC              
               EXX                  
               PUSH IY              
               PUSH IX              
               PUSH HL              
               PUSH DE              
               PUSH BC              
               LD HL,40              
               ADD HL,SP            
               LD (SPCEL2+1),HL      
 
SPKEZD2:        LD SP,4000H
               POP BC
               POP DE
               POP HL
               POP IX
               POP IY
               EXX
               POP BC
               POP DE
               POP HL
               POP AF
               EX AF,AF'
               POP AF
SPCEL2:         LD SP,4000H-9*80+20
               PUSH AF
               EX AF,AF'
               PUSH AF
               PUSH HL
               PUSH DE
               PUSH BC
               EXX
               PUSH IY
               PUSH IX
               PUSH HL
               PUSH DE
               PUSH BC
               LD HL,80
               ADD HL,SP
               LD (SPCEL+1),HL
               LD HL,(SPKEZD2+1)
               LD BC,80-20
               ADD HL,BC
SPCOUNT:        LD A,200
               DEC A
               LD (SPCOUNT+1),A
               JR NZ,SPKEZD
SPSAVE:         LD SP,0
               RET

Önmagában a POP-PUSH kb 2x gyorsabb mint az LDIR, viszont gyakran kell variálni az SP-el, ami elviszi a megtakarítás nagy részét Nem tudom, lehetne-e ezen még optimalizálni valamit?
Logged


IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux 64 bit (Suse)
Browser:
Firefox 3.5.4


View Profile
New Posts
« Reply #178 on: 2010.June.12. 11:24:57 »

És van még egy módszer, ami memória takarékosabb, és még gyorsabb is mint az LDI-s, a POP-PUSH, itt egy félképernyő (TEXT 80) scrollozásra van próbálkozás:

Képernyő scrollozására gyorsabb megoldás lehetne az LPT-ben átírni a video címet, és akkor csak a belépő pixeleket kell a memóriába írni az egész mozgatása helyett. Igaz, így bonyolultabb a pixel adatok címzése, és ez a megoldás nem kompatibilis az EXOS videokezelőjével (ha annak a képernyőjét próbálod scrollozni).
Logged

IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux 64 bit (Suse)
Browser:
Firefox 3.5.4


View Profile
New Posts
« Reply #179 on: 2010.June.12. 11:28:29 »

És van még egy módszer, ami memória takarékosabb, és még gyorsabb is mint az LDI-s, a POP-PUSH, itt egy félképernyő (TEXT 80) scrollozásra van próbálkozás:

Ilyen megoldást használtak egyébként az ATF-ben is Smiley
Logged

Enterprise Forever
« Reply #179 on: 2010.June.12. 11:28:29 »

 Logged
Tags:
Enterprise Forever  |  :HUN  |  Programozás  |  Topic: Assembly programozás

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.185 seconds with 26 queries.
Google visited last this page Yesterday at 03:10
Follow ep4ever_news on Twitter