diff --git a/libsrc/common/_heapmaxavail.s b/libsrc/common/_heapmaxavail.s index 16fc10dde..4d44fadc1 100644 --- a/libsrc/common/_heapmaxavail.s +++ b/libsrc/common/_heapmaxavail.s @@ -61,7 +61,7 @@ __heapmaxavail: ; F = F->next; -@L2: iny ; Points to F->next +@L2: iny ; Points to F->next lda (ptr1),y tax iny @@ -69,8 +69,17 @@ __heapmaxavail: stx ptr1 jmp @L1 -; return Size; +; if (Size < HEAP_ADMIN_SPACE) return 0; @L3: lda ptr2 + sub #HEAP_ADMIN_SPACE ldx ptr2+1 + bcs @L5 + bne @L4 + txa rts + +; return Size - HEAP_ADMIN_SPACE; + +@L4: dex +@L5: rts diff --git a/src/ca65/ea65.c b/src/ca65/ea65.c index 21e9073ac..7db71a185 100644 --- a/src/ca65/ea65.c +++ b/src/ca65/ea65.c @@ -150,7 +150,7 @@ void GetEA (EffAddr* A) A->AddrModeSet = AM65_DIR_IND_Y; } else { /* (adr) */ - A->AddrModeSet = AM65_ABS_IND | AM65_DIR_IND; + A->AddrModeSet = AM65_ABS_IND | AM65_ABS_IND_LONG | AM65_DIR_IND; } } diff --git a/src/ca65/instr.c b/src/ca65/instr.c index 54e09b501..5d8fc0043 100644 --- a/src/ca65/instr.c +++ b/src/ca65/instr.c @@ -796,7 +796,7 @@ static unsigned char EATab[10][AM65I_COUNT] = { 0x08, 0x08, 0x04, 0x0C, 0x00, 0x14, 0x1C, 0x00, 0x14, 0x1C, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70 + 0x00, 0x00, 0x80 }, { /* Table 2 */ 0x00, 0x00, 0x24, 0x2C, 0x0F, 0x34, 0x3C, 0x00,