ASMB,R,L,C
      HED FCHEK 91741-16009 REV 1740 770317 * (C) HEWLETT-PACKARD CO. 1977
      NAM FCHEK,7 91741-16009 REV 1740 770317 
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS      *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.   *
******************************************************************
      SPC 2 
      ENT FCHEK 
* 
      EXT .ENTR,D$INI,D$RFH,D$STW,D$PRM,D3KMS 
      EXT D$ERR,D$WDC,D$RQB,D$IPM,D$NPM,D$SPM 
* 
* FCHEK 
* SOURCE: 91741-18009 
* BINARY: 91741-16009 
* JIM HARTSELL
* AUG. 13, 1975 
* 
FCHEK NOP           ENTRY POINT.
      CLA 
      STA PRAMS     CLEAR OLD PARAM ADDRESSES.
      STA PRAMS+1 
      STA PRAMS+2 
      STA PRAMS+3 
      STA PRAMS+4 
      LDA FCHEK 
      STA ENTRY 
      JMP BEGIN 
* 
PRAMS NOP           FILE NUMBER.
      NOP           ERROR CODE. 
      NOP           TRANSMISSION LOG. 
      NOP           BLOCK # (DBL-WORD). 
      NOP           # RECORDS IN BAD BLOCK. 
* 
ENTRY NOP           ENTRY POINT.
BEGIN JSB .ENTR     GET ADDRESSES OF USER PARAMS. 
DPRAM DEF PRAMS 
* 
* BUILD FRONT END OF REQUEST BUFFER.
* 
      LDA DPRAM     ADDR OF 1ST PARAM TO SEND.
      JSB D$INI     INITIALIZE BUFFER STUFFERS. 
* 
      JSB D$RFH     SET UP FIXED FORMAT.
* 
      LDA B16 
      JSB D$STW     FCHEK CODE = 16 OCTAL.
* 
* MOVE USER PARAMS TO REQUEST BUFFER. 
* 
      LDA N1        MOVE FNUM.
      JSB D$PRM 
* 
      LDA N5        SET UP PARAMETER MASK.
      STA TEMP
      LDA DPRAM 
      STA TEMP1 
      CLA,RSS 
LOOP  RAL 
      LDB TEMP1,I 
      SZB 
      IOR B1      SET BIT IF PARAM SPECIFIED. 
      ISZ TEMP1 
      ISZ TEMP
      JMP LOOP
      JSB D$STW     STORE MASK IN REQUEST.
* 
      JSB D$WDC     SET WORD COUNT. 
* 
* REQUEST BUFFER READY. SEND TO QUEX'S CLASS, 
* AND WAIT FOR REPLY. 
* 
      JSB D3KMS     SHIP REQUEST BUFFER TO QUEX.
      DEF *+2 
      DEF BIT15     NO ABORT. 
      JMP ABERR     ERROR RETURN. 
* 
      JMP RTPRM     NORMAL RETURN.  (A) = STATUS. 
* 
ABERR DST D$ERR     STORE CODE FOR FCHEK RETRIEVAL. 
* 
* PASS RETURN PARAMETERS TO CALLER. 
* 
RTPRM STA STAT      SAVE STATUS WORD FOR RETURN.
* 
      LDB D$RQB     IF REPLY PARAM NOT RETURNED,
      ADB B7         STORE ZERO IN PARAM SLOT.
      LDA B,I       REPLY BYTE COUNT. 
      ADB B7
      STB TEMP      POINTER TO LAST PARAM.
      INA 
      ARS           REPLY WORD COUNT. 
      ADA N7        # PARAM WORDS TO CLEAR. 
      SSA,RSS 
      JMP RTP       ALL PARAMS RETURNED.
LOOP1 CLB 
      STB TEMP,I
      LDB TEMP
      ADB N1
      STB TEMP
      INA,SZA 
      JMP LOOP1 
* 
RTP   LDB D255      SET UP FOR IMPOSSIBLE ERROR,
      LDA D$ERR      AND CHECK DS ERROR CODE. 
      SZA,RSS 
      JMP RTPM1     NO ERROR POSTED.
* 
      CPA "DS"      DS ERROR: IMPOSSIBLE ERROR? 
      RSS 
      JMP POST      YES.
* 
      DLD D$ERR     ERROR CODE IS "DSXX". PERFORM MAPPING.
      LDA B 
      LDB D254
      CPA "01"
      JMP POST      MAP "DS01" TO DECIMAL 254.
      LDB D245
      CPA "05"
      JMP POST      MAP "DS05" TO DECIMAL 245.
      LDB D216
      CPA "06"
      JMP POST      MAP "DS06" TO DECIMAL 216.
      LDB D255      IMPOSSIBLE ERROR. 
POST  LDA D$RQB     STORE DS ERROR IN REPLY BUFFER. 
      ADA D9
      STB A,I 
* 
RTPM1 LDB D$RQB     INITIALIZE: 
      ADB D9          (B) = ADDR OF 1ST REPLY VALUE.
      LDA DPRAM 
      INA             (A) = ADDR OF 1ST RETURN PARAM ADDR.
      JSB D$IPM 
* 
      LDA N2        PASS ERROR CODE, TLOG.
      CCB 
      JSB D$NPM 
* 
      LDA N2        PASS BLKNUM (2 WORDS).
      JSB D$SPM 
* 
      CCA           PASS NUMREC (1 WORD). 
      JSB D$SPM 
* 
      LDA STAT      RESTORE STATUS WORD.
      JMP ENTRY,I   RETURN. 
      SPC 3 
* 
* CONSTANTS AND WORKING STORAGE.
* 
A     EQU 0 
B     EQU 1 
B1    OCT 1 
B7    OCT 7 
B16   OCT 16
D9    DEC 9 
D216  DEC 216 
D245  DEC 245 
D254  DEC 254 
D255  DEC 255 
N1    DEC -1
N2    DEC -2
N5    DEC -5
N7    DEC -7
BIT15 OCT 100000
STAT  NOP 
TEMP NOP
TEMP1 NOP 
"DS"  ASC 1,DS
"01"  ASC 1,01
"05"  ASC 1,05
"06"  ASC 1,06
* 
      END 
                                                                                                                                            