/DEC FORMAT HANDLER FOR SYKES DISK / / /MODIFIED TO REMOVE MULTIPLE ENTRY POINTS /MARCH 26 1977 J.Y. / /MODIFY PIP.SV DEVICE LENGTH TABLE / 13660/0000 7022 / *0 -1 /ONE HANDLER DEVICE SYKD /GROUP NAME DEVICE RXA1 /PERMANENT NAME 4600 /DCB 4000+DEC1-200 /ENTRY OFFSET FOR 2 PG 0 /ALWAYS ZEROES 0 / UNIT=1 /USE DISK UNIT 1 DEVC=32 /DEVICE CODE 32 SYKOP=DEVC^10+6001 SYKSF=DEVC^10+6002 SYKIN=DEVC^10+6004 / NL0001=CLA CLL IAC NL0002=CLA CLL CML RTL NL4000=CLA CLL CML RAR NL2000=CLA CLL CML RTR *200 / SPOINT, 0 /POINTER TO THE DATA AREA STRK, 0 /TRK ADDRESS SSECT, 0 /SECT ADDRESS TEMP, 0 /STORAGE FOR FUNCTION WORD SYKES, 0 /INDIRECT POINTER SWDCNT, 0 /COUNTER FOR # OF WORDS SECSZZ, 0 /COUNTER fOR SECTORS SYKRET, 0 /INDIRECT POINTER S7746, 7746 /-26 (DECIMAL) S7777, 7777 /-1 S7747, 7747 /-25 (DECIMAL) S33, 33 /26+1 (DECIMAL) S400, 400 /ACC BIT 3=1, MASK S70, 70 /MASK S601, 601 /SELECT 1 S7770, 7770 /-8 (DEC.) TEMP2, 0 /TEMPORARY STORAGE PAGE1, 0 /POINTER ON PAGE 1 PAGE2, 0 /POINTER ON PAGE 2 TIMES, 0 /# OF PARAMS BETWEEN PAGES FLNO, 0 /UNIT COUNTER XADDR, -SADDR+200 /DISPLACEMENT TO PAGE 1 YADDR, XPOINT-200 /DISPLACEMENT TO PAGE 2 SCDF, CDF 0 /CDF INSTR DEC1, ISZ FLNO /BUMP THE UNIT # DEC2, ISZ FLNO /""""""""""""""""" DEC3, ISZ FLNO /""""""""""""""""" DEC4, ISZ FLNO /""""""""""""""""" FIX, ISZ FLNO /USER TO PATCH / S7600, CLA+400 /CLEAN UP TAD FLNO /LOAD CIA /NEGATE TAD FIXTAD /MAKE A TAD DCA .+1 /IN LINE FIX2, HLT /USER LATER DCA SYKES /INTO MASTER PNTER NL2000 /AC=2000 TAD FIX2 /INTO A DCA DCA .+2 /IN LINE FIXTAD, TAD FIX /REPAIR FIX3, HLT /WITH THIS INSTR DCA FLNO /CLEAN UP TAD FIX2 /UNIT RTR CLA IAC /BUMP AND FIX3 /MASK SZL /GRP 2 ? TAD S20 /YES TAD S601 /ADD SYKOP NL0002 /AC=2 RDF /OR IN THE DATA fLD. TAD SCDF /MAKE ACID DCA SYKRET /WATCH RELOCATION TAD S7600 /RESET SYKOP CLA CLL /CLEAN UP TAD I SYKES /FUNCTION WORD DCA TEMP /READ OR WRITE FLAG ISZ SYKES /NEXT PARAM TAD I SYKES /GET CORE ARG DCA SPOINT /POINTER TO DATA AREA DCA STRK /CLEAN UP FOR NEXT TIME ISZ SYKES /BUMP THE POINTER TAD I SYKES /GET THE BLOCK # CLL RTL /TIMES 4 FOR SECTS. ISZ STRK /START AT TRK 1 TAD S7746 /DIVIDE BY26 DEC. SMA /DONE? YES JMP .-3 /NO TAD S33 /BUT STEP BACK 1 CLL RAL /TIMES 2 FOR INTERLEAVE TAD S7777 /LESS ONE DCA TEMP2 /HOLD ON TO IT TAD TEMP2 /LOAD IT AGAIN TAD S7746 /LESS THAN 27 DEC.? SMA SZA CLA /YES TAD S7747 /NO TOO BIG SO CHOP TAD TEMP2 /ADD TO IT OR LOAD DCA SSECT /SET UP THE 1ST SECT TAD TEMP /GET BACK THE FUNCTION WRD. AND S3700 /JUST PAGE CNT SZA /XFER 40 PGS JMP .+3 /LESS THAN 64 DEC. PGS. TAD XMSEC /PAGES TO XFER JMP XFER CLL RTR /SHIFT TO RTR /LOW END RAR /& MULT TIMES 2 CIA /NEGATE FOR COUNTER XFER, DCA SWDCNT /STASH IT TAD TEMP /GET THE DATA FIELD AND S70 /ONLY THE DATA FLD. TAD SCDF /REUSED DCA SFIELD /IN LINE TAD XMSEC /-64 DEC. DCA SECSZZ /SET UP THE SECTS CDF 00 /FOR INDIRECTS JMP RELOO /HOWDY-DO DEE-TIME S20, 20 /FOR UNIT SEL. ZBLOCK 10 /CLEAN !!! XMSEC, 7700 /-64 DEC. S3700, 3700 /MASK FOR PAGE CNT. RELOO, JMS .+1 /SET UP THE ADDR. SADDR, 0 /GETS ZAPPED TAD SADDR /SETS IT uP TAD XADDR /POINTS TO THE BUCKET DCA PAGE1 /POINTER TO THE 1ST PG. TAD PAGE1 /LOAD IT TAD YADDR /ADD DISPL. DCA PAGE2 /POINTER TO PAGE 2 TAD S7770 /-8 DEC. DCA TIMES /# OF LOCS. TAD I PAGE1 /GET FROM PG. 1 DCA I PAGE2 /TO PAGE 2 ISZ PAGE1 /BUMP ISZ PAGE2 /BUMP ISZ TIMES /BUMP & CHECK JMP .-5 /NOT NONE YET SFIELD, CDF 0 /GETS ZAPPED END, CLA CLL /FOR PAGE 2 / *400 / JMP SELECT /HOP BUMP, TAD SMSEC /-64 DEC DCA SECSIZ /REFRESH ISZ XSSECT /BUMP ISZ XSSECT /* 2 TAD XSSECT /=28 DEC. TAD X7744 /TRK DONE YET SZA CLA /YES JMP ZZZ /NO ISZ XSTRK /BUMP TRK. S17, 17 /MASK NL0001 /START WITH 1 JMP XYZ /SKIP ZZZ, TAD XSSECT /HALF WAY ?? X377, TAD X7745 /-27 DEC. SZA CLA /YES JMP SELECT /NO NL0002 /AC=2 XYZ, DCA XSSECT /SECT=2, OR 1 SELECT, TAD X400 /ACC BIT 3 ON TAD XSTRK /ADD IT IN SYKOP /OUT IT GOES Y7600, CLA+400 /CLEAN IT UP TAD XTEMP /FUNCTION WRD. SPA CLA /READ TAD X40 /WRITE TAD XSSECT /ADD IN SECT. TAD X400 /ACC BIT 3 ON SYKOP /OUT IT GOES XXXX, CLA CLL /CLEAN IT UP TAD XTEMP /READ OR WRITE ?? SMSEC, SMA CLA /WRITE JMP RLOOP /READ WLOOP, TAD I XPOINT /? 111 111 112 222 CLL RTR /SHIFT LOW END RTR /2 222 011 111 111 JMS SPUT /WAIT & OUTPUT RTR /SHIFT FOR THE HIGH END RTR /OF BYTE #2 S110, CLL RAR /0 111 122 221 111 AND S360 /0 000 022 220 000 DCA SAVE /FOR LATER ISZ XPOINT /BUMP THE POINTER X40, 40 /WRT. BIT IN CMD. TAD I XPOINT /0 222 233 333 333 CLL RTL /SHIFT FOR LOW END RTL /OF BYTE #2 RAL /3 333 333 302 222 AND S17 /3 000 000 002 222 TAD SAVE /3 000 022 222 222 JMS SPUT /WAIT & OUTPUT CLA CLL /CLEAN IT UP TAD I XPOINT /GET WRD. #2 AGAIN AND X377 /3 000 033 333 333 JMS SPUT /WAIT & OUTPUT JMP COUNT /BUMP RTN. RLOOP, JMS SGET /? 000 011 111 111 CLL RTL /SHIFT TO HIGH SIDE RTL /0 111 111 110 000 DCA SAVE /STASH IT FOR NOW JMS SGET /WAIT & READ /0 000 011 112 222 DCA SPUT /2ND HALF TAD SPUT /LOAD CLL RTR /LOW SIDE OF WRD. 1 RTR /2 222 000 001 111 AND S17 /2 000 000 001 111 TAD SAVE /ADD IT IN DCA I XPOINT /STORE IT ISZ XPOINT /BUMP X400, 400 /MASK & NOP TAD SPUT /? 000 011 112 222 CLL RTR /TO HIGH END OF WRD. 2 RTR /SHIFT RAR /1 222 200 000 111 AND Y7600 /MASK IT IN DCA SAVE /STORE IT JMS SGET /?000 022 222 222 TAD SAVE /? 222 222 222 222 DCA I XPOINT /STORE COUNT, ISZ XPOINT /BUMP THE POINTER S360, 360 /MASK & NOP NL0002 /AC=2 TAD SECSIZ /ADD IN SECT. COUNTER DCA SECSIZ /BUMP IT TAD SECSIZ /LOAD ACC SPA CLA /DONE?? YES JMP XXXX /NO JMS TERM /YES ISZ XWDCNT /# OF SECTS JMP BUMP /NOT DONE ISZ XSYKES /2 TIMES IF GOOD BAD, ISZ XSYKES /1 TIME IF BAD TAD X601 /SEL #1 SYKOP /ISSUE CLA RAR /MOVE IN THE LINK JMP XSKRET /RETURN FLD. INSTR. XPOINT, 0 / XSTRK, 0 / XSSECT, 0 / XTEMP, 0 /THESE GET ZAPPED FROM PG. 1 XSYKES, 0 / XWDCNT, 0 / SECSIZ, 0 / XSKRET, 0 / JMP I XSYKES /RETURN SAVE, TERM, 0 /FOR TERMINATING NL0002 /AC=2 TAD X601 /FORM TERM CMD. SYKOP /ISSUE JMS SGET /RD. STATUS AND S110 /CRC & FAULT SNA CLA /BAD JMP I TERM /GOOD!! STL /SET IF I/O ERROR JMP BAD /ERROR RETURN SGET, 0 SYKSF /WAIT JMP .-1 /FOREVER SYKIN /READ CMD. JMP I SGET /RETURN SPUT, 0 SYKSF /WAIT JMP .-1 SYKOP JMP I SPUT /RETURN X7744, -34 X601, 601 X7745, -33 $$$