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

⟦64e43b1ba⟧ TextFile

    Length: 9772 (0x262c)
    Types: TextFile
    Names: »PANEL.SRC«

Derivation

└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files )
└─⟦af81bc460⟧ Intel_ISIS_II
    └─ ⟦this⟧ »PANEL.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 (I/F 104)                                                   *\r
;*                                                                            *\r
;* MODULE: KEYBOARD PANEL PROCESS                                             *\r
;*                                                                            *\r
;******************************************************************************\r
\r
	PUBLIC	PANEL,OFFSET	;PANEL PROCESS\r
	PUBLIC	STAC07\r
;\r
	EXTRN	STATUS,CONDIT,COUNT2\r
;\r
;	QUEUE HEADS :\r
	EXTRN	QKT,QEK,QEMPTY\r
;\r
	EXTRN	LOGSRC,LOGDST,ACTTYP,TEXT,DISPOS,DISADR,DISCOD\r
	EXTRN	SUBDEQ,SUBENQ,SCOMMON,ESTABR\r
	EXTRN	SYSRAM\r
;\r
; INPUT / OUTPUT PORTS :\r
*************************\r
PORT2	EQU	0020H\r
PORT4	EQU	0030H\r
PORT6	EQU	0031H\r
PORT8	EQU	0032H\r
PORT10	EQU	0034H\r
PORT12	EQU	0040H\r
PORT14	EQU	0041H\r
PORT20	EQU	4020H\r
PORT25	EQU	0010H\r
PORT27	EQU	0012H\r
PORT29	EQU	0018H\r
PORT31	EQU	001AH\r
;\r
KEYBOA	EQU	6H		; KEYBOARD PROCESS\r
KPANEL	EQU	7H		; PANEL PROCESS\r
STATNR	EQU	8H		; INVESTIGATE PROCESS\r
EXECUT	EQU	9H		; EXECUTE PROCESS\r
;\r
TOUT	EQU	0002H\r
LINK	EQU	0\r
;\r
	DSEG\r
\r
OFFSET	DS	 2H\r
DISPM	DS	 7H\r
STAC07	DS	20H\r
;\r
;	ACTIVATE  MACRO\r
;	PASSIVATE MACRO\r
;\r
	NLIST	S\r
;\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
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
;\r
	LIST	S\r
;\r
	CSEG\r
;\r
*******************************************************************************\r
*				PANEL PROCESS				      *\r
*******************************************************************************\r
;\r
;	THE PANEL PROCESS UPDATES THE PANEL DISPLAYS AND LAMPS SPECIFIED\r
;	BY THE INCOMMING BUFFER FROM QEK.\r
;	WHEN QEK IS EMPTY, THE PANEL PROCESS IS PASSIVATED.\r
;\r
;\r
;	E N T R Y :\r
*******************************************************************************\r
;\r
PANEL	LD	SP,STAC07+20H	; INIT. STACKPOINTER\r
;\r
	LD	A,0FFH		; RESET WRITE-PULSES\r
	LD	BC,PORT25\r
	OUT	(C),A\r
	LD	BC,PORT27\r
	OUT	(C),A\r
	LD	BC,PORT29\r
	OUT	(C),A\r
	LD	BC,PORT31\r
	OUT	(C),A\r
;\r
	CALL	JOKE\r
\r
	LD	HL,OFFSET	; BLANK ALL DISPLAYS ON PANEL\r
	LD	(HL),37\r
	INC	HL\r
	LD	(HL),70\r
INIDIS	CALL	DISP\r
	LD	HL,OFFSET+1\r
	DEC	(HL)\r
	JR	NZ,INIDIS\r
	CALL	DISP\r
;\r
PAN1	CALL	SCOMMON		; SCHEDULE\r
	EI\r
