Category : BASIC Source Code
Archive   : UBAS830.ZIP
Filename : ECM1.ASM

 
Output of file : ECM1.ASM contained in archive : UBAS830.ZIP
;ECM1
;Sep 1988 by Yuji KIDA
;

INCLUDE UB.MAC

; 10 *ECM_SUB
; 20 v6=v4:v7=v5:v8=v4:v9=v5

@LET v6,v4
@LET v7,v5
@LET v8,v4
@LET v9,v5

; 30 v12=v6+v7:v13=v6-v7

@PUSH v6
@PUSH v7
@ADD
@POP v12

@PUSH v6
@PUSH v7
@SUB
@POP v13

JMP SHORT L40

; 40 for I%=1 to len(v3)-1

V3COUNT DB ?
EVEN
V3ADR DW ?
V3SEG DW ?
V3WORD DW ?

L40:
MOV BX,v3
LDS SI,CS:[BX] ;adr of counter
MOV AX,[SI]
AND AX,3FFFH
MOV BX,AX ;counter word length
MOV CL,4
SHL AX,CL ;16 ”{
MOV CX,AX ;counter bit length
SHL BX,1
MOV AX,[BX+SI] ;HIGHEST WORD(must be <>0)
INC CX
L40A:
DEC CX
SHL AX,1
JNC L40A
DEC CX ;LEN-1

ADD SI,2
MOV AX,[SI]
SHR AX,1 ;BIT0 is not needed
MOV CS:[V3WORD],AX
MOV CS:[V3COUNT],15
MOV CS:[V3ADR],SI
MOV CS:[V3SEG],DS

L40LP:
PUSH CX

; 50 v10=v12^2@v1:v11=v13^2@v1

@PUSH v12
@P2
@PUSH v1
@MOD
@POP v10

@PUSH v13
@P2
@PUSH v1
@MOD
@POP v11

; 60 v6=v10*v11@v1

@PUSH v10
@PUSH v11
@MUL
@PUSH v1
@MOD
@POP v6

; v7=(v10-v11)*(v11+v2*(v10-v11)@v1)@v1

@PUSH v10
@PUSH v11
@SUB
@PUSH v11
@PUSH v2
@PUSH v10
@PUSH v11
@SUB
@MUL
@PUSH v1
@MOD
@ADD
@MUL
@PUSH v1
@MOD
@POP v7

; 70 v12=v6+v7:v13=v6-v7

@PUSH v6
@PUSH v7
@ADD
@POP v12

@PUSH v6
@PUSH v7
@SUB
@POP v13

; 80 if bit(I%,v3)

SHR CS:[V3WORD],1
PUSHF
DEC CS:[V3COUNT]
JNZ L80A
MOV CS:[V3COUNT],16
LDS SI,CS:DWORD PTR [V3ADR]
ADD SI,2
MOV CS:[V3ADR],SI
MOV AX,[SI]
MOV CS:[V3WORD],AX
L80A:
POPF
JC L90
JMP L110

; 90 :then v10=v13*(v4+v5)@v1:v11=v12*(v4-v5)@v1

L90:
@PUSH v13
@PUSH v4
@PUSH v5
@ADD
@MUL
@PUSH v1
@MOD
@POP v10

@PUSH v12
@PUSH v4
@PUSH v5
@SUB
@MUL
@PUSH v1
@MOD
@POP v11

; 100 :v4=(v10+v11)^2@v1*v9@v1:v5=(v10-v11)^2@v1*v8@v1

@PUSH v10
@PUSH v11
@ADD
@P2
@PUSH v1
@MOD
@PUSH v9
@MUL
@PUSH v1
@MOD
@POP v4

@PUSH v10
@PUSH v11
@SUB
@P2
@PUSH v1
@MOD
@PUSH v8
@MUL
@PUSH v1
@MOD
@POP v5

JMP L130

; 110 :else v10=v13*(v8+v9)@v1:v11=v12*(v8-v9)@v1

L110:
@PUSH v13
@PUSH v8
@PUSH v9
@ADD
@MUL
@PUSH v1
@MOD
@POP v10

@PUSH v12
@PUSH v8
@PUSH v9
@SUB
@MUL
@PUSH v1
@MOD
@POP v11

; 120 :v8=(v10+v11)^2@v1*v5@v1:v9=(v10-v11)^2@v1*v4@v1

@PUSH v10
@PUSH v11
@ADD
@P2
@PUSH v1
@MOD
@PUSH v5
@MUL
@PUSH v1
@MOD
@POP v8

@PUSH v10
@PUSH v11
@SUB
@P2
@PUSH v1
@MOD
@PUSH v4
@MUL
@PUSH v1
@MOD
@POP v9

; 130 next

L130:
POP CX
DEC CX
JZ L140
JMP L40LP

; 140 return

L140:
RETURN



  3 Responses to “Category : BASIC Source Code
Archive   : UBAS830.ZIP
Filename : ECM1.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/