DataMuseum.dk

Presents historical artifacts from the history of:

Intel ISIS Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Intel ISIS Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦bc8227e61⟧ TextFile

    Length: 29832 (0x7488)
    Types: TextFile
    Names: »INSPEC.SRC«

Derivation

└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files )
└─⟦af81bc460⟧ Intel_ISIS_II
    └─ ⟦this⟧ »INSPEC.SRC« 

TextFile

	\r
	NLIST	S\r
PASSIVATE	MACRO	#ID,#NO\r
					;DESRIP: THE MODULE PASSIVATES\r
					;	SPECIFIED PROCES.\r
					;	IF LINK IS SET AND ACTIV\r
					;	SPECIAL PROCESS IS PASSIVATED\r
					;	THE LINK-ELEMENT IS \r
					;	DECREMENTED\r
					;DESTR:	REG F,H,L\r
	IF	'#ID'.EQ.'S'\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	IF	LINK.EQ.1\r
	BIT	7,(HL)			;\r
	JR	Z,O#$YM		;IF PROCESS WAS NOT PASSIVE THEN\r
	LD	HL,SYSRAM+0FBH	;BEGIN\r
	DEC	(HL)			;DEC LINK-ELEMENT\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;END\r
O#$YM:	ENDIF\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	ENDIF\r
	RES	7,(HL)			;PASSIVATE\r
	ENDM\r
ACTIVATE	MACRO	#ID,#NO\r
					;DESRIP: THE MODULE ACTIVATES\r
					;	SPECIFIED PROCES.\r
					;	IF LINK IS SET AND PASSIV\r
					;	SPECIAL PROCESS IS ACTIVATED\r
					;	THE LINK-ELEMENT IS \r
					;	INCREMENTED\r
					;DESTR:	REG F,H,L\r
	IF	'#ID'.EQ.'S'\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	IF	LINK.EQ.1\r
	BIT	7,(HL)			;\r
	JR	NZ,O#$YM		;IF PROCESS WAS NOT ACTIVE THEN\r
	LD	HL,SYSRAM+0FBH	;BEGIN\r
	INC	(HL)			;INC LINK-ELEMENT\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;END\r
O#$YM:	ENDIF\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	ENDIF\r
	SET	7,(HL)			;ACTIVATE\r
	ENDM\r
\r
LESTAB	MACRO	#PRNUM\r
	LD	BC,#PRNUM\r
	CALL	ESTABR\r
	ENDM\r
\r
LSUSPN	MACRO	#PRNUM\r
	LD	BC,#PRNUM\r
	CALL	SUSPND\r
	ENDM\r
\r
GESTAM	MACRO\r
	LD	HL,ONOFF\r
	LD	(HL),0FFH\r
	ENDM\r
\r
GSUSPM	MACRO\r
	LD	HL,ONOFF\r
	LD	(HL),0\r
        ENDM\r
\r
UPDATM	MACRO	#PRNUM,#NO\r
	LD	HL,DELAY+#PRNUM\r
	LD	(HL),#NO\r
	ENDM\r
\r
IDEPAS	MACRO\r
	NOP\r
	ENDM\r
\r
OGEPAS	MACRO	#NO\r
	NOP\r
	ENDM\r
\r
ODEPAS	MACRO	#NO\r
	NOP\r
	ENDM\r
\r
OGEPAC	MACRO	\r
	NOP\r
	ENDM\r
\r
ODEPAC	MACRO\r
	NOP\r
	ENDM\r
\r
OGEPA	MACRO	#NO\r
	NOP\r
	ENDM\r
\r
ODEPA	MACRO	#NO\r
	NOP\r
	ENDM\r
\r
	LIST	S\r
;******************************************************************************\r
;*                                                                            *\r
;* D O R A     A P P L I C A T I O N     S / W                                *\r
;*                                                                            *\r
;* DEVICE: MATRIX                                                             *\r
;*                                                                            *\r
;* MODULE: INSPECTION PROCESS                                                 *\r
;*                                                                            *\r
;******************************************************************************\r
\r
	PUBLIC	SCANPR,CNTPULS,STAC10\r
	EXTRN	CONDIT,ECOND2,PRTSAV,TAB2PX,PXPORT,TAB3VX,DELAY\r
	EXTRN	ESTABR,SYSRAM,CDCONT,TAB1VX,VXT1CK,TABVID,SCOMMON\r
	EXTRN	VXCREC,VXCKCO,VXCSEN,TAB2VX,VXPORT,VXAID,TABTFK\r
	EXTRN	QAQEST,QUEST,QEMPTY,SUBDEQ,SUBENQ\r
	EXTRN	QXI,QIX,QKE,INVEST\r
\r
LINK	DEFL	0\r
INSPNR	DEFL	10\r
PORT22	DEFL	4042H\r
PORT33	DEFL	0022H\r
PORT34	DEFL	0024H\r
PORT42	DEFL	4040H\r
PORT43	DEFL	4048H\r
PORT44	DEFL	0042H\r
PORT45	DEFL	004AH\r
PORT46	DEFL	4041H\r
PORT47	DEFL	4044H\r
PORT48	DEFL	0044H\r
PORT67	DEFL	4028H\r
PORT68	DEFL	4024H\r
\r
\r
	CSEG\r
SCANPR:	LD	SP,STAC10	;INITIALIZE STACKPOINTER\r
\r
	CALL	SCOMMON\r
	EI\r
\r
*******************************************************************************\r
; MATRIX I/F INITIALIZATION :\r
*******************************************************************************\r
	UPDATM	10,5		;UPDATE PAUSE-DELAY\r
VID0:	LD	HL,DSTCNT\r
	LD	A,60\r
	LD	(HL),A		;INITIALIZE VIDEO DESTINATION COUNTER\r
	LD	HL,TFKCNT\r
	LD	A,60\r
	LD	(HL),A		;INITIALIZE TFK DESTINATION COUNTER\r
\r
VID1:	LD	HL,DSTCNT\r
	DEC	(HL)		;IF ALL VIDEO DESTINATION HAVE BEEN\r
	JR	Z,VIDEND	;RUNNED THROUGH THEN SKIP\r
				;ELSE\r
	LD	D,0\r
	LD	E,(HL)\r
	LD	HL,VXT1CK\r
	ADD	HL,DE\r
	LD	A,(HL)\r
	CP	0\r
	JR	Z,VID1		;IF NON VALID VIDEO DEST. THEN TRY NEXT ONE\r
	PUSH	AF		;SAVE DEST.CODE\r
	LD	A,10\r
	LD	HL,SRCCNT\r
	LD	(HL),A		;INITIALIZE SOURCE COUNTER\r
VID2:	POP	AF		;GET DEST.CODE\r
	PUSH	AF\r
	BIT	7,A\r
	JR	NZ,INVI45\r
	BIT	6,A\r
	JR	NZ,INVI2\r
\r
INVI1:	LD	BC,PORT46	;IF DEST. = 1-20 (KRA 1-20) THEN\r
	OUT	(C),A		;SET CODE FOR DEST. ON PORT46\r
	LD	BC,PORT42\r
	JR	VID3\r
INVI2:	LD	BC,PORT47	;IF DEST. = 21-40 (KRA 21-40) THEN\r
	OUT	(C),A		;SET CODE FOR DEST. ON PORT47\r
	LD	BC,PORT42\r
	JR	VID3\r
