DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦a61563ec9⟧ TextFile

    Length: 2045 (0x7fd)
    Types: TextFile
    Names: »SUBXDQ.S«

Derivation

└─⟦31b8a9b6a⟧ Bits:30005199 8" Zilog MCZ/1 Floppy CR80FD_0025 ( TC 500 SEC. PROTOCOL BB V2 830407 NCJ )
    └─ ⟦this⟧ »SUBXDQ.S« 
└─⟦cf416a62a⟧ Bits:30005201 8" Zilog MCZ/1 Floppy CR80FD_0027 ( TC 500 SEC. PROTOCOL BACK UP! (V2) BB SEC 821119 NCJ )
    └─ ⟦this⟧ »SUBXDQ.S« 

TextFile

;*****************************************************************************
;*
;*			SUBXDQ  MODULE
;*
;*****************************************************************************
 
	GLOBAL	SUBXDQ
 
;*****************************************************************************
; SUBROUTINE NAME	: SUBXDQ
; FUNCTION		: DEQUES BUFFER WITH SPECIFIED CLUSTER ADDRESS
;			  FROM SPECIFIED QUEUE
; INPUTS		: (BC) = CLUSTER ADDRESS
;			: (HL) = QUEUEHEAD ADDRESS
; OUTPUTS		:  CY  = 1 IF BUFFER FOUND
;			: (DE) = BUFFER ADDRESS
;
;			;  CY  = 0 IF BUFFER NO FOUND
;****************************************************************************
 
CADOFF	EQU	23H
CAD1	DEFS	1
CAD2	DEFS	1
 
SUBXDQ	LD	A,C
	LD	(CAD1),A
	LD	A,B
	LD	(CAD2),A
	INC	HL		; GET NO. OF ELEMENTS IN QUEU
	LD	A,(HL)		; 
	CP	00H		; IF    NO. = 0 
	SCF			; THEN  SET CARRY FLAG ON ZERO AND JUMP OUT
	JR	Z,XDQ		; ELSE  CONTINUE EXECUTION
	INC	HL		;
	PUSH	HL		;    		
AGAIN	POP	IX		;
	LD	E,(IX)		;
	LD	D,(IX+01H)	;
	DEC	A		; IF    TOTAL NO. OF ELEMENTS HAS BEEN TESTED 
	JP	M,XDQ		; THEN  SET CARRY FLAG ON ZERO AND JUMP OUT
	PUSH	AF		; ELSE  SEARCH FOR THE FIRST NUMBER "CAD1"
	LD	BC,CAD1		; 
	PUSH	DE		;
	POP	IY		;
	LD	A,(BC)		;
	LD	B,A		;
	LD	A,(IY+CADOFF+1)	;
	CP	B		; IF    FIRST NUMBER IS RIGHT
	JR	NZ,NEW		; THEN  SEARCH FOR THE SECOND "CAD2"
	LD	BC,CAD2		; ELSE  CONTINUE SEARCHING IN NEXT BUFFER 
	LD	A,(BC)		;
	LD	B,A		;
	LD	A,(IY+CADOFF)	;
	CP	B		; IF    SECOND NUMBER IS RIGHT ALSO
	JR	Z,FOUND		; THEN  WE HAVE FOUND THE RIGHT BUFFER 
NEW	POP 	AF		; ELSE  CONTINUE SEARCHING IN NEXT BUFFER
	PUSH	DE		;
	JR	AGAIN		;
FOUND	DEC	HL		;
	DEC	(HL)		;
	INC	HL		;
	INC	HL		;
	INC	HL		;
	POP	AF		; IF    IT WASN'T THE LAST ELEMENT IN QUEU 
	JR	NZ,OUT		; THEN  ARRANGE THE PRECEDING BUFFER LINK'S
LAST	PUSH	IX		; ELSE  ARRANGE THE PRECEDING  -  AND  
	POP	BC		;                   SUBSEQUENT BUFFER LINK'S
	PUSH	HL		;	
	POP	IY		;
	LD	(HL),C		;
	INC	HL		;
	LD	(HL),B		;
OUT	LD	C,(IY)		;
	LD	B,(IY+01H)	;
	LD	(IX),C		;
	LD	(IX+01H),B	;
	SCF			;
	RET			;
XDQ	CCF			;
	RET			;
;ECHO \f