* * BSM:MCT MATRIX FUNCTIONS FOR BASIC * * This file was obtained by disassembling an working * version of DBASIC 1.1 (mod 0). This was necessary * because the files BSM:MCT1 and BSM:MCT2 were missing * from the disks containing the source code which * Proteus purchased from Processor Techonology in * 1980. The disassembly was done by Charles L. Athey, III * for Proteus. * * The names of variables, labels and subroutines which have * names other than VarX, LabX, and SubX were determined by * using the names which other files used to reference those * locations. * * At this time I have made no attempt to comment what is * taking place in these routines. * * Date : January 22, 1981 * MADD EQU $ * XRA A Lab5 STA MODE CALL Sub1 Lab4 PUSH B PUSH D PUSH H LDA MODE ORA A JZ Lab1 CALL FSUB JMP Lab3 Lab1 CALL FADD Lab3 POP H POP D LXI B,10 DAD B XCHG DAD B XCHG XTHL DAD B XTHL POP B PUSH H LHLD Var2 DCX H SHLD Var2 MOV A,H ORA L POP H JNZ Lab4 RET . * MSUB EQU $ * MVI A,1 JMP Lab5 Sub6 PUSH H PUSH D LXI D,Var3 CALL Sub4 CALL Sub4 POP H PUSH H LXI D,Var4 CALL Sub4 CALL Sub4 LHLD Var3 MOV E,L MOV C,H MVI D,0 MOV B,D CALL IMUL SHLD Var2 POP D POP H RET * Sub4 MOV A,M ORA A JZ MDERR STAX D INX H INX D MOV A,M ORA A JNZ MDERR INX H RET * Sub1 PUSH B CALL Sub6 MVI B,6 Lab7 LDAX D CMP M JNZ MDERR XTHL CMP M INX H XTHL INX H INX D DCR B JNZ Lab7 LXI B,9 DAD B XCHG DAD B XTHL DAD B XTHL POP B RET * MOV A,M ORA A JNZ MDERR INX H MOV A,M ORA A JNZ MDERR INX H RET * MMUL EQU $ * PUSH B CALL Sub6 LXI B,15 DAD B SHLD Var5 XCHG DAD B SHLD Var6 LHLD Var3 XCHG LHLD Var4 MOV A,L SUB D JNZ MDERR MOV L,E POP D CALL Sub7 Lab9 CALL Sub8 LXI B,10 CALL Sub9 DCX H SHLD TEMP1 Lab8 CALL Sub10 PUSH H CALL Sub11 POP D LXI B,Var7 CALL FMUL LXI D,Var7 LHLD TEMP1 MOV B,H MOV C,L CALL FADD LXI H,Var8 INR M LXI H,Var9 INR M LDA Var10 CMP M JNZ Lab8 XRA A MOV M,A STA Var8 LXI H,Var11 INR M LXI H,Var12 INR M LDA Var13 CMP M JNZ Lab9 XRA A MOV M,A STA Var11 LXI H,Var14 INR M LXI H,Var15 INR M LDA Var3 CMP M JNZ Lab9 RET * MINV EQU $ * PUSH B LXI D,Var3 CALL Sub4 CALL Sub4 INX H INX H SHLD Var5 SHLD Var6 LHLD Var3 SHLD Var4 MOV A,L SUB H JNZ MDERR POP D CALL Sub7 MVI D,0 LXI B,10 CALL IMUL SHLD TEMP1 CALL MZERO LDA Var3 STA TEMP2 LHLD TEMP1 XCHG LHLD Var17 Lab13 CALL Sub12 DAD D LDA TEMP2 DCR A STA TEMP2 JNZ Lab13 Lab10 LHLD Var9 SHLD Var12 SHLD Var15 INX H SHLD Var8 LDA Var3 CMP L JZ Lab12 XRA A STA MODE Lab11 CALL Sub23 INR M LDA Var3 CMP M JNZ Lab11 LXI H,Var9 INR M JMP Lab10 Lab12 LHLD Var9 SHLD Var12 SHLD Var15 DCX H SHLD Var8 MOV A,H ORA A JNZ Lab14 MVI A,01 STA MODE Lab15 CALL Sub23 DCR M JP Lab15 LXI H,Var9 DCR M JMP Lab12 Lab14 CALL Sub13 LXI H,TEMP1 CALL Sub12 Lab29 CALL Sub10 LXI B,9 DAD B LXI B,Var18 LXI D,Var19 CALL FDIV MVI A,1 STA Var20 LXI H,Var18 SHLD TEMP2 CALL Sub15 LHLD Var8 INX H SHLD Var8 SHLD Var12 LDA Var3 CMP L JNZ Lab29 RET * Sub7 XCHG MOV A,M CMP E JNZ MDERR INX H XRA A CMP M JNZ MDERR INX H MOV A,M CMP D XRA A INX H ORA M JNZ MDERR INX H ORA M JNZ MDERR INX H ORA M JNZ MDERR INX H SHLD Var17 Sub13 LXI H,Var15 LXI B,12 CALL Sub9 RET * Sub23 CALL Sub11 PUSH H CALL Sub16 JNZ Lab16 LDA MODE ORA A JNZ MDER1 Lab19 CALL Sub10 CALL Sub16 JNZ Lab18 LXI H,Var8 INR M LDA Var3 CMP M JZ MDER1 JMP Lab19 Lab18 LXI H,0 SHLD Var9 SHLD Var12 LXI D,10 LDA Var3 MOV C,A MVI B,0 CALL IMUL SHLD Var2 PUSH H CALL Sub17 POP H SHLD Var2 LHLD Var5 PUSH H LHLD Var17 SHLD Var5 SHLD Var6 CALL Sub17 POP H SHLD Var5 SHLD Var6 Lab16 CALL Sub10 SHLD TEMP1 PUSH H LXI D,MODE MVI B,10 Lab20 MOV A,M STAX D INX H INX D DCR B JNZ Lab20 POP H CALL Sub16 POP H JZ Lab21 LXI B,9 DAD B SHLD TEMP2 MVI A,1 STA Var20 CALL Sub15 LXI H,Var18 SHLD TEMP2 XRA A STA Var20 CALL Sub15 CALL Sub18 LHLD Var5 PUSH H LHLD Var17 SHLD Var5 SHLD Var6 CALL Sub18 POP H SHLD Var5 SHLD Var6 LHLD Var15 SHLD Var9 SHLD Var12 LHLD TEMP1 LXI B,10 CALL Sub9 Lab21 LXI H,Var8 RET * Sub16 MVI B,10 XRA A Lab22 CMP M RNZ INX H DCR B JNZ Lab22 RET * Sub17 CALL Sub11 PUSH H CALL Sub10 POP D Lab23 MOV B,M LDAX D MOV M,A MOV A,B STAX D INX D INX H PUSH H LHLD Var2 DCX H SHLD Var2 MOV A,L ORA H POP H JNZ Lab23 RET * Sub15 LXI H,0 SHLD Var12 SHLD Var11 LHLD Var8 SHLD Var14 Lab24 CALL Sub10 CALL Sub19 CALL Sub8 CALL Sub19 LXI H,Var12 INR M LXI H,Var11 INR M LDA Var4 CMP M JNZ Lab24 RET * Sub19 LXI B,9 DAD B MOV B,H MOV C,L XCHG LHLD TEMP2 LDA Var20 ORA A JZ Lab25 CALL FMUL RET * Lab25 CALL FDIV RET * Sub18 LXI H,0 SHLD Var9 SHLD Var12 Lab26 CALL Sub11 PUSH H CALL Sub10 LXI B,9 DAD B XCHG POP H DAD B MOV B,D MOV C,E XCHG CALL FSUB LXI H,Var9 INR M LXI H,Var12 INR M LDA Var4 CMP M JNZ Lab26 RET * Sub9 XRA A PUSH D MOV D,A Lab27 MOV A,D MOV M,A INX H DCX B MOV A,C ORA B JNZ Lab27 POP D RET * Sub12 MVI M,10H INX H LXI B,8 CALL Sub9 MVI M,81H INX H RET * Sub21 XCHG MOV C,A MVI B,0 CALL IMUL LXI B,10 XCHG RET * Sub11 LHLD Var15 LDA Var10 CALL Sub21 LHLD Var9 DAD D XCHG CALL IMUL XCHG LHLD Var5 DAD D RET * Sub10 LHLD Var8 LDA Var13 CALL Sub21 LHLD Var12 DAD D XCHG CALL IMUL XCHG LHLD Var6 DAD D RET * Sub8 LHLD Var14 LDA Var13 CALL Sub21 LHLD Var11 DAD D XCHG CALL IMUL XCHG LHLD Var17 DAD D RET * MDERR LXI B,MES3+1 I don't know what significance this JMP ERROR has, it works but I don't know why! * MDER1 LXI B,MES3+10H Same as for MDERR JMP ERROR * Var3 DS 1 Var10 DS 1 Var4 DS 1 Var13 DS 1 Var2 DS 2 TEMP1 DS 9 Var19 DS 1 TEMP2 DS 9 Var7 DS 1 MODE DS 9 I am not sure why these locations are TEMP3 EQU MODE reference by 2 different variables Var18 DS 1 Var5 DS 2 Var6 DS 2 Var17 DS 2 Var15 DS 2 Var9 DS 2 Var8 DS 2 Var12 DS 2 Var14 DS 2 Var11 DS 2 Var20 DS 1 *