INVI45:	LD	BC,PORT48	;IF DEST. = 41-46,51-59 (KRA 41-46,51-59) THEN\r
	OUT	(C),A		;SET CODE FOR DEST. ON PORT48\r
	LD	BC,PORT44\r
\r
VID3:	LD	HL,SRCCNT\r
	LD	E,(HL)\r
	LD	D,0\r
	LD	HL,VXCSEN\r
	ADD	HL,DE\r
	LD	A,(HL)		;SET CODE FOR SOURCE(UNITS) ON\r
	OUT	(C),A		;PORT\r
	JR	TFK0\r
\r
VIDEND:	INC	(HL)\r
	LD	HL,INIFLAG\r
	SET	0,(HL)		;SET VIDEO CONSULT. TERMINATED-FLAG\r
\r
;       ------------------------\r
TFK0:	LD	HL,INIFLAG\r
	BIT	1,(HL)\r
	JR	NZ,WAIT1	;IF TFK CONSULT. IS TERMINATED THEN SKIP\r
				;ELSE\r
TFK1:	LD	HL,TFKCNT\r
	DEC	(HL)		;IF ALL TFK DESTINATIONS HAVE BEEN \r
	JR	Z,TFKEND	;RUNNED THROUGH THEN SKIP\r
				;ELSE\r
	LD	A,(HL)		;GET TFK DEST.NO.\r
	LD	HL,TFKSAV\r
	LD	(HL),A		;SAVE DEST.NO.\r
	PUSH	AF		;SAVE DEST.NO.\r
TFK2:	LD	HL,QEMPTY\r
	CALL	SUBDEQ\r
	JR	C,TFK3\r
	CALL	SCOMMON\r
	EI\r
	JR	TFK2\r
TFK3:	PUSH	DE\r
	POP	IX\r
	LD	(IX+2),02H	;INSERT QUESTION COMMAND CODE IN BUFFER\r
	LD	(IX+3),0	;INSERT DUMMY SOURCE NO.\r
	POP	AF\r
	LD	(IX+4),A	;INSERT ACTUAL DESTINATION NO.\r
	LD	HL,QAQEST\r
	CALL	SUBENQ		;ENQUE BUFFER IN TFK Q-HEAD\r
	ACTIVATE S,11		;ACTIVATE TFK PROCESS\r
	JR	WAIT1\r
\r
TFKEND:	INC	(HL)\r
	LD	HL,INIFLAG\r
	SET	1,(HL)		;SET TFK CONSULT. TERMINATED-FLAG\r
\r
;	------------------------\r
WAIT1:	CALL	PAUSE		;WAIT\r
\r
	LD	HL,INIFLAG\r
	BIT	1,(HL)\r
	JR	NZ,VID4		;IF TFK CONSULTATION THEN \r
TFK4:	LD	HL,QUEST	;BEGIN\r
	CALL	SUBDEQ		;  GET REPLY-BUFFER FROM TFK PROCESS\r
	JR	C,TFK5		;\r
	CALL	SCOMMON		;\r
	EI			;\r
	JR	TFK4		;\r
TFK5:	PUSH	DE		;\r
	POP	IX		;\r
	BIT	0,(IX+2)	;\r
	LD	A,(TFKSAV)	;\r
	JR	Z,TFK5A		;\r
	CP	(IX+4)		;  IF NACK-REPLY OR WRONG DESTINATION\r
	JR	Z,TFK5B		;  THEN\r
TFK5A:	LD	(IX+4),A	;  SET SOURCE = 0FFH\r
	LD	A,0FFH		;\r
	LD	(IX+3),A	;\r
\r
TFK5B: 	LD	HL,TFKTAB	;  BEGIN\r
	LD	D,0		;\r
	LD	E,(IX+4)	;\r
	ADD	HL,DE		;\r
	LD	A,(IX+3)	;    UPDATE TFK INIT.TABLE\r
	LD	(HL),A		;    WITH SOURCE NO.\r
				;  END\r
TFK6:	PUSH	IX		;\r
	POP	DE		;\r
	LD	HL,QEMPTY	;\r
	CALL	SUBENQ		;  RETURN REPLY-BUFFER TO EMPTY BUFFER QUEUE\r
				;END\r
\r
VID4:	LD	HL,INIFLAG\r
	BIT	0,(HL)\r
	JR	NZ,INI1		;IF VIDEO CONSULT. THEN\r
				;BEGIN\r
	POP	AF		;\r
	PUSH	AF		;\r
	BIT	7,A		;\r
	JR	NZ,CH45		;\r
	BIT	6,A		;\r
	JR	NZ,CH2		;\r
				;\r
CH1:	LD	BC,PORT43	;  IF DEST. = 1-20 THEN\r
	IN	A,(C)		;  GET MATRIX REPLY ON PORT43\r
	JR	VID5		;\r
CH2:	LD	BC,PORT43	;  IF DEST. = 21-40 THEN\r
	IN	A,(C)		;  GET MATRIX REPLY ON PORT43\r
	SRL	A		;  SHIFT\r
	SRL	A		;\r
	SRL	A		;\r
	SRL	A		;\r
	JR	VID5		;\r
CH45:	LD	BC,PORT45	;  IF DEST. = 41-46,51-59 THEN\r
	IN	A,(C)		;  GET MATRIX REPLY ON PORT45\r
				;\r
VID5:	AND	0FH		;\r
	CP	0EH		;\r
	CALL	Z,FOUND		;  IF SOURCE = 1-10 THEN CALL FOUND\r
	CP	0DH		;\r
	CALL	Z,FOUND		;  IF SOURCE = 11-20 THEN CALL FOUND\r
	CP	0CH		;\r
	CALL	Z,FOUND		;  IF SOURCE = 21-30 THEN CALL FOUND\r
	CP	0BH		;\r
	CALL	Z,FOUND		;  IF SOURCE = 31-40 THEN CALL FOUND\r
				;\r
	LD	HL,SRCCNT	;  ELSE\r
	DEC	(HL)		;  DECREMENT SOURCE COUNTER\r
	JP	NZ,VID2		;  AND TRY NEXT SOURCE(UNIT) IF NOT = 0\r
	POP	AF		;\r
	JR	INI1		;END\r
\r
FOUND:	LD	B,A		;SAVE RECEIVE CODE\r
	LD	A,0EH		;\r
	SUB	B		;\r
	LD	E,A		;\r
	SLA	A		;\r
	SLA	A		;\r
	SLA	A		;\r
	ADD	A,E		;\r
	ADD	A,E		;CALCULATE NO. OF TENS(0,10,20 OR 30)\r
	LD	HL,SRCCNT	;GET SOURCE(UNITS)\r
	ADD	A,(HL)		;CALCULATE SOURCE NO.\r
	LD	C,A		;\r
	LD	A,1		;\r
	LD	(HL),A		;SET SOURCE COUNTER = 1\r
	LD	A,35		;\r
	CP	C		;\r
	LD	A,B		;GET RECEIVE CODE\r
	RET	C		;IF CALCULATED SOURCE NO. IS TOO BIG THEN RET.\r
	LD	A,30		;\r
	CP	C		;OR\r
	LD	A,B		;\r
	RET	Z		;IF SOURCE = TEST THEN RETURN\r
	LD	HL,DSTCNT	;ELSE\r
	LD	E,(HL)		;\r
	LD	D,0		;\r
	LD	HL,INITAB	;\r
	ADD	HL,DE		;UPDATE INITIALIZING TABLE WITH SOURCE NO.\r
	LD	(HL),C		;\r
	RET			;\r
