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

⟦f22e958f3⟧ TextFile

    Length: 11982 (0x2ece)
    Types: TextFile
    Names: »REAL.DOR«

Derivation

└─⟦755b1f38b⟧ Bits:30005549 8" CR80 Floppy CR80FD_0032 ( TELECINE Source and Abs-files )
└─⟦755b1f38b⟧ Intel_ISIS_II
    └─ ⟦this⟧ »REAL.DOR« 
└─⟦8347abc8e⟧ Bits:30005501 8" CR80 Floppy CR80FD_0033 ( ATR Source and Abs-files )
└─⟦8347abc8e⟧ Intel_ISIS_II
    └─ ⟦this⟧ »REAL.DOR« 
└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files )
└─⟦af81bc460⟧ Intel_ISIS_II
    └─ ⟦this⟧ »REAL.DOR« 

TextFile

;\r
;\r
;file: REAL.DOR, version: 810424/CGR\r
;************************************************************************\r
;\r
;                       Z80 REALTIME OPERATING SYSTEM\r
;\r
;                       Modified for DORA applications\r
;\r
;************************************************************************\r
;\r
;\r
;\r
	NLIST	S\r
;\r
BSCHES	MACRO\r
	NLIST	M		;DESCRIP: THE MODULE SEARCHES THE SCHEDULE-\r
				;	LIST FOR THE NEXT ACTIVE PROCESS\r
				;	AND RETURNS CONTROL TO THIS PROCESS.\r
				;	IF LINK-PARAM. IS SET A JUMP TO EX.\r
				;	SCHEDULER IS EXECUTED IN CASE OF\r
				;	NO ACTIVE SPECIAL PROCESSES\r
				;ENTRY:	ADD 38H\r
				;EXIT:	ADD IN FIRST ACTIVE PROCESS-DESCRIP\r
				;	OR EXTENDED SCHEDULER\r
				;DESTR:	REG A,F,H,L,SP\r
\r
X#$YM:	LD	SP,INISP	;INITIALIZE SP\r
	EI			;INTERRUPT INTERVAL\r
	NOP\r
	NOP\r
	NOP\r
	DI\r
S#$YM:	LD	HL,SYSRAM+0FAH	\r
	IF	LINK.EQ.1\r
	JR	Z#$YM		;TEST IF LINKELEMENT ZERO\r
	ENDIF\r
R#$YM:	DEC	(HL)		;DEC. CURRENT SCHEDULE COUNT\r
	JP	NZ,C#$YM	;TEST IF CURRENT SCHEDULE COUNT ZERO\r
	LD	(HL),SLL	;REINITIALIZE CURRENT SCHEDULE COUNT\r
	LD	HL,0H\r
	JP	I#$YM\r
C#$YM:	LD	L,(HL)\r
	LD	H,0H\r
I#$YM:	LD	DE,ADDSL\r
	ADD	HL,DE		;SCHEDULE LIST ADDRESS IMPLEMENTED\r
	LD	L,(HL)\r
	LD	DE,SYSRAM+200H	;OFFSET-ADD OF PD\r
	LD	H,D		;ADDRESS OF PD IMPLEMENTED\r
	IF	S.GT.16\r
	LD	H,0\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.32\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.64\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.128\r
	SLA	L\r
	RL	H\r
	ENDIF\r
	IF	S.GT.16\r
	LD	DE,SYSRAM+205H\r
	ADD	HL,DE\r
	ENDIF\r
	BIT	7,(HL)		;TEST ACTIVE/PASSIV\r
	JR	Z,X#$YM		;JUMP IF PASSIV\r
	INC	L\r
	LD	SP,HL		;SP POINTS AT XXX6\r
	INC	L\r
	INC	L\r
	LD	(SYSRAM+0F8H),HL;SAVE ADDRESS OF\r
				;EXECUTING PD\r
	RET\r
	IF	LINK.EQ.1\r
	EXTRN	EXSCHED\r
Z#$YM:	INC	HL		;IMPLEMENT ADD OF LINK ELEMENT\r
	LD	A,(HL)		;\r
	AND	A		;IF LINK-ELEMENT 0 THEN\r
	JP	Z,EXSCHED	;GOTO EXTENDED SCHEDULER\r
	DEC	HL		;ELSE\r
	JP	R#$YM		;RETURN TO BASIC SCHEDULER\r
	ENDIF\r
	LIST	M\r
	ENDM\r
	EJEC\r
