File F1104.PA (PAL assembler source file)

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

/CASSETTE ENTER, LOOKUP, CLOSE (RTS-8)
/
/
/
/
/
/
/
/
/
/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.
/
/
/
/
/
/
/
/
/
/
/CSAF
/FORMAT OF MASSAGE IS:
/MSG,	ZBLOCK 3
/WORD 1 OP,UNIT BIT	0=ENTER
/			1=LOOKUP
/			2=CLOSE
/			9-11 = UNIT
/WORD 2 ADDRESS OF START OF HEADER INFO FOR ENTER+LOOKUP
/		MUST ALL BE IN SAME FIELD
/	STATUS WORD FOR CLOSE
/WORD 3 FIELD OF HEADER IN BITS 6-8 FOR ENTER+LOOKUP
/		RECSIZE PUT IN HEADER+13 BY LOOKUP
/			0=NOT FOUND OR PHYSICAL ERROR
/WORD 4 STATUS WORD FOR ENTER+LOOKUP
/STATUS WORD RETURNS B STATUS FOR PHYSICAL ERROR(E,L+C) OR
/NEG. ERROR CODE FOR LOGICAL ERROR (NONE DEFINED YET)

	F1=10		/FIELD OF R/W BUFFER
	READ=0
	WRITE=4000
	REWIND=10
	BACKFI=30
	WRGAP=40
	BACKBL=50
	SKPFIL=70
	HSIZE=40

/PARAMETERS FOR RTS8
	INIWT=0
	CUR=10
	TASK=CSAF
	FIELD	CUR%10
	*2400
START,
LOOP,	CAL
	RECEIV