\r
;	------------------------\r
INI1:	LD	HL,INIFLAG\r
	BIT	0,(HL)		;IF MORE VIDEO DESTINATIONS LEFT\r
	JP	Z,VID1		;THEN REPEAT\r
	BIT	1,(HL)		;IF MORE TFK DESTINATIONS LEFT\r
	JP	Z,TFK1		;THEN REPEAT\r
\r
;------------------------------------------------------------------------------\r
	LD	BC,(PORT52)\r
	IN	A,(C)\r
VTRA6:	BIT	5,A\r
	JR	NZ,VTRA7	;IF VTRA6 ON T2-PULSE PLAN THEN\r
	PUSH	AF		;BEGIN\r
	LD	A,6		;  CHECK IF ALLREADY INTERLOCKED ON T2\r
	CALL	VTRROUT		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	POP	AF		;END\r
VTRA7:	BIT	6,A\r
	JR	NZ,VTRA8	;IF VTRA8 ON T2-PULSE PLAN THEN\r
	PUSH	AF		;BEGIN\r
	LD	A,7		;  CHECK IF ALLREADY INTERLOCKED ON T2\r
	CALL	VTRROUT		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	POP	AF		;END\r
VTRA8:	BIT	7,A\r
	JR	NZ,INI2		;IF VTRA8 ON T2-PULSE PLAN THEN\r
				;BEGIN\r
	LD	A,8		;  CHECK IF ALLREADY INTERLOCKED ON T2\r
	CALL	VTRROUT		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	JR	INI2		;END\r
\r
VTRROUT	LD	BC,7		;\r
	LD	HL,INITAB+18	;\r
	CPIR			;\r
	RET	Z		;RETURN IF ALLREADY INTERLOCKED ON T2\r
				;ELSE\r
	LD	HL,INITAB+63	;\r
	LD	D,0		;\r
	LD	E,A		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	ADD	HL,DE		;INPUT LINE IN INIT. TABLE WITH THE VTRA NO.\r
	LD	(HL),A		;\r
	RET			;\r
\r
;------------------------------------------------------------------------------\r
INI2:	LD	BC,(PORT58)\r
	IN	A,(C)\r
       	BIT	4,A\r
	JR	NZ,DIA21	;IF DIA1 ON T2-PULSE PLAN THEN\r
	PUSH	AF		;BEGIN\r
	LD	A,13		;  CHECK IF ALLREADY INTERLOCKED ON T2\r
	CALL	DIART2		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	POP	AF		;END\r
DIA21:	BIT	5,A\r
	JR	NZ,INI3		;IF DIA2 ON T2-PULSE PLAN THEN\r
				;BEGIN\r
	LD	A,14		;  CHECK IF ALLREADY INTERLOCKED ON T2\r
	CALL	DIART2		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	JR	INI3		;END\r
\r
DIART2:	LD	BC,7		;\r
	LD	HL,INITAB+18	;\r
	CPIR			;\r
	RET	Z		;RETURN IF ALLREADY INTERLOCKED ON T2\r
				;ELSE\r
	LD	HL,INITAB+52	;\r
	LD	D,0		;\r
	LD	E,A		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	ADD	HL,DE		;INPUT LINE IN INIT. TABLE WITH DIA NO.\r
	LD	(HL),A		;\r
	RET			;\r
\r
	;------------------------\r
\r
INI3:	LD	BC,(PORT60)\r
	IN	A,(C)\r
       	BIT	4,A\r
	JR	NZ,DIA22	;IF DIA ON T3-PULSE PLAN THEN\r
	PUSH	AF		;BEGIN\r
	LD	A,13		;  CHECK IF ALLREADY INTERLOCKED ON T3\r
	CALL	DIART3		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	POP	AF		;END\r
DIA22:	BIT	5,A\r
	JR	NZ,INI4		;IF DIA2 ON T3-PULSE PLAN THEN\r
				;BEGIN\r
	LD	A,14		;  CHECK IF ALLREADY INTERLOCKED ON T3\r
	CALL	DIART3		;  AND IF NO, THEN UPDATE INIT. TABLE\r
	JR	INI4		;END\r
\r
DIART3:	LD	BC,3		;\r
	LD	HL,INITAB+25	;\r
	CPIR			;\r
	RET	Z		;RETURN IF ALLREADY INTERLOCKED ON T3\r
				;ELSE\r
	LD	HL,INITAB+59	;\r
	LD	D,0		;\r
	LD	E,A		;UPDATE THE APROPRIATE STM PARALLEL \r
	ADD	HL,DE		;INPUT LINE IN INIT. TABLE WITH DIA NO.\r
	LD	(HL),A		;\r
	RET			;\r
\r
;------------------------------------------------------------------------------\r
INI4:	LD	BC,(PORT62)\r
	IN	A,(C)\r
	BIT	7,A\r
	JR	NZ,INI5		;IF STM ON T1-PULSE PLAN THEN\r
	LD	A,19		;BEGIN\r
	LD	BC,7		;\r
	LD	HL,INITAB+18	;\r
	CPIR			;\r
	JR	Z,INI5		;  IF NOT ALLREADY INTERLOCKED ON T1 THEN\r
	LD	HL,INITAB+67	;  UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	(HL),A		;  INPUT LINE IN INIT. TABLE WITH STM NO.\r
				;END\r
\r
;------------------------------------------------------------------------------\r
INI5:	LD	BC,PORT67\r
	IN	A,(C)\r
	BIT	0,A\r
	JR	NZ,INI6		;IF ST5 CAM.DEL. ON THEN\r
	LD	A,20		;BEGIN\r
	LD	BC,7		;\r
	LD	HL,INITAB+18	;\r
	CPIR			;  IF NOT ALLREADY INTERLOCKED WITH\r
	JR	Z,INI6		;  CAM.DEL. ON ST5 THEN\r
	LD	HL,INITAB+68	;  UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	(HL),A		;  INPUT LINE IN INIT. TABLE WITH ST-CITY NO.\r
				;END\r
\r
;------------------------------------------------------------------------------\r
INI6:	LD	BC,(PORT64)\r
	IN	A,(C)\r
KGEN11:	BIT	0,A\r
	JR	NZ,KGEN21	;IF KGEN1 ON T2-PULSE PLAN THEN\r
	LD	E,31		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	HL,INITAB+61	;INPUT LINE IN INIT. TABLE WITH KGEN1 NO.\r
	LD	(HL),E\r
KGEN21:	BIT	1,A\r
	JR	NZ,INI7		;IF KGEN2 ON T2-PULSE PLAN THEN\r
	LD	E,32		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	HL,INITAB+62	;INPUT LINE IN INIT. TABLE WITH KGEN2 NO.\r
	LD	(HL),E\r
\r
INI7:	LD	BC,(PORT66)\r
	IN	A,(C)\r
