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

⟦618398df5⟧ TextFile

    Length: 5272 (0x1498)
    Types: TextFile
    Names: »INVEST.SRC«

Derivation

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

TextFile

;******************************************************************************\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: INVESTIGATE SUBROUTINE                                             *\r
;*                                                                            *\r
;******************************************************************************\r
\r
	PUBLIC	INVEST\r
	EXTRN	SUBENQ,SUBDEQ\r
	EXTRN	TYPMAT,CPTYPE,CPSTAT\r
	EXTRN	QKI,QIK,QXI,QIX\r
\r
	PUBLIC	CPSPEC\r
\r
	CSEG\r
INVEST:	LD	HL,QKI		;BEGIN\r
	CALL	SUBDEQ		;  TEST IF BUFFER FROM KEYBOARD MODULE\r
	JR	NC,INVM1	;  AND IF YES THEN\r
	LD	HL,QIK		;  SAVE OUTGOING Q-HEAD\r
	JR	INVM2		;END ELSE\r
INVM1:	LD	HL,QXI		;BEGIN\r
	CALL	SUBDEQ		;  TEST IF BUFFER FROM CR80 MODULE\r
	RET	NC		;  AND IF YES THEN\r
	LD	HL,QIX		;  SAVE OUTGOING Q-HEAD\r
				;END\r
INVM2:	PUSH	HL\r
	PUSH	DE\r
	POP	IX\r
	LD	A,0\r
	CP	(IX+3)\r
	JR	Z,INVM4		;IF SOURCE <> 00 THEN\r
	LD	H,(IX+3)	;BEGIN\r
	LD	L,(IX+4)	;\r
	CALL	CPSPEC		;  FIND CP TYPE SPECIFICATION\r
	INC	HL		;\r
	BIT	2,(HL)		;\r
	JR	Z,INVM3		;  IF CP IS IMPOSSIBLE THEN\r
	SET	6,(IX+2)	;  SET BIT 6 IN STATUSBYTE\r
INVM3:	BIT	1,(HL)		;\r
	JR	Z,INVM4		;  IF CP IS SENSELESS THEN\r
	SET	5,(IX+2)	;  SET BIT 5 IN STATUSBYTE\r
				;END\r
INVM4:	PUSH	HL\r
	POP	IY\r
	LD	D,0		;\r
	LD	E,(IX+4)	;\r
	DEC	E		;\r
	LD	HL,CPSTAT	;\r
	ADD	HL,DE		;\r
	LD	A,(HL)		;FIND CP STATUS\r
	AND	7FH\r
	CP	(IX+3)\r
	JR	NZ,INVM5	;IF CP IS ALLREADY ESTABLISHED/RELEASED THEN\r
	SET	0,(IX+2)	;SET BIT 0 IN STATUSBYTE\r
INVM5:	BIT	7,(HL)\r
	JR	Z,INVM6		;IF DESTINATION IS ON AIR THEN\r
	SET	1,(IX+2)	;SET BIT 1 IN STATUSBYTE\r
INVM6:	BIT	7,(IX+2)\r
	JR	NZ,INVM7	;IF RELEASE COMMAND THEN\r
				;BEGIN\r
	LD	(IX+3),A	;  LOAD SOURCE NO. INTO SOURCEBYTE IN BUFFER\r
	AND	0FFH		;\r
	JP	Z,INVM0		;  IF ALLREADY RELEASED THEN STOP INVESTIGATING\r
				;END\r
INVM7:	BIT	7,(IX+2)\r
	JR	Z,INVM7A	;IF ESTABLISH COMMAND THEN\r
	LD	A,(HL)		;BEGIN\r
	AND	7FH		;\r
	JR	Z,INVM7A	;  IF DESTINATION IS OCCUPIED THEN\r
	SET	3,(IX+2)	;  SET BIT 3 IN STATUSBYTE\r
	LD	(IX+3),A	;  REPLACE SPEC.SOURCE WITH THE ACTUAL SOURCE\r
				;END\r
INVM7A:	LD	A,(IX+3)	;\r
	CALL	SUSED1		;\r
	JR	Z,INVM7B	;\r
	CALL	SUSED2		;\r
	JR	Z,INVM7B	;\r
	CALL	SUSED3		;\r
	JR	Z,INVM7B	;\r
	SET	7,A		;\r
	CALL	SUSED1		;\r
	JR	Z,INVM7B	;\r
	CALL	SUSED2		;\r
	JR	Z,INVM7B	;\r
	CALL	SUSED3		;\r
	JR	NZ,INVM8	;IF SOURCE IS USED THEN\r
INVM7B:	SET	2,(IX+2)	;SET BIT 2 IN STATUSBYTE\r
	JR	INVM8		;\r
				;\r
SUSED1:	LD	HL,CPSTAT\r
	LD	BC,37\r
	CPIR\r
	RET\r
