Welcome, Guest. Please login or register.


Author Topic: Fájltömörítés Enterprise-on (Read 72809 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #90 on: 2009.August.21. 18:07:30 »
Azért én beraktam az Util programcsokorba.

Időközben már készült egy újabb változat (lásd fent), ha a különbség nem is túl jelentős :oops:

Floppyról 2x ennyi ideig tölt, viszont még így is gyorsabb 50%-al a DL-nél!  :smt038
Így akkor egyértelmûen lecserélendõ az a elavult vacak  :oops:

Azt hiszem, valamivel kisebb is, mint a DL, bár ez elsősorban a help hiánya miatt van :oops:, és azért, mert a DL-ben a betöltő kód rendszerszegmensre másolt része áthelyezhető, és az ehhez használt táblázat is növeli a méretet. Én az EXOS verem - remélhetőleg - nem használt részére másoltam, ami nem tudom, hogy okozhat-e problémát egyes programoknál.

Online Zozosoft

  • EP addict
  • *
  • Posts: 13078
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • SeaMonkey 1.1.9 SeaMonkey 1.1.9
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #91 on: 2009.August.21. 18:23:33 »
Utántöltõs programok (pl Laser Squad :) ) számára lehetne valami egyszerûen beépíthetõ verziót csinálni?
Úgy képzelem el, hogy lenne egy kis forráskódocska amit hozzácsapna az ember a programjához, és aztán a betöltõ EXOS 6-ok helyett CALL KITOMORIT és kész. Lusta programozók számára konyhakészen  :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #92 on: 2009.August.21. 18:44:55 »
Utántöltõs programok (pl Laser Squad :) ) számára lehetne valami egyszerûen beépíthetõ verziót csinálni?
Úgy képzelem el, hogy lenne egy kis forráskódocska amit hozzácsapna az ember a programjához, és aztán a betöltõ EXOS 6-ok helyett CALL KITOMORIT és kész. Lusta programozók számára konyhakészen  :oops:

A DTF éppen így működik :) Az EXOS 6 hívások helyett RST 28H-t kell használni; ez csak a DE regisztert veszi figyelembe, a csatornaszám mindig 1, a méretet pedig a file-ból olvassa. A betöltőt, azaz a 0. lapra és (csak az Attus DTF formátumnál) a rendszerszegmensre másolt kódot be lehet építeni a .com file-ba is, és akkor nem kell külön segédprogramot használni a betöltéshez.

A file-okat ezzel a paranccsal lehet tömöríteni (ez új formátumot készít):
  dtf.exe -cp -lz TOMORITETT_FILE FILE1 FILE2 ...
A "DTF" aktuális verziója feltételezi, hogy az első bemeneti file .com formátumú, tehát ha EXOS 5 fejlécet talál (az első két byte 00h és 05h), akkor azt levágja, és csak a fejlécben tárolt méretű byte-ot tömöríti. Ha nem 00h 05h van a file elején, akkor az egészet tárolja. Az adat mérete azonban egyik esetben sem lehet több, mint 3F00h byte. Ezt a korlátozást egyszerűen el lehetne távolítani (esetleg egy "nyers" módot engedélyező paraméterrel, amely a 16 byte-os EXOS fejlécet is letiltja).
A második, harmadik, stb. file bármilyen bináris adat lehet 1 és 65535 byte közötti méretben. Mindegyik file egy RST 28H hívásnak felel meg.

A betöltő kód (az RST-ket CALL-ra átírva más címre is kerülhet):

