/ / / / / / / / / / /COPYRIGHT (C) 1978,1979 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / /VERSION=1 / .TITLE SUBROUTINE BRANCH /BRANCH PERFORMS THE SPECIFIED TEST AS INDICATED BY THE I-TYPE /RECORD, LOADS CQUES WITH THE TARGET QUESTION, AND SETS THE IFLAG, /IF TEST RESULT IS TRUE. .RSECT BRANCH .ENTRY NUMBER .ENTRY BRN .EXTERNAL TABLE1,RECLOC,TEMP1,UNPACK,OVRPTR,ERR1 .EXTERNAL UNP1,PCKPTR,TEMP2,TEMP3 .EXTERNAL TEMP4,ANSPTR,IFLAG,CQUES BRN, 0 CLA TAD (CIF CDF) RDF DCA BRN20 CDF TABLE1 /SETUP FOR RETURN IAC TAD OVRPTR TAD RECLOC DCA 10 /GET STARTING ADDRESS OF /CONDITIONAL RECORD AND SAVE /POINT TO SUBTYPE TAD I 10 DCA SAVE /GET SUBTYPE AND SAVE IT. TAD SAVE AND (77 DCA SAVE /STRIPE SUBTYPE OF HALF- /CHARACTER TAD SAVE TAD (-32 SNA JMP ZERO /SUBTYPE Z? (ANSWER = 0) TAD (-20+32 SNA JMP P /SUBTYPE P? (ANSWER (-=) 0) TAD (-05+20 SNA JMP E /SUBTYPE E? (EQUALS ARG.) TAD (-16+5 SNA JMP N /SUBTYPE N? (ANSW. NOT EQUT TO ARG.) TAD (-7+16 SNA JMP G /SUBTYPE G? (ANS. GREATER THAN ARG.) TAD (-14+7 SNA JMP L /SUBTYPE L? (ANS. LESS THAN ARG.) TAD (-23+14 SNA CLA JMP S /SUBTYPE S? (TASK PRIORITY ASSIGNMENT /WITHOUT SOURCE CODE) JMP ERR50 /SUBTYPE NOT FOUND; ERROR /IN SCRIPT BRN20, 0 JMP I BRN /RETURN AFTER SERVICING SAVE,0 /STORAGE FOR I-SUBTYPE ZERO, JMS ANUM CDF TABLE1 TAD I 11 /GET THE ANSWER IN QUESTION SNA CLA JMP IFLG JMP BRN17 /ANSWER ZERO? P, JMS ANUM CDF TABLE1 TAD I 11 SZA CLA JMP IFLG JMP BRN17 /ANSWER NOT EQUAL TO ZERO? E, JMS ANUM JMS NUMBER CDF TABLE1 CIA TAD IARG SNA CLA JMP IFLG JMP BRN17 /ANSWER EQUAL TO ARG? G, JMS ANUM JMS NUMBER CDF TABLE1 CIA TAD IARG SMA CLA JMP IFLG JMP BRN17 /ANSWER GREATER THAN ARG? L, JMS ANUM JMS NUMBER CDF TABLE1 CIA TAD IARG CIA SPA CLA JMP IFLG JMP BRN17 /ANSWER LESS THAN ARG? N, JMS ANUM JMS NUMBER CDF TABLE1 CIA TAD IARG SZA CLA /ANSWER NOT EQUAL TO ARG? JMP IFLG JMP BRN17 S, JMS ANUM CDF TABLE1 TAD I 11 /BACKUP TO ANSWER ENTRY IN TANS SNA CLA JMP BRN17 /TASK SELECTION IS INDICATED BY A 1 ENTRY, /MAKE A 2 TO FLAG TASK ROUTINES. /NO ACTION IF ENTRY IS ZERO. STA TAD 11 DCA 11 ISZ I 11 /INCREMENT TO TWO JMP BRN17 /NO OTHER ACTIONS PAGE ANUM, 0 /HERE TO CONVERT ASCII TO A NUMBER, /SETUP AUTOINDEX TO 11 FOR TEST CDF TABLE1 TAD RECLOC TAD OVRPTR /POINT TO BEGINNING OF BRANCH RECORD DCA ARGU CDF .FLD CIF UNP1 JMS I UNP /GO UNPACK STRING ARGU, 0 UNPACK-1 5 /ARGX IS POINTER TO SOURCE BUFFER /TARGET BUFFER IS UNPACK WORK AREA /ARG 5 FOR 10 UNPACKED OS/8 FORMATTED WORDS CDF TABLE1 CLA CLL CML RTL /SET AC=-2 TAD PCKPTR /GO PAST TYPE AND SUBTYPE DCA 11 CLA CLL CMA RTL /SET AC=-3 DCA TEMP2 /TWO NUMBERS TO FORM ANUM1, TAD (-4 DCA TEMP3 /THREE CHARACTERS MAXIMUM /PER NUMBER. DCA TEMP4 /INITIALIZE TEMP4 ANUM4, TAD I 11 SNA JMP ANUM2 /CHECK FIRST CHARACTER FOR A ZERO TAD (-254 SNA JMP ANUM2 /CHECK FOR COMMA TAD (-260+254 /ADD 254 MINUS 260 BASE /TO FORM NUMBER TAD TEMP4 /ADD PARTIAL NUMBER CLL RAL;RTL /CLEAR LINK AND SHIFT NUMBER LEFT DCA TEMP4 /FORM PART NUMBER ISZ TEMP3 /NUMBER FORMED? JMP ANUM4 /NO, GO GET NEXT CHARACTER ANUM2, TAD TEMP4 /HERE WHEN 3 CHARACTERS OR /COMMA ENCOUNTERED CLL RAR;RTR CDF .FLD NUM, DCA I NUM1 /ACCOUNT FOR UNNECESSARY SHIFT /AND SAVE IN WORK AREA ISZ NUM CDF TABLE1 ISZ TEMP2 JMP ANUM1 /CONTINUE UNTIL TWO NUMBERS ARE FORMED ANUM3, CLA TAD NUM3 DCA NUM /INITIALIZE NUM FOR NEXT CALL CDF .FLD TAD N1 CDF TABLE1 TAD ANSPTR DCA 11 /SETUP 11 TO POINT TO TEST QUESTION. CDF .FLD JMP I ANUM UNP,UNP1 /LINK TO THE OS/8 UNPACK ROUTINE NUM1, N1 /ANSWER NUMBER UNDER TEST NUM2, N2 /TARGET RECORD FOR BRANCH IF TEST IS TRUE ARG, IARG /ARGUMENT FOR CERTAIN BRANCH SUBTYPES NUM3, DCA I NUM1 /CALCULATED INSTRUCTION FOR ANUM1 LOOP NUMBER, 0 TAD (CIF CDF) RDF DCA ANU10 CDF TABLE1 TAD I 11 /HERE TO INTERPRET POINTERS TO TNUM DCA ARGX CDF .FLD CIF UNP1 JMS I UNP /GO UNPACK STRING ARGX, 0 UNPACK-1 5 /ARGX IS POINTER TO SOURCE BUFFER /TARGET BUFFER IS UNPACK WORK AREA CDF TABLE1 TAD PCKPTR DCA 11 ANU1, TAD (-4 DCA TEMP3 /FOUR CHARACTERS MAXIMUM /PER NUMBER. DCA TEMP4 /INITIALIZE TEMP4 ANU4, TAD I 11 SNA JMP ANU2 /CHECK FIRST CHARACTER FOR A ZERO TAD (-254 SNA JMP ANU2 /CHECK FOR COMMA TAD (-260+254 /ADD 254 MINUS 260 BASE /TO FORM NUMBER TAD TEMP4 /ADD PARTIAL NUMBER CLL RAL;RTL /CLEAR LINK AND SHIFT NUMBER LEFT DCA TEMP4 /FORM PART NUMBER ISZ TEMP3 /NUMBER FORMED? JMP ANU4 /NO, GO GET NEXT CHARACTER ANU2, TAD TEMP4 /HERE WHEN 3 CHARACTERS , ZERO, OR /COMMA ENCOUNTERED CLL RAR;RTR ANU10, 0 JMP I NUMBER /RETURN WITH NUMBER IN ACCUMULATOR IFLG, TAD N2 DCA CQUES ISZ IFLAG BRN17, DCA ARG JMP BRN20 N1,0 /TEST QUESTION NUMBER N2,0 /TARGET RECORD NUMBER IARG,0 /BRANCH ARGUMENT ERR50, TAD (50 CDF .FLD CIF ERR1 JMS I ER50 2 ER50,ERR1 /POINTER TO ERROR ROUTINE