Welcome, Guest. Please login or register.


Author Topic: SID lejátszó (Read 249655 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #255 on: 2017.January.31. 09:49:32 »
Most már nekem is C5, nem tudom, a másik gépen miért lett BF. :oops:

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #256 on: 2017.January.31. 09:51:10 »
A 191-es port be van állítva a méregetés előtt?

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #257 on: 2017.January.31. 10:30:20 »
A 191-es port be van állítva a méregetés előtt?
Elméletileg be, azzal kezdtem az ellenőrzést, hogy BF port hányszor van írva, egyszer, igaz a program elején.
Ugye egyik EXOS kiegészítő se írja már program indítása után?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #258 on: 2017.January.31. 13:17:12 »
Az lehet a probléma, hogy ZozoTools-os konfigurációval teszteltem, amivel eltérő az LPT. A teljes hossza itt is 312 sor, de a VINT-es LPB hosszúságára érzékeny a kód, mert a VINT lefutó és felfutó éle közötti időt (ami kevesebb 312 sornál) méri. Az itt található rutin (ami pontos eredményt ad) az ilyen hibák elkerülése céljából csak a lefutó éleket figyeli.

Szerk.: az eredeti EXOS LPT-ben 14 soros a VINT, ZozoTools 1.9-el csak 6 soros.

Talán nincs nagy jelentősége, de FILE: eszköznél esetleg az A6h (érvénytelen file név) hibát kezelni lehetne, az IVIEW-ben már javítottam, hogy ne kérjen végtelen ciklusban file nevet, ha a felhasználó Cancel gombbal megpróbál kilépni. :) Illetve még a bemeneti file érvényességét is ellenőrizni lehetne, hogy nem megfelelő formátumú file esetén ne fagyjon le, de ez nem biztos, hogy megérné a bonyolultabb/lassabb betöltés miatt.
« Last Edit: 2017.January.31. 13:27:57 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #259 on: 2017.January.31. 13:37:07 »
Az lehet a probléma, hogy ZozoTools-os konfigurációval teszteltem, amivel eltérő az LPT. A teljes hossza itt is 312 sor, de a VINT-es LPB hosszúságára érzékeny a kód, mert a VINT lefutó és felfutó éle közötti időt (ami kevesebb 312 sornál) méri. Az itt található rutin (ami pontos eredményt ad) az ilyen hibák elkerülése céljából csak a lefutó éleket figyeli.

Szerk.: az eredeti EXOS LPT-ben 14 soros a VINT, ZozoTools 1.9-el csak 6 soros.
Tuti az lesz, arra nem gondoltam anno, hogy lehet más VINT-es LPB méret is :oops: , oké, megnzem majd a fent található rutint
Talán nincs nagy jelentősége, de FILE: eszköznél esetleg az A6h (érvénytelen file név) hibát kezelni lehetne, az IVIEW-ben már javítottam, hogy ne kérjen végtelen ciklusban file nevet, ha a felhasználó Cancel gombbal megpróbál kilépni. :) Illetve még a bemeneti file érvényességét is ellenőrizni lehetne, hogy nem megfelelő formátumú file esetén ne fagyjon le, de ez nem biztos, hogy megérné a bonyolultabb/lassabb betöltés miatt.
Jó ötlet az A6h figyelése, én a nem megfelelő formátumú fájl figyelését kihagynám, ha valaki rossz fájlokat töltöget, az megérdemli :D , hacsak nem az egyszerű ellenőrzést, ha jól tudom az első két byte itt is a fájl hossza-2 , ezt lehetne összevetni a betöltött bájtokkal, amúgy Disk configon kiterjesztés ellenőrzés van, tudom ez meg se közelíti a bemeneti fájl ellenőrzést.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #260 on: 2017.January.31. 13:43:09 »
A fájlnak esetleg kitalálni egy rendes EXOS fejléct?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #261 on: 2017.January.31. 13:59:40 »
hacsak nem az egyszerű ellenőrzést, ha jól tudom az első két byte itt is a fájl hossza-2

Ez csak az -m3 formátumnál van így. -m0-nál még viszonylag egyszerűen olvasható lenne az első blokk mérete (aminek mindig 8192-nek kellene lennie), de az itt használt -m2 formátumnál csak bonyolultabb módon lehetne felismerni ha nem megfelelő a file. A 8 bites ellenőrző összeg könnyen tesztelhető, így általában felismerhető a nem -m2 file, de ez még nem teljesen megbízható, és lassítja is a betöltést (bár ezen a kódon még lehetne optimalizálni):

Code: ZiLOG Z80 Assembler
  1. l "sid_data.m64" 0 1000
  2. Loaded file to 1000-363B
  3.  
  4. A   0F00  F3           DI  
  5. A   0F01  31 00 0F     LD    SP, 0F00
  6. A   0F04  21 00 10     LD    HL, 1000
  7. A   0F07  01 3C 26     LD    BC, 263C
  8. A   0F0A  16 54        LD    D, 54
  9. A   0F0C  3E 80        LD    A, 80
  10. A   0F0E  82           ADD   A, D
  11. A   0F0F  0F           RRCA
  12. A   0F10  AE           XOR   (HL)
  13. A   0F11  ED A1        CPI
  14. A   0F13  EA 0E 0F     JP    PE, 0F0E
  15. A   0F16  18 FE        JR    0F16
  16. A   0F18
  17.  
  18. g f00

