1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-05 08:04:38 +00:00
Files
PDP-10.its/src/kshack/dr.m80
2018-09-18 07:17:02 +02:00

100 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.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