LSCHED	MACRO\r
	NLIST	M\r
					;DESCRIP: THE MODUL SETS UP A \r
					;	SCHEDULE LIST CONFIGU-\r
					;	RATION WITH EQUALIZED\r
					;	DISTRIBUTION OF ADDRESSES\r
					;DESTR:	REG A,F,B,C,D,E,H,L\r
\r
	LD	HL,SYSRAM+1FFH	;IMPLEMENT ADD OF LAST LIST-ELEMENT\r
S#$YM:	LD	BC,S-1			;INIT PROCESS-COUNT\r
L#$YM:	LD	D,B			;IMPLEMENT RELATIV ADD OF \r
	LD	E,C			;PROCESS-DESCRIPT FROM CURRENT \r
	IF	S.LT.256		;PROCESS-COUNT\r
	SLA	E\r
	RL	D			;THE RELATIVE ADD IS\r
	IF	S.LT.128		;(PROCESS-COUNT)*256/S\r
	SLA	E\r
	RL	D\r
	IF	S.LT.64\r
	SLA	E\r
	RL	D\r
	IF	S.LT.32			;IF S EQU 16 THEN\r
	SLA	E			;BEGIN\r
	RL	D\r
	LD	A,E			;IMPLEMENT ABSOLUT ADD\r
	ADD	A,5			;BY ADDING 5 TO RELATIVE ADD\r
	LD	E,A			;END\r
	ENDIF\r
	ENDIF\r
	ENDIF\r
	ENDIF\r
	LD	(HL),E			;LOAD SCHEDUL LIST ELEMENT\r
	DEC	L			;DEC CURRENT SCHEDUL LIST ELEMENT\r
	LD	A,L			;IF LAST SCHEDULE LIST ELEMENT THEN\r
	CP	0FFH	\r
	JR	Z,E#$YM			;GOTO E#$YM\r
	DEC	C			;ELSE\r
	LD	A,C			;DECREMENT CURRENT PROCESS-COUNT\r
	CP	0FFH			;IF CURRENT PROCESS-COUNT=0 THEN\r
	JR	Z,S#$YM			;GOTO S#$YM	(INIT PROCESS-COUNT)\r
					;ELSE\r
	JR	L#$YM			;GOTO L#$YM	(CONTINUE LOOP)\r
E#$YM:	LIST	M\r
	ENDM\r
	EJEC\r
ACTIVATE	MACRO	#ID,#NO\r
	NLIST	M\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
\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
	LIST	M\r
	ENDM\r
	EJEC\r
PASSIVATE	MACRO	#ID,#NO\r
	NLIST	M\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
\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
	LIST	M\r
	ENDM\r
	EJEC\r
CREATE	MACRO	#ID,#NO,#NAME,#PRIO\r
	NLIST	M\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
\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
	EJEC\r
BSCHED	MACRO\r
	NLIST	M\r
				;DESCRIP: THE MODULE SEARCHES THE SCHEDULE-\r
				;	LIST FOR THE NEXT ACTIVE PROCESS\r
				;	AND RETURNS CONTROL TO THIS PROCESS.\r
				;	IF LINK-PARAM. IS SET A JUMP TO EX.\r
				;	SCHEDULER IS EXECUTED IN CASE OF\r
				;	NO ACTIVE SPECIAL PROCESSES\r
				;	(THE CHEDULER SUPPORTS DYNAMIC\r
				;	SCHEDULE-LIST)\r
				;ENTRY:	ADD 38H\r
				;EXIT:	ADD IN FIRST ACTIVE PROCESS-DESCRIP\r
				;	OR EXTENDED SCHEDULER\r
				;DESTR:	REG A,F,H,L,SP\r
\r
X#$YM:	LD	HL,INISP\r
	LD	SP,HL		;INITIATE SP\r
	EI			;INTERRUPT INTERVAL\r
	NOP\r
	NOP\r
	DI\r
S#$YM:	LD	HL,SYSRAM+0FAH	\r
	IF	LINK.EQ.1\r
	JR	Z#$YM		;TEST IF LINKELEMENT ZERO\r
	ENDIF\r
