1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-04-20 01:33:21 +00:00
Files
DoctorWkt.unix-jun72/pages/e08-07
2008-04-30 18:39:15 +00:00

57 lines
2.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/ entry
1:
cmp r2,$bufp / bump all entrys ln 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 $17,r3 / clear all but bits 8-10 (Unit Selection)
lncb 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,act1ve / 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 lnterrupt enable
1:
movb (sp)+,(r2) / move function into command register (tccm)
bis $4,actlve / set active bit ·
mov $tape3,tcstate / get ready for I/O transfer
br 4f / go to retisp (rtl)
tape2: / read bn bakasswards