Code: ZiLOG Z80 Assembler
  1. decompCode1Begin:
  2.  
  3.         phase 00008h
  4.  
  5. readBit:                                ; RST 08H:
  6.         srl   c                         ; read a compressed bit to carry
  7.         ret   nz
  8.         rst   010h                      ; read next byte to shift register
  9.         rra
  10.         ld    c, a
  11.         ret
  12.  
  13. ; -----------------------------------------------------------------------------
  14.  
  15.     if $ < 00010h
  16.         block 00010h - $, 000h
  17.     endif
  18.  
  19. readByte:                               ; RST 10H:
  20.         exx                             ; read a compressed byte to A
  21.         ld    a, b
  22.         ld    b, c                      ; use a 2-byte buffer
  23.         dec   hl
  24.         ld    c, (hl)
  25.         exx
  26.     if NO_BORDER_FX == 0
  27.         out   (081h), a
  28.     endif
  29.         ret
  30.  
  31. decompressData_1:
  32.         sbc   hl, de                    ; calculate and store
  33.         ld    (readLength.l1 + 1), hl   ; 2's complement of start address
  34.         jr    decompressData_2
  35.  
  36. ; -----------------------------------------------------------------------------
  37.  
  38.     if $ < 00020h
  39.         block 00020h - $, 000h
  40.     endif
  41.  
  42. readLength:                             ; RST 20H: read and decode length value
  43.                                         ; NOTE: B should be set to zero
  44. .l1:    ld    hl, 00000h                ; * 2's complement of start address
  45.         add   hl, de                    ; check write address:
  46.         jr    c, readLength_.l2
  47.         jr    decompressDone            ; all data has been decompressed
  48.  
  49. ; -----------------------------------------------------------------------------
  50.  
  51.     if $ < 00028h
  52.         block 00028h - $, 000h
  53.     endif
  54.  
  55. decompressData:                         ; RST 28H: load compressed data to DE
  56.         call  readWordFromFile          ; get compressed data size
  57.         xor   a
  58.         ld    l, a
  59.         ld    h, a
  60.         jr    decompressData_1
  61.  
  62.         dephase
  63.  
  64. decompCode1End:
  65.  
  66. ; -----------------------------------------------------------------------------
  67.  
  68. decompCode2Begin:
  69.  
  70.         phase 00060h
  71.  
  72. readLength_:
  73. .l1:    inc   b                         ; read prefix
  74. .l2:    rst   008h
  75.         jr    c, .l1
  76.  
  77. readBits_:
  78.         dec   b                         ; read B (can be 0) bits to HL, and
  79. .l1:    ld    hl, 1                     ; add a leading '1' bit
  80.         inc   b                         ; (e.g. B=7 would read 1xxxxxxxb)
  81.         ret   z
  82.  
  83. readBits:
  84. .l1:    rst   008h                      ; shift B (must be > 0) bits to HL
  85.         adc   hl, hl                    ; HL is expected to be initialized
  86. .l2:    djnz  .l1                       ; to 0 or 1
  87.         ret
  88.  
  89. decompressDone:
  90.         pop   de                        ; pop return address of readLength
  91.         pop   de
  92. .l1:    ld    l, e                      ; DE = HL = last write address + 1
  93.         ld    h, d
  94.         xor   a                         ; A = 0 (no error)
  95.         ld    c, a                      ; BC = 0 (all data has been loaded)
  96.     if NO_BORDER_FX == 0
  97.         out   (081h), a                 ; reset border color
  98.     endif
  99.         ei
  100.         ret
  101.  
  102. decompressData_2:
  103.         inc   a                         ; A = 1 (input file channel number)
  104.         exos  6                         ; read compressed data
  105.         call  readWordFromFile          ; get uncompressedSize - compressedSize
  106.         ld    a, c
  107.         or    b
  108.         jr    z, decompressDone.l1      ; uncompressed data ?
  109.         di
  110.         push  de
  111.         exx
  112.         pop   hl                        ; HL' = compressed data read addr. + 1
  113.         exx
  114.         ex    de, hl
  115.         add   hl, bc
  116.         push  hl
  117.         dec   hl
  118.         ex    de, hl                    ; DE = decompressed data write address
  119.         ld    bc, 00001h                ; initialize shift register
  120.         rst   010h                      ; fill input buffer (2 bytes)
  121.         rst   010h
  122. .l1:    rst   020h                      ; read literal sequence length
  123. .l2:    rst   010h                      ; copy literal data
  124.         ld    (de), a
  125.         dec   de
  126.         dec   hl
  127.         ld    a, l
  128.         or    h
  129.         jr    nz, .l2
  130. .l3:    rst   020h                      ; get match length - 1
  131.         push  hl
  132.         ld    a, l
  133.         ld    l, b
  134.         ld    b, 4
  135.         dec   a
  136.         or    h
  137.         jr    z, .l5                    ; match length = 2 bytes ?
  138.         call  readBits                  ; read offset prefix (4 bits)
  139.         ld    b, l
  140.         call  readBits_                 ; read offset bits
  141. .l4:    add   hl, de                    ; calculate source address
  142.         ld    a, c                      ; save shift register
  143.         ldd
  144.         pop   bc                        ; BC = match length - 1
  145.         lddr                            ; expand match
  146.         ld    c, a
  147.         rst   008h                      ; read flag bit:
  148.         jr    nc, .l1                   ; 0: literal sequence
  149.         jr    .l3                       ; 1: LZ77 match
  150. .l5:    call  readBits.l2               ; special case for 2-byte matches:
  151.         ld    b, l                      ; prefix length = 3 bits,
  152.         call  readBits_.l1              ; encoding is 12345678, max offset: 510
  153.         dec   hl
  154.         jr    .l4
  155.  
  156. readWordFromFile:                       ; read a 16-bit LSB first word
  157.         call  .l1                       ; from the input file to BC
  158.         ld    l, b
  159. .l1:    push  de
  160.         ld    a, 1
  161.         exos  5
  162.         pop   de
  163.         ld    c, l
  164.         ret
  165.  
  166.         dephase
  167.  
  168. decompCode2End:
  169.  

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #93 on: 2009.August.21. 20:56:12 »
Még egy lehetséges megoldás, ezt talán a legegyszerűbb használni: az egész játék DTF legyen, és a .com file pedig a DL2.COM egyszerűsített változata, amely fixen tartalmazza a betöltendő file nevét (pl. CHAOS.PRG). :) Így magában a játékban csak az EXOS 6 hívásokat kell lecserélni RST 28H-ra, illetve a file megnyitást és esetleges EXOS resetet törölni. A PRG pedig külön is betölthető a DL2-vel.

