From b9c54c9a1e027b35fba71efa26378a555cfd75db Mon Sep 17 00:00:00 2001 From: Tolik Trek Date: Fri, 6 Mar 2026 04:31:14 +1000 Subject: [PATCH] ... --- ...лное описание команд микропроцессора Z80.doc | Bin 0 -> 2005504 bytes constants/SP2000.inc | 1 + math.asm | 4968 +++++++++++++++++ 3 files changed, 4969 insertions(+) create mode 100644 Docs/Полное описание команд микропроцессора Z80.doc create mode 100644 math.asm diff --git a/Docs/Полное описание команд микропроцессора Z80.doc b/Docs/Полное описание команд микропроцессора Z80.doc new file mode 100644 index 0000000000000000000000000000000000000000..3a037987adec237321ca7baca4d416f3c317c26a GIT binary patch literal 2005504 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%0Dx0ck<`t1gpsDx+Q3ymQ?M_S+r{5*%8Q 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 X_?$@}x5kG>Qk2ty>K@4fl>Ej>8F&u|RU*8oT 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

g*z+rD>uKE@Y?2t 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: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%0Dh#a$xBT{^0e3OCpx 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 V_UUs3d6jc@8-@Ni{eRg5{|7~^4YvRQ literal 0 HcmV?d00001 diff --git a/constants/SP2000.inc b/constants/SP2000.inc index de95dd7..34654e7 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -351,6 +351,7 @@ FastRAM: .ON EQU #FB ; 祭 IN A,(FastRAM.ON) - ਡ ﬨ .OFF EQU #7B ; ⪫祭 IN A,(FastRAM.OFF) - ਡ ﬨ .SLOT0 EQU #5C ; ४祭 ࠭ FastRAM.ON 㫥 (bit0..1) - ਡ ﬨ +; ४祭 ࠭ ࠡ⠥ ⮫쪮 SYS_PORT.ROM. ;!TODO ⠢ ⮢ ⥭ #FB ७ SLOT0 ; ⮡ 祭 ॣ ࠭﫠 ࠭ 0 ( 祭 ) ;; diff --git a/math.asm b/math.asm new file mode 100644 index 0000000..06d74eb --- /dev/null +++ b/math.asm @@ -0,0 +1,4968 @@ +; +;ےਣ᪨ +; +arctan_88: +;Input: +; D.E +;Output: atan(D.E)->D.E + push de + ld a,d + or a + jp p,$+5 + neg + ld d,a + dec a + jr nz,.checkneedinv + inc e : dec e : jr nz,.checkneedinv + pop af : rla : ld de,201 : ret nc : ld de,-201 : ret +.checkneedinv: + inc a + call nz,.DEgt1_Inv +;0.E is the value to atan + ld hl,.adjustatan + push hl + ld a,e + cp 46 : ret c + dec a : cp 42h : ret c + dec a : cp 4Eh : ret c + dec a : cp 57h : ret c + dec a : cp 5Eh : ret c + dec a : cp 64h : ret c + dec a : cp 6Ah : ret c + dec a : cp 6Fh : ret c + sub 6Fh : ld e,a + ld hl,.LUT + add hl,de + ld a,(hl) + ret +.adjustatan: + ld e,a + pop bc + ld a,b + or a + jp p,$+5 + neg + jr z,$+9 + ld hl,402 + or a + sbc hl,de + ex de,hl + rl b + ret nc + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a + ret + +.DEgt1_Inv: +;Works if DE>1 + ld hl,256 + ld b,8 +.InvLoop: + add hl,hl + sbc hl,de + jr nc,$+3 + add hl,de + adc a,a + djnz .InvLoop + cpl + ld e,a + ld d,b + ret +; 0 1 2 3 4 5 6 7 8 9 +.LUT: DB #6F, #6F, #70, #71, #72, #73, #73, #74, #75, #76 ; 0 + #77, #77, #78, #79, #7A, #7B, #7B, #7C, #7D, #7E ; 1 + #7F, #7F, #80, #81, #82, #82, #83, #84, #85, #85 ; 2 + #86, #87, #88, #88, #89, #8A, #8B, #8B, #8C, #8D ; 3 + #8E, #8E, #8F, #90, #90, #91, #92, #93, #93, #94 ; 4 + #95, #95, #96, #97, #97, #98, #99, #9A, #9A, #9B ; 5 + #9C, #9C, #9D, #9E, #9E, #9F, #A0, #A0, #A1, #A2 ; 6 + #A2, #A3, #A3, #A4, #A5, #A5, #A6, #A7, #A7, #A8 ; 7 + #A9, #A9, #AA, #AA, #AB, #AC, #AC, #AD, #AD, #AE ; 8 + #AF, #AF, #B0, #B0, #B1, #B2, #B2, #B3, #B3, #B4 ; 9 + #B5, #B5, #B6, #B6, #B7, #B7, #B8, #B9, #B9, #BA ; 10 + #BA, #BB, #BB, #BC, #BC, #BD, #BE, #BE, #BF, #BF ; 11 + #C0, #C0, #C1, #C1, #C2, #C2, #C3, #C3, #C4, #C4 ; 12 + #C5, #C6, #C6, #C7, #C7, #C8, #C8, #C9 ; 13 +;; + + +;; +atan8: +;computes 256*atan(A/256)->A +;56 bytes including the LUT +;min: 246cc +;max: 271cc +;avg: 258.5cc + rlca + rlca + rlca + ld d,a + and 7 + ld hl,.LUT + add a,l + ld l,a + if (.LUT & 255) > 248 ;this section not included in size/speed totals + jr nc,$+3 ;can add three bytes, 12cc to max, 11cc to min, and 11.5cc to avg + inc h + endif + ld c,(hl) + inc hl + ld a,(hl) + sub c + ld e,0 + ex de,hl + ld d,l + ld e,a + sla h : jr nc,$+3 : ld l,e + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl + add hl,hl + add hl,hl +; add hl,hl ;used in rounding... + ld a,h +; rra ;but doesn't seem to improve the error + adc a,c + ret +.LUT: DB 0,32,63,92,119,143,165,184,201 +;; + + +;; +atanE: +;returns H=256*arctan(E/256) +;min: 496cc +;max: 539cc +;avg: 517.5cc +;multiply E by 201 + ld d,0 + ld h,d + ld l,e + add hl,hl + add hl,de + add hl,hl + add hl,hl + add hl,hl + add hl,de + add hl,hl + add hl,hl + add hl,hl + add hl,de + ld b,h + ld c,l + +;E*(256-E) + xor a + ld d,a + sub e + ld h,a + ld l,d + sla h : jr nc,$+3 : ld l,e + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de +;.HL*70 + ld d,h + ld e,l + xor a + add hl,hl + add hl,hl : rla ;rla needed for the case when input = 128 :( + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,0 + add hl,hl : rla + add hl,de : adc a,0 + add hl,hl : rla + ld l,h + ld h,a + add hl,bc + ret +;; + + +; +;ۂ⠭ +; +;written by calc84maniac +;comment from calc84maniac: +; To clarify why I did a cpl/scf/adc instead of a cpl/inc/add or neg/add, +; is that it handles the case of A=0 properly. Typically, SUB N and +; ADD A,-N give opposite carry outputs, but SUB 0 and ADD A,-0 both reset the +; carry flag. On the other hand, SCF : ADC A,255 will set the carry flag like +; we want it to. +; BC=BC-A +BC_Minus_A: + cpl + scf + adc a,c + ld c,a + ret c + dec b + ret +;; + + +;; +;via calc84maniac +;"Optimized routine for HL=A-HL (the negate HL optimization can be derived from this by setting A=0 first)" +A_Minus_HL: + sub l + ld l,a + sbc a,a + sub h + ld h,a + ret +;; + + +; +;ۊ७ +; +;Adapted from Axe +;Inputs: A.C +;Output: D.E contains the squareroot +;speed: 1482+12{0,17} +;min: 1482cc +;max: 1686cc +;avg: 1584cc +;35 bytes +sqrtfixed_88: + ld b,12 + ld de,0 + ld h,d + ld l,e +.Loop: sub #40 + sbc hl,de + jr nc,.Skip + add a,#40 + adc hl,de +.Skip: ccf + rl e + rl d + sla c + rla + adc hl,hl + sla c + rla + adc hl,hl + djnz .Loop + ret +;; + + +;; +;returns HL as the sqrt, DE as the remainder +;33 bytes +;min: 928cc +;max: 1120cc +;avg: 1024cc +;928+8{24,0} +sqrtDE: + ld b,#80 + xor a + ld h,a + ld l,a +.sqrt_loop: + srl b + rra + ld c,a + add hl,bc + ex de,hl + sbc hl,de + jr nc,.next + add hl,de + ex de,hl + or a + sbc hl,bc + DB #DA ;start of jp c,** which is 10cc to skip the next two bytes. +.next: + ex de,hl + add hl,bc + srl h + rr l + srl b + rra + jr nc,.sqrt_loop + ret +;; + + +;; +;Written by Zeda +;Input: A.E ==> D.E +;Output: DE is the sqrt, AHL is the remainder +;Speed: 690+6{0,13}+{0,3+{0,18}}+{0,38}+sqrtA +;min: 855cc +;max: 1003cc +;avg: 924.5cc +;152 bytes +sqrtfixed_88: + call sqrtA + ld l,a + ld a,e + ld h,0 + ld e,d + ld d,h + + sla e + rl d + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.next + add hl,de + dec e + DB #FE ;start of `cp *` +.next: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.next2 + add hl,de + dec e + DB #FE ;start of `cp *` +.next2: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.next3 + add hl,de + dec e + DB #FE ;start of `cp *` +.next3: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.next4 + add hl,de + dec e + DB #FE ;start of `cp *` +.next4: + inc e + +;Now we have four more iterations +;The first two are no problem + sll e : rl d + add hl,hl + add hl,hl + sbc hl,de + jr nc,.next5 + add hl,de + dec e + DB #FE ;start of `cp *` +.next5: + inc e + + sll e : rl d + add hl,hl + add hl,hl + sbc hl,de + jr nc,.next6 + add hl,de + dec e + DB #FE ;start of `cp *` +.next6: + inc e + +.iter11: +;On the next iteration, HL might temporarily overflow by 1 bit + sll e : rl d ;sla e : rl d : inc e + add hl,hl + add hl,hl + jr c,.iter11_br0 +; + sbc hl,de + jr nc,.next7 + add hl,de + dec e + jr .iter12 +.iter11_br0: + or a + sbc hl,de +.next7: + inc e + +;On the next iteration, HL is allowed to overflow, DE could overflow with our current routine, but it needs to be shifted right at the end, anyways +.iter12: + ld b,a ;A is 0, so B is 0 + add hl,hl + add hl,hl + rla +;AHL - (DE+DE+1) + sbc hl,de : sbc a,b + inc e + or a + sbc hl,de : sbc a,b + ret p + add hl,de + adc a,b + dec e + add hl,de + adc a,b + ret + +;; + + +;; +; FASTEST +;Written by Zeda +;Input: A +;Output: D is the squareroot, A is the remainder (input-D^2) +;Destroys: E +;speed: 118+{0,6}+{0,7}+{0,7}+{0,3} +;min: 118cc +;max: 141cc +;avg: 129.5cc +;38 bytes +sqrtA: + ld de,5040h + sub e + jr nc,.skip1 + add a,e + ld d,10h +.skip1: +; ------ + cp d + jr c,.skip2 + sub d + set 5,d +.skip2: +; ------ + res 4,d + srl d + set 2,d + cp d + jr c,.skip3 + sub D + set 3,d +.skip3: + srl d +; ------ + inc a + sub d + jr nc,.skip4 + dec d + add a,d +.skip4: + srl d + ret +;; + + +;; +;Input: HLDE +;Output: DE is the sqrt, AHL is the remainder +;speed: 238+{0,1}+{0,44}+sqrtHL+3*.sub_2+.iter15 +;min: 1260 +;max: 1506 +;avg: 1377.75 +sqrt32: + push de + call sqrtHL + pop bc + add a,a + ld e,a + jr nc,.skip + inc d +.skip: + ld a,b + call .sub_2 + call .sub_2 +;Now we have four more iterations +;The first two are no problem + ld a,c + call .sub_2 + +;On the next iteration, HL might temporarily overflow by 1 bit + call .iter15 + +;On the next iteration, HL is allowed to overflow, DE could overflow with our current routine, but it needs to be shifted right at the end, anyways +.iter16: + add a,a + ld b,a ;either 0x00 or 0x80 + adc hl,hl + rla + adc hl,hl + rla +;AHL - (DE+DE+1) + sbc hl,de : sbc a,b + inc e + or a + sbc hl,de : sbc a,b + ret p + add hl,de + adc a,b + dec e + add hl,de + adc a,b + ret + +.sub_2: +;min: 185cc +;max: 231cc +;avg: 208cc + call .iter17 +.iter17: +;min: 84cc +;max: 107cc +;avg: 95.5cc + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + + sbc hl,de + inc e + ret nc + dec e + add hl,de + dec e + ret + +.iter15: +;91+{8,0+{0,23}} +;min: 91cc +;max: 114cc +;avg: 100.75cc + sll e : rl d ;sla e : rl d : inc e + add a,a + adc hl,hl + add a,a + adc hl,hl ;This might overflow! + jr c,.iter15_br0 +; + sbc hl,de + inc e + ret nc + dec e + add hl,de + dec e + ret +.iter15_br0: + or a + sbc hl,de + inc e + ret +;; + + +;; +;Inputs: +; L is the value to find the square root of +;Outputs: +; C is the result +; B,L are 0 +; DE is not changed +; H is how far away it is from the next smallest perfect square +; L is 0 +; z flag set if it was a perfect square +;Destroyed: +; A +;287+7x, x is the number of bits in the result +;min: 287 +;max: 315 +;19 bytes +SqrtL: + ld bc,#400 + ld h,c +.Loop: + add hl,hl + add hl,hl + rl c + ld a,c + rla + sub a,h + jr nc,$+5 + inc c + cpl + ld h,a + djnz .Loop + ret +;; + + +;; +;Input: HLIX +;Output: DE is the sqrt, AHL is the remainder +;speed: 751+6{0,6}+{0,3+{0,18}}+{0,38}+sqrtHL +;min: 1103 +;max: 1237 +;avg: 1165.5 +;166 bytes +sqrtHLIX: + call .sqrtHL ;expects returns A as sqrt, HL as remainder, D = 0 + add a,a + ld e,a + rl d + + ld a,ixh + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip1 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip1: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip2 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip2: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip3 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip3: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip4 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip4: + inc e + +;Now we have four more iterations +;The first two are no problem + ld a,ixl + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip5 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip5: + inc e + + sll e : rl d + add a,a : adc hl,hl + add a,a : adc hl,hl + sbc hl,de + jr nc,.skip6 + add hl,de + dec e + DB #FE ;start of `cp *` +.skip6: + inc e + +.iter15: +;On the next iteration, HL might temporarily overflow by 1 bit + sll e : rl d ;sla e : rl d : inc e + add a,a + adc hl,hl + add a,a + adc hl,hl ;This might overflow! + jr c,.iter15_br0 +; + sbc hl,de + jr nc,.skip7 + add hl,de + dec e + jr .iter16 +.iter15_br0: + or a + sbc hl,de +.skip7: + inc e + +;On the next iteration, HL is allowed to overflow, DE could overflow with our current routine, but it needs to be shifted right at the end, anyways +.iter16: + add a,a + ld b,a ;either 0x00 or 0x80 + adc hl,hl + rla + adc hl,hl + rla +;AHL - (DE+DE+1) + sbc hl,de : sbc a,b + inc e + or a + sbc hl,de : sbc a,b + ret p + add hl,de + adc a,b + dec e + add hl,de + adc a,b + ret +;; + + +;; +; very fastest 16-bit isqrt by Zeda Thomas +;Feel free to use for whatever :) +;Input: HL +;Output: A is the integer square root of HL +;Destroys: HL,DE (D is actually 0) +;min: 343cc +;max: 380cc +;avg: 361.5cc +;88 bytes +sqrtHL: + ld de,05040h + ld a,h + sub e + jr nc,.sq7 + add a,e + ld d,16 +.sq7: +; ---------- + cp d + jr c,.sq6 + sub d + set 5,d +.sq6: +; ---------- + res 4,d + srl d + set 2,d + cp d + jr c,.sq5 + sub d + set 3,d +.sq5: + srl d +; ---------- + inc a + sub d + jr nc,.sq4 + dec d + add a,d + dec d ; <-- this resets the low bit of D, so `srl d` resets carry. +.sq4: + srl d + ld h,a +; ---------- + ld a,e + sbc hl,de + jr nc,.sq3 + add hl,de +.sq3: + ccf + rra + srl d + rra +; ---------- + ld e,a + sbc hl,de + jr c,.sq2 + or #20 + db 254 ; <-- start of `cp *` which is 7cc to skip the next byte. +.sq2: + add hl,de + xor #18 + srl d + rra +; ---------- + ld e,a + sbc hl,de + jr c,.sq1 + or 8 + db 254 ; <-- start of `cp *` which is 7cc to skip the next byte. +.sq1: + add hl,de + xor 6 + srl d + rra +; ---------- + ld e,a + sbc hl,de +;This code would restore the square root +; jr nc,.sq0 +; add hl,de ; | 12cc or 18cc +; .sq0: + sbc a,255 + srl d + rra + ret +;; + + +;; +; FASTEST +;written by Zeda +;returns A as the sqrt, HL as the remainder, D = 0 +;min: 352cc +;max: 391cc +;avg: 371.5cc +sqrtHL: + ld de,#5040 + ld a,h + sub e + jr nc,.sq7 + add a,e + ld d,16 +.sq7: +; ---------- + cp d + jr c,.sq6 + sub d + set 5,d +.sq6: +; ---------- + res 4,d + srl d + set 2,d + cp d + jr c,.sq5 + sub d + set 3,d +.sq5: + srl d +; ---------- + inc a + sub d + jr nc,.sq4 + dec d + add a,d + dec d ; <-- this resets the low bit of D, so `srl d` resets carry. +.sq4: + srl d + ld h,a +; ---------- + ld a,e + sbc hl,de + jr nc,.sq3 + add hl,de +.sq3: + ccf + rra + srl d + rra +; ---------- + ld e,a + sbc hl,de + jr c,.sq2 + or #20 + db 254 ; <-- start of `cp *` which is 7cc to skip the next byte. +.sq2: + add hl,de + xor #18 + srl d + rra +; ---------- + ld e,a + sbc hl,de + jr c,.sq1 + or 8 + db 254 ; <-- start of `cp *` which is 7cc to skip the next byte. +.sq1: + add hl,de + xor 6 + srl d + rra +; ---------- + ld e,a + sbc hl,de + jr nc,.sq + add hl,de + srl d + rra + ret +.sq: + inc a + srl d + rra + ret + +;; + + +;; +;Adapted from Axe +;Input: HL +;Output: D is the square root, cH is the remainder (c being the c flag), A is 0, B is 0, L is 0 +;speed: 758+8{0,6} +;min: 758cc +;max: 806cc +;avg: 782cc +;26 bytes +sqrtHL: +;p_Sqrt: + ld a,l + ld l,h + ld de,#0040 + ld h,d + ld b,8 + or a +.Loop: + sbc hl,de + jr nc,.Skip + add hl,de +.Skip: + ccf + rl d + add a,a + adc hl,hl + add a,a + adc hl,hl + djnz .Loop + ret +;; + + +; +;RND +; +;Inputs: (seed1), (seed2), and (seed3) are 16-bit seeds. (seed1) and (seed2) can't both be 0. +;Outputs: HL is the pseudorandom number +;Destroys: A,DE,BC +;cycle: 281,474,976,645,120 +;It would take about 185 years at 15MHz to repeat +;min: 258cc (236cc if using ENABLE_SMC) +;max: 288cc (266cc if using ENABLE_SMC) +;avg: 273cc (251cc if using ENABLE_SMC) +;63 bytes (62 bytes if using ENABLE_SMC) +xsp32: + ifdef ENABLE_SMC +.seed1 equ $+1 + ld hl,12345 +.seed2 equ $+1 + ld de,6789 + else + ld hl,(.seed1) + ld de,(.seed2) + endif + +;first, XOR it with itself, shifted left 23 bits +;low bit of d needs to be shifted in + ld a,h + rra + ld a,l + rra + jr nc,.skip1 + rl e + ccf + rr e +.skip1: + xor d + ld d,a + +;XOR it with itself, shifted right 15 bits + ld a,h + rla + ld a,e + rla + xor l + ld l,a + + ld a,e + rla + ld a,d + rla + jr nc,.skip2 + rr e + ccf + rl e +.skip2: + xor h + ld h,a + +;XOR it with itself, shifted left 17 bits +;HL<<1 + ld (.seed1),hl + add hl,hl + ld a,h + xor d + ld h,a + + ld a,l + xor e + ld l,a + ld (.seed2),hl + ex de,hl + + ifdef ENABLE_SMC +.seed3 equ $+1 + ld hl,33333 + else + ld hl,(.seed3) + endif + + inc hl + inc h + ld (.seed3),hl + add hl,de + ret +;; + + +;; +;32-bit xorshift +;seed^=seed<<23 +;seed^=seed>>15 +;seed^=seed<<17 +;min: 209cc (193cc if using ENABLE_SMC) +;max: 239cc (223cc if using ENABLE_SMC) +;avg: 224cc (208cc if using ENABLE_SMC) +;53 bytes (52 bytes if using ENABLE_SMC) +xs32: + ifdef ENABLE_SMC +.seed1 equ $+1 + ld hl,12345 +.seed2 equ $+1 + ld de,6789 + else + ld hl,(.seed1) + ld de,(.seed2) + endif + +;first, XOR it with itself, shifted left 23 bits +;low bit of d needs to be shifted in + ld a,h + rra + ld a,l + rra + jr nc,.skip1 + rl e + ccf + rr e +.skip1: + xor d + ld d,a + +;XOR it with itself, shifted right 15 bits + ld a,h + rla + ld a,e + rla + xor l + ld l,a + + ld a,e + rla + ld a,d + rla + jr nc,.skip2 + rr e + ccf + rl e +.skip2: + xor h + ld h,a + +;XOR it with itself, shifted left 17 bits +;HL<<1 + ld (.seed1),hl + add hl,hl + ld a,h + xor d + ld h,a + + ld a,l + xor e + ld l,a + ld (.seed2),hl + ret +;; + + +;; +;You may use this routine, just be sure to credit John Metcalf! +;Written by John Metcalf +; http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html +; +; Annotated by Zeda Thomas, fixed typo (86 cycles==> 82 cycles) +;Note: uses ENABLE_SMC (Self Modifying Code) +; 16-bit xorshift pseudorandom number generator +; 20 bytes, 82 cycles (excluding ret) +; returns hl = pseudorandom number +; corrupts a +xrnd: + ld hl,1 ; Init the seed, must not be 0 + ld a,h ;\ + rra ; | Get the top bits of xs<<7 and xor with the top byte of HL + ld a,l ; | abcdefgh ijklmnop + rra ; | ^hijklmno 00000000 + xor h ; | Note that we still need to xor the 'p' with the top byte of l + ld h,a ;/ + ld a,l ;\ + rra ; | we get 'p' in the carry flag, now shift that in when we do xs>>9 + ld a,h ; | abcdefgh ijklmnop (new value) + rra ; | ^00000000 pabcdefg + xor l ; | the 'p' is leftover from the first step, so now Step 1 and 2 are done + ld l,a ;/ + xor h ;\ Finally, xor the bottom byte with the top byte for step 3 + ld h,a ;/ + ld (xrnd+1),hl ; write back the new value as the next seed + ret +;; + + +;; +;This code snippet is 9 bytes and 43cc +;Inputs: +; HL is the input seed and must be non-zero +;Outputs: +; A is the 8-bit pseudo-random number +; HL is the new seed value (will be non-zero) +rng8_very_very_fast: + add hl,hl + sbc a,a + and %0010'1101 + xor l + ld l,a + ld a,r + add a,h + ret +;------------------------------------------------------------------------------- +;Technical details: +; The concept behind this routine is to combine an LFSR (poor RNG) with a +; counter. The counter improves the RNG quality, while also extending the period +; length. +; For this routine, I took advantage of the Z80's built-in counter, the `r` +; register. This means that we don't need to store the counter anywhere, and it +; is pretty fast to access! +; Some caveats: +; * r is a 7-bit counter +; * r will increment some number of times between runs of the RNG. In most +; cases, this will be constant, but if it increments an even number each +; time, then the bottom bit is always the same, weakening the effect of +; the counter. In the worst case, it increments a multiple of 128 times, +; effectively making your RNG just as good/bad as the LFSR. Ideally, you +; want `r` to increment an odd number of times between runs. +; * In the best case, the bottom 7 bits have 50/50 chance of being 0 or 1. +; The top bit is 1 with probability 1/2 + 1/(2^17-2) ~ .5000076295 +; * In the event that your main loop waits for user input between calls, +; then congatulations, you might have a True RNG :) +;------------------------------------------------------------------------------- +;; + + +;; +;Tested and passes all CAcert tests +;Uses a very simple 32-bit LCG and 32-bit LFSR +;it has a period of 18,446,744,069,414,584,320 +;roughly 18.4 quintillion. +;LFSR taps: 0,2,6,7 = 11000101 +;291cc +;Thanks to Runer112 for his help on optimizing the LCG and suggesting to try the much simpler LCG. On their own, the two are terrible, but together they are great. +;58 bytes +rand32: +.seed1_0 equ $+1 + ld hl,12345 +.seed1_1 equ $+1 + ld de,6789 + ld b,h + ld c,l + add hl,hl : rl e : rl d + add hl,hl : rl e : rl d + inc l + add hl,bc + ld (.seed1_0),hl + ld hl,(.seed1_1) + adc hl,de + ld (.seed1_1),hl + ex de,hl +;;lfsr +.seed2_0 equ $+1 + ld hl,9876 +.seed2_1 equ $+1 + ld bc,54321 + add hl,hl : rl c : rl b + ld (.seed2_1),bc + sbc a,a + and %1100'0101 + xor l + ld l,a + ld (.seed2_0),hl + ex de,hl + add hl,bc + ret +;; + + +;; +;;219cc +rand24: + ifdef ENABLE_SMC +.seed1_0 equ $+1 + ld hl,12345 +.seed1_1 equ $+1 + ld a,67 + else + ld hl,(.seed1_0) + ld a,(.seed1_1) + endif + ld b,h + ld c,l + ld d,a + add hl,hl : rla + add hl,hl : rla + inc l + add hl,bc : adc a,0 + ld (.seed1_0),hl + ld (.seed1_1),a + ld c,b + ld b,a + ifdef ENABLE_SMC +.seed2_0 equ $+1 + ld hl,65432 +.seed2_1 equ $+1 + ld a,10 + else + ld hl,(.seed2_0) + ld a,(.seed2_1) + endif + add hl,hl + rla + ld (.seed2_1),a + sbc a,a + and %1000'0111 + xor l + ld l,a + ld (.seed2_0),hl + add hl,bc + ret + +;; + + +;; +;You may use this routine, just be sure to credit John Metcalf for the +;xorshift16 part of this routine! + +; This routine is a fast Pseudo Random Number Generator +;for the Z80. It combines a 16-bit LCG and 16-bit xorshift. +;The xorshift routine was written by John Metcalf +;and posted here: +; http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html + +;174cc (or 186cc if not using ENABLE_SMC) +;34 bytes +;cycle length: 4,294,901,760 (almost 4.3 billion) + +; For the first seed, we use an LCG, 1+5*seed1 ==> seed1 +rand16: + ifdef ENABLE_SMC +.seed1 equ $+1 + ld hl,9999 + else + ld hl,(.seed1) + endif + ld b,h + ld c,l + add hl,hl + add hl,hl + inc l + add hl,bc + ld (.seed1),hl + +; For the second seed, we apply an xorshift +; seed2^(seed2<<7) ==> seed2 +; seed2^(seed2>>9) ==> seed2 +; seed2^(seed2<<8) ==> seed2 +; This code was originally made by John Metcalf and posted here: +; http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html +; (My modifications are only in naming and compiler directives.) + + ifdef ENABLE_SMC +.seed2 equ $+1 + ld hl,9999 + else + ld hl,(.seed2) + endif + ld a,h + rra + ld a,l + rra + xor h + ld h,a + ld a,l + rra + ld a,h + rra + xor l + ld l,a + xor h + ld h,a + ld (.seed2),hl + add hl,bc + ret +;; + + +;; +;collaboration by Zeda with Runer112 +;160cc or 148cc if using ENABLE_SMC +;26 bytes +;cycle: 4,294,901,760 (almost 4.3 billion) +rand16: + ifdef ENABLE_SMC +.seed1 equ $+1 + ld hl,9999 + else + ld hl,(.seed1) + endif + ld b,h + ld c,l + add hl,hl + add hl,hl + inc l + add hl,bc + ld (.seed1),hl + ifdef ENABLE_SMC +.seed2 equ $+1 + ld hl,9999 + else + ld hl,(.seed2) + endif + add hl,hl + sbc a,a + and %00101101 + xor l + ld l,a + ld (.seed2),hl + add hl,bc + ret +;; + + +;; +;Returns A on [0,4] +;Destroys: All +;Notes: +; This is a non-standard approach to generating random integers on [0,4]. +; If you have a truly random number generator that generates bits (0 or 1) +; with equal probability, then standard approaches will still cause a slight +; bias. ("Standard": "rand mod 5" or int(5*rand)). For example, suppose we +; generate a 4-bit number. Then "rand mod 5" will cause 0 to be chosen +; 4/16 times, while 1, 2, 3, and 4 will be chosen 3/16 times (on average). +; A similar problem exists with int(5*rand). One way to mitigate this issue +; is just generating infintely many bits, but apparently that is impractical, +; so I came up with a compromise. +; +; My approach basically looks at the binary expansion of 1/5, 2/5, 3/5, and 4/5. +; 1/5 = .0011001100110011... +; 2/5 = .0110011001100110... +; 3/5 = .1001100110011001... +; 4/5 = .1100110011001100... +; +; So if I generate random bits and I get .001100, then a 0, then I know +; that no matter what all of the rest of the bits are, the number is less than +; 1/5, and so int(5*rand) is 0. +; +; By applying similar logic to the rest of the values, I can guarantee a uniform +; distribution on [0,4]. But there are four cases where this process might +; continue forever, specifically the cases that are like ...00110011...., but +; lucky for us, this happens 4/inf= 0% of the time. In fact, on average it +; takes 3 to 4 bits before the algorithm can assert which value to return. +; +; The one caveat is that on the Z80, we generally don't have truly random +; numbers :| On the otherhand, it is easy enough to generate pseudo-random +; bits with equal probability :) +rand5: + call rand + ld a,h + and #C0 + push af ;save the original value + ld c,a +.start: + push bc + call rand + pop bc + ld b,15 ;I set this to 15 because I like to guarantee a bit is available for rand10. +.loop: + ld a,h + xor c + jp p,.end + add hl,hl + sla c + jr c,$+4 + set 6,c + djnz .loop + jr .start +.end: + pop af + rlca + rlca + sla h + adc a,0 + ret +;; + + +;; +;Returns A as a random integer on [0,9] +;Destroys: All +rand10: + call rand5 + sla h + rla + ret +;; + + +;; +;Generates a random TI float at HL +rand_TI_Float: + push hl + ; call rand_init + ld de,#8000 ;D is exponent, E is type. E is used in .zero +.get_rand_exponent_loop: +;decrement exponent + dec d + +;if the exponent is -100, underflow to 0. +;I don't think this is possible with this RNG, or even likely to ever happen +;before the universe's heat death with a true RNG, but better to be safe? + ld a,d + cp 28 + jp z,.zero + +;save the exponent + push de + +;Generate a uniform random digit on [0,9] as a candidate for our first digit. + call rand10 + +;restore the exponent+type + pop de + or a +;if A is 0, we'll decrement the exponent and find a new candidate for the first +;digit. This is because we need our float to be "normalized" (top digit non-zero) +;This also preserves the uniform distribution for values. + jr z,.get_rand_exponent_loop + + pop hl + ld (hl),e + inc hl + ld (hl),d + inc hl + +;write the first digit + ld (hl),a + ld b,13 +.math_rand_loop: +;now generate subsequent digits + push bc + rr b + jr c,$+3 + inc hl + push hl + +;generate the next digit + call rand10 + pop hl + rld + pop bc + djnz .math_rand_loop + ret + +.zero: + pop hl + ld b,9 + ld (hl),e ; E is 0 + inc hl + djnz $-2 + ret +;; + + +;; +; Output is in HL +; This rand routine combines Patrik Rak's fantastic 32-bit xorshift +; (https://gist.github.com/raxoft/c074743ea3f926db0037) with a simple lcg for +; extra smoothing. +; It has a period of 281,474,976,645,120 (2^48-2^16) and uses 48 bits of state. +; 42 bytes +; 210cc +rand: + ld hl,(.seed0) + ld b,h + ld c,l + add hl,hl + add hl,hl + inc l + add hl,bc + ld (.seed0),hl +; xorshift + ld hl,(.seed1) ; yw -> zt + ld de,(.seed1+2) ; xz -> yw + ld (.seed1+2),hl ; x = y, z = w + ld a,l ; w = w ^ ( w << 3 ) + add a,a + add a,a + add a,a + xor l + ld l,a + ld a,d ; t = x ^ (x << 1) + add a,a + xor d + ld h,a + rra ; t = t ^ (t >> 1) ^ w + xor h + xor l + ld h,e ; y = z + ld l,a ; w = t + ld (.seed1),hl +; Mix the xorshift and the lcg + add hl,bc + ret +;; + + +;; +; need to make sure seed1 is non-zero +randinit: + ld hl,.seed1 + ld a,(hl) + inc hl + or (hl) + inc hl + or (hl) + inc hl + or (hl) + ret nz + dec (hl) + ret +;; + + +;; +;;Output: A is an 8-bit pseudo-random number. +lfsr64: + ld hl,.seed + sla (hl) : inc hl + rl (hl) : inc hl + rl (hl) : inc hl + rl (hl) : inc hl + rl (hl) : inc hl + rl (hl) : inc hl + rl (hl) : inc hl + rl (hl) + ret nc + ld a,(.seed) + xor %000011011 + ld (.seed),a + ret +;; + + +;; +;13 bytes +;72cc (66cc if using SMC) +;period is 65535 +LFSR: + ifdef ENABLE_SMC +.seed equ $+1 + ld hl,9797 + else + ld hl,(.seed) + endif + add hl,hl + sbc a,a + and %00101101 + xor l + ld l,a + ld (seed),hl + ret +;; + + +;; +;Input: +; (seed) has the seed value of the RNG +;Output: +; (seed) is updated, HL is the result +;Destroys: +; A,DE,BC +;Timing: +; if seed>0 231cc or 232cc, condition dependent +; if seed=0 91cc +; if ENABLE_SMC defined subtract 6cc +;Size: 44 bytes +;Notes: +; Uses the Lehmer RNG used by the Sinclair ZX81 +; 75x mod 65537 -> x +lehmer: + ifndef ENABLE_SMC + ld hl,(.seed) + else +.seed equ $+1 + ld hl,0 + endif +;multiply by 75 + ld c,l + ld b,h + xor a + adc hl,hl + jr z,.special + ld d,a : rla + add hl,hl : rla + add hl,hl : rla : add hl,bc : adc a,d + add hl,hl : rla + add hl,hl : rla : add hl,bc : adc a,d + add hl,hl : rla : add hl,bc +;modulo 65537, see note below on how this works + ld e,a + sbc hl,de ;No need to reset the c flag since it is already + jr nc,$+3 + inc hl + ld (.seed),hl + ret +.special: +;In the case that HL=0, this should be interpreted as 65536 = -1 mod 65537, so return -75 mod 65537 = -74 mod 65536 in HL + ld hl,-74 + ld (.seed),hl + ret +;mod by 2^16 + 1 (a prime) +;current form is A*2^16+HL +;need: +; (A*2^16+HL) mod (2^16+1) +;add 0 as +1-1 +; (A*(2^16+1-1)+HL) mod (2^16+1) +;distribute +; (A*(2^16+1)-A+HL) mod (2^16+1) +;A*(2^16+1) mod 2^16+1 = 0, so remove +; (-A+HL) mod (2^16+1) +;Oh hey, that's easy! :P +;I use this trick everywhere, you should, too. +;; + + +; +;ۊ୨ +; +;A*A->A +;Destroys: HL +;76cc or 79cc or 82cc +;Avg: 79cc +;51 bytes +sqrA: + add a,a + add a,a + jr nc,$+4 + neg + rrca + rrca + ld l,a + srl l + ld h,.LUT/256 + jr c,$+4 + neg + add a,(hl) + ret +;!FIXIT +;MUST BE ALIGNED to a 256-byte boundary. +;Can use: +; #if 0!=$&255 +; .fill 256-($&255),0 +; #endif +.LUT: DB #00, #06, #14, #2A, #48, #6E, #9C, #D2 + DB #10, #56, #A4, #FA, #58, #BE, #2C, #A2 + DB #20, #A6, #34, #CA, #68, #0E, #BC, #72 + DB #30, #F6, #C4, #9A, #78, #5E, #4C, #42 + + ASSERT (low sqrLUT) = 0, "sqrLUT MUST BE ALIGNED to a 256-byte boundary!" +;; + + +;; +;Input: L +;Output: L*L->A +;147 t-states +;36 bytes +L_sqrd: + ld b,l + ;First iteration, get the lowest 3 bits of -x^2 + sla l + rrc b + sbc a,a + or l + ld c,a + ;second iteration, get the next 2 bits of -x^2 + rrc b + sbc a,a + xor l + and #F8 + add a,c + ld c,a + ;third iteration, get the next 2 bits of -x^2 + sla l + rrc b + sbc a,a + xor l + and #E0 + add a,c + ld c,a + ;fourth iteration, get the eight bit of x^2 + sla l + rrc b + sbc a,a + xor l + and #80 + sub c + ret +;; + + +; +;ۓ +; +;This multiplies two 64-bit integers and returns a 128-bit result. +;This requires the following routines: +; mul32 +; Inputs: DEHL, BCIX +; Output: stored at z32_0, little-endian +;Multiplies DE.HL by BC.IX, stores the result in DE.HL +mulfixed16_16: +; First, find out if the output is positive or negative + ld a,d + xor b + push af ;sign bit is the result sign bit +; Now make sure the inputs are positive + xor b ;A now has the value of D, since I XORed it with B twice (cancelling) + jp p,.skip1 ;if Positive, don't negate + xor a + sub l + ld l,a + ld a,0 + sbc a,h + ld h,a + ld a,0 + sbc a,e + ld e,a + sbc a,a + sub d + ld d,a +.skip1: + bit 7,b + jr z,.skip2 + xor a + sub ixl + ld ixl,a + ld a,0 + sbc a,ixh + ld ixh,a + ld a,0 + sbc a,c + ld c,a + sbc a,a + sub b + ld b,a +.skip2: +; Now we multiply + call mul32 +;We should check for overflow. If the upper two bytes are non-zero, we will set the result to 0x7FFFFFFF + ld hl,(.z32_0+6) + ld a,h + or l +;Get the middle four bytes and put them in DEHL + ld hl,(.z32_0+2) + ld de,(.z32_0+4) +;Maybe we need to set the result to 0x7FFFFFFF + jr z,.skip3 + ld de,#7FFF + ld h,e + ld l,e +.skip3: +; Now we need to restore the sign + pop af + ret p ;don't need to do anything, result is already positive + xor a + ld b,a + sub l + ld l,a + ld a,b + sbc a,h + ld h,a + ld a,b + sbc a,e + ld e,a + sbc a,a + sub d + ld d,a + ret +;; + + +;; +;This multiplies two 64-bit integers and returns a 128-bit result. +;This requires the following routines: +; mul32 +; Inputs: DEHL, BCIX +; Output: stored at z32_0, little-endian +;Multiplies DE.HL by BC.IX, stores the result in DE.HL +mulfixed16_16: ; First, find out if the output is positive or negative + LD A,D + XOR B + PUSH AF ;sign bit is the result sign bit + ; Now make sure the inputs are positive + XOR B ;A now has the value of D, since I XORed it with B twice (cancelling) + JP P,.skip1 ;if Positive, don't negate + XOR A + SUB L + LD L,A + LD A,0 + SBC A,H + LD H,A + LD A,0 + SBC A,E + LD E,A + SBC A,A + SUB D + LD D,A +.skip1: BIT 7,B + JR Z,.skip2 + XOR A + SUB IXL + LD IXL,A + LD A,0 + SBC A,IXH + LD IXH,A + LD A,0 + SBC A,C + LD C,A + SBC A,A + SUB B + LD B,A +.skip2: ; Now we multiply + CALL mul32 + ;We should check for overflow. If the upper two bytes are non-zero, we will set the result to 0x7FFFFFFF + LD HL,(.z32_0+6) + LD A,H + OR L + ;Get the middle four bytes and put them in DEHL + LD HL,(.z32_0+2) + LD DE,(.z32_0+4) + ;Maybe we need to set the result to 0x7FFFFFFF + JR Z,.skip3 + LD DE,#7FFF + LD H,E + LD L,E +.skip3: ; Now we need to restore the sign + POP AF + RET P ;don't need to do anything, result is already positive + XOR A + LD B,A + SUB L + LD L,A + LD A,B + SBC A,H + LD H,A + LD A,B + SBC A,E + LD E,A + SBC A,A + SUB D + LD D,A + RET +;; + + +;; +;Requires: +; mul16 +; Inputs: BC,DE +; Output: DEHL +;Multiplies 4.12 fixed point numbers. +;Inputs: HL is the first fixed-point multiplicand +; DE is the second fixed-point multiplicand +;Output: HL is the fixed-point output +;Overflow is stored as 0x7.FFF or 0x8.001 depending on positive or negative +mulfixed4_12: +; First, find out if the output is positive or negative + ld a,h + xor d + push af ;sign bit is the result sign bit +; Now make sure the inputs are positive + xor d ;A now has the value of H, since I XORed it with D twice (cancelling) + jp p,.skip1 ;if Positive, don't negate + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a +.skip1: + bit 7,d + jr z,.skip2 + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a +.skip2: +; Now we need to put DE in BC to use mul16 + ld b,h + ld c,l + call mul16 +;The result doesn't need the top 4 bits or bottom 12 bits. +;We'll hold onto the top 4 bits to check overflow, though. +;Currently we need to shift DEH left by 4 bits and keep DE, or right by 12 bits and keep HL. + ld a,h ;we'll actually be moving the discared bits into A + and #F0 + ex de,hl + rla : adc hl,hl + rla : adc hl,hl + rla : adc hl,hl + rla : adc hl,hl + adc a,a +;if A is non-zero, we have overflow + jr z,.skip3 + ld hl,#7FFF +.skip3: +; Now we need to restore the sign + pop af + ret p ;don't need to do anything, result is already positive + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a + ret +;; + + +;; +;Multiplies H.L by D.E, stores the result in H.L +mulfixed_88: +; First, find out if the output is positive or negative + ld a,h + xor d + push af ;sign bit is the result sign bit + +; Now make sure the inputs are positive + xor d ;A now has the value of H, since I XORed it with D twice (cancelling) + jp p,.skip1 ;if Positive, don't negate + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a +.skip1: + bit 7,d + jr z,.skip2 + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a +.skip2: +; Now we need to put HL in BC to use mul16 + ld b,h + ld c,l + call mul16 + +;Need to round, so get the top bit of L + sla l + +;Get the middle two bytes, EH, and put them in HL + ld l,h + ld h,e + + ld a,d + ld de,0 + adc hl,de + +;check for overflow! +;We should check for overflow. If A>0, we will set HL to 0x7FFF + adc a,e + jr c,$+4 + jr z,.skip3 + ld hl,#7FFF +.skip3: + +; Now we need to restore the sign + pop af + ret p ;don't need to do anything, result is already positive + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a + ret + +;; + + +;; +;This multiplies two 64-bit integers and returns a 128-bit result. +;This requires the following routines: +; mul32 ;!TEST +; Inputs: DEHL, BCIX +; Output: stored at z32_0, little-endian +; +; Defined: +; inp64_1 is where the first 64-bit multiplicand is located, little-endian +; inp64_2 is where the second 64-bit multiplicand is located, little-endian +; out128 is where the 128-bit result is stored +; Uses 8 additional bytes after out128 + +;multiplies the 64-bit integers at inp64_1 and inp64_2 +;stores the 128-bit (16-byte) result at out128 +; +;min: 1740+3*min(mul32) +; 5631cc +;max: 1901+3*max(mul32) +; 10013cc +;avg: 1797+3*avg(mul32) + 9572881/2^24 +; ~8720.733cc +;uses 24 bytes at out128 +mul64: +.z64_0 EQU out128 +.z64_2 EQU .z64_0+8 +.z32_0 EQU .z64_2+8 + + ld de,(.inp64_1+6) + ld hl,(.inp64_1+4) + ld bc,(.inp64_2+6) + ld ix,(.inp64_2+4) + call mul32 + ;copy the 8 bytes at z32_0 to z64_2 + ld hl,.z32_0 + ld de,.z64_2 + call .mov8 + + ld de,(.inp64_1+2) + ld hl,(.inp64_1) + ld bc,(.inp64_2+2) + ld ix,(.inp64_2) + call mul32 + ;copy the 8 bytes at z32_0 to z64_0 + ld hl,.z32_0 + ld de,.z64_0 + call .mov8 + +;now I need to subtract the 32-bit digits from each other + xor a + ld hl,(.inp64_1) + ld bc,(.inp64_1+4) + sbc hl,bc + ex de,hl + ld hl,(.inp64_1+2) + ld bc,(.inp64_1+6) + sbc hl,bc + jr nc,.skip1 + ld b,a : sub e : ld e,a + ld a,b : sbc a,d : ld d,a + ld a,b : sbc a,l : ld l,a + ld a,b : sbc a,h : ld h,a + ld a,b +.skip1: + rla + push hl ;top byte + push de + + ld hl,(.inp64_2) + ld bc,(.inp64_2+4) + sbc hl,bc + ex de,hl + ld hl,(.inp64_2+2) + ld bc,(.inp64_2+6) + sbc hl,bc + jr nc,.skip2 + ld c,a + xor a + ld b,a + sub e : ld e,a + ld a,b : sbc a,d : ld d,a + ld a,b : sbc a,l : ld l,a + ld a,b : sbc a,h : ld h,a + ld a,c + inc a +.skip2: + ex de,hl + pop ix + pop bc + push af + call mul32 + pop af ;holds the sign in the low bit + + rra + jp c,.add +;need to perform z0+z2-result + xor a + ld hl,(.z64_0) + ld de,(.z64_2) + add hl,de + ld (.inp64_1),hl + ld hl,(.z64_0+2) + ld de,(.z64_2+2) + adc hl,de + ld (.inp64_1+2),hl + ld hl,(.z64_0+4) + ld de,(.z64_2+4) + adc hl,de + ld (.inp64_1+4),hl + ld hl,(.z64_0+6) + ld de,(.z64_2+6) + adc hl,de + ld (.inp64_1+6),hl + rla +;now need to subtract + ld hl,(.inp64_1) + ld de,(.z32_0) + sbc hl,de + ld (.inp64_1),hl + ld hl,(.inp64_1+2) + ld de,(.z32_0+2) + sbc hl,de + ld (.inp64_1+2),hl + ld hl,(.inp64_1+4) + ld de,(.z32_0+4) + sbc hl,de + ld (.inp64_1+4),hl + ld hl,(.inp64_1+6) + ld de,(.z32_0+6) + sbc hl,de + ld (.inp64_1+6),hl + sbc a,0 +.final: +;now need to add it back in + ld hl,(z64_0+4) + ld de,(.inp64_1) + add hl,de + ld (z64_0+4),hl + ld hl,(z64_0+6) + ld de,(.inp64_1+2) + adc hl,de + ld (z64_0+6),hl + ld hl,(z64_0+8) + ld de,(.inp64_1+4) + adc hl,de + ld (z64_0+8),hl + ld hl,(z64_0+10) + ld de,(.inp64_1+6) + adc hl,de + ld (z64_0+10),hl + ld hl,z64_0+12 + adc a,(hl) + ld (hl),a + ret nc + inc hl : inc (hl) : ret nz + inc hl : inc (hl) : ret nz + inc hl : inc (hl) : ret +.add: +;add to the current result +;z0+z2+result + xor a + ld hl,(z64_0) + ld de,(z64_2) + add hl,de + ld (.inp64_1),hl + ld hl,(z64_0+2) + ld de,(z64_2+2) + adc hl,de + ld (.inp64_1+2),hl + ld hl,(z64_0+4) + ld de,(z64_2+4) + adc hl,de + ld (.inp64_1+4),hl + ld hl,(z64_0+6) + ld de,(z64_2+6) + adc hl,de + ld (.inp64_1+6),hl + rla +;now need to subtract + ld hl,(.inp64_1) + ld de,(.z32_0) + add hl,de + ld (.inp64_1),hl + ld hl,(.inp64_1+2) + ld de,(.z32_0+2) + adc hl,de + ld (.inp64_1+2),hl + ld hl,(.inp64_1+4) + ld de,(.z32_0+4) + adc hl,de + ld (.inp64_1+4),hl + ld hl,(.inp64_1+6) + ld de,(.z32_0+6) + adc hl,de + ld (.inp64_1+6),hl + adc a,0 + jp .final + +.mov8: LDI + LDI + LDI + LDI + LDI + LDI + LDI + LDI + RET +;; + + +;; +;Requires: +; mul16 ;!TEST +; Inputs: BC,DE +; Output: DEHL +;max: 703cc + 3*mul16 +; 2704cc +;min: 655cc + 3*mul16 +; 1297cc +;avg: 673.25cc+3*mul16 +; 2307.911cc +;DEHL * BCIX ==> .z32_0 +mul32: + push de + push bc + push hl + push ix + call mul16 ;DEHL + ld (.z32_2),hl + ld (.z32_2+2),de + + pop de + pop bc + push de + call mul16 ;DEHL + ld (.z32_0),hl + ld (.z32_0+2),de + + pop de ;low word + pop hl + xor a + sbc hl,de + jr nc,.skip1 + sub l + ld l,a + sbc a,a + sub h + ld h,a + xor a + inc a +.skip1: + ex de,hl + pop hl + sbc hl,bc + jr nc,.skip2 + ld b,a + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a + ld a,b + inc a +.skip2: + ld b,h + ld c,l + push af + call mul16 + pop af ;holds the sign in the low bit + rra + jr c,.add +;need to perform z0+z2-result + push de + push hl + xor a + ld hl,(.z32_0) + ld bc,(.z32_2) + add hl,bc + ex de,hl + ld hl,(.z32_0+2) + ld bc,(.z32_2+2) + adc hl,bc + rla +;now need to subtract + ex de,hl + pop bc + sbc hl,bc + ex de,hl + pop bc + sbc hl,bc + sbc a,0 +;A:HL:DE is the result, need to add to z32_0+2 +.final: + ld bc,(.z32_0+2) + ex de,hl + add hl,bc + ld (.z32_0+2),hl + ld hl,(.z32_2) + adc hl,de + ld (.z32_2),hl + ld hl,z32_2+2 + adc a,(hl) + ld (hl),a + ret nc + inc hl + inc (hl) + ret +.add: +;add to the current result + xor a + ld bc,(.z32_0) + add hl,bc + ex de,hl + ld bc,(.z32_0+2) + adc hl,bc + rla + ex de,hl + ld bc,(.z32_2) + add hl,bc + ex de,hl + ld bc,(.z32_2+2) + adc hl,bc + adc a,0 + jp .final + ; +.z32_0: DS 4 +.z32_2: DS 4 +;; + + +;; +;BDE*CHL -> HLBCDE +;155 bytes +;402+3*C_Times_BDE +;fastest:1201cc +;slowest:1753cc +;avg: 1464.9033203125cc (1464+925/1024) +;min: 825cc +;max: 1926cc +;avg: 1449.63839751681cc +mul24: + push bc + ld c,l + push hl + call C_Times_BDE + ld (.var48),hl + ld l,a + ld h,c + ld (.var48+2),hl + + pop hl + ld c,h + call C_Times_BDE + push bc + ld bc,(.var48+1) + add hl,bc + ld (.var48+1),hl + pop bc + ld b,c + ld c,a + ld hl,(.var48+3) + ld h,0 + adc hl,bc + ld (.var48+3),hl + + pop bc + call C_Times_BDE + ld de,(.var48+2) + add hl,de + ld (.var48+2),hl + ld d,c + ld e,a + ld b,h + ld c,l + ld hl,(.var48+4) + ld h,0 + adc hl,de + ld de,(.var48) + ret + +.var48: DS 6 +;; + + +;; +;This was made by Runer112 +;Tested by jacobly +;BC*DE --> DEHL +; ~544.887cc as calculated in jacobly's test +;min: 214cc (DE = 1) +;max: 667cc +;avg: 544.4507883cc however, deferring to jacobly's result as mine may have math issues ? +;177 bytes +mul16: LD A,D + LD D,0 + LD H,B + LD L,C + ADD A,A : JR C,.Bit14 + ADD A,A : JR C,.Bit13 + ADD A,A : JR C,.Bit12 + ADD A,A : JR C,.Bit11 + ADD A,A : JR C,.Bit10 + ADD A,A : JR C,.Bit9 + ADD A,A : JR C,.Bit8 + ADD A,A : JR C,.Bit7 + LD A,E + AND %11111110 + ADD A,A : JR C,.Bit6 + ADD A,A : JR C,.Bit5 + ADD A,A : JR C,.Bit4 + ADD A,A : JR C,.Bit3 + ADD A,A : JR C,.Bit2 + ADD A,A : JR C,.Bit1 + ADD A,A : JR C,.Bit0 + RR E + RET C + LD H,D + LD L,E + RET + ; +.Bit14: ADD HL,HL : ADC A,A : JR NC,.Bit13 : ADD HL,BC : ADC A,D +.Bit13: ADD HL,HL : ADC A,A : JR NC,.Bit12 : ADD HL,BC : ADC A,D +.Bit12: ADD HL,HL : ADC A,A : JR NC,.Bit11 : ADD HL,BC : ADC A,D +.Bit11: ADD HL,HL : ADC A,A : JR NC,.Bit10 : ADD HL,BC : ADC A,D +.Bit10: ADD HL,HL : ADC A,A : JR NC,.Bit9 : ADD HL,BC : ADC A,D +.Bit9: ADD HL,HL : ADC A,A : JR NC,.Bit8 : ADD HL,BC : ADC A,D +.Bit8: ADD HL,HL : ADC A,A : JR NC,.Bit7 : ADD HL,BC : ADC A,D +.Bit7: LD D,A + LD A,E + AND %11111110 + ADD HL,HL : ADC A,A : JR NC,.Bit6 : ADD HL,BC : ADC A,0 +.Bit6: ADD HL,HL : ADC A,A : JR NC,.Bit5 : ADD HL,BC : ADC A,0 +.Bit5: ADD HL,HL : ADC A,A : JR NC,.Bit4 : ADD HL,BC : ADC A,0 +.Bit4: ADD HL,HL : ADC A,A : JR NC,.Bit3 : ADD HL,BC : ADC A,0 +.Bit3: ADD HL,HL : ADC A,A : JR NC,.Bit2 : ADD HL,BC : ADC A,0 +.Bit2: ADD HL,HL : ADC A,A : JR NC,.Bit1 : ADD HL,BC : ADC A,0 +.Bit1: ADD HL,HL : ADC A,A : JR NC,.Bit0 : ADD HL,BC : ADC A,0 +.Bit0: ADD HL,HL + ADC A,A + JR C,.FunkyCarry + RR E + LD E,A + RET NC + ADD HL,BC + RET NC + INC E + RET NZ + INC D + RET + ; +.FunkyCarry: INC D + RR E + LD E,A + RET NC + ADD HL,BC + RET NC + INC E + RET +;; + + +;; +;Inputs: H,E +;Outputs: HL is the product, D is 0 +;Destroys: A +;187+6{0,6}+{0,15} +;min: 187cc +;max: 238cc +;avg: 212.5cc +;35 bytes +H_Times_E: + ld d,0 + sla h + sbc a,a + and e + ld l,a + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : ret nc : add hl,de + ret +;; + + +;; +H_Times_E_No_A: +;Inputs: H,E +;Outputs: HL is the product, D is 0 +;190+6{0,6}+{0,15}+{0,1} +;min: 190cc +;max: 242 +;avg: 216 +;36 bytes + ld d,0 + ld l,d + sla h : jr nc,$+3 : ld l,e + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : jr nc,$+3 : add hl,de + add hl,hl : ret nc : add hl,de + ret +;; + + +;; +HL_Times_128: + xor a + rr h + rr l + rra + ld h,l + ld l,a + ret +;; + + +;; +;NOTE: This is a set of in-line routines! +; Input: HL +; Output: BC is the input, HL is 12 times the input +; 6 bytes, 52cc +HL_Times_12 + ld b,h + ld c,l + add hl,hl + add hl,bc + add hl,hl + add hl,hl +;Destroys only register E and F +; Input: HL <= 85, +; 8 bytes, 46cc + ld e,a + ld a,l + add a,a ; hl*2 + add a,l ; hl*3 + ld l,a + ld a,e + add hl,hl ; hl*6 + add hl,hl ; hl*12 +;Destroys only register E and F +; Input: HL <= 85, +; 7 bytes, 55cc + ld e,l + add hl,hl ; hl*2 + add hl,de ; hl*3+d*256 + ld h,0 ; hl*3 + add hl,hl ; hl*6 + add hl,hl ; hl*12 + RET +;; + + +;; +;Inputs: +; DEBC is a 32-bit multiplicand +; A is an 8-bit multiplicand +;Outputs: +; AHLIX is the 40-bit result +; carry reset +; z set if top 8 bits are 0 +; sign flag set as expected +;=============================================================== +;503+8{0,41} +;min: 503cc +;max: 831cc +;avg: 667cc +;29 bytes +DEBC_Times_A: + ld hl,0 + ld ix,0 + call .iter3 +.iter3: +;231+4{0,41} + call .iter2 +.iter2: +;107+2{0,41} + call .iter1 +.iter1: +;45+{0,41} + add ix,ix + adc hl,hl + adc a,a + ret nc + add ix,bc + adc hl,de + adc a,0 + ret +;; + + +;; +;Inputs: +; DE and A are factors +;Outputs: +; A is not changed +; B is 0 +; C is not changed +; DE is not changed +; HL is the product +;Time: +; 342+6x +;13 bytes +DE_Times_A: + ld b,8 + ld hl,0 +.loop: + add hl,hl + rlca + jr nc,$+3 + add hl,de + djnz .loop + ret +;; + + +;; +;Input: DE,A +;Output: A:HL is the product, C=0, B,DE unaffected, z flag set if result is zero, c flag set if A is input as 1, else nc. +;A:128~255 219+6{0,10}+{0,19} avg=258.5 *1/2 +;A:64~127 203+5{0,10}+{0,19} avg=237.5 *1/4 +;A:32~63 187+4{0,10}+{0,19} avg=216.5 *1/8 +;A:16~31 171+3{0,10}+{0,19} avg=195.5 *1/16 +;A:8~15 155+2{0,10}+{0,19} avg=174.5 *1/32 +;A:4~7 139+{0,10}+{0,19} avg=153.5 *1/64 +;A:2~3 123+{0,19} avg=132.5 *1/128 +;A:1 107cc avg=107 *1/256 +;A:0 119cc avg=119 *1/256 +;overall avg: 237.671875cc +DE_Times_A_v1: + ld c,0 + ld h,d + ld l,e + add a,a : jr c,.mul_07 + rla : jr c,.mul_06 + rla : jr c,.mul_05 + rla : jr c,.mul_04 + rla : jr c,.mul_03 + rla : jr c,.mul_02 + rla : jr c,.mul_01 + rla + ret c + ld h,a + ld l,a + ret +.mul_07: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_06: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_05: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_04: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_03: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_02: + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,c +.mul_01: + add hl,hl : rla : ret nc : add hl,de : adc a,c + ret +;; + + +;; +DE_Times_A_v2: +;DE*A ==> AHL + ld hl,0 + ld b,h + add a,a : jr nc,$+5 : ld h,d : ld l,e + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : jr nc,$+4 : add hl,de : adc a,b + add hl,hl : rla : ret nc : add hl,de : adc a,b + ret +;; + + +;; +;C*BDE => CAHL +;C = 0 157 +;C = 1 141 +;141+ +;C>=128 135+6{0,33+{0,1}}+{0,20+{0,8}} +;C>=64 115+5{0,33+{0,1}}+{0,20+{0,8}} +;C>=32 95+4{0,33+{0,1}}+{0,20+{0,8}} +;C>=16 75+3{0,33+{0,1}}+{0,20+{0,8}} +;C>=8 55+2{0,33+{0,1}}+{0,20+{0,8}} +;C>=4 35+{0,33+{0,1}}+{0,20+{0,8}} +;C>=2 15+{0,20+{0,8}} +;min: 141cc +;max: 508cc +;avg: 349.21279907227cc +C_times_BDE: + ld a,b + ld h,d + ld l,e + sla c : jr c,.mul8_24_1 + sla c : jr c,.mul8_24_2 + sla c : jr c,.mul8_24_3 + sla c : jr c,.mul8_24_4 + sla c : jr c,.mul8_24_5 + sla c : jr c,.mul8_24_6 + sla c : jr c,.mul8_24_7 + sla c : ret c + ld a,c + ld h,c + ld l,c + ret +.mul8_24_1: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_2: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_3: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_4: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_5: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_6: + add hl,hl : rla : rl c : jr nc,$+7 : add hl,de : adc a,b : jr nc,$+3 : inc c +.mul8_24_7: + add hl,hl : rla : rl c : ret nc : add hl,de : adc a,b : ret nc : inc c + ret +;; + + +; +;ۄ +; +;Signed division CHL/DE by Zeda, inspired by code from matrefeytontias. +;signed CHL/DE +;signed CHL/DE ==> CHL, |remainder| is DE +sdiv24_16: +;Get the sign of the result + ld a,c + xor d + push af + +;Make BHL positive + xor d + jp p,.skip1 + xor a + sub l + ld l,a + ld a,0 + sbc a,h + ld h,a + sbc a,a + sub c + ld c,a +.skip1: + +;make DE negative + bit 7,d + jr z,.skip2 ;setting DE negative + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a + ld a,c +.skip2: + + ld b,24 + push hl + pop ix + ld hl,0 + +.loop: + add ix,ix + rla + adc hl,hl + add hl,de + jr c,.skip3 + sbc hl,de + DB #DA ;start or `jp c,**` +.skip3: + inc ixl + djnz .loop + ld c,a + ex de,hl ;DE is remainder + + push ix + pop hl + +;restore sign + pop af + ret p + xor a + sub l + ld l,a + ld a,b + sbc a,h + ld h,a + sbc a,a + sub c + ld c,a + ret +;; + + +;; +;Adapted from Axe +p_SDiv: + ld a,h + xor d + push af + xor d + jp p,.Skip1 + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a +.Skip1: + bit 7,d + jr z,.Skip2 + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a +.Skip2: + call div16 ;normal routine division + pop af + ret p + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a + ret +;; + + +;; +;Input: HLDE is numerator, C<129 is the divisor. +;Output: HLDE is quotient, A is remainder, C is negated +;1021+4{0,15} +;min: 1021cc +;max: 1081cc +;min: 1051cc +;87 bytes +HLDE_Div_C: + xor a + sub c + ld c,a +;; +;Note: -C<129 +;1009+4{0,15} +;min: 1009cc +;max: 1069cc +;min: 1039cc +;84 bytes +HLDE_Div_negC: + xor a + call .div + ld b,h + + ld h,l + call .div + ld l,h + + ld h,d + call .div + ld d,h + + ld h,e + call .div + ld e,h + + ld h,b + rl e + rl d + adc hl,hl + ret + +;216+7{0,1}+{0,8} +;min: 216cc +;max: 231cc +;avg: 224.5cc +.div: + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : jr c,$+3 : sub c + rl h : rla : add a,c : ret c : sub c + ret +;; + + +;; +;Written by calc84maniac, based on a routine from Zeda +;=============================================================== +;=============================================================== +;Performs HL/BC +;Speed: 1168 to 1318 cycles depending on how many set bits in the result +; add 19 if HL is negative +; add 19 if BC is positive +; add another 28 if only one is negative +;Size: 54 bytes +; **31 bytes larger than the regular HL_Div_BC +;Inputs: +; HL is the numerator +; BC is the denominator +;Outputs: +; HL is the quotient +; DE is the remainder +; BC = -abs(BC) +;=============================================================== +HL_SDiv_BC: + ld a,h + xor b + push af +.absHL: + add hl,hl + jr nc,.negabsBC + xor a : sub l : ld l,a + sbc a,a : sub h : ld h,a +.negabsBC: + bit 7,b + jr nz,$+8 + xor a : sub c : ld c,a + sbc a,a : sub b : ld b,a + ex de,hl + xor a + ld h,a + ld l,a + ld a,15 +.Div_Loop_1: + rl e : rl d + adc hl,hl + add hl,bc + jr c,$+4 + sbc hl,bc + dec a + jr nz,.Div_Loop_1 + ex de,hl + adc hl,hl + pop af : ret p + xor a : sub l : ld l,a + sbc a,a : sub h : ld h,a + ret +;; + + +;; +;Inputs: +; HL is the numerator +; C<128 is the denominator +;Outputs: +; A is twice the remainder of the unrounded value +; B is 0 +; C is not changed +; DE is not changed +; HL is the rounded quotient +; c flag set means no rounding was performed +; reset means the value was rounded +HL_Div_C_round: + ld b,16 + xor a + add hl,hl + rla + cp c + jr c,$+4 + inc l + sub c + djnz $-7 + add a,a + cp c + ret c + inc hl + ret +;; + + +;; +;I'm not postive on the timing. +;min: 203 +;max: 308 +;avg: 236.125 +HL_Div_B: + add hl,hl + ld a,h + jr c,.div16_8_2_0 + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_1 +.div16_8_1_1: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_2 +.div16_8_1_2: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_3 +.div16_8_1_3: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_4 +.div16_8_1_4: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_5 +.div16_8_1_5: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_6 +.div16_8_1_6: + cp b + jr c,$+4 + sub b : inc l + sla l : rla + jr c,.div16_8_2_7 +.div16_8_1_7: + cp b : ret c : sub b : inc l + ret + +.div16_8_2_0: + sub b : rl l : rla : jr nc,.div16_8_1_1 +.div16_8_2_1: + sub b : rl l : rla : jr nc,.div16_8_1_2 +.div16_8_2_2: + sub b : rl l : rla : jr nc,.div16_8_1_3 +.div16_8_2_3: + sub b : rl l : rla : jr nc,.div16_8_1_4 +.div16_8_2_4: + sub b : rl l : rla : jr nc,.div16_8_1_5 +.div16_8_2_5: + sub b : rl l : rla : jr nc,.div16_8_1_6 +.div16_8_2_6: + sub b : rl l : rla : jr nc,.div16_8_1_7 +.div16_8_2_7: + sub b : inc l + ret +;; + + +;; +HL_Div_384: +;223cc + ;(HL+HL*5*17*2)/256 + push hl + ld b,h + ld c,l + xor a + add hl,hl : rl a + add hl,hl : rl a + add hl,bc : adc a,0 + ld d,a + ld b,h + ld c,l + add hl,hl : rl a + add hl,hl : rl a + add hl,hl : rl a + add hl,hl : rl a + add hl,bc : adc a,d + add hl,hl : rla + pop de + add hl,hl : rl a + sla l + adc a,0 + ret +;; + + +;; +;;270cc or 280cc +HL_Div_7_round: + xor a + ld d,h + ld e,l + ld b,a + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,b + ld d,h + ld e,l + ld c,a + add hl,hl : rla + add hl,hl : rla + ld d,h + ld e,l + ld c,a + add hl,hl : rla + add hl,hl : rla + ld d,a + ld d,h + ld e,l + ld c,a + ld l,a + ld h,b + add hl,hl + add hl,hl + add hl,hl + add hl,hl + add hl,de + adc a,b + sla l + ld l,h + ld h,a + ret nc + inc hl + ret +;AH/16 +;; + + +;; +;210cc or 220cc +HL_Div_5_round: + xor a + ld d,h : ld e,l : ld b,a + add hl,hl : rla + add hl,de : adc a,b + ld d,h : ld e,l : ld c,a + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,c + ld d,a : ld e,h + add hl,de : adc a,b + ld d,a : ld e,h + add a,l + ex de,hl + rla : rla : and 3 : rra + adc a,b + add a,l + ld l,a + ret nc + inc h + ret +;; + + +;; +;HL/5 +;HL/4+HL*3*17*257 +;234cc to 245cc +HL_Div_5: + xor a + ld b,h + ld c,l + ld d,a + add hl,hl : rla + add hl,bc : adc a,d ;3 + add hl,hl : rla ;6 + add hl,hl : rla ;12 + add hl,hl : rla ;24 + add hl,bc : adc a,d ;25 + add hl,hl : rla ;50 + add hl,bc : adc a,d ;51 +;AHL0+AHL+BC/2 +;AHL*257/256 =AHL+A + srl b : rr c + srl b : rr c + ld d,a + ld a,b + add a,l + ld b,a + ld e,h + jr nc,$+3 + inc de + add hl,bc + ld a,d + add a,e + ld e,a + ret nc + inc d + ret +;; + + +;; +;205cc or 215cc +HL_Div_3_round: + xor a : ld d,h : ld e,l + add hl,hl : rla + add hl,hl : rla + add hl,de + ld d,h : ld e,l : ld b,a + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,bas + ld d,h : ld e,l : ld b,a + ld d,a : ld e,h : add hl,de + adc a,0 + sla l + ld l,h + ld h,a + ret nc + inc hl + ret +;; + + +;; +;HL/3 --> DE +;209cc to 219cc +HL_Div_3: + xor a + ld b,a + ld d,h + ld e,l + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,b + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,b + add hl,hl : rla + add hl,hl : rla + add hl,de : adc a,b +;AHL+(AHL+(DE>>1))/256 + srl d : rr e +;AHL+(AHL+DE)/256 +;AH.L+A.HL+.DE + ld b,h + ld c,l +;AB.C+A.HL+.DE + add hl,de +;AB.C+A.HL+carry + ld d,a +;DB.C+A.H+carry + adc a,b + ld e,a + jr nc,$+3 + inc d +;DE.C+0.H+carry + ld a,h + add a,c + ex de,hl + ret nc + inc hl + ret +;; + + +;; +;Input: HL +;Output: HL is the input divided by 3 +;Destroys: B,C,E,A +;217cc +HL_Div_3: +;increment HL, putting overflow in A + ld bc,1 + ld a,b + add hl,bc + adc a,b +;We want a difference of a factor of 2 shifts + ld b,h + ld c,l + ld e,a + add hl,hl : rla + add hl,hl : rla + add hl,bc : adc a,e +;We want a difference of a factor of 4 shifts + ld b,h + ld c,l + ld e,a + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,bc : adc a,e + ld b,a + ld c,h + add hl,bc + adc a,0 + ld l,h + ld h,a +;now HL is our result + ret +;; + + +;; +;1360+24({0,3+{0,3}}) +;min: 1360cc +;max: 1504cc +;avg: 1414cc +;17 bytes +EHL_Div_D: + xor a + ld b,24 +.loop: + add hl,hl + rl e + rla + jr c,$+5 ;if D is guaranteed <129, can omit this + cp d + jr c,$+4 + sub d + inc l + djnz .loop + ret +;; + + +;; +;Inputs: +; DE,BC are 8.8 Fixed Point numbers +;Outputs: +; HL is the 8.8 Fixed Point result (rounded to the least significant bit) +;if DE is 0 : 122cc or 136cc if BC is negative +;if |BC|>=128*|DE| : 152cc or 166cc if BC is negative +;Otherwise: +;min: 1164cc +;max: 1377cc +;avg: 1258.5cc +BC_Div_DE_88: +; First, find out if the output is positive or negative + ld a,b + xor d + push af ;sign bit is the result sign bit + +; Now make sure the inputs are positive + xor d ;A now has the value of B, since I XORed it with D twice (cancelling) + jp p,.skip1 ;if Positive, don't negate + xor a + sub c + ld c,a + sbc a,a + sub b + ld b,a +.skip1: + +;now make DE negative to optimize the remainder comparison + ld a,d + or d + jp m,.skip2 + xor a + sub e + ld e,a + sbc a,a + sub d + ld d,a +.skip2: + +;if DE is 0, we can call it an overflow +;A is the current value of D + or e + jr z,div_fixed88_overflow + +;The accumulator gets set to B if no overflow. +;We can use H=0 to save a few cc in the meantime + ld h,0 + +;if B+DE>=0, then we'll have overflow + ld a,b + add a,e + ld a,d + adc a,h + jr c,div_fixed88_overflow + +;Now we can load the accumulator/remainder with B +;H is already 0 + ld l,b + + ld a,c + call div_fixed88_sub + ld c,a + + ld a,b ;A is now 0 + call div_fixed88_sub + +; if 2HL+DE>=0, increment result to round. + add hl,hl + add hl,de + ld h,c + ld l,a + jr nc,$+3 + inc hl + +;Now check if H is overflowed + bit 7,h + jr nz,.div_fixed88_overflow + + + pop af + ret p + xor a + sub l + ld l,a + sbc a,a + sub h + ld h,a + ret + +.div_fixed88_overflow: + ld hl,#7FFF + pop af + ret p + inc hl + inc l + ret + +.div_fixed88_sub: +;min: 456cc +;max: 536cc +;avg: 496cc + ld b,8 +.loop: + rla + adc hl,hl + add hl,de + jr c,$+4 + sbc hl,de + djnz .loop + adc a,a + ret +;; + + +;; +;HLIX/BC -> HLIX remainder DE +;174+4*.sub8 +;min: 2186cc +;max: 2794cc +;avg: 2466cc +;61 bytes +div32_16: + ex de,hl ; 4 +; Negate BC to allow add instead of sbc + xor a ; 4 +; Need to set HL to 0 anyways, so save 2cc and a byte + ld h,a ; 4 + ld l,a ; 4 + sub c ; 4 + ld c,a ; 4 + sbc a,a ; 4 + sub b ; 4 + ld b,a ; 4 + + + ld a,d ; 4 + call .sub8 ; 17 + rla ; 4 + ld d,a ; 4 + + ld a,e ; 4 + call .sub8 ; 17 + rla ; 4 + ld e,a ; 4 + + ld a,ixh ; 8 + call .sub8 ; 17 + rla ; 4 + ld ixh,a ; 8 + + ld a,ixl ; 8 + call .sub8 ; 17 + rla ; 4 + ld ixl,a ; 8 + + ex de,hl ; 4 + ret ; 10 + +.sub8: +;119+8*.sub +;min: 503cc +;max: 655cc +;avg: 573cc + call .iter1 +.iter1: +;17+2(17+2(.sub))) + call .iter2 +.iter2: +;17+2(.sub) + call .sub +.sub: +;48+{8,0+{0,19}} +;min: 48cc +;max: 67cc +;avg: 56.75cc + rla ; 4 + adc hl,hl ; 15 + jr c,.skip ;12/7 + add hl,bc ; 11 + ret c ;11/5 + sbc hl,bc ; 15 + ret ; 10 +.skip: + add hl,bc ; 11 + scf ; 4 + ret ; 10 +;; + + +;; +;HL/9 --> A, HL<2304 +div9: + inc hl + ld d,h + ld e,l + add hl,hl + add hl,de + add hl,hl + add hl,de + ld e,0 + ld d,l + ld a,h + add hl,hl + add hl,hl + add hl,de + adc a,e + add hl,hl + rla + add hl,hl + rla + ret +;; + + +;; +;Made by Zeda Thomas, use it for whatever, and please optimize this! +;Slight Warning: This passed a handful of tests, but if you find a bug, +;please report it. I still actively maintain these (as of January 2020). +;Inputs: +; HLIX/BCDE +;Outputs: +; HLIX is the quotient +; BCDE is the remainder +;RAM: +; uses 8 bytes of RAM: +; 4 bytes at temp32_0 +; 4 bytes at temp32_1 +; +;min: 5240cc +;max: 6264cc +;avg: 5752cc +;113 bytes +div_32_32: +; Back up HLIX + ld (.temp32_0),ix + ld (.temp32_0+2),hl + + +;negate BCDE + xor a + ld l,a : sbc a,e : ld e,a + ld a,l : sbc a,d : ld d,a + ld a,l : sbc a,c : ld c,a + ld a,l : sbc a,b : ld b,a + + ld a,h +;set HLIX to 0 + ld h,l + ld ix,0 + call .sub + ld (.temp32_0+3),a + + ld a,(.temp32_0+2) + call .sub + ld (.temp32_0+2),a + + ld a,(.temp32_0+1) + call .sub + ld (.temp32_0+1),a + + ld a,(.temp32_0+0) + call .sub + ld (.temp32_0),a + + push ix + pop de + ld b,h + ld c,l + ld ix,(.temp32_0) + ld hl,(.temp32_0+2) + ret + + + +.sub: +;min: 1223cc +;max: 1479cc +;avg: 1351cc + + call .iter1 +.iter1: + call .iter2 +.iter2: + call .iter3 +.iter3: +;min: 138cc +;max: 170cc +;avg: 154cc +;HLIX*2 + add ix,ix + adc hl,hl + +;rotate in the bit + add a,a + jr nc,.skip1 + inc ix +.skip1: + +;save HLIX in case we need to restore + ld (temp32_1),ix + ld (temp32_1+2),hl + +;check if HLIX>=-BCDE +; ==> HLIX+BCDE >= 0 + add ix,de + adc hl,bc + jr c,.skip2 + +;we need to restore + ld ix,(temp32_1) + ld hl,(temp32_1+2) + ret +.skip2: + inc a + ret +;; + + +;; +;Created by calc84maniac +;NOTE from Zeda: C should <=128, the original forgot to mention this. +;Inputs: dehl=32-bit dividend, c<=128 is the divisor (Or is it the other way around?) +;Outputs: dehl=32-bit quotient, a=remainder, c=unchanged, b=0 +;min: 1936cc +;max: 2032cc +;avg: 1984cc +;Size: 17 bytes +DEHL_Div_C: +.div32bit: + ld b,32 + xor a +.divloop: + add hl,hl + rl e + rl d + rla + cp c + jr c,.divlbl + inc l + sub c +.divlbl: + djnz .divloop + ret +;; + + +;; +;Inputs: +; DEHL +;Outputs: +; DEHL is the quotient +; A is the remainder +; B is the remainder +; C is 10 +;1300cc~1329cc +;49 bytes +DEHL_Div_10_v1: + xor a + ld bc,05F6h + rl d : rla + rl d : rla + rl d : rla + rl d : rla : add a,c : jr c,$+3 : sub c : djnz $-7 + ld b,8 + rl e : rla : add a,c : jr c,$+3 : sub c : djnz $-7 + ld b,8 + rl h : rla : add a,c : jr c,$+3 : sub c : djnz $-7 + ld b,8 + rl l : rla : add a,c : jr c,$+3 : sub c : djnz $-7 + adc hl,hl + rl e + rl d + ret +;; + + +;; +;Inputs: +; DEHL +;Outputs: +; DEHL is the quotient +; A is the remainder +; B is the remainder +; C is 10 +;912cc~941cc +DEHL_Div_10_v2: + xor a + ld c,10 + rl d : rla + rl d : rla + rl d : rla + rl d : rla : sub c : jr nc,$+3 : add a,c + rl d : rla : sub c : jr nc,$+3 : add a,c + rl d : rla : sub c : jr nc,$+3 : add a,c + rl d : rla : sub c : jr nc,$+3 : add a,c + rl d : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl e : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl h : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + rl l : rla : sub c : jr nc,$+3 : add a,c + ld b,a + ld a,l : rra : ccf : ld l,a + ld a,h : rra : ccf : ld h,a + ld a,e : rra : ccf : ld e,a + ld a,d : rra : ccf : ld d,a + ld a,b + ret +;; + + +;; +;Inputs: +; C is the numerator +; D is the denominator +;Outputs: +; A is the remainder +; B is 0 +; C is the result of C/D +; D,E,H,L are not changed +C_Div_D: + ld b,8 + xor a +.loop: + sla c + rla + cp d + jr c,.skip1 + inc c + sub d +.skip1: + djnz .loop + ret +;; + + +;; +;Input: +; HL points to the bignum (1 byte size prefix (0 -> 1 byte, 1 -> 2 bytes, n-1 -> n bytes), n subsequent bytes) +;Output: +; bignum is divided in-place, not renormalized +; A is the remainder +; BC is 100 +bignum_div_100: + ld c,100 +bignum_div_C: +;Note: C<128 + ld b,(hl) + inc hl + ld a,(hl) + ld h,-1 + inc h : sub c : jr nc,$-2 + add a,c + ld (hl),a + inc b + dec b + ret z +.loop: + inc hl + ld e,(hl) + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + sla e : rla : cp c : jr c,$+4 : sub a,c : inc e + ld (hl),a + djnz .loop + ret +;; + + +;; +;BC/DE ==> BC, remainder in HL +BC_Div_DE: + ld hl,0 + ld a,b + ld b,16 +.loop: + ;shift the bits from BC into HL + sla c + rla + adc hl,hl + sbc hl,de + jr nc,.inc_acc + add hl,de + db #FE ;this begins the instruction `cp *`, so it eats the next byte. +.inc_acc: + inc c + djnz .loop + ld b,a + ret +;; + + +;; +BC_Div_DE_faster: +;BC/DE ==> BC, remainder in HL +;NOTE: BC/0 returns 0 as the quotient. +;min: 738cc +;max: 898cc +;avg: 818cc +;144 bytes + xor a + ld h,a + ld l,a + sub e + ld e,a + sbc a,a + sub d + ld d,a + + ld a,b + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla + ld b,a + + ld a,c + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla + ld c,a + + ret +;; + + +;; +;BC/DE ==> BC, remainder in HL +;NOTE: BC/0 returns 0 as the quotient. +;min: 773cc +;max: 933cc +;avg: 853cc +;82 bytes +BC_Div_DE_fast: + xor a + ld h,a + ld l,a + sub e + ld e,a + sbc a,a + sub d + ld d,a + + ld a,b + ld b,c + call .sub + ld a,b + ld b,c + +.sub: +;min: 354cc +;max: 434cc +;avg: 394cc + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla : adc hl,hl : add hl,de : jr c,$+4 : sbc hl,de + rla + ld c,a + ret +;; + + +;; +BC_Div_DE: + ld hl,0 + inc d + dec d + jr z,.smalldiv + ld l,b + ld b,h +.nextpart: + ld a,c + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + rla : adc hl,hl : sbc hl,de : jr nc,$+3 : add hl,de + cpl + ld c,a + ret +.smalldiv: + xor a + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + rl b : rla : sub e : jr nc,$+3 : add a,e + ld l,a + ld a,b + cpl + ld b,a + jp .nextpart +;; + + +;; +;Divides a 48-bit integer by 100, where A holds the upper 8 bits and L holds the next 8, followed by DE and IX +;Result is in HLDEIX, A is the remainder +ALDEIX_div_100: + ld c,100 +ALDEIX_Div_C: +;Note: C<128 + call AL_Div_C + push hl + ld l,d + call AL_Div_C.rotate + ld h,l + ld l,e + call AL_Div_C.rotate + push hl + push ix + pop de + ld l,d + call AL_Div_C.rotate + ld h,l + ld l,e + call AL_Div_C.rotate + pop de + ex (sp),ix + pop hl + ret +;; + + +;; +;Divides a 32-bit integer by 100, where A holds the upper 8 bits and L holds the next 8, followed by DE +;Result is in DEHL, A is the remainder +ALDE_div_100: + ld c,100 +ALDE_Div_C: +;Note: C<128 + call AL_Div_C + push hl + ld l,d + call AL_Div_C.rotate + ld h,l + ld l,e + pop de + jp AL_Div_C.rotate +;; + + +;; +AL_div_100: +;Divides a 16-bit integer by 100, where A holds the upper 8 bits and L holds the lower +;Result is in HL, A is the remainder +;min:256 +;max:329 +;avg:305.5625cc + ld c,100 +AL_Div_C: +;Note: C<128 + ld h,-1 + inc h : sub c : jr nc,$-2 + add a,c +.rotate: + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : jr c,$+4 : sub a,c : inc l + sla l : rla : cp c : ret c : sub a,c : inc l + ret +;; + + +;; +HL_mod_3: +;destroys HL, returns HL mod 3 in A +;112+{0,2} + {0,8} + {0,1} +;min: 112 +;max: 123 +;avg: 117.5 + +; HL mod 3 == (H*256+L) mod 3 == (H*1+L) mod 3 == (H+L) mod 3 +;So add the upper and lower byte + ld a,h + add a,l + +;If adding caused an overflow, well add (256 mod 3) == 1 to A. + adc a,0 ;We don't need to worry abput overflow here :) +;; +;destroys HL, returns A mod 3 in A +;97+{0,2} + {0,8} + {0,1} +;min: 97 +;max: 108 +;avg: 102.5 +;A mod 3 is equal to adding the upper and lower nibble of A mod 3 +;For example, if A=16u+l, then A mod 3 == 16u+l mod 3 == u+l +A_mod_3: +;So add the upper and lower nibble + ld l,a ;save a copy of a + add a,a + add a,a + add a,a + add a,a + add a,l + +; If there was overflow, again, add 1. However, our number is shifted up by 4, +; so we need to add 1<<4 == 16 + jr nc,$+4 + add a,16 + +; Now our number is in the upper 4 bits of A. We need to add the top 2 bits to +; the preceding 2 bits + + ld l,a + add a,a + add a,a + +; Note that now we might have some garbage bits in the middle 4 bits of A, +; overlapping two garbage bits in L. We'll need to clear out bits to avoid +; issues. It is convenient to use a mask of %11000000 + ld h,%11000000 + and h + add a,l + +;Now if there was overflow, add 1<<6 == #40. H "happens" to be -#40, so we can +;do this by subtracting h + jr nc,$+3 + sub h + +;Now finally, mask out all but those upper two bits + and h + +; At this point, we can stop if we only need to test divisibility +; If the parity is even, then we have to do (0 mod 3) or (3 mod 3), both of +; which are 0, indicating divisibility by 3. If we have odd parity, then the +; upper two bits are 10 or 01, both of which are not 0 mod 3. +; basically, pe==divisible, po==not divisible. +; +; But, to get full modulo, shift those uppertwo bits into the lower two bits + rlca + rlca + ret po +; And make sure to set A to 0 if it was 0 or 3 :) + xor a + ret +;; + + +;; +;Inputs: HL +;Outputs: pe if HL was divisible by 3, else po. +;Destroys: HL +;103+{0,2}+{0,1} +;min: 103 +;max: 106 +;avg: 104.5 +HL_divisible_by_3: + ld a,h + add a,l + adc a,0 +;; +;Inputs: A +;Outputs: pe if A was divisible by 3, po if A was not divisible by 3 +;Destroys: HL +;88+{0,2}+{0,1} +;min: 88 +;max: 91 +;avg: 89.5 +A_divisible_by_3: + ld h,#C0 + ld l,a ;save a copy of a + add a,a + add a,a + add a,a + add a,a + add a,l + jr nc,$+4 + add a,16 + ld l,a + add a,a + add a,a + and h + add a,l + jr nc,$+3 + sub h + and h + ret +;; + + +;; +;; + + +; +;ۋ +; +;Input: H.L needs to be on (0,128.0) +;Output: H.L if c flag set +; returns nc if input is negative (HL not modified) +;Error: +; The error on the outputs is as follows: +; 20592 inputs are exact +; 12075 inputs are off by 1/256 +; 100 inputs are off by 2/256 +; So all 32767 inputs are within 2/256, with average error being <1/683 which is smaller than 1/256. +;Size: 177 bytes +;Speed: average speed is less than 1250 t-states +lognat: + ld a,h : or l : jr nz,$+5 + ld h,80h : ret + dec h + dec h + jr nz,$+9 + inc l : dec l + jr nz,.normalizeln + ld l,177 + ret + inc h + jr nz,.normalizeln_2 + ld b,h + ld c,l + ld e,l + ld d,8 + add hl,hl + add hl,hl + add hl,de + ex de,hl + ;call .HL_Div_DE + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a + add hl,hl : sbc hl,de : adc a,a + ld h,a : ld l,b + sla h : jr c,$+3 : ld l,c + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + add hl,hl : jr c,$+3 : add hl,bc + rl l + ld a,h + adc a,b + ld h,b + ld l,a + scf + ret + +; .HL_Div_DE: +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : jr nc,$+3 : add hl,de : adc a,a +; add hl,hl : sbc hl,de : adc a,a : ret + +.normalizeln: + inc h +.normalizeln_2: + xor a + inc h : ret m + ld d,a : ld e,a + ld a,l + jr z,.toosmall + inc e : srl h : rra : jr nz,$-4 + rla : rl h + dec e +.stepin: + ld l,a + push de + call lognat + pop de + ;now multiply DE by 355, then divide by 2 (rounding) + ld b,d : ld c,e : ld a,d + ex de,hl + add hl,hl + add hl,hl ;4 + add hl,bc ;5 + add hl,hl ;10 + add hl,bc ;11 + add hl,hl ;22 + add hl,hl + add hl,hl + add hl,hl + add hl,bc + add hl,hl + add hl,bc + sra h : rr l + adc hl,de + scf + ret +.toosmall: + dec d + dec e : add a,a : jr nc,$-2 + inc h + jp .stepin +;; + + +;; +;Input: HL is a fixed point number +;Output: lg(H.L)->H.L +;Speed: Avg: 340 +lg_88: + ld de,.LUT + ld b,0 + ld a,h + or a + ret m + ld a,l + jr z,$+8 + inc b : srl h : rra : jr nz,$-4 + or a : jr nz,$+6 + ld hl,8000h : ret + rra : inc b : jr nc,$-2 + ;A is the element to look up in the LUT + ld l,a + ld c,h + dec b + add hl,hl + add hl,de + ld e,(hl) + inc hl + ld d,(hl) + ex de,hl + add hl,bc + ret +; 0 1 2 3 4 5 6 7 8 9 +.LUT: DW #F800, #F996, #FA52, #FACF, #FB2C, #FB76, #FBB3, #FBE8, #FC16, #FC3F ; 0 + DW #FC64, #FC86, #FCA5, #FCC1, #FCDC, #FCF4, #FD0B, #FD21, #FD36, #FD49 ; 1 + DW #FD5C, #FD6D, #FD7E, #FD8E, #FD9D, #FDAC, #FDBA, #FDC8, #FDD5, #FDE2 ; 2 + DW #FDEE, #FDFA, #FE06, #FE11, #FE1C, #FE26, #FE31, #FE3B, #FE44, #FE4E ; 3 + DW #FE57, #FE60, #FE69, #FE71, #FE7A, #FE82, #FE8A, #FE92, #FE9A, #FEA1 ; 4 + DW #FEA9, #FEB0, #FEB7, #FEBE, #FEC5, #FECB, #FED2, #FED8, #FEDF, #FEE5 ; 5 + DW #FEEB, #FEF1, #FEF7, #FEFD, #FF03, #FF09, #FF0E, #FF14, #FF19, #FF1E ; 6 + DW #FF24, #FF29, #FF2E, #FF33, #FF38, #FF3D, #FF42, #FF47, #FF4B, #FF50 ; 7 + DW #FF55, #FF59, #FF5E, #FF62, #FF67, #FF6B, #FF6F, #FF74, #FF78, #FF7C ; 8 + DW #FF80, #FF84, #FF88, #FF8C, #FF90, #FF94, #FF98, #FF9B, #FF9F, #FFA3 ; 9 + DW #FFA7, #FFAA, #FFAE, #FFB2, #FFB5, #FFB9, #FFBC, #FFC0, #FFC3, #FFC6 ; 10 + DW #FFCA, #FFCD, #FFD0, #FFD4, #FFD7, #FFDA, #FFDD, #FFE0, #FFE4, #FFE7 ; 11 + DW #FFEA, #FFED, #FFF0, #FFF3, #FFF6, #FFF9, #FFFC, #FFFF ; 12 +;; + + +;; +;Inputs: +; HL is an unsigned 8.8 fixed point number. +;Outputs: +; HL is the signed 8.8 fixed point value of log base 2 of the input. +;Example: +; pass HL = 3.0, returns 1.58203125 (actual is ~1.584962501...) +;averages about 39 t-states slower than original +;62 bytes +Log_2_88_size: + ex de,hl + ld hl,0 + ld a,d + ld c,8 + or a + jr z,.DE_lessthan_1 + srl d + jr z,logloop-1 + inc l + rr e + jr $-7 +.DE_lessthan_1: + ld a,e + dec hl + or a + ret z + inc l + dec l + add a,a + jr nc,$-2 + ld e,a + + inc d +.loop: + add hl,hl + push hl + ld h,d + ld l,e + ld a,e + ld b,8 + + add hl,hl + rla + jr nc,$+5 + add hl,de + adc a,0 + djnz $-7 + + ld e,h + ld d,a + pop hl + rr a ;this is NOT supposed to be rra, we need the z flag affected + jr z,$+7 + srl d + rr e + inc l + dec c + jr nz,.loop + ret +;; + + +;; + +;Input: HL is a fixed point number +;Output: ln(H.L)->H.L +;Speed: Avg: 340+(325 worst case) +ln_88_fixed: + call lg_88 + ;now signed multiply HL by 355, then divide by 2 (rounding) + ld de,0 + bit 7,h + jr z,$+9 + dec e : xor a : sub l : ld l,a + sbc a,a : sub h : ld h,a + ld b,h + ld c,l + xor a + add hl,hl + add hl,hl : rla + add hl,bc : adc a,d + add hl,hl : rla + add hl,bc : adc a,d + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,hl : rla + add hl,bc : adc a,d + add hl,hl : rla + add hl,bc : adc a,d + sra a : rr h + ld l,h + ld h,a + inc e + ret nz + xor a : sub l : ld l,a + sbc a,a : sub h : ld h,a + ret +;; + + +; +;ې +; +; ⥯ +;Inputs: +; HL is the 8.8 fixed point number 'x' for 2^x +;Outputs: +; DEHL is the 24.8 fixed point result. If there was overflow exceeding 2^24, then this value is set to the max. +power_2: + ld a,l + or a + push hl ;save H for later, H is the integer part of the power + ld hl,1 + jr z,.integer + scf ;set the carry flag so that a bit is rotated into a. This will act as our counter. +;wait until we come across the lowest bit. Also note that we + rra + jr nc,$-1 + ld hl,2*256 +.loop: + push af + call FPSqrtHL ;returns in HL + pop af + srl a + jr z,.integer + jr nc,.loop + add hl,hl + jp .loop +.integer: + pop bc +;Now b is the integer part for 2^x that we need to multiply HL by. + ld de,0 + ld a,b + or a + ret z + + add hl,hl + rl e : rl d : jr c,.wayoverflow + djnz $-7 + ret +.wayoverflow: + ld hl,-1 + ld d,h + ld e,l + ret +;; + + +;; +;Written by Zeda + +; Requires ;!TEST +; mul16 ;BC*DE ==> DEHL +; DEHL_Div_BC ;DEHL/BC ==> DEHL +;"n choose r", defined as n!/(r!(n-r)!) +;Computes "HL choose DE" +;Inputs: HL,DE +;Outputs: +; HL is the result +; "HL choose DE" +; carry flag reset means overflow +;Destroys: +; A,BC,DE,IX +;Notes: +; Overflow is returned as 0 +; Overflow happens if HL choose DE exceeds 65535 +; This algorithm is constructed in such a way that intermediate +; operations won't erroneously trigger overflow. +;66 bytes +ncr_HL_DE: + ld bc,1 + or a + sbc hl,de + jr c,.oob + jr z,.exit + sbc hl,de + add hl,de + jr c,$+3 + ex de,hl + ld a,h + or l + push hl + pop ix +.exit: + ld h,b + ld l,c + scf + ret z +.loop: + push bc : push de + push hl : push bc + ld b,h + ld c,l + call mul16 ;BC*DE ==> DEHL + pop bc + call DEHL_Div_BC ;result in DEHL + ld a,d + or e + pop bc + pop de + jr nz,.overflow + add hl,bc + jr c,.overflow + pop bc + inc bc + ld a,b + cp ixh + jr c,.loop + ld a,ixl + cp c + jr nc,.loop + ret +.overflow: + pop bc + xor a + ld b,a +.oob: + ld h,b + ld l,b + ret +;; + + +;; +;Inputs: DE,HL +;Outputs: c flag set if HL is not divisible by DE, else c flag is reset. +; HL is 0 if true. +;See below for a note on the motivation and development of this algorithm. +isDivisible: + ld a,d : or e : ccf : ret z ;remove this if DE is always guaranteed non-zero +;step 1 + ld a,e : or l : rra : jr c,.step2 ;\ + srl d : rr e : rr h : rr l ; | + ld a,e : or l : rra : jr nc,$-11 ; |Remove these if DE is always guaranteed odd at input. +.step2: ; | + ld a,e : rra : ccf : ret c ;/ +;steps 3, 4, and 5 + ld a,l + or a +.loop: + sbc hl,de : ret c : ret z + rr h : rra : bit 0,a : jr z,$-5 + ld l,a + jp .loop +;Motivation and Development +; I often find myself in a situation where I need to find the factors of a number, but I have no technology around to aid me. This means I need to use... mental arithmetic! +; I've been doing this for 15 years, so I have refined my mental process quite a bit. +; It is still a trial division algorithm, but with a very obfuscated "division" technique. +; We don't need to do 1131/7 to see if it is divisible by 7, we just need to see if 7 divides 1131 and this is what my algorithm does. +; Interestingly, testing divisibility at the algorithmic level is a little faster than division. Not by much, but it is also non-negligible. +;The Algorithm +; The core algorith is designed around checking that (A mod B == 0) is true or false. +; We also make the assumption that B is odd and by extension, non-zero. +; The case where B is non-zero and even will be discussed later. +; +; Since B is odd, 2 does not divide B. This means that if A is even: +; (A mod B == 0) if and only if (A/2 mod B)==0. +; We also know by the definition of divisibility that +; (A mod B) == (A+c*B mod B) +; where c is any integer. Combining all this, we have an algorithm: +; +; 1] Remove all factors of 2 from A +; 2] With A now odd, do A=A-B +; If the result is zero, that means (A mod B == 0) +; If the result underflow (becomes "negative", or on the Z80, sets the carry flag), it means that A was somewhere on [1,B-1], so it is not divisible by B. +; 3] Continue back at 1. +; +; Now suppose B is allowd to be non-zero and even. Then B is of the form d*2^k where d is odd. +; This just means there are some factors of 2 that can be removed from B until it is odd. +; The only way A is divisible by B, is if it has the same number or more of factors of 2 as B. +; If we factor out common factors of 2 and find B is still even, then A is not divisible by B. +; Otherwise we have an odd number and only need to check the new (A mod d) +; for which we can use the "odd algorithm" above. +; So putting it all together: +; +; 1] If B==0, return FALSE. +; 2] Remove common factors of 2 from A and B. +; 3] If B is even, return FALSE. +; 4] Remove all factors of 2 from A. +; 5] Subtract B from A (A=A-B). +; If the result is zero, return TRUE. +; If the result is "negative" (setting the carry flag on many processors), return FALSE. +; 6] Repeat at 4] +; +; The overhead steps are 1] to 3]. +; The iterated steps are 4] and 5]. +; Because 5 always produces an even number, when it then performs step 4, it always divides by at least one factor of 2. +; This means the algorithm takes at most 1+ceil(log2(A))-floor(log2(B) iterations. +; For example, if A is a 37-bit number and B is a 13-bit number,this takes at most 38-13 = 25 iterations. +; However, in practice it is usually slightly less. +;Example Time: +; Say I wanted to test if 1337 is divisible by 17. +; Since 17 is odd, we can proceed. +; 1337 is odd, so no factors of 2 to remove. +; 1337-17 == 1320. +; 1320/2 == 660 +; 660/2 == 330 +; 330/2 == 165 +; 165-17 == 148 +; 148/2 == 74 +; 74/2 == 37 +; 37-17 == 20 +; 20/2 == 10 +; 10/2 == 5 +; 5-17 = -12 +; +; So 1337 is not divisible by 17. +;Now test divisibility by 7: +;1337 => 1330 +;=>665 +;=>658 +;=>329 +;=>322 +;=>161 +;=>154 +;=>77 +;=>70 +;=>35 +;=>28 +;=>14 +;=>7 +;=>0 +; +; So 1337 is divisible by 7. +;; + + +;; +;Adds two, little-endian 16-digit BCD integers (8 bytes) +;Input: +; HL points to one BCD integer +; DE points to another BCD integer +;Output: +; The sum is wrriten over the integer at HL. +; HL and DE point to the last digit of their integers. +;46 bytes, 284cc +addBCD_16: + ld a,(de) : add a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a : inc hl : inc de + ld a,(de) : adc a,(hl) : daa : ld (de),a + ret +;; + + +;; +;gcd(HL,DE)->HL +;Output: +; B=0 +; HL is the GCD of the inputs +;Destroys: +; A,DE +; DE is guaranteed 0 unless the output is 0 (which only happens if one of the inputs is 0). +;Uses the binary GCD algorithm +;65 bytes +gcdHL_DE: +;B is our cofactor-of-2 counter + ld b,0 +;If HL=0, return 0 + ld a,h : or l : ret z +;If DE=0, return 0 + ex de,hl + ld a,h : or l : jr nz,.test_cofactor_of_2 + ret +.cofactor_2_loop: + inc b + srl h : rr l + srl d : rr e +.test_cofactor_of_2: + inc b + ld a,e + or l + rra + .c,gcd_cofactor_2_loop + +.remove_factors_of_2_op2: + srl h : rr l : jr nc,.remove_factors_of_2_op2 + adc hl,hl + jr .swap_ops + +.swap_ops_negate: +;At this point, HL needs to be negated and swapped with DE + xor a : sub l : ld l,a : sbc a,a : sub h : ld h,a +.swap_ops: + ex de,hl +.remove_factors_of_2_op1: + srl h : rr l : jr nc,.remove_factors_of_2_op1 + adc hl,hl + sbc hl,de + jr c,.swap_ops_negate + jp nz,.remove_factors_of_2_op1 + +;DE is the GCD, need to shift it left B-1 times. + ex de,hl + dec b + ret z + add hl,hl : djnz $-1 + ret +;; + + +;; +;ॢ ᫮ A HEX-String 頥 HL. +; ᫨ A=#31, HL 㤥 byte #33,#31 +; 112 T +ByteToStrHEX: LD B,A + AND #F0 + RRCA + RRCA + RRCA + RRCA + ADD A,#90 + DAA + ADC A,#40 + DAA + LD (HL),A + INC HL + LD A,B + AND #0F + ADD A,#90 + DAA + ADC A,#40 + DAA + LD (HL),A + RET +;; + + +; +;ۑࠢ. +; +;These code snippets are for 16-bit comparisons. +;"I learned these from calc84maniac" +;"These have similar flags to that of the `cp` instruction. At the very least, +; you get the zero and carry flag identical." + +;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;; +;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;;:;; +;Inputs: +; HL, DE +;Outputs: +; z flag is set if HL=DE, else nz +; c flag is set if HL