File PALIB.LS (listing file)

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


/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 1 /NETWORK SUBROUTINE LIBRARY /VERSION 3.1 / / / N N EEEEE TTTTT W W OOOOO RRRR K K / NN N E T W W O O R R K K / N N N E T W W O O R R K K / N NN EEE T W W O O RRRR KK / N N E T W W W O O R R K K / N N E T WW WW O O R R K K / N N EEEEE T W W OOOOO R R K K / / / L III BBBB RRRR AAA RRRR Y Y / L I B B R R A A R R Y Y / L I B B R R A A R R Y Y / L I BBBB RRRR AAAAA RRRR Y / L I B B R R A A R R Y / L I B B R R A A R R Y / LLLLL III BBBB R R A A R R Y / /THE COMPUTER SCIENCE RESEARCH LAB /NORTHWESTERN UNIVERSITY / /AUTHORS AND CONTRIBUTORS: / MIKE KELLY (NUCSRL) / RICHARD BARTLEIN (UWM) / MARVIN SHUGERMAN (NUCSRL) / RICHARD KARHUSE (NUCSRL) / ROGER POLSLEY (NUCSRL) / RONALD SHOULTS (NUCSRL) / WILLIAM NOWCKI (NUCSRL) / /LAST UPDATE: MAY 20, 1977 / /NOTE: SEVERAL ROUTINES ARE STILL NOT WORKING !!! / /USE AT YOUR OWN RISK - REPORT ANY BUGS TO THE N.U.C.S.R.L.
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 2 / /+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 / /:CODE: 000200 0000 RDBUF, 0 US 000201 1000 TAD IKBUF /SET POINTER US 000202 3000 DCA XPONT /STORE POINTER US 000203 1000 TAD KBUFL /GET BUFFER LENGTH 000204 7041 CIA /MAKE NEGATIVE
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 2-1 US 000205 3000 DCA COUNT /STORE AS COUNTER 000206 7300 RDLP, CLA CLL 000207 6031 KSF 000210 5207 JMP .-1 000211 6036 KRB 000212 0377 AND (177 /A DEC STANDARD: FORCE 000213 1376 TAD (200 /PARITY BIT ON. US 000214 3000 DCA CHAR US 000215 1000 TAD CHAR 000216 4775' JMS TYPE /ECHO THE CHARACTER US 000217 1000 TAD CHAR 000220 1374 TAD (-215 000221 7450 SNA /CARRIAGE RETURN? 000222 5261 JMP RDEND /YES 000223 1373 TAD (-10 000224 7450 SNA /NO:CTRL/U? 000225 5304 JMP RDAGN /YES 000226 1372 TAD (-152 000227 7650 SNA CLA /NO:RUBOUT? 000230 5244 JMP RDRUB /YES US 000231 1000 TAD CHAR /LOOKS LIKE ORDINARY CHAR TO ME.. US 000232 3400 DCA I XPONT /STORE IN BUFFER, US 000233 2000 ISZ XPONT US 000234 2000 ISZ COUNT /BUMP BUFFER COUNTER, 000235 5206 JMP RDLP /AND GET NEXT CHAR /THIS GUY IS TALKATIVE...HE'S OVERFLOWN THE BUFFER. /LET HIM KNOW AND RESTART / 000236 7200 CLA 000237 4771' JMS CRLF 000240 4770' JMS MSG /TYPE COMPLAINT 000241 0311 XRDMSG 000242 4771' JMS CRLF /AND A CRLF 000243 5600 JMP I RDBUF / & ASK AGAIN / /GOT A RUBOUT - BACK UP THE POINTER. US 000244 1000 RDRUB, TAD COUNT /BACK UP THE COUNTER US 000245 1000 TAD KBUFL 000246 7650 SNA CLA 000247 5600 JMP I RDBUF /NOTHING TO RUB OUT 000250 7240 CLA CMA US 000251 1000 TAD COUNT US 000252 3000 DCA COUNT
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 2-2 000253 7240 CLA CMA /BACK UP XR1 NEXT US 000254 1000 TAD XPONT US 000255 3000 DCA XPONT US 000256 1400 TAD I XPONT /ECHO THE RUBBED OUT CHAR 000257 6046 TLS 000260 5206 JMP RDLP /THEN CONTINUE / /FOUND A CARRIAGE RETURN - SET UP FOR SCAN 000261 7300 RDEND, CLA CLL US 000262 1000 TAD COUNT /TEST FOR ONLY <CR> TYPED 000263 7450 SNA 000264 5302 JMP RDNUL /TAKE APPROPRIATE RETURN 000265 7300 CLA CLL US 000266 3400 DCA I XPONT /SET END OF BUFFER POINT US 000267 2000 ISZ COUNT /REGISTER THIS LAST ENTRY 000270 4771' JMS CRLF US 000271 1000 TAD COUNT /GET # OF CHARS ENTERED US 000272 1000 TAD KBUFL US 000273 3000 DCA COUNT 000274 7340 CLA CLL CMA US 000275 1000 TAD IKBUF /INIT. BUF POINTER US 000276 3000 DCA XPONT 000277 4767' JMS FNDNB /GET FIRST NON-BLANK 000300 5302 JMP RDNUL /ALL SPACES - RETURN 000301 2200 ISZ RDBUF /NOW ADJUST THE RETURN 000302 2200 RDNUL, ISZ RDBUF / ADDRESS 000303 5600 JMP I RDBUF 000304 4770' RDAGN, JMS MSG /TYPE "^U" 000305 0307 XCTLU 000306 5600 JMP I RDBUF /THEN RETURN / /LET'S DEFAULT SOME BUFFERS. / 000307 3625 XCTLU, TEXT /^U/ 000310 0000 000311 0225 XRDMSG, TEXT /BUFFER OVERFLOWN/ 000312 0606 000313 0522 000314 4017 000315 2605 000316 2206 000317 1417 000320 2716 000321 0000
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 2-3 / /THUS, IF USER IS TO TAKE AN ERROR RETURN, SOME "LIKENESS" OF /ERROR MESSAGES WILL BE DEFAULTED FOR THE PROGRAMMER. /THIS WILL ALLOW PROGRAMMING SUCH AS THE ABOVE EXAMPLE, /WHERE THE PROGRAMMER DOES NOT PRINT ANY ERROR MESSAGES, /BUT SIMPLY LOOPS TO READ IN NEXT BUFFER. / / /-RDBUF /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 3 / /+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 /:CODE: 000322 0000 CONMSG, 0 000323 3355 DCA XCON /STORE VALUE 000324 1722 TAD I CONMSG /GET THE LIST ADDRESS 000325 3356 DCA PNT /RESET POINTER 000326 2322 ISZ CONMSG /FIX RETURN ADDRES 000327 1756 TLP, TAD I PNT /LOOP 000330 2356 ISZ PNT /FIX POINTER 000331 7450 SNA /ZERO MEANS END 000332 5340 JMP TWHA /END OF LIST 000333 1355 TAD XCON /DOES IT MATCH ? 000334 7650 SNA CLA 000335 5347 JMP TDONE /YES - GREAT ! 000336 2356 ISZ PNT 000337 5327 JMP TLP /NO - TRY NEXT ONE / 000340 7200 TWHA, CLA 000341 1355 TAD XCON /IS IT ZERO ? 000342 7650 SNA CLA 000343 5347 JMP TDONE /YES-PRINT MESSAGE FOR ZERO / /THE CODE WAS NOT FOUND IN THE TABLE 000344 4770' JMS MSG 000345 0357 WHAT /PRINT NASTY MESSAGE 000346 5722 JMP I CONMSG /RETURN ANYWAY /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 3-1 000347 7200 TDONE, CLA 000350 1756 TAD I PNT /DONE - USE AS POINTER 000351 3353 DCA TMSG /FOR MESSAGE 000352 4770' JMS MSG /PRINT IT ! 000353 7402 TMSG, HLT 000354 5722 JMP I CONMSG /RETURN ! / /@LOCAL VARIABLES: 000355 0000 XCON, 0 000356 0000 PNT, 0 / /THESE STRANGE CONDITIONAL ASEMBLIES ARE NEEDED TO /INSURE THAT THE SYMBOL "WHAT" IS DEFAULTED CORRECTLY. / 000357 0522 IFDEF WHAT < IFZERO WHAT-. <WHAT, TEXT "ERROR">> 000360 2217 000361 2200 IFNDEF WHAT <WHAT, TEXT "ERROR"> /-CONMSG /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 4 / /+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 /:CODE: 000362 0000 KNUM, 0 000363 7200 CLA US 000364 3000 KN2, DCA NUM /STORE SUM SO FAR US 000365 1400 TAD I XPONT /GET NEXT DIGIT US 000366 3000 DCA CHAR US PE 000367 1000 TAD CHAR PE 000370 7450 SNA /ZERO? (SIGNALS END OF BUFFER) PE PE 000371 5770' JMP KRET /YES: THAT'S ALL, FOLKS. PE PE 000372 1371 TAD (-272 /TEST VALIDITY PE 000373 7700 SMA CLA PE PE 000374 5773' JMP KRET US PE 000375 1000 TAD CHAR PE PE 000376 1375 TAD (-260 PE 000377 7710 SPA CLA 000400 5211 JMP KRET /BAD CHAR US
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 4-1 000401 2000 ISZ XPONT /IT WAS A NUMBER "REMOVE" IT FROM BUFFER US 000402 1000 TAD NUM 000403 7106 CLL RTL /MPY BY 4 US 000404 1000 TAD NUM /MAKE IT *5 000405 7104 CLL RAL /DOUBLE TO GET * 10 US 000406 1000 TAD CHAR /ADD THIS DIGIT 000407 1377 TAD (-260 000410 5776' JMP KN2 / 000411 7200 KRET, CLA US 000412 1000 TAD NUM /GET NUMBER IN AC II 000413 5775' JMP I KNUM /RETURN / / /-KNUM
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 5 / /+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 /:CODE: 000414 0000 KTST, 0 000415 6031 KSF /ANYTHING TYPED ? 000416 5224 JMP KTST2 000417 1614 TAD I KTST /GET THE ARG 000420 3223 DCA KTSAD 000421 6036 KRB /YES - SKIP IT 000422 4774' JMS TEST 000423 7402 KTSAD, HLT /PLUGGED 000424 2214 KTST2, ISZ KTST /FIX RETURN 000425 5614 JMP I KTST /FORGET IT ! /-KTST /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 6 / /+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 /:CODE: 000426 0000 MSGC, 0 000427 7200 CLA 000430 1626 TAD I MSGC /GET THE FWA OF THE STRING 000431 3233 DCA MSGCA /PUT IT WHERE "MSG" CAN GET AT IT 000432 4237 JMS MSG /PRINT THE STRING WITHOUT ANY CR/LF 000433 7402 MSGCA, HLT 000434 4321 JMS CRLF /NOW PRINT THE CRLF 000435 2226 ISZ MSGC /BUMP TO GET AROUND THE ARG. 000436 5626 JMP I MSGC /-MSGC /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 7 / /+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 / . . . / 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 /:CODE: 000437 0000 MSG, 0 000440 7300 CLA CLL 000441 1637 TAD I MSG /POINTER 000442 3251 DCA MSG3 000443 2237 ISZ MSG /BUMP TO RETURN 000444 1651 MSG2, TAD I MSG3 /GET TWO CHARACTERS 000445 4267 JMS CRACK /CRACK AND PRINT THE SIX BITS 000446 5637 JMP I MSG /RETURN IF END OF MESSAGE 000447 2251 ISZ MSG3 /OTHERWISE MOVE TO NEXT PAIR OF CHAR. 000450 5244 JMP MSG2 /GO BACK UP AND PRINT THEM /@LOCAL VARIABLES: 000451 0000 MSG3, 0 /STRING POINTER /-MSG /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 8 / /+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 /:CODE: 000452 0000 CLEAR, 0 000453 7200 CLA 000454 1373 TAD ("L-100 /CLEAR THE SCREEN 000455 4772' JMS TYPE 000456 4772' JMS TYPE /SEND A NULL FOR GOOD MEASURE 000457 1371 TAD ("Z-100 /TRY AGAIN 000460 4772' JMS TYPE /FOR THE LSI TERMINAL 000461 2266 ISZ CLRC 000462 5261 JMP .-1 /WASTE SOME TIME 000463 1373 TAD ("L-100 /AND AGAIN (FOR THE ANN ARBOR) 000464 4772' JMS TYPE 000465 5652 JMP I CLEAR /RETURN 000466 0000 CLRC, 0 /-CLEAR /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 9 / /+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 /#ROUTINES CALLED: TYPE /$LOCATIONS USED: 31 /:CODE: 000467 0000 CRACK, 0 000470 3317 DCA CRACK4 /TEMP. STORE WORD TO BE CRACKED 000471 7240 CLA CMA 000472 3320 DCA CRACK5 /SWITCH 000473 1317 TAD CRACK4 /GET THE WORD BACK 000474 0370 AND (7700 /LEFT CHAR 000475 7450 SNA 000476 5667 JMP I CRACK /RETURN IF WORD IS 00XX 000477 7112 CLL RTR 000500 7012 RTR /(COULD BE "BSW" ON A "PDP-8/E" 000501 7012 RTR 000502 1367 CRACK2, TAD (-40 /FIND BREAKPOINT FOR RESTORATION 000503 7510 SPA 000504 1366 TAD (100 000505 1365 CRACK3, TAD (240 000506 4772' JMS TYPE /ACUTUALLY PRINT IT OUT 000507 2320 ISZ CRACK5 /SKIP IF HAVE RIGHT CHAR TO DO 000510 5667 JMP I CRACK /OTHERWISE RETURN 000511 1317 TAD CRACK4 /GET BACK WORD 000512 0364 AND (77 /GET RIGHT CHAR 000513 7450 SNA 000514 5667 JMP I CRACK /RETURN IF WORD XX00 000515 2267 ISZ CRACK /INCREMENT POINTER FOR RETURN 000516 5302 JMP CRACK2 /GO BACK AND PRINT IT OUT /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 9-1 /@LOCAL VARIABLES: 000517 0000 CRACK4, 0 /TEMP STORAGE FOR WORD 000520 0000 CRACK5, 0 /SWITCH /-CRACK /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 10 / /+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 /:CODE: 000521 0000 CRLF, 0 000522 7300 CLA CLL 000523 1363 TAD (215 000524 4772' JMS TYPE 000525 1362 TAD (212 000526 4772' JMS TYPE 000527 5721 JMP I CRLF /THEN RETURN /-CRLF /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 11 / /+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 /:CODE: 000530 0000 O2D, 0 000531 3376 DCA OCVAL /STORE VALUE TO BE CONVERTED 000532 1730 TAD I O2D /GET CONVERSION "FLAG" 000533 2330 ISZ O2D /POINT TO RETURN 000534 7700 SMA CLA 000535 5345 JMP O2DST /PRINT NUMBER AS IS 000536 1376 TAD OCVAL /PRINT NUMBER AS SIGN VALUE 000537 7500 SMA 000540 5345 JMP O2DST /NUMBER > 0 DO NOTHING 000541 7041 CIA 000542 3376 DCA OCVAL /CREATE A "POSITIVE VALUE" 000543 1361 TAD (255 /PRINT A MINUS SIGN 000544 4772' JMS TYPE 000545 1360 O2DST, TAD (-4 /SET UP DIGIT COUNTER 000546 3373 DCA O2DIG /FOR 4 DIGITS 000547 1374 TAD O2DPT /INITIALIZE DIVISOR TO 000550 3377 DCA O2DIV /TABLE OF DECIMAL DIVISORS. 000551 3757' O2D1, DCA O2DCNT /CLEAR COUNTER 000552 7100 O2D1A, CLL 000553 1777 TAD I O2DIV /GET COMPLEMENTED DIVISOR
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 11-1 000554 1376 TAD OCVAL /ADD IN OCTAL VALUE TO CONVERT 000555 7420 SNL /LINK=0 WHEN DIVISION DONE. 000556 5362 JMP O2D2 /DONE WITH THIS DIGIT. PRINT IT. PE 000557 3376 DCA OCVAL /LOAD NEW DIVIDEND PE PE 000560 2757' ISZ O2DCNT /BUMP UP COUNTER PE 000561 5352 JMP O2D1A /AND GO AGAIN. PE 000562 7300 O2D2, CLA CLL PE PE 000563 1762' TAD O2DCNT /GET QUOTIENT PE PE 000564 1363 TAD (260 /CONVERT TO ASCII PE 000565 4772' JMS TYPE /TYPE IT PE 000566 2377 ISZ O2DIV /BUMP POINTER TO NEXT DIVISOR PE 000567 2373 ISZ O2DIG /FOUR DIGITS TYPED YET? PE 000570 5351 JMP O2D1 /NO: PROCESS NEXT DIGIT. PE 000571 7300 CLA CLL /YES: CLEAR OUT AC PE 000572 5730 JMP I O2D /AND RETURN /@LOCAL VARIABLES PE 000573 0000 O2DIG, 0 /COUNTER OF DIGITS TYPED. PE 000574 0601 O2DPT, O2DTAB /POINTER INTO DIVISOR TABLE PE 000575 0000 O2DACC, 0 /ACCUMULATOR OF QUOTIENT PE 000576 0000 OCVAL, 0 /OCTAL VALUE TO CONVERT GOES HERE PE 000577 0000 O2DIV, 0 /CURRENT DIVISOR GOES HERE 000600 0000 O2DCNT, 0 /TABLE: THE FOLLOWING TABLE CONTAINS THE DIVISORS. DECIMAL 000601 6030 O2DTAB, -1000 000602 7634 -100 000603 7766 -10 000604 7777 -1 OCTAL /-O2D /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 12 / /+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 /:CODE: 000605 0000 QOP, 0 000606 7104 CLL RAL 000607 3225 DCA QOP1 /SAVE THE NUMBER 000610 1377 TAD (-4 /NUMBER OF DIGITS TO TYPE 000611 3226 DCA CINDX /SET THE CHAR COUNT 000612 1225 QOPLP, TAD QOP1 000613 7006 RTL; RAL /GET THE HIGH 3 BITS 000614 7004 000615 3225 DCA QOP1 000616 1225 TAD QOP1 000617 0376 AND (7 000620 1375 TAD (260 /CONVERT IT TO ASCII 000621 4774' JMS TYPE / & TYPE IT 000622 2226 ISZ CINDX 000623 5212 JMP QOPLP /CONTINUE 000624 5605 JMP I QOP /ALL DONE - RETURN / /@LOCAL VARIABLES: 000625 0000 QOP1, 0 000626 0000 CINDX, 0 /TEMPORARIES / /-QOP / /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 13 / /+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 /:CODE: 000627 0000 SPACE, 0 000630 7041 CIA 000631 3237 DCA SPACE1 000632 1373 SPATY, TAD (240 000633 4774' JMS TYPE /TYPE THE SPACE 000634 2237 ISZ SPACE1 000635 5232 JMP SPATY /SIMPLE LOOP 000636 5627 JMP I SPACE / /@LOCAL VARIABLES: 000637 0000 SPACE1, 0 /-SPACE /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 14 / /+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 /:CODE: 000640 0000 TREAD, 0 000641 7200 TREAD2, CLA 000642 6031 KSF /WAIT FOR CHAR 000643 5242 JMP .-1 000644 6036 KRB /CHAR INTO AC 000645 0372 AND (177 /DON'T WORRY ABOUT PARITY BIT 000646 7450 SNA 000647 5241 JMP TREAD2 /IGNORE THE NOTHINGS 000650 1371 TAD (-141 000651 7510 SPA /SKIP IF COULD BE A SMALL LETTER 000652 5257 JMP TREAD3 000653 1370 TAD (141-173 000654 7510 SPA /SKIP IF NOT A SMALL LETTER 000655 1367 TAD (-40 000656 1366 TAD (173-141 000657 1365 TREAD3, TAD (341 /CONVERT TO DEC CAPTIAL LETTER US 000660 3000 DCA CHAR /STORE IT US 000661 1000 TAD CHAR 000662 1364 TAD (-240 000663 7700 SMA CLA 000664 5300 JMP ECHO2 US 000665 1000 TAD CHAR 000666 1363 TAD (-216 /IS CHAR CONTROL N THRU Z? 000667 7700 SMA CLA 000670 5275 JMP ECHO1 /YES IT IS GO TYPE IT OUT. US 000671 1000 TAD CHAR 000672 1362 TAD (-210 /IS IT CONTROL J THRU M? 000673 7700 SMA CLA 000674 5300 JMP ECHO2 /YES IT IS ECHO THE PAPER CONTROL. 000675 1361 ECHO1, TAD (336 000676 4774' JMS TYPE /TYPE IT 000677 1360 TAD (100 US 000700 1000 ECHO2, TAD CHAR 000701 4774' JMS TYPE /TYPE IT US
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 14-1 000702 1000 TAD CHAR /GET CHARACTER BACK 000703 5640 JMP I TREAD /-TREAD /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 15 / /+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 /:CODE: /TEST DEFINITIONS IFNDEF EQ <EQ=SZA> IFNDEF LE <LE=SNL CLA> IFNDEF GT <GT=SZL CLA> IFNDEF NE <NE=SNA CLA> / 000704 0000 FIND, 0 /ENTRY 000705 3326 DCA FNDTMP /STORE (TEST VALUE) 000706 7410 SKP 000707 2304 FNDLOP, ISZ FIND /POINT TO NEXT TEST INSTRUCTION 000710 1704 TAD I FIND /GET NEXT INSTRUCTION (GE...) 000711 2304 ISZ FIND /POINT TO TEST # 000712 7450 SNA /IS THIS END OF TABLE? 000713 5704 JMP I FIND /YES, RETURN TO MAIN 000714 3321 DCA FNDSKP /NO, STORE TEST INSTRUCTION 000715 1326 TAD FNDTMP 000716 7141 CLL CMA IAC 000717 1704 TAD I FIND /ADD TO AC TEST # 000720 2304 ISZ FIND /POINT TO ADDRESS OF DESTINATION 000721 7402 FNDSKP, HLT /SKIP IF VALUE OF LINK & AC IS RIGHT 000722 5307 JMP FNDLOP /GET NEXT TEST TABLE ENTRY AND CONTINUE 000723 1704 TAD I FIND /GET DESTINATION 000724 3304 DCA FIND /SET POINTER TO DESTINATION 000725 5704 JMP I FIND /RETURN
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 15-1 /@LOCAL VARIABLES: 000726 0000 FNDTMP, 0 /-FIND /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 16 / /+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 /:CODE: 000727 0000 FNDNB, 0 US 000730 2000 FNDNB1, ISZ XPONT /REMOVE BLANK FROM BUFFER 000731 7300 FNDNB2, CLA CLL US 000732 1400 TAD I XPONT /GET NEXT CHAR US 000733 3000 DCA CHAR US 000734 1000 TAD CHAR 000735 7450 SNA /IS IT END OF BUFFER 000736 5727 JMP I FNDNB /YES RETURN 000737 1364 TAD (-240 000740 7650 SNA CLA /SPACE? 000741 5330 JMP FNDNB1 /YES - CONTINUE SEARCH 000742 2327 ISZ FNDNB /FIX RETURN ADDRESS US 000743 1000 TAD CHAR /GET BACK CHAR 000744 5727 JMP I FNDNB / & RETURN W/AC = CHAR / /// /-FNDNB /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 17 / /+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 /:CODE: 000745 0000 OCTP, 0 000746 3757' DCA OCTP4 000747 3756' DCA OCTP7 /LET'S CLEAR THE MINUS FLAG 000750 1745 TAD I OCTP /GO PICK UP THE VALUE OF "N" 000751 2345 ISZ OCTP /POINT TO "ERROR" RETURN 000752 7450 SNA /DOES USER WANT ANYTHING PRINTED? 000753 5745 JMP I OCTP /NO, WHO CALLED LIKE THIS ANYWAY 000754 7510 SPA /PRINT VALUE WITH A SIGN, OR ABSOLUTE? 000755 5361 JMP .+4 /N<0, SO PRINT IT SIGNED PE 000756 7041 CIA /N>0, SO NEGATE IT FOR COUNTER PE PE 000757 3756' DCA OCTP5 /STORE COUNTER, AND CONTINUE PE 000760 5376 JMP OCTP1A PE PE 000761 3760' DCA OCTP5 /STORE COUNTER "N" PE
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 17-1 PE 000762 1761' TAD OCTP4 PE 000763 7500 SMA /IS NUMBER <0 PE 000764 5376 JMP OCTP1A /NO, SO CONTINUE PE 000765 7041 CIA /YES, SO NEGATE IT PE PE 000766 3765' DCA OCTP4 /STORE ABS(NUMBER) PE 000767 7240 CLA CMA /SEND -1 TO MINUS FLAG PE PE 000770 3767' DCA OCTP7 PE PE 000771 2770' ISZ OCTP5 /SAVE A SPACE FOR THE MINUS SIGN PE 000772 5376 JMP OCTP1A /IF ONLY 1 SPACE WAS GIVEN, IT IS GONE PE PE 000773 1372 TAD (311 /GET VALUE OF AN "I" PE 000774 4774' JMS TYPE /PRINT AN "I" FOR INDEFINITE OPERATION PE 000775 5745 JMP I OCTP /SO RETURN (WHO MADE THAT FORMAT) PE 000776 7200 OCTP1A, CLA /LETS MAKE SURE ALL IS OKAY PE PE 000777 1776' TAD OCTP5 /GET THE COUNT "N" 001000 1377 TAD (4 001001 7450 SNA /IS N=4 001002 5215 JMP OCTP2 /YES, GO PRINT THE NUMBER OUT 001003 7510 SPA /IS N<4 001004 5256 JMP OCTPB /NO, GO PRINT SOME BLANKS 001005 7041 CIA /ROTATE LOW "N" DIGITS TO HIGH "N" 001006 3270 DCA OCTP6 /SET UP COUNTER TO DO THIS 001007 1266 TAD OCTP4 /GET THE VALUE TO BE PRINTED 001010 7004 OCTP1, RAL; RTL 001011 7006 001012 2270 ISZ OCTP6 /ARE WE DONE 001013 5210 JMP OCTP1 /NO, CONTINUE 001014 3266 DCA OCTP4 /YES STORE THE NEW "VALUE" 001015 1266 OCTP2, TAD OCTP4 /SET UP FOR PRINTING 001016 7004 RAL /GET FIRST BIT TO LINK 001017 3266 DCA OCTP4 001020 3270 DCA OCTP6 /CLEAR ZERO TO BLANK FLAG 001021 2271 ISZ OCTP7 /HAS MINUS FLAG BEEN SET 001022 5225 JMP OCTP3 /NO, START PRINTING NUMBER 001023 1376 TAD (255 /YES, PRINT MINUS SIGN 001024 4323 JMS TYPE 001025 1266 OCTP3, TAD OCTP4 /ROTATE NEXT DIGIT TO LOW END
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 17-2 001026 7004 RAL; RTL 001027 7006 001030 3266 DCA OCTP4 /STORE THIS ROTATED VALUE 001031 1266 TAD OCTP4 001032 0375 AND (7 /PEEL OFF DIGIT TO BE PRINTED 001033 7440 SZA /IS IT A ZERO 001034 5250 JMP OCTP3A /NO GO PRINT IT OUT 001035 1267 TAD OCTP5 /GET NUMBER SPACES LEFT TO TYPE 001036 7001 IAC 001037 7650 SNA CLA /IS THERE JUST ONE SPACE LEFT 001040 5250 JMP OCTP3A /YES, PRINT OUT A ZERO 001041 1270 TAD OCTP6 /ARE WE STILL IN LEADING ZEROS 001042 7640 SZA CLA /IF AC = 0 THEN YES 001043 1374 TAD (20 /NO TYPE OUT A ZERO 001044 1373 TAD (240 /TYPE A BLANK 001045 4323 JMS TYPE 001046 2267 ISZ OCTP5 /INCREMENT NO. OF SPACES TYPED 001047 5225 JMP OCTP3 /LOOP BACK TO GET NEXT DIGIT 001050 1372 OCTP3A, TAD (260 /CONVERT DIGIT TO ASCII 001051 4323 JMS TYPE /PRINT IT OUT 001052 2270 ISZ OCTP6 /SET LEADING ZERO FILL FLAG 001053 2267 ISZ OCTP5 /ARE WE DONE? 001054 5225 JMP OCTP3 /NOPE! LOOP BACK AGAIN II 001055 5771' JMP I OCTP /RETURN 001056 3270 OCTPB, DCA OCTP6 /STORE NO. OF BLANKS TO BE PRINTED 001057 1373 TAD (240 /PRINT OUT A BLANK 001060 4323 JMS TYPE 001061 2270 ISZ OCTP6 /ARE WE DONE? 001062 5257 JMP .-3 /NO GO PRINT ANOTHER BLANK 001063 1370 TAD (-4 /SET UP COUNTER FOR NO. OF DIGITS 001064 3267 DCA OCTP5 /STORE IT 001065 5215 JMP OCTP2 /GO PRINT OUT DIGITS /@LOCAL VARIABLES: 001066 0000 OCTP4, 0 /VAL TO BE PRINTED OUT 001067 0000 OCTP5, 0 /PARAMETER "N" 001070 0000 OCTP6, 0 /ASSORTED LOOP COUNTERS 001071 0000 OCTP7, 0 /MINUS SIGN FLAG /-OCTP /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 18 / /+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 /:CODE: 001072 0000 RCHAR, 0 001073 7200 CLA / IGNORE GARBAGE 001074 6031 KSF 001075 5274 JMP .-1 001076 6036 KRB 001077 5672 JMP I RCHAR /-RCHAR /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 19 / /+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 /:CODE: 001100 0000 TEST, 0 001101 3322 DCA OPCHR /SAVE THE CHARACTER 001102 1700 TAD I TEST /GET THE TABLE ADDRESS 001103 3321 DCA XROP4 /STORE TABLE ADDRESS 001104 2300 ISZ TEST /FIX RETURN ADDRESS 001105 7410 SKP 001106 2321 OPLP, ISZ XROP4 /TEST FAILED POINT TO NEXT CHAR 001107 1721 TAD I XROP4 001110 2321 ISZ XROP4 001111 7450 SNA /END OF LIST ? 001112 5700 JMP I TEST /END OF LIST-BAD 001113 1322 TAD OPCHR 001114 7640 SZA CLA 001115 5306 JMP OPLP /GO GET NEXT TEST CHAR 001116 1721 TAD I XROP4 /GET RETURN ADDRESS 001117 3300 DCA TEST /STORE IT 001120 5700 JMP I TEST /RETURN / /@LOCAL VARIABLES: 001121 0000 XROP4, 0 001122 0000 OPCHR, 0 /SEARCH CHARACTER /-TEST / / /
/NETWORK SUBROUTINE LIBRARY PAL8-V13B NO DATE PAGE 20 / /+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 /:CODE: 001123 0000 TYPE, 0 001124 6046 TLS /PUNCH IT 001125 6041 TYLP, TSF /WAIT FOR IT TO PUNCH 001126 5325 JMP TYLP /WE'RE IN NO HURRY 001127 7200 CLA 001130 5723 JMP I TYPE /-TYPE /
$ PAL8-V13B NO DATE PAGE 21 001170 7774 001171 0745 001172 0260 001173 0240 001174 0020 001175 0007 001176 0255 001177 0004 $
$ PAL8-V13B NO DATE PAGE 22 CINDX 0626 O2DTAB 0601 CLEAR 0452 O2D1 0551 CLRC 0466 O2D1A 0552 CONMSG 0322 O2D2 0562 CRACK 0467 PNT 0356 CRACK2 0502 QOP 0605 CRACK3 0505 QOPLP 0612 CRACK4 0517 QOP1 0625 CRACK5 0520 RCHAR 1072 CRLF 0521 RDAGN 0304 ECHO1 0675 RDBUF 0200 ECHO2 0700 RDEND 0261 EQ 7440 RDLP 0206 FIND 0704 RDNUL 0302 FNDLOP 0707 RDRUB 0244 FNDNB 0727 SPACE 0627 FNDNB1 0730 SPACE1 0637 FNDNB2 0731 SPATY 0632 FNDSKP 0721 TDONE 0347 FNDTMP 0726 TEST 1100 GT 7630 TLP 0327 KNUM 0362 TMSG 0353 KN2 0364 TREAD 0640 KRET 0411 TREAD2 0641 KTSAD 0423 TREAD3 0657 KTST 0414 TWHA 0340 KTST2 0424 TYLP 1125 LE 7620 TYPE 1123 MSG 0437 WHAT 0357 MSGC 0426 XCON 0355 MSGCA 0433 XCTLU 0307 MSG2 0444 XRDMSG 0311 MSG3 0451 XROP4 1121 NE 7650 OCTP 0745 OCTPB 1056 OCTP1 1010 OCTP1A 0776 OCTP2 1015 OCTP3 1025 OCTP3A 1050 OCTP4 1066 OCTP5 1067 OCTP6 1070 OCTP7 1071 OCVAL 0576 OPCHR 1122 OPLP 1106 O2D 0530 O2DACC 0575 O2DCNT 0600 O2DIG 0573 O2DIV 0577 O2DPT 0574 O2DST 0545
ERRORS DETECTED: 108 LINKS GENERATED: 41



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