File DIRECT.PA (PAL assembler source file)

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

/ OS/8 V3 DIRECT
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 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 CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/

/JANUARY 17, 1974 H.J. /DIRECTORY LISTING PROGRAM PTR=20 CNT=21 INFPTR=22 OUHAND=23 INHAND=24 EPTR=26 INSCNT=27 TEMP=30 OKFLAG=31 IFCNT=32 OSWTCH=33 INFWDS=34 BDPTR=35 GPTR1=36 XR=10 XR1=11 XR2=12 AC2=CLA CLL CML RTL AC4000=CLA CLL CML RAR ACM2=CLA CLL CMA RAL ACM3=CLA CLL CMA RTL ALTOPT=7642 OPT1=7643 OPT2=7644 EQLS=7646 /EQUALS OPTION DATE=7666 BUF=5200 /THE FILE OUTPUT BUFFER /5 BLOCKS LONG, TO 7577
FIELD 1 *2000 SKP CLA /NORMAL ENTRY JMP MSTRT /CHAIN ENTRY CDCALL, JMS I (200 /SEE WHAT THE PERSON WANTS 5 STAR, 5200 /IN SPECIAL MODE MSTRT, TAD I (OPT2 /GET OPTION /W RTR SNL CLA /SKIP FOR VESION NUMBER JMP EQUALT JMS I (ERROR /PRINT VERSION NUMBER VERNO+40 TAD (215 JMS I (TYPE /SET UP FOR MULTIPLE ENTRIES ON A LINE EQUALT, TAD I (EQLS /EQUALS OPTION WORD SPA /MUST BE POSITIVE CLA CLL CML RTR /SET AC LARGE POSITIVE TAD (-10 /CHECK LEGALITY OF OPTION SMA SZA CLA /SKIP IF GOOD JMP BADEQ /SUBSTITUTE .DI IF NULL EXTENSION TAD I (7604 /GET EXTENSION SNA /SKIP IF GIVEN TAD (0411 /.DI DCA I (7604 /PUT EXTENSION BACK / CHECK FOR ? IN OUTPUT SPECIFICATION TAD (-10 DCA CNT /CNT HAVING -10 PUTS US AT FIRST CHAR S1C, TAD (7605 JMS I (GTSXBT /GET A CHAR TAD (-"?!7700 /CHECK FOR ? SNA JMP QINO TAD ("?-"* SNA CLA JMP AINO ISZ CNT JMP S1C / CHECK FOR EMBEDDED * IN ANY SPECIFICATION TAD (7605 S4L, DCA PTR TAD (-10 DCA CNT ACK, TAD PTR JMS I (GTSXBT TAD (-"*!7700 SZA CLA JMP CNTUP AC2 TAD CNT SZA TAD (6 SNA CLA ISZ CNT TAD PTR JMS I (GTSXBT SZA CLA JMP AINO CNTUP, ISZ CNT JMP ACK TAD I PTR SNA CLA JMP I (NULLCK TAD (5 TAD PTR JMP S4L /THIS IS THE END OF OPERATION CODE /IT CLOSES THE FILE AND HANDLES RETURNS ENDCHK, ISZ I (ECHO TAD (232 OLOOP, JMS I (OUTCHR TAD I (OUWDCT /GET -WORDS LEFT IN BUFFER AND (177 /CHECK AGAINST NEW BUFFER # SZA CLA /SKIP IF JUST DUMPED ONE JMP OLOOP /KEEP GOING TO DUMP ONE TAD I (OUWDCT TAD (1200 /DONT DUMP IF AT END SZA CLA JMS DUMP /DUMP BUFFER TAD I (7600 JMS I (200 4 7601 CLEN, 0 JMP CLOERR ABORT, TAD I (ALTOPT SMA CLA JMP I (CDCALL CIF CDF 0 JMP I (7605 BADEQ, JMS I (ERROR BIGEQ+40 JMP I (EOLIN PAGE
NULLCK, TAD (7201 DCA AO2 TAD (7201 DCA AO1 TAD I (7600 SNA JMP TTYHND JMS I (200 1 AO1, 7201 HLT TAD AO1 JMP CMN TTYHND, TAD (2424 DCA TTY1 TAD (3100 DCA TTY2 JMS I (200 1 TTY1, 0 TTY2, 0 AO2, 7201 JMP I (IDBLVT TAD TTY2 DCA I (7600 TAD AO2 CMN, DCA OUHAND TAD (7601 DCA BLCK TAD I (7600 JMS I (200 3 BLCK, 7601 LENGTH, 0 JMP I (NOROOM TAD BLCK DCA I (BLCKN TAD (BUF DCA I (OCPTR TAD (RPOS1 DCA I (RPOS TAD (-1200 /NUMBER OF WORDS IN BUFFER DCA I (OUWDCT DCA I (CLEN TAD I (7605 SNA AC2 DCA I (7605 TAD (7605 DOMOIN, DCA INFPTR TAD (6601 DCA AI1 TAD I INFPTR SNA JMP I (ENDCHK JMS I (200 1 AI1, 6601 HLT TAD AI1 DCA INHAND TAD (OUTCHR DCA OSWTCH JMS I (CRLF TAD I (DATE JMS I (PDATE JMS I (CRLF JMS I (CRLF DCA I (ECOUNT CMA TAD I (EQLS SMA /SET UP NEGATIVE COUNT CMA DCA I (ALNCNT /SAVE FOR LATER TAD I (ALNCNT /SAVE FOR LATER DCA I (LNCNT /SAVE FOR LATER JMP I (PG1 AINO, JMS I (ERROR ILLA+40 JMP EOLIN QINO, JMS I (ERROR ILLQ+40 EOLIN, TAD (215 /COME HERE TO ABORT DIRECTORY JMS I (TYPE /AND PRINT CRLF JMP I (ABORT /ABORT OPERATION AND GOTO ENDUP PAGE
DIRCTY=0 /LOCATION OF INPUT DIRECTORY PG1, TAD I INFPTR TAD (7757 DCA TEMP TAD I TEMP SMA CLA JMP NFIN CIF 0 JMS I INHAND 1400 DIRCTY 1 JMP INDERR CDF 0 /CODE TO CHECK FOR TAD I (DIRCTY /LEGALITY OF DIRECTORY CMA CLL TAD I (DIRCTY+2 CDF 10 SNL TAD (7700 SZL CLA JMP BIDIR /DIRECTORY IS BAD / COUNT NUMBER OF INPUTS FROM SAME DEVICE TAD INFPTR SKP GETCNT, TAD PTR IAC DCA PTR TAD I PTR SZA CLA JMP NOSUB TAD (5200 DCA I PTR TAD (3 TAD PTR DCA TEMP TAD (5200 DCA I TEMP NOSUB, TAD PTR TAD (4 DCA PTR ISZ CNT TAD I (OPT2 AND (10 SZA CLA JMP NOPTIM TAD I PTR CIA TAD I INFPTR SNA CLA JMP GETCNT NOPTIM, TAD CNT CIA DCA INSCNT TAD PTR DCA I (MOIN DCA BDPTR JMP I (NBLOCK BIDIR, JMS I (ERROR BADDIR+40 JMP I (EOLIN NFIN, JMS I (ERROR NFLEIN+40 JMP I (EOLIN INDERR, JMS I (ERROR BADIRD+40 JMP I (EOLIN /THIS IS THE ERROR MESSAGE PRINTER ERROR, 0 ISZ I (ECHO CLA CLL TAD (TYPE DCA OSWTCH TAD (-100 DCA CNT PLOOP, TAD I ERROR JMS I (GTSXBT DCA DFLAG TAD DFLAG JMS I (CONVTP ISZ CNT TAD DFLAG SZA CLA JMP PLOOP ISZ ERROR JMP I ERROR DFLAG, 0 PAGE
/THIS IS THE SUPERQUASIFACETED DIRECTORY PATTERN MATCHING ROUTINE /THE INPUT DIRECTORY IS SEARCHED HERE, IF A MATCH /IS FOUND USING THE INPUT GROUPING /GOT1 GETS CONTROL WITH -BLOCKS IN THE AC NBLOCK, TAD BDPTR /POINTER TO START OF DIR BLOCK DCA XR CDF 0 TAD I XR /GET BLOCK NUMBER FIRST FILE DCA BLOCK TAD I XR /NEXT SEGMENT NUMBER DCA LFLAG /IF IT 0 WE AT END ISZ XR /SKIP TENTATIVE FILE WORD TAD I XR /GET -NUMBER OF INFO WORDS CIA /MAKE POSITVE DCA INFWDS TAD XR /POINT TO FIRST IAC /ENTRY DCA EPTR BLOOP, TAD I EPTR /GET FILENAME WORD CDF 10 SNA CLA /SKIP IF FILE HERE JMP EMPTY /NO... ITS REALLY AN EMPTY TAD INSCNT /SET NUMBER OF INPUT TO LOOK DCA NCNT /AT ALL AT ONCE DCA MATFLG /CLEAR MATCH FLAG TAD INFPTR /ADDRESS OF FIRST INPUT SKP MN1, TAD GPTR2 /ADDRESS OF CURRENT INPUT TAD (5 /GTSXBT SUBR REQUIRES US TO DCA GPTR2 /POINT TO END OF FIELD TAD EPTR /POINT DIRECTORY POINTER TO TAD (4 /END OF ENTRY FOR SAME REASON DCA GPTR1 TAD GPTR1 /SET EPNEXT TO POINT TO TAD INFWDS /MINUS NUMBER OF BLOCKS IN DCA EPNEXT /FILE WORD TAD (-10 /NUMBER OF CHARS TO LOOK AT WILDNM, DCA CNT
MLP, TAD GPTR2 /OK - GET A CHARACTER FROM JMS I (GTSXBT /STRING TAD (-"*!7700 /IS IT AN * SNA /SKIP IF NOT * JMP WILDA /YEP... ITS A WILD CARD TAD ("*-"? /IS IT A ? SNA /SKIP IF NOT JMP WILD /YES... FORCE MATCH ON THIS CHAR TAD ("?&77 /RESTORE VALUE CIA /NEGATE DCA CHAR /AND SAVE TAD GPTR1 /NOW GET CHAR FROM DIRECTORY CDF 0 JMS I (GTSXBT CDF 10 TAD CHAR /DO CHARS MATCH SZA CLA /SKIP IF THEY DO JMP NM1 /NO MATCH ON THIS INPUT WILD, ISZ CNT /BUMP COUNT OF CHARS & POINTER JMP MLP /COMPARE ALL 8 MEXT, ISZ MATFLG /A MATCH!!!!!!! NM1, CLA /WILD CARD COMES HERE WITH ICHY AC ISZ NCNT /HAVE WE CHECKED GROUP OF INPUTS JMP MN1 /NO CHECK WHOLE GROUP TAD MATFLG /HAVE THERE BEEN ANY MATCHES SZA CLA /SKIP IF NOT TAD (4 /WILL INVERT /V SWITCH TAD I (OPT2 /ADD SWITCH AND (4 /ISOLATE IT CDF 0 /SKIPS IF INPUT DIRECTORY ENTRY IS NOT CANDIDATE /THAT IS - IF A MATCH WAS NOT FOUND BETWEEN ANY /OF THE INPUTS AND /V WAS NOT SPECIFIED OR /A MATCH WAS FOUND AND /V WAS SPECIFIED /THIS ALLOWS /V TO MEAN EVERYTHING BUT... SZA CLA TAD I EPNEXT /GET -NUMBER OF BLOCKS CDF 10 SZA /SKIPS IF TENTATIVE OR NOT CANDIDATE JMP I (GOT1 /PROCESS FILE NENT, TAD EPNEXT /POINT EPTR TO BLOCK DCA EPTR /COUNT OF FILE JMP NEMPTY EMPTY, ISZ EPTR /ON EMPTY MAKE EPTR POINT TO BLOCK COUNT JMS I (HEMPTY /HANDLE EMPTY SLOTS NEMPTY, CDF 0 TAD I EPTR /GET BLOCK COUNT CIA /MAKE POSITIVE TAD BLOCK DCA BLOCK /KEEP SUM ISZ EPTR /POINT TO NEXT ENTRY ISZ I BDPTR /POINTS TO -NUMBER OF ENTRIES JMP BLOOP /NOT DONE WITH SEGMENT CDF 10 TAD (400 /BUMP TO NEXT SEGMENT TAD BDPTR DCA BDPTR TAD LFLAG /DID WE PROCESS LAST SEGMENT SZA CLA /SKIP IF WE DID JMP NBLOCK /PROCESS NEW SEGNENT JMP I (SAYNON
/HANDLE WILD CARDS WILDA, TAD CNT /GET CURRENT CHAR POSITION TAD (6 /ADD SIZE OF FILENAME SPA /SKIP IF IN EXTENSION FIELD JMP WILDNM /THIS BUMPS TO EXTENSION JMP MEXT /THIS MEANS IT HAS TO BE A MATCH CHAR, 0 EPNEXT, 0 GPTR2, 0 LFLAG, 0 NCNT, 0 BLOCK, 0 MATFLG, 0 PAGE
GOT1, DCA IFCNT /-# OF BLOCKS IN AC JMS I (DATCHK /VERIFY /C AND /O SWITCHES TAD (OUTCHR DCA OSWTCH TAD I (OPT2 SPA CLA JMP I (NENT JMS I (ADDINF /SEE IF ADDITIONAL INFO WORDS TAD I (OPT2 AND (100 /IS /R USED SNA CLA JMP NOR TAD INFPTR /FILL IN *.* FOR FILENAME IAC DCA TEMP TAD (5200 /* DCA I TEMP ISZ TEMP ISZ TEMP ISZ TEMP /POINT TO EXTENSION TAD (5200 /.* DCA I TEMP /SUBSTITUTE IT NOR, TAD GPTR1 CDF JMS I (PNMSUB TAD I (OPT1 RTL SNL CLA JMP SKPBLK JMS I (CONVTP TAD I (BLOCK JMS I (OPRNT SKPBLK, TAD I (OPT1 AND (100 SZA CLA JMP NODATE TAD IFCNT CIA JMS I (PRNUM TAD INFWDS SNA CLA JMP NODATE CDF TAD I GPTR1 CDF 10 JMS I (PDATE NODATE, ISZ LNCNT /IS LINE FILLED? JMP MOROLN /NO JMS CRLF TAD ALNCNT /RESET COUNT DCA LNCNT JMP I (NENT MOROLN, TAD (5 /OUTPUT 5 BLANKS JMS I (BLANK JMP I (NENT /BLANKS ROUTINE BLANK, 0 CIA DCA BLTMP JMS I (CONVTP ISZ BLTMP JMP .-2 JMP I BLANK BLTMP, 0 ALNCNT, 0 LNCNT, 0 OUTCHR, 0 JMP I RPOS RPOS1, DCA I OCPTR JMS RPOS RPOS2, DCA HOLD JMS RPOS RPOS3, RTL RTL DCA HOLD2 TAD HOLD2 AND (7400 TAD I OCPTR DCA I OCPTR ISZ OCPTR TAD HOLD2 RTL RTL AND (7400 TAD HOLD DCA I OCPTR ISZ OCPTR ISZ OUWDCT SKP JMS DUMP JMS RPOS JMP RPOS1 RPOS, RPOS1 JMP I OUTCHR OUWDCT, 0 OCPTR, 0 HOLD, 0 HOLD2, 0 PAGE
GTSXBT, HLT CLL RAL TAD CNT CML RAR DCA TEMP TAD I TEMP SNL JMS ROTR6 AND (77 JMP I GTSXBT ROTR6, 0 RTR RTR RTR JMP I ROTR6 CONVTP, HLT SZA TAD (240 AND (77 TAD (240 JMS I OSWTCH JMP I CONVTP TYPE, HLT DCA HOLD1 TAD (217 JMS I (CTYPE SKP DCA ECHO TAD ECHO SNA CLA JMP I TYPE JMS I (CINTER SKP JMP I (ABORT TAD HOLD1 JMS TTY JMP I TYPE HOLD1, 0 TTY, 0 TLS TSF JMP .-1 TAD (-215 SZA CLA JMP I TTY TAD (12 JMP TTY+1 ECHO, 1 OPRNT, 0 DCA GTSXBT TAD (-4 DCA CNT OPLP, TAD GTSXBT RTL CLL RAL DCA GTSXBT TAD GTSXBT RAL AND (7 TAD (260 JMS I (CONVTP ISZ CNT JMP OPLP JMP I OPRNT /ROUTINE TO MAKE SURE USER SPECIFIED //C AND /O SWITCHES CAUSE CORRECT MATCH WITH DATE DATCHK, 0 TAD I (OPT1 /CHECK /C JMS MDATE NOP /RETURN HERE WITH AC=0 IF NO /C SZA CLA /RETURN HERE WITH AC=0 IF DATES MATCH JMP I (NENT /DATES DONT MATCH AND /C GIVEN TAD I (OPT2 /CHECK /V JMS MDATE CMA CLA /SET AC=-1 IF NO /V SNA CLA /RETURN HERE AC=0 IF DATES SAME JMP I (NENT /DATES SAME WITH /V-IGNORE FILE JMP I DATCHK /CONTINUE MDATE, 0 //O AND /V ARE AC2 RTL /IS IT OPTION ON? SMA CLA /SKIP IF IT IS JMP I MDATE /NO- RETURN WITH 0 AC ISZ MDATE /SKIP RETURN CDF 0 TAD I GPTR1 /GET DATE WORD CIA CDF 10 TAD I (DATE /COMPARE WITH MONITORS, 0 IF = JMP I MDATE PAGE
PRNUM, 0 DCA NUM TAD (PWRTEN DCA PTR PRNTLP, ISZ MPNTCNT SKP AC4000 DCA PNTFLG DCA DIG DIVLPY, TAD I PTR SNA JMP I PRNUM CLL TAD NUM SNL JMP PRTDIG DCA NUM ISZ DIG JMP DIVLPY PRTDIG, CLA TAD DIG TAD PNTFLG SNA STPBLK, JMP PRBLNK TAD (260 JMS I (CONVTP CLA CLL CML RAR NXTPWR, ISZ PTR JMP PRNTLP PRBLNK, JMS I (CONVTP JMP NXTPWR NUM, 0 PNTFLG, 0 DIG, 0 MPNTCNT,0 PWRTEN, -1750;-144;-12;-1;0 PDATE, 0 SNA JMP FDATE DCA DATEY ISZ I (STPBLK JMS I (CONVTP ACM3 DCA I (MPNTCNT TAD DATEY RTR RAR AND (37 JMS I (PRNUM TAD ("- JMS I (CONVTP TAD DATEY CLL RTL RTL RAL AND (17 DCA PRNUM TAD PRNUM TAD PRNUM TAD PRNUM TAD (DATTAB-4 DCA XR ACM3 DCA CNT TAD I XR JMS I OSWTCH ISZ CNT JMP .-3 TAD ("- JMS I OSWTCH TAD DATEY AND (7 TAD (106 JMS I (PRNUM CLA CMA TAD I (STPBLK DCA I (STPBLK JMP I PDATE FDATE, TAD I (LNCNT /SEE IF AT END OF LINE? IAC /AC=0 NOW IF YES SNA CLA /OUT PUT SPACES TO FILL DATE SLOT JMP I PDATE /NO NEED FOR SPACES IF AT END OF LINE TAD (12 /10 SPACES IS WHATS NEEDED JMS I (BLANK JMP I PDATE /LEAVE DATEY, 0 PAGE
CTYPE, 0 DCA T2 TAD (200 KRS CIA TAD T2 SNA CLA KSF JMP I CTYPE KCC TAD ("^ JMS I (TTY TAD T2 TAD (100 JMS I (TTY TAD (215 JMS I (TTY ISZ CTYPE JMP I CTYPE T2, 0 CINTER, 0 TAD (203 JMS CTYPE JMP UPPCK JMP SPURGE UPPCK, TAD (220 JMS CTYPE JMP I CINTER SKP SPURGE, CMA DCA I (ALTOPT ISZ CINTER JMP I CINTER HEMPTY, 0 CDF 0 TAD I EPTR CDF 10 CIA TAD ECOUNT DCA ECOUNT TAD I (OPT1 AND (200 SZA CLA JMP LISTEM TAD I (OPT2 SMA CLA JMP I HEMPTY LISTEM, TAD I (OPT1 AND (10 /IS /I GIVEN SNA CLA /IF YES PAD BY ADDIDTIONAL INFO WORDS JMP EMSG CLA CMA TAD INFWDS /NUMBER OF SPACES=5*(INFWDS-1) DCA DFLAG TAD DFLAG RTL CLL TAD DFLAG SZA /DONT OUTPUT 4096 BLANKS JMS I (BLANK EMSG, TAD (EMPTYM-1 DCA XR1 TAD (-11 DCA CNT EOLP, TAD I XR1 JMS I (OUTCHR ISZ CNT JMP EOLP TAD I (OPT1 RTL SNL CLA JMP SKIPES JMS I (CONVTP TAD I (BLOCK JMS I (OPRNT SKIPES, CDF 0 TAD I EPTR CDF 10 CIA JMS I (PRNUM ISZ I (LNCNT /AT END OF LINE JMP WORK /NO. HAVE TO DO BLANK PADDING JMS I (CRLF TAD I (ALNCNT /RESET COUNT DCA I (LNCNT JMP I HEMPTY WORK, TAD (5 /FORCES 5 BLANKS JMS I (BLANK TAD I (OPT1 AND (100 /CHECK FOR /F SZA CLA /ADD 10 SPACES TO COVER DATE JMP I HEMPTY TAD (12 JMS I (BLANK JMP I HEMPTY ECOUNT, 0 PAGE
PNMSUB, 0 DCA NMEPLC RDF TAD (CDF DCA FLDFUD TAD (-10 DCA CNT PNLOOP, TAD NMEPLC FLDFUD, HLT JMS I (GTSXBT CDF 10 JMS I (CONVTP TAD (3 TAD CNT SZA CLA JMP .+3 TAD (". JMS I OSWTCH ISZ CNT JMP PNLOOP JMP I PNMSUB NMEPLC, 0 WRTERR, JMS I (ERROR OUERR+40 JMP I (EOLIN CLOERR, JMS I (ERROR CLERR+40 JMP I (EOLIN NOROOM, JMS I (ERROR SPRBLM+40 JMP I (EOLIN IDBLVT, JMS I (ERROR NOTTY+40 JMP I (EOLIN SAYNON, TAD (OUTCHR DCA OSWTCH JMS I (CRLF JMS I (CRLF TAD (-4 /FORCE PRINTING OF ONLY 1 DIGIT DCA I (MPNTCNT /FOR 0 FREE BLOCKS TAD I (ECOUNT JMS I (PRNUM JMS I (CONVTP TAD (FRBLM-1 DCA XR1 TAD (-13 DCA CNT FRBLP, TAD I XR1 JMS I (OUTCHR ISZ CNT JMP FRBLP JMS I (CRLF TAD (14 /FORM FEED JMS I (OUTCHR TAD MOIN JMP I (DOMOIN MOIN, 0 CRLF, 0 TAD (215 JMS OUTCHR TAD (212 JMS OUTCHR JMP I CRLF /ROUTINE TO DUMP ADDITIONAL INFO WORDS IF WANTED ADDINF, 0 TAD I (OPT1 AND (10 /CHECK /I SWITCH SNA CLA JMP I ADDINF CLA CMA TAD INFWDS /GET NUMBER SPA SNA /MUST BE 2 OR MORE TO PRINT JMP CLARET /RETURN CIA DCA CNTX TAD GPTR1 IAC /BUMP TO FIRST ONE DCA PGPTR1 ADDLP, CDF 0 TAD I PGPTR1 /GET WORD CDF 10 JMS I (OPRNT /PRINT IT IN OCTAL JMS I (CONVTP /OUTPUT A BLANK ISZ PGPTR1 /BUMP ISZ CNTX /COUNT NUMBER JMP ADDLP CLARET, CLA /RETRN JMP I ADDINF PGPTR1, 0 CNTX, 0 PAGE
VERNO, TEXT /DIRECT V3 / BADIRD, TEXT /ERROR READING INPUT DIRECTORY/ SPRBLM, TEXT /NO ROOM FOR OUTPUT FILE/ OUERR, TEXT /ERROR WRITING FILE/ CLERR, TEXT /ERROR CLOSING FILE/ NFLEIN, TEXT /DEVICE DOES NOT HAVE DIRECTORY/ BIGEQ, TEXT /EQUALS OPTION BAD/ ILLQ, TEXT /ILLEGAL ?/ ILLA, TEXT /ILLEGAL */ BADDIR, TEXT /BAD INPUT DIRECTORY/ NOTTY, TEXT /THERE IS NO HOPE-THERE IS NO TTY HANDLER IN YOUR SYSTEM/ EMPTYM, "<;"E;"M;"P;"T;"Y;">;240;240 FRBLM, "F;"R;"E;"E;240;"B;"L;"O;"C;"K;"S "B;"A;"D /PROTECTION AGAINST BAD DATE DATTAB, "J;"A;"N "F;"E;"B "M;"A;"R "A;"P;"R "M;"A;"Y "J;"U;"N "J;"U;"L "A;"U;"G "S;"E;"P "O;"C;"T "N;"O;"V "D;"E;"C "B;"A;"D /PROTECTION AGAINST BAD DATE "B;"A;"D /PROTECTION AGAINST BAD DATE "B;"A;"D /PROTECTION AGAINST BAD DATE DUMP, 0 TAD I (LENGTH /GET LENGTH AVAILABLE SNA /IF ZERO ITS NON FILE STRUCTURE JMP NOMATR /IF ZERO DOESNT MATTER CLL TAD I (CLEN /ADD CURRENT SIZE TAD (5 /ADD # OF BLOCKS SZL CLA /WE ARE OK IF SKIPS JMP I (NOROOM TAD I (CLEN /UPDATE CLOSING LENGTH TAD (5 /BY NUMBER OF BLOCKS DCA I (CLEN /SAVE FOR CLOSE NOMATR, TAD OUWDCT TAD (5210 DCA CTLWD CIF 0 JMS I OUHAND CTLWD, 5210 BUFAD, BUF BLCKN, 0 JMP WRTERR TAD (5 TAD BLCKN /UPDATE BLOCK # BY 5 DCA BLCKN TAD (-1200 DCA OUWDCT TAD BUFAD DCA OCPTR JMP I DUMP PAGE
*4600 JMS INIT JMS INIT JMP I (2000 JMP I (2001 INIT, 0 ISZ INIT CLA CLL TAD (2000 CDF 0 DCA I (7745 TAD (6403 DCA I (7746 CDF 10 JMP I INIT $



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