*** empty log message ***
[h316.git] / lib / hachti / src / megastore.asm
CommitLineData
0a5c1d8a 1* MS$IOR, MS$IOW - MEGASTORE PIO ACCESS ROUTINES
2*********************************************************************************
3*
4* M$IOR - READ DATA FROM AMPEX MEGASTORE
5* M$IOW - WRITE DATA TO AMPEX MEGASTORE
6*
7* PURPOSE:
8*
9* ACCESS AMPEX MEGASTORE RAM DISK SYSTEM VIA PROGRAMMED IO.
10* SHOULD WORK WITH HONEYWELL FIXED HEAD DISK AS WELL.
11*
12*
13* AUTHOR:
14*
15* PHILIPP HACHTMANN
16*
17*
18* REVISIONS:
19*
20* REV 1 29.10.2009 INITIAL VERSION
21*
22*
23* CALLING SEQUENCE:
24*
25* DISK ADDRESS IS EXPECTED IN A.
26* *
27* CALL MS$IOR CALL TO READ ROUTINE
28* DAC BUFFP POINTER TO READ BUFFER
29* DAC CNTP POINTER TO NUMBER OF BLOCKS TO TRANSFER
30* DAC 0 NEEDED FOR FORTRAN IV COMPATIBILITY
31*
32* CALL MS$IOW CALL TO WRITE ROUTINE
33* DAC BUFFP POINTER TO WRITE BUFFER
34* DAC CNTP POINTER TO NUMBER OF BLOCKS TO TRANSFER
35* DAC 0 NEEDED FOR FORTRAN IV COMPATIBILITY
36*
37* EVERY BLOCK CONTAINS 16 WORDS.
38* INDEX AND B REGISTER ARE PRESERVED.
39* RETURN VALUES ARE STORED IN A.
40*
41* RETURN VALUES:
42*
43* 0 - NO ERROR
44* 1 - PARITY ERROR
45* 2 - ACCESS ERROR, ADDRESSED BLOCK NONEXISTANT
46* 3 - TIMOUT ERROR, SHOULD NOT OCCUR
47* 4 - MEGASTORE NOT BUSY, UNSPECIFIED ABORT
48*
49*
50* REMARKS:
51*
52* THE FOLLOWING IS MORE CORRECT THAN THE MEGASTORE MANUAL.
53* IT HAS BEEN PAINFULLY VERIFIED AGAINST REALITY AND SCHEMATICS.
54*
55* SKS '522 SKIP IF *NO* TIMEOUT OCCURED
56*
57*
58* *******************************************************************************
59* EXPORT SYMBOLS
60*
61 SUBR MS$IOR,READ
62 SUBR MS$IOW,WRIT
63*
64 ABS
65 ORG '20000
66*
67*
68*********************************************************************************
69*
70* READ ROUTINE
71*
72READ DAC 0
73*
74 SSP CLEAR WRITE BIT IF ACCIDENTALLY SET
75 STA DADD SAVE DISK ADDRESS
76 LDA RDBR READ BRANCH INSTRUCTION FOR INNER LOOP
77 STA BRAN SAVE TO BRANCH LOCATION
78 LDA READ LOAD RETURN POINTER
79 JMP MAIN GO TO MAIN WORKING PART
80*
81*
82*********************************************************************************
83*
84* WRITE ROUTINE
85*
86WRIT DAC 0
87*
88 SSM SET WRITE BIT
89 STA DADD SAVE DISK ADDRESS
90 LDA WRBR READ BRANCH INSTRUCTION FOR INNER LOOP
91 STA BRAN SAVE TO BRANCH LOCATION
92 LDA WRIT LOAD RETURN POINTER
93 JMP MAIN GO TO MAIN WORKING PART
94*
95*
96********************************************************************************
97*
98* MAIN WORKING PART
99*
100MAIN STA RTPT SAVE RETURN POINTER
101 LDA* RTPT BUFFER ADDRESS
102 STA PTR SAVE TO POINTER
103 IRS RTPT
104 LDA* RTPT GET BLOCK COUNT POINTER
105 STA CNT TEMPORARILY STORE POINTER
106 LDA* CNT GET BLOCK COUNT VALUE
107 ALS 4 MULTIPLY BY 16, MAKING IT THE WORD COUNT
108 TCA NEGATE IT
109 STA CNT AND SET UP THE LOOP COUNTER
110 IRS RTPT JUMP OVER CALLER'S DAC 0
111*
112****************************************
113* INITIALIZE MEGASTORE
114*
115 LDA DADD LOAD DISK ADDRESS
116 OCP '722 ACTIVATE IO MODE
117 OTA '22 WRITE DISK ADDRESS TO MEGASTORE
118 JMP *-1 WAIT IF NEEDED
119*
120****************************************
121* WORKING LOOP
122*
123LOOP SKS '22 CHECK FOR READY - THERE IS NO REASON FOR THIS CHECK
124 JMP *-1 -- OTHER THAN IT IS NEEDED BY THE MEGASTORE!
125*
126BRAN HLT DYNAMICALLY FILLED WITH RDBR OR WRBR
127*
128RD CRA CLEAR A, ONE OF MY BOARDS DOESN'T DO INA '1022
129 INA '22 GET DATA FROM MEGASTORE
130* INA '1022 CAN BE USED FOR ABOVE TWO WHEN CONTROL HAS BEEN FIXED.
131RDBR JMP RD COPIED TO BRAN
132 STA* PTR STORE TO BUFFER
133 JMP EBRA TO END OF BRANCH
134*
135WR LDA* PTR
136 OTA '22 WRITE TO MEGASTORE
137WRBR JMP WR COPIED TO BRAN
138*
139****************************************
140* ERROR CHECKS
141*
142EBRA CRA
143 AOA ERROR CODE 1
144 SKS '0222 SKIP IF NO PARITY ERROR
145 JMP ABRT ABORT
146*
147 AOA ERROR CODE 2
148 SKS '322 SKIP IF NO ACCESS ERROR
149 JMP ABRT ABORT
150*
151 AOA ERROR CODE 3
152 SKS '522 SKIP IF *NO* TIMEOUT (SEE ERRATA)
153 JMP ABRT ABORT
154*
155 AOA ERROR CODE 4
156 SKS '122 SKIP IF MEGASTORE NOT BUSY - IT SHOULD BE BUSY!
157 SKP
158 JMP ABRT ABORT
159*
160****************************************
161* END OF LOOP
162 IRS PTR INCREMENT POINTER
163 IRS CNT LOOP COUNTER UPDATE
164 JMP LOOP LOOP AGAIN
165*
166****************************************
167* CLEANUP AND EXIT
168*
169 CRA
170ABRT SKS '122 CHECK FOR BUSY (AGAIN)
171 OCP '722 STOP MEGASTORE IF BUSY
172 JMP* RTPT RETURN VIA RETURN POINTER
173*
174*
175********************************************************************************
176*
177* VARIABLES
178*
179CNT DAC 0 LOOP COUNTER
180PTR DAC 0 DATA POINTER
181DADD DAC 0 DISK ADDRESS: BIT 1=WRITE, 15 LSB SECTOR ADDRESS
182RTPT DAC 0 RETURN POINTER
183*
184*
185********************************************************************************
186*
187* THE END OF EVERYTHING
188*
189 END
190*
191********************************************************************************