A2osX/BIN/SH.S.CL.txt

257 lines
4.2 KiB
Plaintext
Raw Normal View History

NEW
2019-06-02 08:58:46 +00:00
AUTO 3,1
.LIST OFF
*--------------------------------------
2019-01-26 21:46:39 +00:00
CL.Init >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPCLBuf
txa
2019-01-30 16:23:00 +00:00
>STA.G CL.hCLBuf
2019-10-03 06:25:27 +00:00
.9 rts
2019-01-26 21:46:39 +00:00
*--------------------------------------
2019-01-30 16:23:00 +00:00
CL.Quit >LDA.G CL.hCLBuf
2019-01-26 21:46:39 +00:00
beq .9
>SYSCALL FreeMem
.9 rts
*--------------------------------------
2019-04-16 15:54:56 +00:00
CL.PrintPrompt >LDYA L.PS1
2018-07-13 14:38:24 +00:00
>SYSCALL ExpandStr
2018-09-13 15:29:02 +00:00
bcs .9
phx
2018-09-13 15:29:02 +00:00
pha
>PUSHBI 0
pla
2018-06-21 15:12:10 +00:00
>SYSCALL printf
2018-09-13 15:29:02 +00:00
pla
>SYSCALL FreeMem
.1 >PUSHBI 0
>LDYA L.MSG.PROMPT
2018-06-21 15:12:10 +00:00
>SYSCALL printf
2018-09-13 15:29:02 +00:00
.9 rts
*--------------------------------------
CL.CHARIN tax
>LDA.G bEscMode
beq .13
cpx #'['
beq .9
lda #0
sta (pData),y Y=bEscMode
txa
2018-09-14 13:08:30 +00:00
ldx #EscChars.Cnt-1
.17 cmp EscChars,x
beq .18
dex
bpl .17
clc
rts
.18 txa
asl
tax
jmp (J.ESC,x)
*--------------------------------------
2019-01-23 16:26:48 +00:00
.13 cpx #C.SPACE
bcc CL.CHARIN.CTRL
2019-01-23 16:26:48 +00:00
.1 cpx #C.DEL
bne .2
2018-12-04 16:45:58 +00:00
jmp CL.DEL
.2 jmp CL.Insert
.9 clc
rts
*--------------------------------------
2018-09-09 08:11:42 +00: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
beq .18
2018-09-09 08:11:42 +00:00
.10 cpx #C.ESC
bne .11
lda #$ff
>STA.G bEscMode
clc
rts
.11 cpx #3 Ctrl-C
bne .12
jmp CL.CLR
2019-10-03 06:25:27 +00:00
2019-05-27 15:37:31 +00:00
.12 cpx #26 Ctrl-Z
bne .13
2018-12-04 16:45:58 +00:00
jmp CL.SUPPR
2019-02-18 06:42:17 +00:00
.18 lda #$ff
>STA.G CL.bReady
2019-10-03 06:25:27 +00:00
.13 clc
rts
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.Insert >LDA.G CL.Len
2019-08-15 12:48:58 +00:00
>CMP.G READ.N
beq .8 Buffer full, discard...
inc
2019-08-15 12:48:58 +00:00
>STA.G CL.Len
pha
.1 ply
dey
2019-10-03 06:25:27 +00:00
lda (ZPCLBuf),y Move from Ptr To end of buffer forward...
iny
sta (ZPCLBuf),y
dey
phy
tya
2018-11-10 14:30:09 +00:00
>CMP.G CL.Ptr
bne .1
2019-10-03 06:25:27 +00:00
ply Y=CL.Ptr
2018-11-10 14:30:09 +00:00
* >LDA.G CL.Ptr
txa
sta (ZPCLBuf),y
2019-02-18 06:42:17 +00:00
>INC.G CL.Ptr
2019-08-15 12:48:58 +00:00
>LDA.G bREAD.S
bmi .7
2019-10-03 06:25:27 +00:00
txa
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
2019-08-15 12:48:58 +00:00
jsr CL.PrintEOL
.7 >LDA.G READ.N READ N = 1, don't wait for CR
dec
bne .8
lda #$ff
>STA.G CL.bReady
.8 clc
rts
*--------------------------------------
CL.CLR lda (ZPCLBuf)
beq CL.RESET.1
2018-12-06 11:40:30 +00:00
.1 >LDA.G CL.Ptr
>CMP.G CL.Len
beq .2
inc
>STA.G CL.Ptr
lda #C.FS
>SYSCALL PutChar
bra .1
2018-12-06 11:40:30 +00:00
.2 ldy #0
.3 lda #C.DEL
sta (ZPCLBuf),y
iny
lda (ZPCLBuf),y
2018-12-06 11:40:30 +00:00
bne .3
2019-01-26 21:46:39 +00:00
jsr CL.PrintCLBuf
*--------------------------------------
CL.RESET lda #0
sta (ZPCLBuf)
2019-02-06 16:20:51 +00:00
CL.RESET.1 >STA.G CL.bReady
2018-11-10 14:30:09 +00:00
>STA.G CL.Ptr
>STA.G CL.Len
rts
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.BS >LDA.G CL.Ptr
beq .9
dec
sta (pData),y
2018-09-09 08:11:42 +00:00
lda #C.BS
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
.9 rts
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.NAK >LDA.G CL.Ptr
>CMP.G CL.Len
beq .9
inc
2018-11-10 14:30:09 +00:00
>STA.G CL.Ptr
2018-09-09 08:11:42 +00:00
lda #C.FS
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
.9 rts
*--------------------------------------
* Erase char UNDER cursor
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.SUPPR >LDA.G CL.Len
beq CL.PrintEOL.8
2018-11-10 14:30:09 +00:00
>LDA.G CL.Ptr
2018-11-24 18:20:48 +00:00
>CMP.G CL.Len
beq CL.PrintEOL.8
bra CL.DEL.1
*--------------------------------------
* Erase char BEFORE cursor
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.DEL >LDA.G CL.Len
beq CL.PrintEOL.8
2018-11-10 14:30:09 +00:00
>LDA.G CL.Ptr
beq CL.PrintEOL.8
2018-09-09 08:11:42 +00:00
lda #C.BS
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
2018-11-10 14:30:09 +00:00
>DEC.G CL.Ptr
CL.DEL.1 pha
.1 ply
iny
lda (ZPCLBuf),y
dey
sta (ZPCLBuf),y
iny
phy
tya
2018-11-10 14:30:09 +00:00
>CMP.G CL.Len
bne .1
pla
2018-11-10 14:30:09 +00:00
>DEC.G CL.Len
*--------------------------------------
2018-11-10 14:30:09 +00:00
CL.PrintEOL >LDA.G CL.Ptr
.1 >CMP.G CL.Len
beq .2
pha
tay
lda (ZPCLBuf),y
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
pla
inc
bra .1
.2 lda #' '
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
2018-11-10 14:30:09 +00:00
>LDA.G CL.Ptr
.3 >CMP.G CL.Len
beq .4
pha
2018-09-09 08:11:42 +00:00
lda #C.BS
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
pla
inc
bra .3
2018-09-09 08:11:42 +00:00
.4 lda #C.BS
2018-07-13 14:38:24 +00:00
>SYSCALL PutChar
2019-10-03 06:25:27 +00:00
CL.PrintEOL.8 clc
rts
*--------------------------------------
2019-01-26 21:46:39 +00:00
CL.PrintCLBuf >LDYA ZPCLBuf
>PUSHYA
ldy #S.PS.hStdOut
lda (pPs),y
>SYSCALL fputs
rts
*--------------------------------------
MAN
2019-02-08 16:13:43 +00:00
SAVE USR/SRC/BIN/SH.S.CL
LOAD USR/SRC/BIN/SH.S
ASM