ASMB HED FLUSH A CLASS I/O (RTE-III/IV) F. GAULLIER 15/APR/77 NAM KLCLS,7 . 92903-16001 REV.1805 780112 * * SOURCE 92903-18036 * SPC 2 ************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ************************************************************** SPC 2 * * THIS ROUTINE DO A COMPLETE CLEAN UP OF A CLASS I/O * AND TERMINATE BY RELEASING THE CLASS. * WHEN SOME I/O DEVICE HAVE NOT COMPLETED THEIR OPERATIONS * A TIMEOUT OF 10 MSEC IS FORCED TO THESE PERIPHERALS IN * ORDER TO GET THE CLASS BUFFER AND RELEASE THE SAM. * * CALLING SEQUENCE: * * IF ( KLCLS(ICLAS) ) GOTO ERROR * ICLAS IS THE CLASS NUMBER * SPC 2 A EQU 0 B EQU 1 SUP PRESS EXTENDED LISTING SPC 1 EXT EXEC,$LIBR,$LIBX,.ENTR ENT KLCLS SPC 2 $OFF NOP JSB $LIBR OCT 0 PRIVILEDGE ROUTINE JMP $OFF,I SPC 1 $ON NOP JSB $LIBX EXIT FROM PRIVILEDGE ROUTINE DEF $ON SPC 2 .CL# NOP CLASS I/O WORD KLCLS NOP JSB .ENTR DEF .CL# * LDA .CL#,I AND MSK CLEAR BITS 15-14-13 SZA,RSS JMP OKRTN STA CLASW SAVE CLASS I/O WORD JSB EXEC DO A WRITE/READ CLASS I/O DEF *+8 DEF NAB20 WRITE/READ - NO ABORT DEF D0 DEF * DUMMY BUF DEF D1 DUMMY LEN DEF * DUMMY PARAMETERS DEF * DUMMY PARAMETERS DEF CLASW CLASS WORD JMP REL50 ERROR ! CHECK IT IS "IO 00" * LDA CLASW RECALL CLASS WORD IOR BIT15 SET "NO WAIT BIT" STA CLASS SPC 1 RELC3 JSB EXEC GET TO DE-ALLOCATE DEF *+5 DEF NAB21 GET CLASS - NO ABORT DEF CLASS CLASS WORD DEF TEMP DUMMY BUFFER DEF D1 JMP REL50 ERROR RETURN CHECK CODE SSA,RSS JMP RELC3 LOOP UNTIL END OF CLASS SPC 1 STA #RQ SAVE -(N-1) REQUEST IN QUEUE CMA,SZA,RSS # OF REQUEST IN QUEUE JMP OKRTN CLASS IS EMPTY, EXIT. SPC 1 LDA EQTA GO THROUGH ALL EQT TO FORCE A TO STA EQTPT ON ALL DEVICES WAITTING ON THIS CLASS LDA EQT# CMA,INA STA EQTCT SPC 1 REL20 XLA EQTPT,I GET EQT1 SZA,RSS EQT BUSY ? JMP REL24 NO, GOTO NEXT ONE SSA HLT INA GET 2ND WORD OF SAM BUFFER STA TEMP SPC 1 ********************************** PRIVILEDGE MODE JSB $OFF XLA TEMP,I GET WORD 2 RAL SSA,SLA,RSS T FIEL = 3 ? JMP REL22 NO, FORGET IT LDA TEMP YES, IT IS A CLASS REQUEST ADA D3 GO CHECK CLASS WORD XLA A,I GET CLASS WORD FROM SAM BUFFER AND MSK CPA CLASW BELONG TO THIS CLASS ? RSS YES, GO SET A TIME OUT JMP REL22 NO, SKIP SET TIME OUT CODE LDA EQTPT RECALL EQT1 ADA D14 CCB SET A TIMEOUT OF STB A,I 10 MSEC INTO EQT15 ISZ #RQ UPDATE # OF PENDING RQ (NEVER SKIP !!) REL22 JSB $ON ********************************** PRIVILEDGE MODE $END SPC 1 REL24 LDA #RQ RECALL -(N-1) REQUEST LEFT IN THE QUEUE CMA,SZA,RSS ALL PENDING REQUEST FOUNDED ? JMP REL30 YES, GO GET THEM * LDA EQTPT GOTO NEXT EQT ADA D15 STA EQTPT ISZ EQTCT MORE EQT ? JMP REL20 YES, CONTINUE * REL30 LDA =D-12000 NO, WAIT ABOUT ISZ A 30 MS ON XE JMP *-1 BEFORE JMP RELC3 GETTING CLASS REQUESTS SPC 2 REL50 CPA ASCIO CHECK THAT IT IS "IO 00" RSS JMP ERRTN ERROR RETURN CPB ASC00 JMP OKRTN OK, RETURN TO USER ERRTN CCA ERROR RETURN JMP KLCLS,I SPC 1 OKRTN CLA EXIT WITH A = 0 JMP KLCLS,I SPC 3 NAB20 OCT 100024 NAB21 OCT 100025 ASCIO ASC 1,IO ASC00 ASC 1,00 EQTA EQU 1650B EQT# EQU EQTA+1 SPC 1 D0 DEC 0 D1 DEC 1 D3 DEC 3 D14 DEC 14 D15 DEC 15 BIT15 OCT 100000 MSK OCT 17777 CLASS EQU .CL# CLASW NOP TEMP EQU $ON #RQ NOP EQTPT NOP EQTCT NOP END