V7/usr/src/games/chess/qsort.s
/ qsort interfact to c
/ qsort(from, to)
.globl _qsort
_qsort:
mov 2(sp),r1
mov 4(sp),r2
jsr pc,qsort
rts pc
qsort:
mov r2,r3
sub r1,r3
cmp r3,$4
ble done
asr r3
bic $3,r3
add r1,r3
mov r1,-(sp)
mov r2,-(sp)
loop:
cmp r1,r3
bhis loop1
cmp (r1),(r3)
bgt loop1
add $4,r1
br loop
loop1:
cmp r2,r3
blos 1f
sub $4,r2
mov r2,r0
cmp (r0),(r3)
bge loop1
mov (r1),r0
mov (r2),(r1)+
mov r0,(r2)+
mov (r1),r0
mov (r2),(r1)
mov r0,(r2)
cmp -(r1),-(r2)
cmp r1,r3
bne loop
mov r2,r3
br loop
1:
cmp r1,r3
beq 1f
mov (r1),r0
mov (r2),(r1)+
mov r0,(r2)+
mov (r1),r0
mov (r2),(r1)
mov r0,(r2)
cmp -(r1),-(r2)
mov r1,r3
br loop1
1:
mov (sp)+,r2
mov r3,-(sp)
mov r3,r1
add $4,r1
jsr pc,qsort
mov (sp)+,r2
mov (sp)+,r1
br qsort
done:
rts pc
rti = 2
/ itinit()
.globl _itinit
.globl _intrp, _term
signal = 48.
time = 13.
_itinit:
sys signal; 1; 1
bit $1,r0
bne 1f
sys signal; 1; _onhup
1:
sys signal; 2; 1
bit $1,r0
bne 1f
sys signal; 2; onint
1:
sys signal; 3; 1
rts pc
.globl _onhup
_onhup:
sys signal; 1; 1
sys signal; 2; 1
sys signal; 3; 1
jmp _term
onint:
mov r0,-(sp)
sys signal; 2; onint
inc _intrp
mov (sp)+,r0
rti
/ t = clock()
.globl _clock
_clock:
sys time
mov r0,-(sp)
mov r1,-(sp)
sub t+2,r1
sbc r0
sub t,r0
mov r1,r0
mov (sp)+,t+2
mov (sp)+,t
rts pc
.bss
t: .=.+4