|
|
DataMuseum.dkPresents historical artifacts from the history of: Intel ISIS Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Intel ISIS Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - 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