;\r
PANDEQ	LD	HL,QEK		; DEQUEUE MESSAGE FROM EXECUTE-MODUL\r
	CALL	SUBDEQ\r
	JR	C,PAN2		; IF QUEUE WAS EMPTY\r
				; THEN BEGIN:\r
	LD	HL,CONDIT	;   SET CONDITION =\r
	RES	2,(HL)		;   NOT BUSY\r
	RES	7,(HL)		;   NO MANUEL OPERATION IN PROGRESS\r
;\r
	PASSIVATE S,KPANEL	;   PASSIVATE KEYBOARD PANEL PROCESS\r
\r
	JR	PAN1		;   GO TO PANEL\r
				; END\r
				; ELSE BEGIN:\r
PAN2	PUSH	DE		;   READ MESSAGE TYPE\r
	POP	IX\r
	LD	A,(IX+2)\r
	LD	B,A\r
	AND	07H\r
	JR	NZ,TEST		;   TEST ROUTINE\r
	BIT	5,B\r
	JR	NZ,LISTEN	;   LISTEN ROUTINE\r
;\r
	LD	A,(IX+3)	;   (A) = SOURCE-NO.\r
	LD	BC,38\r
	LD	HL,LOGSRC\r
	CPIR\r
	JR	NZ,PAN5\r
	AND	A\r
	LD	HL,37\r
	SBC	HL,BC\r
	LD	A,L\r
	LD	(OFFSET),A	;   UPDATE SOURCE OFFSET\r
;\r
	LD	A,(IX+4)	;   (A) = DESTINAION-OFFSET\r
	LD	BC,80\r
	LD	HL,LOGDST\r
	CPIR\r
	JR	NZ,PAN5\r
	AND	A\r
	LD	HL,79\r
	SBC	HL,BC\r
	LD	A,L\r
	LD	(OFFSET+1),A	;   UPDATE DESTINATION-OFFSET\r
;\r
	LD	A,(OFFSET+1)	;   FIND ACTION TYPE\r
	LD	B,00H\r
	LD	C,A\r
	LD	HL,ACTTYP\r
	ADD	HL,BC\r
	LD	A,(HL)		;   (A) = ACTION CODE\r
;\r
	CP	04H\r
	JR	Z,EXCP		;   EXT. CP. ROUTINE\r
	CP	05H\r
	JR	Z,TEXT3		;   TEXT3 ROUTINE\r
	CP	06H\r
	JR	Z,TEXT4		;   TEXT4 ROUTINE\r
;\r
	JR	DISPLA		;   DISPLAY ROUTINE\r
				; END\r
;\r
PAN5	LD	HL,QEMPTY	; RETURN BUFFER INTO QEMPTY\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
;\r
;	TEST ROUTINE:\r
*******************************************************************************\r
;\r
TEST	BIT	6,B		; CHECK ACK/NACK\r
	JR	Z,TEST1		; IF MESSAGE = ACK\r
				; THEN BEGIN:\r
	CPL			;   TEST LAMP ON\r
	OR	0F8H\r
	JR	TEST2		; END\r
				; ELSE BEGIN:\r
TEST1	LD	A,0FFH		;   TEST LAMP OFF\r
				; END\r
TEST2	LD	BC,PORT20\r
	OUT	(C),A\r
	LD	HL,QEMPTY	; RETURN BUFFER\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
;	LISTEN / EXT. DEST ROUTINE:\r
*******************************************************************************\r
;\r
LISTEN\r
EXCP	LD	HL,QEMPTY	; RETURN BUFFER	INTO QEMPTY\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
;	TEXT3 ROUTINE:\r
*******************************************************************************\r
;\r
TEXT3	LD	A,(IX+2)	; CHECK ACK/NACK\r
	AND	0C0H\r
	CP	0C0H\r
	JR	NZ,TEXT3A	; IF ESTABLISH+ACK\r
				; THEN BEGIN:\r
	LD	A,(OFFSET)	;   TEXT3 LAMP ON\r
	LD	B,00H\r
	LD	C,A\r
	LD	HL,TEXT\r
	ADD	HL,BC\r
	LD	A,(HL)\r
	OR	80H\r
	JR	TEXT3B		; END\r
				; ELSE BEGIN:\r
