DataMuseum.dk

Presents historical artifacts from the history of:

Intel ISIS Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Intel ISIS Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦15b9a8cd4⟧ TextFile

    Length: 10975 (0x2adf)
    Types: TextFile
    Names: »SEARCH.SRC«

Derivation

└─⟦8347abc8e⟧ Bits:30005501 8" CR80 Floppy CR80FD_0033 ( ATR Source and Abs-files )
└─⟦8347abc8e⟧ Intel_ISIS_II
    └─ ⟦this⟧ »SEARCH.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: SEARCH 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
	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	SEARPR,SEARCH,SEAPLA,SEAFWD,SEAREW,STAC07\r
	EXTRN	COUNT1,CODSAV,TCCSTA,TTCCOD,TTCF0,TCCOMP,COMBYT,SYNCRO\r
	EXTRN	TTCREG,TTC0,TTCF1,TTCR1,TTCR0,MESCOD,DELAY,ESTABR,OUTPUT\r
	EXTRN	SCOMMON,FLAG1,FLAG2,SYSRAM,TTCSAV,CONS30,TMPCOD,TCSUB\r
	EXTRN	TTCF2,TTCR2,CNS142,TCADD\r
\r
	CSEG\r
SEARPR	LD	SP,STAC07	;INITIALIZE STACKPOINTER\r
	PASSIVATE S,SEARNR	;PASSIVATE SEARCH PROCESS\r
	CALL	SCOMMON		;SCHEDULE\r
	EI\r
;-----------------------------------------------------------------------\r
SEARCH	LD	SP,STAC07	;INITIALIZE STACKPOINTER\r
       	CALL	SEAINI		;COUNT1 = 3 AND RESET SEARCH READY-FLAG\r
\r
	LD	A,(MESCOD)\r
	CP	20H\r
	JR	Z,REPLAY\r
	LD	A,(TCCSTA)\r
	AND	1FH\r
	CP	10H\r
	JR	NZ,REPLAY\r
	LD	IX,TTCCOD\r
	LD	IY,TTCREG\r
	CALL	TCCOMP\r
	JP	M,REPLAY\r
	LD	IX,TTCREG\r
	LD	IY,CNS142\r
	LD	BC,TMPCOD\r
	CALL	TCADD\r
	LD	IX,TMPCOD\r
	LD	IY,TTCCOD	;IF NOT A SEARCH-PLAY COMMAND AND\r
	CALL	TCCOMP		;IF THE ATR IS ALLREADY PARKED\r
	JP	P,ENDCOD	;CORRECTLY THEN SKIP SEARCHING\r
;-------------------------------------------------------------------------\r
REPLAY:	LD	HL,FLAG1\r
	RES	1,(HL)		;RESET READ FLAG\r
\r
        LD	A,0FEH		;\r
	CALL	OUTPUT		;\r
N1:				;WHILE THE ATR HAS NOT ENTERED\r
	LD	A,(TCCSTA)	;THE PLAY MODE YET THEN WAIT\r
	AND	1FH		;\r
	CP	01H		;\r
	JR	Z,N2		;\r
	CALL	SCOMMON		;\r
	EI			;\r
	JR	N1		;\r
\r
N2:	UPDATM	SEARTIM,45\r
	CALL	PAUSE\r
	JR	COMPAR\r
\r
SEAPLA	LD	SP,STAC07	;INITIALIZE STACKPOINTER\r
        CALL	SEAINI		;COUNT1 = 3 AND RESET SEARCH READY-FLAG\r
	LD	A,0FEH		;\r
	CALL	OUTPUT		;SET THE ATR IN PLAY MODE\r
\r
COMPAR:	LD	IX,TTCCOD\r
	LD	IY,TTCF0\r
	CALL	TCCOMP		;IF TTC < TTCF0 THEN\r
	JP	M,FORWIND	;START FORWIND EXECUTION\r
	LD	IX,TTCREG\r
	LD	IY,TTCCOD\r
	CALL	TCCOMP		;IF TTC' < TTC THEN\r
	JP	M,REWIND	;START REWIND EXECUTION\r
\r
;-----------------------------------------------------------------------\r
PLAY:				;PLAY EXECUTION\r
	LD	HL,FLAG1\r
	SET	1,(HL)		;SET READ FLAG\r
	LD	IX,TTCCOD\r
	LD	IY,TTC0\r
	CALL	TCCOMP\r
	JP	P,P1		;IF TTC < TTC0 THEN\r
	LD	A,(COUNT1)	;BEGIN\r
	AND	A		;\r
	JR	Z,P1		;  IF COUNT1 > 0 THEN\r
	LD	A,0FBH		;  BEGIN\r
	CALL	OUTPUT		;    PERFORM A FORWIND-"SHOT"\r
	UPDATM	SEARTIM,70	;\r
	CALL	PAUSE		;  END\r
	JR	REPLAY		;END ELSE\r
