/* */
/* */
/* */
-/* (C) 2001-2002 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@cc65.org */
+/* (C) 2001-2005, Ullrich von Bassewitz */
+/* Römerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
!CS_RangeHasLabel (S, I+1, 2) &&
CS_GetEntries (S, L+1, I+1, 2) &&
(L[1]->OPC == OP65_AND || L[1]->OPC == OP65_ORA) &&
- CE_KnownImm (L[1]) &&
+ CE_IsConstImm (L[1]) &&
L[2]->OPC == OP65_STA &&
L[2]->AM == L[0]->AM &&
strcmp (L[2]->Arg, L[0]->Arg) == 0 &&
/* Get next entry */
CodeEntry* E = CS_GetEntry (S, I);
- /* Check for the sequence */
- if (E->OPC == OP65_STA &&
+ /* Check for a store with a register value of zero and an addressing
+ * mode available with STZ.
+ */
+ if (((E->OPC == OP65_STA && E->RI->In.RegA == 0) ||
+ (E->OPC == OP65_STX && E->RI->In.RegX == 0) ||
+ (E->OPC == OP65_STY && E->RI->In.RegY == 0)) &&
(E->AM == AM65_ZP || E->AM == AM65_ABS ||
- E->AM == AM65_ZPX || E->AM == AM65_ABSX ) &&
- E->RI->In.RegA == 0) {
+ E->AM == AM65_ZPX || E->AM == AM65_ABSX)) {
/* Replace by STZ */
CodeEntry* X = NewCodeEntry (OP65_STZ, E->AM, E->Arg, 0, E->LI);