DL2.COM forráskód fix filenévvel (a DL2_FILE.BIN-t kell átírni a végén), 900 byte:
  * dl2a.s (18.56 kB - downloaded 135 times.)
Ugyanez csak az új formátum támogatásával, 363 byte:
  * dl2b.s (8.4 kB - downloaded 149 times.)

Hatékonyabb tömörítést is el lehet érni az epcompress használatával, de azt bonyolultabb betölteni, vagy az egész programnak egy .com file-nak kell lennie.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #94 on: 2009.August.22. 17:17:52 »
esetleg egy "nyers" módot engedélyező paraméterrel, amely a 16 byte-os EXOS fejlécet is letiltja

Feltöltöttem egy új DTF verziót, amely (a továbbfejlesztett DL2 mellett) már tartalmazza ezt a funkciót: a '-cp' helyett '-cr'-t kell használni, illetve kicsomagolásnál az '-x' helyett '-xr'-t (ilyenkor az '-lz'-t is meg kell adni, mert nem tudja a fejléc alapján felismerni a formátumot).

A fenti betöltő kódot is átírtam, hogy tetszőleges assemblerrel is le lehessen fordítani, ne fix (RST) címen legyen, hanem CALL utasítással lehessen hívni, és a csatornaszám is megadható az A regiszterben. Hibakezelést is tartalmaz, de csak az EXOS hívások visszatérési értékét ellenőrzi, azt nem, hogy a tömörített adat esetleg hibás-e. A méret viszont 164 byte-ra nőtt.