ADDR,	0
	DCA	FLD
	AC7775
	TAD	ADDR
	DCA	MEVFLG
	DCA	STATUS
	JMS	CDFMSG
	TAD I	ADDR
	CDF	CUR
	DCA	CUNIT
	TAD	CUNIT	/DET. TYPE OF OPERATION
	CLL RAL
	SZL
	JMP	ENTER
	SMA CLA
	JMP I	(CLOSE
	JMP I	(LOOKUP

ALDONE, CLL CLA
	ISZ ADDR
	TAD	STATUS	/RETURN IT TO CALLER
	JMS	CDFMSG
	DCA I	ADDR
	CDF	CUR
	TAD	FLD
	DCA	RFLD
	TAD	MEVFLG
	CAL
	POST
RFLD,	0
	JMP	LOOP
CUNIT,	0
MEVFLG, 0
STATUS, 0

CDFMSG, 0
FLD,	0
	JMP I	CDFMSG
ENTER,	CLA CLL
	JMS	GETARG
	JMS I	(ENTLKP /SEE IF ALREADY EXISTS
LKPRTN, JMP	ALDONE
	JMP	NTF	/NO-NOT FOUND
	JMP	DELET	/YES-DELETE IT
NTF,	JMS	BACK
	JMS I	(HANSET /DO A HANDLER OP
WRFLD,	0
HDRADR, 0
	JMP	ALDONE
	JMP	ALDONE

GETARG, 0		/GET ARGS FROM CALLER'S MESSAGE
	ISZ	ADDR
	JMS	CDFMSG
	TAD I	ADDR	/WORD 2
	DCA	HDRADR
	ISZ	ADDR
	AC4000		/WRITE
	TAD I	ADDR	/WORD 3
	CDF	CUR
	DCA	WRFLD
	JMP I	GETARG
RDOR,	0
	AND	(374
	TAD	(-200
	SZA CLA
	JMP	ALDONE	/NOT CRC
	JMP I	RDOR	/WAS CRC

BACK,	0
	JMS I	(UTILST
	BACKFI		/TO FILE GAP
	JMP	ALDONE	/NON-ZERO
	JMS I	(UTILST
	BACKBL
	JMP	BKERR	/PASS STATUS
	TAD I	(OLDRSZ
	DCA I	(RECSIZ
	JMS I	(HANSET /READ LAST REC OF PREV FILE
	READ+F1+1	/DON'T STORE DATA
	INCH
	JMS	RDOR	/ERROR READING LAST BLK
NEWGAP, JMS I	(UTILST
	WRGAP		/WRITE NEW GAP
	JMP	ALDONE
	TAD	(HSIZE
	DCA I	(RECSIZ
	JMP I	BACK

BKERR,	AND	(3775	/AC=STATUS
	TAD	(-41	/CLEAR LEADER ERROR
	SZA CLA
	JMP	ALDONE
	JMP	NEWGAP	/YES-WRITE NEW GAP

DELET,	JMS	BACK
	JMS I	(HANSET
	WRITE+F1
	EMPTIN
	JMP	ALDONE
	TAD	(LKPRTN
	DCA I	(ENTLKP
	JMP I	(FLOOP

	PAGE

UTILST, 0
	TAD I	(CUNIT
	AND	(7
	DCA	MSG1
	TAD I	UTILST
	DCA	MSG2	/FNC
	ISZ	UTILST
	JMS I	(DOA
	TAD	MSG3
	DCA I	(STATUS
	TAD I	(STATUS
	SNA
	ISZ	UTILST
	JMP I	UTILST

HANSET, 0
	TAD I	(CUNIT
	AND	(7
	TAD	(4000
	DCA	MSG1
	TAD I	HANSET
	DCA	MSG2	/FNC+BUFFLD
	ISZ	HANSET
	TAD I	HANSET
	DCA	MSG3	/BUF
	TAD	RECSIZ
	DCA	MSG4
	ISZ	HANSET
	JMS I	(DOA
	TAD	MSG5
	DCA I	(STATUS
	TAD I	(STATUS
	SNA
	ISZ	HANSET	/GOOD RET
	JMP I	HANSET

MSG,	ZBLOCK 3
MSG1,	0
MSG2,	0
MSG3,	0
MSG4,	0
MSG5,	0

RECSIZ, 0
LOOKUP, JMS I	(GETARG
	TAD I	(HDRADR
	TAD	(13
	DCA	RETADR
	JMS	ENTLKP
	NOP		/ERROR
	SKP		/NOT FOUND
	TAD I	(INCH+13	/RECSIZE
	JMS I	(CDFMSG
	DCA I	RETADR
	CDF	CUR
	JMP I	(ALDONE

ENTLKP, 0
	TAD I	(WRFLD
	TAD	(2201	/ALREADY HAS 4000
	DCA	USRFLD
	JMS	UTILST
	REWIND
	JMP	STSET	/ERROR
	TAD	(HSIZE
	DCA	RECSIZ
	DCA	FILNUM
	JMP	FL2
FLOOP,	JMS	UTILST
	SKPFIL
	JMP	STSET
FL2,	ISZ	FILNUM
	JMS	HANSET
	READ+F1
	INCH		/BUFFER
	JMP	STSET
	TAD	(INCH
	DCA	P1
	TAD I	P1
	SNA CLA
	JMP	NFNDRT	/SENTINEL. FILE NOT FOUND
	TAD I	(INCH+13
	DCA	OLDRSZ	/FOR ENTER-FOUND RETURN'S BACKSPACE
	TAD I	(HDRADR
	DCA	P2
	TAD	(-10	/FIRST 10 CHARACTERS
	DCA	SCNT
SLOOP,	TAD I	P1
	CIA
USRFLD, 0
	TAD I	P2
	CDF	CUR
	AND	(177	/MATCH HI 7
	SZA CLA
	JMP	FLOOP	/NOT CORRECT FILE KEY
	ISZ	P1
	ISZ	P2
	ISZ	SCNT
	JMP	SLOOP
	ISZ	ENTLKP	/FOUND
NFNDRT, ISZ	ENTLKP	/NOT FOUND
STSET,	DCA I	(STATUS /ALL HAVE STATUS IN AC(0 FOR FOUND+NOT FOUND)
	JMP I	ENTLKP

P1,	0
P2,	0
SCNT,	0
FILNUM, 0
OLDRSZ, 0
RETADR, 0

	PAGE
CLOSE,	JMS I	(UTILST
	WRGAP
	JMP I	(ALDONE /ERROR WRITING GAP
	TAD	(HSIZE
	DCA I	(RECSIZ
	JMS I	(HANSET /WRITE SENTINEL
	WRITE+F1
	ZER
	JMP I	(ALDONE
	JMS I	(UTILST
	REWIND
	JMP I	(ALDONE
	JMP I	(ALDONE

DOA,	0
	CAL
	SENDW
	CSA
	MSG
	JMP I	DOA

ZER,	0
EMPTIN, 52;105;115;120;124;131;40;40;40;14
	0;0;0;0;40;40;40;40;40;40
	ZBLOCK 14
INCH,	ZBLOCK 40	/USED BY LOOKUP FOR READING HEADER

	$



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