ASMB,X,L,C * * * FILE NAME: %LP31 (RELOCATABLE) &LP31 (SOURCE) * BINARY: 92062-16003 * SOURCE: 92062-18009 * NAM LPCON,7 92062-16003 REV. 1805 5-19-77 * * CONSTANT DEFINITION AND TEMPORARAY STORAGE * .A. EQU 0 .B. EQU 1 ENT LPCON EXT .ENTR EXT .MPY EXT .DST EXT EXEC BUFFR BSS 245 LEN BSS 1 DTYPE BSS 1 BAL OCT 057400 BAR OCT 000137 TEMP BSS 1 DEFLT OCT 015532 OCT 015446 OCT 062100 OCT 015463 OCT 015450 OCT 040033 OCT 024501 OCT 015446 OCT 065460 OCT 051433 OCT 023154 OCT 033104 NCHR OCT 000030 DCNT OCT 000014 R BSS 2 M1 OCT 177777 M9 OCT 177767 B11 OCT 000011 BPNTR DEF BUFFR LESC OCT 015400 PNTR BSS 1 CNT BSS 1 I BSS 1 .1 OCT 000001 .240 OCT 000360 M241 OCT 177417 ESC3 OCT 015463 .2 OCT 000002 CRSP OCT 006440 SPSP OCT 020040 M5 OCT 177773 ONECR OCT 030415 .4 OCT 000004 ESC1 OCT 015461 .3 OCT 000003 CRLFT OCT 006400 M3 OCT 177775 B130 OCT 000130 M2 OCT 177776 B50 OCT 000050 B40K OCT 040000 B51 OCT 000051 .5 OCT 000005 B46 OCT 000046 LDC OCT 062103 .6 OCT 000006 LK0 OCT 065460 SLFT OCT 051400 .7 OCT 000007 LL0 OCT 066060 DLFT OCT 042000 .8 OCT 000010 DFPTR DEF DEFLT B1652 OCT 001652 CHAN BSS 1 B37 OCT 000037 EQT BSS 1 B77 OCT 000077 B17 OCT 000017 B1650 OCT 001650 CMDW BSS 1 B12 OCT 000012 B2K OCT 002000 MLEN BSS 1 BM.5K OCT 177400 XTEM BSS 1 B377 OCT 377 TFLAG NOP SKP * THIS SUBROUTINETAKES SIMPLE COMMANDS FROM CALLING PROGRAM * AND CONVERTS THEM TO ESCAPE SEQUENCES TO CONTROL THE AUXIALLARY * FUNCTIONS OF THE 2631A NOT SUPPORTED BY DVA12. * * * * * * CALLING SEQUENCE FOR THE SUBROUTINE IS * CALL LPCON(LU,CODE,DATA) * * WHERE CODE IS AN INTEGER SPECIFYING FUNCTION * LU IS THE LOGICAL UNIT NUMBER OF THE DEVICE * DATA IS THE PROPER DATA FOR THE CODE * SKP * LEGAL VALUES FOR CODE AND DATA ARE * * CODE DATA ACTION * !-------------------------------------------! * ! 1 +N SET TAB AT ! * ! COLUMN N ! * ! 1 -N CLEAR TAB AT ! * ! COLUMN N ! * ! 1 0 CLEAR ALL TABS ! * ! ! * ! 2 1 ENABLE DISPLAY ! * ! FUNCTIONS ! * ! 2 2 DISABLE DISPLAY ! * ! FUNCTIONS ! * ! 3 0 SELECT PRIMARY CHAR ! * ! SET 0 ! * ! 3 1 SELECT PRIMARY CHAR ! * ! SET 1 ! * ! 4 0 SELECT SECONDARY CHAR ! * ! SET 0 ! * ! 4 1 SELECT SECONDARY CHAR ! * ! 5 0 DISABLE UNDERLINING ! * ! ! * ! 5 1 ENABLE UNDERLINING ! * ! ! * ! 6 0 PRINT NORMAL SIZE ! * ! ! * ! 6 1 PRINT EXPANDED SIZE ! * ! ! * ! 6 2 PRINT COMPRESSED ! * ! ! * ! 7 0 SELECT 12 LINES PER IN. ! * ! ! * ! 7 1 SELECT 1 LINE PER IN. ! * ! ! * ! 7 2 SELECT 2 LINES PER IN. ! * ! ! * ! 7 3 SELECT 3 LINES PER IN. ! * ! ! * ! 7 4 SELECT 4 LINES PER IN. ! * ! ! * ! 7 6 SELECT 6 LINES PER IN. ! * ! ! * ! 7 8 SELECT 8 LINES PER IN. ! * ! ! * ! 8 - SET PRINTER TO 6 LPI, ! * ! NORMAL PRINT, PRIMARY ! * ! SET 0, SECONDARY SET 1 ! * ! DISABLE DISPLAY FUNC., ! * ! DISABLE UNDERLINING ! * ! CLEAR ALL TABS ! * !-------------------------------------------! * * SKP LU NOP CODE NOP DATA NOP LPCON NOP JSB .ENTR DEF LU CLA CLEAR TAB FLAG STA TFLAG LDA CODE,I CHECK TO SEE IF ADA M1 CODE IS WITHIN LDB CODE,I BOUNDS ADB M9 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA,RSS IS CODE IN BOUNDS JMP OKB YES, GO ON LDA B11 NO, SET ERROR FLAG STA CODE,I JMP REJCT TELL THE CALLING PROGRAM OKB LDA LESC INITIALIZE THE BUFFER STA BPNTR,I * * SET AND CLEAR TABS * LDA CODE,I IS CODE = 1? CPA .1 RSS YES, SET UP TAB COMMAND JMP CH2 NO, LOOK AT NEXT VALUE LDA DATA,I PICK UP DATA VALUE ADA .240 IS IT WITHIN LDB DATA,I LEGAL BOUNDS ADB M241 (LEGAL = -2400 CMA,INA SSA,RSS ? JMP SKP1 NO, SKIP BUFFER FILL CLA,INA SET LOOP INDEX STA I TO ONE JMP FILL AND START TO FILL BUFFER LP1 LDA I INCREMENT COUNTER INA STA I FILL CMA,INA CHECK TO SEE ADA CNT IF WE ARE DONE SSA ? JMP SKP1 YES, EXIT LOOP LDA I CALCULATE STORAGE LOCATION ADA BPNTR LDB SPSP AND STORE SPACES IN IT STB .A.,I JMP LP1 LOOP BACK SKP1 LDA PNTR IS POINTER = 0 SZA ? JMP SKP2 NO, LEAVE EXTRA SPACE LDA CNT YES, TURN LAST SPACE INTO ESCAPE ADA BPNTR FIND ADDRESS OF LAST SPACE LDB .A.,I PICK UP VALUE ADB M5 MAKE AN ESCAPE STB .A.,I PUT IT BACK LDB LEN PICK UP CLEAR FLAG BLF,BLF ROTATE INTO POSITION ADB ONECR MAKE TAB COMMAND INA IN THE ARRAY STB .A.,I LDA DATA,I SET THE MESSAGE LENGTH ADA .4 AND STORE STA LEN FOR OUTPUT JMP OUT GO TO OUTPUT SKP2 LDA ESC1 SET UP TAB COMMAND ADA LEN LDB CNT AND STORE FOR OUTPUT INB ADB BPNTR STA .B.,I LDA CRLFT APPEND CARRIAGE RETURN INB STA .B.,I AND SAVE IN BUFFER LDA DATA,I SAVE OUTPUT COUNT ADA .4 STA LEN JMP OUT GO OUTPUT IT CH2 LDA CODE,I CHECK FOR A CODE OF 2 CPA .2 IS IT 2 RSS YES,SET UP DISPLAY FUNCTIONS JMP CH3 NO, GO CHECK FOR 3 LDA DATA,I IS DATA VALID ADA M1 I.E. EITHER 1 OR 2 LDB DATA,I ADB M3 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA ? JMP REJCT NO, GO TELL CALLING PROGRAM LDA B130 YES, CONSTRUCT ESCAPE SEQUENCE ADA DATA,I IOR BPNTR,I STA BPNTR,I SAVE FOR OUTPUT LDA .2 SET LENGTH STA LEN FOR OUTPUT JMP OUT GOT OUTPUT LINE CH3 LDA CODE,I CHECK FOR CODE = 3 CPA .3 IS IT EQUAL RSS YES, SET UP PRIMARY CHARACTER SET COMMAND JMP CH4 NO,CHECK FOR 4 LDA DATA,I CHECK FOR DATA WITHIN BOUNDS LDB DATA,I ADB M2 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA IS IT IN BOUNDS JMP REJCT NO, GO TELL CALLING PROGRAM LDA BPNTR,I YES, SET UP COMMAND IOR B50 STA BPNTR,I LDA DATA,I CONSRUCT SET SELECTION ALF,ALF ADA B40K LDB BPNTR SAVE IT FOR OUTPUT INB STA .B.,I LDA .3 SET MESSAGE LENGTH STA LEN AND SAVE JMP OUT GO OUTPUT IT CH4 LDA CODE,I IS IT A 4 CPA .4 RSS YES, LOOKS GOOD JMP CH5 NO, GO CHECK FOR 5 LDA DATA,I IS DATA WITHIN BOUNDS LDB DATA,I ADB M2 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA CHECK IT JMP REJCT NO, GO TELL THE WORLD LDA BPNTR,I YES, SET UP COMMAND IOR B51 STA BPNTR,I AND SAVE IT LDA DATA,I CONSTRUCT SET COMMAND ALF,ALF ADA B40K LDB BPNTR AND SAVE IT INB STA .B.,I LDA .3 SET UP COUNT VALUE STA LEN AND SAVE IT JMP OUT GO OUTPUT IT CH5 LDA CODE,I LET'S CHECK FOR 5 CPA .5 ? RSS YEP, SET UP UNDERLINE COMMAND JMP CH6 NO, GO CHECK FOR 6 LDA DATA,I IS DATA WITHIN BOUNDS LDB DATA,I ADB M2 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA WELL IS IT JMP REJCT NO, GO TELL THE WORLD LDA BPNTR,I YES, SET UP COMMAND IOR B46 STA BPNTR,I LDA LDC SET REST OF COMMAND ADA DATA,I IN BUFFER LDB BPNTR INB STA .B.,I LDA .4 SET UP COUNT STA LEN FOR OUTPUT JMP OUT GO DUMP IT CH6 LDA CODE,I LET'S LOOK FOR 6 CPA .6 IS IT? RSS YES, SET UP PRINT SIZE JMP CH7 NO, GO LOOK AT 7 LDA DATA,I IS DATA WITHIN BOUNDS LDB DATA,I ADB M3 SSB CLB,RSS CCB SSA,RSS CLA,RSS CCA IOR .B. SZA WELL IS IT JMP REJCT NO, GO TELL THE WORLD LDA BPNTR,I YES, SET UP SIZE COMMAND IOR B46 STA BPNTR,I AND SAVE IT LDA LK0 SET SECOND WORD ADA DATA,I LDB BPNTR INB STA .B.,I AND STORE IT INB LDA SLFT SET THIRD WORD STA .B.,I AND STORE IT LDA .5 SET COUNT STA LEN AND STORE IT JMP OUT OUTPUT IT CH7 LDA CODE,I CHECK FOR 7 CPA .7 IS IT RSS YES, SET IT UP JMP CH8 NO, GO CHECK FOR 8 LDA DATA,I IS DATA IN BOUNDS LDB DATA,I CPB .5 CCB,RSS CLB SSA,RSS CLA,RSS CCA IOR .B. LDB DATA,I CPB .7 CCB,RSS CLB IOR .B. LDB DATA,I ADB M9 SSB CLB,RSS CCB IOR .B. SZA IS IT JMP REJCT NO, GO TELL THE WORLD LDA BPNTR,I YES, SET UP LINE DENSITY COMMAND IOR B46 STA BPNTR,I SAVE IT LDA LL0 PICK UP SECOND WORD ADA DATA,I SELECT WHICH ONE LDB BPNTR INB STA .B.,I SAVE IT LDA DLFT PICK UP THIRD WORD INB STA .B.,I SAVE IT LDA .5 SAVE LENGTH STA LEN JMP OUT OUTPUT IT CH8 LDA CODE,I ARE WE AT 8 CPA .8 RSS YES SET DEFAULT JMP OUT NO GO AWAY CLA,INA INITILIZE COUNTER STA I LDA DFPTR SET UP DEFAULT POINTER STA PNTR LDB BPNTR INITIALIZE BUFFER POINTER JMP XFR START TRANSFER LP5 LDA I INCREMENT COUNTER INA STA I XFR LDA I CMA,INA ARE WE THROUGH ADA DCNT SSA JMP SLN YES, SET LENGTH AND EXIT LDA PNTR,I PICK UP DEFAULT VALUE STA .B.,I AND SAVE IN BUFFER ISZ PNTR MOVE POINTERS INB JMP LP5 GO FINISH SLN LDA NCHR SET COUNT STA LEN OUT LDA LEN CALCULATE WORD COUNT ARS,ALS CHECK FOR ODD COUNT CMA,INA ADA LEN STA CNT SAVE ODD-EVEN FLAG LDA LEN CALCULATE WORD COUNT ARS DIVIDE BY 2 STA TEMP SAVE FOR FUTURE USE LDA B1652,I FIND DEVICE TYPE AND CHANNEL STA PNTR ADA LU,I FIND DRT ENTRY ADA M1 STA PNTR SAVE POINTER TO DRT ENTRY LDA PNTR,I PICK UP DRT ENTRY ALF,RAL SELECT SUBCHANNEL AND B37 AND MASK IT OFF STA CHAN SAVE IT FOR LATER LDA PNTR,I PICK UP DRT WORD AGAIN AND B77 MASK OF EQT NUMBER STA EQT AND SAVE FOR LATER CCA CALULATE EQT LOCATION ADA EQT JSB .MPY DEF B17 ADA B1650,I ADD IN EQT STARTING ADDRESS ADA .4 LOOK AT 5TH WORD STA PNTR AND SAVE ADDRESS LDA PNTR,I PICKUP UP EQT WORD 5 ALF,ALF SELECT DEVICE TYPE AND B77 AND ISOLATE IT STA DTYPE AND SAVE FOR FUTURE REFERENCE LDA LU,I SET COMMAND WORD FOR EXEC CALL STA CMDW AND SAVE LDA DTYPE CHECK DEVICE TYPE CPA B12 IS IT TYPE 12 RSS YES, SELECT HONESTY MODE JMP CH12 NO,GO CHECK FOR ANOTHER TYPE LDA B2K PICKUP HONESTY BIT ADA LU,I ADD LU STA CMDW AND SAVE COMMAND WORD CH12 LDA DTYPE CHECK DEVICE TYPE FOR CHARRIAGE SUPPRESSION LDB DTYPE STA MLEN LDA CHAN SZA IS SUBCHANNEL = 0 CLA,RSS NO, FAIL TEST CCA YES, PASS TEST CPB .5 IS THIS TYPE 5 CCB,RSS YES, PASS TEST CLB NO, FAIL TEST AND .B. BOTH TRUE? LDB MLEN KEEP CHECKIN SZB,RSS DEVICE TYPE 0? CCB,RSS YES, PASS TEST CLB NO, FAILS TEST IOR .B. DEVICE TYPE 0 OR DEVICE TYPE 5 SUBCHANNEL 0 LDB DTYPE ONE MORE CHECK CPB B37 LET'S CHECK FOR DEVICE TYPE 37 CCB,RSS YES, THAT'S FINE CLB NO, FORGET IT IOR .B. ANY ONE OF THE 3 SZA,RSS CHECK TO SEE IF IT IS JMP VAL NO, GO CHECK FOR VALID TYPE AT ALL LDA CNT DO WE HAVE CPA .1 AND ODD COUNT RSS YES, PUT BACK ARROW IN RIGHT BITE JMP ABA NO, APPEND BACK ARROW LDB TEMP PICK UP BUFFER ADDRESS ADB BPNTR ADD BUFFER BASE ADDRESS LDA .B.,I PICK UP CURRENT VALUE AND BM.5K MASK OFF LOWER BITE ADA BAR PUT ON BACKARROW STA .B.,I SAVE BACK IN BUFFER LDA LEN INCREMENT LENGTH TO REFLECT ADDITION INA STA LEN AND SAVE JMP RITE GO OUTPUT IT ABA LDA TEMP SET BACK ARROW ADA BPNTR INTO BUFFER LDB BAL FOR CARRIAGE STB .A.,I CONTROL LDA LEN AND INCREMENT INA LENGTH TO REFLECT STA LEN ADDITION JMP RITE GO WRITE IT OUT VAL LDA DTYPE LET'S SEE LDB DTYPE IF WE HAVE STA XTEM A VALID DEVICE AT ALL LDA CHAN CHECK FOR TYPE 5 SUB CHANNEL CPA .4 4 OR CCA,RSS TYPE 12 CLA CPB .5 CCB,RSS IT'S A 5 CLB AND .B. IF WE HAVE ALL ONES LDB XTEM IT'S A 5-4 CPB B12 OTHERWISE IT'S GOT CCB,RSS TO BE A 12 CLB IOR .B. OR WE ARE NOT TALKING SZA HOW DID WE DO? JMP RITE ALL RIGHT GO OUTPUT IT LDA B11 TO BAD FLAG IT NO-CAN-DO STA CODE,I AND TELL THE WORLD JMP REJCT RITE LDA TFLAG PICK UP TAB FLAG SSA,RSS IS IT SET? JMP NORM NO, GO DO THINGS NORMALLY LDA CHAN YES, WHAT INTERFACE ARE WE USING CPA .4 SUBCHANNEL 4 CCA,RSS YES, SET A REGISTER CLA NO, RESET A REG. LDB DTYPE DEVICE TYPE 5? CPB .5 LET'S LOOK CCB,RSS YES, SET B CLB NO, RESET B AND .B. ARE BOTH SATISFIED? SZA,RSS EITHER ONE HERE? JMP NORM NO, GO DO THE NORMAL THING LDA BPNTR,I YES, CLEAR INITIAL CARRIAGE RETURN AND B377 STA BPNTR,I AND SAVE IT BACK JSB EXEC NO, PUT CR OUT TO DVRO5 SUB 4 DEF *+5 DEF .2 DEF CMDW DEF CRLFT DEF M1 JMP NORM NORM LDA LEN SET UP THE WRITE COUNT CMA,INA STA MLEN AND SAVE IT JSB EXEC GO WRITE IT OUT DEF *+5 DEF .2 DEF CMDW DEF BUFFR DEF MLEN JSB .DST LOOK AT THE TRANSMISSION LOG DEF R CLA SET NORMAL COMPLETION STA CODE,I INTO CODE VALUE JMP LPCON,I AND GO BACK REJCT LDA CODE,I SET REJECTION CODE CMA,INA COMPLEMENT IT STA CODE,I AND SEND IT BACK JMP LPCON,I GO TELL THEM THEY BLEW IT END