Code: ZiLOG Z80 Assembler
  1. KITOMORIT:      LD    H, A
  2.                 CALL  KITOMORIT15
  3.                 RET   NZ
  4.                 LD    L, A
  5.                 LD    A, H
  6.                 LD    H, L
  7.                 SBC   HL, DE
  8.                 LD    (KITOMORIT07+1), HL
  9.                 LD    H, A
  10.                 EXOS  6
  11.                 OR    A
  12.                 RET   NZ
  13.                 CALL  KITOMORIT15
  14.                 RET   NZ
  15.                 LD    A, C
  16.                 OR    B
  17.                 JR    Z, KITOMORIT08
  18.                 DI
  19.                 PUSH  DE
  20.                 EXX
  21.                 POP   HL
  22.                 EXX
  23.                 EX    DE, HL
  24.                 ADD   HL, BC
  25.                 PUSH  HL
  26.                 DEC   HL
  27.                 EX    DE, HL
  28.                 LD    BC, 1001H
  29.                 CALL  KITOMORIT13
  30. KITOMORIT01:    CALL  KITOMORIT07
  31. KITOMORIT02:    EXX
  32.                 LD    A, B
  33.                 LD    B, C
  34.                 DEC   HL
  35.                 LD    C, (HL)
  36.                 EXX
  37.                 OUT   (81H), A
  38.                 JR    NC, KITOMORIT03
  39.                 RRA
  40.                 LD    C, A
  41.                 RET
  42. KITOMORIT03:    LD    (DE), A
  43.                 DEC   DE
  44.                 DEC   HL
  45.                 LD    A, L
  46.                 OR    H
  47.                 JR    NZ, KITOMORIT02
  48. KITOMORIT04:    CALL  KITOMORIT07
  49.                 PUSH  HL
  50.                 LD    A, L
  51.                 LD    L, B
  52.                 LD    B, 4
  53.                 DEC   A
  54.                 OR    H
  55.                 JR    Z, KITOMORIT06
  56.                 CALL  KITOMORIT13
  57.                 LD    B, L
  58.                 CALL  KITOMORIT11
  59. KITOMORIT05:    ADD   HL, DE
  60.                 LD    A, C
  61.                 LDD
  62.                 POP   BC
  63.                 LDDR
  64.                 LD    C, A
  65.                 SRL   C
  66.                 CALL  Z, KITOMORIT02
  67.                 JR    NC, KITOMORIT01
  68.                 JR    KITOMORIT04
  69. KITOMORIT06:    CALL  KITOMORIT14
  70.                 LD    B, L
  71.                 CALL  KITOMORIT12
  72.                 DEC   HL
  73.                 JR    KITOMORIT05
  74. KITOMORIT07:    LD    HL, 0
  75.                 ADD   HL, DE
  76.                 JR    C, KITOMORIT10
  77.                 POP   DE
  78.                 POP   DE
  79. KITOMORIT08:    LD    L, E
  80.                 LD    H, D
  81.                 XOR   A
  82.                 LD    C, A
  83.                 OUT   (81H), A
  84.                 EI
  85.                 RET
  86. KITOMORIT09:    INC   B
  87. KITOMORIT10:    SRL   C
  88.                 CALL  Z, KITOMORIT02
  89.                 JR    C, KITOMORIT09
  90. KITOMORIT11:    DEC   B
  91. KITOMORIT12:    LD    HL, 1
  92.                 INC   B
  93.                 RET   Z
  94. KITOMORIT13:    SRL   C
  95.                 CALL  Z, KITOMORIT02
  96.                 ADC   HL, HL
  97. KITOMORIT14:    DJNZ  KITOMORIT13
  98.                 RET
  99. KITOMORIT15:    CALL  KITOMORIT16
  100.                 RET   NZ
  101.                 LD    L, B
  102. KITOMORIT16:    PUSH  DE
  103.                 LD    A, H
  104.                 EXOS  5
  105.                 POP   DE
  106.                 LD    C, L
  107.                 OR    A
  108.                 RET
  109.  
« Last Edit: 2009.August.24. 15:24:02 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #95 on: 2009.August.23. 23:28:17 »
Utántöltõs programok (pl Laser Squad :) ) számára lehetne valami egyszerûen beépíthetõ verziót csinálni?

Példa a fenti betöltő használatára (a B00h-BA4h területre került, amelyet remélhetőleg nem használ semmi):
* lsq.zip (209.63 kB - downloaded 130 times.)
« Last Edit: 2009.August.23. 23:33:32 by IstvanV »

