Google
 

Trailing-Edge - PDP-10 Archives - ap-c796e-sb - dtcert.mac
There is 1 other file named dtcert.mac in the archive. Click here to see a list.
	TITLE DTCERT

	OPDEF DISMIS [1B2]

	PIA=3
	P=17
	U=10
	RTTRP=57
	LOCK=60
	DEVCHR=4
	SLEEP=31
	EXIT==12
	SEL=30000
	FWD=200000
	RVS=100000
	DTS=324
	DTC=320
	PION=200
	PIOFF=400

A:	CALLI 0
	SETZM ERRFLG
	TTCALL 11,
	MOVE P,[IOWD 10,PDLST]
	TTCALL 3,[ASCIZ /DTA UNIT NUMBER?   /]
	TTCALL 4,U
	TTCALL 11,
	SUBI U,60
	JUMPL U,A
	CAILE U,10
	JRST A
	ANDI U,7
	LSH U,11
	PUSHJ P,GETDTA
	MOVE [XWD 1,1]
	CALLI LOCK
	JRST NOLOCK
	MOVEI RTBLK1
	CALLI RTTRP
	JRST NORTT
	TTCALL 3,[ASCIZ/MOUNT TAPE, WRITE ENABLED, THEN TURN ON WRTM SWITCH
/]
A1:	CONSZ DTS,1B25
	JRST A2
	MOVEI 1
	CALLI SLEEP
	JRST A1
A2:	CONO DTC,SEL(U)
	CONSO DTS,1B24
	JRST C
	CONO DTS,770001
	CONO DTC,410000
	TTCALL 3,[ASCIZ/WRITE ENABLED!!  TRY AGAIN.
/]
	JRST A
C:	MOVEI 200
	MOVEM CERSIZ
	MOVEI 1102
	MOVEM CERBLK
	PUSHJ P,WRTMK1
	TTCALL 3,[ASCIZ/REMOUNT TAPE, THEN TURN OFF WRTM SWITCH
/]
C1:	CONSO DTS,1B25
	JRST C2
	MOVEI 1
	CALLI SLEEP
	JRST C1
C2:	PUSHJ P,TMKBM
	PUSHJ P,WRITE0
	TTCALL 3,[ASCIZ/TAPE OK!

/]
	LSH U,-11
	DPB U,[POINT 4,.+1,12]
	MTAPE U,11
	JRST A

GETDTA:	ZZ=0
	MOVEI 1,0
	DEFINE DTINIT(ZZ)
		<	INIT ZZ,17
			SIXBIT /DTA'ZZ/
			0
			JRST NODTA
			AOS 1
>
	REPEAT 8,<	DTINIT(\ZZ)
			ZZ==ZZ+1>
CPOPJ:	POPJ P,

NODTA:	ADDI 1,20
	LSH 1,^D12
	HRLI 1,(SIXBIT/DTA/)
	CALLI 1,DEVCHR
	JUMPE 1,CPOPJ
	TTCALL 3,[ASCIZ/PLEASE ASSIGN ALL DECTAPE DRIVES!
/]
	CALLI EXIT

NOLOCK:	TTCALL 3,[ASCIZ/LOCK UUO FAILED!/]
	CALLI EXIT

NORTT:	TTCALL 3,[ASCIZ/RTTRP UUO FAILED!/]
	CALLI EXIT
WRTMK1:	SETZM DTACSO
	MOVEI ^D2500
	MOVEM COUNT
	MOVEI WRTMK
	MOVEM DISPAT
	MOVEI RTBLK
	CALLI RTTRP
	JRST NORTT
	MOVE CERBLK
	MOVEM WCERBL
	SETZM DONFLG
	MOVEI 3
	CONO PI,PIOFF
	CONO DTS,770000
	CONO DTC,FWD+SEL+400+PIA+PIA*8(U)
	MOVEM DTACSO
	CONO PI,PION
	MOVEI 1
	CALLI SLEEP
	SKIPN DONFLG
	JRST .-3
	SKIPN 1,ERRFLG
	POPJ P,
	JRST (1)

RTBLK:	XWD PIA,TRAP
	EXP APRTRP
	CONSO DTS,@DTACSO
	Z

TRAP:	JRST @DISPAT

DISPAT:	0
	DISMIS

APRTRP:	0
	MOVEI APRERR
	MOVEM ERRFLG
	JRST STOP

APRERR:	TTCALL 3,[ASCIZ/APR ERROR AT INTERRUPT LEVEL!/]
	CALLI EXIT

WRTMK:	CONSO DTS,1
	JRST ERR
	DATAO DTC,[404404404404]
	SOSLE COUNT
	DISMIS
	MOVNI 4
	MOVEM COUNT
	JSR DISPAT
MKBKE:	CONSO DTS,1
	JRST ERR1
	MOVE 1,MKBKET
	SKIPGE 2,COUNT
	MOVE 1,MKBKET(2)
	DATAO DTC,1
	AOS 2,COUNT
	MOVEI 3(2)
	CAME CERSIZ
	DISMIS
	MOVNI 2
	MOVEM COUNT
	JSR DISPAT
MKBKE1:	CONSO DTS,1
	JRST ERR1
	MOVE 2,COUNT
	DATAO DTC,MKBKET+3(2)
	AOSG 2,COUNT
	DISMIS
	MOVNI 5
	MOVEM COUNT
	SOSLE WCERBL
	JRST MKBKE-1
	JSR DISPAT
MKBKE2:	CONSO DTS,1
	JRST ERR1
	DATAO DTC,MKBKET-5
	MOVEI 50000
	MOVEM COUNT
	JSR DISPAT
