A2osX/BIN/SH.S.CL.txt

344 lines
5.1 KiB
Plaintext
Raw Normal View History

NEW
2019-06-02 10:58:46 +02:00
AUTO 3,1
.LIST OFF
*--------------------------------------
2019-01-26 21:46:39 +00:00
CL.Init >LDYAI 256
>SYSCALL GetMem
bcs .9
2021-05-11 20:44:13 +02:00
2019-01-26 21:46:39 +00:00
>STYA ZPCLBuf
txa
2021-05-14 22:58:20 +02:00
>STA.G CL.hBuf
2021-05-11 20:44:13 +02:00
2019-10-03 08:25:27 +02:00
.9 rts
2019-01-26 21:46:39 +00:00
*--------------------------------------
2020-02-14 08:21:56 +01:00
CL.PrintPrompt >PUSHW L.PS1
>PUSHWI 0
2020-01-17 12:23:11 +01:00
>SYSCALL Expand
2018-09-13 17:29:02 +02:00
bcs .9
2020-02-14 08:21:56 +01:00
phx
2020-02-14 08:21:56 +01:00
>PUSHYA
2018-09-13 17:29:02 +02:00
>PUSHBI 0
2020-02-14 08:21:56 +01:00
2020-02-28 08:21:46 +01:00
>SYSCALL PrintF
2018-09-13 17:29:02 +02:00
pla
>SYSCALL FreeMem
2020-02-14 08:21:56 +01:00
.1 >PUSHW L.MSG.PROMPT
>PUSHBI 0
2020-02-28 08:21:46 +01:00
>SYSCALL PrintF
2018-09-13 17:29:02 +02:00
.9 rts
*--------------------------------------
2020-02-14 08:21:56 +01:00
CL.READN0A tax
CL.READN0X
>PUSHW ZPCLBuf
2019-10-31 14:18:38 +01:00
>PUSHW L.FMT.Byte
2020-02-14 08:21:56 +01:00
txa
>PUSHA
>PUSHBI 1
2020-03-09 17:24:08 +01:00
>SYSCALL SPrintF
2019-10-31 14:18:38 +01:00
bcs .9
lda #$ff
>STA.G CL.bReady
* clc
.9 rts
*--------------------------------------
CL.CHARIN tax
2019-10-31 14:18:38 +01:00
>LDA.G CL.bEscMode \e ?
2019-11-04 08:21:40 +01:00
beq .4
cpx #'['
2019-10-31 14:18:38 +01:00
beq .8 \e[
lda #0
sta (pData),y Y=bEscMode
txa
2018-09-14 15:08:30 +02:00
ldx #EscChars.Cnt-1
2019-11-04 08:21:40 +01:00
.1 cmp EscChars,x
beq .2
2019-10-31 14:18:38 +01:00
dex
2019-11-04 08:21:40 +01:00
bpl .1
2019-10-31 14:18:38 +01:00
.8 rts invalid \e[ sequence
2021-05-11 20:44:13 +02:00
.2 >LDA.G CL.MaxCnt
2019-11-04 08:21:40 +01:00
bne .3
2019-10-31 14:18:38 +01:00
lda EscChars.Remap,x
bra CL.READN0A
2019-11-04 08:21:40 +01:00
.3 txa
asl
tax
jmp (J.ESC,x)
*--------------------------------------
2019-11-04 08:21:40 +01:00
.4 cpx #C.ESC
bne .5
2019-10-31 14:18:38 +01:00
lda #$ff
>STA.G CL.bEscMode
clc
rts
2021-05-11 20:44:13 +02:00
.5 >LDA.G CL.MaxCnt
2019-10-31 14:18:38 +01:00
beq CL.READN0X
cpx #C.SPACE
bcc CL.CHARIN.CTRL
2019-11-04 08:21:40 +01:00
cpx #C.DEL
2019-10-31 14:18:38 +01:00
bne CL.Insert
*--------------------------------------
* Erase char BEFORE cursor
*--------------------------------------
>LDA.G CL.Len
beq .8
2021-05-11 20:44:13 +02:00
2019-10-31 14:18:38 +01:00
>LDA.G CL.Ptr
beq .8
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
2019-11-04 08:21:40 +01:00
bmi .6
2019-10-31 14:18:38 +01:00
lda #C.BS
>SYSCALL PutChar
2019-11-04 08:21:40 +01:00
.6 >DEC.G CL.Ptr
2018-12-04 17:45:58 +01:00
jmp CL.DEL
2019-10-31 14:18:38 +01:00
*--------------------------------------
CL.Insert >LDA.G CL.Len
2021-05-11 20:44:13 +02:00
>CMP.G CL.MaxCnt
2019-10-31 14:18:38 +01:00
beq .8 Buffer full, discard...
inc
>STA.G CL.Len
pha
2019-11-04 08:21:40 +01:00
2019-10-31 14:18:38 +01:00
.1 ply
dey
lda (ZPCLBuf),y Move from Ptr To end of buffer forward...
iny
sta (ZPCLBuf),y
dey
phy
tya
>CMP.G CL.Ptr
bne .1
ply Y=CL.Ptr
2019-11-04 08:21:40 +01:00
2019-10-31 14:18:38 +01:00
* >LDA.G CL.Ptr
2019-10-31 14:18:38 +01:00
txa
sta (ZPCLBuf),y
>INC.G CL.Ptr
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
2019-10-31 14:18:38 +01:00
bmi .7
2019-11-04 08:21:40 +01:00
2019-10-31 14:18:38 +01:00
txa
2021-05-14 22:58:20 +02:00
2019-10-31 14:18:38 +01:00
>SYSCALL PutChar
2021-05-14 22:58:20 +02:00
bcs .9
2019-10-31 14:18:38 +01:00
jsr CL.PrintEOL
2021-05-11 20:44:13 +02:00
.7 >LDA.G CL.MaxCnt READ N = 1, don't wait for CR
2019-10-31 14:18:38 +01:00
dec
bne .8
2019-11-04 08:21:40 +01:00
2019-10-31 14:18:38 +01:00
lda #$ff
>STA.G CL.bReady
2019-11-04 08:21:40 +01:00
2019-10-31 14:18:38 +01:00
.8 clc
2021-05-14 22:58:20 +02:00
.9 rts
*--------------------------------------
2018-09-09 10:11:42 +02:00
CL.CHARIN.CTRL cpx #C.CR
2019-02-18 06:42:17 +00:00
beq .18
2019-02-18 06:42:17 +00:00
cpx #C.EOF
2021-05-11 20:44:13 +02:00
beq .19
2019-10-18 13:41:27 +02:00
2019-10-31 14:18:38 +01:00
cpx #3 Ctrl-C
2019-10-18 13:41:27 +02:00
beq CL.CLR
2019-10-03 08:25:27 +02:00
2021-04-29 13:56:34 +02:00
cpx #C.TAB
bne .1
jmp HIS.Select
.1 cpx #26 Ctrl-Z
2019-10-31 14:18:38 +01:00
bne .8
2018-12-04 17:45:58 +01:00
jmp CL.SUPPR
2019-10-18 13:41:27 +02:00
2019-10-18 17:07:14 +02:00
.18 jsr CheckLFAfterCR Check for any extra LF
2019-10-18 13:41:27 +02:00
bcs .9
2021-05-11 20:44:13 +02:00
.19 lda #$ff
2019-02-18 06:42:17 +00:00
>STA.G CL.bReady
2019-10-18 13:41:27 +02:00
2019-10-31 14:18:38 +01:00
.8 clc
2019-10-18 13:41:27 +02:00
.9 rts
*--------------------------------------
CL.CLR lda (ZPCLBuf)
2020-03-09 17:24:08 +01:00
beq CL.Reset.1
2019-11-01 21:06:04 +01:00
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
2021-05-14 22:58:20 +02:00
bmi CL.Reset
2019-10-18 13:41:27 +02:00
.1 >LDA.G CL.Ptr
>CMP.G CL.Len
beq .2
2021-05-14 22:58:20 +02:00
2019-10-18 13:41:27 +02:00
inc
>STA.G CL.Ptr
lda #C.FS
>SYSCALL PutChar
bra .1
.2 ldy #0
.3 lda #C.DEL
sta (ZPCLBuf),y
iny
lda (ZPCLBuf),y
bne .3
2021-05-14 22:58:20 +02:00
jsr CL.Print
2019-10-18 13:41:27 +02:00
*--------------------------------------
2020-03-09 17:24:08 +01:00
CL.Reset lda #0
2019-10-18 13:41:27 +02:00
sta (ZPCLBuf)
2020-08-20 15:20:33 +02:00
CL.Reset.1 lda #0
2021-05-14 22:58:20 +02:00
2020-08-20 15:20:33 +02:00
ldy #CL.Ptr
.1 sta (pData),y
iny
cpy #CL.bEscMode+1
bne .1
2019-10-31 14:18:38 +01:00
rts
*--------------------------------------
2021-05-11 20:44:13 +02:00
CL.ReadResetV sec Verbose mode
CL.ReadReset lda #$ff
>STA.G CL.MaxCnt
2021-05-14 22:58:20 +02:00
2021-05-11 20:44:13 +02:00
adc #0 CC = silent
2021-05-14 22:58:20 +02:00
2021-05-11 20:44:13 +02:00
iny CL.bSilent
sta (pData),y
rts
*--------------------------------------
2018-11-10 15:30:09 +01:00
CL.BS >LDA.G CL.Ptr
beq .9
2019-11-04 08:21:40 +01:00
dec
sta (pData),y
2019-11-04 08:21:40 +01:00
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
2019-11-01 21:06:04 +01:00
bmi .9
2019-11-04 08:21:40 +01:00
2018-09-09 10:11:42 +02:00
lda #C.BS
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
.9 rts
*--------------------------------------
2018-11-10 15:30:09 +01:00
CL.NAK >LDA.G CL.Ptr
>CMP.G CL.Len
beq .9
2021-05-11 20:44:13 +02:00
inc
2018-11-10 15:30:09 +01:00
>STA.G CL.Ptr
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
2019-11-01 21:06:04 +01:00
bmi .9
2021-05-11 20:44:13 +02:00
2018-09-09 10:11:42 +02:00
lda #C.FS
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
2021-05-11 20:44:13 +02:00
.9 rts
*--------------------------------------
* Erase char UNDER cursor
*--------------------------------------
2018-11-10 15:30:09 +01:00
CL.SUPPR >LDA.G CL.Len
beq CL.PrintEOL.8
2018-11-10 15:30:09 +01:00
>LDA.G CL.Ptr
2018-11-24 19:20:48 +01:00
>CMP.G CL.Len
beq CL.PrintEOL.8
*--------------------------------------
2019-10-31 14:18:38 +01:00
CL.DEL pha
.1 ply
iny
lda (ZPCLBuf),y
dey
sta (ZPCLBuf),y
iny
phy
tya
2018-11-10 15:30:09 +01:00
>CMP.G CL.Len
bne .1
2021-05-11 20:44:13 +02:00
pla
2021-05-11 20:44:13 +02:00
2018-11-10 15:30:09 +01:00
>DEC.G CL.Len
2021-05-11 20:44:13 +02:00
>LDA.G CL.bSilent
bmi CL.PrintEOL.8
*--------------------------------------
2018-11-10 15:30:09 +01:00
CL.PrintEOL >LDA.G CL.Ptr
2020-08-11 20:55:28 +02:00
2018-11-10 15:30:09 +01:00
.1 >CMP.G CL.Len
beq .2
2020-08-11 20:55:28 +02:00
pha
tay
lda (ZPCLBuf),y
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
pla
inc
bra .1
2020-05-06 17:28:09 +02:00
.2 lda #C.SPACE
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
2018-11-10 15:30:09 +01:00
>LDA.G CL.Ptr
2020-08-11 20:55:28 +02:00
2018-11-10 15:30:09 +01:00
.3 >CMP.G CL.Len
beq .4
2020-08-11 20:55:28 +02:00
pha
2018-09-09 10:11:42 +02:00
lda #C.BS
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
pla
inc
bra .3
2020-08-11 20:55:28 +02:00
2018-09-09 10:11:42 +02:00
.4 lda #C.BS
2018-07-13 16:38:24 +02:00
>SYSCALL PutChar
2019-10-03 08:25:27 +02:00
CL.PrintEOL.8 clc
rts
*--------------------------------------
2021-05-14 22:58:20 +02:00
CL.Print ldy #S.PS.hStdOut
2020-02-28 08:21:46 +01:00
lda (pPS),y
2020-08-25 12:56:00 +02:00
>PUSHA
>PUSHW ZPCLBuf
2020-03-09 17:24:08 +01:00
>SYSCALL FPutS
rts
*--------------------------------------
MAN
2020-05-26 16:23:09 +02:00
SAVE usr/src/bin/sh.s.cl
LOAD usr/src/bin/sh.s
ASM