ENT. /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="B&77^100+60 AC0004=CLA CLL IAC RTL AC100=CLA IAC BSW AC4000=CLA STL RAR ACM2=CLL CLA CMA RAL BSW=7002 XON="Q&277 XOFF="S&277 CDFXXX=HLT CDFIFX=HLT RECEIVE=03 TRANSMIT=RECEIVE+1 XMTSKP=TRANSMIT^10+6001 XMTLOD=TRANSMIT^10+6006 RECSKP=RECEIVE^10+6001 RECLOD=RECEIVE^10+6006 *0 7777 /BEGIN DEVICE CONTROL BLOCK FOR BUILD. DEVICE TTY DEVICE TTY 0000 ENTRY&177+4000 0000 0000 *200 RENTRY, ZEROSW, /WHEN CLEAR, BUFFER IS BEING ZEROED PRIOR TO EXIT. BUFRFD,CDFXXX ISZ RXSWITCH /IF -1, FUNCTION IS XMIT JMP RECV0 /INPUT /TRANSMIT ROUTINES. THERE ARE NO "ERROR CONDITIONS" FOR OUTPUT. ALL TERMINATION /WILL RETURN TO CALLER AT +5 (NORMAL EXIT) WITH THE C(AC)=0. POSSIBLE RETURN /CONDITIONS ARE: 1) BUFFER IS EMPTY; 2) ^Z WAS FOUND IN BUFFER. A ^C WILL /RETURN TO MONITOR AT 7600. XON/XOFF IS RECOGNIZED FOR THE OUTPUT DEVICE. XMIT1, ISZ WRDCNT JMP XMIT1A EXIT5, TAD ZEROSW SZA CLA ISZ ENTRY XITFLD,CDFIFX JMP I ENTRY XMIT1A,STL RTL RTL SPA JMP XMIT1B /FOR CHAR3 DCA CHAR3 TAD I BUF/TTY.PA TERMINAL HANDLER FOR DECmate /ORIGIN SERIAL.PA /COPYRIGHT (C) 1981, 1982 1984 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 DOCUMII /TO THE CALLING PROGRAM BUFFER. INPUT CHARACTERS ARE SCREENED FOR A /^Z, CR(LF), ^U AND RUBOUTS. ^Z IS THE ONLY CHARACTER THAT WILL CAUSE /AN "ERROR" EXIT. THERE ARE NO FATAL ERRORS. ^Z AND CR WILL ECHO CRLF, PAD /THE CALLING PROGRAM BUFFER WITH ZERO BEFORE EXITING. ^U WILL NOT BACK /UP PAST THE START OF BUFFER. IF ^U IS FOUND, THE BUFFER POINTER IS RESET /TO THE BEGINNING OF THE BUFFER, AND A CRLF ECHOED. SINCE ECHOING OF OUTPUT /CHARACTERS PASSES THROUGH THE OUTPUT PRINTING ROUTINES, ALL PRINTING CHARAC- /TERS ARE COUNTED. WHEN THE INPUT LINE LENGTH IS EXCEEDED, A CRLF WILL BE /ECHOED, BUT NOT INSERTED IN THE BUFFER. RECV0, TAD WRDCNT CLL IAC RAL /INPUT RETURNS 1 8BIT PER 1 12BIT WORD TO CALLER. DCA WRDCNT RECV1, TAD ZEROSW /WHEN ZERO, WE ARE PADDING USER BUFFER PRIOR TO EXIT. SZA CLA JMS I IDEVINPUT /GET A CHARACTER FROM INPUT. RECV1A,DCA I BUFRPT /RETURNS 8BIT ASCII. TAD I BUFRPT /USE THE CALLING BUFFER FOR TEMP STORAGE. TAD CHM377 /MINUS RUBOUT SNA JMP RECV2 /FOUND A RUBOUT. TAD ROMINZ /RUBOUT-^Z (177-32) SNA JMP RECV4 /CONTROL Z TAD ZMINU /^Z-^U (32-25) SNA JMP RECV5 /CONTROL U. JMP INSTRUCTION IS ALSO THE "U" TO PRINT! TAD UMINCR /^U-CR (25-15) SNA CLA JMP RECV6 /CARRIAGE RETURN RECV9, TAD I BUFRPT JMS I IXMIT /ECHO CHARACTER ISZ BUFRPT ZMINU, 32-25 ISZ WRDCNT JMP RECV1 /FOR THE NEXT JMP EXIT5 RECV4, DCA ZEROSW /CONTROL Z WILL EXIT AT CALL +4 TAD CH336 JMS I IXMIT AC100 JMP RECV9 CH325, RECV5, TAD CH336 /CONTROL U JMS I IXRPT JMS I IXMIT TAD I BUFRPT ISZ BUFRPT 7400 /SERVES AS A NOP TO PROTECT ISZ AND .-1 CLL RAL TAD CHAR3 JMP XMIT1A+1 XMIT1B,JMS I IXMIT JMP XMIT1 /FOR ANOTHER PASS BACKSPACE, UMINCR,25-15 CDFCIF,CDF CIF 0 K3700, 3700 IXMIT, XMIT2-PAGE2 IDOCRLF,DOCRLF-PAGE2 IDEVINPUT,DEVINPUT-PAGE2 /INPUT ROUTINES. ACCEPTS INPUT FROM THE DEVICE AND RETURNS 8-BIT ASCFFER TAD BUFRPT JMP RECV5B WRDCNT, 0 K70, 70 BUFRAD, 0 BUFRPT, 0 RXSWITCH, CHAR3, 0 ROMINZ,177-32 /RUBOUT-^Z CHM377,-377 /MINUS 8BIT ASCII RUBOUT. / TRAILING DATA BLOCK FOR HANDLER CALL: / WORD 1 FUNCTION WORD _ _ _ ! _ _ _ ! _ _ _ ! _ _ _ / ! \ / FIELD UNUSED / 4000= WRITE DOUBLE OF IN / 0000= INPUT WORDS ^100 BUFFER OS/78 / WORD 2 ADDRESS OF BUFFER / WORD 3 STARTING BLOCK. IF 0, MAY DO SPECIAL INIT ROUTINES; / OTHERWISE IS IGNORED FOR THIS HANDLER / WORD 4 ERROR. IF AC IS POSITIVE, ERROR IS NOT CONSIDERED FATAL. / WORD 5 NORMAL RETURN. AC IS 0. ENTRY, VERSION AC4000 /FORCE THE WRITE (OUTPUT BIT) INTO THE LINK IF TAD I ENTRY /PRESENT WHEN GETTING THE FUNCTION WORD. MUST BE AND K70 /PRESERVED WHILE FETCHING REST OF DATA BLOCK. TAD CDF0 DCA BUFRFD /GET THE FIELD OF THE BUFFER SZL STA DCA RXSWITCH /0=RECEIVE; -1=XMIT TAD K3700 /AND THE "DOUBLE WORDS". FOR OUTPUT, WILL REPRESENT AND I ENTRY /2 PACKED WORDS OF 3 ASCII CHARS. IF INPUT, WILL BE CMA /DOUBLED TO COUNT 1 8BIT CHARACTER FOR EACH 12BIT WORD. /NOTE: OS/MIT TAD CH325 /MAKES A PRINTABLE "U" JMS I IXMIT RECV5A,JMS I IDOCRLF TAD BUFRAD RECV5B,DCA BUFRPT /RESET POINTER TO START OF BUFFER JMP RECV1 /FOR A NEW LINE. RECV6, ISZ ENTRY /SINCE A "CLEAR" ZEROSWITCH WON'T BUMP IT FOR EXIT. DCA ZEROSW TAD I BUFRPT JMS I IXMIT /FOR THE CR. ISZ BUFRPT 212 /(LINEFEED; USED TO PROTECT ISZ) TAD .-1 ISZ WRDCNT JMP RECV1A /OTHERWISE, INSERT THE LINE FEED, AND PROCEED NORMALLY. JMP EXIT5 /IF COUNT OVERFLOWS, WILL STILL EXIT AT +5 WITH C(AC)=0. RECV2, TAD BACKSPACE JMS I IXMIT CH336, TAD SPACE JMS I IXMIT TAD BACKSPACE JMS I IXMIT TAD BUFRPT CIA TAD BUFRAD /IF BUFFER IS PAST START SNA CLA JMP RECV5A /DO CRLF AND RESET ALL, SPACE, CMA /ELSE JUST BACK UP THE POINTER TO THE BU ADJUSTMENT PAGE /PROCEDURE FOR ADJUSTING THE ABSOLUTE ADDRESSES OF INDIRECT LOCATIONS: /THIS HANDLER IS ASSEMBLED WITH A STARTING LOCATION OF 200. THIS IS PARTLY /ARBITRARY AND PARTLY BECAUSE OF THE REQUIREMENTS OF THE BUILD PROGRAM. /A "MARK" IS ESTABLISHED TO BE USED DURING ASSEMBLY TIME TO SET THE VALUE /OF THE INDIRECT ADDRESS POINTERS TO THE RELATIVE DIFFERENCE BETWEEN THE /POINTER AND THE ROUTINE REQUESTED. FOR CONVENIENCE, THIS MARKER IS CALLED /"PAGE2" AND IS ESTABLISHED AT THE TOP OF THE SECOND PAGE. THE ADJUSTMENT /ROUTINE FINDS THE BASE ABSOLUTE ADDRESS FROM THE "JMS ." THEN ADDS IT /TO THE THE VALUE IN "DIFFTABLE". THE CONTENTS OF DIFFTABLE ARE THE /RELATIVE DIFFERENCES BETWEEN PAGE2 AND THE INDIRECT ADDRESS POINTERS TO /BE MODIFIED. THIS DIFFERENCE PLUS THE BASE ABSOLUTE ADDRESS FORMS AN /ABSOLUTE POINTER TO THE ADDRESS TO BE MODIFIED. THE CONTENTS OF THE AD- /DRESS TO BE MODIFIED IS ALSO THE RELATIVE DIFFERENCE BETWEEN THE MARK /AND THE ADDRESS DESIRED. USING THE TEMPORARY ABSOLUTE POINTER, THIS DIF- /FERENCE IS ADDED TO THE BASE ADDRESS THEN RESTORED TO THE INDIRECT /POINTER AS AN ABSOLUTE VAL8 ROUTINES CAN REQUEST THE PROCESSING OF A /NULL BUFFER (ZERO DOUBLE WORDS). IF SOME SPECIAL /ACTION IS REQUIRED, E.G. WRITING EOF OR DOING FORM /FEED, THE WORD COUNT WILL BE ZERO. THIS HANDLER MAY /OR MAY NOT HAVE SPECIAL FUNCTIONS, DEPENDING UPON /ASSEMBLY SPECIFICATIONS. DCA WRDCNT ISZ ENTRY TAD I ENTRY /GET THE STARTING ADDRESS OF THE BUFFER. DCA BUFRAD TAD BUFRAD DCA BUFRPT /WILL HAVE CURRENT POSITION OF USER'S BUFFER. ISZ ENTRY /SKIP THE BLOCK NUMBER (THIS IS NON-FILE STRUCTURED) ISZ ENTRY /AND LEAVE RETURN POINTING TO ERROR. RDF /DATA FIELD IS SET TO CALL; INSTRUCTION FIELD IS HERE. TAD CDFCIF DCA XITFLD /WHEN EXITING, IF/DF IS SET TO CALLING ROUTINE. CDF0, CDF 0 /FALL THRU TO NEXT PAGE FOR INDIRECT ADDRESS-PAGE2 /KEEP "INNER" AND "OUTER" TOGETHER BECAUSE XMIT3, IEXIT5-PAGE2 /"SET [DEV] PAUSE N" FINDS "ISZ INNER" FROM HERE. XOFFLAG,IRENTRY-PAGE2 /-1 SAYS OFF CONDITION EXISTS /ALSO TERMINATOR FOR DIFFTABLE. XMIT2, 0 /SCREEN CHARACTER BEFORE OUTPUT AND (177 TAD (200 DCA XMIT3 /SAVE CHARACTER. XMIT2B, JMS DEVIN1 /CHECK DEVICE FOR XON/OFF SNA JMP XMIT2D /NO FLAG TAD (-203 SNA JMP MONXIT TAD (203-XON SNA JMP XMIT2A TAD (XON-XOFF SNA CLA JMP XMIT2C /SET XOFF FLAG XMIT2D,ISZ XOFFLAG /WORKING ON XOFF ALREADY? JMP XMIT2A /NO. IGNORE THE INPUT XMIT2C,STA /[RE]SET THE FLAG DCA XOFFLAG JMP XMIT2B /AND KEEP LOOKING. XMIT2A,DCA XOFFLAG /KEEP CLEARED WHEN NOT WORKING ON XOFF. TAD XMIT3 TAD (-233 SNA JMP XMIT8 /FOR ESCAUE. ENTRY1,NOP /GETS JMP I IRENTRY AFTER INIT. PAGE2A,JMS . /TO FIND OUT WHERE WE ARE. LEAVE 2A SO WE CAN MOVE. PAGE2, ADJUST,TAD DIFFTABLE SNA JMP ALLSET TAD PAGE2A /AS THE BASE. DCA TEMPOINT TAD I TEMPOINT TAD PAGE2A DCA I TEMPOINT ISZ ADJUST JMP ADJUST XMIT8, TAD (11 /MAKES THIS LOCATION NOP-ABLE TO OUTPUT TRUE ESCAPE. JMP XMIT4 XMIT9, ISZ WIDTH JMP XMIT4 /NOT EXCEEDED JMS DOCRLF XMIT9A,TAD RWIDTH /RESET WIDTH DCA WIDTH ISZ DEPTH JMP XMIT4 /PAGE NOT EXCEEDED. ISZ INNER /GETS "JMP XMIT4" FROM "SET [DEV] NO PAUSE" JMP .-1 ISZ OUTER JMP .-3 TAD ROUTER DCA OUTER /RESET OUTER COUNTER BEFORE GOING TAD RDEPTH DCA DEPTH JMP XMIT4 /TO OUTPUT THE NEXT PAGE. ROUTER,-200 /ARBITRARY. THE RXXXXX LOCATIONS GET MODIFIED FROM SET. DECIMAL WIDTH, -81 /-WIDTH+1 RWIDTH, -81 DEPTH, -24 RDEPTH, -24 OCTAL XMIT6, 0 XMTLOD XMTSKP JMP .-1 OS8MON, 7600 /USE A GROUP 2 CLA TO GET THE MONITOR RETURN POINT. JMP I XMIT6 IEXIT5, EXIT5-PAGE2 IRENTRY,RENTRY-PAGE2 DIFFTA, IXMIT-PAGE2 INNER, IDOCRLF-PAGE2 /THESE DO DOUBLE DUTY AS ONE-TIME POINTERS. OUTER, IDEVINPUT/BATV4 OS78 V4 BATCH HANDLER /ADAPTED FROM: /1 BATCH INPUT STREAM HANDLER / / / / / / / / / /COPYRIGHT (C) 1974,1975 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 CPE IAC SNA JMP I IEXIT5 /FOR CONTROL Z PROCESSING FROM OUTPUT SIDE ONLY. TAD (32-15 /^Z MINUS CR SNA JMP XMIT9A /TO RESET WIDTH AND COUNT FOR DEPTH TAD (15-03 /CHECK FOR ^C FOUND ON INPUT SIDE FROM NON-CONSOLE. SNA CLA JMP MONXIT JMP XMIT9 /COUNT PRINTING CHARACTERS FOR WIDTH XMIT4, TAD XMIT3 /HERE TO JMS XMIT6 JMP I XMIT2 ALLSET,TAD .+2 DCA ENTRY1