10.s

来自「从iccavr7中破解得到的lib库源代码」· S 代码 · 共 302 行

S
302
字号
	.area text
;              c -> -20,SP
;        endchar -> -14,SP
;         uminus -> -12,SP
;       enddigit -> -10,SP
;         oldval -> -8,SP
;            val -> -4,SP
;           base -> 6,SP
;            end -> 4,SP
;              s -> 0,SP
_strtol::
	pshd
	movcl #0,-4,F
	bra L3
L2:
	ldy 0,F
	iny
	sty 0,F
L3:
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	tfr Y,D
	jsr _isspace
	tfr D,X
	stx -1442840576,V
	ldy -1442840576,V
	cpy #0
	bne L2
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #0
	beq L8
	ldy 6,F
	cpy #0
	beq L5
	ldy #1
	cpy 6,F
	bge L8
	ldy 6,F
	cpy #36
	ble L5
L8:
	ldy 4,F
	cpy #0
	beq L9
	ldy 0,F
	ldx 4,F
	sty 0,X
L9:
	pshmvc4 #0
	ldd #2
	jmp lret
	lbra L1
L5:
	movw #0,-12,F
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #45
	bne L11
	ldy 0,F
	iny
	sty 0,F
	movw #1,-12,F
	bra L12
L11:
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #43
	bne L13
	ldy 0,F
	iny
	sty 0,F
L13:
L12:
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #48
	bne L15
	ldy 0,F
	iny
	ldab 0,Y
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	sty -1442840575,V
	ldy -1442840575,V
	cpy #88
	beq L17
	ldy -1442840575,V
	cpy #120
	bne L15
L17:
	ldy 6,F
	cpy #16
	beq L18
	ldy 6,F
	cpy #0
	bne L15
L18:
	movw #16,6,F
	ldy 0,F
	tfr Y,D
	addd #2
	tfr D,Y
	sty 0,F
L15:
	ldy 6,F
	cpy #0
	bne L19
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #48
	bne L22
	movw #8,-16,F
	bra L23
L22:
	movw #10,-16,F
L23:
	movw -16,F,6,F
L19:
	ldy 6,F
	cpy #10
	blt L25
	movw #57,-18,F
	bra L26
L25:
	ldy 6,F
	dey
	tfr Y,D
	addd #48
	tfr D,Y
	sty -18,F
L26:
	movw -18,F,-10,F
	ldy 6,F
	cpy #10
	lble L32
	ldy 6,F
	tfr Y,D
	subd #11
	tfr D,Y
	tfr Y,D
	addd #97
	tfr D,Y
	sty -14,F
	lbra L32
L29:
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	tfr Y,D
	jsr _isdigit
	tfr D,X
	stx -1442840574,V
	ldy -1442840574,V
	cpy #0
	beq L33
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy -10,F
	bgt L33
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	tfr Y,D
	subd #48
	tfr D,Y
	sty -20,F
	bra L34
L33:
	ldy 6,F
	cpy #10
	lble L31
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	tfr Y,D
	jsr _tolower
	tfr D,X
	stx -1442840573,V
	movw -1442840573,V,-20,F
	ldy -1442840573,V
	cpy #97
	lblt L31
	ldy -20,F
	cpy -14,F
	lbgt L31
	ldy -20,F
	tfr Y,D
	subd #97
	tfr D,Y
	tfr Y,D
	addd #10
	tfr D,Y
	sty -20,F
L36:
L34:
	psh4 -4,F
	pop4 -8,F
	stk #0
	psh4 -4,F
	ldy 6,F
	tfr Y,D
	libc int2long
	stk #4
	libc mul4
	stk #65532
	ldy -20,F
	tfr Y,D
	libc int2long
	stk #4
	libc add4
	stk #65532
	pop4 -4,F
	stk #0
	psh4 -4,F
	psh4 -8,F
	libc cmp4
	stk #65528
	bge L37
	movw #2,_errno
	ldy -12,F
	cpy #0
	beq L40
	movcl #0,-24,F
	bra L41
L40:
	movcl #65535,-24,F
L41:
	psh4 -24,F
	ldd #2
	jmp lret
	lbra L1
L37:
L30:
	ldy 0,F
	iny
	sty 0,F
L32:
	ldab [0,F]
	tfr B,Y
	tfr Y,D
	clra
	tfr D,Y
	cpy #0
	lbne L29
L31:
	ldy 4,F
	cpy #0
	beq L42
	ldy 0,F
	ldx 4,F
	sty 0,X
L42:
	ldy -12,F
	cpy #0
	beq L45
	psh4 -4,F
	libc neg4
	pop4 -22,F
	stk #0
	bra L46
L45:
	psh4 -4,F
	pop4 -22,F
	stk #0
L46:
	psh4 -22,F
	ldd #2
	jmp lret
L1:
	leas 2,S
	rts

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?