diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5038543c..b13773a7 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index d10f3e1a..c904fe0d 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -89,7 +89,7 @@ Ctrl.A >STZ.G bUpdateStatus jsr SCRN.LineBufOut bcs .9 -.8 jsr GetCh +.8 jsr IO.GetCh bcs .9 beq .8 @@ -460,7 +460,7 @@ Ctrl.Q >LDA.G bUnSaved jsr SCRN.LineBufOut bcs .9 -.1 jsr GetCh +.1 jsr IO.GetCh bcs .9 cmp #'a diff --git a/BIN/EDIT.S.DLG.txt b/BIN/EDIT.S.DLG.txt index c3942d97..8130c9b1 100644 --- a/BIN/EDIT.S.DLG.txt +++ b/BIN/EDIT.S.DLG.txt @@ -88,7 +88,7 @@ DLG.Open >STYA ZPPTR2 .9 rts *-------------------------------------- -DLG.Run jsr GetCh +DLG.Run jsr IO.GetCh bcs .9 cmp #3 diff --git a/BIN/EDIT.S.IO.txt b/BIN/EDIT.S.IO.txt new file mode 100644 index 00000000..0e5d3eb3 --- /dev/null +++ b/BIN/EDIT.S.IO.txt @@ -0,0 +1,184 @@ +NEW + AUTO 3,1 + .LIST OFF +*-------------------------------------- +IO.GetCh >SYSCALL GetChar + bcs .9 + + cmp #C.CR + bne IO.GetCh.1 + + ldy #S.PS.hStdIn Check for any extra LF + lda (pPS),y + >SYSCALL FEOF + bcs .9 + + tay + bne .8 + + >SYSCALL GetChar + bcs .9 + +.8 lda #C.CR + +* clc + +.9 rts +*-------------------------------------- +IO.GetCh.1 tax + + >LDA.G bEscMode + bmi .1 + + cpx #C.ESC + bne .8 + + lda #$ff + >STA.G bEscMode + + inc + clc + rts + +.1 >LDA.G bCSIMode + bmi .11 + + cpx #'[' \e[ ? + bne IO.GetCh.Esc + + lda #$ff + >STA.G bCSIMode + + inc + + sta (pData) #EscBufferPtr + + clc + rts +*-------------------------------------- +.11 lda (pData) #EscBufferPtr + cmp #15 + bcc .10 + +.19 >STZ.G bEscMode + >STA.G bCSIMode + + clc + rts + +.10 inc + sta (pData) + tay + + txa + sta (pData),y + cmp #64 + + bcs IO.GetCh.CSI + + ldx #0 + +.8 txa + clc + rts +*-------------------------------------- +IO.GetCh.Esc >STZ.G bEscMode + +IO.GetCh.Esc1 txa + + ldx #EscChars.Cnt-1 + +.1 cmp EscChars,x + beq .2 + + dex + bpl .1 + + lda #0 + clc + rts + +.2 lda EscAscii,x + clc + rts +*-------------------------------------- +* \e[A UP +* \e[B DOWN +* \e[C FOWARD +* \e[D BACK +* \e[xxx;yyyR DSR ("\e[I6n" reply) +*-------------------------------------- +IO.GetCh.CSI >STZ.G bEscMode + >STA.G bCSIMode + + cpx #'R' Response to cursor position query? + beq .3 + + bra IO.GetCh.Esc1 + +.3 stz TmpByte + + ldy #0 + +.4 iny + + lda (pData),y + cmp #';' + beq .5 + + jsr IO.GetCh.TmpByte10pA + bra .4 + +.5 phy + + lda TmpByte + >STA.G ScreenH + + dec Remove 2 (top & status bar) for viewportH + dec + + >STA.G ViewPortH + + dec + + >STA.G ViewPortHm1 Remove 1 more to store offsert to last line of viewport + + ply + stz TmpByte + +.6 iny + + lda (pData),y + cmp #'R' + beq .7 + + jsr IO.GetCh.TmpByte10pA + bra .6 + +.7 lda TmpByte + >STA.G ScreenW + +.8 lda #0 + clc + rts +*-------------------------------------- +IO.GetCh.TmpByte10pA + and #$0f + pha + lda TmpByte + asl + asl + clc + adc TmpByte + asl + sta TmpByte + pla + clc + adc TmpByte + sta TmpByte + rts +*-------------------------------------- +MAN +SAVE usr/src/bin/edit.s.io +LOAD usr/src/bin/edit.s +ASM diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 1a3b54c1..1f465481 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -150,7 +150,7 @@ CS.RUN >PUSHW L.MSG.TERMCAP >SYSCALL PrintF Send Query for term W & H bcs CS.INIT.RTS -.1 jsr GetCh +.1 jsr IO.GetCh bcs CS.INIT.RTS * beq .11 @@ -197,7 +197,7 @@ CS.RUN >PUSHW L.MSG.TERMCAP >STA.G hReplace *-------------------------------------- -CS.RUN.LOOP jsr GetCh +CS.RUN.LOOP jsr IO.GetCh bcs CS.RUN.RTS I/O error beq .8 @@ -293,189 +293,12 @@ CS.QUIT ldy #hLineBuf .8 clc rts -*-------------------------------------- -GetCh >SYSCALL GetChar - bcs .9 - - cmp #C.CR - bne GetCh.1 - - ldy #S.PS.hStdIn Check for any extra LF - lda (pPS),y - >SYSCALL FEOF - bcs .9 - - tay - bne .8 - - >SYSCALL GetChar - bcs .9 - -.8 lda #C.CR - -* clc - -.9 rts -*-------------------------------------- -GetCh.1 tax - - >LDA.G bEscMode - bmi .1 - - cpx #C.ESC - bne .8 - - lda #$ff - >STA.G bEscMode - - inc - clc - rts - -.1 >LDA.G bCSIMode - bmi .11 - - cpx #'[' \e[ ? - bne GetCh.Esc - - lda #$ff - >STA.G bCSIMode - - inc - - sta (pData) #EscBufferPtr - - clc - rts -*-------------------------------------- -.11 lda (pData) #EscBufferPtr - cmp #15 - bcc .10 - -.19 >STZ.G bEscMode - >STA.G bCSIMode - - clc - rts - -.10 inc - sta (pData) - tay - - txa - sta (pData),y - cmp #64 - - bcs GetCh.CSI - - ldx #0 - -.8 txa - clc - rts -*-------------------------------------- -GetCh.Esc >STZ.G bEscMode - -GetCh.Esc1 txa - - ldx #EscChars.Cnt-1 - -.1 cmp EscChars,x - beq .2 - - dex - bpl .1 - - lda #0 - clc - rts - -.2 lda EscAscii,x - clc - rts -*-------------------------------------- -* \e[A UP -* \e[B DOWN -* \e[C FOWARD -* \e[D BACK -* \e[xxx;yyyR DSR ("\e[I6n" reply) -*-------------------------------------- -GetCh.CSI >STZ.G bEscMode - >STA.G bCSIMode - - cpx #'R' Response to cursor position query? - beq .3 - - >DEBUG - - bra GetCh.Esc1 - -.3 stz TmpByte - - ldy #0 - -.4 iny - - lda (pData),y - cmp #';' - beq .5 - - jsr GetCh.TmpByte10pA - bra .4 - -.5 phy - - lda TmpByte - >STA.G ScreenH - - dec Remove 2 (top & status bar) for viewportH - dec - - >STA.G ViewPortH - - dec - - >STA.G ViewPortHm1 Remove 1 more to store offsert to last line of viewport - - ply - stz TmpByte - -.6 iny - - lda (pData),y - cmp #'R' - beq .7 - - jsr GetCh.TmpByte10pA - bra .6 - -.7 lda TmpByte - >STA.G ScreenW - -.8 lda #0 - clc - rts -*-------------------------------------- -GetCh.TmpByte10pA - and #$0f - pha - lda TmpByte - asl - asl - clc - adc TmpByte - asl - sta TmpByte - pla - clc - adc TmpByte - sta TmpByte - rts *-------------------------------------- .INB usr/src/bin/edit.s.buf .INB usr/src/bin/edit.s.ctrl .INB usr/src/bin/edit.s.dlg .INB usr/src/bin/edit.s.file + .INB usr/src/bin/edit.s.io .INB usr/src/bin/edit.s.scrn *-------------------------------------- CS.END