Add original unix v6
This commit is contained in:
@@ -0,0 +1,256 @@
|
||||
/ tape boot program to load and transfer
|
||||
/ to a 'tp' entry
|
||||
|
||||
/ entry is made by jsr pc,*$0
|
||||
/ so return can be rts pc
|
||||
/ jsr pc,(r5) is putc
|
||||
/ jsr pc,2(r5) is getc
|
||||
/ jsr pc,4(r5) is mesg
|
||||
|
||||
core = 24.
|
||||
.mt. = 0
|
||||
.. = [core*2048.]-512.
|
||||
start:
|
||||
mov $..,sp
|
||||
mov $name,r4
|
||||
mov sp,r1
|
||||
cmp pc,r1
|
||||
bhis 2f
|
||||
clr r0
|
||||
cmp (r0),$407
|
||||
bne 1f
|
||||
mov $20,r0
|
||||
1:
|
||||
mov (r0)+,(r1)+
|
||||
cmp r1,$end
|
||||
blo 1b
|
||||
jmp (sp)
|
||||
|
||||
2:
|
||||
jsr pc,rew
|
||||
mov $tvec,r5
|
||||
mov $'=,r0
|
||||
jsr pc,(r5)
|
||||
2:
|
||||
mov r4,r1
|
||||
1:
|
||||
jsr pc,2(r5)
|
||||
cmp r0,$'\n
|
||||
beq 1f
|
||||
cmp r0,$'@
|
||||
beq 2b
|
||||
movb r0,(r1)+
|
||||
cmp r0,$'#
|
||||
bne 1b
|
||||
sub $2,r1
|
||||
cmp r1,r4
|
||||
blo 2b
|
||||
br 1b
|
||||
1:
|
||||
clrb (r1)
|
||||
cmp r1,r4
|
||||
blos start
|
||||
mov $1,tapa
|
||||
mov $-6144.,wc
|
||||
jsr pc,taper
|
||||
clr r1
|
||||
1:
|
||||
mov r1,r2
|
||||
mov r4,r0
|
||||
2:
|
||||
cmpb (r0)+,(r1)
|
||||
bne 2f
|
||||
tstb (r1)+
|
||||
bne 2b
|
||||
br 1f
|
||||
2:
|
||||
mov r2,r1
|
||||
add $64.,r1
|
||||
cmp r1,$12288.
|
||||
blo 1b
|
||||
jsr pc,rew
|
||||
br start
|
||||
1:
|
||||
mov 44.(r2),tapa
|
||||
mov 38.(r2),r0
|
||||
inc r0
|
||||
clc
|
||||
ror r0
|
||||
neg r0
|
||||
mov r0,wc
|
||||
clr r0
|
||||
1:
|
||||
clr (r0)+
|
||||
cmp r0,sp
|
||||
blo 1b
|
||||
jsr pc,taper
|
||||
jsr pc,rew
|
||||
clr r0
|
||||
cmp (r0),$407 / unix a.out?
|
||||
bne 2f
|
||||
1:
|
||||
mov 20(r0),(r0)+
|
||||
cmp r0,sp
|
||||
blo 1b
|
||||
2:
|
||||
jsr pc,*$0
|
||||
br start
|
||||
|
||||
.if .mt.
|
||||
mts = 172520
|
||||
mtc = 172522
|
||||
mtbrc = 172524
|
||||
mtcma = 172526
|
||||
|
||||
taper:
|
||||
clr mtma
|
||||
cmp mtapa,tapa
|
||||
beq 1f
|
||||
bhi 2f
|
||||
jsr pc,rrec
|
||||
br taper
|
||||
2:
|
||||
jsr pc,rew
|
||||
br taper
|
||||
1:
|
||||
mov wc,r1
|
||||
1:
|
||||
jsr pc,rrec
|
||||
add $256.,r1
|
||||
bmi 1b
|
||||
rts pc
|
||||
|
||||
rrec:
|
||||
bit $2,*$mts
|
||||
bne rrec
|
||||
tstb *$mtc
|
||||
bge rrec
|
||||
mov $-512.,*$mtbrc
|
||||
mov mtma,*$mtcma
|
||||
mov $60003,*$mtc
|
||||
1:
|
||||
tstb *$mtc
|
||||
bge 1b
|
||||
tst *$mtc
|
||||
bge 1f
|
||||
mov $-1,*$mtbrc
|
||||
mov $60013,*$mtc
|
||||
br rrec
|
||||
1:
|
||||
add $512.,mtma
|
||||
inc mtapa
|
||||
rts pc
|
||||
|
||||
rew:
|
||||
mov $60017,*$mtc
|
||||
clr mtapa
|
||||
rts pc
|
||||
.endif
|
||||
|
||||
.if .mt.-1
|
||||
tcdt = 177350
|
||||
tccm = 177342
|
||||
taper:
|
||||
mov $tcdt,r0
|
||||
mov $tccm,r1
|
||||
for:
|
||||
mov $3,(r1) / rbn for
|
||||
1:
|
||||
tstb (r1)
|
||||
bge 1b
|
||||
tst (r1)
|
||||
blt rev
|
||||
cmp tapa,(r0)
|
||||
beq rd
|
||||
bgt for
|
||||
|
||||
rev:
|
||||
mov $4003,(r1) / rbn bac
|
||||
1:
|
||||
tstb (r1)
|
||||
bge 1b
|
||||
tst (r1)
|
||||
blt for
|
||||
mov (r0),r2
|
||||
add $5,r2
|
||||
cmp tapa,r2
|
||||
blt rev
|
||||
br for
|
||||
|
||||
rd:
|
||||
clr -(r0) / bus addr
|
||||
mov wc,-(r0) / wc
|
||||
mov $5,-(r0) / read
|
||||
1:
|
||||
tstb (r1)
|
||||
bge 1b
|
||||
tst (r1)
|
||||
blt taper
|
||||
rts pc
|
||||
|
||||
rew:
|
||||
mov $4003,tccm
|
||||
rts pc
|
||||
.endif
|
||||
|
||||
tvec:
|
||||
br putc
|
||||
br getc
|
||||
br mesg
|
||||
|
||||
tks = 177560
|
||||
tkb = 177562
|
||||
getc:
|
||||
mov $tks,r0
|
||||
inc (r0)
|
||||
1:
|
||||
tstb (r0)
|
||||
bge 1b
|
||||
mov tkb,r0
|
||||
bic $!177,r0
|
||||
cmp r0,$'A
|
||||
blo 1f
|
||||
cmp r0,$'Z
|
||||
bhi 1f
|
||||
add $40,r0
|
||||
1:
|
||||
cmp r0,$'\r
|
||||
bne putc
|
||||
mov $'\n,r0
|
||||
|
||||
tps = 177564
|
||||
tpb = 177566
|
||||
putc:
|
||||
tstb tps
|
||||
bge putc
|
||||
cmp r0,$'\n
|
||||
bne 1f
|
||||
mov $'\r,r0
|
||||
jsr pc,(r5)
|
||||
mov $'\n+200,r0
|
||||
jsr pc,(r5)
|
||||
clr r0
|
||||
jsr pc,(r5)
|
||||
mov $'\n,r0
|
||||
rts pc
|
||||
1:
|
||||
mov r0,tpb
|
||||
rts pc
|
||||
|
||||
mesg:
|
||||
movb *(sp),r0
|
||||
beq 1f
|
||||
jsr pc,(r5)
|
||||
inc (sp)
|
||||
br mesg
|
||||
1:
|
||||
add $2,(sp)
|
||||
bic $1,(sp)
|
||||
rts pc
|
||||
|
||||
end:
|
||||
tapa: .=.+2
|
||||
mtapa: .=.+2
|
||||
mtma: .=.+2
|
||||
wc: .=.+2
|
||||
name: .=.+32.
|
||||
Reference in New Issue
Block a user