File CONVRT.PA (PAL assembler source file)

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

/PDP-8 PS/8 DECTAPE CONVERSION	CONVRT.003
/CONVERTS DMS FORMAT TAPES TO PS/8 FORMAT TAPES
/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.

*1
/CONSTANTS
C7700,	7700
C77,	77
C777,	777
	NOP	/ODT
	NOP
	NOP
M77,	-77
C100,	100
C240,	240
DNKT,	-31
M2,	-2
C20,	20
C177,	177

K4,	4
K3,	3
M1,	-1
K40,	40
M177,	-177
K17,	17
MC,	-5
M8,	-10
K4040,	4040
K3737,	3737
MODE,	-2
M201,	-201
K13,	13
M214,	-214
M2613,	-2613
BUFR,	4277
ENTAPE,	2701
C37,	37
PARAM,	7643
PARAM1,	7644
C200,	200
M13,	-13
STBLK1,	STBLK
	STBLKI=STBLK1

/VARIABLE DATA

K7600,	7600
TPWD,	0
TEMP,	0
FBLOK,	0
DEVNO,	0
FFOUND,	0
FILPTR,	7605
BUFF,	4300
SWITCH,	0
SRCHMD,	-2

/POINTERS TO OTHER PLACES

DNLUK,	DNSRCH
BUFRD,	GETCHR
OCHARI,	OCHAR
EOT1,	EOT
CM203,	-203
FORMI,	FORM
RSTRTI,	START
DNRDI,	DNRD
OUTL1,	OUTL
RESTI,	RESETI
IDTPI,	IDTAPE
OUTCRI,	OUTCR
LSTI,	LST
ROTI,	ROTATE
FILTYP,	DMSAS
TS8ASC,	TS8AS
NEWBLI,	NEWBLK
TSSCH,	TS8CHR

TSTBLI,	TSTBLK
NCORAD,	COREAD
NDIRBL,	NUDBLK
/MORE CONSTANTS AND SOME VARIABLES, TOO!

OOPENI,	OOPEN
BLKCNT,	-201


TADDNT,	TAD DNT1
INWORD,	DNT1

OCLS1,	OCLOSE
OCLSI=OCLS1

RSTRT1=RSTRTI

ERLOC,	0
	JMP I .+1
	ERPRT


ERTBL,	-FTLOPT
	-NOTAPE
	-TPFAIL
	-NOFILE
	-TPFL2
	-FATOPT
	-FULDEV
	-ABNEOF
	-CLOSFL
	-OHDERR
	-NDVERR
	-BADINP

ERMSGL,	MSG2-1
	MSG4-1
	MSG5-1
	MSG6-1
	MSG5-1
	MSG7-1
	MSG3-1
	MSG8-1
	MSG9-1
	MSG10-1
	MSG10-1
	MSG4-1

PTR1,	ERTBL
PTR2,	ERMSGT
SAM1,	2201
DN1,	2000
SMBLK1,	2201
DNCORE,	2000
FWRDI,	FUNWRD
FWRD2I,	FWRD
MONITO,	MONITR
GBLK1,	GBLK

OLDOUT,	OUTL
DNT1,	0
DNT2,	0
DNT3,	0
DNT4,	0
DCADNT,	DCA DNT1
YECH,	0

K160,	160
K7757,	7757
K770,	770
KM160,	-160

*177
	2000

ERROR=JMS ERLOC
ERTABL=ERTBL
ERMSGT=ERMSGL-1
M200=K7600

