ASMB,R,L,C HED POPEN 91700-16123 REV A * (C) HEWLETT-PACKARD CO. 1976 NAM POPEN,7 91700-16123 REV A 760212 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * ****************************************************************** SPC 2 ENT POPEN,PREAD,PWRIT,PCONT EXT D65MS,D65CL EXT .ENTR * SPC 5 * * POPEN * SOURCE: 91700-18023 * BINARY: 91700-16023 * SHANE DICKEY * JULY 30,1974 * * MODIFIED BY CHUCK WHELAN NOV 1975 * SPC 5 IPCB NOP IERR NOP INAM NOP ILU NOP ITAG NOP SPC 5 POPEN NOP * * MASTER REQUESTS FOR POPEN COME HERE * JSB .ENTR PICK UP THE USER PARAMETERS DEF IPCB LDA POPEN SET UP ERROR RETURN STA RTRN * LDA IERR STA ERRAD LDA DITAG SET PARAM CLEAR LOC STA CLEAR * PARAMETER CHECK LDA ITAG CLB,INB JSB BPARM SET UP BASIC PARMB * DLD INAM,I IRBF5 EQU *+1 DST IRBUF+5 MOVE 1ST TWO WORDS OF NAME LDA INAM ADA D2 LDA 0,I STA IRBUF+7 STORE 3RD WORD OF NAME LDA ITAG SET UP RETURN TAG FIELD ADDRESS STA TAGAD LDB IPCB LDA ILU,I GET LU # ADB D3 SAVE LU IN 4TH WORD OF PCB STA B,I * LDA IPCB NODAT CCB FLAG FOR NO DATA * * THIS CODE IS USED IN COMMON BY ALL P TO P CALLS * MAIN STB RCXMT SAVE OP TYPE STA PCBAD SAVE PCB ADDRESS ADA D3 LDA 0,I GET LU IOR BIT15 SET "NO ABORT" BIT STA DREQ REQ. ONLY IOR B300 STA DDATA DATA ONLY * THE CALL TO D65MS WILL: * 1) GET AN I/O CLASS * 2) COMPLETE WORD 2 OF PARMB * 3) SEND REQUEST * 4) AWAIT REPLY * 5) RETURN REPLY * 6) RETURN CONTROL JSB D65MS ISSUE REQUEST CALL DEF *+8 DEF D2 DEF DREQ WITH SIGN BIT SET DEF IRBUF DEF IRBFL DEF DUMMY DEF DUMMY DEF DUMMY * JMP ERR+1 ERROR DETECTED LDB IRBUF+3 RETURN ERROR WORD STB ERRAD,I LDA IRBF5 STA TAGPR * LDA M3 LDB PCBAD SET UP COUNT & SOURCE JSB MOVE * RETURN THE TAG FIELD LDA IRBF8 STA TAGPR LDA M10 GET COUNT LDB TAGAD JSB MOVE * CLB STB CLEAR,I CLR PARAMETER SIZE CHECK LOC LDB IRBUF+3 SZB WAS ERROR DETECTED? JMP RTRN,I YES, IERR SET LDB IRBUF+2 SSB,RSS WAS REQUEST REJECTED? CLB,RSS NO, OK CLB,INB YES, SET REJECT IERR STB ERRAD,I RETURN IT TO CALLER LDA RCXMT OP CODE SSA,RSS SKIP IF NO DATA SZB SKIP IF NO ERROR JMP RTRN,I OTHERWISE RETURN NOW * * NOW CALL "D65CL" TO DO DATA TRANSFER TO COMPLETE TRANSACTION * JSB D65CL DEF *+7 DEF RCXMT DEF DDATA BUFF NOP DEF LEN DEF IRBUF+33 PASS TIME-TAGS TO DRIVER DEF IRBUF+34 JMP ERR+1 ERROR CLB SET GOOD RETURN JMP RTRN,I * SPC 5 BPARM NOP * SUBSTREAM,STREAM,FUNCTION CODE AND TAG FIELD INSERTED IN * PARMB HERE * THE CLASS IS NOW ALLOCATED AND KNOWN BUILD THE * PARMB FOR THE SATELLITE * ROUTINE ALSO CHECKS FOR SUFFICIENT PARAMETERS IN P TO P CALL STB IRBUF+2 SET FUNCTION CODE SZA,RSS JMP ERR2 TOO FEW PARAMETERS IN CALL STA TAGPR LDA D4 TO BE BUILT-& STORE THE STA IRBUF STREAM TYPE LDA M10 LDB IRBF8 JSB MOVE JMP BPARM,I RETURN SPC 5 ERR NOP DECODE ASCII B REGISTER LDA D47 SET INITIAL ERROR CODE CPB ASC01 SUSPEND ERROR? JMP ERR1 YES CPB ASC05 TIME OUT? JMP ERR1 YES INA INCREMENT CODE CPB ASC02 ABORT ERROR? JMP ERR1 YES INA INCREMENT CODE ERR1 CMA,INA,RSS NEGATE THE CODE ERR2 LDA M40 STA ERRAD,I RETURN IERR CLB CLEAR MAX SIZE CHECK STB CLEAR,I JMP RTRN,I & RETURN SKP * * READ REQUESTS * RIPCB NOP RIERR NOP RIBUF NOP RIL NOP RITAG NOP * RTRN EQU * PREAD NOP JSB .ENTR GET USER PARAMETERS DEF RIPCB * LDA RIERR STA ERRAD LDA DRITA GET CLEAR ADDRESS STA CLEAR LDA RITAG LAST REQ PARAM THERE? * LDB D2 SET FUNCTION CODE JSB BPARM * LDA RIPCB JSB MVPCB MOVE PCB TO PARMB * LDA RITAG STA TAGAD * LDA RIBUF SAVE BUFFER ADDRESS STA BUFF LDA RIL,I SAVE DATA LENGTH STA LEN STA IRBUF+18 IN PARMB TOO * LDA RIPCB PCB ADDRESS CLB,INB SET FOR DATA READ JMP MAIN NOW DO LINE COMM & RETURN SKP * * WRITE REQUESTS * PIPCB NOP PIERR NOP PIBUF NOP PIL NOP PITAG NOP * * PWRIT NOP PWRITE REQUESTS HERE JSB .ENTR PICK UP PARAMETERS DEF PIPCB * LDA PWRIT SET UP ERROR RETURN STA RTRN LDA PIERR STA ERRAD LDA DPITA SET CLEAR ADDRESS STA CLEAR LDA PITAG LDB D3 JSB BPARM BUILD BASIC PARMB * LDA PIPCB JSB MVPCB MOVE PCB TO PARMB * LDA PITAG STA TAGAD LDA PIBUF GET DATA ADDRESS STA BUFF LDA PIL,I GET DATA LENGTH STA LEN STA IRBUF+18 * LDA PIPCB LDB D2 SET FOR DATA WRITE JMP MAIN NOW DO LINE COMM & RETURN SKP * * CONTROL REQUESTS * CIPCB NOP CIERR NOP CITAG NOP * * PCONT NOP JSB .ENTR GET PARAMETERS DEF CIPCB * LDA PCONT SET UP ERROR RETURN STA RTRN LDA CIERR STA ERRAD LDA DCITA SET UP SIZE CHECK WORD STA CLEAR LDA CITAG LAST REQUIRED LDB D4 SET UP FUNCTION CODE JSB BPARM BUILD BASIC PARMB * LDA CIPCB JSB MVPCB MOVE PCB TO PARMB * LDA CITAG STA TAGAD * LDA CIPCB PCB ADDRESS JMP NODAT DO LINE COMM & RETURN SKP * * MOVE SUBROUTINES * MOVE NOP * A CONTAINS -# OF WORDS TO MOVE * B CONTAINS DESTINATION ADDRESS * TAGPR CONTAINS SOURCE ADDRESS STA CONTR MOVE1 LDA TAGPR,I PICK UP NEXT WORD STA B,I AND PUT IT AWAY INB ISZ TAGPR INCREMENT POINTERS ISZ CONTR JMP MOVE1 TILL DONE JMP MOVE,I * * MOVE PCB INTO PARMB * MVPCB NOP STA TAGPR POINTER TO PCB LDA M3 MOVE 3 WORDS LDB IRBF5 INTO PARMB +5,6,7 JSB MOVE DO IT JMP MVPCB,I SKP * * DATA AREA * IRBUF BSS 35 IRBF8 DEF IRBUF+8 B EQU 1 IRBFL DEC 35 D2 DEC 2 D3 DEC 3 D4 DEC 4 B300 OCT 300 TAGPR NOP M10 DEC -10 M3 DEC -3 CONTR NOP DREQ NOP DDATA NOP PCBAD NOP ERRAD NOP TAGAD NOP RCXMT NOP LEN NOP ASC01 ASC 1,01 SUSPEND ERROR CODE ASC02 ASC 1,02 ABORT ERROR CODE ASC05 ASC 1,05 TIME OUT BIT15 OCT 100000 DCITA DEF CITAG CLEAR NOP M40 DEC -40 DPITA DEF PITAG DRITA DEF RITAG D47 DEC 47 DITAG DEF ITAG DUMMY NOP END