From 263ae3ceb17339c99ccea751b9c06651a694ff5e Mon Sep 17 00:00:00 2001 From: Greg King Date: Mon, 23 Dec 2013 11:48:58 -0500 Subject: [PATCH 1/2] Made the CBM stdin consoles echo '\n' to the screen. That fix makes Commodore platforms be consistent with other platforms' consoles. --- libsrc/cbm/read.s | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/libsrc/cbm/read.s b/libsrc/cbm/read.s index 92d7ac6da..6227f7e0a 100644 --- a/libsrc/cbm/read.s +++ b/libsrc/cbm/read.s @@ -1,5 +1,6 @@ ; -; Ullrich von Bassewitz, 16.11.2002 +; 2002-11-16, Ullrich von Bassewitz +; 2013-12-18, Greg King ; ; int read (int fd, void* buf, unsigned count); ; @@ -7,7 +8,7 @@ .export _read .constructor initstdin - .import SETLFS, OPEN, CHKIN, BASIN, CLRCH, READST + .import SETLFS, OPEN, CHKIN, BASIN, CLRCH, BSOUT, READST .import rwcommon .import popax .importzp ptr1, ptr2, ptr3, tmp1, tmp2, tmp3 @@ -59,6 +60,11 @@ lda fdtab-LFN_OFFS,x; Get flags for this handle bmi eof +; Remember the device number. + + ldy unittab-LFN_OFFS,x + sty unit + ; Valid lfn. Make it the input file jsr CHKIN @@ -69,8 +75,13 @@ @L0: jsr BASIN sta tmp1 ; Save the input byte + ldx unit + bne @L0_1 ; Not keyboard/screen-editor + cmp #$0D ; Is it a Carriage Return? + bne @L0_1 + jsr BSOUT ; Yes, echo it (because editor didn't) - jsr READST ; Read the IEEE status +@L0_1: jsr READST ; Read the IEEE status sta tmp3 ; Save it and #%10111111 ; Check anything but the EOI bit bne devnotpresent ; Assume device not present @@ -138,4 +149,10 @@ invalidfd: .endproc +;-------------------------------------------------------------------------- + +.bss + +unit: .res 1 + From 50c626d02b014b885905caaa2beeffc8e9c9b4ba Mon Sep 17 00:00:00 2001 From: Greg King Date: Mon, 23 Dec 2013 12:20:28 -0500 Subject: [PATCH 2/2] Avoided a reload by using a second register. --- libsrc/cbm/read.s | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libsrc/cbm/read.s b/libsrc/cbm/read.s index 6227f7e0a..aa692a34a 100644 --- a/libsrc/cbm/read.s +++ b/libsrc/cbm/read.s @@ -1,6 +1,6 @@ ; ; 2002-11-16, Ullrich von Bassewitz -; 2013-12-18, Greg King +; 2013-12-23, Greg King ; ; int read (int fd, void* buf, unsigned count); ; @@ -52,12 +52,13 @@ adc #LFN_OFFS ; Carry is already clear tax lda fdtab-LFN_OFFS,x; Get flags for this handle + tay and #LFN_READ ; File open for writing? beq invalidfd ; Check the EOF flag. If it is set, don't read anything - lda fdtab-LFN_OFFS,x; Get flags for this handle + tya ; Get flags again bmi eof ; Remember the device number.