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: 12352 (0x3040) Types: TextFile Names: »CR80.SRC«
└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files ) └─⟦af81bc460⟧ Intel_ISIS_II └─ ⟦this⟧ »CR80.SRC«
\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 \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 LIST S\r ;******************************************************************************\r ;* *\r ;* D O R A A P P L I C A T I O N S / W *\r ;* *\r ;* DEVICE: MATRIX (I/F 104) *\r ;* *\r ;* MODULE: CR80 COMMAND PROCESS *\r ;* *\r ;******************************************************************************\r \r PUBLIC CR80PR,SRCEBT,BYTE1,DESTBT,BYTES,BUFFT,COUNT\r PUBLIC TABSRC,TABDST,SRCLOG,DSTLOG,STAC05\r EXTRN CONDIT,STATUS,SCOMMON,SYSRAM,SUBDEQ,SUBENQ,IDEPA\r EXTRN PQH5,QXI,QIX,INVEST,QKE,QXT,PQH8,QEMPTY\r EXTRN ID1\r \r LINK DEFL 0\r CR80NO DEFL 5\r EXECUTE DEFL 9\r STATNR DEFL 8\r \r CSEG\r CR80PR: LD SP,STAC05 ;INITIALIZE STACKPOINTER\r PR01: PASSIVATE S,CR80NO\r PR02: CALL SCOMMON\r EI\r LD HL,CONDIT\r BIT 6,(HL)\r JR NZ,PR02 ;IF INITIALIZATION IN PROGRESS THEN WAIT\r PR03: LD HL,CONDIT\r BIT 2,(HL)\r JR Z,PR031 ;IF BUSY = 1 THEN\r ;BEGIN\r BIT 7,(HL) ; IF MANUAL OPERATION IN PROGRESS THEN\r JR Z,PR02 ; WAIT\r ;END\r PR031: LD HL,PQH5+1\r LD A,0\r CP (HL) ;IF NO BUFFERS IN PQH5 THEN PASSIVATE\r JR Z,PR01 ;CR80 COMMAND PROCESS\r \r LD HL,QEMPTY\r CALL SUBDEQ\r JR NC,PR02 ;IF NO BUFFERS IN QEMPTY THEN WAIT\r PUSH DE\r POP IY\r \r LD HL,PQH5\r CALL SUBDEQ ;GET INCOMING COMMAND\r PUSH DE\r POP IX\r \r LD A,(IX+10)\r CP 61\r JR NZ,PR04\r LD A,38 ;IF DESTINATION NO. = 61\r LD (IX+10),A ;THEN REPLACE IT WITH 38\r PR04: LD A,(IX+10)\r CP 62\r JR NZ,PR05\r LD A,39 ;IF DESTINATION NO. = 62\r LD (IX+10),A ;THEN REPLACE IT WITH 39\r PR05: LD A,(IX+10)\r CP 62\r JR NZ,PR06\r LD A,40 ;IF DESTINATION NO. = 63\r LD (IX+10),A ;THEN REPLACE IT WITH 40\r \r PR06: LD A,(IX+10)\r CALL DSTLOG ;MAKE DESTINATION NO. CONVERSION\r JP NZ,NVALID ;IF NO VALID DESTINATION NO. GOTO NVALID\r LD (IY+4),L\r \r LD A,(IX+9)\r CALL SRCLOG ;MAKE SOURCE NO. CONVERSION\r JR Z,PR06A ;IF NO VALID SOURCE NO. THEN\r LD L,00 ;INSERT SOURCE = 0\r PR06A: LD (IY+3),L\r \r LD A,00\r CP (IY+3)\r JR NZ,PR07 ;IF SOURCE = 00 THEN\r LD A,84H ;INSERT DELETE MESSAGE CODE IN COMMAND\r LD (IX+8),A\r PR07: LD A,80H\r CP (IX+8)\r JR NZ,PR08 ;IF ESTABLISH COMMAND THEN\r LD A,80H ;BEGIN\r LD (IY+2),A ; INSERT ESTABLISH STATUSBYTE IN BUFFER\r JR PR09 ;END ELSE\r PR08: LD A,00 ;BEGIN\r LD (IY+2),A ; INSERT RELEASE STATUSBYTE IN BUFFER\r LD (IY+3),A ; SET SOURCE = 00\r ;END\r PR09: CALL ID1 ;RETURN BUFFER TO EMPTY BUFFER QUEUE\r \r LD A,(IY+3)\r LD (SRCEBT),A ;SAVE INCOMING SOURCE NO.\r PUSH IY\r POP DE\r LD HL,QXI\r CALL SUBENQ ;SEND INTERNAL COMMAND BUFFER TO QXI\r CALL INVEST ;INVESTIGATE CROSSPOINT STATUS\r LD HL,QIX\r CALL SUBDEQ ;DEQUE BUFFER FROM INVEST\r PUSH DE\r POP IX\r LD A,(IX+2)\r LD (BYTE1),A ;SAVE STATUSBYTE\r LD A,00\r LD (IX+2),A ;CLEAR STATUS(CONDITION) BYTE\r \r LD HL,CONDIT\r BIT 7,(HL)\r JR Z,PR10 ;IF MANUAL OPERATION IN PROGRESS THEN\r SET 1,(IX+2) ;SET BIT 1 IN CONDITION BYTE\r PR10: LD HL,STATUS\r BIT 1,(HL)\r JR Z,PR11 ;IF COMPUTER OFF THEN\r SET 0,(IX+2) ;SET BIT 0 IN CONDITION BYTE\r PR11: LD A,0\r CP (IX+2)\r JR NZ,STAT1 ;IF MANUAL OPERATION IN PROGRESS OR\r ;COMPUTER OFF GOTO STAT1\r LD A,(BYTE1)\r AND 82H\r CP 02H ;IF RELEASE COMMAND WITH DESTINATION ON AIR\r JR Z,STAT1 ;GOTO STAT1\r \r LD A,(IX+4)\r CP 58\r JP Z,PR12\r CP 59\r JP NZ,PR13 ;IF ONE OF THE TEXT-DESTINATIONS 58 OR 59 THEN\r PR12: LD A,(BYTE1) ;BEGIN\r AND 41H ; IF NOT IMPOSSIBLE OR ALLREADY EXISTING CON-\r JP Z,ACCEPT ; NECTION GOTO ACCEPT\r ;END\r PR13: LD A,(BYTE1)\r AND 49H ;IF IMPOSSIBLE CONNECTION, DESTINATION OCCUPIED\r CP 00H ;SOURCE INTERLOCKED OR IF THE REQUESTED\r JR NZ,STAT1 ;CONDITION ALLREADY EXIST THEN GOTO STAT1\r \r ;IF THE CR80 COMMAND IS ACCEPTED BY\r ;THE MATRIX INVESTIGATION SUBROUTINE THEN\r ACCEPT: LD A,(BYTE1) ;BEGIN\r AND 80H ;\r LD (IX+2),A ; SAVE ESTABLISH/RELEASE-BIT\r PUSH IX ;\r POP DE ;\r LD HL,QKE ;\r CALL SUBENQ ; SEND BUFFER TO QKE AND\r ACTIVATE S,EXECUTE ; ACTIVATE EXECUTE MODULE\r LD HL,CONDIT ;\r SET 2,(HL) ; SET BUSY = 1\r JP PR03 ;END ELSE\r \r STAT1: ;BEGIN\r RES 6,(IX+2) ; RESET BIT 6(INVOKED BY COMMAND) IN COND.BYTE\r LD HL,BYTE1 ;\r BIT 1,(HL) ;\r JR Z,STAT2 ; IF DESTINATION IS ON AIR THEN\r SET 2,(IX+2) ; SET BIT 2 IN CONDITION BYTE\r STAT2: BIT 4,(HL) ;\r JR Z,STAT3 ; IF SOURCE(IF ANY) IS INTERLOCKED THEN\r SET 3,(IX+2) ; SET BIT 3 IN CONDITION BYTE\r STAT3: BIT 2,(HL) ;\r JR Z,STAT4 ; IF SOURCE(IF ANY) IS USED THEN\r SET 4,(IX+2) ; SET BIT 4 IN CONDITION BYTE\r STAT4: BIT 7,(HL) ;\r JR Z,STAT5 ; IF ESTABLISH COMMAND THEN\r LD A,(SRCEBT) ; BEGIN\r CP (IX+3) ;\r JR NZ,STAT4A ;\r BIT 0,(HL) ;\r JR Z,STAT6 ; IF DESTINATION WAS OCCUPIED THEN\r STAT4A: SET 7,(IX+2) ; SET BIT 7 IN CONDITION BYTE\r JR STAT6 ; END ELSE\r STAT5: BIT 0,(HL) ; BEGIN\r JR NZ,STAT6 ; IF REQUESTED CONDITION DOES NOT EXIST THEN\r SET 7,(IX+2) ; SET BIT 7 IN CONDITION BYTE\r ; END\r STAT6: LD HL,TABSRC ;\r LD B,0 ;\r LD C,(IX+3) ; MAKE SOURCE NO. CONVERSION\r ADD HL,BC ;\r LD A,(HL) ;\r LD (IX+3),A ;\r ;\r LD HL,TABDST-1 ;\r LD C,(IX+4) ; MAKE DESTINATION NO. CONVERSION\r ADD HL,BC ;\r LD A,(HL) ;\r LD (IX+4),A ;\r ;\r PUSH IX ;\r POP DE ;\r LD HL,QXT ;\r CALL SUBENQ ; SEND STATUS BUFFER TO STATUS TRANSM.PROCESS\r ACTIVATE S,STATNR ; ACTIVATE STATUS TRANSMITTING PROCESS\r JP PR03 ;END\r \r ;IF NON VALID DESTINATION NO. THEN\r NVALID: LD A,00 ;BEGIN\r LD (IY+2),A ;\r LD HL,CONDIT ;\r BIT 7,(HL) ;\r JR Z,NV1 ; IF MANUAL OPERATION IN PROGRESS THEN\r SET 1,(IY+2) ; SET BIT 1 IN CONDITION BYTE\r NV1: LD HL,STATUS ;\r BIT 1,(HL) ;\r JR Z,NV2 ; IF COMPUTER OFF THEN\r SET 0,(HL) ; SET BIT 0 IN CONDITION BYTE\r NV2: LD A,(IX+9) ; TRANSFER SOURCE AND DESTINATION NO.'S\r LD (IY+3),A ; UNCHANGED TO BUFFER\r LD A,(IX+10) ;\r LD (IY+4),A ;\r PUSH IY ;\r POP DE ;\r LD HL,QXT ;\r CALL SUBENQ ; SEND STATUS BUFFER TO STATUS TRANSM.PROCESS\r ACTIVATE S,STATNR ; ACTIVATE STATUS TRANSMITTING PROCESS\r PUSH IX ;\r POP DE ;\r CALL ID1 ; RETURN BUFFER TO EMPTY BUFFER QUEUE\r JP PR03 ;END\r \r ;-----------------------------------------------------------------------------\r \r ;ENTRY: REAL SOURCE NO. IN (A)\r ;\r ;EXIT : LOGIC SOURCE NO. IN (L)\r ; Z-FLAG SET,IF FOUND\r ; Z-FLAG RESET, IF NOT FOUND\r SRCLOG: LD HL,TABSRC\r LD BC,39\r CPIR\r RET NZ\r PUSH AF\r LD HL,39-1\r AND A\r SBC HL,BC\r POP AF\r RET\r \r ;------------------------------------------------------------------------------\r \r ;ENTRY: REAL DESTINATION NO. IN (A)\r ;\r ;EXIT : LOGIC DESTINATION NO. IN (L)\r ; Z-FLAG SET, IF FOUND\r ; Z-FLAG RESET, IF NOT FOUND\r DSTLOG: LD HL,TABDST\r LD BC,85\r CPIR\r RET NZ\r PUSH AF\r LD HL,85\r AND A\r SBC HL,BC\r POP AF\r RET\r \r \r *******************************************************************************\r * SOURCE- AND DESTINATION NO. CONVERSION TABLE *\r *******************************************************************************\r \r ; LOGIC NO. NO. NAME\r ;-----------------------------------------------------------------------------\r TABSRC: DB 00 ;REL \r DB 01 ;VTR1 \r DB 02 ;VTR2 \r DB 03 ;VTR3 \r DB 04 ;VTR4 \r DB 05 ;VTR5 \r DB 06 ;VTR6 \r DB 07 ;VTR7 \r DB 08 ;VTR8 \r DB 09 ;VCR1 \r DB 10 ;VCR2 \r DB 11 ;TC1 \r DB 12 ;TC2 \r DB 13 ;DIA1 \r DB 14 ;DIA2 \r DB 15 ;SLOMO \r DB 16 ;CNR1 \r DB 17 ;CNR2 \r DB 18 ;ST-5 \r DB 19 ;ST-M \r DB 20 ;ST-CITY \r DB 21 ;EXT1 \r DB 22 ;EXT2 \r DB 23 ;EXT3 \r DB 24 ;EXT4 \r DB 25 ;EXT5 \r DB 26 ;EXT6 \r DB 27 ;DFS1 \r DB 28 ;DFS2 \r DB 29 ;COLBAR \r DB 30 ;TEST \r DB 31 ;KGEN1 \r DB 32 ;KGEN2 \r DB 33 ;TXTGEN3 \r DB 34 ;TXTGEN4 \r DB 35 ;SPARE \r DB 36 ;ATR1 \r DB 37 ;ATR2 \r DB 40 ;MTC \r \r TABDST: DB 01 ;VTRA \r DB 02 ;VTR1 \r DB 03 ;VTR2 \r DB 04 ;VTR3 \r DB 05 ;VTR4 \r DB 06 ;VTR5 \r DB 07 ;VCR5 \r DB 08 ;VCR6 \r DB 09 ;VCR7 \r DB 10 ;VCR8 \r DB 11 ;VCR9 \r DB 12 ;VCR10 \r DB 13 ;VCR11 \r DB 14 ;VCR12 \r DB 15 ;VCR13 \r DB 16 ;VCR14 \r DB 17 ;SLOMO \r DB 18 ;ST5L1 \r DB 19 ;ST5L2 \r DB 20 ;ST5L3 \r DB 21 ;ST5L4 \r DB 22 ;ST5L5 \r DB 23 ;ST5L6 \r DB 24 ;ST5L7 \r DB 25 ;STML1 \r DB 26 ;STML2 \r DB 27 ;STML3 \r DB 28 ;CNR1L1 \r DB 29 ;CNR1L2 \r DB 30 ;CNR2L1 \r DB 31 ;CNR2L2 \r DB 32 ;TX1 \r DB 33 ;TX2 \r DB 34 ;TX3 \r DB 35 ;TX4 \r DB 36 ;DFS1 \r DB 37 ;DFS2 \r DB 38 ;CBAROP MON.\r DB 39 ;CBAROP MON.\r DB 40 ;DIA-LOAD\r DB 41 ;CNR1L3 \r DB 42 ;CNR1L4 \r DB 43 ;CNR1L5 \r DB 44 ;CNR2L3 \r DB 45 ;CNR2L4 \r DB 46 ;CNR2L5 \r DB 47 ;ATR1 \r DB 48 ;ATR2 \r DB 49 ;SPARE \r DB 50 ;SPARE \r DB 51 ;EXT1 FEEDBACK\r DB 52 ;EXT2 -\r DB 53 ;EXT3 -\r DB 54 ;EXT4 -\r DB 55 ;EXT5 -\r DB 56 ;EXT6 -\r DB 57 ;ST-CITY -\r DB 58 ;TEXT3 -\r DB 59 ;TEXT4 -\r DB 60 ;SPARE \r DB 65 ;ST-5 KGEN1\r DB 66 ; KGEN2\r DB 67 ; TXTGEN3\r DB 68 ; TXTGEN4\r DB 69 ; DIA1\r DB 70 ; DIA2\r DB 71 ; ST-M\r DB 72 ; ST-CITY\r DB 73 ; VTRA6\r DB 74 ; VTRA7\r DB 75 ; VTRA8\r DB 77 ;ST-M DIA1\r DB 78 ; DIA2\r DB 79 ; KGEN1\r DB 80 ; KGEN2\r DB 81 ; TXTGEN3\r DB 82 ; TXTGEN4\r DB 83 ;CNR1 KGEN1\r DB 84 ; KGEN2\r DB 85 ; TXTGEN3\r DB 86 ; TXTGEN4\r DB 88 ;CNR2 KGEN1\r DB 89 ; KGEN2\r DB 90 ; TXTGEN3\r DB 91 ; TXTGEN4\r \r DSEG\r SRCEBT DS 1\r DESTBT DS 1\r COUNT DS 1\r BYTE1 DS 1\r BYTES DS 1\r BUFFT DS 112\r DS 32\r STAC05:\r END\r \r