TEXT3A	LD	A,0FFH		;   TEXT3 LAMP OFF\r
				; END\r
TEXT3B	LD	BC,PORT12\r
	OUT	(C),A\r
	LD	HL,QEMPTY	; RETURN BUFFER INTO QEMPTY\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
;	TEXT4 ROUTINE:\r
*******************************************************************************\r
;\r
TEXT4	LD	A,(IX+2)	; CHECK ACK/NACK\r
	AND	0C0H\r
	CP	0C0H\r
	JR	NZ,TEXT4A	; IF ESTABLISH+ACK\r
				; THEN BEGIN:\r
	LD	A,(OFFSET)	;   TEXT4 LAMP ON\r
	LD	B,00H\r
	LD	C,A\r
	LD	HL,TEXT\r
	ADD	HL,BC\r
	LD	A,(HL)\r
	OR	80H\r
	JR	TEXT4B		; END\r
				; ELSE BEGIN:\r
TEXT4A	LD	A,0FFH		;   TEXT4 LAMP OFF\r
				; END\r
TEXT4B	LD	BC,PORT14\r
	OUT	(C),A\r
	LD	HL,QEMPTY	; RETURN BUFFER INTO QEMPTY\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
;	DISPLAY ROUTINE:\r
*******************************************************************************\r
;\r
DISPLA	PUSH	IX		; SAVE POINTER\r
       	LD	A,(IX+2)	; CHECK ACK/NACK\r
	AND	0C0H\r
	CP	0C0H\r
	JR	Z,DIS1		; IF NOT ESTABLISH+ACK, THEN\r
				; BEGIN:\r
	LD	HL,OFFSET	;   BLANK DISPLAY\r
	LD	(HL),37\r
				; END\r
DIS1	CALL	DISP		; UPDATE DISPLAY\r
\r
	BIT	4,(IX+2)\r
	JR	NZ,DIS4		; IF DISPLAY UPDATING GOTO DIS4\r
;\r
				; CHECK ACK/NACK\r
	BIT	6,(IX+2)\r
	JR	Z,DIS2		; IF MESSAGE = ACK, THEN\r
				; BEGIN:\r
	LD	HL,CONDIT	;   SET CONDITION =\r
	RES	3,(HL)		;   NO SOURCE READY\r
	RES	4,(HL)		;   NO DESTINATION READY\r
	LD	HL,STATUS	;\r
	RES	4,(HL)		;   SET STATUS = POSSIBLE CONNECTION\r
;\r
	LD	A,0FFH		;   SOURCE AND DESTINATION LAMPS OFF\r
	LD	BC,PORT2\r
	OUT	(C),A		;   KRE1\r
	LD	BC,PORT4\r
	OUT	(C),A		;   SET1\r
	LD	BC,PORT6\r
	OUT	(C),A		;   SET2\r
	LD	BC,PORT8\r
	OUT	(C),A		;   SET3\r
	LD	BC,PORT10\r
	OUT	(C),A		;   SET4\r
	JR	DIS3		; END ELSE\r
				; BEGIN\r
DIS2	LD	HL,STATUS	;\r
	SET	4,(HL)		;   SET STATUS = IMPOSSIBLE CONNECTION\r
	LD	BC,TOUT		;\r
	CALL	ESTABR		;   ESTABLISH TIMEOUT\r
	LD	HL,COUNT2	;\r
	LD	(HL),5		;\r
				; END\r
DIS3	ACTIVATE S,KEYBOA	; ACTIVATE KEYBOARD PROCESS\r
\r
DIS4:	POP	DE		; RESTORE POINTER\r
	LD	HL,QEMPTY\r
	CALL	SUBENQ\r
	JP	PANDEQ		; GO TO PANDEQ\r
