/SERIAL-BASED DISK SYSTEM - SYS /SYSTEM HANDLER FOR OS/8 FOR OMNIBUS AND PRE-OMNIBUS /KYLE OWEN 17/FEB/2014 - ORIGINAL TO VERSION D /BOB ADAMSON 16/NOV/2015 - REMOVED REDUNDANT CDFS / - REPLACED BSWS WITH ROTATES / - DISABLED INTERRUPTS FROM HERE VERS="E&77 BASER=6400 /USING DEVICE CODES 40,41 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 (SYSTEM PLUS 2 LOGICAL DISKS) 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 AC FOR FIRST PLATTER SETUP, TAD WKUP /ADD WAKEUP CHARACTER DCA SLOC /SAVE UNTIL WE'VE KILLED INTERRUPTS SKIE /NO INTERRUPTS FROM HERE TAD SLOC /GET THE WAKEUP CODE BACK AGAIN JMS SENDC /SEND WAKEUP CHARACTER CLA RDF /GET CURRENT FIELD TAD SCDI /ADD CDI DCA SFIELD /DEPOSIT MODIFIED CIF JMS GETNEX /TELL SERVER REQUIRED FUNCTION TAD I ENTRY1 /GET BUFFER ADDRESS DCA SLOC /STORE BUFFER ADDRESS JMS GETNEX /TELL SERVER BUFFER ADDRESS JMS GETNEX /TELL SERVER STARTING BLOCK NUMBER JMS GETNUM /RECEIVE CDF INSTRUCTION DCA .+1 /SAVE AND THEN EXECUTE THE CDF HLT /BECOMES CDF TO XFER FIELD 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 TXLP /TIME TO WRITE RXLP, JMS GETNUM /GET WORD DCA I SLOC /STORE CONTENTS ISZ SLOC /NEXT LOCATION NOP /GUARD FOR ISZ ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP RXLP /NO, KEEP LOOPING JMP GETACK /ANY OTHER REQUESTS? TXLP, TAD I SLOC /GET WORD ISZ SLOC /NEXT LOCATION NOP JMS SNDNUM /SEND IT ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP TXLP /NO, KEEP LOOPING JMP GETACK /ANY MORE REQUESTS? SLOC, /REUSE THIS LOCATION 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 RTR /NO BSW HERE TO SUIT 8/I ETC RTR /SHIFT TOP BITS DOWN 6 RTR JMS SENDC /SEND TOP 4 BITS PLUS SOME - LET SERVER HANDLE IT CLA JMP I SNDNUM GETNUM, 0 SKCC /CLEAR AC AND FLAG SKSF /SKIP IF FLAG SET JMP .-1 SKRB /READ BUFFER WHICH IS FIRST SIXBIT CLL RTL /SHIFT SIXBIT TO BITS 0-5 RTL /NO BSW TO SUIT 8/I ETC RTL SKSF /SKIP IF FLAG SET JMP .-1 /WHICH WILL BE THE 2ND SIXBIT SKRS /OR WITH AC TO GIVE 12 BIT WORD JMP I GETNUM GETNEX, 0 /PARAMETER HANDLER UTILITY TAD I ENTRY1 /FETCH NEXT CALLING PARAMETER JMS SNDNUM /AND SEND IT TO THE SERVER ISZ ENTRY1 /MOVE POINTER TO NEXT PARAMETER JMP I GETNEX 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 WORDCT, 0 WKUP, 101 SCDI, CIF CDF 0 ZBLOCK 7744-. RELOC $