SUSED2:	INC	HL\r
	INC	HL\r
	LD	BC,18\r
	CPIR\r
	RET\r
SUSED3:	INC	HL\r
	INC	HL\r
	LD	BC,26\r
	CPIR\r
	RET\r
\r
INVM8:	LD	A,0\r
	CP	(IX+3)\r
	JR	Z,INVM11	;IF SOURCE <> 00 THEN\r
        LD	HL,CPSTAT	;BEGIN\r
	LD	BC,85		;\r
INVM9:	LD	A,(IX+3)	;  TEST IF SOURCE IS CONNECTED TO MORE\r
	CPIR			;  DESTINATIONS THAN THOSE ALLREADY FOUND\r
	JR	NZ,INV10A	;  IF YES THEN\r
	PUSH	BC		;  BEGIN\r
	PUSH	HL		;\r
	LD	BC,CPSTAT	;\r
	AND	A		;\r
	SBC	HL,BC		;\r
	LD	H,(IX+3)	;\r
	RES	7,H		;\r
	CALL	CPSPEC		;\r
	INC	HL		;\r
	BIT	0,(HL)		;    TEST IF CURRENT DESTINATION\r
	POP	HL		;    INTERLOCKS THE SOURCE\r
	POP	BC		;\r
	JR	Z,INVM10	;    IF YES THEN\r
	SET	4,(IX+2)	;    SET BIT 4 IN STATUSBYTE\r
	JR	INVM11		;\r
INVM10:	LD	A,0		;\r
	CP	C		;    IF THE CURRENT DESTINATION IS NOT THE\r
	JR	NZ,INVM9	;    LAST IN CP STATUS TABLE THEN REPEAT\r
				;  END\r
				;END\r
INV10A:	BIT	7,(IX+3)	;\r
	JR	NZ,INVM11	;IF ON AIR-BIT HAS NOT BEEN "SET" THEN\r
				;BEGIN\r
	SET	7,(IX+3)	;  "SET" ON AIR-BIT\r
	LD	HL,CPSTAT	;\r
	LD	BC,85		;\r
	JR	INVM9		;  REPEAT\r
				;END\r
INVM11:	RES	7,(IX+3)	;"RESET" ON AIR-BIT\r
        BIT	7,(IX+2)\r
	JR	Z,INVM0		;IF ESTABLISH COMMAND THEN\r
	BIT	0,(IY+0)	;BEGIN\r
	JR	Z,INVM0		;  IF DESTINATION IS AN INTERLOCKING ONE\r
	BIT	4,(IX+2)	;  THEN TEST IF SOURCE IS ALLREADY COUPLED\r
	JR	Z,INVM0		;  TO AN INTERLOCKING DESTINATION AND IF YES\r
	SET	3,(IX+2)	;  SET BIT 3 IN STATUSBYTE\r
				;END\r
INVM0:	PUSH	IX\r
	POP	DE		;GET BUFFERADDRESS\r
	POP	HL		;GET Q-HEAD ADDRESS\r
	CALL	SUBENQ		;SEND BUFFER TO THE ACTUAL Q-HEAD\r
	JP	INVEST\r
\r
*******************************************************************************\r
*                CROSSPOINT TYPE SPECIFICATION SEARCH ROUTINE                 *\r
*******************************************************************************\r
\r
				;ENTRY: (H) = SOURCE NO.\r
				;       (L) = DESTINATION NO.\r
CPSPEC:	LD	A,0		;PRESET REGISTERS\r
	LD	B,8		;\r
	LD	C,38		;\r
	DEC	H		;MODIFY SOURCE- AND DESTINATION NO.'S\r
	DEC	L		;\r
	AND	A		;\r
CPSP1:	RR	L		;MULTIPLY (DESTINATION NO. - 1) BY 38\r
	JR	NC,CPSP2	;\r
	ADD	A,C		;\r
CPSP2:	RRA			;\r
	DJNZ	CPSP1		;\r
	RR	L		;\r
	LD	C,H		;\r
	LD	H,A		;RESULT IN HL REGISTER\r
	ADD	HL,BC		;ADD (SOURCE NO. - 1) TO HL REGISTER\r
	LD	BC,TYPMAT	;\r
	ADD	HL,BC		;ADD STARTADDRESS OF CP TYPE MATRIX\r
				;TO HL REGISTER\r
	LD	L,(HL)		;SUBTRACT 1 AND MULTIPLY BY 4\r
	DEC	L		;\r
	SLA	L		;\r
	SLA	L		;\r
	LD	H,0		;\r
	LD	BC,CPTYPE	;\r
	ADD	HL,BC		;ADD STARTADDRESS OF CP TYPE SPECIFICATIONS\r
	RET			;\r
				;EXIT: (HL) = ADDRESS OF FIRST BYTE OF\r
				;             REQUESTED CP SPECIFICATION\r
\r
	END\r