***************************************************************************** * U M U L 32 x 32 ***************************************************************************** * * 1 2 3 4 bytes * * G_1A G_1B , G_1a G_1b * * G_2A G_2B , G_2a G_2b * * ------------------6------5------4------3------2------1----- x * * G_2b * G_1b * G_2b * G_1a * G_2b * G_1B * G_2b * G_1A * ------------------6------5------4------3------2------1----- + * G_2a * G_1b * G_2a * G_1a * G_2a * G_1B * G_2a * G_1A * -----------7------6------5------4------3------2------1----- + * G_2B * G_1b * G_2B * G_1a * G_2B * G_1B * G_2B * G_1A * -----------7------6------5------4------3------2------1----- + * G_2A * G_1b * G_2A * G_1a * G_2A * G_1B * G_2A * G_1A * ----8------7------6------5------4------3------2------1----- + * PRODUKT +1 +2 +3 +4 +5 +6 +7 * *---------------------------------------------------------------------------- * voorbeeld: $FFFF,FFFF x $FFFF,FFFF *---------------------------------------------------------------------------- * 1 2 3 4 bytes * FF FF FF FF * FF FF FF FF * ------------------6------5------4------3------2------1----- x * FE 01 * FE 01 * FE 01 * FE 01 * ------------------6------5------4------3------2------1----- + * * ------------------6------5------4------3------2------1----- * FE 01 * FE 01 * FE 01 * FE 01 * -----------7------6------5------4------3------2------1----- + * * ------------------6------5------4------3------2------1----- * FE 01 * FE 01 * FE 01 * FE 01 * -----------7------6------5------4------3------2------1----- + * * ------------------6------5------4------3------2------1----- * FE 01 * FE 01 * FE 01 * FE 01 * ----8------7------6------5------4------3------2------1----- + * produkt: FF FF FF FE 00 00 00 01 * transport: 1 2 3 3 2 1 *---------------------------------------------------------------------------- * voorbeeld: * 720 x T(uSec.) 720 x 250 * CAP(uF) = ---------------- = ------------- = 0.01202 uF * 499 x (Ra+2Rb) 499 x 30000 * ohm * * * N.B. 720/499=1,443 720 = $2D0 * 250 = $FA * 499 = $1F3 * 30000 = $7530 * *---------------------------------------------------------------------------- ORG $0000 PRODUKT RMB 8 G_1 RMB 4 G_2 RMB 4 X_PTR RMB 2 Y_PTR RMB 2 R_PTR RMB 2 *---------------------------------------------------------------------------- * voorbeeld: ORG $C000 MAIN LDD #$02D0 ; 720 STD T LDD #$01F3 ; 499 STD N JSR UDIV LDD QUOT STD TUSRES LDD QUOT+2 STD TUSRES+2 LDD QUOT+4 STD TUSRES+4 LDD #$00FA ; 250 STD T LDD #$7530 ; 30000 STD N JSR UDIV LDD QUOT STD G_1 LDD QUOT+2 STD G_1+2 LDD TUSRES STD G_2 LDD TUSRES+2 STD G_2+2 JSR UMUL JSR HEX_TO_DEC JMP * *---------------------------------------------------------------------------- ORG $E000 UMUL LDD #0 STD PRODUKT STD PRODUKT+2 STD PRODUKT+4 STD PRODUKT+6 LDX #G_1+3 STX X_PTR LDY #G_2+3 STY Y_PTR LDY #PRODUKT+6 STY R_PTR *------------------------------ L0 LDX X_PTR LDY Y_PTR LDAA 0,X LDAB 0,Y MUL LDY R_PTR ADDD 0,Y STD 0,Y L2 BCC L1 *------------------------------ DEY CPY #PRODUKT-1 ; #$FFFF BEQ L3 CLRA SEC ADCA 0,Y STAA 0,Y BRA L2 *------------------------------- L1 LDY R_PTR DEY STY R_PTR DEX STX X_PTR CPX #G_1-1 BNE L0 *------------------------------ LDY Y_PTR DEY STY Y_PTR CPY #G_2-1 BEQ L3 LDX #G_1+3 STX X_PTR LDD R_PTR ADDD #$03 STD R_PTR BRA L0 *------------------------------ L3 RTS ***************************************************************************** * UDIV ***************************************************************************** * * 20 22 24 2A 2B 2C 2D 2E * |---+---|---+---|---+---+---+---+---+---|---+---+---|---|---| * T +1 N +1 QUOT +1 +2 +3 +4 +5 TMP +1 +2 +3 +4 * * * 2F 30 37 3C 40 * |---+---+---+---+---+---+---+---|---+---+---+---+---|---+---+---+---+---| * TAB10 +1 +2 +3 +4 +5 +6 +7 RES +1 +2 +3 +4 +5 +6 +7 +8 +9 * *---------------------------------------------------------------------------- ORG $0020 T RMB 2 N RMB 2 QUOT RMB 6 TMP RMB 5 TAB10 FDB 10000 FDB 1000 FDB 100 FDB 10 RES RMB 10 TEL RMB 1 ASC_PTR RMB 2 TMP_PTR RMB 2 PROD_PTR RMB 2 *-------------------------- TUSRES RMB 6 *---------------------------------------------------------------------------- ORG $E100 UDIV LDD T LDX N IDIV STX QUOT LDX N FDIV STX QUOT+2 STD QUOT+4 RTS ***************************************************************************** * HEX_TO_DEC ***************************************************************************** HEX_TO_DEC LDAA #$05 STAA TEL LDY #TAB10 LDD PRODUKT+2 ; QUOT V0 LDX 0,Y IDIV STX 8,Y INY INY CPY #RES BNE V0 STD 8,Y *---------------------------------------------------------------------------- LDAA 1,Y ADDA #$30 STAA 0,Y LDAA 3,Y ADDA #$30 STAA 1,Y LDAA 5,Y ADDA #$30 STAA 2,Y LDAA 7,Y ADDA #$30 STAA 3,Y LDAA 9,Y ADDA #$30 STAA 4,Y *---------------------------------------------------------------------------- LDY #RES+5 STY ASC_PTR V2 LDX #TMP+3 STX TMP_PTR LDY #PRODUKT+7 STY PROD_PTR CLR TMP LDD #$0000 STD TMP+1 STD TMP+3 V1 LDAA 0,Y LDAB #$0A MUL ADDD 0,X STD 0,X DEY DEX CPX #TMP-1 BNE V1 LDX ASC_PTR LDAA TMP ADDA #$30 STAA 0,X INX STX ASC_PTR LDD TMP+1 STD PRODUKT+4 LDD TMP+3 STD PRODUKT+6 DEC TEL BNE V2 RTS *----------------------------------------------------------------------------