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

⟦e4d936a1f⟧ TextFile

    Length: 12352 (0x3040)
    Types: TextFile
    Names: »CR80.SRC«

Derivation

└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files )
└─⟦af81bc460⟧ Intel_ISIS_II
    └─ ⟦this⟧ »CR80.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
CREATE	MACRO	#ID,#NO,#NAME,#PRIO\r
				;DESCRIP: THE MODULE CREATES SPECIFIED\r
				;	PROCESS IE LOADS STARTADDRESS\r
				;	(#NAME) IN PROCESS-DESCRIPTION\r
				;	BYTE 6,7. IF NORMAL PROCESS IS\r
				;	ENCOUNTERED PRIORITY IS LOADED\r
				;	TO BYTE 5 IN PROCESS-DESCRIPTION\r
				;	AND THE PROCESS IS ENQUEUED IN\r
				;	APPROPRIATE PRIO-QUEUE.\r
				;	FINALLY THE SPECIFIED PROCESS\r
				;	IS ACTIVATED\r
				;DESTR:	IF NORMAL PROCESS\r
				;	REG. A,F,B,C,D,E,H,L\r
				;	IF SPECIAL PROCESS\r
				;	REG. F,H,L\r
	LD	HL,#NAME	;\r
	IF	'#ID'.EQ.'S'\r
	LD	(SYSRAM+200H+#NO*10H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	(SYSRAM+200H+S*10H+#NO*20H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
	LD	(HL),#PRIO			;PRIORTY TO PROCESS\r
	LD	HL,SYSRAM+#PRIO*8		;ADDRESS OF PRIO-QUEUE\r
	LD	DE,SYSRAM+200H+S*10H+#NO*20H	;ADDRESS OF PROCESS-DESCRIP\r
	CALL	SUBENQ\r
	ENDIF\r
	ACTIVATE	#ID,#NO			;ACTIVATE PROCESS\r
	ENDM\r
\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
	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 (I/F 104)                                                   *\r
;*                                                                            *\r
;* MODULE: CR80 COMMAND PROCESS                                               *\r
;*                                                                            *\r
;******************************************************************************\r
\r
	PUBLIC	CR80PR,SRCEBT,BYTE1,DESTBT,BYTES,BUFFT,COUNT\r
	PUBLIC	TABSRC,TABDST,SRCLOG,DSTLOG,STAC05\r
	EXTRN	CONDIT,STATUS,SCOMMON,SYSRAM,SUBDEQ,SUBENQ,IDEPA\r
	EXTRN	PQH5,QXI,QIX,INVEST,QKE,QXT,PQH8,QEMPTY\r
	EXTRN	ID1\r
\r
LINK	DEFL	0\r
CR80NO	DEFL	5\r
EXECUTE	DEFL	9\r
STATNR	DEFL	8\r
\r
	CSEG\r
CR80PR:	LD	SP,STAC05	;INITIALIZE STACKPOINTER\r
PR01:	PASSIVATE S,CR80NO\r
PR02:	CALL	SCOMMON\r
	EI\r
	LD	HL,CONDIT\r
	BIT	6,(HL)\r
	JR	NZ,PR02		;IF INITIALIZATION IN PROGRESS THEN WAIT\r
PR03:	LD	HL,CONDIT\r
	BIT	2,(HL)\r
	JR	Z,PR031		;IF BUSY = 1 THEN\r
				;BEGIN\r
	BIT	7,(HL)		;  IF MANUAL OPERATION IN PROGRESS THEN\r
	JR	Z,PR02		;  WAIT\r
				;END\r
PR031:	LD	HL,PQH5+1\r
	LD	A,0\r
	CP	(HL)		;IF NO BUFFERS IN PQH5 THEN PASSIVATE\r
	JR	Z,PR01		;CR80 COMMAND PROCESS\r
\r
	LD	HL,QEMPTY\r
	CALL	SUBDEQ\r
	JR	NC,PR02		;IF NO BUFFERS IN QEMPTY THEN WAIT\r
	PUSH	DE\r
	POP	IY\r
\r
	LD	HL,PQH5\r
	CALL	SUBDEQ		;GET INCOMING COMMAND\r
	PUSH	DE\r
	POP	IX\r
\r
	LD	A,(IX+10)\r
	CP	61\r
	JR	NZ,PR04\r
	LD	A,38		;IF DESTINATION NO. = 61\r
	LD	(IX+10),A	;THEN REPLACE IT WITH 38\r
PR04:	LD	A,(IX+10)\r
	CP	62\r
	JR	NZ,PR05\r
	LD	A,39		;IF DESTINATION NO. = 62\r
	LD	(IX+10),A	;THEN REPLACE IT WITH 39\r
PR05:	LD	A,(IX+10)\r
	CP	62\r
	JR	NZ,PR06\r
	LD	A,40		;IF DESTINATION NO. = 63\r
	LD	(IX+10),A	;THEN REPLACE IT WITH 40\r
\r
PR06:	LD	A,(IX+10)\r
	CALL	DSTLOG		;MAKE DESTINATION NO. CONVERSION\r
	JP	NZ,NVALID	;IF NO VALID DESTINATION NO. GOTO NVALID\r
	LD	(IY+4),L\r
\r
	LD	A,(IX+9)\r
	CALL	SRCLOG		;MAKE SOURCE NO. CONVERSION\r
	JR	Z,PR06A		;IF NO VALID SOURCE NO. THEN\r
	LD	L,00		;INSERT SOURCE = 0\r
PR06A:	LD	(IY+3),L\r
\r
	LD	A,00\r
	CP	(IY+3)\r
	JR	NZ,PR07		;IF SOURCE = 00 THEN\r
	LD	A,84H		;INSERT DELETE MESSAGE CODE IN COMMAND\r
	LD	(IX+8),A\r
PR07:	LD	A,80H\r
	CP	(IX+8)\r
	JR	NZ,PR08		;IF ESTABLISH COMMAND THEN\r
	LD	A,80H		;BEGIN\r
	LD	(IY+2),A	;  INSERT ESTABLISH STATUSBYTE IN BUFFER\r
	JR	PR09		;END ELSE\r
PR08:	LD	A,00		;BEGIN\r
	LD	(IY+2),A	;  INSERT RELEASE STATUSBYTE IN BUFFER\r
	LD	(IY+3),A	;  SET SOURCE = 00\r
				;END\r
PR09:	CALL	ID1		;RETURN BUFFER TO EMPTY BUFFER QUEUE\r
\r
      	LD	A,(IY+3)\r
	LD	(SRCEBT),A	;SAVE INCOMING SOURCE NO.\r
	PUSH	IY\r
	POP	DE\r
	LD	HL,QXI\r
	CALL	SUBENQ		;SEND INTERNAL COMMAND BUFFER TO QXI\r
	CALL	INVEST		;INVESTIGATE CROSSPOINT STATUS\r
	LD	HL,QIX\r
	CALL	SUBDEQ		;DEQUE BUFFER FROM INVEST\r
	PUSH	DE\r
	POP	IX\r
	LD	A,(IX+2)\r
	LD	(BYTE1),A	;SAVE STATUSBYTE\r
	LD	A,00\r
	LD	(IX+2),A	;CLEAR STATUS(CONDITION) BYTE\r
\r
	LD	HL,CONDIT\r
	BIT	7,(HL)\r
	JR	Z,PR10		;IF MANUAL OPERATION IN PROGRESS THEN\r
	SET	1,(IX+2)	;SET BIT 1 IN CONDITION BYTE\r
PR10:	LD	HL,STATUS\r
	BIT	1,(HL)\r
	JR	Z,PR11		;IF COMPUTER OFF THEN\r
	SET	0,(IX+2)	;SET BIT 0 IN CONDITION BYTE\r
PR11:	LD	A,0\r
	CP	(IX+2)\r
	JR	NZ,STAT1	;IF MANUAL OPERATION IN PROGRESS OR\r
				;COMPUTER OFF GOTO STAT1\r
      	LD	A,(BYTE1)\r
	AND	82H\r
	CP	02H		;IF RELEASE COMMAND WITH DESTINATION ON AIR\r
	JR	Z,STAT1		;GOTO STAT1\r
\r
	LD	A,(IX+4)\r
	CP	58\r
	JP	Z,PR12\r
	CP	59\r
	JP	NZ,PR13		;IF ONE OF THE TEXT-DESTINATIONS 58 OR 59 THEN\r
PR12:	LD	A,(BYTE1)	;BEGIN\r
	AND	41H		;  IF NOT IMPOSSIBLE OR ALLREADY EXISTING CON-\r
	JP	Z,ACCEPT	;  NECTION GOTO ACCEPT\r
				;END\r
PR13:	LD	A,(BYTE1)\r
	AND	49H		;IF IMPOSSIBLE CONNECTION, DESTINATION OCCUPIED\r
	CP	00H		;SOURCE INTERLOCKED OR IF THE REQUESTED\r
	JR	NZ,STAT1	;CONDITION ALLREADY EXIST THEN GOTO STAT1\r
\r
				;IF THE CR80 COMMAND IS ACCEPTED BY\r
				;THE MATRIX INVESTIGATION SUBROUTINE THEN\r
ACCEPT:	LD	A,(BYTE1)	;BEGIN\r
	AND	80H		;\r
	LD	(IX+2),A	;  SAVE ESTABLISH/RELEASE-BIT\r
	PUSH	IX		;\r
	POP	DE		;\r
	LD	HL,QKE		;\r
	CALL	SUBENQ		;  SEND BUFFER TO QKE AND\r
	ACTIVATE S,EXECUTE	;  ACTIVATE EXECUTE MODULE\r
	LD	HL,CONDIT	;\r
	SET	2,(HL)		;  SET BUSY = 1\r
	JP	PR03		;END ELSE\r
\r
STAT1:				;BEGIN\r
	RES	6,(IX+2)	;  RESET BIT 6(INVOKED BY COMMAND) IN COND.BYTE\r
	LD	HL,BYTE1	;\r
	BIT	1,(HL)		;\r
	JR	Z,STAT2		;  IF DESTINATION IS ON AIR THEN\r
	SET	2,(IX+2)	;  SET BIT 2 IN CONDITION BYTE\r
STAT2:	BIT	4,(HL)		;\r
	JR	Z,STAT3		;  IF SOURCE(IF ANY) IS INTERLOCKED THEN\r
	SET	3,(IX+2)	;  SET BIT 3 IN CONDITION BYTE\r
STAT3:	BIT	2,(HL)		;\r
	JR	Z,STAT4		;  IF SOURCE(IF ANY) IS USED THEN\r
	SET	4,(IX+2)	;  SET BIT 4 IN CONDITION BYTE\r
STAT4:	BIT	7,(HL)		;\r
	JR	Z,STAT5		;  IF ESTABLISH COMMAND THEN\r
	LD	A,(SRCEBT)	;  BEGIN\r
	CP	(IX+3)		;\r
	JR	NZ,STAT4A	;\r
	BIT	0,(HL)		;\r
	JR	Z,STAT6		;    IF DESTINATION WAS OCCUPIED THEN\r
STAT4A:	SET	7,(IX+2)	;    SET BIT 7 IN CONDITION BYTE\r
	JR	STAT6		;  END ELSE\r
STAT5:	BIT	0,(HL)		;  BEGIN\r
	JR	NZ,STAT6	;    IF REQUESTED CONDITION DOES NOT EXIST THEN\r
	SET	7,(IX+2)	;    SET BIT 7 IN CONDITION BYTE\r
				;  END\r
STAT6:	LD	HL,TABSRC	;\r
	LD	B,0		;\r
	LD	C,(IX+3)	;  MAKE SOURCE NO. CONVERSION\r
	ADD	HL,BC		;\r
	LD	A,(HL)		;\r
	LD	(IX+3),A	;\r
				;\r
	LD	HL,TABDST-1	;\r
	LD	C,(IX+4)	;  MAKE DESTINATION NO. CONVERSION\r
	ADD	HL,BC		;\r
	LD	A,(HL)		;\r
	LD	(IX+4),A	;\r
				;\r
       	PUSH	IX		;\r
	POP	DE		;\r
	LD	HL,QXT		;\r
	CALL	SUBENQ		;  SEND STATUS BUFFER TO STATUS TRANSM.PROCESS\r
	ACTIVATE S,STATNR	;  ACTIVATE STATUS TRANSMITTING PROCESS\r
	JP	PR03		;END\r
\r
				;IF NON VALID DESTINATION NO. THEN\r
NVALID:	LD	A,00		;BEGIN\r
	LD	(IY+2),A	;\r
	LD	HL,CONDIT	;\r
	BIT	7,(HL)		;\r
	JR	Z,NV1		;  IF MANUAL OPERATION IN PROGRESS THEN\r
	SET	1,(IY+2)	;  SET BIT 1 IN CONDITION BYTE\r
NV1:	LD	HL,STATUS	;\r
	BIT	1,(HL)		;\r
	JR	Z,NV2		;  IF COMPUTER OFF THEN\r
	SET	0,(HL)		;  SET BIT 0 IN CONDITION BYTE\r
NV2:	LD	A,(IX+9)	;  TRANSFER SOURCE AND DESTINATION NO.'S\r
	LD	(IY+3),A	;  UNCHANGED TO BUFFER\r
	LD	A,(IX+10)	;\r
	LD	(IY+4),A	;\r
	PUSH	IY		;\r
	POP	DE		;\r
	LD	HL,QXT		;\r
	CALL	SUBENQ		;  SEND STATUS BUFFER TO STATUS TRANSM.PROCESS\r
	ACTIVATE S,STATNR	;  ACTIVATE STATUS TRANSMITTING PROCESS\r
	PUSH	IX		;\r
	POP	DE		;\r
	CALL	ID1		;  RETURN BUFFER TO EMPTY BUFFER QUEUE\r
	JP	PR03		;END\r
\r
;-----------------------------------------------------------------------------\r
\r
				;ENTRY: REAL SOURCE NO. IN (A)\r
				;\r
				;EXIT : LOGIC SOURCE NO. IN (L)\r
				;	Z-FLAG SET,IF FOUND\r
				;       Z-FLAG RESET, IF NOT FOUND\r
SRCLOG:	LD	HL,TABSRC\r
	LD	BC,39\r
	CPIR\r
	RET	NZ\r
	PUSH	AF\r
	LD	HL,39-1\r
	AND	A\r
	SBC	HL,BC\r
	POP	AF\r
	RET\r
\r
;------------------------------------------------------------------------------\r
\r
				;ENTRY: REAL DESTINATION NO. IN (A)\r
				;\r
				;EXIT : LOGIC DESTINATION NO. IN (L)\r
				;       Z-FLAG SET, IF FOUND\r
				;       Z-FLAG RESET, IF NOT FOUND\r
DSTLOG:	LD	HL,TABDST\r
	LD	BC,85\r
	CPIR\r
	RET	NZ\r
	PUSH	AF\r
	LD	HL,85\r
	AND	A\r
	SBC	HL,BC\r
	POP	AF\r
	RET\r
\r
\r
*******************************************************************************\r
*               SOURCE- AND DESTINATION NO. CONVERSION TABLE                  *\r
*******************************************************************************\r
\r
;    LOGIC NO.  NO.	NAME\r
;-----------------------------------------------------------------------------\r
TABSRC:	DB	00	;REL     \r
	DB	01	;VTR1    \r
	DB	02	;VTR2    \r
	DB	03	;VTR3    \r
	DB	04	;VTR4    \r
	DB	05	;VTR5    \r
	DB	06	;VTR6    \r
	DB	07	;VTR7    \r
	DB	08	;VTR8    \r
	DB	09	;VCR1    \r
	DB	10	;VCR2    \r
	DB	11	;TC1     \r
	DB	12	;TC2     \r
	DB	13	;DIA1    \r
	DB	14	;DIA2    \r
	DB	15	;SLOMO   \r
	DB	16	;CNR1    \r
	DB	17	;CNR2    \r
	DB	18	;ST-5    \r
	DB	19	;ST-M    \r
	DB	20	;ST-CITY \r
	DB	21	;EXT1    \r
	DB	22	;EXT2    \r
	DB	23	;EXT3    \r
	DB	24	;EXT4    \r
	DB	25	;EXT5    \r
	DB	26	;EXT6    \r
	DB	27	;DFS1    \r
	DB	28	;DFS2    \r
	DB	29	;COLBAR  \r
	DB	30	;TEST    \r
	DB	31	;KGEN1   \r
	DB	32	;KGEN2   \r
	DB	33	;TXTGEN3 \r
	DB	34	;TXTGEN4 \r
	DB	35	;SPARE   \r
	DB	36	;ATR1    \r
	DB	37	;ATR2    \r
	DB	40	;MTC     \r
\r
TABDST: DB	01	;VTRA    \r
	DB	02	;VTR1    \r
	DB	03	;VTR2    \r
	DB	04	;VTR3    \r
	DB	05	;VTR4    \r
	DB	06	;VTR5    \r
	DB	07	;VCR5    \r
	DB	08	;VCR6    \r
	DB	09	;VCR7    \r
	DB	10	;VCR8    \r
	DB	11	;VCR9    \r
	DB	12	;VCR10   \r
	DB	13	;VCR11   \r
	DB	14	;VCR12   \r
	DB	15	;VCR13   \r
	DB	16	;VCR14   \r
	DB	17	;SLOMO   \r
	DB	18	;ST5L1   \r
	DB	19	;ST5L2   \r
	DB	20	;ST5L3   \r
	DB	21	;ST5L4   \r
	DB	22	;ST5L5   \r
	DB	23	;ST5L6   \r
	DB	24	;ST5L7   \r
	DB	25	;STML1   \r
	DB	26	;STML2   \r
	DB	27	;STML3   \r
	DB	28	;CNR1L1  \r
	DB	29	;CNR1L2  \r
	DB	30	;CNR2L1  \r
	DB	31	;CNR2L2  \r
	DB	32	;TX1     \r
	DB	33	;TX2     \r
	DB	34	;TX3     \r
	DB	35	;TX4     \r
	DB	36	;DFS1    \r
	DB	37	;DFS2    \r
	DB	38	;CBAROP MON.\r
	DB	39	;CBAROP MON.\r
	DB	40	;DIA-LOAD\r
	DB	41	;CNR1L3  \r
	DB	42	;CNR1L4  \r
	DB	43	;CNR1L5  \r
	DB	44	;CNR2L3  \r
	DB	45	;CNR2L4  \r
	DB	46	;CNR2L5  \r
	DB	47	;ATR1    \r
	DB	48	;ATR2    \r
	DB	49	;SPARE   \r
	DB	50	;SPARE   \r
	DB	51	;EXT1 FEEDBACK\r
	DB	52	;EXT2    -\r
	DB	53	;EXT3    -\r
	DB	54	;EXT4    -\r
	DB	55	;EXT5    -\r
	DB	56	;EXT6    -\r
	DB	57	;ST-CITY -\r
	DB	58	;TEXT3   -\r
	DB	59	;TEXT4   -\r
	DB	60	;SPARE   \r
	DB	65	;ST-5 KGEN1\r
	DB	66	;     KGEN2\r
	DB	67	;     TXTGEN3\r
	DB	68	;     TXTGEN4\r
	DB	69	;     DIA1\r
	DB	70	;     DIA2\r
	DB	71	;     ST-M\r
	DB	72	;     ST-CITY\r
	DB	73	;     VTRA6\r
	DB	74	;     VTRA7\r
	DB	75	;     VTRA8\r
	DB	77	;ST-M DIA1\r
	DB	78	;     DIA2\r
	DB	79 	;     KGEN1\r
	DB	80	;     KGEN2\r
	DB	81	;     TXTGEN3\r
	DB	82	;     TXTGEN4\r
	DB	83	;CNR1 KGEN1\r
	DB	84	;     KGEN2\r
	DB	85	;     TXTGEN3\r
	DB	86	;     TXTGEN4\r
	DB	88	;CNR2 KGEN1\r
	DB	89	;     KGEN2\r
	DB	90	;     TXTGEN3\r
	DB	91	;     TXTGEN4\r
\r
	DSEG\r
SRCEBT	DS	1\r
DESTBT	DS	1\r
COUNT	DS	1\r
BYTE1	DS	1\r
BYTES	DS	1\r
BUFFT	DS	112\r
	DS	32\r
STAC05:\r
	END\r
\r