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

⟦66e86a350⟧ TextFile

    Length: 3815 (0xee7)
    Types: TextFile
    Names: »TTIM.SRC«

Derivation

└─⟦519079be6⟧ Bits:30005500 8" CR80 Floppy CR80FD_0029 ( WBOOTL.SYS W.D bootload program 81 10 01 ??? )
└─⟦519079be6⟧ Intel_ISIS_II
    └─ ⟦this⟧ »TTIM.SRC« 

TextFile

	NAME	TTIM\r
	PUBLIC	TTIM1,TTIM2,T8253\r
	PUBLIC	TTIM3,T1CTC\r
	EXTRN	ERROR\r
	CSEG\r
;******************************************************************************\r
	TITLE	'TIMER 1 TEST ROUTINE'\r
;******************************************************************************\r
\r
		;DESCRIP: THE ROUTINE TEST TIMER 1 (8253-1)\r
TTIM1	LD	C,ATIM1\r
	CALL	T8253		;DO TIMER TEST\r
	AND	A\r
	RET	Z		;RETURN IF NO ERRORS\r
	LD	B,10H\r
	ADD	A,B		;LOAD ERROR CODE\r
	CALL	ERROR\r
\r
\r
\r
;******************************************************************************\r
	TITLE	'TIMER 2 TEST ROUTINE'\r
;******************************************************************************\r
\r
		;DESCRIP: THE ROUTINE TEST TIMER 2 (8253-2)\r
TTIM2	LD	C,ATIM2\r
	CALL	T8253		;DO TIMER TEST\r
	AND	A\r
	RET	Z		;RETURN IF NO ERRORS\r
	LD	B,30H\r
	ADD	A,B		;LOAD ERROR CODE\r
	CALL	ERROR\r
\r
\r
\r
;******************************************************************************\r
	TITLE	'TIMER 3 (Z80-CTC) TEST ROUTINE'\r
;******************************************************************************\r
\r
TTIM3	LD	HL,RAMSTA\r
	LD	C,ATIM3\r
	CALL	T1CTC		;DO TIMER 3 TEST\r
	AND	A\r
	RET	Z		;RETURN IF TEST COMPLETED\r
	LD	B,60H\r
	ADD	A,B\r
	CALL	ERROR		;JUMP IF ERROR\r
\r
\r
\r
;------- 8253 TIMER TEST ROUTINE-------------------------------T8253----------\r
		;DESCRIP: THE ROUTINE TEST THE PROGRAMABLE \r
		;	INTERVAL TIMER 8253.\r
		;	THE TIMERS IS LEFT IN MODE 3\r
		;	AND THE FREQUENCE = 9600.\r
		;ENTRY:	C - TIMER BASE ADDRESS\r
		;EXIT:	A = 0	TEST COMPLETED\r
		;	A = 4	I/O ERROR\r
		;	A 1-3   COUNTER ERROR\r
T8253	INC	C\r
	INC	C\r
	INC	C		;LOAD CONTROL WORD ADDRESS\r
	LD	A,10110000B	;DO I/O TEST\r
	OUT	(C),A		;  SET COUNTER 2\r
	DEC	C\r
	LD	B,7\r
	LD	HL,80FFH	;  FOR BIT = 7 TO 0\r
T1LOOP	OUT	(C),L\r
	OUT	(C),H		;    OUTPUT COUNTER\r
	IN	E,(C)\r
	IN	D,(C)		;    INPUT COUNTER\r
	LD	A,H\r
	CP	D\r
	LD	A,4\r
	RET	NZ		;    RETURN IF MSB NOT EQUAL\r
	RRC	H\r
	DJNZ	T1LOOP		;  NEXT BIT\r
	INC	C		;ENDDO\r
	LD	A,36H		;SET ALL COUNTERS TO:\r
	OUT	(C),A		;	MODE 3\r
	LD	A,76H		;	HEX COUNT\r
	OUT	(C),A		;	COUNTER READ/LOAD LSB FIRST THEN MSB\r
	LD	A,0B6H\r
	OUT	(C),A\r
	LD	B,3\r
