|
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: 21947 (0x55bb) Types: TextFile Names: »MATCH.SRC«
└─⟦755b1f38b⟧ Bits:30005549 8" CR80 Floppy CR80FD_0032 ( TELECINE Source and Abs-files ) └─⟦755b1f38b⟧ Intel_ISIS_II └─ ⟦this⟧ »MATCH.SRC«
;******************************************************************************\r ;* *\r ;* D O R A A P P L I C A T I O N S / W *\r ;* *\r ;* DEVICE: TELECINE *\r ;* *\r ;* MODULE: MATCHING FUNCTION PROCESS *\r ;* *\r ;******************************************************************************\r \r LINK DEFL 0\r PORT1 DEFL 20H\r PORT2 DEFL 2AH\r PORT3 DEFL 2CH\r PORT4 DEFL 21H\r PORT5 DEFL 22H\r PORT6 DEFL 28H\r PORT7 DEFL 13H\r INSPTIM DEFL 1\r SCANTIM DEFL 2\r INSPNR DEFL 5\r PROJNR DEFL 6\r MTCHNR DEFL 7\r SCANNR DEFL 8\r STATNR DEFL 9\r CVAL DEFL 25\r DLAY01 DEFL 25\r DLAY02 DEFL 10\r DACGAIN DEFL 00H\r DACGMMA DEFL 06H\r DACLIFT DEFL 0CH\r \r NLIST S\r SETOBIT MACRO #PORTADDRESS,#ACTION,#VALUE\r ;SETOBIT IS USED TO SET OR RESET\r ;BITS ONE A OUTPUT PORT SPECIFIED\r ;BY THE PARAMETERS:\r ;VAL: SPECIFIED THE BIT WHICH HAS \r ; TO BE SET OR RESET (0-0FFH).\r ;ACTION: TELL THE ROUTINE WHICH\r ; ACTION IT HAS TO PERFORME\r ; SET OR RESET\r ;PORTADDRESS: SPECIFIED THE ADDRESS\r ; WHERE THE ACTION HAS TO \r ; BE PERFORMED.\r IF '#ACTION'.EQ.'S'\r LD C,#PORTADDRESS\r LD B,#VALUE ;\r CALL SETBIT ;\r ENDIF\r IF '#ACTION'.EQ.'R'\r LD C,#PORTADDRESS\r LD A,#VALUE\r CALL RESBIT ;\r ENDIF\r ENDM\r \r \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 \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,#VALUE\r LD HL,DELAY+#PRNUM\r LD (HL),#VALUE\r ENDM\r \r ;\r ;>>>>>>>>>>>>>> DORCOM.MAC, VERSION 810127/CGR <<<<<<<<<<<<<<<<\r ;\r ;\r ;\r ;************************************************************************\r ; I G E P A 1\r ; VERSION 801125/CGR\r ;************************************************************************\r ;\r ;\r IGEPA1 MACRO\r \r ;DESCRIP: THE MACRO DEQUEUES AN ELEMENT FROM\r ; INCOMING PACKET QUEUE IN SPECIFIED\r ; CHANNEL.\r ;ENTRY: CHANNEL NO. IN A-REG.\r ;EXIT: CY=1 IF QUEUE WAS NOT EMPTY\r ; CY=0 IF QUEUE WAS EMPTY\r ; ADDRESS OF ELEMENT IN DE\r ;DESTROY: IF QUEUE WAS NOT EMPTY\r ; REG A,F,B,C,D,E,H,L,IX\r ; IF QUEUE WAS EMPTY\r ; REG F,H,L\r ;EXTERNALS REQUIRED: IGEPA\r ;\r ;################ Igepa1 macro #####################################\r CALL IGEPA ;GET BUFFER IF ANY\r JP NC,A#$YM+1 ;IF QUEUE WAS EMPTY THEN EXIT\r PUSH DE ;\r POP IX ;\r PUSH DE ;\r LD L,(IX+4) ;DECREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r DEC HL ;\r DEC HL ;\r LD (IX+4),L ;\r LD (IX+5),H ;\r LD HL,8 ;REFORMAT BUFFER ('SIZE OF DATABUFFER' IS DESTROYED)\r ADD HL,DE ;\r EX DE,HL ;\r LD HL,2 ;\r ADD HL,DE ;\r LD B,0 ;\r LD C,(IX+2) ;\r LDIR ;\r POP DE ;\r A#$YM: SCF ;EXIT\r ;#################### End macro ################################\r \r ENDM\r ;\r ;\r ;\r ;\r ;************************************************************************\r ; I D E P A 1\r ; VERSION 801125/CGR\r ;************************************************************************\r ;\r ; DESCRIPTION: THIS MACRO ENQUEUES THE SPECIFIED BUFFER IN THE 'INCOMING'\r ; EMPTY BUFFER QUEUE IN THE CORRECT DESCRIPTOR SECTION.\r ; THE BUFFER MUST BE FORMATTED AS SPECIFIED FOR DORA INCOMING\r ; BUFFERS. THE BYTECOUNT IN THE BUFFER IS RESET\r ;\r ; ENTRY: ADDRESS OF BUFFER ELEMENT IN DE REGISTER.\r ;\r ; EXIT: CY=1 IF QUEUE WAS NOT EMPTY\r ; CY=0 IF QUEUE WAS EMPTY\r ; ADDRESS OF BUFFER ELEMENT IN DE AND IX REGISTERS.\r ;\r ; PARAMETERS: #EI: Y RE-ENABLES INTERRUPT\r ; N INTERRUPT IS DISABLED AT MACRO EXIT\r ;\r ; EXTERNALS: IDEPA\r ;\r ; DESTROY: REGISTERS A,F,B,C,H,L,IX\r ;\r ;\r ;\r IDEPA1 MACRO #EI,#BSIZE\r \r ;################# Idepa1 macro ##############################\r PUSH DE ;\r POP IX\r LD (IX+8),#BSIZE ;REINSERT BUFFERSIZE (=16)\r LD (IX+9),0 ;\r LD (IX+2),0 ;RESET BYTECOUNT\r LD (IX+3),0 ;\r LD A,(IX-2) ;GET CHANNEL NO.\r LD L,(IX+4) ;INCREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r INC HL ;\r INC HL ;\r LD (IX+4),L ;\r LD (IX+5),H ;\r CALL IDEPA ;\r IF '#EI'.EQ.'Y' ;\r EI ;\r ENDIF ;\r ;################# End macro #################################\r \r ENDM\r ;\r ;\r ;************************************************************************\r ; O G E P A 1\r ; VERSION 810119/CGR\r ;************************************************************************\r ;\r OGEPA1 MACRO #CHAN\r \r ;DESCRIP: THE MACRO DEQUEUES AN 'OUTGOING' ELE-\r ; MENT FROM DESCRIPTOR.\r ;ENTRY: -\r ;EXIT: CY=1 IF QUEUE WAS NOT EMPTY\r ; CY=0 IF QUEUE WAS EMPTY\r ; ADDRESS OF ELEMENT IN DE\r ;DESTROY: IF QUEUE WAS NOT EMPTY\r ; REG A,F,B,C,D,E,H,L,IX\r ; IF QUEUE WAS EMPTY\r ; REG F,H,L\r ;PARAMETERS: #CHAN = CHANNEL NO. ('DATATYPE')\r ;\r ;EXTERNALS: SUBDEQ,QHEADS\r ;\r ;###################### Ogepa1 macro ###########################\r LD A,#CHAN ;FIND EMPTY QUEUE\r LD H,A\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r CALL SUBDEQ ;GET BUFFER\r JP NC,A#$YM+3\r PUSH DE\r POP IX\r LD L,(IX+4) ;DECREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r DEC HL ;\r DEC HL ;\r LD (IX+4),L ;\r A#$YM: LD (IX+5),H ;\r ;######################## End macro ##############################\r \r ENDM\r ;\r ;\r ;\r ;***********************************************************************\r ; O G E P A 3\r ; VERSION 810127/CGR\r ;***********************************************************************\r ;\r ; DESCRIPTION: THIS MACRO DEQUEUES A BUFFER FROM THE 'OUTGOING'\r ; EMPTY BUFFER QUEUE - IF THE I/F DEVICE IS DELEGATED - AND\r ; INSERTS THE PANEL CODE OF THE\r ; DELEGATED PANEL IN THE FIRST DATABYTE OF THE\r ; BUFFER. THE BYTECOUNT IS SET = 1.\r ;\r ; ENTRY: NONE\r ;\r ; EXIT: CY=0 IF QUEUE WAS EMPTY OR LTUX NOT DELEGATED\r ; CY=1 IF QUEUE WAS NOT EMPTY AND LTUX DELEGATED\r ; Z=0 IF LTUX NOT DELEGATED\r ; Z=1 IF LTUX IS DELEGATED\r ; ADDRESS OF BUFFER ELEMENT IN DE AND IX REGISTERS.\r ;\r ; PARAMETERS: #CHAN: CHANNELNUMBER. (MUST BE 6 OR 7)\r ;\r ; EXTERNALS: SUBDEQ, QHEADS, PANCO (AND PANCOM IF TELECINE I/F)\r ;\r ; DESTROY: REGISTERS A,F,B,C,D,E,H,L,IX\r ;\r OGEPA3 MACRO #CHAN\r \r ;################### Ogepa3 macro ###################################\r NLIST S\r IF #CHAN.EQ.6\r LIST S ;+++++ #CHAN = 6\r LD A,(PANCO)\r NLIST S\r ENDIF\r IF #CHAN.EQ.7\r LIST S ;+++++ #CHAN = 7\r LD A,(PANCOM)\r NLIST S\r ENDIF\r LIST S\r CP 0 ;TEST IF DELEGATION IS ESTABLISHED\r JP Z,A#$YM ;IF YES THEN\r LD A,#CHAN\r LD H,A ;FIND ADDRESS OF EMPTY BUFFER QUEUE\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r CALL SUBDEQ ;GET BUFFER\r ;TEST IF QUEUE WAS EMPTY\r JP NC,B#$YM ;IF NO THEN\r PUSH DE\r POP IX\r LD (IX+2),1 ;SET BYTECOUNT = 1\r NLIST S\r IF #CHAN.EQ.6\r LIST S ;+++++ #CHAN = 6\r LD A,(PANCO)\r NLIST S\r ENDIF\r IF #CHAN.EQ.7\r LIST S ;+++++ #CHAN = 7\r LD A,(PANCOM)\r NLIST S\r ENDIF\r LIST S\r LD (IX+8),A ;LOAD DELEGATED PANEL CODE INTO FIRST DATABYTE\r LD L,(IX+4) ;DECREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r DEC HL ;\r DEC HL ;\r LD (IX+4),L ;\r LD (IX+5),H ;\r CP A ;SET Z-FLAG\r SCF ;SET C-FLAG\r JP A#$YM+4 \r ;ENDIF\r ;\r B#$YM: CP A ;SET Z-FLAG\r SCF\r CCF ;RESET C-FLAG\r JP A#$YM+4 ;\r ;ENDIF\r A#$YM: CP 1 ;RESET Z-FLAG\r SCF ;RESET C-FLAG\r CCF ;\r ;\r ;################### End macro #######################################\r \r ENDM\r ;\r ;\r ;************************************************************************\r ; O G E P A 2\r ; VERSION 810119/CGR\r ;************************************************************************\r ;\r ; DESCRIPTION: THIS MACRO DEQUEUES A BUFFER FROM THE EMPTY BUFFER\r ; QUEUE ASSIGNED TO THE DELEGATED CR80.\r ;\r ; ENTRY: NONE\r ;\r ; EXIT: CY=0 IF THE QUEUE WAS EMPTY\r ; CY=1 IF THE QUEUE WAS NOT EMPTY\r ; ADDRESS OF BUFFERELEMENT IN DE REGISTER.\r ;\r ; PARAMETERS: NONE\r ;\r ; EXTERNALS: CR80NO, SUBDEQ, QHEADS\r ;\r ; DESTROY: REGISTERS A,F,B,C,D,E,H,L,IX\r ;\r ;\r OGEPA2 MACRO\r \r ;#################### Ogepa2 macro ###########################\r LD A,(CR80NO) ;FIND ADDRESS OF EMPTY BUFFER QUEUE\r LD H,A\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r CALL SUBDEQ ;GET BUFFER\r JP NC,A#$YM+3 ;\r PUSH DE\r POP IX ;\r LD L,(IX+4) ;DECREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r DEC HL ;\r DEC HL ;\r LD (IX+4),L ;\r A#$YM: LD (IX+5),H ;\r ;################## End macro ###################################\r \r ENDM\r ;\r ;\r ;\r ;\r ;\r ;************************************************************************\r ; O D E P A 1\r ; VERSION 801223/CGR\r ;************************************************************************\r ;\r ODEPA1 MACRO #EI,#BSIZE\r \r ;DESCRIP: THE MACRO ENQUEUES AN 'OUTGOING'\r ; ELEMENT IN THE CHANNEL QUEUE.\r ; IF TRANSMISSION CANCELED FLAG IS\r ; SET, THE BUFFER IS ENQUEUED IN\r ; THE OUTGOING EMPTY BUFFER QUEUE.\r ;ENTRY: ADDRESS OF ELEMENT IN REG DE\r ;EXIT: CY=1 IF QUEUE WAS NOT EMPTY\r ; CY=0 IF QUEUE WAS EMPTY\r ; ADDRESS OF ELEMENT IN REG DE\r ;DESTROY: REG A,F,B,C,H,L,IX\r ;\r ;PARAMETERS: #BSIZE = BUFFERSIZE\r ; #EI: Y RE-ENABLES INTERRUPT\r ; N INTERRUPT IS DISABLED AT MACRO EXIT.\r ; NOTE! INTERRUPT IS NOT AFFECTED\r ; IF TRANSMISSION WAS CANCELED.\r ;\r ;EXTERNALS: QHEADS,SUBENQ,ECOND1\r ;\r ;################ Odepa1 macro ####################################\r PUSH DE ;\r PUSH DE ;\r POP IX ;\r LD A,(IX+2) ;REFORMAT BUFFER\r ADD A,7 ;\r LD L,A ;\r LD H,0 ;\r ADD HL,DE ;\r EX DE,HL ;\r LD HL,2 ;\r ADD HL,DE ;\r EX DE,HL ;\r LD B,0 ;\r LD C,(IX+2) ;\r LDDR ;\r LD (IX+8),#BSIZE ;RESTORE BUFFERSIZE\r LD (IX+9),0 ;\r LD L,(IX+4) ;INCREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r INC HL ;\r INC HL ;\r LD (IX+4),L ;\r LD (IX+5),H ;\r LD A,(IX+2) ;TEST IF BUFFER IS THE LAST IN TRANSMISSION\r LD HL,ECOND1 ;\r CP #BSIZE\r JP Z,C#$YM ; IF YES THEN\r SET 7,(HL) ; SET BIT 7 IN ECOND1\r JP D#$YM ; ELSE\r C#$YM: RES 7,(HL) ; RESET BIT 7 IN ECOND1\r ; ENDIF\r D#$YM: LD A,(HL) ;TEST IF TRANSMISSION IS CANCELED\r BIT 6,A\r JP Z,A#$YM ;IF YES THEN\r ; BEGIN\r LD A,(IX+2) ; TEST IF BUFFER IS THE LAST IN TRANSMISSION\r \r CP #BSIZE\r JP Z,B#$YM ; IF YES THEN\r RES 6,(HL) ; RESET BIT 6 IN ECOND1\r ; ENDIF\r B#$YM: LD (IX+2),0 ; RESET BYTECOUNT\r LD (IX+3),0 ;\r LD A,(IX-2) ; ENQUEUE BUFFER IN OUTGOINIG EMPTY BUFFER QUEUE\r LD H,A\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r POP DE\r CALL SUBENQ ;\r ;\r ; END\r ;ELSE\r A#$YM: LD A,(IX-2) ; BEGIN\r POP DE ; ENQUEUE BUFFER IN CHANNEL QUEUE\r CALL ODEPA ;\r IF '#EI'.EQ.'Y'\r EI ; END\r ENDIF ;ENDIF\r ;################# End macro #####################################\r \r ENDM\r ;\r ;\r ;\r ;\r ;\r ;\r ;************************************************************************\r ; O D E P A 2\r ; VERSION 801223/CGR\r ;************************************************************************\r ;\r ODEPA2 MACRO #EI,#BSIZE\r \r ;DESCRIP: THE MACRO ENQUEUES AN 'OUTGOING'\r ; ELEMENT IN THE CHANNEL QUEUE.\r ; IF TRANSMISSION CANCELED FLAG IS\r ; SET, THE BUFFER IS ENQUEUED IN\r ; THE OUTGOING EMPTY BUFFER QUEUE.\r ; FIRST, THE MACRO TESTS IF ASSIGNED\r ; CR80 NO. HAS BEEN CHANGED SINCE\r ; THE BUFFER WAS DEQUEUED BY OGEPA.\r ; IF YES, A BUFFER FROM THE CORRECT\r ; CHANNEL IS DEQUEUED AND THE BUFFER\r ; CONTENTS IS TRANSFERRED - NEXT, THE\r ; 'OLD' BUFFER IS DELIVERED TO THE\r ; APPROPRIATE EMPTY QUEUE AND FINALLY\r ; THE 'NEW' BUFFER IS TRANSMITTED.\r ;ENTRY: ADDRESS OF ELEMENT IN REG DE\r ;EXIT: CY=1 IF QUEUE WAS NOT EMPTY\r ; CY=0 IF QUEUE WAS EMPTY\r ; ADDRESS OF ELEMENT IN REG DE\r ;DESTROY: REG A,F,B,C,D,E,H,L,IX\r ;\r ;PARAMETERS: #BSIZE = BUFFERSIZE\r ; #EI: Y RE-ENABLES INTERRUPT\r ; N INTERRUPT IS DISABLED AT MACRO EXIT.\r ; NOTE! INTERRUPT IS NOT AFFECTED\r ; IF TRANSMISSION WAS CANCELED.\r ;\r ;EXTERNALS: QHEADS,SUBENQ,ECOND1,CR80NO\r ;\r ;################ Odepa2 macro ####################################\r PUSH DE ;\r PUSH DE ;\r POP IX ;\r LD A,(IX-2) ;\r CP 5 ;\r JP P,E#$YM ;\r LD HL,CR80NO ;\r CP (HL) ;\r JP Z,E#$YM ;\r LD H,A\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r POP DE\r PUSH DE ;\r CALL SUBENQ ;\r OGEPA2 ;\r POP HL ;\r PUSH DE ;\r PUSH DE ;\r LD BC,#BSIZE+8 ;\r LDIR ;\r POP IX ;\r E#$YM: LD A,(IX+2) ;REFORMAT BUFFER\r ADD A,7 ;\r LD L,A ;\r LD H,0 ;\r ADD HL,DE ;\r EX DE,HL ;\r LD HL,2 ;\r ADD HL,DE ;\r EX DE,HL ;\r LD B,0 ;\r LD C,(IX+2) ;\r LDDR ;\r LD (IX+8),#BSIZE ;RESTORE BUFFERSIZE\r LD (IX+9),0 ;\r LD L,(IX+4) ;INCREMENT DATABUFFER ADDRESS 2 TIMES.\r LD H,(IX+5) ;\r INC HL ;\r INC HL ;\r LD (IX+4),L ;\r LD (IX+5),H ;\r LD A,(IX+2) ;TEST IF BUFFER IS THE LAST IN TRANSMISSION\r LD HL,ECOND1 ;\r CP #BSIZE\r JP Z,C#$YM ; IF YES THEN\r SET 7,(HL) ; SET BIT 7 IN ECOND1\r JP D#$YM ; ELSE\r C#$YM: RES 7,(HL) ; RESET BIT 7 IN ECOND1\r ; ENDIF\r D#$YM: LD A,(HL) ;TEST IF TRANSMISSION IS CANCELED\r BIT 6,A\r JP Z,A#$YM ;IF YES THEN\r ; BEGIN\r LD A,(IX+2) ; TEST IF BUFFER IS THE LAST IN TRANSMISSION\r \r CP #BSIZE\r JP Z,B#$YM ; IF YES THEN\r RES 6,(HL) ; RESET BIT 6 IN ECOND1\r ; ENDIF\r B#$YM: LD (IX+2),0 ; RESET BYTECOUNT\r LD (IX+3),0 ;\r LD A,(IX-2) ; ENQUEUE BUFFER IN OUTGOINIG EMPTY BUFFER QUEUE\r LD H,A\r SLA A\r SLA A\r ADD A,H\r LD HL,QHEADS\r LD D,0\r LD E,A\r ADD HL,DE\r POP DE\r CALL SUBENQ ;\r ;\r ; END\r ;ELSE\r A#$YM: LD A,(IX-2) ; BEGIN\r POP DE ; ENQUEUE BUFFER IN CHANNEL QUEUE\r CALL ODEPA ;\r IF '#EI'.EQ.'Y'\r EI ; END\r ENDIF ;ENDIF\r ;################# End macro #####################################\r \r ENDM\r \r \r ;\r \r LIST S\r PUBLIC MATCHG,CASE12,CASE13,CASE14,CASE15,CASE16,CASE17,CASE18\r PUBLIC CASE19,CASE20,CASE21,CASE22,CASE23,CASE24,CASE25,CASE26\r PUBLIC CASE27,CASE28,CASE29,CASE30,CASE31,CASE32,CASE33,CASE34\r PUBLIC CASE35,CASE36,CASE37,CASE38,CASE39,CASE40,STAC07\r EXTRN TABL2,STCHAN,PQH7,SUBDEQ,SETBIT,RESBIT,INFLAG,BLKFLG\r EXTRN MFSAVE,SUBENQ,SCOMMON,SYSRAM,ID1\r \r CSEG\r \r MATCHG: LD SP,STAC07 ;INITIALIZE STACK-POINTER\r \r CALL NEUTRAL ;SET LTUX IN NEUTRALIZED MODE\r \r PASPRO: PASSIVATE S,MTCHNR ;PASSIVATE MATCHING FUNCTION PROCESS\r CALL SCOMMON\r EI\r \r ;------------------------------------------------------------------------------\r START: LD HL,PQH7\r CALL SUBDEQ ;DEQUE FIRST ELEMENT IN MATCHING FUNCTION PROCESS QUEUE\r JP NC,PASPRO ;WHILE QUEUE IS NOT EMPTY THEN DO\r \r ;------------------------------------------------------------------------------\r ;BEGIN\r LD (MFSAVE),DE ; SAVE BUFFERADDRESS\r PUSH DE\r POP IX\r LD E,(IX+3) ; GET VALUE OF 2*TABL1 COUNTER\r LD D,0\r LD HL,TABL2\r SCF\r CCF\r SBC HL,DE ; POINTER TO STARTADDRESS OF THE APPROPRIATE ROUTINE\r LD E,(HL)\r INC HL\r LD D,(HL) \r EX DE,HL\r JP (HL) ; DO CASE(N) :\r \r ;-----------------------------------------------------------------------------\r CASE12: LD HL,STCHAN ; NEW RCP(MATCH.) DELEGATION :\r SET 2,(HL) ; SET CONDITION CODE-FLAG\r SET 4,(HL) ; SET PANEL STATUS REQUEST-FLAG\r JP RETBUF\r \r CASE13: CALL NEUTRAL ; DELEGATION DELETION\r JP RETBUF ; SET LTUX IN NEUTRALIZED MODE\r \r CASE14: SETOBIT PORT4,S,80H ; SET UP TEST MODE\r JP RETBUF\r CASE15: SETOBIT PORT4,R,80H ; SET UP NORMAL MODE\r JP RETBUF\r \r CASE16: SETOBIT PORT4,S,40H ; SET UP MONOCHROME MODE\r JP RETBUF\r CASE17: SETOBIT PORT4,R,40H ; SET UP COLOR MODE\r JP RETBUF\r \r CASE18: SETOBIT PORT6,R,20H ; SWITCH ON AUTO FUNCTION\r JP RETBUF\r CASE19: SETOBIT PORT6,S,20H ; SWITCH OFF AUTO FUNCTION\r JP RETBUF\r \r CASE20: SETOBIT PORT4,S,20H ; SWITCH ON AGC FUNCTION\r JP RETBUF\r CASE21: SETOBIT PORT4,R,20H ; SWITCH OFF AGC FUNCTION\r JP RETBUF\r \r CASE22: SETOBIT PORT6,R,10H ; SWITCH ON GATE BLAST\r JP RETBUF\r CASE23: SETOBIT PORT6,S,10H ; SWITCH OFF GATE BLAST\r JP RETBUF\r \r CASE24: SETOBIT PORT6,S,01H ; ADJUST PICTURE FRAME UPWARDS\r SETOBIT PORT6,R,02H\r JP RETBUF\r CASE25: SETOBIT PORT6,S,02H ; ADJUST PICTURE FRAME DOWNWARDS\r SETOBIT PORT6,R,01H\r JP RETBUF\r CASE26: SETOBIT PORT6,S,03H ; STOP FRAME ADJUSTMENT\r JP RETBUF\r \r CASE27: SETOBIT PORT5,R,40H ; ENTER VAC.BYPASS MODE\r SETOBIT PORT5,S,20H\r JP RETBUF\r CASE28: SETOBIT PORT5,R,60H ; ENTER VAC.IN MODE\r JP RETBUF\r CASE29: SETOBIT PORT5,R,20H ; ENTER VAC.OUT MODE\r SETOBIT PORT5,S,40H\r JP RETBUF\r CASE30: LD A,(IX+9)\r OUT (PORT7),A ; ADJUST VAC.AMPLITUDE\r JP RETBUF\r \r CASE31: IN A,PORT5\r AND 0F0H\r LD B,(IX+9)\r ADD A,B ; SET UP SPECIFIED MASK TYPE\r ADD A,08H ; AND SWITCH ON MASK\r OUT PORT5,A\r JP RETBUF\r CASE32: SETOBIT PORT5,R,0FH ; SWITCH OFF MASK\r JP RETBUF\r \r CASE33: SETOBIT PORT4,R,07H ; ENTER AUTOCOLOR BYPASS MODE\r LD HL,INFLAG\r LD (HL),00H ; CLEAR IN-FLAG\r JP RETBUF\r CASE34: LD HL,INFLAG ; ENTER AUTOCOLOR IN MODE\r LD (HL),01H ; SET IN-FLAG\r LD A,(BLKFLG)\r RR A\r JP NC,C1 ; IF BLK-FLG IS SET THEN DO\r ; BEGIN\r SETOBIT PORT4,R,02H ; ENTER AUTOCOLOR BLACK MODE\r SETOBIT PORT4,S,05H\r JP RETBUF ; END ELSE\r ; BEGIN\r C1: SETOBIT PORT4,R,01H ; ENTER AUTOCOLOR COLOR MODE\r SETOBIT PORT4,S,06H\r JP RETBUF ; END\r CASE35: SETOBIT PORT4,R,03H ; ENTER AUTOCOLOR OUT MODE\r SETOBIT PORT4,S,04H\r LD HL,INFLAG\r LD (HL),00H ; CLEAR IN-FLAG\r JP RETBUF\r CASE36: LD HL,BLKFLG\r LD (HL),01H ; SET BLK-FLG\r JP B1\r CASE37: LD HL,BLKFLG\r LD (HL),00H ; CLEAR BLK-FLG\r B1: LD A,(INFLAG)\r RR A ; IF IN-FLAG IS SET THEN\r JP C,CASE34 ; ENTER IN MODE\r JP RETBUF ; ELSE GO TO RETBUF\r \r CASE38: LD C,DACGAIN\r CALL DACOUT ; SEND OUT SPEC.ANALOG VALUES ON GAIN-DACS\r JP RETBUF\r \r CASE39: LD C,DACGMMA\r CALL DACOUT ; SEND OUT SPEC.ANALOG VALUES ON GAMMA-DACS\r JP RETBUF\r \r CASE40: LD C,DACLIFT\r CALL DACOUT ; SEND OUT SPEC.ANALOG VALUES ON LIFT-DACS\r JP RETBUF\r \r ;----------------------------------------------------------------------------\r DACOUT: LD B,6\r LD DE,09H\r ADD IX,DE\r NEXT: LD A,(IX)\r OUT (C),A\r INC IX\r INC C\r DEC B\r JP NZ,NEXT\r RET\r \r NEUTRAL LD C,0FFH ;\r LD HL,ANATAB ;\r LD B,20 ;INITIALIZE ANALOG VALUES\r N1: INC C ;\r OUTI ;\r JR NZ,N1 ;\r \r LD A,04H\r OUT (PORT4),A ;INITIALIZE PORT4\r LD A,00H\r OUT (PORT5),A ;INITIALIZE PORT5\r LD A,33H\r OUT (PORT6),A ;INITIALIZE PORT6\r RET\r \r ANATAB: DW 0F330H ;RED GAIN\r DW 0F330H ;BLUE GAIN\r DW 0F330H ;MASTER GAIN\r DW 0F330H ;RED GAMMA\r DW 0F330H ;BLUE GAMMA\r DW 0F330H ;MASTER GAMMA\r DW 0F330H ;RED LIFT\r DW 0F330H ;BLUE LIFT\r DW 0F330H ;MASTER LIFT\r DW 0F330H ;VAC AMPLITUDE\r \r \r \r RETBUF: LD DE,(MFSAVE) ; GET BUFFERADDRESS\r \r CALL ID1 ; RETURN BUFFER TO EMPTY BUFFER QUEUE\r \r JP START ;END-WHILE\r \r DSEG\r DS 32\r STAC07:\r END\r