File IOPACK.12

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

/ GENERALIZED I/O PACKAGE

/ A MODIFIED VERSION OF PIP'S I/O PACKAGE
/ MODIFIED BY: CLYDE G. ROBY, JR.
/ DEPARTMENT OF MEDICINE
/ WEST VIRGINIA UNIVERSITY
/ MORGANTOWN, WEST VIRGINIA
/ MARCH 24, 1972

/EQUIVALENCES FOR GENERAL CHARACTER I/O ROUTINES

IFNDEF	OUBUF	<OUBUF=0	/MUST BE LOWER THAN INBUF>
IFNDEF	OUCTL	<OUCTL=5400	/OUTPUT BUFFER OF 3000 WORDS>
IFNDEF	OUDEVH	<OUDEVH=7200	/PROVIDE ROOM FOR TWO-PAGE HANDLERS>
IFNDEF	INBUF	<INBUF=3000>
IFNDEF	INCTL	<INCTL=1600	/INPUT BUFFER OF 3400 WORDS>
IFNDEF	INRECS	<INRECS=7	/INCTL/128>
IFNDEF	INDEVH	<INDEVH=6600>

/EQUIVALENCES NECESSARY TO INTERFACE WITH MONITOR

	DCB=7760
	MPARAM=7643	/CD PARAMETER AREA
	PTP=20		/INTERNAL TYPE CODE: PAPER TAPE PUNCH

	FIELD 1		/EXECUTES IN FIELD 1

