2.9BSD/usr/net/sys/stand/tsboot.s
/ tape boot program to load and transfer
/ the next item on the tape.
/ entry is made by jsr pc,*$0
/ so return can be rts pc
core = 24.
halt=0
.. = [core*2048.]-512.
start:
mov $..,sp
mov sp,r1
cmp pc,r1
bhis 2f
clr r0
cmp (r0),$407
bne 1f
mov $20,r0
1:
mov (r0)+,(r1)+
cmp r1,$core*2048.
blo 1b
jmp (sp)
2:
mov $1f,*$4
mov $340,*$6
tst *$htcs1
mov $htrew,rew
mov $htread,tread
br 2f
1:
mov $tsread,tread
mov $tsrew,rew
2:
jsr pc,*rew
mov $2,tapa
mov $-256.,wc
jsr pc,*tread
mov *$2,r0
add *$4,r0
sub $512.,r0
asr r0
neg r0
bge 1f
mov r0,wc
mov $3,tapa
mov $512.,ba
jsr pc,*tread
1:
jsr pc,*rew
clr r0
mov $20,r1
mov sp,r4
clc
ror r4
1:
mov (r1)+,(r0)+
sob r4,1b
jsr pc,*$0
br .
htcs1 = 172440
htba = 172444
htfc = 172446
htcs2 = 172450
htds = 172452
httc = 172472
P800 = 1300
P1600 = 2300
PIP = 20000
RESET = 40
MOL = 10000
ERR = 40000
REV = 33
READ = 71
REW = 7
htread:
1:
mov ba,mtma
cmp mtapa,tapa
beq 1f
bhi 2f
jsr pc,hrrec
br 1b
2:
jsr pc,htrew
br 1b
1:
mov wc,r1
1:
jsr pc,hrrec
add $256.,r1
bmi 1b
rts pc
hrrec:
mov $htds,r0
tstb (r0)
bpl hrrec
bit $PIP,(r0)
bne hrrec
bit $MOL,(r0)
beq hrrec
mov $htfc,r0
mov $-512.,(r0)
mov mtma,-(r0)
mov $-256.,-(r0)
mov $READ,-(r0)
1:
tstb (r0)
bpl 1b
bit $ERR,(r0)
bpl 1f
mov $RESET,*$htcs2
mov $-1,*$htfc
mov $REV,(r0)
br hrrec
1:
add $512.,mtma
inc mtapa
rts pc
htrew:
mov $RESET,*$htcs2
mov $P1600,*$httc
mov $REW,*$htcs1
clr mtapa
rts pc
tsbuf = 172520
tssr = 172522
TSINIT = 140013
TSCHAR = 140004
TSREW = 102010
TSREAD = 100001
TSRETRY = 100401
tsread:
1:
mov ba,mtma
cmp mtapa,tapa
beq 1f
bhi 2f
jsr pc,tsrrec
br 1b
2:
jsr pc,tsrew
br 1b
1:
mov wc,r1
1:
jsr pc,tsrrec
add $256.,r1
bmi 1b
rts pc
tsrrec:
1:
tstb tssr
bpl 1b
mov $136006,r0
mov $512.,(r0)
clr -(r0)
mov mtma,-(r0)
mov $TSREAD,-(r0)
mov r0,tsbuf
1:
tstb tssr
bpl 1b
cmp $1,tssr
blos 1f
mov $TSRETRY,(r0)
mov r0,tsbuf
br 1b
1:
add $512.,mtma
inc mtapa
rts pc
tsrew:
jsr pc,tsinit
mov $TSREW,136000
mov $136000,tsbuf
clr mtapa
rts pc
tsinit:
tstb tssr
bpl tsinit
mov $136000,r0
mov $TSCHAR,(r0)+
mov $136010,(r0)+
clr (r0)+
mov $10,(r0)+
mov r0,(r0)+
clr (r0)+
mov $16,(r0)+
mov $136000,tsbuf
1:
tstb tssr
bpl 1b
rts pc
mtapa: 0
mtma: 0
tapa: 0
wc: 0
ba: 0
rew: 0
tread: 0