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

⟦7ea12fffb⟧ TextFile

    Length: 4385 (0x1121)
    Types: TextFile
    Names: »TRAM.S«

Derivation

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

TextFile

*INCLUDE CONST.S
 
	GLOBAL	TRAM,T1RAM,T2RAM,T3RAM
	EXTERNAL ERROR
 
TRAM	LD	HL,RAMSTA
	AND	A
	SBC	HL,SP		;IF Z80-RAMSTA < STACK < Z80-RAMEND THEN
	JP	P,R1ELSE
	LD	HL,RAMEND
	AND	A
	SBC	HL,SP
	JP	M,R1NEXT
	LD	HL,-15
	AND	A
	ADD	HL,SP		;Z80-RAMEND = STACK - 8
	JR	R1NEXT
R1ELSE	LD	HL,RAMEND
R1NEXT	LD	DE,RAMSTA
	PUSH	HL
	PUSH	DE		;SAVE Z80-RAM AREA ADDRESSES
	LD	A,55H		;LOAD TEST PATTERN
	CALL	T1RAM
	AND	A
	CALL	NZ,ERROR	;JUMP IF Z80-RAM ERROR
	LD	DE,SRAMB
	LD	HL,SRAME
	LD	A,0AAH
	CALL	T1RAM
	AND	A
	JR	Z,R2NEXT	;IF ERROR INTO SHARED RAM THEN
	LD	B,4		;LOAD ERROR CODE
	ADD	A,B
	CALL	ERROR		;JUMP TO ERROR ROUTINE
 
R2NEXT	POP	DE		;LOAD Z80-RAM AREA ADDRESSES
	POP	HL
	PUSH	HL
	PUSH	DE
	LD	A,55H		;LOAD TEST PATTERN
	CALL	T2RAM
	AND	A
	CALL	NZ,ERROR	;JUMP IF REFLECTION ERROR
	POP	DE
	POP	HL		;LOAD Z80-RAM AREA ADDRESSES
	PUSH	HL
	PUSH	DE
	XOR	A
	CALL	T3RAM		;CLEAR Z80 RAM
	AND	A
	CALL	NZ,ERROR	;JUMP IF Z80-RAM ERROR
	LD	DE,SRAMB
	LD	HL,SRAME
	LD	A,0AAH
	CALL	T2RAM
	AND	A
	JR	Z,R3NEXT	;IF REFLECTION ERROR INTO SHARED RAM THEN
	LD	B,4		;LOAD ERROR CODE
	ADD	A,B
	CALL	ERROR		;JUMP TO ERROR
 
R3NEXT	LD	DE,SRAMB
	LD	HL,SRAME
	XOR	A
	CALL	T3RAM		;CLEAR SHARED RAM
	AND	A
	JR	Z,R4NEXT	;IF ERROR INTO SHARED RAM THEN
	LD	B,4		:LOAD ERROR CODE
	ADD	A,B
	CALL	ERROR		;JUMP TO ERROR
 
R4NEXT	POP	DE		;RESTORE Z80 RAM ADDRESSES
	POP	HL
	LD	(HL),0C9H	;LOAD RET INTO LAST Z80 RAM ADDRESS
	EX	DE,HL
	XOR	A
	JP	(HL)		;DO Z80 RAM TEST AS PROGRAM MEMORY
 
;---------------------------------------------------------------------------
T1RAM	PUSH	AF
	PUSH	DE
	PUSH	HL
	AND	A
	SBC	HL,DE		;BYTE COUNT = START ADDRESS - END ADDRESS
	EX	DE,HL
	INC	E
	INC	D
	DEC	HL
T11LOOP	INC	HL
	LD	(HL),A		;WRITE TEST PATTERN
	CP	(HL)
	JR	NZ,T11ERROR	;JUMP IF WRITE/READ ERROR
	CPL			;COMPLEMENT TEST PATTERN
	DEC	E
	JR	NZ,T11LOOP
	DEC	D
	JR	NZ,T11LOOP	;NEXT ADDRESS
T11NEXT	POP	HL
	POP	DE
	POP	AF
	AND	A
	SBC	HL,DE		;BYTE COUNT = START ADDRESS - END ADDRESS
	EX	DE,HL		;FOR ADDRESS = START TO END
	INC	E
	INC	D
	DEC	HL