KGEN12:	BIT	0,A\r
	JR	NZ,KGEN22	;IF KGEN1 ON T3-PULSE PLAN THEN\r
	LD	E,31		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	HL,INITAB+74	;INPUT LINE IN INIT. TABLE WITH KGEN1 NO.\r
	LD	(HL),E\r
KGEN22:	BIT	1,A\r
	JR	NZ,INI8		;IF KGEN2 ON T3-PULSE PLAN THEN\r
	LD	E,32		;UPDATE THE APROPRIATE ST5 PARALLEL\r
	LD	HL,INITAB+75	;INPUT LINE IN INIT. TABLE WITH KGEN2 NO.\r
	LD	(HL),E\r
\r
;------------------------------------------------------------------------------\r
INI8:	LD	B,33		;TXT1 SOURCE NO.\r
	LD	HL,INITAB+58\r
	LD	A,(HL)\r
	CP	16\r
	CALL	Z,CN1TX1	;IF TXT1 TO CNR1 THEN UPDATE INIT. TABLE\r
	CP	17\r
	CALL	Z,CN2TX1	;IF TXT1 TO CNR2 THEN UPDATE INIT. TABLE\r
	CP	18\r
	CALL	Z,ST5TX1	;IF TXT1 TO ST5 THEN UPDATE INIT. TABLE\r
	CP	19\r
	CALL	Z,STMTX1	;IF TXT1 TO STM THEN UPDATE INIT. TABLE\r
\r
	LD	B,34		;TXT2 SOURCE NO.\r
	LD	HL,INITAB+59\r
	LD	A,(HL)\r
	CP	16\r
	CALL	Z,CN1TX2	;IF TXT2 TO CNR1 THEN UPDATE INIT. TABLE\r
	CP	17\r
	CALL	Z,CN2TX2	;IF TXT2 TO CNR2 THEN UPDATE INIT. TABLE\r
	CP	18\r
	CALL	Z,ST5TX2	;IF TXT2 TO ST5 THEN UPDATE INIT. TABLE\r
	CP	19\r
	CALL	Z,STMTX2	;IF TXT2 TO STM THEN UPDATE INIT. TABLE\r
	JR	INI9\r
\r
CN1TX1:	LD	HL,INITAB+80\r
	LD	(HL),B\r
	RET\r
CN2TX1:	LD	HL,INITAB+84\r
	LD	(HL),B\r
	RET\r
ST5TX1:	LD	HL,INITAB+63\r
	LD	(HL),B\r
	RET\r
STMTX1:	LD	HL,INITAB+76\r
	LD	(HL),B\r
	RET\r
CN1TX2:	LD	HL,INITAB+81\r
	LD	(HL),B\r
	RET\r
CN2TX2:	LD	HL,INITAB+85\r
	LD	(HL),B\r
	RET\r
ST5TX2:	LD	HL,INITAB+64\r
	LD	(HL),B\r
	RET\r
STMTX2:	LD	HL,INITAB+77\r
	LD	(HL),B\r
	RET\r
\r
;---------------------------------------------------------------------------\r
INI9:	LD	HL,INITAB+51	;\r
	LD	C,9		;\r
	LD	A,0		;\r
CL0:	LD	(HL),A		;CLEAR EXTRA CP DESTINATIONS\r
	INC	HL		;\r
	DEC	C		;\r
	JR	NZ,CL0		;\r
\r
;------------------------------------------------------------------------------\r
      	LD	BC,1\r
	LD	HL,INITAB	;WHILE MORE TFK DESTINATIONS DO\r
NXT1:	INC	HL		;BEGIN\r
	LD	A,(HL)		;\r
	CP	0		;\r
	JR	NZ,NXT2		;  IF VIDEO DESTINATION RELEASED THEN\r
	PUSH	HL		;  BEGIN\r
	LD	HL,TFKTAB	;\r
	ADD	HL,BC		;    LOAD THE SOURCE NO. OF THE CORRE-\r
	LD	A,(HL)		;    SPONDING TFK DESTINATION IN INIT. TABLE\r
	LD	E,A		;    IF :\r
	CP	0		;\r
	JR	Z,NXT11		;    SOURCE = 00\r
	CP	36		;\r
	JR	Z,NXT11		;    SOURCE = 36\r
	CP	37		;\r
	JR	Z,NXT11		;    SOURCE = 37\r
	CP	0FFH		;\r
	JR	Z,NXT10		;\r
	LD	A,38		;\r
	CP	C		;\r
	JR	Z,NXT11		;    DESTIN.= 38\r
	LD	A,39		;\r
	CP	C		;\r
	JR	Z,NXT11		;    DESTIN.= 39\r
	LD	A,47		;\r
	CP	C		;\r
	JR	Z,NXT11		;    DESTIN.= 47\r
	LD	A,48		;\r
	CP	C		;\r
	JR	Z,NXT11		;    DESTIN.= 48\r
				;    ELSE SET\r
NXT10: 	LD	E,00		;    SOURCE = 00\r
				;\r
NXT11:	POP	HL		;\r
	LD	(HL),E		;  END\r
NXT2:	INC	BC		;\r
	LD	A,49		;\r
	CP	C		;\r
	JR	NZ,NXT1		;END-WHILE\r
\r
	LD	HL,TFKTAB+58\r
	LD	DE,INITAB+58\r
	LDI			;TRANSFER TEXT1 STATUS TO INIT.TABLE\r
	LDI			;TRANSFER TEXT2	STATUS TO INIT.TABLE\r
\r
******************************************************************************\r
RSTART:	LD	A,0FFH\r
\r
	LD	BC,PORT22	; INTERCOM\r
	OUT	(C),A\r
\r
	LD	A,0BFH		;	 PRESET MATRIX INPUT ADDR.\r
	LD	BC,PORT33	; KRE 1.1	TO TEST GENERATOR\r
	OUT	(C),A\r
	LD	BC,PORT34	; KRE 2.1\r
	OUT	(C),A\r
\r
	LD	A,00\r
	LD	BC,(PORT35)	; DESTIN  8- 1		      --\r
	OUT	(C),A		;			         I\r
	LD	BC,(PORT36)	;  - " - 16- 9			 I\r
	OUT	(C),A		;				 I\r
	LD	BC,(PORT37)	;  - " - 24-17			  -- S 1\r
	OUT	(C),A		;				 I\r
	LD	BC,(PORT38)	;  - " - 32-25			 I\r
	OUT	(C),A		;				 I\r
	LD	BC,(PORT39)	;  - " - 40,-,-,37,36,35,34,33 --\r
	OUT	(C),A\r
	LD	BC,(PORT40)	;  - " - 52,51,46,45,44,43,42,41 --\r
	OUT	(C),A		;				   I--S 2\r
	LD	BC,(PORT41)	;  - " - --,59,58,57,56,55,54,53 --\r
	OUT	(C),A\r
\r
	LD	A,0FFH\r
	LD	BC,PORT42	; KRA  1-20  (PARTLY, PORT 46)\r
	OUT	(C),A		; KRA 21-40  (PARTLY, PORT 47)\r
\r
	LD	BC,PORT44	; KRA 41-48, 51-59 (PARTLY, PORT 48)\r
	OUT	(C),A\r
