File PIP3

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

*20
	PMODE
	EJECT
/
/
/
/
/
/
/			THIS IS THE THIRD PART OF PIP. IT S  CALLED:
/
/
/
/
/				P     I     P     3
/
/
/
/
/
/
	LODSYM			/RECALL SYMBOLS FROM OTHER PIPS.
/
/
/
/
/
	EJECT
	*3400
/
/
/		B  I  N  A  R  Y     H  A  N  D  L  E  R
/
/
/
BINARY,	DECODE			/GET THE CORRECT INPUT DEVICE.
	BININP			/WHILE DISPLAYING INPUT MESSAGE.
	MTWO			/SET BFIELD TO DO A NEW ONE.
	DCA	BOFIELD
	DCA	ORIGIN		/SET ORIGIN TO ZERO
	DCA	BOLDP		/SET BASE TO ZERO
	DCA	BFIELD		/SET FIELD TO ZERO
	DCA	BOLDO		/SET OLD ORIGIN TO ZERO
	DCA	BCOUNT		/SET SIZE TO ZERO
	DCA	BFLAG1		/CLEAR THE INPUT AND OUTPUT DEVICE FLAGS.
	DCA	BFLAG2
	SEARCH			/CHECK IF A LEGAL OPTION WAS GIVEN
	BINLST
	BINGO			/AND IF IT WAS, GO TO CORRECT PLACE.
	JMP	BINARY		/NOT A LEGAL DEVICE.
/
/
/
/
BHIGH,	ISZ	BFLAG1		/SET FLAG TOREADER
BTTY,	ISZ	BFLAG1		/SET FLAG TO LOW READER. MORE DEVICE MAY COME
/				BEFORE THE HIGH READER/
	TAD	FNAME			/TEST TO SEE IF MODE GIVEN
	CMA
	SNA CLA
	JMP	BPART2		/NO LETTERS. NOO AUTO START.
	TAD	FNAME		/GET LEFT CHARACTER OF NAME.
	AND	L7700		/ONLY P OR L NEEDED
	DCA	FTYPE		/AND STASH AWAY
	SEARCH			/CHECK FOR P OR L
	BGOLST
	BSTGO
	JMP	BINARY		/ILLEGAL
/
/
BPODE,	TAD	FSIZE		/GET STARTING ADDRESS
	SNA			/ONE GIVEN?
	TAD	L200		/NOPE. SET IT TO 200.
	DCA	FSIZE		/AND STASH AWAY.
	PTWO			/GET A "PDP" INSTRUCTION INTHE AC
	JMP	BSCOMM		/AND STORE AWAY.
/
BLODE,	TAD	FSIZE		/GET THE STARTING ADDRESS.
	SNA			/ONE GIVEN?
	TAD	L4020		/NO. ASSUME 4020
	DCA	FSIZE		/SAVE BACK STARTING ADDRESS.
	TAD	L6000		/GET .NOT. 10 BIT MASK IN AC.
	CMA			/MKAE IT A GOOD 10 BIT AN D  MASK
	AND	FSIZE		/JUST 10 BITS.
	TAD	L6000		/NOW MAKE IT A GOOD JMP IN LMODE INSTRUCTION.
/				I NEEDED A PAGE 0 LOCATION, SO I DID IT THAT WAY
/
BSCOMM,	DCA I	BBOOT+1
	TAD	FSIZE		/GET STARTING ADDRESS
	DCA I	BBOOT+3		/PLACE AWAY IN HEADER.
	MONE			/GET A JMP I 7777 IN AC.
	TAD	L6000		/OR 5777 AS THE WORLD KNOWS AND LOVES IT.
	DCA I	BBOOT+2		/AND PLACE AWAY.
	TAD	FUNIT		/GET THE FIELD
	AND	L7		/MAKE IT REASONABLE
	CLL RTL			/SHIFT TO CORRECT PLACES.
	TAD	L200
	TAD	L400		/SAVE A PAGE 0 LITTERAL
	DCA	FUNIT		/PLACE BACK
	TAD	FSIZE		/GET STARTING ADDRESS.
	AND	L6000		/JUST LMODE FIELD BITS.
	CLL RTL
	RAL			/INTO CORRECT POSITION.
	TAD	FUNIT		/ADD BACK IN CORRECT "LIF"
	DCA I	BBOOT		/AND SAVE AWAY.
	JMP	BPART2		/GO TO COMMON.
/
/
/
BLT,	PTWO			/TELL DIRECTORY LOOKUP ITS BIANRY
	DCA	FTYPE		/FTYPE=2 MEANS A BINARY FILE.
	PONE
	DCA	FWHAT		/SET INPUT SWITCH
	TAPE			/SET UP TAPE OPERATION
	DIRECT			/GO DO IT.
