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

⟦28e661eed⟧ TextFile

    Length: 12437 (0x3095)
    Types: TextFile
    Names: »CR80LTU.S«

Derivation

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

TextFile

*P 42
*INCLUDE CONSTANT.S
	;******************************************************
	;          TC500 DIAL UP 4 CHANNEL
	;******************************************************
;

	GLOBAL		CHA1STA,COM1REC

	EXTERNAL	SRELEASE,CHA1TAB
;//////////////////////////////////////////////////////////////////////////////

CHA1STA	LD	IY,CHA1TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMINI		;INITIALIZE COMMUNICATION INTERFACE TO CR80
	CALL	SRELEASE	;SCHEDULE
	LD	IY,CHA1TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMTRA		;TRANSFER INFORMATION FROM LTU TO CR80
	JP	CHA1STA	;
;//////////////////////////////////////////////////////////////////////////////
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

COM1REC	LD	IY,CHA1TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMREC		;TRANSFER INFORMATION FROM CR80 TO LTU
	CALL	SRELEASE	;SCHEDULE
	JP	COM1REC
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
*E

	GLOBAL		CHA2STA,COM2REC

	EXTERNAL	CHA2TAB
;//////////////////////////////////////////////////////////////////////////////

CHA2STA	LD	IY,CHA2TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMINI		;INITIALIZE COMMUNICATION INTERFACE TO CR80
	CALL	SRELEASE	;SCHEDULE
	LD	IY,CHA2TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMTRA		;TRANSFER INFORMATION FROM CR80 TO LTU
	JP	CHA2STA	;
;//////////////////////////////////////////////////////////////////////////////
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

COM2REC	LD	IY,CHA2TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMREC		;TRANSFER INFORMATION FROM LTU TO CR80
	CALL	SRELEASE	;SCHEDULE
	JP	COM2REC		;
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
*E


	GLOBAL		CHA3STA,COM3REC

	EXTERNAL	CHA3TAB
;//////////////////////////////////////////////////////////////////////////////

CHA3STA	LD	IY,CHA3TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMINI		;INITIALIZE COMMUNICATION INTERFACE TO CR80
	CALL	SRELEASE	;SCHEDULE
	LD	IY,CHA3TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMTRA		;TRANSFER INFORMATION FROM LTU TO CR80
	JP	CHA3STA	;		
;//////////////////////////////////////////////////////////////////////////////
COM3REC	LD	IY,CHA3TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMREC		;TRANSFER INFORMATION FROM CR80 TO LTU
	CALL	SRELEASE	;SCHEDULE
	JP	COM3REC
*E

	GLOBAL		CHA4STA,COM4REC

	EXTERNAL	CHA4TAB
;//////////////////////////////////////////////////////////////////////////////

CHA4STA	LD	IY,CHA4TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMINI		;INITIALIZE COMMUNICATION INTERFACE TO CR80
	CALL	SRELEASE	;SCHEDULE
	LD	IY,CHA4TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMTRA		;TRANSFER INFORMATION FROM CR80 TO LTU
	JP	CHA4STA	;
;//////////////////////////////////////////////////////////////////////////////
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

COM4REC	LD	IY,CHA4TAB	;GET CHANNEL TABLE ADDRESS
	CALL	COMREC		;TRANSFER INFORMATION FROM LTU TO CR80
	CALL	SRELEASE	;SCHEDULE
	JP	COM4REC		;
 
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\«so»*E
;ECHO \f


*P 42

*L ON

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;			CHANNEL TABLE DESCRIPTION
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


;CHANNEL TABLE:
;
;			**********************
;			* CHANNEL	     *  00H
;			*          STATUS    *  01H
;			**********************
;			* COMMUNICATION AREA *  02H
;			* START ADDRESS      *  03H
;			**********************
;			* TRANSMIT BUFFER    *	04H
;			* ELEMENT ADDRESS    *  05H
;			**********************
;			* RECEIVE BUFFER     *  06H
;			* ELEMENT ADDRESS    *  07H
;			**********************
;			* EMPTY BUFFER QUEUE *  08H
;			* HEAD ADDRESS	     *  09H
;			**********************
;			* SEMAPHORE (RECEIVE)*  0AH
;			* VALUE (QHEAD*08H)  *  0BH
;			**********************
;			* SEMAPHORE (TRANS)  *  0CH
;			* VALUE (QHEAD*08H)  *  0DH
;			**********************
;			* BUSY FLAG (REC)    *  0EH
;			* SELECTED 8253 CODE *  0FH
;			**********************
;			* SELECTED 8253	     *  10H
;			* COUNTER CODE       *  11H
;			**********************
*E
*L ON
;ECHO \f


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;COMINI: GENERAL INITIAL PROCESS FOR CR80-LTU COMMUNICATION.
;
;ENTRY POINT: ADDRESS OF CHANNEL TABLE MUST BE SITUATED IN REGISTER IY.
;
;EXIT POINT:  NONE
;
;REGISTERS:   ALL DESTROYED
;
;FILE NAME:   COMINI.SRC
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*E

	GLOBAL	COMINI


