;
-; 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);
 ;
         .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
         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
 
 @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
 .endproc
 
 
+;--------------------------------------------------------------------------
+
+.bss
+
+unit:   .res    1
+