DataMuseum.dk

Presents historical artifacts from the history of:

Zilog MCZ Floppy Disks

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦51b759f08⟧ TextFile

    Length: 2311 (0x907)
    Types: TextFile
    Names: »BUFFER.S«

Derivation

└─⟦f2a3f19b6⟧ Bits:30005203 8" Zilog MCZ/1 Floppy CR80FD_0030 ( BB LTU TEST BACK UP! BB VD1 821220 )
    └─ ⟦this⟧ »BUFFER.S« 

TextFile

*INCLUDE CONST.S
 
	GLOBAL	PUTBUF,GETMES,PUTMES,OVLDET
	EXTERNAL SUBENQ,SYSRAM,RECI,MESADD,SUBSEN
 
 
;*****************************************************************************
;* PROCEDURE NAME	: PUTBUF
;*
;* DESCRIPTION		: SENDS A BUFFER TO EMPTY BUFFER QUEUE
;*
;* ENTRY		: DE = ADDRESS OF BUFFER
;*			  IY = ADDRESS OF CHANNEL TABLE
;*
;* EXIT			: NONE
;*
;* DESTROY		: A,F,B,C,H,L
;****************************************************************************
 
PUTBUF	LD	L,(IY+08H)
	LD	H,(IY+09H)
	CALL	SUBENQ
	RET
 
;****************************************************************************
;* PROCEDURE NAME	: GETMES
;*
;* DESCRIPTION		: THE CALLING PROCESS IS DELAYED UNTIL A MESSAGE IS
;*			  SENT TO THE SPECIFIED SEMAPHORE
;*
;* ENTRY		: IY = ADDRESS OF CHANNEL TABLE
;*
;* EXIT			: DE = ADDRESS OF MESSAGE BUFFER
;*
;* DESTROY		: A,F,B,C,D,E,H,L,IX
;****************************************************************************
 
GETMES	PUSH	IY
	LD	L,(IY+0CH)
	LD	H,(IY+0DH)
	LD	DE,SYSRAM+180H
	ADD	HL,DE
	LD	(SYSRAM+0E2H),HL
	CALL	RECI
	CALL	MESADD
	LD	HL,BUFFHEAD+ERROFF
	ADD	HL,DE
	LD	(HL),0		;CLEAR ERROR CODE
	INC	HL
	LD	(HL),0
	POP	IY
	RET
 
;****************************************************************************
;* PROCEDURE NAME	: PUTMES
;*
;* DESCRIPTION		: THE MESSAGE IS SENT TO THE SPECIFIED SEMAPHORE
;*
;* ENTRY		: DE = ADDRESS OF MESSAGE BUFFER
;*			  IY = ADDRESS OF CHANNEL TABLE
;*
;* EXIT			: NONE
;*
;* DESTROY		: B,C,D,E,H,L
;****************************************************************************
 
PUTMES	PUSH	AF
	LD	HL,STWOFF
	ADD	HL,DE		;GET ADDRESS OF STATUS WORD
	LD	(HL),00H
	INC	HL
	LD	(HL),40H	;UPDATE STATUS WORD
	LD	L,(IY+0AH)
	LD	H,(IY+0BH)
	LD	BC,SYSRAM+180H
	ADD	HL,BC
	CALL	SUBSEN
	POP	AF
	RET
 
;****************************************************************************
;* PROCEDURE NAME	: OVLDET
;*
;* DESCRIPTION		: IF MORE THAN 4 BUFFERS IN CR80 QUEUE
;*			  THEN STATUS := OVERLOAD
;*			  ELSE STATUS := NO OVERLOAD
;*
;* ENTRY		: IY = ADDRESS OF CHANNEL TABLE
;*
;* EXIT			: S = P IF OVERLOAD
;*			  S = M IF NO OVERLOAD
;*
;* DESTROY		: A,F,B,C,H,L
;****************************************************************************
 
OVLDET	LD	L,(IY+0AH)
	LD	H,(IY+0BH)
	LD	BC,SYSRAM+180H
	ADD	HL,BC
	INC	HL
	LD	A,(HL)
	CP	4
	RET
 
;ECHO \f