/
BPART2,	HPUSH			/PUSH DOWN THE FBLOCK REGION.
	DECODE			/GET THE OUTPUT DEVICE
	BINOUT			/BINARY OUTPUT DISPLAY CMESSAGE
	SEARCH			/CHECK NAEM FOR LEGAL OPTION
	BINLST			/SAME INPUT AS OUTPUT FORR NOW
	BINGO2			/JMP LIST
	JMP	BPART2+1	/NOT A LEGAL REQUEST.
/
/
BHIGH2,	ISZ	BFLAG2		/SET THE OUTPUT FLAG
BTTY2,	ISZ	BFLAG2		/FOR THE CORRECT DEVICE
BLT2,	TAPE			/SET FOR LINC TAPE, NOT DISC
	PUSH			/SAVE FBLOCK IN LOW SAVE AREA.
	PTWO			/SET BINARY MODE AGAIN.
	DCA	FTYPE		/IN CASE OF COPY
	MONE			/IS IT A MASS STORAGE DEVICE OPERATION
	TAD	BFLAG1
	TAD	BFLAG2		/IF NEGATIVE IT IS.
	SPA CLA			/THE TEST!
	FILEC			/YEP. COPY CHOSEN FILES.
	TAD	BFLAG2		/GET OUTPUT FLAG
	SZA CLA			/TAPE OUTPUT?
	LEADER			/NO. PUNCH LEADER.
	TAD	BFLAG1		/IS IT LINC TAPE INPUT???
	SNA CLA
	JMP I	BBTAPE		/YEP. GO TO LINC TAPE ROUTINE
	JMP I	BLODYR		/NOPE. USE STANDARD BINARY LOADER.
/
/
/
/
BBTAPE,	BINTAP
BLODYR,	BNFILE
L4020,	4020
/
BBOOT,	7400
	7401
	7402
	7403
/
BGOLST,	1400			/L*100
	6000			/P*100+4000
/
BSTGO,	BLODE
	BPODE
/
BINLST,	310
	314
	4324
/
BINGO,	BHIGH
	BLT
	BTTY
/
BINGO2,	BHIGH2
	BLT2
	BTTY2
/
/
/
/
/
/
/
/
	ASMIFN	CARD-1		/DO WE WANT CARD READER CRAP LOADERED????
	ASMSKP	30		/GUESS NOT. DON T ASSEMBLE THEM.
/
/
CRDLTT,	0			/CARD READER CHECKER AND INITIALIZER.
	TAD	FTYPE			/GET THE REPLY .
	TAD	CRM303		/IS IT A "C"
	SZA CLA			/?
	JMP I	CRDLTT		/NOPE. RETURN TO CHECK MORE.
	TAD	FUNIT		/YEP. GET THE STARTING COLUMN
	DCA	BOLDO		/AND STASH AWAY.
	TAD	FSIZE		/AND GET THE LAST COLUMN
	DCA	DATA		/AND STORE IT AWAY.
	JMS I	CRINIT		/ITIALIZE CARD READER.
	ISZ	BFLAG1		/PREPARE TO SET THE INPUT FLAG TO 3
	JMP I	.+1		/NOW ADD TWO TO THE INPUT FLAG
	ASCH1		/HIGH SPEED READER=2
/
CRM303,	-303			/A - "C"
CRINIT,	CDINIT			/POINTE TO CARD READER INITIALIZE ROUTINE.
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
	EJECT
/
	*3600
/			MORE BINARY LOADER ROUTINES AND CRAP.
/
/
/
/
BNFILE,	6016			/NON FILE ORIENTED ROUUTINES.
	6032			/INITIATE AND CLEAR ALL POSSIBLE DEVICES.
	DCA	BFIELD		/SET FIELD TO ZERO.
	JMS	BEGG		/GET A CHARACTER
	JMP	.-1		/LEADER-TRAILER. IGNORE IT.
/
BGO,	DCA	BCHECK		/UPDATE CHECKSUM
	TAD	BCHAR		/GET THE CHARACTER
	DCA	BWORD1		/STORE AWAY
	AUXIN			/LOOKUP FOR NEXT CHAR
	DCA	BWORD2		/AND SAVE
	JMS	BEGG		/LOOK AHEAD ONE NOW.
	JMP	BEND		/TRAILER FOUND. CHECK CHECKSUM.
	JMS	BASSEM		/ASSEMBLE A WORD
	SNL			/ORIGIN?
	JMP	BBBPUT		/NO. PLACE IN DATA WORD
	DCA	ORIGIN		/YES. STORE IN ORIGIN.
BCHEX,	TAD	BWORD1
	TAD	BWORD2
	TAD	BCHECK		/UPDATE CHECKSUM
	JMP	BGO		/AND GO GET NEXT WORD.
