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

⟦cf8e52036⟧ TextFile

    Length: 2255 (0x8cf)
    Types: TextFile
    Names: »TTIM.S«

Derivation

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

TextFile

*INCLUDE CONST.S
 
	GLOBAL	TTIM1,TTIM2,TTIM3
	EXTERNAL DETECT
 
TTIM1	LD	C,ATIM1
	CALL	T8253		;DO TIMER TEST
	AND	A
	RET	Z		;RETURN IF NO ERRORS
	LD	B,10H
	ADD	A,B		;LOAD ERROR CODE
	CALL	DETECT
	RET
 
TTIM2	LD	C,ATIM2
	CALL	T8253		;DO TIMER TEST
	AND	A
	RET	Z		;RETURN IF NO ERRORS
	LD	B,30H
	ADD	A,B		;LOAD ERROR CODE
	CALL	DETECT
	RET
 
TTIM3	LD	HL,RAMSTA
	LD	C,ATIM3
	CALL	T1CTC		;DO TIMER TEST
	AND	A
	RET	Z		;RETURN IF NO ERRORS
	LD	B,60H
	ADD	A,B
	CALL	DETECT
	RET
 
T8253	INC	C
	INC	C
	INC	C		;LOAD CONTROL WORD ADDRESS
	LD	A,10110000B	;DO I/O TEST
	OUT	(C),A		;  SET COUNTER 2
	DEC	C
	LD	B,8
	LD	HL,80FFH	;  FOR BIT = 7 TO 0
T1LOOP	OUT	(C),L		;
	OUT	(C),H		;    OUTPUT COUNTER
	IN	E,(C)		;
	IN	D,(C)		;    INPUT COUNTER
	LD	A,H		;
	CP	D		;
	LD	A,4		;
	RET	NZ		;    RETURN IF MSB NOT EQUAL
	RRC	H		;
	DJNZ	T1LOOP		;  NEXT BIT
	INC	C		;OD
	LD	A,36H		;SET ALL COUNTERS TO :
	OUT	(C),A		;  MODE 3
	LD	A,76H		;
	OUT	(C),A		;
	LD	A,0B6H
	OUT	(C),A
	LD	B,3		;
T2LOOP	DEC	C		;FOR COUNTER = 2 TO 0
	LD	HL,208		;  SET COUNTER TO 9600 HZ
	OUT	(C),L
	OUT	(C),H
	IN	E,(C)
	IN	D,(C)		;  READ COUNTER
	AND	A
	SBC	HL,DE
	LD	A,B
	RET	Z		;  RETURN IF NO COUNT
	DJNZ	T2LOOP		;  NEXT COUNTER
	LD	A,0
	RET
;-------------------------------------------------------------------------
T1CTC	LD	A,H
	LD	I,A		;LOAD INTERRUPT VECTOR
	OUT	(C),L
	IM	2
	LD	B,4
	LD	DE,TCTCINT
C1LOOP	LD	(HL),E		;INIT INTERRUPT TABLE
	INC	HL
	LD	(HL),D
	INC	HL
	DJNZ	C1LOOP
	LD	B,4
	LD	A,C
	ADD	A,B
	LD	C,A
	DEC	C
C2LOOP	LD	E,8		;FOR CHANNEL = 3 TO 0
	LD	H,80H
C21LOOP	LD	A,3		;  FOR BIT = 7 TO 0
	OUT	(C),A		;    RESET CHANNEL
	LD	A,25H
	OUT	(C),A
	OUT	(C),H		;    WRITE TIME CONSTANT
	IN	L,(C)
	LD	A,H
	CP	L
	LD	A,5
	RET	NZ		;    RETURN IF I/O ERROR
	RRC	H
	DEC	E
	JR	NZ,C21LOOP	;  NEXT BIT
	LD	A,3
	OUT	(C),A		;  RESET CHANNEL
	LD	A,85H
	OUT	(C),A		;  ENABLE CH«soh»ANNEL INTERRUPT
	LD	A,5
	OUT	(C),A		;  LOAD TIME CONSTANT
	LD	A,0
	EI
	PUSH	BC
	LD	B,5
C22LOOP	DJNZ	C22LOOP		;  WAIT FOR INTERRUPT
	POP	BC
	DI
	AND	A
	LD	A,1
	OUT	(C),A		;  RESET CHANNEL INTERRUPT
	LD	A,B
	RET	Z		;  RETURN IF NO INTERRUPT
	DEC	C
	DJNZ	C2LOOP		;NEXT CHANNEL
	XOR	A
	RET			;RETURN IF TEST COMPLETED
 
;------------------------------------------------------------------------------
TCTCINT	INC	A
	EI
	RETI
 
;ECHO \f