DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 11081 (0x2b49) Types: TextFile Names: »TCREAD.SRC«
└─⟦8347abc8e⟧ Bits:30005501 8" CR80 Floppy CR80FD_0033 ( ATR Source and Abs-files ) └─⟦8347abc8e⟧ Intel_ISIS_II └─ ⟦this⟧ »TCREAD.SRC«
;******************************************************************************\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: TIME CODE SCANNING 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 CSEG\r \r PUBLIC TCREAD,STAC13,ENDRAM\r EXTRN FLAG1,FLAG2,CONSX,REGUTC\r EXTRN TMPCOD,NTTCCO,TTCCOD,NMTCCO,MTCCOD,SCOMMON\r EXTRN NUTCCO,UTCCOD,TCCOMP,TCSUB,TCADD,CONS01,SYSRAM\r \r MTCADR DEFL 0A000H\r TTCADR DEFL 0A004H\r UTCADR DEFL 0A008H\r TCSTAT DEFL 0A00CH\r \r \r \r TCREAD: LD SP,STAC13\r \r START: CALL SCOMMON\r EI\r \r ;------------------------------------------------------------------------------\r ;------------------------------------------------------------------------------\r TTCREAD LD HL,TCSTAT\r BIT 1,(HL) ;IF THERE HAS'NT BEEN VALUE CHANGE IN\r JP Z,MTCREAD ;TTC SINCE LAST READ THEN GOTO MTCREAD\r \r LD DE,TMPCOD ;\r LD HL,NTTCCO ;\r LD BC,4 ;\r LDIR ;MOVE TTC(N-1) TO TEMPORARY REGISTER\r \r LD DE,NTTCCO+3 ;\r LD HL,TTCADR ;\r LD BC,4 ;\r T1: LDI ;TRANSFER ACTUAL TTC TO TTC(N)-REG.\r DEC DE ;\r DEC DE ;\r JP PE,T1 ;\r \r IN A,(PORT4)\r AND 08H\r JR NZ,BACKWS ;IF FORWARDS TTC READING THEN\r ;------------------------------------------------------------------------\r ;BEGIN\r LD HL,NTTCCO ;\r CALL VALID ; CHECK IF VALID BCD CODE\r JR C,T01 ; IF NO VALID BCD CODE THEN\r LD IX,TMPCOD ; BEGIN\r LD IY,CONS01 ;\r LD BC,NTTCCO ; TTC(N) = TTC(N-1) + 1 FRAME\r CALL TCADD ;\r ; END\r T01: LD IX,TMPCOD ;\r LD IY,NTTCCO ;\r CALL TCCOMP ;\r JP P,T2 ;\r LD IY,CONSX ;\r LD BC,TMPCOD ;\r CALL TCADD ;\r LD BC,TTCCOD ;\r LD IY,NTTCCO ;\r CALL TCCOMP ; IF TTC(N-1) < TTC(N) < TTC(N-1)+FRAME OFFS.\r JP M,T2 ; THEN\r LD IX,NTTCCO ; BEGIN\r LD IY,CONS01 ;\r CALL TCADD ; VALID TTC = TTC(N)+1 FRAME\r JR MTCREAD ; END ELSE\r T2: LD IX,TTCCOD ; BEGIN\r LD IY,CONS01 ;\r LD BC,TTCCOD ;\r CALL TCADD ; EXTRAPOL.VALID TTC BY ADDING 1 FRAME\r JR MTCREAD ; END\r ;END ELSE\r ;-----------------------------------------------------------------------------\r BACKWS: ;BEGIN\r LD HL,NTTCCO ;\r CALL VALID ; CHECK IF VALID BCD CODE\r JR C,T02 ; IF NO VALID BCD CODE THEN\r LD IX,TMPCOD ; BEGIN\r LD IY,CONS01 ;\r LD BC,NTTCCO ; TTC(N) = TTC(N-1) - 1 FRAME\r CALL TCSUB ;\r ; END\r T02: LD IX,TMPCOD ;\r LD IY,NTTCCO ;\r CALL TCCOMP ;\r JP M,T3 ;\r LD IY,CONSX ;\r LD BC,TMPCOD ;\r CALL TCSUB ;\r LD BC,TTCCOD ;\r LD IY,NTTCCO ;\r CALL TCCOMP ; IF TTC(N-1)-FRAME OFFS. < TTC(N) < TTC(N-1)\r JP P,T3 ; THEN\r LD IX,NTTCCO ; BEGIN\r LD IY,CONS01 ;\r CALL TCSUB ; VALID TTC = TTC(N) - 1 FRAME\r JR MTCREAD ; END ELSE\r T3: LD IX,TTCCOD ; BEGIN\r LD IY,CONS01 ;\r LD BC,TTCCOD ;\r CALL TCSUB ;\r ; END\r ;END\r ;--------------------------------------------------------------------------\r ;--------------------------------------------------------------------------\r MTCREAD LD HL,TCSTAT ;\r BIT 0,(HL) ;IF THERE HAS'NT BEEN VALUE CHANGE IN\r JP Z,UTTCRD ;MTC SINCE LAST READ THEN GOTO UTTCRD\r \r LD HL,FLAG2\r SET 0,(HL) ;SET MTC FLAG\r \r LD DE,TMPCOD ;\r LD HL,NMTCCO ;\r LD BC,4 ;\r LDIR ;MOVE MTC(N-1) TO TEMPORARY REGISTER\r \r LD DE,NMTCCO+3 ;\r LD HL,MTCADR ;\r LD BC,4 ;\r M1: LDI ;TRANSFER ACTUAL MTC TO MTC(N)-REG.\r DEC DE ;\r DEC DE ;\r JP PE,M1 ;\r \r LD HL,NMTCCO\r CALL VALID ;CHECK IF VALID BCD CODE\r JR C,M10 ;IF NO VALID BCD MTC THEN\r LD IX,TMPCOD ;BEGIN\r LD IY,CONS01 ;\r LD BC,NMTCCO ; MTC(N) = MTC(N-1) + 1 FRAME\r CALL TCADD ;\r ;END\r M10: LD IX,TMPCOD ;\r LD IY,NMTCCO ;\r CALL TCCOMP ;\r JP P,M2 ;\r \r LD IY,CONSX ;\r LD BC,TMPCOD ;\r CALL TCADD ;\r \r LD IY,NMTCCO ;\r CALL TCCOMP ;IF MTC(N-1) < MTC(N) < MTC(N-1)+FRAME OFFS.\r JP M,M2 ;THEN\r \r LD DE,MTCCOD ;BEGIN\r LD HL,NMTCCO ;\r LD BC,4 ;\r LDIR ; UPDATE THE VALID MTC-VALUE\r JR UTTCRD ;END ELSE\r M2: LD IX,MTCCOD ;BEGIN\r LD IY,CONS01 ;\r LD BC,MTCCOD ;\r CALL TCADD ; EXTRAPOL. VALID MTC BY ADDING 1 FRAME\r ;END\r \r ;--------------------------------------------------------------------------\r ;--------------------------------------------------------------------------\r UTTCRD: LD C,4 ;\r LD DE,REGUTC+3 ;\r LD HL,UTCADR ;\r UT0: LD A,(DE) ;IF NO CHANGES IN DATALINE WORD THEN SKIP\r CP (HL) ;\r JR NZ,UT1 ;\r INC HL ;\r DEC DE ;\r DEC C ;\r JR NZ,UT0 ;\r JP PROEND ;\r \r UT1: LD DE,TMPCOD ;\r LD HL,NUTCCO ;\r LD BC,4 ;\r LDIR ;MOVE UTC(N-1) TO TEMPORARY REGISTER\r \r LD DE,NUTCCO+3 ;\r LD HL,UTCADR ;\r LD BC,4 ;\r U0: LDI ;TRANSFER ACTUAL UTC TO UTC(N)-REG.\r DEC DE ;\r DEC DE ;\r JP PE,U0 ;\r \r LD BC,4 ;\r LD DE,REGUTC ;MOVE DATALINE WORD TO REGUTC\r LD HL,NUTCCO ;\r LDIR ;\r \r LD HL,NUTCCO\r CALL VALID ;CHECK IF VALID BCD CODE\r JR C,U10 ;IF NO VALID BCD UTC THEN\r LD IX,TMPCOD ;BEGIN\r LD IY,CONS01 ;\r LD BC,NUTCCO ; UTC(N) = UTC(N-1) + 1 FRAME\r CALL TCADD ;\r ;END\r U10: LD IX,TMPCOD ;\r LD IY,NUTCCO ;\r CALL TCCOMP ;\r JR Z,PROEND ;IF UTC(N) = UTC(N-1) THEN SKIP UPDATING\r JP P,U2 ;IF UTC(N) > UTC(N-1) THEN \r \r ;-------------------------------------------------------------------------\r LD IY,CONSX ;BEGIN\r LD BC,TMPCOD ;\r CALL TCADD ; PERFORM UTC(N-1)+FRAME OFFSET\r \r LD IY,NUTCCO ;\r CALL TCCOMP ;\r LD IY,CONS01 ;\r LD BC,UTCCOD ;\r JP M,U1A ; IF UTC(N) =< UTC(N-1) + FRAME OFFSET THEN\r LD IX,NUTCCO ; BEGIN\r CALL TCADD ; VALID UTC = UTC(N) + 1\r JR PROEND ; END ELSE\r U1A: LD IX,UTCCOD ; BEGIN\r CALL TCADD ; EXTRAPOL.VALID UTC BY ADDING 1 FRAME\r JR PROEND ; END\r ;END ELSE\r ;--------------------------------------------------------------------------\r U2: LD IY,CONSX ;BEGIN\r LD BC,TMPCOD ;\r CALL TCSUB ; PERFORM UTC(N-1)-FRAME OFFSET\r \r LD IY,NUTCCO ;\r CALL TCCOMP ;\r LD IY,CONS01 ;\r LD BC,UTCCOD ;\r JP P,U2A ; IF UTC(N) > UTC(N-1) - FRAME OFFSET THEN\r LD IX,NUTCCO ; BEGIN\r CALL TCSUB ; VALID UTC = UTC(N) - 1 FRAME\r JR PROEND ; END ELSE\r U2A: LD IX,UTCCOD ; BEGIN\r CALL TCADD ; EXTRAPOL.VALID UTC BY ADDING 1 FRAME\r ; END\r ;END\r ;------------------------------------------------------------------------\r ;------------------------------------------------------------------------\r PROEND: JP START\r \r \r VALID:\r VAL23: LD A,(HL)\r AND 0F0H\r CP 30H\r RET NC ;RETURN IF NO VALID CODE\r CP 20H\r LD A,(HL)\r JR Z,VAL231\r AND 0FH\r CP 0AH\r RET NC\r INC HL\r JR VAL59\r VAL231: AND 0FH\r CP 04H\r RET NC ;RETURN IF NO VALID CODE\r INC HL\r \r VAL59: LD C,2\r VAL591: LD A,(HL)\r AND 0F0H\r CP 60H\r RET NC ;RETURN IF NO VALID CODE\r LD A,(HL)\r AND 0FH\r CP 0AH\r RET NC ;RETURN IF NO VALID CODE\r INC HL\r DEC C\r JR NZ,VAL591\r \r VAL24: LD A,(HL)\r AND 0F0H\r CP 30H\r RET NC ;RETURN IF NO VALID CODE\r CP 20H\r LD A,(HL)\r JR Z,VAL241\r AND 0FH\r CP 0AH\r RET\r VAL241: AND 0FH\r CP 05H\r RET\r \r \r DSEG\r DS 32\r STAC13:\r ENDRAM DS 1\r END\r