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

⟦e21f41728⟧ TextFile

    Length: 10674 (0x29b2)
    Types: TextFile
    Names: »INSPEC.SRC«

Derivation

└─⟦8347abc8e⟧ Bits:30005501 8" CR80 Floppy CR80FD_0033 ( ATR Source and Abs-files )
└─⟦8347abc8e⟧ Intel_ISIS_II
    └─ ⟦this⟧ »INSPEC.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: COMMAND INSPECTION PROCESS                                         *\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
	LIST	S\r
	PUBLIC	INSPEC,STAC11\r
	EXTRN	SCOMMON,TCCSTA,ECOND2,CODSAV,COUNT2,COUNT3,FLAG1\r
	EXTRN	OUTPUT,OLDSTAT,DELAY,ESTABR,COMBYT,SYSRAM,CLEARY\r
	EXTRN	CCBSTA,CVAL1,CVAL2,CVAL3\r
\r
	CSEG\r
INSPEC:	LD	SP,STAC11	;INITIALIZE STACKPOINTER\r
	CALL	SCOMMON\r
	EI\r
	UPDATM	INSPTIM,25\r
\r
PASPRO:	LESTAB	INSPTIM\r
        PASSIVATE S,INSPNR\r
	CALL	SCOMMON\r
	EI\r
	LD	A,(TCCSTA)\r
	AND	9FH\r
	CP	01H\r
	JP	Z,CASE1		;IF PLAY-INDICATION THEN CASE1\r
	CP	03H	\r
	JP	Z,CASE1		;IF RECORD-INDICATION THEN CASE1\r
	CP	04H\r
	JP	Z,CASE2		;IF FORWIND-INDICATION THEN CASE2\r
	CP	08H\r
	JP	Z,CASE2		;IF REWIND-INDICATION THEN CASE2\r
	CP	11H\r
	JP	Z,CASE3		;IF STOP+PLAY-INDICATION THEN CASE3\r
	CP	13H\r
	JP	Z,CASE3		;IF STOP+RECORD-INDICATION THEN CASE3\r
	CP	10H\r
	JP	Z,CASE4		;IF STOP-INDICATION THEN CASE4\r
	CP	80H\r
	JP	Z,CASE5		;IF EDIT-INDICATION THEN CASE5\r
\r
	LD	A,(CCBSTA)	;NO VALID MODE OF OPERATION\r
	BIT	1,A\r
	JR	Z,I1		;IF THE CONTROL VOLTAGE IS PRESENT THEN\r
	LD	HL,ECOND2	;BEGIN\r
	SET	1,(HL)		;  SET DEVICE CONTROL ERROR-BIT\r
	JP	PROEND		;END ELSE\r
I1:	LD	A,0EFH		;BEGIN\r
	CALL	OUTPUT		;  SET THE LTUX IN STOP MODE\r
	JP	PROEND		;END\r
\r
;--------------------------------------------------------------------------\r
CASE1:				;PLAY/RECORD-INDICATION\r
     	LD	B,A\r
	LD	A,(CODSAV)\r
	CPL\r
	AND	9FH\r
	CP	B		;IF THE INDICATION IS IN ACCORDANCE WITH\r
	JR	NZ,C12		;THE DESIRED MODE OF OPERATION\r
				;BEGIN\r
	IN	A,(PORT1)	;\r
	CP	0FFH		;\r
	JR	Z,C11		;  IF PORT1 IS NOT NEUTRALIZED YET THEN\r
				;  BEGIN\r
	IN	A,(PORT4)	;\r
	LD	B,A		;\r
	AND	03H		;\r
	AND	A		;\r
	JR	NZ,C01		;    IF FADER CONTACT IS ACTIVATED THEN\r
	LD	A,03H		;    DE-ACTIVATE IT\r
	OR	B		;\r
	OUT	(PORT4),A	;\r
	JP	PROEND		;    ELSE\r
