From 64c6cb078931bb77a6a0890d1afbfde08821f819 Mon Sep 17 00:00:00 2001
From: Rafal Michalski New macro Saved 1 cycle on macro New macro New options :k_int24 and :optimize for New macro Table of Contents
Pages
v1.1.1.pre-2¶ ↑
+Z80:¶ ↑
+
+
Z80::MathInt::Macros#mul8_signed
.Z80::MathInt::Macros#mul
.Z80::MathInt::Macros#sign_extend
.Z80::MathInt::Macros#mul8_24
, saved 2 cycles.ZXLib:¶ ↑
ZXLib::Gfx::Macros#ytoattr
.ZXLib:¶ Internal labels
preshift_p
, pmask_in_e
, px_bsh_in_ae
added to ZXLib::Gfx::Draw::Macros
for convenience and alternative entry points.
New routines in ZXLib::Gfx::Draw::Macros
for updating draw line functions in place.
New macro Z80::MathInt::Macros#mul8_signed
.
Saved 1 cycle on macro Z80::MathInt::Macros#mul
.
# File lib/z80/math_i.rb, line 417 +# File lib/z80/math_i.rb, line 434 def add24_16(th8=c, tl16=hl, tt=de, signed:true) th, tl = tt.split tlh, tll = tl16.split @@ -268,7 +270,7 @@Note: -
# File lib/z80/math_i.rb, line 361 +# File lib/z80/math_i.rb, line 378 def adda_to(th, tl) if th == tl or [th,tl].include?(a) raise ArgumentError, "adda_to: invalid arguments!" @@ -353,7 +355,7 @@Note: -
# File lib/z80/math_i.rb, line 1857 +# File lib/z80/math_i.rb, line 1898 def bcdtoa(buffer=hl, size=b, skip_leading0:false, preserve_in:nil, &block) raise ArgumentError unless (address?(buffer) or buffer == hl) and (address?(size) or (register?(size) and size.bit8?)) and @@ -690,7 +692,7 @@Note: -
# File lib/z80/math_i.rb, line 1224 +# File lib/z80/math_i.rb, line 1265 def divmod(k, m, clrrem:true, check0:true, check1:true, modulo:false, optimize: :time) unless clrrem check0 = false @@ -801,7 +803,7 @@Note: -
# File lib/z80/math_i.rb, line 1351 +# File lib/z80/math_i.rb, line 1392 def divmod16(x=ixl, check0:true, check1:true, modulo:false, quick8:true) raise ArgumentError unless [ixh, ixl, iyh, iyl].include?(x) isolate do |eoc| @@ -933,7 +935,7 @@Note: -
# File lib/z80/math_i.rb, line 1443 +# File lib/z80/math_i.rb, line 1484 def divmod24_8(kh, km, kl, m, check0:true, check1:true, modulo:false, optimize: :time) raise ArgumentError unless [kh, km, kl, m].uniq.size == 4 isolate do |eoc| @@ -999,7 +1001,7 @@Note: -
# File lib/z80/math_i.rb, line 1541 +# File lib/z80/math_i.rb, line 1582 def divmod32_16(x:ixl, check0:true, check1:true, modulo:false, quick8:true) raise ArgumentError unless [ixh, ixl, iyh, iyl].include?(x) isolate do |eoc| @@ -1161,7 +1163,7 @@Note: -
# File lib/z80/math_i.rb, line 1472 +# File lib/z80/math_i.rb, line 1513 def divmod32_8(m=c, mt:c, check0:true, check1:true, modulo:false) raise ArgumentError unless [c, d, e].include?(m) isolate do |eoc| @@ -1269,7 +1271,7 @@Note: -
# File lib/z80/math_i.rb, line 1297 +# File lib/z80/math_i.rb, line 1338 def divmod8(m=c, check0:true, check1:true, modulo:false) raise ArgumentError unless [c, d, e].include?(m) isolate do |eoc| @@ -1423,7 +1425,7 @@Note: -
# File lib/z80/math_i.rb, line 474 +# File lib/z80/math_i.rb, line 491 def mul(k=d, m=a, tt:de, clrhl:true, signed_k:false) th, tl = tt.split raise ArgumentError if tt == hl or m == th @@ -1514,7 +1516,7 @@Note: -
# File lib/z80/math_i.rb, line 1040 +# File lib/z80/math_i.rb, line 1081 def mul16_32(mm=bc, tt:bc, clrhlhl:true, signed_hl:false, optimize: :time) raise ArgumentError unless [bc, de].include?(mm) and [bc, de].include?(tt) mh, ml = mm.split @@ -1734,7 +1736,7 @@Note: -
# File lib/z80/math_i.rb, line 745 +# File lib/z80/math_i.rb, line 762 def mul8(kh=h, kl=l, m=a, tt:de, clrhl:true, double:false, optimize: :time) th, tl = tt.split raise ArgumentError if tt == hl or [th,tl].include?(m) or tl == kh or th == kl or !register?(m) @@ -1775,7 +1777,7 @@Note: mul8_24(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true) + class="method-args">(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true, k_int24: false, optimize: :time) click to toggle source @@ -1784,7 +1786,7 @@
Note: -
Creates a routine that performs a multiplication of an unsigned 16-bit integer
+kh
|kl
* 8-bit unsignedm
. Returns the result as a 24-bit unsigned integer ina
|hl
.Creates a routine that performs a multiplication of a 16-bit unsigned integer
kh
|kl
or 24-bit integert
|kh
|kl
* 8-bit unsignedm
. Returns the result as a 24-bit integer ina
|hl
.Optionally accumulates the result in
a
|hl
.+
kh
@@ -1811,43 +1813,71 @@Note:
k_int24
+- +
Whether a multiplicant is a 24-bit (possibly signed) integer with its MSB bits in
+t
.+
optimize
+- +
What is more important:
+:time
or:size
?If
+k_int24
isfalse
andclrahl
istrue
the resulting flags: ZF=1 signals the result fits in 16 bits, SF contains the sign of the result and CF=1 indicates overflow.Uses:
af
,bc
,de
,hl
.-@@ -1908,7 +1938,7 @@# File lib/z80/math_i.rb, line 787 -def mul8_24(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true) +# File lib/z80/math_i.rb, line 810 +def mul8_24(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true, k_int24: false, optimize: :time) th, tl = tt.split raise ArgumentError if tt == hl or [a,th,tl,t].include?(m) or [a,th,tl,m].include?(t) or - tl == kh or th == kl or !register?(m) or !register?(t) + tl == kh or th == kl or !register?(m) or !register?(t) isolate do |eoc| ld tl, kl unless kl == tl ld th, kh unless kh == th if clrahl - ld hl, 0 xor a - ld t, a - else + ld h, a + ld l, a + ld t, a unless k_int24 + elsif !k_int24 ld t, 0 end + if optimize == :size # 20 bytes (+~10 cycles per m bit) + loop1 srl m # 0 -> multiplicator -> carry + jr Z, last + jr NC, noadd # carry == 0 ? don't add + add hl, tt # add multiplicant to result lo16 + adc a, t # add multiplicant to result hi8 + noadd sla tl # multiplicant *= 2 + rl th + rl t + jr loop1 # m != 0 ? loop + last jr NC, eoc + add hl, tt # last add + adc a, t + elsif optimize == :time # 27 bytes srl m # 0 -> multiplicator -> carry jp NZ, loop1 # m != 0 ? start regular loop jr C, skadd # m == 1 ? add and quit jp eoc # m == 0 ? just quit - loop1 jr NC, noadd # carry == 0 ? don't add + loop1 jr NC, noadd # carry == 0 ? don't add add hl, tt # add multiplicant to result lo16 adc a, t # add multiplicant to result hi8 - noadd sla tl # multiplicant *= 2 + noadd sla tl # multiplicant *= 2 rl th rl t srl m # 0 -> multiplicator -> carry jp NZ, loop1 # m != 0 ? loop - skadd add hl, tt # last add b.c. carry == 1 + skadd add hl, tt # last add b.c. carry == 1 adc a, t + else + raise ArgumentError, "optimize should be :time or :size" + end end endNote: -
# File lib/z80/math_i.rb, line 665 +# File lib/z80/math_i.rb, line 682 def mul8_c(kh=h, kl=l, m=a, tt:de, clrhl:true) th, tl = tt.split raise ArgumentError if tt == hl or [th,tl].include?(m) or tl == kh or th == kl or !register?(m) @@ -1996,7 +2026,7 @@Note: -
# File lib/z80/math_i.rb, line 705 +# File lib/z80/math_i.rb, line 722 def mul8_signed(kh=h, kl=l, m=c, tt:de, t:m, clrhl:true, double:false, optimize: :time) raise ArgumentError if t == a or !register?(t) or !t.bit8? isolate do |eoc| @@ -2076,7 +2106,7 @@Note: -
# File lib/z80/math_i.rb, line 522 +# File lib/z80/math_i.rb, line 539 def mul_const(k=d, m=0, tt:de, clrhl:true, signed_k:false) raise ArgumentError unless tt != hl and m.is_a?(Integer) and (0..256).include?(m) tt = hl if clrhl and (m & (m - 1)) == 0 @@ -2266,7 +2296,7 @@Note: -
# File lib/z80/math_i.rb, line 840 +# File lib/z80/math_i.rb, line 881 def mul_const8_24(kh=h, kl=l, m=0, t:c, tt:de, clrahl:true, signed_k:false) th, tl = tt.split throw ArgumentError unless m.is_a?(Integer) and (0..256).include?(m) and [bc, de].include?(tt) and @@ -2474,7 +2504,7 @@Note: -
# File lib/z80/math_i.rb, line 439 +# File lib/z80/math_i.rb, line 456 def mul_signed(k=d, m=a, tt:de, clrhl:true) th, tl = tt.split raise ArgumentError if tt == hl or m == th @@ -2671,7 +2701,7 @@Note: -
# File lib/z80/math_i.rb, line 1659 +# File lib/z80/math_i.rb, line 1700 def rnd isolate do |eoc| inc hl # seed + 1 @@ -2722,6 +2752,55 @@Note: + +
+ sign_extend(th=a, tl=a) + + click to toggle source + ++ + ++ ++ + + +Creates a routine that extends a sign bit from an octet indicated by
+tl
into ath
.+ +
th
+- +
A target octet as an 8-bit register or a pointer.
+tl
+- +
An octet being sign-extended as an 8-bit register or a pointer.
+Uses:
+ +af
,th
,tl
.T-states: 8|12|16.
+ + + + +++ +# File lib/z80/math_i.rb, line 352 +def sign_extend(th=a, tl=a) + isolate do + ld a, tl unless tl == a + add a, a + sbc a, a + ld th, a unless th == a + end +end+
# File lib/z80/math_i.rb, line 389 +# File lib/z80/math_i.rb, line 406 def sub_from(s, th, tl) if th == tl or [s,th,tl].include?(a) raise ArgumentError, "sub_from: invalid arguments!" @@ -2929,7 +3008,7 @@Note: -
# File lib/z80/math_i.rb, line 1763 +# File lib/z80/math_i.rb, line 1804 def utobcd(bufend, input=de, size: 4, r: d, rr: de, byteorder: :lsb, input_end:false) raise ArgumentError unless address?(bufend) and (address?(input) or input == rr) and @@ -3035,7 +3114,7 @@Note: -
# File lib/z80/math_i.rb, line 1715 +# File lib/z80/math_i.rb, line 1756 def utobcd_step(bufend, r, buflen=1, t=c, r_in_a=false) raise ArgumentError unless address?(bufend) and [c,d,e].include?(r) and [c,d,e].include?(t) and r != t and diff --git a/created.rid b/created.rid index 2bceff9..6284a4b 100644 --- a/created.rid +++ b/created.rid @@ -1,11 +1,11 @@ -Wed, 03 Jan 2024 01:07:34 +0100 +Thu, 04 Jan 2024 05:29:13 +0100 README.rdoc Tue, 16 Nov 2021 02:46:54 +0100 LICENSE.md Tue, 12 Nov 2019 19:21:22 +0100 -CHANGELOG.md Wed, 03 Jan 2024 01:03:58 +0100 +CHANGELOG.md Thu, 04 Jan 2024 05:06:44 +0100 lib/z80.rb Wed, 04 Jan 2023 15:29:22 +0100 lib/z80/labels.rb Wed, 04 Jan 2023 15:09:14 +0100 lib/z80/macros.rb Wed, 04 Jan 2023 15:09:46 +0100 -lib/z80/math_i.rb Wed, 03 Jan 2024 00:42:50 +0100 +lib/z80/math_i.rb Thu, 04 Jan 2024 03:44:48 +0100 lib/z80/mnemonics.rb Wed, 04 Jan 2023 15:13:54 +0100 lib/z80/registers.rb Wed, 04 Jan 2023 15:14:26 +0100 lib/z80/select.rb Wed, 04 Jan 2023 15:14:50 +0100 diff --git a/examples/quat3d128.tap b/examples/quat3d128.tap index 74cef0595f330ebf12d44cd09773929988d96d1d..187a0a949844a59aa5c79b1c4f97cb43e8eada3f 100644 GIT binary patch delta 1888 zcmZvaZA@Eb6vqp+y>|=;bA}Lx(gn8EBZ0CwgNQIRK(>9LvJvG)SR5wXK0wS8fg!Yv z7#0n&aOv&64_D@5oO?4s2pUAoWiov ziO}nb)<{v(p|Vlwg{0?Q-DAH+3&Pp9KZ?c1UmW)I=pK7kRJ7+f$^}8Fj@qt;g^7&J zVz-o `|4j@&R+zJb~GAxMU&7*GV@%$5!>p0L~@j#oWut-_FJZXRGgK67e-S=#N z;x9IHY`Av1&4W)8q~4@wte;802mEIxmehLivD_IIi}rRzk2|dW{onrjvRC}FYwp_c z{tQLRG3O>04@)P^hqE2Se(~$}yx`%k=iK(aqFy{)Ztl$1hla&qg;^hx2F!VhsJLf7 zlCUg=%tvf YTmTB z^)wggUw8|e1Nu#GZ`DsYXe;>qZ5-LZR|=}e^hNKksmJ6oy+$@tYh)v}MwULdWTk8J zj@U_=VrM1AT2n}|ZaEg)C+~=L%RKh3?3wfWVqf=!Z@;KW2Zhp<44;^nwx~mV@UC$D z=@uHiAAh$HAAcj{TPEW4P;dxgpDFeuWr+^_4|`21RlB6qV!o?FfiuedO=+#+i~=W# zPAX7AgxhmO=XT##)3#cHI- 0}SGfvKHGY&+g-W7I6;2VIQlXZpR)zBIcP&IMD%2CzZ);J}OtWScE)ZSVcEOAe znsunqisZthT2;70!z(IqYn1fUtY3voM3+?PChFcc#Hzd&9>Pmw8D0Sk@(LInKg4fJ zHn}h6{{3@(eeTAi_ui65lijX91~*vz8{A+pPBhNoD$!L2eMEN{3=s`67$6#8Fhw-Q z;0_Tg__l|Ek7hmw8j;4}I?;6oJxH-{fDic^$*5ph#~$K4ENF;%t=(o=& bdjgebybm1vd0I?+0V z5Ya|1gDt`>2Bwktou(165LrfGBetDMsdbHOFr~%!QyNSYO=~biG^4>d(X0l3BEJR; zL<<@$5iMyjON4%$(2pz7k1NoRD^@fJq9XQ(3ThA{aY%y*QAC3kqE!vniPkmPAllGi zi)c%ORU$OxgnnFseq4cmT!96-GZqY%kr*5D3fPcWz>B#dUd#>gVs3~R#|$Um*mpZ6 G;o<)igW1sl delta 1795 zcmZvaUr1Yb6vs`>pF6dZtl-9^GsP(GXp=bR5UHlyx{0tAX>p{rsl^vZ5hXCv*=$XG z2nAoF`z810{h+6*rHP))4+1l@J?;VRy~g&n z*>9h`V|QgbE03?uvewGi{H+U*_JXSozQ197y8W^8@Y?N`BcI;!ZGHBmZv%h$95`f4 zmB*YPus@57tW-Hx|AjoUCv{eTvUe)vx^d%&KUTBSmx-nKv)+3Oi#z=GHO4eYQ^N{d zl)kw$hY%HPuor>1*sQ$3%l3&PprqI`lAm>}a#2qSo1Ln`9l%X5ZE9{{@p-Q&1#9 zG0PIpz#G5jinUVRcJJ|JB|Uzr*nj@oo~^U{CwFc^_vc*F!u`fhx94Bv`;D19A(v-6 ztozxD^H|+jZfN3Ui&RX7PR{7*oXc1IsHn@#<2w7{^7!?kpnf(N94hJqxyjyNa4;S$ zL~+z|Hy`X>(61k!`UF$=%To8tQumG2m;2 zkVW))d3xz>#rVRTviFw4#@szMKg&{^=b`?)Ir!dv>P4?&4jRpO3B`CJUoj-KDMenv0u+ckP zzD#RvU9@!_Y%$GH^kXnethE(q)e #+#itV$(Y zIh^6 YUX!{YA{SRticG;hz1d&Q4L~5F%9BGaSakg2@OVx&`%Kh2?hEI1^Nj^N`o{i zj6YObgDDbEX^ IS8q5*RX;2_4XpkjBLqX^#6zC@u=qD6dP&i}3beP20 fP*lK%q5@tl4Dn)Nh!+b(yx1_j{Z;MPHMZn`%Gq_L diff --git a/js/search_index.js b/js/search_index.js index c650a05..73ab1d9 100644 --- a/js/search_index.js +++ b/js/search_index.js @@ -1 +1 @@ -var search_data = {"index":{"searchIndex":["aytest","bench","echo","float","musictest","object","symbol","z80","alloc","compileerror","conditionalblock","label","mathint","integers","macros","program","condition","macros","mnemonics","register","stdlib","macros","syntax","tap","headerbody","tapeerror","tzx","utils","shuffle","macros","sincos","macros","sincos","sincostable","sort","macros","vecdeque","macros","vecdequestate","zx7","macros","zxlib","aysound","envelopecontrol","macros","mixer","registers","volumecontrol","basic","line","program","tokenizer","patterns","variable","variableparseerror","variabletypes","vars","gfx","bobs","macros","clip","macros","outcode","draw","constants","macros","macros","sprite8","macros","math","macros","zxreal","sys","coords","cursor","if1vars","macros","strms","vars","vars128","zxutils","aybasicplayer","aymusic","ayregistermirror","channelcontrol","chordcontrol","envelopecontrol","instrumentcontrol","macros","maskcontrol","musiccontrol","toneprogresscontrol","trackcontrol","trackstackentry","vibratocontrol","aymusicplayer","musictracks","trackinfo","benchmark","macros","bigfont","macros","bigfonthires","emu","gallery","formats","multitasking","macros","taskinfo","taskvars","multitaskingio","bufferio","macros","taskvarsio","musicbox","ayenvelopedurationcommand","ayenvelopeshapecommand","chord","chordcommand","command","headers","metacommand","commoninstrumentcommands","emptytrack","envelope","envelopecommand","indexcommand","instrument","instrumentcommand","instrumentcommands","loopcommand","markcommand","mask","maskcommand","multitrack","multitrackcommands","noisepitchcommand","notechordcommand","notecommand","noteprogressperiodcommand","pausecommand","resolver","song","playermodule","songmodule","songcommands","subinstrumentcommand","subtrackcommand","toneprogresscommand","track","trackcommands","trackconfigcommands","vibratoamplitudecommand","vibratoanglecommand","vibratostepcommand","volumelevelcommand","%()","%()","&()","&()","*()","*()","**()","**()","+()","+()","+()","+@()","+@()","+@()","-()","-()","-()","-@()","-@()","/()","/()","<<()","<<()","<<()","==()",">>()",">>()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","^()","^()","add24_16()","add_code()","add_reloc()","adda_to()","addr()","address?()","alias?()","alias?()","alias_label()","all_ch()","all_channels()","api()","array?()","array?()","as()","ay_expand_notes()","ay_expand_notes_faster()","ay_get_register_value()","ay_get_set_env_shape()","ay_get_set_mixer()","ay_hz2tp()","ay_init()","ay_io_load_const_reg_bc()","ay_io_swap2inp_bc()","ay_io_swap2out_bc()","ay_io_swap2sel_bc()","ay_music_finished?()","ay_music_init()","ay_music_note_to_fine_tone_cursor_table_factory()","ay_music_preserve_io_ports_state()","ay_music_tone_progress_table_factory()","ay_set_envelope_duration()","ay_set_noise_pitch()","ay_set_register_value()","ay_set_tone_period()","ay_set_volume()","ay_tone_periods()","bcdtoa()","bench()","bit8?()","bobs_copy_attrs()","bobs_copy_attrs_fast()","bobs_copy_pixels()","bobs_copy_pixels_fast()","bobs_draw_pixels_fast()","bobs_draw_pixels_fast_jump_table()","bobs_draw_pixels_fast_routines()","bobs_rshift_bitmap_pixels_7times()","bobs_rshift_bitmap_pixels_once()","byte()","bytes()","bytesize()","bytesize()","byteslice()","calculate_benchmark_tstates()","ce()","ceo()","ch_a()","ch_b()","ch_c()","chan_exists()","channel()","channel_name_to_index()","channel_track()","char_array?()","char_ptr_from_code()","chord()","chord_off()","clear!()","clear_attrs_region_fast()","clear_screen_region_fast()","clrmem()","clrmem8()","clrmem_fastest()","clrmem_quick()","cmp_i16n()","cmp_i16r()","cmp_i8()","code()","code()","code?()","compress()","copy_shadow_attrs_region()","copy_shadow_attrs_region_quick()","copy_shadow_screen_region()","copy_shadow_screen_region_quick()","cp16n()","cp16r()","cp16rr()","create_chan_and_open()","create_sincos_from_sintable()","cursor_key_pressed?()","data()","db()","dc!()","debug()","debug_comment()","define_label()","direct_address?()","direct_label?()","disable_ay_volume_ctrl()","divmod()","divmod16()","divmod24_8()","divmod32_16()","divmod32_8()","divmod8()","draw_line()","draw_line_dx_gt_4dy()","draw_line_dx_gt_dy()","draw_line_dy_gte_dx()","draw_line_fx_data()","draw_line_fx_data_dx_gt_4dy()","draw_line_fx_data_dx_gt_dy()","draw_line_fx_data_dy_gte_dx()","draw_line_fx_data_vertical()","draw_line_update()","draw_line_update_dx_gt_4dy()","draw_line_update_dx_gt_dy()","draw_line_update_dy_gte_dx()","draw_line_update_vertical()","draw_line_vertical()","draw_sprite8()","dummy()","dummy?()","dummy?()","dup()","dw()","dzx7_agilercs()","dzx7_mega()","dzx7_smartrcs()","dzx7_standard()","dzx7_turbo()","each_var()","ei()","else()","else_select()","enable_ay_volume_ctrl()","enlarge_char8_16()","envd()","envdur()","envelope()","envelope_duration()","envelope_shape()","envs()","envsh()","equal_tempered_scale_notes_hz()","estimate_tstates_per_interrupt()","export()","expression?()","expression?()","find_channel()","find_channel_arg()","find_def_fn_args()","find_emulator()","find_input_handle()","find_io_handles()","find_output_handle()","find_record()","first_octave_note()","fixed_volume()","for_ch()","for_channels()","for_loop?()","fp_to_integer32()","from_data()","from_program_data()","from_tap_chunk()","fv()","get()","get_adjustment()","get_counter()","get_emulator_path()","get_frames()","get_idle()","get_int8_norm_arg()","get_stream_arg()","getset_tsframe()","gfx_clip_calculate_8bit_dx_dy_exx()","gfx_clip_compute_outcode()","gfx_clip_coords_to_draw_line_args()","gfx_clip_dimension()","gfx_clip_line()","gfx_sprite8_calculate_coords()","gfx_sprite8_calculate_screen_address()","gfx_sprite8_draw()","gfx_sprite8_flip_horizontally()","head()","i()","immediate?()","immediate?()","immediate?()","import()","import_chord()","import_envelope()","import_file()","import_instrument()","import_mask()","import_multitrack()","import_track()","include?()","indexable?()","indexable?()","init()","init()","init_multitasking()","init_music()","initialize()","initialize_io()","insertion_sort_bytes_max256()","instrument()","instruments()","int()","integer32_to_fp()","interlace_pixels16()","isolate()","jr_ok?()","kernel_org()","kernel_org()","key_pressed?()","label()","label?()","label_defined?()","label_immediate?()","label_import()","ld16()","length()","limit()","line()","line_index()","list()","loop_to()","loop_to()","lt()","lt()","m()","m()","m1()","m2()","macro()","macro_import()","make_draw_line_subroutines()","mark()","mark()","mask()","mask_ay_volume_envelope()","mask_ay_volume_envelope_off()","mask_noise()","mask_noise_off()","mask_tone()","mask_tone_off()","match16?()","me()","members_of_struct()","memcpy()","memcpy_quick()","meo()","method_missing()","method_missing()","method_missing()","method_missing()","mix_lines8_16()","mmu128_select_bank()","mmu128_swap_screens()","mn()","mno()","mode1()","mode2()","move_basic_above_scld_screen_memory()","mt()","mtio_drain()","mtio_getc()","mtio_gets()","mtio_putc()","mtio_puts()","mtio_ready?()","mtio_wait()","mto()","mul()","mul16_32()","mul8()","mul8_24()","mul8_c()","mul8_signed()","mul_const()","mul_const8_24()","mul_signed()","multitrack()","mute_sound()","n()","n0()","n1()","name=()","name=()","names()","names()","ne()","neg16()","neg_int()","neg_sintable256_pi_half_no_zero_lo()","neo()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new_char_array()","new_code()","new_for_loop()","new_kernel()","new_kernel()","new_number()","new_number_array()","new_program()","new_string()","new_var_array()","next_token()","nextline()","nextpixel()","nextrow()","noise()","noise_envelope_off()","noise_off()","noise_on()","note_progress()","np()","ns()","number?()","number_array?()","offset_of_()","one_of?()","one_of?()","only_one_bit_set_or_zero?()","open_io()","org()","p()","p()","pack_number()","parse_each()","parse_file()","parse_file()","parse_source()","parse_source_line()","parse_tap()","parse_tap()","pause()","pause()","pc()","pch()","peek_token()","play()","play()","play_chord()","play_interval()","play_loop()","plot_pixel()","pointer?()","pointer?()","pointer?()","pointer?()","prepare_args_draw_line_to()","preshifted_pixel_mask_data()","prevline()","prevpixel()","print_char()","print_char_hires()","print_fp_hl()","program?()","program_text_to_string()","quicksort_bytes()","rctoattr()","rctoscr()","rdoc_mark_find_def_fn_arg()","read_arg_string()","read_chunk()","read_chunk()","read_data()","read_data()","read_integer32_value()","read_integer_value()","read_positive_int_value()","read_source()","read_tap()","register?()","reinitialize()","repeat()","repeat()","report_error()","report_error_unless()","respond_to_missing?()","restore_rom_interrupt_handler()","return_with_fp()","rnd()","rpt()","rpt()","run()","save_tap()","save_tap()","save_tap()","screen?()","scrtoattr()","select()","selection_sort_bytes_max256()","set_empty_instrument()","set_instrument()","setup()","setup_custom_interrupt_handler()","shuffle_bytes_source_max256()","sincos_from_angle()","sincos_table_descriptors()","size()","spawn()","split()","stack_space_free()","start()","start()","start_chord()","start_noise_envelope()","start_volume_envelope()","statement()","step()","string?()","string_to_program_text()","sub()","sub()","sub()","sub_from()","sub_instrument()","sub_track()","sub_track()","sublabel?()","sublabel?()","sublabel_access_expression?()","sublabel_access_expression?()","synchronize_channels()","t0()","t1()","task?()","task_id()","task_stack_bytes_free()","task_yield()","tempo()","terminate()","terminated?()","text()","then()","ticks_counter()","to_a()","to_aliased_name()","to_aliased_name()","to_alloc()","to_alloc()","to_data()","to_debug()","to_i()","to_i()","to_i()","to_i()","to_i()","to_label()","to_label()","to_label()","to_module()","to_name()","to_name()","to_player_module()","to_player_module()","to_program()","to_program()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_source()","to_str()","to_str()","to_struct()","to_tap()","to_tap()","to_tap()","to_tap_chunk()","to_tap_chunk()","to_tap_chunk()","to_tap_chunk()","to_z80bin()","tone_off()","tone_on()","tone_progress()","tp()","track()","twos_complement16_by_sgn()","union()","unknown()","unpack_number()","unused_item_names()","unwrap_pointer()","utobcd()","utobcd_step()","v()","va()","validate_recursion_depth!()","value()","variable_volume()","ve()","vec_deque_clear()","vec_deque_empty?()","vec_deque_full?()","vec_deque_length()","vec_deque_next_back()","vec_deque_next_front()","vec_deque_pop_back()","vec_deque_pop_front()","vec_deque_push_back()","vec_deque_push_front()","veo()","vg()","vibrato_amplitude()","vibrato_angle()","vibrato_off()","vibrato_step()","vo()","volume()","volume_envelope_off()","vs()","vv()","w()","w()","wait()","wait()","wait_io()","widen_pixels8_16()","with_saved()","word()","words()","xy_to_attr_addr()","xy_to_pixel_addr()","xytoscr()","ytoattr()","ytoscr()","yxtoscr()","|()","|()","|()","~()","~()","changelog","license","readme"],"longSearchIndex":["aytest","bench","echo","float","musictest","object","symbol","z80","z80::alloc","z80::compileerror","z80::conditionalblock","z80::label","z80::mathint","z80::mathint::integers","z80::mathint::macros","z80::program","z80::program::condition","z80::program::macros","z80::program::mnemonics","z80::program::register","z80::stdlib","z80::stdlib::macros","z80::syntax","z80::tap","z80::tap::headerbody","z80::tap::tapeerror","z80::tzx","z80::utils","z80::utils::shuffle","z80::utils::shuffle::macros","z80::utils::sincos","z80::utils::sincos::macros","z80::utils::sincos::sincos","z80::utils::sincos::sincostable","z80::utils::sort","z80::utils::sort::macros","z80::utils::vecdeque","z80::utils::vecdeque::macros","z80::utils::vecdeque::vecdequestate","zx7","zx7::macros","zxlib","zxlib::aysound","zxlib::aysound::envelopecontrol","zxlib::aysound::macros","zxlib::aysound::mixer","zxlib::aysound::registers","zxlib::aysound::volumecontrol","zxlib::basic","zxlib::basic::line","zxlib::basic::program","zxlib::basic::tokenizer","zxlib::basic::tokenizer::patterns","zxlib::basic::variable","zxlib::basic::variableparseerror","zxlib::basic::variabletypes","zxlib::basic::vars","zxlib::gfx","zxlib::gfx::bobs","zxlib::gfx::bobs::macros","zxlib::gfx::clip","zxlib::gfx::clip::macros","zxlib::gfx::clip::outcode","zxlib::gfx::draw","zxlib::gfx::draw::constants","zxlib::gfx::draw::macros","zxlib::gfx::macros","zxlib::gfx::sprite8","zxlib::gfx::sprite8::macros","zxlib::math","zxlib::math::macros","zxlib::math::zxreal","zxlib::sys","zxlib::sys::coords","zxlib::sys::cursor","zxlib::sys::if1vars","zxlib::sys::macros","zxlib::sys::strms","zxlib::sys::vars","zxlib::sys::vars128","zxutils","zxutils::aybasicplayer","zxutils::aymusic","zxutils::aymusic::ayregistermirror","zxutils::aymusic::channelcontrol","zxutils::aymusic::chordcontrol","zxutils::aymusic::envelopecontrol","zxutils::aymusic::instrumentcontrol","zxutils::aymusic::macros","zxutils::aymusic::maskcontrol","zxutils::aymusic::musiccontrol","zxutils::aymusic::toneprogresscontrol","zxutils::aymusic::trackcontrol","zxutils::aymusic::trackstackentry","zxutils::aymusic::vibratocontrol","zxutils::aymusicplayer","zxutils::aymusicplayer::musictracks","zxutils::aymusicplayer::trackinfo","zxutils::benchmark","zxutils::benchmark::macros","zxutils::bigfont","zxutils::bigfont::macros","zxutils::bigfonthires","zxutils::emu","zxutils::gallery","zxutils::gallery::formats","zxutils::multitasking","zxutils::multitasking::macros","zxutils::multitasking::taskinfo","zxutils::multitasking::taskvars","zxutils::multitaskingio","zxutils::multitaskingio::bufferio","zxutils::multitaskingio::macros","zxutils::multitaskingio::taskvarsio","zxutils::musicbox","zxutils::musicbox::ayenvelopedurationcommand","zxutils::musicbox::ayenvelopeshapecommand","zxutils::musicbox::chord","zxutils::musicbox::chordcommand","zxutils::musicbox::command","zxutils::musicbox::command::headers","zxutils::musicbox::command::metacommand","zxutils::musicbox::commoninstrumentcommands","zxutils::musicbox::emptytrack","zxutils::musicbox::envelope","zxutils::musicbox::envelopecommand","zxutils::musicbox::indexcommand","zxutils::musicbox::instrument","zxutils::musicbox::instrumentcommand","zxutils::musicbox::instrumentcommands","zxutils::musicbox::loopcommand","zxutils::musicbox::markcommand","zxutils::musicbox::mask","zxutils::musicbox::maskcommand","zxutils::musicbox::multitrack","zxutils::musicbox::multitrackcommands","zxutils::musicbox::noisepitchcommand","zxutils::musicbox::notechordcommand","zxutils::musicbox::notecommand","zxutils::musicbox::noteprogressperiodcommand","zxutils::musicbox::pausecommand","zxutils::musicbox::resolver","zxutils::musicbox::song","zxutils::musicbox::song::playermodule","zxutils::musicbox::song::songmodule","zxutils::musicbox::songcommands","zxutils::musicbox::subinstrumentcommand","zxutils::musicbox::subtrackcommand","zxutils::musicbox::toneprogresscommand","zxutils::musicbox::track","zxutils::musicbox::trackcommands","zxutils::musicbox::trackconfigcommands","zxutils::musicbox::vibratoamplitudecommand","zxutils::musicbox::vibratoanglecommand","zxutils::musicbox::vibratostepcommand","zxutils::musicbox::volumelevelcommand","z80::alloc#%()","z80::label#%()","z80::alloc#&()","z80::label#&()","z80::alloc#*()","z80::label#*()","z80::alloc#**()","z80::label#**()","z80::alloc#+()","z80::label#+()","z80::program::register#+()","z80::alloc#+@()","z80::label#+@()","z80::label::+@()","z80::alloc#-()","z80::label#-()","z80::program::register#-()","z80::alloc#-@()","z80::label#-@()","z80::alloc#/()","z80::label#/()","z80::alloc#<<()","z80::label#<<()","zxlib::basic::vars#<<()","z80::alloc#==()","z80::alloc#>>()","z80::label#>>()","z80#[]()","z80::alloc#[]()","z80::label#[]()","z80::program#[]()","z80::program::condition::[]()","z80::program::register::[]()","z80::program::register#[]()","zxlib::basic::program#[]()","zxlib::basic::variable#[]()","zxlib::basic::vars#[]()","z80::alloc#^()","z80::label#^()","z80::mathint::macros#add24_16()","z80::add_code()","z80::add_reloc()","z80::mathint::macros#adda_to()","z80::program#addr()","z80::program#address?()","z80::alloc#alias?()","z80::label#alias?()","z80::program#alias_label()","zxutils::musicbox::multitrackcommands#all_ch()","zxutils::musicbox::multitrackcommands#all_channels()","zxutils::multitasking#api()","z80::tap::headerbody#array?()","zxlib::basic::variable#array?()","z80::program#as()","zxlib::aysound::macros#ay_expand_notes()","zxlib::aysound::macros#ay_expand_notes_faster()","zxlib::aysound::macros#ay_get_register_value()","zxlib::aysound::macros#ay_get_set_env_shape()","zxlib::aysound::macros#ay_get_set_mixer()","zxlib::aysound::macros#ay_hz2tp()","zxlib::aysound::macros#ay_init()","zxlib::aysound::macros#ay_io_load_const_reg_bc()","zxlib::aysound::macros#ay_io_swap2inp_bc()","zxlib::aysound::macros#ay_io_swap2out_bc()","zxlib::aysound::macros#ay_io_swap2sel_bc()","zxutils::aymusic::macros#ay_music_finished?()","zxutils::aymusic::macros#ay_music_init()","zxutils::aymusic::macros#ay_music_note_to_fine_tone_cursor_table_factory()","zxutils::aymusic::macros#ay_music_preserve_io_ports_state()","zxutils::aymusic::macros#ay_music_tone_progress_table_factory()","zxlib::aysound::macros#ay_set_envelope_duration()","zxlib::aysound::macros#ay_set_noise_pitch()","zxlib::aysound::macros#ay_set_register_value()","zxlib::aysound::macros#ay_set_tone_period()","zxlib::aysound::macros#ay_set_volume()","zxlib::aysound::macros#ay_tone_periods()","z80::mathint::macros#bcdtoa()","zxutils::benchmark#bench()","z80::program::register#bit8?()","zxlib::gfx::bobs::macros#bobs_copy_attrs()","zxlib::gfx::bobs::macros#bobs_copy_attrs_fast()","zxlib::gfx::bobs::macros#bobs_copy_pixels()","zxlib::gfx::bobs::macros#bobs_copy_pixels_fast()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast_jump_table()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast_routines()","zxlib::gfx::bobs::macros#bobs_rshift_bitmap_pixels_7times()","zxlib::gfx::bobs::macros#bobs_rshift_bitmap_pixels_once()","z80::label::byte()","z80::program#bytes()","zxlib::basic::variable#bytesize()","zxutils::musicbox::track#bytesize()","zxlib::basic::variable#byteslice()","zxutils::benchmark::macros#calculate_benchmark_tstates()","zxutils::musicbox::commoninstrumentcommands#ce()","zxutils::musicbox::commoninstrumentcommands#ceo()","zxutils::musicbox::multitrackcommands#ch_a()","zxutils::musicbox::multitrackcommands#ch_b()","zxutils::musicbox::multitrackcommands#ch_c()","zxlib::sys::macros#chan_exists()","zxutils::musicbox::multitrackcommands#channel()","zxutils::musicbox::multitrackcommands::channel_name_to_index()","zxutils::musicbox::multitrack#channel_track()","zxlib::basic::variable#char_array?()","zxlib::sys::macros#char_ptr_from_code()","zxutils::musicbox::songcommands#chord()","zxutils::musicbox::commoninstrumentcommands#chord_off()","zxlib::basic::vars#clear!()","zxlib::gfx::macros#clear_attrs_region_fast()","zxlib::gfx::macros#clear_screen_region_fast()","z80::stdlib::macros#clrmem()","z80::stdlib::macros#clrmem8()","z80::stdlib::macros#clrmem_fastest()","z80::stdlib::macros#clrmem_quick()","z80::mathint::macros#cmp_i16n()","z80::mathint::macros#cmp_i16r()","z80::mathint::macros#cmp_i8()","zxlib::basic::program#code()","zxlib::basic::variable#code()","z80::tap::headerbody#code?()","zx7::compress()","zxlib::gfx::macros#copy_shadow_attrs_region()","zxlib::gfx::macros#copy_shadow_attrs_region_quick()","zxlib::gfx::macros#copy_shadow_screen_region()","zxlib::gfx::macros#copy_shadow_screen_region_quick()","z80::program::macros#cp16n()","z80::program::macros#cp16r()","z80::program::macros#cp16rr()","zxlib::sys::macros#create_chan_and_open()","z80::utils::sincos::macros#create_sincos_from_sintable()","zxlib::sys::macros#cursor_key_pressed?()","z80::program#data()","z80::program#db()","z80::program#dc!()","z80#debug()","z80::program#debug_comment()","z80::program#define_label()","z80::program#direct_address?()","z80::program#direct_label?()","zxutils::musicbox::commoninstrumentcommands#disable_ay_volume_ctrl()","z80::mathint::macros#divmod()","z80::mathint::macros#divmod16()","z80::mathint::macros#divmod24_8()","z80::mathint::macros#divmod32_16()","z80::mathint::macros#divmod32_8()","z80::mathint::macros#divmod8()","zxlib::gfx::draw::macros#draw_line()","zxlib::gfx::draw::macros#draw_line_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_fx_data()","zxlib::gfx::draw::macros#draw_line_fx_data_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_fx_data_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_fx_data_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_fx_data_vertical()","zxlib::gfx::draw::macros#draw_line_update()","zxlib::gfx::draw::macros#draw_line_update_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_update_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_update_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_update_vertical()","zxlib::gfx::draw::macros#draw_line_vertical()","zxlib::gfx::sprite8#draw_sprite8()","z80::label::dummy()","z80::alloc#dummy?()","z80::label#dummy?()","z80::alloc#dup()","z80::program#dw()","zx7::macros#dzx7_agilercs()","zx7::macros#dzx7_mega()","zx7::macros#dzx7_smartrcs()","zx7::macros#dzx7_standard()","zx7::macros#dzx7_turbo()","zxlib::basic::vars#each_var()","zxutils::musicbox::trackcommands#ei()","z80::conditionalblock#else()","z80::conditionalblock#else_select()","zxutils::musicbox::commoninstrumentcommands#enable_ay_volume_ctrl()","zxutils::bigfont::macros#enlarge_char8_16()","zxutils::musicbox::commoninstrumentcommands#envd()","zxutils::musicbox::commoninstrumentcommands#envdur()","zxutils::musicbox::songcommands#envelope()","zxutils::musicbox::commoninstrumentcommands#envelope_duration()","zxutils::musicbox::commoninstrumentcommands#envelope_shape()","zxutils::musicbox::commoninstrumentcommands#envs()","zxutils::musicbox::commoninstrumentcommands#envsh()","zxlib::aysound::macros#equal_tempered_scale_notes_hz()","zxutils::benchmark::macros#estimate_tstates_per_interrupt()","z80::program#export()","z80::alloc#expression?()","z80::label#expression?()","zxutils::multitaskingio#find_channel()","zxutils::multitaskingio#find_channel_arg()","zxlib::sys::macros#find_def_fn_args()","zxutils::emu::find_emulator()","zxutils::multitaskingio#find_input_handle()","zxutils::multitaskingio#find_io_handles()","zxutils::multitaskingio#find_output_handle()","zxlib::sys::macros#find_record()","zxutils::musicbox::trackconfigcommands#first_octave_note()","zxutils::musicbox::commoninstrumentcommands#fixed_volume()","zxutils::musicbox::multitrackcommands#for_ch()","zxutils::musicbox::multitrackcommands#for_channels()","zxlib::basic::variable#for_loop?()","zxlib::math::macros#fp_to_integer32()","zxlib::basic::variable::from_data()","zxlib::basic::from_program_data()","zxlib::basic::from_tap_chunk()","zxutils::musicbox::commoninstrumentcommands#fv()","zxlib::basic::vars#get()","zxutils::benchmark#get_adjustment()","zxutils::aybasicplayer#get_counter()","zxutils::emu::get_emulator_path()","zxutils::benchmark#get_frames()","zxutils::benchmark#get_idle()","zxutils::multitaskingio#get_int8_norm_arg()","zxutils::multitaskingio#get_stream_arg()","zxutils::benchmark#getset_tsframe()","zxlib::gfx::clip::macros#gfx_clip_calculate_8bit_dx_dy_exx()","zxlib::gfx::clip::macros#gfx_clip_compute_outcode()","zxlib::gfx::clip::macros#gfx_clip_coords_to_draw_line_args()","zxlib::gfx::clip::macros#gfx_clip_dimension()","zxlib::gfx::clip::macros#gfx_clip_line()","zxlib::gfx::sprite8::macros#gfx_sprite8_calculate_coords()","zxlib::gfx::sprite8::macros#gfx_sprite8_calculate_screen_address()","zxlib::gfx::sprite8::macros#gfx_sprite8_draw()","zxlib::gfx::sprite8::macros#gfx_sprite8_flip_horizontally()","zxlib::basic::variable#head()","zxutils::musicbox::trackcommands#i()","z80::alloc#immediate?()","z80::label#immediate?()","z80::program#immediate?()","z80::program#import()","zxutils::musicbox::songcommands#import_chord()","zxutils::musicbox::songcommands#import_envelope()","z80::program#import_file()","zxutils::musicbox::songcommands#import_instrument()","zxutils::musicbox::songcommands#import_mask()","zxutils::musicbox::songcommands#import_multitrack()","zxutils::musicbox::songcommands#import_track()","z80::alloc::include?()","z80::alloc#indexable?()","z80::label#indexable?()","zxutils::aymusic#init()","zxutils::aymusicplayer#init()","zxutils::multitasking#init_multitasking()","zxutils::aybasicplayer#init_music()","z80::label#initialize()","zxutils::multitaskingio#initialize_io()","z80::utils::sort::macros#insertion_sort_bytes_max256()","zxutils::musicbox::songcommands#instrument()","zxutils::musicbox::song#instruments()","z80::mathint::macros#int()","zxlib::math::macros#integer32_to_fp()","zxutils::bigfont::macros#interlace_pixels16()","z80::program#isolate()","z80::program::condition#jr_ok?()","zxutils::multitasking::kernel_org()","zxutils::multitaskingio::kernel_org()","zxlib::sys::macros#key_pressed?()","z80::program#label()","z80::program#label?()","z80::program#label_defined?()","z80::program#label_immediate?()","z80::program#label_import()","z80::program::macros#ld16()","zxlib::basic::variable#length()","zxlib::basic::variable#limit()","zxlib::basic::variable#line()","zxlib::basic::program#line_index()","zxlib::basic::program#list()","zxutils::musicbox::commoninstrumentcommands#loop_to()","zxutils::musicbox::multitrackcommands#loop_to()","zxutils::musicbox::commoninstrumentcommands#lt()","zxutils::musicbox::multitrackcommands#lt()","zxutils::musicbox::commoninstrumentcommands#m()","zxutils::musicbox::multitrackcommands#m()","zxutils::musicbox::commoninstrumentcommands#m1()","zxutils::musicbox::commoninstrumentcommands#m2()","z80::program::macros#macro()","z80::program#macro_import()","zxlib::gfx::draw::macros#make_draw_line_subroutines()","zxutils::musicbox::commoninstrumentcommands#mark()","zxutils::musicbox::multitrackcommands#mark()","zxutils::musicbox::songcommands#mask()","zxutils::musicbox::commoninstrumentcommands#mask_ay_volume_envelope()","zxutils::musicbox::commoninstrumentcommands#mask_ay_volume_envelope_off()","zxutils::musicbox::commoninstrumentcommands#mask_noise()","zxutils::musicbox::commoninstrumentcommands#mask_noise_off()","zxutils::musicbox::commoninstrumentcommands#mask_tone()","zxutils::musicbox::commoninstrumentcommands#mask_tone_off()","z80::program::register#match16?()","zxutils::musicbox::commoninstrumentcommands#me()","z80::label::members_of_struct()","z80::stdlib::macros#memcpy()","z80::stdlib::macros#memcpy_quick()","zxutils::musicbox::commoninstrumentcommands#meo()","z80::alloc#method_missing()","z80::label::method_missing()","z80::label#method_missing()","z80::program#method_missing()","zxutils::bigfont::macros#mix_lines8_16()","zxlib::sys::macros#mmu128_select_bank()","zxlib::sys::macros#mmu128_swap_screens()","zxutils::musicbox::commoninstrumentcommands#mn()","zxutils::musicbox::commoninstrumentcommands#mno()","zxutils::musicbox::commoninstrumentcommands#mode1()","zxutils::musicbox::commoninstrumentcommands#mode2()","zxlib::sys::macros#move_basic_above_scld_screen_memory()","zxutils::musicbox::commoninstrumentcommands#mt()","zxutils::multitaskingio::macros#mtio_drain()","zxutils::multitaskingio::macros#mtio_getc()","zxutils::multitaskingio::macros#mtio_gets()","zxutils::multitaskingio::macros#mtio_putc()","zxutils::multitaskingio::macros#mtio_puts()","zxutils::multitaskingio::macros#mtio_ready?()","zxutils::multitaskingio::macros#mtio_wait()","zxutils::musicbox::commoninstrumentcommands#mto()","z80::mathint::macros#mul()","z80::mathint::macros#mul16_32()","z80::mathint::macros#mul8()","z80::mathint::macros#mul8_24()","z80::mathint::macros#mul8_c()","z80::mathint::macros#mul8_signed()","z80::mathint::macros#mul_const()","z80::mathint::macros#mul_const8_24()","z80::mathint::macros#mul_signed()","zxutils::musicbox::songcommands#multitrack()","zxutils::aymusicplayer#mute_sound()","zxutils::musicbox::commoninstrumentcommands#n()","zxutils::musicbox::commoninstrumentcommands#n0()","zxutils::musicbox::commoninstrumentcommands#n1()","z80::alloc#name=()","z80::label#name=()","z80::program::condition::names()","z80::program::register::names()","zxutils::musicbox::commoninstrumentcommands#ne()","z80::mathint::macros#neg16()","z80::mathint::macros#neg_int()","z80::utils::sincos::macros#neg_sintable256_pi_half_no_zero_lo()","zxutils::musicbox::commoninstrumentcommands#neo()","z80::alloc::new()","z80::label::new()","z80::program#new()","z80::program::condition::new()","z80::program::register::new()","z80::tap::headerbody::new()","zxlib::basic::line::new()","zxlib::basic::program::new()","zxlib::basic::tokenizer::new()","zxlib::basic::variableparseerror::new()","zxlib::basic::vars::new()","zxutils::musicbox::chord::new()","zxutils::musicbox::envelope::new()","zxutils::musicbox::mask::new()","zxutils::musicbox::multitrack::new()","zxutils::musicbox::song::new()","zxutils::musicbox::track::new()","zxlib::basic::variable::new_char_array()","z80::tap::headerbody::new_code()","zxlib::basic::variable::new_for_loop()","zxutils::multitasking::new_kernel()","zxutils::multitaskingio::new_kernel()","zxlib::basic::variable::new_number()","zxlib::basic::variable::new_number_array()","z80::tap::headerbody::new_program()","zxlib::basic::variable::new_string()","z80::tap::headerbody::new_var_array()","zxlib::basic::tokenizer#next_token()","zxlib::gfx::macros#nextline()","zxlib::gfx::macros#nextpixel()","zxlib::gfx::macros#nextrow()","zxutils::musicbox::commoninstrumentcommands#noise()","zxutils::musicbox::commoninstrumentcommands#noise_envelope_off()","zxutils::musicbox::commoninstrumentcommands#noise_off()","zxutils::musicbox::commoninstrumentcommands#noise_on()","zxutils::musicbox::commoninstrumentcommands#note_progress()","zxutils::musicbox::commoninstrumentcommands#np()","z80::program#ns()","zxlib::basic::variable#number?()","zxlib::basic::variable#number_array?()","z80::label::offset_of_()","z80::program::condition#one_of?()","z80::program::register#one_of?()","zxlib::gfx::macros#only_one_bit_set_or_zero?()","zxutils::multitaskingio#open_io()","z80::program#org()","zxutils::musicbox::commoninstrumentcommands#p()","zxutils::musicbox::multitrackcommands#p()","zxlib::math::pack_number()","zxlib::basic::tokenizer#parse_each()","z80::tap::parse_file()","z80::tap::parse_file()","zxlib::basic::parse_source()","zxlib::basic::line::parse_source_line()","z80::tap::parse_tap()","z80::tap::parse_tap()","zxutils::musicbox::commoninstrumentcommands#pause()","zxutils::musicbox::multitrackcommands#pause()","z80::program#pc()","zxutils::musicbox::trackcommands#pch()","zxlib::basic::tokenizer#peek_token()","zxutils::aymusic#play()","zxutils::musicbox::trackcommands#play()","zxutils::musicbox::trackcommands#play_chord()","zxutils::aybasicplayer#play_interval()","zxutils::aybasicplayer#play_loop()","zxlib::gfx::draw::macros#plot_pixel()","z80::alloc#pointer?()","z80::label#pointer?()","z80::program#pointer?()","z80::program::register#pointer?()","zxlib::gfx::draw::macros#prepare_args_draw_line_to()","zxlib::gfx::draw::macros#preshifted_pixel_mask_data()","zxlib::gfx::macros#prevline()","zxlib::gfx::macros#prevpixel()","zxutils::bigfont#print_char()","zxutils::bigfonthires#print_char_hires()","zxlib::math#print_fp_hl()","z80::tap::headerbody#program?()","zxlib::basic::vars::program_text_to_string()","z80::utils::sort::macros#quicksort_bytes()","zxlib::gfx::macros#rctoattr()","zxlib::gfx::macros#rctoscr()","zxutils::multitasking#rdoc_mark_find_def_fn_arg()","zxlib::sys::macros#read_arg_string()","z80::tap::read_chunk()","z80::tap::read_chunk()","z80::tap::read_data()","z80::tap::read_data()","zxlib::sys::macros#read_integer32_value()","zxlib::sys::macros#read_integer_value()","zxlib::sys::macros#read_positive_int_value()","zxlib::basic::read_source()","zxlib::basic::read_tap()","z80::program#register?()","z80::alloc#reinitialize()","zxutils::musicbox::commoninstrumentcommands#repeat()","zxutils::musicbox::multitrackcommands#repeat()","zxlib::sys::macros#report_error()","zxlib::sys::macros#report_error_unless()","z80::alloc#respond_to_missing?()","zxlib::sys::macros#restore_rom_interrupt_handler()","zxlib::sys::macros#return_with_fp()","z80::mathint::macros#rnd()","zxutils::musicbox::commoninstrumentcommands#rpt()","zxutils::musicbox::multitrackcommands#rpt()","zxutils::emu::run()","z80::tap#save_tap()","z80::tap#save_tap()","z80::tap::headerbody#save_tap()","z80::tap::headerbody#screen?()","zxlib::gfx::macros#scrtoattr()","z80::program#select()","z80::utils::sort::macros#selection_sort_bytes_max256()","zxutils::musicbox::trackcommands#set_empty_instrument()","zxutils::musicbox::trackcommands#set_instrument()","zxutils::aymusicplayer#setup()","zxlib::sys::macros#setup_custom_interrupt_handler()","z80::utils::shuffle::macros#shuffle_bytes_source_max256()","z80::utils::sincos::macros#sincos_from_angle()","z80::utils::sincos::macros#sincos_table_descriptors()","z80::program::register#size()","zxutils::emu::spawn()","z80::program::register#split()","zxutils::multitasking#stack_space_free()","zxutils::benchmark#start()","zxutils::gallery#start()","zxutils::musicbox::commoninstrumentcommands#start_chord()","zxutils::musicbox::commoninstrumentcommands#start_noise_envelope()","zxutils::musicbox::commoninstrumentcommands#start_volume_envelope()","zxlib::basic::variable#statement()","zxlib::basic::variable#step()","zxlib::basic::variable#string?()","zxlib::basic::vars::string_to_program_text()","zxutils::musicbox::instrumentcommands#sub()","zxutils::musicbox::multitrackcommands#sub()","zxutils::musicbox::trackcommands#sub()","z80::mathint::macros#sub_from()","zxutils::musicbox::instrumentcommands#sub_instrument()","zxutils::musicbox::multitrackcommands#sub_track()","zxutils::musicbox::trackcommands#sub_track()","z80::alloc#sublabel?()","z80::label#sublabel?()","z80::alloc#sublabel_access_expression?()","z80::label#sublabel_access_expression?()","zxutils::musicbox::multitrackcommands#synchronize_channels()","zxutils::musicbox::commoninstrumentcommands#t0()","zxutils::musicbox::commoninstrumentcommands#t1()","zxutils::multitasking::macros#task?()","zxutils::multitasking::macros#task_id()","zxutils::multitasking::macros#task_stack_bytes_free()","zxutils::multitasking#task_yield()","zxutils::musicbox::trackconfigcommands#tempo()","zxutils::multitasking#terminate()","zxlib::basic::tokenizer#terminated?()","zxlib::basic::line#text()","z80::conditionalblock#then()","zxutils::musicbox::track#ticks_counter()","zxlib::basic::vars#to_a()","z80::alloc#to_aliased_name()","z80::label#to_aliased_name()","z80::alloc#to_alloc()","z80::label#to_alloc()","z80::label::to_data()","z80::program::register#to_debug()","z80::alloc#to_i()","z80::label::to_i()","z80::label#to_i()","z80::program::condition#to_i()","z80::program::register#to_i()","symbol#to_label()","z80::alloc#to_label()","z80::label#to_label()","zxutils::musicbox::song#to_module()","z80::alloc#to_name()","z80::label#to_name()","zxutils::musicbox::song#to_player_module()","zxutils::musicbox::song::songmodule#to_player_module()","zxutils::musicbox::song#to_program()","zxutils::musicbox::song::songmodule#to_program()","z80::alloc#to_s()","z80::label#to_s()","z80::tap::headerbody#to_s()","zxlib::basic::line#to_s()","zxlib::basic::program#to_s()","zxlib::basic::variable#to_s()","zxlib::basic::vars#to_s()","zxlib::basic::program#to_source()","z80::alloc#to_str()","z80::label#to_str()","z80::label::to_struct()","z80::tap#to_tap()","z80::tap#to_tap()","z80::tap::headerbody#to_tap()","z80::tap#to_tap_chunk()","z80::tap#to_tap_chunk()","zxlib::basic::program#to_tap_chunk()","zxlib::basic::variable#to_tap_chunk()","float#to_z80bin()","zxutils::musicbox::commoninstrumentcommands#tone_off()","zxutils::musicbox::commoninstrumentcommands#tone_on()","zxutils::musicbox::commoninstrumentcommands#tone_progress()","zxutils::musicbox::commoninstrumentcommands#tp()","zxutils::musicbox::songcommands#track()","z80::mathint::macros#twos_complement16_by_sgn()","z80::program#union()","zxutils::multitasking#unknown()","zxlib::math::unpack_number()","zxutils::musicbox::song#unused_item_names()","z80::program#unwrap_pointer()","z80::mathint::macros#utobcd()","z80::mathint::macros#utobcd_step()","zxutils::musicbox::commoninstrumentcommands#v()","zxutils::musicbox::commoninstrumentcommands#va()","zxutils::musicbox::song#validate_recursion_depth!()","zxlib::basic::variable#value()","zxutils::musicbox::commoninstrumentcommands#variable_volume()","zxutils::musicbox::commoninstrumentcommands#ve()","z80::utils::vecdeque::macros#vec_deque_clear()","z80::utils::vecdeque::macros#vec_deque_empty?()","z80::utils::vecdeque::macros#vec_deque_full?()","z80::utils::vecdeque::macros#vec_deque_length()","z80::utils::vecdeque::macros#vec_deque_next_back()","z80::utils::vecdeque::macros#vec_deque_next_front()","z80::utils::vecdeque::macros#vec_deque_pop_back()","z80::utils::vecdeque::macros#vec_deque_pop_front()","z80::utils::vecdeque::macros#vec_deque_push_back()","z80::utils::vecdeque::macros#vec_deque_push_front()","zxutils::musicbox::commoninstrumentcommands#veo()","zxutils::musicbox::commoninstrumentcommands#vg()","zxutils::musicbox::commoninstrumentcommands#vibrato_amplitude()","zxutils::musicbox::commoninstrumentcommands#vibrato_angle()","zxutils::musicbox::commoninstrumentcommands#vibrato_off()","zxutils::musicbox::commoninstrumentcommands#vibrato_step()","zxutils::musicbox::commoninstrumentcommands#vo()","zxutils::musicbox::commoninstrumentcommands#volume()","zxutils::musicbox::commoninstrumentcommands#volume_envelope_off()","zxutils::musicbox::commoninstrumentcommands#vs()","zxutils::musicbox::commoninstrumentcommands#vv()","zxutils::musicbox::commoninstrumentcommands#w()","zxutils::musicbox::multitrackcommands#w()","zxutils::musicbox::commoninstrumentcommands#wait()","zxutils::musicbox::multitrackcommands#wait()","zxutils::multitaskingio#wait_io()","zxutils::bigfont::macros#widen_pixels8_16()","z80::program::macros#with_saved()","z80::label::word()","z80::program#words()","zxlib::gfx::macros#xy_to_attr_addr()","zxlib::gfx::macros#xy_to_pixel_addr()","zxlib::gfx::macros#xytoscr()","zxlib::gfx::macros#ytoattr()","zxlib::gfx::macros#ytoscr()","zxlib::gfx::macros#yxtoscr()","z80::alloc#|()","z80::label#|()","z80::program::register#|()","z80::alloc#~()","z80::label#~()","","",""],"info":[["AYTest","","AYTest.html","",""],["Bench","","Bench.html","",""],["Echo","","Echo.html","",""],["Float","","Float.html","",""],["MusicTest","","MusicTest.html","",""],["Object","","Object.html","",""],["Symbol","","Symbol.html","",""],["Z80","","Z80.html",""," Include this module in your program class to turn it to a powerfull Z80 macro assembler.\n
To fully benefit …\n"],["Z80::Alloc","","Z80/Alloc.html","","
Alloc class is used internally by relocation mechanizm and lazy evaluation of labels' values. See …\n"],["Z80::CompileError","","Z80/CompileError.html","","
Error raised during program compilation (while creating instance).\n"],["Z80::ConditionalBlock","","Z80/ConditionalBlock.html","","
See Program.select.\n"],["Z80::Label","","Z80/Label.html","","
Z80 Label\n\n
myloop inc [hl]\n inc hl\n djnz myloop\n\nA label in a Z80::Program represents an address, …\n"],["Z80::MathInt","","Z80/MathInt.html","","
Z80::MathInt - integer math common routines.\n
in Z80::MathInt::Macros\n\n
require 'z80'\n\nclass Program\n include ...\n"],["Z80::MathInt::Integers","","Z80/MathInt/Integers.html","","Z80::MathInt Integers\n
This module holds integer data types created on the fly by the Macros.int macro. …\n"],["Z80::MathInt::Macros","","Z80/MathInt/Macros.html","","
Z80::MathInt Macros\n"],["Z80::Program","","Z80/Program.html","","
This module defines methods that become your program's class methods when you include the Z80 module. …\n"],["Z80::Program::Condition","","Z80/Program/Condition.html","","
Creates
jr/jp/ret/call
conditions as constants:\n\nNZ Z NC C PO PE P M\n\nAdditionally NV = PO and V = PE conditions …\n"],["Z80::Program::Macros","","Z80/Program/Macros.html","","
Z80 Macros\n
A few handy macros.\n"],["Z80::Program::Mnemonics","","Z80/Program/Mnemonics.html","","
Z80 Mnemonics\n
All Z80 instructions are created as singleton methods. They produce machine code which is …\n"],["Z80::Program::Register","","Z80/Program/Register.html","","
Z80 registers are populated as singleton methods. You must not create instances of this class directly. …\n"],["Z80::Stdlib","","Z80/Stdlib.html","","
Z80::Stdlib - Macros with commonly used memory routines.\n\n
require 'z80'\n\nclass MyLib\n include Z80\n ...\n"],["Z80::Stdlib::Macros","","Z80/Stdlib/Macros.html","","Z80::Stdlib Macros.\n"],["Z80::Syntax","","Z80/Syntax.html","","
Error raised during program parsing.\n"],["Z80::TAP","","Z80/TAP.html","","
Adds the TAP format support to your program.\n
Example:\n\n
puts Z80::TAP.parse_file("examples/calculator.tap").to_a ...\n\n"],["Z80::TAP::HeaderBody","","Z80/TAP/HeaderBody.html","","A class that represents the optional header and the single body chunk of a TAP file.\n
Instances of this …\n"],["Z80::TAP::TapeError","","Z80/TAP/TapeError.html","",""],["Z80::TZX","","Z80/TZX.html","","
Adds the TAP format support to your program.\n
Example:\n\n
puts Z80::TAP.parse_file("examples/calculator.tap").to_a ...\n\n"],["Z80::Utils","","Z80/Utils.html","",""],["Z80::Utils::Shuffle","","Z80/Utils/Shuffle.html","","Z80::Utils::Shuffle\n
A routine to efficiently shuffle bytes in Z80::Utils::Shuffle::Macros\n"],["Z80::Utils::Shuffle::Macros","","Z80/Utils/Shuffle/Macros.html","","
Z80::Utils::Shuffle Macros\n\n
for i from 0 to length − 1 do\n j ← random integer such that 0 ≤ j ≤ i\n ...\n"],["Z80::Utils::SinCos","","Z80/Utils/SinCos.html","","Z80::Utils::SinCos - integer sinus-cosinus table routines.\n
in Z80::Utils::SinCos::Macros\n
Structs\n"],["Z80::Utils::SinCos::Macros","","Z80/Utils/SinCos/Macros.html","","
Z80::Utils::SinCos Macros\n"],["Z80::Utils::SinCos::SinCos","","Z80/Utils/SinCos/SinCos.html","","
A Z80::Utils::SinCos table entry struct.\n
Consists of two
words
:\n
sin
\n"],["Z80::Utils::SinCos::SinCosTable","","Z80/Utils/SinCos/SinCosTable.html","","Z80::Utils::SinCos table struct.\n
The angle [0,256) being used in this table translates to radians in the …\n"],["Z80::Utils::Sort","","Z80/Utils/Sort.html","","
Z80::Utils::Sort\n
Implementations of various sorting algorithms in Z80::Utils::Sort::Macros\n
Example performance …\n"],["Z80::Utils::Sort::Macros","","Z80/Utils/Sort/Macros.html","","
Z80::Utils::Sort macros\n"],["Z80::Utils::VecDeque","","Z80/Utils/VecDeque.html","","
Z80::Utils::VecDeque.\n
Routines for appending, removing and iterating byte elements from double ended queues. …\n"],["Z80::Utils::VecDeque::Macros","","Z80/Utils/VecDeque/Macros.html","","
Z80::Utils::VecDeque macros.\n
Macros producing routines for working with double ended queues.\n"],["Z80::Utils::VecDeque::VecDequeState","","Z80/Utils/VecDeque/VecDequeState.html","","
A descriptor type for a double ended queue.\n"],["ZX7","","ZX7.html","","
ZX7 decoding routines.\n
in ZX7::Macros\n
Example:\n"],["ZX7::Macros","","ZX7/Macros.html","",""],["ZXLib","","ZXLib.html","",""],["ZXLib::AYSound","","ZXLib/AYSound.html","","
ZXLib::AYSound.\n
Macros to help program the AY-3-8910/8912 sound chipsets.\n
Sources — \n
www.armory.com/~rstevew/Public/SoundSynth/Novelty/AY3-8910/start.html …\n"],["ZXLib::AYSound::EnvelopeControl","","ZXLib/AYSound/EnvelopeControl.html","","
Bit masks and bit numbers for the AY-3-891x envelope shape control register
Registers::ENV_SHAPE
.\n"],["ZXLib::AYSound::Macros","","ZXLib/AYSound/Macros.html","","ZXLib::AYSound macros.\n
The AYSound Macros provide functions to create note tables and some basic routines …\n"],["ZXLib::AYSound::Mixer","","ZXLib/AYSound/Mixer.html","","
Bit masks and bit numbers for the AY-3-891x mixer register
Registers::MIXER
.\n"],["ZXLib::AYSound::Registers","","ZXLib/AYSound/Registers.html","","Constants with the names of the AY-3-8910 registers.\n"],["ZXLib::AYSound::VolumeControl","","ZXLib/AYSound/VolumeControl.html","","
Bit masks and bit numbers for the AY-3-891x volume registers:
VOLUME_A
,VOLUME_B
,VOLUME_C
.\n"],["ZXLib::Basic","","ZXLib/Basic.html","","A module with ZX Spectrum's BASIC program utilities.\n
SE BASIC extensions are supported.\n
See: ZXLib::Basic::Program …\n"],["ZXLib::Basic::Line","","ZXLib/Basic/Line.html","","
Represents a ZX Basic program line.\n
The original program line without line number, its length and a terminating …\n"],["ZXLib::Basic::Program","","ZXLib/Basic/Program.html","","
Represents a ZX Basic program in a semi-parsed form.\n"],["ZXLib::Basic::Tokenizer","","ZXLib/Basic/Tokenizer.html","","
A Basic program tokenizer.\n"],["ZXLib::Basic::Tokenizer::Patterns","","ZXLib/Basic/Tokenizer/Patterns.html","",""],["ZXLib::Basic::Variable","","ZXLib/Basic/Variable.html","","
Represents a ZX Spectrum's Basic variable with various methods to create new variables, inspect their …\n"],["ZXLib::Basic::VariableParseError","","ZXLib/Basic/VariableParseError.html","",""],["ZXLib::Basic::VariableTypes","","ZXLib/Basic/VariableTypes.html","",""],["ZXLib::Basic::Vars","","ZXLib/Basic/Vars.html","","
A container class for collecting and inspecting ZX-Spectrum's Basic program variables.\n
Variables can …\n"],["ZXLib::Gfx","","ZXLib/Gfx.html","","
A module with Z80 Macros for common ZX Spectrum graphics tasks\n
Example:\n\n
require 'zxlib/gfx'\n\nclass Program ...\n"],["ZXLib::Gfx::Bobs","","ZXLib/Gfx/Bobs.html","","Bitmap objects related routines.\n
See also ZXLib::Gfx::Bobs::Macros.\n\n
░░░░░░░░████░░░░░░████░░░░░░░░░░\n░░░░░░████████░░██████████░░░░░░ ...\n\n"],["ZXLib::Gfx::Bobs::Macros","","ZXLib/Gfx/Bobs/Macros.html","","ZXLib::Gfx::Bobs macros.\n
Bobs::Macros require:\n\n
macro_import MathInt\nmacro_import Gfx\n\n"],["ZXLib::Gfx::Clip","","ZXLib/Gfx/Clip.html","","A module with Z80 Macros for clipping lines.\n"],["ZXLib::Gfx::Clip::Macros","","ZXLib/Gfx/Clip/Macros.html","","
ZXLib::Gfx::Clip Macros for clipping lines to viewport rectangles.\n
Macros.gfx_clip_line.\n
Macros.gfx_clip_coords_to_draw_line_args …\n"],["ZXLib::Gfx::Clip::Outcode","","ZXLib/Gfx/Clip/Outcode.html","",""],["ZXLib::Gfx::Draw","","ZXLib/Gfx/Draw.html","","
A module with Z80 Macros for drawing lines and plotting pixels on the ZX Spectrum.\n
Example:\n\n
require 'zxlib/gfx/draw' ...\n\n"],["ZXLib::Gfx::Draw::Constants","","ZXLib/Gfx/Draw/Constants.html","",""],["ZXLib::Gfx::Draw::Macros","","ZXLib/Gfx/Draw/Macros.html","","ZXLib::Gfx::Draw macros for drawing lines and plotting pixels on the ZX Spectrum.\n
Coordinate system and …\n"],["ZXLib::Gfx::Macros","","ZXLib/Gfx/Macros.html","","
ZXLib::Gfx macros.\n"],["ZXLib::Gfx::Sprite8","","ZXLib/Gfx/Sprite8.html","","
Sprite drawing routines.\n
See also ZXLib::Gfx::Sprite8::Macros.\n
By default all drawing method routines are …\n"],["ZXLib::Gfx::Sprite8::Macros","","ZXLib/Gfx/Sprite8/Macros.html","","
ZXLib::Gfx::Sprite8 Macros.\n
Sprite8::Macros require:\n\n
macro_import MathInt\nmacro_import Gfx\n\n"],["ZXLib::Math","","ZXLib/Math.html","","A module with the ZXReal struct definition and ZX-Spectrum FP helpers.\n
Macros can be used to convert 32-bit …\n"],["ZXLib::Math::Macros","","ZXLib/Math/Macros.html","","
ZXLib::Math Macros\n
Macros require:\n\n
macro_import MathInt\n\n"],["ZXLib::Math::ZXReal","","ZXLib/Math/ZXReal.html","","A struct representing a ZX-Spectrum's FP calculator's real number data type.\n
See:\n
www.worldofspectrum.org/ZXBasicManual/zxmanchap24.html …\n"],["ZXLib::Sys","","ZXLib/Sys.html","","
A module with Z80 macros for common ZX Spectrum system tasks.\n
Contains:\n
labels for some of ZX Spectrum …\n"],["ZXLib::Sys::Coords","","ZXLib/Sys/Coords.html","","
A struct for ZX Spectrum
coords
variable.\n"],["ZXLib::Sys::Cursor","","ZXLib/Sys/Cursor.html","","A struct for various ZX Spectrum variables.\n"],["ZXLib::Sys::If1Vars","","ZXLib/Sys/If1Vars.html","","
ZX Interface 1 variables.\n"],["ZXLib::Sys::Macros","","ZXLib/Sys/Macros.html","","
ZXLib::Sys Macros\n
Some of the macros require:\n\n
require 'zxlib/math'\n# ...\n macro_import MathInt\n macro_import ...\n\n"],["ZXLib::Sys::Strms","","ZXLib/Sys/Strms.html","","A struct for ZX Spectrum
strms
variable.\n"],["ZXLib::Sys::Vars","","ZXLib/Sys/Vars.html","","ZX Spectrum Basic and System variables.\n"],["ZXLib::Sys::Vars128","","ZXLib/Sys/Vars128.html","","
ZX Spectrum 128 variables.\n"],["ZXUtils","","ZXUtils.html","",""],["ZXUtils::AYBasicPlayer","","ZXUtils/AYBasicPlayer.html","","
AY-3-8910/8912 Basic player\n
This is a wrapper over AYMusicPlayer with interfaces suitable to be used directly …\n"],["ZXUtils::AYMusic","","ZXUtils/AYMusic.html","","
The AY-3-8910/8912 music engine\n
Low-level but highly configurable music player routines and Macros. See …\n"],["ZXUtils::AYMusic::AYRegisterMirror","","ZXUtils/AYMusic/AYRegisterMirror.html","","
The AY-3-891x register mirror.\n"],["ZXUtils::AYMusic::ChannelControl","","ZXUtils/AYMusic/ChannelControl.html","","
The single channel control structure.\n"],["ZXUtils::AYMusic::ChordControl","","ZXUtils/AYMusic/ChordControl.html","","
data: loop_offset(,delay<<5|+ delta 0..31)*,0 (init: counter=1, cursor=+1, loop_at=cursor+loop_offset) …\n"],["ZXUtils::AYMusic::EnvelopeControl","","ZXUtils/AYMusic/EnvelopeControl.html","","
data: loop_offset(,counter,delta)*,0 (init: counter=1, cursor=, loop_at=cursor+loop_offset+1)\n"],["ZXUtils::AYMusic::InstrumentControl","","ZXUtils/AYMusic/InstrumentControl.html","","
The instrument track control structure\n"],["ZXUtils::AYMusic::Macros","","ZXUtils/AYMusic/Macros.html","","
AYMusic engine utilities.\n
NOTE — Some of the AYMusic Macros require Z80::MathInt::Macros and some require …\n\n"],["ZXUtils::AYMusic::MaskControl","","ZXUtils/AYMusic/MaskControl.html","","
data: loop_offset(,counter,mask)*,0 (init: counter=1, cursor=+1, loop_at=cursor+loop_offset)\n"],["ZXUtils::AYMusic::MusicControl","","ZXUtils/AYMusic/MusicControl.html","","
The main music control structure.\n
The most important is the
music_control.counter
word entry which can …\n"],["ZXUtils::AYMusic::ToneProgressControl","","ZXUtils/AYMusic/ToneProgressControl.html","","data: delta,counter,current\n"],["ZXUtils::AYMusic::TrackControl","","ZXUtils/AYMusic/TrackControl.html","","
The music track control structure\n"],["ZXUtils::AYMusic::TrackStackEntry","","ZXUtils/AYMusic/TrackStackEntry.html","","
The data type of the track stack entry.\n"],["ZXUtils::AYMusic::VibratoControl","","ZXUtils/AYMusic/VibratoControl.html","","
data: step,angle,amplitude (init: enabled:-1)\n"],["ZXUtils::AYMusicPlayer","","ZXUtils/AYMusicPlayer.html","","
AY-3-8910/8912 music player\n
The music module player based on ZXUtils::AYMusic engine.\n
ZXUtils::MusicBox …\n"],["ZXUtils::AYMusicPlayer::MusicTracks","","ZXUtils/AYMusicPlayer/MusicTracks.html","","
The struct representing music module header.\n"],["ZXUtils::AYMusicPlayer::TrackInfo","","ZXUtils/AYMusicPlayer/TrackInfo.html","","
The struct of MusicTracks.tracks_info\n"],["ZXUtils::Benchmark","","ZXUtils/Benchmark.html","","
ZXUtils::Benchmark\n
Benchmarking utilities.\n
NOTE — Currently the code must be located at 0x8000.\n"],["ZXUtils::Benchmark::Macros","","ZXUtils/Benchmark/Macros.html","","
ZXUtils::Benchmark macros.\n"],["ZXUtils::BigFont","","ZXUtils/BigFont.html","","
BigFont\n
Z80 Macros producing routines to create and display 16x15 characters from a 8x8 font (e.g: a default …\n"],["ZXUtils::BigFont::Macros","","ZXUtils/BigFont/Macros.html","","
ZXUtils::BigFont macros.\n"],["ZXUtils::BigFontHires","","ZXUtils/BigFontHires.html","","
BigFontHires\n
See also: BigFont.\n"],["ZXUtils::Emu","","ZXUtils/Emu.html","","
ZXUtils::Emu\n
Simple tools for finding and running ZX Spectrum emulator.\n
Compile your program, save to tap …\n"],["ZXUtils::Gallery","","ZXUtils/Gallery.html","","
ZXUtils::Gallery.\n
A program to load from tape and display various ZX Spectrum screen formats.\n
Supported …\n"],["ZXUtils::Gallery::Formats","","ZXUtils/Gallery/Formats.html","","
ZXUtils::Gallery Formats\n
The sizes of the supported .SCR file formats.\n"],["ZXUtils::Multitasking","","ZXUtils/Multitasking.html","","
ZXUtils::Multitasking\n
Run machine code programs (a.k.a. “tasks”) in parallel with the ZX Spectrum's …\n"],["ZXUtils::Multitasking::Macros","","ZXUtils/Multitasking/Macros.html","","
ZXUtils::Multitasking Macros for tasks.\n"],["ZXUtils::Multitasking::TaskInfo","","ZXUtils/Multitasking/TaskInfo.html","","
Task info structure. Each running task has one.\n"],["ZXUtils::Multitasking::TaskVars","","ZXUtils/Multitasking/TaskVars.html","","
Definition of
mtvars
.\n"],["ZXUtils::MultitaskingIO","","ZXUtils/MultitaskingIO.html","","ZXUtils::MultitaskingIO\n
Asynchronous communication channels between tasks running in parallel with ZX …\n"],["ZXUtils::MultitaskingIO::BufferIO","","ZXUtils/MultitaskingIO/BufferIO.html","","
I/O Buffer structure.\n"],["ZXUtils::MultitaskingIO::Macros","","ZXUtils/MultitaskingIO/Macros.html","","
ZXUtils::MultitaskingIO Macros for tasks.\n
Most of the routines created by MultitaskingIO::Macros expects …\n"],["ZXUtils::MultitaskingIO::TaskVarsIO","","ZXUtils/MultitaskingIO/TaskVarsIO.html","","
Extended Multitasking::TaskVars structure.\n"],["ZXUtils::MusicBox","","ZXUtils/MusicBox.html","","
MusicBox\n
MusicBox is a Ruby Domain Specific Language designed to create AY-3-8910/8912 music.\n
The music …\n"],["ZXUtils::MusicBox::AYEnvelopeDurationCommand","","ZXUtils/MusicBox/AYEnvelopeDurationCommand.html","",""],["ZXUtils::MusicBox::AYEnvelopeShapeCommand","","ZXUtils/MusicBox/AYEnvelopeShapeCommand.html","",""],["ZXUtils::MusicBox::Chord","","ZXUtils/MusicBox/Chord.html","","
MusicBox Chord\n
Instances of this class represent the chords applicable to the played note's tone. …\n"],["ZXUtils::MusicBox::ChordCommand","","ZXUtils/MusicBox/ChordCommand.html","",""],["ZXUtils::MusicBox::Command","","ZXUtils/MusicBox/Command.html","",""],["ZXUtils::MusicBox::Command::Headers","","ZXUtils/MusicBox/Command/Headers.html","",""],["ZXUtils::MusicBox::Command::MetaCommand","","ZXUtils/MusicBox/Command/MetaCommand.html","",""],["ZXUtils::MusicBox::CommonInstrumentCommands","","ZXUtils/MusicBox/CommonInstrumentCommands.html","","
MusicBox CommonInstrumentCommands\n
Common Instrument and Track commands.\n"],["ZXUtils::MusicBox::EmptyTrack","","ZXUtils/MusicBox/EmptyTrack.html","","
MusicBox EmptyTrack\n
An empty track used by the MusicBox::Song compilation. Should stay empty.\n"],["ZXUtils::MusicBox::Envelope","","ZXUtils/MusicBox/Envelope.html","","
MusicBox Envelope\n
Instances of this class represent the envelopes applicable to the volume level or the …\n"],["ZXUtils::MusicBox::EnvelopeCommand","","ZXUtils/MusicBox/EnvelopeCommand.html","",""],["ZXUtils::MusicBox::IndexCommand","","ZXUtils/MusicBox/IndexCommand.html","",""],["ZXUtils::MusicBox::Instrument","","ZXUtils/MusicBox/Instrument.html","","
MusicBox Instrument\n
An instrument consists of the ZXUtils::AYMusic commands.\n
To create a custom instrument …\n"],["ZXUtils::MusicBox::InstrumentCommand","","ZXUtils/MusicBox/InstrumentCommand.html","",""],["ZXUtils::MusicBox::InstrumentCommands","","ZXUtils/MusicBox/InstrumentCommands.html","","
MusicBox InstrumentCommands\n
Instrument only commands.\n"],["ZXUtils::MusicBox::LoopCommand","","ZXUtils/MusicBox/LoopCommand.html","",""],["ZXUtils::MusicBox::MarkCommand","","ZXUtils/MusicBox/MarkCommand.html","",""],["ZXUtils::MusicBox::Mask","","ZXUtils/MusicBox/Mask.html","","
MusicBox Mask\n
Instances of this class represent the bit masks applicable to the channel's mixer tone …\n"],["ZXUtils::MusicBox::MaskCommand","","ZXUtils/MusicBox/MaskCommand.html","",""],["ZXUtils::MusicBox::Multitrack","","ZXUtils/MusicBox/Multitrack.html","","
MusicBox Multitrack\n
A multi-track consists of the three tracks, each one for each of the AY-3-891x channels. …\n"],["ZXUtils::MusicBox::MultitrackCommands","","ZXUtils/MusicBox/MultitrackCommands.html","","
MusicBox MultitrackCommands\n
Commands for multi-tracks.\n
For the other available commands see: TrackConfigCommands …\n"],["ZXUtils::MusicBox::NoisePitchCommand","","ZXUtils/MusicBox/NoisePitchCommand.html","",""],["ZXUtils::MusicBox::NoteChordCommand","","ZXUtils/MusicBox/NoteChordCommand.html","",""],["ZXUtils::MusicBox::NoteCommand","","ZXUtils/MusicBox/NoteCommand.html","",""],["ZXUtils::MusicBox::NoteProgressPeriodCommand","","ZXUtils/MusicBox/NoteProgressPeriodCommand.html","",""],["ZXUtils::MusicBox::PauseCommand","","ZXUtils/MusicBox/PauseCommand.html","",""],["ZXUtils::MusicBox::Resolver","","ZXUtils/MusicBox/Resolver.html","",""],["ZXUtils::MusicBox::Song","","ZXUtils/MusicBox/Song.html","","
MusicBox Song\n
A song is a special Multitrack that also organizes other multi-tracks, sub-tracks, instruments, …\n"],["ZXUtils::MusicBox::Song::PlayerModule","","ZXUtils/MusicBox/Song/PlayerModule.html","","
MusicBox Song PlayerModule\n
A PlayerModule instance contains a compiled Song in the form suitable for the …\n"],["ZXUtils::MusicBox::Song::SongModule","","ZXUtils/MusicBox/Song/SongModule.html","","
MusicBox Song SongModule\n
An instance of this class can be created by calling Song.to_module instance method …\n"],["ZXUtils::MusicBox::SongCommands","","ZXUtils/MusicBox/SongCommands.html","","
MusicBox SongCommands\n
Commands for a Song.\n
For the other available commands see: MultitrackCommands and …\n"],["ZXUtils::MusicBox::SubInstrumentCommand","","ZXUtils/MusicBox/SubInstrumentCommand.html","",""],["ZXUtils::MusicBox::SubTrackCommand","","ZXUtils/MusicBox/SubTrackCommand.html","",""],["ZXUtils::MusicBox::ToneProgressCommand","","ZXUtils/MusicBox/ToneProgressCommand.html","",""],["ZXUtils::MusicBox::Track","","ZXUtils/MusicBox/Track.html","","
MusicBox Track\n
A track consists of the ZXUtils::AYMusic commands.\n
To create a custom track you need to …\n"],["ZXUtils::MusicBox::TrackCommands","","ZXUtils/MusicBox/TrackCommands.html","","
MusicBox TrackCommands\n
Track commands for playing notes, setting instruments and yielding to other tracks. …\n"],["ZXUtils::MusicBox::TrackConfigCommands","","ZXUtils/MusicBox/TrackConfigCommands.html","","
MusicBox TrackConfigCommands\n
Common Track and Multitrack commands for changing track configuration options. …\n"],["ZXUtils::MusicBox::VibratoAmplitudeCommand","","ZXUtils/MusicBox/VibratoAmplitudeCommand.html","",""],["ZXUtils::MusicBox::VibratoAngleCommand","","ZXUtils/MusicBox/VibratoAngleCommand.html","",""],["ZXUtils::MusicBox::VibratoStepCommand","","ZXUtils/MusicBox/VibratoStepCommand.html","",""],["ZXUtils::MusicBox::VolumeLevelCommand","","ZXUtils/MusicBox/VolumeLevelCommand.html","",""],["%","Z80::Alloc","Z80/Alloc.html#method-i-25","(other)",""],["%","Z80::Label","Z80/Label.html#method-i-25","(other)","
Returns a lazy evaluated remainder of a label divided by an
other
label or an integer.\n"],["&","Z80::Alloc","Z80/Alloc.html#method-i-26","(other)",""],["&","Z80::Label","Z80/Label.html#method-i-26","(m)","Returns a lazy evaluated bitwise “and” of a label and an
other
label or an integer.\n"],["*","Z80::Alloc","Z80/Alloc.html#method-i-2A","(other)",""],["*","Z80::Label","Z80/Label.html#method-i-2A","(other)","Returns a lazy evaluated label multiplied by an
other
label or an integer.\n"],["**","Z80::Alloc","Z80/Alloc.html#method-i-2A-2A","(m)",""],["**","Z80::Label","Z80/Label.html#method-i-2A-2A","(name)","Returns a member by its
name
as a separate label. This is used internally. Use Label#[] and Label#method_missing …\n"],["+","Z80::Alloc","Z80/Alloc.html#method-i-2B","(other)",""],["+","Z80::Label","Z80/Label.html#method-i-2B","(other)","Returns a lazy evaluated label offset by an
other
label or an integer.\n"],["+","Z80::Program::Register","Z80/Program/Register.html#method-i-2B","(other)","This method makes possible to write indexed expressions with
ix/iy
registers. Example:\n\nld a, [ix + 7]\n\n"],["+@","Z80::Alloc","Z80/Alloc.html#method-i-2B-40","()",""],["+@","Z80::Label","Z80/Label.html#method-i-2B-40","()","Returns a lazy evaluated size of a type of a label.\n"],["+@","Z80::Label","Z80/Label.html#method-c-2B-40","()","
Returns a lazy evaluated size of a data structure. Better for debugging than Label.to_i.\n"],["-","Z80::Alloc","Z80/Alloc.html#method-i-2D","(other)",""],["-","Z80::Label","Z80/Label.html#method-i-2D","(other)","
Returns a lazy evaluated label negatively offset by an
other
label or an integer.\n"],["-","Z80::Program::Register","Z80/Program/Register.html#method-i-2D","(other)","This method makes possible to write indexed expressions with
ix/iy
registers. Example:\n\nld a, [ix - 7]\n\n"],["-@","Z80::Alloc","Z80/Alloc.html#method-i-2D-40","()",""],["-@","Z80::Label","Z80/Label.html#method-i-2D-40","()","Returns a lazy evaluated negative label.\n"],["/","Z80::Alloc","Z80/Alloc.html#method-i-2F","(other)",""],["/","Z80::Label","Z80/Label.html#method-i-2F","(other)","
Returns a lazy evaluated quotient of a label divided by an
other
label or an integer.\n"],["<<","Z80::Alloc","Z80/Alloc.html#method-i-3C-3C","(other)",""],["<<","Z80::Label","Z80/Label.html#method-i-3C-3C","(m)","Returns a lazy evaluated label left shifted by a number of bits as an
other
label or an integer.\n"],["<<","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-3C-3C","(var)","Adds a Basic::Variable to self.\n"],["==","Z80::Alloc","Z80/Alloc.html#method-i-3D-3D","(other)",""],[">>","Z80::Alloc","Z80/Alloc.html#method-i-3E-3E","(other)",""],[">>","Z80::Label","Z80/Label.html#method-i-3E-3E","(m)","
Returns a lazy evaluated label right shifted by a number of bits as an
other
label or an integer.\n"],["[]","Z80","Z80.html#method-i-5B-5D","(name)","Returns an evaluated label's value by its name.\n"],["[]","Z80::Alloc","Z80/Alloc.html#method-i-5B-5D","(index = nil)",""],["[]","Z80::Label","Z80/Label.html#method-i-5B-5D","(index = nil)","
Returns a lazy evaluated label offset by
index
.\nIf
index
isnil
, returns a pointer label instead.\nIf
index
…\n"],["[]","Z80::Program","Z80/Program.html#method-i-5B-5D","(label)","Method used internally by mnemonics to make a pointer of a label or a Register.\n
Example:\n\n
ld hl, [foo] ...\n\n"],["[]","Z80::Program::Condition","Z80/Program/Condition.html#method-c-5B-5D","(index)",""],["[]","Z80::Program::Register","Z80/Program/Register.html#method-c-5B-5D","(index)",""],["[]","Z80::Program::Register","Z80/Program/Register.html#method-i-5B-5D","(index = 0, sgn = :+)","Method used internally by mnemonics to make pointer of a label or register. Example:\n\n
ld b, [ix + 2]\nld ...\n\n"],["[]","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-5B-5D","(index)","Returns a Basic::Line at
index
or an array of lines ifRange
is given.\n"],["[]","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-5B-5D","(*at)","Returns a selected portion of an array variable according to the provided dimension indices.\n
The indices …\n"],["[]","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-5B-5D","(index)","
Returns a Basic::Variable at
index
or an array of variables ifRange
is given.\n"],["^","Z80::Alloc","Z80/Alloc.html#method-i-5E","(other)",""],["^","Z80::Label","Z80/Label.html#method-i-5E","(m)","Returns a lazy evaluated bitwise “exclusive or” of a label and an
other
label or an integer. …\n"],["add24_16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-add24_16","(th8=c, tl16=hl, tt=de, signed:true)","Creates a routine that adds a 16-bit integer in
tt
to a 24-bit integer inth8
|tl16
. Returns the result …\n"],["add_code","Z80","Z80.html#method-c-add_code","(prg, data, type = 1, mnemo = nil, *mpar)","Method used by Program instructions was placed here to not pollute program namespace anymore.\n"],["add_reloc","Z80","Z80.html#method-c-add_reloc","(prg, label, size, offset = 0, from = nil)","
Method used by Program instructions was placed here to not pollute program namespace anymore.\n"],["adda_to","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-adda_to","(th, tl)","
Creates a routine that adds an 8-bit accumulator value to a 16-bit
th
|tl
register pair.\n
th
— A target MSB …\n"],["addr","Z80::Program","Z80/Program.html#method-i-addr","(address, type = 1, align: 1, offset: 0)","Returns an unnamed, immediate label at an absolute
address
of the optionaltype
.\n
type
can be an integer …\n"],["address?","Z80::Program","Z80/Program.html#method-i-address-3F","(arg)","A convenient method for macros to check if an argument is a non-register address (direct or a pointer). …\n"],["alias?","Z80::Alloc","Z80/Alloc.html#method-i-alias-3F","()","
This label can be the only dummy sublabel of another label and as such may exist in both members and …\n"],["alias?","Z80::Label","Z80/Label.html#method-i-alias-3F","()","
Checks if a label is an address label (lazy alias).\n"],["alias_label","Z80::Program","Z80/Program.html#method-i-alias_label","(address, align: 1, offset: 0)","
Returns an alias of a label or an expression.\n
The
address
must be a label or a label expression.\nThe returned …\n"],["all_ch","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-all_ch","(&block)",""],["all_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-all_channels","(&block)","
Creates a track fragments with the same commands for all the channels.\n
Provide a block with commands suitable …\n"],["api","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-api","","
ZX Basic API\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["array?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-array-3F","()","
true
if this chunk represents a number or character array\n"],["array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-array-3F","()","
true
if variable is a number or character array\n"],["as","Z80::Program","Z80/Program.html#method-i-as","(address, align: 1, offset: 0)",""],["ay_expand_notes","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_expand_notes","(notes=hl, octaves:8, half_tones:12)","Creates a routine for expanding the note to AY-3-891x tone period table to a higher number of octaves. …\n"],["ay_expand_notes_faster","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_expand_notes_faster","(notes=hl, octaves:8, half_tones:12, save_sp:true, disable_intr:true, enable_intr:true)","
Creates a routine for expanding the note to AY-3-891x tone period table to a higher number of octaves. …\n"],["ay_get_register_value","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_register_value","(regn=a, regv=e, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that reads a specific AY-3-891x register's value.\n
regn
— A AY-3-891x register index …\n\n"],["ay_get_set_env_shape","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_set_env_shape","(sinp=a, sout=sinp, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that gets the AY-3-891x envelope shape's value applies a block of code and sets …\n"],["ay_get_set_mixer","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_set_mixer","(vinp=a, vout=vinp, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that gets the AY-3-891x mixer's value applies a block of code and sets the mixer …\n"],["ay_hz2tp","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_hz2tp","(hz, clock_hz:AYSound::CLOCK_HZ)","
Converts a frequency given in Hz to AY-3-891x tone period value.\n
Options:\n
clock_hz
— AY-3-891x clock frequency …\n"],["ay_init","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_init","(t:e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets volume of all AY-3-891x sound channels to 0, disables noise on all channels …\n"],["ay_io_load_const_reg_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_load_const_reg_bc","(io_ay=self.io_ay)","
Creates a routine that loads a constant 8-bit part of the AY-3-891x I/O addresses into
b
orc
register. …\n"],["ay_io_swap2inp_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2inp_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
input
addresses intob
orc
register. …\n"],["ay_io_swap2out_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2out_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
output
addresses intob
orc
register. …\n"],["ay_io_swap2sel_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2sel_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
select
addresses intob
orc
register. …\n"],["ay_music_finished?","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_finished-3F","(music_control, compact:false, subroutine:false, branch_not_finished: :eoc)","Creates a routine that detects if the currently played music is finished.\n
As a result
ZF
is 1 if all of …\n"],["ay_music_init","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_init","(track_a, track_b, track_c, index_table:nil, init:self.init, play:self.play, music_control:self.music_control, disable_intr:true, enable_intr:true)","Creates a routine that initializes music tracks and optionally the index lookup table.\n
Provide addresses …\n"],["ay_music_note_to_fine_tone_cursor_table_factory","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_note_to_fine_tone_cursor_table_factory","(note_to_cursor, play:nil, num_notes:AYMusic::MAX_NOTES_COUNT, subroutine:false)","
Creates a routine that builds a note-to-fine tones index table.\n
note_to_cursor
— An address of the table …\n\n"],["ay_music_preserve_io_ports_state","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_preserve_io_ports_state","(music_control, play, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that reads a state of the I/O ports from the AY-3-891x chip and stores it into the …\n"],["ay_music_tone_progress_table_factory","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_tone_progress_table_factory","(fine_tones, hz: 440, clock_hz: ZXLib::AYSound::CLOCK_HZ, subroutine:false)","
Creates a routine that builds a fine tones to AY-3-891x tone periods table.\n
fine_tones
— An address of the …\n\n"],["ay_set_envelope_duration","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_envelope_duration","(dh=d, dl=e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x envelope duration.\n
dh
— The most significant 8 bits of the 16-bit …\n\n"],["ay_set_noise_pitch","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_noise_pitch","(pitch=e, pitch_8bit:false, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x noise pitch.\n
pitch
— A pitch level or an 8-bit register except …\n\n\n"],["ay_set_register_value","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_register_value","(regn=a, regv=e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that writes a value to a specific AY-3-891x register.\n
If the block is given, the code …\n"],["ay_set_tone_period","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_tone_period","(ch=a, tph:d, tpl:e, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that sets a AY-3-891x channel's tone period.\n
ch
— A channel number 0..2 as an integer, …\n\n"],["ay_set_volume","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_volume","(ch=a, vol=e, vol_8bit:false, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x channel's volume level.\n
ch
— A channel number 0..2 as an integer, …\n\n"],["ay_tone_periods","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_tone_periods","(min_octave:0, max_octave:7, notes_hz:self.equal_tempered_scale_notes_hz, clock_hz:AYSound::CLOCK_HZ)","Returns a tone period array for the AY-3-891x chip.\n
Options:\n
min_octave
— A minimal octave number, 0-based. …\n"],["bcdtoa","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-bcdtoa","(buffer=hl, size=b, skip_leading0:false, preserve_in:nil, &block)","Creates a routine that reads BCD digits from the memory buffer, one at a time, into the accumulator. …\n"],["bench","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-bench","","
Benchmarks the tested routine. Provide a
routine
address and acounter
. Returns a number of seconds (multiplied …\n"],["bit8?","Z80::Program::Register","Z80/Program/Register.html#method-i-bit8-3F","()",""],["bobs_copy_attrs","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_attrs","(attrs=hl, rows=a, cols=c, target:de, scraddr:nil, subroutine:false)","Creates a routine that copies bitmap attributes to the screen as a rectangle object.\n
attrs
— An address …\n\n"],["bobs_copy_attrs_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_attrs_fast","(attrs, rows=a, cols=32, target:hl, disable_intr:true, enable_intr:true, save_sp:true, check_oos:false, subroutine:false)","Creates a routine that copies bitmap attributes to the screen as a rectangle object using unrolled POP …\n"],["bobs_copy_pixels","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_pixels","(bitmap=hl, lines=a, cols=c, target:de, scraddr:nil, subroutine:false)","
Creates a routine that copies bitmap pixels to the ink/paper screen as a rectangle object.\n
bitmap
— An address …\n\n"],["bobs_copy_pixels_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_pixels_fast","(bitmap, lines=c, cols=32, target:hl, disable_intr:true, enable_intr:true, save_sp:true, scraddr:nil, subroutine:false)","Creates a routine that copies bitmap pixels to the ink/paper screen as a rectangle object using unrolled …\n"],["bobs_draw_pixels_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast","(bitmap, lines=a, cols=2, target:hl, bshift:b, mode: :set, skip_cols: nil, lclip: false, rclip: false, no0shift: false, tx:ix, disable_intr:true, enable_intr:true, save_sp:true, scraddr:nil, jump_table:nil, subroutine:false)","
Creates a routine that draws bitmap pixels to the ink/paper screen as a rectangle object using unrolled …\n"],["bobs_draw_pixels_fast_jump_table","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast_jump_table","(draw_pixels_fast_label)","
Creates a jump table for the Macros#bobs_draw_pixels_fast routine.\n
Provide a label (or a symbol) referencing …\n"],["bobs_draw_pixels_fast_routines","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast_routines","(next_row, cols, mode: :set, skip_cols: nil, lclip: false, rclip: false, no0shift: nil, merge: false, jump_eoc: true)","
Creates specialized routines for Macros#bobs_draw_pixels_fast that can be used externally via jump table. …\n"],["bobs_rshift_bitmap_pixels_7times","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_rshift_bitmap_pixels_7times","(bitmap=hl, lines=c, cols=a, target:de)","
Creates a routine that renders 7 bitmap textures by shifting 7 times each source bitmap lines by 1 bit …\n"],["bobs_rshift_bitmap_pixels_once","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_rshift_bitmap_pixels_once","(bitmap=hl, lines=c, cols=a, target:de)","
Creates a routine that renders a bitmap texture by shifting each source bitmap lines by 1 bit to the …\n"],["byte","Z80::Label","Z80/Label.html#method-c-byte","(size = 1)","
A data structure's field type.\n"],["bytes","Z80::Program","Z80/Program.html#method-i-bytes","(*args)","
Returns an unnamed label and allocates
count
bytes with Program.data. Optionally you can provide values …\n"],["bytesize","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-bytesize","()","Returns original size of this variable in bytes.\n"],["bytesize","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-i-bytesize","()","
Returns the size in bytes of the track's compiled body.\n"],["byteslice","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-byteslice","(*at)","
Returns a selected portion of an array variable according to provided dimension indices as raw bytes. …\n"],["calculate_benchmark_tstates","ZXUtils::Benchmark::Macros","ZXUtils/Benchmark/Macros.html#method-i-calculate_benchmark_tstates","(counter, tsframe, frames, idle, adjustment)","
Returns the benchmark result.\n
Calculates: (frames*(tsframe - 102) + tsframe - (idle*512 + signed adjustment)) …\n"],["ce","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ce","(chord_name)",""],["ceo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ceo","()",""],["ch_a","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_a","(&block)","
Creates a track fragment for the A channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["ch_b","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_b","(&block)","
Creates a track fragment for the B channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["ch_c","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_c","(&block)","
Creates a track fragment for the C channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["chan_exists","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-chan_exists","(name = nil, output: de, input: nil, chan_name: 'U', buffer: 23296)","
Looks for a ZX Spectrum CHAN entry determined by
output
,input
and achan_name
.\noutput — output routine …\n\n"],["channel","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-channel","(ch_name, &block)","
Creates a track fragment for the given
channel_name
.\nProvide a block with commands suitable for MusicBox::Track …\n"],["channel_name_to_index","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-c-channel_name_to_index","(channel)","
Returns a channel index: 0 to 2 for the given
channel
name.\nA
channel
can be an integer: 0 to 2 or one …\n"],["channel_track","ZXUtils::MusicBox::Multitrack","ZXUtils/MusicBox/Multitrack.html#method-i-channel_track","(channel)","Returns an instance of the compiled track for the given
channel
. Achannel
can be an integer: 0 to 2 …\n"],["char_array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-char_array-3F","()","
true
if variable is a character array\n"],["char_ptr_from_code","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-char_ptr_from_code","(chars, code=a, tt:de)","Calculates the address of the first byte of a character. The calculated address will be available in …\n"],["chord","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-chord","(name, *args)","
Creates a chord with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Chord.new …\n"],["chord_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-chord_off","()","Turns off, if any, a chord applied to the played note at the current channel.\n"],["clear!","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-clear-21","()","
Clears all variables.\n"],["clear_attrs_region_fast","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-clear_attrs_region_fast","(address=hl, rows=a, cols=2, value=0, disable_intr:true, enable_intr:true, save_sp:true, addr_mode: :optimal, unroll_rows:false, scraddr:nil, subroutine:false)","
Creates a routine that clears a rectangle on screen attributes using unrolled PUSH instructions.\n
NOTE … — "],["clear_screen_region_fast","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-clear_screen_region_fast","(address=hl, lines=c, cols=2, value=0, disable_intr:true, enable_intr:true, save_sp:true, addr_mode: :compat, scraddr:nil, subroutine:false)","
Creates a routine that clears a rectangle on an ink/paper screen using unrolled PUSH instructions.\n
NOTE … — "],["clrmem","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem","(dest=hl, size=bc, value=0)","
Clears memory at
dest
using LDIR instruction.\nT-states: ~ 21/cleared byte.\n
Modifies:
bc
,de
,hl
, optionally …\n"],["clrmem8","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem8","(dest=hl, size=b, value=0, rr:hl)","Clears max 256 bytes of memory at
dest
. Slower (does not use LDIR/LDDR) but involves less registers. …\n"],["clrmem_fastest","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem_fastest","(address=hl, chunks_count=b, chunk_size=2, value=0, tt:hl, disable_intr:true, enable_intr:true, save_sp:true)","Clears a memory area using unrolled PUSH with a tight loop.\n
NOTE — Interrupts should be disabled during …\n\n"],["clrmem_quick","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem_quick","(dest=hl, size=1, value=0, rr:hl)","
Clears memory at
dest
in a faster way using unrolled instructions.\nT-states: ~ 13/cleared byte.\n
Modifies: …\n"],["cmp_i16n","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i16n","(th, tl, value, lt:nil, gt:nil, eq:nil, jump_rel:false)","
Compares a bitwise concatenated pair of 8-bit values
th
|tl
with avalue
as twos complement signed 16-bit …\n"],["cmp_i16r","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i16r","(th, tl, sh, sl, lt:nil, gt:nil, eq:nil, jump_rel:false)","Compares a bitwise concatenated pair of 8-bit values
th
|tl
with another pairsh
|sl
as twos complement …\n"],["cmp_i8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i8","(va, vb, lt:nil, gt:nil, eq:nil, jump_rel:false)","Compares
va
withvb
as twos complement signed 8-bit integers.\nProvide
va
andvb
as an 8-bit registers, …\n"],["code","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-code","()","Returns the raw byte representation of the whole ZX Basic program as a binary string.\n"],["code","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-code","()","
Returns a portion of data after the header.\n"],["code?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-code-3F","()","
true
if this chunk represents a code\n"],["compress","ZX7","ZX7.html#method-c-compress","(data)","ZX7.compress(data) -> data (zx7 compressed)\n"],["copy_shadow_attrs_region","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_attrs_region","(address=de, rows=a, cols=c, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, subroutine:false)","
Creates a routine that copies a rectangle of screen attributes from or to a shadow screen.\n
address
— An …\n\n"],["copy_shadow_attrs_region_quick","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_attrs_region_quick","(address=de, rows=b, cols=32, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, size_limit_opt:false, subroutine:false)","Creates a routine that copies a rectangle of screen attributes from or to a shadow screen using unrolled …\n"],["copy_shadow_screen_region","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_screen_region","(address=de, lines=a, cols=c, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, subroutine:false)","
Creates a routine that copies a rectangle of an ink/paper screen from or to a shadow screen.\n
address
— "],["copy_shadow_screen_region_quick","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_screen_region_quick","(address=de, lines=c, cols=32, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, size_limit_opt:false, subroutine:false)","Creates a routine that copies a rectangle of an ink/paper screen from or to a shadow screen using unrolled …\n"],["cp16n","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16n","(th, tl, value, jr_msb_c: nil, jr_msb_nz: :eoc)","
Compares a pair of registers
th
|tl
with avalue
as unsigned 16-bit integers.\nProvide
value
as an integer …\n"],["cp16r","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16r","(th, tl, sh, sl, jr_msb_c: nil, jr_msb_nz: :eoc)","Compares a pair of registers
th
|tl
with another pairsh
|sl
as unsigned 16-bit integers.\n\nCF, ZF = (th|tl ...\n"],["cp16rr","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16rr","(tt, ss, jr_msb_c: nil, jr_msb_nz: :eoc)","Compares a pair of 16-bit registers
tt
withss
as unsigned integers.\nA sugar for:\n\n
cp16r(th,tl, sh,sl, ...)\n"],["create_chan_and_open","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-create_chan_and_open","(name = nil, output:, input: nil, strm_no: 4, chan_name: 'U')","Creates a ZX Spectrum CHAN entry and opens it as a stream #N.\n
output — a routine address or a 16bit register …\n\n"],["create_sincos_from_sintable","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-create_sincos_from_sintable","(sincos, sintable:hl)","
Creates a subroutine that generates a full SinCosTable from a quarter sinus table obtainable from #neg_sintable256_pi_half_no_zero_lo …\n"],["cursor_key_pressed?","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-cursor_key_pressed-3F","(t:b, io:self.io)","
Test for cursor keys being pressed.\n
Options:\n
t
— A temporary 8-bit register.\n"],["data","Z80::Program","Z80/Program.html#method-i-data","(type = 1, size = nil, *args)","Returns an unnamed, relative label and adds provided data to the Program.code at Program.pc.\n
The
type
…\n"],["db","Z80::Program","Z80/Program.html#method-i-db","(*args)","Returns an unnamed label and adds the provided integers to Program.code as bytes.\n
See: Program.data.\n"],["dc!","Z80::Program","Z80/Program.html#method-i-dc-21","(text=''.freeze)",""],["debug","Z80","Z80.html#method-i-debug","()","
Creates a debugger view from an instance of a Z80::Program. Returns an array of strings.\n
Example debugger …\n"],["debug_comment","Z80::Program","Z80/Program.html#method-i-debug_comment","(text=''.freeze)","
Appends user comment to the debug listing.\n
The comment will be visible as text in the listing at the current …\n"],["define_label","Z80::Program","Z80/Program.html#method-i-define_label","(name, label=nil)","
Defines a label with the given name in the current namespace's context. Returns a named label.\n
A …\n"],["direct_address?","Z80::Program","Z80/Program.html#method-i-direct_address-3F","(arg)","
A convenient method for macros to check if an argument is a non-register direct address (not a pointer). …\n"],["direct_label?","Z80::Program","Z80/Program.html#method-i-direct_label-3F","(arg)","
A convenient method for macros to check if an argument is a direct label (not a pointer).\n
Returns
true
…\n"],["disable_ay_volume_ctrl","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-disable_ay_volume_ctrl","()","Turns off the AY-3-891x automatic volume envelope control of the current channel.\n"],["divmod","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod","(k, m, clrrem:true, check0:true, check1:true, modulo:false, optimize: :time)","
Creates a routine that performs an euclidean division of unsigned:
k
/m
. Returns a quotient ink
and …\n"],["divmod16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod16","(x=ixl, check0:true, check1:true, modulo:false, quick8:true)","Creates a routine that performs an euclidean division of unsigned 16-bit:
hl
/de
. Returns a quotient …\n"],["divmod24_8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod24_8","(kh, km, kl, m, check0:true, check1:true, modulo:false, optimize: :time)","Creates a routine that performs an euclidean division of unsigned 24-bit:
kh
|km
|kl
/ 8-bitm
. Returns …\n"],["divmod32_16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod32_16","(x:ixl, check0:true, check1:true, modulo:false, quick8:true)","Creates a routine that performs an euclidean division of unsigned 32-bit:
hl
|hl'
/de
. Returns a …\n"],["divmod32_8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod32_8","(m=c, mt:c, check0:true, check1:true, modulo:false)","Creates a routine that performs an euclidean division of unsigned 32-bit:
hl
|hl'
/m
. Returns a quotient …\n"],["divmod8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod8","(m=c, check0:true, check1:true, modulo:false)","Creates a routine that performs an euclidean division of unsigned:
hl
/m
. Returns a quotient inhl
and …\n"],["draw_line","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line","(preshift_pixel, preshift_cov_lt, preshift_cov_rt, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","Creates a routine that draws an approximation to a straight line.\n
The routine only modifies ink/paper …\n"],["draw_line_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dx_gt_4dy","(preshift_cov_rt, direction: :down, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
x
distance 4 times larger than they
distance.\nInput registers: …\n"],["draw_line_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dx_gt_dy","(preshift_cov_lt, direction: :down, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
x
distance larger than they
distance.\nInput registers with …\n"],["draw_line_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dy_gte_dx","(preshift, direction: :down_right, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
y
distance larger than or equal to thex
distance.\nInput …\n"],["draw_line_fx_data","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data","(preshift_pixel, preshift_cov_lt, preshift_cov_rt, fx:, pixel_type:)","
Creates data for draw_line_update routine.\n
Arguments:\n
preshift_pixel
— An address of an 8-byte aligned pixel …\n"],["draw_line_fx_data_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dx_gt_4dy","(preshift_cov_rt, fx:, pixel_type:)","Creates data for draw_line_update_dx_gt_4dy routine.\n
Arguments:\n
preshift_cov_rt
— An address of an 8-byte …\n"],["draw_line_fx_data_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dx_gt_dy","(preshift_cov_lt, fx:, pixel_type:nil)","Creates data for draw_line_update_dx_gt_dy routine.\n
Arguments:\n
preshift_cov_lt
— An address of an 8-byte …\n"],["draw_line_fx_data_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dy_gte_dx","(preshift, fx:, pixel_type:nil)","Creates data for draw_line_update_dy_gte_dx routine.\n
Arguments:\n
preshift
— An address of an 8-byte aligned …\n"],["draw_line_fx_data_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_vertical","(preshift, fx:)","Creates data for draw_line_update_vertical routine.\n
Arguments:\n
preshift
— An address of an 8-byte aligned …\n"],["draw_line_update","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update","(target, fx_only:false)","Creates a routine that modifies the function of the draw_line code in place.\n
target
— Provide a label returned …\n\n"],["draw_line_update_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dx_gt_4dy","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dx_gt_4dy code in place.\n
target
— Provide …\n\n"],["draw_line_update_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dx_gt_dy","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dx_gt_dy code in place.\n
target
— Provide a …\n\n"],["draw_line_update_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dy_gte_dx","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dy_gte_dx code in place.\n
target
— Provide …\n\n"],["draw_line_update_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_vertical","(target, no_preshift:false)","Creates a routine that modifies the function of the draw_line_vertical code in place.\n
target
— Provide a …\n\n"],["draw_line_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_vertical","(preshift, direction: :down, fx: :or, scraddr:0x4000, check_oos:true, end_with: :eoc)","Creates a routine for drawing vertical lines.\n
Input registers with
preshift
data:\n
hl
: the screen memory …\n"],["draw_sprite8","ZXLib::Gfx::Sprite8","ZXLib/Gfx/Sprite8.html#method-i-draw_sprite8","","Draws a sprite using one of the selected drawing methods with an arbitrary pixel height and width.\n
Pixel …\n"],["dummy","Z80::Label","Z80/Label.html#method-c-dummy","(name = nil)","
Creates a dummy label. Should not be used directly in programs. This is called by Program.method_missing …\n"],["dummy?","Z80::Alloc","Z80/Alloc.html#method-i-dummy-3F","()",""],["dummy?","Z80::Label","Z80/Label.html#method-i-dummy-3F","()","
Checks if a label is not yet given value and type (in-the-future a.k.a. a
dummy
label).\n"],["dup","Z80::Alloc","Z80/Alloc.html#method-i-dup","()",""],["dw","Z80::Program","Z80/Program.html#method-i-dw","(*args)","Returns an unnamed label and adds the provided integers to Program.code as words.\n
See: Program.data.\n"],["dzx7_agilercs","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_agilercs","(name=nil)","
“Agile” integrated RCS+ZX7 decoder by Einar Saukas (150 bytes)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_mega","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_mega","(name=nil)","ZX7 decoder by Einar Saukas “Mega” version (244 bytes, 30% faster)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_smartrcs","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_smartrcs","(name=nil)","“Smart” integrated RCS+ZX7 decoder by Einar Saukas (110 bytes)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_standard","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_standard","(name = nil)","ZX7 decoder by Einar Saukas, Antonio Villena & Metalbrain “Standard” version (69 bytes …\n"],["dzx7_turbo","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_turbo","(name = nil)","
ZX7 decoder by Einar Saukas & Urusergi “Turbo” version (88 bytes, 25% faster)\n
Parameters: …\n"],["each_var","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-each_var","(&block)","
Returns an Enumerator of every Basic::Variable found in self.\n"],["ei","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-ei","()",""],["else","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-else","(&block)","
Evaluates a block in an anonymous namespace if the condition evaluates to
false
. Returns an instance …\n"],["else_select","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-else_select","(*args, &test)","Evaluates additional condition if the previous condition evaluates to
false
. Returns an instance of …\n"],["enable_ay_volume_ctrl","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-enable_ay_volume_ctrl","()","Enables the AY-3-891x automatic volume envelope control of the current channel.\n"],["enlarge_char8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-enlarge_char8_16","(compact:true, over:false, scraddr:0x4000, assume_chars_aligned:true, hires:nil)","
Outputs an enlarged 8x8 character with anti-aliasing into the screen memory.\n
The register
hl
should hold …\n"],["envd","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envd","(duration)",""],["envdur","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envdur","(duration)",""],["envelope","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-envelope","(name, *args)","Creates an envelope with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Envelope.new …\n"],["envelope_duration","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envelope_duration","(duration)","Sets the AY-3-891x automatic volume envelope duration: 1 to 65535.\n"],["envelope_shape","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envelope_shape","(shape)","
Sets the shape of the AY-3-891x automatic volume envelope: 0 to 15. You may use ZXLib::AYSound::EnvelopeControl …\n"],["envs","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envs","(shape)",""],["envsh","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envsh","(shape)",""],["equal_tempered_scale_notes_hz","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-equal_tempered_scale_notes_hz","(hz:440, n0:0, steps:12)","
Returns an array of equal tempered scale frequencies from a given base frequency.\n
See — pages.mtu.edu/~suits/NoteFreqCalcs.html …\n\n"],["estimate_tstates_per_interrupt","ZXUtils::Benchmark::Macros","ZXUtils/Benchmark/Macros.html#method-i-estimate_tstates_per_interrupt","(stack_end, interrup_vec, forward, tsframe, idle)","
Estimates the number of T-States between interrupts.\n"],["export","Z80::Program","Z80/Program.html#method-i-export","(label)","
Marks
label_name
as exportable. Programs may import labels from another programs with Program.import …\n"],["expression?","Z80::Alloc","Z80/Alloc.html#method-i-expression-3F","()",""],["expression?","Z80::Label","Z80/Label.html#method-i-expression-3F","()","Checks if a label is an expression.\n"],["find_channel","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_channel","","
Looks for a channel name.\n
Input:\n
a
— A channel name as an upper-case letter code.\n"],["find_channel_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_channel_arg","","Looks for a channel name from a FN string argument.\n
NOTE — This routine must never be called from a task! …\n\n"],["find_def_fn_args","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-find_def_fn_args","(argnum=b, subroutine:true, not_found:nil, cf_on_direct:false, ¬_found_blk)","
Gets a DEF FN argument value address.\n
Requires:
macro_import MathInt
.\n
argnum
— 1-based argument index (0 …\n"],["find_emulator","ZXUtils::Emu","ZXUtils/Emu.html#method-c-find_emulator","()","Searches for an installed ZX Spectrum emulator program in the system. Returns a path to the executable …\n"],["find_input_handle","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_input_handle","","
Looks for an input handle for tasks.\n
Provide a channel name as an upper-case letter code in accumulator. …\n"],["find_io_handles","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_io_handles","","
Looks for I/O handles.\n
Provide a channel name as an upper-case letter code in accumulator.\n
On success returns …\n"],["find_output_handle","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_output_handle","","
Looks for an output handle for tasks.\n
Provide a channel name as an upper-case letter code in accumulator. …\n"],["find_record","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-find_record","(th=h, tl=l)","
Search for a record that matches a large block of memory.\n
+th|tl'+ — address of the last byte to search …\n\n"],["first_octave_note","ZXUtils::MusicBox::TrackConfigCommands","ZXUtils/MusicBox/TrackConfigCommands.html#method-i-first_octave_note","(note=nil)","
Gets or establishes which music
note
:a
to:g!
begins an octave. By default the first music note in an …\n"],["fixed_volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-fixed_volume","()",""],["for_ch","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-for_ch","(*chs, &block)",""],["for_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-for_channels","(*chs, &block)","Creates a track fragments with the same commands for the channels indicated by
channel_names
.\nProvide …\n"],["for_loop?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-for_loop-3F","()","
true
if variable is a FOR loop variable\n"],["fp_to_integer32","ZXLib::Math::Macros","ZXLib/Math/Macros.html#method-i-fp_to_integer32","(m3=e, m2=d, m1=c, m0=b, exp:a)","Creates a routine that converts a ZX Basic's floating point number to a 32-bit integer.\n
m3
|m2
|m1
| … — "],["from_data","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-from_data","(data)","Creates a Basic::Variable from a ZX Spectrum's VARS raw data.\n
Provide
data
as a binary string.\n"],["from_program_data","ZXLib::Basic","ZXLib/Basic.html#method-c-from_program_data","(data, prog_length=nil, start:nil)","Creates a Basic::Program instance from a ZX Spectrum's raw binary data.\n
The binary data may be a snapshot …\n"],["from_tap_chunk","ZXLib::Basic","ZXLib/Basic.html#method-c-from_tap_chunk","(chunk)","
Creates a Basic::Program or a Basic::Variable depending on the type of the chunk. The chunk should be …\n"],["fv","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-fv","()",""],["get","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-get","(name)","
Returns the first Basic::Variable if found by the given name.\n"],["get_adjustment","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_adjustment","","
Returns a signed integer. Convert with: LET x=x-(65536 AND x>=32768)\n"],["get_counter","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-get_counter","","
Returns the current value of the music counter.\n"],["get_emulator_path","ZXUtils::Emu","ZXUtils/Emu.html#method-c-get_emulator_path","()","
Returns a path to the executable file of a ZX Spectrum emulator.\n
The path is being determined by
ZXEMU_PATH
…\n"],["get_frames","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_frames","","Returns an unsigned integer\n"],["get_idle","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_idle","","
Returns an unsigned integer\n"],["get_int8_norm_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-get_int8_norm_arg","","
Attempts to read an integer in the range -255..255 from a FN argument.\n
NOTE — This routine must never be …\n\n"],["get_stream_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-get_stream_arg","","
Attempts to read a stream number from a FP-value addressed by
hl
.\nNOTE — This routine must never be called …\n\n"],["getset_tsframe","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-getset_tsframe","","
Returns a less significant 16-bit unsigned integer. Add 65536 to get the actual value.\n"],["gfx_clip_calculate_8bit_dx_dy_exx","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_calculate_8bit_dx_dy_exx","(xx=bc, yy=de, full_range_delta:true)","
Creates a routine that calculates
dx
anddy
. Used by: Macros.gfx_clip_line.\nNOTE — Swaps
bc
,de
,hl
registers …\n\n"],["gfx_clip_compute_outcode","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_compute_outcode","(outcode, xx=bc, yy=de, xmax:ixh, xmin:ixl, ymax:iyh, ymin:iyl, jump_rel:true, subroutine:false)","Creates a routine that computes the Outcode bits for the xx, yy point and the clipping region. Stores …\n"],["gfx_clip_coords_to_draw_line_args","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_coords_to_draw_line_args","(xx=bc, yy=de, args_type: :zxlib)","
Converts clipped 16-bit coordinates to the “draw line” routine arguments.\n
The line endpoints …\n"],["gfx_clip_dimension","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_dimension","(a0:bc, b0:de, d1:l, d2:h, full_range_delta:true)","
Creates a subroutine that clips a single dimension. Used by: Macros.gfx_clip_line.\n\n
hl = a0 + sign * d1 ...\n\n"],["gfx_clip_line","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_line","(xx=bc, yy=de, xmax:ixh, xmin:ixl, ymax:iyh, ymin:iyl, full_range_delta:true, compact:true)","Creates a subroutine for clipping lines to the rectangle viewport area using Cohen–Sutherland algorithm. …\n"],["gfx_sprite8_calculate_coords","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_calculate_coords","(outofscreen: :ret, **nsopts, &block)","
Creates a routine that calculates coordinates and prepares registers for Sprite8.draw_sprite8.\n
hl
— An address …\n"],["gfx_sprite8_calculate_screen_address","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_calculate_screen_address","(scraddr:SCREEN_ADDRESS, subroutine:false)","Creates a routine that calculates the screen address for Sprite8.draw_sprite8.\n
The
h
andl
registers should …\n"],["gfx_sprite8_draw","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_draw","(draw_sprite8=self.draw_sprite8, scraddr:SCREEN_ADDRESS, calculate:CALCULATE_SCREEN_ADDRESS, **nsopts, &block)","Creates a subroutine that calculates the screen address before jumping to Sprite8.draw_sprite8.\n
This subroutine …\n"],["gfx_sprite8_flip_horizontally","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_flip_horizontally","(subroutine:false)","
Creates a routine that flips sprite pixel data horizontally (mirrors sprites).\n
hl
— An address immediately …\n"],["head","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-head","()","Returns a header byte.\n"],["i","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-i","(instrument_name)",""],["immediate?","Z80::Alloc","Z80/Alloc.html#method-i-immediate-3F","()",""],["immediate?","Z80::Label","Z80/Label.html#method-i-immediate-3F","()","
Checks if a label is defined and absolute:
true
or not (relative or dummy): (false
). Prefer using Program.immediate? …\n"],["immediate?","Z80::Program","Z80/Program.html#method-i-immediate-3F","(arg)","A convenient method for macros to check if an argument is an immediate label or an integer.\n
Returns
true
…\n"],["import","Z80::Program","Z80/Program.html#method-i-import","(program, name=nil, labels:true, code:true, macros:false, override:{}, args:[])","Imports code, labels or macros from another
program
class. Give an optionalname
to create a namespace …\n"],["import_chord","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_chord","(name, chord)","Imports a MusicBox::Chord instance with the given
name
as a symbol or a string.\n"],["import_envelope","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_envelope","(name, envelope)","Imports a MusicBox::Envelope instance with the given
name
as a symbol or a string.\n"],["import_file","Z80::Program","Z80/Program.html#method-i-import_file","(file, type = :any, size = nil, pipe:nil, check_size:nil, data_type:nil, **args)","Imports a binary file.\n
file
— A file name.\n\n
type
— A format of a binary file (as a symbol), if:any
-> format …\n"],["import_instrument","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_instrument","(name, track)","Imports a MusicBox::Instrument class with the given
name
as a symbol or a string.\n"],["import_mask","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_mask","(name, mask)","Imports a MusicBox::Mask instance with the given
name
as a symbol or a string.\n"],["import_multitrack","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_multitrack","(name, multitrack)","Imports a MusicBox::Multitrack class with the given
name
as a symbol or a string.\n"],["import_track","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_track","(name, track)","Imports a MusicBox::Track class with the given
name
as a symbol or a string.\n"],["include?","Z80::Alloc","Z80/Alloc.html#method-c-include-3F","(alloc, label)","Return true if
label
takes part in analloc
expression.\n"],["indexable?","Z80::Alloc","Z80/Alloc.html#method-i-indexable-3F","()",""],["indexable?","Z80::Label","Z80/Label.html#method-i-indexable-3F","()","Returns
true
if a lazy evaluated label can be offset byindex
.\n"],["init","ZXUtils::AYMusic","ZXUtils/AYMusic.html#method-i-init","","Call to initialize music structures and reset counter, track and instrument cursors.\n
NOTE — Stop interrupts …\n\n"],["init","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-init","","
Initialize music module.\n
Relocates index table and sets the tracks' cursors to the initial positions. …\n"],["init_multitasking","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-init_multitasking","","
Initializes multitasking.\n
NOTE — This routine must never be called from a task!\n\n
Clears all tasks, sets global …\n"],["init_music","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-init_music","","
Initializes music track. Sets up the player.\n
To setup the player (once):\n\n
RANDOMIZE USR #{player[:init_music]}\n\n"],["initialize","Z80::Label","Z80/Label.html#method-i-initialize","(address, type = 1, reloc = nil, members = nil)",""],["initialize_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-initialize_io","","Initializes I/O and multitasking.\n
NOTE — This routine must never be called from a task!\n\n
Modifies:
af
,bc
…\n"],["insertion_sort_bytes_max256","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-insertion_sort_bytes_max256","(reverse:false, target:hl, length:b, subroutine:false, &side_effects)","Creates a routine that sorts an array of bytes using insertion sort.\n\n
i ← 0\nwhile i < length(A) - 1\n ...\n"],["instrument","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-instrument","(name, &block)","Creates an instrument with the given
name
as a symbol or a string.\nGive a block of code containing instrument …\n"],["instruments","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-instruments","()","
Returns a hash of instruments used in a song. Keys are instrument names and values are Instrument instances. …\n"],["int","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-int","(bitsize, value, byteorder: :lsb)","
Packs an integer of an arbitrary size and adds it to the Program.code at Program.pc. Returns an unnamed …\n"],["integer32_to_fp","ZXLib::Math::Macros","ZXLib/Math/Macros.html#method-i-integer32_to_fp","(m3=e, m2=d, m1=c, m0=b, sgn:a)","
Creates a routine that converts a 32-bit integer to a ZX Basic's floating point value.\n
m3
|m2
|m1
|m0
… — "],["interlace_pixels16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-interlace_pixels16","(f1, f2, unroll:true, &block)","Interlaces pixels from the
f1
andf2
registers into thea
register.\nEvaluates the given
block
after 8 …\n"],["isolate","Z80::Program","Z80/Program.html#method-i-isolate","(name = nil, **opts, &block)","Returns a relative label, as an isolated namespace, holding labels defined by the code created with …\n"],["jr_ok?","Z80::Program::Condition","Z80/Program/Condition.html#method-i-jr_ok-3F","()",""],["kernel_org","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-c-kernel_org","()","
The Multitasking kernel code start address.\n"],["kernel_org","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-c-kernel_org","()","
The MultitaskingIO kernel code start address.\n"],["key_pressed?","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-key_pressed-3F","(line_mask=0, key_mask=0x1f, io:self.io)","
Test for a key or keys being pressed.\n
line_mask
— Keyboard half-line mask, may be an 8 bit register. The …\n\n"],["label","Z80::Program","Z80/Program.html#method-i-label","(type = 1, align: nil, offset: 0)","Returns an unnamed, relative label at Program.pc of the optional
type
.\n
type
can be an integer or a data …\n"],["label?","Z80::Program","Z80/Program.html#method-i-label-3F","(arg)","A convenient method for macros to check if an argument is label-like.\n
Returns
true
for:\n\nfoo, :foo, foo[10], ...\n"],["label_defined?","Z80::Program","Z80/Program.html#method-i-label_defined-3F","(name)","True if a label with a
name
is defined in the current context.\n"],["label_immediate?","Z80::Program","Z80/Program.html#method-i-label_immediate-3F","(arg)","A convenient method for macros to check if an argument is an immediate label.\n
Returns
true
for:\n\nfoo addr ...\n\n"],["label_import","Z80::Program","Z80/Program.html#method-i-label_import","(program, name = nil, labels:true, macros:false)","Imports labels from another
program
class. Optionally imports macros.\nA sugar for:\n\n
import program, code: ...\n"],["ld16","Z80::Program::Macros","Z80/Program/Macros.html#method-i-ld16","(aa, bb)","Loads a content of the 16-bit register
bb
into the 16-bit registeraa
.\nA sugar for two 8-bit
ld
instructions. …\n"],["length","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-length","()","For strings returns the original string length, for arrays a number of dimensions.\n"],["limit","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-limit","()","
Returns the FOR loop limit value.\n"],["line","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-line","()","
Returns the FOR loop line number.\n"],["line_index","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-line_index","(line_no)","
Returns index in
lines
of a Basic line number equal or greater thanline_no
.\n"],["list","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-list","(line_no)","Returns a new Basic::Program instance with the subset of its lines according to the
line_no
argument. …\n"],["loop_to","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-loop_to","(mark_name, repeat=nil)","Loops execution from the marked point
name
. Repeatsrepeat
times. Ifrepeat
isnil
or missing loops …\n"],["loop_to","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-loop_to","(mark_name, repeat=nil)","Loops execution from the marked point
name
. Repeatsrepeat
times. Ifrepeat
isnil
or missing loops …\n"],["lt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-lt","(mark_name, repeat=nil)",""],["lt","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-lt","(mark_name, repeat=nil)",""],["m","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m","(name)",""],["m","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-m","(name)",""],["m1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m1","()",""],["m2","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m2","()",""],["macro","Z80::Program::Macros","Z80/Program/Macros.html#method-i-macro","(name, *registers, **nsopts, &mblock)","A convenient method to create local macros.\n
Give a
name
(Symbol) to your macro, an optional list ofregisters
…\n"],["macro_import","Z80::Program","Z80/Program.html#method-i-macro_import","(program)","Imports macros from another
program
class.\nA sugar for:\n\n
import program, code: false, macros: true, labels: ...\n"],["make_draw_line_subroutines","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-make_draw_line_subroutines","(make_line:true, make_line_over:true, make_line_inversed:true, make_lines_to:true, scraddr:0x4000, check_oos:true)","A convenient method to build drawing subroutines.\n
Returns a namespace label with members including the …\n"],["mark","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mark","(name)","
Marks a point in the track and gives it a
name
as a symbol or a string. You can later use CommonInstrumentCommands.loop_to …\n"],["mark","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-mark","(name)","Marks a point in tracks and gives it a
name
as a symbol or a string. You can later use MultitrackCommands.loop_to …\n"],["mask","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-mask","(name, *args)","Creates a mask with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Mask.new. …\n"],["mask_ay_volume_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_ay_volume_envelope","(mask_name)","Applies a mask defined by SongCommands.mask to the current channel's envelope bit controlling the …\n"],["mask_ay_volume_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_ay_volume_envelope_off","()","
Turns off, if any, a mask applied to the current channel's envelope bit.\n"],["mask_noise","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_noise","(mask_name)","
Applies a mask defined by SongCommands.mask to the current channel's mixer controlling the noise …\n"],["mask_noise_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_noise_off","()","
Turns off, if any, a mask applied to the current channel's mixer controlling the noise output.\n"],["mask_tone","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_tone","(mask_name)","
Applies a mask defined by SongCommands.mask to the current channel's mixer controlling the tone output. …\n"],["mask_tone_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_tone_off","()","
Turns off, if any, a mask applied to the current channel's mixer controlling the tone output.\n"],["match16?","Z80::Program::Register","Z80/Program/Register.html#method-i-match16-3F","(other)","
Checks if
self
can adjoin withother
:self
|other
\n"],["me","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-me","(mask_name)",""],["members_of_struct","Z80::Label","Z80/Label.html#method-c-members_of_struct","()","Returns a hash containing structure members as instances of a Member class.\n"],["memcpy","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-memcpy","(dest=de, source=hl, size=bc, reverse: nil)","
Copies
size
bytes from memory areasource
to memory areadest
.\n
dest
— A destination address as an integer, …\n"],["memcpy_quick","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-memcpy_quick","(dest=de, source=hl, size=1, reverse: nil)","Copies
size
bytes from memory areasource
to memory areadest
using unrolled LDI/LDD.\n
dest
— A destination …\n"],["meo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-meo","()",""],["method_missing","Z80::Alloc","Z80/Alloc.html#method-i-method_missing","(m)",""],["method_missing","Z80::Label","Z80/Label.html#method-c-method_missing","(m, struct=nil, count=1)","Any other method is being used as a label to a member of a data structure.\n"],["method_missing","Z80::Label","Z80/Label.html#method-i-method_missing","(m)","
Any other method will lazy evaluate as an accessor to the member label of this label.\n"],["method_missing","Z80::Program","Z80/Program.html#method-i-method_missing","(m, label = nil)","
If no singleton method
m
is defined, assumem
is a label name to define. Returns a named label.\nA
label
…\n"],["mix_lines8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-mix_lines8_16","(r=b, o:c, t1:d, t2:e)","Mixes two consecutive 8-pixel lines into the 16-pixel middle anti-aliasing line. The resulting bits from …\n"],["mmu128_select_bank","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-mmu128_select_bank","(bank:nil, screen:nil, disable_intr:true, enable_intr:true, mmu_port_in_bc:false, sys128:self.sys128)","
Selects an upper memory bank (0-7) and/or a screen memory page (0-1) to be displayed.\n
Options:\n
bank
— Selects …\n"],["mmu128_swap_screens","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-mmu128_swap_screens","(swap_bank:false, disable_intr:true, enable_intr:true, mmu_port_in_bc:false, sys128:self.sys128)","Swap displayed screens.\n
Options:\n
swap_bank
— A boolean flag indicating that the routine should additionally …\n"],["mn","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mn","(mask_name)",""],["mno","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mno","()",""],["mode1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mode1","()","Switches to play mode 1. This is the default mode. In this mode after playing a note the instrument track, …\n"],["mode2","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mode2","()","
Switches to play mode 2. In this mode after playing a note the instrument track, if set, continues executing …\n"],["move_basic_above_scld_screen_memory","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-move_basic_above_scld_screen_memory","(check_ensure:false)","
Moves Basic program and variables above the screen 1 (to 0x7B00).\n
check_ensure
— whentrue
checks if a call …\n\n\n"],["mt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mt","(mask_name)",""],["mtio_drain","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_drain","(disable_intr:true, enable_intr:true)","Drains the I/O buffer.\n
Options:\n
disable_intr
— a boolean flag indicating that the routine should disable …\n"],["mtio_getc","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_getc","(char=e, tt:bc, not_ready: :eoc, subroutine: true, preserve_hl:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Reads a single character from the I/O buffer. Arguments:\n
char
— an 8 bit register which should receive a …\n\n\n"],["mtio_gets","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_gets","(nchars=a, check_nchars_zero:true, subroutine:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Reads a string of characters from the I/O buffer.\n
Arguments:\n
nchars
— a number 1..255 or accumulator with …\n"],["mtio_putc","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_putc","(char=e, tt:bc, not_ready: :eoc, subroutine: true, preserve_hl:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Writes a single character to the I/O buffer.\n
Arguments:\n
char
— a number or an 8 bit register with the character …\n"],["mtio_puts","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_puts","(nchars=a, check_nchars_zero:true, subroutine:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Sends a string of characters to the I/O buffer.\n
Arguments:\n
nchars
— a number 1..255 or accumulator with a …\n"],["mtio_ready?","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_ready-3F","(action, nchars:nil, disable_intr:true, enable_intr:true)","Checks I/O buffer's data availability.\n
Arguments:\n
action
— a symbol:read
to get the information if the …\n"],["mtio_wait","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_wait","(action, nchars=1, disable_intr:true, enable_intr:true, mtyield:task_yield)","Waits for the I/O buffer's data availability.\n
Arguments:\n
action
— a symbol:read
to wait for the data …\n"],["mto","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mto","()",""],["mul","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul","(k=d, m=a, tt:de, clrhl:true, signed_k:false)","Creates a routine that performs a multiplication of an 8-bit integer
k
* 8-bit unsignedm
. Returns the …\n"],["mul16_32","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul16_32","(mm=bc, tt:bc, clrhlhl:true, signed_hl:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit integer (
hl
) by an unsigned 16-bit integer …\n"],["mul8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8","(kh=h, kl=l, m=a, tt:de, clrhl:true, double:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit integer
kh
|kl
* 8bit unsignedm
. Returns …\n"],["mul8_24","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_24","(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true)","Creates a routine that performs a multiplication of an unsigned 16-bit integer
kh
|kl
* 8-bit unsigned …\n"],["mul8_c","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_c","(kh=h, kl=l, m=a, tt:de, clrhl:true)","Creates a routine that performs a multiplication of an unsigned 16-bit integer
kh
|kl
* 8-bit unsigned …\n"],["mul8_signed","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_signed","(kh=h, kl=l, m=c, tt:de, t:m, clrhl:true, double:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit signed integer
kh
|kl
* 8bit signedm
. Returns …\n"],["mul_const","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_const","(k=d, m=0, tt:de, clrhl:true, signed_k:false)","Creates a routine that performs a multiplication of an 8-bit integer
k
* 8-bit unsignedm
. Returns the …\n"],["mul_const8_24","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_const8_24","(kh=h, kl=l, m=0, t:c, tt:de, clrahl:true, signed_k:false)","Creates a routine that performs a multiplication of an 16-bit integer
kh
|kl
* 8-bit unsignedm
. Returns …\n"],["mul_signed","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_signed","(k=d, m=a, tt:de, clrhl:true)","Creates a routine that performs a multiplication of a signed 8-bit
k
* 8-bit signedm
.\nSee Macros.mul …\n"],["multitrack","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-multitrack","(name, &block)","
Creates a multi-track with the given
name
as a symbol or a string.\nGive a block of code containing multi-track …\n"],["mute_sound","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-mute_sound","","
Mutes sound.\n
Modifies:
af
,bc
.\n"],["n","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n","(level)",""],["n0","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n0","()",""],["n1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n1","()",""],["name=","Z80::Alloc","Z80/Alloc.html#method-i-name-3D","(value)",""],["name=","Z80::Label","Z80/Label.html#method-i-name-3D","(value)","Gives a name to a no-named label. Should not be used directly in programs.\n"],["names","Z80::Program::Condition","Z80/Program/Condition.html#method-c-names","()",""],["names","Z80::Program::Register","Z80/Program/Register.html#method-c-names","()",""],["ne","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ne","(envelope_name)",""],["neg16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-neg16","(sh, sl, th:sh, tl:sl)","
Creates a routine that changes the sign of a twos complement 16-bit integer in
sh
|sl
.\n
sh
— An 8-bit register …\n"],["neg_int","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-neg_int","(*regs, t:nil, t_is_zero:false)","Creates a routine that changes the sign of a twos complement integer held in any number of
regs
.\nPass …\n"],["neg_sintable256_pi_half_no_zero_lo","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-neg_sintable256_pi_half_no_zero_lo","()","
Returns an array of 63 bytes containing the first quarter sinus table, 256-based angle, negated, fractional …\n"],["neo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-neo","()",""],["new","Z80::Alloc","Z80/Alloc.html#method-c-new","(lhs, oper=nil, rhs=nil, index=[])",""],["new","Z80::Label","Z80/Label.html#method-c-new","(addr, type = 1, reloc = nil, members = nil)","
Creates an instance of a label. Do not use it directly in programs. Instead use Program.data, Program.label …\n"],["new","Z80::Program","Z80/Program.html#method-i-new","(start = 0x0000, *args, override:{})","
Compiles a program at the
start
address passing *args to initialize(). Returns a compiled instance of …\n"],["new","Z80::Program::Condition","Z80/Program/Condition.html#method-c-new","(name, opc)",""],["new","Z80::Program::Register","Z80/Program/Register.html#method-c-new","(name, opc)",""],["new","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new","(header, body)",""],["new","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-c-new","(line_no, body)",""],["new","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-c-new","(lines, vars = nil, start = nil)",""],["new","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-c-new","(text, line_index=0, line_offset=0)","Creates new instance of a Basic::Tokenizer.\n
text
must be an UTF-8 encoded,line_index
andline_offset
…\n"],["new","ZXLib::Basic::VariableParseError","ZXLib/Basic/VariableParseError.html#method-c-new","(msg=\"Not a variable\")",""],["new","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-new","(data='')","Creates an instance of Basic::Vars.\n
Optionally provide VARS data as a binary string.\n"],["new","ZXUtils::MusicBox::Chord","ZXUtils/MusicBox/Chord.html#method-c-new","(*args)","
Creates an instance of the Chord with the given tuples defining the chord.\n
counter
— For how many ticks …\n"],["new","ZXUtils::MusicBox::Envelope","ZXUtils/MusicBox/Envelope.html#method-c-new","(*args)","Creates an instance of the Envelope with the given tuples shaping the envelope.\n
counter
— How many ticks …\n"],["new","ZXUtils::MusicBox::Mask","ZXUtils/MusicBox/Mask.html#method-c-new","(*args)","Creates an instance of the Mask with the given tuples defining bits for the mask.\n
counter
— For how many …\n"],["new","ZXUtils::MusicBox::Multitrack","ZXUtils/MusicBox/Multitrack.html#method-c-new","(resolver)","Instances of the derived classes are being created internally by the MusicBox::Song compilation process. …\n"],["new","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-c-new","()","
Creates and instance of the song.\n"],["new","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-c-new","(resolver)","
Instances of the derived classes are being created internally by the MusicBox::Song compilation process. …\n"],["new_char_array","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_char_array","(name, dims, values=nil)","
Creates a character array Basic::Variable.\n
The
strings
are parsed by Vars.program_text_to_string only …\n"],["new_code","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_code","(name, code, org)","Creates a HeaderBody of the type
TYPE_CODE
.\n
name
should contain max 10 ascii characters.\n
code
should be …\n"],["new_for_loop","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_for_loop","(name, value, limit, step, line, statement)","Creates a FOR loop Basic::Variable.\n"],["new_kernel","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-c-new_kernel","(*args, **opts)","
Instantiate Multitasking kernel with the proper code address.\n"],["new_kernel","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-c-new_kernel","(*args, **opts)","
Instantiate MultitaskingIO kernel with the proper code address.\n"],["new_number","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_number","(name, num, simplified_int=true)","
Creates a numeric Basic::Variable.\n"],["new_number_array","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_number_array","(name, dims, values=nil)","
Creates a numeric array Basic::Variable.\n
dims
must be an array of dimension sizes provided as positive …\n"],["new_program","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_program","(name, code, line:nil, prog_length:nil)","Creates a HeaderBody of the type
TYPE_PROGRAM
.\n
name
should contain max 10 ascii characters.\n
code
should …\n"],["new_string","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_string","(name, string)","Creates a string Basic::Variable.\n
The
string
is parsed by Vars.program_text_to_string only if encoded …\n"],["new_var_array","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_var_array","(name, code, head)","Creates a HeaderBody of the type
TYPE_NUMBER_ARRAY
orTYPE_CHAR_ARRAY
.\n
name
should contain max 10 ascii …\n"],["next_token","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-next_token","()",""],["nextline","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextline","(ah, al, bcheck = true, scraddr:0x4000, hires:false, **nsopts, &block)","Creates a routine that advances to the next line (down) a screen address using ah|al registers. Optionally …\n"],["nextpixel","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextpixel","(al, s: a)","
Creates a routine that changes a bit shift and the pixel address for a one pixel to the right.\n
Modifies: …\n"],["nextrow","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextrow","(ah, al, bcheck = true, scraddr:0x4000, **nsopts, &block)","
Creates a routine that advances to the next text row (down 8 pixels) a screen address using ah|al registers. …\n"],["noise","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise","(level)","
Sets noise pitch level: 0 to 31.\n"],["noise_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_envelope_off","()","
Turns off, if any, an envelope applied to the noise pitch level.\n"],["noise_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_off","()","
Turns off the current channel's noise output.\n"],["noise_on","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_on","()","
Turns on the current channel's noise output.\n"],["note_progress","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-note_progress","(period)","
Enables the smooth tone frequency progression of the notes played on the current channel.\n
period
— A number …\n\n"],["np","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-np","(period)",""],["ns","Z80::Program","Z80/Program.html#method-i-ns","(name = nil, **opts)","Returns a relative label, as a namespace, holding labels defined by the code created with
block
as sub-labels. …\n"],["number?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-number-3F","()","
true
if variable is a number variable\n"],["number_array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-number_array-3F","()","
true
if variable is a number array\n"],["offset_of_","Z80::Label","Z80/Label.html#method-c-offset_of_","(name)","Returns a lazy evaluated, debug visible, byte offset of a struct member. Returns
nil
if self is not a …\n"],["one_of?","Z80::Program::Condition","Z80/Program/Condition.html#method-i-one_of-3F","(ary)",""],["one_of?","Z80::Program::Register","Z80/Program/Register.html#method-i-one_of-3F","(ary)",""],["only_one_bit_set_or_zero?","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-only_one_bit_set_or_zero-3F","(v)","Returns true if
v
is a 0 or a positive integer with only one bit set in its binary representation.\n"],["open_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-open_io","","ZX Basic API\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["org","Z80::Program","Z80/Program.html#method-i-org","(address = pc, pad = 0, align: 1, offset: 0)","
Returns an unnamed, relative label that points to the beginning of padded space. The space is being padded …\n"],["p","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-p","(length, *length_exts)",""],["p","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-p","(length, *length_exts)",""],["pack_number","ZXLib::Math","ZXLib/Math.html#method-c-pack_number","(num, simplified_int=true)","
Converts
num
to a ZX-Spectrum's real number encoded as a 5-byte binary string.\n
simplified_int
indicates …\n"],["parse_each","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-parse_each","(&block)",""],["parse_file","Z80::TAP","Z80/TAP.html#method-c-parse_file","(filename, &block)","Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP
file
. Optionally unwraps …\n"],["parse_file","Z80::TAP","Z80/TAP.html#method-c-parse_file","(filename, &block)","Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP
file
. Optionally unwraps …\n"],["parse_source","ZXLib::Basic","ZXLib/Basic.html#method-c-parse_source","(source, start:nil)","Creates a Basic::Program from a BASIC program text.\n
The
source
should be an UTF-8 encoded string.\nEach …\n"],["parse_source_line","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-c-parse_source_line","(line_text, last_line_no=0, line_index=0)","
Creates a Basic::Line from a provided BASIC program text.\n
See: Basic.parse_source\n"],["parse_tap","Z80::TAP","Z80/TAP.html#method-c-parse_tap","(tap, file='-', &block)","
Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP blob. Optionally unwraps …\n"],["parse_tap","Z80::TAP","Z80/TAP.html#method-c-parse_tap","(tap, file='-', &block)","
Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP blob. Optionally unwraps …\n"],["pause","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-pause","(length, *length_exts)","
Pauses the current track execution for a
length
period. Thelength
value should be a positive integer. …\n"],["pause","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-pause","(length, *length_exts)","Pauses tracks execution for a
length
period. Thelength
value should be a positive integer.\nThe number …\n"],["pc","Z80::Program","Z80/Program.html#method-i-pc","()","
Returns the current byte offset from the beginning of the Program.code (a program counter relative to …\n"],["pch","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-pch","(*args)",""],["peek_token","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-peek_token","()",""],["play","ZXUtils::AYMusic","ZXUtils/AYMusic.html#method-i-play","","
Call this routine, in turns, to play the music.\n
NOTE — Stop interrupts (
di
) first before calling this routine. …\n\n"],["play","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-play","(note_name, octave, *pause_lengths)","To play notes on the use one of the commands:\n\n
note_name corresponding note\na A\na! A# ...\n\n"],["play_chord","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-play_chord","(*args)","Plays a chord. At least two different notes should be specified.\n"],["play_interval","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-play_interval","","
Plays single music track tick. Call repeatedly on equal intervals to play music.\n
Returns the current value …\n"],["play_loop","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-play_loop","","
Plays music track in a loop until any key has been pressed.\n"],["plot_pixel","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-plot_pixel","(x, y, preshift, fx: :or, with_attributes:false, color_attr:ixl, color_mask:ixh, scraddr:0x4000)","
Creates the plot pixel routine.\n
x
— The input register: horizontal-coordinate in the range [0, 255].\n\n
y
— The …\n"],["pointer?","Z80::Alloc","Z80/Alloc.html#method-i-pointer-3F","()",""],["pointer?","Z80::Label","Z80/Label.html#method-i-pointer-3F","()","Checks if label is a pointer. Prefer using Program.pointer? instead.\n"],["pointer?","Z80::Program","Z80/Program.html#method-i-pointer-3F","(arg)","
A convenient method for macros to check if an argument is pointer-like.\n
Returns
true
for:\n\n[foo], [:foo], ...\n"],["pointer?","Z80::Program::Register","Z80/Program/Register.html#method-i-pointer-3F","()",""],["prepare_args_draw_line_to","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-prepare_args_draw_line_to","()","Creates a routine that prepares arguments for the draw_line routine from two sets of coordinates.\n
Registers …\n"],["preshifted_pixel_mask_data","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-preshifted_pixel_mask_data","(data_type)","
Creates precalculated pixel mask data to be used with drawing routines.\n
data_type
:\n\n:pixel ...\n\n"],["prevline","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-prevline","(ah, al, bcheck = true, scraddr:0x4000, hires:false, **nsopts, &block)","Creates a routine that moves up to the previous line a screen address using ah|al registers. Optionally …\n"],["prevpixel","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-prevpixel","(al, s: a)","
Creates a routine that changes a bit shift and the pixel address for a one pixel to the left.\n
Modifies: …\n"],["print_char","ZXUtils::BigFont","ZXUtils/BigFont.html#method-i-print_char","","
ZX Spectrum's ROM compatible CHAN output routine\n
The
a
register should have the output character code …\n"],["print_char_hires","ZXUtils::BigFontHires","ZXUtils/BigFontHires.html#method-i-print_char_hires","","ZX Spectrum's ROM compatible CHAN output routine, for hi-res mode.\n
The
a
register should have the …\n"],["print_fp_hl","ZXLib::Math","ZXLib/Math.html#method-i-print_fp_hl","","Call
print_fp_hl
withhl
pointing to the 1st byte of aZXReal
number to print that number to the currently …\n"],["program?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-program-3F","()","
true
if this chunk represents a basic program\n"],["program_text_to_string","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-program_text_to_string","(text)","Converts a UTF-8 text string to a binary string encoded in a form suitable for ZX-Spectrum's Basic …\n"],["quicksort_bytes","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-quicksort_bytes","(select_pivot=:half, reverse: false, safe_args: true, pivot_reg: c, swap_same: true, &swap_items)","
Creates a subroutine that sorts an array of bytes using quicksort algorithm.\n\n
algorithm qsort(A, first, ...\n"],["rctoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-rctoattr","(row, col=0, ah:h, al:l, scraddr:0x4000)","Creates a routine that converts row and column coordinates to an address of a color attribute.\n
Modifies: …\n"],["rctoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-rctoscr","(row, col=0, ah:h, al:l, scraddr:0x4000)","
Creates a routine that converts row and column coordinates to a byte address of a top 8-pixel line.\n
Modifies: …\n"],["rdoc_mark_find_def_fn_arg","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-rdoc_mark_find_def_fn_arg","","
Looks for a first DEF FN argument value address.\n
NOTE — This routine must never be called from a task!\n\n
If …\n"],["read_arg_string","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_arg_string","(adh=d, adl=e, lenh=b, lenl=c)","
Reads a string address and its length from a ZX Basic's stringish FP-value.\n
hl
— must point to the 1st …\n"],["read_chunk","Z80::TAP","Z80/TAP.html#method-c-read_chunk","(filename, name:nil, index:nil)","Reads a TAP::HeaderBody chunk from a TAP file.\n
Pass additional
:name
argument to search for the header …\n"],["read_chunk","Z80::TAP","Z80/TAP.html#method-c-read_chunk","(filename, name:nil, index:nil)","Reads a TAP::HeaderBody chunk from a TAP file.\n
Pass additional
:name
argument to search for the header …\n"],["read_data","Z80::TAP","Z80/TAP.html#method-c-read_data","(filename, **opts)","Reads a data chunk from a TAP file. Returns a binary string.\n
Program.import_file uses this method to read …\n"],["read_data","Z80::TAP","Z80/TAP.html#method-c-read_data","(filename, **opts)","
Reads a data chunk from a TAP file. Returns a binary string.\n
Program.import_file uses this method to read …\n"],["read_integer32_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_integer32_value","(th=de, tl=bc)","
Reads a 32-bit integer from a ZX Basic's FP-value.\n
Requires:
macro_import ::ZXLib::Math
.\n
hl
— must point …\n"],["read_integer_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_integer_value","(th=d, tl=e, sgn=c, normal_negative:false, t:a)","Reads a signed integer from a ZX Basic's FP-value.\n
hl
— must point to the 1st byte of the FP-value. …\n"],["read_positive_int_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_positive_int_value","(th=d, tl=e)","Reads a positive integer from a ZX Basic's FP-value.\n
hl
— must point to the 1st byte of the FP-value. …\n"],["read_source","ZXLib::Basic","ZXLib/Basic.html#method-c-read_source","(filename, **opts)","Creates a Basic::Program from a BASIC text file.\n
See parse_source for details.\n"],["read_tap","ZXLib::Basic","ZXLib/Basic.html#method-c-read_tap","(filename, **opts)","
Creates a Basic::Program or a Basic::Variable from a TAP file.\n
See Z80::TAP.read_chunk for arguments description. …\n"],["register?","Z80::Program","Z80/Program.html#method-i-register-3F","(arg)","
A convenient method for macros to check if an argument is a Register.\n
Returns
true
for:\n\nhl, a, [hl], [iy ...\n"],["reinitialize","Z80::Alloc","Z80/Alloc.html#method-i-reinitialize","(address, type = 1, reloc = nil, members = nil)",""],["repeat","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-repeat","(times=nil, mark:nil, &block)","Repeats the execution of the commands in the given block
repeat
times. Ifrepeat
isnil
or missing repeats …\n"],["repeat","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-repeat","(times=nil, mark:nil, &block)","Repeats the execution of the commands in the given block
repeat
times. Ifrepeat
isnil
or missing repeats …\n"],["report_error","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-report_error","(error)","Returns to ZX Basic with the error report.\n
error — Error report signature as a number
0..9
or a letter …\n\n\n"],["report_error_unless","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-report_error_unless","(condition, error)","Returns to ZX Basic with the error report if condition is NOT met.\n
condition — NZ, Z, NC, C, PO, PE, P, …\n\n"],["respond_to_missing?","Z80::Alloc","Z80/Alloc.html#method-i-respond_to_missing-3F","(m, include_private=false)",""],["restore_rom_interrupt_handler","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-restore_rom_interrupt_handler","(enable_intr:true)","
Restore interrupt handler ZX Spectrum ROM's standard IM1 mode.\n
enable_intr — If
true
invokeei
instruction …\n\n\n"],["return_with_fp","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-return_with_fp","(pop_ret_address:true, rom:self.rom, restore_iy:self.vars_iy, restore_hl_alt:rom.end_calc)","Creates a routine that returns to the calling ZX-Basic's USR function an FP value.\n
When returning …\n"],["rnd","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-rnd","()","
Creates a Lehmer random number generator routine.\n
See: en.wikipedia.org/wiki/Lehmer_random_number_generator …\n"],["rpt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-rpt","(times=nil, mark:nil, &block)",""],["rpt","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-rpt","(times=nil, mark:nil, &block)",""],["run","ZXUtils::Emu","ZXUtils/Emu.html#method-c-run","(file, *args)","
Runs a ZX Spectrum emulator program with the given
file
as its argument.\nProvides additional
args
to the …\n"],["save_tap","Z80::TAP","Z80/TAP.html#method-i-save_tap","(filename, append:false, name:nil, **opts)","Saves self in a TAP file.\n
The tap data is being generated by #to_tap_chunk.\n
filename
specifies the file …\n"],["save_tap","Z80::TAP","Z80/TAP.html#method-i-save_tap","(filename, append:false, name:nil, **opts)","Saves self in a TAP file.\n
The tap data is being generated by #to_tap_chunk.\n
filename
specifies the file …\n"],["save_tap","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-save_tap","(filename, append:false)","Saves this chunk as a TAP file.\n
filename
specifies the file name to save to. The “.tap” extension …\n"],["screen?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-screen-3F","()","
true
if this chunk represents a screen data\n"],["scrtoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-scrtoattr","(s, o:s, scraddr:0x4000)","Creates a routine that converts a high byte of a pixel address to a high byte of an address of a relevant …\n"],["select","Z80::Program","Z80/Program.html#method-i-select","(*args, &test)","
Creates a conditional block that creates alternative code based on the lazy evaluated boolean condition. …\n"],["selection_sort_bytes_max256","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-selection_sort_bytes_max256","(reverse:false, target:hl, length:b, subroutine:false, &swap_items)","
Creates a routine that sorts an array of bytes using selection sort.\n\n
i ← length(A) - 1\nwhile i > 0\n ...\n"],["set_empty_instrument","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-set_empty_instrument","()","Turns off any instrument previously set up with TrackCommands.set_instrument on the current channel. …\n"],["set_instrument","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-set_instrument","(instrument_name)","
Sets an instrument for the current channel.\n
instrument_name
— A symbol or string with the instrument name …\n\n"],["setup","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-setup","","Sets up the player.\n
Call this ONCE the player code has been loaded to create required tables for the music …\n"],["setup_custom_interrupt_handler","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-setup_custom_interrupt_handler","(handler, enable_intr:true, vector_page:0x3B)","
Creates a routine that sets up custom interrupt handler using ZX Spectrum ROM's unused space as a …\n"],["shuffle_bytes_source_max256","Z80::Utils::Shuffle::Macros","Z80/Utils/Shuffle/Macros.html#method-i-shuffle_bytes_source_max256","(next_rng=nil, target:hl, length:a, source:nil, &next_rng_blk)","
Creates a routine to shuffle an array of bytes.\n
After the shuffle is performed
hl
points to the memory …\n"],["sincos_from_angle","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-sincos_from_angle","(sincos, th=h, tl=l)","Creates code that returns an address of SinCos entry for a given 256-based angle in the register
a
.\nFor …\n"],["sincos_table_descriptors","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-sincos_table_descriptors","()","
Returns a SinCosTable descriptors.\n
Example:\n\n
sincos data SinCosTable, sincos_table_descriptors\n\n"],["size","Z80::Program::Register","Z80/Program/Register.html#method-i-size","()",""],["spawn","ZXUtils::Emu","ZXUtils/Emu.html#method-c-spawn","(file, *args)","Spawns a ZX Spectrum emulator program with the given
file
as its argument.\nProvides additional
args
to …\n"],["split","Z80::Program::Register","Z80/Program/Register.html#method-i-split","()","Disjoins one of 16 bit registers:
bc
de
hl
ix
oriy
to array of 8bit registers: [hi
,lo
].\nUseful when …\n"],["stack_space_free","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-stack_space_free","","
Returns (in
bc
) how many bytes are available in multitasking stack space for new tasks. Reports an OOM …\n"],["start","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-start","","A benchmark start entry for the machine-language.\n
Provide a
routine
and acounter
address in the memory …\n"],["start","ZXUtils::Gallery","ZXUtils/Gallery.html#method-i-start","","Gallery API.\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["start_chord","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_chord","(chord_name)","
Applies a chord defined by SongCommands.chord to the currently played note at the current channel.\n"],["start_noise_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_noise_envelope","(envelope_name)","
Applies an envelope defined by SongCommands.envelope to the noise pitch level.\n"],["start_volume_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_volume_envelope","(envelope_name)","
Applies an envelope defined by SongCommands.envelope to the volume level at the current channel.\n"],["statement","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-statement","()","
Returns the FOR loop execute statement number.\n"],["step","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-step","()","
Returns the FOR loop step value.\n"],["string?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-string-3F","()","
true
if variable is a string variable\n"],["string_to_program_text","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-string_to_program_text","(data, ascii_only:false, se:false)","Converts a ZX-Spectrum's string variable data to a source UTF-8 text with special and control characters …\n"],["sub","ZXUtils::MusicBox::InstrumentCommands","ZXUtils/MusicBox/InstrumentCommands.html#method-i-sub","(instrument_name)",""],["sub","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-sub","(multitrack_name)",""],["sub","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-sub","(track_name)",""],["sub_from","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-sub_from","(s, th, tl)","
Creates a routine that subtracts an 8-bit
s
register value from a 16-bitth
|tl
register pair.\n
s
— A subtractor …\n"],["sub_instrument","ZXUtils::MusicBox::InstrumentCommands","ZXUtils/MusicBox/InstrumentCommands.html#method-i-sub_instrument","(instrument_name)","Yields execution of the instrument to another with the given
instrument_name
as a symbol or string. …\n"],["sub_track","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-sub_track","(multitrack_name)","Yields execution of the tracks to another multi-track with the given
multitrack_name
as a symbol or a …\n"],["sub_track","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-sub_track","(track_name)","Yields execution of the track to another sub-track with the given
track_name
as a symbol or string. …\n"],["sublabel?","Z80::Alloc","Z80/Alloc.html#method-i-sublabel-3F","()",""],["sublabel?","Z80::Label","Z80/Label.html#method-i-sublabel-3F","()","Checks if a label is a member of a struct or a stand-alone label.\n"],["sublabel_access_expression?","Z80::Alloc","Z80/Alloc.html#method-i-sublabel_access_expression-3F","()",""],["sublabel_access_expression?","Z80::Label","Z80/Label.html#method-i-sublabel_access_expression-3F","()","
Checks if a label is a named sub-label access expression.\n"],["synchronize_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-synchronize_channels","(a:nil, b:nil, c:nil)","
Specify ranges of allowed ticks for each channel's track synchronization. If the given track is behind …\n"],["t0","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-t0","()",""],["t1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-t1","()",""],["task?","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task-3F","(tt:hl, mtvars:self.mtvars)","
Checks if the code is being run as a task. ZF flag will be set (Z) if not a task.\n
tt
— A temporary 16bit …\n\n"],["task_id","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task_id","(oh, ol, tt:hl, check_if_system:false, disable_intr:true, enable_intr:true, mtvars:self.mtvars)","Retrieves current task's id.\n
oh
,ol
— MSB and LSB 8-bit registers for output. Together oh|ol form a …\n\n"],["task_stack_bytes_free","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task_stack_bytes_free","(tt:hl, positive_size:true, disable_intr:true, enable_intr:true, mtvars:self.mtvars)","Calculates how many bytes are available yet on the task's stack below SP.\n
tt
— Temporary 16bit register, …\n\n"],["task_yield","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-task_yield","","Yields task execution.\n
Tasks or system programs should call this endpoint instead of invoking halt. This …\n"],["tempo","ZXUtils::MusicBox::TrackConfigCommands","ZXUtils/MusicBox/TrackConfigCommands.html#method-i-tempo","(ticks=nil)","
Gets or alters the tempo
ticks
.\nThe
ticks
value is being used as a base for the notes/pause duration. …\n"],["terminate","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-terminate","","Terminates the current task.\n
Tasks may jump to this endpoint directly to terminate themselves. If called …\n"],["terminated?","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-terminated-3F","()",""],["text","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-i-text","(escape_keywords:false, ascii_only:false, se:false)","
Creates a textual representation of this line except its number. Returns an UTF-8 encoded string.\n
See: …\n"],["then","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-then","(&block)","
Evaluates a block in an anonymous namespace if the condition evaluates to
true
. Returns an instance of …\n"],["ticks_counter","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-i-ticks_counter","(counter=0)","Adds a track's tick counter value to the given
counter
and returns it.\n"],["to_a","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-to_a","()","Returns an array of every Basic::Variable found in self.\n"],["to_aliased_name","Z80::Alloc","Z80/Alloc.html#method-i-to_aliased_name","(start)",""],["to_aliased_name","Z80::Label","Z80/Label.html#method-i-to_aliased_name","(start)","
Returns an abbreviated string information about a label for aliased targets.\n"],["to_alloc","Z80::Alloc","Z80/Alloc.html#method-i-to_alloc","()",""],["to_alloc","Z80::Label","Z80/Label.html#method-i-to_alloc","()","
Returns a lazy evaluated label as an instance of Alloc class. Use one of the lazy operators directly …\n"],["to_data","Z80::Label","Z80/Label.html#method-c-to_data","(prog, offset, data)","
Used by Program.data. Do not use it directly in programs.
data
must be aHash
,Struct
,Array
,String
…\n"],["to_debug","Z80::Program::Register","Z80/Program/Register.html#method-i-to_debug","()",""],["to_i","Z80::Alloc","Z80/Alloc.html#method-i-to_i","(start = 0, rel_to = nil, override:nil, prefix:''.freeze, size_of:false)","rel_to: an absolute address or :self used by ix/iy offset addressing\n"],["to_i","Z80::Label","Z80/Label.html#method-c-to_i","()","
Returns a size of a data structure immediately.\n"],["to_i","Z80::Label","Z80/Label.html#method-i-to_i","(start = 0, rel_to = nil, override:nil, prefix:''.freeze, size_of:false)","
Evaluates a label. This method is being used during program compilation.\n
start
— An absolute address to …\n\n"],["to_i","Z80::Program::Condition","Z80/Program/Condition.html#method-i-to_i","()",""],["to_i","Z80::Program::Register","Z80/Program/Register.html#method-i-to_i","()",""],["to_label","Symbol","Symbol.html#method-i-to_label","(program)","Allows to use Symbols instead of labels in some situations. Example:\n\n
loop1 add [hl]\n inc hl\n ...\n"],["to_label","Z80::Alloc","Z80/Alloc.html#method-i-to_label","(_)",""],["to_label","Z80::Label","Z80/Label.html#method-i-to_label","(_)","Should return a Label or an Alloc. This method's existence indicates that something quacks like a …\n"],["to_module","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_module","()","
Returns an instance of the SongModule from the compiled Song instance.\n"],["to_name","Z80::Alloc","Z80/Alloc.html#method-i-to_name","(info=false)",""],["to_name","Z80::Label","Z80/Label.html#method-i-to_name","(info=false)","
Returns this label's name as string or
nil
.\n
info
enables returning made up name if this label is anonymous. …\n"],["to_player_module","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_player_module","()","Returns an instance of the PlayerModule from the compiled Song instance.\n"],["to_player_module","ZXUtils::MusicBox::Song::SongModule","ZXUtils/MusicBox/Song/SongModule.html#method-i-to_player_module","()","
Returns an instance of the PlayerModule from the compiled SongModule instance.\n"],["to_program","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_program","()","
Returns an ad-hoc Z80::Program class containing the compiled Song. See SongModule.to_program.\n"],["to_program","ZXUtils::MusicBox::Song::SongModule","ZXUtils/MusicBox/Song/SongModule.html#method-i-to_program","()","
Returns an ad-hoc Z80::Program class containing the compiled SongModule.\n
The returned program exports …\n"],["to_s","Z80::Alloc","Z80/Alloc.html#method-i-to_s","()",""],["to_s","Z80::Label","Z80/Label.html#method-i-to_s","()",""],["to_s","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-to_s","()","
For humans.\n"],["to_s","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-i-to_s","(**opts)","
Creates a textual representation of this line with the line number. Returns an UTF-8 encoded string. …\n"],["to_s","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_s","(escape_keywords:false, ascii_only:false, se:false)",""],["to_s","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-to_s","()","
Returns this variable in a BASIC-like text format.\n"],["to_s","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-to_s","()","
Returns all variables in a BASIC-like text format.\n"],["to_source","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_source","(escape_keywords:false, ascii_only:false, se:false)","
Creates the textual representation of a ZX Basic::Program.\n
Returns an UTF-8 encoded string.\n
The conversion …\n"],["to_str","Z80::Alloc","Z80/Alloc.html#method-i-to_str","()",""],["to_str","Z80::Label","Z80/Label.html#method-i-to_str","()","
Returns an abbreviated string information about a label, mostly used in error messages.\n"],["to_struct","Z80::Label","Z80/Label.html#method-c-to_struct","()","
Returns a new Ruby
Struct
from members defined in a data structure.\nInstances of such a
Struct
are suitable …\n"],["to_tap","Z80::TAP","Z80/TAP.html#method-i-to_tap","(name, **opts)","Produces a TAP blob as a binary string from self.\n
A sugar for calling TAP::HeaderBody#to_tap method on …\n"],["to_tap","Z80::TAP","Z80/TAP.html#method-i-to_tap","(name, **opts)","
Produces a TAP blob as a binary string from self.\n
A sugar for calling TAP::HeaderBody#to_tap method on …\n"],["to_tap","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-to_tap","()","
Produces a TAP blob as a binary string from this chunk.\n"],["to_tap_chunk","Z80::TAP","Z80/TAP.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a TAP::HeaderBody chunk from self.\n
By default it uses Z80#code and the Z80#org to produce the …\n"],["to_tap_chunk","Z80::TAP","Z80/TAP.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a TAP::HeaderBody chunk from self.\n
By default it uses Z80#code and the Z80#org to produce the …\n"],["to_tap_chunk","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_tap_chunk","(name, line:nil)","
Creates a Z80::TAP::HeaderBody instance from Basic::Program#code.\n
This method is provided for the included …\n"],["to_tap_chunk","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a Z80::TAP::HeaderBody instance from Basic::Variable.\n
This method is provided for the included …\n"],["to_z80bin","Float","Float.html#method-i-to_z80bin","(simplified_int=true)","
Converts
Float
to a ZX-Spectrum's real number encoded as a 5-byte binary string.\nSuitable to be used …\n"],["tone_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_off","()","
Turns off the current channel's tone output.\n"],["tone_on","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_on","()","
Turns on the current channel's tone output.\n"],["tone_progress","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_progress","(delta, counter)","
Enables and controls the tone frequency progression of the current channel's tone.\n
delta
— A floating …\n"],["tp","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tp","(delta, counter)",""],["track","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-track","(name, &block)","Creates a track with the given
name
as a symbol or a string.\nGive a block of code containing track commands. …\n"],["twos_complement16_by_sgn","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-twos_complement16_by_sgn","(sh, sl, sgn, th:sh, tl:sl, t:sgn)","
Creates a routine that changes the sign of a twos complement 16-bit integer depending on the content …\n"],["union","Z80::Program","Z80/Program.html#method-i-union","(label, type, align: nil, offset: 0)","
Returns a new, unnamed label addressed by
label
, but of differenttype
.type
can be an integer or a data …\n"],["unknown","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-unknown","","Attempts to read a positive 16-bit integer from a FP-value addressed by
hl
.\nNOTE — This routine must never …\n\n"],["unpack_number","ZXLib::Math","ZXLib/Math.html#method-c-unpack_number","(bin, simplified_int_as_fixnum=true)","
Converts a ZX-Spectrum's real number as a 5-byte binary string to
Numeric
value.\n
simplified_int_as_fixnum
…\n"],["unused_item_names","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-unused_item_names","()","Returns a hash with unused item names in each of the item category.\n"],["unwrap_pointer","Z80::Program","Z80/Program.html#method-i-unwrap_pointer","(arg)","
Returns a normalized pointer label, Register or an integer. Otherwise pass-through.\n
Convenient method …\n"],["utobcd","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-utobcd","(bufend, input=de, size: 4, r: d, rr: de, byteorder: :lsb, input_end:false)","
Creates a routine that converts an unsigned binary integer of an arbitrary size to a BCD string.\n
bufend
… — "],["utobcd_step","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-utobcd_step","(bufend, r, buflen=1, t=c, r_in_a=false)","Creates a routine that converts an 8-bit unsigned integer to a BCD string.\n
Used by Macros.utobcd.\n
bufend
… — "],["v","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-v","(level)",""],["va","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-va","(amplitude=1.0)",""],["validate_recursion_depth!","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-validate_recursion_depth-21","(track_stack_depth=20)","Checks if maximal recursion depth of tracks and instruments is not exceeding the given threshold.\n
Provide …\n"],["value","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-value","()","
Returns a value of a variable.\n
A Float or an Integer for numbers (including FOR loops).\n
A (possibly nested) …\n"],["variable_volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-variable_volume","()",""],["ve","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ve","(envelope_name)",""],["vec_deque_clear","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_clear","(vec_deque, vec_deque_bot:)","
Creates a routine that initializes or clears the queue.\n
vec_deque
— A label of a type VecDequeState addressing …\n\n"],["vec_deque_empty?","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_empty-3F","(vec_deque, branch_not_empty: nil, branch_relative: true, tt: de)","Creates a routine that checks if the queue is empty.\n
In case
branch_not_full
isnil
theZ
flag, if set, …\n"],["vec_deque_full?","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_full-3F","(vec_deque, branch_not_full: nil, branch_relative: true, tt: de)","Creates a routine that checks if the queue is full.\n
In case
branch_not_full
isnil
theZ
flag, if set, …\n"],["vec_deque_length","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_length","(vec_deque, vec_deque_bot:, vec_deque_top:, tt: de, subroutine: false)","Creates a routine that calculates the current length of the queue.\n
The length is made available as a 16-bit …\n"],["vec_deque_next_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_next_back","(vec_deque=nil, vec_deque_bot:, vec_deque_top:, cursor: de, subroutine: false)","
Creates a routine that reads a byte element from the back of the queue advancing the cursor backwards. …\n"],["vec_deque_next_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_next_front","(vec_deque=nil, vec_deque_bot:, vec_deque_top:, cursor: de, subroutine: false)","
Creates a routine that reads a byte element from the front of the queue advancing the cursor forward. …\n"],["vec_deque_pop_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_pop_back","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_empty: nil, branch_relative: true, tt: de)","
Creates a routine that removes a byte element from the back of the queue.\n
The removed element is provided …\n"],["vec_deque_pop_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_pop_front","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_empty: nil, branch_relative: true, tt: de)","
Creates a routine that removes a byte element from the front of the queue.\n
The removed element is provided …\n"],["vec_deque_push_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_push_back","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_full: nil, branch_relative: true, tt: de)","
Creates a routine that appends a byte element to the back of the queue.\n
accumulator
— Should hold a value …\n"],["vec_deque_push_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_push_front","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_full: nil, branch_relative: true, tt: de)","Creates a routine that appends a byte element to the front of the queue.\n
accumulator
— Should hold a value …\n"],["veo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-veo","()",""],["vg","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vg","(angle=0.0)",""],["vibrato_amplitude","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_amplitude","(amplitude=1.0)","Enables the current channel's tone vibrato and sets the distortion amplitude.\n
amplitude
— A positive …\n\n"],["vibrato_angle","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_angle","(angle=0.0)","Enables the current channel's tone vibrato and sets the current phase angle.\n
angle
— A positive floating …\n\n"],["vibrato_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_off","()","Turns off, if any, the current channel's tone vibrato distortion.\n"],["vibrato_step","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_step","(step=1.0)","
Enables the current channel's tone vibrato and sets the distortion angle progression step.\n
step
— A …\n\n"],["vo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vo","()",""],["volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-volume","(level)","Sets volume level for the current channel: 0 to 15.\n"],["volume_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-volume_envelope_off","()","
Turns off, if any, an envelope applied to the volume level at the current channel.\n"],["vs","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vs","(step=1.0)",""],["vv","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vv","()",""],["w","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-w","(ticks)",""],["w","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-w","(ticks)",""],["wait","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-wait","(ticks)","
Pauses the current track execution for
ticks
number of ticks. Theticks
value should be a positive integer …\n"],["wait","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-wait","(ticks)","Pauses tracks execution for
ticks
number of ticks. Theticks
value should be a positive integer as an …\n"],["wait_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-wait_io","","ZX Basic API\n
This endpoint should be invoked from the ZX Basic indirectly via FN.\n\n
2 DEF FN w(s,n)=USR wait_io: ...\n"],["widen_pixels8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-widen_pixels8_16","(f1, f2, unroll:true)","Each bit of the
a
register is duplicated and placed in thef1
andf2
registers.\nModifies:
af
,f1
and …\n"],["with_saved","Z80::Program::Macros","Z80/Program/Macros.html#method-i-with_saved","(*registers, **opts, &block)","Adds a code that pushes specified registers on a machine stack, code from
block
within a namespace and …\n"],["word","Z80::Label","Z80/Label.html#method-c-word","(size = 1)","A data structure's field type.\n"],["words","Z80::Program","Z80/Program.html#method-i-words","(*args)","
Returns an unnamed label and allocates
count
words with Program.data. Optionally you can provide values …\n"],["xy_to_attr_addr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xy_to_attr_addr","(x, y, scraddr:0x4000)","Calculates a constant screen attribute address from the pixel coordinates.\n"],["xy_to_pixel_addr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xy_to_pixel_addr","(x, y, scraddr:0x4000)","
Calculates a constant screen pixel byte address from the pixel coordinates.\n"],["xytoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xytoscr","(y, x, ah:h, al:l, s:b, t:c, scraddr:0x4000)",""],["ytoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-ytoattr","(y, ah:h, al:l, col:0, scraddr:0x4000)","
Creates a routine that converts a vertical pixel coordinate to an address of a color attribute.\n
Modifies: …\n"],["ytoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-ytoscr","(y, ah:h, al:l, col:nil, t:c, scraddr:0x4000, hires:false)","
Creates a routine that converts a vertical pixel coordinate to a screen byte address.\n
Modifies:
af
,ah
…\n"],["yxtoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-yxtoscr","(y, x, ah:h, al:l, s:b, t:c, scraddr:0x4000)","Creates a routine that converts y,x coordinates to a screen byte address and a bits shift.\n
Modifies: …\n"],["|","Z80::Alloc","Z80/Alloc.html#method-i-7C","(other)",""],["|","Z80::Label","Z80/Label.html#method-i-7C","(m)","
Returns a lazy evaluated bitwise “or” of a label and an
other
label or an integer.\n"],["|","Z80::Program::Register","Z80/Program/Register.html#method-i-7C","(other)","Adjoins two 8 bit registers to form one 16 bit register.\n
Useful when defining macros that may use registers …\n"],["~","Z80::Alloc","Z80/Alloc.html#method-i-~","()",""],["~","Z80::Label","Z80/Label.html#method-i-~","()","
Returns a lazy evaluated bitwise negated label.\n"],["CHANGELOG","","CHANGELOG_md.html","","
v1.1.1.pre-2\n
ZXLib:\n
New macro ZXLib::Gfx::Macros#ytoattr.\n"],["LICENSE","","LICENSE_md.html","","
The Parity Public License 7.0.0\n
Contributor: Rafał Michalski\n
Source Code: github.com/royaltm/z80-rb\n"],["README","","README_rdoc.html","","
ruby-Z80\n
Documentation.\n
Source repository.\n"]]}} \ No newline at end of file +var search_data = {"index":{"searchIndex":["aytest","bench","echo","float","musictest","object","symbol","z80","alloc","compileerror","conditionalblock","label","mathint","integers","macros","program","condition","macros","mnemonics","register","stdlib","macros","syntax","tap","headerbody","tapeerror","tzx","utils","shuffle","macros","sincos","macros","sincos","sincostable","sort","macros","vecdeque","macros","vecdequestate","zx7","macros","zxlib","aysound","envelopecontrol","macros","mixer","registers","volumecontrol","basic","line","program","tokenizer","patterns","variable","variableparseerror","variabletypes","vars","gfx","bobs","macros","clip","macros","outcode","draw","constants","macros","macros","sprite8","macros","math","macros","zxreal","sys","coords","cursor","if1vars","macros","strms","vars","vars128","zxutils","aybasicplayer","aymusic","ayregistermirror","channelcontrol","chordcontrol","envelopecontrol","instrumentcontrol","macros","maskcontrol","musiccontrol","toneprogresscontrol","trackcontrol","trackstackentry","vibratocontrol","aymusicplayer","musictracks","trackinfo","benchmark","macros","bigfont","macros","bigfonthires","emu","gallery","formats","multitasking","macros","taskinfo","taskvars","multitaskingio","bufferio","macros","taskvarsio","musicbox","ayenvelopedurationcommand","ayenvelopeshapecommand","chord","chordcommand","command","headers","metacommand","commoninstrumentcommands","emptytrack","envelope","envelopecommand","indexcommand","instrument","instrumentcommand","instrumentcommands","loopcommand","markcommand","mask","maskcommand","multitrack","multitrackcommands","noisepitchcommand","notechordcommand","notecommand","noteprogressperiodcommand","pausecommand","resolver","song","playermodule","songmodule","songcommands","subinstrumentcommand","subtrackcommand","toneprogresscommand","track","trackcommands","trackconfigcommands","vibratoamplitudecommand","vibratoanglecommand","vibratostepcommand","volumelevelcommand","%()","%()","&()","&()","*()","*()","**()","**()","+()","+()","+()","+@()","+@()","+@()","-()","-()","-()","-@()","-@()","/()","/()","<<()","<<()","<<()","==()",">>()",">>()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","[]()","^()","^()","add24_16()","add_code()","add_reloc()","adda_to()","addr()","address?()","alias?()","alias?()","alias_label()","all_ch()","all_channels()","api()","array?()","array?()","as()","ay_expand_notes()","ay_expand_notes_faster()","ay_get_register_value()","ay_get_set_env_shape()","ay_get_set_mixer()","ay_hz2tp()","ay_init()","ay_io_load_const_reg_bc()","ay_io_swap2inp_bc()","ay_io_swap2out_bc()","ay_io_swap2sel_bc()","ay_music_finished?()","ay_music_init()","ay_music_note_to_fine_tone_cursor_table_factory()","ay_music_preserve_io_ports_state()","ay_music_tone_progress_table_factory()","ay_set_envelope_duration()","ay_set_noise_pitch()","ay_set_register_value()","ay_set_tone_period()","ay_set_volume()","ay_tone_periods()","bcdtoa()","bench()","bit8?()","bobs_copy_attrs()","bobs_copy_attrs_fast()","bobs_copy_pixels()","bobs_copy_pixels_fast()","bobs_draw_pixels_fast()","bobs_draw_pixels_fast_jump_table()","bobs_draw_pixels_fast_routines()","bobs_rshift_bitmap_pixels_7times()","bobs_rshift_bitmap_pixels_once()","byte()","bytes()","bytesize()","bytesize()","byteslice()","calculate_benchmark_tstates()","ce()","ceo()","ch_a()","ch_b()","ch_c()","chan_exists()","channel()","channel_name_to_index()","channel_track()","char_array?()","char_ptr_from_code()","chord()","chord_off()","clear!()","clear_attrs_region_fast()","clear_screen_region_fast()","clrmem()","clrmem8()","clrmem_fastest()","clrmem_quick()","cmp_i16n()","cmp_i16r()","cmp_i8()","code()","code()","code?()","compress()","copy_shadow_attrs_region()","copy_shadow_attrs_region_quick()","copy_shadow_screen_region()","copy_shadow_screen_region_quick()","cp16n()","cp16r()","cp16rr()","create_chan_and_open()","create_sincos_from_sintable()","cursor_key_pressed?()","data()","db()","dc!()","debug()","debug_comment()","define_label()","direct_address?()","direct_label?()","disable_ay_volume_ctrl()","divmod()","divmod16()","divmod24_8()","divmod32_16()","divmod32_8()","divmod8()","draw_line()","draw_line_dx_gt_4dy()","draw_line_dx_gt_dy()","draw_line_dy_gte_dx()","draw_line_fx_data()","draw_line_fx_data_dx_gt_4dy()","draw_line_fx_data_dx_gt_dy()","draw_line_fx_data_dy_gte_dx()","draw_line_fx_data_vertical()","draw_line_update()","draw_line_update_dx_gt_4dy()","draw_line_update_dx_gt_dy()","draw_line_update_dy_gte_dx()","draw_line_update_vertical()","draw_line_vertical()","draw_sprite8()","dummy()","dummy?()","dummy?()","dup()","dw()","dzx7_agilercs()","dzx7_mega()","dzx7_smartrcs()","dzx7_standard()","dzx7_turbo()","each_var()","ei()","else()","else_select()","enable_ay_volume_ctrl()","enlarge_char8_16()","envd()","envdur()","envelope()","envelope_duration()","envelope_shape()","envs()","envsh()","equal_tempered_scale_notes_hz()","estimate_tstates_per_interrupt()","export()","expression?()","expression?()","find_channel()","find_channel_arg()","find_def_fn_args()","find_emulator()","find_input_handle()","find_io_handles()","find_output_handle()","find_record()","first_octave_note()","fixed_volume()","for_ch()","for_channels()","for_loop?()","fp_to_integer32()","from_data()","from_program_data()","from_tap_chunk()","fv()","get()","get_adjustment()","get_counter()","get_emulator_path()","get_frames()","get_idle()","get_int8_norm_arg()","get_stream_arg()","getset_tsframe()","gfx_clip_calculate_8bit_dx_dy_exx()","gfx_clip_compute_outcode()","gfx_clip_coords_to_draw_line_args()","gfx_clip_dimension()","gfx_clip_line()","gfx_sprite8_calculate_coords()","gfx_sprite8_calculate_screen_address()","gfx_sprite8_draw()","gfx_sprite8_flip_horizontally()","head()","i()","immediate?()","immediate?()","immediate?()","import()","import_chord()","import_envelope()","import_file()","import_instrument()","import_mask()","import_multitrack()","import_track()","include?()","indexable?()","indexable?()","init()","init()","init_multitasking()","init_music()","initialize()","initialize_io()","insertion_sort_bytes_max256()","instrument()","instruments()","int()","integer32_to_fp()","interlace_pixels16()","isolate()","jr_ok?()","kernel_org()","kernel_org()","key_pressed?()","label()","label?()","label_defined?()","label_immediate?()","label_import()","ld16()","length()","limit()","line()","line_index()","list()","loop_to()","loop_to()","lt()","lt()","m()","m()","m1()","m2()","macro()","macro_import()","make_draw_line_subroutines()","mark()","mark()","mask()","mask_ay_volume_envelope()","mask_ay_volume_envelope_off()","mask_noise()","mask_noise_off()","mask_tone()","mask_tone_off()","match16?()","me()","members_of_struct()","memcpy()","memcpy_quick()","meo()","method_missing()","method_missing()","method_missing()","method_missing()","mix_lines8_16()","mmu128_select_bank()","mmu128_swap_screens()","mn()","mno()","mode1()","mode2()","move_basic_above_scld_screen_memory()","mt()","mtio_drain()","mtio_getc()","mtio_gets()","mtio_putc()","mtio_puts()","mtio_ready?()","mtio_wait()","mto()","mul()","mul16_32()","mul8()","mul8_24()","mul8_c()","mul8_signed()","mul_const()","mul_const8_24()","mul_signed()","multitrack()","mute_sound()","n()","n0()","n1()","name=()","name=()","names()","names()","ne()","neg16()","neg_int()","neg_sintable256_pi_half_no_zero_lo()","neo()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new_char_array()","new_code()","new_for_loop()","new_kernel()","new_kernel()","new_number()","new_number_array()","new_program()","new_string()","new_var_array()","next_token()","nextline()","nextpixel()","nextrow()","noise()","noise_envelope_off()","noise_off()","noise_on()","note_progress()","np()","ns()","number?()","number_array?()","offset_of_()","one_of?()","one_of?()","only_one_bit_set_or_zero?()","open_io()","org()","p()","p()","pack_number()","parse_each()","parse_file()","parse_file()","parse_source()","parse_source_line()","parse_tap()","parse_tap()","pause()","pause()","pc()","pch()","peek_token()","play()","play()","play_chord()","play_interval()","play_loop()","plot_pixel()","pointer?()","pointer?()","pointer?()","pointer?()","prepare_args_draw_line_to()","preshifted_pixel_mask_data()","prevline()","prevpixel()","print_char()","print_char_hires()","print_fp_hl()","program?()","program_text_to_string()","quicksort_bytes()","rctoattr()","rctoscr()","rdoc_mark_find_def_fn_arg()","read_arg_string()","read_chunk()","read_chunk()","read_data()","read_data()","read_integer32_value()","read_integer_value()","read_positive_int_value()","read_source()","read_tap()","register?()","reinitialize()","repeat()","repeat()","report_error()","report_error_unless()","respond_to_missing?()","restore_rom_interrupt_handler()","return_with_fp()","rnd()","rpt()","rpt()","run()","save_tap()","save_tap()","save_tap()","screen?()","scrtoattr()","select()","selection_sort_bytes_max256()","set_empty_instrument()","set_instrument()","setup()","setup_custom_interrupt_handler()","shuffle_bytes_source_max256()","sign_extend()","sincos_from_angle()","sincos_table_descriptors()","size()","spawn()","split()","stack_space_free()","start()","start()","start_chord()","start_noise_envelope()","start_volume_envelope()","statement()","step()","string?()","string_to_program_text()","sub()","sub()","sub()","sub_from()","sub_instrument()","sub_track()","sub_track()","sublabel?()","sublabel?()","sublabel_access_expression?()","sublabel_access_expression?()","synchronize_channels()","t0()","t1()","task?()","task_id()","task_stack_bytes_free()","task_yield()","tempo()","terminate()","terminated?()","text()","then()","ticks_counter()","to_a()","to_aliased_name()","to_aliased_name()","to_alloc()","to_alloc()","to_data()","to_debug()","to_i()","to_i()","to_i()","to_i()","to_i()","to_label()","to_label()","to_label()","to_module()","to_name()","to_name()","to_player_module()","to_player_module()","to_program()","to_program()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_source()","to_str()","to_str()","to_struct()","to_tap()","to_tap()","to_tap()","to_tap_chunk()","to_tap_chunk()","to_tap_chunk()","to_tap_chunk()","to_z80bin()","tone_off()","tone_on()","tone_progress()","tp()","track()","twos_complement16_by_sgn()","union()","unknown()","unpack_number()","unused_item_names()","unwrap_pointer()","utobcd()","utobcd_step()","v()","va()","validate_recursion_depth!()","value()","variable_volume()","ve()","vec_deque_clear()","vec_deque_empty?()","vec_deque_full?()","vec_deque_length()","vec_deque_next_back()","vec_deque_next_front()","vec_deque_pop_back()","vec_deque_pop_front()","vec_deque_push_back()","vec_deque_push_front()","veo()","vg()","vibrato_amplitude()","vibrato_angle()","vibrato_off()","vibrato_step()","vo()","volume()","volume_envelope_off()","vs()","vv()","w()","w()","wait()","wait()","wait_io()","widen_pixels8_16()","with_saved()","word()","words()","xy_to_attr_addr()","xy_to_pixel_addr()","xytoscr()","ytoattr()","ytoscr()","yxtoscr()","|()","|()","|()","~()","~()","changelog","license","readme"],"longSearchIndex":["aytest","bench","echo","float","musictest","object","symbol","z80","z80::alloc","z80::compileerror","z80::conditionalblock","z80::label","z80::mathint","z80::mathint::integers","z80::mathint::macros","z80::program","z80::program::condition","z80::program::macros","z80::program::mnemonics","z80::program::register","z80::stdlib","z80::stdlib::macros","z80::syntax","z80::tap","z80::tap::headerbody","z80::tap::tapeerror","z80::tzx","z80::utils","z80::utils::shuffle","z80::utils::shuffle::macros","z80::utils::sincos","z80::utils::sincos::macros","z80::utils::sincos::sincos","z80::utils::sincos::sincostable","z80::utils::sort","z80::utils::sort::macros","z80::utils::vecdeque","z80::utils::vecdeque::macros","z80::utils::vecdeque::vecdequestate","zx7","zx7::macros","zxlib","zxlib::aysound","zxlib::aysound::envelopecontrol","zxlib::aysound::macros","zxlib::aysound::mixer","zxlib::aysound::registers","zxlib::aysound::volumecontrol","zxlib::basic","zxlib::basic::line","zxlib::basic::program","zxlib::basic::tokenizer","zxlib::basic::tokenizer::patterns","zxlib::basic::variable","zxlib::basic::variableparseerror","zxlib::basic::variabletypes","zxlib::basic::vars","zxlib::gfx","zxlib::gfx::bobs","zxlib::gfx::bobs::macros","zxlib::gfx::clip","zxlib::gfx::clip::macros","zxlib::gfx::clip::outcode","zxlib::gfx::draw","zxlib::gfx::draw::constants","zxlib::gfx::draw::macros","zxlib::gfx::macros","zxlib::gfx::sprite8","zxlib::gfx::sprite8::macros","zxlib::math","zxlib::math::macros","zxlib::math::zxreal","zxlib::sys","zxlib::sys::coords","zxlib::sys::cursor","zxlib::sys::if1vars","zxlib::sys::macros","zxlib::sys::strms","zxlib::sys::vars","zxlib::sys::vars128","zxutils","zxutils::aybasicplayer","zxutils::aymusic","zxutils::aymusic::ayregistermirror","zxutils::aymusic::channelcontrol","zxutils::aymusic::chordcontrol","zxutils::aymusic::envelopecontrol","zxutils::aymusic::instrumentcontrol","zxutils::aymusic::macros","zxutils::aymusic::maskcontrol","zxutils::aymusic::musiccontrol","zxutils::aymusic::toneprogresscontrol","zxutils::aymusic::trackcontrol","zxutils::aymusic::trackstackentry","zxutils::aymusic::vibratocontrol","zxutils::aymusicplayer","zxutils::aymusicplayer::musictracks","zxutils::aymusicplayer::trackinfo","zxutils::benchmark","zxutils::benchmark::macros","zxutils::bigfont","zxutils::bigfont::macros","zxutils::bigfonthires","zxutils::emu","zxutils::gallery","zxutils::gallery::formats","zxutils::multitasking","zxutils::multitasking::macros","zxutils::multitasking::taskinfo","zxutils::multitasking::taskvars","zxutils::multitaskingio","zxutils::multitaskingio::bufferio","zxutils::multitaskingio::macros","zxutils::multitaskingio::taskvarsio","zxutils::musicbox","zxutils::musicbox::ayenvelopedurationcommand","zxutils::musicbox::ayenvelopeshapecommand","zxutils::musicbox::chord","zxutils::musicbox::chordcommand","zxutils::musicbox::command","zxutils::musicbox::command::headers","zxutils::musicbox::command::metacommand","zxutils::musicbox::commoninstrumentcommands","zxutils::musicbox::emptytrack","zxutils::musicbox::envelope","zxutils::musicbox::envelopecommand","zxutils::musicbox::indexcommand","zxutils::musicbox::instrument","zxutils::musicbox::instrumentcommand","zxutils::musicbox::instrumentcommands","zxutils::musicbox::loopcommand","zxutils::musicbox::markcommand","zxutils::musicbox::mask","zxutils::musicbox::maskcommand","zxutils::musicbox::multitrack","zxutils::musicbox::multitrackcommands","zxutils::musicbox::noisepitchcommand","zxutils::musicbox::notechordcommand","zxutils::musicbox::notecommand","zxutils::musicbox::noteprogressperiodcommand","zxutils::musicbox::pausecommand","zxutils::musicbox::resolver","zxutils::musicbox::song","zxutils::musicbox::song::playermodule","zxutils::musicbox::song::songmodule","zxutils::musicbox::songcommands","zxutils::musicbox::subinstrumentcommand","zxutils::musicbox::subtrackcommand","zxutils::musicbox::toneprogresscommand","zxutils::musicbox::track","zxutils::musicbox::trackcommands","zxutils::musicbox::trackconfigcommands","zxutils::musicbox::vibratoamplitudecommand","zxutils::musicbox::vibratoanglecommand","zxutils::musicbox::vibratostepcommand","zxutils::musicbox::volumelevelcommand","z80::alloc#%()","z80::label#%()","z80::alloc#&()","z80::label#&()","z80::alloc#*()","z80::label#*()","z80::alloc#**()","z80::label#**()","z80::alloc#+()","z80::label#+()","z80::program::register#+()","z80::alloc#+@()","z80::label#+@()","z80::label::+@()","z80::alloc#-()","z80::label#-()","z80::program::register#-()","z80::alloc#-@()","z80::label#-@()","z80::alloc#/()","z80::label#/()","z80::alloc#<<()","z80::label#<<()","zxlib::basic::vars#<<()","z80::alloc#==()","z80::alloc#>>()","z80::label#>>()","z80#[]()","z80::alloc#[]()","z80::label#[]()","z80::program#[]()","z80::program::condition::[]()","z80::program::register::[]()","z80::program::register#[]()","zxlib::basic::program#[]()","zxlib::basic::variable#[]()","zxlib::basic::vars#[]()","z80::alloc#^()","z80::label#^()","z80::mathint::macros#add24_16()","z80::add_code()","z80::add_reloc()","z80::mathint::macros#adda_to()","z80::program#addr()","z80::program#address?()","z80::alloc#alias?()","z80::label#alias?()","z80::program#alias_label()","zxutils::musicbox::multitrackcommands#all_ch()","zxutils::musicbox::multitrackcommands#all_channels()","zxutils::multitasking#api()","z80::tap::headerbody#array?()","zxlib::basic::variable#array?()","z80::program#as()","zxlib::aysound::macros#ay_expand_notes()","zxlib::aysound::macros#ay_expand_notes_faster()","zxlib::aysound::macros#ay_get_register_value()","zxlib::aysound::macros#ay_get_set_env_shape()","zxlib::aysound::macros#ay_get_set_mixer()","zxlib::aysound::macros#ay_hz2tp()","zxlib::aysound::macros#ay_init()","zxlib::aysound::macros#ay_io_load_const_reg_bc()","zxlib::aysound::macros#ay_io_swap2inp_bc()","zxlib::aysound::macros#ay_io_swap2out_bc()","zxlib::aysound::macros#ay_io_swap2sel_bc()","zxutils::aymusic::macros#ay_music_finished?()","zxutils::aymusic::macros#ay_music_init()","zxutils::aymusic::macros#ay_music_note_to_fine_tone_cursor_table_factory()","zxutils::aymusic::macros#ay_music_preserve_io_ports_state()","zxutils::aymusic::macros#ay_music_tone_progress_table_factory()","zxlib::aysound::macros#ay_set_envelope_duration()","zxlib::aysound::macros#ay_set_noise_pitch()","zxlib::aysound::macros#ay_set_register_value()","zxlib::aysound::macros#ay_set_tone_period()","zxlib::aysound::macros#ay_set_volume()","zxlib::aysound::macros#ay_tone_periods()","z80::mathint::macros#bcdtoa()","zxutils::benchmark#bench()","z80::program::register#bit8?()","zxlib::gfx::bobs::macros#bobs_copy_attrs()","zxlib::gfx::bobs::macros#bobs_copy_attrs_fast()","zxlib::gfx::bobs::macros#bobs_copy_pixels()","zxlib::gfx::bobs::macros#bobs_copy_pixels_fast()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast_jump_table()","zxlib::gfx::bobs::macros#bobs_draw_pixels_fast_routines()","zxlib::gfx::bobs::macros#bobs_rshift_bitmap_pixels_7times()","zxlib::gfx::bobs::macros#bobs_rshift_bitmap_pixels_once()","z80::label::byte()","z80::program#bytes()","zxlib::basic::variable#bytesize()","zxutils::musicbox::track#bytesize()","zxlib::basic::variable#byteslice()","zxutils::benchmark::macros#calculate_benchmark_tstates()","zxutils::musicbox::commoninstrumentcommands#ce()","zxutils::musicbox::commoninstrumentcommands#ceo()","zxutils::musicbox::multitrackcommands#ch_a()","zxutils::musicbox::multitrackcommands#ch_b()","zxutils::musicbox::multitrackcommands#ch_c()","zxlib::sys::macros#chan_exists()","zxutils::musicbox::multitrackcommands#channel()","zxutils::musicbox::multitrackcommands::channel_name_to_index()","zxutils::musicbox::multitrack#channel_track()","zxlib::basic::variable#char_array?()","zxlib::sys::macros#char_ptr_from_code()","zxutils::musicbox::songcommands#chord()","zxutils::musicbox::commoninstrumentcommands#chord_off()","zxlib::basic::vars#clear!()","zxlib::gfx::macros#clear_attrs_region_fast()","zxlib::gfx::macros#clear_screen_region_fast()","z80::stdlib::macros#clrmem()","z80::stdlib::macros#clrmem8()","z80::stdlib::macros#clrmem_fastest()","z80::stdlib::macros#clrmem_quick()","z80::mathint::macros#cmp_i16n()","z80::mathint::macros#cmp_i16r()","z80::mathint::macros#cmp_i8()","zxlib::basic::program#code()","zxlib::basic::variable#code()","z80::tap::headerbody#code?()","zx7::compress()","zxlib::gfx::macros#copy_shadow_attrs_region()","zxlib::gfx::macros#copy_shadow_attrs_region_quick()","zxlib::gfx::macros#copy_shadow_screen_region()","zxlib::gfx::macros#copy_shadow_screen_region_quick()","z80::program::macros#cp16n()","z80::program::macros#cp16r()","z80::program::macros#cp16rr()","zxlib::sys::macros#create_chan_and_open()","z80::utils::sincos::macros#create_sincos_from_sintable()","zxlib::sys::macros#cursor_key_pressed?()","z80::program#data()","z80::program#db()","z80::program#dc!()","z80#debug()","z80::program#debug_comment()","z80::program#define_label()","z80::program#direct_address?()","z80::program#direct_label?()","zxutils::musicbox::commoninstrumentcommands#disable_ay_volume_ctrl()","z80::mathint::macros#divmod()","z80::mathint::macros#divmod16()","z80::mathint::macros#divmod24_8()","z80::mathint::macros#divmod32_16()","z80::mathint::macros#divmod32_8()","z80::mathint::macros#divmod8()","zxlib::gfx::draw::macros#draw_line()","zxlib::gfx::draw::macros#draw_line_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_fx_data()","zxlib::gfx::draw::macros#draw_line_fx_data_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_fx_data_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_fx_data_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_fx_data_vertical()","zxlib::gfx::draw::macros#draw_line_update()","zxlib::gfx::draw::macros#draw_line_update_dx_gt_4dy()","zxlib::gfx::draw::macros#draw_line_update_dx_gt_dy()","zxlib::gfx::draw::macros#draw_line_update_dy_gte_dx()","zxlib::gfx::draw::macros#draw_line_update_vertical()","zxlib::gfx::draw::macros#draw_line_vertical()","zxlib::gfx::sprite8#draw_sprite8()","z80::label::dummy()","z80::alloc#dummy?()","z80::label#dummy?()","z80::alloc#dup()","z80::program#dw()","zx7::macros#dzx7_agilercs()","zx7::macros#dzx7_mega()","zx7::macros#dzx7_smartrcs()","zx7::macros#dzx7_standard()","zx7::macros#dzx7_turbo()","zxlib::basic::vars#each_var()","zxutils::musicbox::trackcommands#ei()","z80::conditionalblock#else()","z80::conditionalblock#else_select()","zxutils::musicbox::commoninstrumentcommands#enable_ay_volume_ctrl()","zxutils::bigfont::macros#enlarge_char8_16()","zxutils::musicbox::commoninstrumentcommands#envd()","zxutils::musicbox::commoninstrumentcommands#envdur()","zxutils::musicbox::songcommands#envelope()","zxutils::musicbox::commoninstrumentcommands#envelope_duration()","zxutils::musicbox::commoninstrumentcommands#envelope_shape()","zxutils::musicbox::commoninstrumentcommands#envs()","zxutils::musicbox::commoninstrumentcommands#envsh()","zxlib::aysound::macros#equal_tempered_scale_notes_hz()","zxutils::benchmark::macros#estimate_tstates_per_interrupt()","z80::program#export()","z80::alloc#expression?()","z80::label#expression?()","zxutils::multitaskingio#find_channel()","zxutils::multitaskingio#find_channel_arg()","zxlib::sys::macros#find_def_fn_args()","zxutils::emu::find_emulator()","zxutils::multitaskingio#find_input_handle()","zxutils::multitaskingio#find_io_handles()","zxutils::multitaskingio#find_output_handle()","zxlib::sys::macros#find_record()","zxutils::musicbox::trackconfigcommands#first_octave_note()","zxutils::musicbox::commoninstrumentcommands#fixed_volume()","zxutils::musicbox::multitrackcommands#for_ch()","zxutils::musicbox::multitrackcommands#for_channels()","zxlib::basic::variable#for_loop?()","zxlib::math::macros#fp_to_integer32()","zxlib::basic::variable::from_data()","zxlib::basic::from_program_data()","zxlib::basic::from_tap_chunk()","zxutils::musicbox::commoninstrumentcommands#fv()","zxlib::basic::vars#get()","zxutils::benchmark#get_adjustment()","zxutils::aybasicplayer#get_counter()","zxutils::emu::get_emulator_path()","zxutils::benchmark#get_frames()","zxutils::benchmark#get_idle()","zxutils::multitaskingio#get_int8_norm_arg()","zxutils::multitaskingio#get_stream_arg()","zxutils::benchmark#getset_tsframe()","zxlib::gfx::clip::macros#gfx_clip_calculate_8bit_dx_dy_exx()","zxlib::gfx::clip::macros#gfx_clip_compute_outcode()","zxlib::gfx::clip::macros#gfx_clip_coords_to_draw_line_args()","zxlib::gfx::clip::macros#gfx_clip_dimension()","zxlib::gfx::clip::macros#gfx_clip_line()","zxlib::gfx::sprite8::macros#gfx_sprite8_calculate_coords()","zxlib::gfx::sprite8::macros#gfx_sprite8_calculate_screen_address()","zxlib::gfx::sprite8::macros#gfx_sprite8_draw()","zxlib::gfx::sprite8::macros#gfx_sprite8_flip_horizontally()","zxlib::basic::variable#head()","zxutils::musicbox::trackcommands#i()","z80::alloc#immediate?()","z80::label#immediate?()","z80::program#immediate?()","z80::program#import()","zxutils::musicbox::songcommands#import_chord()","zxutils::musicbox::songcommands#import_envelope()","z80::program#import_file()","zxutils::musicbox::songcommands#import_instrument()","zxutils::musicbox::songcommands#import_mask()","zxutils::musicbox::songcommands#import_multitrack()","zxutils::musicbox::songcommands#import_track()","z80::alloc::include?()","z80::alloc#indexable?()","z80::label#indexable?()","zxutils::aymusic#init()","zxutils::aymusicplayer#init()","zxutils::multitasking#init_multitasking()","zxutils::aybasicplayer#init_music()","z80::label#initialize()","zxutils::multitaskingio#initialize_io()","z80::utils::sort::macros#insertion_sort_bytes_max256()","zxutils::musicbox::songcommands#instrument()","zxutils::musicbox::song#instruments()","z80::mathint::macros#int()","zxlib::math::macros#integer32_to_fp()","zxutils::bigfont::macros#interlace_pixels16()","z80::program#isolate()","z80::program::condition#jr_ok?()","zxutils::multitasking::kernel_org()","zxutils::multitaskingio::kernel_org()","zxlib::sys::macros#key_pressed?()","z80::program#label()","z80::program#label?()","z80::program#label_defined?()","z80::program#label_immediate?()","z80::program#label_import()","z80::program::macros#ld16()","zxlib::basic::variable#length()","zxlib::basic::variable#limit()","zxlib::basic::variable#line()","zxlib::basic::program#line_index()","zxlib::basic::program#list()","zxutils::musicbox::commoninstrumentcommands#loop_to()","zxutils::musicbox::multitrackcommands#loop_to()","zxutils::musicbox::commoninstrumentcommands#lt()","zxutils::musicbox::multitrackcommands#lt()","zxutils::musicbox::commoninstrumentcommands#m()","zxutils::musicbox::multitrackcommands#m()","zxutils::musicbox::commoninstrumentcommands#m1()","zxutils::musicbox::commoninstrumentcommands#m2()","z80::program::macros#macro()","z80::program#macro_import()","zxlib::gfx::draw::macros#make_draw_line_subroutines()","zxutils::musicbox::commoninstrumentcommands#mark()","zxutils::musicbox::multitrackcommands#mark()","zxutils::musicbox::songcommands#mask()","zxutils::musicbox::commoninstrumentcommands#mask_ay_volume_envelope()","zxutils::musicbox::commoninstrumentcommands#mask_ay_volume_envelope_off()","zxutils::musicbox::commoninstrumentcommands#mask_noise()","zxutils::musicbox::commoninstrumentcommands#mask_noise_off()","zxutils::musicbox::commoninstrumentcommands#mask_tone()","zxutils::musicbox::commoninstrumentcommands#mask_tone_off()","z80::program::register#match16?()","zxutils::musicbox::commoninstrumentcommands#me()","z80::label::members_of_struct()","z80::stdlib::macros#memcpy()","z80::stdlib::macros#memcpy_quick()","zxutils::musicbox::commoninstrumentcommands#meo()","z80::alloc#method_missing()","z80::label::method_missing()","z80::label#method_missing()","z80::program#method_missing()","zxutils::bigfont::macros#mix_lines8_16()","zxlib::sys::macros#mmu128_select_bank()","zxlib::sys::macros#mmu128_swap_screens()","zxutils::musicbox::commoninstrumentcommands#mn()","zxutils::musicbox::commoninstrumentcommands#mno()","zxutils::musicbox::commoninstrumentcommands#mode1()","zxutils::musicbox::commoninstrumentcommands#mode2()","zxlib::sys::macros#move_basic_above_scld_screen_memory()","zxutils::musicbox::commoninstrumentcommands#mt()","zxutils::multitaskingio::macros#mtio_drain()","zxutils::multitaskingio::macros#mtio_getc()","zxutils::multitaskingio::macros#mtio_gets()","zxutils::multitaskingio::macros#mtio_putc()","zxutils::multitaskingio::macros#mtio_puts()","zxutils::multitaskingio::macros#mtio_ready?()","zxutils::multitaskingio::macros#mtio_wait()","zxutils::musicbox::commoninstrumentcommands#mto()","z80::mathint::macros#mul()","z80::mathint::macros#mul16_32()","z80::mathint::macros#mul8()","z80::mathint::macros#mul8_24()","z80::mathint::macros#mul8_c()","z80::mathint::macros#mul8_signed()","z80::mathint::macros#mul_const()","z80::mathint::macros#mul_const8_24()","z80::mathint::macros#mul_signed()","zxutils::musicbox::songcommands#multitrack()","zxutils::aymusicplayer#mute_sound()","zxutils::musicbox::commoninstrumentcommands#n()","zxutils::musicbox::commoninstrumentcommands#n0()","zxutils::musicbox::commoninstrumentcommands#n1()","z80::alloc#name=()","z80::label#name=()","z80::program::condition::names()","z80::program::register::names()","zxutils::musicbox::commoninstrumentcommands#ne()","z80::mathint::macros#neg16()","z80::mathint::macros#neg_int()","z80::utils::sincos::macros#neg_sintable256_pi_half_no_zero_lo()","zxutils::musicbox::commoninstrumentcommands#neo()","z80::alloc::new()","z80::label::new()","z80::program#new()","z80::program::condition::new()","z80::program::register::new()","z80::tap::headerbody::new()","zxlib::basic::line::new()","zxlib::basic::program::new()","zxlib::basic::tokenizer::new()","zxlib::basic::variableparseerror::new()","zxlib::basic::vars::new()","zxutils::musicbox::chord::new()","zxutils::musicbox::envelope::new()","zxutils::musicbox::mask::new()","zxutils::musicbox::multitrack::new()","zxutils::musicbox::song::new()","zxutils::musicbox::track::new()","zxlib::basic::variable::new_char_array()","z80::tap::headerbody::new_code()","zxlib::basic::variable::new_for_loop()","zxutils::multitasking::new_kernel()","zxutils::multitaskingio::new_kernel()","zxlib::basic::variable::new_number()","zxlib::basic::variable::new_number_array()","z80::tap::headerbody::new_program()","zxlib::basic::variable::new_string()","z80::tap::headerbody::new_var_array()","zxlib::basic::tokenizer#next_token()","zxlib::gfx::macros#nextline()","zxlib::gfx::macros#nextpixel()","zxlib::gfx::macros#nextrow()","zxutils::musicbox::commoninstrumentcommands#noise()","zxutils::musicbox::commoninstrumentcommands#noise_envelope_off()","zxutils::musicbox::commoninstrumentcommands#noise_off()","zxutils::musicbox::commoninstrumentcommands#noise_on()","zxutils::musicbox::commoninstrumentcommands#note_progress()","zxutils::musicbox::commoninstrumentcommands#np()","z80::program#ns()","zxlib::basic::variable#number?()","zxlib::basic::variable#number_array?()","z80::label::offset_of_()","z80::program::condition#one_of?()","z80::program::register#one_of?()","zxlib::gfx::macros#only_one_bit_set_or_zero?()","zxutils::multitaskingio#open_io()","z80::program#org()","zxutils::musicbox::commoninstrumentcommands#p()","zxutils::musicbox::multitrackcommands#p()","zxlib::math::pack_number()","zxlib::basic::tokenizer#parse_each()","z80::tap::parse_file()","z80::tap::parse_file()","zxlib::basic::parse_source()","zxlib::basic::line::parse_source_line()","z80::tap::parse_tap()","z80::tap::parse_tap()","zxutils::musicbox::commoninstrumentcommands#pause()","zxutils::musicbox::multitrackcommands#pause()","z80::program#pc()","zxutils::musicbox::trackcommands#pch()","zxlib::basic::tokenizer#peek_token()","zxutils::aymusic#play()","zxutils::musicbox::trackcommands#play()","zxutils::musicbox::trackcommands#play_chord()","zxutils::aybasicplayer#play_interval()","zxutils::aybasicplayer#play_loop()","zxlib::gfx::draw::macros#plot_pixel()","z80::alloc#pointer?()","z80::label#pointer?()","z80::program#pointer?()","z80::program::register#pointer?()","zxlib::gfx::draw::macros#prepare_args_draw_line_to()","zxlib::gfx::draw::macros#preshifted_pixel_mask_data()","zxlib::gfx::macros#prevline()","zxlib::gfx::macros#prevpixel()","zxutils::bigfont#print_char()","zxutils::bigfonthires#print_char_hires()","zxlib::math#print_fp_hl()","z80::tap::headerbody#program?()","zxlib::basic::vars::program_text_to_string()","z80::utils::sort::macros#quicksort_bytes()","zxlib::gfx::macros#rctoattr()","zxlib::gfx::macros#rctoscr()","zxutils::multitasking#rdoc_mark_find_def_fn_arg()","zxlib::sys::macros#read_arg_string()","z80::tap::read_chunk()","z80::tap::read_chunk()","z80::tap::read_data()","z80::tap::read_data()","zxlib::sys::macros#read_integer32_value()","zxlib::sys::macros#read_integer_value()","zxlib::sys::macros#read_positive_int_value()","zxlib::basic::read_source()","zxlib::basic::read_tap()","z80::program#register?()","z80::alloc#reinitialize()","zxutils::musicbox::commoninstrumentcommands#repeat()","zxutils::musicbox::multitrackcommands#repeat()","zxlib::sys::macros#report_error()","zxlib::sys::macros#report_error_unless()","z80::alloc#respond_to_missing?()","zxlib::sys::macros#restore_rom_interrupt_handler()","zxlib::sys::macros#return_with_fp()","z80::mathint::macros#rnd()","zxutils::musicbox::commoninstrumentcommands#rpt()","zxutils::musicbox::multitrackcommands#rpt()","zxutils::emu::run()","z80::tap#save_tap()","z80::tap#save_tap()","z80::tap::headerbody#save_tap()","z80::tap::headerbody#screen?()","zxlib::gfx::macros#scrtoattr()","z80::program#select()","z80::utils::sort::macros#selection_sort_bytes_max256()","zxutils::musicbox::trackcommands#set_empty_instrument()","zxutils::musicbox::trackcommands#set_instrument()","zxutils::aymusicplayer#setup()","zxlib::sys::macros#setup_custom_interrupt_handler()","z80::utils::shuffle::macros#shuffle_bytes_source_max256()","z80::mathint::macros#sign_extend()","z80::utils::sincos::macros#sincos_from_angle()","z80::utils::sincos::macros#sincos_table_descriptors()","z80::program::register#size()","zxutils::emu::spawn()","z80::program::register#split()","zxutils::multitasking#stack_space_free()","zxutils::benchmark#start()","zxutils::gallery#start()","zxutils::musicbox::commoninstrumentcommands#start_chord()","zxutils::musicbox::commoninstrumentcommands#start_noise_envelope()","zxutils::musicbox::commoninstrumentcommands#start_volume_envelope()","zxlib::basic::variable#statement()","zxlib::basic::variable#step()","zxlib::basic::variable#string?()","zxlib::basic::vars::string_to_program_text()","zxutils::musicbox::instrumentcommands#sub()","zxutils::musicbox::multitrackcommands#sub()","zxutils::musicbox::trackcommands#sub()","z80::mathint::macros#sub_from()","zxutils::musicbox::instrumentcommands#sub_instrument()","zxutils::musicbox::multitrackcommands#sub_track()","zxutils::musicbox::trackcommands#sub_track()","z80::alloc#sublabel?()","z80::label#sublabel?()","z80::alloc#sublabel_access_expression?()","z80::label#sublabel_access_expression?()","zxutils::musicbox::multitrackcommands#synchronize_channels()","zxutils::musicbox::commoninstrumentcommands#t0()","zxutils::musicbox::commoninstrumentcommands#t1()","zxutils::multitasking::macros#task?()","zxutils::multitasking::macros#task_id()","zxutils::multitasking::macros#task_stack_bytes_free()","zxutils::multitasking#task_yield()","zxutils::musicbox::trackconfigcommands#tempo()","zxutils::multitasking#terminate()","zxlib::basic::tokenizer#terminated?()","zxlib::basic::line#text()","z80::conditionalblock#then()","zxutils::musicbox::track#ticks_counter()","zxlib::basic::vars#to_a()","z80::alloc#to_aliased_name()","z80::label#to_aliased_name()","z80::alloc#to_alloc()","z80::label#to_alloc()","z80::label::to_data()","z80::program::register#to_debug()","z80::alloc#to_i()","z80::label::to_i()","z80::label#to_i()","z80::program::condition#to_i()","z80::program::register#to_i()","symbol#to_label()","z80::alloc#to_label()","z80::label#to_label()","zxutils::musicbox::song#to_module()","z80::alloc#to_name()","z80::label#to_name()","zxutils::musicbox::song#to_player_module()","zxutils::musicbox::song::songmodule#to_player_module()","zxutils::musicbox::song#to_program()","zxutils::musicbox::song::songmodule#to_program()","z80::alloc#to_s()","z80::label#to_s()","z80::tap::headerbody#to_s()","zxlib::basic::line#to_s()","zxlib::basic::program#to_s()","zxlib::basic::variable#to_s()","zxlib::basic::vars#to_s()","zxlib::basic::program#to_source()","z80::alloc#to_str()","z80::label#to_str()","z80::label::to_struct()","z80::tap#to_tap()","z80::tap#to_tap()","z80::tap::headerbody#to_tap()","z80::tap#to_tap_chunk()","z80::tap#to_tap_chunk()","zxlib::basic::program#to_tap_chunk()","zxlib::basic::variable#to_tap_chunk()","float#to_z80bin()","zxutils::musicbox::commoninstrumentcommands#tone_off()","zxutils::musicbox::commoninstrumentcommands#tone_on()","zxutils::musicbox::commoninstrumentcommands#tone_progress()","zxutils::musicbox::commoninstrumentcommands#tp()","zxutils::musicbox::songcommands#track()","z80::mathint::macros#twos_complement16_by_sgn()","z80::program#union()","zxutils::multitasking#unknown()","zxlib::math::unpack_number()","zxutils::musicbox::song#unused_item_names()","z80::program#unwrap_pointer()","z80::mathint::macros#utobcd()","z80::mathint::macros#utobcd_step()","zxutils::musicbox::commoninstrumentcommands#v()","zxutils::musicbox::commoninstrumentcommands#va()","zxutils::musicbox::song#validate_recursion_depth!()","zxlib::basic::variable#value()","zxutils::musicbox::commoninstrumentcommands#variable_volume()","zxutils::musicbox::commoninstrumentcommands#ve()","z80::utils::vecdeque::macros#vec_deque_clear()","z80::utils::vecdeque::macros#vec_deque_empty?()","z80::utils::vecdeque::macros#vec_deque_full?()","z80::utils::vecdeque::macros#vec_deque_length()","z80::utils::vecdeque::macros#vec_deque_next_back()","z80::utils::vecdeque::macros#vec_deque_next_front()","z80::utils::vecdeque::macros#vec_deque_pop_back()","z80::utils::vecdeque::macros#vec_deque_pop_front()","z80::utils::vecdeque::macros#vec_deque_push_back()","z80::utils::vecdeque::macros#vec_deque_push_front()","zxutils::musicbox::commoninstrumentcommands#veo()","zxutils::musicbox::commoninstrumentcommands#vg()","zxutils::musicbox::commoninstrumentcommands#vibrato_amplitude()","zxutils::musicbox::commoninstrumentcommands#vibrato_angle()","zxutils::musicbox::commoninstrumentcommands#vibrato_off()","zxutils::musicbox::commoninstrumentcommands#vibrato_step()","zxutils::musicbox::commoninstrumentcommands#vo()","zxutils::musicbox::commoninstrumentcommands#volume()","zxutils::musicbox::commoninstrumentcommands#volume_envelope_off()","zxutils::musicbox::commoninstrumentcommands#vs()","zxutils::musicbox::commoninstrumentcommands#vv()","zxutils::musicbox::commoninstrumentcommands#w()","zxutils::musicbox::multitrackcommands#w()","zxutils::musicbox::commoninstrumentcommands#wait()","zxutils::musicbox::multitrackcommands#wait()","zxutils::multitaskingio#wait_io()","zxutils::bigfont::macros#widen_pixels8_16()","z80::program::macros#with_saved()","z80::label::word()","z80::program#words()","zxlib::gfx::macros#xy_to_attr_addr()","zxlib::gfx::macros#xy_to_pixel_addr()","zxlib::gfx::macros#xytoscr()","zxlib::gfx::macros#ytoattr()","zxlib::gfx::macros#ytoscr()","zxlib::gfx::macros#yxtoscr()","z80::alloc#|()","z80::label#|()","z80::program::register#|()","z80::alloc#~()","z80::label#~()","","",""],"info":[["AYTest","","AYTest.html","",""],["Bench","","Bench.html","",""],["Echo","","Echo.html","",""],["Float","","Float.html","",""],["MusicTest","","MusicTest.html","",""],["Object","","Object.html","",""],["Symbol","","Symbol.html","",""],["Z80","","Z80.html","","
Include this module in your program class to turn it to a powerfull Z80 macro assembler.\n
To fully benefit …\n"],["Z80::Alloc","","Z80/Alloc.html","","
Alloc class is used internally by relocation mechanizm and lazy evaluation of labels' values. See …\n"],["Z80::CompileError","","Z80/CompileError.html","","
Error raised during program compilation (while creating instance).\n"],["Z80::ConditionalBlock","","Z80/ConditionalBlock.html","","
See Program.select.\n"],["Z80::Label","","Z80/Label.html","","
Z80 Label\n\n
myloop inc [hl]\n inc hl\n djnz myloop\n\nA label in a Z80::Program represents an address, …\n"],["Z80::MathInt","","Z80/MathInt.html","","
Z80::MathInt - integer math common routines.\n
in Z80::MathInt::Macros\n\n
require 'z80'\n\nclass Program\n include ...\n"],["Z80::MathInt::Integers","","Z80/MathInt/Integers.html","","Z80::MathInt Integers\n
This module holds integer data types created on the fly by the Macros.int macro. …\n"],["Z80::MathInt::Macros","","Z80/MathInt/Macros.html","","
Z80::MathInt Macros\n"],["Z80::Program","","Z80/Program.html","","
This module defines methods that become your program's class methods when you include the Z80 module. …\n"],["Z80::Program::Condition","","Z80/Program/Condition.html","","
Creates
jr/jp/ret/call
conditions as constants:\n\nNZ Z NC C PO PE P M\n\nAdditionally NV = PO and V = PE conditions …\n"],["Z80::Program::Macros","","Z80/Program/Macros.html","","
Z80 Macros\n
A few handy macros.\n"],["Z80::Program::Mnemonics","","Z80/Program/Mnemonics.html","","
Z80 Mnemonics\n
All Z80 instructions are created as singleton methods. They produce machine code which is …\n"],["Z80::Program::Register","","Z80/Program/Register.html","","
Z80 registers are populated as singleton methods. You must not create instances of this class directly. …\n"],["Z80::Stdlib","","Z80/Stdlib.html","","
Z80::Stdlib - Macros with commonly used memory routines.\n\n
require 'z80'\n\nclass MyLib\n include Z80\n ...\n"],["Z80::Stdlib::Macros","","Z80/Stdlib/Macros.html","","Z80::Stdlib Macros.\n"],["Z80::Syntax","","Z80/Syntax.html","","
Error raised during program parsing.\n"],["Z80::TAP","","Z80/TAP.html","","
Adds the TAP format support to your program.\n
Example:\n\n
puts Z80::TAP.parse_file("examples/calculator.tap").to_a ...\n\n"],["Z80::TAP::HeaderBody","","Z80/TAP/HeaderBody.html","","A class that represents the optional header and the single body chunk of a TAP file.\n
Instances of this …\n"],["Z80::TAP::TapeError","","Z80/TAP/TapeError.html","",""],["Z80::TZX","","Z80/TZX.html","","
Adds the TAP format support to your program.\n
Example:\n\n
puts Z80::TAP.parse_file("examples/calculator.tap").to_a ...\n\n"],["Z80::Utils","","Z80/Utils.html","",""],["Z80::Utils::Shuffle","","Z80/Utils/Shuffle.html","","Z80::Utils::Shuffle\n
A routine to efficiently shuffle bytes in Z80::Utils::Shuffle::Macros\n"],["Z80::Utils::Shuffle::Macros","","Z80/Utils/Shuffle/Macros.html","","
Z80::Utils::Shuffle Macros\n\n
for i from 0 to length − 1 do\n j ← random integer such that 0 ≤ j ≤ i\n ...\n"],["Z80::Utils::SinCos","","Z80/Utils/SinCos.html","","Z80::Utils::SinCos - integer sinus-cosinus table routines.\n
in Z80::Utils::SinCos::Macros\n
Structs\n"],["Z80::Utils::SinCos::Macros","","Z80/Utils/SinCos/Macros.html","","
Z80::Utils::SinCos Macros\n"],["Z80::Utils::SinCos::SinCos","","Z80/Utils/SinCos/SinCos.html","","
A Z80::Utils::SinCos table entry struct.\n
Consists of two
words
:\n
sin
\n"],["Z80::Utils::SinCos::SinCosTable","","Z80/Utils/SinCos/SinCosTable.html","","Z80::Utils::SinCos table struct.\n
The angle [0,256) being used in this table translates to radians in the …\n"],["Z80::Utils::Sort","","Z80/Utils/Sort.html","","
Z80::Utils::Sort\n
Implementations of various sorting algorithms in Z80::Utils::Sort::Macros\n
Example performance …\n"],["Z80::Utils::Sort::Macros","","Z80/Utils/Sort/Macros.html","","
Z80::Utils::Sort macros\n"],["Z80::Utils::VecDeque","","Z80/Utils/VecDeque.html","","
Z80::Utils::VecDeque.\n
Routines for appending, removing and iterating byte elements from double ended queues. …\n"],["Z80::Utils::VecDeque::Macros","","Z80/Utils/VecDeque/Macros.html","","
Z80::Utils::VecDeque macros.\n
Macros producing routines for working with double ended queues.\n"],["Z80::Utils::VecDeque::VecDequeState","","Z80/Utils/VecDeque/VecDequeState.html","","
A descriptor type for a double ended queue.\n"],["ZX7","","ZX7.html","","
ZX7 decoding routines.\n
in ZX7::Macros\n
Example:\n"],["ZX7::Macros","","ZX7/Macros.html","",""],["ZXLib","","ZXLib.html","",""],["ZXLib::AYSound","","ZXLib/AYSound.html","","
ZXLib::AYSound.\n
Macros to help program the AY-3-8910/8912 sound chipsets.\n
Sources — \n
www.armory.com/~rstevew/Public/SoundSynth/Novelty/AY3-8910/start.html …\n"],["ZXLib::AYSound::EnvelopeControl","","ZXLib/AYSound/EnvelopeControl.html","","
Bit masks and bit numbers for the AY-3-891x envelope shape control register
Registers::ENV_SHAPE
.\n"],["ZXLib::AYSound::Macros","","ZXLib/AYSound/Macros.html","","ZXLib::AYSound macros.\n
The AYSound Macros provide functions to create note tables and some basic routines …\n"],["ZXLib::AYSound::Mixer","","ZXLib/AYSound/Mixer.html","","
Bit masks and bit numbers for the AY-3-891x mixer register
Registers::MIXER
.\n"],["ZXLib::AYSound::Registers","","ZXLib/AYSound/Registers.html","","Constants with the names of the AY-3-8910 registers.\n"],["ZXLib::AYSound::VolumeControl","","ZXLib/AYSound/VolumeControl.html","","
Bit masks and bit numbers for the AY-3-891x volume registers:
VOLUME_A
,VOLUME_B
,VOLUME_C
.\n"],["ZXLib::Basic","","ZXLib/Basic.html","","A module with ZX Spectrum's BASIC program utilities.\n
SE BASIC extensions are supported.\n
See: ZXLib::Basic::Program …\n"],["ZXLib::Basic::Line","","ZXLib/Basic/Line.html","","
Represents a ZX Basic program line.\n
The original program line without line number, its length and a terminating …\n"],["ZXLib::Basic::Program","","ZXLib/Basic/Program.html","","
Represents a ZX Basic program in a semi-parsed form.\n"],["ZXLib::Basic::Tokenizer","","ZXLib/Basic/Tokenizer.html","","
A Basic program tokenizer.\n"],["ZXLib::Basic::Tokenizer::Patterns","","ZXLib/Basic/Tokenizer/Patterns.html","",""],["ZXLib::Basic::Variable","","ZXLib/Basic/Variable.html","","
Represents a ZX Spectrum's Basic variable with various methods to create new variables, inspect their …\n"],["ZXLib::Basic::VariableParseError","","ZXLib/Basic/VariableParseError.html","",""],["ZXLib::Basic::VariableTypes","","ZXLib/Basic/VariableTypes.html","",""],["ZXLib::Basic::Vars","","ZXLib/Basic/Vars.html","","
A container class for collecting and inspecting ZX-Spectrum's Basic program variables.\n
Variables can …\n"],["ZXLib::Gfx","","ZXLib/Gfx.html","","
A module with Z80 Macros for common ZX Spectrum graphics tasks\n
Example:\n\n
require 'zxlib/gfx'\n\nclass Program ...\n"],["ZXLib::Gfx::Bobs","","ZXLib/Gfx/Bobs.html","","Bitmap objects related routines.\n
See also ZXLib::Gfx::Bobs::Macros.\n\n
░░░░░░░░████░░░░░░████░░░░░░░░░░\n░░░░░░████████░░██████████░░░░░░ ...\n\n"],["ZXLib::Gfx::Bobs::Macros","","ZXLib/Gfx/Bobs/Macros.html","","ZXLib::Gfx::Bobs macros.\n
Bobs::Macros require:\n\n
macro_import MathInt\nmacro_import Gfx\n\n"],["ZXLib::Gfx::Clip","","ZXLib/Gfx/Clip.html","","A module with Z80 Macros for clipping lines.\n"],["ZXLib::Gfx::Clip::Macros","","ZXLib/Gfx/Clip/Macros.html","","
ZXLib::Gfx::Clip Macros for clipping lines to viewport rectangles.\n
Macros.gfx_clip_line.\n
Macros.gfx_clip_coords_to_draw_line_args …\n"],["ZXLib::Gfx::Clip::Outcode","","ZXLib/Gfx/Clip/Outcode.html","",""],["ZXLib::Gfx::Draw","","ZXLib/Gfx/Draw.html","","
A module with Z80 Macros for drawing lines and plotting pixels on the ZX Spectrum.\n
Example:\n\n
require 'zxlib/gfx/draw' ...\n\n"],["ZXLib::Gfx::Draw::Constants","","ZXLib/Gfx/Draw/Constants.html","",""],["ZXLib::Gfx::Draw::Macros","","ZXLib/Gfx/Draw/Macros.html","","ZXLib::Gfx::Draw macros for drawing lines and plotting pixels on the ZX Spectrum.\n
Coordinate system and …\n"],["ZXLib::Gfx::Macros","","ZXLib/Gfx/Macros.html","","
ZXLib::Gfx macros.\n"],["ZXLib::Gfx::Sprite8","","ZXLib/Gfx/Sprite8.html","","
Sprite drawing routines.\n
See also ZXLib::Gfx::Sprite8::Macros.\n
By default all drawing method routines are …\n"],["ZXLib::Gfx::Sprite8::Macros","","ZXLib/Gfx/Sprite8/Macros.html","","
ZXLib::Gfx::Sprite8 Macros.\n
Sprite8::Macros require:\n\n
macro_import MathInt\nmacro_import Gfx\n\n"],["ZXLib::Math","","ZXLib/Math.html","","A module with the ZXReal struct definition and ZX-Spectrum FP helpers.\n
Macros can be used to convert 32-bit …\n"],["ZXLib::Math::Macros","","ZXLib/Math/Macros.html","","
ZXLib::Math Macros\n
Macros require:\n\n
macro_import MathInt\n\n"],["ZXLib::Math::ZXReal","","ZXLib/Math/ZXReal.html","","A struct representing a ZX-Spectrum's FP calculator's real number data type.\n
See:\n
www.worldofspectrum.org/ZXBasicManual/zxmanchap24.html …\n"],["ZXLib::Sys","","ZXLib/Sys.html","","
A module with Z80 macros for common ZX Spectrum system tasks.\n
Contains:\n
labels for some of ZX Spectrum …\n"],["ZXLib::Sys::Coords","","ZXLib/Sys/Coords.html","","
A struct for ZX Spectrum
coords
variable.\n"],["ZXLib::Sys::Cursor","","ZXLib/Sys/Cursor.html","","A struct for various ZX Spectrum variables.\n"],["ZXLib::Sys::If1Vars","","ZXLib/Sys/If1Vars.html","","
ZX Interface 1 variables.\n"],["ZXLib::Sys::Macros","","ZXLib/Sys/Macros.html","","
ZXLib::Sys Macros\n
Some of the macros require:\n\n
require 'zxlib/math'\n# ...\n macro_import MathInt\n macro_import ...\n\n"],["ZXLib::Sys::Strms","","ZXLib/Sys/Strms.html","","A struct for ZX Spectrum
strms
variable.\n"],["ZXLib::Sys::Vars","","ZXLib/Sys/Vars.html","","ZX Spectrum Basic and System variables.\n"],["ZXLib::Sys::Vars128","","ZXLib/Sys/Vars128.html","","
ZX Spectrum 128 variables.\n"],["ZXUtils","","ZXUtils.html","",""],["ZXUtils::AYBasicPlayer","","ZXUtils/AYBasicPlayer.html","","
AY-3-8910/8912 Basic player\n
This is a wrapper over AYMusicPlayer with interfaces suitable to be used directly …\n"],["ZXUtils::AYMusic","","ZXUtils/AYMusic.html","","
The AY-3-8910/8912 music engine\n
Low-level but highly configurable music player routines and Macros. See …\n"],["ZXUtils::AYMusic::AYRegisterMirror","","ZXUtils/AYMusic/AYRegisterMirror.html","","
The AY-3-891x register mirror.\n"],["ZXUtils::AYMusic::ChannelControl","","ZXUtils/AYMusic/ChannelControl.html","","
The single channel control structure.\n"],["ZXUtils::AYMusic::ChordControl","","ZXUtils/AYMusic/ChordControl.html","","
data: loop_offset(,delay<<5|+ delta 0..31)*,0 (init: counter=1, cursor=+1, loop_at=cursor+loop_offset) …\n"],["ZXUtils::AYMusic::EnvelopeControl","","ZXUtils/AYMusic/EnvelopeControl.html","","
data: loop_offset(,counter,delta)*,0 (init: counter=1, cursor=, loop_at=cursor+loop_offset+1)\n"],["ZXUtils::AYMusic::InstrumentControl","","ZXUtils/AYMusic/InstrumentControl.html","","
The instrument track control structure\n"],["ZXUtils::AYMusic::Macros","","ZXUtils/AYMusic/Macros.html","","
AYMusic engine utilities.\n
NOTE — Some of the AYMusic Macros require Z80::MathInt::Macros and some require …\n\n"],["ZXUtils::AYMusic::MaskControl","","ZXUtils/AYMusic/MaskControl.html","","
data: loop_offset(,counter,mask)*,0 (init: counter=1, cursor=+1, loop_at=cursor+loop_offset)\n"],["ZXUtils::AYMusic::MusicControl","","ZXUtils/AYMusic/MusicControl.html","","
The main music control structure.\n
The most important is the
music_control.counter
word entry which can …\n"],["ZXUtils::AYMusic::ToneProgressControl","","ZXUtils/AYMusic/ToneProgressControl.html","","data: delta,counter,current\n"],["ZXUtils::AYMusic::TrackControl","","ZXUtils/AYMusic/TrackControl.html","","
The music track control structure\n"],["ZXUtils::AYMusic::TrackStackEntry","","ZXUtils/AYMusic/TrackStackEntry.html","","
The data type of the track stack entry.\n"],["ZXUtils::AYMusic::VibratoControl","","ZXUtils/AYMusic/VibratoControl.html","","
data: step,angle,amplitude (init: enabled:-1)\n"],["ZXUtils::AYMusicPlayer","","ZXUtils/AYMusicPlayer.html","","
AY-3-8910/8912 music player\n
The music module player based on ZXUtils::AYMusic engine.\n
ZXUtils::MusicBox …\n"],["ZXUtils::AYMusicPlayer::MusicTracks","","ZXUtils/AYMusicPlayer/MusicTracks.html","","
The struct representing music module header.\n"],["ZXUtils::AYMusicPlayer::TrackInfo","","ZXUtils/AYMusicPlayer/TrackInfo.html","","
The struct of MusicTracks.tracks_info\n"],["ZXUtils::Benchmark","","ZXUtils/Benchmark.html","","
ZXUtils::Benchmark\n
Benchmarking utilities.\n
NOTE — Currently the code must be located at 0x8000.\n"],["ZXUtils::Benchmark::Macros","","ZXUtils/Benchmark/Macros.html","","
ZXUtils::Benchmark macros.\n"],["ZXUtils::BigFont","","ZXUtils/BigFont.html","","
BigFont\n
Z80 Macros producing routines to create and display 16x15 characters from a 8x8 font (e.g: a default …\n"],["ZXUtils::BigFont::Macros","","ZXUtils/BigFont/Macros.html","","
ZXUtils::BigFont macros.\n"],["ZXUtils::BigFontHires","","ZXUtils/BigFontHires.html","","
BigFontHires\n
See also: BigFont.\n"],["ZXUtils::Emu","","ZXUtils/Emu.html","","
ZXUtils::Emu\n
Simple tools for finding and running ZX Spectrum emulator.\n
Compile your program, save to tap …\n"],["ZXUtils::Gallery","","ZXUtils/Gallery.html","","
ZXUtils::Gallery.\n
A program to load from tape and display various ZX Spectrum screen formats.\n
Supported …\n"],["ZXUtils::Gallery::Formats","","ZXUtils/Gallery/Formats.html","","
ZXUtils::Gallery Formats\n
The sizes of the supported .SCR file formats.\n"],["ZXUtils::Multitasking","","ZXUtils/Multitasking.html","","
ZXUtils::Multitasking\n
Run machine code programs (a.k.a. “tasks”) in parallel with the ZX Spectrum's …\n"],["ZXUtils::Multitasking::Macros","","ZXUtils/Multitasking/Macros.html","","
ZXUtils::Multitasking Macros for tasks.\n"],["ZXUtils::Multitasking::TaskInfo","","ZXUtils/Multitasking/TaskInfo.html","","
Task info structure. Each running task has one.\n"],["ZXUtils::Multitasking::TaskVars","","ZXUtils/Multitasking/TaskVars.html","","
Definition of
mtvars
.\n"],["ZXUtils::MultitaskingIO","","ZXUtils/MultitaskingIO.html","","ZXUtils::MultitaskingIO\n
Asynchronous communication channels between tasks running in parallel with ZX …\n"],["ZXUtils::MultitaskingIO::BufferIO","","ZXUtils/MultitaskingIO/BufferIO.html","","
I/O Buffer structure.\n"],["ZXUtils::MultitaskingIO::Macros","","ZXUtils/MultitaskingIO/Macros.html","","
ZXUtils::MultitaskingIO Macros for tasks.\n
Most of the routines created by MultitaskingIO::Macros expects …\n"],["ZXUtils::MultitaskingIO::TaskVarsIO","","ZXUtils/MultitaskingIO/TaskVarsIO.html","","
Extended Multitasking::TaskVars structure.\n"],["ZXUtils::MusicBox","","ZXUtils/MusicBox.html","","
MusicBox\n
MusicBox is a Ruby Domain Specific Language designed to create AY-3-8910/8912 music.\n
The music …\n"],["ZXUtils::MusicBox::AYEnvelopeDurationCommand","","ZXUtils/MusicBox/AYEnvelopeDurationCommand.html","",""],["ZXUtils::MusicBox::AYEnvelopeShapeCommand","","ZXUtils/MusicBox/AYEnvelopeShapeCommand.html","",""],["ZXUtils::MusicBox::Chord","","ZXUtils/MusicBox/Chord.html","","
MusicBox Chord\n
Instances of this class represent the chords applicable to the played note's tone. …\n"],["ZXUtils::MusicBox::ChordCommand","","ZXUtils/MusicBox/ChordCommand.html","",""],["ZXUtils::MusicBox::Command","","ZXUtils/MusicBox/Command.html","",""],["ZXUtils::MusicBox::Command::Headers","","ZXUtils/MusicBox/Command/Headers.html","",""],["ZXUtils::MusicBox::Command::MetaCommand","","ZXUtils/MusicBox/Command/MetaCommand.html","",""],["ZXUtils::MusicBox::CommonInstrumentCommands","","ZXUtils/MusicBox/CommonInstrumentCommands.html","","
MusicBox CommonInstrumentCommands\n
Common Instrument and Track commands.\n"],["ZXUtils::MusicBox::EmptyTrack","","ZXUtils/MusicBox/EmptyTrack.html","","
MusicBox EmptyTrack\n
An empty track used by the MusicBox::Song compilation. Should stay empty.\n"],["ZXUtils::MusicBox::Envelope","","ZXUtils/MusicBox/Envelope.html","","
MusicBox Envelope\n
Instances of this class represent the envelopes applicable to the volume level or the …\n"],["ZXUtils::MusicBox::EnvelopeCommand","","ZXUtils/MusicBox/EnvelopeCommand.html","",""],["ZXUtils::MusicBox::IndexCommand","","ZXUtils/MusicBox/IndexCommand.html","",""],["ZXUtils::MusicBox::Instrument","","ZXUtils/MusicBox/Instrument.html","","
MusicBox Instrument\n
An instrument consists of the ZXUtils::AYMusic commands.\n
To create a custom instrument …\n"],["ZXUtils::MusicBox::InstrumentCommand","","ZXUtils/MusicBox/InstrumentCommand.html","",""],["ZXUtils::MusicBox::InstrumentCommands","","ZXUtils/MusicBox/InstrumentCommands.html","","
MusicBox InstrumentCommands\n
Instrument only commands.\n"],["ZXUtils::MusicBox::LoopCommand","","ZXUtils/MusicBox/LoopCommand.html","",""],["ZXUtils::MusicBox::MarkCommand","","ZXUtils/MusicBox/MarkCommand.html","",""],["ZXUtils::MusicBox::Mask","","ZXUtils/MusicBox/Mask.html","","
MusicBox Mask\n
Instances of this class represent the bit masks applicable to the channel's mixer tone …\n"],["ZXUtils::MusicBox::MaskCommand","","ZXUtils/MusicBox/MaskCommand.html","",""],["ZXUtils::MusicBox::Multitrack","","ZXUtils/MusicBox/Multitrack.html","","
MusicBox Multitrack\n
A multi-track consists of the three tracks, each one for each of the AY-3-891x channels. …\n"],["ZXUtils::MusicBox::MultitrackCommands","","ZXUtils/MusicBox/MultitrackCommands.html","","
MusicBox MultitrackCommands\n
Commands for multi-tracks.\n
For the other available commands see: TrackConfigCommands …\n"],["ZXUtils::MusicBox::NoisePitchCommand","","ZXUtils/MusicBox/NoisePitchCommand.html","",""],["ZXUtils::MusicBox::NoteChordCommand","","ZXUtils/MusicBox/NoteChordCommand.html","",""],["ZXUtils::MusicBox::NoteCommand","","ZXUtils/MusicBox/NoteCommand.html","",""],["ZXUtils::MusicBox::NoteProgressPeriodCommand","","ZXUtils/MusicBox/NoteProgressPeriodCommand.html","",""],["ZXUtils::MusicBox::PauseCommand","","ZXUtils/MusicBox/PauseCommand.html","",""],["ZXUtils::MusicBox::Resolver","","ZXUtils/MusicBox/Resolver.html","",""],["ZXUtils::MusicBox::Song","","ZXUtils/MusicBox/Song.html","","
MusicBox Song\n
A song is a special Multitrack that also organizes other multi-tracks, sub-tracks, instruments, …\n"],["ZXUtils::MusicBox::Song::PlayerModule","","ZXUtils/MusicBox/Song/PlayerModule.html","","
MusicBox Song PlayerModule\n
A PlayerModule instance contains a compiled Song in the form suitable for the …\n"],["ZXUtils::MusicBox::Song::SongModule","","ZXUtils/MusicBox/Song/SongModule.html","","
MusicBox Song SongModule\n
An instance of this class can be created by calling Song.to_module instance method …\n"],["ZXUtils::MusicBox::SongCommands","","ZXUtils/MusicBox/SongCommands.html","","
MusicBox SongCommands\n
Commands for a Song.\n
For the other available commands see: MultitrackCommands and …\n"],["ZXUtils::MusicBox::SubInstrumentCommand","","ZXUtils/MusicBox/SubInstrumentCommand.html","",""],["ZXUtils::MusicBox::SubTrackCommand","","ZXUtils/MusicBox/SubTrackCommand.html","",""],["ZXUtils::MusicBox::ToneProgressCommand","","ZXUtils/MusicBox/ToneProgressCommand.html","",""],["ZXUtils::MusicBox::Track","","ZXUtils/MusicBox/Track.html","","
MusicBox Track\n
A track consists of the ZXUtils::AYMusic commands.\n
To create a custom track you need to …\n"],["ZXUtils::MusicBox::TrackCommands","","ZXUtils/MusicBox/TrackCommands.html","","
MusicBox TrackCommands\n
Track commands for playing notes, setting instruments and yielding to other tracks. …\n"],["ZXUtils::MusicBox::TrackConfigCommands","","ZXUtils/MusicBox/TrackConfigCommands.html","","
MusicBox TrackConfigCommands\n
Common Track and Multitrack commands for changing track configuration options. …\n"],["ZXUtils::MusicBox::VibratoAmplitudeCommand","","ZXUtils/MusicBox/VibratoAmplitudeCommand.html","",""],["ZXUtils::MusicBox::VibratoAngleCommand","","ZXUtils/MusicBox/VibratoAngleCommand.html","",""],["ZXUtils::MusicBox::VibratoStepCommand","","ZXUtils/MusicBox/VibratoStepCommand.html","",""],["ZXUtils::MusicBox::VolumeLevelCommand","","ZXUtils/MusicBox/VolumeLevelCommand.html","",""],["%","Z80::Alloc","Z80/Alloc.html#method-i-25","(other)",""],["%","Z80::Label","Z80/Label.html#method-i-25","(other)","
Returns a lazy evaluated remainder of a label divided by an
other
label or an integer.\n"],["&","Z80::Alloc","Z80/Alloc.html#method-i-26","(other)",""],["&","Z80::Label","Z80/Label.html#method-i-26","(m)","Returns a lazy evaluated bitwise “and” of a label and an
other
label or an integer.\n"],["*","Z80::Alloc","Z80/Alloc.html#method-i-2A","(other)",""],["*","Z80::Label","Z80/Label.html#method-i-2A","(other)","Returns a lazy evaluated label multiplied by an
other
label or an integer.\n"],["**","Z80::Alloc","Z80/Alloc.html#method-i-2A-2A","(m)",""],["**","Z80::Label","Z80/Label.html#method-i-2A-2A","(name)","Returns a member by its
name
as a separate label. This is used internally. Use Label#[] and Label#method_missing …\n"],["+","Z80::Alloc","Z80/Alloc.html#method-i-2B","(other)",""],["+","Z80::Label","Z80/Label.html#method-i-2B","(other)","Returns a lazy evaluated label offset by an
other
label or an integer.\n"],["+","Z80::Program::Register","Z80/Program/Register.html#method-i-2B","(other)","This method makes possible to write indexed expressions with
ix/iy
registers. Example:\n\nld a, [ix + 7]\n\n"],["+@","Z80::Alloc","Z80/Alloc.html#method-i-2B-40","()",""],["+@","Z80::Label","Z80/Label.html#method-i-2B-40","()","Returns a lazy evaluated size of a type of a label.\n"],["+@","Z80::Label","Z80/Label.html#method-c-2B-40","()","
Returns a lazy evaluated size of a data structure. Better for debugging than Label.to_i.\n"],["-","Z80::Alloc","Z80/Alloc.html#method-i-2D","(other)",""],["-","Z80::Label","Z80/Label.html#method-i-2D","(other)","
Returns a lazy evaluated label negatively offset by an
other
label or an integer.\n"],["-","Z80::Program::Register","Z80/Program/Register.html#method-i-2D","(other)","This method makes possible to write indexed expressions with
ix/iy
registers. Example:\n\nld a, [ix - 7]\n\n"],["-@","Z80::Alloc","Z80/Alloc.html#method-i-2D-40","()",""],["-@","Z80::Label","Z80/Label.html#method-i-2D-40","()","Returns a lazy evaluated negative label.\n"],["/","Z80::Alloc","Z80/Alloc.html#method-i-2F","(other)",""],["/","Z80::Label","Z80/Label.html#method-i-2F","(other)","
Returns a lazy evaluated quotient of a label divided by an
other
label or an integer.\n"],["<<","Z80::Alloc","Z80/Alloc.html#method-i-3C-3C","(other)",""],["<<","Z80::Label","Z80/Label.html#method-i-3C-3C","(m)","Returns a lazy evaluated label left shifted by a number of bits as an
other
label or an integer.\n"],["<<","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-3C-3C","(var)","Adds a Basic::Variable to self.\n"],["==","Z80::Alloc","Z80/Alloc.html#method-i-3D-3D","(other)",""],[">>","Z80::Alloc","Z80/Alloc.html#method-i-3E-3E","(other)",""],[">>","Z80::Label","Z80/Label.html#method-i-3E-3E","(m)","
Returns a lazy evaluated label right shifted by a number of bits as an
other
label or an integer.\n"],["[]","Z80","Z80.html#method-i-5B-5D","(name)","Returns an evaluated label's value by its name.\n"],["[]","Z80::Alloc","Z80/Alloc.html#method-i-5B-5D","(index = nil)",""],["[]","Z80::Label","Z80/Label.html#method-i-5B-5D","(index = nil)","
Returns a lazy evaluated label offset by
index
.\nIf
index
isnil
, returns a pointer label instead.\nIf
index
…\n"],["[]","Z80::Program","Z80/Program.html#method-i-5B-5D","(label)","Method used internally by mnemonics to make a pointer of a label or a Register.\n
Example:\n\n
ld hl, [foo] ...\n\n"],["[]","Z80::Program::Condition","Z80/Program/Condition.html#method-c-5B-5D","(index)",""],["[]","Z80::Program::Register","Z80/Program/Register.html#method-c-5B-5D","(index)",""],["[]","Z80::Program::Register","Z80/Program/Register.html#method-i-5B-5D","(index = 0, sgn = :+)","Method used internally by mnemonics to make pointer of a label or register. Example:\n\n
ld b, [ix + 2]\nld ...\n\n"],["[]","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-5B-5D","(index)","Returns a Basic::Line at
index
or an array of lines ifRange
is given.\n"],["[]","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-5B-5D","(*at)","Returns a selected portion of an array variable according to the provided dimension indices.\n
The indices …\n"],["[]","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-5B-5D","(index)","
Returns a Basic::Variable at
index
or an array of variables ifRange
is given.\n"],["^","Z80::Alloc","Z80/Alloc.html#method-i-5E","(other)",""],["^","Z80::Label","Z80/Label.html#method-i-5E","(m)","Returns a lazy evaluated bitwise “exclusive or” of a label and an
other
label or an integer. …\n"],["add24_16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-add24_16","(th8=c, tl16=hl, tt=de, signed:true)","Creates a routine that adds a 16-bit integer in
tt
to a 24-bit integer inth8
|tl16
. Returns the result …\n"],["add_code","Z80","Z80.html#method-c-add_code","(prg, data, type = 1, mnemo = nil, *mpar)","Method used by Program instructions was placed here to not pollute program namespace anymore.\n"],["add_reloc","Z80","Z80.html#method-c-add_reloc","(prg, label, size, offset = 0, from = nil)","
Method used by Program instructions was placed here to not pollute program namespace anymore.\n"],["adda_to","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-adda_to","(th, tl)","
Creates a routine that adds an 8-bit accumulator value to a 16-bit
th
|tl
register pair.\n
th
— A target MSB …\n"],["addr","Z80::Program","Z80/Program.html#method-i-addr","(address, type = 1, align: 1, offset: 0)","Returns an unnamed, immediate label at an absolute
address
of the optionaltype
.\n
type
can be an integer …\n"],["address?","Z80::Program","Z80/Program.html#method-i-address-3F","(arg)","A convenient method for macros to check if an argument is a non-register address (direct or a pointer). …\n"],["alias?","Z80::Alloc","Z80/Alloc.html#method-i-alias-3F","()","
This label can be the only dummy sublabel of another label and as such may exist in both members and …\n"],["alias?","Z80::Label","Z80/Label.html#method-i-alias-3F","()","
Checks if a label is an address label (lazy alias).\n"],["alias_label","Z80::Program","Z80/Program.html#method-i-alias_label","(address, align: 1, offset: 0)","
Returns an alias of a label or an expression.\n
The
address
must be a label or a label expression.\nThe returned …\n"],["all_ch","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-all_ch","(&block)",""],["all_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-all_channels","(&block)","
Creates a track fragments with the same commands for all the channels.\n
Provide a block with commands suitable …\n"],["api","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-api","","
ZX Basic API\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["array?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-array-3F","()","
true
if this chunk represents a number or character array\n"],["array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-array-3F","()","
true
if variable is a number or character array\n"],["as","Z80::Program","Z80/Program.html#method-i-as","(address, align: 1, offset: 0)",""],["ay_expand_notes","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_expand_notes","(notes=hl, octaves:8, half_tones:12)","Creates a routine for expanding the note to AY-3-891x tone period table to a higher number of octaves. …\n"],["ay_expand_notes_faster","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_expand_notes_faster","(notes=hl, octaves:8, half_tones:12, save_sp:true, disable_intr:true, enable_intr:true)","
Creates a routine for expanding the note to AY-3-891x tone period table to a higher number of octaves. …\n"],["ay_get_register_value","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_register_value","(regn=a, regv=e, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that reads a specific AY-3-891x register's value.\n
regn
— A AY-3-891x register index …\n\n"],["ay_get_set_env_shape","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_set_env_shape","(sinp=a, sout=sinp, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that gets the AY-3-891x envelope shape's value applies a block of code and sets …\n"],["ay_get_set_mixer","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_get_set_mixer","(vinp=a, vout=vinp, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that gets the AY-3-891x mixer's value applies a block of code and sets the mixer …\n"],["ay_hz2tp","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_hz2tp","(hz, clock_hz:AYSound::CLOCK_HZ)","
Converts a frequency given in Hz to AY-3-891x tone period value.\n
Options:\n
clock_hz
— AY-3-891x clock frequency …\n"],["ay_init","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_init","(t:e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets volume of all AY-3-891x sound channels to 0, disables noise on all channels …\n"],["ay_io_load_const_reg_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_load_const_reg_bc","(io_ay=self.io_ay)","
Creates a routine that loads a constant 8-bit part of the AY-3-891x I/O addresses into
b
orc
register. …\n"],["ay_io_swap2inp_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2inp_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
input
addresses intob
orc
register. …\n"],["ay_io_swap2out_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2out_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
output
addresses intob
orc
register. …\n"],["ay_io_swap2sel_bc","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_io_swap2sel_bc","(io_ay=self.io_ay)","Creates a routine that loads a specific 8-bit part of the AY-3-891x
select
addresses intob
orc
register. …\n"],["ay_music_finished?","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_finished-3F","(music_control, compact:false, subroutine:false, branch_not_finished: :eoc)","Creates a routine that detects if the currently played music is finished.\n
As a result
ZF
is 1 if all of …\n"],["ay_music_init","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_init","(track_a, track_b, track_c, index_table:nil, init:self.init, play:self.play, music_control:self.music_control, disable_intr:true, enable_intr:true)","Creates a routine that initializes music tracks and optionally the index lookup table.\n
Provide addresses …\n"],["ay_music_note_to_fine_tone_cursor_table_factory","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_note_to_fine_tone_cursor_table_factory","(note_to_cursor, play:nil, num_notes:AYMusic::MAX_NOTES_COUNT, subroutine:false)","
Creates a routine that builds a note-to-fine tones index table.\n
note_to_cursor
— An address of the table …\n\n"],["ay_music_preserve_io_ports_state","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_preserve_io_ports_state","(music_control, play, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that reads a state of the I/O ports from the AY-3-891x chip and stores it into the …\n"],["ay_music_tone_progress_table_factory","ZXUtils::AYMusic::Macros","ZXUtils/AYMusic/Macros.html#method-i-ay_music_tone_progress_table_factory","(fine_tones, hz: 440, clock_hz: ZXLib::AYSound::CLOCK_HZ, subroutine:false)","
Creates a routine that builds a fine tones to AY-3-891x tone periods table.\n
fine_tones
— An address of the …\n\n"],["ay_set_envelope_duration","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_envelope_duration","(dh=d, dl=e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x envelope duration.\n
dh
— The most significant 8 bits of the 16-bit …\n\n"],["ay_set_noise_pitch","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_noise_pitch","(pitch=e, pitch_8bit:false, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x noise pitch.\n
pitch
— A pitch level or an 8-bit register except …\n\n\n"],["ay_set_register_value","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_register_value","(regn=a, regv=e, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that writes a value to a specific AY-3-891x register.\n
If the block is given, the code …\n"],["ay_set_tone_period","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_tone_period","(ch=a, tph:d, tpl:e, bc_const_loaded:false, io_ay:self.io_ay)","
Creates a routine that sets a AY-3-891x channel's tone period.\n
ch
— A channel number 0..2 as an integer, …\n\n"],["ay_set_volume","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_set_volume","(ch=a, vol=e, vol_8bit:false, bc_const_loaded:false, io_ay:self.io_ay)","Creates a routine that sets a AY-3-891x channel's volume level.\n
ch
— A channel number 0..2 as an integer, …\n\n"],["ay_tone_periods","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-ay_tone_periods","(min_octave:0, max_octave:7, notes_hz:self.equal_tempered_scale_notes_hz, clock_hz:AYSound::CLOCK_HZ)","Returns a tone period array for the AY-3-891x chip.\n
Options:\n
min_octave
— A minimal octave number, 0-based. …\n"],["bcdtoa","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-bcdtoa","(buffer=hl, size=b, skip_leading0:false, preserve_in:nil, &block)","Creates a routine that reads BCD digits from the memory buffer, one at a time, into the accumulator. …\n"],["bench","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-bench","","
Benchmarks the tested routine. Provide a
routine
address and acounter
. Returns a number of seconds (multiplied …\n"],["bit8?","Z80::Program::Register","Z80/Program/Register.html#method-i-bit8-3F","()",""],["bobs_copy_attrs","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_attrs","(attrs=hl, rows=a, cols=c, target:de, scraddr:nil, subroutine:false)","Creates a routine that copies bitmap attributes to the screen as a rectangle object.\n
attrs
— An address …\n\n"],["bobs_copy_attrs_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_attrs_fast","(attrs, rows=a, cols=32, target:hl, disable_intr:true, enable_intr:true, save_sp:true, check_oos:false, subroutine:false)","Creates a routine that copies bitmap attributes to the screen as a rectangle object using unrolled POP …\n"],["bobs_copy_pixels","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_pixels","(bitmap=hl, lines=a, cols=c, target:de, scraddr:nil, subroutine:false)","
Creates a routine that copies bitmap pixels to the ink/paper screen as a rectangle object.\n
bitmap
— An address …\n\n"],["bobs_copy_pixels_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_copy_pixels_fast","(bitmap, lines=c, cols=32, target:hl, disable_intr:true, enable_intr:true, save_sp:true, scraddr:nil, subroutine:false)","Creates a routine that copies bitmap pixels to the ink/paper screen as a rectangle object using unrolled …\n"],["bobs_draw_pixels_fast","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast","(bitmap, lines=a, cols=2, target:hl, bshift:b, mode: :set, skip_cols: nil, lclip: false, rclip: false, no0shift: false, tx:ix, disable_intr:true, enable_intr:true, save_sp:true, scraddr:nil, jump_table:nil, subroutine:false)","
Creates a routine that draws bitmap pixels to the ink/paper screen as a rectangle object using unrolled …\n"],["bobs_draw_pixels_fast_jump_table","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast_jump_table","(draw_pixels_fast_label)","
Creates a jump table for the Macros#bobs_draw_pixels_fast routine.\n
Provide a label (or a symbol) referencing …\n"],["bobs_draw_pixels_fast_routines","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_draw_pixels_fast_routines","(next_row, cols, mode: :set, skip_cols: nil, lclip: false, rclip: false, no0shift: nil, merge: false, jump_eoc: true)","
Creates specialized routines for Macros#bobs_draw_pixels_fast that can be used externally via jump table. …\n"],["bobs_rshift_bitmap_pixels_7times","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_rshift_bitmap_pixels_7times","(bitmap=hl, lines=c, cols=a, target:de)","
Creates a routine that renders 7 bitmap textures by shifting 7 times each source bitmap lines by 1 bit …\n"],["bobs_rshift_bitmap_pixels_once","ZXLib::Gfx::Bobs::Macros","ZXLib/Gfx/Bobs/Macros.html#method-i-bobs_rshift_bitmap_pixels_once","(bitmap=hl, lines=c, cols=a, target:de)","
Creates a routine that renders a bitmap texture by shifting each source bitmap lines by 1 bit to the …\n"],["byte","Z80::Label","Z80/Label.html#method-c-byte","(size = 1)","
A data structure's field type.\n"],["bytes","Z80::Program","Z80/Program.html#method-i-bytes","(*args)","
Returns an unnamed label and allocates
count
bytes with Program.data. Optionally you can provide values …\n"],["bytesize","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-bytesize","()","Returns original size of this variable in bytes.\n"],["bytesize","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-i-bytesize","()","
Returns the size in bytes of the track's compiled body.\n"],["byteslice","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-byteslice","(*at)","
Returns a selected portion of an array variable according to provided dimension indices as raw bytes. …\n"],["calculate_benchmark_tstates","ZXUtils::Benchmark::Macros","ZXUtils/Benchmark/Macros.html#method-i-calculate_benchmark_tstates","(counter, tsframe, frames, idle, adjustment)","
Returns the benchmark result.\n
Calculates: (frames*(tsframe - 102) + tsframe - (idle*512 + signed adjustment)) …\n"],["ce","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ce","(chord_name)",""],["ceo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ceo","()",""],["ch_a","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_a","(&block)","
Creates a track fragment for the A channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["ch_b","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_b","(&block)","
Creates a track fragment for the B channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["ch_c","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-ch_c","(&block)","
Creates a track fragment for the C channel.\n
Provide a block with commands suitable for MusicBox::Track …\n"],["chan_exists","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-chan_exists","(name = nil, output: de, input: nil, chan_name: 'U', buffer: 23296)","
Looks for a ZX Spectrum CHAN entry determined by
output
,input
and achan_name
.\noutput — output routine …\n\n"],["channel","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-channel","(ch_name, &block)","
Creates a track fragment for the given
channel_name
.\nProvide a block with commands suitable for MusicBox::Track …\n"],["channel_name_to_index","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-c-channel_name_to_index","(channel)","
Returns a channel index: 0 to 2 for the given
channel
name.\nA
channel
can be an integer: 0 to 2 or one …\n"],["channel_track","ZXUtils::MusicBox::Multitrack","ZXUtils/MusicBox/Multitrack.html#method-i-channel_track","(channel)","Returns an instance of the compiled track for the given
channel
. Achannel
can be an integer: 0 to 2 …\n"],["char_array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-char_array-3F","()","
true
if variable is a character array\n"],["char_ptr_from_code","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-char_ptr_from_code","(chars, code=a, tt:de)","Calculates the address of the first byte of a character. The calculated address will be available in …\n"],["chord","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-chord","(name, *args)","
Creates a chord with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Chord.new …\n"],["chord_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-chord_off","()","Turns off, if any, a chord applied to the played note at the current channel.\n"],["clear!","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-clear-21","()","
Clears all variables.\n"],["clear_attrs_region_fast","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-clear_attrs_region_fast","(address=hl, rows=a, cols=2, value=0, disable_intr:true, enable_intr:true, save_sp:true, addr_mode: :optimal, unroll_rows:false, scraddr:nil, subroutine:false)","
Creates a routine that clears a rectangle on screen attributes using unrolled PUSH instructions.\n
NOTE … — "],["clear_screen_region_fast","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-clear_screen_region_fast","(address=hl, lines=c, cols=2, value=0, disable_intr:true, enable_intr:true, save_sp:true, addr_mode: :compat, scraddr:nil, subroutine:false)","
Creates a routine that clears a rectangle on an ink/paper screen using unrolled PUSH instructions.\n
NOTE … — "],["clrmem","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem","(dest=hl, size=bc, value=0)","
Clears memory at
dest
using LDIR instruction.\nT-states: ~ 21/cleared byte.\n
Modifies:
bc
,de
,hl
, optionally …\n"],["clrmem8","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem8","(dest=hl, size=b, value=0, rr:hl)","Clears max 256 bytes of memory at
dest
. Slower (does not use LDIR/LDDR) but involves less registers. …\n"],["clrmem_fastest","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem_fastest","(address=hl, chunks_count=b, chunk_size=2, value=0, tt:hl, disable_intr:true, enable_intr:true, save_sp:true)","Clears a memory area using unrolled PUSH with a tight loop.\n
NOTE — Interrupts should be disabled during …\n\n"],["clrmem_quick","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-clrmem_quick","(dest=hl, size=1, value=0, rr:hl)","
Clears memory at
dest
in a faster way using unrolled instructions.\nT-states: ~ 13/cleared byte.\n
Modifies: …\n"],["cmp_i16n","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i16n","(th, tl, value, lt:nil, gt:nil, eq:nil, jump_rel:false)","
Compares a bitwise concatenated pair of 8-bit values
th
|tl
with avalue
as twos complement signed 16-bit …\n"],["cmp_i16r","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i16r","(th, tl, sh, sl, lt:nil, gt:nil, eq:nil, jump_rel:false)","Compares a bitwise concatenated pair of 8-bit values
th
|tl
with another pairsh
|sl
as twos complement …\n"],["cmp_i8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-cmp_i8","(va, vb, lt:nil, gt:nil, eq:nil, jump_rel:false)","Compares
va
withvb
as twos complement signed 8-bit integers.\nProvide
va
andvb
as an 8-bit registers, …\n"],["code","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-code","()","Returns the raw byte representation of the whole ZX Basic program as a binary string.\n"],["code","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-code","()","
Returns a portion of data after the header.\n"],["code?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-code-3F","()","
true
if this chunk represents a code\n"],["compress","ZX7","ZX7.html#method-c-compress","(data)","ZX7.compress(data) -> data (zx7 compressed)\n"],["copy_shadow_attrs_region","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_attrs_region","(address=de, rows=a, cols=c, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, subroutine:false)","
Creates a routine that copies a rectangle of screen attributes from or to a shadow screen.\n
address
— An …\n\n"],["copy_shadow_attrs_region_quick","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_attrs_region_quick","(address=de, rows=b, cols=32, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, size_limit_opt:false, subroutine:false)","Creates a routine that copies a rectangle of screen attributes from or to a shadow screen using unrolled …\n"],["copy_shadow_screen_region","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_screen_region","(address=de, lines=a, cols=c, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, subroutine:false)","
Creates a routine that copies a rectangle of an ink/paper screen from or to a shadow screen.\n
address
— "],["copy_shadow_screen_region_quick","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-copy_shadow_screen_region_quick","(address=de, lines=c, cols=32, tgtaddr:0x4000, srcaddr:0x6000, check_edge:true, break_oos:true, size_limit_opt:false, subroutine:false)","Creates a routine that copies a rectangle of an ink/paper screen from or to a shadow screen using unrolled …\n"],["cp16n","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16n","(th, tl, value, jr_msb_c: nil, jr_msb_nz: :eoc)","
Compares a pair of registers
th
|tl
with avalue
as unsigned 16-bit integers.\nProvide
value
as an integer …\n"],["cp16r","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16r","(th, tl, sh, sl, jr_msb_c: nil, jr_msb_nz: :eoc)","Compares a pair of registers
th
|tl
with another pairsh
|sl
as unsigned 16-bit integers.\n\nCF, ZF = (th|tl ...\n"],["cp16rr","Z80::Program::Macros","Z80/Program/Macros.html#method-i-cp16rr","(tt, ss, jr_msb_c: nil, jr_msb_nz: :eoc)","Compares a pair of 16-bit registers
tt
withss
as unsigned integers.\nA sugar for:\n\n
cp16r(th,tl, sh,sl, ...)\n"],["create_chan_and_open","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-create_chan_and_open","(name = nil, output:, input: nil, strm_no: 4, chan_name: 'U')","Creates a ZX Spectrum CHAN entry and opens it as a stream #N.\n
output — a routine address or a 16bit register …\n\n"],["create_sincos_from_sintable","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-create_sincos_from_sintable","(sincos, sintable:hl)","
Creates a subroutine that generates a full SinCosTable from a quarter sinus table obtainable from #neg_sintable256_pi_half_no_zero_lo …\n"],["cursor_key_pressed?","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-cursor_key_pressed-3F","(t:b, io:self.io)","
Test for cursor keys being pressed.\n
Options:\n
t
— A temporary 8-bit register.\n"],["data","Z80::Program","Z80/Program.html#method-i-data","(type = 1, size = nil, *args)","Returns an unnamed, relative label and adds provided data to the Program.code at Program.pc.\n
The
type
…\n"],["db","Z80::Program","Z80/Program.html#method-i-db","(*args)","Returns an unnamed label and adds the provided integers to Program.code as bytes.\n
See: Program.data.\n"],["dc!","Z80::Program","Z80/Program.html#method-i-dc-21","(text=''.freeze)",""],["debug","Z80","Z80.html#method-i-debug","()","
Creates a debugger view from an instance of a Z80::Program. Returns an array of strings.\n
Example debugger …\n"],["debug_comment","Z80::Program","Z80/Program.html#method-i-debug_comment","(text=''.freeze)","
Appends user comment to the debug listing.\n
The comment will be visible as text in the listing at the current …\n"],["define_label","Z80::Program","Z80/Program.html#method-i-define_label","(name, label=nil)","
Defines a label with the given name in the current namespace's context. Returns a named label.\n
A …\n"],["direct_address?","Z80::Program","Z80/Program.html#method-i-direct_address-3F","(arg)","
A convenient method for macros to check if an argument is a non-register direct address (not a pointer). …\n"],["direct_label?","Z80::Program","Z80/Program.html#method-i-direct_label-3F","(arg)","
A convenient method for macros to check if an argument is a direct label (not a pointer).\n
Returns
true
…\n"],["disable_ay_volume_ctrl","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-disable_ay_volume_ctrl","()","Turns off the AY-3-891x automatic volume envelope control of the current channel.\n"],["divmod","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod","(k, m, clrrem:true, check0:true, check1:true, modulo:false, optimize: :time)","
Creates a routine that performs an euclidean division of unsigned:
k
/m
. Returns a quotient ink
and …\n"],["divmod16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod16","(x=ixl, check0:true, check1:true, modulo:false, quick8:true)","Creates a routine that performs an euclidean division of unsigned 16-bit:
hl
/de
. Returns a quotient …\n"],["divmod24_8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod24_8","(kh, km, kl, m, check0:true, check1:true, modulo:false, optimize: :time)","Creates a routine that performs an euclidean division of unsigned 24-bit:
kh
|km
|kl
/ 8-bitm
. Returns …\n"],["divmod32_16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod32_16","(x:ixl, check0:true, check1:true, modulo:false, quick8:true)","Creates a routine that performs an euclidean division of unsigned 32-bit:
hl
|hl'
/de
. Returns a …\n"],["divmod32_8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod32_8","(m=c, mt:c, check0:true, check1:true, modulo:false)","Creates a routine that performs an euclidean division of unsigned 32-bit:
hl
|hl'
/m
. Returns a quotient …\n"],["divmod8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-divmod8","(m=c, check0:true, check1:true, modulo:false)","Creates a routine that performs an euclidean division of unsigned:
hl
/m
. Returns a quotient inhl
and …\n"],["draw_line","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line","(preshift_pixel, preshift_cov_lt, preshift_cov_rt, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","Creates a routine that draws an approximation to a straight line.\n
The routine only modifies ink/paper …\n"],["draw_line_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dx_gt_4dy","(preshift_cov_rt, direction: :down, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
x
distance 4 times larger than they
distance.\nInput registers: …\n"],["draw_line_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dx_gt_dy","(preshift_cov_lt, direction: :down, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
x
distance larger than they
distance.\nInput registers with …\n"],["draw_line_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_dy_gte_dx","(preshift, direction: :down_right, fx: :or, pixel_type: :pixel, scraddr:0x4000, check_oos:true, end_with: :eoc)","
Creates a routine for drawing lines with the
y
distance larger than or equal to thex
distance.\nInput …\n"],["draw_line_fx_data","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data","(preshift_pixel, preshift_cov_lt, preshift_cov_rt, fx:, pixel_type:)","
Creates data for draw_line_update routine.\n
Arguments:\n
preshift_pixel
— An address of an 8-byte aligned pixel …\n"],["draw_line_fx_data_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dx_gt_4dy","(preshift_cov_rt, fx:, pixel_type:)","Creates data for draw_line_update_dx_gt_4dy routine.\n
Arguments:\n
preshift_cov_rt
— An address of an 8-byte …\n"],["draw_line_fx_data_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dx_gt_dy","(preshift_cov_lt, fx:, pixel_type:nil)","Creates data for draw_line_update_dx_gt_dy routine.\n
Arguments:\n
preshift_cov_lt
— An address of an 8-byte …\n"],["draw_line_fx_data_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_dy_gte_dx","(preshift, fx:, pixel_type:nil)","Creates data for draw_line_update_dy_gte_dx routine.\n
Arguments:\n
preshift
— An address of an 8-byte aligned …\n"],["draw_line_fx_data_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_fx_data_vertical","(preshift, fx:)","Creates data for draw_line_update_vertical routine.\n
Arguments:\n
preshift
— An address of an 8-byte aligned …\n"],["draw_line_update","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update","(target, fx_only:false)","Creates a routine that modifies the function of the draw_line code in place.\n
target
— Provide a label returned …\n\n"],["draw_line_update_dx_gt_4dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dx_gt_4dy","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dx_gt_4dy code in place.\n
target
— Provide …\n\n"],["draw_line_update_dx_gt_dy","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dx_gt_dy","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dx_gt_dy code in place.\n
target
— Provide a …\n\n"],["draw_line_update_dy_gte_dx","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_dy_gte_dx","(target, no_preshift:false, fx_only:false)","Creates a routine that modifies the function of the draw_line_dy_gte_dx code in place.\n
target
— Provide …\n\n"],["draw_line_update_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_update_vertical","(target, no_preshift:false)","Creates a routine that modifies the function of the draw_line_vertical code in place.\n
target
— Provide a …\n\n"],["draw_line_vertical","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-draw_line_vertical","(preshift, direction: :down, fx: :or, scraddr:0x4000, check_oos:true, end_with: :eoc)","Creates a routine for drawing vertical lines.\n
Input registers with
preshift
data:\n
hl
: the screen memory …\n"],["draw_sprite8","ZXLib::Gfx::Sprite8","ZXLib/Gfx/Sprite8.html#method-i-draw_sprite8","","Draws a sprite using one of the selected drawing methods with an arbitrary pixel height and width.\n
Pixel …\n"],["dummy","Z80::Label","Z80/Label.html#method-c-dummy","(name = nil)","
Creates a dummy label. Should not be used directly in programs. This is called by Program.method_missing …\n"],["dummy?","Z80::Alloc","Z80/Alloc.html#method-i-dummy-3F","()",""],["dummy?","Z80::Label","Z80/Label.html#method-i-dummy-3F","()","
Checks if a label is not yet given value and type (in-the-future a.k.a. a
dummy
label).\n"],["dup","Z80::Alloc","Z80/Alloc.html#method-i-dup","()",""],["dw","Z80::Program","Z80/Program.html#method-i-dw","(*args)","Returns an unnamed label and adds the provided integers to Program.code as words.\n
See: Program.data.\n"],["dzx7_agilercs","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_agilercs","(name=nil)","
“Agile” integrated RCS+ZX7 decoder by Einar Saukas (150 bytes)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_mega","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_mega","(name=nil)","ZX7 decoder by Einar Saukas “Mega” version (244 bytes, 30% faster)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_smartrcs","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_smartrcs","(name=nil)","“Smart” integrated RCS+ZX7 decoder by Einar Saukas (110 bytes)\n
Parameters:\n\n
HL: source address ...\n"],["dzx7_standard","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_standard","(name = nil)","ZX7 decoder by Einar Saukas, Antonio Villena & Metalbrain “Standard” version (69 bytes …\n"],["dzx7_turbo","ZX7::Macros","ZX7/Macros.html#method-i-dzx7_turbo","(name = nil)","
ZX7 decoder by Einar Saukas & Urusergi “Turbo” version (88 bytes, 25% faster)\n
Parameters: …\n"],["each_var","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-each_var","(&block)","
Returns an Enumerator of every Basic::Variable found in self.\n"],["ei","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-ei","()",""],["else","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-else","(&block)","
Evaluates a block in an anonymous namespace if the condition evaluates to
false
. Returns an instance …\n"],["else_select","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-else_select","(*args, &test)","Evaluates additional condition if the previous condition evaluates to
false
. Returns an instance of …\n"],["enable_ay_volume_ctrl","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-enable_ay_volume_ctrl","()","Enables the AY-3-891x automatic volume envelope control of the current channel.\n"],["enlarge_char8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-enlarge_char8_16","(compact:true, over:false, scraddr:0x4000, assume_chars_aligned:true, hires:nil)","
Outputs an enlarged 8x8 character with anti-aliasing into the screen memory.\n
The register
hl
should hold …\n"],["envd","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envd","(duration)",""],["envdur","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envdur","(duration)",""],["envelope","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-envelope","(name, *args)","Creates an envelope with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Envelope.new …\n"],["envelope_duration","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envelope_duration","(duration)","Sets the AY-3-891x automatic volume envelope duration: 1 to 65535.\n"],["envelope_shape","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envelope_shape","(shape)","
Sets the shape of the AY-3-891x automatic volume envelope: 0 to 15. You may use ZXLib::AYSound::EnvelopeControl …\n"],["envs","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envs","(shape)",""],["envsh","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-envsh","(shape)",""],["equal_tempered_scale_notes_hz","ZXLib::AYSound::Macros","ZXLib/AYSound/Macros.html#method-i-equal_tempered_scale_notes_hz","(hz:440, n0:0, steps:12)","
Returns an array of equal tempered scale frequencies from a given base frequency.\n
See — pages.mtu.edu/~suits/NoteFreqCalcs.html …\n\n"],["estimate_tstates_per_interrupt","ZXUtils::Benchmark::Macros","ZXUtils/Benchmark/Macros.html#method-i-estimate_tstates_per_interrupt","(stack_end, interrup_vec, forward, tsframe, idle)","
Estimates the number of T-States between interrupts.\n"],["export","Z80::Program","Z80/Program.html#method-i-export","(label)","
Marks
label_name
as exportable. Programs may import labels from another programs with Program.import …\n"],["expression?","Z80::Alloc","Z80/Alloc.html#method-i-expression-3F","()",""],["expression?","Z80::Label","Z80/Label.html#method-i-expression-3F","()","Checks if a label is an expression.\n"],["find_channel","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_channel","","
Looks for a channel name.\n
Input:\n
a
— A channel name as an upper-case letter code.\n"],["find_channel_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_channel_arg","","Looks for a channel name from a FN string argument.\n
NOTE — This routine must never be called from a task! …\n\n"],["find_def_fn_args","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-find_def_fn_args","(argnum=b, subroutine:true, not_found:nil, cf_on_direct:false, ¬_found_blk)","
Gets a DEF FN argument value address.\n
Requires:
macro_import MathInt
.\n
argnum
— 1-based argument index (0 …\n"],["find_emulator","ZXUtils::Emu","ZXUtils/Emu.html#method-c-find_emulator","()","Searches for an installed ZX Spectrum emulator program in the system. Returns a path to the executable …\n"],["find_input_handle","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_input_handle","","
Looks for an input handle for tasks.\n
Provide a channel name as an upper-case letter code in accumulator. …\n"],["find_io_handles","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_io_handles","","
Looks for I/O handles.\n
Provide a channel name as an upper-case letter code in accumulator.\n
On success returns …\n"],["find_output_handle","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-find_output_handle","","
Looks for an output handle for tasks.\n
Provide a channel name as an upper-case letter code in accumulator. …\n"],["find_record","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-find_record","(th=h, tl=l)","
Search for a record that matches a large block of memory.\n
+th|tl'+ — address of the last byte to search …\n\n"],["first_octave_note","ZXUtils::MusicBox::TrackConfigCommands","ZXUtils/MusicBox/TrackConfigCommands.html#method-i-first_octave_note","(note=nil)","
Gets or establishes which music
note
:a
to:g!
begins an octave. By default the first music note in an …\n"],["fixed_volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-fixed_volume","()",""],["for_ch","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-for_ch","(*chs, &block)",""],["for_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-for_channels","(*chs, &block)","Creates a track fragments with the same commands for the channels indicated by
channel_names
.\nProvide …\n"],["for_loop?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-for_loop-3F","()","
true
if variable is a FOR loop variable\n"],["fp_to_integer32","ZXLib::Math::Macros","ZXLib/Math/Macros.html#method-i-fp_to_integer32","(m3=e, m2=d, m1=c, m0=b, exp:a)","Creates a routine that converts a ZX Basic's floating point number to a 32-bit integer.\n
m3
|m2
|m1
| … — "],["from_data","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-from_data","(data)","Creates a Basic::Variable from a ZX Spectrum's VARS raw data.\n
Provide
data
as a binary string.\n"],["from_program_data","ZXLib::Basic","ZXLib/Basic.html#method-c-from_program_data","(data, prog_length=nil, start:nil)","Creates a Basic::Program instance from a ZX Spectrum's raw binary data.\n
The binary data may be a snapshot …\n"],["from_tap_chunk","ZXLib::Basic","ZXLib/Basic.html#method-c-from_tap_chunk","(chunk)","
Creates a Basic::Program or a Basic::Variable depending on the type of the chunk. The chunk should be …\n"],["fv","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-fv","()",""],["get","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-get","(name)","
Returns the first Basic::Variable if found by the given name.\n"],["get_adjustment","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_adjustment","","
Returns a signed integer. Convert with: LET x=x-(65536 AND x>=32768)\n"],["get_counter","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-get_counter","","
Returns the current value of the music counter.\n"],["get_emulator_path","ZXUtils::Emu","ZXUtils/Emu.html#method-c-get_emulator_path","()","
Returns a path to the executable file of a ZX Spectrum emulator.\n
The path is being determined by
ZXEMU_PATH
…\n"],["get_frames","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_frames","","Returns an unsigned integer\n"],["get_idle","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-get_idle","","
Returns an unsigned integer\n"],["get_int8_norm_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-get_int8_norm_arg","","
Attempts to read an integer in the range -255..255 from a FN argument.\n
NOTE — This routine must never be …\n\n"],["get_stream_arg","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-get_stream_arg","","
Attempts to read a stream number from a FP-value addressed by
hl
.\nNOTE — This routine must never be called …\n\n"],["getset_tsframe","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-getset_tsframe","","
Returns a less significant 16-bit unsigned integer. Add 65536 to get the actual value.\n"],["gfx_clip_calculate_8bit_dx_dy_exx","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_calculate_8bit_dx_dy_exx","(xx=bc, yy=de, full_range_delta:true)","
Creates a routine that calculates
dx
anddy
. Used by: Macros.gfx_clip_line.\nNOTE — Swaps
bc
,de
,hl
registers …\n\n"],["gfx_clip_compute_outcode","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_compute_outcode","(outcode, xx=bc, yy=de, xmax:ixh, xmin:ixl, ymax:iyh, ymin:iyl, jump_rel:true, subroutine:false)","Creates a routine that computes the Outcode bits for the xx, yy point and the clipping region. Stores …\n"],["gfx_clip_coords_to_draw_line_args","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_coords_to_draw_line_args","(xx=bc, yy=de, args_type: :zxlib)","
Converts clipped 16-bit coordinates to the “draw line” routine arguments.\n
The line endpoints …\n"],["gfx_clip_dimension","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_dimension","(a0:bc, b0:de, d1:l, d2:h, full_range_delta:true)","
Creates a subroutine that clips a single dimension. Used by: Macros.gfx_clip_line.\n\n
hl = a0 + sign * d1 ...\n\n"],["gfx_clip_line","ZXLib::Gfx::Clip::Macros","ZXLib/Gfx/Clip/Macros.html#method-i-gfx_clip_line","(xx=bc, yy=de, xmax:ixh, xmin:ixl, ymax:iyh, ymin:iyl, full_range_delta:true, compact:true)","Creates a subroutine for clipping lines to the rectangle viewport area using Cohen–Sutherland algorithm. …\n"],["gfx_sprite8_calculate_coords","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_calculate_coords","(outofscreen: :ret, **nsopts, &block)","
Creates a routine that calculates coordinates and prepares registers for Sprite8.draw_sprite8.\n
hl
— An address …\n"],["gfx_sprite8_calculate_screen_address","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_calculate_screen_address","(scraddr:SCREEN_ADDRESS, subroutine:false)","Creates a routine that calculates the screen address for Sprite8.draw_sprite8.\n
The
h
andl
registers should …\n"],["gfx_sprite8_draw","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_draw","(draw_sprite8=self.draw_sprite8, scraddr:SCREEN_ADDRESS, calculate:CALCULATE_SCREEN_ADDRESS, **nsopts, &block)","Creates a subroutine that calculates the screen address before jumping to Sprite8.draw_sprite8.\n
This subroutine …\n"],["gfx_sprite8_flip_horizontally","ZXLib::Gfx::Sprite8::Macros","ZXLib/Gfx/Sprite8/Macros.html#method-i-gfx_sprite8_flip_horizontally","(subroutine:false)","
Creates a routine that flips sprite pixel data horizontally (mirrors sprites).\n
hl
— An address immediately …\n"],["head","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-head","()","Returns a header byte.\n"],["i","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-i","(instrument_name)",""],["immediate?","Z80::Alloc","Z80/Alloc.html#method-i-immediate-3F","()",""],["immediate?","Z80::Label","Z80/Label.html#method-i-immediate-3F","()","
Checks if a label is defined and absolute:
true
or not (relative or dummy): (false
). Prefer using Program.immediate? …\n"],["immediate?","Z80::Program","Z80/Program.html#method-i-immediate-3F","(arg)","A convenient method for macros to check if an argument is an immediate label or an integer.\n
Returns
true
…\n"],["import","Z80::Program","Z80/Program.html#method-i-import","(program, name=nil, labels:true, code:true, macros:false, override:{}, args:[])","Imports code, labels or macros from another
program
class. Give an optionalname
to create a namespace …\n"],["import_chord","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_chord","(name, chord)","Imports a MusicBox::Chord instance with the given
name
as a symbol or a string.\n"],["import_envelope","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_envelope","(name, envelope)","Imports a MusicBox::Envelope instance with the given
name
as a symbol or a string.\n"],["import_file","Z80::Program","Z80/Program.html#method-i-import_file","(file, type = :any, size = nil, pipe:nil, check_size:nil, data_type:nil, **args)","Imports a binary file.\n
file
— A file name.\n\n
type
— A format of a binary file (as a symbol), if:any
-> format …\n"],["import_instrument","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_instrument","(name, track)","Imports a MusicBox::Instrument class with the given
name
as a symbol or a string.\n"],["import_mask","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_mask","(name, mask)","Imports a MusicBox::Mask instance with the given
name
as a symbol or a string.\n"],["import_multitrack","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_multitrack","(name, multitrack)","Imports a MusicBox::Multitrack class with the given
name
as a symbol or a string.\n"],["import_track","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-import_track","(name, track)","Imports a MusicBox::Track class with the given
name
as a symbol or a string.\n"],["include?","Z80::Alloc","Z80/Alloc.html#method-c-include-3F","(alloc, label)","Return true if
label
takes part in analloc
expression.\n"],["indexable?","Z80::Alloc","Z80/Alloc.html#method-i-indexable-3F","()",""],["indexable?","Z80::Label","Z80/Label.html#method-i-indexable-3F","()","Returns
true
if a lazy evaluated label can be offset byindex
.\n"],["init","ZXUtils::AYMusic","ZXUtils/AYMusic.html#method-i-init","","Call to initialize music structures and reset counter, track and instrument cursors.\n
NOTE — Stop interrupts …\n\n"],["init","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-init","","
Initialize music module.\n
Relocates index table and sets the tracks' cursors to the initial positions. …\n"],["init_multitasking","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-init_multitasking","","
Initializes multitasking.\n
NOTE — This routine must never be called from a task!\n\n
Clears all tasks, sets global …\n"],["init_music","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-init_music","","
Initializes music track. Sets up the player.\n
To setup the player (once):\n\n
RANDOMIZE USR #{player[:init_music]}\n\n"],["initialize","Z80::Label","Z80/Label.html#method-i-initialize","(address, type = 1, reloc = nil, members = nil)",""],["initialize_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-initialize_io","","Initializes I/O and multitasking.\n
NOTE — This routine must never be called from a task!\n\n
Modifies:
af
,bc
…\n"],["insertion_sort_bytes_max256","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-insertion_sort_bytes_max256","(reverse:false, target:hl, length:b, subroutine:false, &side_effects)","Creates a routine that sorts an array of bytes using insertion sort.\n\n
i ← 0\nwhile i < length(A) - 1\n ...\n"],["instrument","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-instrument","(name, &block)","Creates an instrument with the given
name
as a symbol or a string.\nGive a block of code containing instrument …\n"],["instruments","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-instruments","()","
Returns a hash of instruments used in a song. Keys are instrument names and values are Instrument instances. …\n"],["int","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-int","(bitsize, value, byteorder: :lsb)","
Packs an integer of an arbitrary size and adds it to the Program.code at Program.pc. Returns an unnamed …\n"],["integer32_to_fp","ZXLib::Math::Macros","ZXLib/Math/Macros.html#method-i-integer32_to_fp","(m3=e, m2=d, m1=c, m0=b, sgn:a)","
Creates a routine that converts a 32-bit integer to a ZX Basic's floating point value.\n
m3
|m2
|m1
|m0
… — "],["interlace_pixels16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-interlace_pixels16","(f1, f2, unroll:true, &block)","Interlaces pixels from the
f1
andf2
registers into thea
register.\nEvaluates the given
block
after 8 …\n"],["isolate","Z80::Program","Z80/Program.html#method-i-isolate","(name = nil, **opts, &block)","Returns a relative label, as an isolated namespace, holding labels defined by the code created with …\n"],["jr_ok?","Z80::Program::Condition","Z80/Program/Condition.html#method-i-jr_ok-3F","()",""],["kernel_org","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-c-kernel_org","()","
The Multitasking kernel code start address.\n"],["kernel_org","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-c-kernel_org","()","
The MultitaskingIO kernel code start address.\n"],["key_pressed?","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-key_pressed-3F","(line_mask=0, key_mask=0x1f, io:self.io)","
Test for a key or keys being pressed.\n
line_mask
— Keyboard half-line mask, may be an 8 bit register. The …\n\n"],["label","Z80::Program","Z80/Program.html#method-i-label","(type = 1, align: nil, offset: 0)","Returns an unnamed, relative label at Program.pc of the optional
type
.\n
type
can be an integer or a data …\n"],["label?","Z80::Program","Z80/Program.html#method-i-label-3F","(arg)","A convenient method for macros to check if an argument is label-like.\n
Returns
true
for:\n\nfoo, :foo, foo[10], ...\n"],["label_defined?","Z80::Program","Z80/Program.html#method-i-label_defined-3F","(name)","True if a label with a
name
is defined in the current context.\n"],["label_immediate?","Z80::Program","Z80/Program.html#method-i-label_immediate-3F","(arg)","A convenient method for macros to check if an argument is an immediate label.\n
Returns
true
for:\n\nfoo addr ...\n\n"],["label_import","Z80::Program","Z80/Program.html#method-i-label_import","(program, name = nil, labels:true, macros:false)","Imports labels from another
program
class. Optionally imports macros.\nA sugar for:\n\n
import program, code: ...\n"],["ld16","Z80::Program::Macros","Z80/Program/Macros.html#method-i-ld16","(aa, bb)","Loads a content of the 16-bit register
bb
into the 16-bit registeraa
.\nA sugar for two 8-bit
ld
instructions. …\n"],["length","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-length","()","For strings returns the original string length, for arrays a number of dimensions.\n"],["limit","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-limit","()","
Returns the FOR loop limit value.\n"],["line","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-line","()","
Returns the FOR loop line number.\n"],["line_index","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-line_index","(line_no)","
Returns index in
lines
of a Basic line number equal or greater thanline_no
.\n"],["list","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-list","(line_no)","Returns a new Basic::Program instance with the subset of its lines according to the
line_no
argument. …\n"],["loop_to","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-loop_to","(mark_name, repeat=nil)","Loops execution from the marked point
name
. Repeatsrepeat
times. Ifrepeat
isnil
or missing loops …\n"],["loop_to","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-loop_to","(mark_name, repeat=nil)","Loops execution from the marked point
name
. Repeatsrepeat
times. Ifrepeat
isnil
or missing loops …\n"],["lt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-lt","(mark_name, repeat=nil)",""],["lt","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-lt","(mark_name, repeat=nil)",""],["m","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m","(name)",""],["m","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-m","(name)",""],["m1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m1","()",""],["m2","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-m2","()",""],["macro","Z80::Program::Macros","Z80/Program/Macros.html#method-i-macro","(name, *registers, **nsopts, &mblock)","A convenient method to create local macros.\n
Give a
name
(Symbol) to your macro, an optional list ofregisters
…\n"],["macro_import","Z80::Program","Z80/Program.html#method-i-macro_import","(program)","Imports macros from another
program
class.\nA sugar for:\n\n
import program, code: false, macros: true, labels: ...\n"],["make_draw_line_subroutines","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-make_draw_line_subroutines","(make_line:true, make_line_over:true, make_line_inversed:true, make_lines_to:true, scraddr:0x4000, check_oos:true)","A convenient method to build drawing subroutines.\n
Returns a namespace label with members including the …\n"],["mark","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mark","(name)","
Marks a point in the track and gives it a
name
as a symbol or a string. You can later use CommonInstrumentCommands.loop_to …\n"],["mark","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-mark","(name)","Marks a point in tracks and gives it a
name
as a symbol or a string. You can later use MultitrackCommands.loop_to …\n"],["mask","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-mask","(name, *args)","Creates a mask with the given
name
as a symbol or a string. Provideargs
for the MusicBox::Mask.new. …\n"],["mask_ay_volume_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_ay_volume_envelope","(mask_name)","Applies a mask defined by SongCommands.mask to the current channel's envelope bit controlling the …\n"],["mask_ay_volume_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_ay_volume_envelope_off","()","
Turns off, if any, a mask applied to the current channel's envelope bit.\n"],["mask_noise","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_noise","(mask_name)","
Applies a mask defined by SongCommands.mask to the current channel's mixer controlling the noise …\n"],["mask_noise_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_noise_off","()","
Turns off, if any, a mask applied to the current channel's mixer controlling the noise output.\n"],["mask_tone","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_tone","(mask_name)","
Applies a mask defined by SongCommands.mask to the current channel's mixer controlling the tone output. …\n"],["mask_tone_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mask_tone_off","()","
Turns off, if any, a mask applied to the current channel's mixer controlling the tone output.\n"],["match16?","Z80::Program::Register","Z80/Program/Register.html#method-i-match16-3F","(other)","
Checks if
self
can adjoin withother
:self
|other
\n"],["me","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-me","(mask_name)",""],["members_of_struct","Z80::Label","Z80/Label.html#method-c-members_of_struct","()","Returns a hash containing structure members as instances of a Member class.\n"],["memcpy","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-memcpy","(dest=de, source=hl, size=bc, reverse: nil)","
Copies
size
bytes from memory areasource
to memory areadest
.\n
dest
— A destination address as an integer, …\n"],["memcpy_quick","Z80::Stdlib::Macros","Z80/Stdlib/Macros.html#method-i-memcpy_quick","(dest=de, source=hl, size=1, reverse: nil)","Copies
size
bytes from memory areasource
to memory areadest
using unrolled LDI/LDD.\n
dest
— A destination …\n"],["meo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-meo","()",""],["method_missing","Z80::Alloc","Z80/Alloc.html#method-i-method_missing","(m)",""],["method_missing","Z80::Label","Z80/Label.html#method-c-method_missing","(m, struct=nil, count=1)","Any other method is being used as a label to a member of a data structure.\n"],["method_missing","Z80::Label","Z80/Label.html#method-i-method_missing","(m)","
Any other method will lazy evaluate as an accessor to the member label of this label.\n"],["method_missing","Z80::Program","Z80/Program.html#method-i-method_missing","(m, label = nil)","
If no singleton method
m
is defined, assumem
is a label name to define. Returns a named label.\nA
label
…\n"],["mix_lines8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-mix_lines8_16","(r=b, o:c, t1:d, t2:e)","Mixes two consecutive 8-pixel lines into the 16-pixel middle anti-aliasing line. The resulting bits from …\n"],["mmu128_select_bank","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-mmu128_select_bank","(bank:nil, screen:nil, disable_intr:true, enable_intr:true, mmu_port_in_bc:false, sys128:self.sys128)","
Selects an upper memory bank (0-7) and/or a screen memory page (0-1) to be displayed.\n
Options:\n
bank
— Selects …\n"],["mmu128_swap_screens","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-mmu128_swap_screens","(swap_bank:false, disable_intr:true, enable_intr:true, mmu_port_in_bc:false, sys128:self.sys128)","Swap displayed screens.\n
Options:\n
swap_bank
— A boolean flag indicating that the routine should additionally …\n"],["mn","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mn","(mask_name)",""],["mno","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mno","()",""],["mode1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mode1","()","Switches to play mode 1. This is the default mode. In this mode after playing a note the instrument track, …\n"],["mode2","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mode2","()","
Switches to play mode 2. In this mode after playing a note the instrument track, if set, continues executing …\n"],["move_basic_above_scld_screen_memory","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-move_basic_above_scld_screen_memory","(check_ensure:false)","
Moves Basic program and variables above the screen 1 (to 0x7B00).\n
check_ensure
— whentrue
checks if a call …\n\n\n"],["mt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mt","(mask_name)",""],["mtio_drain","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_drain","(disable_intr:true, enable_intr:true)","Drains the I/O buffer.\n
Options:\n
disable_intr
— a boolean flag indicating that the routine should disable …\n"],["mtio_getc","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_getc","(char=e, tt:bc, not_ready: :eoc, subroutine: true, preserve_hl:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Reads a single character from the I/O buffer. Arguments:\n
char
— an 8 bit register which should receive a …\n\n\n"],["mtio_gets","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_gets","(nchars=a, check_nchars_zero:true, subroutine:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Reads a string of characters from the I/O buffer.\n
Arguments:\n
nchars
— a number 1..255 or accumulator with …\n"],["mtio_putc","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_putc","(char=e, tt:bc, not_ready: :eoc, subroutine: true, preserve_hl:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Writes a single character to the I/O buffer.\n
Arguments:\n
char
— a number or an 8 bit register with the character …\n"],["mtio_puts","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_puts","(nchars=a, check_nchars_zero:true, subroutine:true, disable_intr:true, enable_intr:true, mtyield: task_yield)","Sends a string of characters to the I/O buffer.\n
Arguments:\n
nchars
— a number 1..255 or accumulator with a …\n"],["mtio_ready?","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_ready-3F","(action, nchars:nil, disable_intr:true, enable_intr:true)","Checks I/O buffer's data availability.\n
Arguments:\n
action
— a symbol:read
to get the information if the …\n"],["mtio_wait","ZXUtils::MultitaskingIO::Macros","ZXUtils/MultitaskingIO/Macros.html#method-i-mtio_wait","(action, nchars=1, disable_intr:true, enable_intr:true, mtyield:task_yield)","Waits for the I/O buffer's data availability.\n
Arguments:\n
action
— a symbol:read
to wait for the data …\n"],["mto","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-mto","()",""],["mul","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul","(k=d, m=a, tt:de, clrhl:true, signed_k:false)","Creates a routine that performs a multiplication of an 8-bit integer
k
* 8-bit unsignedm
. Returns the …\n"],["mul16_32","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul16_32","(mm=bc, tt:bc, clrhlhl:true, signed_hl:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit integer (
hl
) by an unsigned 16-bit integer …\n"],["mul8","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8","(kh=h, kl=l, m=a, tt:de, clrhl:true, double:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit integer
kh
|kl
* 8bit unsignedm
. Returns …\n"],["mul8_24","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_24","(kh=h, kl=l, m=b, t:c, tt:de, clrahl:true, k_int24: false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit unsigned integer
kh
|kl
or 24-bit integer …\n"],["mul8_c","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_c","(kh=h, kl=l, m=a, tt:de, clrhl:true)","Creates a routine that performs a multiplication of an unsigned 16-bit integer
kh
|kl
* 8-bit unsigned …\n"],["mul8_signed","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul8_signed","(kh=h, kl=l, m=c, tt:de, t:m, clrhl:true, double:false, optimize: :time)","Creates a routine that performs a multiplication of a 16-bit signed integer
kh
|kl
* 8bit signedm
. Returns …\n"],["mul_const","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_const","(k=d, m=0, tt:de, clrhl:true, signed_k:false)","Creates a routine that performs a multiplication of an 8-bit integer
k
* 8-bit unsignedm
. Returns the …\n"],["mul_const8_24","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_const8_24","(kh=h, kl=l, m=0, t:c, tt:de, clrahl:true, signed_k:false)","Creates a routine that performs a multiplication of an 16-bit integer
kh
|kl
* 8-bit unsignedm
. Returns …\n"],["mul_signed","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-mul_signed","(k=d, m=a, tt:de, clrhl:true)","Creates a routine that performs a multiplication of a signed 8-bit
k
* 8-bit signedm
.\nSee Macros.mul …\n"],["multitrack","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-multitrack","(name, &block)","
Creates a multi-track with the given
name
as a symbol or a string.\nGive a block of code containing multi-track …\n"],["mute_sound","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-mute_sound","","
Mutes sound.\n
Modifies:
af
,bc
.\n"],["n","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n","(level)",""],["n0","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n0","()",""],["n1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-n1","()",""],["name=","Z80::Alloc","Z80/Alloc.html#method-i-name-3D","(value)",""],["name=","Z80::Label","Z80/Label.html#method-i-name-3D","(value)","Gives a name to a no-named label. Should not be used directly in programs.\n"],["names","Z80::Program::Condition","Z80/Program/Condition.html#method-c-names","()",""],["names","Z80::Program::Register","Z80/Program/Register.html#method-c-names","()",""],["ne","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ne","(envelope_name)",""],["neg16","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-neg16","(sh, sl, th:sh, tl:sl)","
Creates a routine that changes the sign of a twos complement 16-bit integer in
sh
|sl
.\n
sh
— An 8-bit register …\n"],["neg_int","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-neg_int","(*regs, t:nil, t_is_zero:false)","Creates a routine that changes the sign of a twos complement integer held in any number of
regs
.\nPass …\n"],["neg_sintable256_pi_half_no_zero_lo","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-neg_sintable256_pi_half_no_zero_lo","()","
Returns an array of 63 bytes containing the first quarter sinus table, 256-based angle, negated, fractional …\n"],["neo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-neo","()",""],["new","Z80::Alloc","Z80/Alloc.html#method-c-new","(lhs, oper=nil, rhs=nil, index=[])",""],["new","Z80::Label","Z80/Label.html#method-c-new","(addr, type = 1, reloc = nil, members = nil)","
Creates an instance of a label. Do not use it directly in programs. Instead use Program.data, Program.label …\n"],["new","Z80::Program","Z80/Program.html#method-i-new","(start = 0x0000, *args, override:{})","
Compiles a program at the
start
address passing *args to initialize(). Returns a compiled instance of …\n"],["new","Z80::Program::Condition","Z80/Program/Condition.html#method-c-new","(name, opc)",""],["new","Z80::Program::Register","Z80/Program/Register.html#method-c-new","(name, opc)",""],["new","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new","(header, body)",""],["new","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-c-new","(line_no, body)",""],["new","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-c-new","(lines, vars = nil, start = nil)",""],["new","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-c-new","(text, line_index=0, line_offset=0)","Creates new instance of a Basic::Tokenizer.\n
text
must be an UTF-8 encoded,line_index
andline_offset
…\n"],["new","ZXLib::Basic::VariableParseError","ZXLib/Basic/VariableParseError.html#method-c-new","(msg=\"Not a variable\")",""],["new","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-new","(data='')","Creates an instance of Basic::Vars.\n
Optionally provide VARS data as a binary string.\n"],["new","ZXUtils::MusicBox::Chord","ZXUtils/MusicBox/Chord.html#method-c-new","(*args)","
Creates an instance of the Chord with the given tuples defining the chord.\n
counter
— For how many ticks …\n"],["new","ZXUtils::MusicBox::Envelope","ZXUtils/MusicBox/Envelope.html#method-c-new","(*args)","Creates an instance of the Envelope with the given tuples shaping the envelope.\n
counter
— How many ticks …\n"],["new","ZXUtils::MusicBox::Mask","ZXUtils/MusicBox/Mask.html#method-c-new","(*args)","Creates an instance of the Mask with the given tuples defining bits for the mask.\n
counter
— For how many …\n"],["new","ZXUtils::MusicBox::Multitrack","ZXUtils/MusicBox/Multitrack.html#method-c-new","(resolver)","Instances of the derived classes are being created internally by the MusicBox::Song compilation process. …\n"],["new","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-c-new","()","
Creates and instance of the song.\n"],["new","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-c-new","(resolver)","
Instances of the derived classes are being created internally by the MusicBox::Song compilation process. …\n"],["new_char_array","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_char_array","(name, dims, values=nil)","
Creates a character array Basic::Variable.\n
The
strings
are parsed by Vars.program_text_to_string only …\n"],["new_code","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_code","(name, code, org)","Creates a HeaderBody of the type
TYPE_CODE
.\n
name
should contain max 10 ascii characters.\n
code
should be …\n"],["new_for_loop","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_for_loop","(name, value, limit, step, line, statement)","Creates a FOR loop Basic::Variable.\n"],["new_kernel","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-c-new_kernel","(*args, **opts)","
Instantiate Multitasking kernel with the proper code address.\n"],["new_kernel","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-c-new_kernel","(*args, **opts)","
Instantiate MultitaskingIO kernel with the proper code address.\n"],["new_number","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_number","(name, num, simplified_int=true)","
Creates a numeric Basic::Variable.\n"],["new_number_array","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_number_array","(name, dims, values=nil)","
Creates a numeric array Basic::Variable.\n
dims
must be an array of dimension sizes provided as positive …\n"],["new_program","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_program","(name, code, line:nil, prog_length:nil)","Creates a HeaderBody of the type
TYPE_PROGRAM
.\n
name
should contain max 10 ascii characters.\n
code
should …\n"],["new_string","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-c-new_string","(name, string)","Creates a string Basic::Variable.\n
The
string
is parsed by Vars.program_text_to_string only if encoded …\n"],["new_var_array","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-c-new_var_array","(name, code, head)","Creates a HeaderBody of the type
TYPE_NUMBER_ARRAY
orTYPE_CHAR_ARRAY
.\n
name
should contain max 10 ascii …\n"],["next_token","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-next_token","()",""],["nextline","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextline","(ah, al, bcheck = true, scraddr:0x4000, hires:false, **nsopts, &block)","Creates a routine that advances to the next line (down) a screen address using ah|al registers. Optionally …\n"],["nextpixel","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextpixel","(al, s: a)","
Creates a routine that changes a bit shift and the pixel address for a one pixel to the right.\n
Modifies: …\n"],["nextrow","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-nextrow","(ah, al, bcheck = true, scraddr:0x4000, **nsopts, &block)","
Creates a routine that advances to the next text row (down 8 pixels) a screen address using ah|al registers. …\n"],["noise","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise","(level)","
Sets noise pitch level: 0 to 31.\n"],["noise_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_envelope_off","()","
Turns off, if any, an envelope applied to the noise pitch level.\n"],["noise_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_off","()","
Turns off the current channel's noise output.\n"],["noise_on","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-noise_on","()","
Turns on the current channel's noise output.\n"],["note_progress","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-note_progress","(period)","
Enables the smooth tone frequency progression of the notes played on the current channel.\n
period
— A number …\n\n"],["np","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-np","(period)",""],["ns","Z80::Program","Z80/Program.html#method-i-ns","(name = nil, **opts)","Returns a relative label, as a namespace, holding labels defined by the code created with
block
as sub-labels. …\n"],["number?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-number-3F","()","
true
if variable is a number variable\n"],["number_array?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-number_array-3F","()","
true
if variable is a number array\n"],["offset_of_","Z80::Label","Z80/Label.html#method-c-offset_of_","(name)","Returns a lazy evaluated, debug visible, byte offset of a struct member. Returns
nil
if self is not a …\n"],["one_of?","Z80::Program::Condition","Z80/Program/Condition.html#method-i-one_of-3F","(ary)",""],["one_of?","Z80::Program::Register","Z80/Program/Register.html#method-i-one_of-3F","(ary)",""],["only_one_bit_set_or_zero?","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-only_one_bit_set_or_zero-3F","(v)","Returns true if
v
is a 0 or a positive integer with only one bit set in its binary representation.\n"],["open_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-open_io","","ZX Basic API\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["org","Z80::Program","Z80/Program.html#method-i-org","(address = pc, pad = 0, align: 1, offset: 0)","
Returns an unnamed, relative label that points to the beginning of padded space. The space is being padded …\n"],["p","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-p","(length, *length_exts)",""],["p","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-p","(length, *length_exts)",""],["pack_number","ZXLib::Math","ZXLib/Math.html#method-c-pack_number","(num, simplified_int=true)","
Converts
num
to a ZX-Spectrum's real number encoded as a 5-byte binary string.\n
simplified_int
indicates …\n"],["parse_each","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-parse_each","(&block)",""],["parse_file","Z80::TAP","Z80/TAP.html#method-c-parse_file","(filename, &block)","Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP
file
. Optionally unwraps …\n"],["parse_file","Z80::TAP","Z80/TAP.html#method-c-parse_file","(filename, &block)","Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP
file
. Optionally unwraps …\n"],["parse_source","ZXLib::Basic","ZXLib/Basic.html#method-c-parse_source","(source, start:nil)","Creates a Basic::Program from a BASIC program text.\n
The
source
should be an UTF-8 encoded string.\nEach …\n"],["parse_source_line","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-c-parse_source_line","(line_text, last_line_no=0, line_index=0)","
Creates a Basic::Line from a provided BASIC program text.\n
See: Basic.parse_source\n"],["parse_tap","Z80::TAP","Z80/TAP.html#method-c-parse_tap","(tap, file='-', &block)","
Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP blob. Optionally unwraps …\n"],["parse_tap","Z80::TAP","Z80/TAP.html#method-c-parse_tap","(tap, file='-', &block)","
Returns an Enumerator of TAP::HeaderBody chunks representing segments of a TAP blob. Optionally unwraps …\n"],["pause","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-pause","(length, *length_exts)","
Pauses the current track execution for a
length
period. Thelength
value should be a positive integer. …\n"],["pause","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-pause","(length, *length_exts)","Pauses tracks execution for a
length
period. Thelength
value should be a positive integer.\nThe number …\n"],["pc","Z80::Program","Z80/Program.html#method-i-pc","()","
Returns the current byte offset from the beginning of the Program.code (a program counter relative to …\n"],["pch","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-pch","(*args)",""],["peek_token","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-peek_token","()",""],["play","ZXUtils::AYMusic","ZXUtils/AYMusic.html#method-i-play","","
Call this routine, in turns, to play the music.\n
NOTE — Stop interrupts (
di
) first before calling this routine. …\n\n"],["play","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-play","(note_name, octave, *pause_lengths)","To play notes on the use one of the commands:\n\n
note_name corresponding note\na A\na! A# ...\n\n"],["play_chord","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-play_chord","(*args)","Plays a chord. At least two different notes should be specified.\n"],["play_interval","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-play_interval","","
Plays single music track tick. Call repeatedly on equal intervals to play music.\n
Returns the current value …\n"],["play_loop","ZXUtils::AYBasicPlayer","ZXUtils/AYBasicPlayer.html#method-i-play_loop","","
Plays music track in a loop until any key has been pressed.\n"],["plot_pixel","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-plot_pixel","(x, y, preshift, fx: :or, with_attributes:false, color_attr:ixl, color_mask:ixh, scraddr:0x4000)","
Creates the plot pixel routine.\n
x
— The input register: horizontal-coordinate in the range [0, 255].\n\n
y
— The …\n"],["pointer?","Z80::Alloc","Z80/Alloc.html#method-i-pointer-3F","()",""],["pointer?","Z80::Label","Z80/Label.html#method-i-pointer-3F","()","Checks if label is a pointer. Prefer using Program.pointer? instead.\n"],["pointer?","Z80::Program","Z80/Program.html#method-i-pointer-3F","(arg)","
A convenient method for macros to check if an argument is pointer-like.\n
Returns
true
for:\n\n[foo], [:foo], ...\n"],["pointer?","Z80::Program::Register","Z80/Program/Register.html#method-i-pointer-3F","()",""],["prepare_args_draw_line_to","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-prepare_args_draw_line_to","()","Creates a routine that prepares arguments for the draw_line routine from two sets of coordinates.\n
Registers …\n"],["preshifted_pixel_mask_data","ZXLib::Gfx::Draw::Macros","ZXLib/Gfx/Draw/Macros.html#method-i-preshifted_pixel_mask_data","(data_type)","
Creates precalculated pixel mask data to be used with drawing routines.\n
data_type
:\n\n:pixel ...\n\n"],["prevline","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-prevline","(ah, al, bcheck = true, scraddr:0x4000, hires:false, **nsopts, &block)","Creates a routine that moves up to the previous line a screen address using ah|al registers. Optionally …\n"],["prevpixel","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-prevpixel","(al, s: a)","
Creates a routine that changes a bit shift and the pixel address for a one pixel to the left.\n
Modifies: …\n"],["print_char","ZXUtils::BigFont","ZXUtils/BigFont.html#method-i-print_char","","
ZX Spectrum's ROM compatible CHAN output routine\n
The
a
register should have the output character code …\n"],["print_char_hires","ZXUtils::BigFontHires","ZXUtils/BigFontHires.html#method-i-print_char_hires","","ZX Spectrum's ROM compatible CHAN output routine, for hi-res mode.\n
The
a
register should have the …\n"],["print_fp_hl","ZXLib::Math","ZXLib/Math.html#method-i-print_fp_hl","","Call
print_fp_hl
withhl
pointing to the 1st byte of aZXReal
number to print that number to the currently …\n"],["program?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-program-3F","()","
true
if this chunk represents a basic program\n"],["program_text_to_string","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-program_text_to_string","(text)","Converts a UTF-8 text string to a binary string encoded in a form suitable for ZX-Spectrum's Basic …\n"],["quicksort_bytes","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-quicksort_bytes","(select_pivot=:half, reverse: false, safe_args: true, pivot_reg: c, swap_same: true, &swap_items)","
Creates a subroutine that sorts an array of bytes using quicksort algorithm.\n\n
algorithm qsort(A, first, ...\n"],["rctoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-rctoattr","(row, col=0, ah:h, al:l, scraddr:0x4000)","Creates a routine that converts row and column coordinates to an address of a color attribute.\n
Modifies: …\n"],["rctoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-rctoscr","(row, col=0, ah:h, al:l, scraddr:0x4000)","
Creates a routine that converts row and column coordinates to a byte address of a top 8-pixel line.\n
Modifies: …\n"],["rdoc_mark_find_def_fn_arg","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-rdoc_mark_find_def_fn_arg","","
Looks for a first DEF FN argument value address.\n
NOTE — This routine must never be called from a task!\n\n
If …\n"],["read_arg_string","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_arg_string","(adh=d, adl=e, lenh=b, lenl=c)","
Reads a string address and its length from a ZX Basic's stringish FP-value.\n
hl
— must point to the 1st …\n"],["read_chunk","Z80::TAP","Z80/TAP.html#method-c-read_chunk","(filename, name:nil, index:nil)","Reads a TAP::HeaderBody chunk from a TAP file.\n
Pass additional
:name
argument to search for the header …\n"],["read_chunk","Z80::TAP","Z80/TAP.html#method-c-read_chunk","(filename, name:nil, index:nil)","Reads a TAP::HeaderBody chunk from a TAP file.\n
Pass additional
:name
argument to search for the header …\n"],["read_data","Z80::TAP","Z80/TAP.html#method-c-read_data","(filename, **opts)","Reads a data chunk from a TAP file. Returns a binary string.\n
Program.import_file uses this method to read …\n"],["read_data","Z80::TAP","Z80/TAP.html#method-c-read_data","(filename, **opts)","
Reads a data chunk from a TAP file. Returns a binary string.\n
Program.import_file uses this method to read …\n"],["read_integer32_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_integer32_value","(th=de, tl=bc)","
Reads a 32-bit integer from a ZX Basic's FP-value.\n
Requires:
macro_import ::ZXLib::Math
.\n
hl
— must point …\n"],["read_integer_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_integer_value","(th=d, tl=e, sgn=c, normal_negative:false, t:a)","Reads a signed integer from a ZX Basic's FP-value.\n
hl
— must point to the 1st byte of the FP-value. …\n"],["read_positive_int_value","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-read_positive_int_value","(th=d, tl=e)","Reads a positive integer from a ZX Basic's FP-value.\n
hl
— must point to the 1st byte of the FP-value. …\n"],["read_source","ZXLib::Basic","ZXLib/Basic.html#method-c-read_source","(filename, **opts)","Creates a Basic::Program from a BASIC text file.\n
See parse_source for details.\n"],["read_tap","ZXLib::Basic","ZXLib/Basic.html#method-c-read_tap","(filename, **opts)","
Creates a Basic::Program or a Basic::Variable from a TAP file.\n
See Z80::TAP.read_chunk for arguments description. …\n"],["register?","Z80::Program","Z80/Program.html#method-i-register-3F","(arg)","
A convenient method for macros to check if an argument is a Register.\n
Returns
true
for:\n\nhl, a, [hl], [iy ...\n"],["reinitialize","Z80::Alloc","Z80/Alloc.html#method-i-reinitialize","(address, type = 1, reloc = nil, members = nil)",""],["repeat","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-repeat","(times=nil, mark:nil, &block)","Repeats the execution of the commands in the given block
repeat
times. Ifrepeat
isnil
or missing repeats …\n"],["repeat","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-repeat","(times=nil, mark:nil, &block)","Repeats the execution of the commands in the given block
repeat
times. Ifrepeat
isnil
or missing repeats …\n"],["report_error","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-report_error","(error)","Returns to ZX Basic with the error report.\n
error — Error report signature as a number
0..9
or a letter …\n\n\n"],["report_error_unless","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-report_error_unless","(condition, error)","Returns to ZX Basic with the error report if condition is NOT met.\n
condition — NZ, Z, NC, C, PO, PE, P, …\n\n"],["respond_to_missing?","Z80::Alloc","Z80/Alloc.html#method-i-respond_to_missing-3F","(m, include_private=false)",""],["restore_rom_interrupt_handler","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-restore_rom_interrupt_handler","(enable_intr:true)","
Restore interrupt handler ZX Spectrum ROM's standard IM1 mode.\n
enable_intr — If
true
invokeei
instruction …\n\n\n"],["return_with_fp","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-return_with_fp","(pop_ret_address:true, rom:self.rom, restore_iy:self.vars_iy, restore_hl_alt:rom.end_calc)","Creates a routine that returns to the calling ZX-Basic's USR function an FP value.\n
When returning …\n"],["rnd","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-rnd","()","
Creates a Lehmer random number generator routine.\n
See: en.wikipedia.org/wiki/Lehmer_random_number_generator …\n"],["rpt","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-rpt","(times=nil, mark:nil, &block)",""],["rpt","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-rpt","(times=nil, mark:nil, &block)",""],["run","ZXUtils::Emu","ZXUtils/Emu.html#method-c-run","(file, *args)","
Runs a ZX Spectrum emulator program with the given
file
as its argument.\nProvides additional
args
to the …\n"],["save_tap","Z80::TAP","Z80/TAP.html#method-i-save_tap","(filename, append:false, name:nil, **opts)","Saves self in a TAP file.\n
The tap data is being generated by #to_tap_chunk.\n
filename
specifies the file …\n"],["save_tap","Z80::TAP","Z80/TAP.html#method-i-save_tap","(filename, append:false, name:nil, **opts)","Saves self in a TAP file.\n
The tap data is being generated by #to_tap_chunk.\n
filename
specifies the file …\n"],["save_tap","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-save_tap","(filename, append:false)","Saves this chunk as a TAP file.\n
filename
specifies the file name to save to. The “.tap” extension …\n"],["screen?","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-screen-3F","()","
true
if this chunk represents a screen data\n"],["scrtoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-scrtoattr","(s, o:s, scraddr:0x4000)","Creates a routine that converts a high byte of a pixel address to a high byte of an address of a relevant …\n"],["select","Z80::Program","Z80/Program.html#method-i-select","(*args, &test)","
Creates a conditional block that creates alternative code based on the lazy evaluated boolean condition. …\n"],["selection_sort_bytes_max256","Z80::Utils::Sort::Macros","Z80/Utils/Sort/Macros.html#method-i-selection_sort_bytes_max256","(reverse:false, target:hl, length:b, subroutine:false, &swap_items)","
Creates a routine that sorts an array of bytes using selection sort.\n\n
i ← length(A) - 1\nwhile i > 0\n ...\n"],["set_empty_instrument","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-set_empty_instrument","()","Turns off any instrument previously set up with TrackCommands.set_instrument on the current channel. …\n"],["set_instrument","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-set_instrument","(instrument_name)","
Sets an instrument for the current channel.\n
instrument_name
— A symbol or string with the instrument name …\n\n"],["setup","ZXUtils::AYMusicPlayer","ZXUtils/AYMusicPlayer.html#method-i-setup","","Sets up the player.\n
Call this ONCE the player code has been loaded to create required tables for the music …\n"],["setup_custom_interrupt_handler","ZXLib::Sys::Macros","ZXLib/Sys/Macros.html#method-i-setup_custom_interrupt_handler","(handler, enable_intr:true, vector_page:0x3B)","
Creates a routine that sets up custom interrupt handler using ZX Spectrum ROM's unused space as a …\n"],["shuffle_bytes_source_max256","Z80::Utils::Shuffle::Macros","Z80/Utils/Shuffle/Macros.html#method-i-shuffle_bytes_source_max256","(next_rng=nil, target:hl, length:a, source:nil, &next_rng_blk)","
Creates a routine to shuffle an array of bytes.\n
After the shuffle is performed
hl
points to the memory …\n"],["sign_extend","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-sign_extend","(th=a, tl=a)","Creates a routine that extends a sign bit from an octet indicated by
tl
into ath
.\n
th
— A target octet as …\n"],["sincos_from_angle","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-sincos_from_angle","(sincos, th=h, tl=l)","Creates code that returns an address of SinCos entry for a given 256-based angle in the register
a
.\nFor …\n"],["sincos_table_descriptors","Z80::Utils::SinCos::Macros","Z80/Utils/SinCos/Macros.html#method-i-sincos_table_descriptors","()","
Returns a SinCosTable descriptors.\n
Example:\n\n
sincos data SinCosTable, sincos_table_descriptors\n\n"],["size","Z80::Program::Register","Z80/Program/Register.html#method-i-size","()",""],["spawn","ZXUtils::Emu","ZXUtils/Emu.html#method-c-spawn","(file, *args)","Spawns a ZX Spectrum emulator program with the given
file
as its argument.\nProvides additional
args
to …\n"],["split","Z80::Program::Register","Z80/Program/Register.html#method-i-split","()","Disjoins one of 16 bit registers:
bc
de
hl
ix
oriy
to array of 8bit registers: [hi
,lo
].\nUseful when …\n"],["stack_space_free","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-stack_space_free","","
Returns (in
bc
) how many bytes are available in multitasking stack space for new tasks. Reports an OOM …\n"],["start","ZXUtils::Benchmark","ZXUtils/Benchmark.html#method-i-start","","A benchmark start entry for the machine-language.\n
Provide a
routine
and acounter
address in the memory …\n"],["start","ZXUtils::Gallery","ZXUtils/Gallery.html#method-i-start","","Gallery API.\n
This endpoint should be invoked from the ZX Basic directly via USR or indirectly via FN. …\n"],["start_chord","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_chord","(chord_name)","
Applies a chord defined by SongCommands.chord to the currently played note at the current channel.\n"],["start_noise_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_noise_envelope","(envelope_name)","
Applies an envelope defined by SongCommands.envelope to the noise pitch level.\n"],["start_volume_envelope","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-start_volume_envelope","(envelope_name)","
Applies an envelope defined by SongCommands.envelope to the volume level at the current channel.\n"],["statement","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-statement","()","
Returns the FOR loop execute statement number.\n"],["step","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-step","()","
Returns the FOR loop step value.\n"],["string?","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-string-3F","()","
true
if variable is a string variable\n"],["string_to_program_text","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-c-string_to_program_text","(data, ascii_only:false, se:false)","Converts a ZX-Spectrum's string variable data to a source UTF-8 text with special and control characters …\n"],["sub","ZXUtils::MusicBox::InstrumentCommands","ZXUtils/MusicBox/InstrumentCommands.html#method-i-sub","(instrument_name)",""],["sub","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-sub","(multitrack_name)",""],["sub","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-sub","(track_name)",""],["sub_from","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-sub_from","(s, th, tl)","
Creates a routine that subtracts an 8-bit
s
register value from a 16-bitth
|tl
register pair.\n
s
— A subtractor …\n"],["sub_instrument","ZXUtils::MusicBox::InstrumentCommands","ZXUtils/MusicBox/InstrumentCommands.html#method-i-sub_instrument","(instrument_name)","Yields execution of the instrument to another with the given
instrument_name
as a symbol or string. …\n"],["sub_track","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-sub_track","(multitrack_name)","Yields execution of the tracks to another multi-track with the given
multitrack_name
as a symbol or a …\n"],["sub_track","ZXUtils::MusicBox::TrackCommands","ZXUtils/MusicBox/TrackCommands.html#method-i-sub_track","(track_name)","Yields execution of the track to another sub-track with the given
track_name
as a symbol or string. …\n"],["sublabel?","Z80::Alloc","Z80/Alloc.html#method-i-sublabel-3F","()",""],["sublabel?","Z80::Label","Z80/Label.html#method-i-sublabel-3F","()","Checks if a label is a member of a struct or a stand-alone label.\n"],["sublabel_access_expression?","Z80::Alloc","Z80/Alloc.html#method-i-sublabel_access_expression-3F","()",""],["sublabel_access_expression?","Z80::Label","Z80/Label.html#method-i-sublabel_access_expression-3F","()","
Checks if a label is a named sub-label access expression.\n"],["synchronize_channels","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-synchronize_channels","(a:nil, b:nil, c:nil)","
Specify ranges of allowed ticks for each channel's track synchronization. If the given track is behind …\n"],["t0","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-t0","()",""],["t1","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-t1","()",""],["task?","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task-3F","(tt:hl, mtvars:self.mtvars)","
Checks if the code is being run as a task. ZF flag will be set (Z) if not a task.\n
tt
— A temporary 16bit …\n\n"],["task_id","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task_id","(oh, ol, tt:hl, check_if_system:false, disable_intr:true, enable_intr:true, mtvars:self.mtvars)","Retrieves current task's id.\n
oh
,ol
— MSB and LSB 8-bit registers for output. Together oh|ol form a …\n\n"],["task_stack_bytes_free","ZXUtils::Multitasking::Macros","ZXUtils/Multitasking/Macros.html#method-i-task_stack_bytes_free","(tt:hl, positive_size:true, disable_intr:true, enable_intr:true, mtvars:self.mtvars)","Calculates how many bytes are available yet on the task's stack below SP.\n
tt
— Temporary 16bit register, …\n\n"],["task_yield","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-task_yield","","Yields task execution.\n
Tasks or system programs should call this endpoint instead of invoking halt. This …\n"],["tempo","ZXUtils::MusicBox::TrackConfigCommands","ZXUtils/MusicBox/TrackConfigCommands.html#method-i-tempo","(ticks=nil)","
Gets or alters the tempo
ticks
.\nThe
ticks
value is being used as a base for the notes/pause duration. …\n"],["terminate","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-terminate","","Terminates the current task.\n
Tasks may jump to this endpoint directly to terminate themselves. If called …\n"],["terminated?","ZXLib::Basic::Tokenizer","ZXLib/Basic/Tokenizer.html#method-i-terminated-3F","()",""],["text","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-i-text","(escape_keywords:false, ascii_only:false, se:false)","
Creates a textual representation of this line except its number. Returns an UTF-8 encoded string.\n
See: …\n"],["then","Z80::ConditionalBlock","Z80/ConditionalBlock.html#method-i-then","(&block)","
Evaluates a block in an anonymous namespace if the condition evaluates to
true
. Returns an instance of …\n"],["ticks_counter","ZXUtils::MusicBox::Track","ZXUtils/MusicBox/Track.html#method-i-ticks_counter","(counter=0)","Adds a track's tick counter value to the given
counter
and returns it.\n"],["to_a","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-to_a","()","Returns an array of every Basic::Variable found in self.\n"],["to_aliased_name","Z80::Alloc","Z80/Alloc.html#method-i-to_aliased_name","(start)",""],["to_aliased_name","Z80::Label","Z80/Label.html#method-i-to_aliased_name","(start)","
Returns an abbreviated string information about a label for aliased targets.\n"],["to_alloc","Z80::Alloc","Z80/Alloc.html#method-i-to_alloc","()",""],["to_alloc","Z80::Label","Z80/Label.html#method-i-to_alloc","()","
Returns a lazy evaluated label as an instance of Alloc class. Use one of the lazy operators directly …\n"],["to_data","Z80::Label","Z80/Label.html#method-c-to_data","(prog, offset, data)","
Used by Program.data. Do not use it directly in programs.
data
must be aHash
,Struct
,Array
,String
…\n"],["to_debug","Z80::Program::Register","Z80/Program/Register.html#method-i-to_debug","()",""],["to_i","Z80::Alloc","Z80/Alloc.html#method-i-to_i","(start = 0, rel_to = nil, override:nil, prefix:''.freeze, size_of:false)","rel_to: an absolute address or :self used by ix/iy offset addressing\n"],["to_i","Z80::Label","Z80/Label.html#method-c-to_i","()","
Returns a size of a data structure immediately.\n"],["to_i","Z80::Label","Z80/Label.html#method-i-to_i","(start = 0, rel_to = nil, override:nil, prefix:''.freeze, size_of:false)","
Evaluates a label. This method is being used during program compilation.\n
start
— An absolute address to …\n\n"],["to_i","Z80::Program::Condition","Z80/Program/Condition.html#method-i-to_i","()",""],["to_i","Z80::Program::Register","Z80/Program/Register.html#method-i-to_i","()",""],["to_label","Symbol","Symbol.html#method-i-to_label","(program)","Allows to use Symbols instead of labels in some situations. Example:\n\n
loop1 add [hl]\n inc hl\n ...\n"],["to_label","Z80::Alloc","Z80/Alloc.html#method-i-to_label","(_)",""],["to_label","Z80::Label","Z80/Label.html#method-i-to_label","(_)","Should return a Label or an Alloc. This method's existence indicates that something quacks like a …\n"],["to_module","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_module","()","
Returns an instance of the SongModule from the compiled Song instance.\n"],["to_name","Z80::Alloc","Z80/Alloc.html#method-i-to_name","(info=false)",""],["to_name","Z80::Label","Z80/Label.html#method-i-to_name","(info=false)","
Returns this label's name as string or
nil
.\n
info
enables returning made up name if this label is anonymous. …\n"],["to_player_module","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_player_module","()","Returns an instance of the PlayerModule from the compiled Song instance.\n"],["to_player_module","ZXUtils::MusicBox::Song::SongModule","ZXUtils/MusicBox/Song/SongModule.html#method-i-to_player_module","()","
Returns an instance of the PlayerModule from the compiled SongModule instance.\n"],["to_program","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-to_program","()","
Returns an ad-hoc Z80::Program class containing the compiled Song. See SongModule.to_program.\n"],["to_program","ZXUtils::MusicBox::Song::SongModule","ZXUtils/MusicBox/Song/SongModule.html#method-i-to_program","()","
Returns an ad-hoc Z80::Program class containing the compiled SongModule.\n
The returned program exports …\n"],["to_s","Z80::Alloc","Z80/Alloc.html#method-i-to_s","()",""],["to_s","Z80::Label","Z80/Label.html#method-i-to_s","()",""],["to_s","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-to_s","()","
For humans.\n"],["to_s","ZXLib::Basic::Line","ZXLib/Basic/Line.html#method-i-to_s","(**opts)","
Creates a textual representation of this line with the line number. Returns an UTF-8 encoded string. …\n"],["to_s","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_s","(escape_keywords:false, ascii_only:false, se:false)",""],["to_s","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-to_s","()","
Returns this variable in a BASIC-like text format.\n"],["to_s","ZXLib::Basic::Vars","ZXLib/Basic/Vars.html#method-i-to_s","()","
Returns all variables in a BASIC-like text format.\n"],["to_source","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_source","(escape_keywords:false, ascii_only:false, se:false)","
Creates the textual representation of a ZX Basic::Program.\n
Returns an UTF-8 encoded string.\n
The conversion …\n"],["to_str","Z80::Alloc","Z80/Alloc.html#method-i-to_str","()",""],["to_str","Z80::Label","Z80/Label.html#method-i-to_str","()","
Returns an abbreviated string information about a label, mostly used in error messages.\n"],["to_struct","Z80::Label","Z80/Label.html#method-c-to_struct","()","
Returns a new Ruby
Struct
from members defined in a data structure.\nInstances of such a
Struct
are suitable …\n"],["to_tap","Z80::TAP","Z80/TAP.html#method-i-to_tap","(name, **opts)","Produces a TAP blob as a binary string from self.\n
A sugar for calling TAP::HeaderBody#to_tap method on …\n"],["to_tap","Z80::TAP","Z80/TAP.html#method-i-to_tap","(name, **opts)","
Produces a TAP blob as a binary string from self.\n
A sugar for calling TAP::HeaderBody#to_tap method on …\n"],["to_tap","Z80::TAP::HeaderBody","Z80/TAP/HeaderBody.html#method-i-to_tap","()","
Produces a TAP blob as a binary string from this chunk.\n"],["to_tap_chunk","Z80::TAP","Z80/TAP.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a TAP::HeaderBody chunk from self.\n
By default it uses Z80#code and the Z80#org to produce the …\n"],["to_tap_chunk","Z80::TAP","Z80/TAP.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a TAP::HeaderBody chunk from self.\n
By default it uses Z80#code and the Z80#org to produce the …\n"],["to_tap_chunk","ZXLib::Basic::Program","ZXLib/Basic/Program.html#method-i-to_tap_chunk","(name, line:nil)","
Creates a Z80::TAP::HeaderBody instance from Basic::Program#code.\n
This method is provided for the included …\n"],["to_tap_chunk","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-to_tap_chunk","(name, org:nil)","
Creates a Z80::TAP::HeaderBody instance from Basic::Variable.\n
This method is provided for the included …\n"],["to_z80bin","Float","Float.html#method-i-to_z80bin","(simplified_int=true)","
Converts
Float
to a ZX-Spectrum's real number encoded as a 5-byte binary string.\nSuitable to be used …\n"],["tone_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_off","()","
Turns off the current channel's tone output.\n"],["tone_on","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_on","()","
Turns on the current channel's tone output.\n"],["tone_progress","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tone_progress","(delta, counter)","
Enables and controls the tone frequency progression of the current channel's tone.\n
delta
— A floating …\n"],["tp","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-tp","(delta, counter)",""],["track","ZXUtils::MusicBox::SongCommands","ZXUtils/MusicBox/SongCommands.html#method-i-track","(name, &block)","Creates a track with the given
name
as a symbol or a string.\nGive a block of code containing track commands. …\n"],["twos_complement16_by_sgn","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-twos_complement16_by_sgn","(sh, sl, sgn, th:sh, tl:sl, t:sgn)","
Creates a routine that changes the sign of a twos complement 16-bit integer depending on the content …\n"],["union","Z80::Program","Z80/Program.html#method-i-union","(label, type, align: nil, offset: 0)","
Returns a new, unnamed label addressed by
label
, but of differenttype
.type
can be an integer or a data …\n"],["unknown","ZXUtils::Multitasking","ZXUtils/Multitasking.html#method-i-unknown","","Attempts to read a positive 16-bit integer from a FP-value addressed by
hl
.\nNOTE — This routine must never …\n\n"],["unpack_number","ZXLib::Math","ZXLib/Math.html#method-c-unpack_number","(bin, simplified_int_as_fixnum=true)","
Converts a ZX-Spectrum's real number as a 5-byte binary string to
Numeric
value.\n
simplified_int_as_fixnum
…\n"],["unused_item_names","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-unused_item_names","()","Returns a hash with unused item names in each of the item category.\n"],["unwrap_pointer","Z80::Program","Z80/Program.html#method-i-unwrap_pointer","(arg)","
Returns a normalized pointer label, Register or an integer. Otherwise pass-through.\n
Convenient method …\n"],["utobcd","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-utobcd","(bufend, input=de, size: 4, r: d, rr: de, byteorder: :lsb, input_end:false)","
Creates a routine that converts an unsigned binary integer of an arbitrary size to a BCD string.\n
bufend
… — "],["utobcd_step","Z80::MathInt::Macros","Z80/MathInt/Macros.html#method-i-utobcd_step","(bufend, r, buflen=1, t=c, r_in_a=false)","Creates a routine that converts an 8-bit unsigned integer to a BCD string.\n
Used by Macros.utobcd.\n
bufend
… — "],["v","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-v","(level)",""],["va","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-va","(amplitude=1.0)",""],["validate_recursion_depth!","ZXUtils::MusicBox::Song","ZXUtils/MusicBox/Song.html#method-i-validate_recursion_depth-21","(track_stack_depth=20)","Checks if maximal recursion depth of tracks and instruments is not exceeding the given threshold.\n
Provide …\n"],["value","ZXLib::Basic::Variable","ZXLib/Basic/Variable.html#method-i-value","()","
Returns a value of a variable.\n
A Float or an Integer for numbers (including FOR loops).\n
A (possibly nested) …\n"],["variable_volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-variable_volume","()",""],["ve","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-ve","(envelope_name)",""],["vec_deque_clear","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_clear","(vec_deque, vec_deque_bot:)","
Creates a routine that initializes or clears the queue.\n
vec_deque
— A label of a type VecDequeState addressing …\n\n"],["vec_deque_empty?","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_empty-3F","(vec_deque, branch_not_empty: nil, branch_relative: true, tt: de)","Creates a routine that checks if the queue is empty.\n
In case
branch_not_full
isnil
theZ
flag, if set, …\n"],["vec_deque_full?","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_full-3F","(vec_deque, branch_not_full: nil, branch_relative: true, tt: de)","Creates a routine that checks if the queue is full.\n
In case
branch_not_full
isnil
theZ
flag, if set, …\n"],["vec_deque_length","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_length","(vec_deque, vec_deque_bot:, vec_deque_top:, tt: de, subroutine: false)","Creates a routine that calculates the current length of the queue.\n
The length is made available as a 16-bit …\n"],["vec_deque_next_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_next_back","(vec_deque=nil, vec_deque_bot:, vec_deque_top:, cursor: de, subroutine: false)","
Creates a routine that reads a byte element from the back of the queue advancing the cursor backwards. …\n"],["vec_deque_next_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_next_front","(vec_deque=nil, vec_deque_bot:, vec_deque_top:, cursor: de, subroutine: false)","
Creates a routine that reads a byte element from the front of the queue advancing the cursor forward. …\n"],["vec_deque_pop_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_pop_back","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_empty: nil, branch_relative: true, tt: de)","
Creates a routine that removes a byte element from the back of the queue.\n
The removed element is provided …\n"],["vec_deque_pop_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_pop_front","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_empty: nil, branch_relative: true, tt: de)","
Creates a routine that removes a byte element from the front of the queue.\n
The removed element is provided …\n"],["vec_deque_push_back","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_push_back","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_full: nil, branch_relative: true, tt: de)","
Creates a routine that appends a byte element to the back of the queue.\n
accumulator
— Should hold a value …\n"],["vec_deque_push_front","Z80::Utils::VecDeque::Macros","Z80/Utils/VecDeque/Macros.html#method-i-vec_deque_push_front","(vec_deque, vec_deque_bot:, vec_deque_top:, branch_on_full: nil, branch_relative: true, tt: de)","Creates a routine that appends a byte element to the front of the queue.\n
accumulator
— Should hold a value …\n"],["veo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-veo","()",""],["vg","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vg","(angle=0.0)",""],["vibrato_amplitude","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_amplitude","(amplitude=1.0)","Enables the current channel's tone vibrato and sets the distortion amplitude.\n
amplitude
— A positive …\n\n"],["vibrato_angle","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_angle","(angle=0.0)","Enables the current channel's tone vibrato and sets the current phase angle.\n
angle
— A positive floating …\n\n"],["vibrato_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_off","()","Turns off, if any, the current channel's tone vibrato distortion.\n"],["vibrato_step","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vibrato_step","(step=1.0)","
Enables the current channel's tone vibrato and sets the distortion angle progression step.\n
step
— A …\n\n"],["vo","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vo","()",""],["volume","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-volume","(level)","Sets volume level for the current channel: 0 to 15.\n"],["volume_envelope_off","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-volume_envelope_off","()","
Turns off, if any, an envelope applied to the volume level at the current channel.\n"],["vs","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vs","(step=1.0)",""],["vv","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-vv","()",""],["w","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-w","(ticks)",""],["w","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-w","(ticks)",""],["wait","ZXUtils::MusicBox::CommonInstrumentCommands","ZXUtils/MusicBox/CommonInstrumentCommands.html#method-i-wait","(ticks)","
Pauses the current track execution for
ticks
number of ticks. Theticks
value should be a positive integer …\n"],["wait","ZXUtils::MusicBox::MultitrackCommands","ZXUtils/MusicBox/MultitrackCommands.html#method-i-wait","(ticks)","Pauses tracks execution for
ticks
number of ticks. Theticks
value should be a positive integer as an …\n"],["wait_io","ZXUtils::MultitaskingIO","ZXUtils/MultitaskingIO.html#method-i-wait_io","","ZX Basic API\n
This endpoint should be invoked from the ZX Basic indirectly via FN.\n\n
2 DEF FN w(s,n)=USR wait_io: ...\n"],["widen_pixels8_16","ZXUtils::BigFont::Macros","ZXUtils/BigFont/Macros.html#method-i-widen_pixels8_16","(f1, f2, unroll:true)","Each bit of the
a
register is duplicated and placed in thef1
andf2
registers.\nModifies:
af
,f1
and …\n"],["with_saved","Z80::Program::Macros","Z80/Program/Macros.html#method-i-with_saved","(*registers, **opts, &block)","Adds a code that pushes specified registers on a machine stack, code from
block
within a namespace and …\n"],["word","Z80::Label","Z80/Label.html#method-c-word","(size = 1)","A data structure's field type.\n"],["words","Z80::Program","Z80/Program.html#method-i-words","(*args)","
Returns an unnamed label and allocates
count
words with Program.data. Optionally you can provide values …\n"],["xy_to_attr_addr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xy_to_attr_addr","(x, y, scraddr:0x4000)","Calculates a constant screen attribute address from the pixel coordinates.\n"],["xy_to_pixel_addr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xy_to_pixel_addr","(x, y, scraddr:0x4000)","
Calculates a constant screen pixel byte address from the pixel coordinates.\n"],["xytoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-xytoscr","(y, x, ah:h, al:l, s:b, t:c, scraddr:0x4000)",""],["ytoattr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-ytoattr","(y, ah:h, al:l, col:0, scraddr:0x4000)","
Creates a routine that converts a vertical pixel coordinate to an address of a color attribute.\n
Modifies: …\n"],["ytoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-ytoscr","(y, ah:h, al:l, col:nil, t:c, scraddr:0x4000, hires:false)","
Creates a routine that converts a vertical pixel coordinate to a screen byte address.\n
Modifies:
af
,ah
…\n"],["yxtoscr","ZXLib::Gfx::Macros","ZXLib/Gfx/Macros.html#method-i-yxtoscr","(y, x, ah:h, al:l, s:b, t:c, scraddr:0x4000)","Creates a routine that converts y,x coordinates to a screen byte address and a bits shift.\n
Modifies: …\n"],["|","Z80::Alloc","Z80/Alloc.html#method-i-7C","(other)",""],["|","Z80::Label","Z80/Label.html#method-i-7C","(m)","
Returns a lazy evaluated bitwise “or” of a label and an
other
label or an integer.\n"],["|","Z80::Program::Register","Z80/Program/Register.html#method-i-7C","(other)","Adjoins two 8 bit registers to form one 16 bit register.\n
Useful when defining macros that may use registers …\n"],["~","Z80::Alloc","Z80/Alloc.html#method-i-~","()",""],["~","Z80::Label","Z80/Label.html#method-i-~","()","
Returns a lazy evaluated bitwise negated label.\n"],["CHANGELOG","","CHANGELOG_md.html","","
v1.1.1.pre-2\n
Z80:\n
New macro Z80::MathInt::Macros#mul8_signed.\n"],["LICENSE","","LICENSE_md.html","","
The Parity Public License 7.0.0\n
Contributor: Rafał Michalski\n
Source Code: github.com/royaltm/z80-rb\n"],["README","","README_rdoc.html","","
ruby-Z80\n
Documentation.\n
Source repository.\n"]]}} \ No newline at end of file diff --git a/js/search_index.js.gz b/js/search_index.js.gz index 002419dc07e5dd0b09fc063a8f215fd0ca466303..197c4112429b37535cc86b1dd7640470187a54c4 100644 GIT binary patch literal 36672 zcmV(?K-a$?iwFoEG?rxm19N3za${&;X>Md?crI#l0PMYMliWs
zIifTaNlnvM6lpA~Pc3yX44H|ngop&P0c1Tmy<_ufZTH*Wo!Nbw`F3_ctbfV*BOV@s z01{c1RqEN@HZ>~|5040s2oDbre_SS2RHsQbUBt7bNutNmKYx%Fv-J9d@jrjS887(r z=MR#bCas$f_CJ`U#dHCG)9IpwKl8jyFnPJIv#BalPJT(J_@lmAPRbm9ygxgJf0H~f zr|@@LE>~Herd3r|^jXZZCM%01pFn|kkd!Br6zeUMW|0*L3jR$m(yFG!X;tEnRaIV8 z$x?!l*~=nbmPIzj-&J~%)lG`c)y*u=CbD3CQ#8pn{AiLD{JTh#Sz1lX*$pR|jyCVH z(7MTTs `Oc9~9R>7UnWC=Dt#nDPGl3z_}?nn#h` z)aAOE;fxfQX lEwc9nV3jmb zy`cI@m8s$ApR1&*4YqV*bF)fSdHi!RM 2dztB#zDSB9%`MJh4^=b!*`C1+MqR-)6-{VXllq-V#&+#zQx+-B zVOrNBwMwS%yidUE6lS=oaJ^q uuQ6VvX7JOVqO+a zAZd|Rv@X)+8kYqShm?9SFDsZk8s9o^vIYj36&Df!CsCXDQ_q?xol$>af2I}vbgE)` zPQ{^2%4-^>#{Fy!;|EFtL~5DPzOs4sBEiYg88mx#7EQAG#gv3PmjaTV5 6+)@r> zW7XUcR>gX7mWBpGlv;jjXx_4E7ZA !VM(L zVYIf7NmT>)$E>&2Jd=&7y_76hdDg6FVhlQ`xX9b7Kr+OfFqzKNOQah*@$W{D%)cLs ze?OA{I)6TH|ND=DKL_o9|55%q690brW#G@_$Mol`ujHSf|Fnxg|5^N-%x0&b#wVZa zj~Gu2^HIT8nd+}3Zc6>TGCyEizvhoTOFDkW#D=KvJf1GZPa@ 1z`P;qU`Jq6@nkCU>Z@dRniZ=+DxA)N)H=;YDiPOs4h`0eboRBIEW5!ehyj== ztbl*vA3m64VwnIn)26I$+&U|m#k9Iiu?H*QsOp$_CASd4(mOc}P2rO0Ypm(N%p{T) z6HSxJ;n~3)Zj|VlOy<3;Q$!(N50mK(XafJlvy^{j%^714c_x^w)lCdcSXGD8XbE{4 zD_9J c Ys$Eg6QRi=|92;98XE9~1p!s(vH|>|L1s+I$y^ zRH)x^kt}IN(>d+r&}pGls#p*U`d&3vJg>^7rD=3@+Fx-wpYvA^m$cv5pK1}{x-1Jj zg`8JUt28YFnbk5~il1lVH *pOE>@EQxm09|f2vcJKj4%-6Q7@)#!fbT%WU-<2?1Us-LH6d9bYu@r?Z=2dOH~o zv<7p%^!ascG3TdtHsa=YXZJT61LN6bKuEmo^=hV19zU_OM^1KUZbyGqc1L&G$?As8 z3G3zZ#{T-c{ge5H*%kkJfBi+ATx4)Ro7OgEnO-FJs|IS?IQe*8pCyWJQA)F}CQMq> z1V|~|!}x>QC!q4F`2oizaK^mk)1qtXrbV7q7qlg-Grch3B%hfd>q`Hm)7|-Sk9w18 zIVwo1%@00}(?72hAmDIIORIDSlq7+kG55B3&n0R&&Twkf$$}?*jMA&BTCdcAu8~{O zKXKbaC%z7T!)Bkw@^q02aB^JOM4$}uyuh^DCc@sggup zIK4wffwbt;Xr5JY%$L(9xnwM;)N4SE;C0|eubF55DVS$Wz)Pqa?ut)LlJ$LZ%4tYX z&4#BhC7be68{ihEi*>=oe11uPfF;&{fkytat{X#2F=<+^3(a%mx5ihzN}7d9okL>^ zGx(Wle9%YHoWa $US7L zNGPWHS~EGs{~-nI_*6F`=SM7sSuz!FH0CpdORC~??I-MHl~Usw0Q?Qgnqy*wVI0?| zpM9?Loq?LqT7BzuwH4`ZwlZl|o=j84n=87T)n%^Fz+bAke8&TPmsUusO0^SOpB_(S z85_a9(9f7zA6YK;7J*JQOCi_HOr91OYD4GQQeoPxeA+OUPtP;O@giZ;(gWvrBmXSr zzbE{MNf(J7?JwE0W%4c+yR}|VoZAxKP5d9V{UHuRXH|FPnF|Bu({0xKbW7mP)cq3q za0x#7objzl8QcmcDX`?_9O>R#9ovvPUEPSEg415AE7me?7Ue8nW^m-Gg?{^_?3!>{ z8%|)kT%VktDOMt$B JnG_@|1d7`R{S{dtM-4T>d%Fm zO!yURs)WDw4GRbw&>`Sb@;NN!_ JvkZ o&KzjI-NY&SY-}z093CLnmg^HGn%7vS}J~;Ksw37eA z0+*MrxK1o|9ohq5%MZB5(OQ=qf{rN5F;QAIZAz3mnGc}%{CieTW0E3z z7ckBRf{h;%Jf+z?O6b#IAn;|mF)MMF8GiDrtbs2?0XZPU%M%NdzV%wuLhY~Bm&a+s zoTf<=_(>c#zH_${;&qYhtqt?DDgjr3b#->@c51kFr7_;)%w<_!JvGE;T@~?F)+{t5 zTB&oUQuk`}cg>ri#%rk_SI-9>-(TzBVzPx0f`4}N)AWXbZ@2yxqE1`43P@5C7Wx%W z;a1u?Zlz|TT2xd+HVmgRTo;>EAwx3vbA^7F?mg<)nZKzOY()#TQz $rk-M0))|0NkgbwrJ zPX{Df9;Wpr?jhl?IGIlIZOND2Y|OtYri-dX)f!hO(lE!=Fvo E(p|5D>OI@f88k>bWLmDK7j)VlTo|qr_LJGvY&;pIlH2oIq ze;C?^zm3Qn #GapakpZcZ+Uz(Qn z{S+t7?GoOf9Z%F%#<>&nhsbcaIraE#_f&IL)+Eo$X|Ka&WpWeO7hHc`XaN;8T$ES( zx6gvDi#4va43>9nZw>3>s=_xzW eNB3K^NWd)`sm%Le(#!75dT-;Q1{OA 7^!*yxXN8gs28(K3cNf`^dF z*Y@{cTL1ow_!p0Z3m7+QH{tVjQKK#s@@dQTgFm4#s<=4cy@D?MJ05E-UHb4;byZqR zUzgIg(k^{i&0YC99t%BQH^VAwVzSjfm7k*RR!*=!Bnu^AH%F)hQ-;wC7GFMCqbW>Z ztS+p7j>nGTuuYaK#GLxxfY55B_5&I*ip7CczehS(>lwEbduwc{>1r)IC0K*mPwHq) z=r@OwH`KDfTwQ4RSJqSt(exLVvC)fm6UO7VmaSjHg()+X9<`q?^{V|mU(Z_QYjtb+ z344f@uiZqk8Ju*fnB9>Bm956MTSn+_hcg^)?r;&U+uh0)iLCH#KcE;ZfBQ*oyi=A^ z4fm6JN{`1@eO%@#RdPRxsESc8Z|4Tv2_{-K^gwF6j#5zbc8Qzg #UoVFm`JX(OIUyk66O7pb({uDMc#{XTICIqPMtba1ki0Z7{mB`YR8})NEb7 zp_FUk(NVI)=p#_tu>%R^Thox9+};j(1|-1}!ltA*e;}CtF}ubnfda05O0YoPfiKsJ zB~(Bfw)E!r4 iRcBP$%(W5XkR z>6Zyy;zPg0hkl8V{1P9vO05ecoEzRXnB|FKoyPZ^J85?4F$YaR5pdeExg zYW1Mi#F1a*$S cj^0x6q{ZeiBA8Caja @U65z6cpv_Lmk YPee*{tI@bF5msE*5^NZb-%?wp+%wx5-*|3lYbj-`b!m z JB*|QPr`e`aJoDDY(u_dVBJ&9noa~yB*zlF zuSB(>#97acN=$cn{W!NApJlgJ-}G$jn0|+*qt6 z>nyKSI`&$w6(p-~-7E-^oN%)sL~?$rF1rd)tt)$o>JGOYG_-P!vxZiV +mP{Y=Mr7&1bacR6Wg_Uxji>5yjg5w zw;h{`E!zkRd2Rtg3M;p&zWwFWdgtg6>}+=0(Q^$R;LpR^pTfC^*vh``huHhAtgz-J)#Jxzb9L9j&F1pKn~SHdySLFR&i0i99&?5QG2V2BRtS6A>7X0N0nbKuO>k>` zz gEYoMRGn}H$`$jy&Ui1aj)}rR1w^EzVq%Mc7N1Cygjc-PA?s^^)3q9cAVtM%!EbD z-X@Pq8>eB=+Sv0wF$JYFS>edBoufVEvZ?bf)8Wg>-3!98Q->nYo^bfop}Xuke(KaO zZk21XdHn*&4r!p2^0m@k*HVG}K04KMIu(@Q8c$Rmq*oYyc9k%Gt2zr5A^E)Nr|aaZ zt5CiD9a_4^8pg {9*|C&KKDY2E~ #n^JMr$7rt_&Fiq1+{bX;te`yT*&d6 z+97`Me5ZCELalP$%?fW+n~Mz^t@I++2U2*H>;~rgb?sQjd!E17fXbWW0=6UHI_K;t zpdH0-MObciTk3E?yFG|I)V#%U)^dWoRqcSDNYVR3D4pu|7KwdBDn-pbzq?&>LFt3H z )MK*S7E!eJ%_^G8SY8u z`yCD)f?;38ehb=TxN%XIdt*GY6=wLb6B0XpJ1 zl B;;ayL)if(I~;Mllk2 MEaZIVi>)cTR{s%PBG zhYyjU)A@jEoAo|#GL@gUP}YDw>N~ODzHY$b{q{h@FPFh Tn!A zUiSlo3k_?%jlFG8>5hWI%_9B&5ANmwauV)w+^dn*Til*+ZiE5Biw82?8eLHa0x&v@ z4jXD$*n(}Ad9%IvzG=PuwVf;O* XEFK=y$1*%AAm6Sczak(X{d(Ce>>Gz#757cSI}nXt*-Fxz1< zIv)+JyT7d}?s mi`UCD9$AWXJ6g zTdB01ef1i=IEbJjeQ7?LI_d=O=YgEAQT7#+i1gzAV!VSrH(JS7$Bd)zv~|T>Hh62% zf72;}bzbm2X2WNddPA}}cRL%OC45lHs4b2ZydA=&YuATEyLi25#d!&iO9X%E$&Uql zJRI|v+t=uHQA6YIk3iG0{-rQ!o1V0T*lbn5eVg=SIqZd^;S8)GLgfssVdLlwtRVHR zht+T+@N84bhR+#T%Zc5yMV;*%a-#lhQ%N+n)w JHF**<7|8dXJ)FsDVIn=iyq0tm@PN4#u)_uNbDJ z6W~g6fF{_LbFy9q?HU!dP%x~{VqSc#U^)4i)XKi;e~Q{rS;X2BJn~ ?zbwe7yL&*{rs1>3T+q6r(f=s4h07P@o&GxxsDMA|M73X#7`7F4E}>3BJa!9 zS1;JQFaoZtj`)TaWkqxY_m}8P*h|3ne5KI-<&pZ1rg>7=QBy|v6cc3){!F4(d6iap z%tz2lM6(=0xpWC^Om+Cj0$S4$-Jbb98PkY(&LW`(ZX)vJOwKZ*Ws35!?ENx=y&mPs` cb{&4S; zzyF7b7`OT`I!{x-TTeOY+H)28M)gjnx}Bt?s7f;I-E57b+DKtFno=$9!RTrM03vez zg=I2|dNfTR9lEU>nb0>XyqoEPo8$HZ2lAR*J>=IN2kdt$I-G( d>xvkk?*ilR-$vtp{t{=BK|B3DKK z^v5Dn|JwroVDQ7C&weT14+ZZa25@@>$o-18%oARdxG9r}=1EN {jo`;} ThPI!xjYI}olh((bT=(A`~)N(=L~i7%&M>22%)kt1V! zS@ )sz{r;z(O)1I^ zEcX4=VdVxEd;Mx)x#t7R4J-CCNP1@aFoEU&{qLj4(d$=qaMI7`a$dR?gue&$YUtPl zX6X~*o2OS1KGxsxPOA^YO^EoRek(dF(2&mJwiMIC*N3TEYgKCK0IWMyWy#ZqxCq)N zhtb A%&tQbt8g+8O;vue# zZS~|iGVH8)dGlR1;bT|RBWMy6f=9-=GBWj-9;bIxUp0c4?WK0EW6Eks^gW!zLseY( zc3{4J^4bD~509yx5y?&?$cZ?dT~x1EsC gFD#*s=6&~Ue&Vk6XngDWYW&$DR;BZD(ZsrN;s zGZN|hj0?eDYr6W@K4+Xhb{{t`n8>?6!6t~Z2z8^PW9&FThD3k;Z~s?x63t3J4S$LL z`d|MCoH@k|is?&Cy#~gENW*dT*Z= pU)XKeFO!U=) l)TK z{f$UdvE$ II5;QB< zyozTq(*T#mqG6oqrn~T>^Ecu~7qoXjD4;GEeC5K Se>g|45u)IcO7goci#u}$bYPL@D|0DAO7P?l2cI0A{r$=D5&Ux+ zk!K2EPqS5>HfpqArpvF+Ntp`hBK(d%T+Whu@edK@UR_-sCKX;Q58 fTjEV``^dszk7m`Aj&%I7=*hL zWZ#2((5db0zPHq0PPaSp5?IA(zAlv11m;-@8_;5!&jTKQjj~75j HRL;ER0LWSU%_KUeu=lv5kYp1NPAib|cQ={S;ovhOUdHLCKzgB9HB z`4OhN-G3wAX|VTH&U6=bRqgfyCgmc-`@77hal?+`51y}mII(MeEx@TvBCT7FM@Cnl z-G>Cx?cjq#f6wVfs!o^L0o_bzbaM|)FI@k%0(`q+ljYC3+n7 NxB%RZbE`OQQfV5&CFJ{fBnr9kIJ<}^ww%$j{EkeT`npK_CtNZmD zCqxQq0)4k-hGF3?K8$sPqwI~4!T?$qDLniVSnQP&bs=q u8!3ZB+i#{91MrK6|N=d9+ZSq_ kwEbtEePxk{T5x=pDi3Gf`V0$?G!m;cJfK@V3IX zzy3e}XUBj4P5ifQuKmwSpl;ET|JLzee{Q%_ca@oSAU-s~eY~6j;Ba#iVx$(}t>vfE zrR~5MM}F)cJXhPd0K?vl*Qa^5^6`mj+w6HLzCt>btIZQ^q-*jpZ{y@)q3$N})VR#j zE0UMvLmo+KoGbI86H+0Z(-qqxNFw#1UUB${;HXqy$Du$#o )25|mA= z6$>d+bH^Eaic6C0C8PQV?jWqU7haFy4)^!fS1b_V&N)1X4^Jg~iglD|#yQ{|J=Xz2 zUP_95gK9g;I&YvtZon~bXz$E;dkLe!gWA#ejq|6 H`T4D5l#DSr16DqhlW zQn=2s9G$hYNM(i=vS3`JZ(oyqjIaGxY=$iABxM;pUJl9vLmoz-oF3ray|oNpk|kGr z`Z2w4-Z5V)-~8>&a>qQ3$Bfz5AUWBe7KMNFT28l!z{LS(!M>ELv w~rH3ciH3+N49MP4SwI?0dTU*mJaB3Ye&+97#7zj3AwJ~y3&g3bmmABt+y z)x$hI;nk| G74Tlk2tjh@z{U_%%UOYIJBCdzNQ_9nxx3a zttKh8r%8RimQBmsV5^-M^ArD;iVdk`f9sH9X*Ex#X>`&Lx4k0~Y|n;-Y`GuL)#M;a zS?*?U-i~`gjbO>S1nDp?#FV!4UL<*!%{tR}Cm1_xV+;O^rue+6maQ44#I5#3jWvdB ziO@O?E>hC~OGWVDIcKuayJQj8$>~|B2}tg41u{c`rS8X%Va<;p)tlUtKTuC!lNSP~ z%8`@h;njUiQX(KKX!X7`6wRS!GE8n%!ciJM`2$(rFhnM+ncmfPRIfAjqFtI}SSw39 z)X{XEp!uDqL|<9E_5MY6X;E5S0Gmf${;s?_$kWR-k0$FTT4WasXqEkvtSjmkSK(0# z4$(Z&w5(UWj^YpfVDU1O0z;?kM}Dd9v0U4?l_eMLZ2Bqtrtuy!+=ksU?Pir?n{snw zUd?!mt*f-JbvS%Bv~5ecEh8H+jwnVFyV)J>&r+C#5A)_9@c*Cv % zdGyi#aWq2CZyYJVERRq2qbVI v*7a$I<&l85oM{;y#U_ zzwdoL|M=ulXTM( eL7@J>s&ySw $vXwn-wJj*d#=5yL$-cIlA3?j+p9c*cNKHZ7x)LlW;f4ofl6* zHwFJa8{+ql+$|HrHJb77lf-o2cq7m&o@39?#s{6GEX<^ctX?KX9^ZD^Qlh%&siS>@ zZnq-3+_~*5V#JHyWKz~Q<#o@Z<=&~HG)-Yj$mNbivA`i5xLrG=U~TlSnbch&@GsCl zyQd?jP-iz_A<5p-f~sS*`}W)aM!TtW8#Kv2lj~Pwsh$2JT}by#!1KTy1y6Y!=WItv zW SD8~^1k0XspznSODwF?~*IywwF3^XGp)ut?! z_y&D>>$mZ0T@?H )k*T_43c4Sm8wxV(PgWsx{}VfIb-St(JG!fLl`6i~ z=71%i%y`ZlRCkk0BP6w9U&qQgM9ZYL3QtdG$K!9gO0d^QDzm@$kt$^ g%jvx51EdDWCS$R06ns>A2ktZ8lk=f5*v^@)=KyDEnG|3qRWDgVVMy;++nV8sP~b z*u>~Lpw4U+tRF2Be2Qw{8QZ;(!k3O-v}G~Rtn?q&j^aZb^eEWUjSDpV;#GHpFJ2A6 z_KR1%3$=S#++rxHTNjyfkD;B#!jaTm;dY}*F*s^1AXq#bR?CZ5Kt$K`d0O>%|40|| zyptTgia4j|M(?+`X?;R#gIDN_SD`hE4 qPz~9PF5x}ygD zhS7mRp0k!c*Xb&nie0~T}O8UL~&&qrI)}dEwz#4o3 z=gD Ev95qA&>qU8M>uem) zZIHBK(+}S69UEQjaPrzQU~_+0maF~|ixLCI`ZB5B^}`b-2EnVl$PQ+8;0Lp|*t`>K zQ`6eKiltVECmSE(5!%0;SX$qYhI$(`7(bU?;7oxol$ZkQDo **=NlHF6&I5 z>-`AhCE~S;SZMy3dzMD};<16Tu$|bj6WRqg4y$$K;RkhDj8qYdZxt0T;h!o>E)zIp zaL)CHiE6Ya(n9xnc46T44)1#mO!GQxri=c$Z Nm+I$Fy&MY8shy+1-AVBe)RqdD$;i-5;`0wWN*iwC?v85#ELj89S8>Ip& zgbU~#FH;~6P4Ey~Uug_)9MA?TDvR`tq?>Xk+`}zsW}6 hNCzwg2&?pjg!gx{W%W;p0nvPfC%(>tke2b}V62ORKk zTW7m_aiw*NQV!ftDCR(#mo~=xuA+Ce3Mpn335!d$j1^NbXeg2o=pT?Q**`2 f2crXUO*>Yl84ewTyYC0A2Slj8Y zwy&@3otin*W%3U08> 0- J zOeD2NpCXrst^W46IlWDrq)I5>_rFQe$p>4YVh~AYcYyEV-HaEfOn2;HFdm<^H}Jt= zL_XVc0~hH G)7o4f4ggS+nKR=5B6UJmc&gFEcygW-GmnZK70hVSKP1NW6)dhP~3 z8r;Wk+xz5ba3{YVyid@PZALE^yWv2;{Br0BKY0rOwFhYdY#OBju#pqx{^setiRwi* zS5lxv8>Pa~C&=|A^=-!+a?=y^(G%$XWuhmE+&CwZ=Qju`LY?Mw-QwfNgE9OJ{%d3S ztFHzFcn<&d0oXW28o M@lX_x4H^f)TA++f&(*@WRPFxxP<>OesNR*?>0@8*Fl e@wQJ sk{b$k zM@p-irfP4J;vyAP@&dTO;;_5x!aZWAZ^S_7KT4Wb*Et#;tXI^eSNhSWr^aJqGM$n; zpbMj&$lhnsa$w26J@M9&O;h2pRwcB^^etGPVfZ(E&!9OlmhuDV;Xe;Pp974Ksl4%2 z9>(+t32Ayg&DS;F7s~2RqEazY$!vD|X?*gz?sYq|+E3xIYIYz3#Hd-EJ)Z7IO@8wE z<3$cXn#Z#gs3++mkDF?(*(V*7EU}>@=(U{L+mp}9^^T5skm->%jUE<7!#w@8quAn1 zmHUfIfc|K }xiV4ni^~k}Tw}HK-(R%Db&v1pyW }GiJGLk0NlSk|HfUV)i!*vDnBv-EbU@V za@d<={Kd08j*i ZcpvF6Qrbyf@ 5A2YCt W# 0}G^_bDQf&R>0EWiq0wN*mGHN7YR< zUiyl2+vLExcB {c!#U7Zmc`BK6zv9r}W-ui3Bd2zWn*!{3PkAOLp@EBXv9 zoZ*|b3LOQzlcAE0M6R;d=gg0{I(Ucc&d^Sp%S|?@YxP!irXE6G81PLDyC2qEOgd0@ z@a-rfogqX-!!2kd`ax`WIc<{5v>u=BM~ft%$EXcok55iJc^pz3Cvg0Lrz4A$LV=uA z>Q|)w8ySaP3AxMy6j~XqYTQ|mZfE0pqNOpr!+-@k01<45AJ;3olkB5eJdP-a9a*U) z_Df<@ens2?0~l*2BPM?H?x+jG96?I)I6+zM#pPo_!i4 gj)qfA^Cf zD7zfS-p ~$*xf$5?ba5uhCzfM+pdESbf$23Y$zzB zX1pt!LQ|-$Hjz;W#?OvO2RT!o765t2hQ!xEol%~K?xCTQDddj2q|T{+0)>eu(;Z+T z40S}qeLQsJ2!gFH*gvZhNvx8pX&Zf^a|gwoPyp6ON5Py3S*cnmzIfuWg_HU!S)IZ@ z-W4`nc(=rZIaT`bpoPS%wUHq17%kAXoub9SyMMGm_4~sM^n0gxG4SpmFZ^P%W4w@$ zjToKO)QfcXwY+Dxoo4E*X24^ngB%yAx)O1sayGb6R$6e|(d4#XPZWN1%A`Wa>BvkQ zNaJXnmeYR3&eDe5tz?YEsqw(3{93S65x9D3pvqAd0b=nxWA3MK#e>WV$%=B4Uj^`I zj-?%;&KyuEYlu;rPd_I5$8?|B%b1w=F-i8xeIYMD__a^tp}C2l1pMW_<_njW-&MS~JIhHOPO&?244} z0aveSQ8l^Uf7{*%{Rp3|vwX&K z-zGh1%7ZyaJ*P)rLa@NBQh{;0*J8u03{)F-TVa$x3nXBv;NA-K4qtKWxK@F5cZT-v zCVYCri+r~iL~Kgq0a+L7ffa~JWA<#ttURmC^k5*|jk>qoVb*Qnr2fw`TjB8JVSA z??-SMh(7)FSlkUF|A5qYgj=ssu{OKz4|RLJ+Fov6tKKSAw_>`T#xrH &4DEMaDO8WHg9HXT?N?HT6swKptI9;uX3b*bUlT zfFt^W*rFft8Fa&({`Z1EzH3oy9_A>mE!UxB>xaj@xEd)>dOb~7O{B5s;&0bNvLMX+ z5t5NYKc U(Uv6VD0G9@YApNK_pL(;aWG7wXzT9=J1)QxtS)4pR*Ufr|Kz*9 z? C zN!M5Rf;+K9cJS!oK^rZzB4(-i7*5k=a;?9<*k@aFJX;A>>7Un09yjR{YNxZfo+fZS z>mmb$bXG-63gB4FtR2`JIg~!Rob7iT$B>sTlU%(9m}u0;2jrq$UMMHiSyLwZ!Ri)j zFb2SALOww0)daPE9>d+Ieuu# 6Ymd z*rSMB-zOhNs8kX)*%DW}X6l5-jWd39wk=sW>26#zZ?3O#F?Lm%du~dxXcz_|;`JUz z_7Pb K^?(_D` zdbyHP)9vOF@$rz;7~AgN(~P<;j9S^!Qq3X-D@Cp=HEwb**oa|UJpDJNW=Z;p_04ip z=8phlz<2@g<9gc&_g#Bozc1Vf_@g4d#)K !Y7d%ez|)9Wij2=cI|_| zOY|fjdK~O*#!5@nJ-KO8eNout_d}H(kz0?)(TP!mcfETk`M?}Kvgvrtrmd}%Bz1++ zM}VZd)4V_`sOKE6sg_qM&HfNL*5cLeVb2evSN6pVo#5dnROV|eRjWOOAp-2Wxs?v8 z0OPxRC@Z+?qQQf9pF+yARvES6fgFZ9)ahoh$H(BHPBkjDj%nVB38$vqIP{#LX0YsE zo=taxF$HH=hKk)ripUiJg;uB*^RGjYr}0Ez{Nsimpd6+5P)x9vTp>(P`db+3$b(T+ z&tVCtXj+BlPWw?d%i$}T{j#nbRCy0fp@FEL&{f1K-6EWeBZl_TNP&+IqLbs(N72WT zO&DQIAANRm3aKhoh-g(tMV)pm%bt)4+r>)|Xj5WQnB7?WTTp!{AFvapBQTjR;w0So zj%*=R1H)_}thiB&W4AJNAQr}@EOM$B@#MaTI@x}x-`vkor}sV7>Gnf?dM`swikM8j z1S?4~$UPnj ` qh8ZObt@q zeW^4hjLRderb!_W=(}ex-pFw%7Xt?@bQnkf5}lqL5tfLRZc-g*b%yS@pn!U8oO*oq zEcFr=)~lb;G8Z(L#&&i`+?)lFBNkj$jTgCxqU1U{{p@oq+3LaBVRW9CSFk2Vvy!aB z@U18%93Fl5?Ae<~a9wH0C_lf1{5++YWX6ZCKUg+D=KXhvF$*xxz9SoZe12UQ4Pt@5 zW5S8tgv~7 f#JFYt7S> zi_t%?GiHhJf=>;^TSzAx7E;e%1I8+e*w{R}N^X4owCRZ4fG3~yZa}fBma8~B`Ml8M zzlCm>0HJ&wsX+r7Z )8*Az+ zN&6-zNNNRfGSv~BU~^Tn6gp4odaHz!QgK=$sk%FoDv6{T{?_^54wjVv9)h4u)4UpW z-h(|4UuSp47SZKP)LNa~7Dsy8opGwf$>xP{CjGv7US53AC MLMCcCVi!tjCl@KXYLA)uPOW?-%70jqgX3tVnH7U zrL&7v9sUzI*;xfpF$1?zuW~r;dEll)TE2KoCu;^8mMZ0IV7d;pgo2yH7j$69atb>{ zx#b*Mh@VImw>x7V*pWETmRS=6FMTJC%sb3Sx1N;5k8?lV0ls~B4yxO_nSTq5JanDB z>oV`h^UhXx7-|6L)BhOjd%LOVS>Y?eXB#bhhbhuJ_F){a!c6urRlKYx@l?Hrsn6oQ zYgKRAM$I7_j^u7k^ty1_=6-g`tsC^YiR1L$j&6&mAfNqEh}x2m?m-}XYX9o#xBJmg z-$suk7}8&wJR+~;!WlV@_|7O}oS|&2zCEtg7+NT60xY LE>dWZljp}6y| $(TcT#3dn)o8>=?K@3=fYF2-mc%`E3b)8}(#dRO&(F zJS(1-wYRkR`GT{05!lhdh|`gVbDEHo82ngDuDx>==%t_X=IcC 5zN@N%S{u5<^;_869e{$5Rehq= 4)?I@b+?oNNRRez`IxeZl*AOH5Z zhjU;{-dp`P3ZTaj_+P)i${)41Acx+A{dAe7S89*Bul_*BL^p*gq6m|~Qia+HXk$T( zS;C|k^+kXZZiN7^VgM0%u&jWp&M07L6{*5{fe{2?QtKwuG0)$!J_D7~kKmUX$H_wh z5;UPh(yMy@tEwCsIltK2*|b+rJ%`ihW9umY8I`Jy8HV>HPG^?tsqUKbe{U3X3mlMR zN@|z6KA7c*$VYH|8*k}u)%$aru6(5%-|6@e6ZV>}dPHNr%}}V~P6wj;uFPt@p3`jT ziE4|p lOUsS6xLsu zWtU6#Lvc%Kv;i=Bw;wIhgdf^jN+Z`}`EjB?pw2ok^-YwN0pLUg1{!Tr`Y)nz(}cCL z p7+pWk zuJhrjB9Xz_0Ka6z(WLGrWB*~ I|Z*j6A=%1JiZHlstj*)G*_)S zRJ$#I eSQ|B-Nh7hE&+Aii$^H;AI0B3uA97;mFGrXb9J zBM5IH(m^-|=Rn6_T7=LsNfP-XY|pP_EqL1%t}V#h(QF6n9{NZsr!mLPtyeSjuIhM( zc%p8zzF5-jPrn~fR-{3F77BiYnod}$4~zFhp+msil=`-avtYMGAvZh}hnul>pGfPV zv_8(POlv6GZiTgcH(0w5IvD~k=;fUdra^9pv28bLAIdNmNj6RL`@ooh?ILV2f;5DO z#}9X4msl|nN9;cYF%cuLJLC>y*kLjmTNhKQMrhh#Pq1(up#ZE-tW9dtM~v?+$c;|e zfs^~8=mFRUPemE)snw!`ouf|B{97V%0M70aWxpE6ZjZ2J1Iq4$m 1!ft>IW*K=LHhnteY7hRcpu9o3b5>MZ;K&}yDjirZAWhLVs zmGuf;nV)$WJ$F+HnJO)WNDD+gp0emD;&i3UhnDtgr5L9{8UYNh)|y{YQcci`9=gld zlSN9>CX~rtWwS=Pr+@8VT`-uk7F}-gtECGI^`rJvJw<2c=i2C;t)cMUP& c^o1#AZAinH~`i!H!NgMU* zt%CIx>|rb#WyJwZ=fQkUPSKLXcZbQL(Qu?D^b%!9iRLYFy&68&l{?I o4NuBFocis;nFwO7%qtdGe~!A{E*RfBn~gdxE)t{nvlzE>>i<^ycaL z#{e^$rP#*`m)>(ULW$0k^*iYC=;X6wR+f3h8z@2FQY0lbT7kd&Zmhl8X_nhpl%(D* z(~D%w0jVnfVETFt1APg#aGXFSN!mX;{q$2F#D4V2@!u)qzPk^oUM5wu{Va)Ufmu4o z+^uKnWM{L4^0HZ?yh&^^C|j*fAA9<~4>z@@EV45CeFns@NTLsu0`zmuZvalPV!M z7yovypgXhr`QIx;U_lkJE3jQB<(A#ob++oe>go>_>M~tq*wMEL$LZzSnO=IQpLH%h zF$8oD8DAzMVCz P|NUDAJWpWI$ql+Yf|7El*4-6pfjKx% t`qYu%bygkgBh9m}} zMh1KSGQ%<7afq;b h0Q_ZQXbJWd`0T({6x-e&Z4vH zGvP}~G1pCY0FV;mKuyFB=Z+vAbhX}}|2nQ*11!pX=B$~^4!=eBvP7t{kq-7{X%1wp zs|W1|H5cp&Ex&MI?%>Nw0Pb_=RM-vhFfN^*tL8kfPT??f4>UP}NOWSJh E1b@H?q1I8V9Wi4hu{hKIX`I9P_Ku%7HZp>AG@31D6yb`} ft}((XG`eWk9EyU=o6p9OdV6qA?L?EbxxzEov}N44rPt`mVH-JzsWFlfDPB^1 zET-F(9(x3zt8sJ#1-Pb-o}pEfQkB;;uI({(Ime~DsvtK1H5pU^r5r5QvQ>Q9Rsh&0 z0ap-Mmy`<+N>g6X!aOTxanO-0y7)}$cW^qsc;%1_nc?-vgZ4qoovsPhXWW^R1lW5Z zO wWf8N`SabXznlkYu*Vo&B;vkUEo_~uNGFB`~{L1nkZL#v_HC+U>mMiu;R=ZK@ z>H2Pz4I>BL_LtKMM=cbVGZZI#bS$ Nwh|+CGKo-U^EXrA)?q~~mAX|H& zV6*0kOECWo@H`{`WcZdQu}3)AB6p}%y{UIKLJ80x9|i$exjP#Xo8uO+x298e>gU@* zP`}uCd$+Uc!wgKPvKfD{`2@ on zaWf7Z4Pp71{3?+7!N=B)-gTCoC)!ssY|xrpbP07;H!9XDF|xff%3_}NUZDfUT1aWP zhqi%Ij!)zmRa0vuBw3BPxLRb;bBZLdFVj#-lT%I^o737z;l>xgF@bT?i;Q`1Zv8O& z2EFIc6IhtSuQWG74u)CADVM}G@cbgu@k3m4yhbgP2J0rCc3if0 W%Y=>^lD!3eh!E1LMhG3sW>)j)_ALMkbDebgExF$GW3iVvvEp zKJV(rUBlVhiTk&&-jK6VldL fV?H;l#Eoz2|9ptP9XSDnT<8m)gAH$t& zc|rzS$H %)=ECyQ7M9e-5u1n$I_fOuOlPg5^w*95=k_gis zNn+6XA@xYHZ=n&o;|dMOt4zb%Cyp@A)8YcoH03cSshWTyuNm@d!$YdakItc!14tf> z9X!g$MIzmq(Vu@*7s;w#l=3D_{ce&~Os){O9aMCZ3ZwX+l*HLxBIhY-85 z(m(>Mq7{(8M(g=kjN|g*&X`N*WVuM2&{i1me#$jRIx^Llu5V91V0}yhA>-##AiJ)^ z2fd5|YHUMq1?5m7`BS@ZE)-8D7rCCC4x^_`q9Rr<`|kPM==$;X!3agrpGQx=e->S% z1I)*toPP27*(1?a6}wFK^T{7*)UPpmfyg*=(gXdqpxW5fZ)$u?RV$0R7gbH-Pv7QZ zysT|=i40W^xIztI0q0q+J*)(7mUeGb^-Q}43WYTK>Br|Ue~4c{dHcJziwNu@2Xwp3 z+At7WvRdECmuNQgu0Pv0n#rrqz$T043^?a%xf@wh2qbssNrO`9hTgP+_RXZ ~+n4U7rP?-K1T$RqW0KXTE2y-d*8#R7k21$(`?p|qO?{=&2y=^6cYPHCw-d_KP7 zj-bDJd)vFd#vZAw1u53zNeV+*;labsUk{^mIGh~KI5A*ULdA=a)o6F++dIH%XA|C1 z##C)q{Qf%6CdR>~x?9n}tcy;9oE2J6iDM-H8@57<@Thoad@yQ*F?&XnxfJlUgu5Ve zOnliLVnf0lCC6hN{^WR!!=IguF`CEecrkQW``#F_1?K$7Yp!W)^A={cPymqB_2WN& zP^~97fBfL9FY6VYkuvcBu53kvHXIe? 4}+m;(^$ z_%M(k4Fx$n83vG4WvL+GP3p`#Xx-te(e6HOM}vZkX+M%`WPMAE{9S62!bbUOw^;|x z=!=lvj6@Kbr{y9o{`#-~_xTzheshlWeNk3${a7A)`%PJZh;xt0hKECCLlQ)z%In5t zPa8<(%Q-8t0r9EOwCSUdin;{;sZ%i5b*4(PgoB3l!Tx#ev4$ws_At@{Mv8zIeWv)E zu&2C#tK#>I#a3G*t%i91^v(0<-^Wj$J$v)~{Cw-v&yAX>9o#Dn^rO%^A6>Lrn*g7o z1QubmBKZ42p@KV--G59P)-uIvb^7Qu2pT_q^4-%PzI*cadF+?jxQbh6NH5kWDd0UN zu0};;@0)|Hmf*w4og;l)09ANj7WiuG8_4bi)1gL2+pWeqovq3ujjhT^bSI%kqh(fA zWu?p2j|Ok(Y`IKl88qyKR>Qa}ca*;?5N#0$$8^zwsi?X8Q0OOp{>(`1+$is6)Pt3L zObuVhrwwY8icbhsmxd2JeVwtD*Q73UV9T}6gnY#SqJ$=IBjZUKtu)b)?a??IwH4_f zq25$FhiTv=)2c)1!HC7s9^nwxE`O9e@r7F0^{Q~B)f2=^#t?6)tZA~{c(kgTlI8D5 z+H6XB;jImSGt-JRJS5|@5pEL|Fn;5I{x5v#82|hyg_9Qqy^i?Gr}Wn>P8>}(ZA?qO zFfo#mWju`j3FjW4W>vt%fWkE5mq?BB>&w 0u)ABktNak6Y`6 zyCb|eE%!EjHBOz +G{w9Ac z+CL5Q1w!H9B0xP#VJn`#7bdlp2T35V-ZngE_rmGBC|_1fI7~@|F4~Gl0(p-pYO+>= zD2xp-$LCTITKmKvG558OoEFqdqR083Wn`bKm@@2Y6)lsxBfk9I$Ejee5#m?R0AE7( z&iBaDC{Wzn7-b83q$aIzyr$4@C-h!N>kV|%7~k%4c*Qhd&xZ1M(*sprGb>m^ox=_T z8{xTb$pjTJ2W#>U*mt;cH%jA4DXbzaU8b$BO^T|>KM!X`b&VD)+5)wa6%Byu<)9RI z`u@h4YHB|OQyB0BA1UW`+Sr#IYQa9{sD5S+v3&9eS_5K@sgzc4GyC5B6eGw3FN29$ zlH*y#kG32bcU>td2*z)0^h>T RK+rLsz$>*#?;G0- ze@x_ZIMwVeED5?PvW_#q5aWnyZ8AlJtVt0>k4=lt6uP2SS!WzQSRQGRsYn#R`E@-K zc03UV#^i(Z2Uth4!0xo@6 qY@6fN8>F-=5Wix g|!Xj$BPlppHQ9}n1G(6}Dg$*jFngd;?__$nKuL)kOaaMM% z=HXA?KDhS$qAoe^#d}@VHk7wIV&>kHrg`*qmUx{~oZYy_vzgpM0MB)O`kC>=uW)k? z`Qad6kP#Mo^#dPOIHo$)7h(3IMM30Q`)xdF3u*VG4{NwA$LV~YPMemEuq!32nVAsw zfb5iGt<1$$@2H%Otd~W9{jdKcI{ssEwZO|j7JZllr_Ws)J$V!zL??eNqNwGf XFo(lU;+YxJF?uER1z*elpE zQI0)XA)^J8iuT_B31gxqRVsT+@(tRLDik{Ai@TA&KzOI15e(fTjsVvl;cGb%1QVtc zmt$GY(rO%y^IE?!zs7S~>I0Q?*Nqt6v5kwTtQimlEeg1bat6nG$M`TlUs)mVmRihh zIGtL|^+mCT7PG6H%=*gxn$22S<`zoK>ibwwOIN3vI6ia&$WE&3o%q%W0v*laM4O-P ztJtwhfaq-f7rI`}4*^OpXdRBvPuh=8^V9aLlX0Kn8E1+pfQ}azpRiD;Oj8uC{Y !1y<|cWH%o5oNbJ-VjcEdf>n@5w*z0g{>2DDIP6p znhTrEf!!I(Dh=$?i&sNBb?0cC?J%394TK`5$H)5^O;i28KAHDL-%PM*)DwTxkRSu! z7e&G;H7S#77Gadp1JVV;V*5rFzksdeMC2s(c6r_0I&z>18E9E&^2wvZ)bf>m935{F zp;MkXT4&mOa}a`9$AhYn&nlULJpT~M^uB2~;P#>Tb{&I{;pN%8bkhry6R3Dzmiy6| z{)K;jJ~{r=ev6f4{|1U4Z9hm|Qw>%a47^o>Dkl(R65tHQE29?}QU`)`x_Z0UK(Fq- zz6owKN84(i!8{IC>OwMhN3|}EwQb)jy?XA8r9NAoH%s|Y=}Blq&NTX-AYUmmkZX4w zwSwLg(pwq+n|{(0YJ0DUn1r_obFQk7k_6as&4GVcCNpFuXss8Gre$6rbItcm%%;&C zRJdT0IFwI}Icly-CsbZOvoKk7=}YDKK5CD?Td89hAo?i&7W$%s@fzcFqT*F{ks%dV z4lcOjKA(Shxu)2v#x0D|^)%;oo-MPW-P1O`RWSUUAa>B$XHp?oRo+#9yk*lxy1C^- zyT*|%$0U$#wJ&z8Xuf0TN-)f&6s6Y{7W O?;dJJQH$C1=c_ZVOarB|Isjn>q7JwfR`-u#ggab)A^l=K`g++a)YFs$8-+( 1Q<9jaIaRuXIS^+0-$AijS$m<3%3SKO5=J_rTW;&%#*02e(nlP_ zHIGpkfbB4PF%RZux)St4s1Ruf-#PVYDCTx#oc=!%wmQUu_p!v9UVQa-XIJw!pbN_f zLFH!F_G-X!L>hP9AQsCyq2>dHQfIpSmq0zjX)JOxM>=L5--&Q6yeUDNyLfU{%}j zi8OckP9@`R-+xButo?(vZ_2g0bL=}>ba RtPhMf$PYhGX~YX^!1v#kbT3 z+?L-~&o1gN5b@1GT@zZ&_%eBy3d<_{dgE*T-y+IMFYFQJ=GI%8`HsmYv7eX~^!7CK zGte|lTgUZ=M(JO0lXaHcfFPo)?ln~ET8ay~ezj!v6Jlx>sk5G{4(*)#*woyZlp?Sz z#zdW}N oe$Cx`*%@8!k0?v5l_#rJo>`oUmj-7F zC{tZvJg@HRmCLwpW|LF$Qk;h IYs5y2<;S{bhDdzV+N`r*{3xr^JV!Z`tgQrnqm=?6T0A_@*o#c-~cu4?XP- z#UNt@__L3B4?p>$)q9 6-~QQ;-yVD z6RA10FX;jeHvaQE(; HX`lyS7$Mh?&c{VeNi8@E*tm$@l3lYH zWk&(0e0ZY@bqC8aQ03-ijKL~S$L2l`yh2Scsi?G0F9DZnbauez@%&6AUuZdfnayTo zDIp_Cksq3fV@B0@1&1{Dbc7U240pLcIXzQh&*DiUJz{R9ixdPj!oO@FshokZ?POL{ zI58MYWuo-@DF855c7pL_Y9eyo)X)qoGVyQYEgKuQzPvSw#U4bX s+T1Sh*>8?hX7%V1lB(RQjB1w*PD}Q z1lT*i{^FbC<42xmscgq58dnP=mX!)`Q{h Z@schE;fjqD|LiJ)djE_%JD#p#6zSwx;F^nq1*Hkc+gL-Vcft z Ml<_EpF-i)JhiZ;>0OiR5Gq6TzY!Nyo %^ w=xd^704IQO@`_LUOa3Hvri&eDd8VKJJw z%2(_ATICAz-@+>YKgd&8Xql^v%TTlj7rIf=tU`-kKjhgq+cR)ai(Ntf6&Cw>T68b= zEpdMPrJnexrgiuA{UDoQYh`=VEQYmCT_1eGbcNy;KT2#*Vw~hM$?{~9 (jycDP)7^p31ik<0+8NAdMEuM7oem+bMoA$}NFX@#qg-uQ6Q zta4)EU@5ZA?wMn@%9u8{`j1q$@dEEk=&T&hThr_O %A4+Ag2Cuw>kh8lX H9dW83Y zGe3&LM&toiJN>k0F~!rnVre>TLEVkGbnT1*YsbZ#H+oLJD+&x04-a;oG~?w1@2)M^ ziP~h_Y_XUe=G+Z;28KSTj{l>cQ#_KplN|?+x1NrBh|exjbk|KbZ29bB@5!y#&FI`| zKdCWElf~9@36Gmt)AKadu^#}si-P;|wHR`;*x`koiXN~+^ZokJku6Cqpd)(>+a|Ga z8wYX@Bqe#K7%r4{xTW7H{l@)pk4Ge)&C|=&S`8J)57+v!bM+`5?#ZZdZFtD1v?dCh z^gpoh!6(lU0GYvtp={Eg2tiQ`S}O*y`bJS6NG*ZroTaAdczlww#s>$9N7L^@KXw=u zu0ltayMrH<>4ApgqO1*f8*RWK)Q3~eW1Ui?HSN5N6zPREdcVaXq3e%oI7n+aMw`XB zruf<8x*cWIb;`8B&@Cz)15kKA51Om8rVuW9O0RU@VQI{gYwx_Qy^wBhAsL$B%(bYu z#1h65-_1Ffg)l-JGxR3Ng0Lpel {H3sP|MnTN3)v5?kj;~2*Ji}lOod|i1o*`>rSl+)nY1JvW_`1+VE@yHs wfrD=TxsYf<343-1B>_-zQ;X`)ZM|>x| zb12^tnAEX@*q_4yu*1DlIKXT4&8WAE3cc-lj}5i 5mAr2~KK3>%y2o&LtKYukR12W%wM|ZB*{jwMZ@)b_i_!u!W}3&heF#LTvOQ{R ze1@>0ov6G9Os3B<29bxBc7ZT{mi5KsKYs9iiFTA)Gv<#U^v=YPP}&AQ6066*{cS%< z6o93s2Wix;lnEn+l;>xe&Uo> %;JZO;V_8X}j$4K$+u+4gfG?KJ^ z^^r`$R^;MQzR`V73>^e5%ByIJj7yW@>tA~ {m;6%MI0nMGBwJ5hcAaLB+0`z1DmX-(R! zHEZO9cvH)7yRiB8Zyb>^zIMmN?ROpl9fZF ^#{u3|sH*U#!)x6S zzo=ZBS$9w=M&?jK#)-fyb}`1Y6P*}qwU8pe@dsbdj5FKYu}K<)j(1g}fVMQ=5A7%| z5Iw)d=<}G~{^9lW`01->&jUAUDW_E0Z0afo8~!>vIfmnEnq@-e#U&XtzxE{cumI#H zMvnwLSO5Z)!ie&cO)lM#7fV;n9uZ&G(1p5%E8~u>y%bER*}JT}8@F|?>%bYQ8wq c=5g>f0}28Soc1jPhP^Wa=7AeZ!gNP_2$)tSUe*D2-bh=F(?znttTk^+26r6T z< bx0rjtNV?El#m)uJ3-{P%q_Seuw37**?d4L7+(B7IXjo4==xY{w99%=FO8o z2n`N-`u*;Sn}3@HB9TE@gB$f7@A)Xe5}>5$@VW^EWe>Q+>JZGD>Z4?Ve!KUh3A;jm z9EF`%Eixd{TC-xiVB*Q_l6gy|4U4U_AJNgQyeb}9lRzy%V+-tL@s}jG@dX?oz%H`M z67vqY(Dg@%h JF(Y z{UF`j42WwFo!cEuClU%McEwW~ovBa~!{=6v{y`n@7@s@lk(ksA;3CWpVpeE(7E$In zI>s@7a&jnp`s?^c3O3#6Go`Sejy%UHt#P`;d-zdx45r7+OURdxg7tu^2DU-3@5R<# zZ&GH8V8c9M|J_zcz@KNOK5(BGY*k27iDg+L8;^8tUZsCt13z#R>8eV{hnE)84`sI; zMuR+Qxxu#0vU=Z?(JG47!{KG+B7@uaRRccgeTJ$vE8~Ws85DZvE&*pkfpuy$fnjI< zF5M+8i(n|Xa&*p6+`yl~fS+0%&weD-6dM`6>=HAByXhFix^4HUvg#YZXP}=Vy%ILP zv^q7UBS<^{ZVXho{H2riMRb|f89i>}W4Mlm%4&4v=|sKH+Ly(aUum*-&gVFof*wQc zw6n{tyGJ5oI3@eO&8mU^~ZJJ>c`37;}LaiwVCKX%~p~vK9N(1y417>3i^ZBKKZ8 z&QXq8pU>Q#weALOO}a}V1tlIbB?q7=e^*aGRZ6CTaL;H&SYJ54i=Bj=w19XxIu=^= z TIpR@T$b;2{757^rlxt~zs!>8hx0c$cr-~Cso#Dt362T~HI#^| zm`|FId>pN&`*3fa;k&*GJ#=!bz(cIDiX$~#?F5!#Q7DT(Xa%pkM1 t7fayX5T_(u%fcx`q_M_+d2*mgks2^wO00zFiyGMf=UJYwlq8f_BW=}3Qy z@~w@RA{FWH;Cuzk5D=-@E;uA}6UIVGGw87W?0|@@{{U-s%bY&gAS+~gpUO8r5~;*# zGHnN0*;WeRfEw9LnrLU9=Pb%34}@6{Sb`H=xNZw#;)9FOs1tYy?lD15Dhycvo9u zMZWmb3l618Clu7sAp@Z;qr5Jz^6TQNN>**m{m(Zd_Cx2b26qVr$7bq{_?J>E35r6! z;3q1~?>A4*UpzH_LR9!IS0d>6$g}j`*Y|L?#B*4Y9ixncL34)b>V)91=8n>LN$Mt6 znmk71Md`nEAq1Pz*f4_aF0`Dd>6j}X%Dy GkmebK(>M_j}k+6lwytL zNgdz(E5$y9wLbbL?rq -7 @t#6l=(Eg8Y)CbLRa-VfI9gV|(P*#=|% zC}ndc(8^3)A>;;MSLvMM0paOoB5bR6N#_)}^23f{4dRfTKJ6m@vWB>IbnKt!W%;N5 z=;ty2_2Y|mjBZ
6o+&<8tqp>$lD7e5YB2u_ z @7_)Q2SMFM{YTb+DD|H_o%d+}tSX=_q|Gil4CUos@D?hi zH6BshyzO|>?>GN{d)K<;wsECj1+l9fXp2M5$cdxn?rdr#jcip}my+b&tdbN8B*7sf z5MXeb8M+)-YJcQ+9w7TT`yzgl?Q`iX8YDo@&@S&Lwr2*H?mh>7IoI#Jeu?4vLf-@z z=hLq)UU3M5q|~tv%EIG1f10JgWy~1E{JM^(M>W?+RfH4CL)%yO^@rx=PAXMv`_oEQ z$d~B}?2!nUJ(zlz&c!-f8Z&acvqO?2UozBOS%y>HmLoB|`}!iDN=6Cmvr5?}l$GVf z@7^Y{dV?(^APPetG{5ylLk@Np9iEQr6dfGs2_$0^Jv{NKZlkeK+X`{ V AkT%N4{6l13DiEj%5GB{B&B z>J}>{#4Ck#`x#zI>txlg1F11tX$DqUm)49;Cl~-a7}S8psdXjf`+B(=EBQ}d3jPd_ zgcl<+; lNppf%uV?V z=aW7raaE&U6)63y`&fbTit!vkExmnIVrl!b2nL&-S(9Z8#q(koVFmF;n$M$ovWONr zOj+BcGAwaNuwqNIpU7hJALZds7Q| rr9NlqbiC|boh{v1BwG1AA~Wj$>;mEpe= zjk#gCU?r_yH M*)xSTDO?nVF!|Mw`AT4gT+rJAVe zb0RN^BvcChbQo|Qo}dtE524cM7=;k9?+=QSkjX<(27~$862cC*&mTp&P7m2)+D(P^ z5(@;@+4 Gq~ii zpcRh!BQarkG?4vT*H+Lk76{c8y-@?8rWxvjd+ $e 5@(z!C3u!RO*$OK z@r_GA5uv3J2CGEagV$AzDReguUM#$KQ%^iTOb9B|$xh13nvmUWyQ7$$pAoA-T1iZZ zsKG~w)kKKDxWPV!4s%xs2KZn=uPfIiU6iN8rSS+Jy)o9Pj*XNOqW5$>{%3>WSg1xd z*cqLQQRY~qCeLJg*kM%bmcp4#?idAo@d36q)dqY{q0z!FsQ9CAN*=xXFbc#!ubz$q z@z0yr;@?a0@5l DW zRFqJ(6w^IR_MdIr+YCDj<-Dc$bhJ{y?*xX$8*JT5dlt9javr>Rd1lzOVTS4s)HhJe z(K5YarU&0hQhk|{j#QOv<0HW=i7+5wvEG|OP9x#ESV!VAgsAvkL}NsZ{X`97e>} zbVC;bf=~RRZ!EJY&gzMHc$|pI0ItF97OGNDdEDnX_Ups%PD~*Y(p(lzPTUaZ`SUk{ zAvFF66i%du?6Q(&eh5N4z1?>Dew{2=5JxD!ypWN2f4NF>4#BmeC@{h~$;UV8$8?>{ z(|BBzR}bN@hty0&%}7uZ-HbuS`iN)yy3c8~eOPyOb`BUyW2GNot{S69@s}$scyEiG8Ev{0i&A~IhEQEq3|9f4RmiL(b!(DD!%R+Ii8*v z&l)N~yk3iiC>2$0bh1=~cQN>lDRVJzN&VoUtD!V9*gRA!7SB}5iv3jV`r;8%2TV;) z4n!q9a0pw)_`=!$Q+t4OZ#NSxk_``ET(t=AO@f4!uh1)7j5%KGA7e3+AO8B^LU^qi z-^d^qBM%O7WKs(U_%S*70lupq)IqK(^ZgKTjwjWg?wL4PrdLbDiEPI=po_+S!f{Ut zEit){E$bLL7l$a@>J14x_L&%S8@Wx%mSPVh4TOl14`c{fh^8M5P9T_Y4v)4ouT^1P z)#kWGfw&lHw`sJBZy)_yVe0Sij@{mPDBZBq!Y3G#)DtiQFh17QDsjn=ZF9a3@Vu(A z;d9#Qng&1o?e9E*@Zv#m5}f@ZzgfbfOoPv^>VFAN|Bwek%QOM$)yZmILwv6k0Q_h7 zLGjKV-Lw%#AiUNn6)wY+vJEC^H)}d%?XIA4 |f?ow~a*VH}OnE%l4aO{+#X^jXb~n!S^zWeb zq<<5odmU`r+C_-KYGr;!5`23bjYk2!!-BnhKAL7*f*pnMLEW~uP%g2$z*5YBAixho zurt-lQnjv}h%Tjsu98(znsHcQQi@QlIYghdTLH&OjE<8XVUYBObShyiBpK&($WB5) z3rdPd*_1^hjYyKC@W7XS&bGQ;#f85Uw;xv)EAm-UMKFR0D}T82XulFBzGg$Z2t{ws zvF6RWn}&_shh;{v jFB>sI2Nyng-CCbG1o 1%cXL7_q0qx?7dSDkkC=K8m0(XBj^4q=NIsMcHk-mFAP*DM`+3f{YXtv|SolqqT z$Q_^PY6k4}(E~~jE35!x!6vp21D;WSFYdUMKH7u&F15S1KUgE19ULr4x(aS!Gq1xp z!XBw1osET5z77$=BY^mm7C33LYp0F0Q$8F5RLWw^Dyf-if^rxd!{dx2>BU)AWCmWn zxm`C?{|fE5Hg~T|Y~N>Z+TQ&gx#qZgU8%We_lKF=s8fG`s5u^@o9iY*)Hp%k++nn7 zrZ5(gq09o?O1@U=B&8v6NFA44b(HV#T*Y0zypB_=T3qEZ1@cgA4ONh|%l>(H)3KK& z^gq)in^*1VCc|KfsW*kVSo&3;4zs9J+?yk=1BV@33YOp9%22)d*2fkmFldv(fSu*d zoenxHo%iO#p$k;gK8$RWYCuiiLi0{?{ofw(8hQsa$roJUfmTDiP$WDJSuhf@2_!+$ zofhIS7pfQBK8Z8XqN(buLst~fpzK$a+^!iJd@!Z$Cc0?f(pg__Z0)R@KUBV4p=t-z zN}yX&eAx)Kvn&8HD`MHP1K<6wmc75jFea<^lzz;NB%gQaSKkme3ORAb*SP^-2i7nI z9T|W~9T %Z&}-a*2z(!7?o)P(JTt_Q4D}rM>=;HR4g4sU(w1edHL=M%JW}~ zpLXqfT7+COB6we1C3rp+%kRWNgDK^4o4aJyBWKt)8{z)E_Vgg jAFm^wc z*e=y}%i|_dE_vg7ko{3?)#BB6Z+1@J_s-OnA7a#I^9H1e!|bnCJC=+BceJ3wHa;+$ zqIiLmSru1TrK*&(TNwfw@Co*Iv;@MUU&a~CC3w!*mVxfA0$ILDuX>1O=3_3k+((GV zi&5b2OT-^4DQt%f4*0ATx8QNh52o=t%zLcksND^H(lO&lB+BHAkaiCdOfi@@W$cFh zh%u}%Fa5x8YcxY-zL!@VxLCER(g$9}o8V8)iV<|ouc?f)a7Q)
bVl07A %+qMR%Iq1^@+r5r;`4I&Ad z6%|O#PZ@$Jxt%5J8XZ<_K?@8V<8A FG4r>eM8T|{wfPWG|-iILN* zEl;-*>H*Ptts B(@gLYc0fbF4MUxLz^tp+sQ9~IR^RmTR3z;u`U+Y$wMtn zXr)v|)|d!3Wq`sgi6P>PrMC~$jl>S;rv%G1pV9&IB=t^e7$ezk(2qa{97sb jdIB1&=#9|}$gT?~jr>ft#8E<;N?VA@*7Z%9oo=1tb&JqP!+Pq>2XZE93Y z9x=r{#Ne=k7GC1>Iu?Xhkyu@DQ@vqq5Cer3DNKNf;3U{OjrI6c{>Ci7G>G)@vaGKO zf#$LDsj9dvondYVw=ZPG6 VWd(66C*h2H z8~~n)!7ts-5E>5uDtAvBcctt#w6*}CnVU#%Dg4h`LDhimMuj4`Uhc8IbiceuVxZX` zhiNaHRh*mpj{)B>%sRqtcL3@1F?lE_CjQme>f!k?*6@vVK7#^(TAw6hFB4Dq5QfDV zIbX>-M|4 kUfJkWvywY8|brd=mz#Tm5hQ_QGtSvx{dhW1gx?W zdP#hhSi1(Qa03)W^+H=agwX4^jY`n5RC_vCCAO0cn8cZAtCI9VUhqMSUgN5nEtL(y zZWTN<3iR0eY&~=A)svwIPE1Usc{5979y!#HV|%}a!;GY{ISxa@tL7>$(Of05KAb(D zv+JcQ>Q1?z&)D}k=$NEE$k18wV{1HpflOuh8p@OlWR+Lm`j}h5OEpKIY+$y>O$IIj zg25Dhe~Nx`iS!Q_L??uuj`TVh89!G#4mnvo1cLbCrO-DWwHknw+Jiv4jLZjZGg1XV zrMr)TpXPnZ94u1|_>%qURNWmw vtbQAKk~@)_Q1W61v|!#3Y)~AJKE@t zUc-5kL8v`D{iOYvjW$LkJWHVk7B@=%+=ywn31mYilwl|RRy82#wH@8GfVppjeAUOR z0gqjI7((Od4y!d2U%E^LU0uq6T2HZULlNzcm)#l|Y_9(=0kB0nzOf+HJh6-n*oOq7 zv^3P40vyd?nFi*aeGyGJQFWzU^n1kPZ)q~DpsZbnn9LBVKdCTSe*%~4iMY4}bBC)6 zAvORc)Kj$s(O;nZlR^3tx_F)dq!Jo7bLsc56ANyq$(5_3AKH$5A!MxtAYY-zgBa6< z9Xsf*ngpjlZDJHOIR(VB`;=TOCJF%FP_DwMP=N%ky1XO@Dd>t@ DZwMm4PswRZYIe z2y{GLwFI-h_R#FaeJvD6F!<)oLqCeEXp!EEXS~P%u7kewfY%`@ub@(RI oG&s4R&Fktr-0`6f3gIgV?+$T?;SqB#9#^cb9`KcDO!K6rLXdc8V z*@|LU3A^edOY-wGv42B>fKn`*C_W#^3yM2d9FeT>QY~Xpc$_q{0Svi5nzVF{ha2Sc zDjDfIK3?w_$^-85v=-{w`Pul?7)F+g6D*0!L`b6`oJQh=ub00#cn|Ap`Q#C1B~bDb zMR4Qw^G6CIP^Aj2;@fnEhFoqUz(;XcqZ~0T?4uY^fm#X?NDy6_%%ww!lR=hH*0adw zHn@V`MVzt_dnw|o7({C~q~jPxtZPfFz6el_<-PEQJjVf~q9HqINQyO(BQv0@2lC}m zNCH(l%{JnI7OQgpz@msc;;i)}&N#PUZR);0;xPQ_`8 370H|a4YJ*Es4gKI8sD83^|Ls0$)s7#B82(z ViN74l!6@n zJILTS0>CWEP7f1N41aqc?7@~fe%s*Cw2brFG7_tpo?s1tFPBM1^=7!nUtPm#yi3n9 zQ;(2$uuov?(vKj7qe=$z8zWdWnZ^(ElnSU-2EYg9!N}sP5p;$jlg3(9ghQkE!ck~= zD?{Odd*dfG{$sF{;PdW-pQ`2V6>R=p7wd`SpaqE<^bvw|dXZ@w;(~R>!d>_8v8pfL z1fwj(3F#apRDW18^sx+~1*h@s<9%?=Y+N&rP!D%8503ew+>3!F7h6J|FJa?_3e$n{ zSX>l4-?f;RDrN*b#>Z~r(l+Wiq=`23`ra5PTmQ*$4hPhObwXeP&iNS!6&3Dlz8P%~ zS*N@$39o%c2k&BlMy3~kTM1321L%ln(5M&tW& z^llDrg2Qhyl=GT8<|l(C&Snh*GP)ur$1a0rrPQ2G7T@2jHCzAbGP!Hc9?a#Atl4|f zstQ}7yE ri{U2R;rHbB(5``4*zo*3g_1%P zza^Wtrj5MV*8Y^6z|!vIpe1VYaakonjjiu^AdBSl>m?{2*s{eTxUhvgwlmdX(=mPh zcAqVG|A?wMZbp5Xq^Hi }T#wY=HQkGuK?TX;a8pJNhE3HdhpQR RZ+0= ELUR+{U<6#LHrimEI&Of4p#D2JF_%nE_Qq zp&XowMo{_ImU1hztvmQ+G!p)k8k~&XcY@y-y#%AwPz42D80z|Q!MeGD;{{TZM4Km2 zsu8`26NwG>(6*!x#)A158t^5yko0aCh`mo@2tONQB*S@dCJAtoJ6Psh00tF0t;R-Q zmBUz@p)M!+h0v;Psk3FAz%c;ShlCx}>kWh##SCbULT+r}i`Q!c*b$3vQ#2SV#^xs4 zUd;5u+YO*NL$N$8F#CyeI1j40*KQ@e9R-`Ns(aeIfK}_T_K2(l2#usu6O=&hDpY)L zRtUNYGHPrQfwvE*!fIx3GH9%5bQwZNU5NMh9=?1#6hjsRkC&4rL@rJsC=&|f)svZz z7VLX-P{~F8HuP E7iR;iuS3vlhrr3YOv=tcC?+?Vw&xHFJ{nJTc;BJ8*Dwdk|M{_ndq^7_k}MnyaOgc& Ey}WX_`c}2gw8l8YAO8A}qJ&bdg+|y# znq<&84nuyr%z)*PL5nVRd*Z7&MB}ke6@%)VB6w_93xe-~u$y2NaY_lb%l2RzC80^c zG@?%p@P2^0qTAG8>ifQ5>U&Ei{J!ruQm^&-LV0qfp|K>lpMG`m>dVWoUw=uGv-&ey z&9N^fP+y;o;r~LeJ$ZzTfdS$#uaX;LNZ<>F{B+f1k0Xjgl%0P4;_2n9cbC*Q|Iz9Y zl#DlVnbw=&O*0izY4CMAOL9TTZ^ozNQyI!i8zwkx-^PphfBq|Yna-ACr}~&u1`<_W zcq(SyB)AgtMl&7Hiq*ri*u+`Adid?*)01+_<9d5}@$4lJi++#FIe#lPF03IYD8=TV g6*E*o4df#3u}o0;kx{~b{L5ed7tozGj`H;a09MA|IRF3v literal 36579 zcmV)3K+C@$iwFoyrIcj=19N3za${&;X>Md?crI#l0PMYKliWs`j oStR)c3cQ1)Jej0eZ<#cUtUyrkZ+ekdH6>1~5`V0!@}f$X z5`@fN7U{AqvMK(q(u=HaQf#hnW_dP|1?!ulNv`2XldRz1MVidgYEsT_ILUOhd5?wG zO_o!w#d|vZ)2kr4A-t{f z #t`kuKM`EPyzq)Ps3h!Q9dK)_IdPFvzU9kN`M|+QgrF) ~vy70Yuf z4rNka( 4_emQA~WXf7|yl`VpkC%@` 7)=U?+ zR#7&ohb2mKzVvEc;iQR@t7Kh^qEMvFFPW5=v@m#WF3Z_k5!d3v`4F9}*OL%#AXyHh zwS7#g8n{1Zy{+b%Y)tK?WVy<-W<3*Q&^g6L-cALQA?Ae1be>)!-O!2uVf4uS`=R*v zBl)lM=i~Oj{}lLh(Ej(I 6>OEM{z~Ge)W0k91E%$B{>ZbW<7Z54i2Bas=|cP@LSA#iD&xOZmE3&Y`l$-t z#Od`4W-rF29!!hp37!@@>mqGpeS*Z7Nxn{HP7VJDnh+C7@-yhT*NKbwr_D-#WJT7P z-(?KU8=?+&1U3~ -;?u?nQZ=^RL{(_EwyagFEDV7*9ZU%Sb&8=Qg|fQiBi z_!s`+gE=Oa2~aa_%Ie0gvw~SntIHI7umX;%j)_-t3lS{6lf%#yE{VRzn*Pg7B55(v zG?^Tp9n9fIiH^x+-pe{g6yo(Tna+SF@J~ET`B&DQG4_yWg2`Il#K44AbtsLNke9K7 z#gO}@IngVQtk$rc_}BGv#mMX_RKYrd=@e~O^&*?Y+R2(_veIS0XtL$TLU16frfwSh zqqe_*LGAd+GgWn( rEz_m=c_w}{NpecYe_3a`_pk=Clg|tJQP~d#$P7aMP{W0bAZ| D-OrGCN%0@e=AJrZr87KO~ sAR zf~4B~;L|w$%Q^u94!5+lN@qYx66hIoZ;SU_qK4xPr$(JDc*4ghy{fA9N)6~5xfT5r zw=Hzy>) BOsj1oT(053D=V7<9360P0AQx56Q`CcNz{eY zJ5&@%i$0C!Sp~;@Ic<_l#)3+{2Gj^%2X6G5dFG#jdBz01gsS1L_{1bx-zTS>hV;~I zc=}SZDKE7FZehAu7fj6Om-Gi%V*M9r aeeyP z=Q`gRsQIkbw@z1Ek?v+IlUC))G*!I0qPtmL=K2i$wTjDkJivEpg`}!fJE8UI@kExf z5!?&?jG6V3 p-8be=60rp?Ny4P*KAJX0Jm5+*G@aDF%P&r<$- z!he`_k=W7xl091{?^3Z_>-EIBE#ck7|54i?;xKepbw{4LFi<|-X1!0h1l~;DFOd(I z;FHf8--?vMtzeP@OJ2^A?yc3a4XM-Bjrb`z?WMY6Ez@RE&f;YTN1j^fw@=Eh3756u z1eVM7$?2J5CE`h UV@ zP+_T102>e|IV ;m?c{$_cQ`z5P-#U&wJ;t561QS`~9E{^#R;}UPhj|0DI|5vL1T&T%} zU$Lf2_*>twfS>^#0xl(=!%~jlrxl8|R5AVc>hI-mY;XKFNuTHVq4^<`zy!1FvsmNS z^FBTJid!<@ut)Wt!Ou&tL)R$2dZ(_o_-V)_eh|qwUsb6_W=INClNRA|iH!PEO`zmY z3+OmSjb44xn7$UjrNjh4B4-7phd+r_eI59n-^7@JEEZL$XsM`NxXJ5-Q=d#L`7bPR ziE4W1jPVj9J`F1o{DfUmP1^~U`{GpKVS``mI`w}|)gRS|G<_%L4WC5XKLk%ipLCL6 zs%s*pn5DPM%O sfNLDBb-5wvh_W0LrB&0WM46NM0D8~AXXP{|DWZ1) z<6I!v_#weln!TfhJ`Dx}UzQuQ5@(s=C$GvH_(Bwr12Viku^{PNuQe^y{#t!`oF>d^ znlyo*#9`w*cPk-Y7rEZrFh8pja0OUbXSZ&rhFez}<2}w?meti$Lu}Sn5npA^LNlV3 zI%g_%uQq?zya{T&mg;f!e9-azwf-$8TL>ZeXE#4hZwUBy>t7-2v~{b1Bqd>?U-1-f zrJdteY9^{hMKxr@Lh4BGi87U+J7y^iD_a4AYn7=cvtA`v3RU<-$-ht=04{3C-_HRt zI r31_ z!e4PRo#I=PFRR&@e^X2sRf(!Jt_-AM4yj=d32%L0n_qD@v%h(6cqN#*p`4p6%~e5I zg{AscEwe&j$;_9!Kp8YP3w35RNctR!2w*)iKk!8qh;^X_7@cYQ?bZJ 13n%?iFW?dtm}PL|sxygxgh zsH=-}2jmZt;c##2vDxma=BlhoewEW+hs(+2Cay2I{<_ctDQLJTuk>%9 DCuTp%ULCQW$SIy#gI#(T*T8&K# zG%xj^X-q15F}<*PX>=NV?Iq6FdG4nP*@R6bK7684=%oX7Q?$%xtjblWJSGQ=uj@sy zJf_PEOiM0#vnmah*r>F)spk06DSE}|Z#xwVtiWl9$U=$WFM0B= ^sr;i=}Tw3dD@rE4W!`mmb1 z@^d^Edb@6hRm{X>t8FSjMcb{MV0}myO22N7Pywb4qX#U$e6U6{n7&v&SpOW49YtZA zELDa%^}PY1)kf_HG-4Eq1F3$GbgtGbZYTEE*ih5eQg%wP#