File AUTOAS.PA (PAL assembler source file)

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

/ASSIGN TAPE USER DEVICE NAMES FROM INTERNAL LABELS

/THIS VERSION IS INDEPENDENT OF THE DEVICE
/NUMBERS ASSOCIATED WITH TAPES. HENCE
/IT WILL RUN WITH OS/8 SYSTEM WITH "BUILD".

/MODIFIED 8/21/74
/TO LOOK UP DEVICE TYPE FROM DCB TABLE TO DECIDE
/IF TC08 DECTAPE OR LINCTAPE.

/MODIFIED 7/19/73
/TO USE BLOCK 6 AS PARAMETER BLOCK.

/ASSEMBLY INFORMATION:
/	.CO DTA /L
/	*=12000(89)$
/	.SA SYS AUTOAS
/NOTE THIS PROGRAM MAY BE RUN ON NON-DECSYSTEM-8 SYSTEMS
/VIA JUST  .R AUTOAS


	USR=200
	DCB=7760	/DCB TABLE

	FIELD 1
	*2000

	CLA CLL
	JMS I (7700	/USRIN
	  10
DCBLOP,	TAD I DCBTP	/GET DCB ENTRY
	AND (7770	/NOT INTERESTED IN ACTIVE TENATIVE
	TAD (-4160	/DECTAPE TYPE
	SNA
	JMP TC08TYP	/IS TC08 DECTAPE
	TAD (4160-4170	/LINCTAPE TYPE
	SNA
	JMP LTATYP	/IS LINCTAPE
	TAD (4170-4210	/TD8E DECTAPE
	SNA CLA
	JMP TD8ETYP	/SOMEDAY DO TD8E STUFF
	ISZ DCBTP	/NEXT ENTRY IN TABLE
	ISZ DCBCNT	/ONLY CHECK 17 OF THEM
	JMP DCBLOP	/CHECK NEXT
	JMP EXIT	/NO GOT NONE!!!

DTAX,	DEVICE DTA
LTAX,	DEVICE LTA

LTATYP,	TAD (LTAONLINE
	DCA ONLINE	/CHANGE ONLINE TO LTA TYPE
	TAD LTAX	/AND CHANGE NAME CHECK
	DCA DTAX
	TAD LTAX
	DCA ZDEVN	/AND FOR INQUIRE

TC08TYP,		/EVERYTHING SET UP FOR TC08
ZDTLP,	CLA CLL		/WE WISH TO DELETE THE USER DEVICE
	JMS I (USR	/NAMES. SO INQUIRE DEVICE NUMBERS
	  12		/AND BUILD "UNITABLE".

ZDEVN,
	 DEVICE DTA0	/DEVICE NAME;DEVICE NUMBER
	  0
	JMP LOOP	/HAVE GONE THROUGH ALL AVAILABLE UNITS.
	TAD ZDEVN+1	/PICK UP DEVICE NUMBER
	DCA I ZDTPTR	/AND SAVE IN TABLE
	ISZ ZDTPTR	/POINT TO NEXT
	TAD ZDEVN+1	/NOW CALC ADDRESS OF USER DEV. NAME TABLE
	TAD (7740	/IS 7740+DEV#
	DCA ZDTCT
	DCA I ZDTCT	/NOW CLEAR OUT OLD ENTRY
	TAD DTAX	/NOW RESTORE DEVICE NAME
	DCA ZDEVN	/FIRST WORD
	TAD DTAX+1	/SECOND WORD (NO NUMBER)
	TAD ZDTPTR	/AND PUT IN UNIT NUMBER
	TAD (60-UNITABLE
	DCA ZDEVN+1
	JMP ZDTLP	/AND LOOP FOR NEXT UNIT.

LOOP,	CLA CLL
	ISZ UNIT
	TAD I UNIT	/PICK UP DEV. NUMBER
	SNA CLA		/ZEROS END LIST
	JMP EXIT
	TAD UNIT
	TAD (-UNITABLE	/TO CALC UNIT NUMBER
	JMS I ONLINE	/IS THIS UNIT ONLINE
	JMP LOOP	/NO
	JMS CRLF
	JMS DOLABL
	JMP LOOP

ZDTPTR,	UNITABLE
ZDTCT,	0
UNIT,	UNITABLE-1
ONLINE,	DTAONL
DCBTP,	DCB		/POINTER TO DCB TABLE
DCBCNT,	-17		/TABLE LENGTH


EXIT, CLA CLL CIF CDF 0 JMP I (7600 PRTEXT, 0 DCA PRTIP TAD I PRTIP SNA JMP I PRTEXT RTR RTR RTR JMS PR6BIT TAD I PRTIP JMS PR6BIT ISZ PRTIP JMP PRTEXT+2 PRTIP, 0 PR6BIT, 0 AND (77 SNA JMP I PRTEXT TAD (-40 SPA TAD (100 TAD (240 JMS OPUTC JMP I PR6BIT OPUTC, 0 TLS TSF JMP .-1 CLA CLL JMP I OPUTC PAGE
DOLABL, 0 CLA CLL TAD (4001 DCA HANENT TAD UNIT DCA UNIT2 /COPY POINTER TO THIS PAGE TAD I UNIT2 /PICK UP DEVICE NUMBER JMS I (USR 1 /FETCH ITS HANDLER HANENT, 0 HLT CIF 0 JMS I HANENT /READ 0110 /1 PAGE (128 WDS) TO FIELD 1 4000 /AT LOC 4000-4177 0 /BLOCK ZERO OF TAPE HLT CIF 0 JMS I HANENT /READ 0111 /1 PAGE 4200 /BEHIND BLOCK 0 6 /PARAMETER BLOCK HLT CLA CLL TAD (DTAX JMS PRTEXT TAD UNIT2 TAD (260-UNITABLE /MAKES ASCII UNIT NUMBER JMS OPUTC DCA LABEL DCA LABEL+1 /CLEAR FROM PREVIOUS DCA LABEL+2 ISZ I (4202 /SKIP IF PARAM BLOCK JMP BLK0 /NO: TRY BLOCK 0 TAD I (4300 /GET LABLE CHARS JMS RTL6 /OVER TO HIGH ORDER DCA LABEL /FOR LABEL CHECK. TAD I (4301 /NEXT AND (77 TAD LABEL /FINISH UP 1ST TWO DCA LABEL TAD I (4302 /3RD CHAR JMS RTL6 /OVER TO HIGH ORDER DCA LABEL+1 TAD I (4303 /LAST CHAR AND (77 TAD LABEL+1 DCA LABEL+1 TAD I (4277 /INTERNAL LABLE DCA INTLBL /STASH JMP LFINISH /GO FINISH UP BLK0, TAD I (4000 TAD (-6260 SZA CLA JMP UNLAB TAD I (4001 TAD (-0714 SZA CLA JMP UNLAB TAD I (4005 /WE ARE WORKING ON LABEL AND (7400 CLL RTR DCA LABEL TAD I (4004 AND (1400 CLL RTL TAD LABEL DCA LABEL TAD I (4006 AND (77 TAD LABEL DCA LABEL TAD LABEL DCA INTLBL LFINIS, TAD (PRLABL JMS PRTEXT TAD (LABEL JMS CHKDUP JMP DUPLAB /WE ALREADY HAVE DEVICE BY THAT NAME CLA CLL TAD (7740 /CALCULATE TAD I UNIT2 /INDEX INTO TABLE DCA ASGIND TAD INTLBL /GET INTERNAL LABEL DCA I ASGIND /ENTER IT JMP I DOLABL INTLBL, 0 UNIT2, 0 ASGIND, 0 PRLABL, 4040 LABEL, 0;0;0 UNLAB, TAD (PRUNL JMS PRTEXT JMP I DOLABL DUPLAB, CLA CLL TAD (DUPMSG JMP UNLAB+1 PAGE
DUPMSG, TEXT / IS DUP NAME, NOT ASSIGNED/ PRUNL, TEXT / UNLABELED/ TD8ENO, TEXT / TD8E AUTOAS NOT IMPLEMENTED/ /NO TD8E SUPPORT AS YET TD8ETYP,TAD (TD8ENO JMS I (PRTEXT JMP I (EXIT CHKDUP, 0 DCA CHKD TAD I CHKD DCA CHKA1 ISZ CHKD TAD I CHKD DCA CHKA1+1 JMS I (USR 12 /INQUIRE CHKA1, 0;0;0 ISZ CHKDUP /NO DEVICE BY THIS NAME ALREADY EXISTS, GOOD JMP I CHKDUP /IF WE CAME BACK TO HERE, TAKE ER RET FROM HERE CHKD, 0 CRLF, 0 CLA CLL TAD (215 JMS OPUTC TAD (212 JMS OPUTC JMP I CRLF RTL6, 0 AND (77 CLL RTL;RTL;RTL JMP I RTL6 UNITABLE,ZBLOCK 11 PAGE
/"ONLINE" SUBROUTINE FOR LINCTAPES LTAONL, 0 CLL RAR /THIS GETS UNIT (EVEN - ODD) IN LINK TAD (10 /WE NOW HAVE NO PAUSE + EX UNIT IN AC 6141 /GO TO LINC MODE 0001 /AC TO XOB 0452 /SKIP IF LINK ZERO .+4&1777+6000 /JMP .+4 0703 /MOVE 0000 .+3&1777+6000 /JUMP AROUND THE ONE FOR NO LINK 0713 0000 0002 CLA CLL TAD (5000 /GET 6151 CLA CLL 6154 RTR SNL CLA /SKIP IF TAPE OK JMP ONLIN1 /NOT ONLINE = NO NEED TO WAIT 6141 /GO TO LINK MODE 0416 /IN ORDER TO WAIT UNTIL .-1&1777+6000 /TAPE FINISHED 0002 /BACK TO 8 MODE ISZ LTAONL /RETURN TO CALL +2: TAPE O.K. ONLIN1, CLA CLL TAD (20 6141 /LINC MODE 0004 /I/O PRESET 0002 /8 MODE JMP I LTAONL
/"ONLINE" SUBROUTINE FOR TC08 DECTAPES DTAONL, 0 CLL RTR; RTR TAD (700 /START MOTION IN REVERSE 6762 /CLEAR STATUS REG A 6764 /LOAD STATUS REG A 6771 /WAIT FOR SOMETHING TO HAPPEN JMP .-1 6772 /READ STATUS REG B AND (400 /LOOK AT SEL ERR BIT SNA CLA /BIT IS SET, UNIT NOT ON LINE ISZ DTAONL /UNIT ONLINE, RETURN TO CALL +2 JMP I DTAONL PAGE



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