*200 JMP I 177 START, CIF 10 JMS I C200 5 5200 TAD K160 DCA ONE60 CDF 10 TAD I PARAM1 AND C20 SNA CLA JMP DISK TAD TSSCH DCA BUFRD TAD TS8ASC DCA FILTYP CMA DISK, TAD M2 DCA SRCHMD CDF 0 ASDTA0, CIF 10 JMS I C200 12 /ASSIGN DTA0;NO FETCH 0424 ONE60, 0160 /DT-A0 0 BADINP, ERROR TAD .-3 CIA DCA MC CDF 10 TAD I FILPTR SNA JMP NOTAPE /NO INPUT DEVICE AND K17 DCA TEMP TAD TEMP TAD MC /CHECK FOR SYS AS INPUT DEV SPA CLA JMP NOTAPE /YES..GIVE DUMMY AN ERROR TAD TEMP TAD K7757 DCA ONE60 TAD I ONE60 CDF 0 AND K770 TAD KM160 SZA CLA NOTAPE, ERROR TAD TEMP TAD MC CLL RTR RTR DCA DEVNO TAD DEVNO TAD I FWRD2I DCA I FWRD2I CDF 10 TAD I PARAM CDF 0 DCA YECH TAD YECH CLL RAR SZL CLA JMP I LSTI CDF 10 TAD I INFLPT CDF 0 SNA CLA JMP NOFILE CIF 10 JMS I OOPENI SMA CLA SKP FTLOPT, ERROR TAD YECH CLL RTR SNL CLA JMS I DNRDI /READ FROM DECTAPE LOOPZ, TAD SRCHMD DCA MODE ISZ FILPTR LOOP1, CDF 10 TAD I FILPTR CIA AND K4040 DCA TEMP TAD I FILPTR AND K3737 TAD TEMP CDF 0 DCA I INWORD ISZ FILPTR ISZ INWORD ISZ MODE JMP LOOP1 TAD SRCHMD DCA MODE JMS I DNLUK /LOOK FOR DISK MON. FILE NOFILE, ERROR DCA I STBLK1 TAD DEVNO TAD I FWRDI DCA I FWRDI JMS I GBLK1 RDLOOP, JMS I BUFRD 0010 DCA TEMP JMS I (SPCHAR /SPECIAL CHARS JMP RDLOOP /IGNORE BLANKS AND RUBOUTS TAD TEMP CIF 10 JMS I OCHARI SKP JMP RDLOOP SPA CLA FATOPT, ERROR FULDEV, ERROR INFLPT, 7606
*400 GETCHR, 0 /GET A CHARACTER TAD I GETCHR TAD RETFLD DCA BUFFLD ISZ GETCHR JMS GTHF TAD M77 SZA JMP L1 JMS GTHF TAD M77 STL L1, TAD C37 SNL TAD C100 TAD C240 JMP I GETCHR GTHF, 0 /GET A 6BIT CHARACTER ISZ SWITCH JMP .+3 TAD TPWD JMP RTHF CLA CMA DCA SWITCH JMS GET DCA TPWD TAD TPWD RTR RTR RTR RTHF, AND C77 CLL JMP I GTHF GET, 0 /GET A WORD FROM BUFFER ISZ BUFF BUFFLD, CDF 0 TAD I BUFF RETFLD, CDF 0 ISZ BLKCNT JMP I GET EMPTY, SNA ABNEOF, ERROR JMS NEWBLK JMP GET+1 NEWBLK, 0 DCA I STBLK1 TAD FBLOK CIA TAD I STBLK1 TAD M13 CLL TAD K13 SZL JMP .+4 TAD FBLOK DCA I STBLKI JMS I GBLK1 DCA TEMP JMS I ROTI TAD BUFR DCA BUFF TAD M201 DCA BLKCNT JMP I NEWBLK GBLK, 0 TAD BUFR DCA BUFF TAD STBLK DCA FBLOK TAD M201 DCA BLKCNT RDBLK, TAD M2613 DCA WORDS CLL TAD STBLK CIA TAD ENTAPE DCA TEMP TAD TEMP TAD M13 SNL CLA JMP READ JMS I ROTI CIA DCA WORDS READ, JMS I IDTPI FUNWRD, 0410 STBLK, 0 WORDS, 5165 4277 TPFL2, ERROR JMP I GBLK
*600 DNSRCH, 0 /DISK MON. OR TSS/8 DIR. SRCH TAD TADDNT DCA RPEAT DCA DNSAMC DNINP1, TAD SRCHMD DCA MODE TAD DNKT DCA DNKTR TAD K3 TAD DNCORE DCA DNT4 DNTEST, ISZ DNSAMC TAD DNT4 DCA YECH GLOP, CDF 10 TAD I YECH ISZ YECH CIA RPEAT, TAD DNT1 ISZ .-1 SZA CLA JMP DNNOTE ISZ MODE JMP GLOP JMP DNFIND DNNOTE, TAD K4 CDF 10 IAC TAD DNT4 DCA DNT4 TAD TADDNT DCA RPEAT TAD SRCHMD DCA MODE ISZ DNKTR JMP DNTEST TAD I DNT4 CDF 0 SNA JMP I DNSRCH JMS I TSTBLI 1777 JMP DNINP1 TAD M177 DCA TEMP JMS I ROTI TAD DN1 /FORM IN-CORE ADDRESS DCA DNCORE JMP DNINP1 DNFIND, TAD K4 TAD DNT4 DCA DNT4 CDF 10 TAD I DNT4 CDF 0 JMS I FILTYP /CORRECT FILE TYPE? JMP DNNOTE+1 DCA DNT2 TAD SRCHMD TAD K3 SZA CLA JMP NORD TAD C177 DCA I NDIRBL JMS I DNRDI NORD, TAD DNSAMC CIA DCA DNSAMC DNINP2, TAD DNSAMC DCA DNT1 TAD M2 DCA DNT3 TAD C77 DNPASS, DCA DNBLOK TAD M200 DCA DNKTR TAD SMBLK1 DCA DNBLK1 DNLOOP, CDF 10 TAD I DNBLK1 CDF 0 AND DNBLOK TAD DNT1 SNA CLA JMP DNSMFD ISZ DNBLK1 ISZ DNT2 ISZ DNKTR JMP DNLOOP TAD DNT1 CLL RTL RTL RTL AND C7700 DCA DNT1 TAD C7700 ISZ DNT3 JMP DNPASS CLA CDF 10 TAD I DNBLK1 CDF 0 SNA JMP I DNSRCH JMS I TSTBLI 2200 JMP DNINP2 TAD M200 DCA TEMP JMS I ROTI TAD SAM1 DCA SMBLK1 JMP DNINP2 DNSMFD, TAD DNT2 ISZ DNSRCH JMP I DNSRCH DNBLOK, 0 DNKTR, 0 DNSAMC, 0 DNBLK1, 0
*1000 ERPRT, CDF 0 TAD OLDOUT /RESET OUTPUT POINTER TO TTY DCA OUTL1 CLA CMA TAD ERLOC DCA ERLOC DCA TEMP LOUP, TAD PTR1 TAD TEMP DCA BUFF TAD I BUFF TAD ERLOC ISZ TEMP SZA CLA JMP LOUP TAD PTR2 TAD TEMP DCA BUFF TAD I BUFF DCA BUFF DCA SWITCH DCA BLKCNT /SAFETY..SO GET NEVER GOES WILD TLS LEWP, JMS I RDEROR 0000 DCA TEMP TAD TEMP TAD MDOL SNA CLA JMP FINI TAD TEMP JMS I OUTL1 JMP LEWP FINI, DCA SWITCH JMS OUTCR JMP I RESTI OUTCR, 0 TAD C212 JMS I OUTL1 TAD C215 JMS I OUTL1 JMP I OUTCR MDOL, -"$ C212, 212 C215, 215 /THIS IS THE ERROR MESSAGE TABLE MSG2, TEXT *FILE OPEN ERR$* MSG3, TEXT *OUT DEV FULL$* MSG4, TEXT *INPUT DEV WRONG$* MSG5, TEXT *INPUT READ ERR$* MSG6, TEXT *IN FILE NOT FOUND$* MSG7, TEXT *OUTPUT WRITE ERR$* MSG8, TEXT *BAD EOF$* MSG9, TEXT *FILE CLOSE FAILED$* MSG10, TEXT *OUT DEV HANDLER ERR$* RDEROR, GETCHR
FIELD 1 *7200 /SETUP FOR USING OUTPUT ROUTINES OUBUF=2600 OUCTL=6400 OUFLD=OUCTL&70 OUDEVH=2200 DCB=7760 OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS RDF TAD CDIF0 DCA OSRET TAD C1 /GET SIZE OF BUFFER IN DOUBLEWORDS CIA /NEGATE IT DCA OUDWCT TAD C2 DCA OUPTR /INITIALIZE WORD POINTER TAD OUJMPE DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH OSRET, NOP JMP I OUSETP OCHAR, 0 AND C377 DCA OUTEMP KRS TAD M203 SNA CLA /IS THE TELETYPE BUFFER A ^C KSF /WITH THE TELETYPE FLAG ON? JMP .+3 /NO CDF CIF 10 /YES - GO TO MONITOR JMP I SVCOR /THROUGH THE "SAVE CORE" RETURN RDF TAD CDIF0 DCA OUCRET TAD OUTINH /IS OUTPUT INHIBITED SZA CLA /YES IF 1 JMP PSTOP /NO OUTPUT ALLOWED OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD ISZ OUJMP /BUMP THE CHARACTER SWITCH OUJMP, HLT /3 WAY CHARACTER SWITCH JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTEMP CLL RTL RTL AND K7400 TAD I OUPOLD DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH /ORDER 4 BITS OF 3RD CHAR TAD OUTEMP CLL RTR RTR RAR AND K7400 TAD I OUPTR DCA I OUPTR /UPDATE SECOND 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 OUCT /LOAD CONTROL WORD FOR A FULL WRITE JMS I DMPO /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 SECOND 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, 0 RDF TAD CDIF0 DCA OTRTN CDF 10 TAD I C7600 AND P17 DCB=7760 TAD DCBM1 /DCB-1 DCA OUTEMP TAD I OUTEMP OTRTN, HLT JMP I OTYPE PSTOP, CIF CDF 0 /PRINTS ? WHEN NO OUTPUT DEV NDVERR, JMS I ERLOCA BERLOC, CIF CDF 0 OHDERR, JMS I ERLOCA C1, OUCTL&3700 C2, OUBUF C377, 377 M203, -203 SVCOR, 7667 CDIF0, CDF CIF 0 K7400, 7400 OUCT, OUCTL C7600, 7600 P17, 17 DCBM1, DCB-1 DMPO, OUTDMP ERLOCA, ERLOC
*7400 OOPEN, 0 OU7600, 7600 RDF TAD OUCDIF DCA OORETN TAD OU7601 DCA OUBLK TAD O1 DCA OUHNDL CDF 10 TAD I OU7600 /GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY SNA /IS THERE AN OUTPUT DEVICE? JMP ONOFIL /NO - INHIBIT OUTPUT JMS I O200 1 /ASSIGN,FETCH HANDLER OUHNDL, 2600 /OUTPUT DEVICE HANDLER ENTRY JMP I ERLOCB OUENTR, TAD I OU7600 JMS I O200 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 O2 /ZERO OUTPUT INHIBIT FLAG TAD OUBLK DCA OUREC /INITIALIZE OUTPUT RECORD NUMBER JMS I O3 ISZ OOPEN OORETN, HLT /RESTORE CALLING FIELDS JMP I OOPEN OEFAIL, TAD I OU7600 AND O7760 /GET REQUESTED LENGTH SNA CLA /WAS IT AN INDEFINITE REQUEST JMP ONTERR /YES - CANNOT ENTER THE FILE TAD I OU7600 AND O17 /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 O2 JMP OORETN /TAKE THE ERROR RETURN WITH AC=0 OUTDMP, 0 DCA OUCTLW /STORE THE CONTROL WORD JMS OUNREC /COMPUTE THE NUMBER OF RECORDS TAD OUCCNT DCA OUCCNT TAD OUCCNT CLL CML TAD OUELEN SNL SZA CLA JMP OUERR OUCDIF, CDF CIF 0 CDF 10 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 JMP OUERR /THERE ARE NO SOFT OUTPUT HANDLER ERRORS JMS OUNREC TAD OUREC DCA OUREC /UPDATE OUTPUT RECORD NUMBER ISZ OUTDMP /BUMP OUTDMP TO NORMAL RETURN OUERR, CLA JMP I OUTDMP OCLOSE, 0 RDF TAD OUCDIF DCA OCRET CDF 10 TAD I O2 SZA CLA /IS OUTPUT INHIBITED? JMP OCISZ /YES - CLOSE IS A NOP TAD O232 /OUTPUT A ^Z JMS I O4 JMP OCRET JMS I O4 JMP OCRET FILLLP, JMS I O4 JMP OCRET JMS I O5 /GET TYPE OF OUTPUT DEVICE SPA CLA TAD O100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD TAD O77 /BOUNDARY-OTHERWISE HALF RECORD AND I O6 SZA CLA /UP TO THE BOUNDARY YET? JMP FILLLP /NO - FILL WITH ZEROS TAD I O6 /GET DOUBLEWORD COUNT LEFT TAD O7 SNA /A FULL WRITE LEFT? JMP NODUMP /YES - DON'T DO IT - THE ^Z IS ALREADY OUT TAD O8 /PUT IN THE FIELD BITS AND THE WRITE BIT JMS OUTDMP JMP OCRET /AN ERROR OCCURRED WHILE DUMPING THE BUFFER NODUMP, TAD I OU7600 /GET THE DEVICE NUMBER JMS I O200 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, HLT /RESTORE CALLING FIELDS JMP I OCLOSE OUNREC, 0 TAD OUCTLW CLL RTL RTL RTL AND O17 JMP I OUNREC O1, OUDEVH O7700, 7700 O2, OUTINH O3, OUSETP O7760, 7760 O17, 17 O232, 232 O4, OCHAR O5, OTYPE O100, 100 O77, 77 O6, OUDWCT O7, OUCTL&3700 O8, 4000+OUFLD O200, 200 ERLOCB, BERLOC
FIELD 0 *1200 /ELEMENTARY DECTAPE SUBROUTINE (IDTAPE.V15) /COPYRIGHT 1969 DIGITAL EQUIPMENT CORPORATION / MAYNARD, MASSACHUSETTS ID7400, 7400 /MASK, SEE "ID0200" IDTAPE, 0 /****ENTRY TO SUBROUTINE CLA TAD I IDTAPE /SAVE WORD 1 DCA IDCODE ISZ IDTAPE /(WORD 2), BLOCK NUMBER TAD IDCODE ID0200, AND ID7400 /MASK UNIT AND DIRECTION BITS /NOTE!!! ALSO CONSTANT 200 TAD ID0010 /PUT INTO SEARCH MODE 6766 /DTCA DTXA MICROPROGRAMMED DTLB /CLEAR FIELD BITS TAD IDWC /POINTER TO SEARCH INPUT DCA I IDCA /SET UP CURRENT ADDRESS (7755) /CONCLUSION OF INITIAL SET UP. NOW EXECUTE ERROR /ROUTINE TO START UP DEC TAPE. /ERROR WHILE SEARCHING...NORMALLY ENTERED WITH B STATUS /REGISTER IN THE AC. PERFORMS TURN AROUND IF END ZONE /ERROR, AND FORCES THE STOP-GO BIT TO GO STATUS. IDSERR, RTL /ERROR WHILE SEARCHING RAL /MOVE END ZONE FLAG TO LINK CLA CML TAD ID0200 /GET DECTAPE GO FLAG /****THE DECTAPE SEARCH LOOP STARTS HERE. IDCONT, SNL /CHECK DIRECTION AND SIGN TAD ID0400 /REVERSE DIRECTION DTXA /LOAD AND GO IN SEARCH MODE 6773 /DTSF DTRB MICROPROGRAMMED JMP .-1 /WAIT UNTIL FLAG COMES UP SPA /TEST ERROR FLAG JMP IDSERR /TAKE ERROR BRANCH DTRA /GET DIRECTION BIT RTL RTL /DIRECTION BIT GOES TO LINK SZL CLA TAD ID0002 /REVERSE...GET "BLOCK TO FIND" - 2 TAD I IDWC /ADD IN LAST BLOCK SEEN CMA /CIA MIGHT BLOW THE LINK TAD I IDTAPE /ADD IN "BLOCK TO FIND" CMA SZA CLA /BLOCK NUMBERS MATCH? JMP IDCONT /NO, REENTER SEARCH LOOP SZL /YES, CHECK DIRECTION BIT JMP IDCONT+1 /TURN AROUND IF REVERSE /****END OF SEARCH LOOP, TAPE IS NOW AT DESIRED BLOCK / TRAVELING IN A FORWARD DIRECTION. ISZ IDTAPE /ADVANCE TO WORD 3 TAD I IDTAPE /GET WORD COUNT DCA I IDWC /PUT IN 7754 ISZ IDTAPE /ADVANCE TO WORD 4 TAD I IDTAPE /GET TRANSFER ADDRESS DCA I IDCA /PUT IN 7755 TAD IDCODE DTLB /LOAD FIELD BITS IAC /GET READ-WRITE FLAG AND IDCODE RTL CLL /MULTIPLY BY 20 (OCTAL) RTL TAD ID0130 /READ OR WRITE CONTINUOUS MODE DTXA /XOR INTO STATUS REGISTER A 6773 /DTSF DTRB MICROPROGRAMMED JMP .-1 /HOLD UNTIL WORD COUNT OVERFLOW ISZ IDTAPE /ADVANCE TO WORD 5 SMA /SKIP IF ERROR FLAG SET ISZ IDTAPE /NORMAL EXIT, ADVANCE TO WORD 6 SPA CLA /SKIP FOR NORMAL EXIT TAD IDCODE /GET INDIRECT RETURN BIT RTR /MOVE TO LINK SNL CLA /SKIP IF JMP I <WORD 5> JMP .+3 TAD I IDTAPE /MAKE DOUBLE INDIRECT RETURN DCA IDTAPE DTRA AND ID0200 /GET STOP-GO BIT TAD ID0002 /PRESERVE DECTAPE ERROR FLAGS DTXA /STOP TAPE JMP I IDTAPE /VARIOUS CONSTANTS AND STORAGE AREAS IDCODE, 0 /DECTAPE IOT'S DTXA=6764 DTCA=6762 DTSF=6771 DTRB=6772 DTRA=6761 DTLB=6774 IDWC, 7754 /WORD COUNT FOR DATA BREAK IDCA, 7755 /CURRENT ADDRESS FOR DATA BREAK ID0010, 10 /FOR SEARCH FUNCTION
ID0400, 400 /MATCHES FORWARD-REVERSE BIT ID0130, 130 /TO BUILD READ OR WRITE MODE ID0002, 2 /HANDY CONSTSNT OUTL, 0 TSF JMP .-1 TLS CLA JMP I OUTL MONITR, KSF JMP .-1 JMP I .+1 7605 ROTATE, 0 TAD TEMP CLL RTR RTR RTR TAD TEMP JMP I ROTATE DNRD, 0 JMS I IDTPI FWRD, 0010 NUDBLK, 0177 5567 COREAD, 1777 TPFAIL, ERROR JMP I DNRD DMSAS, 0 CLL RAL SMA SNL CLA ISZ DMSAS JMP I DMSAS TS8AS, 0 AND K7600 TAD K7600 SNA CLA ISZ TS8AS JMP I TS8AS FORM, 0 ISZ FFOUND SKP JMP I EOT1 CLA CMA JMP I FORM
DNCONT=ERLOC TEMP1=FBLOK TEMP2=FFOUND *1400 LST, TAD OBUFR DCA OUTL1 /SETUP TO WRITE TO DEVICE CIF 10 JMS I OOPENI SMA CLA SKP JMP I OPNERR JMS I DNRDI /READ DIRECTORY READY, TAD DNKT DCA DNCONT TAD DN1 TAD EXCON READEX, DCA DNCORE CDF 10 TAD I DNCORE CDF 0 SNA JMP NEXNAM JMS I FILTYP JMP NEXNAM /WRONG EXT. TAD SRCHMD CLL RAL DCA TEMP1 /4 OR 6 CHARACTERS TAD M4 TAD DNCORE DCA BUFF DCA SWITCH RPT, JMS RDIRNM /GET DIRECT. CHAR DCA TEMP2 TAD TEMP2 TAD M240 /NULL? SNA JMP LETR2 /YES..NO OUTPUT TAD M1 SNA CLA JMP NEXNAM TAD TEMP2 JMS I OUTL1 LETR2, ISZ TEMP1 /ALL CHARS DONE? JMP RPT /NO JMS I OUTCRI NEXNAM, TAD NEWEX TAD DNCORE ISZ DNCONT JMP READEX ISZ DNCORE CLA CDF 10 TAD I DNCORE CDF 0 SNA /LINK=0? JMP DONLIS JMS I TSTBLI 1777 JMP READY TAD M177 DCA TEMP2 TAD TEMP2 CLL RTR RTR RTR TAD TEMP2 TAD DN1 DCA TEMP2 TAD DNKT DCA DNCONT TAD TEMP2 JMP READEX-1 DONLIS, TAD DN1 DCA DNCORE JMP I EOT1 /FINISHED WITH LISTING M4, -4 NEWEX, 5 EXCON, 7 M240, -240 RDIRNM, 0 ISZ SWITCH JMP .+4 TAD BLECH ISZ BUFF JMP CLUNK CLA CMA DCA SWITCH CDF 10 TAD I BUFF CDF 0 DCA BLECH TAD BLECH RTR RTR RTR CLUNK, AND C77 TAD K40 TAD C200 JMP I RDIRNM BLECH, 0 TSTBLK, 0 DCA RDIRNM TAD RDIRNM TAD M210 SPA CLA JMP SKIP TAD I TSTBLK DCA I NCORAD ISZ TSTBLK TAD RDIRNM DCA I NDIRBL JMS I DNRDI JMP I TSTBLK SKIP, ISZ TSTBLK ISZ TSTBLK TAD RDIRNM JMP I TSTBLK M210, -210 M14, -14 OBUFR, WOBUF OPNERR, FTLOPT
*1600 TS8CHR, 0 CDF 10 ISZ .+1 ZCHAR, JMP . JMP ZCHAR1 JMP ZCHAR2 ZCHAR3, TAD KZCHAR DCA ZCHAR /RESET SWITCH ISZ BLKCNT TAD I BUFF AND K377 JMP COMOUT ZCHAR1, ISZ BUFF TAD I BUFF DCA TEMPZ TAD TEMPZ RTR RTR AND K377 ISZ BLKCNT /FINISHED THIS BUFFER JMP COMOUT CLA TAD I BUFF /LINK WORD CDF 0 SNA TS8ER1, JMP EOT JMS I NEWBLI /READ NEW IF NECESSARY CDF 10 JMP ZCHAR1 ZCHAR2, TAD TEMPZ AND C37 CLL RTL RTL DCA TEMPZ ISZ BUFF TAD I BUFF CLL RTL RTL RAL AND C37 TAD TEMPZ COMOUT, CDF 0 ISZ TS8CHR JMP I TS8CHR K377, 377 KZCHAR, JMP ZCHAR TEMPZ, 0 EOT, CIF 10 JMS I OCLSI CLOSFL, ERROR /ERROR ON CLOSING RESETI, TAD M2 DCA MODE TAD C7605 DCA FILPTR TAD KCHAR2 DCA INWORD TAD I FWRDI AND C777 DCA I FWRDI TAD I FWRD2I AND C777 DCA I FWRD2I TAD DN1 DCA DNCORE TAD SAM1 DCA SMBLK1 DCA SWITCH TAD DMSFIL DCA FILTYP TAD GCHR DCA BUFRD TAD C1777 DCA I NCORAD TAD C177 DCA I NDIRBL TAD KZCHAR DCA ZCHAR TAD OLDOUT DCA OUTL1 JMP I RSTRT1 KCHAR2, DNT1 C7605, 7605 DMSFIL, DMSAS GCHR, GETCHR C1777, 1777 WOBUF, 0 CIF 10 JMS I OCHARI HLT JMP I WOBUF SPCHAR, 0 /SPECIAL CHARACTER TTEST TAD TEMP SNA /IGNORE BLANKS JMP I SPCHAR TAD



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