C01:	LD	A,0FFH		;\r
	OUT	(PORT1),A	;    NEUTRALIZE PORT1\r
	LD	A,CVAL1.LOW.	;\r
	LD	(COUNT2),A	;    SET COUNT2 = CVAL1\r
	JP	PROEND		;  END ELSE\r
C11:	LD	HL,FLAG1	;  BEGIN\r
	BIT	3,(HL)		;\r
	JP	NZ,PROEND	;    IF STATUS READY-BIT = 0 THEN\r
	LD	HL,COUNT2	;    BEGIN\r
	DEC	(HL)		;      DECREMENT COUNT2\r
	JP	NZ,PROEND	;      IF COUNT2 = 0 THEN\r
	LD	HL,FLAG1	;\r
	SET	3,(HL)		;      SET STATUS READY-BIT\r
	JP	PROEND		;    END\r
				;  END\r
				;END ELSE\r
C12:				;BEGIN\r
	LD	HL,FLAG1	;\r
	RES	3,(HL)		;  RESET STATUS READY-BIT\r
	LD	A,B		;\r
	CPL			;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;  SET LTUX IN INDICATED MODE OF OPER.\r
	CALL	CLEARY		;\r
	JP	PROEND		;END\r
\r
;--------------------------------------------------------------------------\r
CASE2:				;FORWIND/REWIND-INDICATION\r
	LD	HL,FLAG1\r
	RES	3,(HL)		;RESET STATUS READY-BIT\r
	LD	B,A\r
	LD	A,(CODSAV)\r
	CPL\r
	AND	9FH\r
	CP	B\r
	JR	Z,C20\r
	AND	1FH\r
	CP	B		;IF THE INDICATION IS IN ACCORDANCE WITH\r
	JR	NZ,C21		;THE DESIRED MODE OF OPERATION THEN\r
C20:				;BEGIN\r
     	IN	A,(PORT1)	;\r
	CP	0FFH		;\r
	JP	Z,PROEND	;  IF PORT1 IS NEUTRALIZED OR\r
	CP	7FH		;  IF EDIT ON THEN SKIP\r
	JP	Z,PROEND	;\r
	CP	77H		;\r
	JP	Z,PROEND	;\r
	CP	7BH		;\r
	JP	Z,PROEND	;  ELSE\r
	LD	A,0FFH		;\r
	OUT	(PORT1),A	;  NEUTRALIZE PORT1\r
	JP	PROEND		;END ELSE\r
C21:				;BEGIN\r
	LD	A,B		;\r
	CPL			;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;  SET LTUX IN INDICATED MODE OF OPERATION\r
	CALL	CLEARY		;\r
	JP	PROEND		;END\r
\r
;----------------------------------------------------------------------\r
CASE3:				;STOP+PLAY/RECORD-INDICATION\r
	AND	8FH	\r
	LD	B,A\r
	LD	A,(CODSAV)\r
	CPL\r
	AND	9FH\r
	CP	B		;IF THE INDICATION IS IN ACCORDANCE WITH\r
	JR	NZ,C32		;THE DESIRED MODE OF OPERATION THEN\r
				;BEGIN\r
	IN	A,(PORT1)	;\r
	CP	0FFH		;\r
	JR	Z,C31		;  IF PORT1 IS NOT NEUTRALIZED YET THEN\r
	LD	A,0FFH		;  BEGIN\r
	OUT	(PORT1),A	;    NEUTRALIZE PORT1\r
	LD	A,CVAL1.LOW.	;\r
	LD	(COUNT2),A	;    SET COUNT2 = CVAL1\r
	LD	A,CVAL2.LOW.	;\r
	LD	(COUNT3),A	;    SET COUNT3 = CVAL2\r
	JP	PROEND		;  END ELSE\r
C31:	LD	HL,COUNT3	;  BEGIN\r
	DEC	(HL)		;    DECREMENT COUNT3\r
	JP	NZ,PROEND	;    IF COUNT3 = 0 THEN\r
				;    BEGIN\r
	INC	(HL)		;      INCREMENT COUNT3\r
	LD	HL,ECOND2	;\r
	SET	1,(HL)		;      SET DEVICE CONTROL ERROR-BIT\r
				;    END\r
				;  END\r
	JP	PROEND		;END ELSE\r
