A2osX/SHARED/X.STRESC.S.txt

165 lines
2.1 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
*--------------------------------------
*
*
*
*--------------------------------------
X.STRESC >STYA ZPPtr1 In
>STYA ZPPtr2 Out
ldy #0
.1 lda (ZPPtr1)
beq .8
jsr X.STRESC.IncPtr1
cmp #'\'
bne .6
lda (ZPPtr1)
beq .7
ldx #X.STRESC.EscCharsCnt-1
.2 cmp X.STRESC.EscChars,x
beq .5
dex
bpl .2
stz ZPTmpByte
jsr X.STRESC.ToUC
cmp #'X'
bne .3
.20 jsr X.STRESC.IncPtr1
lda (ZPPtr1)
beq .40
jsr X.STRESC.IsHex
bcs .40
asl ZPTmpByte
asl ZPTmpByte
asl ZPTmpByte
asl ZPTmpByte
ora ZPTmpByte
sta ZPTmpByte
bra .20
.3 jsr X.STRESC.IsOct
bcs .40
jsr X.STRESC.IncPtr1
asl ZPTmpByte
asl ZPTmpByte
asl ZPTmpByte
ora ZPTmpByte
sta ZPTmpByte
lda (ZPPtr1)
bne .3
.40 lda ZPTmpByte
bra .6
.4 tax
lda #'\'
sta (ZPPtr2),y
iny
txa
bra .6
.5 lda X.STRESC.EscCodes,x
jsr X.STRESC.IncPtr1
.6 sta (ZPPtr2),y
iny
bra .1
.7 lda #'\'
sta (ZPPtr2),y
iny
lda #0
.8 sta (ZPPtr2),y
>LDYA ZPPtr2
rts
*--------------------------------------
X.STRESC.IncPtr1
inc ZPPtr1
bne .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
X.STRESC.ToUC cmp #'a'
bcc .8
cmp #'z'+1
bcs .8
eor #$20
.8 rts
*--------------------------------------
X.STRESC.IsOct cmp #'0'
bcc .9
cmp #'7'+1
bcs .9
and #%00000111
clc
rts
.9 sec
rts
*--------------------------------------
X.STRESC.IsHex cmp #'0'
bcc .9
cmp #'9'+1
bcc .8
cmp #'A'
bcc .9
cmp #'Z'+1
bcc .7
cmp #'a'
bcc .9
cmp #'z'+1
bcc .9
* sec
sbc #$20
.7 sec
sbc #'A'-10
.8 and #$0F
clc
rts
.9 sec
rts
*--------------------------------------
MAN
SAVE usr/src/shared/x.stresc.s
ASM