\r
	LD	BC,PORT46	; KRA  1-20  (PARTLY, PORT 42)\r
	OUT	(C),A\r
	LD	BC,PORT47	; KRA 21-40  (PARTLY, PORT 42)\r
	OUT	(C),A\r
	LD	BC,PORT48	; KRA 41-48, 51-59  (PARTLY, PORT 44)\r
	OUT	(C),A\r
	LD	BC,(PORT49)	; T1 ---\r
	OUT	(C),A		;	I\r
				;	I\r
	LD	BC,(PORT51)	; T2	 -- IM1  SRC 8,7,6,5,4,3,2,1\r
	OUT	(C),A		;	I\r
				;	I\r
	LD	BC,(PORT53)	; T3 ---\r
	OUT	(C),A\r
\r
	LD	BC,(PORT55)	; T1 ---\r
	OUT	(C),A		;	I\r
				;	I\r
	LD	BC,(PORT57)	; T2	 -- IM2 SRC -,--,14,13,12,11,10,9\r
	OUT	(C),A		;	I   IM3     -,30,--,--,--,--,--,-\r
				;	I\r
	LD	BC,(PORT59)	; T3 ---\r
	OUT	(C),A\r
\r
	LD	BC,(PORT61)	; T1 ---\r
	OUT	(C),A		;	I\r
				;	I\r
	LD	BC,(PORT63)	; T2	 -- IM2 SRC --,15,--,--,--,--,--,31\r
	OUT	(C),A		;	I   IM3     19,--,28,27,34,33,32,--\r
				;	I\r
	LD	BC,(PORT65)	; T3 ---\r
	OUT	(C),A\r
 \r
	LD	BC,PORT68	; CAM. DELEG. -,-,CNR2,CNR2,CNR1,CNR1,ST5,ST5\r
	OUT	(C),A		;	      I I  OFF  ON   OFF  ON   OFF ON\r
 				;	      I I\r
				;	      +-+--ATR ON AIR\r
\r
;-------------- PULSE MATRIX INITIALIZATION\r
\r
	CALL	PAUSE		; WAIT\r
\r
	LD	A,00		; SOURCES 1-8 TO PULSE PLANE T1\r
	LD	BC,(PORT49)	;\r
	CALL	INIPX		;\r
\r
	LD	A,80H		; SOURCES 9-14,30 TO PULSE PLANE T1\r
	LD	BC,(PORT55)	;\r
	CALL	INIPX		;\r
\r
	LD	A,80H		; SOURCES 15,27-28,31-34 TO PULSE PLANE T1\r
	LD	BC,(PORT61)	;\r
	CALL	INIPX		;\r
\r
	LD	A,7FH		; SOURCE 19 (STM) TO PULSE PLANE T3\r
	LD	BC,(PORT65)	;\r
	CALL	INIPX		;\r
\r
	LD	IX,PRTSAV\r
	LD	(IX),0\r
	LD	(IX+1),0FFH\r
	LD	(IX+2),0FFH\r
	LD	(IX+3),0\r
	LD	(IX+4),0FFH\r
	LD	(IX+5),0FFH\r
	LD	(IX+6),80H\r
	LD	(IX+7),0FFH\r
	LD	(IX+8),7FH\r
\r
;-------------- CAM. DELEG. INITIALIZATION\r
\r
	LD	A,0D5H		; SET ALL CAM. DELEG. TO OFF\r
	LD	(CDCONT),A	; CAMERA DELEGATION CHECK BYTE\r
	LD	BC,PORT68	;	AND ATR1, ATR2 TO 'OFF AIR'\r
	OUT	(C),A		;\r
\r
	LESTAB	8		; IO2 TIMER: TERMINATES CAM. DELEG. ACTION\r
				; AFTER DELAY \r
\r
;-------------- VIDEO MATRIX INITIALIZATION\r
\r
	LD	A,0FFH		;\r
\r
	LD	BC,(PORT35)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT36)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT37)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT38)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT39)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT40)	;\r
	OUT	(C),A		;\r
	LD	BC,(PORT41)	;\r
	OUT	(C),A		;\r
\r
	LD	A,1EH\r
	LD	HL,TABVID-1\r
	LD	B,61\r
AGAIN:	INC	HL\r
	LD	(HL),A\r
	DJNZ	AGAIN\r
\r
;----------------------- TFK MATRIX INITIALIZATION\r
AUD1:	LD	HL,QEMPTY\r
	CALL	SUBDEQ\r
	JR	C,AUD2\r
	CALL	SCOMMON\r
	EI\r
	JR	AUD1\r
AUD2:	LD	HL,QUEST\r
	CALL	SUBENQ\r
	LD	BC,0\r
	PUSH	BC\r
\r
AUD3:	LD	HL,QUEST\r
	CALL	SUBDEQ\r
	JR	C,AUD4\r
	CALL	SCOMMON\r
	EI\r
	JR	AUD3\r
AUD4:	POP	BC\r
	INC	BC\r
	LD	A,60\r
	CP	C\r
	JR	Z,AUDEND\r
	PUSH	BC\r
\r
	LD	HL,TFKTAB\r
	ADD	HL,BC\r
	LD	A,(HL)		;SKIP INITIALIZATION IF ALLREADY RELEASED\r
	CP	0\r
	JR	Z,AUD4\r
\r
	PUSH	DE\r
	POP	IX\r
	LD	(IX+2),0\r
	LD	(IX+3),0\r
	LD	(IX+4),C\r
	LD	HL,QAQEST\r
	CALL	SUBENQ\r
	ACTIVATE S,11\r
	JR	AUD3\r
AUDEND:	LD	HL,QEMPTY\r
	CALL	SUBENQ\r
\r
;------------------------------------------------------------------------------\r
SENDOUT	LD	HL,INITAB\r
	LD	C,0\r
NXTDST:	INC	HL\r
	INC	C		;NEXT DESTINATION\r
	LD	A,86\r
	CP	C\r
	JR	Z,INIEND	;WHILE MORE DESTINATIONS IN INIT.TABLE DO\r
				;BEGIN\r
	LD	A,(HL)		;  GET SOURCE NO. IN INIT.TABLE\r
	CP	0		;\r
	JR	Z,NXTDST	;  IF SOURCE <> 0 THEN\r
	PUSH	HL		;  BEGIN\r
	PUSH	BC		;\r
	PUSH	AF		;\r
Q1:	LD	HL,QEMPTY	;\r
	CALL	SUBDEQ		;\r
	JR	C,Q2		;\r
	CALL	SCOMMON		;\r
	EI			;\r
	JR	Q1		;\r
Q2:	PUSH	DE		;\r
	POP	IX		;\r
	POP	AF		;\r
	POP	BC		;\r
	PUSH	BC		;\r
	LD	(IX+2),80H	;    INSERT ESTABL.COMMAND CODE IN BUFFER\r
	LD	(IX+3),A	;    INSERT SOURCE NO. IN BUFFER\r
	LD	(IX+4),C	;    INSERT DESTINATION NO. IN BUFFER\r
	LD	HL,QXI		;\r
	CALL	SUBENQ		;\r
	CALL	INVEST		;    INVESTIGATE CP STATUS\r
	LD	HL,QIX		;\r
	CALL	SUBDEQ		;\r
	PUSH	DE		;\r
	POP	IX		;\r
	LD	A,(IX+2)	;\r
	AND	49H		;\r
	JR	NZ,Q4		;    IF POSSIBLE CP THEN\r
	LD	(IX+2),80H	;    BEGIN\r
	LD	HL,QKE		;\r
	CALL	SUBENQ		;      SEND BUFFER TO QKE AND\r
	ACTIVATE S,9		;      ACTIVATE EXECUTE MODULE\r
	LD	HL,CONDIT	;\r
	SET	2,(HL)		;      SET BUSY = 1\r
