mirror of
https://github.com/PDP-10/its.git
synced 2026-02-05 08:04:38 +00:00
100 lines
3.9 KiB
Plaintext
100 lines
3.9 KiB
Plaintext
.SBTTL ****DISK TRANSFER CHANNEL COMMAND LIST****
|
||
|
||
DSKSEQ:
|
||
|
||
;A MINOR NOTE: 40000 WEIGHT BIT IS "VALID"
|
||
; : 100000 WEIGHT BIT IS "36-BIT XFR"
|
||
|
||
UBA. 763,001 ;ADDRESS OF UBA IS FIRST ELEMENT OF THE LIST
|
||
DI. 140,001 ;VALID & "36 BIT XFR" FOR PAGE 1 (1000-1777)
|
||
LI. D776,P.10 ;GET DRIVE STATUS & CONTROL REG, SO CAN SET UNIT
|
||
DI.INDIRECT UNITNM ;NOW SET THE UNIT NUMBER
|
||
EI. D776,P.12 ;ADDRESS OF DRIVE STATUS
|
||
TWAIT 400 ;CHECK THAT THE DRIVE IS PRESENT
|
||
WAIT 200 ;CHECK & WAIT FOR READY
|
||
LI. D776,P.10 ;ADDR OF DRIVE STATUS REG
|
||
DI. 0,40 ;ISSUE CONTROLLER CLR
|
||
DI.INDIRECT UNITNM ;SET TO UNIT #
|
||
LI. D776,P.00 ;ADDR OF CONTROLLER STATUS REG
|
||
DI. 0,11 ;ISSUE DRIVE CLEAR
|
||
DI. 0,21 ;SET "READ-IN-PRESET"
|
||
LI. D776,P.12 ;GET TO THE DRIVE STATUS REGISTER
|
||
WAIT 200 ;WAIT FOR IT TO BE READY
|
||
TWAIT 100 ;NOW CHECK THAT "PRE-SET" HAS SET VOLUME VALID
|
||
LI. D776,P.06 ;ADDR TRACK/SECTOR REG
|
||
DI.INDIRECT BLKNUM ;EMPTY FOR NOW
|
||
LI. D776,P.34 ;ADDR OF CYLINDER REG
|
||
DI.INDIRECT BLKADR ;EMPTY FOR NOW
|
||
QXFR: LI. D776,P.02 ;ADD OF WORD COUNT REG
|
||
DI. 176,000 ;512 WORDS IS 1024 18-BIT BYTES(A PAGE)
|
||
LI. D776,P.04 ;ADDR OF UNIBUS ADDRESS REG
|
||
DI. 4,000 ;SET SM10 MEM ADDR TO 1000
|
||
LI. D776,P.00 ;BACK TO STATUS REG
|
||
DI. 0,71 ;ISSUE READ
|
||
EI. D776,P.00 ;NOW READ TO CHECK FOR ERRORS IN XFER
|
||
WAIT 200 ;CHECK FOR READY BIT TRUE..
|
||
EI. D776,P.12 ;CHECK DRIVE STATUS REG ITSELF
|
||
ERRTST 40000 ;TEST "ERR" BIT
|
||
;IF IT WAS OK, THEN CHECK THE CONTROLLER FOR ERRORS
|
||
EI. D776,P.00 ;EXAMINE CONTROLLER
|
||
ERRTST 060000 ;DRIVE RDY, NOW SEE IF ENCOUNTERED ERRORS
|
||
ENDLST ;END OF CHANNEL COMMAND LIST
|
||
.SBTTL TAPE TRANSFER CHANNEL COMMAND LIST
|
||
;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY
|
||
; 7=REWIND
|
||
; 11=DRIVE CLEAR
|
||
; 25=ERASE
|
||
; 27=WRITE TAPE MARK
|
||
; 31=SPACE FORWARD(SKIP A FILE)
|
||
; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE)
|
||
; 51=WRITE CHECK FORWARD
|
||
; 57=WRITE CHECK REVERSE
|
||
; 61=WRITE FORWARD
|
||
; 71=READ FORWARD(GO!)
|
||
; 77=READ REVERSE(GO!)
|
||
|
||
MTASEQ: UBA. 763,001 ;ADDRESS OF UBA PAGING RAM
|
||
DI. 40,001 ;SET VALID IN PAGE 1
|
||
LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER
|
||
DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR
|
||
DI.INDIRECT TAPEUNIT ;SET TAPE UNIT #
|
||
LI. D772,P.32 ;SLAVE SELECT/FORMAT/DENSITY REG
|
||
DI.INDIRECT DEN.SLV ;SET SLAVE, FORMAT, DENSITY(TEMP:DENS=1600,F=0,S=0)
|
||
EI. D772,P.12 ;READ THE DRIVE STATUS, TO MAKE SURE IT EXISTS
|
||
TWAIT 400 ;CHECK THE "DRIVE PRESENT" BIT
|
||
WAIT 200 ;IF WAS PRESENT, WAIT FOR IT TO BE READY
|
||
LI. D772,P.06 ;FRAME COUNT REGISTER
|
||
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
|
||
LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER
|
||
DI. 0,7 ;ISSUE "REWIND" TO TAPE
|
||
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY
|
||
WAIT 200 ;WAIT FOR REWIND TO COMPLETE
|
||
QTXFR: LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG
|
||
DI. 4,000 ;SET KS10 START ADDRESS TO 1000
|
||
LI. D772,P.02 ;SET ADDRESS TO WORD COUNT REGISTER
|
||
DI. 176,000 ;1 PAGE OF 512 WORDS IS 1024 18-BIT BYTES
|
||
LI. D772,P.06 ;FRAME COUNT REGISTER
|
||
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
|
||
LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER
|
||
DI.INDIRECT SKP.GO ;ISSUE "XFER CMD"(31=SKIP .OR. 71=RD-IN)
|
||
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY
|
||
WAIT 200 ;WAIT FOR FILE READ TO COMPLETE
|
||
EI. D772,P.14 ;LOOK AT THE DRIVE ERROR REGISTER
|
||
RETRY.: ERRTST 070300 ;ERRORS WORTH RETRYING??
|
||
FRMERR: ERRTST 103400 ;SEE IF THIS WAS A CORRECTABLE TYPE ERROR
|
||
EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR ERRORS
|
||
ERRTST 40000 ;GET ANY DRIVE ERRORS??
|
||
LI. D772,P.00 ;NOW ADDRESS TO CONTROLLER STATUS
|
||
ERRTST 60000 ;CHECK FOR ERRORS THERE.
|
||
ENDLST ;END OF CHANNEL COMMAND LIST
|
||
;QUICK LITTLE ROUTINE TO RESET THE MAGTAPE AFTER IT SUFFERS AN
|
||
;IGNORABLE ERROR
|
||
MTARST: LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER
|
||
DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR
|
||
DI.INDIRECT TAPEUNIT ;FIX UNIT NUMBER
|
||
LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG
|
||
DI. 4,000 ;SET KS10 START ADDRESS TO 1000
|
||
LI. D772,P.06 ;FRAME COUNT REGISTER
|
||
DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES
|
||
ENDLST ;QUICK OUT
|
||
|