/
BBBPUT,	DCA	DATA		/PLACE IN DATA FOR OUTPUT ROUTINE TO USE.
	PUTWORD			/GO OUTPUT IT.
	ISZ	ORIGIN		/GO TO NEXT LOC.
M200,	-200			/NOP IN CASE OF SKIP
	JMP	BCHEX		/AND UPDATE CHECKSUM
/
BASSEM,	0
	TAD	BWORD1		/GET THE FIRST WORD
	CLL RTL
	RTL
	RTL			/NOW PLACE IN SECOND PART
	TAD	BWORD2
	JMP I	BASSEM		/NOW EXIT
/
BEGG,	0			/GETS AND CHECKS A CHARACTER FROM GIVEN SEQUENTIAL DEVICE.
	DCA	TEMP4		/SET SWITCH
	AUXIN			/GET A CHARACTER.
	TAD	M377		/CHECK FOR RUBOUT
	SZA CLA		/?
	JMP	.+4		/NO RUBOUT
	ISZ	TEMP4		/YES. COMPLEMENT SWITCH
	CMA
	JMP	BEGG+1		/GO BACK AGAIN.
	TAD	TEMP4		/SWITCH SET?
	SZA CLA
	JMP	BEGG+2		/YEP. STILL IN RUBOUTS
	TAD	BCHAR		/GET THE CHAR
	AND	L700		/HIGH ORDER BITS ON?
	TAD	M200		/GET TYPE
	SPA			/IS IT JUST LEADER
	ISZ	BEGG		/NO HIGH ORDER BITS ON.
	SPA SNA CLA		/TEST NOW FOR ORIGIN AN D  LEADER-TRAILER
	JMP I	BEGG		/DATA,ORIGIN, OR LEADER TRAILER
	TAD	BCHAR		/FIELD CHARACTER
	AND	L70		/JUST GET FIELD
	DCA	BFIELD		/SAVE IN NEW FIELD
	TAD	BFIELD		/GET BACK
	TAD	M20		/MORE TEHN 8 K?
	SMA CLA
	NO			/YEP. TOOOO BBBIIGGG!!!
	JMP	BEGG+2
/
/
BEND,	JMS	BASSEM
	CIA
	TAD	BCHECK		/CHECK CHECKSUM
	SZA CLA			/GOOD?
	JMP I	BCERR		/GIVE CHECKSUM MESSAGE. IT BAD
	JMS I	BMORE		/ASK IF ANY MORE TAPES?
	JMP	BNFILE
	MONE			/CLOSE THE OUTPUT FILE
	DCA	BFIELD
	PUTWORD			/SEND T O  BLAHS.
	PIP			/RETURN TO PIP
/
/
/
/
/
SEQIN,	0			/SEQ INPUT UNIT.
	CHECKIO			/CHECKIO AND LEAVE AC 0
	DCA	177		/RESERVED FOR PIP RETURN, BUT CAN BE USED HERE
	TAD	BFLAG1		/GET INPUT FLAG.
	TAD	L7777		/SUBTRACT1
	SNA CLA
	JMP	SEQTTY
SEQTST,	GETL			/TEST LOW READER FOR A CHAR
	JMP	SEQN1
	TAD	M232
	SNA
	ISZ	177
	SNA CLA
	JMP I	SEQIN		/EXIT
/
SEQN1,	ASMIFN	CARD-1		/DO WE WANT CARD READER CHECK LOADED?????
	ASMSKP	5		/NOPE. DONT ASSEMBLE THEM IN
/
	JMS I	SEQCIN		/CHECK FOR CARD READER AND GET CHAR.
	JMP	SEQTST		/CHAR NOT READY YET.
	JMP	SEQCOM		/CHAR READY.
/
/
	6011			/DEVICE IS HIGH SPEED READER. FLAG READY???
	JMP	SEQTST		/GO INTO BIG WAIT LOOP
	6016
	JMP	SEQCOM
SEQTTY,GETL			/GET A CHARACTER
	JMP	.-1		/WAIT FOR IT
SEQCOM,	DCA	BCHAR		/STASH AWAY
	TAD	BCHAR
	TAD	M232
	SNA CLA
	ISZ	177
	TAD	BCHAR
	JMP I	SEQIN
/
/
/
SEQOUT,	0			/SEQUNETIAL OUTPUT BLOP.
	DCA	SEQIN		/SAVE THE CHAR
	CHECKIO		/CHECKIO
	TAD	BFLAG2		/GET THE OTPUT FLAG
	TAD	L7777
	SZA CLA
	JMP	SEQO2		/HIGH PUNCH OUTPUT
	TAD	SEQIN
	PUTL
	JMP I	SEQOUT		/OUT IT GOES.
/
SEQO2,	ASMIFZ	CARD-1		/DO WE CHECK FOR LINE PRINTER???
	JMS I	SEQLP		/YEP. GO CHECK
