|
|
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 - metrics - 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