R#$YM:	INC	(HL)		;INC CURRENT LIST ELEMENT\r
	LD	L,(HL)\r
	INC	H		;SHEDULE LIST ADD IMPLEMENTED\r
	LD	L,(HL)\r
	INC	H		;ADD OF PD IMPLEMENTED\r
	IF	S.GT.16\r
	LD	H,0\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.32\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.64\r
	SLA	L\r
	RL	H		;MULTIPLY ADD BY 2\r
	ENDIF\r
	IF	S.GT.128\r
	SLA	L\r
	RL	H\r
	ENDIF\r
	IF	S.GT.16\r
	LD	DE,SYSRAM+205H\r
	ADD	HL,DE		;ADD RELATIVE ADDRESS\r
	ENDIF\r
	BIT	7,(HL)		;TEST ACTIVE/PASSIV\r
	JR	Z,X#$YM		;JUMP IF PASSIV\r
	INC	L\r
	LD	SP,HL		;SP POINTS AT XXX6\r
	INC	L\r
	INC	L\r
	LD	(SYSRAM+0F8H),HL;SAVE ADDRESS OF\r
				;EXECUTING PD\r
	RET\r
	IF	LINK.EQ.1\r
	EXTRN	EXSCHED\r
Z#$YM:	INC	HL		;IMPLEMENT ADD OF LINK ELEMENT\r
	LD	A,(HL)		;\r
	AND	A		;IF LINK-ELEMENT 0 THEN\r
	JP	Z,EXSCHED	;GOTO EXTENDED SCHEDULER\r
	DEC	HL		;ELSE\r
	JP	R#$YM		;RETURN TO BASIC SCHEDULER\r
	ENDIF\r
	LIST	M\r
	ENDM\r
	EJEC\r
RESTORE	MACRO	#N,#R1,#R2,#R3,#R4\r
	NLIST	M\r
				;DESCRIP:THE MODULE RESTORES THE #N REG.-PAIR(S)				;	SPECIFIED AND INITIALIZES SP.\r
				;	THE REG.-PAIRS ARE RESTORED FROM\r
				;	BYTE 8,9,10,11,2,13,14,15 IN POCESS-\r
				;	DESCRIPTION. THE SPECIFIED REG.-PAIR\r
				;	WITH HIGHEST INDEX IS RESTORED FROM\r
				;	BYTE 8\r
				;DESTR:	REG H,L,SP\r
\r
	IF	#N.GT.3		;THE ROUTINE RESTORES\r
	POP	#R4		;#R4\r
	ENDIF\r
	IF	#N.GT.2\r
	POP	#R3		;#R3\r
	ENDIF\r
	IF	#N.GT.1\r
	POP	#R2		;#R2\r
	ENDIF\r
	IF	#N.GT.0\r
	POP	#R1		;#R1\r
	ENDIF\r
	LD	SP,INISP		;INIT SP\r
	LIST	M\r
	ENDM\r
	EJEC\r
SCHEDULE	MACRO	#N,#R1,#R2,#R3,#R4\r
	NLIST	M\r
				;DESCRIP: THE MODULE DISABLES INTERRUPTS\r
				;	SAVES THE #N SPECIFIED REG.-PAIR(S)\r
				;	AND JUMPS TO ADD 38H (BASIC SCHEDULER).\r
				;	THE REG.-PAIRS ARE SAVED IN PROCESS-\r
				;	DESCRIPTION BYTE 8,9,10,11,12,13,14,15\r
				;	WITH THE SPECIFIED REGISTER WITH\r
				;	HIGHEST INDEX SAVED IN BYTE 8\r
				;EXIT:	ADD 38H\r
				;DESTR:	REG. H,L,SP\r
				;	SPEC. BYTES IN PROCESS-DESCRIPTION\r