;\r
*******************************************************************************\r
;	END OF KEYBOARD PANEL PROCESS\r
;\r
;\r
;	UPDATE DISPLAY :\r
*******************************************************************************\r
;\r
DISP	LD	HL,OFFSET+1	; FIND DISPLAY POSS.\r
	LD	D,00H\r
	LD	E,(HL)		; (DE) = DEST. OFFSET\r
	LD	HL,DISPOS\r
	ADD	HL,DE\r
	LD	A,(HL)\r
	LD	(DISPM),A	; UPDATE DISPLAY POSS.\r
;\r
	LD	HL,ACTTYP	; FIND PORT ADRESSES\r
	ADD	HL,DE\r
	LD	D,00H\r
	LD	E,(HL)\r
	SLA	E\r
	SLA	E\r
	LD	HL,DISADR\r
	ADD	HL,DE		; (HL) = DISPLAY PORT ADRESS\r
	LD	E,(HL)\r
	INC	HL\r
	LD	D,(HL)\r
	LD	(DISPM+1),DE	; UPDATE PORT ADRESS A\r
	INC	HL\r
	LD	E,(HL)\r
	INC	HL\r
	LD	D,(HL)\r
	LD	(DISPM+3),DE	; UPDATE PORT ADRESS I\r
;\r
	LD	HL,OFFSET	; FIND ASCII CODE ADRESS\r
	LD	D,00H\r
	LD	E,(HL)		; (DE) = SOURCE OFFSET\r
	SLA	E\r
	SLA	E\r
	LD	HL,DISCOD\r
	ADD	HL,DE\r
	LD	(DISPM+5),HL	; UPDATE ASCII CODE ADRESS\r
;\r
	LD	B,04H		; COUNTER = 4\r
;\r
DISPS	PUSH	BC\r
	LD	HL,DISPM	; READ DISPLAY POSS.\r
	LD	A,(HL)\r
	DEC	(HL)\r
;\r
	LD	BC,(DISPM+1)\r
	OUT	(C),A		; SELECT DISPLAY POSS.\r
;\r
	LD	HL,(DISPM+5)	; READ ASCII CODE\r
	LD	A,(HL)\r
	SET	7,A\r
	INC	HL\r
	LD	(DISPM+5),HL\r
;\r
	LD	BC,(DISPM+3)	; WRITE ASCII PORT ADDRESS\r
	OUT	(C),A\r
	RES	7,A		; WRITE PULS ON\r
	OUT	(C),A\r
;\r
	PUSH	BC		; DELAY = CA. 20 USEC.\r
	LD	B,06H\r
DLAY1	NOP\r
	DJNZ	DLAY1\r
	POP	BC\r
;\r
	SET	7,A		; WRITE PULS OFF\r
	OUT	(C),A\r
	POP	BC\r
\r
	PUSH	BC		; DELAY = CA. 20 USEC.\r
	LD	BC,06H\r
DLAY2	NOP\r
	DJNZ	DLAY2\r
	POP	BC\r
\r
	DJNZ	DISPS\r
	RET			; RETURN\r
;\r
*******************************************************************************\r
;	END OF UPDATE DISPLAY ROUTINE\r
;\r
JOKE:	LD	BC,00D0H\r
	IN	A,(C)\r
	SRL	A\r
	AND	03H\r
	AND	A\r
	RET	Z\r
	ADD	A,37\r
	LD	HL,OFFSET\r
	LD	(HL),A\r
	INC	HL\r
	LD	(HL),70\r
JOKE1:	CALL	DISP\r
	LD	HL,OFFSET+1\r
	DEC	(HL)\r
	JR	NZ,JOKE1\r
	CALL	DISP\r
JOKE2:	CALL	SCOMMON\r
	EI\r
	LD	HL,CONDIT\r
	BIT	6,(HL)\r
	RET	Z\r
	LD	A,(QEK+1)\r
	AND	A\r
	JR	Z,JOKE2\r
	RET\r
	END\r