You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

283 lines
2.8 KiB

extrn .begin,.chl,.swt
extrn csave,cret,.move
PUBLIC memcmp_
memcmp_: lxi d,.2
call csave
LXI H,8-.2
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,2-.2
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,10-.2
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,0-.2
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,0
XCHG
LXI H,-2-.2
DAD SP
MOV M,E
INX H
MOV M,D
JMP .4
.3:
LXI H,-2-.2
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.4:
LXI H,-2-.2
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,12-.2
DAD SP
MOV A,M
INX H
MOV H,M
MOV L,A
CALL .lt
JZ .5
LXI H,0-.2
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
MOV E,M
MVI D,0
PUSH D
LXI H,4-.2
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
MOV E,M
MVI D,0
POP H
CALL .ne
JZ .6
LXI H,0
RET
.6:
JMP .3
.5:
LXI H,1
RET
.2 EQU -6
PUBLIC memcpy_
memcpy_: lxi d,.7
call csave
LXI H,10-.7
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,2-.7
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,8-.7
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,0-.7
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,0
XCHG
LXI H,-2-.7
DAD SP
MOV M,E
INX H
MOV M,D
JMP .9
.8:
LXI H,-2-.7
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.9:
LXI H,-2-.7
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,12-.7
DAD SP
MOV A,M
INX H
MOV H,M
MOV L,A
CALL .lt
JZ .10
LXI H,2-.7
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
MOV E,M
PUSH D
LXI H,2-.7
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
POP D
MOV M,E
JMP .8
.10:
RET
.7 EQU -6
PUBLIC memset_
memset_: lxi d,.11
call csave
LXI H,8-.11
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,2-.11
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,0
XCHG
LXI H,0-.11
DAD SP
MOV M,E
INX H
MOV M,D
JMP .13
.12:
LXI H,0-.11
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.13:
LXI H,0-.11
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,12-.11
DAD SP
MOV A,M
INX H
MOV H,M
MOV L,A
CALL .ul
JZ .14
LXI H,10-.11
DAD SP
MOV E,M
PUSH D
LXI H,4-.11
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
POP D
MOV M,E
JMP .12
.14:
RET
.11 EQU -4
extrn .ne
extrn .lt
extrn .ul
END