



P.S. Эх, вот если бы Shaos сделал подсветку синтаксиса z80 в форуме...

Code: Select all
;
; Project: Z80 floating point math library
; Author: Nat Wadsworth
; Date: 1979
; Source: "Z80 software gourmet guide & cookbook", 1990
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decadd And A ;
dcad1 Ld A,(De) ;
Adc A,(Hl) ;
Daa ;
Ld (Hl),A ;
Inc De ;
Cpi ;
Jp Pe,dcad1 ;
Ret ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decsub Ex De,Hl ;
Scf ;
dcsb1 Ld A,0x99 ;
Adc A,(Hl) ;
Sbc A,(Hl) ;
Ex De,Hl ;
Adc A,(Hl) ;
Daa ;
Ex De,Hl ;
Ld (Hl),A ;
Inc De ;
Cpi ;
Jp Pe,dcsb1 ;
Ret ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sgnadd Ld Hl,sign1 ;
Ld A,(sign2) ;
Cp (Hl) ;
Jp Z,sar2 ;
Jp C,sar3 ;
sar1 Call cmpr12 ;
Jp C,sb12 ;
Xor A ;
Ld (sign2),A ;
Jp sb21 ;
sb12 Call shift ;
Ld Hl,shft ;
Ld De,two ;
Ld Bc,0x0004 ;
Call decsub ;
Ret ;
sar2 Ld Hl,two ;
Ld De,one ;
Ld Bc,0x0004 ;
Call decadd ;
Ret ;
sar3 Call cmpr12 ;
Jp C,sb12 ;
Ld A,0x80 ;
Ld (sign2),A ;
sb21 Ld Hl,one ;
Ld De,two ;
Ld Bc,0x0004 ;
Call decsub ;
Ret ;
cmpr12 Ld Hl,twom ;
Ld De,onem ;
Ld Bc,0x0004 ;
cmpr Ld A,(De) ;
Cp (Hl) ;
Ret Nz ;
Dec De ;
Cpd ;
Jp Pe,cmpr ;
Ret ;
shift Ld Hl,twom ;
Ld De,shftm ;
Ld Bc,0x0008 ;
movlop Ld A,(Hl) ;
Ld (De),A ;
Dec De ;
Cpd ;
Jp Pe,movlop ;
Ret ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sngsub Ld Hl,sign1 ;
Ld A,(sign2) ;
Cp (Hl) ;
Jp Nz,difsgn ;
And A ;
Jp M,nega ;
Call cmpr12 ;
Jp Nc,sb21 ;
Ld A,0x80 ;
Ld (sign2),A ;
Jp sb12 ;
difsgn Ld A,(sign2) ;
Add A,0x80 ;
Ld (sign2),A ;
Jp sar2 ;
nega Call cmpr12 ;
Jp Nz,neg1 ;
Jp Nc,sb21 ;
neg1 Xor A ;
Ld (sign2),A ;
Jp sb12 ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fpnorm Ld A,B ;
And A ;
Jp Z,noexco ;
Ld Hl,fpace ;
Ld (Hl),B ;
noexco Ld Hl,fpacm ;
Ld A,(Hl) ;
Ld Hl,si ;
And A ;
Jp M,accmin ;
Xor A ;
Ld (Hl),A ;
Jp aczert ;
accmin Ld (Hl),A ;
Ld Bc,0x0004 ;
Ld Hl,fpext ;
Call complm ;
aczert Ld Hl,fpacm ;
Ld B,0x04 ;
look0 Ld A,(Hl) ;
And A ;
Jp Nz,acnonz ;
Dec Hl ;
Dec B ;
Jp Nz,look0 ;
Ld Hl,fpace ;
Xor A ;
Ld (Hl),A ;
Ret ;
acnonz Ld Hl,fpext ;
Ld Bc,0x0004 ;
Call rotatl ;
Ld A,(fpacm) ;
And A ;
Jp M,accset ;
Dec (Hl) ;
Jp acnonz ;
accset Ld Hl,fpacm ;
Ld Bc,0x0003 ;
Call rotatr ;
Ld Hl,si ;
Ld A,(Hl) ;
And A ;
Ret P ;
Ld Hl,fpacl ;
Ld Bc,0x0003 ;
Call complm ;
Ret ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rotatl And A ;
rotl Rl (Hl) ;
Cpi ;
Ret Po ;
Jp rotl ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rotatr And A ;
rotr Rr (Hl) ;
Cpd ;
Ret Po ;
Jp rotr ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
complm Ld A,(Hl) ;
Cpl ;
Add A,0x01 ;
morcom Ld (Hl),A ;
Cpi ;
Ret Po ;
Ld A,(Hl) ;
Cpl ;
Adc A,0x00 ;
Jp morcom ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fpadd Ld Hl,fpacm ;
Ld B,0x03 ;
ckzacc Ld A,(Hl) ;
And A ;
Jp Nz,nonzac ;
Dec B ;
Jp Z,movop ;
Dec Hl ;
Jp ckzacc ;
movop Ex De,Hl ;
Ld Hl,fpopl ;
Ld Bc,0x0004 ;
Ldir ;
Ret ;
nonzac Ld Hl,fpopm ;
Ld B,0x03 ;
ckzop Ld A,(Hl) ;
And A ;
Jp Nz,ckeqex ;
Dec B ;
Ret Z ;
Dec Hl ;
Jp ckzop ;
ckeqex Ld Hl,fpace ;
Ld A,(Hl) ;
Ld Hl,fpope ;
Cp (Hl) ;
Jp Z,shacop ;
Neg ;
Add A,(Hl) ;
Jp P,skpneg ;
Neg ;
skpneg Cp 0x18 ;
Jp M,lineup ;
Ld A,(Hl) ;
Ld Hl,fpace ;
Sub (Hl) ;
Ret M ;
Ld Hl,fpacl ;
Jp movop ;
lineup Ld A,(Hl) ;
Ld Hl,fpace ;
Sub (Hl) ;
Jp M,shifto ;
Ld D,A ;
moracc Ld Hl,fpace ;
Call shloop ;
Dec D ;
Jp Nz,moracc ;
Jp shacop ;
shifto Ld D,A ;
morop Ld Hl,fpope ;
Call shloop ;
Inc D ;
Jp Nz,morop ;
shacop Ld Hl,fpext ;
Ld (Hl),0x00 ;
Ld Hl,foext ;
Ld (Hl),0x00 ;
Ld Hl,fpace ;
Call shloop ;
Ld Hl,fpope ;
Call shloop ;
Ld Hl,fpext ;
Ex De,hl ;
Ld Bc,0x0004 ;
Call adder ;
Ld B,0x00 ;
Call fpnorm ;
Ret ;
shloop Inc (Hl) ;
Dec Hl ;
Ld Bc,0x0004 ;
fshift Ld A,(Hl) ;
And A ;
Jp M,bring1 ;
Call rotatr ;
Inc Hl ;
Ret ;
bring1 Rla ;
Call rotr ;
Inc Hl ;
Ret ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fpsub Ld Hl,fpacl ;
Ld Bc,0x0003 ;
Call complm ;
Jp fpadd ;
adder And A ;
addmor Ld A,(De) ;
Adc A,(Hl) ;
Ld (De),A ;
Cpi ;
Ret Po ;
Inc De ;
Jp addmor ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
si Db 0x00 ;
simd Db 0x00 ;
bitct Db 0x00 ;
fpext Db 0x00 ;
fpacl Db 0x00 ;
fpacn Db 0x00 ;
fpacm Db 0x00 ;
fpace Db 0x00 ;
work Db 0x00 ;
work1 Dw 0x0000 ;
foext Db 0x00 ;
fpopl Db 0x00 ;
fpopn Db 0x00 ;
fpopm Db 0x00 ;
fpope Db 0x00 ;
ppwrk1 Db 0x00 ;
ppwrk2 Db 0x00 ;
ppwrk3 Db 0x00 ;
pplsb Db 0x00 ;
ppnsb Db 0x00 ;
ppmsb Db 0x00 ;
ppext Db 0x00 ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sign1 Db 0x00 ;
sign2 Db 0x00 ;
one Db 0x00,0x00,0x00 ;
onem Db 0x00 ;
two Db 0x00,0x00,0x00 ;
twom Db 0x00 ;
shft Db 0x00,0x00,0x00 ;
shftm Db 0x00 ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~