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

⟦9707d9c7a⟧ TextFile

    Length: 13763 (0x35c3)
    Types: TextFile
    Names: »TEST.SRC«

Derivation

└─⟦8347abc8e⟧ Bits:30005501 8" CR80 Floppy CR80FD_0033 ( ATR Source and Abs-files )
└─⟦8347abc8e⟧ Intel_ISIS_II
    └─ ⟦this⟧ »TEST.SRC« 

TextFile

;******************************************************************************\r
;*                                                                            *\r
;* D O R A     A P P L I C A T I O N     S / W                                *\r
;*                                                                            *\r
;* DEVICE: ATR                                                                *\r
;*                                                                            *\r
;* MODULE: SUBROUTINE & DATA SEGMENT MODULE                                   *\r
;*                                                                            *\r
;******************************************************************************\r
\r
LINK	DEFL	0\r
SCANNR	DEFL	5\r
DCODNR	DEFL	6\r
SEARNR	DEFL	7\r
SYNCNR	DEFL	8\r
LOCKNR	DEFL	9\r
TIMGNR	DEFL	10\r
INSPNR	DEFL	11\r
STATNR	DEFL	12\r
READNR	DEFL	13\r
SEARTIM	DEFL	1\r
SYNCTIM	DEFL	2\r
LOCKTIM	DEFL	3\r
INSPTIM	DEFL	4\r
SCANTIM	DEFL	5\r
PORT1	DEFL	30H\r
PORT2	DEFL	32H\r
PORT3	DEFL	34H\r
PORT4	DEFL	31H\r
DAC	DEFL	20H\r
\r
	NLIST	S\r
PASSIVATE	MACRO	#ID,#NO\r
					;DESRIP: THE MODULE PASSIVATES\r
					;	SPECIFIED PROCES.\r
					;	IF LINK IS SET AND ACTIV\r
					;	SPECIAL PROCESS IS PASSIVATED\r
					;	THE LINK-ELEMENT IS \r
					;	DECREMENTED\r
					;DESTR:	REG F,H,L\r
	IF	'#ID'.EQ.'S'\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	IF	LINK.EQ.1\r
	BIT	7,(HL)			;\r
	JR	Z,O#$YM		;IF PROCESS WAS NOT PASSIVE THEN\r
	LD	HL,SYSRAM+0FBH	;BEGIN\r
	DEC	(HL)			;DEC LINK-ELEMENT\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;END\r
O#$YM:	ENDIF\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	ENDIF\r
	RES	7,(HL)			;PASSIVATE\r
	ENDM\r
ACTIVATE	MACRO	#ID,#NO\r
					;DESRIP: THE MODULE ACTIVATES\r
					;	SPECIFIED PROCES.\r
					;	IF LINK IS SET AND PASSIV\r
					;	SPECIAL PROCESS IS ACTIVATED\r
					;	THE LINK-ELEMENT IS \r
					;	INCREMENTED\r
					;DESTR:	REG F,H,L\r
	IF	'#ID'.EQ.'S'\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	IF	LINK.EQ.1\r
	BIT	7,(HL)			;\r
	JR	NZ,O#$YM		;IF PROCESS WAS NOT ACTIVE THEN\r
	LD	HL,SYSRAM+0FBH	;BEGIN\r
	INC	(HL)			;INC LINK-ELEMENT\r
	LD	HL,SYSRAM+200H+#NO*10H+5\r
					;END\r
O#$YM:	ENDIF\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
					;IMPLEMENT ADD OF STATUS-BIT\r
	ENDIF\r
	SET	7,(HL)			;ACTIVATE\r
	ENDM\r
