|
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: 8046 (0x1f6e) Types: TextFile Names: »DORCOM.TMP«
└─⟦b678e5579⟧ Bits:30005502 8" CR80 Floppy CR80FD_0031 ( TELECINE BACKUP ) └─⟦b678e5579⟧ Intel_ISIS_II └─ ⟦this⟧ »DORCOM.TMP«
;************************************************************************\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 ;################# 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 ENDM\r ;\r ;\r ;************************************************************************\r ; O G E P A 1\r ; VERSION 801127/CGR\r ;************************************************************************\r ;\r OGEPA1 MACRO #CHAN\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\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 ENDM\r ;\r ;***********************************************************************\r ; O G E P A 3\r ; VERSION 801127/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 ;################### Ogepa3 macro ###################################\r IF #CHAN.EQ.6\r ;+++++ #CHAN = 6\r LD A,(PANCO)\r ENDIF\r IF #CHAN.EQ.7\r ;+++++ #CHAN = 7\r LD A,(PANCOM)\r ENDIF\r CP 0 ;TEST IF DELEGATION IS ESTABLISHED\r SCF\r CCF\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 IF #CHAN.EQ.6\r ;+++++ #CHAN = 6\r LD A,(PANCO)\r ENDIF\r IF #CHAN.EQ.7\r ;+++++ #CHAN = 7\r LD A,(PANCOM)\r ENDIF\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+2 \r ;ENDIF\r ;\r B#$YM: CP A ;SET Z-FLAG\r SCF\r CCF ;RESET C-FLAG\r JP A#$YM+2 ;\r ;ENDIF\r A#$YM: CP 1 ;RESET Z-FLAG\r ;\r ;################### End macro #######################################\r ENDM\r ;\r ;\r ;************************************************************************\r ; O G E P A 2\r ; VERSION 801127/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 ;#################### 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 ENDM\r ;\r ;\r ;\r ;\r ;\r ;************************************************************************\r ; O D E P A 1\r ; VERSION 801129/CGR\r ;************************************************************************\r ;\r ODEPA1 MACRO #EI,#BSIZE\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 HL,23 ;REFORMAT BUFFER\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 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 ECOND2\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 ENDM\r \r