\r
	IF	#N.GT.0\r
	LD	HL,(SYSRAM+0F8H);ADD OF EXECUTING PD TO HL\r
	PUSH	AF		;STORE AF\r
	LD	A,L\r
	ADD	A,#N*2-1\r
	LD	L,A\r
	INC	HL\r
	POP	AF		;RESTORE AF\r
	DI\r
	LD	SP,HL		;STORE REGISTERS ON STACK\r
	ENDIF\r
	IF	#N.EQ.0\r
	DI\r
	LD	SP,(SYSRAM+0F8H)\r
	ENDIF\r
	IF	#N.GT.0\r
	PUSH	#R1		;#R1\r
	IF	#N.GT.1\r
	PUSH	#R2		;#R2\r
	IF	#N.GT.2\r
	PUSH	#R3		;#R3\r
	IF	#N.GT.3\r
	PUSH	#R4		;#R4\r
	ENDIF\r
	ENDIF\r
	ENDIF\r
	ENDIF\r
	RST	38H		;SCHEDULE\r
	LIST	M\r
	ENDM\r
	EJEC\r
COMMON	MACRO	#N,#R1,#R2,#R3,#R4\r
	NLIST	M\r
				;DESCRIP: THE MODULE DISABLES INTERRUPT,\r
				;	SAVES THE #N SPECIFIED REG.-PAIR(S) IN\r
				;	PROCESS-DESCRIPTION, ENFORCES A SCHE-\r
				;	DULING, RESTORES THE #N SPECIFIED\r
				;	REG.-PAIR(S) AND ENABLES INTERRUPT.\r
				;DESTR: REG. H,L,SP\r
				;	SPECIFIED BYTES IN PROCESS-DESCRIP.\r
				;	NOT SPECIFIED REG.-PAIRS\r
\r
	SCHEDULE	#N,#R1,#R2,#R3,#R4\r
	NLIST	M\r
	RESTORE	#N,#R1,#R2,#R3,#R4\r
\r
	ENDM\r
	EJEC\r
LISTSCHED	MACRO	#START,#ELEMENT,#STEP\r
	NLIST	M\r
				;DESCRIP: THE MODULE INSERTS #ELEMENT IN SCHEDULE-\r
				;	LIST AS ELEMENT-NO #START+#STEP*N, WHERE\r
				;	N IS A NON-NEGATIVE INTEGER\r
				;DESTR:	REG A,F,H,L\r
\r
	LD	HL,SYSRAM+100H+#START\r
L#$YM:	LD	(HL),#ELEMENT	;LOAD LIST WITH ELEMENT\r
	LD	A,L\r
	ADD	A,#STEP		;IMPLEMENT NEXT LIST ELEMENT\r
	LD	L,A		;IF LAST LIST-ELEMENT THEN\r
	JR	NC,L#$YM	;FINISH\r
				;ELSE GOTO L#$YM\r
	LIST	M\r
	ENDM\r
	EJEC\r
ENASCH	MACRO\r
	NLIST	M\r
				;DESCRIP: THE MODULE ENABLES BASIC SCHEDULER\r
				;DESTR:	REG H,L\r
\r
	LD	HL,SYSRAM+0F5H\r
	SET	7,(HL)\r
	LIST	M\r
	ENDM\r
	EJEC\r
DISSCH	MACRO\r
	NLIST	M\r
				;DESCRIP: THE MODULE DISABLES BASIC SCHEDULER\r
				;DESTR:	REG H,L\r
	LD	HL,SYSRAM+0F5H\r
	RES	7,(HL)\r
	LIST	M\r
	ENDM\r
	EJEC\r
FILLRAM	MACRO\r
	NLIST	M\r
				;DESCRIP: RAM IS FILLED WITH SPECIFIED\r
				;	PATTERN\r
				;ENTRY:	PATTERN IN REG C\r
				;	LOWER ADD IN REG HL\r
				;	UPPER ADD IN REG DE\r
				;EXIT:	PATTERN IN REG C\r
				;	UPPER ADD IN REG DE,HL\r
				;DESTR:	REG A,F\r
\r
F#$YM:	LD	(HL),C	;FILL PATTERN IN RAM\r
	INC	HL	;INC	CURRENT ADD\r
	LD	A,D\r
	CP	H	;IF CURRENT ADD EQU.\r
	JR	NZ,F#$YM;MAX ADD THEN\r
	LD	A,E	;JUMP OUT\r
	CP	L	;ELSE\r
	JR	NZ,F#$YM;GOTO F#$YM\r
	LIST	M\r
	ENDM\r
	LIST	S\r
;\r
;\r
;\r
;\r
	PUBLIC	SUBENQ,SUBDEQ\r
	PUBLIC	SCOMMON\r
	EXTRN	SYSRAM,ENDRAM\r
	EXTRN	START,INISP\r