Q3:	LD	HL,CONDIT	;\r
	BIT	2,(HL)		;\r
	JR	Z,Q4		;\r
	CALL	SCOMMON		;      WAIT UNTIL BUSY = 0\r
	EI			;\r
	JR	Q3		;    END\r
Q4:	POP	BC		;    RESTORE DESTINATION COUNTER\r
	POP	HL		;    RESTORE INIT.TABLE ADDRESS\r
	JR	NXTDST		;  END\r
				;END-WHILE\r
\r
\r
******************************************************************************\r
******************************************************************************\r
;--------------- END OF MATRIX I/F INITIALIZATION ------------------------------\r
\r
INIEND:	LD	HL,CONDIT\r
	RES	2,(HL)		;RESET BUSY BIT\r
	RES	6,(HL)		;RESET INITIALIZATION IN PROGRESS FLAG\r
	JR	ININIT\r
\r
\r
INIPX:	LD	(PXPORT),BC\r
	OUT	(C),A\r
\r
	LESTAB	7		;IO1 TIMER : TERMINATES PULSE ACTION \r
				;            AFTER DELAY\r
\r
	CALL	PAUSE\r
	RET\r
;\r
*******************************************************************************\r
ININIT:	LD	A,9\r
	LD	(CNTPULS),A	;INITIALIZE PULSE PORT NUMBER\r
	LD	A,61\r
	LD	(CNTDST),A	;INITIALIZE VIDEO DESTINATION NUMBER\r
\r
INSP0:	UPDATM	10,250\r
	LESTAB	10\r
	PASSIVATE S,INSPNR\r
\r
INSP1:	CALL	SCOMMON\r
	EI\r
	LD	HL,CONDIT\r
	BIT	2,(HL)\r
	JR	NZ,INSP1	;IF BUSY = 1 THEN WAIT\r
	BIT	6,(HL)\r
	JR	NZ,INSP1	;IF INITIALIZATION IN PROGRESS THEN WAIT\r
				;ELSE\r
	SET	2,(HL)		;SET BUSY = 1\r
\r
	UPDATM	10,5		;UPDATE PAUSE-DELAY\r
\r
;-----------------------------------------------------------------------------\r
; CAMERA DELEGATION MODULE :\r
\r
CDCHECK	LD	BC,PORT67	;CAM.DELEG. CHECK PORT\r
	IN	A,(C)\r
	AND	3FH\r
	LD	D,A\r
\r
	LD	A,(CDCONT)\r
	AND	3FH\r
	BIT	0,A\r
	JR	Z,ST5ON		;IF ST5 DEL.ON GOTO ST5ON\r
	BIT	2,A\r
	JR	Z,CNR1ON	;IF CNR1 DEL.ON GOTO CNR1ON\r
	BIT	4,A\r
	JR	Z,CNR2ON	;IF CNR2 DEL.ON GOTO CNR2ON\r
				;ELSE\r
CDOFF:	LD	A,D\r
	CP	15H\r
	JR	NZ,ERRCD	;IF DEL.OFF CODE ON CHECK PORT GOTO ERRCD\r
	JR	PUCHECK\r
\r
ST5ON:	LD	A,D\r
	CP	16H\r
	JR	NZ,ERRCD	;IF ST5 DEL.ON CODE ON CHECK PORT GOTO ERRCD\r
	JR	PUCHECK\r
\r
CNR1ON:	LD	A,D\r
	CP	19H\r
	JR	NZ,ERRCD	;IF NO CNR1 DEL.ON CODE ON CH. PORT GOTO ERRCD\r
	JR	PUCHECK\r
\r
CNR2ON:	LD	A,D\r
	CP	25H\r
	JR	NZ,ERRCD	;IF NO CNR2 DEL.ON CODE ON CH. PORT GOTO ERRCD\r
	JR	PUCHECK\r
				;IF ERROR THEN\r
ERRCD:	LD	HL,ECOND2	;BEGIN\r
	SET	1,(HL)		;  SET DEVICE CONTROL ERROR BIT\r
	LD	A,(CDCONT)	;\r
	LD	BC,PORT68	;\r
	OUT	(C),A		;  RE-ESTABLISH OUTPUT TO CAM.DEL.PORT\r
				;\r
				;\r
	LESTAB	8		;  IO2 TIMER: TERMINATES CAM.DELEG ACTION\r
				;  AFTER DELAY(8-16MSEC)\r
				;END\r
\r
;----------------------------------------------------------------------------\r
; PULSE INSPECTION MODULE :\r
\r
PUCHECK	LD	HL,CNTPULS\r
	DEC	(HL)		;NEXT PULSE-PORT\r
	LD	A,(HL)\r
	PUSH	AF\r
\r
	LD	HL,PRTSAV\r
	LD	B,0\r
	LD	C,A\r
	ADD	HL,BC\r
	LD	E,(HL)		;GET CONTENT OF OUTP.PORT CONT.SAVING CELL\r
	SLA	A\r
	SLA	A\r
	ADD	A,6\r
	LD	HL,TAB2PX\r
	LD	B,0\r
	LD	C,A\r
	ADD	HL,BC\r
	LD	C,(HL)\r
	INC	HL\r
	LD	B,(HL)\r
	IN	A,(C)		;GET CONTENT OF PULSE-CHECK INPUT PORT\r
	LD	D,A\r
\r
	POP	AF\r
	CP	3\r
	JR	Z,PU2\r
	CP	4\r
	JR	Z,PU2\r
	CP	5\r
	JR	NZ,PU3\r
\r
PU2:	LD	A,E		;\r
	AND	7FH		;\r
	LD	E,A		;IF GROUP3 THEN MASK OUT \r
	LD	A,D		;BIT 7 IN BYTE\r
	AND	7FH		;\r
	LD	D,A		;\r
\r
PU3:	LD	A,E		;COMPARE DESIRED OUTPUT CONTENT WITH\r
	CP	D		;ACTUAL	INPUT FROM PULSE CHECK PORT\r
	JR	Z,PUEND		;IF NO IDENTITY THEN\r
	LD	BC,3		;BEGIN\r
	AND	A		;\r
	SBC	HL,BC		;\r
	LD	C,(HL)		;  GET OUTPUT PORT-ADDRESS\r
	INC	HL		;\r
	LD	B,(HL)		;\r
	LD	(PXPORT),BC	;  SAVE PORT-ADDRESS FOR PULSE TERMINATION\r
	LD	A,E		;\r
	OUT	(C),A		;  RE-OUTPUT PULSE-BYTE\r
	LD	HL,ECOND2	;\r
	SET	1,(HL)		;  SET DEVICE CONTROL ERROR BIT\r
				;\r
	LESTAB	7		;  IO1 TIMER: TERMINATES PULSE ACTION\r
				;  AFTER DELAY(8-16MSEC)\r
				;END\r
