1 /SERIAL-BASED DISK SYSTEM 2 /NON-SYSTEM HANDLER FOR OMNIBUS 3 /KYLE OWEN - 2/17/2014 4 5 0004 VERS="D&77 6 7 6400 BASER=6400 8 6410 BASET=6410 9 10 6400 SKCF=BASER 11 6401 SKSF=BASER+1 12 6402 SKCC=BASER+2 13 6404 SKRS=BASER+4 14 6405 SKIE=BASER+5 15 6406 SKRB=BASER+6 16 17 6410 STFL=BASET 18 6411 STSF=BASET+1 19 6412 STCF=BASET+2 20 6414 STPC=BASET+4 21 6415 STSK=BASET+5 22 6416 STLS=BASET+6 23 24 6260 BLKNUM=6260 25 26 /HANDLER SENDS: 27 /A OR B FOR PRIMARY DISK, SIDE A OR B 28 /C OR D FOR SECONDARY DISK, SIDE A OR B 29 30 0000 *0 31 00000 7774 -4 /FOUR DEVICES 32 00001 2304 DEVICE SDSK; DEVICE SDA0; 4640; ENTRY1&177; 0; 0 00002 2313 00003 2304 00004 0160 00005 4640 00006 0045 00007 0000 00010 0000 33 00011 2304 DEVICE SDSK; DEVICE SDB0; 4640; ENTRY2&177; 0; 0 00012 2313 00013 2304 00014 0260 00015 4640 00016 0120 00017 0000 00020 0000 34 00021 2304 DEVICE SDSK; DEVICE SDA1; 4640; ENTRY3&177; 0; 0 00022 2313 00023 2304 00024 0161 00025 4640 00026 0126 00027 0000 00030 0000 /SERIAL-BASED DISK SYSTEM Page 1 35 00031 2304 DEVICE SDSK; DEVICE SDB1; 4640; ENTRY4&177; 0; 0 00032 2313 00033 2304 00034 0261 00035 4640 00036 0134 00037 0000 00040 0000 36 37 0200 *200 38 00200 0000 SENDC, 0 /SEND CHARACTER IN AC 39 00201 6416 STLS 40 00202 6411 STSF 41 00203 5202 JMP .-1 42 00204 5600 JMP I SENDC 43 44 00205 0000 SNDNUM, 0 /SEND NUMBER AS TWO CONSECUTIVE CHARACTERS 45 00206 4200 JMS SENDC /SEND BOTTOM 8 BITS OF WORD 46 00207 7002 BSW /SEND TOP 6 BITS OF WORD PLUS SOME, LET SERVER HANDLE IT 47 00210 4200 JMS SENDC 48 00211 7200 CLA 49 00212 5605 JMP I SNDNUM 50 51 00213 0000 GETNUM, 0 52 00214 6402 SKCC /CLEAR AC AND FLAG 53 00215 6401 SKSF /SKIP IF FLAG SET 54 00216 5215 JMP .-1 55 00217 6406 SKRB /READ BUFFER 56 00220 7002 BSW /SWAP BYTES 57 00221 6401 SKSF /SKIP IF FLAG SET 58 00222 5221 JMP .-1 59 00223 6404 SKRS /OR BUFFER WITH AC 60 00224 5613 JMP I GETNUM 61 62 00225 1310 TXPG, TAD CDFSTO /GET DATA FIELD 63 00226 3227 DCA TXCDF /MODIFY CDF FOR TRANSFER 64 00227 7402 TXCDF, HLT /MODIFIED TO CDF 65 00230 1757 TAD I SLOC /GET WORD 66 00231 6201 CDF 0 /BACK TO FIELD 0 67 00232 2357 ISZ SLOC /NEXT LOCATION 68 00233 7000 NOP 69 00234 4205 JMS SNDNUM /SEND IT 70 00235 2360 ISZ WORDCT /INCREMENT WORD COUNT...DONE? 71 00236 5227 JMP TXCDF /NO, KEEP LOOPING 72 00237 5277 JMP GETACK /ANY MORE REQUESTS? 73 74 00240 2245 EXIT, ISZ ENTRY1 /NORMAL EXIT 75 00241 7402 SFIELD, HLT /MODIFIED TO CDI 76 00242 5645 JMP I ENTRY1 /EXIT WITH FATAL ERROR 77 00243 7130 ERROR, CLL CML RAR /ROTATE ERROR CODE AND SET NEGATIVE BIT /SERIAL-BASED DISK SYSTEM Page 2 78 00244 5241 JMP SFIELD /ERROR EXIT 79 80 00245 0004 ENTRY1, VERS 81 00246 7300 CLA CLL /CLEAR LINK FOR FIRST PLATTER 82 00247 1361 SETUP, TAD WKUP /ADD WAKEUP CHARACTER 83 00250 3200 DCA SENDC /STORE IN A TEMP LOCATION 84 00251 4342 JMS CTRLC /CHECK IF CTRL C HAS BEEN PRESSED 85 00252 1200 TAD SENDC /GET WAKEUP CHARACTER 86 00253 4200 JMS SENDC /SEND WAKEUP CHARACTER 87 00254 7200 CLA 88 00255 6214 RDF /GET CURRENT FIELD 89 00256 1352 TAD SCDI /ADD CDI 90 00257 3241 DCA SFIELD /DEPOSIT MODIFIED CIF 91 00260 1645 TAD I ENTRY1 /GET FUNCTION 92 00261 4205 JMS SNDNUM /TELL SERVER FUNCTION 93 00262 2245 ISZ ENTRY1 /LOOK AT BUFFER ADDRESS 94 00263 1645 TAD I ENTRY1 /GET BUFFER ADDRESS 95 00264 4205 JMS SNDNUM /TELL SERVER BUFFER ADDRESS 96 00265 1645 TAD I ENTRY1 /GET BUFFER ADDRESS 97 00266 3357 DCA SLOC /STORE BUFFER ADDRESS 98 00267 2245 ISZ ENTRY1 /LOOK AT STARTING BLOCK NUMBER 99 00270 1645 TAD I ENTRY1 /GET STARTING BLOCK NUMBER 100 00271 4205 JMS SNDNUM /TELL SERVER STARTING BLOCK NUMBER 101 00272 2245 ISZ ENTRY1 /LOOK AT ERROR RETURN 102 00273 4213 JMS GETNUM /RECEIVE CDF INSTRUCTION 103 00274 3310 DCA CDFSTO 104 00275 4213 JMS GETNUM /RECEIVE NEGATIVE WORD COUNT 105 00276 3360 DCA WORDCT 106 00277 4213 GETACK, JMS GETNUM /4000=READ, 4001=WRITE, 0000=DONE, 2000=ERROR 107 00300 7450 SNA /WAS IT ZERO? 108 00301 5240 JMP EXIT /YES, EXIT 109 00302 7104 CLL RAL /NO, IS HIGH BIT SET? 110 00303 7420 SNL 111 00304 5243 JMP ERROR /NO, ERROR! 112 00305 7640 SZA CLA /YES, READ OR WRITE? 113 00306 5225 JMP TXPG /TIME TO WRITE 114 115 00307 4213 RXLP, JMS GETNUM /GET WORD 116 00310 7402 CDFSTO, HLT /MODIFIED TO CDF 117 00311 3757 DCA I SLOC /STORE CONTENTS 118 00312 6201 CDF 0 119 00313 2357 ISZ SLOC /NEXT LOCATION 120 00314 7000 NOP 121 00315 2360 ISZ WORDCT /INCREMENT WORD COUNT...DONE? 122 00316 5307 JMP RXLP /NO, KEEP LOOPING 123 00317 5277 JMP GETACK /ANY OTHER REQUESTS? 124 125 00320 0004 ENTRY2, VERS /SECOND ENTRY POINT 126 00321 7200 CLA 127 00322 1320 TAD ENTRY2 /GET ARGUMENT ADDRESS /SERIAL-BASED DISK SYSTEM Page 3 128 00323 3245 DCA ENTRY1 /STORE IT IN COMMON PLACE 129 00324 7301 CLA CLL IAC /SET AC = 1 FOR 2ND PLATTER 130 00325 5247 JMP SETUP /CONTINUE WITH SETUP 131 132 00326 0004 ENTRY3, VERS 133 00327 7200 CLA 134 00330 1326 TAD ENTRY3 /GET ARGUMENT ADDRESS 135 00331 3245 DCA ENTRY1 /STORE IT IN COMMON PLACE 136 00332 7305 CLA CLL IAC RAL /SET AC = 2 FOR 3RD PLATTER 137 00333 5247 JMP SETUP /CONTINUE WITH SETUP 138 139 00334 0004 ENTRY4, VERS 140 00335 7200 CLA 141 00336 1334 TAD ENTRY4 /GET ARGUMENT ADDRESS 142 00337 3245 DCA ENTRY1 /STORE IT IN COMMON PLACE 143 00340 7325 CLA CLL CML IAC RAL /SET AC = 3 FOR 4TH PLATTER 144 00341 5247 JMP SETUP /CONTINUE WITH SETUP 145 146 00342 0000 CTRLC, 0 147 00343 7200 CLA 148 00344 6034 KRS /READ KEYBOARD 149 00345 0354 AND S177 /KEEP BOTTOM 7 BITS 150 00346 1355 TAD N3 /SUBTRACT 3 151 00347 7650 SNA CLA /WAS IT A ^C? 152 00350 6031 KSF /YES, IS KEYBOARD FLAG UP? 153 00351 5742 JMP I CTRLC /RETURN 154 00352 6203 SCDI, CDF CIF 0 155 00353 5756 JMP I S7600 /JUMP BACK TO OS/8 156 157 00354 0177 S177, 177 158 00355 7775 N3, -3 159 00356 7600 S7600, 7600 160 00357 0000 SLOC, 0 161 00360 0000 WORDCT, 0 162 00361 0101 WKUP, 101 /'A' 163 00362 0000 ZBLOCK 400-. 00363 0000 00364 0000 00365 0000 00366 0000 00367 0000 00370 0000 00371 0000 00372 0000 00373 0000 00374 0000 00375 0000 00376 0000 00377 0000 164 $ No detected errors