T2LOOP	DEC	C		;FOR COUNTER = 2 TO 0 \r
	LD	HL,208		;  SET COUNTER TO 9600 HZ\r
	OUT	(C),L\r
	OUT	(C),H\r
	IN	E,(C)\r
	IN	D,(C)		;  READ COUNTER\r
	AND	A\r
	SBC	HL,DE\r
	LD	A,B\r
	RET	Z		;  RETURN IF NO COUNT\r
	DJNZ	T2LOOP		;  NEXT COUNTER\r
	LD	A,0\r
	RET\r
\r
\r
\r
;------CTC TEST ROUTINE----------------------------------T1CTC---------\r
		;DESCRIP: THE ROUTINE TEST THE Z80-CTC\r
		;	FOR I/O AND VECTORED INTERRUPT ERROR\r
		;ENTRY:	HL - INTERRUPT TABLE ADDRESS\r
		;	C - CTC BASE ADDRESS.\r
		;EXIT:	A = 0  TEST COMPLETED\r
		;	A = 1 CHANNEL 0 ERROR\r
		;	A = 2 CHANNEL 1 ERROR\r
		;	A = 3 CHANNEL 2 ERROR\r
		;	A = 4 CHANNEL 3 ERROR\r
		;	A = 5 I/O ERROR\r
		;DESTROY: AF,BC,DE,HL\r
T1CTC	LD	A,H\r
	LD	I,A		;LOAD INTERRUPT VECTOR\r
	OUT	(C),L\r
	IM	2\r
	LD	B,4\r
	LD	DE,TCTCINT\r
C1LOOP	LD	(HL),E		;INIT INTERRUPT TABLE\r
	INC	HL\r
	LD	(HL),D\r
	INC	HL\r
	DJNZ	C1LOOP\r
	LD	B,4\r
	LD	A,C\r
	ADD	A,B\r
	LD	C,A\r
	DEC	C\r
C2LOOP	LD	E,7		;FOR CHANNEL = 3 TO 0\r
	LD	H,80H\r
C21LOOP	LD	A,3		;  FOR BIT = 7 TO 0\r
	OUT	(C),A		;    RESET CHANNEL\r
	LD	A,25H\r
	OUT	(C),A\r
	OUT	(C),H		;    WRITE TIME CONSTANT\r
	IN	L,(C)		;    READ DOWN COUNTER\r
	LD	A,H\r
	CP	L\r
	LD	A,5\r
	RET	NZ		;    RETURN IF I/O ERROR\r
	RRC	H\r
	DEC	E\r
	JR	NZ,C21LOOP	;  NEXT BIT\r
	LD	A,3\r
	OUT	(C),A		;  RESET CHANNEL\r
	LD	A,85H\r
	OUT	(C),A		;  ENABLE CHANNEL INTERRUPT\r
	LD	A,5\r
	OUT	(C),A		;  LOAD TIME CONSTANT\r
	LD	A,0\r
	EI\r
	PUSH	BC\r
	LD	B,5\r
C22LOOP	DJNZ	C22LOOP		;  WAIT FOR INTERRUPT\r
	POP	BC\r
	DI\r
	AND	A\r
	LD	A,1\r
	OUT	(C),A		;  RESET CHANNEL INTERRUPT\r
	LD	A,B\r
	RET	Z		;  RETURN IF NOT INTERRUPT\r
	DEC	C\r
	DJNZ	C2LOOP		;NEXT CHANNEL\r
	XOR	A\r
	RET			;RETURN IF TEST COMPLETED\r
\r
\r
\r
;-------CTC INTERRUPT TEST ROUTINE---------------------------TCTCINT------\r
TCTCINT	INC	A\r
	EI\r
	RETI\r
	END\r