LSX/src/rxboot.s
/
/ rxboot.p -- rx11 skeleton bootstrap program.
/ this program takes only one sector.
/ rxboot.p is stored in boot location
/ sector 1
/ track 1
/ pathname bootstrap is located in location
/ ** see l_sectr table
/ this program assumes that the bootstrap rom
/ leaves the unit number (0,1) in register r0.
/ this program in turn leaves the unit number
/ (0,1) in register r0 when it jumps to the
/ pathname bootstrap program.
/
/ modified by ljh for new rx layout 2/10/77
rxcs =177170
rxdb =rxcs+2
go =1
empty =2
intlev =2
rdrx =6
unit_1 =20
done =40
treq =200
initrx =40000
halt =0
nop =240
.text
.globl rxboot,_rxboot
_rxboot:
rxboot:
nop /this is required by the rom
tst r0 /unit number is in r0 (0,1)
jeq 0f
bis $unit_1,readop /set instruction to read unit 1
0:
mov $rxcs,r1 /control and status register
mov $rxdb,r2 /data and sector/track addr reg
mov $l_sctr, r4 / set address of secter and track table
next:
bit $done,*r1
beq next
mov (pc)+,*r1 /read sector instruction
readop:
rdrx+go /can be modified by unit number
1:
tstb *r1 /transfer request flag
jeq 1b
tstb (r4) / last block ?
jeq rxboot+200 / jump to program if so
movb (r4)+, *r2 / more to go. setup for next sector
2:
tstb *r1 /transfer request flag
jeq 2b
movb (r4)+, *r2 / track address
3:
tstb *r1 /read complete ?
jeq 3b
jmi erflag /treq on -- error
tst *r1 /error flag
jmi erflag
mov bufaddr,r0 /current buffer address
mov $empty+go,*r1 /empty rx function
jbr 1f
efloop:
movb *r2,(r0)+ /empty buffer
1:
tstb *r1 /transfer request flag
jmi efloop /br if ready
jeq 1b /wait for flag
tst *r1 /error flag
jmi erflag
mov r0,bufaddr /next set of 'empty' locations
clr r0 /setup unit number in r0
cmpb $rdrx+go,readop /is it zero
adc r0 /id unit number 0,1
jbr next /read another sector
erflag:
mov $initrx,*r1 /initialize heads -- read first sector
halt /error
jbr rxboot /restart
l_sctr:
/ table of block addresses for boot prog.
.byte 4, 1 / sector 4 track 1
.byte 7, 1 / sector 7 track 1
.byte 10., 1 / sector 10 track 1
.byte 21., 0 / sector 21 track 0
.byte 24., 0 / sector 24 track 0
0 / end of table
bufaddr:
200 /start of pathname bootstrap
.even