Offline Lacika

  • EP addict
  • *
  • Posts: 2886
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.2 Firefox 3.5.2
    • View Profile
    • http://www.ep128.hu
Re: Fájltömörítés Enterprise-on
« Reply #96 on: 2009.August.24. 13:19:01 »
Így látatlanban jól sejtem, hogy így viszont a normál (tömörítetlen) pályákat nem tudja beolvasni a program?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Firefox 3.0.11 Firefox 3.0.11
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #97 on: 2009.August.24. 13:46:21 »
Így látatlanban jól sejtem, hogy így viszont a normál (tömörítetlen) pályákat nem tudja beolvasni a program?

Igen :oops:, de ez a probléma valójában elkerülhető, mert ha jól látom, minden pálya első két byte-ja olyan érték, ami tömörített pálya esetén nem fordulhatna elő, és így felismerhető a formátum:

3702-0


Online Zozosoft

  • EP addict
  • *
  • Posts: 13078
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.2 Firefox 3.5.2
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #98 on: 2009.August.24. 13:52:22 »
Akkor most már meg is oldottad?
Mindenesetre itt a betöltõ forrása, hátha így kényelmesebb a bütykölés :-)

Offline Lacika

  • EP addict
  • *
  • Posts: 2886
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.2 Firefox 3.5.2
    • View Profile
    • http://www.ep128.hu
Re: Fájltömörítés Enterprise-on
« Reply #99 on: 2009.August.24. 14:02:12 »
Akkor a honlapon ki is cserélhetem délután az új verziót?

Online Zozosoft

  • EP addict
  • *
  • Posts: 13078
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.2 Firefox 3.5.2
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #100 on: 2009.August.24. 14:03:38 »
a B00h-BA4h területre került, amelyet remélhetõleg nem használ semmi
EP64 módban lehet gond, ha nem módosult az EXOS határ meg az LPT létrehozás.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Firefox 3.0.11 Firefox 3.0.11
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #101 on: 2009.August.24. 14:49:54 »
EP64 módban lehet gond, ha nem módosult az EXOS határ meg az LPT létrehozás.

Akkor úgy látszik, mégis érdemesebb a forráskódot módosítani :) :oops: A tömörítetlen pályákat arról ismeri fel, hogy a file elején a 16 bites érték, amely egyébként a tömörített adat mérete lenne, nagyobb, mint 32767. Ez nem tudom biztosan, hogy minden pályánál így van-e, mert nem ismerem a formátumot.

* lsq2.hea (17.63 kB - downloaded 125 times.)
* lsq2.com (2.51 kB - downloaded 130 times.)

A változtatások:

