📄 5.s
字号:
.area text
; c -> 8,SP
; endchar -> 14,SP
; uminus -> 16,SP
; enddigit -> 18,SP
; oldval -> 20,SP
; val -> 24,SP
; base -> 34,SP
; end -> 32,SP
; s -> 28,SP
_strtol::
pshd
leas -28,S
leax 24,S
movw #0,0,x
movw #0,2,x
bra L3
L2:
ldy 28,S
iny
sty 28,S
L3:
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; tfr Y,D
jsr _isspace
; tfr D,X
; stx 0,V
; ldy 0,V
; tfr X,Y
; tfr D,Y
; cpy #0
cpd #0
bne L2
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #0
cpd #0
beq L8
ldy 34,S
cpy #0
beq L5
ldy #1
cpy 34,S
bge L8
ldy 34,S
cpy #36
ble L5
L8:
ldy 32,S
cpy #0
beq L9
ldy 28,S
ldx 32,S
; ldy 0,F
; ldx 4,F
sty 0,X
L9:
movw #0,2,-S
movw #0,2,-S
ldd #30
jmp lret
lbra L1
L5:
leay 16,S
movw #0,0,y
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #45
cpd #45
bne L11
ldy 28,S
iny
sty 28,S
leax 16,S
movw #1,0,x
; ldy 0,F
; iny
; sty 0,F
; movw #1,-12,F
bra L12
L11:
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #43
cpd #43
bne L13
ldy 28,S
iny
sty 28,S
L13:
L12:
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #48
cpd #48
bne L15
ldy 28,S
iny
ldab 0,Y
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
std 2,S
cpd #88
; tfr D,Y
; sty 1,V
; std 1,V
; ldy 1,V
; tfr D,Y
; cpy #88
; cpd #88
beq L17
ldy 2,S
cpy #120
bne L15
L17:
ldy 34,S
cpy #16
beq L18
ldy 34,S
cpy #0
bne L15
L18:
leax 34,S
movw #16,0,x
; ldy 0,F
; tfr Y,D
ldd 28,S
addd #2
; tfr D,Y
; sty 0,F
std 28,S
L15:
ldy 34,S
cpy #0
bne L19
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #48
cpd #48
bne L22
movw #8,12,S
bra L23
L22:
movw #10,12,S
L23:
leax 34,S
movw 12,S,0,x
L19:
ldy 34,S
cpy #10
blt L25
movw #57,10,S
bra L26
L25:
ldy 34,S
dey
tfr Y,D
addd #48
; tfr D,Y
; sty -18,F
std 10,S
L26:
leay 18,S
movw 10,S,0,y
ldy 34,S
cpy #10
lble L32
; ldy 6,F
; tfr Y,D
ldd 34,S
subd #11
; tfr D,Y
; tfr Y,D
addd #97
; tfr D,Y
; sty -14,F
std 14,S
lbra L32
L29:
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; tfr Y,D
jsr _isdigit
; tfr D,X
; stx 2,V
; ldy 2,V
; tfr X,Y
; tfr D,Y
; cpy #0
cpd #0
beq L33
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy -10,F
cpd 18,S
bgt L33
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; tfr Y,D
subd #48
; tfr D,Y
; sty -20,F
std 8,S
bra L34
L33:
ldy 34,S
cpy #10
lble L31
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; tfr Y,D
jsr _tolower
; tfr D,X
; stx 3,V
std 0,S
movw 0,S,8,S
ldy 0,S
cpy #97
; tfr D,X
; stx 3,V
; movw 3,V,-20,F
; ldy 3,V
; cpy #97
lblt L31
ldy 8,S
cpy 14,S
lbgt L31
; ldy -20,F
; tfr Y,D
ldd 8,S
subd #97
; tfr D,Y
; tfr Y,D
addd #10
; tfr D,Y
; sty -20,F
std 8,S
L36:
L34:
ldd 26,S
pshd
ldd 26,S
pshd
puld
std 22,S
puld
std 22,S
ldd 26,S
pshd
ldd 26,S
pshd
; ldy 6,F
; tfr Y,D
ldd 38,S
jsr int2long
jsr mul4
; ldy -20,F
; tfr Y,D
ldd 12,S
jsr int2long
jsr add4
puld
std 26,S
puld
std 26,S
ldd 26,S
pshd
ldd 26,S
pshd
ldd 26,S
pshd
ldd 26,S
pshd
jsr cmp4
bge L37
movw #2,_errno
ldy 16,S
; movw #2,_errno
; ldy -12,F
cpy #0
beq L40
movw #0,4,S
movw #32768,6,S
bra L41
L40:
movw #65535,4,S
movw #32767,6,S
L41:
ldd 6,S
pshd
ldd 6,S
pshd
ldd #30
jmp lret
lbra L1
L37:
L30:
ldy 28,S
iny
sty 28,S
L32:
ldab [28,S]
; tfr B,Y
; tfr Y,D
; tfr B,D
clra
; tfr D,Y
; cpy #0
cpd #0
lbne L29
L31:
ldy 32,S
cpy #0
beq L42
ldy 28,S
ldx 32,S
; ldy 0,F
; ldx 4,F
sty 0,X
L42:
ldy 16,S
cpy #0
beq L45
ldd 26,S
pshd
ldd 26,S
pshd
jsr neg4
puld
std 8,S
puld
std 8,S
bra L46
L45:
ldd 26,S
pshd
ldd 26,S
pshd
puld
std 8,S
puld
std 8,S
L46:
ldd 8,S
pshd
ldd 8,S
pshd
ldd #30
jmp lret
L1:
leas 30,S
rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -