Changes

Programming:Ultrafast Multiplication

20,742 bytes added, 09:02, 7 April 2007
New page: The following is the fastest possible '''multiplication routine''' (in a little specialised way) for the CPC, coded by [[Prodatron]] for the [[Voyage 1993 Megademo]] and the [[Digital Orga...
The following is the fastest possible '''multiplication routine''' (in a little specialised way) for the CPC, coded by [[Prodatron]] for the [[Voyage 1993 Megademo]] and the [[Digital Orgasm]] demo. It works with signed values and is mainly used for 3D graphic calculations. You can change it to HL=HL*A by removing LD A,H in front of every RET command inside the MULxxx sub-routines, but than A has to be positive.

<pre>
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@ @
;@ U L T R A F A S T M U L T I P L I C A T I O N @
;@ @
;@ (c)oded 1993 by Prodatron / SymbiosiS @
;@ @
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

;### MULTI -> Multiplies two signed integer values (A=HL*A/256)
;### Input HL=value1 (signed), A=value3 (signed)
;### Output A=HL*A/256 (signed)
;### Destroyed F,BC,DE,HL
MULTI EX DE,HL
LD L,A
LD H,0
ADD HL,HL
LD BC,MULTAB
ADD HL,BC
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
PUSH BC
RET
;
MULTAB
DEFW MUL000,MUL001,MUL002,MUL003,MUL004,MUL005,MUL006,MUL007,MUL008,MUL009,MUL010,MUL011,MUL012,MUL013,MUL014,MUL015,MUL016,MUL017,MUL018,MUL019,MUL020,MUL021,MUL022,MUL023,MUL024,MUL025,MUL026,MUL027,MUL028,MUL029,MUL030,MUL031,MUL032,MUL033
DEFW MUL034,MUL035,MUL036,MUL037,MUL038,MUL039,MUL040,MUL041,MUL042,MUL043,MUL044,MUL045,MUL046,MUL047,MUL048,MUL049,MUL050,MUL051,MUL052,MUL053,MUL054,MUL055,MUL056,MUL057,MUL058,MUL059,MUL060,MUL061,MUL062,MUL063,MUL064,MUL065,MUL066,MUL067
DEFW MUL068,MUL069,MUL070,MUL071,MUL072,MUL073,MUL074,MUL075,MUL076,MUL077,MUL078,MUL079,MUL080,MUL081,MUL082,MUL083,MUL084,MUL085,MUL086,MUL087,MUL088,MUL089,MUL090,MUL091,MUL092,MUL093,MUL094,MUL095,MUL096,MUL097,MUL098,MUL099,MUL100,MUL101
DEFW MUL102,MUL103,MUL104,MUL105,MUL106,MUL107,MUL108,MUL109,MUL110,MUL111,MUL112,MUL113,MUL114,MUL115,MUL116,MUL117,MUL118,MUL119,MUL120,MUL121,MUL122,MUL123,MUL124,MUL125,MUL126,MUL127
DEFW NEG128,NEG127,NEG126,NEG125,NEG124,NEG123,NEG122,NEG121,NEG120,NEG119,NEG118,NEG117,NEG116,NEG115,NEG114,NEG113,NEG112,NEG111,NEG110,NEG109,NEG108,NEG107,NEG106,NEG105,NEG104,NEG103,NEG102,NEG101,NEG100,NEG099,NEG098,NEG097,NEG096,NEG095
DEFW NEG094,NEG093,NEG092,NEG091,NEG090,NEG089,NEG088,NEG087,NEG086,NEG085,NEG084,NEG083,NEG082,NEG081,NEG080,NEG079,NEG078,NEG077,NEG076,NEG075,NEG074,NEG073,NEG072,NEG071,NEG070,NEG069,NEG068,NEG067,NEG066,NEG065,NEG064,NEG063,NEG062,NEG061
DEFW NEG060,NEG059,NEG058,NEG057,NEG056,NEG055,NEG054,NEG053,NEG052,NEG051,NEG050,NEG049,NEG048,NEG047,NEG046,NEG045,NEG044,NEG043,NEG042,NEG041,NEG040,NEG039,NEG038,NEG037,NEG036,NEG035,NEG034,NEG033,NEG032,NEG031,NEG030,NEG029,NEG028,NEG027
DEFW NEG026,NEG025,NEG024,NEG023,NEG022,NEG021,NEG020,NEG019,NEG018,NEG017,NEG016,NEG015,NEG014,NEG013,NEG012,NEG011,NEG010,NEG009,NEG008,NEG007,NEG006,NEG005,NEG004,NEG003,NEG002,NEG001
;
MUL000 LD HL,0:LD A,H:RET
MUL064 ADD HL,HL
MUL032 ADD HL,HL
MUL016 ADD HL,HL
MUL008 ADD HL,HL
MUL004 ADD HL,HL
MUL002 ADD HL,HL
MUL001 LD A,H:RET
MUL096 ADD HL,HL
MUL048 ADD HL,HL
MUL024 ADD HL,HL
MUL012 ADD HL,HL
MUL006 ADD HL,HL
MUL003 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL080 ADD HL,HL
MUL040 ADD HL,HL
MUL020 ADD HL,HL
MUL010 ADD HL,HL
MUL005 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL112 ADD HL,HL
MUL056 ADD HL,HL
MUL028 ADD HL,HL
MUL014 ADD HL,HL
MUL007 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL072 ADD HL,HL
MUL036 ADD HL,HL
MUL018 ADD HL,HL
MUL009 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL088 ADD HL,HL
MUL044 ADD HL,HL
MUL022 ADD HL,HL
MUL011 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL104 ADD HL,HL
MUL052 ADD HL,HL
MUL026 ADD HL,HL
MUL013 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL120 ADD HL,HL
MUL060 ADD HL,HL
MUL030 ADD HL,HL
MUL015 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL068 ADD HL,HL
MUL034 ADD HL,HL
MUL017 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL076 ADD HL,HL
MUL038 ADD HL,HL
MUL019 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL084 ADD HL,HL
MUL042 ADD HL,HL
MUL021 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL092 ADD HL,HL
MUL046 ADD HL,HL
MUL023 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL100 ADD HL,HL
MUL050 ADD HL,HL
MUL025 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL108 ADD HL,HL
MUL054 ADD HL,HL
MUL027 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL116 ADD HL,HL
MUL058 ADD HL,HL
MUL029 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,BC:LD A,H:RET
MUL124 ADD HL,HL
MUL062 ADD HL,HL
MUL031 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL066 ADD HL,HL
MUL033 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL070 ADD HL,HL
MUL035 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL074 ADD HL,HL
MUL037 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL078 ADD HL,HL
MUL039 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:RET
MUL082 ADD HL,HL
MUL041 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL086 ADD HL,HL
MUL043 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL090 ADD HL,HL
MUL045 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL094 ADD HL,HL
MUL047 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL098 ADD HL,HL
MUL049 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL102 ADD HL,HL
MUL051 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL106 ADD HL,HL
MUL053 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL110 ADD HL,HL
MUL055 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL114 ADD HL,HL
MUL057 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL118 ADD HL,HL
MUL059 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL122 ADD HL,HL
MUL061 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL126 ADD HL,HL
MUL063 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL065 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL067 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL069 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL071 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:RET
MUL073 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL075 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL077 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL079 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:RET
MUL081 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL083 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL085 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL087 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL089 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL091 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL093 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL095 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:RET
MUL097 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:RET
MUL099 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
MUL101 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:RET
MUL103 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL105 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL107 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL109 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:RET
MUL111 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:RET
MUL113 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL115 LD E,L:LD D,H:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:RET
MUL117 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:RET
MUL119 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL121 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL123 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL125 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:RET
MUL127 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:RET
;
NEG064 ADD HL,HL
NEG032 ADD HL,HL
NEG016 ADD HL,HL
NEG008 ADD HL,HL
NEG004 ADD HL,HL
NEG002 ADD HL,HL
NEG001 LD A,H:NEG:RET
NEG096 ADD HL,HL
NEG048 ADD HL,HL
NEG024 ADD HL,HL
NEG012 ADD HL,HL
NEG006 ADD HL,HL
NEG003 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG080 ADD HL,HL
NEG040 ADD HL,HL
NEG020 ADD HL,HL
NEG010 ADD HL,HL
NEG005 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG112 ADD HL,HL
NEG056 ADD HL,HL
NEG028 ADD HL,HL
NEG014 ADD HL,HL
NEG007 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG072 ADD HL,HL
NEG036 ADD HL,HL
NEG018 ADD HL,HL
NEG009 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG088 ADD HL,HL
NEG044 ADD HL,HL
NEG022 ADD HL,HL
NEG011 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG104 ADD HL,HL
NEG052 ADD HL,HL
NEG026 ADD HL,HL
NEG013 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG120 ADD HL,HL
NEG060 ADD HL,HL
NEG030 ADD HL,HL
NEG015 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG068 ADD HL,HL
NEG034 ADD HL,HL
NEG017 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG076 ADD HL,HL
NEG038 ADD HL,HL
NEG019 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG084 ADD HL,HL
NEG042 ADD HL,HL
NEG021 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG092 ADD HL,HL
NEG046 ADD HL,HL
NEG023 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG100 ADD HL,HL
NEG050 ADD HL,HL
NEG025 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG108 ADD HL,HL
NEG054 ADD HL,HL
NEG027 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG116 ADD HL,HL
NEG058 ADD HL,HL
NEG029 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG124 ADD HL,HL
NEG062 ADD HL,HL
NEG031 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG066 ADD HL,HL
NEG033 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG070 ADD HL,HL
NEG035 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG074 ADD HL,HL
NEG037 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG078 ADD HL,HL
NEG039 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG082 ADD HL,HL
NEG041 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG086 ADD HL,HL
NEG043 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG090 ADD HL,HL
NEG045 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG094 ADD HL,HL
NEG047 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG098 ADD HL,HL
NEG049 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG102 ADD HL,HL
NEG051 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG106 ADD HL,HL
NEG053 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG110 ADD HL,HL
NEG055 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG114 ADD HL,HL
NEG057 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG118 ADD HL,HL
NEG059 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG122 ADD HL,HL
NEG061 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG126 ADD HL,HL
NEG063 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG065 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG067 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG069 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG071 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG073 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG075 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG077 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,BC:LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG079 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG081 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG083 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG085 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG087 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG089 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG091 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG093 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG095 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG097 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,BC:LD A,H:NEG:RET
NEG099 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG101 LD C,L:LD B,H:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD A,H:NEG:RET
NEG103 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG105 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG107 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG109 LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:ADD HL,DE:LD A,H:NEG:RET
NEG111 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG113 LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG115 LD E,L:LD D,H:ADD HL,HL:LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG117 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:LD E,L:LD D,H:ADD HL,HL:ADD HL,DE:ADD HL,HL:ADD HL,HL:ADD HL,DE:LD A,H:NEG:RET
NEG119 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG121 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG123 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG125 LD C,L:LD B,H:ADD HL,HL:LD E,L:LD D,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:OR A:SBC HL,DE:LD A,H:NEG:RET
NEG127 LD C,L:LD B,H:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:ADD HL,HL:OR A:SBC HL,BC:LD A,H:NEG:RET
NEG128 LD A,L:RR H:RRA:NEG:RET
</pre>