Code: Diff
  1. @@ -97,12 +97,12 @@
  2.                  LD DE,NEV1
  3.                  EXOS 1
  4.                  JP NZ,HIBA
  5.                  LD DE,4000H
  6. -                LD BC,6912
  7. -                EXOS 6
  8. +              ; LD BC,6912
  9. +                CALL KITOMORIT
  10.                  JP NZ,HIBA
  11. -                EXOS 3
  12. +              ; EXOS 3
  13.                  DI
  14.                ; CALL KONVERTAL
  15.                  XOR A
  16.                  LD DE,(VIDCIM2)
  17. @@ -118,16 +118,16 @@
  18.                  RRD
  19.                  LD (LPTH),A
  20.                  OUT (83H),A
  21.                  LD (VIDCIM2),DE
  22. -                XOR A
  23. -                LD DE,NEV2
  24. -                EXOS 1
  25. -                JP NZ,HIBA
  26. +              ; XOR A
  27. +              ; LD DE,NEV2
  28. +              ; EXOS 1
  29. +              ; JP NZ,HIBA
  30.                  LD DE,24104
  31. -                LD BC,22521
  32. -PRGLOAD         XOR A
  33. -                EXOS 6
  34. +              ; LD BC,22521
  35. +PRGLOAD       ; XOR A
  36. +                CALL KITOMORIT
  37.                  JP NZ,HIBA
  38.                  EXOS 3
  39.                  LD HL,CIMKE
  40.                  LD DE,100H
  41. @@ -967,10 +967,9 @@
  42.  SAVEST          DB "  Press 0-9 or A-Z to select save file  "
  43.  LOADST          DB "Press 0-9 or A-Z to select scenario file"
  44.  VOL             DBL "VOL"
  45.  EXDOSSTR        DBL "EXDOS"
  46. -NEV1            DBL "LSQ.SCR"
  47. -NEV2            DBL "LSQ.PRG"
  48. +NEV1            DBL "LSQ.PRG"
  49.  NEV3            DB 6,"LSQ."
  50.  TYPE            DB "L"
  51.  LEVEL           DB "0"
  52.  SPECLPT:        LD A,(LPTL)
  53. @@ -1057,10 +1056,9 @@
  54.                  LD DE,NEV3
  55.                  EXOS 1
  56.                  POP BC
  57.                  POP DE
  58. -                JR NZ,LOADHIBA1
  59. -                EXOS 6
  60. +                CALL Z,KITOMORIT
  61.  LOADHIBA1       PUSH AF
  62.                  PUSH BC
  63.                  PUSH DE
  64.                  XOR A
  65. @@ -1124,8 +1122,127 @@
  66.                  POP AF
  67.                  JR NZ,LOADHIBA
  68.                  SCF
  69.                  RET
  70. +KITOMORIT:      CALL KITOMORIT15
  71. +                RET NZ
  72. +                BIT 7,H
  73. +                JR Z,KITOMORIT17
  74. +                EX DE,HL
  75. +                LD (HL),E
  76. +                INC HL
  77. +                LD (HL),D
  78. +                INC HL
  79. +                EX DE,HL
  80. +                DEC BC
  81. +                DEC BC
  82. +                EXOS 6
  83. +                RET
  84. +KITOMORIT17:    LD C, L
  85. +                LD B, H
  86. +                LD L, A
  87. +                LD H, A
  88. +                SBC HL,DE
  89. +                LD (KITOMORIT07+1),HL
  90. +                EXOS 6
  91. +                OR A
  92. +                RET NZ
  93. +                CALL KITOMORIT15
  94. +                RET NZ
  95. +                LD A,L
  96. +                OR H
  97. +                JR Z,KITOMORIT08
  98. +                DI
  99. +                PUSH DE
  100. +                EXX
  101. +                POP HL
  102. +                EXX
  103. +                ADD HL,DE
  104. +                PUSH HL
  105. +                DEC HL
  106. +                EX DE,HL
  107. +                LD BC,1001H
  108. +                CALL KITOMORIT13
  109. +KITOMORIT01:    CALL KITOMORIT07
  110. +KITOMORIT02:    EXX
  111. +                LD A,B
  112. +                LD B,C
  113. +                DEC HL
  114. +                LD C,(HL)
  115. +                EXX
  116. +                OUT (81H),A
  117. +                JR NC,KITOMORIT03
  118. +                RRA
  119. +                LD C,A
  120. +                RET
  121. +KITOMORIT03:    LD (DE),A
  122. +                DEC DE
  123. +                DEC HL
  124. +                LD A,L
  125. +                OR H
  126. +                JR NZ,KITOMORIT02
  127. +KITOMORIT04:    CALL KITOMORIT07
  128. +                PUSH HL
  129. +                LD A,L
  130. +                LD L,B
  131. +                LD B,4
  132. +                DEC A
  133. +                OR H
  134. +                JR Z,KITOMORIT06
  135. +                CALL KITOMORIT13
  136. +                LD B,L
  137. +                CALL KITOMORIT11
  138. +KITOMORIT05:    ADD HL,DE
  139. +                LD A,C
  140. +                LDD
  141. +                POP BC
  142. +                LDDR
  143. +                LD C,A
  144. +                SRL C
  145. +                CALL Z,KITOMORIT02
  146. +                JR NC,KITOMORIT01
  147. +                JR KITOMORIT04
  148. +KITOMORIT06:    CALL KITOMORIT14
  149. +                LD B,L
  150. +                CALL KITOMORIT12
  151. +                DEC HL
  152. +                JR KITOMORIT05
  153. +KITOMORIT07:    LD HL,0
  154. +                ADD HL,DE
  155. +                JR C,KITOMORIT10
  156. +                POP DE
  157. +                POP DE
  158. +KITOMORIT08:    XOR A
  159. +                LD C,A
  160. +                LD B,A
  161. +                OUT (81H),A
  162. +                EI
  163. +                RET
  164. +KITOMORIT09:    INC B
  165. +KITOMORIT10:    SRL C
  166. +                CALL Z,KITOMORIT02
  167. +                JR C,KITOMORIT09
  168. +KITOMORIT11:    DEC B
  169. +KITOMORIT12:    LD HL,1
  170. +                INC B
  171. +                RET Z
  172. +KITOMORIT13:    SRL C
  173. +                CALL Z,KITOMORIT02
  174. +                ADC HL,HL
  175. +KITOMORIT14:    DJNZ KITOMORIT13
  176. +                RET
  177. +KITOMORIT15:    CALL KITOMORIT16
  178. +                RET NZ
  179. +                LD L,H
  180. +KITOMORIT16:    PUSH BC
  181. +                PUSH DE
  182. +                XOR A
  183. +                EXOS 5
  184. +                POP DE
  185. +                LD H,B
  186. +                POP BC
  187. +                OR A
  188. +                RET
  189.  VEGE             DB 0
  190.                  .PRINTX #$
  191.                  END
  192.  
  193.  