/
	CHECKIO			/LINE PRINTER ISN T THE ONE.
	6021			/WAIT FOR OK.
	JMP	.-2		/WAIT TILL DONE.
	TAD	SEQIN		/GET THE CHAR.
	6026		/SEND IT OUT
SEQEXT,	CLA			/CLEAR THE AC.
	JMP I	SEQOUT		/ALL DONE.
/
/
/
/
BCHECK,	0
BWORD1,	0
BWORD2,	0
M232,	-232
L70,	70
BMORE,	MORE
BCERR,	CERR
/
/
/
/
	ASMIFN	CARD-1		/CARD READER AND LINE PRINTER THERE????
	ASMSKP	3		/NOPE. DONT ASSEMBLE IN POINTERS.
/
SEQCIN,	CDREAD			/POINTER TO CARD READER ROUTINE.
SEQLP,	LPTEST			/POINTER TO LINE PRINTER ROUTINE.
/
/
/
/
/
/
	EJECT
/
/
	*4000
/
/
/			MORE OF THE BINARY ROUTINES.
/
/
/
/
	0000			/FIRST 3 LOCATION ARE RESERVED FOR A REGISTESR IN LMODE
	0000
	0000
/
/
/
/
BINTAP,	HPOP			/INPUT FROM LINC TAPE.
	TAD	FUNIT		/GET THE UNIT
	DCA	.+4		/SET UP CONTROL BLOCK READ
	TAD	FBNUM		/GET THE STARTING BLOCK NUMBER
	DCA	.+5		/GET BLOCK NUMBER
	READ			/READ IN HEADER BLOCK
	0			/PLACED IN UNIT 
	7400			/READ INTO 7400 FOR SAYFTEY
	1			/1 RECOOD
	0			/CORECT BLOCK NUMBER
	HPOP			/ZAP IN FBLOCK AGAIN
	ISZ	FBNUM		/MOVE PAST HEADER BLOCK
	JMS I	BSETI		/SET UP WORD GETTER.
	TAD	M40		/SET UP NUMBER OF 400 WORD BLOCKS TO CHECK
	DCA	BTEMP1		/AND STASH AWAY.
	TAD	BMTAB		/GET START OF MEMORY MAP CONFIG.
	DCA	BTEMP2		/AND PLACE AWAY.
/
BEILOP,	TAD	M400		/400 WORDS PER RECORD
	DCA	BTEMP3		/SET UP COUNT
	TAD	BTEMP1		/GET THE BLOCK NUMBER
	TAD	L40		/GET BETWEEN 0-37
	CLL RTR
	RTR
	RAR			/MOVE INTO 7400 POSITION
	DCA	ORIGIN		/SET UP INITIAL ORIGIN.
	RTL
	RTL		/MOVE LINC TO FIELD POSITION.
	DCA	BFIELD		/AND PLACE IN BFIELD.
BETLP2,	TAD I	BTEMP2		/IS THIS BLOCK USED.
	SNA CLA		/?
	JMP	BEOUT		/NOPE. WANDER DOWN.
	JMS I	BGETI		/GET A WORD FROM TAPE/
	DCA	DATA		/PLACE IN DATA WORD.
	PUTWORD		/SEND IT DOWN THE LINE.
BEOUT,	ISZ	ORIGIN		/BOP UP ORIGIN.
	NOP
	ISZ	BTEMP3		/BOP UP 400 COUNTER
	JMP	BETLP2		/NOT YET DONE. DO ANOTHER.
	ISZ	BTEMP2		/BOP UP MAP POINTER
	NOP			/IT REALLY CAN SKIP(I FOUND OUT THE HARD WAY)
	ISZ	BTEMP1		/BOP UP BIGCOUNT POINTER
	JMP	BEILOP		/GO BACK AND GET NEXT FIELD AND ORIGIN.
	MONE			/ALL DONE.
	DCA	BFIELD		/PLACE AN "EOF" ON BFIELD
	PUTWORD			/END OF FILE CODE WORD.
	PIP			/RETURN TO PIP
/
/
/
/
BTAPE,	0			/MAIN TAPE OUTPUTER.
	TAD	BFIELD		/LAST TIME THROUGH?
	IAC
	SNA CLA		/?
	JMP I	BTEND		/YEP. CLOSE FILE.
	TAD	BFIELD		/GET THE FIELD
	CIA
	TAD	BOFIELD		/SAME AS LAST ONE?
	SZA CLA
	JMP	BIDIFF		/NOPE. SET TO CHANGE BANKS.
	TAD	ORIGIN		/GET THE ORIGIN
	AND	L7400		/JUST HIGH BITS.
	CIA			/
	TAD	BOLDO		/ADD IN LAST ORIGIN
	SZA CLA		/SAME 400 WORD BANK??
	JMP	BIDIFF		/NOPE.. CHANGE BANKS.
