/SERIAL-BASED DISK SYSTEM /NON-SYSTEM HANDLER FOR OMNIBUS /KYLE OWEN - 2/17/2014 VERS="D&77 BASER=6400 BASET=6410 SKCF=BASER SKSF=BASER+1 SKCC=BASER+2 SKRS=BASER+4 SKIE=BASER+5 SKRB=BASER+6 STFL=BASET STSF=BASET+1 STCF=BASET+2 STPC=BASET+4 STSK=BASET+5 STLS=BASET+6 BLKNUM=6260 /HANDLER SENDS: /A OR B FOR PRIMARY DISK, SIDE A OR B /C OR D FOR SECONDARY DISK, SIDE A OR B *0 -4 /FOUR DEVICES DEVICE SDSK; DEVICE SDA0; 4640; ENTRY1&177; 0; 0 DEVICE SDSK; DEVICE SDB0; 4640; ENTRY2&177; 0; 0 DEVICE SDSK; DEVICE SDA1; 4640; ENTRY3&177; 0; 0 DEVICE SDSK; DEVICE SDB1; 4640; ENTRY4&177; 0; 0 *200 SENDC, 0 /SEND CHARACTER IN AC STLS STSF JMP .-1 JMP I SENDC SNDNUM, 0 /SEND NUMBER AS TWO CONSECUTIVE CHARACTERS JMS SENDC /SEND BOTTOM 8 BITS OF WORD BSW /SEND TOP 6 BITS OF WORD PLUS SOME, LET SERVER HANDLE IT JMS SENDC CLA JMP I SNDNUM GETNUM, 0 SKCC /CLEAR AC AND FLAG SKSF /SKIP IF FLAG SET JMP .-1 SKRB /READ BUFFER BSW /SWAP BYTES SKSF /SKIP IF FLAG SET JMP .-1 SKRS /OR BUFFER WITH AC JMP I GETNUM TXPG, TAD CDFSTO /GET DATA FIELD DCA TXCDF /MODIFY CDF FOR TRANSFER TXCDF, HLT /MODIFIED TO CDF TAD I SLOC /GET WORD CDF 0 /BACK TO FIELD 0 ISZ SLOC /NEXT LOCATION NOP JMS SNDNUM /SEND IT ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP TXCDF /NO, KEEP LOOPING JMP GETACK /ANY MORE REQUESTS? EXIT, ISZ ENTRY1 /NORMAL EXIT SFIELD, HLT /MODIFIED TO CDI JMP I ENTRY1 /EXIT WITH FATAL ERROR ERROR, CLL CML RAR /ROTATE ERROR CODE AND SET NEGATIVE BIT JMP SFIELD /ERROR EXIT ENTRY1, VERS CLA CLL /CLEAR LINK FOR FIRST PLATTER SETUP, TAD WKUP /ADD WAKEUP CHARACTER DCA SENDC /STORE IN A TEMP LOCATION JMS CTRLC /CHECK IF CTRL C HAS BEEN PRESSED TAD SENDC /GET WAKEUP CHARACTER JMS SENDC /SEND WAKEUP CHARACTER CLA RDF /GET CURRENT FIELD TAD SCDI /ADD CDI DCA SFIELD /DEPOSIT MODIFIED CIF TAD I ENTRY1 /GET FUNCTION JMS SNDNUM /TELL SERVER FUNCTION ISZ ENTRY1 /LOOK AT BUFFER ADDRESS TAD I ENTRY1 /GET BUFFER ADDRESS JMS SNDNUM /TELL SERVER BUFFER ADDRESS TAD I ENTRY1 /GET BUFFER ADDRESS DCA SLOC /STORE BUFFER ADDRESS ISZ ENTRY1 /LOOK AT STARTING BLOCK NUMBER TAD I ENTRY1 /GET STARTING BLOCK NUMBER JMS SNDNUM /TELL SERVER STARTING BLOCK NUMBER ISZ ENTRY1 /LOOK AT ERROR RETURN JMS GETNUM /RECEIVE CDF INSTRUCTION DCA CDFSTO JMS GETNUM /RECEIVE NEGATIVE WORD COUNT DCA WORDCT GETACK, JMS GETNUM /4000=READ, 4001=WRITE, 0000=DONE, 2000=ERROR SNA /WAS IT ZERO? JMP EXIT /YES, EXIT CLL RAL /NO, IS HIGH BIT SET? SNL JMP ERROR /NO, ERROR! SZA CLA /YES, READ OR WRITE? JMP TXPG /TIME TO WRITE RXLP, JMS GETNUM /GET WORD CDFSTO, HLT /MODIFIED TO CDF DCA I SLOC /STORE CONTENTS CDF 0 ISZ SLOC /NEXT LOCATION NOP ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP RXLP /NO, KEEP LOOPING JMP GETACK /ANY OTHER REQUESTS? ENTRY2, VERS /SECOND ENTRY POINT CLA TAD ENTRY2 /GET ARGUMENT ADDRESS DCA ENTRY1 /STORE IT IN COMMON PLACE CLA CLL IAC /SET AC = 1 FOR 2ND PLATTER JMP SETUP /CONTINUE WITH SETUP ENTRY3, VERS CLA TAD ENTRY3 /GET ARGUMENT ADDRESS DCA ENTRY1 /STORE IT IN COMMON PLACE CLA CLL IAC RAL /SET AC = 2 FOR 3RD PLATTER JMP SETUP /CONTINUE WITH SETUP ENTRY4, VERS CLA TAD ENTRY4 /GET ARGUMENT ADDRESS DCA ENTRY1 /STORE IT IN COMMON PLACE CLA CLL CML IAC RAL /SET AC = 3 FOR 4TH PLATTER JMP SETUP /CONTINUE WITH SETUP CTRLC, 0 CLA KRS /READ KEYBOARD AND S177 /KEEP BOTTOM 7 BITS TAD N3 /SUBTRACT 3 SNA CLA /WAS IT A ^C? KSF /YES, IS KEYBOARD FLAG UP? JMP I CTRLC /RETURN SCDI, CDF CIF 0 JMP I S7600 /JUMP BACK TO OS/8 S177, 177 N3, -3 S7600, 7600 SLOC, 0 WORDCT, 0 WKUP, 101 /'A' ZBLOCK 400-. $