\r
PUEND:	LD	A,0\r
	LD	HL,CNTPULS\r
	CP	(HL)\r
	JR	NZ,TFKCHK	;IF ALL PULSE CHECK PORTS HAVE BEEN\r
	LD	A,9		;RUNNED THROUGH THEN\r
	LD	(HL),A		;RE-ESTABLISH PORT-COUNTER\r
\r
;-----------------------------------------------------------------------------\r
; TFK INSPECTION MODULE (1):\r
\r
TFKCHK:	LD	HL,CNTDST\r
	DEC	(HL)		;NEXT DESTINATION\r
	JR	NZ,TFKCH0	;IF ALL DESTINATIONS HAVE BEEN\r
	LD	A,60		;RUNNED THROUGH THEN\r
	LD	(HL),A		;RE-ESTABLISH DESTINATION COUNTER\r
TFKCH0:	LD	HL,QEMPTY	;ELSE\r
	CALL	SUBDEQ		;GET BUFFER\r
	JR	NC,VICHECK\r
	PUSH	DE		;BEGIN\r
	POP	IX		;\r
	LD	(IX+2),02H	;  INSERT QUESTION COMMAND CODE IN BUFFER\r
	LD	(IX+3),00	;  INSERT DUMMY SOURCE NO.\r
	LD	A,(CNTDST)	;\r
	LD	(IX+4),A	;  INSERT DESTINATION NO.\r
	LD	HL,QAQEST	;\r
	CALL	SUBENQ		;  ENQUE BUFFER IN TFK QUESTION QUEUE\r
	ACTIVATE S,11		;  AND ACTIVATE TFK PROCESS\r
	LD	HL,TFKFLAG	;\r
	SET	0,(HL)		;  SET TFK INSPECTION FLAG\r
				;END\r
\r
;-----------------------------------------------------------------------------\r
; VIDEO INSPECTION MODULE :\r
\r
VICHECK	LD	HL,CNTDST\r
	LD	E,(HL)		;GET DESTINATION NO.\r
	LD	HL,VXT1CK\r
	LD	D,0\r
	ADD	HL,DE\r
	LD	A,(HL)\r
	CP	0\r
	JP	Z,TFKCH2	;IF NON VALID VIDEO DESTINATION THEN\r
				;TRY NEXT ONE ELSE\r
	PUSH	AF\r
	LD	HL,TABVID\r
	ADD	HL,DE\r
	LD	E,(HL)		;GET SOURCE NO.\r
	LD	D,0\r
	LD	HL,VXCREC\r
	ADD	HL,DE\r
	LD	A,(HL)		;GET EXPECTED CODE\r
	LD	(VXCKCO),A	;SAVE\r
	POP	AF\r
\r
	BIT	7,A\r
	JR	NZ,VI45\r
	BIT	6,A\r
	JR	NZ,VI2\r
\r
VI1:	LD	BC,PORT46	;IF DEST. = 1-20 (KRA 1-20)\r
	OUT	(C),A		;THEN SET CODE FOR DEST.ON PORT46\r
	LD	BC,PORT42	;\r
				;\r
	LD	HL,VXCSEN	;SET CODE FOR SOURCE(UNITS) ON PORT42\r
	ADD	HL,DE		;\r
	LD	A,(HL)		;\r
	OUT	(C),A		;OUTPUT\r
				;\r
	CALL	PAUSE		;WAIT 16-24MSEC\r
				;\r
	LD	BC,PORT43	;\r
	IN	A,(C)		; E.G. XXXX 1110\r
	AND	0FH		;      0000 1111\r
	LD	D,A		;    = 0000 1110\r
				;\r
	LD	A,(VXCKCO)	; E.G. 1110 1110\r
	AND	0FH		;      0000 1111\r
				;    = 0000 1110\r
	CP	D		;\r
	JR	NZ,ERRVI	;IF ERROR GOTO ERRVI\r
	JP	TFKCH2		;\r
\r
VI2:	LD	BC,PORT47	;IF DEST. = 21-40 (KRA 21-40)\r
	OUT	(C),A		;THEN SET CODE FOR DESTINATION ON PORT47\r
	LD	BC,PORT42	;\r
				;\r
	LD	HL,VXCSEN	;SET CODE FOR SOURCE(UNITS) ON PORT42\r
	ADD	HL,DE		;\r
	LD	A,(HL)		;\r
	OUT	(C),A		;OUTPUT\r
				;\r
	CALL	PAUSE		;WAIT 16-24MSEC\r
				;\r
	LD	BC,PORT43	;\r
	IN	A,(C)		; E.G. 1110 XXXX\r
	AND	0F0H		;      1111 0000\r
	LD	D,A		;    = 1110 0000\r
				;\r
	LD	A,(VXCKCO)	;\r
	AND	0F0H		;\r
\r
	CP	D		;\r
	JR	NZ,ERRVI	;IF ERROR GOTO ERRVI\r
	JP	TFKCH2		;\r
\r
VI45:	LD	BC,PORT48	;IF DEST. = 41-46,51-59(KRA 41-46,51-59)\r
	OUT	(C),A		;THEN SET CODE FOR DESTINATION ON PORT48\r
	LD	BC,PORT44	;\r
				;\r
	LD	A,E		;\r
	CP	30		;\r
	JR	NZ,VI451	;IF SOURCE = TEST(WHICH MEANS RELEASED) THEN\r
	LD	A,0FH		;\r
	LD	(VXCKCO),A	;SET EXPECTED CODE = 0FH\r
VI451:	LD	HL,VXCSEN	;SET CODE FOR SOURCE(UNITS) ON PORT42\r
	ADD	HL,DE		;\r
	LD	A,(HL)		;\r
	OUT	(C),A		;OUTPUT\r
				;\r
	CALL	PAUSE		;WAIT 16-24MSEC\r
				;\r
	LD	BC,PORT45	;\r
	IN	A,(C)		;\r
	AND	0FH		;\r
	LD	D,A		;\r
				;\r
	LD	A,(VXCKCO)	;\r
	AND	0FH		;\r
				;\r
	CP	D		;\r
	JR	NZ,ERRVI	;IF ERROR GOTO ERRVI\r
	JR	TFKCH2		;\r
\r
				;IF ERROR THEN RE-ESTABLISH OUTPUT\r
				;TO VIDEO MATRIX\r
ERRVI:	LD	A,(CNTDST)	;BEGIN\r
	PUSH	AF		;  SAVE DESTINATION NO.\r
	LD	E,A		;\r
	LD	D,0		;\r
	LD	HL,TABVID	;\r
	ADD	HL,DE		;\r
	LD	E,(HL)		;  GET SOURCE NO.\r
	LD	HL,TAB1VX	;\r
	ADD	HL,DE		;\r
	LD	A,(HL)		;  GET SOURCE CODE FROM TAB1VX\r
				;\r
	LD	BC,PORT33	;\r
	OUT	(C),A		;  OUTPUT\r
	LD	BC,PORT34	;\r
	OUT	(C),A		;  OUTPUT\r
				;\r
	CALL	PAUSE		;  WAIT 16-24MSEC\r
				;\r
	POP	AF		;  GET DESTINATION NO.\r
	LD	D,0		;\r
	LD	E,A		;\r
	LD	HL,TAB2VX	;\r
	ADD	HL,DE		;\r
	LD	E,(HL)		;  GET TAB2VX CODE\r
	LD	A,E		;\r
	AND	0F0H		;  MASK THE CONTENT BITS\r
	BIT	3,E		;  SHIFT ?\r
	JR	Z,E1		;\r
	SRL	A		;\r
	SRL	A		;\r
	SRL	A		;\r
	SRL	A		;\r
				;\r
