mirror of
https://github.com/PDP-10/its.git
synced 2026-03-02 01:50:24 +00:00
293 lines
9.5 KiB
Plaintext
Executable File
293 lines
9.5 KiB
Plaintext
Executable File
; -*- Midas -*-
|
||
;;; Copyright (c) 1999 Massachusetts Institute of Technology
|
||
;;; See the COPYING file at the top-level directory of this project.
|
||
|
||
.AUXIL
|
||
|
||
; Canonical symbol definition macro, FOO==BAR with error check.
|
||
IFNDEF DEFSYM,[
|
||
DEFINE DEFSYM X/
|
||
IRPS Z,,[X]
|
||
IFNDEF Z,X
|
||
.ELSE [ $$TEM1==Z
|
||
X
|
||
IFN Z-$$TEM1,.ERR Z MULTIPLY .QUOTE`.QUOTE/DEFINED/`
|
||
]
|
||
.ISTOP
|
||
TERMIN TERMIN
|
||
$$TEMP==1
|
||
] ;IFNDEF DEFSYM
|
||
.ELSE, $$TEMP==0
|
||
|
||
; For now, must have a disk type defined to get the correct register
|
||
; definitions.
|
||
|
||
IFNDEF RP06P,RP06P==0
|
||
IFNDEF RP07P,RP07P==0
|
||
IFNDEF RM03P,RM03P==0
|
||
IFNDEF RM80P,RM80P==0
|
||
|
||
IFN RP06P+RP07P+RM03P+RM80P-1,.FATAL Only one disk type allowed in RH11 DEFS
|
||
|
||
|
||
;;; Disk RH11 Interrupt vector:
|
||
DEFSYM PHVEC==254 ; Interrupts occur on level 6
|
||
; (high priority) on UBA #1.
|
||
|
||
;;; Disk RH11 Unibus register addresses:
|
||
|
||
DEFSYM %HRCS1=:776700 ;CTRL AND STATUS 1.
|
||
DEFSYM %HXSC== 1_15. ; Special Condition
|
||
DEFSYM %HXTRE==1_14. ; Transfer Error
|
||
DEFSYM %HXMCP==1_13. ; Mass I/O Control Bus Parity Error
|
||
DEFSYM %HXDVA==1_11. ; Drive Available
|
||
DEFSYM %HXPSE==1_10. ; Port Select
|
||
DEFSYM %HXA17==1_9. ; UB Address Extension Bit 17
|
||
DEFSYM %HXA16==1_8. ; UB Address Extension Bit 16
|
||
DEFSYM %HXRDY==1_7. ; Ready
|
||
DEFSYM %HXIE== 1_6. ; Interrupt Enable
|
||
DEFSYM $HXCMD==.BP 77 ; Bits 1-5 specify commands.
|
||
DEFSYM %HXGO== 1_0. ; GO bit
|
||
|
||
;;; Commands with bit 0 (GO) included:
|
||
|
||
DEFSYM %HMNOP==0 ; No Operation
|
||
DEFSYM %HMUNL==3 ; Unload ("Standby" -- the pack doesn't fly off).
|
||
DEFSYM %HMREC==7 ; Recalibrate
|
||
DEFSYM %HMCLR==11 ; Drive clear (reset errors etc.)
|
||
DEFSYM %HMRLS==13 ; Drive release (dual port)
|
||
DEFSYM %HMSRC==31 ; Search (for r.p.s.)
|
||
DEFSYM %HMWCH==51 ; Write Check (?doesn't work)
|
||
DEFSYM %HMWCF==53 ; Write Check Format, Header and Data (?doesn't work)
|
||
DEFSYM %HMWRT==61 ; Write Data
|
||
DEFSYM %HMRED==71 ; Read Data
|
||
DEFSYM %HMWHD==63 ; Write Header And Data (format the pack)
|
||
DEFSYM %HMRHD==73 ; Read Header and Data
|
||
IFN RP07P,[
|
||
DEFSYM %HMWTD==65 ; Write Track Descriptor
|
||
DEFSYM %HMRTD==75 ; Read Track Descriptor
|
||
]
|
||
DEFSYM %HMSEK==5 ; Seek to Cylinder
|
||
DEFSYM %HMOFS==15 ; Offset Heads Slightly
|
||
; Just sets %HSOFS on RP07
|
||
DEFSYM %HMCEN==17 ; Return Heads To Centerline
|
||
; Just clears %HSOFS on RP07
|
||
DEFSYM %HMACK==23 ; Acknowledge mounting of pack (required before I/O)
|
||
; No-op on RP07
|
||
DEFSYM %HMRDP==21 ; Read-In Preset
|
||
|
||
DEFSYM %HRWC=:776702 ;WORD COUNT.
|
||
|
||
DEFSYM %HRBA=:776704 ;UNIBUS ADDRESS.
|
||
|
||
DEFSYM %HRADR=:776706 ;DESIRED ADDRESS.
|
||
DEFSYM $HATRK==.BP 37400 ; Track
|
||
DEFSYM $HASEC==.BP 00177 ; Sector
|
||
;; These are the sizes on the RP07 -- other drives are smaller.
|
||
;; This is OK, as most places calculate this as Track_8+Sector
|
||
|
||
DEFSYM %HRCS2=:776710 ;CTRL AND STATUS 2.
|
||
DEFSYM %HYDLT==1_15. ; Data Late
|
||
DEFSYM %HYWCE==1_14. ; Write Check Error
|
||
DEFSYM %HYPE== 1_13. ; Parity Error
|
||
DEFSYM %HYNED==1_12. ; Non-existant Drive
|
||
DEFSYM %HYNEM==1_11. ; %HRBA is NXM during DMA
|
||
DEFSYM %HYPGE==1_10. ; Program Error
|
||
DEFSYM %HYMXF==1_9. ; Missed Transfer
|
||
DEFSYM %HYMDP==1_8. ; Mass Data Bus Parity Error
|
||
DEFSYM %HYOR== 1_7. ; Output Ready (for Silo buffer diag.)
|
||
DEFSYM %HYIR== 1_6. ; Input Ready (for Silo buffer diag.)
|
||
DEFSYM %HYCLR==1_5. ; Controller Clear
|
||
DEFSYM %HYPAT==1_4. ; Parity Test
|
||
DEFSYM %HYBAI==1_3. ; Unibus Address Increment Inhibit
|
||
DEFSYM $HYDSK==.BP 7 ; Bits 2-0 are the Unit Select.
|
||
|
||
DEFSYM %HRSTS=:776712 ;DRIVE STATUS.
|
||
DEFSYM %HSATN==1_15. ; Attention Active
|
||
DEFSYM %HSERR==1_14. ; Error
|
||
DEFSYM %HSPIP==1_13. ; Positioning In Progress
|
||
DEFSYM %HSMOL==1_12. ; Medium On-Line
|
||
DEFSYM %HSWRL==1_11. ; Write Locked
|
||
DEFSYM %HSLST==1_10. ; Last Sector Transferred
|
||
DEFSYM %HSPGM==1_9. ; Programmable
|
||
DEFSYM %HSDPR==1_8. ; Drive Present
|
||
DEFSYM %HSRDY==1_7. ; Drive Ready
|
||
DEFSYM %HSVV== 1_6. ; Volume Valid
|
||
; These are RP04-only bits in %HRSTS
|
||
; DEFSYM %HSDE1==1_5. ; Difference Equals 1
|
||
; DEFSYM %HSL64==1_4. ; Difference Less Than 64
|
||
; DEFSYM %HSGRV==1_3. ; Go Reverse
|
||
; DEFSYM %HSDIG==1_2. ; Drive To Inner Guard Band
|
||
; DEFSYM %HSF20==1_1. ; Drive Forward 20in/sec
|
||
; DEFSYM %HSF5== 1_0. ; Drive Forward 5in/sec
|
||
IFN RP07P,[
|
||
DEFSYM %HSILS==1_2. ; Interleaved Sectors
|
||
DEFSYM %HSWRN==1_1. ; Early Warning
|
||
DEFSYM %HSOFS==1_0. ; Offset Mode
|
||
]
|
||
|
||
DEFSYM %HRER1=:776714 ;ERROR 1.
|
||
DEFSYM %H1ECC==1_15. ; Data Check
|
||
DEFSYM %H1UNS==1_14. ; Unsafe
|
||
DEFSYM %H1OPI==1_13. ; Operation Incomplete
|
||
DEFSYM %H1DTE==1_12. ; Drive Timing Error
|
||
DEFSYM %H1WLK==1_11. ; Write Lock Error
|
||
DEFSYM %H1IAE==1_10. ; Invalid Address Error
|
||
DEFSYM %H1AOE==1_9. ; Address Overflow Error
|
||
DEFSYM %H1CRC==1_8. ; Header CRC Error
|
||
DEFSYM %H1HCE==1_7. ; Header Compare Error
|
||
DEFSYM %H1ECH==1_6. ; ECC Hard Error
|
||
DEFSYM %H1WCF==1_5. ; Write Clock Fail
|
||
DEFSYM %H1FER==1_4. ; Format Error
|
||
DEFSYM %H1PAR==1_3. ; Parity Error
|
||
DEFSYM %H1RMR==1_2. ; Register Modification Refused
|
||
DEFSYM %H1ILR==1_1. ; Illegal Register
|
||
DEFSYM %H1ILF==1_0. ; Illegal Function
|
||
|
||
DEFSYM %HRATN=:776716 ;ATTENTION SUMMARY.
|
||
; Each bit 7-0 corresponds to a drive asserting ATA.
|
||
|
||
DEFSYM %HRLAH=:776720 ;LOOK AHEAD.
|
||
; 2.2 - 1.7 Sector Count.
|
||
; 1.6 - 1.5 Encoded Extension Field.
|
||
|
||
DEFSYM %HRBUF=:776722 ;DATA BUFFER.
|
||
|
||
DEFSYM %HRMNT=:776724 ;MAINTENANCE.
|
||
|
||
DEFSYM %HRTYP=:776726 ;DRIVE TYPE.
|
||
; 2.7 NOT BLOCK ADDRESSED
|
||
; 2.6 TAPE
|
||
; 2.5 Moving Head (better be a 1!!)
|
||
; 2.3 Drive Request Required
|
||
; 1.9 - 1.1 Drive Type Number:
|
||
; RP04 = 20, RP05 = 21,
|
||
; RP06 = 22, RM03 = 24,
|
||
; RM80 = 26, RP07 = 42
|
||
|
||
DEFSYM %HRSER=:776730 ;SERIAL NUMBER.
|
||
|
||
DEFSYM %HROFS=:776732 ;OFFSET.
|
||
; 2.9-2.8 Unused
|
||
; 2.7 Sign Change (RP06 only)
|
||
; 2.7 Command Modifier (RP07 only)
|
||
; Must be set before %HMWHD, %HMWTD or %HMRTD
|
||
; 2.6 Move Track Descriptor (RP07 only)
|
||
; 0 = 128. bit track descriptor
|
||
; 1 = 344. bit track descriptor
|
||
; 2.4 Format Bit (1=16, 0=18)
|
||
; 2.3 ECC Inhibit
|
||
; 2.2 Header Compare Inhibit
|
||
; 2.1 Skip Sector Inhibit (RM 16bit only)
|
||
; 1.9 Unused
|
||
;
|
||
; 1.8 - 1.1 Unused on RP07
|
||
; RP07 doesn't support offsets
|
||
;
|
||
; RP06 Offsets
|
||
; 1.8 - 1.1 Offset Info
|
||
; +400 u" 00010000
|
||
; -400 u" 10010000
|
||
; +800 u" 00100000
|
||
; -800 u" 10100000
|
||
; +1200 u" 00110000
|
||
; -1200 u" 10110000
|
||
; Centerline 00000000
|
||
;
|
||
; RMxx Offsets
|
||
; 1.1-1.7 Unused
|
||
; 1.8 Offset Direction
|
||
; 0 - Away from spindle
|
||
; 1 - Towards spindle
|
||
|
||
DEFSYM %HRCYL=:776734 ;DESIRED CYLINDER.
|
||
|
||
IFN RP06P,[
|
||
|
||
DEFSYM %HRCCY=:776736 ;CURRENT CYLINDER.
|
||
|
||
DEFSYM %HRER2=:776740 ;ERROR 2.
|
||
DEFSYM %H2NHS==1_10. ; No Head Selection
|
||
DEFSYM %H2WRU==1_8. ; Write Ready Unsafe
|
||
|
||
DEFSYM %HRER3=:776742 ;ERROR 3.
|
||
DEFSYM %H3OFC==1_15. ; Off Cylinder
|
||
DEFSYM %H3SKI==1_14. ; Seek Incomplete (also sets UNS+ATA+PIP+RDY)
|
||
DEFSYM %H3DCL==1_6. ; DC power low (or perhaps AC?)
|
||
DEFSYM %H3ACL==1_5. ; AC power low (or perhaps DC?)
|
||
; (the documentation is confused about
|
||
; which is which.)
|
||
|
||
];RP06P
|
||
|
||
IFN RP07P,[
|
||
|
||
DEFSYM %HRCCY=:776736 ;CURRENT CYLINDER.
|
||
|
||
DEFSYM %HRER2=:776740 ;ERROR 2.
|
||
DEFSYM %H2PRG==1_15. ; Program Error
|
||
DEFSYM %H2CRM==1_14. ; Control ROM parity error
|
||
DEFSYM %H2H88==1_13. ; 8080 in drive is hung
|
||
;; DEC unimaginatively calls the following three bits
|
||
;; READ/WRITE UNSAFE 1, 2 and 3.
|
||
DEFSYM %H2WU3==1_12. ; Write current when no write in progress
|
||
DEFSYM %H2WU2==1_11. ; More than one head selected
|
||
DEFSYM %H2WU1==1_10. ; No write transitions during a write
|
||
DEFSYM %H2WOV==1_9. ; Write Overrun
|
||
DEFSYM %H2WRU==1_8. ; Write Ready Unsafe
|
||
DEFSYM $H2COD==.BP 377 ; Error Code
|
||
;; Error codes are:
|
||
;; 012 Seek operation too long.
|
||
;; 013 Guard band detected during seek operation.
|
||
;; 014 Seek operation overshoot.
|
||
;; 104 Guard band detection failure during recalibrate operation.
|
||
;; 105 Reference gap or guard band pattern detection failure during
|
||
;; recalibrate operation.
|
||
;; 106 Seek error during recalibrate operation.
|
||
;; 112 Heads have attempted to land on guard band during recalibrate
|
||
;; operation.
|
||
|
||
DEFSYM %HRER3=:776742 ;ERROR 3.
|
||
DEFSYM %H3BDS==1_15. ; Bad Sector
|
||
DEFSYM %H3SKI==1_14. ; Seek Incomplete (see error code in ER2)
|
||
DEFSYM %H3DSE==1_13. ; Defect Skip Error
|
||
DEFSYM %H3WCF==1_12. ; Write Current Failure
|
||
DEFSYM %H3LCF==1_11. ; Logic Control Failure
|
||
DEFSYM %H3LBC==1_10. ; Loss of Bit Clock
|
||
DEFSYM %H3LCE==1_9. ; Loss of Cylinder Error
|
||
DEFSYM %H3X88==1_8. ; 8080 in drive failed to respond to a command
|
||
DEFSYM %H3DCK==1_7. ; Device Check
|
||
DEFSYM %H3WHD==1_6. ; Index Unsafe (Bad %HMWHD)
|
||
DEFSYM %H3DCL==1_5. ; DC Low voltage
|
||
DEFSYM %H3SDF==1_4. ; Serdes Data (data buffer timing) Failure
|
||
DEFSYM %H3PAR==1_3. ; Data Parity Error during write operation
|
||
DEFSYM %H3SYB==1_2. ; Sync Byte error
|
||
DEFSYM %H3SYC==1_1. ; Sync Clock failure
|
||
DEFSYM %H3RTM==1_0. ; Run timeout
|
||
|
||
];RP07P
|
||
|
||
IFN RM03P\RM80P,[
|
||
; RM has no Current Cylinder Register, the Error 2 Register is
|
||
; in a different place with different bits, and there is no
|
||
; Error 3 register
|
||
|
||
DEFSYM %HRER2=:776742 ;ERROR 2.
|
||
DEFSYM %H2BSE==1_15. ; Bad Sector (sector marked bad on disk)
|
||
DEFSYM %H2SKI==1_14. ; Seek Incomplete (also sets UNS+ATA+PIP+RDY)
|
||
DEFSYM %H2OPE==1_13. ; Drive address plug was removed
|
||
DEFSYM %H2IVC==1_12. ; Invalid Command (really drive not valid)
|
||
DEFSYM %H2LSC==1_11. ; LSC Sucks
|
||
DEFSYM %H2LBC==1_10. ; Loss of Bitcheck (hardware lossage)
|
||
DEFSYM %H2DVC==1_7 ; Device Check (generic hardware lossage)
|
||
DEFSYM %H2SSE==1_5 ; Skip Sector found (can't happen in 18bit)
|
||
DEFSYM %H2DPE==1_3 ; Data Parity Error in controller
|
||
|
||
];RM03P\RM80P
|
||
|
||
DEFSYM %HRPOS=:776744 ;ECC POSITION.
|
||
|
||
DEFSYM %HRPAT=:776746 ;ECC PATTERN.
|
||
|
||
IFN $$TEMP,EXPUNG DEFSYM
|