ASMB,Q,C * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * * *************************************************************** * * SOURCE PART NUMBER : 92067-18422 * * RELOCATABLE PART NUMBER : 92067-16361 * * PROGRAMER(S) : J.M.N. * * NAM IVBUF,7 92067-16361 REV.1940 781010 ENT IVBUF EXT READF,WRITF,ACOM1 * * VIRTUAL MEMORY ROUTINE FOR +@CCT!::-31178 * IN NDCB BUFFER IN NBUF OF COMMON /ACOM1/ * * CALLING SEQUENCE: *C FETCH VALUE FROM FILE * IVAL=IVBUF(INDEX,IREC) * *C STORE VALUE IN FILE * CALL IVBUF(INDEX,IREC,IVAL) * *C POST MEMORY TO DISC * CALL IVBUF * * WHERE: INDEX IS INDEX INTO FILE STARTING * FROM RECORD "IREC" * IREC IS STARTING RECORD FOR VIRTUAL * BUFFER (128 WORDS / RECORD) * * IVAL IS VALUE BEING FETCHED OR STORED * IVBUF NOP CLA CLEAR NEW RECORD NUMBER STA IRECN LDA IVBUF,I GET RETURN ADDRESS STA RTRN ISZ IVBUF CPA IVBUF IF NO PARMAMETERS IT IS A POST JMP WRITE * LDB IVBUF,I FETCH INDEX ADDRESS CCA OFSET FOR FORTRAN ADA B,I THEN THE VALUE LDB A AND B177 STRIP OFF OFFSET IN RECORD STA OFSET XOR B GET RECORD NUMBER ALF,ALF RAL (9 TO LEFT =7 TO THE RIGHT) ISZ IVBUF LDB IVBUF,I ADA B,I ADD STARTING RECORD NUMBER * IS IT IN MEMORY CPA IREC1 JMP REC1 YES IN FIRST BUFFER CPA IREC2 JMP REC2 YES IN SECOND BUFFER * STA IRECN NO THEN POST FIRST BUFFER WRITE LDA IREC1 IF PREVIOUSLY SET UP SZA,RSS JMP READ * LDA WRFL1 SZA,RSS HAS IT BEEN WRITTEN IN JMP READ NO SKIP WRITF * JSB WRITF WRITE TO FILE DEF *+6 DEF ACOM1+0 DEF IERR BUF1 DEF ACOM1+272 DEF D128 DEF IREC1 * * MOVE POINTERS OF BUFFER #2 TO BUFFER #1 * READ LDA BUF2 LDB BUF1 STA BUF1 STB BUF2 LDA IREC2 STA IREC1 LDA WRFL2 WRITE FLAG STA WRFL1 CLA STA WRFL2 LDA IRECN STA IREC2 SZA,RSS IF IRECN =0 THEN IT IS A POST JMP WRIT2 * JSB READF READ FROM FILE DEF *+7 DEF ACOM1+0 DEF IERR BUF2 DEF ACOM1+272+128 DEF D128 DEF LEN DEF IREC2 * REC2 LDB BUF2 COMPUTE MEMORY ADDRESS LDA WRF2A JMP REC REC1 LDB BUF1 LDA WRF1A REC STA WRFLA ADB OFSET ISZ IVBUF LDA IVBUF IS IT A STORE CPA RTRN JMP ACLOA LDA IVBUF,I YES GET ADDRESS OF VALUE LDA A,I AND THEN VALUE STA B,I PUT IN VIRTUAL BUFFER * CCA STA WRFLA,I SET WRITTEN INTO FLAG JMP RTRN,I * ACLOA LDA B,I FETCH VALUE FROM VIRTUAL BUFFER JMP RTRN,I * WRIT2 LDA IREC1 SZA IF NOTHING IN BUFFER 1 JMP WRITE+1 JMP RTRN,I THEN NOTHING TO POST * A EQU 0 B EQU 1 * WRF1A DEF WRFL1 WRF2A DEF WRFL2 WRFLA BSS 1 WRFL1 BSS 1 WRFL2 BSS 1 IREC1 NOP IREC2 NOP IRECN NOP B177 OCT 177 D128 DEC 128 OFSET BSS 1 IERR BSS 1 RTRN BSS 1 LEN BSS 1 END * LDA IVBUF CPA RTRN