OldComp.cz

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


Právě je 09.12.2024, 18:33

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 35 ]  Přejít na stránku Předchozí  1, 2, 3
Autor Zpráva
PříspěvekNapsal: 12.08.2024, 22:36 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1335
Has thanked: 102 times
Been thanked: 195 times
Kdyby to chtel nekdo nekdy upravovat, protoze zjistil ze chybi nejake cool instrukce(napriklad zjistit jak je to s tim BIT,SET,RES a nedefinovanym bitem vlajky), nebo jen reprodukovat, tak prikladam pouzite asm soubory a how.txt soubor s nejakymi popisky triku s awkem.

Output obsahuje txt soubory ktere jsou "vyzdimane" z fuse a nelze je snadno ziskat.
Nejsou tam vsechny, ty co se tvori nejak jinak a snadno pomoci prikazu jsem tam nedal.
Jen prohozenim nekterych souboru se stane ze se vymeni to vybrane reseni, protoze ma stejny pocet taktu i bajtu, jen proste pouziva jinou kombinaci instrukci.

Bylo by pekne kdyby nekdo overil na tech testovacich tapkach ze to fakt funguje na realnem zeleze, nebo jinem emulatoru.
Asm soubory jdou vygenerovat skriptem "make_test.sh", takze to muzete upravit i pro jiny osmibit co ma Z80.
Krome nacteni ty programy trvaji 0.19 vteriny, protoze to neni nijak extremne zasmyckovane.
"Nacte AF" a ulozi jeho hodnotu na zasobnik (protoze to stoji jen bajt navic k tem cca 5 bajtum pro kazde cislo a stejne se to tam musi dat).
Na konci se to taha ze zasobniku uz ve smycce a protoze jsou ty hodnoty serazene, tak to pri nacitani pekne klesa o jedna a lze to tak snadno porovnavat.
V tom testu neresim ze jsem udelal neco spatne a je to zavisle na predchozi hodnote.
Takze netestuji pro ruzne hodnoty AF stejny kod.
To doufam ze mam spravne.

Je tam vlastne 7 metod.

xor A : ... (other_flag.asm)
or 0xFF : ... (or_FF.asm)
ld A, const : or A : ... (or_n.asm)
ld A, const : and A : ... (and_n.asm)
ld A, const : add A, const : ... (add_flag.asm)
ld A, const : sub const : ... (sub_flag.asm)
ld A, const : cp const : ... (cp_flag.asm)

Pokud puvodni "ld A, const" je "ld A, 0" tak se to nahradi za "xor A".

tak necekam ze jsem zacatek pokazil a ze kod ovlivnuje prechozi nastaveni.

A v tech teckach se skryva
Kód:
db 0x00 ; nop        ; ---- ----
db 0x07 ; rlca       ; --50 3-0C
db 0x0F ; rrca       ; --50 3-0C
db 0x17 ; rla        ; --50 3-0C
db 0x1F ; rra        ; --50 3-0C
db 0x27 ; daa        ; SZ5H 3P-C adjusting the A register by a value which is dependent upon the value of the A register, the Carry flag, Half-Carry flag (carry from bit 3 to 4), and the N-flag (which defines whether the last operation was an add or subtract)
db 0x2F ; cpl        ; --51 3-1-
db 0x37 ; scf        ; --50 3-01
db 0x3F ; ccf        ; --5H 3-0C  H=previous Carry
db 0x3C ; inc a      ; SZ5H 3V0-  V=1 only inc 0x7F -> 3 = 1
db 0x3D ; dec a      ; SZ5H 3V1-  V=1 only dec 0x80 -> 3 = 0
db 0x87 ; add a,a    ; SZ5H 3V0C  V=oVerflow (O similar to 0?)
db 0x8F ; adc a,a    ; SZ5H 3V0C  V=oVerflow (O similar to 0?)
db 0x97 ; sub a      ; SZ5H 3V1C  V=oVerflow (O similar to 0?)
db 0x9F ; sbc a,a    ; SZ5H 3V1C  V=oVerflow (O similar to 0?)
db 0xA7 ; and a      ; SZ51 3P00
db 0xB7 ; or a       ; SZ50 3P00 = xor
db 0xBF ; cp a       ; SZ5H 3P1C  P=overflow


Kde "nop" vlastne zkracuje pocet pouzitych instrukci.

PS: Soubory jsou uz nastaveny na oddelovac ":" misto "/".
PPS: V te tabulce jsou uvedeny ld_a_$.. i ld_A_$.. varianty pokud to budete zpracovavat hromadne.
PPPS: Nemyslim si ze na to nekdo bude sahat, ale pokud jo tak napiste jak jste dopadli.


Přílohy:
Output.7z [93.99 KiB]
45 krát
pouzite _nastroje.7z [5.91 KiB]
45 krát

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Nahoru
 Profil  
 
PříspěvekNapsal: 14.11.2024, 21:54 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 955
Has thanked: 60 times
Been thanked: 241 times
Pri teste som zistil nasledovne spravanie pri instrukcii ADD HL, HL (DE, BC)

Kód:
IT_TEST:        LD      DE, 0
                LD      B, 0
                LD      IX, $A000
IT_TEST0:       LD      H, D
                LD      L, E
                PUSH    DE
                ADD     HL, DE
                PUSH    AF
                POP     DE
                LD      (IX+0), E
                POP     DE
                INC     IX
                INC     D
                DJNZ    IT_TEST0


Podla datasheetu by mali byt flagy po vykonani instrukcie nasledovne
ADD HL, ss
Condition Bits Affected
S is not affected.
Z is not affected.
H is set if carry from bit 11; otherwise, it is reset.
P/V is not affected.
N is reset.
C is set if carry from bit 15; otherwise, it is reset

co ale nesedi s realnym vysledkom
Z je nastaveny, ak HL a (HL, DE, BC) sú 0
Y a X su nastavene v zavislosti od hodnoty HL

robim niekde chybu, alebo je to naozaj tak?


Přílohy:
ADDHLHL.JPG
ADDHLHL.JPG [ 24.89 KiB | Zobrazeno 213 krát ]
Nahoru
 Profil  
 
PříspěvekNapsal: 14.11.2024, 22:35 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 402
Has thanked: 29 times
Been thanked: 129 times
Flag Z nastavuje inštrukcia INC D. Pred ADD HL,DE sa môže vložiť PUSH DE a POP AF, čo vynuluje celý register F.


Nahoru
 Profil  
 
PříspěvekNapsal: 15.11.2024, 09:39 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 955
Has thanked: 60 times
Been thanked: 241 times
Antony/DTA píše:
Flag Z nastavuje inštrukcia INC D. Pred ADD HL,DE sa môže vložiť PUSH DE a POP AF, čo vynuluje celý register F.

Hej, v noci mi to docvaklo, vecer mam znizeny vykon CPU :-)
Instrukcia flag Z nemeni, teda zostava zachovany z predoslych.

Zahada je, podla coho sa nastavuje F.5 a F.3.


Přílohy:
addflag.PNG
addflag.PNG [ 5.37 KiB | Zobrazeno 164 krát ]
Nahoru
 Profil  
 
PříspěvekNapsal: 15.11.2024, 11:14 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 402
Has thanked: 29 times
Been thanked: 129 times
Martin1 píše:
Zahada je, podla coho sa nastavuje F.5 a F.3.

To je z výsledku, v tomto prípade H.5 a H.3.


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ů: 35 ]  Přejít na stránku Předchozí  1, 2, 3

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 1 návštěvní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