Welcome, Guest. Please login or register.


Author Topic: Tegyük rendbe az EP programokat! (Read 372702 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Tegyük rendbe az EP programokat!
« Reply #300 on: 2010.April.13. 23:03:33 »
A gond az volt, hogy készült EP-s betöltő a 3000h-s címre csak azt a program indítása előtt faszán felülírja a program az attribútum konverzióhoz szükséges adatokkal, ugyanis a drágaszág megszakítás közben konvertálja őket :D

Ezen - a rendes átírás lehetőségétől eltekintve - talán lehetne javítani valamennyit, ha jól emlékszem, egy ilyen megszakításban konvertáló programban a konvertálást sikerült majdnem kétszer gyorsabbra megírni.

Quote
viszont találtam olyan megoldást is, ami tetszett, a 0000-4000h terület nem használt részét feltölt RST 00h-val a 0000h-s címen egy rutint hív meg, ami kiírja, hogy melyik cím lett meghívva Spectrum ROM-ból, meg a másik, ha elszáll a betöltés, az EXOS segítségével kiírja, hogy mi volt a bibi, a folytatás már felejtős, a végtelen ciklusban keretvillogtatás.

Ezek a betöltőben maradt debug kódrészletek ? :)
« Last Edit: 2010.April.13. 23:06:46 by IstvanV »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: Tegyük rendbe az EP programokat!
« Reply #301 on: 2010.April.14. 00:15:08 »
Szigorúan személyes véleményem a youtube -t nézve, hogy a játék fajtája is "méltó" az "átírás" minõségére.
 :smt071 :smt072
Egyik sem fekszik nekem, de lehet, hogy öregszem?  :roll:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Tegyük rendbe az EP programokat!
« Reply #302 on: 2010.April.14. 08:37:46 »
Ezen - a rendes átírás lehetőségétől eltekintve - talán lehetne javítani valamennyit, ha jól emlékszem, egy ilyen megszakításban konvertáló programban a konvertálást sikerült majdnem kétszer gyorsabbra megírni.
Hát ez elég gyorsnak tűnik, de nincs kizárva, hogy gyorsítható még :) , ha belefogok, akkor a teljes attribútum konverzió mellett teszem le a voksom, megszakításból ilyet ne csináljon :D
Ezek a betöltőben maradt debug kódrészletek ? :)
Szerintem igen :D, de mintha az összes Coorsore átiratban benne lenne, mert rémlik olyan program, ami ki is írta, hogy ZX ROM called xxxx helyen. :D

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Tegyük rendbe az EP programokat!
« Reply #303 on: 2010.April.14. 08:58:14 »
mintha az összes Coorsore átiratban benne lenne, mert rémlik olyan program, ami ki is írta, hogy ZX ROM called xxxx helyen. :D
Szerintem is benne van mindben.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Tegyük rendbe az EP programokat!
« Reply #304 on: 2010.April.14. 09:14:43 »
2000h-tól olyan Spectrum Rom rutinok vannak, amiket nem szoktak a programok hívni, vagy az is lehet, hogy ott már rutinok sincsenek. :D
Ez erõsen programfüggõ. Amelyik aktívan használja a Spectrumos "csatornakezelést" meg egyéb extrákat, ott gyakorlatilag az egész ROM kell. Ezeknél a ROM végi üres helyet, a magnó rutinokat, és esetleg a BASIC kulcsszavak táblázatát lehet kockázat nélkül felhasználni. Meg ha saját karakterkészletet használ, akkor még a karakterkészlet helye használható.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Tegyük rendbe az EP programokat!
« Reply #305 on: 2010.April.14. 10:08:20 »
Ha belendült a "programjavítás" lehetne kérni, hogy a hozzáértők vessenek egy pillantást az alapműnek számító Stunt Car Racer-re?
Az átirat működik (az oldalamról letölthető), de színkonverzió nulla, és ha jól emlékszem csak billentyűzetről irányítható, valamint a LOAD/SAVE sem működik.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Tegyük rendbe az EP programokat!
« Reply #306 on: 2010.April.14. 11:43:37 »
Ez erõsen programfüggõ. Amelyik aktívan használja a Spectrumos "csatornakezelést" meg egyéb extrákat, ott gyakorlatilag az egész ROM kell. Ezeknél a ROM végi üres helyet, a magnó rutinokat, és esetleg a BASIC kulcsszavak táblázatát lehet kockázat nélkül felhasználni. Meg ha saját karakterkészletet használ, akkor még a karakterkészlet helye használható.
Bocs, félreérthető voltam, a Spectrum ROM egy részletét tölti be csak, az a karakterkészlet 3D00h-4000h-ig, ROM rutinokat nem használ, arra gondoltam, hogy azért teszi a loadert 2000h-ra, mert ott nincs semmi lényeges a Spectrum ROM-ban, oda nem vár ugrást, így ki tudja szűrni a kis Spectrum ROM hívás ellenőrző rutinjával, hogy milyen ROM hívások vannak a programban úgy, hogy 0000-4000h területen a loader által nem használt területre RST 00h-t tesz, és 0000h-ra pedig egy JP utasítást, ami meghívja azt a rutint, ami kiírja, hogy ZX ROM CALL és, hogy hol,és mit, gondolom ez segített neki a ROM hívások fellelésében.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Tegyük rendbe az EP programokat!
« Reply #307 on: 2010.April.14. 12:06:00 »
Hát ez elég gyorsnak tűnik, de nincs kizárva, hogy gyorsítható még :)

Valóban :) Ezt:

Code: ZiLOG Z80 Assembler
  1.         ld    b, 20h
  2. .l1:    push  hl                        ; 12
  3.         ld    a, (hl)                   ; 8 + V
  4.         ld    h, 30h                    ; 8
  5.         ld    l, a                      ; 5
  6.         ld    a, (hl)                   ; 8
  7.         ld    (de), a                   ; 8 + V
  8.         pop   hl                        ; 11
  9.         inc   hl                        ; 7
  10.         inc   de                        ; 7
  11.         djnz  .l1                       ; 14
  12.                                         ; = 88 + 2 * V

Így is lehetne írni, ami kb. 2x gyorsulás:

Code: ZiLOG Z80 Assembler
  1.         ld    (.l2 + 1), sp
  2.         ld    sp, hl
  3.         ld    bc, 20h
  4. .l1:    pop   hl                        ; 11 + 2 * V
  5.         ld    a, h                      ; 5
  6.         ld    h, 30h                    ; 8
  7.         ldi                             ; 18 + V
  8.         ld    l, a                      ; 5
  9.         ld    h, 30h                    ; 8
  10.         ldi                             ; 18 + V
  11.         jp    pe, .l1                   ; 11
  12. .l2:    ld    sp, 0                     ; = (84 + 4 * V) / 2

A második "ld h, 30h" még törölhető lenne, csak akkor kétszer kell tárolni az attribútum konvertáló táblázatot (3000h-30FFh helyett 3000h-31FFh, de ebben az esetben el is férne). Azonban egy megszakításban csak két sor konvertálódik, tehát a módosításnak akkor lenne igazán előnye, ha az egyszerre konvertált sorok száma is nagyobb lenne.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Tegyük rendbe az EP programokat!
« Reply #308 on: 2010.April.14. 12:10:09 »
Ha belendült a "programjavítás" lehetne kérni, hogy a hozzáértők vessenek egy pillantást az alapműnek számító Stunt Car Racer-re?
Az átirat működik (az oldalamról letölthető), de színkonverzió nulla, és ha jól emlékszem csak billentyűzetről irányítható, valamint a LOAD/SAVE sem működik.

Akkor talán már jobb lenne az egészet újra átírni ? :)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Tegyük rendbe az EP programokat!
« Reply #309 on: 2010.April.14. 14:50:55 »
Akkor talán már jobb lenne az egészet újra átírni ? :)

Ha már így rákérdezel, igazat kell adjak neked...
 :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Tegyük rendbe az EP programokat!
« Reply #310 on: 2010.April.14. 15:53:54 »
Valóban :) Ezt:

Code: ZiLOG Z80 Assembler
  1.         ld    b, 20h
  2. .l1:    push  hl                        ; 12
  3.         ld    a, (hl)                   ; 8 + V
  4.         ld    h, 30h                    ; 8
  5.         ld    l, a                      ; 5
  6.         ld    a, (hl)                   ; 8
  7.         ld    (de), a                   ; 8 + V
  8.         pop   hl                        ; 11
  9.         inc   hl                        ; 7
  10.         inc   de                        ; 7
  11.         djnz  .l1                       ; 14
  12.                                         ; = 88 + 2 * V

Így is lehetne írni, ami kb. 2x gyorsulás:

