Add original unix v6
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
signal = 48.
|
||||
testing = 0
|
||||
/ form letter generator
|
||||
/ command sequence
|
||||
/ form proto arg1 arg2...
|
||||
/ where proto is letter
|
||||
rfo:
|
||||
sys signal; 2; int
|
||||
mov $-1,buf
|
||||
mov (sp)+,r2 /arg count
|
||||
tst (sp)+ /skip first arg
|
||||
sub $2,r2
|
||||
bge 2f
|
||||
mov $default,-(sp)
|
||||
2:
|
||||
mov (sp)+,letter
|
||||
|
||||
1: sys stat; otfil; buf
|
||||
bec 2f
|
||||
sys creat; otfil; 666
|
||||
bec cont
|
||||
2: cmpb $'z,otfil+4
|
||||
beq err3
|
||||
incb otfil+4
|
||||
br 1b
|
||||
|
||||
err3:
|
||||
mov $1,r0
|
||||
sys write; mes3; 24.
|
||||
sys exit
|
||||
mes3: <cannot open output file\n>
|
||||
otfil: <forma\0>
|
||||
default: <letter\0>
|
||||
.even
|
||||
|
||||
cont: mov r0,rfo
|
||||
clr rfo+2
|
||||
jsr pc,initl
|
||||
|
||||
/ set up argument list
|
||||
/
|
||||
mov $arg,r3
|
||||
mov $10.,r0
|
||||
jsr pc,allocate
|
||||
mov r1,(r3)+
|
||||
1:
|
||||
dec r2
|
||||
blt 1f
|
||||
mov $10.,r0
|
||||
jsr pc,allocate
|
||||
mov r1,(r3)+
|
||||
mov (sp)+,r4
|
||||
2:
|
||||
movb (r4)+,r0
|
||||
beq 1b
|
||||
jsr pc,putchar
|
||||
br 2b
|
||||
|
||||
1:
|
||||
sys time
|
||||
ashc $-7,r0
|
||||
div $675.,r0
|
||||
mov $daytab,r2
|
||||
sub $1461.,r0
|
||||
|
||||
1: sub (r2)+,r0
|
||||
bge 1b
|
||||
add -(r2),r0
|
||||
mov r0,-(sp)
|
||||
mov arg,r1
|
||||
mov montab-daytab(r2),r2
|
||||
1:
|
||||
movb (r2)+,r0
|
||||
beq 1f
|
||||
jsr pc,putchar
|
||||
br 1b
|
||||
1:
|
||||
movb $' ,r0
|
||||
jsr pc,putchar
|
||||
clr r0
|
||||
mov (sp),r1
|
||||
inc r1
|
||||
div $10.,r0
|
||||
mov r1,(sp)
|
||||
mov arg,r1
|
||||
tst r0
|
||||
beq 1f
|
||||
add $'0,r0
|
||||
jsr pc,putchar
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
add $'0,r0
|
||||
jsr pc,putchar
|
||||
jmp loop
|
||||
|
||||
daytab: 31.; 28.; 31.; 30.; 31.; 30.; 31.; 31.; 30.; 31.; 30.; 999.
|
||||
|
||||
montab: m1; m2; m3; m4; m5; m6; m7; m8; m9; m10; m11; m12
|
||||
|
||||
m1: <January\0>
|
||||
m2: <February\0>
|
||||
m3: <March\0>
|
||||
m4: <April\0>
|
||||
m5: <May\0>
|
||||
m6: <June\0>
|
||||
m7: <July\0>
|
||||
m8: <August\0>
|
||||
m9: <September\0>
|
||||
m10: <October\0>
|
||||
m11: <November\0>
|
||||
m12: <December\0>
|
||||
|
||||
buf: .=.+34.
|
||||
.=rfo+516.
|
||||
|
||||
loop:
|
||||
mov $10.,r0
|
||||
jsr pc,allocate
|
||||
mov r1,opointer
|
||||
jsr pc,allocate
|
||||
mov r1,ipointer
|
||||
jsr pc,allocate
|
||||
mov r1,curly
|
||||
mov $10.,r0
|
||||
jsr pc,allocate
|
||||
mov r1,scr
|
||||
mov letter,r3
|
||||
movb $'\{,r0
|
||||
jsr pc,putchar
|
||||
1:
|
||||
movb (r3)+,r0
|
||||
beq 1f
|
||||
jsr pc,putchar
|
||||
br 1b
|
||||
1:
|
||||
movb $'\},r0
|
||||
jsr pc,putchar
|
||||
|
||||
clr switch
|
||||
|
||||
tst iflag
|
||||
beq 1f
|
||||
mov $1,tflag
|
||||
jmp interrupt
|
||||
1:
|
||||
jsr pc,scan
|
||||
|
||||
movb $'\n,r0
|
||||
jsr r5,putc
|
||||
jsr r5,flushb
|
||||
|
||||
mov scr,r1
|
||||
jsr pc,release
|
||||
jsr pc,relarg
|
||||
mov opointer,r1
|
||||
jsr pc,release
|
||||
mov ipointer,r1
|
||||
jsr pc,release
|
||||
jsr pc,relcurl
|
||||
jsr pc,flush
|
||||
jsr pc,whead
|
||||
.if testing
|
||||
4
|
||||
.endif
|
||||
sys exit
|
||||
Reference in New Issue
Block a user