COMINI	LD	A,(IY+00H)	;GET CHANNEL STATUS			19
	CP	02H		;IF CHANNEL STATUS = NOT IN USE		07
	RET	NZ		;THEN RETURN				05 /11
	LD	L,(IY+02H)	;GET POINTER TO COMMUNICATION 		19
	LD	H,(IY+03H)	;AREA					19
	PUSH	HL		;					11
	POP	IX		;					14
TEST1	BIT	7,(IX+0CH)	;DO WHILE ESTABLISHING BIT < > 01H	20
	JR	NZ,CONT1	;					10
	PUSH	IX		;					15
	PUSH	IY		;					15
	CALL	SRELEASE	;   SCHEDULE				  
	POP	IY		;					14
	POP	IX		;					14
	JR	TEST1		;END					10
CONT1	LD	(IX+0CH),066H	;RESET ESTABLISHING BIT			19
	PUSH	IX		;SET DIRECTION TOOGLE			15
	PUSH	IY		;SET RESET CHANNEL COMMAND		15
	CALL	SRELEASE	;SCHEDULE				  
	POP	IY		;					14
	POP	IX		;					14
TEST2	BIT	6,(IX+0CH)	;DO WHILE DIRECTION TOOGLE < > 00	20
	JR	Z,CONT2		;					10
	PUSH	IX		;					15
	PUSH	IY		;					15
	CALL	SRELEASE	;   SCHEDULE				  
	POP	IY		;					14
	POP	IX		;					14
	JR	TEST2		;END					10
CONT2	LD	A,(IX+0CH)	;IF 'MODE OF OPERATION HAS BEEN 	19
	AND	01H		;    DECLARE' BIT = 1			07
	JR	Z,ERR1		;THEN DO				10
CONT3	SET	5,(IX+0CH)	;	SET INITIALIZE PROCESS OK	19
	SET	6,(IX+0CH)	;	MESSAGE TO CR80			19
	LD	HL,0A000H	;	SET TX- AND RX-STATUS WORD	10
	LD	(IX+00H),L	;	VALID				19
	LD	(IX+01H),H	;					19
	LD	L,080H		;					07
	LD	(IX+02H),L	;					19
	LD	(IX+03H),H	;					19
	LD	(IY+00H),01H	;	SET TRANSMISSION AND		19
	LD	(IY+01H),00H	;	RECEIVING PERMITTED		19
	RET			;					14
				;     END
*E


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;ERROR PROCESS


ERR1	LD	(IX+0CH),045H	;RESET ESTABLISHING BIT			19
				;SET DIRECTION TOOGLE			  
				;SET ERROR COMMAND			  
	JP	COMINI		;					10

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*E
*L ON
;ECHO \f


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;COMTRA: GENERAL COMMUNICATION PROCESS FOR TRANSFERING DATA FROM CR80 TO LTU.
;
;ENTRY POINT: ADDRESS OF CHANNEL TABLE MUST BE SITUATED IN REGISTER IY.
;
;EXIT POINT:  NONE.
;
;REGISTERS:   ALL DESTROYED.
;
;FILE NAME;   COMINI.SRC
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*E


	EXTERNAL	SUBDEQ,SUBSEND,SYSRAM

	GLOBAL		COMTRA