\r
P1:	LD	IY,TTCREG\r
	CALL	TCCOMP\r
	JP	P,ENDCOD	;IF TTC >= TTC' THEN MAKE ENDCODE INSERTION\r
	CALL	SCOMMON		;ELSE WAIT\r
	EI\r
	JR	COMPAR\r
\r
;------------------------------------------------------------------------\r
FORWIND:			;FORWIND EXECUTION\r
	LD	A,(COUNT1)	;\r
	AND	A		;\r
	JP	Z,PLAY		;IF COUNT1 = 0 THEN GOTO PLAY\r
	JR	FX1\r
\r
SEAFWD	LD	SP,STAC07	;INITIALIZE STACKPOINTER\r
        CALL	SEAINI		;COUNT1 = 3 AND RESET SEARCH READY-FLAG\r
\r
FX1:	LD	A,0FBH		;\r
	CALL	OUTPUT		;PERFORM A FORWIND PULSE\r
	UPDATM	SEARTIM,50	;\r
	CALL	PAUSE		;\r
	LD	A,7FH		;\r
	OUT	(PORT1),A	;PERFORM EDIT FUNCTION\r
	UPDATM	SEARTIM,45	;\r
	CALL	PAUSE		;\r
\r
F1:	LD	HL,FLAG1\r
	SET	1,(HL)		;SET READ-FLAG\r
\r
	LD	IX,TTCCOD\r
	LD	IY,TTCF2\r
	CALL	TCCOMP\r
	JP	P,F0		;IF TTC < TTCF2 THEN\r
\r
	LD	A,0FBH		;BEGIN\r
	OUT	(PORT1),A	;\r
	UPDATM	SEARTIM,250	;\r
	CALL	PAUSE		;  PERFORM A 2 SEC.FORWIND+EDIT OFF PULSE\r
	LD	A,7FH		;\r
	OUT	(PORT1),A	;\r
	UPDATM	SEARTIM,60	;\r
	CALL	PAUSE		;  PERFORM A 500 MSEC EDIT ON PULSE\r
	JR	F1		;END ELSE\r
\r
F0:	LD	IX,TTCCOD\r
    	LD	IY,TTCF1\r
	CALL	TCCOMP\r
	JP	P,F01		;IF TTC < TTCF1 THEN\r
	CALL	SCOMMON		;WAIT\r
	EI\r
	JR	F1\r
\r
\r
F01:	LD	IX,TTCCOD\r
	LD	IY,TTC0\r
	CALL	TCCOMP\r
	JP	P,REPLAY	;IF TTC >= TTC0 THEN GOTO REPLAY\r
\r
	LD	DE,TTCSAV\r
	LD	HL,TTCCOD\r
	LD	BC,4\r
	LDIR			;SAVE TTC(N)\r
	UPDATM	SEARTIM,5	;\r
	CALL	PAUSE		;WAIT 40 MSEC\r
	LD	IX,TTCCOD\r
	LD	IY,TTCSAV\r
	LD	BC,TMPCOD\r
	CALL	TCSUB		;DO DT = TTC(N) - TTC(N-1)\r
	LD	IX,CONS30\r
	LD	IY,TMPCOD\r
	CALL	TCCOMP\r
	JP	P,F3		;IF DT > SPEED CONSTANT THEN\r
	LD	A,77H		;MAKE A REWIND PULSE\r
	CALL	OUTPUT\r
	JP	F1		;ELSE\r
F3:	LD	A,7BH		;MAKE A FORWIND PULSE\r
	CALL	OUTPUT\r
	JP	F1\r
\r
;---------------------------------------------------------------------------\r
REWIND:				;REWIND EXECUTION\r
	LD	A,(COUNT1)	;\r
	AND 	A		;\r
	JP	Z,PLAY		;IF COUNT1 = 0 THEN GOTO PLAY\r
	JR	RX1\r
\r
SEAREW	LD	SP,STAC07	;INITIALIZE STACKPOINTER\r
        CALL	SEAINI		;COUNT1 = 3 AND RESET SEARCH READY-FLAG\r
\r
RX1:	LD	A,0F7H		;\r
	CALL	OUTPUT		;PERFORM A REWIND PULSE\r
	UPDATM	SEARTIM,150	;\r
	CALL	PAUSE		;\r
	LD	A,7FH		;\r
	OUT	(PORT1),A	;PERFORM EDIT FUNCTION\r
	UPDATM	SEARTIM,45	;\r
	CALL	PAUSE		;\r
