changeset 98:ba0af2b8836b

fix sbc09 echo problem
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 27 Dec 2018 08:23:42 +0900
parents 5aeff8abca9c
children 92ed427b7f7d
files os9/level2/cmds/sbc09.asm
diffstat 1 files changed, 27 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/os9/level2/cmds/sbc09.asm	Thu Dec 27 01:17:31 2018 +0900
+++ b/os9/level2/cmds/sbc09.asm	Thu Dec 27 08:23:42 2018 +0900
@@ -41,13 +41,12 @@
 name     fcs   /Sbc09/
          fcb   edition
 
-start    
-         clr   <stdin
+start    clr   <stdin
          stx   <parmptr         save parameter pointer
          stu   <work            save parameter pointer
          lda   #READ.           read access mode
          os9   I$Open           open file
-         bcs   L0049            branch if error
+         lbcs   L0049            branch if error
          sta   <filepath        else save path to file
          stx   <parmptr         and updated parm pointer
 L001F    lda   <filepath        get path
@@ -88,9 +87,19 @@
          puls  x,y
          jmp   $400
  
-Exit     lbsr  setecho      
-         clrb
-         os9   F$Exit
+Exit     lbsr        setecho
+*        ldx         <work
+*        leax        readbuff,x
+*        ldb         #1
+*        lbsr         getline
+*        lbsr         getpoll
+*        lda        <stdin        
+*        os9        I$Close      
+
+        clrb
+        os9        F$Exit
+*       no return
+
 
 iotbl
          fdb   getchar-iotbl            ; 0
@@ -213,25 +222,20 @@
 
 getline                        * Input line at address in X, length in B.
         PSHS        A,B,X,Y
+        clr         ,s
 GETLN0
-        CLRA
-        TFR         D,Y
-        LDA         <stdin
+        ldy         ,s
+        clra   
         OS9         I$ReadLn
         BCS         GETLN0
         LEAY        -1,Y
-        TFR         Y,D
-*        LDA         D,X
-*        CMPA        #C$CR
-*        BNE         GETLN1
-*        LEAY        -1,Y
 GETLN1  STY         ,S
         PULS        A,B,X,Y,PC
 putline                        * Output string at address in X, length in B.
         PSHS        A,B,X,Y
         CLRA
         TFR         D,Y
-        LDA         <stdin
+        CLRA
         OS9         I$WritLn
         PULS        A,B,X,Y,PC
 xopenin
@@ -244,22 +248,23 @@
 setecho lda          #1
         bra          sss
 noecho  clra
-sss     pshs         a
-        sta          ,s
-        LDA         <stdin
+sss     leas         -128,s
+        leax        ,s
+        pshs         a
+        clra  
         ldb          #SS.Opt
-        LDX         <work
-        leax        readbuff,X
         OS9         I$GetStt
         bcs         err2
         LDA         ,s
         STA         PD.EKO-PD.OPT,X
 setopts
         ldb         #SS.Opt         
-        lda         <stdin
+        clra        
         OS9         I$SetStt
 err2
-        puls        a,pc
+        puls        a
+        leas        128,s
+        rts
 
 
 delay   PSHS        D,X  * address **$21** 
@@ -269,10 +274,6 @@
         OS9         F$Sleep
         PULS        D,X,PC
 
-exit    bsr        setecho
-        clrb
-        os9        F$Exit
-
 
          emod
 eom      equ   *