mirror of
https://github.com/PDP-10/its.git
synced 2026-03-26 02:05:51 +00:00
118 lines
2.3 KiB
Groff
118 lines
2.3 KiB
Groff
|
||
QINTE: CONI DPC,TT ;GET CONDITIONS
|
||
DATAI DPC,R
|
||
CONO DPC,175700+DSKCHN ;RESET CONDITIONS
|
||
MOVEM TT,QERST
|
||
CONSZ DPC,20 ;WAIT FOR UNBUSY
|
||
JRST 4,.-1
|
||
MOVE E,QCHPRG
|
||
TRNE TT,20000 ;OVERRUN
|
||
JRST QOVR
|
||
TRNE TT,2000 ;NOT READY
|
||
JRST QNRDY
|
||
TDNE TT,[12010700] ;BITS 14,16,23,27-29 ARE LOSERS
|
||
JRST 4,.
|
||
TLNE TT,5 ;WD OR SECTOR PARITY ERROR
|
||
JRST QDE
|
||
TRNE TT,1000 ;WRITE LOCKED
|
||
JRST QIRWRE
|
||
TRNE TT,40000 ;SEARCH FAILED
|
||
JRST QHE
|
||
TRNN TT,100000 ;POWER FAILURE
|
||
JRST QINTE1
|
||
CONSZ DPC,100000 ;TRY IT AGAIN
|
||
JRST 4,.-1
|
||
JRST QHE
|
||
QINTE1: TLNE R,10 ;FILE UNSAFE
|
||
JRST 4,. ;NEED OPERATOR INTERVENTION
|
||
TLNE R,4
|
||
JRST 4,. ;NO SUCH DRIVE
|
||
TLNE R,100 ;POSITION FAILURE
|
||
JRST QHE
|
||
AOS NQSE ;SPURIOUS ERROR
|
||
JRST QINTX ;IGNORE
|
||
|
||
QIRWRE: JRST 4,. ;IRRECOVERABLE WRITE ERROR
|
||
|
||
QNRDY: LDB Q,[410300,,R] ;WHICH DPC
|
||
SKIPN QSEEK(Q)
|
||
SKIPGE QRCAL(Q) ;NOT SEEKING OR RECALIBRATING IS ERROR
|
||
JRST QINTN2
|
||
JRST 4,.
|
||
|
||
QINTAT: CONI DPC,QERST
|
||
SETZM QSEEK(Q)
|
||
DATAO DPC,QATTNS(Q) ;CLEAR ATTNS
|
||
DATAI DPC,E
|
||
TLNN E,40
|
||
JRST QREC
|
||
SETZM QRCAL(Q)
|
||
LDB E,[311000,,E]
|
||
MOVEM E,QPOS(Q) ;REMEMBER WHERE IT IS AT
|
||
JRST QINT ;TRY AGAIN
|
||
|
||
QINT: AOS QGTBZY
|
||
MOVEM TT,QCST
|
||
TDNE TT,[17377700] ;ANY ERRORS?
|
||
JRST QINTE
|
||
QINTN2: DATAI DPC,R
|
||
SKIPGE QSDU ;DONT CLOB CMD BUF TO CLR ATTS DURING DATA XFER
|
||
TRNN R,776 ;ANY ATTNS
|
||
JRST QINTA ;NO
|
||
FINDQ: LDB I,[11000,,R] ;YES,FIND WHICH DRIVE
|
||
JFFO I,.+1 ;CLOBBERS Q
|
||
SUBI Q,28.
|
||
JRST QINTAT
|
||
|
||
QINTA: SKIPGE Q,QSDU
|
||
JRST QINT1 ;NOT EXPECTING DATA COMPLETION
|
||
CONSO DPC,400000
|
||
CONSO DPC,10
|
||
JRST DSKEX
|
||
CONSZ DPC,20
|
||
JRST 4,.-1 ;BUSY?
|
||
JRST QINTA1QINT6A: IORI T,7000+ICWA ;DON'T STOP FOR PARITY ERRORS (PLUS INITIAL CHNL ADR)
|
||
MOVEM T,QCHPRG
|
||
DPB Q,[DUNFLD+QCHPRG]
|
||
HLLZS QICWA
|
||
DPB R,[121000,,QICWA]
|
||
MOVE E,R
|
||
LSH E,-10.
|
||
TRC E,7
|
||
DPB E,[410300,,QICWA] ;SET UP HIGH ADR BITS
|
||
SOS TT,QICWA
|
||
MOVE E,QSGL(C)
|
||
PUSHJ P,QPOSR
|
||
IORB E,QCHPRG
|
||
SETOM QSLDD(C)
|
||
QOVR: CONSZ DPC,20
|
||
JRST QOVR
|
||
CONO DPC,175700+DSKCHN
|
||
MOVEI TT,QICWA
|
||
HRRZM TT,ICWA
|
||
LDB TT,[DCYL E]
|
||
CAME TT,QPOS(Q)
|
||
JRST DSKEX ;DONT DO ANYTHING IF NOT WHERE YOU SHOULD BE
|
||
SETZM ICWA+1
|
||
DATAO DPC,QCHPRG ;ENTRY ON OVERRUN
|
||
MOVE A,TIME
|
||
MOVEM A,LQTM
|
||
MOVEM Q,QSDU
|
||
QINTX: JRST DSKEX
|
||
|
||
|
||
QPOSR: CAIL E,NBLKS
|
||
JRST 4,.
|
||
MOVEI D,0
|
||
IDIVI E,NBLKSC
|
||
DPB E,[DCYL+D]
|
||
MOVEM E,QSPPS(Q)
|
||
MOVE E,TT
|
||
IMULI E,NSSECS
|
||
IDIVI E,NHSECS
|
||
DPB E,[DSURF+D]
|
||
DPB TT,[DSECT+D]
|
||
DPB Q,[DUNFLD+D]
|
||
MOVE E,D
|
||
POPJ P,
|
||
|