\r
R1:	LD	HL,FLAG1\r
	SET	1,(HL)		;SET READ-FLAG\r
\r
	LD	IX,TTCR2\r
	LD	IY,TTCCOD\r
	CALL	TCCOMP\r
	JP	P,R0		;IF TTCR2 < TTC THEN\r
\r
	LD	A,0F7H		;BEGIN\r
	OUT	(PORT1),A	;\r
	UPDATM	SEARTIM,250	;\r
	CALL	PAUSE		;  PERFORM A 2 SEC. REWIND+EDIT OFF PULSE\r
	LD	A,7FH		;\r
	OUT	(PORT1),A	;\r
	UPDATM	SEARTIM,60	;\r
	CALL	PAUSE		;  PERFORM A 500 MSEC EDIT ON PULSE\r
	JR	R1		;END ELSE\r
\r
R0:	LD	IX,TTCR1\r
	LD	IY,TTCCOD\r
	CALL	TCCOMP\r
	JP	P,R01		;IF TTC > TTCR1 THEN\r
	CALL	SCOMMON		;WAIT\r
	EI\r
	JR	R1\r
\r
\r
R01:	LD	IX,TTCR0\r
	LD	IY,TTCCOD\r
	CALL	TCCOMP\r
	JP	M,R21		;IF TTCR0 >= TTC THEN\r
	LD	HL,COUNT1	;BEGIN\r
	DEC	(HL)		;  COUNT1 = COUNT1 - 1\r
	JP	REPLAY		;  GOTO REPLAY\r
				;END\r
				;ELSE\r
R21:    LD	DE,TTCSAV\r
	LD	HL,TTCCOD\r
	LD	BC,4\r
	LDIR			;SAVE TTC(N)\r
	UPDATM	SEARTIM,5	;\r
	CALL	PAUSE		;WAIT 40 MSEC\r
	LD	IX,TTCSAV\r
	LD	IY,TTCCOD\r
	LD	BC,TMPCOD\r
	CALL	TCSUB		;DO DT = TTC(N-1) - TTC(N)\r
	LD	IX,TMPCOD\r
	LD	IY,CONS30\r
	CALL	TCCOMP\r
	JP	P,R3		;IF DT < SPEED CONSTANT THEN\r
	LD	A,77H		;MAKE A REWIND PULSE\r
	CALL	OUTPUT\r
	JP	R1		;ELSE\r
R3:	LD	A,7BH		;MAKE A FORWIND PULSE\r
	CALL	OUTPUT\r
	JP	R1\r
\r
;---------------------------------------------------------------------------\r
SEAINI:	LD	A,3\r
	LD	(COUNT1),A	;COUNT1 = 3\r
	LD	HL,FLAG2\r
	RES	1,(HL)		;RESET SEARCH READY-FLAG\r
	RET\r
\r
;--------------------------------------------------------------------------\r
PAUSE:	LESTAB	SEARTIM\r
	PASSIVATE S,SEARNR\r
	CALL	SCOMMON\r
	EI\r
	RET\r
\r
;--------------------------------------------------------------------------\r
ENDCOD:	LD	A,(MESCOD)	;GET MESSAGE CODE\r
	CP	20H\r
	JP	NZ,S1		;IF SEARCH-PLAY COMMAND THEN\r
	LD	A,0FEH		;SET ATR IN PLAY-MODE\r
	JR	S2		;ELSE\r
S1:	LD	A,0EFH		;SET ATR IN STOP-MODE\r
S2:	LD	(COMBYT),A	\r
	CALL	OUTPUT		\r
	LD	A,(MESCOD)	;GET MESSAGE CODE\r
	CP	3FH\r
	JR	Z,PASPRO	;GOTO PASPRO IF LOCK COMMAND\r
	CP	2AH\r
	JR	Z,PASPRO	;GOTO PASPRO IF SEARCH-STOP COMMAND\r
	CP	20H\r
	JR	Z,PASPRO	;GOTO PASPRO IF SEARCH-PLAY COMMAND\r
\r
				;IF MTC-SYNC COMMAND THEN\r
	RESTART S,SYNCNR,SYNCRO ;INITIALIZE SYNCRONIZATION PROCESS\r
\r
PASPRO:	LD	HL,FLAG2\r
	SET	1,(HL)		;SET SEARCH READY-FLAG\r
        PASSIVATE S,SEARNR	;PASSIVATE SEARCH PROCESS\r
	CALL	SCOMMON		;SCHEDULE\r
	EI\r
	JP	SEARCH\r
\r
	DSEG\r
	DS	32\r
STAC07:\r
	END\r