mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-01-18 17:17:47 +00:00
57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
/ entry
|
|
1:
|
|
cmp r2,$bufp / bump all entrys in bufp and put latest assigned
|
|
blos 1f / buffer on the top (this makes if the lowest priority)
|
|
mov -(r2),2(r2) / job for a particular device
|
|
br 1b
|
|
1:
|
|
mov r5,(r2)
|
|
mov (sp)+,r2 / restore r2
|
|
rts r0
|
|
|
|
tape: / dec tape interrupt
|
|
jsr r0,setisp / save registers and clockp on stack
|
|
mov tcstate,r3 / put state of dec tape in r3
|
|
jsr r0,trapt; tccm; tcap; 4 / busy bit
|
|
mov r3,pc / device control status register
|
|
/ if no errors, go to device state (an address)
|
|
|
|
taper: / dec tape error
|
|
dec tcerrc / decrement the number of errors
|
|
bne 1f / if more than 1 branch
|
|
movb 1(r2),r3 / r2+1 points to command register upper byte
|
|
bic $!7,r3 / clear all but bits 8-10 (Unit Selection)
|
|
incb deverr+2(r3) / set error bit for this tape unit
|
|
br tape3
|
|
1: / more than 1 error
|
|
bit $4000,(r2) / direction of tape
|
|
beq 1f / if forward go to 1f
|
|
bic $4000,(r2) / reverse, set to forward
|
|
mov $tape1,tcstate / put tape 1 in the state
|
|
br 0f
|
|
1: / put tape in reverse
|
|
bis $4000,(r2) / set tape to reverse direction
|
|
mov $tape2,tcstate / put tape 2 as the state
|
|
0:
|
|
bis $4,active / check active bit of tape
|
|
movb $103,(r2) / set read function and interrupt enable
|
|
br 4f / go to retisp
|
|
tape1: / read bn forward
|
|
mov $tcdt,r0 / move address of data register to r0
|
|
cmp (r0),2(r1) / compare block addresses
|
|
blt 0b / if lt, keep moving
|
|
bgt taper / if gt, reverse
|
|
mov 6(r1),-(r0) / put bus address in tcba
|
|
mov 4(r1),-(r0) / put word count in tcwc
|
|
mov $115,-(sp) / put end interrupt enable
|
|
bit $20000,(r1) / is "waiting to read bit" of I/O queue set?
|
|
beq 1f / no, 1f
|
|
mov $105,(sp) / yes, put and interrupt enable
|
|
1:
|
|
movb (sp)+,(r2) / move function into command register (tccm)
|
|
bis $4,active / set active bit
|
|
mov $tape3,tcstate / get ready for I/O transfer
|
|
br 4f / go to retisp (rti)
|
|
|
|
tape2: / read bn bakasswards
|