OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 18:49

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 37 ]  Přejít na stránku 1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: Vianocny darcek pre ZX Spectrum
PříspěvekNapsal: 25.12.2015, 02:25 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Kód:
        org     #8000
runme   ld      a,#08
        out     (#fe),a
        ld      hl,#5aff
        ld      de,#5afe
        ld      bc,#0300
        ld      (hl),#07
        lddr     
        ld      (hl),c
        ld      b,#18
        lddr     
vesele  xor     a
        in      a,(#fe)
        or      #e0
        inc     a
        jr      nz,vesele
        ld      hl,#4030
        ld      de,pf1994
        ld      bc,#0810
vanoce  ld      a,(de)
        ld      (hl),a
        inc     de
        call    rok
        djnz    vanoce
        ld      b,#04
vam     call    novy
        djnz    vam
        ld      de,#0808
praje   ld      b,e
        push    hl
        push    bc
busy    call    novy
        rlc     c
        jr      nc,#01
        dec     l
        djnz    busy
        pop     bc
        pop     hl
        push    hl
        push    bc
soft    call    novy
        rrc     c
        jr      nc,#01
        inc     l
        djnz    soft
        pop     bc
        pop     hl
        ld      a,d
        dec     a
        cp      #01
        sbc     a,a
        and     #10
        add     a,e
        ld      b,a
hard    call    novy
        djnz    hard
        ld      a,#02
        add     a,e
        ld      e,a
        dec     d
        jr      nz,praje
        ld      (hl),#fe
        xor     a
stastn  in      a,(#fe)
        or      #e0
        inc     a
        jr      z,stastn
        ret     
novy    ld      a,c
        or      (hl)
        ld      (hl),a
rok     inc     h
        ld      a,h
        and     #07
        ret     nz
        ld      a,#20
        add     a,l
        ld      l,a
        ret     c
        ld      a,#f8
        add     a,h
        ld      h,a
        ret     
pf1994  db      #28,#10,#ba,#7c
        db      #7c,#ba,#38,#54


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 11:59 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Nejak se mi nedari to prelozit sjasmplusem:

Kód:
001   0000             ;;;;;;;;;;;;;;;;;;;;;
002   0000             ;; Vianocny darcek ;;
003   0000             ;;;;;;;;;;;;;;;;;;;;;
004   0000             
005   0000                DEVICE ZXSPECTRUM128
006   0000                OUTPUT   nic.nic
007   0000             
008   0000                OUTPUT   pf.bin
009   0000             
010   0000             start
011   0000                org   #8000      ;32768
012   8000             
013   8000 3E 08       runme   ld      a,#08
014   8002 D3 FE               out     (#fe),a
015   8004 21 FF 5A            ld      hl,#5aff
016   8007 11 FE 5A            ld      de,#5afe
017   800A 01 00 03            ld      bc,#0300
018   800D 36 07               ld      (hl),#07
019   800F ED B8               lddr     
020   8011 71                  ld      (hl),c
021   8012 06 18               ld      b,#18
022   8014 ED B8               lddr     
023   8016 AF          vesele  xor     a
024   8017 DB FE               in      a,(#fe)
025   8019 F6 E0               or      #e0
026   801B 3C                  inc     a
027   801C 20 F8               jr      nz,vesele
028   801E 21 30 40            ld      hl,#4030
029   8021 11 88 80            ld      de,pf1994
030   8024 01 10 08            ld      bc,#0810
031   8027 1A          vanoce  ld      a,(de)
032   8028 77                  ld      (hl),a
033   8029 13                  inc     de
034   802A CD 79 80            call    rok
035   802D 10 F8               djnz    vanoce
036   802F 06 04               ld      b,#04
037   8031 CD 76 80    vam     call    novy
038   8034 10 FB               djnz    vam
039   8036 11 08 08            ld      de,#0808
040   8039 43          praje   ld      b,e
041   803A E5                  push    hl
042   803B C5                  push    bc
043   803C CD 76 80    busy    call    novy
044   803F CB 01               rlc     c
zdrojak.a80(45): error: [JR] Target out of range (-32834)
045   8041 30 00               jr      nc,#01
046   8043 2D                  dec     l
047   8044 10 F6               djnz    busy
048   8046 C1                  pop     bc
049   8047 E1                  pop     hl
050   8048 E5                  push    hl
051   8049 C5                  push    bc
052   804A CD 76 80    soft    call    novy
053   804D CB 09               rrc     c
zdrojak.a80(54): error: [JR] Target out of range (-32848)
054   804F 30 00               jr      nc,#01
055   8051 2C                  inc     l
056   8052 10 F6               djnz    soft
057   8054 C1                  pop     bc
058   8055 E1                  pop     hl
059   8056 7A                  ld      a,d
060   8057 3D                  dec     a
061   8058 FE 01               cp      #01
062   805A 9F                  sbc     a,a
063   805B E6 10               and     #10
064   805D 83                  add     a,e
065   805E 47                  ld      b,a
066   805F CD 76 80    hard    call    novy
067   8062 10 FB               djnz    hard
068   8064 3E 02               ld      a,#02
069   8066 83                  add     a,e
070   8067 5F                  ld      e,a
071   8068 15                  dec     d
072   8069 20 CE               jr      nz,praje
073   806B 36 FE               ld      (hl),#fe
074   806D AF                  xor     a
075   806E DB FE       stastn  in      a,(#fe)
076   8070 F6 E0               or      #e0
077   8072 3C                  inc     a
078   8073 28 F9               jr      z,stastn
079   8075 C9                  ret     
080   8076 79          novy    ld      a,c
081   8077 B6                  or      (hl)
082   8078 77                  ld      (hl),a
083   8079 24          rok     inc     h
084   807A 7C                  ld      a,h
085   807B E6 07               and     #07
086   807D C0                  ret     nz
087   807E 3E 20               ld      a,#20
088   8080 85                  add     a,l
089   8081 6F                  ld      l,a
090   8082 D8                  ret     c
091   8083 3E F8               ld      a,#f8
092   8085 84                  add     a,h
093   8086 67                  ld      h,a
094   8087 C9                  ret     
095   8088 28 10 BA 7C pf1994  db      #28,#10,#ba,#7c
096   808C 7C BA 38 54         db      #7c,#ba,#38,#54
097   8090             
098   8090                OUTPUT   nic.nic
099   8090                SAVESNA   "pf.sna",start
100   8090             
101   8090             

Value    Label
------ - -----------------------------------------------------------
0x0000   start
0x8000 X runme
0x8016   vesele
0x8088   pf1994
0x8027   vanoce
0x8079   rok
0x8031   vam
0x8076   novy
0x8039   praje
0x803C   busy
0x804A   soft
0x805F   hard
0x806E   stastn

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 13:04 
Offline
Prvnička

Registrován: 29.10.2013, 20:31
Příspěvky: 21
Has thanked: 2 times
Been thanked: 7 times
Nejsem si jistý, ale já bych přepsal oba jr nc,#01 na jr nc,$+1.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 13:06 
Offline
Radil

Registrován: 08.10.2013, 18:00
Příspěvky: 296
Has thanked: 12 times
Been thanked: 228 times
jr nc,#01 přepsat na
jr nc,$+3
a SAVESNA "pf.sna",start na
SAVESNA "pf.sna",runme


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 13:20 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2331
Has thanked: 303 times
Been thanked: 637 times
Vida, tím jr nc,$+3 to bylo ... já v tom hledal sofistikovaný trik s rst #38 a zrovna jsem přemýšlel, co to vlastně má dělat.

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 15:17 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
To ma namalovat jen ten stromek a nic jineho? Pak nechapu nazvy navesti... :(

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 15:25 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
No asi jen takový vzkaz. Ale pak nechápu navěstí "hard" :) Zajímalo by mne, jestli je to s tím rokem 1994 současný program, nebo starší. Jestli si nelegráckuje tak jako ja na AP, kde jsem popřál vše dobré do roku 1993... .

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 16:23 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
A jestli s tou chybou taky nelegráckuje. "jr" by dle všeho nějaká pseudo instrukce, se kterou bude mít nějaký překladač problém neměla být. Tedy je to dle všeho klasická instrukce... .

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 18:04 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Instrukcia jr nie je ziadna pseudoinstrukcia, ale normalny regulerny relativny skok :)

Pre preklad v SjASM treba v kazdom jr <podmienka>,<cislo> a djnz <cislo> treba pred cislo pripisat $+2+. Takze napriklad namiesto jr nc,#01 treba napisat jr nc,$+2+#01 alebo rovno jr nc,$+3
Totiz, MRS funguje tak, ze ak je za instrukciou skoku nejaky label, tak je jasne ze to ma skakat na ten label, a samotna hodnotu operandu ktory sa zapise do pameti sa podla toho vypocita. Ale ak je ako argument napisane obycajne cislo, tak sa priamo pouzije ako operand. A v dobe ked som to pisal, potreboval som preskocit iba jednu jednobajtovu instrukciu a preto mi prislo jednoduchsie napisat #01 nez zavadzat kvoli tomu cely jeden novy label, alebo pisat zlozitejsie $+#03 (z ktoreho vobec na prvy pohlad nevidno ze je to prave jeden preskoceny bajt).

Navestie hard je sucastou mojho oficialneho mena (Busy soft & hard), kedze okrem softu sa hrabem aj v hardweri ;)

A ako "nobomi" spravne napisal, do prikazu SAVESNA za meno suboru treba dat hodnotu, kam to ma pri spusteni snapu skocit. Na konci toho listingu su hodnoty navesti, a "start" ma hodnotu 0, takze ak sa pouzije v SAVESNA "start", tak to skoci na nulu. Preto treba pouzit "runme" ktore ma hodnotu #8000 co je uz spravna hodnota odkial sa program v snape ma spustit. Problem je v tom, ze defaultna adresa, kam sa preklada kod, je #0000, a preto ak sa hned na zaciatku zdrojaku hodi navestie, bude mat nulovu hodnotu tiez. Az navestie definovane za ORG-om ma spravnu hodnotu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 26.12.2015, 18:28 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
OK, len ako niekoho, kto si trochu číta o asm ma nenapadlo, že bude mat prekladač problém aj s klasickou inštrukciou. Potom by ma zaujímalo, ako bude vizerať strojový kód v rámci tvojeho kódu a kódu upraveného. Pokiaľ rovnako, mohla by sa tu položiť otázka, čo je správnejšie zapísané... .

V rámci asm na Amige sa mi napríklad tiež nepáči, keď sa použije MOVE pre adresový register a nie MOVEA, kde sa pri MOVE v rámci adresového registru použije vlastne MOVEA automaticky. Ale to je len moj začiatočnícky pohľad na vec ;).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 12.02.2016, 04:43 
Offline
Radil
Uživatelský avatar

Registrován: 02.08.2015, 15:23
Příspěvky: 259
Bydliště: Skalica
Has thanked: 52 times
Been thanked: 141 times
Ja som to skusal na svojom didaktiku asi pred pol rokom, ked som prechadzal Busyho web na speccy.cz Na Didaktiku pouzivam PROMETHEUS a tiez v nom bol problem s jr nc,#01 tak som ju prepisal na jr nc, skok1 a dalsiu na jr nc,skok2 a samozrejme som doplnil navestia. Prikladam upraveny zdrojovy kod a v prilohe je vysledok.

Kód:
org     #8000
runme   ld      a,#08
        out     (#fe),a
        ld      hl,#5aff
        ld      de,#5afe
        ld      bc,#0300
        ld      (hl),#07
        lddr     
        ld      (hl),c
        ld      b,#18
        lddr     
vesele  xor     a
        in      a,(#fe)
        or      #e0
        inc     a
        jr      nz,vesele
        ld      hl,#4030
        ld      de,pf1994
        ld      bc,#0810
vanoce  ld      a,(de)
        ld      (hl),a
        inc     de
        call    rok
        djnz    vanoce
        ld      b,#04
vam     call    novy
        djnz    vam
        ld      de,#0808
praje   ld      b,e
        push    hl
        push    bc
busy    call    novy
        rlc     c
       jr      nc,skok1
skok1   dec     l
        djnz    busy
        pop     bc
        pop     hl
        push    hl
        push    bc
soft    call    novy
        rrc     c
        jr      nc,skok2
skok2   inc     l
        djnz    soft
        pop     bc
        pop     hl
        ld      a,d
        dec     a
        cp      #01
        sbc     a,a
        and     #10
        add     a,e
        ld      b,a
hard    call    novy
        djnz    hard
        ld      a,#02
        add     a,e
        ld      e,a
        dec     d
        jr      nz,praje
        ld      (hl),#fe
        xor     a
stastn  in      a,(#fe)
        or      #e0
        inc     a
        jr      z,stastn
        ret     
novy    ld      a,c
        or      (hl)
        ld      (hl),a
rok     inc     h
        ld      a,h
        and     #07
        ret     nz
        ld      a,#20
        add     a,l
        ld      l,a
        ret     c
        ld      a,#f8
        add     a,h
        ld      h,a
        ret     
pf1994  db      #28,#10,#ba,#7c
        db      #7c,#ba,#38,#54


Přílohy:
darcek.png
darcek.png [ 883 bajtů | Zobrazeno 10565 krát ]

_________________
ZX Spectrum, ZX Spectrum +, DIDAKTIK GAMA, DIDAKTIK M, DIDAKTIK KOMPAKT, D40, D80, Interface M/P, MELODIK, UR-4, BEST, KP 311, BT100, SP210T, GAMACENTRUM 01 (cierna), ROBOTRON K6304, divIDE, K-Mouse, PMD 85-2, Amiga 500, Amiga 500+, Amiga 1200
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 12.02.2016, 10:49 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 20:32
Příspěvky: 457
Bydliště: Kladno
Has thanked: 46 times
Been thanked: 118 times
To asi nebude správně. Já to v LnxSpectru v ASM editoru po opravě jr nc,#01 spustil, a...

Obrázek

_________________
>>eLeMeNt, MB03+, Amiga 1200, ZX Spectrum 128 +2A, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, LnxAmigaImageConvertor, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 12.02.2016, 19:39 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Billy48 píše:
... som ju prepisal na jr nc, skok1 a dalsiu na jr nc,skok2 a samozrejme som doplnil navestia.
Zle si umiestnil navestia. Vsimni si moj predchadzajuci prispevok kde pisem ze JR #01 ma za ulohu preskocit jednu nasledujucu jednobajtovu instrukciu. Spravne to ma byt takto:
Kód:
        ...
        jr      nc,skok1
        dec     l
skok1   djnz    busy
        pop     bc
        pop     hl
        push    hl
        push    bc
soft    call    novy
        rrc     c
        jr      nc,skok2
        inc     l
skok2   djnz    soft
        ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 12.02.2016, 19:47 
Offline
Radil
Uživatelský avatar

Registrován: 02.08.2015, 15:23
Příspěvky: 259
Bydliště: Skalica
Has thanked: 52 times
Been thanked: 141 times
Busy píše:
Billy48 píše:
... som ju prepisal na jr nc, skok1 a dalsiu na jr nc,skok2 a samozrejme som doplnil navestia.
Zle si umiestnil navestia. Vsimni si moj predchadzajuci prispevok kde pisem ze JR #01 ma za ulohu preskocit jednu nasledujucu jednobajtovu instrukciu. Spravne to ma byt takto:
Kód:
        ...
        jr      nc,skok1
        dec     l
skok1   djnz    busy
        pop     bc
        pop     hl
        push    hl
        push    bc
soft    call    novy
        rrc     c
        jr      nc,skok2
        inc     l
skok2   djnz    soft
        ...



Dnes okolo obeda som upravil navestia presne ako pises a uz to bol ten stromcek ako ma Lanex. Pretoze ked som videl obrazok od Lanexa, tak mi bolo jasne, ze to mam zle. Vtedy som si ani neuvedomil, ze to ani nema vyznam skocit hned na dalsiu instrukciu. Chyba zaciatocnika :D ale aspon mame druhu variantu toho stromceka :D

_________________
ZX Spectrum, ZX Spectrum +, DIDAKTIK GAMA, DIDAKTIK M, DIDAKTIK KOMPAKT, D40, D80, Interface M/P, MELODIK, UR-4, BEST, KP 311, BT100, SP210T, GAMACENTRUM 01 (cierna), ROBOTRON K6304, divIDE, K-Mouse, PMD 85-2, Amiga 500, Amiga 500+, Amiga 1200


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Vianocny darcek pre ZX Spektrum
PříspěvekNapsal: 14.02.2016, 20:39 
Offline
Radil
Uživatelský avatar

Registrován: 02.08.2015, 15:23
Příspěvky: 259
Bydliště: Skalica
Has thanked: 52 times
Been thanked: 141 times
Este doplnim, ze ked som pouzil PROMETHEUS, tak v nom treba vlozit jr nc,$+2 co mna prekvapilo. Cakal som but $+1 (ak by bol $ na nasledujucej adrese, cize dalsej instrukcie v tomto pripade inc l), alebo $+3 (ak by bol $ na prvej adrese instrukcie jr), ale prometheus pocita adresu $ od druheho bajtu instrukcie jr. Ked zoberiem ze jr nc,$+2 je v srojaku #30(jr nc,) a #01(hodnota 1), tak mohol prometheus zobrat aj priamo hodnotu a nielen vyraz prip. navestie.

V prilohe je priklad kam bude program po kompilacii prometheom skakat:
Kód:
 ...
        jr      nc,$+2
        dec     l
        djnz    busy
        pop     bc
        pop     hl
        push    hl
        push    bc
soft    call    novy
        rrc     c
        jr      nc,$+2     ;tato instrukcia je na adresach: #804F a #8050, takze $=#8050+2
        inc     l          ;ak by bolo jr nc,$+1 tak skoci sem
        djnz    soft       ;jr nc,$+2 - skoci sem
        ...

_________________
ZX Spectrum, ZX Spectrum +, DIDAKTIK GAMA, DIDAKTIK M, DIDAKTIK KOMPAKT, D40, D80, Interface M/P, MELODIK, UR-4, BEST, KP 311, BT100, SP210T, GAMACENTRUM 01 (cierna), ROBOTRON K6304, divIDE, K-Mouse, PMD 85-2, Amiga 500, Amiga 500+, Amiga 1200


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 37 ]  Přejít na stránku 1, 2, 3  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz