/SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 1 /SERIAL-BASED DISK SYSTEM - NON-SYS /NON-SYSTEM HANDLER FOR OS/8 /KYLE OWEN 17/FEB/2014 - ORIGINAL TO VERSION D /BOB ADAMSON 16/NOV/2015 - EXTENDED TO 4 DISKS FOR NON-SYS / - REMOVED REDUNDANT CDFS / - DISABLED INTERRUPTS FROM HERE / - REPLACED BSWS WITH ROTATES 0005 VERS="E&77 6400 BASER=6400 /USING DEVICE 40/41 6410 BASET=6410 6400 SKCF=BASER 6401 SKSF=BASER+1 6402 SKCC=BASER+2 6404 SKRS=BASER+4 6405 SKIE=BASER+5 6406 SKRB=BASER+6 6410 STFL=BASET 6411 STSF=BASET+1 6412 STCF=BASET+2 6414 STPC=BASET+4 6415 STSK=BASET+5 6416 STLS=BASET+6 6260 BLKNUM=6260 /HANDLER SENDS: /A OR B FOR PRIMARY DISK, SIDE A OR B /C OR D FOR SECOND DISK, SIDE A OR B /E OR F FOR THIRD DISK, SIDE A OR B /G OR H FOR FOURTH DISK, SIDE A OR B 0000 *0 00000 7770 -10 /EIGHT DEVICES (4 DISKS = 8 LOGICAL DISKS) 00001 2304 DEVICE SDIS; DEVICE SDA0; 4640; SDA0&177; 0; 0 00002 1123 00003 2304 00004 0160 00005 4640 00006 0053 00007 0000 00010 0000 00011 2304 DEVICE SDIS; DEVICE SDB0; 4640; SDB0&177; 0; 0 00012 1123 00013 2304 00014 0260 00015 4640 00016 0052 00017 0000 00020 0000 00021 2304 DEVICE SDIS; DEVICE SDA1; 4640; SDA1&177; 0; 0 /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 1-1 00022 1123 00023 2304 00024 0161 00025 4640 00026 0051 00027 0000 00030 0000 00031 2304 DEVICE SDIS; DEVICE SDB1; 4640; SDB1&177; 0; 0 00032 1123 00033 2304 00034 0261 00035 4640 00036 0050 00037 0000 00040 0000 00041 2304 DEVICE SDIS; DEVICE SDA2; 4640; SDA2&177; 0; 0 00042 1123 00043 2304 00044 0162 00045 4640 00046 0047 00047 0000 00050 0000 00051 2304 DEVICE SDIS; DEVICE SDB2; 4640; SDB2&177; 0; 0 00052 1123 00053 2304 00054 0262 00055 4640 00056 0046 00057 0000 00060 0000 00061 2304 DEVICE SDIS; DEVICE SDA3; 4640; SDA3&177; 0; 0 00062 1123 00063 2304 00064 0163 00065 4640 00066 0045 00067 0000 00070 0000 00071 2304 DEVICE SDIS; DEVICE SDB3; 4640; SDB3&177; 0; 0 00072 1123 00073 2304 00074 0263 00075 4640 00076 0044 00077 0000 00100 0000 0200 *200 00200 0000 SENDC, 0 /SEND CHARACTER IN AC 00201 6416 STLS 00202 6411 STSF 00203 5202 JMP .-1 /WAIT FOR IT TO GO 00204 5600 JMP I SENDC /WE HAVE NOT CLEARED THE AC /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 1-2 00205 0000 SNDNUM, 0 /SEND 12-BIT WORD AS TWO CONSECUTIVE CHARACTERS 00206 4200 JMS SENDC /SEND BOTTOM 8 BITS OF WORD 00207 7012 RTR /NO BSW TO SUIT 8/I ETC 00210 7012 RTR 00211 7012 RTR 00212 4200 JMS SENDC /SEND TOP 4 BITS PLUS SOME - LET SERVER HANDLE IT. 00213 7200 CLA 00214 5605 JMP I SNDNUM /EXIT WITH AC=0 00215 0000 GETNUM, 0 /RECEIVE 1 WORD AS 2 SUCCESSIVE SIXBITS 00216 6402 SKCC /CLEAR AC AND FLAG 00217 6401 SKSF /WAITING FOR THE FLAG TO SET 00220 5217 JMP .-1 00221 6406 SKRB /READ BUFFER WHICH WILL BE 1ST SIXBIT 00222 7106 CLL RTL /SHIFT SIXBIT TO BITS 0-5 00223 7006 RTL /NO BSW TO SUIT 8/I ETC 00224 7006 RTL 00225 6401 SKSF /WAITING FOR THE NEXT FLAG 00226 5225 JMP .-1 /WHICH WILL BE THE 2ND SIXBIT 00227 6404 SKRS /OR BUFFER WITH AC TO GIVE 12 BIT WORD 00230 5615 JMP I GETNUM 00231 0000 CTRLC, 0 /CHECK FOR ^C KEYBOARD INTERRUPTS 00232 7600 S7600, 7600 /= CLA ALSO OS/8 ENTRY POINT 00233 6031 KSF /HAS THE KEYBOARD BEEN HIT? 00234 5631 JMP I CTRLC /NO, JUST GO AWAY 00235 6034 KRS /IF HE'S TYPED, READ THE KEY 00236 0361 AND S177 /7 BITS ONLY IN CASE OF PARITY 00237 1362 TAD M3 /^C IS CODE 203 00240 7640 SZA CLA /WAS IT ^C? 00241 5631 JMP I CTRLC /NO, JUST GO AWAY 00242 6203 SCDI, CIF CDF 0 /IF WE HAD A ^C, FORCE FIELD 0 00243 5632 JMP I S7600 /AND EXIT TO OS/8 00244 0005 SDB3, VERS /ENTRY POINT LIST (NOTE REVERSE ORDER) 00245 2356 SDA3, ISZ SDCNT /COUNT UP WHERE WE ENTERED 00246 2356 SDB2, ISZ SDCNT /EVENTUALLY SDCNT WILL BE 00247 2356 SDA2, ISZ SDCNT /THE NUMBER OF THE ENTRY POINT 00250 2356 SDB1, ISZ SDCNT /MINUS 1 COUNTING FROM THE TOP 00251 2356 SDA1, ISZ SDCNT /IE SDCNT=7 FOR ENTRY SDB3 00252 2356 SDB0, ISZ SDCNT /DOWN TO =0 FOR SDA0 00253 2356 SDA0, ISZ SDCNT /FOR THIS ENTRY, SDCNT WILL =0 /THE NEXT CONSTANT MUST STAY HERE /RELATIVE TO THE FOREGOING ENTRIES 00254 0101 WKUP, 101 /"A" - ('AND' INSTRUCTION IS DON'T CARE) 00255 7300 CLA CLL 00256 6405 SKIE /NO INTERRUPTS FROM THIS CONSOLE 00257 1356 TAD SDCNT /AC=ENTRY POINT NUMBER MINUS 1 00260 7040 CMA /AC=ENTRY POINT MINUS 8 00261 1276 TAD SDTAD /AC=TAD (ENTRY POINT) 00262 3271 DCA SDGET /READY TO SAVE ENTRY POINT VALUE 00263 7332 CLA CLL CML RTR /=2000 00264 1271 TAD SDGET /AC=DCA (ENTRY POINT) 00265 3274 DCA SRESTR /GET READY TO REWRITE ENTRY POINT 00266 6214 RDF /GET THE CALLING DATA FIELD /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 1-3 00267 1242 TAD SCDI /AND MAKE A RETURN FIELD CHANGE 00270 3352 DCA SFIELD /FOR OUR EXIT 00271 7402 SDGET, HLT /BECOMES TAD (ENTRY POINT) 00272 3357 DCA SDENT /WHICH IS START OF PARAMETER LIST 00273 1360 TAD SDISZ /GET THE ORIGINAL ISZ INSTRUCTION 00274 7402 SRESTR, HLT /AND RESET THE ENTRY POINT /OK, WE'RE ALL SET FOR THE TRANSFER 00275 4231 JMS CTRLC /SEE IF WE'RE BEING INTERRUPTED 00276 1254 SDTAD, TAD WKUP /IF NOT GET WAKEUP CHARACTER 'A' 00277 1356 TAD SDCNT /ADD THE OFFSET (0-7, IE NOW 'A'-'H') 00300 4200 JMS SENDC /LET THE SERVER KNOW WHICH DEVICE 00301 7200 CLA 00302 3356 DCA SDCNT /RESET THE ENTRY COUNTER FOR NEXT TIME 00303 4343 JMS GETNEX /TELL SERVER REQUIRED FUNCTION 00304 1757 TAD I SDENT /GET BUFFER ADDRESS 00305 3363 DCA SLOC /STORE BUFFER ADDRESS FOR XFER 00306 4343 JMS GETNEX /TELL SERVER BUFFER ADDRESS 00307 4343 JMS GETNEX /TELL SERVER STARTING BLOCK NUMBER 00310 4215 JMS GETNUM /RECEIVE CDF INSTRUCTION 00311 3312 DCA .+1 /FOR TRANSFER 00312 7402 HLT /AND SET UP THE TRANSFER FIELD 00313 4215 JMS GETNUM /RECEIVE NEGATIVE WORD COUNT 00314 3364 DCA WORDCT 00315 4215 GETACK, JMS GETNUM /4000=READ, 4001=WRITE, 0000=DONE, 2000=ERROR 00316 7450 SNA /WAS IT ZERO? 00317 5350 JMP EXIT /YES, EXIT 00320 7104 CLL RAL /NO, IS HIGH BIT SET? 00321 7420 SNL 00322 5354 JMP ERROR /NO, ERROR! 00323 7640 SZA CLA /YES, READ OR WRITE? 00324 5334 JMP TXLP /TIME TO WRITE /READ ROUTINE 00325 4215 RXLP, JMS GETNUM /GET WORD 00326 3763 DCA I SLOC /STORE CONTENTS 00327 2363 ISZ SLOC /NEXT LOCATION 00330 7000 NOP /CAN'T CHECK ^C - SERVER MAY BLOW UP 00331 2364 ISZ WORDCT /INCREMENT WORD COUNT...DONE? 00332 5325 JMP RXLP /NO, KEEP LOOPING 00333 5315 JMP GETACK /CHECK FINAL ACKNOWLEDGEMENT /WRITE ROUTINE 00334 1763 TXLP, TAD I SLOC /GET WORD 00335 2363 ISZ SLOC /NEXT LOCATION 00336 7000 NOP /CAN'T CHECK ^C - SERVER WOULD HANG 00337 4205 JMS SNDNUM /SEND IT 00340 2364 ISZ WORDCT /INCREMENT WORD COUNT...DONE? 00341 5334 JMP TXLP /NO, KEEP LOOPING 00342 5315 JMP GETACK /CHECK FINAL ACKNOWLEDGEMENT 00343 0000 GETNEX, 0 /PARAMETER HANDLER UTILITY 00344 1757 TAD I SDENT /FETCH NEXT CALLING PARAMETER 00345 4205 JMS SNDNUM /AND SEND IT TO THE SERVER 00346 2357 ISZ SDENT /MOVE POINTER TO NEXT PARAMETER 00347 5743 JMP I GETNEX /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 1-4 00350 2357 EXIT, ISZ SDENT /POINT TO NORMAL EXIT 00351 4231 JMS CTRLC /LAST CHECK FOR INTERRUPT 00352 7402 SFIELD, HLT /MODIFIED TO CDI 00353 5757 JMP I SDENT /EXIT TO APPROPRIATE ADDRESS 00354 7130 ERROR, CLL CML RAR /ROTATE ERROR CODE AND SET NEGATIVE BIT 00355 5352 JMP SFIELD /ERROR EXIT /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 2 00356 0000 SDCNT, 0 /TRACKER FOR ENTRY POINT NUMBER 00357 0000 SDENT, 0 /SURROGATE FOR ENTRY POINT 00360 2356 SDISZ, ISZ SDCNT /TO RESTORE ENTRY POINT 00361 0177 S177, 177 00362 7775 M3, -3 /MINUS OF ^C 7-BIT CHARACTER 00363 0000 SLOC, 0 00364 0000 WORDCT, 0 $$$$$$ /SERIAL-BASED DISK SYSTEM - NON-SYS PAL8-V10D 30-DEC-81 PAGE 3 BASER 6400 BASET 6410 BLKNUM 6260 CTRLC 0231 ERROR 0354 EXIT 0350 GETACK 0315 GETNEX 0343 GETNUM 0215 M3 0362 RXLP 0325 SCDI 0242 SDA0 0253 SDA1 0251 SDA2 0247 SDA3 0245 SDB0 0252 SDB1 0250 SDB2 0246 SDB3 0244 SDCNT 0356 SDENT 0357 SDGET 0271 SDISZ 0360 SDTAD 0276 SENDC 0200 SFIELD 0352 SKCC 6402 SKCF 6400 SKIE 6405 SKRB 6406 SKRS 6404 SKSF 6401 SLOC 0363 SNDNUM 0205 SRESTR 0274 STCF 6412 STFL 6410 STLS 6416 STPC 6414 STSF 6411 STSK 6415 S177 0361 S7600 0232 TXLP 0334 VERS 0005 WKUP 0254 WORDCT 0364 ERRORS DETECTED: 0 LINKS GENERATED: 0