CREATE	MACRO	#ID,#NO,#NAME,#PRIO\r
				;DESCRIP: THE MODULE CREATES SPECIFIED\r
				;	PROCESS IE LOADS STARTADDRESS\r
				;	(#NAME) IN PROCESS-DESCRIPTION\r
				;	BYTE 6,7. IF NORMAL PROCESS IS\r
				;	ENCOUNTERED PRIORITY IS LOADED\r
				;	TO BYTE 5 IN PROCESS-DESCRIPTION\r
				;	AND THE PROCESS IS ENQUEUED IN\r
				;	APPROPRIATE PRIO-QUEUE.\r
				;	FINALLY THE SPECIFIED PROCESS\r
				;	IS ACTIVATED\r
				;DESTR:	IF NORMAL PROCESS\r
				;	REG. A,F,B,C,D,E,H,L\r
				;	IF SPECIAL PROCESS\r
				;	REG. F,H,L\r
	LD	HL,#NAME	;\r
	IF	'#ID'.EQ.'S'\r
	LD	(SYSRAM+200H+#NO*10H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	(SYSRAM+200H+S*10H+#NO*20H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
	LD	(HL),#PRIO			;PRIORTY TO PROCESS\r
	LD	HL,SYSRAM+#PRIO*8		;ADDRESS OF PRIO-QUEUE\r
	LD	DE,SYSRAM+200H+S*10H+#NO*20H	;ADDRESS OF PROCESS-DESCRIP\r
	CALL	SUBENQ\r
	ENDIF\r
	ACTIVATE	#ID,#NO			;ACTIVATE PROCESS\r
	ENDM\r
RESTART MACRO	#ID,#NO,#NAME,#PRIO\r
				;DESCRIP: THE MODULE CREATES SPECIFIED\r
				;	PROCESS IE LOADS STARTADDRESS\r
				;	(#NAME) IN PROCESS-DESCRIPTION\r
				;	BYTE 6,7. IF NORMAL PROCESS IS\r
				;	ENCOUNTERED PRIORITY IS LOADED\r
				;	TO BYTE 5 IN PROCESS-DESCRIPTION\r
				;	AND THE PROCESS IS ENQUEUED IN\r
				;	APPROPRIATE PRIO-QUEUE.\r
				;	FINALLY THE SPECIFIED PROCESS\r
				;	IS ACTIVATED\r
				;DESTR:	IF NORMAL PROCESS\r
				;	REG. A,F,B,C,D,E,H,L\r
				;	IF SPECIAL PROCESS\r
				;	REG. F,H,L\r
	LD	HL,#NAME	;\r
	IF	'#ID'.EQ.'S'\r
	LD	(SYSRAM+200H+#NO*10H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	ENDIF\r
	IF	'#ID'.EQ.'N'\r
	LD	(SYSRAM+200H+S*10H+#NO*20H+6),HL\r
				;STARTADD TO PROCESS-DESCRIP\r
	LD	HL,SYSRAM+200H+S*10H+#NO*20H+5\r
	LD	(HL),#PRIO			;PRIORTY TO PROCESS\r
	LD	HL,SYSRAM+#PRIO*8		;ADDRESS OF PRIO-QUEUE\r
	LD	DE,SYSRAM+200H+S*10H+#NO*20H	;ADDRESS OF PROCESS-DESCRIP\r
	CALL	SUBENQ\r
	ENDIF\r
	ACTIVATE	#ID,#NO			;ACTIVATE PROCESS\r
	ENDM\r
\r
\r
LESTAB	MACRO	#PRNUM\r
	LD	BC,#PRNUM\r
	CALL	ESTABR\r
	ENDM\r
\r
LSUSPN	MACRO	#PRNUM\r
	LD	BC,#PRNUM\r
	CALL	SUSPND\r
	ENDM\r
\r
GESTAM	MACRO\r
	LD	HL,ONOFF\r
	LD	(HL),0FFH\r
	ENDM\r
\r
GSUSPM	MACRO\r
	LD	HL,ONOFF\r
	LD	(HL),0\r
        ENDM\r
\r
UPDATM	MACRO	#PRNUM,#NO\r
	LD	HL,DELAY+#PRNUM\r
	LD	(HL),#NO\r
	ENDM\r
\r
\r
	LIST	S\r
	PUBLIC	CLEARY,IOREAD,IOVALU\r
	PUBLIC	FLAG1,FLAG2,MESCOD,OLDSTAT\r
	PUBLIC	CODSAV,COMBYT,COUNT1,COUNT2,COUNT3,TCCSTA,CCBSTA,TESTBT\r
	PUBLIC	DIFREG,BFSAVE,TTCREG,TTC0,TTCF0,TTCF1,TTCR0,TTCR1,MTC00\r
	PUBLIC	TTCCOD,NTTCCO,TTCSAV,MTCREG,PLAYREG,ADDRTC,OLDSTAT\r
	PUBLIC	MTCCOD,NMTCCO,STOPREG,LOCREG,UTCCOD,COUNT4,COUNT5\r
	PUBLIC	NUTCCO,TMPCOD,TTCF2,TTCR2,REGUTC\r
	PUBLIC	TTCDIF,MTCDIF,OUTPUT,CPOINTS,TCCOMP,TCSUB,TCADD\r
	PUBLIC	REG1,REG2,REG3,REG4,REG5,REG6,REG7,PQH6,PQH12\r
	PUBLIC	DACRAM,FLAG3\r
	EXTRN	ESTABR,SUSPND,SYSRAM\r
	EXTRN	CONS03,CONS04,CONS05,CONS06,CONS07,CONS08\r
\r
	CSEG\r
CLEARY:	PASSIVATE S,SEARNR\r
	PASSIVATE S,SYNCNR\r
	PASSIVATE S,LOCKNR\r
	LSUSPN	SEARTIM\r
	LSUSPN	SYNCTIM\r
	LSUSPN	LOCKTIM\r
	LD	HL,FLAG1\r
	RES	2,(HL)		;CLEAR SYNC FLAG\r
	RES	5,(HL)		;CLEAR LOCK-FLAG\r
	LD	A,00H\r
	LD	(DACRAM),A\r
	LD	(DACRAM+1),A\r
	OUT	(DAC),A\r
	OUT	(DAC+1),A	;ADJUST SPEED OF THE ATR TO NORMAL SPEED\r
	RET\r
\r
CPOINTS	LD	IX,TTCREG\r
	LD	IY,CONS03\r
	LD	BC,TTC0\r
	CALL	TCSUB		;TTC0 = (TTCREG) - CONS03\r
	JR	NC,C1		;IF TTC0 IS NEGATIVE THEN\r
	LD	HL,TTCREG	;BEGIN\r
	LD	DE,TTC0		;\r
	LD	BC,4		;  SET TTC = (TTCREG)\r
	LDIR			;END\r
C1:	LD	IY,CONS04\r
	LD	BC,TTCF0\r
	CALL	TCSUB		;TTCF0 = (TTCREG) - CONS04\r
	JR	NC,C2		;IF TTCF0 IS NEGATIVE THEN\r
	LD	HL,TTC0		;BEGIN\r
	LD	DE,TTCF0	;\r
	LD	BC,4		;  SET TTCF0 = TTC0\r
	LDIR			;END\r
C2:	LD	IY,CONS05\r
	LD	BC,TTCF1\r
	CALL	TCSUB		;TTCF1 = (TTCREG) - CONS05\r
	JR	NC,C3		;IF TTCF1 IS NEGATIVE THEN\r
	LD	HL,TTCF0	;BEGIN\r
	LD	DE,TTCF1	;\r
	LD	BC,4		;  SET TTCF1 = TTCF0\r
	LDIR			;END\r
C3:	LD	IY,CONS06\r
	LD	BC,TTCF2\r
	CALL	TCSUB		;TTCF2 = (TTCREG) - CONS06\r
	JR	NC,C4		;IF TTCF2 IS NEGATIVE THEN\r
	LD	HL,TTCF1	;BEGIN\r
	LD	DE,TTCF2	;\r
	LD	BC,4		;  SET TTCF2 = TTCF1\r
	LDIR			;END\r
C4:	LD	IY,CONS07\r
	LD	BC,TTCR0\r
	CALL	TCADD		;TTCR0 = (TTCREG) + CONS07\r
	JR	NC,C5		;IF TTCR0 > 24 H THEN\r
	LD	HL,TTCREG	;BEGIN\r
	LD	DE,TTCR0	;\r
	LD	BC,4		;  SET TTCR0 = (TTCREG)\r
	LDIR			;END\r
C5:	LD	IY,CONS08\r
	LD	BC,TTCR1\r
	CALL	TCADD		;TTCR1 = (TTCREG) + CONS08\r
	JR	NC,C6		;IF TTCR1 > 24 H THEN\r
	LD	HL,TTCR0	;BEGIN\r
	LD	DE,TTCR1	;\r
	LD	BC,4		;  SET TTCR1 = TTCR0\r
	LDIR			;END\r
C6:	LD	IY,CONS06\r
	LD	BC,TTCR2\r
	CALL	TCADD		;TTCR2 = (TTCREG) + CONS06\r
	RET	NC		;IF TTCR2 > 24 H THEN\r
	LD	HL,TTCR1	;BEGIN\r
	LD	DE,TTCR2	;\r
	LD	BC,4		;  SET TTCR2 = TTCR1\r
	LDIR			;END\r
	RET\r
\r
\r
OUTPUT:	LD	(CODSAV),A\r
	OUT	(PORT1),A\r
	CP	0FEH\r
	JR	Z,O1\r
	CP	0FCH\r
	JR	Z,O2\r
	CP	0FBH\r
	JR	NZ,O0\r
	LD	HL,FLAG1\r
	RES	3,(HL)		;RESET STATUS READY-FLAG\r
	JR	O2\r
O0:	CP	0F7H\r
	JR	NZ,O4\r
	LD	HL,FLAG1\r
	RES	3,(HL)		;RESET STATUS READY-FLAG\r
	JR	O3\r
\r
O1:	LD	A,(TCCSTA)\r
	AND 	9FH\r
	CP	03H\r
	JR	NZ,O2		;IF RECORD --> PLAY TRANSITION THEN\r
	LD	A,10H\r
	OUT	(PORT4),A	;ACTIVATE FADER CONTACT\r
	JR	O4\r
\r
O2:	LD	A,13H		;IF PLAY/RECORD/FORWIND MODE THEN\r
	OUT	(PORT4),A	;SWITCH TO FORWARD TTC READING\r
	JR	O4\r
\r
O3:	LD	A,1BH		;IF REWIND MODE THEN\r
	OUT	(PORT4),A	;SWITCH TO BACKWARDS TTC READING\r
\r
O4:	LESTAB	INSPTIM\r
	PASSIVATE S,INSPNR\r
	RET\r
\r
\r
IOREAD:	LD	HL,IOADDR\r
	ADD	HL,BC\r
	LD	D,B\r
	LD	E,C\r
	LD	C,(HL)		;(C) = PORTNUMBER\r
	IN	A,(C)		;(A) = X(N)\r
\r
	LD	HL,IOVALU\r
	SLA	E\r
	ADD	HL,DE\r
	LD	C,(HL)		;(C) = X(N-1)\r
	LD	(HL),A		;X(N-1) = X(N)\r
	INC	HL\r
	CP	C\r
	JR	NZ,I1		;IF X(N) = X(N-1) THEN\r
				;BEGIN\r
	LD	A,(HL)		;\r
	CP	C		;\r
	RET	Z		;  IF X(STAT) IS UNCHANGED THEN RETURN\r
	LD	B,A		;  ELSE\r
	LD	(HL),C		;  X(STAT) = X(N)\r
	LD	A,E		;\r
	AND	A		;\r
	RET	NZ		;  IF PORT3 THEN RETURN\r
	LD	A,B		;  ELSE\r
	CPL			;\r
	AND	9FH		;\r
	LD	(OLDSTAT),A	;  SAVE OLD X(STAT) VALUE\r
	RET			;END\r
				;ELSE\r
I1:				;BEGIN\r
	LD	C,(HL)		;  (C) = X(STAT)\r
	RET			;END\r
\r
IOADDR	DB	PORT2		;PORT2 ADDRESS\r
	DB	PORT3		;PORT3 ADDRESS\r
\r
\r
**********************************************************************\r
;*                                                                   *\r
;*              TIMECODE  COMPARE  ROUTINE                           *\r
;*		   (VERSION 791019/CGR)				     *\r
;*                                                                   *\r
;*********************************************************************\r
;\r
;	D E S C R I P T I O N\r
;	---------------------\r
;\r
;	THIS ROUTINE COMPARES TWO TIMECODES WITHIN THE SAME DAY\r
;	(DORA FORMAT) TC1 - TC2.\r
;	ENTRY: ADDRESS OF TC1 IN IX REGISTER.\r
;	       ADDRESS OF TC2 IN IY REGISTER.\r
;	EXIT: THE FLAG ARE SET SIMILAR TO THE Z80 CP s INSTRUCTION.\r
;	DESTROY: REGISTERS A,F.\r
;\r
;\r
;\r
TCCOMP:	LD	A,(IX+0)\r
	CP	(IY+0)		;COMPARE HOURS\r
	RET	NZ\r
	LD	A,(IX+1)\r
	CP	(IY+1)		;COMPARE MINUTES\r
	RET	NZ\r
	LD	A,(IX+2)\r
	CP	(IY+2)		;COMPARE SECONDS\r
	RET	NZ\r
	LD	A,(IX+3)\r
	CP	(IY+3)		;COMPARE FRAMES\r
	RET\r
;\r
;\r
;**************END OF TIMECODE COMPARE ROUTINE**************************\r
;#8\r
;**********************************************************************\r
;*                                                                    *\r
;*              TIMECODE SUBTRACTION ROUTINE                          *\r
;*		    (VERSION 791019/CGR)			      *\r
;**********************************************************************\r
;\r
;	D E S C R I P T I O N\r
;	---------------------\r
;\r
;	THIS ROUTINE SUBTRACTS TWO TIMECODES (DORA FORMAT) TC1 - TC2 = TC3.\r
;	ENTRY: ADDRESS OF TC1 IN IX REGISTER\r
;	       ADDRESS OF TC2 IN IY REGISTER\r
;	       ADDRESS OF TC3 IN BC REGISTER\r
;	EXIT:  RESULT IN RAM MEMORY POINTED TO BY BC REGISTER.\r
;	       CY=0 IF MIDNIGHT HAS NOT BEEN PASSED\r
;	       CY=1 IF MIDNIGHT HAS BEEN PASSED.\r
;	DESTROY: REGISTERS A,F.\r
;\r
;\r
;\r
TCSUB:	INC	BC\r
	INC	BC\r
	INC	BC\r
	LD	A,(IX+3)\r
	SUB	(IY+3)		;SUBTRACT FRAMES\r
	DAA\r
				;TEST IF THERE IS A BORROW (BASE 100)\r
	JP	NC,LOAD1  	;IF YES THEN\r
				;   BEGIN\r
	SUB	75H		;	ADJUST TO BASE 25\r
	DAA\r
	SCF			;   END\r
LOAD1:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+2)\r
	SBC	A,(IY+2)	;SUBTRACT SECONDS\r
	DAA\r
				;TEST IF THERE IS A BORROW (BASE 100)\r
	JP	NC,LOAD2  	;IF YES THEN\r
				;   BEGIN\r
	SUB	40H		;	ADJUST TO BASE 60\r
	DAA\r
	SCF			;   END\r
LOAD2:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+1)\r
	SBC	A,(IY+1)  	;SUBTRACT MINUTES\r
	DAA\r
				;TEST IF THERE IS A BORROW (BASE 100)\r
	JP	NC,LOAD3   	;IF YES THEN\r
				;   BEGIN\r
	SUB	40H		;	ADJUST TO BASE 60\r
	DAA\r
	SCF			;   END\r
LOAD3:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+0)\r
	SBC	A,(IY+0)   	;SUBTRACT HOURS\r
	DAA\r
				;TEST IF THERE IS A BORROW (BASE 100)\r
	JP	NC,LOAD4   	;IF YES THEN\r
				;   BEGIN\r
	SUB	76H		;	ADJUST TO BASE 24\r
	DAA\r
	SCF			;   END\r
LOAD4:	LD	(BC),A\r
	RET\r
;*************END OF TIMECODE SUBTRACTION ROUTINE*********************\r
;#9\r
;**********************************************************************\r
;*								      *\r
;*			TIMECODE ADDITION ROUTINE		      *\r
;*			   (VERSION 791019/CGR)			      *\r
;*								      *\r
;**********************************************************************\r
;\r
;D E S C R I P T I O N\r
;---------------------\r
;\r
;THIS ROUTINE ADDS TWO TIMECODES (DORA FORMAT) TC1 + TC2 = TC3.\r
;ENTRY:	ADDRESS OF TC1 IN IX REGISTER.\r
;	ADDRESS OF TC2 IN IY REGISTER.\r
;	ADDRESS OF TC3 IN BC REGISTER.\r
;	THE ADDRESSES MAY EQUAL EACH OTHER.\r
;EXIT:	RESULT IN RAM MEMORY POINTED TO BY BC REGISTER.\r
;	CY=0 IF MIDNIGHT HAS NOT BEEN PASSED.\r
;	CY=1 IF MIDNIGHT HAS BEEN PASSED.\r
;DESTROY: REGISTERS A,F.\r
;\r
;\r
;\r
;\r
TCADD:	INC	BC\r
	INC	BC\r
	INC	BC\r
	LD	A,(IX+3)\r
	ADD	A,(IY+3)  	;ADD FRAMES\r
	DAA\r
	CP	25H		;TEST IF THERE IS A BASE 25 CARRY.\r
	CCF\r
	JP	M,L1		;IF YES THEN\r
				;   BEGIN\r
	SUB	25H		;	ADJUST TO BASE 25\r
	DAA\r
	SCF			;   END\r
L1:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+2)\r
	ADC	A,(IY+2)	;ADD SECONDS\r
	DAA\r
				;TEST IF THERE IS A CARRY (BASE 100)\r
	JP	NC,M1		;IF YES THEN\r
				;   BEGIN\r
	ADD	A,40H		;	ADJUST TO BASE 60 (CASE RESULT > 99H)\r
	DAA\r
	SCF			;   END\r
	JP	L2\r
				;ELSE\r
				;   BEGIN\r
M1:	CP	60H		;   TEST IF THERE IS A BASE 60 CARRY.\r
	CCF\r
	JP	M,L2		;   IF YES THEN\r
				;	BEGIN\r
	SUB	60H		;	   ADJUST TO BASE 60 (CASE RESULT < 100H)\r
	DAA\r
	SCF			;	END\r
				;   END\r
L2:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+1)\r
	ADC	A,(IY+1)	;ADD MINUTES\r
	DAA\r
				;TEST IF THERE IS A CARRY (BASE 100)\r
	JP	NC,M2		;IF YES THEN\r
				;   BEGIN\r
	ADD	A,40H		;	ADJUST TO BASE 60 (CASE RESULT > 99H)\r
	DAA\r
	SCF			;   END\r
	JP	L3\r
				;ELSE\r
				;   BEGIN\r