/
BINTRY,	TAD	ORIGIN		/GET THE ORIGIN
	AND	L377		/GET IN 400 WORD BANK POSIITION
	TAD	BPOINT		/GET START OF BUFFER LOCATION.
	DCA	TEMP		/STORE AWAY
	TAD	DATA		/GET THE DATA WORD
	DCA I	TEMP		/NOW PLACE IN BUFFER
	TAD	ORIGIN		/GET ORIGIN
	AND	L7400		/GET JUST BANK NUMBER
	DCA	BOLDO		/STASH AWAY.
	TAD	BFIELD		/RESET THE FIELD TOO
	DCA	BOFIELD		/AND AWAY IT GOES.
	JMP I	BTAPE		/GO BACK AND GET ANOTHER WORD.
/
/
BIDIFF,	TAD	ORIGIN		/GET THE ORIGIN
	RTL
	RTL
	AND	L7		/MUST MAKE IT BITS 8-11
	TAD	BFIELD		/PUT IN FIELD BIT NOW!
	RAL			/AND ROTATE IN REST OF CRAP.
	SPA			/IS IT FIRST TIME THRU?
	JMP	BINTRY		/YEP. DON T DUMP BUFFERS.
	DCA	BTEMP1		/STASH AWAY/
	JMS	BIDUMP		/DUMP PRESENT BUFFERS.
	TAD	BTEMP1		/REGET NEW POSITION
	DCA	BOLDP		/AND PLACE I N OLD PLACE
	TAD	BTEMP1		/GET PLACE AGAIN
	TAD	BMTAB		/START OF POSITION THING
	DCA	BTEMP2		/CORE MAP
	TAD I	BTEMP2		/GET REFERNCE WORD
	SNA CLA			/IS IT TAKEN?
	ISZ	BCOUNT		/NOPE. ANOTHER RECORD TO WRITE OUT LATTER ON.
	MONE			/MEANWHILE....
	DCA I	BTEMP2		/TELL SYSTEM IT S TAKEN NOW.
	TAD	BTEMP1		/REGET BASE POINTER
	TAD	BMBASE		/ADD IN STARTING BLOCK NUMBE
	DCA	.+5		/READ IN NEW CORE IMAGE FOR OVERLAYING.
	READ			/READ IT IN
	SYSBIN			/FROM SYSTEM BINARY UNIT.
	7000			/7000 IS THE GENERAL AREA.
	1
	0			/RECORD NUMBER GOES HERE.
	JMP	BINTRY		/RETURN TO MAIN PUTTER.
/
/
/
BIDUMP,	0			/DUMPS THE PRESENT BUFFER INTO THE CORRECT POSITION.
	TAD	BOLDP		/GET OLD POINTER
	TAD	BMBASE		/ADD IN THE RECORD NUMBER BASE.
	DCA	.+5		/SAVE AWAY.
	WRITE		/WRITE IT OUT.
	SYSBIN
	7000
	1
	0
	JMP I	BIDUMP		/RETURN
/
/
/
/
/
BMBASE,	SYSBBLOCK
L377,	377
BPOINT,	7000			/SINGLE CORE BUFFER.
BMTAB,	7740
BTEND,	BTENT
L40,	40
BSETI,	SETI
BGETI,	GETI
/
/
/
/
/
/
/
/
	EJECT
	*4200
/
/
/			MORE BINARY LOADER ROUTINES.
/
/
/
BTENT,	JMS I	BBDUMP		/DUMP THE BUFFER
	WRITE			/WRITE OUT HEADER BLOCK NOW.
BSYS,	SYSBIN
	7400
	1
	SYSHDR			/POSITION OF HEADER BLOCK ON SYSTEM.
	POP			/BRING BACK FBLOCK FROM LOWER AREA NOW.
	TAD	BCOUNT		/NUMBER OF RECORD SAVED.
	SNA			/ANY?
	NO			/NOPE.
	DCA I	BBOINT-1		/STASH LENGTH AWAY IN HEADER BLOCK.
	TAD	BCOUNT		/REGET THE LENGTH.
	IAC			/ADD 1 FOR HEADER BLOCK
	DCA	FSIZE		/SAVE IN CORRECT PLACE.
	PTWO			/SET FOR OUTPUT FILE.
	DCA	FWHAT
	PTWO			/SET FOR BINARY FILE
	DCA	FTYPE
	DIRECT			/LOOKUP UP NAME AND ROOM.
	HPUSH			/STASH AWAY.
	TAD	FBNUM		/GET THE STARTING BLOCK
	DCA	OUTBLOCK
	TAD	FUNIT		/STASH IN UNIT TOO.
	DCA	OUTUNIT		/SET UP OUTPUT UNIT.
	TAD	BSYS		/GET INPUT UNIT
	DCA	INUNIT		/SET UP INPUT UNIT
	TAD	BBBASE		/GET THE OUTPUT BASE
	DCA	INBLOCK		/SET UP INPUT BLOCK
	TAD	FUNIT		/GET THE MAIN UNIT
	DCA	.+4
	TAD	FBNUM
	DCA	.+5		/SET UP HEADER WRITE
	WRITE
	0
	7400
	1
	0
	TAD	BBOINT		/START OF MEMORY BLOCK CONFIG.
	DCA	BTEMP1		/SET UP OUTCHECKER
	ISZ	OUTBLOCK		/SKIP PAST HEADER BLOCK