LINK	EQU	0\r
ADIPSW	EQU	0D0H\r
	ORG	30H\r
	JP	BEGIN\r
;\r
SCOMMON:				;SCHEDULING PRIMITIV SAVING SP IN PD\r
	LD	HL,0\r
	ADD	HL,SP\r
	DI\r
	LD	SP,(SYSRAM+0F8H) ;LOAD SP WITH ADD OF EXEC. PD\r
	POP	DE\r
	PUSH	HL		;SAVE SP IN PD OF EXECUTING PD\r
	CALL	BEGIN+8		;SCHEDULE\r
	POP	HL		;RESTORE SP\r
	LD	SP,HL\r
	RET\r
;\r
SUBENQ	INC	HL		;1 INCREMENT NUMBER OF ELEMENT\r
	LD	A,(HL)		;1\r
	INC	(HL)		;1\r
	AND	A		;1\r
	JR	NZ,ENQ1		;2 IF NUMBER OF ELEMENT WAS = 0\r
	INC	HL		;2 THEN DO;\r
	LD	(HL),E		;3	   REMOVE NEW ELEMENT ADDRESS\r
	INC	HL		;3	   IN QUEUE AS FIRST ELEMENT\r
	LD	(HL),D		;3	   AND LAST ELEMENT\r
	INC	HL		;3\r
	LD	(HL),E		;3\r
	INC	HL		;3\r
	LD	(HL),D		;3	   RETURN\r
	RET			;3	END;\r
ENQ1	SCF			;4 ELSE DO;\r
	INC	HL		;4	   REMOVE NEW ELEMENT ADDRESS\r
	INC	HL		;4	   TO OLD LAST ELEMENT DESCRIPTION\r
	INC	HL		;4\r
	LD	C,(HL)		;4\r
	INC	HL		;4\r
	LD	B,(HL)		;4\r
	LD	(HL),D		;4\r
	DEC	HL		;4	   REMOVE NEW ELEMENT ADDRESS\r
	LD	(HL),E		;4	   TO NEW LAST ELEMENT IN QUEUE\r
	LD	L,C		;4\r
	LD	H,B		;4\r
	LD	(HL),E		;4\r
	INC	HL		;4\r
	LD	(HL),D		;4	   RETURN\r
	RET			;4	END;\r
;\r
	ORG	66H\r
NMI:	LD	A,0		;NMI LOOP\r
	OUT	(0C0H),A	;\r
	JP	NMI		;\r
;\r
BEGIN:	BSCHES\r
INIT:	LD	C,0\r
	LD	HL,SYSRAM	;LOAD LOWER ADDRESS\r
	LD	DE,ENDRAM	;LOAD UPPER ADDRESS\r
	FILLRAM\r
	ENASCHED\r
	LD	A,SLL\r
	LD	(SYSRAM+0FAH),A	;INIT CURRENT SCHEDULE-COUNT\r
      	CREATE	S,1,START,D\r
	JP	BEGIN+8		;GOTO BASIC SCHEDULER\r
;\r
SUBDEQ	INC	HL		;1\r
	DEC	(HL)		;1 DECREMENT NUMBER OF ELEMENT\r
	SCF			;2 SET QUEUE NOT EMPTY FLAG (CARRY=1)\r
	JP	M,DEQ1		;3 IF NUMBER OF ELEMENT > 0\r
	INC	HL		;3 THEN DO;\r
	LD	E,(HL)		;3	   REMOVE ADDRESS OF FIRST ELEMENT\r
	INC	HL		;3 	   TO REGISTER DE\r
	LD	D,(HL)		;3\r
	EX	DE,HL		;3 	   REMOVE SECOND ELEMENT TO NEW\r
	DEC	DE		;3	   FIRST ELEMENT IN QUEUE\r
	LDI			;3\r
	LDD			;3\r
	EX	DE,HL		;3\r
	RET			;3	END;\r
DEQ1	CCF			;4 ELSE DO;\r
	INC	(HL)		;4	   SET QUEUE EMPTY FLAG (CARRY=0)\r
				;4	   NUMBER OF ELEMENT=0\r
	RET			;4	END;\r
;\r
	END\r