|
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: 5272 (0x1498) Types: TextFile Names: »INVEST.SRC«
└─⟦af81bc460⟧ Bits:30005550 8" CR80 Floppy CR80FD_0034 ( MATRIX Source and Abs-files ) └─⟦af81bc460⟧ Intel_ISIS_II └─ ⟦this⟧ »INVEST.SRC«
;******************************************************************************\r ;* *\r ;* D O R A A P P L I C A T I O N S / W *\r ;* *\r ;* DEVICE: MATRIX *\r ;* *\r ;* MODULE: INVESTIGATE SUBROUTINE *\r ;* *\r ;******************************************************************************\r \r PUBLIC INVEST\r EXTRN SUBENQ,SUBDEQ\r EXTRN TYPMAT,CPTYPE,CPSTAT\r EXTRN QKI,QIK,QXI,QIX\r \r PUBLIC CPSPEC\r \r CSEG\r INVEST: LD HL,QKI ;BEGIN\r CALL SUBDEQ ; TEST IF BUFFER FROM KEYBOARD MODULE\r JR NC,INVM1 ; AND IF YES THEN\r LD HL,QIK ; SAVE OUTGOING Q-HEAD\r JR INVM2 ;END ELSE\r INVM1: LD HL,QXI ;BEGIN\r CALL SUBDEQ ; TEST IF BUFFER FROM CR80 MODULE\r RET NC ; AND IF YES THEN\r LD HL,QIX ; SAVE OUTGOING Q-HEAD\r ;END\r INVM2: PUSH HL\r PUSH DE\r POP IX\r LD A,0\r CP (IX+3)\r JR Z,INVM4 ;IF SOURCE <> 00 THEN\r LD H,(IX+3) ;BEGIN\r LD L,(IX+4) ;\r CALL CPSPEC ; FIND CP TYPE SPECIFICATION\r INC HL ;\r BIT 2,(HL) ;\r JR Z,INVM3 ; IF CP IS IMPOSSIBLE THEN\r SET 6,(IX+2) ; SET BIT 6 IN STATUSBYTE\r INVM3: BIT 1,(HL) ;\r JR Z,INVM4 ; IF CP IS SENSELESS THEN\r SET 5,(IX+2) ; SET BIT 5 IN STATUSBYTE\r ;END\r INVM4: PUSH HL\r POP IY\r LD D,0 ;\r LD E,(IX+4) ;\r DEC E ;\r LD HL,CPSTAT ;\r ADD HL,DE ;\r LD A,(HL) ;FIND CP STATUS\r AND 7FH\r CP (IX+3)\r JR NZ,INVM5 ;IF CP IS ALLREADY ESTABLISHED/RELEASED THEN\r SET 0,(IX+2) ;SET BIT 0 IN STATUSBYTE\r INVM5: BIT 7,(HL)\r JR Z,INVM6 ;IF DESTINATION IS ON AIR THEN\r SET 1,(IX+2) ;SET BIT 1 IN STATUSBYTE\r INVM6: BIT 7,(IX+2)\r JR NZ,INVM7 ;IF RELEASE COMMAND THEN\r ;BEGIN\r LD (IX+3),A ; LOAD SOURCE NO. INTO SOURCEBYTE IN BUFFER\r AND 0FFH ;\r JP Z,INVM0 ; IF ALLREADY RELEASED THEN STOP INVESTIGATING\r ;END\r INVM7: BIT 7,(IX+2)\r JR Z,INVM7A ;IF ESTABLISH COMMAND THEN\r LD A,(HL) ;BEGIN\r AND 7FH ;\r JR Z,INVM7A ; IF DESTINATION IS OCCUPIED THEN\r SET 3,(IX+2) ; SET BIT 3 IN STATUSBYTE\r LD (IX+3),A ; REPLACE SPEC.SOURCE WITH THE ACTUAL SOURCE\r ;END\r INVM7A: LD A,(IX+3) ;\r CALL SUSED1 ;\r JR Z,INVM7B ;\r CALL SUSED2 ;\r JR Z,INVM7B ;\r CALL SUSED3 ;\r JR Z,INVM7B ;\r SET 7,A ;\r CALL SUSED1 ;\r JR Z,INVM7B ;\r CALL SUSED2 ;\r JR Z,INVM7B ;\r CALL SUSED3 ;\r JR NZ,INVM8 ;IF SOURCE IS USED THEN\r INVM7B: SET 2,(IX+2) ;SET BIT 2 IN STATUSBYTE\r JR INVM8 ;\r ;\r SUSED1: LD HL,CPSTAT\r LD BC,37\r CPIR\r RET\r SUSED2: INC HL\r INC HL\r LD BC,18\r CPIR\r RET\r SUSED3: INC HL\r INC HL\r LD BC,26\r CPIR\r RET\r \r INVM8: LD A,0\r CP (IX+3)\r JR Z,INVM11 ;IF SOURCE <> 00 THEN\r LD HL,CPSTAT ;BEGIN\r LD BC,85 ;\r INVM9: LD A,(IX+3) ; TEST IF SOURCE IS CONNECTED TO MORE\r CPIR ; DESTINATIONS THAN THOSE ALLREADY FOUND\r JR NZ,INV10A ; IF YES THEN\r PUSH BC ; BEGIN\r PUSH HL ;\r LD BC,CPSTAT ;\r AND A ;\r SBC HL,BC ;\r LD H,(IX+3) ;\r RES 7,H ;\r CALL CPSPEC ;\r INC HL ;\r BIT 0,(HL) ; TEST IF CURRENT DESTINATION\r POP HL ; INTERLOCKS THE SOURCE\r POP BC ;\r JR Z,INVM10 ; IF YES THEN\r SET 4,(IX+2) ; SET BIT 4 IN STATUSBYTE\r JR INVM11 ;\r INVM10: LD A,0 ;\r CP C ; IF THE CURRENT DESTINATION IS NOT THE\r JR NZ,INVM9 ; LAST IN CP STATUS TABLE THEN REPEAT\r ; END\r ;END\r INV10A: BIT 7,(IX+3) ;\r JR NZ,INVM11 ;IF ON AIR-BIT HAS NOT BEEN "SET" THEN\r ;BEGIN\r SET 7,(IX+3) ; "SET" ON AIR-BIT\r LD HL,CPSTAT ;\r LD BC,85 ;\r JR INVM9 ; REPEAT\r ;END\r INVM11: RES 7,(IX+3) ;"RESET" ON AIR-BIT\r BIT 7,(IX+2)\r JR Z,INVM0 ;IF ESTABLISH COMMAND THEN\r BIT 0,(IY+0) ;BEGIN\r JR Z,INVM0 ; IF DESTINATION IS AN INTERLOCKING ONE\r BIT 4,(IX+2) ; THEN TEST IF SOURCE IS ALLREADY COUPLED\r JR Z,INVM0 ; TO AN INTERLOCKING DESTINATION AND IF YES\r SET 3,(IX+2) ; SET BIT 3 IN STATUSBYTE\r ;END\r INVM0: PUSH IX\r POP DE ;GET BUFFERADDRESS\r POP HL ;GET Q-HEAD ADDRESS\r CALL SUBENQ ;SEND BUFFER TO THE ACTUAL Q-HEAD\r JP INVEST\r \r *******************************************************************************\r * CROSSPOINT TYPE SPECIFICATION SEARCH ROUTINE *\r *******************************************************************************\r \r ;ENTRY: (H) = SOURCE NO.\r ; (L) = DESTINATION NO.\r CPSPEC: LD A,0 ;PRESET REGISTERS\r LD B,8 ;\r LD C,38 ;\r DEC H ;MODIFY SOURCE- AND DESTINATION NO.'S\r DEC L ;\r AND A ;\r CPSP1: RR L ;MULTIPLY (DESTINATION NO. - 1) BY 38\r JR NC,CPSP2 ;\r ADD A,C ;\r CPSP2: RRA ;\r DJNZ CPSP1 ;\r RR L ;\r LD C,H ;\r LD H,A ;RESULT IN HL REGISTER\r ADD HL,BC ;ADD (SOURCE NO. - 1) TO HL REGISTER\r LD BC,TYPMAT ;\r ADD HL,BC ;ADD STARTADDRESS OF CP TYPE MATRIX\r ;TO HL REGISTER\r LD L,(HL) ;SUBTRACT 1 AND MULTIPLY BY 4\r DEC L ;\r SLA L ;\r SLA L ;\r LD H,0 ;\r LD BC,CPTYPE ;\r ADD HL,BC ;ADD STARTADDRESS OF CP TYPE SPECIFICATIONS\r RET ;\r ;EXIT: (HL) = ADDRESS OF FIRST BYTE OF\r ; REQUESTED CP SPECIFICATION\r \r END\r