Hiba esetén az A értéke nem FF lesz.
Néhány egyéb tesztelhető tulajdonság:
- a file mérete legalább 18 byte
- a második byte kisebb mint 32
- a második és a harmadik byte nem lehet egyszerre 0

Quote
amúgy Disk configon kiterjesztés ellenőrzés van, tudom ez meg se közelíti a bemeneti fájl ellenőrzést.

Az is jó lehet, talán nem túl gyakran van teljesen más formátumú file-nak pont ilyen kiterjesztése. :) A legvalószínűbb hiba talán az, ha valaki véletlenül eltérő formátumú SID zenét (pl. eredeti C64-es PSID/RSID, régi SIDBASIC formátum, stb.) próbál meg betölteni.

A fájlnak esetleg kitalálni egy rendes EXOS fejléct?

Az lenne az ideális megoldás, csak akkor kevésbé egyszerű a konvertálás. Vagy esetleg a libepcompress-t használni a sid_conv.cpp-ben, és akkor a kimenete már megfelelő paraméterekkel tömörített és fejléces file lehet.
« Last Edit: 2017.January.31. 18:51:10 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #262 on: 2017.January.31. 14:57:17 »
A fájlnak esetleg kitalálni egy rendes EXOS fejléct?
úgy gondoltad, mint az 5-ös fejléc esetén, csak egy új, nem használt kódot rendelni hozzá, mondjuk 62h, és betenni a file hosszát, meg esetleg még valami azonosítót?

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #263 on: 2017.January.31. 14:59:38 »
A 8 bites ellenőrző összeg könnyen tesztelhető, így általában felismerhető a nem -m2 file, de ez még nem teljesen megbízható, és lassítja is a betöltést (bár ezen a kódon még lehetne optimalizálni):
Nekem ez sem tűnik túl időrablónak :)

Hiba esetén az A értéke nem FF lesz.
Néhány egyéb tesztelhető tulajdonság:
- a file mérete legalább 16 byte
- a második byte kisebb mint 32
- a második és a harmadik byte nem lehet egyszerre 0
Ezeket meg simán be lehet tenni, hely van még bőven a FILE-t tartalmazó szegmensen :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #264 on: 2017.January.31. 16:08:56 »
oké, nem ígérem, hogy ma, holnap ránézek, de a csütörtökön biztos.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #265 on: 2017.January.31. 18:46:04 »
Nekem ez sem tűnik túl időrablónak :)
Ezeket meg simán be lehet tenni, hely van még bőven a FILE-t tartalmazó szegmensen :)

Ez a rutin ellenőrzi a fentieket, és hiba esetén az .l4-re ugrik:

Code: ZiLOG Z80 Assembler
  1. INPUT_BUFFER    equ     1000h
  2.  
  3.         ld    hl, 10100h - INPUT_BUFFER
  4.         add   hl, de
  5.         push  de
  6.         ld    b, l
  7.         ld    c, h                      ; CB = file size + 256
  8.         ld    de, 10000h - (18 + 256)
  9.         add   hl, de
  10.         pop   hl
  11.         jr    nc, .l4
  12.         sbc   a, a
  13.         inc   b
  14.         ld    d, 0ach
  15.         jr    .l3
  16. .l1:    dec   h
  17. .l2:    dec   l
  18.         xor   (hl)
  19.         rlca
  20.         add   a, d
  21. .l3:    djnz  .l2
  22.         dec   c
  23.         jr    nz, .l1
  24.         xor   80h
  25.         jr    nz, .l4
  26.         inc   hl
  27.         ld    a, (hl)
  28.         cp    high 2000h
  29.         jr    nc, .l4
  30.         inc   hl
  31.         or    (hl)
  32.         ret   nz
  33. .l4:    jp    .l4

A DE regiszterben az utolsó betöltött byte utáni cím található (azaz amivel az EXOS 6 visszatér, esetleg ott is tesztelhető hogy a file nem nagyobb-e a puffer méreténél, bár a csonkított file valószínűleg ellenőrző összeg hibát is eredményez), az INPUT_BUFFER pedig a puffer kezdőcíme, 256 byte-os határra igazítva.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #266 on: 2017.February.02. 21:19:09 »
Továbbfejlesztett sid.s (a sidrec.lua kimenetét játssza le SID kártyával):
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

A bemeneti file "-raw -m0 -9 -blocksize 16384 -maxoffs 32768" tömörítésű, az érvényességét ellenőrzi, és beépített FILE használható a választására.
« Last Edit: 2017.February.03. 11:18:36 by IstvanV »

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: SID lejátszó
« Reply #267 on: 2017.February.02. 22:25:53 »
Szuper ügyes egér rutin! Fogok tedd a EnterMice wiki most.

Jelent ez szolgálnak 4-10MHz Z80 tartományban?

---------------------

Super neat mouse routine! I am going to put it on the EnterMice wiki just now.

Does it serve for the 4-10Mhz Z80 range?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #268 on: 2017.February.03. 08:42:50 »
Does it serve for the 4-10Mhz Z80 range?

It is the same routine that is used in FILE 1.4 and IVIEW. In theory, it does work at 10 MHz, but I could not test that on a real machine.

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: SID lejátszó
« Reply #269 on: 2017.February.03. 10:27:09 »
Now I can... This weekend I will test it.