Add original unix v6
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ f22 -- allocate common
|
||||
|
||||
.globl calloc
|
||||
.globl entry
|
||||
|
||||
.globl declimpl
|
||||
.globl size
|
||||
.globl getc
|
||||
.globl getw
|
||||
.globl xbuf
|
||||
.globl code
|
||||
.globl typ
|
||||
|
||||
calloc:
|
||||
clr r3
|
||||
1:
|
||||
cmp r3,symtp
|
||||
bhis 1f
|
||||
mov symtab(r3),r0
|
||||
bic $!70,r0 / class
|
||||
cmp r0,$40 / common block
|
||||
bne 3f
|
||||
mov r3,-(sp)
|
||||
mov symtab+2(r3),r3
|
||||
clr r2 / byte offset
|
||||
2:
|
||||
tst r3
|
||||
beq 2f
|
||||
jsr r5,declimpl
|
||||
mov symtab+4(r3),-(sp)
|
||||
mov 2(sp),symtab+4(r3)
|
||||
mov r2,symtab+6(r3)
|
||||
jsr r5,size
|
||||
add r0,r2
|
||||
mov (sp)+,r3
|
||||
br 2b
|
||||
2:
|
||||
mov (sp)+,r3
|
||||
clr symtab+2(r3)
|
||||
mov r2,symtab+6(r3) / common block size
|
||||
3:
|
||||
add $8,r3
|
||||
br 1b
|
||||
1:
|
||||
rts r5
|
||||
|
||||
entry:
|
||||
mov progt,r0
|
||||
jmp *1f(r0)
|
||||
1:
|
||||
main
|
||||
subr
|
||||
funct
|
||||
blocd
|
||||
|
||||
main:
|
||||
jsr r5,code
|
||||
<main:\n\0>; .even
|
||||
rts r5
|
||||
|
||||
subr:
|
||||
funct:
|
||||
jsr r5,code
|
||||
<%n.: %n_\n\0>; .even
|
||||
8
|
||||
8
|
||||
clr r3
|
||||
1:
|
||||
cmp r3,symtp
|
||||
bhis 1f
|
||||
mov symtab+2(r3),r0
|
||||
beq 2f
|
||||
mov (r0)+,r1 / num dims
|
||||
asl r1
|
||||
add r0,r1 / ptr to last dim
|
||||
mov r3,-(sp)
|
||||
mov (r1),-(sp) / dope id
|
||||
clr r2 / dope offset
|
||||
3:
|
||||
add $2,r2
|
||||
mov -(r1),r3
|
||||
cmp r0,r1
|
||||
bhi 3f
|
||||
neg r3 / adjustable dimension
|
||||
ble 3b
|
||||
mov r0,-(sp)
|
||||
jsr r5,declimpl
|
||||
mov symtab(r3),r0
|
||||
clrb r0
|
||||
swab r0
|
||||
jsr r5,code
|
||||
< rval%dp; %n_\n\0>; .even
|
||||
r0
|
||||
r3
|
||||
mov symtab(r3),r3
|
||||
bic $![377\<8+7],r3
|
||||
cmp r3,$2\<8+1 / is it i*2
|
||||
beq 4f
|
||||
bic $!7,r3
|
||||
movb typ(r3),r3
|
||||
jsr r5,code
|
||||
< %c%di2\n\0>; .even
|
||||
r3
|
||||
r0
|
||||
4:
|
||||
mov 2(sp),r0
|
||||
jsr r5,code
|
||||
< stst; d%d+%d.\n\0>; .even
|
||||
r0
|
||||
r2
|
||||
mov (sp)+,r0
|
||||
br 3b
|
||||
3:
|
||||
tst (sp)+
|
||||
mov (sp)+,r3
|
||||
2:
|
||||
add $8,r3
|
||||
br 1b
|
||||
1:
|
||||
blocd:
|
||||
rts r5
|
||||
|
||||
Reference in New Issue
Block a user