E1:	CPL			;\r
	LD	D,A		;  PORT CONTENT IN D-REG.\r
				;\r
	LD	A,E		;  FIND THE ACTUAL OUTPUT PORT\r
	AND	07H		;\r
	LD	C,A		;\r
	LD	(VXAID),A	;  SAVE VXAID(VXAID IS DERIVED FROM THE\r
				;  TAB2VX AND POINTS TO THE TAB3VX,\r
	SLA	C		;  WHERE THE ACTUAL PORT ADDR. IS\r
				;  PLACED. THE VXAID IS USED , WHEN\r
	LD	B,0		;  THE ACTION IS TERMINATED. IF\r
	LD	HL,TAB3VX	;  VXAID = 7, THEN THE PORT IS SHARED)\r
	ADD	HL,BC		;\r
	LD	C,(HL)		;  LOWER PORT BYTE TO C-REG.\r
	INC	HL		;\r
	LD	B,(HL)		;  LOWER PORT BYTE TO B-REG.\r
				;\r
				;  VXAID STILL IN A-REG.\r
	CP	07H		;  IS THE PORT SHARED\r
	JR	NZ,E2		;  IF NO THEN OUTPUT\r
				;  ELSE\r
	IN	A,(C)		;\r
	OR	7FH		;  SAVE BIT 7\r
	AND	D		;\r
	LD	D,A		;\r
E2:	LD	(VXPORT),BC	;  SAVE PORT ADDRESS FOR VIDEO TERMINATION\r
	OUT	(C),D		;  OUTPUT\r
	LD	HL,ECOND2	;\r
	SET	1,(HL)		;  SET DEVICE CONTROL ERROR BIT\r
				;\r
	LESTAB	9		;  IO3 TIMER: TERMINATES VIDEO ACTION\r
				;  AFTER DELAY(8-16MSEC)\r
				;\r
	CALL	PAUSE		;  WAIT 16-24MSEC\r
				;END\r
\r
;-----------------------------------------------------------------------------\r
; TFK INSPECTION MODULE (2):\r
\r
TFKCH2:	LD	HL,TFKFLAG\r
	BIT	0,(HL)\r
	JR	Z,INSPEND	;IF TFK INSPECTION FLAG IS SET THEN\r
				;BEGIN\r
	RES	0,(HL)		;  RESET TFK INSPECTION FLAG\r
TFKCH3:	LD	HL,QUEST	;\r
	CALL	SUBDEQ		;  GET REPLY-BUFFER\r
	JR	C,TFKCH4	;\r
	CALL	SCOMMON		;\r
	EI			;\r
	JR	TFKCH3		;\r
TFKCH4:	PUSH	DE		;\r
	POP	IX		;\r
	BIT	0,(IX+2)	;\r
	JR	Z,TFKERR	;  IF NACK-REPLY GOTO TFKERR\r
	LD	HL,CNTDST	;\r
	LD	A,(HL)		;  GET EXPECTED DESTINATION REPLY\r
	CP	(IX+4)		;  GET DESTINATION NO. IN REPLY\r
	JR	NZ,TFKERR	;  IF NO IDENTITY GOTO TFKERR\r
	LD	C,A		;\r
	LD	B,0		;\r
	LD	HL,TABTFK	;\r
	ADD	HL,BC		;\r
	LD	A,(HL)		;  GET EXPECTED SOURCE REPLY\r
	CP	(IX+3)		;  GET SOURCE NO. IN REPLY\r
	JR	NZ,TFKERR	;  IF NO IDENTITY GOTO TFKERR\r
	LD	HL,QEMPTY	;\r
	CALL	SUBENQ		;  RETURN BUFFER TO EMPTY BUFFER QUEUE\r
	JR	INSPEND		;  GOTO INSPEND\r
				;  IF ERROR IN TFK INSPECTION THEN\r
TFKERR:	LD	HL,ECOND2	;  BEGIN\r
	SET	1,(HL)		;    SET DEVICE CONTROL ERROR BIT\r
	LD	(IX+2),01H	;    INSERT ESTABLISH COMMAND CODE IN BUFFER\r
	LD	HL,CNTDST	;\r
	LD	A,(HL)		;\r
	LD	(IX+4),A	;    INSERT DESTINATION NO.\r
	LD	B,0		;\r
	LD	C,A		;\r
	LD	HL,TABTFK	;\r
	ADD	HL,BC		;\r
	LD	A,(HL)		;    GET SOURCE NO.\r
	CP	0		;\r
	JR	NZ,ERT1		;    IF SOURCE = 00 THEN\r
	LD	A,38		;    REPLACE IT WITH MTC NO.(38)\r
ERT1:	LD	(IX+3),A	;    INSERT SOURCE NO.\r
	LD	HL,QAQEST	;\r
	CALL	SUBENQ		;    ENQUE IN TFK QUEUE(CORRECTION)\r
	ACTIVATE S,11		;    AND ACTIVATE TFK PROCESS\r
ERT2:	LD	HL,QUEST	;\r
	CALL	SUBDEQ		;\r
	JR	C,ERT3		;\r
	CALL	SCOMMON		;    WAIT FOR REPLY\r
	EI			;\r
	JR	ERT2		;\r
ERT3:	LD	HL,QEMPTY	;\r
	CALL	SUBENQ		;    RETURN BUFFER TO EMPTY BUFFER QUEUE\r
	JR	INSPEND		;  END\r
				;END\r
\r
;-----------------------------------------------------------------------------\r
INSPEND	LD	HL,CONDIT\r
	RES	2,(HL)		;RESET BUSY-BIT\r
	JP	INSP0\r
\r
\r
PAUSE:	LESTAB	10\r
	PASSIVATE S,10\r
	CALL	SCOMMON\r
	EI\r
	RET\r
\r
PORT35	DW	4034H\r
PORT36	DW	4038H\r
PORT37	DW	4039H\r
PORT38	DW	403AH\r
PORT39	DW	403CH\r
PORT40	DW	4021H\r
PORT41	DW	4022H\r
\r
PORT49	DW	4030H\r
PORT50	DW	4029H\r
PORT51	DW	4031H\r
PORT52	DW	402AH\r
PORT53	DW	4032H\r
PORT54	DW	402CH\r
PORT55	DW	4058H\r
PORT56	DW	4050H\r
PORT57	DW	4059H\r
PORT58	DW	4051H\r
PORT59	DW	4060H\r
PORT60	DW	4052H\r
PORT61	DW	4061H\r
PORT62	DW	4054H\r
PORT63	DW	4062H\r
PORT64	DW	405AH\r
PORT65	DW	4064H\r
PORT66	DW	405CH\r
\r
\r
	DSEG\r
INIFLAG	DS	1\r
DSTCNT	DS	1\r
SRCCNT	DS	1\r
TFKCNT	DS	1\r
TFKSAV	DS	1\r
INITAB	DS	86\r
TFKTAB	DS	49\r
CNTPULS	DS	1\r
CNTDST	DS	1\r
TFKFLAG	DS	1\r
	DS	32\r
STAC10:\r
	END\r