M2:	CP	60H		;   TEST IF THERE IS A BASE 60 CARRY.\r
	CCF\r
	JP	M,L3		;   IF YES THEN\r
				;	BEGIN\r
	SUB	60H		;	   ADJUST TO BASE 60 (CASE RESULT < 100H)\r
	DAA\r
	SCF			;	END\r
				;   END\r
L3:	LD	(BC),A\r
	DEC	BC\r
	LD	A,(IX+0)\r
	ADC	A,(IY+0)	;ADD HOURS\r
	DAA\r
	CP	24H		;TEST IF THERE IS A BASE 24 CARRY\r
	CCF\r
	JP	M,L4		;IF YES THEN\r
				;   BEGIN\r
	SUB	24H		;	ADJUST TO BASE 24\r
	DAA\r
	SCF			;   END\r
L4:	LD	(BC),A\r
	RET\r
;\r
;\r
;\r
;***********END OF TIMECODE ADDITION ROUTINE****************************\r
\r
\r
	DSEG\r
\r
FLAG1	DS	1\r
FLAG2	DS	1\r
FLAG3	DS	1\r
COUNT1	DS	1\r
COUNT2	DS	1\r
COUNT3	DS	1\r
OLDSTAT	DS	1\r
MESCOD	DS	1\r
CODSAV	DS	1\r
COMBYT	DS	1\r
COUNT	DS	1\r
TCCSTA	DS	1\r
CCBSTA	DS	1\r
TESTBT	DS	1\r
BFSAVE	DS	2\r
ADDRTC	DS	2\r
TTCREG	DS	4\r
TTC0	DS	4\r
TTCF0	DS	4\r
TTCF1	DS	4\r
TTCR0	DS	4\r
TTCR1	DS	4\r
TTCCOD	DS	4\r
NTTCCO	DS	4\r
TTCSAV	DS	4\r
MTCREG	DS	4\r
MTC00	DS	4\r
MTCCOD	DS	4\r
NMTCCO	DS	4\r
TTCF2  	DS	4\r
LOCREG	DS	4\r
UTCCOD	DS	4\r
NUTCCO	DS	4\r
TTCR2  	DS	4\r
TMPCOD	DS	4\r
PLAYREG	DS	4\r
STOPREG	DS	4\r
DIFREG	DS	4\r
TTCDIF	DS	4\r
MTCDIF	DS	4\r
REGUTC	DS	4\r
REG1	DS	4\r
REG2	DS	4\r
REG3	DS	4\r
REG4	DS	4\r
REG5	DS	4\r
REG6	DS	4\r
REG7	DS	4\r
COUNT4	DS	1\r
COUNT5	DS	1\r
DACRAM	DS	2\r
IOVALU	DS	2\r
	DS	2\r
PQH6	DS	10H\r
PQH12	DS	10H\r
\r
	END\r