A2osX/SBIN/SHELL.S.CL.txt

264 lines
4.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
CL.PrintPrompt >LDYA L.ENV.PS1
>SYSCALL GetEnv.YA
>SYSCALL ExpandStr.YA
phx
>SYSCALL PrintF.YA
>LDYA L.MSG.PROMPT
>SYSCALL PrintF.YA
plx
php
pha
txa
>SYSCALL FreeMem.A
pla
plp
rts
*--------------------------------------
CL.CHARIN tax
>LDA.G bEscMode
beq .13
cpx #'['
beq .9
lda #0
sta (pData),y Y=bEscMode
txa
ldx #EscChars.count-1
.17 cmp EscChars,x
beq .18
dex
bpl .17
clc
rts
.18 txa
asl
tax
jmp (J.ESC,x)
*--------------------------------------
.13 cpx #$20
bcc CL.CHARIN.CTRL
.1 cpx #$7f
bne .2
jmp CL.DEL
.2 jmp CL.Insert
.9 clc
rts
*--------------------------------------
CL.CHARIN.CTRL cpx #13 CR
bne .10
txa
>SYSCALL PutChar.A
lda #10
>SYSCALL PutChar.A
>LDA.G CmdBufPtr
tay
lda #0
sta (ZPCMDBuf),y
tya
>STA.G CmdBuflen
lda #$ff
>STA.G bCmdBufexec
clc
rts
.10 cpx #$1B esc
bne .11
lda #$ff
>STA.G bEscMode
clc
rts
.11 cpx #3 Ctrl-C
bne .12
jmp CL.CLR
.12 cpx #24 Ctrl-X
bne .13
jmp CL.SUPPR
.13 clc
rts
*--------------------------------------
CL.Insert >LDA.G CmdBuflen
cmp #CmdLine.MAX
beq .9 Buffer full, discard...
inc
sta (pData),y
pha
.1 ply
dey
lda (ZPCMDBuf),y Move from Ptr To end of buffer forward...
iny
sta (ZPCMDBuf),y
dey
phy
tya
>CMP.G CmdBufPtr
bne .1
ply Y=CmdBufPtr
* >LDA.G CmdBufPtr
txa
sta (ZPCMDBuf),y
>SYSCALL PutChar.A
>INC.G CmdBufPtr
jmp CL.PrintEOL
.9 clc
rts
*--------------------------------------
CL.CLR ldy #0
.1 lda (ZPCMDBuf),y
beq CL.RESET
.2 lda #$7F
sta (ZPCMDBuf),y
iny
lda (ZPCMDBuf),y
bne .2
jsr CL.PRINT
*--------------------------------------
CL.RESET lda #0
sta (ZPCMDBuf)
>STA.G bCmdBufexec
>STA.G CmdBufPtr
>STA.G CmdBuflen
>STA.G bSecureRead Clear password mode
rts
*--------------------------------------
CL.BS >LDA.G CmdBufPtr
beq .9
dec
sta (pData),y
lda #8
>SYSCALL PutChar.A
.9 rts
*--------------------------------------
CL.NAK >LDA.G CmdBufPtr
>CMP.G CmdBuflen
beq .9
inc
>STA.G CmdBufPtr
lda #21
>SYSCALL PutChar.A
.9 rts
*--------------------------------------
* Erase char UNDER cursor
*--------------------------------------
CL.SUPPR >LDA.G CmdBuflen
beq CL.PrintEOL.8
>LDA.G CmdBufPtr
bra CL.DEL.1
*--------------------------------------
* Erase char BEFORE cursor
*--------------------------------------
CL.DEL >LDA.G CmdBuflen
beq CL.PrintEOL.8
>LDA.G CmdBufPtr
beq CL.PrintEOL.8
lda #8
>SYSCALL PutChar.A
>DEC.G CmdBufPtr
CL.DEL.1 pha
.1 ply
iny
lda (ZPCMDBuf),y
dey
sta (ZPCMDBuf),y
iny
phy
tya
>CMP.G CmdBufLen
bne .1
pla
>DEC.G CmdBuflen
*--------------------------------------
CL.PrintEOL >LDA.G CmdBufPtr
.1 >CMP.G CmdBuflen
beq .2
pha
tay
lda (ZPCMDBuf),y
>SYSCALL PutChar.A
pla
inc
bra .1
.2 lda #' '
>SYSCALL PutChar.A
>LDA.G CmdBufPtr
.3 >CMP.G CmdBuflen
beq .4
pha
lda #8
>SYSCALL PutChar.A
pla
inc
bra .3
.4 lda #8
>SYSCALL PutChar.A
CL.PrintEOL.8 clc
rts
*--------------------------------------
CL.PRINT >LDYA ZPCMDBuf
>SYSCALL PrintF.YA
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/SHELL.S.CL
LOAD /A2OSX.SRC/SBIN/SHELL.S
ASM