home *** CD-ROM | disk | FTP | other *** search
- ; CLIBMATH.MAC
- ; Multiply and divide routines (c)1981 UltiMeth Corp. Permission is granted
- ; to reproduce them without charge, provided this notice is included.
-
- CSEG
-
- o.:: POP B
- POP D
- PUSH B
- MOV A,L
- ORA E
- MOV L,A
- MOV A,H
- ORA D
- MOV H,A
- RET
-
- x.:: POP B
- POP D
- PUSH B
- MOV A,L
- XRA E
- MOV L,A
- MOV A,H
- XRA D
- MOV H,A
- RET
-
- a.:: POP B
- POP D
- PUSH B
- MOV A,L
- ANA E
- MOV L,A
- MOV A,H
- ANA D
- MOV H,A
- RET
-
- e.0:: MOV A,H
- ORA L
- RZ
- e.t:: LXI H,0
- e.2:: INR L
- RET
-
- e.:: POP B
- POP D
- PUSH B
- e.1: MOV A,H
- CMP D
- MOV A,L
- LXI H,0
- JNZ e.f
- CMP E
- JNZ e.f
- INR L
- RET
-
- e.f: XRA A
- RET
-
- c.not:: MOV A,H
- ORA L
- JZ e.2
- LXI H,0
- XRA A
- RET
-
- n.:: POP B
- POP D
- PUSH B
- n.1: MOV A,H
- CMP D
- MOV A,L
- LXI H,1
- RNZ
- CMP E
- RNZ
- DCR L
- RET
-
- c.ge:: XCHG
- c.le:: MOV A,D
- CMP H
- JNZ c.lt1
- MOV A,E
- CMP L
- JNZ c.lt3
- true: LXI H,0
- INR L
- RET
-
- c.gt:: XCHG
- c.lt:: MOV A,D
- c.lt1: XRA H
- JM negHL
- MOV A,D
- CMP H
- JNZ c.lt3
- MOV A,E
- CMP L
- c.lt3: LXI H,1
- RC
- c.lt4: DCR L
- RET
-
- negHL: MOV A,H
- ANA A
- LXI H,1
- JM c.lt4
- ORA L
- RET
-
- c.tst:: MOV A,H
- XRI 128
- MOV H,A
- DAD D
- RET
-
- c.uge:: XCHG
- c.ule:: MOV A,H
- CMP D
- JNZ c.ule1
- MOV A,L
- CMP E
- c.ule1: LXI H,1
- JNC c.true
- c.fals: DCR L
- RET
-
- c.true: ORA L
- RET
-
- c.ugt:: XCHG
- c.ult:: MOV A,D
- CMP H
- JNZ c.rt
- MOV A,E
- CMP L
- c.rt: LXI H,1
- RC
- DCR L
- RET
-
- c.asr:: XCHG
- MOV A,H
- RAL
- c.shf: DCR E
- RM
- MOV A,H
- RAR
- MOV H,A
- MOV A,L
- RAR
- MOV L,A
- JMP c.asr+1
-
- c.usr:: XCHG
- XRA A
- JMP c.shf
-
- c.asl:: XCHG
- DCR E
- RM
- DAD H
- JMP c.asl+1
-
- s.:: POP B
- POP D
- PUSH B
- s.1:: MOV A,E
- SUB L
- MOV L,A
- MOV A,D
- SBB H
- MOV H,A
- RET
-
- c.neg:: DCX H
- c.com:: MOV A,H
- CMA
- MOV H,A
- MOV A,L
- CMA
- MOV L,A
- RET
-
- g.:: MOV A,M
- c.sxt:: MOV L,A
- RLC
- SBB A
- MOV H,A
- RET
-
- h.:: MOV A,M
- INX H
- MOV H,M
- MOV L,A
- RET
-
- q.:: XCHG
- POP H
- XTHL
- MOV M,E
- INX H
- MOV M,D
- XCHG
- RET
-
- .switch::
- XCHG
- POP H
- S.9: MOV C,M
- INX H
- MOV B,M
- INX H
- MOV A,B
- ORA C
- JZ S.8
- MOV A,M
- INX H
- CMP E
- MOV A,M
- INX H
- JNZ S.9
- CMP D
- JNZ S.9
- MOV H,B
- MOV L,C
- S.8: PCHL
-
- c.mult:: MOV B,H
- MOV C,L
- LXI H,0
- MOV A,D
- ORA A
- MVI A,16
- JNZ .MLP
- MOV D,E
- MOV E,H
- RRC
- .MLP: DAD H
- XCHG
- DAD H
- XCHG
- JNC .MSK
- DAD B
- .MSK: DCR A
- JNZ .MLP
- RET
-
- c.udv:: XRA A
- PUSH PSW
- JMP c.d1
-
- c.div:: MOV A,D
- XRA H
- PUSH PSW
- XRA H
- XCHG
- CM c.neg
- XCHG
- MOV A,H
- ORA A
- c.d1: CP c.neg
- MOV C,L
- MOV B,H
- LXI H,0
- MOV A,B
- INR A
- JNZ .DV3
- MOV A,D
- ADD C
- MVI A,16
- JC .DV1
- .DV3: MOV L,D
- MOV D,E
- MOV E,H
- MVI A,8
- .DV1: DAD H
- XCHG
- DAD H
- XCHG
- JNC .DV4
- INX H
- .DV4: PUSH H
- DAD B
- POP H
- JNC .DV5
- DAD B
- INX D
- .DV5: DCR A
- JNZ .DV1
- XCHG
- POP PSW
- RP
- XCHG
- CALL c.neg
- XCHG
- JMP c.neg
-
- $END:: DS 0 ;program end
- END o. ;end of MATHLIB.MAC
-