ASMB,R,L,C HED REAL TIME, DOS, AND IOMEC/DOS BINARY READ/WRITE * * NAME: BINRY * SOURCE: 92068-18014 * RELOC: PART OF 92067-16268 AND 92067-16035 * PGMR: R.A.G. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM BINRY,7 92068-1X014 REV.2013 771116 ENT BREAD,BWRIT EXT EXEC EXT $OPSY * NOTE: ONLY CHANGE OF 7-26-75 IS NOTED IN CODE (DLB) *BINARY READ/WRITE ROUTINES: BREAD/BWRIT *CALLING SEQUENCE : JSB BREAD(BWRIT) * DEF *+7 * DEF A = FWA OF BUFFER * DEF N (NO. OF WORDS) * DEF LUN (LOG.UNIT NO.) * DEF TRACK * DEF SECTR * DEF OFSET (OFFSET IN SECTR) * (RETURN) * *FORTRAN CALL: CALL BREAD(A,N,LUN,ITRAK,ISECT,IOFST) * * SINCR NOP LDA $OPSY IF SSA,RSS IN JMP LDOS LDA LUN,I RTE, THEN CPA .2 CHECK IF LOGICAL UNIT =2? JMP *+3 YES LDA 1760B NO, L.U.=3 GET SCTRS/TRACK JMP *+4 AND PROCEED LDA 1757B L.U.=2,GET SCTRS/TRACK JMP *+2 AND PROCEED LDOS LDA 116B WE'RE IN DOS/DOSM,GET SCTRS/TRACK CPA SECTR SECTR=MAX? JMP *+3 YES ISZ SECTR NO,BUMP SECTOR AND JMP SINCR,I RETURN CLA SECTR=MAX SO STA SECTR SET SECTR TO 1ST SECTR OF ISZ TRACK NEXT TRACK AND JMP SINCR,I RETURN GTPAR NOP LDA IFLAG FIRST TIME ? SZA JMP INITL NO. ISZ IFLAG YES. BUMP FLAG LDA $OPSY A: 0=DOS, 1=IOMEC/DOS, -2=RTE CPA =D1 CHANGED FROM SLA,RSS 7-26-75 RSS THIS WAS ADDED 7-26-75 JMP INITL DOS OR RTE LDA =D128 IOMEC/DOS. BUFFR = 128 STA PSIZE CMA,INA STA MSIZE LDA BIGED STA BFRND INITL INB LDA 1 LDA 0,I BUFFER ADDRESS ? RAL,CLE,SLA,ERA PEEL OFF INDIRECT BIT JMP *-2 LOOP AS LONG AS INDIRECT STA ADDRS FWA OF USER BUFFER INB LDA 1,I LDA 0,I NUMBER OF WORDS CMA,INA STA COUNT SET COUNT INB LDA 1,I STA LUN ADDRESS OF LOGICAL UNIT NUMBER INB LDA 1,I LDA 0,I STA TRACK TRACK NO. INB LDA 1,I LDA 0,I STA SECTR SECTOR NO. INB LDA 1,I LDA 0,I OFFSET ADA MSIZE -64 OR -128 SSA,RSS OFFSET GE SECTOR SIZE? JMP *-2 YES, OFFSET MODULO SECTOR SIZE ADA PSIZE RESTORE OFFSET ADA BFFWA FWA OF BUFFER STA BFRAD SET BUFFER ADDRESS JMP GTPAR,I EXIT BREAD NOP LDB *-1 LDA 1,I STA BREAD SET RETURN ADDR JSB GTPAR GET PARAMETERS JSB READ READ SECTOR RMOVE LDA BFRAD,I STA ADDRS,I MOVE DATA-WORD ISZ COUNT END OF TRANSFER ? RSS NO,CONTINUE JMP BREAD,I EXIT LDA BFRAD CPA BFRND END OF SECTOR JMP *+4 YES, RE-INIT. AND READ NEXT SECT ISZ BFRAD BUMP SECTOR-BUFFER ADDRS ISZ ADDRS BUMP TARGET LOC JMP RMOVE CONTINUE XFER LDA BFFWA STA BFRAD SET READ-BUFFER ADDR AT FWA JSB SINCR BUMP SECTOR NUMBER ISZ ADDRS BUMP TARGET LOC JMP RMOVE-1 READ NEXT SECTOR AND CONTINUE READ NOP JSB EXEC READ SECTOR DEF *+7 DEF .1 RCODE= 1 FOR READ DEF LUN,I LOGICAL UNIT NUMBER BFFWA DEF BUFFR BUFFER FWA DEF PSIZE 64 OR 128 WORDS DEF TRACK TRACK NO. DEF SECTR SECTOR NO. JMP READ,I EXIT BWRIT NOP LDB *-1 LDA 1,I STA BWRIT SET RETURN ADDR JSB GTPAR GET PARAMETERS JSB READ READ BEFORE WRITE WMOVE LDA ADDRS,I STA BFRAD,I ISZ COUNT READY ? JMP *+3 NO, CONTINUE XFER JSB WRITE YES, WRITE SECTOR JMP BWRIT,I EXIT LDA BFRAD CPA BFRND END OF BUFFER ? JMP *+4 YES, WRITE SECTOR AND RE-INIT ISZ BFRAD BUMP WRITE-BUFFER ADDRS ISZ ADDRS BUMP SOURCE ADDR. JMP WMOVE CONTINUE XFER JSB WRITE WRITE SECTOR JSB SINCR BUMP SECTOR NUMBER LDA BFFWA STA BFRAD SET BUFFER ADDR AT FWA ISZ ADDRS BUMP SOURCE ADDRESS JMP WMOVE-1 DO NEXT SECTOR WRITE NOP JSB EXEC WRITE SECTOR DEF *+7 DEF .2 RCODE=2 FOR WRITE DEF LUN,I LOGICAL UNIT NUMBER DEF BUFFR BUFFER FWA DEF PSIZE 64 OR 128 WORDS DEF TRACK TRACK NO. DEF SECTR SECTOR NO. JMP WRITE,I EXIT ADDRS NOP PARAMETER ADDRS COUNT NOP WORD COUNT LUN NOP LOGICAL UNIT NUMBER TRACK NOP TRACK NO. SECTR NOP SECTOR NO. BFRAD NOP POINTER IN SECTOR-BUFFER BFRND DEF BUFFR+63 LWA 64 WORD SECTOR-BUFFER BIGED DEF BUFFR+127 LWA 128 WORD SECTOR-BUFFER PSIZE DEC 64 MSIZE DEC -64 .1 DEC 1 .2 DEC 2 IFLAG DEC 0 BUFFR BSS 128 SECTOR - BUFFER (MOVED 7-75) END * *