From b0687bbbf5715668d9e1d5409028ea4aff67854e Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 13 Sep 2001 16:01:32 +0000 Subject: [PATCH] Added the hack for write() to make printf work git-svn-id: svn://svn.cc65.org/cc65/trunk@907 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/c128/Makefile | 3 ++- libsrc/c128/mouse.s | 12 ++++------- libsrc/c128/write.s | 47 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 libsrc/c128/write.s diff --git a/libsrc/c128/Makefile b/libsrc/c128/Makefile index 05559bb3f..e20a5d342 100644 --- a/libsrc/c128/Makefile +++ b/libsrc/c128/Makefile @@ -21,7 +21,8 @@ OBJS = _scrsize.o \ cputc.o \ kbhit.o \ mouse.o \ - readjoy.o + readjoy.o \ + write.o all: $(OBJS) diff --git a/libsrc/c128/mouse.s b/libsrc/c128/mouse.s index 493d297fc..50ebc54fe 100644 --- a/libsrc/c128/mouse.s +++ b/libsrc/c128/mouse.s @@ -13,7 +13,7 @@ .condes MouseIRQ, 2 .import _readjoy - .import popa, popax, addysp1 + .import popax, addysp1 .importzp ptr1, sp, sreg .include "c128.inc" @@ -36,14 +36,10 @@ XCORR = SPRITE_WIDTH ; -------------------------------------------------------------------------- ; -; unsigned char __fastcall__ mouse_init (unsigned char port, -; unsigned char type); +; unsigned char __fastcall__ mouse_init (unsigned char type); ; .proc _mouse_init - - jsr popa ; Ignore type and port - lda Initialized ; Already initialized? bne AlreadyInitialized ; Jump if yes @@ -155,7 +151,7 @@ AlreadyInitialized: lda VIC_SPR_ENA ; Get sprite enable register ora #$01 ; Enable sprite #0 sta VIC_SPR_ENA ; Write back - cli ; Enable interrupts + cli ; Enable interrupts @L1: rts @@ -320,7 +316,7 @@ AlreadyInitialized: ; -------------------------------------------------------------------------- ; ; Mouse interrupt handler -; +; IRQDone:rts diff --git a/libsrc/c128/write.s b/libsrc/c128/write.s new file mode 100644 index 000000000..9a574f32c --- /dev/null +++ b/libsrc/c128/write.s @@ -0,0 +1,47 @@ +; +; Ullrich von Bassewitz, 30.05.1998 +; +; int write (int fd, const void* buf, int count); +; +; THIS IS A HACK! +; + + .export _write + .import popax + .importzp ptr1, ptr2, ptr3 + + .include "../cbm/cbm.inc" + +_write: jsr popax ; get count + sta ptr2 + stx ptr2+1 ; save it for later + sta ptr3 + stx ptr3+1 ; save for function result + jsr popax ; get buf + sta ptr1 + stx ptr1+1 + jsr popax ; get fd and discard it + +L1: lda ptr2 + ora ptr2+1 ; count zero? + beq L9 + ldy #0 + lda (ptr1),y + jsr BSOUT + inc ptr1 + bne L2 + inc ptr1+1 +L2: lda ptr2 + bne L3 + dec ptr2 + dec ptr2+1 + jmp L1 +L3: dec ptr2 + jmp L1 + +; No error, return count + +L9: lda ptr3 + ldx ptr3+1 + rts + -- 2.39.5