ASMB,R,L,C HED QUEUE 91740-16013 REV 2026 * (C) HEWLETT-PACKARD CO. 1980 NAM QUEUE,17,2 91740-16013 REV.2026 800421 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 HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 ENT QUEUE EXT EXEC,RNRQ,#QRN,#BUSY EXT #GRPM,#QCLM,#ST09 * * * QUEUE * SOURCE: 91740-18013 * BINARY: 91740-16013 * PRGMR: CHUCK WHELAN * DATE: DEC 1976 * * * * QUEUE IS THE DS/1000 PROGRAM SCHEDULED BY COMMUNICATIONS * DRIVER DVA65 WHEN A NEW REQUEST IS TO BE READ FROM A COMMUNICATIONS * LINE. THE REQUEST AND DATA BUFFER LENGTHS ARE PASSED TO QUEUE * IN THE EQT EXTENSION FOR THE CORRESPONDING LINE. QUEUE FIRST * CHECKS THE VALIDITY OF THE INTERRUPT. IF IT IS NOT FROM AN INITIALIZED * DVA65 CHANNEL OR IF IT IS A SPURIOUS INTERRUPT FROM ANOTHER * I/O SLOT, THE INTERRUPT WILL BE IGNORED. IF THE PASSED LENGTHS * ARE NOT WITHIN THE ALLOWABLE RANGE (6 63? JMP SSTOP YES, CAN'T ACCEPT IT INB EXT(3) HAS DATA LENGTH LDA 1,I GET IT SSA JMP SSTOP LENGTH ERROR STA DLEN SAVE IT ADA N4097 SSA,RSS DATA LENGTH > 4096? JMP SSTOP YES, CAN'T ACCEPT IT * LDA DLEN LDB RLEN CPA K2 IF DATA LENGTH=2, AND SZB REQUEST LENGTH=0, JMP GRPCL THIS IS A NON-CBL RQST, ELSE JSB RNRQ CHECK FOR QUIESCENT SYSTEM DEF *+4 DEF NWGLC LOCK WORD:NO-WAIT,NO-ABORT,GLOBAL LOCK & CLEAR DEF #QRN QUIESCENT SYSTEM RN DEF EQT4 RETURN STATUS HERE JSB ERR ERROR RETURN LDA EQT4 IS THIS SYSTEM CPA K7 QUIESCED? JMP SSTOP YES, SEND STOP LDA #ST09+1 THIS IS AN CBL DOWNLOAD REQUEST, JMP READ USE PROGL'S CLASS * * NON-CBL REQUEST. * CHECK REQUEST LENGTH >= 7 * GRPCL EQU * ADB N7 SSB JMP SSTOP ILLEGAL LENGTH: SEND 'STOP' * LDA #GRPM LENGTH OK: LOAD GRPM'S CLASS # READ EQU * CCE,SZA,RSS JMP SSTOP SEND STOP IF NO CLASS ALLOCATED RAL,ERA SET NO-WAIT BIT IN CLASS WORD. STA CLASS SAVE LOCALLY * JSB EXEC READ THE REQUEST TO GRPM'S CLASS DEF *+8 DEF K17N NO ABORT DEF CONWD DEF ZERO DEF DLEN RECEIVED DATA LENGTH DEF ZERO DEF RLEN RECEIVED REQUEST LENGTH DEF CLASS JSB ERR HERE IF CLASS READ FAILS * SZA SUCCESS? JMP SSTOP NO, PROBABLY NO SAM, SEND STOP VIA DRIVER CPA #BUSY ANY ACTIVE TCB'S? JMP HANG NO * EXIT JSB EXEC TERMINATE QUEUE DEF *+2 DEF K6 * HANG JSB RNRQ IF NONE, HANG ON #QRN - THIS IS DEF *+4 A QUIESCENT CONDITION DEF GLCW DEF #QRN DEF EQT4 JSB ERR ERROR RETURN JMP EXIT SKP * * ERROR PROCESSING SECTION * ERR NOP PASS ERROR INFO TO QCLM & GIVE UP DST AREG PASS REGS TO QCLM LDA ERR PICK UP ORIGINATION ADDRESS STA PREG PASS TO QCLM LDA #QCLM QCLM CLASS SZA,RSS IS CLASS NUMBER DEFINED? JMP ERR1 NO--SEND A 'STOP' STA CLASS SAVE LOCALLY * JSB EXEC MAILBOX CLASS WRITE/READ TO QCLM DEF *+8 DEF K20N DEF ZERO DEF QBUF DEF K9 DEF XEQT PASS ID SEG ADDR DEF ZERO DEF CLASS ZERO NOP ERROR RETURN ERR1 EQU * LDA LU SZA,RSS WAS LU DETERMINED? JMP EXIT NO, CAN'T SEND STOP * * CALL DRIVER TO SEND A STOP * SSTOP JSB EXEC DEF *+3 DEF K3 DEF LU JMP EXIT * SKP * * CONSTANTS AND STORAGE * * * FORMAT OF BUFFER PASSED TO QCLM: * -------------------------------- * * **************************************** * 1 * STREAM WORD * NOTE: ON 'READ' ERRORS, WORD * *--------------------------------------* 1 IS LINE EQT ADDRESS, WORD * 2 * SEQUENCE NUMBER * 2 CONTAINS I O STATUS. * *--------------------------------------* * 3 * SOURCE (ORIGINATING) NODE NUMBER * * *--------------------------------------* * 4 * DESTINATION NODE NUMBER * * *--------------------------------------* * 5 * P-REGISTER WHEN ERROR DETECTED * * *--------------------------------------* NOTE: CERTAIN COMBINATIONS * 6 * A-REGISTER WHEN ERROR DETECTED * OF A- AND B-REGISTER VALUES * *--------------------------------------* ARE USED TO FLAG SUCH CONDI- * 7 * B-REGISTER WHEN ERROR DETECTED * TIONS AS "COMMUNICATIONS * *--------------------------------------* READ ERROR", "TCB NOT FOUND, * 8 * TIME OF DAY WHEN ERROR DETECTED * ETC. * 9 * (2 WORDS) * * **************************************** * * FIRST OPTIONAL PARAMETER = ID SEGMENT ADDRESS OF SENDER * * **************************************** QBUF DEC 0,0,0,0,0,0,0,0,0 ERROR BUFFER TO QCLM * STREM EQU QBUF SEQ# EQU QBUF+1 SRC# EQU QBUF+2 DESTN EQU QBUF+3 PREG EQU QBUF+4 AREG EQU QBUF+5 BREG EQU QBUF+6 TOD EQU QBUF+7 * LUMAX EQU 1653B DRT EQU 1652B EQTA EQU 1650B XEQT EQU 1717B * EQT4 NOP RLEN NOP DLEN NOP CLASS NOP EQT# NOP CONWD NOP B77 OCT 77 B65 OCT 65 GLCW OCT 040006 NWGLC OCT 140006 GLOBAL LOCK & CLEAR, WITHOUT WAITING, NO ABORT K2 DEC 2 K3 DEC 3 K6 DEC 6 K7 DEC 7 K9 DEC 9 K15 DEC 15 N1 DEC -1 N7 DEC -7 N64 DEC -64 N4097 DEC -4097 K17N OCT 100021 K20N OCT 100024 LU NOP SCODE NOP ZBIT OCT 10000 * * SIZE BSS 0 * END QUEUE