ASMB HED . T M S L I B R A R Y NAM TMLIB,7 92080-1X106 REV.2026 800528 SPC 3 ********************************************************************** * * * NAME: TMLIB TMS LIBRARY * * ENT: TMDFN,TMCBE,TMCBD,TMCBL,TMRD,TMWR,TMBWR,TMCTL,TMBCT * * TMWRD,TMCWR,TMSUB,TMSAB,TMPZ,TMPRO,TMSOP,TMLOG,TMPAR * * TMZAP * * TMLRQ * SOURCE: &TMLIB 92080-18106 * * BINARY: %TMLIB ----NONE--- PART OF %TMSLB 92080-12100 * * * * PGMR: FRANCOIS GAULLIER * * * ********************************************************************** 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 3 ENT TMDFN,TMCBE,TMCBD,TMCBL ENT TMRD,TMWR,TMBWR,TMCTL,TMBCT,TMWRD,TMCWR ENT TMSUB,TMSAB,TMPZ,TMPRO,TMSOP,TMLOG ENT TMSTP,TMSIF,TMPAR,TMZAP,TMLRQ ENT $TML0,$TML3,$TML5,$TML7,$TML8 * * DUMMY ENT: TMLIB FOR 'TMSAN' A PRINT-OUT UTILITY * $TMSA (EMA NAME) TO RESOLVE UNDEF AT * RTE-IV GENERATION TIME IN %TMSLB. * ENT TMLIB,$TMSA EXT .ENTR,EXEC,&MVW,KLCLS,PNAME,RMPAR,DORMT EXT WRLOG * EXT DBUGR * EXT DMPTM,MESSS SPC 1 A EQU 0 B EQU 1 SUP $TMSA EQU * SPC 2 TMLIB EQU * HED *** DATA RECEIVED BY TMLIB, FROM TMSYS. *** * SPC 2 * FIVE PARAMETERS OF THE PROGRAM SPC 1 LU NOP LU USED TO START THE APPLICATION (TMSOP) CLASS NOP TMS EXTERNAL CLASS I/O WORD MCLAS NOP TMS MAIN CLASS I/O WORD ICLAS NOP TMS INTERNAL CLASS I/O WORD CLAS0 NOP TMS CB0 SPECIAL CLASS I/O WORD SPC 2 * BUFFER PASSES USING THE STRING PASSING FEATURE SPC 1 SCODZ NOP TMS INTERNAL SUBROUTINE CODE FMPCL NOP FMP-TMS CLASS I/O WORD LEN0 NOP LENGTH OF THE CB0 (0 MEANS NO CB0) #DFCB NOP MINUS # OF DEFINED CB'S EPAOS NOP 'ENTRY POINT ADDR. OF SUBROUTINE' RTRN NOP RETURN ADDR./ABORT CODE RNLCK NOP RN USED BY LU-LOCK ROUTINE STKPT NOP STACK POINTER (PARAM#1 OF REQUEST ON: CLASS) * LGCLA BSS 5 CLASS IO NUMBER OF DCLOG (0 IF NO LOGGING) * FPAR1 NOP THREE WORDS USED BY THE TMS FUNCTION FPAR2 NOP FPAR3 NOP * .CB1 NOP LOCAL ADDR OF CB1 .LEN1 BSS 10 CURRENT & LOCAL LENGTH OF ALL CB'S URNST NOP RUN STRING PASSED TO $MTMS BY USER SCHEDULING PROG REP 19 NOP SPC 1 PARLG EQU *-SCODZ HED T-M LIBRARY <---> T-M SOFTWARE COMMUNICATION MODULE EXIT2 CLA DEFAULT VALUE IS 0 LDA .PAR1,I STA .PAR1 SET 1ST PARAMETER VALUE EXIT3 CCB STB SRFLG SET SEND MAIL BOX FLAG SPC 1 LDB LEN0 TRUE COMMON SZB,RSS DEFINED ? JMP EXIT5 NO, SKIP JSB GACB0 GET CB0 ADDR STB EXIT4 JSB EXEC YES, SAVE TRUE COMMON. DEF *+8 DEF D20 WRITE/READ CLASS I/O DEF D0 DUMMY LU EXIT4 NOP BUFFER ADDR DEF LEN0 BUFFER LENGTH DEF D1 BIT0 MEANS CB0 ENABLED DEF TEMP DEF CLAS0 CLASS I/O WORD SZA WAS IT OK JMP ERR01 NO, ABORT TMS WITH INTERNAL ERROR 01 SPC 1 EXIT5 JSB SRCB SEND ALL NECESSARY CB SPC 1 EXIT6 LDA SWFLG LOCAL CLASS I/O SLA,RSS NEEDED ? JMP EXIT7 NO LDA LCLAS LOCAL CLASS I/O SZA,RSS ALREADY ALLOCATED ? JSB GTCLW NO, GET ONE CLASS I/O WORD STA LCLAS STORE IT BACK * EXIT7 LDA MCLAS SWAP THE MAIN & THE INTERNAL LDB ICLAS CLASS I/O WORD STA ICLAS STB MCLAS JSB MAILB RESTART TMSYS BY SENDING THIS MAIL-BOX DEF LCLAS SEND SUBROUTINE SPECIFIC PARAMETER ABS PARLN LDA MCLAS SWAP BACK THE MAIN & INTERNAL LDB ICLAS CLASS I/O WORD STA ICLAS STB MCLAS SPC 1 LDB SWFLG PROGRAM MUST ALLOW SWAPPING SLB,RSS JMP EXIT9 NO, GO TERMINATE 'SERIALLY REUSABLE' SPC 1 LDB LCLAS SWAP THE LOCAL & INTERNAL CLASS I/O STB ICLAS TO USE MAILB SUBROUTINE STA LCLAS * CLA STA SRFLG SET MAIL BOX RECEIVE FLAG * JSB MAILB SUSPEND THIS PROGRAM (--> STATE =3) DEF SCODZ WITH THE GET COMMON DESCRIPTOR #PARG ABS PARLG * LDA ICLAS RESTORE BOTH THE LOCAL AND THE INTERNAL LDB LCLAS CLASS I/O, BY SWAPPING THEM AGAIN STA LCLAS STB ICLAS * JMP RSTR4 SPC 1 EXIT9 JSB EXEC COMPLETE THIS PROGRAM DEF *+4 SERIALLY REUSABLE DEF D6 .D0 DEF D0 DEF DM1 SPC 1 **************************************************************** SPC 1 $TML0 JSB RMPAR TM SYSTEM RETURN TO USER PROGRAM DEF *+2 SAVE PARAMETER DEF LU SPC 2 * JSB DBUGR * DEF *+2 * DEF D1 SPC 2 JSB EXEC GET STRING REQUEST DEF *+5 DEF D14 GET STRING DEF D1 DEF SCODZ BUFFER ADDR DEF #PARG BUFFER LENGTH * SZA STRING GET SUCCED ? * JMP ILSHR NO, PRINT ERROR MESSAGE * CPB #PARG GET RIGHT LENGTH ? * RSS YES * JMP ILSHR NO, PRINT ERROR MESSAGE * LDA XEQT GET PRIMARY ENTRY POINT ADA D7 FROM ID SEGMENT XLA A,I RTE-IV !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ADA D2 SKIP THE JMP & NOP STA .NTUS SAVE ADDR OF '# OF TUS' ADA A,I TO SKIP ALL DEF'S INA TO ACCESS THE SWAP FLAG LDA A,I GET SWAP FLAG STA SWFLG SAVE SWAPPING FLAG * CLA STA SRFLG SET MAIL BOX RECEIVE FLAG SPC 1 RSTR4 LDA SCODZ RECALL SUBROUTINE CODE STA SCODE TO SET IT LOCALLY CPA A.RU RUN COMMAND ? JMP ILSHR YES, PRINT ERROR MESSAGE CPA A.ON ON COMMAND ? JMP ILSHR YES, PRINT ERROR COMMAND CPA ABTCD ABORT TMS REQUEST ? JMP RSTR5 YES, DO NOT CHECK MCLAS * LDA MCLAS CHECK IF IT IS A GOOD REQUEST SZA,RSS MAIN CLASS I/O DEFINED ? JMP ILSHR NO, PRINT ERROR MESSAGE SPC 1 RSTR5 JSB SRCB NO, RECEIVE ALL ENABLE COMMON BLOCK DATA * LDB .CB1 GET CB1 ADDR LDA #DFCB GET # OF DEFINED CB'S SZA,RSS CB DEFINED ? JMP RSTR7 NO, USE DUMMY CB1 LDA .LEN1 RECALL CB1 LOCAL LENGTH SSA CB1 ENABLED ? RSTR7 LDB .DCB1 STB .COM1 SET LOCAL COPY OF CB1 ADDR * LDB .SBRT SETUP THE RETURN ADDR. (EPAOS=0 IF STB EPAOS,I NOT DEFINED ) SPC 1 LDA SCODE RECALL SUBROUTINE CODE ADA C.TAB INDEX IN TABLE JMP A,I SPC 1 .DCB1 DEF DCB1 .SBRT DEF TMRTN ABTCD DEC 17 ABORT CODE (TERMINATE THIS PROGRAM) A.RU ASC 1,RU A.ON ASC 1,ON .URNS DEF URNST USER RUN STRING .NTUS NOP ADDR OF '# OF TUS' IN THIS UPT .COM1 NOP LOCAL COPY OF CB1 ADDR * DCB1 BSS 6 DUMMY CB1 SKP ILSHR LDA LU SET UP LU SZA,RSS INA STA LU JSB PNAME RETREIVE PROGRAM NAME DEF *+2 FROM IDSEG DEF MES+1 TO MOVE IT INTO ERROR MESSAGE LDA MES+3 REPLACE 6TH BYTE WITH IOR A: THE ":" (WAS ALREADY A SPACE) STA MES+3 JSB EXEC OUTPUT DEF *+5 " /XXXXX: ILLEGAL SHEDULE REQUEST ! " DEF D2 DEF LU DEF MES DEF D18 * LDA MCLAS CHECK IF THE TMS APPLICATION SZA IS RUNNING ? JMP EXIT9 YES, DO NOT TERMINATE ! JMP ABORT NO, TERMINATE PROGRAM * MES ASC 4, /XXXXX: ASC 14, ILLEGAL SCHEDULE REQUEST ! A: OCT 72 D0 DEC 0 DM1 DEC -1 D1 DEC 1 D2 DEC 2 D7 DEC 7 HED TERMINAL-MONITOR LIBRARY EXIT TO USER PROGRAM RTN90 CCA,RSS SET CB INDIC. FLAG TO SET STATUS RTN92 CLA SET CB INDIC. FLAG TO NOT SET STATUS STA CBINF SET CB INDICATOR FLAG * LDA LEN0 IS TRUE COMMON (CB0) SZA,RSS DEFINED ? JMP RTN96 NO, SKIP RESTORE JSB GACB0 GET CB0 ADDR STB RTN93 JSB EXEC RESTORE TRUE COMMON DEF *+6 DEF D21 CLASS I/O GET DEF CLAS0 CLASS I/O WORD RTN93 NOP DEF LEN0 DEF TEMP CB INDICATOR UPDATE WORD SSA JMP ERR01 ABORT TMS WITH ERROR 01 LDA CBIND MERGE CB INDICATOR FOR CB0 IOR TEMP INTO CBIND STA CBIND SPC 1 RTN96 ISZ CBINF DOES CB INDIC. NEED TO BE STORE ? JMP RTN99 NO, EXIT CLA YES, SET UP STATUS WORD LDB LGCLA SZB LOGGING USED ? IOR BIT7 YES, SET BIT 7 FOR LOGGING IOR CBIND MERGE WITH CB'S ENABLE FLAG LDB .COM1 AND STORE THE STATUS INTO ADB D3 CB1(3) STA B,I SPC 1 RTN99 LDA .COM1 SAVE CB1(1) & CB1[6:13] TO VERIFY LDB .SCB1 THAT THE USER DO NOT MODIFY THEM. MVW D1 SAVE LU ADA D4 SKIP CTLBIT, TYPE, STAT, ITL MVW D8 SAVE CB1[6:13] ADA DM10 TO GET STATUS DLD 0,I A=STATUS, B=TLOG JMP RTRN,I EXIT TO CALLING PROGRAM ! SPC 2 D21 DEC 21 CBINF NOP SWFLG NOP SWAP FLAG .SCB1 DEF *+1 NOP HOLD CB1(1) WHILE USER IS EXECUTING $TML3 BSS 8 HOLD CB1[6:13] WHILE USER IS EXECUTING BIT7 OCT 200 SKP * ABORT TMS APPLICATION: * TERMINATE THIS PROGRAM WITHOUT ANY OPTION * TO MAKE IT ACTUALLY DORMANT. SPC 1 ABT LDB .CLS CHECK IF CLOSE FMP FILE REQUESTED LDA FMPCL RECALL FMP CLASS I/O WORD SZB CLOSE REQUESTED ? JSB B,I YES, GO DO THE CLOSE SPC 1 ABORT JSB KLCLS RELEASE THE LOCAL CLASS I/O DEF *+2 IF ANY DEF LCLAS * LDA .D0 STA .D0+1 SUPPRESS TERMINATE OPTION JMP EXIT9 AND TERMINATE PROGRAM. SPC 2 IMEXT LDB ..PA1 SAVE IMAGE PARAMETERS ADDR INTO MVW PARL STANDARD PARAMETERS LOCATION JMP EXIT3 SAVE CB'S AND GO TO TMSYS SPC 2 DM3 DEC -3 DM10 DEC -10 HED GENERAL TRANSFERT PARAMETER GETPA NOP LDB GETPA ADB DM3 LDB B,I STB RTRN. ADB DM1 STB XSUSP STA SCODE SET UP TMS INTERNAL SUBROUTINE CODE LDX PAR# CLA CLEAR FUTUR PARAMETERS ADRESSES SAX .PAR1-1 TO KNOW HOW MANY PARAMETERS ARE DSX PASSED JMP *-3 JMP RTRN.+1 HED *** DATA SEND BY TMLIB, TO TMSYS. *** * SPC 2 * BUFFER PASSES USING A MAIL BOX SPC 1 LCLAS OCT 0 LOCAL CLASS I/O WORD USED TO SUSP. ITSELF .PAR1 NOP USER PARAMETERS ADDR. ARE SET UP .PAR2 NOP HERE BY .ENTR .PAR3 NOP .PAR4 NOP .PAR5 NOP BSS 10 RQCNT NOP XSUSP NOP SCODE NOP SUBROUTINE CODE TO BE SEND TO TMSYS RTRN. NOP RETURN ADDR. TO BE SEND TO TMSYS SPC 1 PARLN EQU RTRN.-LCLAS+1 SPC 3 JSB .ENTR GET PARAMETERS ADDRESS ..PA1 DEF .PAR1 (HOPE IT IS MICRO-CODED) * CLA STA RQCNT TO BE SURE THAT THE LOOP WILL END LDX D0 GETP7 LAX .PAR1 SZA,RSS PARAMETER HERE ? JMP GETP8 NO, END OF LIST REACHED ISX YES, INCREMENT X REG JMP GETP7 AND LOOP * GETP8 CXA SAVE # OF PARAMETERS STA RQCNT ADA DM10 NEVER MORE THAN 9 PARAMETERS SSA,RSS JMP ERR04 ABORT TMS WITH INTERNAL ERROR 04 LDA SCODE IF IT IS NOT SZA COMMON BLOCK DEFINITION CALL CPA D9 JMP GETPA,I IT IS, EXIT LDA #DFCB IT IS NOT, SO AT LEAST SZA,RSS ONE CB MUST BE DEFINED JMP ERR05 ABORT TMS WITH INTERNAL ERROR 05 * LDA .SCB1,I VERIFY THAT CB1(1) HAS NOT BEEN MODIFIED CPA .COM1,I OK ? JMP GETPA,I YES, EXIT JMP ERR08 NO, ABORT TMS WITH ERROR # 28 SPC 1 PAR#. EQU RQCNT-.PAR1 PAR# ABS PAR#. PARL. EQU RTRN.-.PAR1+1 PARL ABS PARL. HED TERMINAL-MONITOR READ/WRITE REQUEST REQUEST TMRD NOP CLA,INA SUBROUTINE CODE=1 FOR READ JSB GETPA GO GET PARAMETER * LDX D17 EXEC I/O CODE FOR READ READ3 JSB CB1? CB1 DEFINED ? LDA .PAR1 A=BUFF. ADDR. LDB .PAR2,I B=BUFF. LEN. STB .PAR2 SAVE BUFFER LENGTH FOR THE GET LATER JSB GI/O EXECUTE I/O * JSB DMPTM * DEF *+7 * DEF D21 * DEF .PAR1,I * DEF D50 * DEF .PAR1,I * DEF D50 * DEF D1 JMP EXIT3 * D17 DEC 17 SPC 2 READ5 JSB EXEC THE PHYSICAL I/O IS DONE DEF *+5 RETURN FROM PRG: TMSYS IS HERE. DEF D21 CLASS I/O GET TO GET THE INPUT BUFFER DEF ICLAS INTERNAL CLASS I/O WORD DEF FPAR1,I USER BUFFER ADDR. (SAVED & RETURNED BY TMSYS) DEF FPAR2 USER BUFFER LEN. (SAVED & RETURNED BY TMSYS) SSA WAS IT OK ? JMP ERR02 ABORT TMS WITH INTERNAL ERROR 02 * JSB SVST SAVE STATUS & TLOG. JMP RTN92 RESTORE TRUE COMMON SPC 2 TMWR NOP LDA D2 SUBROUTINE CODE=2 FOR WRITE JSB GETPA * JSB DMPTM * DEF *+7 * DEF D21 * DEF .PAR1,I * DEF D50 * DEF .PAR1,I * DEF D50 * DEF D1 * LDX D18 JMP READ3 * D18 DEC 18 D50 DEC 50 SPC 2 TMBWR NOP BUFFERED WRITE I.E.: DO NOT LDA D4 SUBROUTINE CODE=4 FOR BUFFERED WRITE JSB GETPA JSB CB1? CB1 DEFINED ? * LDX D18 EXECUTE THE BUFFERED WRITE LDA .PAR1 LDB .PAR2,I JSB GI/O TMBW6 LDA RTRN. RETURN OF BUFFERED CALL, I.E.: STA RTRN RETURN DIRECTLY TO THE USER (SETUP RTRN ADDR) JMP RTN99 AND RETURN WITHOUT RESTORING TRUE COMMON * D4 DEC 4 HED TERMINAL-MONITOR WRITE-READ-REQUEST REQUEST TMWRD NOP LDA D11 SUBROUTINE CODE=11 FOR WRITE/READ JSB GETPA * LDA .PAR1 GET WRITE BUFFER ADDR. LDB .PAR3 GET READ BUFFER ADDR. AND SAVE STB .PAR1 IT INTO 1ST PARAM FOR LATER USE LDB .PAR5 GET OPTIONAL (RD/WR CTL BITS) ADDR STB .PAR3 AND SAVE IT IN 3RD PARAM FOR GI/O LDB .PAR2,I GET WRITE BUF LENGTH LDX D18 WRITE REQUEST JSB GI/O PERFORM THE WRITE PART OF THE REQUEST * CLA LDA .PAR4,I GET READ BUF LENGTH AND SAVE STA .PAR2 IT INTO 2ND PARAM FOR TMSYS CLA LDA .PAR3,I GET WR/RD CTL BITS STA .PAR3 AND SAVE INTO 3RD PARAM FOR TMSYS * JMP EXIT3 EXIT TO TMSYS * D11 DEC 11 SPC 2 TMCWR NOP CLASS I/O WRITE/READ REQUEST FROM TMS !! CLA,INA SAME AS A READ REQUEST JSB GETPA * LDX D20 EXEC I/O CODE FOR WRITE/READ RQ JMP READ3 * D20 DEC 20 HED TERMINAL-MONITOR CONTROL REQUEST REQUEST TMCTL NOP LDA D3 SUBROUTINE CODE=3 FOR CONTROL JSB GETPA JSB CB1? CB1 DEFINED ? * JSB CTL JMP EXIT3 * D3 DEC 3 SPC 2 TMBCT NOP LDA D5 SUBROUTINE IS 5 FOR BUFFERED CTL JSB GETPA JSB CB1? CB1 DEFINED ? * JSB CTL JMP TMBW6 RETURN FROM A TMS BUFFERED REQUEST * D5 DEC 5 SPC 1 CTL NOP CLA DEFAULT IS ZERO LDA .PAR1,I GET FUNCTION CODE ALF,ALF RAR,RAR IOR .COM1,I STA I/OLU CLA VALUE IS 0 IF NOT SUPPLIED LDA .PAR2,I STA .PAR2 JSB EXEC EXECUTE THE CLASS I/O CONTROL DEF *+10 DEF D19 CLASS I/O CONTROL REQUEST DEF I/OLU LU DEF .PAR2 PARAMETER DEF CLASS CLASS I/O WORD DEF STKPT 1ST PARAMETER DEF SCODE 2ND PARAMETER DEF * PLACE HOLDER !! DEF * PLACE HOLDER !! DEF RNLCK BYPASS LU-LOCK CHECK SZA WAS IT OK ? JMP ERR02 ABORT TMS WITH INTERNAL ERROR 02 JMP CTL,I * D19 DEC 19 SPC 1 CB1? NOP CHECK THAT CB1 IS DEFINED LDA .LEN1 RECALL CB1 LOCAL LENGTH SSA CB1 DEFINED ? JMP ERR06 NO, USER IS NOT ABLE TO DO I/O CALL JMP CB1?,I YES, CONTINUE HED TERMINAL-MONITOR LOG ON REQUEST TMSOP NOP TMS OPERATOR CALL ENTRY POINT CLA JSB GETPA RETRIEVE CALLING PARAMETERS * LDA .PAR2,I IOR LU MERGE WITH LU STA CTL SAVE LOCALLY * JSB EXEC READ/WRITE CALL DEF *+10 DEF .PAR1,I CODE DEF CTL LU DEF .PAR3,I BUFFER ADDR DEF .PAR4,I BUFFER LENGTH DEF * PLACE HOLDER !! DEF * PLACE HOLDER !! DEF * PLACE HOLDER !! DEF * PLACE HOLDER !! DEF RNLCK BYPASS LU-LOCK CHECK JSB SVST SAVE STATUS & TLOG JMP RTRN.,I RETURN TO USER SPC 3 SVST NOP LDX D3 INDEX INTO 1ST CB SAX .COM1,I TO STORE STATUS ISX AND TO WORD 5 SBX .COM1,I TO STORE TANSMISSION LOG JMP SVST,I HED TERMINAL-MONITOR PROCESS/PROGRAM LAUNCHING REQUEST TMPRO NOP LDA D13 SUBROUTINE CODE=13 FOR LAUNCH PROCESS JSB GETPA * LDA ..PA1 MOUVE END OF PARAMETERS ADA D2 TO HAVE ROOM TO PUT LDB A THE PROCESS NAME (TM SUBROUTINE NAME) ADB D2 JSB &MVW DM4 DEC -4 * LDA .PAR2 NOW MOUVE TM SUBROUTINE NAME LDB ..PA1 INB MVW D3 JMP EXIT2 GET LU# AND EXIT * D13 DEC 13 SPC 3 NOP CLA NO CODE FOR PROGRAM SCHEDULE !!! JSB GETPA * LDA ..PA1 MOVE LAST PARAM TO INA HAVE ROOM FOR PROGRAM NAME LDB A ADB D2 DESTINATION ADDR JSB &MVW DM6 DEC -6 LDA .PAR1 LDB ..PA1 MOVE PROGRAM NAME MVW D3 JMP EXIT3 * D15 DEC 15 HED TERMINAL-MONITOR C.B. ENABLE/DISABLE REQUEST TMCBE NOP LDA D6 SUBROUTINE CODE=6 FOR CB ENABLE JSB GETPA JMP EXIT2 GET THE VALUE OF THE FIRST PARAMETER * D6 DEC 6 SPC 3 TMCBD NOP LDA D7 SUBROUTINE CODE=7 FOR CB DISABLE JSB GETPA JMP EXIT3 SPC 4 TMCBL NOP LDA D14 SUBROUTINE CODE=14 FOR CB LENGTH CHANGE JSB GETPA * CLA DEFAULT VALUE IS ZERO LDA .PAR2,I STA .PAR2 SET SECOND PARAMETER VALUE JMP EXIT3 * D14 DEC 14 HED TERMINAL-MONITOR LOGGING REQUEST TMLOG NOP LDA D24 SUBROUTINE CODE=24 FOR LOGGING JSB GETPA * JSB DBUGR * DEF *+2 * DEF LU * LDA LGCLA GET CLASS IO OF DCLOG SZA LOGGING USED ? JMP TMLO1 YES, GO TO LOG CLB NO, RETURN STATUS=-1 TO THE USER CCA AND RETURN IMMEDIATLY JSB SVST SET TMS-STATUS & TLOG JMP TMBW6 AND RETURN SPC 1 TMLO1 JSB CB1? START LOGGING, IS CB1 DEFINED * ??????????????????? CHECK FOR MEMORY PROTECT FENCE !!! LDA .PAR2 RECALL USER DATA BUFFER ADDR. ADA DM31 AND COMPUTE THE ACTUAL BUFFER ADDR. STA TEMP SAVE BUFFER ADDR LDB TMLO8 SAVE USER VALUE TO RESTORE THEM MVW D31 AT THE END * LDA .PAR3,I GET LENGTH OF DATA BUFFER ADA D31 CALCULATE LENGTH OF BUFFER TO SEND TO DCLOG STA TEMP1 * LDB TEMP SET UP THE FIRST 31 WORDS OF THE LOGGING BUFFER LDA D2 CODE FOR LOG STA B,I ADB D16 POINT TO LU SLOT LDA .COM1,I SET INTERACTIVE LU INTO STA B,I THE LOGGING RECORD INB LDA .PAR1 AND MOVE THE USER HEADER MVW D5 * * SEND BUFFER TO DCLOG * JSB WRLOG TEMP NOP BUFFER DEF TEMP1 WORD COUNT DEF LGCLA LOGGING CLASS DEF CLASS RETURN CLASS DEF STKPT STACK POINTER DEF SCODE SUBROUTINE CODE * STA TEMP1 SAVE ERROR CODE * TML02 LDA TMLO8 RESTORE THE USER BUFFER LDB TEMP IN FRONT OF THE DATA BUFFER MVW D31 * LDA TEMP1 GET STATUS SZA ERROR? JMP ERROR YES, DIE JMP EXIT3 NO, EXIT WITH HONOR * DM31 DEC -31 TEMP1 BSS 1 D16 DEC 16 D31 DEC 31 D8 DEC 8 D24 DEC 24 TMLO8 DEF *+1 BSS 31 HED TERMINAL-MONITOR SUBROUTINE REQUEST TMSUB NOP CALL AN EXTERNAL SUBROUTINE LDA D8 SUBROUTINE CODE=8 FOR T-M SUB. CALL JSB GETPA * LDA .PAR1 LDB ..PA1 MVW D3 GET PARAMETER JMP EXIT3 SPC 1 SBCAL LDB .NTUS,I GET THE LOCAL # OF SUB. LDA RTRN GET THE WANTED SUB # ADA B LOCAL # - WANTED # SSA IS IT OK ? JMP ERR03 ABORT TMS WITH INTERNAL ERROR 03 LDA RTRN CMA,INA MAKE IT POSITIVE CAX LAX .NTUS,I GET SUBROUTINE ENTRY POINT ADDR RSS LDA A,I PEEL OFF INDIRECT BIT RAL,CLE,SLA,ERA JMP *-2 STA EPAOS JSB A,I AND CALL THE SUBROUTINE DEF *+1 TO BE COMPATIBLE WITH .ENTR CONVENTION * TMRTN LDA D10 SUBROUTINE CODE=10 FOR TMSUB RETURN STA SCODE NO PARAMETERS TO GET JMP EXIT3 SPC 1 TMDFN NOP JSB TMDF3 CHECK THAT RTRN IS STILL NEGATIVE JSB GETPA * CLA STA LEN0 NO TRUE COMMON DEFINED YET LDA EPAOS SAVE ENTRY POINT ADDR. STA .PAR5+5 OF SUB. TO SEND TO TMSYS JMP EXIT3 SPC 1 TMDF3 NOP THIS IS TO BE SURE THAT LDA RTRN THIS CALL IS THE FIRST OF THE SUBROUTINE SSA,RSS STILL NEGATIVE ? JMP ERR05 ABORT TMS WITH INTERNAL ERROR 05 LDA D9 YES, ALLRIGHT JMP TMDF3,I SUBROUTINE CODE=9 FOR CB DEFINITION SPC 1 D9 DEC 9 D10 DEC 10 HED TERMINAL-MONITOR PAUSE/STOP REQUEST TMPZ NOP LDA D12 SUBROUTINE CODE=12 FOR PAUSE REQUEST JSB GETPA JMP EXIT2 * D12 DEC 12 SPC 3 TMSAB NOP LDA ABTCD SUBROUTINE CODE=17 FOR TMS ABORT JSB GETPA JMP EXIT2 SPC 3 TMSTP NOP LDA D20 SUBROUTINE CODE=20 FOR TMS STOP JSB GETPA JMP EXIT2 SPC 3 TMSIF NOP LDA D15 SUBROUTINE CODE=15 FOR STOP-INHIBIT FLAG SET JSB GETPA JMP EXIT2 SPC 3 TMPAR NOP LDA D26 SUB CODE =26 FOR GET USER RUN STRING JSB GETPA LDA .URNS ADDR OF RUN STRING BUFFER LDB .PAR1 ADDR OF USER BUFFER MVW D20 JMP RTRN.,I D26 DEC 26 SPC 3 TMZAP NOP LDA D26 JSB GETPA LDA .PAR1 LDB .URNS MVW D20 JMP RTRN.,I SPC 3 TMLRQ NOP SUB CODE =26 (DUMMY) FOR GET LU RESOURCE NO. LDA D26 JSB GETPA LDA RNLCK GET RESOUCRE # FOR LU, PASSED BY $MTMS STA .PAR1,I PASS BACK TO USER JMP RTRN.,I HED UTILITY SUBROUTINES, CONSTANTS AND VARIABLES ILRQ STA TEMP JMP ERR03 ABORT TMS WITH INTERNAL ERROR 03 SPC 3 ERR01 HLT 11B CB0 CLASS I/O ERROR ERR02 HLT 12B RN / CLASS I/O ERROR ERR03 LDA D3 INTERNAL LOGIQUE / TABLE INCONSISTENCY JMP ERROR ERR04 LDA D4 GETPA: USER CALL WITH MORE THAN 9 PARAM. JMP ERROR ERR05 LDA D5 TMDFN: NOT 1ST CALL/2ND CALL (USER ERROR) JMP ERROR ERR06 LDA D6 CB1 IS NOT DEFINED FOR AN I/O REQUEST JMP ERROR * D7 USED BY IMAGE: CB1 NOT DEF. OR < 19 WORDS * D8 USED BY IMAGE: USER MODIFY CB1[6:13] ERR08 LDA D8 USER MODIFY CB1(1) JMP ERROR * $TML8 EQU * ERROR STA .PAR1 SET ERROR # LDB ABTFL SET ERROR FLAG INSTEAD OF SUBROUTINE CODE STB SCODE SCODE TO BE SEND CCA SET SEND FLAG STA SRFLG JMP EXIT6 * ABTFL OCT 125252 SPC 2 * TMS-FMP REQUEST HAS BEEN DONE, SAVE * ADDRESS OF THE CLOSE ROUTINE TO CLOSE FILES * WHEN TMS STOP. SPC 1 $TML7 NOP STA .CLS SAVE CLOSE ROUTINE ADDR. LDA FMPCL RECALL FMP CLASS I/O WORD JMP $TML7,I AND RETURN TO FMP-TMS SUBROUTINE SPC 1 .CLS OCT 0 SKP MAILB NOP SEND/RECEIVE MAIL-BOX TO/FROM TMSYS DST PARM1 LDA MAILB,I CALLING SEQUENCE: JSB MAILB STA MAIL2 ----------------- DEF BUFF BUF ADDR ISZ MAILB DEC 10 BUF LENGTH LDA SRFLG SZA SEND OR RECEIVE ? JMP MAIL5 SEND MAIL BOX JSB EXEC DEF *+7 DEF D21 CLASS I/O GET DEF ICLAS INTERNAL CLASS I/O WORD MAIL2 NOP DEF MAILB,I BUFFER LENGTH DEF PARM1 DEF PARM1+1 SSA HLT * JSB DMPTM * DEF *+7 * DEF D6 * DEF MAIL2,I * DEF MAILB,I * DEF MES1 * DEF D10 * DEF D1 ISZ MAILB AJUST RETURN ADDR DLD PARM1 JMP MAILB,I *ES1 ASC 10,0TMLIB REC M.B. * MAIL5 JSB EXEC DEF *+8 DEF D20 WRITE/READ CLASS I/O CALL DEF D0 DUMMY LU DEF MAIL2,I BUFFER ADDR DEF MAILB,I BUFFER LENGTH DEF PARM1 DEF PARM1+1 DEF ICLAS INTERNAL CLASS I/O WORD SZA WAS IT OK HLT * JSB DMPTM * DEF *+7 * DEF D6 * DEF MAIL2,I * DEF MAILB,I * DEF MES2 * DEF D10 * DEF D1 ISZ MAILB AJUST RETURN ADDR JMP MAILB,I *ES2 ASC 10,0TMLIB SEND M.B. SPC 1 SRFLG NOP SEND/RECEIVE FLAG FOR MAIL-BOX SEND/RECEI. ROUTINE PARM1 BSS 2 SPC 3 SRCB NOP SEND/RECEIVE ALL NECESSARY COMMON BLOCK CLA RESET CB INDICATOR STA CBIND LDA #DFCB GET MINUS OF DEFINED CB'S SZA,RSS DEFINED CB'S ? JMP SRCB,I NO, RETURN CMA,INA YES, MAKE IT NEGATIVE STA TEMP1 TO USE TEMP1 AS A COUNTER LDB D2 INIT CB# WORD (SET BIT TO STB CB# CORRESPONDING CB #) LDX .CB1 MAINTAIN LOCAL CB ADDR IN X LDB @.LN1 USE B AS A POINTER TO CB DEFINITION SCR01 LDA B,I GET CURRENT CB LENGTH RAL,CLE,ERA CLEAR BIT15 SEZ CB ENABLED ? JMP SCR05 NO, CHECK NEXT ONE STA SCR04+1 YES, SET CB LENGTH SPC 1 LDA SWFLG GET SYS COM/CLASS I/O FLAG (BIT15) SSA SYSTEM COMMON USED ? JMP SCR03 YES, SKIP SEND/RECEIVE MAILBOX * STB TEMP NO, SAVE CB DEFINITION PT STX SCR04 SET CB ADDR JSB MAILB SEND/RECEIVE CB DATA SCR04 BSS 2 BUFFER ADDR / BUFFER LENGTH LDB TEMP RESTORE B SPC 1 SCR03 LDA CBIND UPDATE CB INDICATOR IOR CB# STA CBIND SCR05 INB BUMP POINTER TO COM. BL. LIST ADX B,I MAINTAIN LOCAL CB ADDR INB LDA CB# SET NEXT BIT IN CB# WORD RAL STA CB# ISZ TEMP1 MORE CB DEFINED ? JMP SCR01 YES, LOOP UNTIL FINISHED JMP SRCB,I NO, RETURN * CB# NOP CBIND NOP @.LN1 DEF .LEN1 SPC 2 GI/O NOP STA I/OB BUFFER STB I/OL LENGTH CXA IOR NABIT STA I/OC EXEC I/O CODE * LDB .COM1 XBX GET READ-WRITE CONTROL BIT LAX 1 GET 2ND WORD OF COMMON BLOCK # 1 SLB READ OR WRITE ? ALF,ALF READ LDB .PAR3 FUNCTION CODE SUPPLIED BY SZB THE USER FOR THIS CALL ? LDA B,I YES, GET IT AND RHALF NO, KEEP THE STANDARD ONE ALF,ALF RAR,RAR IOR .COM1,I MERGE WITH LU STA I/OLU * JSB EXEC DEF *+10 DEF I/OC EXEC CODE DEF I/OLU CONTROL WORD I/OB NOP BUFFER DEF I/OL LENGTH DEF STKPT 1ST PARAMETER DEF SCODE 2ND PARAMETER DEF CLASS CLASS I/O WORD DEF * PLACE HOLDER !! DEF RNLCK BYPASS LU-LOCK CHECK HLT 55B SZA WAS IT OK ? JMP ERR02 ABORT TMS WITH INTERNAL ERROR 02 JMP GI/O,I NABIT OCT 100000 SPC 1 RHALF OCT 377 I/OC NOP I/OL NOP I/OLU NOP ASAV NOP BSAV NOP SPC 2 GACB0 NOP GET CB0 ADDR JSB CB1? CB1 MUST BE ENABLE LDB LEN0 RECALL CB0 LENGTH CMB,INB AND ADB .COM1 ADD TO CB1 ADDR TO HAVE CB0 ADDR. JMP GACB0,I EXIT WITH ADDR IN B REG. SPC 3 GTCLW NOP ALLOCATED A CLASS I/O CLA WHEN OWNER CLASS I/O WILL BE RELEASE STA GTCLX THIS SUBROUTINE WILL BE REPLACED JSB EXEC BY THE SYSTEM ROUTINE. DEF *+5 THE CLASS MUST BE OWNED BY THE CALLING PROGRAM DEF D19 SO THE ABORT PROCEDURE WILL BE EASIER DEF D0 I.E.: THE PROGRAM WILL BE ABORTED DEF * AND HOPFULLY THE CLASS I/O RELEASED. DEF GTCLX LDA GTCLX IOR B20K SET BIT13 'DO NOT DEALLOCATE CLASS' STA GTCLX JSB EXEC DEF *+5 DEF D21 DEF GTCLX DEF * DEF D0 LDA GTCLX JMP GTCLW,I * GTCLX NOP B20K OCT 20000 SPC 3 $TML5 EQU * TABLE OF ADDR. GET BY TMLIM WHEN NEEDED DEF IMEXT ADDR OF RETURN POINT INTO TMLIB FROM TMLIM DEF STKPT ADDR OF THE STACK POINTER VARIABLE DEF FPAR1 ADDR OF THE FIRST FUNCTION PARAMETER DEF CLASS ADDR OF THE TMS EXTERNAL CLASS I/O WORD DEF ICLAS ADDR OF THE TMS INTERNAL CLASS I/O WORD SKP C.TAB DEF *+1,I DEF ILRQ 0 START TMS (NEVER IN TMS-SUBROUTINE) DEF READ5 1 STANDARD READ DEF RTN92 2 STANDARD WRITE DEF RTN92 3 CONTROL DEF ILRQ 4 BUF. WRITE (NEVER COME BACK) DEF ILRQ 5 BUF. CTL (NEVER COME BACK) DEF RTN90 6 CB ENABLE DEF RTN90 7 CB DISABLE DEF SBCAL 8 TM SUB. CALL DEF RTN90 9 DEFINE COMMON IN A TM SUB. DEF RTN92 10 RETURN FROM A TM SUB DEF READ5 11 WRITE/READ DEF RTN92 12 PAUSE DEF RTN92 13 PROCESS LAUNCHING DEF RTN92 14 CHANGE CB LENGTH DEF RTN92 15 SET/RESET STOP-INHIBIT FLAG DEF ILRQ 16 UNLCK-IMAGE FUNCTION (NEVER COME TO TMLIB) DEF ABT 17 ABORT TMS APPL. (TERMINATE THIS PRG.) DEF ILRQ 18 PROCESS LAUNCHING BY TMSL DEF ILRQ 19 TMS-TIMER INTERRUPT DEF ILRQ 20 STOP TMS APPL. (NEVER COME TO TMLIB) DEF ILRQ 21 MEMORY SUSPEND (NEVER COME TO TMLIB) DEF ILRQ 22 MEMORY SUSPEND (NEVER COME TO TMLIB) DEF RTN92 23 IMAGE REQUEST DEF RTN92 24 LOGGING REQUEST DEF ILRQ 25 STOP IN PROGRESS (NEVER COME TO TMLIB) REP 5 DEF ILRQ SPC 2 XEQT EQU 1717B SPC 2 UNS ORG * DEFINE LAST LOCATION END