1 ;;; Copyright (c) 1999 Massachusetts Institute of Technology
3 ;;; This program is free software; you can redistribute it and/or
4 ;;; modify it under the terms of the GNU General Public License as
5 ;;; published by the Free Software Foundation; either version 2 of the
6 ;;; License, or (at your option) any later version.
8 ;;; This program is distributed in the hope that it will be useful,
9 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 ;;; General Public License for more details.
13 ;;; You should have received a copy of the GNU General Public License
14 ;;; along with this program; if not, write to the Free Software
15 ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 ;ALLOW USER TO USE SYMBOLS IN OTHER WAYS IF HE WISHES.
20 ;BUT NORMALLY, DEFSYM FOO==BAR DOES FOO==BAR WITH ERROR CHECK.
29 IFN Z-$$TEM1,.ERR Z MULTIPLY .QUOTE`.QUOTE/DEFINED/`
34 IFLE .MLLIT,.ERR .MLLIT MUST BE 1; SETTING IT TO 1.
37 ];IF Not DEFined DEFSYM
41 ;DISK PHYSICAL PARAMETERS (RH10 CONTROLLER)
43 DEFSYM NCYLS==406. ;# CYLINDERS NORMALLY USED
44 DEFSYM XCYLS==411.-NCYLS ;# CYLINDERS FOR SPARES, HACKS, ETC.
45 DEFSYM NHEDS==19. ;# TRACKS/CYLINDER
46 DEFSYM NSECS==20. ;# SECTORS/TRACK
47 DEFSYM SECBLK==8 ;# SECTORS/BLOCK
48 DEFSYM NBLKSC==NHEDS*NSECS/SECBLK ;# BLOCKS/CYLINDER
49 DEFSYM NBLKS==NCYLS*NBLKSC ;# BLOCKS NORMALLY USED
50 DEFSYM XBLKS==XCYLS*NBLKSC ;# BLOCKS FOR HACKS
51 DEFSYM TBLKS==NBLKS+XBLKS ;TOTAL BLOCKS
53 DEFSYM NTUTBL==2 ;2 BLOCKS PER TUT
54 DEFSYM DECADE==NBLKSC ;NUMBER OF BLOCKS TO ALLOCATE AT A TIME
55 ;QSWAPA AND QLASTB MUST BE MULTIPLES OF THIS.
56 ;DECADE SIZE = CYLINDER SIZE FOR KLFEDR'S SAKE
57 DEFSYM DSK=270 ;I/O DEVICE NUMBER OF RH10
59 ;CONI - LEFT HALF (ERROR BITS ONLY)
61 DEFSYM %HID22==4000,, ;4.3 1=>22-BIT DATA CHANNEL, 0=>18-BIT
62 DEFSYM %HIILF==400,, ;3.9 ILLEGAL FUNCTION CODE IN CONTROL REGISTER
63 DEFSYM %HISDE==200,, ;3.8 SELECTED DRIVE PREVIOUS ERROR NOT RESET
64 DEFSYM %HIDPE==4,, ;3.3 CHANNEL DATA PARITY ERROR
65 DEFSYM %HICPE==2,, ;3.2 CHANNEL CONTROL WORD PARITY ERROR
66 DEFSYM %HINXM==1,, ;3.1 CHANNEL NXM ERROR
70 DEFSYM %HIBPE==400000 ;2.9 DATA BUSS PARITY ERROR
71 DEFSYM %HIEXC==200000 ;2.8 "EXCEPTION" IN DRIVE DURING DATA TRANSFER
72 DEFSYM %HICER==100000 ;2.7 CHANNEL ERROR (OR OF 3 BITS IN LH)
73 DEFSYM %HICWW==040000 ;2.6 CONTROL WORD HAS BEEN WRITTEN
74 DEFSYM %HIOVR==020000 ;2.5 OVER-RUN (MEMORY DATA LATE)
75 DEFSYM %HIDRE==010000 ;2.4 DRIVE RESPONSE ERROR - NO RESPONSE FROM DRIVE
76 DEFSYM %HIILC==004000 ;2.3 ILLEGAL COMMAND OR REGISTER ACCESS ERROR
77 DEFSYM %HIPWR==002000 ;2.2 POWER FAIL
78 DEFSYM %HICOV==000200 ;1.8 CONTROL BUS OVER-RUN
79 DEFSYM %HIRAE==000100 ;1.7 REGISTER ACCESS ERROR (ONLY IF INTR ENB)
80 DEFSYM %HIATN==000040 ;1.6 ATTENTION (INTERRUPTS)
81 DEFSYM %HIBSY==000020 ;1.5 CONTROL BUSY WITH DATA TRANSFER
82 DEFSYM %HIDON==000010 ;1.4 DATA TRANSFER DONE, NORMAL OR ERROR
84 DEFSYM %HIERR==736300 ;CONI ERROR BITS
88 ;2.7-2.9 CLEAR CORRESPONDING ERROR BITS
89 DEFSYM %HOWCW==040000 ;2.6 WRITE CONTROL WORD
90 ;2.3-2.5 CLEAR CORRESPONDING ERROR BITS
91 DEFSYM %HORST==002000 ;2.2 RESET THE CONTROLLER
92 ;1.8 CLEARS CORRESPONDING ERROR BIT
93 DEFSYM %HORAE==000100 ;1.7 ENABLE RAE TO INTERRUPT
94 DEFSYM %HOATN==000040 ;1.6 ENABLE ATTENTION TO INTERRUPT
95 DEFSYM %HOSTP==000020 ;1.5 STOP DATA TRANSFER, CLR BSY, SET DONE
96 ;1.4 CLEARS CORRESP BIT (DONE)
98 DEFSYM %HOCLR==734210 ;CONO TO CLEAR ALL ERROR BITS
100 ;CONTROLLER REGISTER NUMBERS (LH OF DATAO)
102 DEFSYM %HRLOD==1_13 ;4.3 BIT TO SAY "LOAD SELECTED REGISTER"
103 DEFSYM %HRCTL==40_14 ;CONTROL REGISTER
104 DEFSYM $HCDRV==.BP <7,,> ;3.1-3.3 DRIVE SELECT FIELD
105 DEFSYM $HCICWA==.BP 077700 ;1.7-2.6 INITIAL CONTROL WORD ADDR
106 ;AS USUAL, 1.7 IS REALLY THE WRITE EVEN PARITY BIT
107 ;1.1-1.6 FUNCTION CODE (%HMxxx) AND GO BIT
108 DEFSYM %HRBUF==50_14 ;DATA BUFFER REGISTER (MAINTENANCE)
109 DEFSYM %HRIAD==44_14 ;INTERRUPT ADDRESS REGISTER
110 ;3.2 1=>KI-10 MODE, 0=>KA-10 MODE
111 ;1.1-1.9 9-BIT VECTOR ADDRESS (KI)
112 DEFSYM %HRRAE==54_14 ;REGISTER ACCESS ERROR REGISTER
113 ;DATAI 1.1-1.8 RAE DRIVE 0-7
114 ;DATAO 1.1-1.8 CLEAR THAT BIT
115 DEFSYM %HRCBF==74_14 ;CHANNEL BUFFER
118 ; COMMANDS THAT DO I/O ARE PUT IN %HRCTL ALONG WITH $HCICWA
119 ; OTHER COMMANDS ARE STORED INTO %HRDCL
120 ; IN EITHER CASE $HCDRV SAYS WHICH DRIVE
122 DEFSYM %HMNOP==0 ;NO OPERATION
123 DEFSYM %HMUNL==3 ;UNLOAD (DOES PACK FLY OFF?)
124 DEFSYM %HMREC==7 ;RECALIBRATE
125 DEFSYM %HMCLR==11 ;DRIVE CLEAR (RESET ERRORS ETC.)
126 DEFSYM %HMRLS==13 ;DRIVE RELEASE (DUAL PORT)
127 DEFSYM %HMSRC==31 ;SEARCH (FOR R.P.S.)
128 DEFSYM %HMWCH==51 ;WRITE CHECK -- DOESN'T WORK (DEC BRAIN DAMAGE)
129 DEFSYM %HMWCF==53 ;WRITE CHECK FORMAT (HEADER AND DATA) -- DOESN'T WORK
130 DEFSYM %HMWRT==61 ;WRITE DATA
131 DEFSYM %HMWHD==63 ;WRITE HEADER AND DATA (FORMAT THE PACK)
132 DEFSYM %HMRED==71 ;READ DATA
133 DEFSYM %HMRHD==73 ;READ HEADER AND DATA
134 DEFSYM %HMSEK==5 ;SEEK TO CYLINDER
135 DEFSYM %HMOFS==15 ;OFFSET HEADS SLIGHTLY
136 DEFSYM %HMCEN==17 ;RETURN HEADS TO CENTERLINE
137 DEFSYM %HMACK==23 ;ACKNOWLEDGE MOUNTING OF PACK (REQUIRED BEFORE I/O)
138 DEFSYM %HMRDP==21 ;"READ-IN PRESET"
140 ;STANDARD FIELDS IN DRIVE REGISTERS
142 ;3.1-3.3 DRIVE NUMBER ($HCDRV)
143 DEFSYM %HDCBT==002000 ;4.2 CONTROL BUS TIMEOUT
144 DEFSYM %HDPAR==001000 ;4.1 MASS BUS CONTROL PARITY ERROR
145 DEFSYM %HDDLT==000400 ;3.9 DATA LATE (NEED 3 US BETWEEN DATAO AND DATAI)
146 DEFSYM %HDILC==000200 ;3.8 ILLEGAL COMMAND
147 DEFSYM %HDERR==003600 ;ALL BITS FOR ERRORS IN TALKING TO DRIVE
148 ;DRIVE-DEPENDENT DATA IS IN LOW 16 BITS (1.1-2.7)
150 ;DRIVE REGISTERS (NUMBER IN LH OF DATAO)
152 DEFSYM %HRDCL==0_14 ;DRIVE CONTROL REGISTER
153 ;1.1-1.6 COMMAND (%HMxxx) 1.1=GO BIT
154 DEFSYM %HCDVA==1_11. ;2.3 DRIVE AVAILABLE
156 DEFSYM %HRSTS==1_14 ;STATUS REGISTER
157 ;1.1-1.6 BITS ON DURING HEAD LOAD SEQUENCE
158 DEFSYM %HSVV==100 ;1.7 VOLUME VALID. SET BY %HMACK, CLEARED BY
159 ; DRIVE TURN ON. 0 => PACK MAY HAVE BEEN CHANGED
160 DEFSYM %HSRDY==200 ;1.8 DRIVE READY
161 DEFSYM %HSDPR==400 ;1.9 "DRIVE PRESET" = CONNECTED TO THIS CONTROLLER
162 DEFSYM %HSPGM==1000 ;2.1 "PROGRAMMABLE" = EITHER CTRLR CAN CONNECT
163 DEFSYM %HSLST==2000 ;2.2 LAST SECTOR TRANSFERRED
164 DEFSYM %HSWRL==4000 ;2.3 WRITE LOCK
165 DEFSYM %HSMOL==10000 ;2.4 MEDIUM ON-LINE
166 DEFSYM %HSPIP==20000 ;2.5 POSITIONING IN PROGRESS
167 DEFSYM %HSERR==40000 ;2.6 BIT ON %HRER1, %HRER2, OR %HRER3
168 DEFSYM %HSATN==100000 ;2.7 ATTENTION - ERROR, POSITIONING COMPLETE,
169 ; STARTUP COMPLETE, OR DRIVE AVAILABLE
171 DEFSYM %HRER1==2_14 ;ERROR REGISTER 1
172 ;GENERALLY THESE BITS ARE ONLY RESET BY %HMCLR
173 ;1.1 ILLEGAL COMMAND IN %HRDCL
174 ;1.2 ATTEMPT TO ACCESS NON-EXISTENT DRIVE REGISTER
175 ;1.3 ATTEMPT TO WRITE IN DRIVE REGISTER WHILE DRIVE BUSY
176 ;1.4 PARITY ERROR ON MASSBUS
177 ;1.5 FORMAT ERROR (PACK & CPU NOT BOTH 16- OR BOTH 18-BIT)
178 ;1.6 WRITE CLOCK FAIL
179 DEFSYM %H1ECH==100 ;1.7 ECC HARD ERROR (NOT 11-BIT BURST)
180 ;1.8 HEADER COMPARE ERROR
181 ;1.9 HEADER CRC ERROR
182 ;2.1 ADDRESS OVERFLOW
184 DEFSYM %H1WLK==4000 ;2.3 ATTEMPT TO WRITE WHILE WRITE-LOCKED
185 ;2.4 DRIVE TIMING ERROR. MAY DE-FORMAT THE TRACK.
186 ;2.5 OPERATION NOT COMPLETE (3 REVS NO ACTION)
187 ;2.6 DRIVE UNSAFE - WRITE LOCK OR FIELD SERVICE
188 DEFSYM %H1ECC==100000 ;2.7 DATA CHECK, ECC COMPUTATION INITIATED
189 DEFSYM %H1SOF==110730 ;SOFT ERRORS
191 DEFSYM %HRMNT==3_14 ;MAINTENANCE REGISTER (SEE RP04 MAINT MANUAL)
193 DEFSYM %HRATN==4_14 ;ATTENTION SUMMARY REGISTER (NOT REALLY PER-DRIVE)
194 ;1.1-1.8 %HSATN DRIVES 0-7
195 ;CLEARED BY ACCESSING DRIVE OR WRITING A 1
197 DEFSYM %HRADR==5_14 ;DESIRED SECTOR/TRACK ADDRESS
198 DEFSYM $HATRK==.BP 17400 ;TRACK 0-22 OCTAL
199 DEFSYM $HASEC==.BP 37 ;SECTOR 0-23 OCTAL (128 WORDS EACH)
200 ;NOTE THESE FIELDS ARE 8-BITS EACH
202 DEFSYM %HRLAH==7_14 ;LOOK AHEAD (READ ONLY)
203 ;NUMBER OF 64'THS OF A SECTOR
205 DEFSYM %HRTYP==6_14 ;DRIVE TYPE (RO)
206 ;1.1-1.9 DRIVE TYPE NUMBER (20 FOR "RP04")
210 ;2.7 NOT BLOCK ADDRESSED
212 DEFSYM %HRSER==10_14 ;DRIVE SERIAL NUMBER (RO)
214 DEFSYM %HROFS==11_14 ;HEAD OFFSET
216 ;1.9-2.7 MISC CRUFTIES
218 DEFSYM %HRCYL==12_14 ;DESIRED CYLINDER ADDRESS
221 DEFSYM %HRCCY==13_14 ;CURRENT CYLINDER ADDRESS
223 DEFSYM %HRER2==14_14 ;ERROR REGISTER 2
224 ;MISC UNSAFE CONDITIONS IN DRIVE
226 DEFSYM %HRER3==15_14 ;ERROR REGISTER 3
227 ;1.1-1.7 MORE MISC UNSAFES IN DRIVE
228 DEFSYM %H3SKI==40000 ;2.6 SEEK INCOMPLETE
229 DEFSYM %H3OFC==100000 ;2.7 OFF CYLINDER
231 DEFSYM %HRPOS==16_14 ;ECC POSITION
232 ;LOCATION OF ERROR BURST WITHIN SECTOR
234 DEFSYM %HRPAT==17_14 ;ECC PATTERN
237 ;DF10-C CHANNEL DEFINITIONS (22-BIT- (KI-) MODE)
239 DEFSYM $DFCAD==002600,, ;CURRENT ADDRESS - 1 (IN CONTROL WORD)
240 DEFSYM $DFWC==261600,, ;- WORD COUNT (IN CONTROL WORD)
241 DEFSYM $DFLAD==002600,, ;LAST DATA ADDRESS (IN STORED CONTROL WD)
242 DEFSYM $DFCWA==261600,, ;LAST CONTROL WORD ADDRESS (IN STORED CONTROL WORD)
246 IFN $$TEMP,EXPUNG DEFSYM