/TRIPLE PACK AUX HANDLER FOR SYKES DISK / /PACKS 2 12-BIT WORDS INTO 3 8-BIT BYTES /FOR USE ON 7150 OR 7250 BUFFERED DISKS ONLY / / / JOHN YOUNGQUIST / VERUS INSTRUMENTS INC. / BOX 122 / FORT ERIE ONTARIO / CANADA / / *0 -1 /ONE HANDLER DEVICE SYKE /GROUP NAME DEVICE FLPP /PERMANENT NAME 4570 /DCB SYKES-200 /ENTRY OFFSET 0 /ALWAYS ZEROES 0 / UNIT=2 /USE DISK UNIT 2 DEVC=32 /DEVICE CODE 32 SYKOP=DEVC^10+6001 SYKSF=DEVC^10+6002 SYKIN=DEVC^10+6004 / /MODIFY PIP.SV DEVICE LENGTH TABLE / 13657/0000 6545 / / 667 DECIMAL OS/8 BLOCKS PER DISK / USES ALL 77 TRACKS / / *200 / /READ LOOP / RLOOP, DCA SAVE /CLEAR BYTE 3 JMS READ /GET BYTE 1 DCA I SPOINT /STORE IN WORD 1 JMS READ /GET BYTE 2 DCA BYTE2 /STORE IN BYTE 2 JMS READ /GET BYTE 3 JMS HACK /ASSEMBLE & STORE WORD 1 INCR SPOINT TAD BYTE2 /GET BYTE2 DCA I SPOINT /STORE IN WORD 2 JMS HACK /ASSEMBLE & STORE IN WORD 2 ISZ DBLWCT /INCREMENT ONCE EVERY 2 WORDS JMP RLOOP /READ MORE TERM, TAD P603 /GET TERMINATE COMMAND SYKOP /ISSUE TERMINATE / /CHECK FOR ERRORS - CRC OR FAULT / JMS READ /WAIT FOR TERMINATE AND READ STATUS AND ERMASK /CRC & FAULT SNA /SKIP ON ERROR ISZ SYKES /SKIP OVER THE ERROR RETURN ISZ SYKES /TO THE NORMAL RETURN SZA CLA /TEST ERROR FLAG CLA CLL CML /SET LINK IF ERROR TAD UNIT1 /RESTORE TO UNIT 1 SYKOP /OUTPUT UNIT SELECT CLA RAR /MINUS IF ERROR CLEAR IF NOT RETURN, 0 /SET UP RETURN FIELD JMP I SYKES / / SYKES, 0 /ENTRY POINT CLA CLL TAD UNIT2 /SELECT THE CORRECT DISK DRIVE SYKOP /OUTPUT COMMAND CLA CLL TAD I SYKES /GET FUNCTION WORD DCA ARG1 TAD ARG1 AND M3600 /MASK WORD COUNT CIA DCA DBLWCT /SAVE -WC/2 TAD CDFCIF RDF /JAM IN RETURN FIELD DCA RETURN /SAVE RETURN FIELD TAD ARG1 /GET FUCTION WORD AGAIN AND M70 /MASK BUFFER FIELD TAD CCDF /FORM CDF INSTRUCTION DCA SETDF ISZ SYKES TAD I SYKES /GET BUFFER ADDRESS DCA SPOINT ISZ SYKES /BUMP POINTER TO BLOCK NUMBER / /CONVERT BLOCK NUMBER TO TRACK AND SECTOR / DCA STRK /CLEAR TRACK COUNT TAD I SYKES /GET NUMBER OF OS/8 BLOCKS RAL CLL TAD I SYKES /BLOCKS X 3 ISZ STRK /COUNT TRACKS TAD SMD26 /WHILE SUBTRACTING 26 SECTORS SMA JMP .-3 /DONE YET? TAD SP432 /ADD 26 SECTORS & COMMAND BIT 3 DCA SECT BYTE2, SETDF, 0 /SELECT CORRECT FIELD CLA CMA /SUBTRACT 1 TO USE TRACK 0 TAD STRK /GET TRACK TAD P7400 /AC3 = 1 SYKOP /OUTPUT SELECT TRK COMMAND CLA CLL CML RAR /SET BIT 0 TO BUMP R/W/BIT TAD ARG1 / AC TO BUMP R/W BIT INTO LINK SZL CLA /TEST R/W 0=READ, 1=WRITE TAD S40 /ADD WRITE COMMAND TAD SECT /ADD SECTOR NUMBER SYKOP /OUTPUT R/W SECTOR SNL CLA /TEST R/W AGAIN TO BRANCH JMP RLOOP /READ / WLOOP, CLL IAC RAR /SETUP LINK AS FLAG FOR BYTE 3 ROT4L, RTL RTL SPA /BYTE 3 YET? JMP THIRD /YES DCA BYTE3 /NO GET FIRST OR SECOND HALF BYTE TAD I SPOINT /GET NEXT BYTE JMS WRITE /WRITE TO DISK TAD I SPOINT /AND UNPACK ITS UPPER BITS ISZ SPOINT /BUMP POINTER P7400, 7400 /PROTECT SKIP AND P7400 /MASK UPPER BITS CLL RAL /ROTATE UPPER BITS TAD BYTE3 /ADD OTHER PART & FLAG JMP ROT4L /PROCESS NEXT BYTE THIRD, JMS WRITE /THIRD BYTE FLAGS END OF WORD PAIR ISZ DBLWCT /KEEP TRACK OF WORD PAIRS JMP WLOOP /GET ANOTHER WORD PAIR JMP TERM /WRITE DONE ISSUE TERMINATE / /WRITE ROUTINE / SAVE, /TEMP STORE OF BYTE 3 FOR READ STRK, /TEMP TRACK COUNTER WRITE, 0 /WRITE ROUTINE SYKSF /WAIT FOR FLAG JMP .-1 AND M377 /MASKED WRITE TO DISK SYKOP /OUTPUT DATA CLA /CLEAR BEFORE EXIT JMP I WRITE / /READ ROUTINE SHIFT LOOP / SECT, HACK, 0 /ADDS UPPER 4 BITS TO COMPLETE WORD TAD SAVE /GET BYTE 3 AND M377 /MASK TO 8 BITS RTL /SHIFT 4 LEFT RTL DCA SAVE /STORE RESULT OF SHIFT TAD SAVE AND P7400 /MASK UPPER 4 BITS TAD I SPOINT /ADD LOWER 8 BITS DCA I SPOINT ISZ SPOINT /BUMP POINTER S40, 40 /PROTECT ISZ JMP I HACK / /READ ROUTINE / BYTE3, /TEMP STORAGE OF BYTE 3 FOR WRITE ARG1, /TEMP STORAGE OF FUNCTION READ, 0 SYKSF JMP .-1 /WAIT FOR DATA SYKIN /READ DATA JMP I READ /RETURN WITH DATA / SPOINT, 0 SP432, 433 /COMMAND BIT AC3=1, ADDS A 26(10) TO FIX /DIVISION & ADDS 1 FOR FIRST SECTOR DBLWCT, 0 SMD26, -32 /26 SECTORS PER TRACK M70, 70 /USED TO MASK FIELD BITS P603, 603 /TERMINATE COMMAND ERMASK, 110 CDFCIF, CDF CIF M377, 377 CCDF, CDF UNIT1, 0601 /ALWAYS RESTORE TO UNIT 1 UNIT2, UNIT+600 M3600, 3600 $$$