From 7c402facc7350399287f78a06ff28e985a578aa9 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Tue, 13 Sep 2022 20:08:50 -0400 Subject: [PATCH] attacher.c: Turn off optimizer for inline asm. --- apps/attacher.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/attacher.c b/apps/attacher.c index 741dc48..f6a3287 100644 --- a/apps/attacher.c +++ b/apps/attacher.c @@ -397,14 +397,10 @@ void file_ui_draw_all(uint16_t first, uint16_t selected, uint16_t entries) { } /* - * Perform ProDOS MLI ON_LINE call to - * write all online volume names into iobuf[] - * Return the number of entries + * Asm code for online() */ -uint16_t online(void) { - uint16_t entries = 0; - struct tabent *entry; - uint8_t i, j, len; +#pragma optimize (push, off) +void onlineasm(void) { __asm__("lda #$00"); // All devices __asm__("sta mliparam + 1"); __asm__("lda #<%v", iobuf); // iobuf LSB @@ -415,6 +411,19 @@ uint16_t online(void) { __asm__("lda #$c5"); // ON_LINE __asm__("ldx #$02"); // Two parms __asm__("jsr callmli"); +} +#pragma optimize (pop) + +/* + * Perform ProDOS MLI ON_LINE call to + * write all online volume names into iobuf[] + * Return the number of entries + */ +uint16_t online(void) { + uint16_t entries = 0; + struct tabent *entry; + uint8_t i, j, len; + onlineasm(); entry = (struct tabent*)iobuf; for (i = 0; i < 16; ++i) { len = iobuf[256 + i * 16] & 0x0f;