COMTRA	LD	A,(IY+00H)	;GET CHANNEL STATUS			19
	CP	01H		;IF CHANNEL STATUS = NOT IN USE		07
	RET	NZ		;THEN RETURN				05 /11
	LD	L,(IY+02H)	;GET POINTER TO COMMUNICATION		19
	LD	H,(IY+03H)	;AREA					19
	PUSH	HL		;					11
	POP	IX		;					14
	LD	A,(IX+01H)	;GET MSB OF TX STATUS WORD		19
	AND	080H		;IF LTU READING ALLOWED			07
	RET	Z		;THEN DO				10
	LD	E,(IY+04H)	;	IF BUFFER TO READ		19
	LD	D,(IY+05H)	;					19
	LD	A,E		;					04
	OR	D		;					04
	JR	Z,NOMOVE	;	THEN DO				10
	LD	HL,BCOFF	;		GET BYTE COUNT OFFSET
	ADD	HL,DE		;		COUNT ADDRESS		11
	LD	C,(IX+04H)	;		GET TRANSMITTER BYTE 	19
	LD	B,(IX+05H)	;		COUNT			19
	LD	(HL),C		;		TRANSFER BYTE COUNT TO	07
	INC	HL		;		BUFFER ELEMENT		06
	LD	(HL),B		;					07
	LD	C,(IX+00H)	;		GET TX-STATUS WORD	19
	LD	A,(IX+01H)	;					19
	AND	050H		;		MASK INVALID BIT AND	07
	LD	HL,STWOFF	;		GET STATUS WORD OFFSET
	ADD	HL,DE		;					11
	LD	(HL),C		;		TRANSFER STATUS WORD	07
	INC	HL		;		TO BUFFER ELEMENT	06
	LD	(HL),A		;					07
	LD	C,(IY+0CH)	;		CALCULATE SEMAPHORE	19
	LD	B,(IY+0DH)	;		BUFFER ADDRESS		19
	LD	HL,SYSRAM+180H	;					10
	ADD	HL,BC		;					11
	DI			;					04
	CALL	SUBSEND		;		TRANSMIT BUFFER		  
	EI			;					04
	LD	(IY+04H),00H	;		SET: NO BUFFER TO	19
	LD	(IY+05H),00H	;		     READ		19
NOMOVE
	LD	L,(IY+08H)	;		GET ADDRESS POINTER	19
	LD	H,(IY+09H)	;		TO EMPTY BUFFER QUEUE	19
	INC	HL		;					06
	LD	A,(HL)		;		IF MORE THAN 2 BUFFERS	07
	CP	03H		;					07
	RET	M		;		THEN DO			10
	DEC	HL		;					06
	DI			;			GET EMPTY BUF-	04
	CALL	SUBDEQ		;			FER	       130 / 83
	EI			;					04
	LD	(IY+04H),E	;			SAVE BUFFER 	19
	LD	(IY+05H),D	;			ELEMENT ADDRESS	19
	LD	HL,MAXSIZE	;			GET MAX BYTE
	LD	(IX+04H),L	;			LOAD TX-BYTE	19
	LD	(IX+05H),H	;			WORD WITH MAX	19
				;			BYTE COUNT	  
	LD	HL,BUFFHEAD+TRAOFF ;			TRANSFER CALCULATED
	ADD	HL,DE		;			START ADDRESS TO
	LD	(IX+06H),L	;			TX-START ADDRESS WORD
	LD	(IX+07H),H	;
	LD	C,L		;			TEMPORARY SAVING
	LD	B,H		;			OF START ADDRESS
	LD	HL,TSAOFF	;			LOAD BUFFER ELEMENT WITH
	ADD	HL,DE		;			START ADDRESS	11
	LD	(HL),C		;					07
	INC	HL		;					06
	LD	(HL),B		;					07
	LD	HL,STWOFF	;			RESET STATUS WORD
	ADD	HL,DE		;			IN BUFFER ELEMENT
	LD	(HL),00H	;					07
	INC	HL		;					06
	LD	(HL),00H	;					07
	LD	A,(IX+00H)	;			RESET TX-STATUS	19
	AND	080H		;			WORD		07
	LD	(IX+00H),A	;					19
	RES	7,(IX+01H)	;			SET CR80 WRIT-	19
				;			TING ALLOWED
	RET			;     END    END     END
;ECHO \f


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;COMREC: GENERAL COMMUNICATION PROCESS FOR TRANSFERING DATA FROM LTU TO CR80.
;
;ENTRY POINT: ADDRESS OF CHANNEL TABLE MUST BE SITUATED IN REGISTER IY.
;
;EXIT POINT:  NONE.
;
;REGISTERS:   ALL DESTROYED.
;
;FILE NAME;   COMINI.SRC
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*E

	EXTERNAL	RECI,MESADD,SUBENQ

	GLOBAL		COMREC