C32:				;BEGIN\r
	LD	A,B		;\r
	CPL			;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;  SET LTUX IN INDICATED MODE OF OPERATION\r
	CALL	CLEARY		;\r
	JP	PROEND		;END\r
\r
;------------------------------------------------------------------------------\r
CASE4:				;STOP-INDICATION\r
	LD	B,A\r
	LD	A,(CODSAV)\r
	CPL\r
	AND	9FH\r
	CP	B		;IF THE INDICATION IS IN ACCORDANCE WITH\r
	JR	NZ,C42		;THE DESIRED MODE OF OPERATION THEN\r
				;BEGIN\r
	IN	A,(PORT1)	;\r
	CP	0FFH		;\r
	JP	Z,PROEND	;  IF PORT1 IS NOT NEUTRALIZED YET THEN\r
	LD	A,0FFH		;  BEGIN\r
	OUT	(PORT1),A	;    NEUTRALIZE PORT1\r
	LD	A,(OLDSTAT)	;\r
	AND	9FH		;\r
	CP	04H		;\r
	JR	Z,C41		;\r
	CP	08H		;    IF THE ATR WAS IN A FAST WIND MODE\r
	JP	NZ,PROEND	;    BEFORE STOP-COMMAND WAS EXECUTED THEN\r
C41:	LD	A,CVAL3.LOW.	;    BEGIN\r
	LD	(COUNT3),A	;      SET COUNT3 = CVAL3\r
	LD	A,7FH		;\r
	CALL	OUTPUT		;      SET ATR IN EDIT MODE\r
	JR	PROEND		;    END\r
				;  END\r
				;END ELSE\r
C42:	LD	A,(CODSAV)	;BEGIN\r
	CPL			;\r
	AND	9FH		;\r
	CP	80H		;\r
	JR	NZ,C43		;  IF LTUX IS IN EDIT MODE THEN\r
	LD	HL,COUNT3	;  BEGIN\r
	DEC	(HL)		;    DECREMENT COUNT3\r
	JR	NZ,PROEND	;    AND IF COUNT3 = 0 THEN\r
	INC	(HL)		;    INCREMENT COUNT3 AGAIN\r
	JR	PROEND		;  END ELSE\r
C43:	LD	A,B		;  BEGIN\r
	CPL			;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;    SET LTUX IN INDICATED MODE OF OPERATION\r
	CALL	CLEARY		;\r
	JR	PROEND		;  END\r
				;END\r
\r
;-----------------------------------------------------------------------------\r
CASE5:				;EDIT-INDICATION\r
	LD	B,A\r
	LD	A,(CODSAV)\r
	CPL\r
	AND	9FH\r
	CP	B		;IF THE INDICATION IS IN ACCORDANCE WITH\r
	JR	NZ,C51		;THE DESIRED MODE OF OPERATION THEN\r
				;BEGIN\r
	LD	A,0EFH		;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;  SET ATR IN STOP MODE\r
	LD	HL,COUNT3	;\r
	DEC	(HL)		;  DECREMENT COUNT3\r
	JR	NZ,PROEND	;  IF COUNT3 = 0 THEN\r
	LD	HL,FLAG1	;\r
	SET	3,(HL)		;  SET STATUS READY-BIT\r
	JR	PROEND		;END ELSE\r
C51:	LD	HL,FLAG1	;BEGIN\r
	RES	3,(HL)		;  RESET STATUS READY-BIT\r
	LD	A,0FFH		;\r
	LD	(COMBYT),A	;\r
	CALL	OUTPUT		;  SET LTUX IN NEUTRALIZED MODE OF OPERATION\r
	CALL	CLEARY		;\r
	          		;END\r
\r
;----------------------------------------------------------------------------\r
PROEND:	JP	PASPRO\r
\r
;----------------------------------------------------------------------------\r
\r
	DSEG\r
	DS	32\r
STAC11:\r
	END\r