T12LOOP	INC	HL
	CP	(HL)
	JR	NZ,T13ERROR	;JUMP IF REFLECTION ERROR
	CPL			;COMPLEMENT TEST PATTERN
	LD	(HL),A		;WRITE TEST PATTERN
	CP	(HL)
	JR	NZ,T12ERROR	;JUMP IF WRITE/READ ERROR
	DEC	E
	JR	NZ,T12LOOP
	DEC	D
	JR	NZ,T12LOOP	;NEXT ADDRESS
T12NEXT	LD	A,0		;TEST COMPLETE
	RET
T11ERROR POP	DE		;ADJUST STACK POINTER
	POP	DE
	POP	DE
T12ERROR LD	A,08H		;ERROR EXIT IF WRITE/READ ERROR
	RET
T13ERROR LD	A,09H		;ERROR EXIT IF REFLECTION ERROR
	RET
 
;----------------------------------------------------------------------------
T2RAM	CPL
	AND	A
	SBC	HL,DE		;BYTE COUNT = START ADDRESS - END ADDRESS
	EX	DE,HL		;FOR ADDRESS = START TO END
	INC	E
	INC	D
	DEC	HL
T22LOOP	INC	HL
	CP	(HL)
	JR	NZ,T22ERROR	;JUMP IF REFLECTION ERROR
	CPL			;COMPLEMENT TEST PATTERN
	DEC	E
	JR	NZ,T22LOOP
	DEC	D
	JR	NZ,T22LOOP	;NEXT ADDRESS
T22NEXT	LD	A,0		;TEST COMPLETE
	RET
T22ERROR LD	A,0AH		;ERROR EXIT
	RET
 
;--------------------------------------------------------------------------
T3RAM	PUSH	DE
	PUSH	HL
	AND	A
	SBC	HL,DE		;BYTECOUNT = START ADDRESS - END ADDRESS
	EX	DE,HL		;FOR ADDRESS = START TO END
	INC	E
	INC	D
	DEC	HL
T31LOOP	INC	HL
	LD	(HL),A		;WRITE TEST PATTERN
	CP	(HL)
	JR	NZ,T31ERROR	;JUMP IF WRITE/READ ERROR
	DEC	E
	JR	NZ,T31LOOP
	DEC	D
	JR	NZ,T31LOOP	;NEXT ADDRESS
T31NEXT	POP	HL		;RESTORE ENTRY DATA
	POP	DE
	PUSH	DE
	PUSH	HL		;SAVE ENTRY DATA
	AND	A
	SBC	HL,DE		;BYTE COUNT = START ADDRESS - END ADDRESS
	EX	DE,HL		;FOR ADDRESS = START TO END
	INC	E
	INC	D
	DEC	HL
T32LOOP	INC	HL
	CP	(HL)
	JR	NZ,T33ERROR	;JUMP IF REFLECTION ERROR
	CPL			;COMPLEMENT TEST PATTERN
	LD	(HL),A		;WRITE TEST PATTERN
	CP	(HL)
	CPL			;COMPLEMENT TEST PATTERN
	JR	NZ,T31ERROR	;JUMP WRITE/READ ERROR
	DEC	E
	JR	NZ,T32LOOP
	DEC	D
	JR	NZ,T32LOOP	;NEXT ADDRESS
	POP	HL
	POP	DE
	PUSH	HL		;SAVE END ADDRESS
	AND	A
	SBC	HL,DE
	EX	DE,HL
	POP	HL		;RESTORE END ADDRESS
	INC	E
	INC	D
	INC	HL
T33LOOP	DEC	HL		;FOR ADDRESS = END TO START STEP -1
	CPL
	CP	(HL)
	CPL
	JR	NZ,T34ERROR	;JUMP IF REFLECTION ERROR
	LD	(HL),A
	CP	(HL)
	JR	NZ,T32ERROR	;JUMP IF WRITE/READ ERROR
	DEC	E
	JR	NZ,T33LOOP
	DEC	D
	JR	NZ,T33LOOP	;NEXT ADDRESS
T32NEXT	LD	A,0		;TEST COMPLETE
	RET
T31ERROR POP	DE		;ADJUST STACK POINTER
	POP	DE
T32ERROR LD	A,08H		;ERROR EXIT IF WRITE/READ ERROR
	RET
T33ERROR POP	DE
	POP	DE
T34ERROR LD	A,09H		;ERROR EXIT IF REFLECTION ERROR
	RET
 
;-----------------------------------------------------------------------------
;ECHO \f