File PALIB.WU

Directory of image this file is from
This file as a plain text file




                          NETWORK SUBROUTINE LIBRARY                          _______ __________ _______


                             RDBUF (READ A BUFFER)                             _____ _____ _ _______


     SUBROUTINE  TO  READ  A  LINE  FROM  THE  TERMINAL AND BUFFER IT.
RESPONDS TO CTRL/U AND RUBOUT.  THE DELETED CHARACTERS ARE ECHOED, FOR
CONVENIENCE  OF USER.  TYPING A CARRIAGE RETURN ENDS ROUTINE AND SENDS
CONTROL BACK TO THE  CALLING  MODULE  (SEE  CALLING  SEQUENCE  BELOW).
THERE  ARE  TWO SUPPLEMENTARY ROUTINES WHICH CAN BE USED IN PROCESSING
YOUR BUFFER: FNDNB (FIND THE NEXT NON-BLANK  CHAR)  AND  KNUM  (CREATE
OCTAL EQUIVALENT OF DECIMAL NUMBER).  

     THE USER NEEDS TO INITIALIZE TWO VARIABLES:  

     IKBUF---ADDRESS  TO  START  OF  BUFFER AREA FAILURE TO INITIALIZE
THIS VARIABLE WILL WIPE OUT PAGE ZERO.  

     KBUFL---BUFFER  LENGTH,  A  POSITIVE  OCTAL  VALUE   FAILURE   TO
INITIALIZE  WILL  DEFAULT  BUFFER LENGTH TO 10000 (OCTAL).  THIS, TOO,
WOULD PROBABLY BE CATASTROPHIC FOR THE USER.  



CALLING SEQUENCE:
        RDBUF   /RDBUF= JMS I XRDBUF
        JMP AGN /LINE DELETE OR BUFFER OVERFLOW - RETYPE INTRO
        JMP NUL /ONLY <CR> TYPED
        ...     /NORMAL EXIT, XR1 POINTS TO BEGINNING OF BUFFER,
                /i.e. XR1 POINTS TO FIRST NON-BLANK CHAR IN BUFFER.
                /COUNT=   OF CHARACTERS READ.

EXAMPLE: READ,  RDBUF           /READ STRING FROM TTY
                JMP READ        /USER KILLED LINE, OR HAS OVERFLOWN
                                /BUFFER, ALLOW RE-ENTRY
                JMP READ        /USER ENTERED ONLY <CR>, ALLOW
                                /ENTRY OF ANOTHER LINE.
                ...             /PROCESS THE ENTERED LINE

NORMALLY, BEFORE RETURNING TO ALLOW THE USER TO
ENTER ANOTHER LINE, YOU MIGHT WANT TO DEFAULT SOME MESSAGES
TO LET USER KNOW WHAT HAS HAPPENED, SO THAT MAYBE IT WILL
NOT BE REPEATED.

GLOBAL VARIABLES: CHAR COUNT IKBUF KBUFL XPONT
LOCATIONS USED: 90

ROUTINES USED: MSG CRLF TYPE FNDNB