/GENERAL CHARACTER I/O ROUTINES /CALLED AS FOLLOWS: /JMS I (IOPEN INITIALIZES THE INPUT ROUTINE /JMS I (ICHAR READS A CHARACTER /ERROR RETURN AC>0 IF EOF, AC<0 IF READ ERROR /JMS I (OOPEN INITIALIZES THE OUTPUT ROUTINE /ERROR RETURN AC>P IF NO OUT DEV/FILE, AC<0 IF ERR /JMS I (OCHAR OUTPUTS A CHARACTER /ERROR RETURN OUTPUT ERROR OR TOO MUCH OUTPUT /JMS I (OCLOSE CLOSES THE OUTPUT FILE /ERROR RETURN FILE TOO LARGE TO BE CLOSED OR OUTPUT ERR /JMS I (OTYPE RETURNS DCB WORD OF OUT DEVICE IN AC /PARAMETERS NEEDED: /INBUF= ADDRESS OF INPUT BUFFER /INCTL= INPUT BUFFER CONTROL WORD /OUBUF= ADDRESS OF OUTPUT BUFFER /OUCTL= OUTPUT BUFFER CONTROL WORD (MUST BE NEGATIVE) /INRECS= [INCTL/128] /ERROR RETURN AC>0 IF NO OUTPUT DEV/FILE, AC<0 IF ERR /JMS I (OCHAR OUTPUTS A CHARACTER /ERROR RETURN OUTPUT ERROR OR /INDEVH= ADDRESS OF PAGE FOR INPUT HANDLER /OUDEVH= ADDRESS OF PAGE FOR OUTPUT HANDLER /CAN BE CALLED FROM ANY FIELD WITH BUFFERS IN ANY FIELD.
INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER *4000 / IOPEN: INITIALIZE INPUT FILES IN7400, 7400 /*****MUST BE FIRST LOC OF PAGE***** IOPEN, 0 CLA CMA DCA INCHCT /SET INCHCT TO FORCE A READ ISZ INEOF /SET E-O-F FLAG TO FORCE A NEW FILE TAD (7617 DCA INFPTR /RESET FILE POINTER RDF TAD INCDIF DCA .+1 INPTR, HLT /RESTORE CALLING FIELDS JMP I IOPEN / ICHAR: GET A CHAR FROM INPUT FILES / RETURN TO .+1 IF ERROR (<0) / OR IF END-OF-FILE (>0) / RETURN TO .+2 WITH CHAR IN ACC ICHAR, 0 IN7600, 7600 RDF TAD INCDIF DCA INRTRN /SAVE CALLING FIELDS INCHRX, CDF INFLD ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH ISZ INCHCT INJMPP, JMP INJMP TAD INEOF SNA CLA /DID LAST READ YIELD END-OF-FILE? JMP INGBUF /NO - DO ANOTHER GETNEW, JMP INNEWF /OPEN A NEW INPUT FILE INGBUF, TAD INKTR CLL TAD (INRECS SNL DCA INKTR /RESTORE INKTR IF IT HASN'T OVERFLOWED SZL /IS THIS THE LAST READ? ISZ INEOF /YES - SET END-OF-FILE FLAG CLL CML CMA RTR /CONSTRUCT A CTRL WORD FOR THE READ RTR /FROM THE AMOUNT OF THE OVERFLOW RTR /(IF ANY) AND THE STANDARD CTRL WORD TAD (INCTL+1 DCA INCTLW INCDIF, CDF CIF 0 CDF 10 JMS I INHNDL /CALL THE DEVICE HANDLER INCTLW, 0 INBUFP, INBUF INREC, 0 JMP INERRX /INPUT HANDLER ERROR INBREC, TAD INREC TAD (INRECS DCA INREC /UPDATE THE RECORD NUMBER TAD INCTLW AND IN7600 CLL RAL TAD INCTLW AND IN7600 CMA DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT TAD INJMPP DCA INJMP /RESET THE CHARACTER SWITCH TAD INBUFP DCA INPTR /AND THE WORD POINTER JMP INCHRX /GO BACK AND MAKE BELIEVE / THIS NEVER HAPPENED INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE SMA CLA /WHICH TYPE WAS IT? JMP INBREC /END OF FILE - RESUME THY PROCESSING INERR, CLA CLL CML RAR /BADDIE - GIVE ERR RETURN WITH NEG AC EOFERR, JMP INRTRN INJMP, HLT /THIS IS THE 3 - WAY CHARACTER SWITCH JMP ICHAR1 JMP ICHAR2 ICHAR3, TAD INJMPP DCA INJMP TAD I INPTR IN200, AND IN7400 CLL RTR RTR /COMBINE THE HIGH-ORDER FOUR BITS OF TAD INCTLW RTR /THE TWO WORD TO FORM THE 3RD CHAR RTR ISZ INPTR JMP INCOMN ICHAR2, TAD I INPTR AND IN7400 DCA INCTLW /SAVE HI-ORDER BITS FOR THE 3RD CHAR ISZ INPTR /BUMP THE WORD POINTER ICHAR1, TAD I INPTR INCOMN, AND (377 TAD (-232 SNA /IS THE CHARACTER A ^Z? JMP GETNEW /YES - GET A NEW FILE TAD (232 /RESTORE THE CHARACTER ISZ ICHAR /BUMP RETURN TO NORMAL RETURN INRTRN, 0 /RESTORE CALLING FIELDS JMP I ICHAR /AND RETURN /IOPEN IS UNNECESSARY. INCHCT, -1 /INPUT CHARACTER COUNT INNEWF, CDF 10 /NEW INPUT FILE TAD (INDEVH+1 DCA INHNDL /INITIALIZE HANDLER ADDRESS TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY SNA /ANY MORE? JMP EOFERR /NO - OUT OF INPUT JMS FETCHH /FETCH DEVICE HANDLER INHNDL, 0 /WILL HOLD RETURN ADDR JMS PUTUSR /RESTORE CORE TAD I INFPTR AND (7760 /GET LENGTH PART OF WORD SZA /LENGTH OF 0 MEANS LENGTH >=256 TAD (17 /ADD HIGH-ORDER BITS CLL CML RTR RTR DCA INKTR /STORE LENGTH OF FILE ISZ INFPTR TAD I INFPTR DCA INREC /STORE STARTING RECORD NUMBER OF FILE ISZ INFPTR DCA INEOF /ZERO END-OF-FILE FLAG JMP INGBUF /GO READ INKTR=IOPEN INFPTR, 0 /INPUT FILE POINTER INEOF, 0 /INPUT END-OF-FILE INDICATOR PAGE
/ OOPEN: SET UP OUTPUT FILE OOPEN, 0 OU7600, 7600 / RDF / TAD OUCDIF / DCA OORETN TAD OU7601 DCA OUBLK TAD (OUDEVH+1 DCA OUHNDL CDF 10 TAD I OU7600 /GET DEV NUM WORD OF OUTPUT FILE ENTRY AND (17 /STRIP OFF ANY LENGTH INFO SNA /IS THERE AN OUTPUT DEVICE? JMP ONOFIL /NO - INHIBIT OUTPUT JMS FETCHH /FETCH DEVICE HANDLER OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY OUENTR, TAD I OU7600 JMS I (200 3 /ENTER OUTPUT FILE OUBLK, 7601 /REPLACED WITH STARTING BLOCK OUELEN, 0 /REPLACED WITH LENGTH OF HOLE JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH DCA OUCCNT DCA I (OUTINH /ZERO OUTPUT INHIBIT FLAG JMS I (OUSETP ISZ OOPEN OORETN, CDF CIF 10 /RESTORE CALLING FIELDS JMP I OOPEN OEFAIL, TAD I OU7600 AND (7760 /GET REQUESTED LENGTH SNA CLA /WAS IT AN INDEFINITE REQUEST JMP ONTERR /YES - CANNOT ENTER THE FILE TAD I OU7600 AND (17 /MAKE THE REQUESTED LENGTH ZERO DCA I OU7600 JMP OUENTR /TRY, TRY AGAIN ONTERR, CLA CLL CML RAR JMP OORETN /TAKE THE ERROR RETURN WITH AC<0 ONOFIL, ISZ I (OUTINH JMP OORETN /TAKE THE ERROR RETURN WITH AC=0 OUTDMP, 0 DCA OUCTLW /STORE THE CONTROL WORD CDF 10 TAD I (OUTINH SZA CLA JMP OUNOWR TAD OUCCNT SNA ISZ OUCTLW TAD OUBLK DCA OUREC /COMPUTE START BN OF THIS TRANSFER TAD OUCTLW CLL RTL RTL RTL AND (17 /COMPUTE THE NUMBER OF RECORDS TAD OUCCNT /UPDATE NUMBER OF BLOCKS IN THE FILE DCA OUCCNT TAD OUCCNT CLL CML TAD OUELEN SNL SZA CLA /DOES LENGTH EXCEED GIVEN LENGTH? JMP I OUTDMP /YES - SIGNAL OUTPUT ERROR OUCDIF, CDF CIF 0 CDF 10 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 JMP OUERRX /OUTPUT HANDLER ERROR OUNOWR, ISZ OUTDMP /BUMP OUTDMP TO NORMAL RETURN OUERRX, JMP I OUTDMP /.+1 IF ERROR RTN / OCLOSE: CLOSE THE OUTPUT FILE / RETURN TO .+1 IF ERROR / RETURN TO .+2 IF A.O.K. OCLOSE, 0 / RDF / TAD OUCDIF / DCA OCRET CDF 10 TAD I (OUTINH SZA CLA /IS OUTPUT INHIBITED? JMP OCISZ /YES - CLOSE IS A NOP JMS I (OTYPE AND (770 TAD (-PTP /CHECK FOR PAPER TAPE PUNCH OUTPUT SZA CLA /AND SKIP ^Z OUTPUT IF TRUE TAD (232 /OUTPUT A ^Z JMS I (OCHAR JMP OCRET JMS I (OCHAR JMP OCRET FILLLP, JMS I (OCHAR JMP OCRET JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE SPA CLA TAD (100 /IF ITS A DIRECTORY DEV FORCE A RECORD TAD (77 /BOUNDARY - OTHERWISE A HALF-RECORD AND I (OUDWCT SZA CLA /UP TO THE BOUNDARY YET? JMP FILLLP /NO - FILL WITH ZEROS TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT TAD (OUCTL&3700 SNA /A FULL WRITE LEFT? JMP NODUMP /YES, DON'T DO IT; THE ^Z IS ALREADY OUT TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT JMS OUTDMP JMP OCRET /AN ERROR OCCURRED WHILE DUMPING BUFFER NODUMP, TAD I OU7600 /GET THE DEVICE NUMBER JMS I (7700 /JUST A ONE-SHOT 4 /CLOSE THE OUTPUT FILE OU7601, 7601 /POINTER TO THE OUTPUT FILE NAME OUCCNT, 0 SKP /ERROR WHILE CLOSING THE FILE - BAD! OCISZ, ISZ OCLOSE OCRET, CDF CIF 10 /RESTORE CALLING FIELDS JMP I OCLOSE PAGE
OUSETP, 0 /ROUTINE TO INITIALIZE CHAR POINTERS TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS CIA /NEGATE IT (PAL10 BLOWS) DCA OUDWCT TAD (OUBUF DCA OUPTR /INITIALIZE WORD POINTER TAD OUJMPE DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH JMP I OUSETP / OCHAR: OUTPUT A CHAR TO OUTPUT DEVICE / RETURN .+1 IF ERROR OR NO ROOM / RETURN TO .+2 IF CHAR WENT OUT O.K. OCHAR, 0 AND (377 DCA OUTEMP RDF TAD (CDF CIF 0 DCA OUCRET TAD OUTINH SZA CLA /IS THERE AN OUTPUT FILE? JMP OUCOMN /NO - EXIT OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD ISZ OUJMP /BUMP THE CHARACTER SWITCH OUJMP, HLT /THREE WAY CHARACTER SWITCH JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTEMP CLL RTL RTL AND (7400 TAD I OUPOLD DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH /ORDER 4 BITS OF THIRD CHAR TAD OUTEMP CLL RTR RTR RAR AND (7400 TAD I OUPTR DCA I OUPTR /UPDATE 2ND WORD FROM LOW ORDER 4 BITS TAD OUJMPE DCA OUJMP /RESET SWITCH ISZ OUPTR ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS JMP OUCOMN TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE JMS I (OUTDMP /DUMP THE BUFFER JMP OUCRET /OUTPUT ERROR - GIVE ERROR RETURN JMS OUSETP /RE-INITIALIZE THE POINTERS JMP OUCOMN OCHAR2, TAD OUPTR DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO ISZ OUPTR /BUMP WORD POINTER TO 2ND WORD OCHAR1, TAD OUTEMP DCA I OUPTR OUCOMN, ISZ OCHAR OUCRET, HLT /RESTORE CALLING FIELDS JMP I OCHAR OUTEMP, 0 OUPOLD, 0 OUPTR, 0 OUJMPE, JMP OUJMP OUDWCT, 0 OUTINH, 0 / OTYPE: GET DEVICE TYPE OF OUTPUT DEVICE OTYPE, 0 RDF TAD (CDF CIF 0 DCA OTRTN CDF 10 TAD I (7600 AND (17 TAD (DCB-1 DCA OUTEMP TAD I OUTEMP OTRTN, HLT JMP I OTYPE / GET USR INTO CORE GETUSR, 0 TAD USRSTAT /IS USR ALREADY IN CORE? SNA CLA JMP I GETUSR /YES, JUST RETURN JMS I (7700 /NO, GET USR INTO CORE 10 DCA USRSTAT /USR NOW IN CORE JMP I GETUSR USRSTAT, 7777 /7777 NOT IN CORE; 0 IN CORE / PUT USR BACK OUT OF CORE FETCHD, /FETCH HANDLER DEVICE NUMBER PUTUSR, 0 /SAVES A LOC ON PAGE TAD USRSTAT /IS USR ALREADY OUT? SZA CLA JMP I PUTUSR /YES, JUST RETURN JMS I (200 /NO, PUT USR AWAY 11 STA DCA USRSTAT /NOW USR IS NOT IN CORE JMP I PUTUSR / FETCH DEVICE HANDLER FETCHH, 0 DCA FETCHD /SAVE DEVICE NUM TO FETCH JMS GETUSR /MAKE SURE USR IS IN CORE TAD I FETCHH /GET LOC TO LOAD HANDLER DCA FETCHA TAD FETCHD /GET DEVICE TO LOAD JMS I (200 1 /FETCH DEVICE HANDLER FETCHA, 0 /HANDLER ADDR GOES HERE HLT /HUH!! TAD FETCHA DCA I FETCHH /SAVE FOR ROUTINE TO USE ISZ FETCHH JMP I FETCHH /RETURN / CLOSE ROUTINE AS USER SEES IT XXCLOSE, 0 CLA RDF TAD (CDF CIF 0) DCA XXCLSR /SAVE USER CALLING FIELDS CDF 10 /WE'RE IN FIELD 1 JMS I (OCLOSE /CLOSE THE OUTPUT FILE JMP XXCLSE /CLOSE ERROR XXCLSR, HLT /RESET USER CALLING FIELDS JMP I XXCLOSE /RETURN IF NO ERROR PAGE
/ I/O PACK STARTS HERE / SETUP: SET UP AND CALL COMMAND DECODER / ARG1 IS USER END-OF-FILE ROUTINE / ARG2 IS ASSUMED COMMAND DECODER EXTENSION SETUP, 0 CLA RDF /GET USER FIELDS TAD (CDF CIF 00 DCA SETUPR /SAVE RETURN LOC TAD I SETUP /GET COMMAND DECODE EXTENSION ISZ SETUP DCA CDEXT /SAVE FOR CALL TO CD TAD I SETUP ISZ SETUP CDF 10 /NOW CHANGE TO THIS FIELD SNA JMP .+4 /GO SAVE ASSUMED LOCS DCA EOFRTN /SAVE USER RETURN LOC TAD SETUPR /ALSO SAVE HIS CALLING FIELD JMP .+4 TAD (XXXEOF /ASSUMED E-O-F PROCEDURE DCA EOFRTN TAD (CDF CIF 10) DCA EOFR /SAVE FIELD RETURN, TOO JMS GETUSR /GET USR IN CORE CIF 10 JMS I (200 5 /CALL COMMAND DECODER CDEXT, 0 /ASSUMED EXTENSION HERE TAD I (7600) SZA CLA /IS THERE AN OUTPUT FILE? JMP SETOPN /YES, GO OPEN I/O FILES DCA TTYDEV+1 /NO, ASSUME TTY: AS OUTPUT JMS I (200 12 /INQUIRE WITHOUT FETCH TTYDEV, 5524 /COMPRESSED CODE FOR TTY 0 /DEVICE NUM GOES HERE 0 /ADDR IF IN CORE GOES HERE HLT /WHAT - NO TTY: !!! TAD TTYDEV+1 /GET DEVICE NO. DCA I (7600) /SAVE AS OUTPUT DEVICE NO. SETOPN, JMS I (OOPEN /INITIALIZE OUTPUT ROUTINE SMA CLA JMP .+3 TAD (ERR5) JMP ERRPRT /IS AN ERROR MESSAGE JMS I (IOPEN /INITIALIZE INPUT ROUTINE JMS I (OTYPE /GET OUTPUT DEV TYPE AND (770 /PHYSICAL DEVICE TYPE TAD (-PTP) /IS IT THE PAPER TAPE PUNCH? SZA CLA JMP SETUPX /NO, GO RETURN TAD (-200) DCA XXTEMP /YES, NOW OUTPUT SOME LEADER/TRAILER JMS XXPUT /OUTPUT IT ISZ XXTEMP JMP .-2 SETUPX, JMS PUTUSR /RELEASE USR FROM CORE SETUPR, CDF CIF 00 /CHANGE TO USER FIELDS JMP I SETUP /AND RETURN / GET ROUTINE AS USER SEES IT XXTEMP, XXGET, 0 CLA RDF TAD (CDF CIF) DCA XXGETR /SAVE FIELD FRO M WHENCE WE WERE CALLLED CDF 10 /WE'RE IN FIELD 1 JMS I (ICHAR) JMP .+3 /ERROR RETURN XXGETR, HLT /CHANGE FIELDS BACK TO USER JMP I XXGET /O.K., RETURN WITH CHAR IN AC SMA CLA /FINAL END-OF-FILE? JMP EOFGO /YES, GO TO USER EXIT ROUTINE XXGETE, TAD (ERR4) /NO, IS HARDWARE ERROR JMP ERRPRT / PUT AS USER SEES IT XXPUT, 0 AND (377) /JUST WANT ASCII CHAR DCA XXPUTC /SAVE OUTPUT CHAR RDF TAD (CDF CIF) DCA XXPUTR /SAVE CALLING FIELDS CDF 10 /WE'RE IN FIELD 1 TAD XXPUTC JMS I (OCHAR /OUTPUT THE CHAR JMP XXPUTE /ERROR ON OUTPUT TAD XXPUTC TAD (-214 /SPECIAL CHAR CHECKING SNA JMP XXPFF /FORM FEED IAC /213 SNA JMP XXPVT /VERTICAL TAB TAD (213-211 SNA CLA JMP XXPHT /HORIZONTAL TAB XXPUTR, HLT /RESET USER FIELDS JMP I XXPUT /RETURN O.K. XXPFF, TAD (11-5 /FORM FEED, OUTPUT 9 ZEROS XXPVT, TAD (5-2 /VERTICAL TAB, OUTPUT 5 RUBOUTS XXPHT, TAD (2 /HORIZONTAL TAB, OUTPUT 2 RUBOUTS CIA JMS XXRUB /OUTPUT RUBOUTS OR ZEROES JMP XXPUTR XXPUTC, 0 /SAVE CHAR HERE PAGE
/ PUT OR CLOSE ERROR ROUTINE XXCLSE, XXPUTE, SMA CLA /HARD OR SOFT ERROR? TAD (ERR0-ERR2 /SOFT: ERR0 TAD (ERR2) /HARD: ERR2 JMP ERRPRT /PRINT ERROR MESSAGE / END-OF-FILE ROUTINE EOFGO, EOFR, HLT /CHANGE TO FIELD JMP I .+1 /THEN EXECUTE E-O-F PROCEDURE EOFRTN, XXXEOF XXXEOF, JMS XXCLOSE XXXSGO, CDF CIF 00 /PS/8 IN FIELD 0 JMP I XXXCLA /RETURN TO SYSTEM / OUTPUT NO. OF RUBOUTS OR NULLS IN AC / UNLESS OUTPUT IS TO A DIRECTORY DEVICE XXRUB, 0 DCA XXXTMP /SAVE COUNT JMS I (OTYPE /GET TYPE OF OUTPUT DEV SPA CLA JMP I XXRUB /DIRECTORY DEVICE - DON'T BOTHER XXRUBL, TAD XXPUTC /GET THE CHAR TAD (-214) SNA CLA /IS THE CTRL CHAR A FORM-FEED? IAC /YES - OUTPUT BLANK TAPE INSTEAD TAD (377 /OTHERWISE, OUTPUT RUBOUTS JMS I (OCHAR /OUTPUT THEM JMP XXPUTE /ERROR RETURN ISZ XXXTMP JMP XXRUBL /LOOP FOR THE REQUIRED COUNT JMP I XXRUB XXXTMP, 0 /USED AS COUNTER AND POINTER XXXTTY, 0 TLS TSF JMP .-1 XXXCLA, 7600 /LOC TO RETURN TO PS/8 SYSTEM JMP I XXXTTY /NOT DEVICE INDEPENDENT - TOUGH BLEEP /ERROR MESSAGE PRINTOUT ROUTINE ERRPRT, DCA XXXTMP /SAVE LOC OF ERROR MESSAGE ERLP, TAD I XXXTMP RTR RTR RTR JMS ERPCH /PRINT HIGH-ORDER CHARACTER TAD I XXXTMP JMS ERPCH /PRINT LOW-ORDER CHARACTER ISZ XXXTMP JMP ERLP ERPCH, 0 AND (77 SNA JMP ERCRLF /0 CHARACTER TERMINATES TAD (-37 SNA JMP FILENR /"_" CHARACTER IS SPECIAL SPA TAD (100 TAD (237 JMS XXXTTY /OUTPUT THE CHAR JMP I ERPCH FILENR, TAD ("# JMS XXXTTY TAD INFPTR /GET PTR TO CURRENT INPUT FILE TAD (321 /MAGIC NUMBER CLL RAR JMP FILENR-2 ERCRLF, TAD (215 JMS XXXTTY TAD (212 JMS XXXTTY JMP XXXSGO /RETURN TO PS/8 SYSTEM ERR2, TEXTZ /OUTPUT ERROR/ ERR0, TEXTZ /NO ROOM FOR OUTPUT FILE/ ERR4, TEXTZ /INPUT ERROR, FILE_/ ERR5, TEXTZ /CAN'T OPEN OUTPUT FILE/ PAGE IFG .-7600 <PRINTX FIELD 1 IS TOO LONG > $-$-$



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