diff --git a/libsrc/apple2/extra/iobuf-0800.s b/libsrc/apple2/extra/iobuf-0800.s index 694b91fdb..b00dba6ae 100644 --- a/libsrc/apple2/extra/iobuf-0800.s +++ b/libsrc/apple2/extra/iobuf-0800.s @@ -54,18 +54,20 @@ iobuf_alloc: rts ; Mark table entry as used -: lda #$FF - sta table,x +: dec table,x ; Convert table index to address hibyte txa asl asl - clc + ; Skip clearing carry, it can't be set as long as MAX_FDS*4 is + ; less than 64. + .assert MAX_FDS*4 < $40, error adc #>$0800 ; Store address in "memptr" - ldy #$01 + ; (Y still equals 0 from popptr1) + iny sta (ptr1),y dey tya @@ -82,8 +84,7 @@ iobuf_free: ; Mark table entry as free tax - lda #$00 - sta table,x + inc table,x rts ; ------------------------------------------------------------------------ diff --git a/libsrc/conio/cputs.s b/libsrc/conio/cputs.s index 62e757b84..b822fddee 100644 --- a/libsrc/conio/cputs.s +++ b/libsrc/conio/cputs.s @@ -23,31 +23,17 @@ _cputsxy: _cputs: sta ptr1 ; Save s stx ptr1+1 +L0: .if (.cpu .bitand CPU_ISET_65SC02) - -L0: lda (ptr1) ; (5) - beq L9 ; (7) Jump if done - jsr _cputc ; (13) Output char, advance cursor - inc ptr1 ; (18) Bump low byte - bne L0 ; (20) Next char - inc ptr1+1 ; (25) Bump high byte - bne L0 - + lda (ptr1) ; (5) .else - -L0: ldy #0 ; (2) -L1: lda (ptr1),y ; (7) - beq L9 ; (9) Jump if done - iny - sty tmp1 ; (14) Save offset - jsr _cputc ; (20) Output char, advance cursor - ldy tmp1 ; (23) Get offset - bne L1 ; (25) Next char - inc ptr1+1 ; (30) Bump high byte - bne L1 - + ldy #0 ; (2) + lda (ptr1),y ; (7) .endif - -; Done - + beq L9 ; (7/9) Jump if done + jsr _cputc ; (13/15) Output char, advance cursor + inc ptr1 ; (18/20) Bump low byte + bne L0 ; (20/22) Next char + inc ptr1+1 ; (25/27) Bump high byte + bne L0 L9: rts