Code: ZiLOG Z80 Assembler
  1.         ld    (.l2 + 1), sp
  2.         ld    sp, hl
  3.         ld    bc, 20h
  4. .l1:    pop   hl                        ; 11 + 2 * V
  5.         ld    a, h                      ; 5
  6.         ld    h, 30h                    ; 8
  7.         ldi                             ; 18 + V
  8.         ld    l, a                      ; 5
  9.         ld    h, 30h                    ; 8
  10.         ldi                             ; 18 + V
  11.         jp    pe, .l1                   ; 11
  12. .l2:    ld    sp, 0                     ; = (84 + 4 * V) / 2

A második "ld h, 30h" még törölhető lenne, csak akkor kétszer kell tárolni az attribútum konvertáló táblázatot (3000h-30FFh helyett 3000h-31FFh, de ebben az esetben el is férne). Azonban egy megszakításban csak két sor konvertálódik, tehát a módosításnak akkor lenne igazán előnye, ha az egyszerre konvertált sorok száma is nagyobb lenne.

Na, a rutinod működését 5 percig néztem, mire felfogtam :D
Nagyon fasza :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Tegyük rendbe az EP programokat!
« Reply #311 on: 2010.April.14. 17:53:54 »
Na, a rutinod működését 5 percig néztem, mire felfogtam :D
Nagyon fasza :)

Még egy lehetséges megoldás 256 karakter, azaz 8 sor konvertálásához;

Code: ZiLOG Z80 Assembler
  1.         ld    (.l2 + 1), sp
  2.         ld    sp, hl
  3.         ld    h, 30h
  4. .l1:    pop   bc                        ; 11 + 2 * V
  5.         ld    l, c                      ; 5
  6.         ld    a, (hl)                   ; 8
  7.         ld    (de), a                   ; 8 + V
  8.         inc   e                         ; 5
  9.         ld    l, b                      ; 5
  10.         ld    a, (hl)                   ; 8
  11.         ld    (de), a                   ; 8 + V
  12.         inc   e                         ; 5
  13.         jp    nz, .l1                   ; 11
  14. .l2:    ld    sp, 0                     ; = (74 + 4 * V) / 2

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Tegyük rendbe az EP programokat!
« Reply #312 on: 2010.April.14. 22:06:47 »
Megvan a betöltés utáni lefagyás oka is, az EP-s HAMEFIST.LV1 019bh-01a8h között 8 byte-ban eltért a spectrumostól, miután ez le lett cserélve, teljesen jól bejött a 2. szint, sőt végig is lehetett skippelni a játékot :D
Ami a gratuláló üzenet után az utolsó szint elejére ugrik :(, a spectrum változat is ezt teszi.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: Tegyük rendbe az EP programokat!
« Reply #313 on: 2010.April.14. 22:52:37 »
Ha már a folytonos interruptból történõ konvertálásnál tartunk, hátha érdekel valakit...
 :oops:
Itt az általam kísérleti jelleggel valaha használt rutinom forrása. Ezt vagy interruptból hívtam, vagy ha a progi tiltott megszakítéssal fut, akkor egy billentyûzet figyelõ helyrõl.
A rendszerszegmensen van az LPT attributum mezeje, a 3800 címen meg a konvertáló tábla.


IF IRQKON OR BILLKON
KONV DI
 LD A,0FFH
 OUT (0B2H),A
 LD (KONSP+1),SP
 LD (DEM+1),DE
 LD (BCM+1),BC
 LD (HLM+1),HL
 LD DE,08D00
 LD SP,5800
 LD BC,300
KONC POP HL
 LD A,H
 LD H,38
 LDI
 LD L,A
 LDI
 JP PE,KONC
 LD A,0FAH
 OUT (0B2H),A
DEM LD DE,0
BCM LD BC,0
HLM LD HL,0
KONSP LD SP,0
 RET
ENDIF


De ezt csak a az átírás kezdetekor használtam, próba jeleggel, a kész átiratokból egy két kivételtõl eltekintve számûztem.
De nekem nagyon tetszett ez a rövid megoldás.
« Last Edit: 2010.April.14. 22:59:29 by Attus »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Tegyük rendbe az EP programokat!
« Reply #314 on: 2010.April.14. 23:11:51 »

KONC POP HL
 LD A,H
 LD H,38
 LDI
 LD L,A
 LDI
 JP PE,KONC


Ez ugyanaz, mint amit elsőnek írtam gyorsabb megoldásra, a már említett módon a második 'LD H, n' nélkül (így 512 byte-os táblázatot kell használni, de csak akkor, ha nem garantált, hogy a konvertálandó attribútumok között nincs FFh). :)
« Last Edit: 2010.April.14. 23:16:31 by IstvanV »