COMREC	LD	A,(IY+00H)	;GET CHANNEL STATUS			19
	CP	01H		;IF CHANNEL STATUS = NOT IN USE		07
	RET	NZ		;THEN RETURN				05 /11
	LD	L,(IY+02H)	;GET POINTER TO COMMUNICATION		19
	LD	H,(IY+03H)	;AREA					19
	PUSH	HL		;					11
	POP	IX		;					14
	LD	A,(IX+03H)	;GET MSB OF RX STATUS WORD		19
	AND	080H		;IF LTU WRITING ALLOWED			07
	RET	Z		;THEN DO				10
	LD	E,(IY+06H)	;	IF BUFFER TO READ		19
	LD	D,(IY+07H)	;					19
	LD	A,E		;					04
	OR	D		;					04
	JR	Z,NOBUF		;	THEN DO				10
	LD	HL,BCOFF	;		GET BYTE COUNT OFF SET
	ADD	HL,DE		;		COUNT ADDRESS		11
	LD	(HL),00H	;		RESET CONTENT OF 	07
	INC	HL		;		BYTE COUNT WORD		06
	LD	(HL),00H	;					07
	LD	HL,STWOFF	;		GET STATUS WORD OFF SET
	ADD	HL,DE		;		CALCULATE STATUS WORD	11
	LD	(HL),00H	;		ADDRESS			07
	INC	HL		;		RESET CONTENT OF 	06
	LD	(HL),00H	;		STATUS WORD		07
	LD	HL,TSAOFF	;		GET TRANSM.ADDRESS OFFSET
	ADD	HL,DE		;		CALCULATE TRANSMIT	11
	LD	(HL),00H	;		START ADDRESS		07
	INC	HL		;		RESET CONTENT OF	06
	LD	(HL),00H	;		TRANSMIT START ADDRESS	07
	LD	L,(IY+08H)	;		GET EMPTY BUFFER	19
	LD	H,(IY+09H)	;		QUEUE ADDRESS		19
	DI			;		TRANSFER BUFFER ELEMENT	04
	CALL	SUBENQ		;		TO EMPTY BUFFER QUEUE  157
	EI			;					04
	LD	(IY+06H),00H	;		SET: NO BUFFER TO 	19
	LD	(IY+07H),00H	;		     TRANSFER		19
	LD	A,(IX+02H)	;		RESET ERROR BYTE	19
	AND	080H		;		IN CHANNEL RX-STATUS	07
	LD	(IX+02H),A	;		WORD			19
				;	     END
NOBUF	LD	HL,SYSRAM+180H	;	GET ADDRESS OF SYSRAM END	10
	LD	C,(IY+0AH)	;	GET SEMAPHORE QUEUE HEAD	19
	LD	B,(IY+0BH)	;	ADDRESS OFF SET			19
	ADD	HL,BC		;	CALCULATE SEMAPHORE QUEUE HEAD	11
				;	ADDRESS
	LD	(SYSRAM+0E2H),HL;	SAVE SEMAPHORE QUEUE HEAD 	16
				;	ADDRESS				  
	PUSH	IX		;	TEMPORARY SAVING OF COMMUNI-	15
				;	CATION AREA POINTER		  
	PUSH	IY		;	TEMPORARY SAVING OF CHANNEL	15
				;	TABLE POINTER			  
	CALL	RECI		;	WAIT FOR MESSAGE RECEIVED 	  
				;	(SCHEDULE)
	POP	IY		;	RESTORE CHANNEL POINTER		14
	POP	IX		;	RESTORE COMMUNICATION AREA	14
				;	POINTER				  
	CALL	MESADD		;	GET RECEIVE MESSAGE ADDRESS	  
	LD	(IY+06H),E	;	SAVE MESSAGE ADDRESS (BUFFER)	19
	LD	(IY+07H),D	;					19
	LD	HL,STWOFF	;	GET STATUS WORD OFF SET
	ADD	HL,DE		;					11
	LD	C,(HL)		;	GET CONTENT OF BUFFER STATUS	07
	INC	HL		;	WORD				06
	LD	B,(HL)		;					07
	LD	A,(IX+02H)	;	TRANSFER STATUS VALUE 		19
	AND	080H		;	TO CHANNEL RX-STATUS		07
	OR	C		;	WORD				04
	LD	(IX+02H),A	;					19
	LD	A,(IX+03H)	;					19
	AND	0A0H		;					07
	OR	B		;					04
	LD	(IX+03H),A	;					19
	LD	HL,BCOFF	;	GET BYTE COUNT OFFSET
	ADD	HL,DE		;					11
	LD	C,(HL)		;	GET FINAL BYTE COUNT		07
	INC	HL		;	VALUE				06
	LD	B,(HL)		;					07
	LD	(IX+08H),C	;	TRANSFER FINAL BYTE COUNT	19
	LD	(IX+09H),B	;	TO RX-BYTE COUNT WORD		19
	LD	HL,TSAOFF	;	GET TRANSMIT ADDRESS OFF SET
	ADD	HL,DE		;					11
	LD	C,(HL)		;	GET TRANSFER START		07
	INC	HL		;	ADDRESS				06
	LD	B,(HL)		;					07
	LD	(IX+0AH),C	;	MOVE TRANSFER START ADDRESS	19
	LD	(IX+0BH),B	;	TO RX-START ADDRESS		19
	RES	7,(IX+03H)	;	SET CR80 READING ALLOWED	23
	RET			;     END				14
*E
;ECHO \f