PAGE 2 NETWORK SUBROUTINE LIBRARY CONMSG (PRINT A CONDITIONAL MESSAGE) ______ ______ _ ___________ ________ THIS ROUTINE WILL MATCH A VALUE IN THE AC AGAINST A TABLE GIVING POSSIBLE VALUES AND THEIR CORRESPONDING MESSAGE POINTERS. IF THE VALUE IS NOT FOUND IN THE LIST, THE MESSAGE POINTED TO BY WHAT IS PRINTED. IT IS UP TO THE USER TO SUPPLY THIS MESSAGE. IF NOT SUPPLIED, IT IS DEFAULTED TO BE ERROR. THIS ROUTINE IS VERY USEFUL FOR ERROR MESSAGE PRINTOUT, OR OTHER HELPFUL MESSAGES. NOTE: NO CARRIAGE RETURN - LINE FEED IS PRINTED. CALLING SEQUENCE: TAD VALUE TO BE SEARCHED JMS TEST TABLE /ADDRESS OF TABLE ... /RETURNS HERE TABLE, -V1; MSG1 /IF AC=V1, PRINT MSG1 -V2; MSG2 /IF AC=V2, PRINT MSG2 ... / ETC. 0; MSGN /END OF LIST /USE .-1 FOR MSGN FOR NO ZERO MESSAGE LOCATIONS USED: 50 ROUTINES USED: MSG KNUM (GET A NUMBER) ____ ____ _ _______ GETS A DECIMAL NUMBER FROM THE INPUT BUFFER. ASSUMES THAT RDBUF OR SOME SIMILAR ROUTINE WAS CALLED BEFORE COMING HERE. ALL BUFFER POINTERS AND COUNTERS MUST BE SETUP IN RDBUF FASHION. XR1 SHOULD BE A PAGE ZERO POINTER TO THE BEGINNING OF THE BUFFER, I.E. IT SHOULD POINT TO THE FIRST NUMBER IN THE SEQUENCE. THE VARIABLE NUM IS SET TO THE NUMBER, AND CHAR IS SET TO THE FINAL CHARACTER CHECKED. IF CHAR=0 THEN THERE WERE NO ILLEGAL CHARACTERS, I.E. THE END OF THE BUFFER WAS FOUND FOLLOWING THE NUMBER. CALLING SEQUENCE: JMS KNUM /KNUM CALLED ... /NUMBER IN AC /NO ERROR RETURN /STOPS ON FIRST NON-NUMERIC CHAR GLOBAL VARIABLES: NUM CHAR XPONT LOCATIONS USED: 32
PAGE 3 NETWORK SUBROUTINE LIBRARY KTST (TEST THE KEYBOARD) ____ _____ ___ _________ THIS ROUTINE WILL CHECK FOR A POSSIBLE RESPONSE FROM KEYBOARD. THE COMMON APPLICATION OF THIS ROUTINE IS TO PERIODICALLY CHECK FOR INTERRUPT CHARACTERS, LIKE CONTROL C. IF NO CHARACTER HAS BEEN TYPED, THE ROUTINE EXITS NORMALLY. IF ANYTHING HAS BEEN TYPED, HOWEVER, THE CHARACTER IS READ, WHICH CLEARS THE FLAG, AND CHECKED AGAINST THE TABLE. TABLE FORMAT IS OUTLINED IN DOCUMENTATION OF TEST CALLING SEQUENCE: KTST TABLE /POINTER TO TABLE ... /RETURNS HERE ON NO RESPONSE ROUTINES USED: TEST LOCATIONS USED: 10 MSGC (PRINT A MESSAGE FOLLOWED BY CR-LF) ____ ______ _ _______ ________ __ ______ TYPE THE STRING OF SIX BIT PACKED CHARACTERS POINTED TO BY THE PARAMETER AND FOLLOW IT WITH A CARRIAGE RETURN/LINE FEED. USES THE SAME FORMAT FOR MESSAGES AS MSG (THE PAL8 TEXT PSEUDO-OP). CALLING SEQUENCE: MSGC POINTER TO STRING RETURNS HERE WITH THE AC CLEARED ROUTINES USED: MSG CRLF LOCATIONS USED: 9 MSG (PRINT A STRING) ___ ______ _ _______ PRINT A PACKED ASCII STRING. MESSAGES CAN BE PRODUCED USING THE TEXT PSEUDO-OP OF PAL8. MESSAGES CAN BE ANYWHERE IN THE SAME FIELD, AND MAY EVEN CROSS PAGE BOUNDRIES. SEE THE DOCUMENTATION OF CRACK FOR MORE INFORMATION ON THE CODING METHOD. CALLING SEQUENCE: MSG POINTER TO STRING ... /Return here with AC cleared POINTER, SIX BIT PACKED ASCII CHARACTERS
PAGE 4 NETWORK SUBROUTINE LIBRARY . . . 0000 OR XX00 AS END OF LIST (Usually produced by doing the following:) POINTER, TEXT 'THIS IS PRINTED' ROUTINES USED: CRACK TYPE LOCATIONS USED: 11 CLEAR (CLEAR THE SCREEN OF A CRT) _____ ______ ___ ______ __ _ ____ THIS SUBROUTINE OUTPUTS THE COMMON CHARACTERS NEEDED TO CLEAR THE SCREENS OF MOST CRT TERMINALS. CONTROL L AND CONTROL Z ARE TYPED WITH A DELAY AFTER THEM TO ALLOW THE SCREEN TO CLEAR ON SOME TERMINALS. CALLING SEQUENCE: CLEAR /=JMS CLEAR ... /RETURN HERE,AC CLEARED /AFTER CLEARING SCREEN. ROUTINES CALLED: TYPE LOCATIONS USED: 20 CRACK (PRINT TWO CHARS) _____ ______ ___ ______ CRACK AND PRINT THE TWO SIX BIT CHARACTERS IN THE AC. THIS ROUTINE IS USEFUL TO PRINT PACKED SIX-BIT ASCII, AS WELL AS PRINTING SOME TYPES OF FILE NAMES. THE METHOD OF CONVERSION IS: 0 = DONE (I.E. 0000 OR XX00) 1 - 37 = ADD 300 40 - 77 = ADD 200 CALLING SEQUENCE: TAD WORD TO CRACK CRACK ... /RETURN HERE IF A ZERO WAS FOUND (XX00 OR 0000) ... /NORMAL RETURN, TWO CHARACTERS PRINTED. IF USER DOES NOT WANT TO DISCRIMINATE BETWEEN FINDING A ZERO (IE END OF STRING TO BE PRINTED) THE CALL COULD BE SET UP AS THE FOLLOWING: TAD WORD TO CRACK CRACK NOP /DO NOTHING IF A ZERO IS FOUND ... /CONTINUE ON YOUR WAY
PAGE 5 NETWORK SUBROUTINE LIBRARY ROUTINES CALLED: TYPE LOCATIONS USED: 31 CRLF (TYPE CARRIGE RETURN/LINE FEED AT TERMINAL) ____ _____ _______ ___________ ____ __ _________ ROUTINE TO TYPE A CARRIAGE RETURN CHARACTER (OCTAL 215), AND A LINE-FEED CHARACTER (OCTAL 212). CALLING SEQUENCE: CRLF /=JMS CRLF ... /RETURN HERE, AC CLEARED ROUTINES CALLED: TYPE LOCATIONS USED: 9 O2D (OCTAL TO DECIMAL CONVERSION) ___ ______ __ _______ ___________ THIS ROUTINE WILL PRINT THE DECIMAL EQUIVALENT OF THE AC. THE ROUTINE ALLOWS THE USER TO PASS A FLAG INDICATING IF HE WANTS THE CONTENTS OF THE AC PRINTED AS A SIGNED OR UNSIGNED NUMBER. IF THE FLAG IS GREATER THAN OR EQUAL TO ZERO (CONVENTIONALLY ZERO) THEN THE VALUE IS PRINTED AS A 12 BIT POSITIVE NUMBER. IF THE FLAG IS LESS THAN ZERO (CONVENTIONALLY -1) THEN THE VALUE IS PRINTED AS A 12 BIT SIGNED NUMBER. EXAMPLE: TAD NUM O2D 0 /FLAG FOR UNSIGNED NUM /IF NUM FOR EXAMPLE =7777 THEN 4095 /WOULD BE PRINTED. EXAMPLE: TAD NUM O2D -1 /FLAG FOR SIGNED NUM /IF NUM FOR EXAMPLE =7777 THEN -0001 /WOULD BE PRINTED. CALLING SEQUENCE: TAD NUM /WHERE NUM IS VALUE TO BE CONVERTED O2D /CONVERT OCTAL TO DECIMAL. SIGNNUM /THIS IS A FLAG TO TELL IF YOU /WANT THE NUMBER TO BE PRINTED /AS A SIGNED OR UNSIGNED NUMBER. . . . /RETURNS HERE WITH AC CLEARED. ROUTINES CALLED: TYPE LOCATIONS USED: 50
PAGE 6 NETWORK SUBROUTINE LIBRARY QOP (QUICK OCTAL PRINT) ___ ______ _____ ______ SUBROUTINE TO TYPE A 4-DIGIT OCTAL NUMBER. PRINTS THE 4 OCTAL DIGITS HELD IN THE AC AT TIME OF CALL RETURNS WITH CLEARED AC. CALLING SEQUENCE: TAD WORD TO PRINT QOP ... /RETURN AC = 0 ROUTINES USED: TYPE LOCATIONS USED: 25 SPACE (PRINT THE NUMBER OF SPACES CARRIED IN THE AC) _____ ______ ___ ______ __ ______ _______ __ ___ ___ THIS IS A SIMPLE SUBROUTINE TO PRINT THE NUMBER OF SPACES CARRIED IN THE AC. USED FOR FORMATTING OUTPUT, PUTTING TEXT IN COLUMNS, ETC. CALLING SEQUENCE: TAD NUMBER SPACES SPACE ... /RETURNS WITH AC=0 ROUTINES CALLED: TYPE LOCATIONS USED: 10 TREAD (READ A NON-LEADER/TRAILER CHARACTER FROM THE TELETYPE) _____ _____ _ __________________ _________ ____ ___ _________ READ A NONZERO, NONLEADER/TRAILER CHARACTER FROM THE TELETYPE CALLED BY JMS TREAD. UPON RETURN, THE AC CONTAINS THE CHARACTER READ. LOWER CASE IS CONVERTED TO UPPER CASE. CALLING SEQUENCE: TREAD ... /RETURN HERE AC=CHAR ROUTINES CALLED: TYPE GLOBAL VARIABLES: CHAR LOCATIONS USED: 48
PAGE 7 NETWORK SUBROUTINE LIBRARY FIND (13 BIT COMPARISON OF TEST VALUE AND CONTENTS OF AC) ____ ___ ___ __________ __ ____ _____ ___ ________ __ ___ A ROUTINE TO COMPARE TWO 12 BIT NUMBERS, AND TO BRANCH ON SUCCESS. THERE ARE FOUR POSSIBLE COMPARISONS, EQ, LE, NE ,AND GT. CALLING SEQUENCE: TAD VALUE TO COMPARE FIND TEST INSTRUCTION (I.E. GT...);TEST NUMBER;SUCCESS ADDRESS; 0 (A ZERO DENOTES END OF TEST TABLE) THIS CALL PERFORMS: IF VALUE TO COMPARE MEETS REQUIREMENTS OF TEST INSTRUCTION WHEN MATCHED AGAINST THE TEST NUMBER THEN BRANCH TO THE SUCCESS ADDRESS, ELSE MOVE TO NEXT COMPARISON. ANY NUMBER OF SUCH ENTRIES IN THE TABLE MAY FOLLOW CALL. IF VALUE FAILS ALL COMPARISONS, RETURN TO LOCATION FOLLOWING TEST TABLE. UPON EXIT, CONTENTS OF AC=0 AN EXAMPLE TABLE AND USE OF THIS ROUTINE: FIND EQ;A;FOUNDA EQ;203;7600 /FOUND C, RETURN TO MONITOR 0 /END OF TABLE LOCATIONS USED: 19 FNDNB (NEXT NON-BLANK CHARACTER) _____ _____ _________ __________ ROUTINE TO SEARCH A BUFFER POINTED TO BY XR1 FOR THE NEXT NON-BLANK CHARACTER. XR1 IS SET UP AS A PAGE ZERO POINTER AND MUST BE ASSIGNED A VALUE. THIS IS CALLED ONLY AFTER THE BUFFER IS FILLED UP, USUALLY BY RDBUF. CALLING SEQUENCE: FNDNB JMP EOI /END-OF-IMAGE RETURN, AC IS CLEARED ... /NORMAL - AC = CHAR GLOBAL VARIABLES: CHAR COUNT XPONT LOCATIONS USED: 17
PAGE 8 NETWORK SUBROUTINE LIBRARY OCTP (GENERAL OCTAL PRINT) ____ ________ _____ ______ THIS ROUTINE IS VERY FORMAT ORIENTED, AND IF USER JUST WANTS TO TYPE OUT AN OCTAL VALUE, USER MIGHT WANT TO CHECK OUT THE QUICK OCTAL ROUTINE. CALLING SEQUENCE: TAD VALUE /GET THE NUMBER USER WISHES TO OUTPUT OCTP /=JMS OCTP N /N=NUMBER OF SPACES TO BE OUTPUT BY ROUTINE ... /RETURN HERE AFTER PERFORMING REQUESTED FORMAT. /IF N>0 THEN ROUTINE PRINTS NUMBER AS IS /IF N<0 THEN ROUTINE PRINTS NUMBER AS A SIGNED /VALUE EXAMPLE: IF N<0 THEN 7777 IS PRINTED AS -1 IF N>4 THEN 7777 IS PRINTED AS 7777 NOTE: IF USER SPECIFIES THAT ONLY ONE SPACE IS TO BE USED AND ALSO SPECIFIES THAT THE MINUS SIGN MODE IS ON (REMEMBER, THIS IS DONE BY N<0 ), THEN IF THE NUMBER TO PRINTED IS LESS THAN ZERO, WE HAVE AN INDEFINITE FORM (IE SHOULD THE MINUS SIGN BE PRINTED, OR JUST ONE DIGIT). THE SITUATION IS RECTIFIED BY PRINTING AN I FOR INDEFINITE. NOTE: IF ABS(N) IS GREATER THAN 4, THEN ABS(N)-4 BLANKS ARE PRINTED BEFORE THE NUMBER ITSELF IS PRINTED. ALSO, ALL LEADING ZEROS ARE CHANGED TO BLANKS. LOCATIONS USED: 95 ROUTINES CALLED: TYPE RCHAR (READ A CHAR FROM THE KEYBOARD) _____ _____ _ ____ ____ ___ _________ WAITS FOR USER TO STRIKE A KEY ON THE KEYBOARD, THEN RETURNS THE ASCII CODE IN THE ACCUMULATOR. CALLING SEQUENCE: JMS RCHAR ... /RETURN HERE, AC=CHAR READ LOCATIONS USED: 6
PAGE 9 NETWORK SUBROUTINE LIBRARY TEST (TRANSFER TO ADDRESS BY CHARACTER) ____ _________ __ _______ __ __________ GIVEN AN ADDRESS OF A TABLE, CHECKS IF THE CONTENTS OF AC IS IN THE TABLE, AND IF SO, TRANSFERS TO THE CORRECT ADDRESS. THIS ROUTINE IS MOST USEFUL TO SIMULATE A TYPE OF THE CASE STATEMENT. CALLING SEQUENCE: TAD CHAR /GET TEST CHARACTER IN AC TEST /TEST IT ! TBLAD /ADDRESS OF TABLE ... /CHARACTER NOT IN TABLE /AC CLEARED UPON ANY RETURN TBLAD, -CHAR1; ADDR1 -CHAR2; ADDR2 ...; ... 0 /END OF LIST (ZERO) LOCATIONS USED: 19 TYPE (TYPE ONE CHARACTER ON THE TTY) ____ _____ ___ _________ __ ___ ____ PRINT THE CONTENTS OF AC ON THE TELETYPE. CLEAR THE ACCUMULATOR BUT LEAVE THE LINK ALONE. THE LINK MAY BE USED BY PROGRAMS LIKE THE SIMPLE OCTAL PRINTING ROUTINE. THIS ROUTINE DOES THE TLS FIRST, AND WAITS ON THE FLAG, WHICH MAY BE SLIGHTLY SLOWER THAN THE METHOD OF USING ONE TLS AT THE BEGINING OF THE PROGRAM, AND THEN WAITING FOR THE PREVIOUS CHARACTER TO PRINT. TO BE SURE THAT THE FIRST CHARACTER IS NOT LOST, THE SEQUENCE CMA;TYPE COULD BE INSERTED AT THE BEGINING OF A PROGRAM TO INITIALIZE THINGS. CALLING SEQUENCE: TAD CHAR /LOAD AC WITH CHAR TO PRINT JMS TYPE /PRINT IT. . . . . /RETURN HERE WITH AC CLEAR LOCATIONS USED: 6



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search