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

⟦b6bffdd77⟧ TextFile

    Length: 2745 (0xab9)
    Types: TextFile
    Names: »SIOCALL.S«

Derivation

└─⟦a3edd706e⟧ Bits:30005202 8" Zilog MCZ/1 Floppy CR80FD_0028 ( TC 500 SEC. PROTOCOL BACK UP ! (V1) BB A1 820907 NCJ )
    └─ ⟦this⟧ »SIOCALL.S« 
└─⟦e12128f26⟧ Bits:30005200 8" Zilog MCZ/1 Floppy CR80FD_0026 ( TC 500 SEC. PROTOCOL BB V1 830407 NCJ )
    └─ ⟦this⟧ »SIOCALL.S« 

TextFile

;*****************************************************************************
;*
;*		    SIOCALL  MODULE
;*
;*****************************************************************************
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;THE SIOREADWRITE IS USED TO CONTROL THE READ/WRITE REGISTERS AT THE Z80-SIO.
;TO EACH SIO IS CONNECTED A TABLE CONTANING THE VALUE OF THE READ/WRITE REGIS-
;TERS.
;
;		   ***************
;		10 * READ-	 * SIOXCH+0AH
;		   * REGISTER 2  *
;		   ***************
;		 9 * READ-	 * SIOXCH+09H
;		   * REGISTER 1	 *
;		   ***************
;		 8 * READ-	 * SIOXCH+08H
;		   * REGISTER 0	 *
;		   ***************
;		 7 * WRITE-	 * SIOXCH+07H
;		   * REGISTER 7	 *
;		   ***************
;		 6 * WRITE-	 * SIOXCH+06H
;		   * REGISTER 6	 *
;		   ***************
;		 5 * WRITE-	 * SIOXCH+05H
;		   * REGISTER 5	 *
;		   ***************
;		 4 * WRITE-	 * SIOXCH+04H
;		   * REGISTER 4  *
;		   ***************
;		 3 * WRITE-	 * SIOXCH+03H
;		   * REGISTER 3  *
;		   ***************
;		 2 * WRITE-	 * SIOXCH+02H
;		   * REGISTER 2  *
;		   ***************
;		 1 * WRITE-	 * SIOXCH+01H
;		   * REGISTER 1	 *
;		   ***************
;		 0 * WRITE-	 * SIOXCH+00H
;		   * REGISTER 0	 *
;		   ***************
*E
;
;THE LETTER X IN SIOXCH SYMBOLIZE THE CHANNEL NUMBER.CHANNEL 2 ==> TABLE NAME = SIO2CH
;THE CONTENT OF WRITE REGISTER 0 WILL ALWAYS BE ZERO,BECAUSE OF THE APPLICATION
;OF WRITE REGISTER 0.SEE TECHNICAL MANUAL FOR THE Z80 SIO.
; PARAMETER IN REGISTER BC
;
;	REG B BIT 5   =   1=WRITE SELECTED   0=READ SELECTED
; 
;	REG B BIT 6   =   1=SET SPECIFIED VALUE   0= RESET VALUE
;
;       REG B BIT O-3 =   REGISTER NUMBER
;
;       REG B BIT 7   =   REGISTERNR IS ZERO --> IS 0
;
;       REG C BIT 0-7 =    VALUE TO BE SET OR RESET
;
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SIOREADWRITE
	GLOBAL	SIOREADWRITE
	LD 	L,(IY+24H)	; HL=SIOTABLE ADR
	LD	H,(IY+25H)
	LD	A,B
	AND	07H		; HL=REGISTER NR + HL
	LD	E,A
	LD	D,0H
	ADD	HL,DE
	BIT	7,B
	JR	NZ,REGNO_ZERO	; IF REGISTERNR=0 THEN
	BIT	5,B		;   IF READ THEN
	JR	NZ,REGZERO_WRITE
	LD	DE,08H
	ADD	HL,DE
	PUSH 	BC
	LD	C,(IY+1DH)
	IN	A,(C)
	POP	BC
	LD	(HL),A
	RET
REGZERO_WRITE
	LD	A,C		;   ELSE
				;   ENDIF
	PUSH	BC
	LD	C,(IY+1DH)
	OUT	(C),A
	POP	BC
	RET
REGNO_ZERO
	LD	A,B
	AND	07H
	PUSH	BC
	LD	C,(IY+1DH)
	OUT	(C),A
	POP	BC
	BIT	5,B		; IF WRITE THEN
	JR	Z,READ_1_3	;   BEGIN
	BIT	6,B
	JR	Z,RESET_VALUE	;    IF ACTION=SET THEN
	LD	A,(HL)
	OR	C
	JR	NEXT2
RESET_VALUE
	LD	A,C		;    ELSE
	CPL	
	LD	E,A
	LD	A,(HL)
	AND	E
NEXT2
	LD	(HL),A		;     ENDIF
	PUSH	BC
	LD	C,(IY+1DH)
	OUT	(C),A
	POP	BC
	RET
READ_1_3
	PUSH	BC
	LD	C,(IY+1DH)
	IN	A,(C)		;  ELSE
	POP BC
	LD	DE,08H		;  BEGIN
	ADD	HL,DE
	LD	(HL),A
				; END
	RET			; RETURN
	END
;ECHO \f