LEZONE:	CONSO DTS,1
	JRST ERR1
	DATAO DTC,[040040040040]
	SOSLE COUNT
	DISMIS
STOP:	CONO DTS,770001
	CONO DTC,410000
	MOVEI RTBLK1
	CALLI RTTRP
	JFCL
	SETOM DONFLG
	SETZM DTACSO
	DISMIS

RTBLK1:	Z
	Z
	CONSO DTS,0
	Z
TMKBM:	SETZM DONFLG
	MOVEI MOVAY
	MOVEM DISPAT
	MOVEI RTBLK
	CALLI RTTRP
	JRST NORTT
	MOVEI 3
	CONO PI,PIOFF
	CONO DTS,770000
	CONO DTC,RVS+SEL+200+PIA+PIA*8(U)
	MOVEM DTACSO
	CONO PI,PION
	MOVEI 1
	CALLI SLEEP
	SKIPN DONFLG
	JRST .-3
	SKIPN 1,ERRFLG
	POPJ P,
	JRST (1)

MOVAY:	CONSO DTS,1
	JRST ERR
	CONO DTC,300000+PIA+PIA*8
	JSR DISPAT
MOVAY1:	CONSO DTS,20000
	JRST ERR
	CONO DTC,FWD
	CONO DTC,300500+PIA+PIA*8
	MOVE CERBLK
	MOVEM TCERBL
	SOS CERBLK
	JSR DISPAT
TMKBM1:	CONSO DTS,1
	JRST ERR1
	SOS 3,TCERBL
	SETCM 2,CERSIZ
	MOVEI 1,(3)
	DATAO DTC,1
	MOVEM 2,COUNT
	SETCMI 1,-1(3)
	JSP 16,OBVSBK
	MOVEM 1,NXTDAT
	JSR DISPAT
TMKBM2:	CONSO DTS,1
	JRST ERR1
	SKIPN TCERBL
	JRST TMKCK1
	DATAO DTC,NXTDAT
	JSR DISPAT
TMKBM3:	CONSO DTS,1
	JRST ERR1
	DATAO DTC,[252525252525]
	AOSG COUNT
	DISMIS
	JRST TMKBM1-1

TMKCK1:	CONO DTS,20001
	JSR DISPAT
	CONSO DTS,20000
	JRST ERR
	CONO DTC,RVS
	CONO DTC,300100+PIA+PIA*8
	MOVEI 3,1
	SETCMI 1,-1(3)
	JSP 16,OBVSBK
	MOVEM 1,NXTDAT
	MOVEM 3,COUNT
	JSR DISPAT
TMKCK2:	CONSO DTS,1
	JRST ERR2
	DATAI DTC,0
	CAME NXTDAT
	JRST DATERR
	JSR DISPAT
TMKCK3:	CONSO DTS,1
	JRST ERR2
	DATAI DTC,0
	CAME COUNT
	JRST DATERR
	SETCM 2,CERSIZ
	MOVEM 2,COUNT1
	JSR DISPAT
TMKCK4:	CONSO DTS,1
	JRST ERR2
	DATAI DTC,0
	CAME [252525252525]
	JRST DATERR
	AOSG COUNT1
	DISMIS
	AOS 3,COUNT
	SETCMI 1,-1(3)
	JSP 16,OBVSBK
	MOVEM 1,NXTDAT
	CAME 3,CERBLK
	JRST TMKCK2-1
	JRST STOP
WRITE0:	SETZM DONFLG
	MOVEI FIX1
	MOVEM DISPAT
	MOVEI RTBLK
	CALLI RTTRP
	JRST NORTT
	MOVEI 3
	CONO PI,PIOFF
	CONO DTS,760000
	CONO DTC,FWD+SEL+PIA+PIA*8(U)
	MOVEM DTACSO
	CONO PI,PION
	MOVEI 1
	CALLI SLEEP
	SKIPN DONFLG
	JRST .-3
	SKIPN 1,ERRFLG
	POPJ P,
	JRST (1)

FIX1:	CONSO DTS,1B22
	JRST ERR
	CONO DTC,RVS+7B29+PIA+PIA*8
	JSR DISPAT
FIX2:	CONSZ DTS,745700
	JRST ERR1
	CONSZ DTS,1B22
	JRST STOP
	CONSO DTS,1
	JRST ERR1
	DATAO DTC,[0]
	DISMIS
ERR:	MOVEI ERROR
ERRA:	MOVEM ERRFLG
	JRST STOP

ERR1:	MOVEI ERROR1
	JRST ERRA

ERR2:	MOVEI ERROR2
	JRST ERRA

ERROR:	TTCALL 3,[ASCIZ/DECTAPE CONTROL ERROR
/]
	JRST A

ERROR1:	TTCALL 3,[ASCIZ/ERROR DURING WRITE
/]
	JRST A

ERROR2:	TTCALL 3,[ASCIZ/ERROR DURING READ
/]
	JRST A

DATERR:	MOVEI DATER1
	JRST ERRA

DATER1:	TTCALL 3,[ASCIZ/PREVIOUSLY WRITTEN DATA IS NO LONGER CORRECT
/]
	JRST A


	400404040404
	040404040440
	044040004000
	004000004000
	004000444000
MKBKET:	444000444000
	444000444044
	444044444044
	444044404004

OBVSBK:	MOVE 4,1
	REPEAT 6,<
		ROTC 4,-3
		ROT 5,6>

	ROT 5,-3
	HRLO 1,5
	JRST (16)


DONFLG:	Z
ERRFLG:	Z
CERSIZ:	Z
CERBLK:	Z
DTACSO:	Z
COUNT:	Z
COUNT1:	Z
WCERBL:
TCERBL:	Z
NXTDAT:	Z
PDLST:	BLOCK 10

	END A