« Last Edit: 2009.August.24. 15:26:31 by IstvanV »

Online Zozosoft

  • EP addict
  • *
  • Posts: 13078
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.2 Firefox 3.5.2
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #102 on: 2009.August.24. 15:21:13 »
Ez nem tudom biztosan, hogy minden pályánál így van-e, mert nem ismerem a formátumot.
A pálya elején egy Z80-as ugrótábla van, így C3H-val kezdõdik mind.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #103 on: 2009.August.24. 15:38:33 »
A pálya elején egy Z80-as ugrótábla van, így C3H-val kezdõdik mind.

Valóban, de C3H az lehet a tömörített adat elején is, ha a méret alsó byte-ja véletlenül éppen C3H. Az ep128.hu-n található csomagban a 19 pályán az első cím mindig B894H és B8D3H között van, ezért itt működik az általam használt megoldás (tehát hogy a második byte kisebb-e, mint 128), de lehet, hogy más pályáknál ez nem lenne megbízható.
« Last Edit: 2009.August.25. 12:12:37 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4755
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 3.5.9 Konqueror 3.5.9
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #104 on: 2009.August.27. 18:32:17 »
Új DTF verzió ! Ezek az újdonságok:
 - a "-cl" paraméterrel betöltő programot lehet létrehozni egy DTF-hez, például a
    dtf -cl exolon.com exolon.dtf
   az exolon.dtf-hez készít .com formátumú betöltőt, amivel az EXOLON.DTF segédprogram (pl. DTF&TOM töltő) nélkül is elindítható. Az új (-lz) formátumnál is használható:
    dtf -cl -lz exolon2.com exolon.bin
 - dtf -d paranccsal, vagy Anti-DTF segítségével kicsomagolt programok egyszerűen újratömöríthetők az -idp paraméterrel. Példák:
    dtf -cp -idp exolon.dtf exolon.prg
    dtf -cp -p 1 5 -idp exolon2.dtf exolon.prg
    dtf -cp -lz -idp exolon.bin exolon.prg

 - a kicsomagolt programok, és a DL2 (csak DTF formátumnál) "Attus kompatibilis" memória lapozást állítanak be, azaz az 1.-3. lapra FD, FA, FB szegmensek kerülnek. Javítja például az eredeti HITSQUAD.DTF lefagyását.
 - a DL2 gyorsabb lett (kb. 10-15%) az új formátumba tömöríttet file-ok betöltésekor
« Last Edit: 2009.August.27. 18:35:31 by IstvanV »