/SERIAL-BASED DISK SYSTEM /SYSTEM HANDLER FOR OMNIBUS /KYLE OWEN - 8/28/2015 /ADDED INTERRUPT DISABLE FOR FRTS VERS="E&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 - COMMAND SERVER, SIDE 0 OR 1 /@ - SEND BOOT CODE *0 -3 /THREE DEVICES DEVICE SDSK; DEVICE SYS; 4640; ENTRY1&177+2000; 0; BLKNUM DEVICE SDSK; DEVICE SDA0; 4640; ENTRY1&177+1000; 0; BLKNUM DEVICE SDSK; DEVICE SDB0; 4640; ENTRY2&177+1000; 0; BLKNUM BOOT-ENDB RELOC 0 BOOT, CLA TAD I BOOTX1 /COPY FROM 00200-00400 TO 07600-00000 DCA I BOOTX2 TAD I BOOTX3 /COPY FROM 00047-00247 TO 17647-10047 CDF 10 DCA I BOOTX4 CDF 0 TAD BOOTX2 SZA CLA /DONE? JMP BOOT+1 /NO, KEEP COPYING JMP I B7605 /JUMP TO OS/8 BOOTX1, 177 BOOTX2, 7577 BOOTX3, 46 BOOTX4, 7646 ADDR, 17 ZBLOCK 20-. CLA CMA /AC=7777 DCA ADDR /SET UP ADDRESS TAD BOOTMS /SEND BOOT MESSAGE TO SERVER STLS STSF JMP .-1 RDLP, SKCC /CLEAR AC AND FLAG SKSF /SKIP IF FLAG SET JMP .-1 SKRB /READ BUFFER CLL RTL /ROTATE 6 LEFT RTL SPA /CHANNEL 8 PUNCHED? JMP BOOT /YES, CONTINUE BOOTING RTL SKSF /SKIP IF FLAG SET JMP .-1 SKRS /OR BUFFER WITH AC DCA I ADDR /STORE CONTENTS JMP RDLP /KEEP LOOPING B7605, 7605 /ADDRESS OF OS/8 ENTRY BOOTMS, 100 /"@" COMMAND TO SERVER ENDB, RELOC *200 RELOC 7600 ZBLOCK 7 ENTRY1, VERS CLA CLL /CLEAR LINK FOR FIRST PLATTER SETUP, TAD WKUP /ADD WAKEUP CHARACTER JMS SENDC /SEND WAKEUP CHARACTER CLA SKIE /CLEAR INTERRUPT 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 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 ERROR, CLL CML RAR /ROTATE ERROR CODE AND SET NEGATIVE BIT JMP SFIELD /ERROR EXIT SCDI, CIF CDF 0 SLOC, 0 WORDCT, 0 WKUP, 101 ZBLOCK 7744-. RELOC $