/
BELOOP,	TAD I	BTEMP1		/GET THE MOMORY USAGE WORD
	SNA CLA			/BLOCK USED?
	JMP	BEEND		/NOPE. GO DOWN
	PONE			/SET TO MAKE A 1 BLOCK COPY
	DCA	FSIZE		/BY PLACING A "1" IN FSIZE
	COPY			/YEP. COPY A BLOCK
	ISZ	OUTBLOCK		/GO TO NEXT OUTBLOCK.
BEEND,	ISZ	INBLOCK		/GO TO NEXT INPUT BLOCK
	ISZ	BTEMP1		/BOP MEMORY POINTER
	JMP	BELOOP		/NOT .YET DONE.
	PIP			/ALL DOOE. RETURN TO PIP.
/
/
/
BBDUMP,	BIDUMP
BBBASE,	SYSBBLOCK
	7737			/POINTER TO HEADER BLOCK LENGTH. MUST BE AT BBOINT-1
BBOINT,	7740			/POINTS TO START OF CORE MAP IN HEADER BLOCK
/
/
/
/
/
BBOUT,	0
	TAD	BFLAG2		/MASS STORAGE OUTPUT???
	SZA CLA
	JMP	.+3		/NO.
	JMS I	BBLT		/YEP. GO DO IT.
	JMP I	BBOUT		/AND RETURN.
	PONE			/IS THIS END OF INPUT???
	TAD	BFIELD		/(BFIELD=7777?
	SZA CLA
	JMP	BBBBBJ		/NOT END. CHECK ORIGIN AND FIELD SETTINGS.%
	TAD	BCOUNT
	RTR
	RTR
	RTR
	AND	L77
	AUXOUT
	TAD	BCOUNT
	AND	L77
	AUXOUT			/OUTPUT CHECKSUM
	LEADER
	PIP			/GIVE TRAILER AND RETURN TO PIP
/
BBBBBJ,	TAD	BFIELD		/SEE IF IN SAME DATA FIELD AS BEFORE.
	CIA
	TAD	BOFIELD		/?
	SNA CLA		/?
	JMP	BBN1		/YEP. DON T OD A NEW FIELD
	TAD	BFIELD		/GET THE FIELD
	TAD	L700		/PLACE ON TWO HIGH ORDER BITS.
	AUXOUT		/AND OUTPUT IT.
	JMP	BBNEWO		/AND GO OUTPUT ORIGIN.
/
BBN1,	PONE
	TAD	BOLDO		/IS IS LOCATION+1?
	CIA
	TAD	ORIGIN		/SO THTA IT WOULD LOAD HERE ANYWAY.
	SNA CLA
	JMP	BBN2		/NEXT LOC. DON T  DO A NEW ORIGIN
BBNEWO,	TAD	ORIGIN		/NEW ORG. OUTPUT IT ON SEQ. DEVICE
	RTR
	RTR
	RTR		/ROTATE RIGHT
	AND	L77		/JUST 6 BITS
	TAD	L100		/PLACE ON ORIGIN BIT
	JMS	BOADD		/AND PUT OUT WITH A CHECKSUM
	TAD	ORIGIN		/GET THE ORIGIN
	AND	L77		/JUST 6 BITS
	JMS	BOADD		/AND OUTPUT IT TOO
/
BBN2,	TAD	ORIGIN		/GET THE ORGIN
	DCA	BOLDO		/AND SAVE IT AWAY.
	TAD	BFIELD		/NOW RESET THE FILED TOO
	DCA	BOFIELD		/AND STAS AWAY
	TAD	DATA		/GET THE DATA
	RTR
	RTR
	RTR
	AND	L77
	JMS	BOADD		/AND PUT IT OUT
	TAD	DATA
	AND	L77		/NOW PUT IT OUT TOO
	JMS	BOADD
	JMP I	BBOUT		/NOW EXIT
/
/
/
BOADD,	0
	DCA	TEMP3
	TAD	TEMP3
	TAD	BCOUNT
	DCA	BCOUNT		/UPDATE BCOUNT
	TAD	TEMP3
	AUXOUT			/SEND IT ALONG
	JMP I	BOADD
/
L100,	100
BBLT,	BTAPE
/
/
/
/
/
/
/
/
	EJECT
/
/		COMMON ROUTINES USED BY BINARY AND ASCII HANDLERS.
/
/
/
	*4400
/
/
/
MORE,	0			/DISPLAYS A "MORE" MESSAGE.
	DECODE			/DECODE A LINE
	MMORE			/THATS OUR MESSAGE
	SEARCH		/LLOK UP THE ANSWER
	MAORN
	MGOTO			/JUMP TABLE
	JMP	MORE+1		/BAD REPLY.
MANDM1,	ISZ	MORE		/NO MORE TAPES
MANDM2,	JMP I	MORE		/EXIT.
/
/
MAORN,	301
	4316
/
MGOTO,	MANDM2
	MANDM1
/
/
MMORE,	LEFT+200
	TOP-300
	TEXT	"FMORE TAPES?
 
 
HA --- READ ANOTHER TAPE
HN --- NO MORE TAPES\"
/
/
/
/
CERR,	DISPLAY			/CHECKSUM ERROR DISPLAY.
	CCERR			/DISPLAY MESSAGE
	GETL			/DUMMY GET
	JMP	CERR
	JMP	CERR			/UNITL A CONTROL P OR D IS TYPED.
/
/
/
CCERR,	LEFT+200
	TOP-340
	TEXT	"FCHECKSUM ERROR\"
/
/
/
/
/
/
SETI,	0			/SETS UP GETI
	MONE			/BOP DOWN BY 1
	TAD	FBNUM		/GET FIRST BLCOK NUMBER
	DCA	GEENUM		/AND PLACE IN READ CALL.
	TAD	FUNIT		/GET THE UNIT
	DCA	GUNIT		/PLACE AWAY UNIT
	MONE			/SET THE SWITCH
	DCA	GCUNT		/TO OVERFLOW FIRST TIME THROUGH
	JMP I	SETI		/RETURN
/
/
/
/
/
GETI,	0			/GETS A CHARACTER FROM THE SYSTEM BUFFER.
	CLA
	ISZ	GCUNT		/IS BUFFER EXHAUSED?
	JMP	GOK		/NOPE. GET NEXT.
	TAD	M400		/YEP. RESET COUNRTE FOR A NEW BLOCK.
	DCA	GCUNT		/COUNTER RESET.
	TAD	GPLACE		/GET START OF BUFFER
	DCA	GPLCE2		/STORE AWAY.
	ISZ	GEENUM		/BOP UP TO NEXT REOCRD.
	READ
GUNIT,	0			/AND READ IT IN.
GPLACE,	BUFFER
	1
GEENUM,	0
GOK,	TAD I	GPLCE2		/GET WORD FROM BUFFER
	ISZ	GPLCE2		/BOP UP POINTER
	JMP I	GETI		/EXIT
/
GPLCE2,	0
GCUNT,	0			/GCOUNT ALREADY USED ELSEWHERE
/
/
/
/
/
BININP,	LEFT+240
	TOP-200
/
/
	ASMIFZ	CARD-1		/DO WE WANT STANDARD MESSAGE???
	ASMSKP	12		/NOPE. DONT ASSEMBLE I.T  IN...
/
/
	TEXT	"FINPUT DEVICE:
 
 
HH --- HIGH SPEED READER
HL --- LINC TAPE
HT --- TELETYPE\"
/
/
/
/
	ASMIFN	CARD-1		/DO WE WANT CARD READER MESSAGE????
	ASMSKP	13		/NOPE. DONT ASSEMBLE THAT IN.
/
/
	TEXT	"FINPUT DEVICE:
 
 
C --- CARD READER
HH --- HIGH SPEED READER
L --- LINC TAPE
T --- TELETYPE\"
/
/
/
/
/
/
/
/
/
BINOUT,	LEFT+240
	TOP-200
/
/
/
	ASMIFZ	CARD-1		/DO WE WANT STANDARD OUTPUT DEVICES.
	ASMSKP	12		/NOPE. DONT ASSEMBLE THEM IN.
/
/
	TEXT	"FOUTPUT DEVICE:
 
 
HH --- HIGH SPEED PUNCH
HL --- LINC TAPE
HT --- TELETYPE\"
/
/
/
/
	ASMIFN	CARD-1		/DO WE WANT THE LINE PRINTER ROUTINES LOADED??
	ASMSKP	13		/DO NOT DISPLAY LINE PRINTER MESSAGES.
/
/
	TEXT	"FOUTPUT DEVICE:
 
 
HH --- HIGH SPEED PUNCH
L --- LINC TAPE
P --- LINE PRINTER
T --- TELETYPE\"
/
/
/
/
/
/
/
/
/
/
/
/
/
	EJECT
/
/
/			THIS IS THE CONVERTER ROUTINE.
/			IT CONVERTS A SOURCE FILE FROM THE OLD TYPE(DOLLAR SIGN IS FILE TERMINATOR)
/			TO THE NEW FORMAT(00 IS THE FILE TERMINATOR). 
/			IT IS CONDITIONAL ASSEMBLED IN BY SETTING THE
/			SWITCH "REMAKE" TO 1.
/			SINCE IN FUTURE VERSIONS THIS WON T BE NECESSARY, YOU WILL SET REMAKE TO 0.
/
/
/
/
/
/
/
/
/
/
	ASMIFZ	REMAKE		/DO WE WANT TO ASSEMBLE CONVERTER??
	ASMSKP	114		/NOPE. SKIP PAST THE CODE
/
/
/
/
/
KONVRT,	DECODE			/GET THE INPUT FILE.
	ASCINP			/DISPLAY SOURCE MESSAGE.
	TAD	FTYPE		/GET THE REPLY
	TAD	M314		/IS IT AN L
	SZA CLA
	JMP	KONVRT		/NOPE. ASK AGAIN.
	PONE			/SET THE TYPE TO SOURCE
	DCA	FTYPE
	PONE			/AND THE SWITCH FOR "INPUT"
	DCA	FWHAT
	DIRECT			/AND LOOKUP UP NAME IN DIRECTORY.
	TAD	FSIZE		/GET THE NUMBER OF BLOCKS.
	DCA	BTEMP3		/AND STASH AWAY.
	TAD	FBNUM		/GET THE FIRST BLOCK
	DCA	KINB		/SET UP THE READ.
	TAD	FBNUM
	DCA	KOUTB		/AND ALSO THE REWRITE.
	TAD	FUNIT		/GET THE UNIT
	DCA	KINU		/AND SET UP THE
	TAD	FUNIT		/READ AND WRITE UNITS
	DCA	KOUTU
	MONE			/SET THE SWITCH SO NO DOLLAR SIGN FOOND.
	DCA	BTEMP2		/AND STASH AWAY.
	SKP			/SKIP PAST DECEREMENTER.
KLOOP,	MONE			/SUBRACT ONE FROM NUMBER OF BLOCKS TO GO.
	TAD	BTEMP3		/THE NUMBER TO GO.
	DCA	BTEMP3
	TAD	BTEMP3		/NUM TO GO
	AND	BTEMP2		/ARE WE ALL DONE???
	SNA CLA
	PIP			/YEP. RETURN TO PIP.
	READ			/NOPE. READ IN NEXT BLOCK.
KINU,	0			/INPUT UNIT
	BUFFER
	1			/1 RECORD
KINB,	0			/BLOCK NUMBER
	ISZ	KINB		/FOR NEXT READ.
	LINC
	LMODE			/GET OVER INTO A NICE MODE
	LDF	3		/INTO BUFFER REGION
	SET I	1		/SET 1 TO START OF INPUT
	PMODE			/GET OVER INTO 8 MODE FOR COMPARISONS.
	ASMIFZ	BUFFER-6000	/BUFFEE AT 6000?
	BUFFER+1777		/YEP. DO FOLOLOWING TO GET COREECT ADDRESS
	ASMIFN	BUFFER-6000	/IS ITTNOT AT 6000??
	BUFFER-1			/YEP. SET UP CORRECT POINTER NOW.	LMODE
	LMODE			/GET BACK INTO LMODE ASSEMLBY.
	SET I	2		/SET UP CHAR COUNT
	-1000
KLOOP2,	LDH I	1		/GET A CAR
	SHD I			/IS IT A
	4444			/DOLLAR SIGN
	CLR			/YEP. CONVERT TO A 00
	STH	1		/AND PLACE BACK IN BUFFER.
	AZE I			/YAS IT A DLOLAR SIGN???
	STC	BTEMP2		/YEP. END OF FILE NOW. 
	XSK I	2		/ALL DONE WITH THIS BUFFER?????
	JMP	KLOOP2		/NOPE. GET NEXT CHAR.
	PDP			/GET BACK INTO 8 MODE
	PMODE
	CLA			/CLEAR HTE AC TO BE SURE.
	WRITE			/WRITE OUT CONVERTED BLOCK
KOUTU,	0
	BUFFER
	1
KOUTB,	0
	ISZ	KOUTB		/BOP UP BUFFER POOINTER.
	JMP	KLOOP		/AND GO BACK AND TRY NEXT ONE.
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
	EJECT
/			SAVE THE SYMBOLS FOR       P   I   P   4
/
/
/
/
/
/
	SAVSYM	2
/
/
/
/
/
/
/
/
/
	EJECT



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