From 64c6cb078931bb77a6a0890d1afbfde08821f819 Mon Sep 17 00:00:00 2001 From: Rafal Michalski Date: Thu, 4 Jan 2024 05:29:36 +0100 Subject: [PATCH] update --- CHANGELOG_md.html | 16 ++- Z80/MathInt/Macros.html | 143 +++++++++++++++++++++------ created.rid | 6 +- examples/quat3d128.tap | Bin 6908 -> 6996 bytes js/search_index.js | 2 +- js/search_index.js.gz | Bin 36579 -> 36672 bytes table_of_contents.html | 213 +++++++++++++++++++++------------------- 7 files changed, 237 insertions(+), 143 deletions(-) diff --git a/CHANGELOG_md.html b/CHANGELOG_md.html index 0083ce2..e3ba2ca 100644 --- a/CHANGELOG_md.html +++ b/CHANGELOG_md.html @@ -61,6 +61,7 @@

Table of Contents

+

If k_int24 is false and clrahl is true 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.

-
# 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
 end
@@ -1908,7 +1938,7 @@

Note: -
# 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 a th.

+
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
+
+ +
+ + + + @@ -2764,7 +2843,7 @@

Note: -
# 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=%tvfYTmTB
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)k&#w$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^6YUX!{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
\n

A 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\n

NZ Z NC C PO PE P M\n
\n

Additionally 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\n

ld 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\n

ld 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.\n

If index is nil, returns a pointer label instead.\n

If 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 if Range 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 if Range 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 in th8|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 optional type.\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.\n

The 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 or c 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 into b or c 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 into b or c 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 into b or c 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 a counter. 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 a chan_name.\n

output — 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.\n

Provide 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.\n

A 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. A channel 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. Provide args 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.\n

T-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.\n

T-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 a value 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 pair sh|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 with vb as twos complement signed 8-bit integers.\n

Provide va and vb 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 a value as unsigned 16-bit integers.\n

Provide 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 pair sh|sl as unsigned 16-bit integers.\n\n

CF, 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 with ss as unsigned integers.\n

A 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 in k 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-bit m. 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 in hl 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 the y distance.\n

Input 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 the y distance.\n

Input 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 the x distance.\n

Input …\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. Provide args 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.\n

Provide …\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.\n

NOTE — 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 and dy. Used by: Macros.gfx_clip_line.\n

NOTE — 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 and l 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 optional name 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 an alloc 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 by index.\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.\n

Give 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 and f2 registers into the a register.\n

Evaluates 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\n

foo, :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\n

foo 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.\n

A 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 register aa.\n

A 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 than line_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. Repeats repeat times. If repeat is nil 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. Repeats repeat times. If repeat is nil 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 of registers …\n"],["macro_import","Z80::Program","Z80/Program.html#method-i-macro_import","(program)","

Imports macros from another program class.\n

A 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. Provide args 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 with other: 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 area source to memory area dest.\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 area source to memory area dest 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, assume m is a label name to define. Returns a named label.\n

A 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 — when true 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 unsigned m. 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 unsigned m. 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 signed m. 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 unsigned m. 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 unsigned m. 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 signed m.\n

See 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.\n

Give 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.\n

Pass …\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 and line_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 or TYPE_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.\n

Each …\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. The length 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. The length value should be a positive integer.\n

The 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 with hl pointing to the 1st byte of a ZXReal 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\n

hl, 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. If repeat is nil 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. If repeat is nil 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 invoke ei 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.\n

Provides 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.\n

For …\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.\n

Provides 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 or iy to array of 8bit registers: [hi, lo].\n

Useful 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 a counter 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-bit th|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.\n

The 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 a Hash, 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.\n

Instances 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.\n

Suitable 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.\n

Give 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 different type. 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.\n

NOTE — 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 is nil the Z 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 is nil the Z 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. The ticks 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. The ticks 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 the f1 and f2 registers.\n

Modifies: 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
\n

A 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\n

NZ Z NC C PO PE P M\n
\n

Additionally 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\n

ld 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\n

ld 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.\n

If index is nil, returns a pointer label instead.\n

If 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 if Range 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 if Range 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 in th8|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 optional type.\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.\n

The 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 or c 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 into b or c 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 into b or c 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 into b or c 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 a counter. 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 a chan_name.\n

output — 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.\n

Provide 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.\n

A 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. A channel 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. Provide args 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.\n

T-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.\n

T-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 a value 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 pair sh|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 with vb as twos complement signed 8-bit integers.\n

Provide va and vb 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 a value as unsigned 16-bit integers.\n

Provide 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 pair sh|sl as unsigned 16-bit integers.\n\n

CF, 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 with ss as unsigned integers.\n

A 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 in k 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-bit m. 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 in hl 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 the y distance.\n

Input 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 the y distance.\n

Input 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 the x distance.\n

Input …\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. Provide args 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.\n

Provide …\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.\n

NOTE — 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 and dy. Used by: Macros.gfx_clip_line.\n

NOTE — 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 and l 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 optional name 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 an alloc 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 by index.\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.\n

Give 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 and f2 registers into the a register.\n

Evaluates 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\n

foo, :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\n

foo 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.\n

A 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 register aa.\n

A 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 than line_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. Repeats repeat times. If repeat is nil 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. Repeats repeat times. If repeat is nil 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 of registers …\n"],["macro_import","Z80::Program","Z80/Program.html#method-i-macro_import","(program)","

Imports macros from another program class.\n

A 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. Provide args 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 with other: 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 area source to memory area dest.\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 area source to memory area dest 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, assume m is a label name to define. Returns a named label.\n

A 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 — when true 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 unsigned m. 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 unsigned m. 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 signed m. 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 unsigned m. 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 unsigned m. 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 signed m.\n

See 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.\n

Give 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.\n

Pass …\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 and line_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 or TYPE_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.\n

Each …\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. The length 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. The length value should be a positive integer.\n

The 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 with hl pointing to the 1st byte of a ZXReal 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\n

hl, 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. If repeat is nil 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. If repeat is nil 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 invoke ei 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.\n

Provides 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 a th.\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.\n

For …\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.\n

Provides 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 or iy to array of 8bit registers: [hi, lo].\n

Useful 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 a counter 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-bit th|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.\n

The 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 a Hash, 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.\n

Instances 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.\n

Suitable 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.\n

Give 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 different type. 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.\n

NOTE — 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 is nil the Z 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 is nil the Z 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. The ticks 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. The ticks 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 the f1 and f2 registers.\n

Modifies: 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;fxfQXlEwc9nV3jmb zy`cI@m8s$ApR1&*4YqV*bF)fSdHi!RM2dztB#zDSB9%`MJh4^=b!*`C1+MqR-)6-{VXllq-V#&+#zQx+-B zVOrNBwMwS%yidUE6lS=oaJ^quuQ6VvX7JOVqO+a zAZd|Rv@X)+8kYqShm?9SFDsZk8s9o^vIYj36&Df!CsCXDQ_q?xol$>af2I}vbgE)` zPQ{^2%4-^>#{Fy!;|EFtL~5DPzOs4sBEiYg88mx#7EQAG#gv3PmjaTV56+)@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_9JcYs$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$BJnG_@|1d7`R{S{dtM-4T>d%Fm zO!yURs)WDw4GRbw&>`Sb@;NN!_JvkZo&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!=FvoE(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=_xzWeNB3K^NWd)`sm%Le(#!75dT-;Q1{OA7^!*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!r4iRcBP$%(W5XkR z>6Zyy;zPg0hkl8V{1P9vO05ecoEzRXnB|FKoyPZ^J85?4F$YaR5pdeExg zYW1Mi#F1a*$Scj^0x6q{ZeiBA8Caja@U65z6cpv_LmkYPee*{tI@bF5msE*5^NZb-%?wp+%wx5-*|3lYbj-`b!m zJB*|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>` zzgEYoMRGn}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 zlB;;ayL)if(I~;Mllk2MEaZIVi>)cTR{s%PBG zhYyjU)A@jEoAo|#GL@gUP}YDw>N~ODzHY$b{q{h@FPFhTn!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}?smi`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)wJHF**<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 zhtbA%&tQbt8g+8O;vue# zZS~|iGVH8)dGlR1;bT|RBWMy6f=9-=GBWj-9;bIxUp0c4?WK0EW6Eks^gW!zLseY( zc3{4J^4bD~509yx5y?&?$cZ?dT~x1EsCgFD#*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;GEeC5KSe>g|45u)IcO7goci#u}$bYPL@D|0DAO7P?l2cI0A{r$=D5&Ux+ zk!K2EPqS5>HfpqArpvF+Ntp`hBK(d%T+Whu@edK@UR_-sCKX;Q58fTjEV``^dszk7m`Aj&%I7=*hL zWZ#2((5db0zPHq0PPaSp5?IA(zAlv11m;-@8_;5!&jTKQjj~75jHRL;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+n7NxB%RZbE`OQQfV5&CFJ{fBnr9kIJ<}^ww%$j{EkeT`npK_CtNZmD zCqxQq0)4k-hGF3?K8$sPqwI~4!T?$qDLniVSnQP&bs=qu8!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|6H`T4D5l#DSr16DqhlW zQn=2s9G$hYNM(i=vS3`JZ(oyqjIaGxY=$iABxM;pUJl9vLmoz-oF3ray|oNpk|kGr z`Z2w4-Z5V)-~8>&a>qQ3$Bfz5AUWBe7KMNFT28l!z{LS(!M>ELvw~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#aWq2CZyYJVERRq2qbVIv*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 zWSD8~^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`hE4qPz~9PF5x}ygDzhS7mRp0k!c*Xb&nie0~T}O8UL~&&qrI)}dEwz#4o3 z=gDEv95qA&>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$ZNm+I$Fy&MY8shy+1-AVBe)RqdD$;i-5;`0wWN*iwC?v85#ELj89S8>Ip& zgbU~#FH;~6P4Ey~Uug_)9MA?TDvR`tq?>Xk+`}zsW}6hNCzwg2&?pjg!gx{W%W;p0nvPfC%(>tke2b}V62ORKk zTW7m_aiw*NQV!ftDCR(#mo~=xuA+Ce3Mpn335!d$j1^NbXeg2o=pT?Q**`2f2crXUO*>Yl84ewTyYC0A2Slj8Y zwy&@3otin*W%3U08>0-J zOeD2NpCXrst^W46IlWDrq)I5>_rFQe$p>4YVh~AYcYyEV-HaEfOn2;HFdm<^H}Jt= zL_XVc0~hHG)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<&d0oXW28oM@lX_x4H^f)TA++f&(*@WRPFxxP<>OesNR*?>0@8*Fle@wQJsk{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*iZcpvF6Qrbyf@5A2YCtW#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_!i4gj)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<#ttURm&#C^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+ z5t5NYKcU(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_7PbK^?(_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~7f#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{CjGv7US53ACMLMCcCVi!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+NT60xYLE>dWZljp}6y|$(TcT#3dn)o8>=?K@3=fYF2-mc%`E3b)8}(#dRO&(F zJS(1-wYRkR`GT{05!lhdh|`gVbDEHo82ngDuDx>==%t_X=IcC5zN@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|plOUsS6xLsu zWtU6#Lvc%Kv;i=Bw;wIhgdf^jN+Z`}`EjB?pw2ok^-YwN0pLUg1{!Tr`Y)nz(}cCL zp7+pWk zuJhrjB9Xz_0Ka6z(WLGrWB*~I|Z*j6A=%1JiZHlstj*)G*_)S zRJ$#IeSQ|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$m1!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{?Io4NuBFocis;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@NTLsugo>_>M~tq*wMEL$LZzSnO=IQpLH%h zF$8oD8DAzMVCzP|NUDAJWpWI$ql+Yf|7El*4-6pfjKx%t`qYu%bygkgBh9m}} zMh1KSGQ%<7afq;bh0Q_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}NOWSJhE1b@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 zOwWf8N`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@k3m4yhbgP2J0rCc3if0W%Y=>^lD!3eh!E1LMhG3sW>)j)_ALMkbDebgExF$GW3iVvvEp zKJV(rUBlVhiTk&&-jK6VldLfV?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>&w0u)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>TRK+rLsz$>*#?;G0- ze@x_ZIMwVeED5?PvW_#q5aWnyZ8AlJtVt0>k4=lt6uP2SS!WzQSRQGRsYn#R`E@-K zc03UV#^i(Z2Uth4!0xo@6qY@6fN8>F-=5Wixg|!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??eNqNwGfXFo(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{7WO?;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 zL&#FH!F_G-X!L>hP9AQsCyq2>dHQfIpSmq0zjX)JOxM>=L5--&Q6yeUDNyLfU{%}j zi8OckP9@`R-+xButo?(vZ_2g0bL=}>baRtPhMf$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}Noe$Cx`*%@8!k0?v5l_#rJo>`oUmj-7F zC{tZvJg@HRmCLwpW|LF$Qk;hIYs5y2<;S{bhDdzV+N`r*{3xr^JV!Z`tgQrnqm=?6T0A_@*o#c-~cu4?XP- z#UNt@__L3B4?p>$)q96-~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#U4bXs+T1Sh*>8?hX7%V1lB(RQjB1w*PD}Q z1lT*i{^FbC<42xmscgq58dnP=mX!)`Q{hZ@schE;fjqD|LiJ)djE_%JD#p#6zSwx;F^nq1*Hkc+gL-Vcft zMl<_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>kh8lXH9dW83Y 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@yHswfrD=TxsYf<343-1B>_-zQ;X`)ZM|>x| zb12^tnAEX@*q_4yu*1DlIKXT4&8WAE3cc-lj}5i5mAr2~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|?>%bYQ8wqc=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@%hJF(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=^= zTIpR@T$b;2{757^rlxt~zs!>8hx0c$cr-~Cso#Dt362T~HI#^| zm`|FId>pN&`*3fa;k&*GJ#=!bz(cIDiX$~#?F5!#Q7DT(Xa%pkM1t7fayX5T_(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**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%DyGkmebK(>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|mjBZ6o+&<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`{VAkT%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_yHM*)xSTDO?nVF!|Mw`AT4gT+rJAVe zb0RN^BvcChbQo|Qo}dtE524cM7=;k9?+=QSkjX<(27~$862cC*&mTp&P7m2)+D(P^ z5(@;@+4Gq~ii zpcRh!BQarkG?4vT*H+Lk76{c8y-@?8rWxvjd+$e5@(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@5lDW zRFqJ(6w^IR_MdIr+YCDj<-Dc$bhJ{y?*xX$8*JT5dlt9javr>Rd1lzOVTS4s)HhJe z(K5YarU&0hQhk|{j#QOv<0HW=i7+5wvEG|OP9x#ESV!V&#AgsAvkL}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;{vjFB>sI2Nyng-CCbG1o1%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_VggjAFm^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<8AFG4r>eM8T|{wfPWG|-iILN* zEl;-*>H*PttsB(@gLYc0fbF4MUxLz^tp+sQ9~IR^RmTR3z;u`U+Y$wMtn zXr)v|)|d!3Wq`sgi6P>PrMC~$jl>S;rv%G1pV9&IB=t^e7$ezk(2qa{97sbjdIB1&=#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=ZPG6VWd(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|4kUfJkWvywY8|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|_>%qURNWmwvtbQAKk~@)_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@(RIoGfKn`*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_`8370H|a4YJ*Es4gKI8sD83^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}7yEri{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;a8pJNhE3HdhpQRRZ+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{~F8HuPE7iR;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 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®RqeJmqx@l+H=!I^-q3{u}I$0(i^D`(lz2u|q3xOQgi&B;2x`9x!N?CboFAgr1?jMLMVTjS2` z5Wrgzb3JeY*nv?f7DaAmGR+(`684CL$O)IJFjFgPiG^%#sMT!c&31m=)i>C|1M>Ww zl5k4Mcgc@Z@1(HN94}rwG|L+eWKu&!qJhPJ{N}}hfZBENY?C7UD0p`DTwMun!g8>B za0zhRJc3azIrat$4n$aTs{As#_(BrMs48}%y|IWV4cMiN*l26%`PNJ2VZ;SH^!wRUglFQ zZ>CZCV?6I32t11-~(R2}Y@*3JSU~ z6tm+hZBv2c1yYhmn7y#-+!Vc>70^!9l1Dd0d8yEQE z^_l>7)S}zw8w?d=a}#YZGQIG23n8;+DU&Dn;kCulu`+)I-3W|J4U#dyn3aokR{7iz)c!?p-23t)fAbV*LI`BDR?N%$awF;GrN7nJN=&8| z#u@(bx4-8F)F;g?!Y&LIYy87nzS0p)`KcnRo`!WLc^~DhWujJaZN5~jjY541_eag|YM1}0bp{H?o481;ZSZC@RuXCOO*%dsIyM rJDG7|{V?@0u=!{C1eH<EsmT2`WB1Limq={pPages

  • v1.1.1.pre-2 +
  • Z80: +
  • ZXLib:
  • v1.1.0 @@ -2668,9 +2670,9 @@

    Methods

    ZXUtils::MusicBox::TrackCommands
  • - #immediate? + #immediate? — - Z80::Program + Z80::Label
  • #immediate? @@ -2678,9 +2680,9 @@

    Methods

    Z80::Alloc
  • - #immediate? + #immediate? — - Z80::Label + Z80::Program
  • #import @@ -2722,26 +2724,26 @@

    Methods

    ZXUtils::MusicBox::SongCommands -
  • - #indexable? - — - Z80::Label -
  • #indexable?Z80::Alloc
  • - #init + #indexable? — - ZXUtils::AYMusicPlayer + Z80::Label
  • #initZXUtils::AYMusic +
  • + #init + — + ZXUtils::AYMusicPlayer +
  • #init_multitasking — @@ -2863,14 +2865,14 @@

    Methods

    ZXLib::Basic::Program
  • - #loop_to + #loop_to — - ZXUtils::MusicBox::CommonInstrumentCommands + ZXUtils::MusicBox::MultitrackCommands
  • - #loop_to + #loop_to — - ZXUtils::MusicBox::MultitrackCommands + ZXUtils::MusicBox::CommonInstrumentCommands
  • #lt @@ -2883,14 +2885,14 @@

    Methods

    ZXUtils::MusicBox::CommonInstrumentCommands
  • - #m + #m — - ZXUtils::MusicBox::MultitrackCommands + ZXUtils::MusicBox::CommonInstrumentCommands
  • - #m + #m — - ZXUtils::MusicBox::CommonInstrumentCommands + ZXUtils::MusicBox::MultitrackCommands
  • #m1 @@ -3158,14 +3160,14 @@

    Methods

    ZXUtils::MusicBox::CommonInstrumentCommands
  • - #name= + #name= — - Z80::Label + Z80::Alloc
  • - #name= + #name= — - Z80::Alloc + Z80::Label
  • #ne @@ -3328,14 +3330,14 @@

    Methods

    ZXLib::Basic::Tokenizer
  • - #play + #play — - ZXUtils::AYMusic + ZXUtils::MusicBox::TrackCommands
  • - #play + #play — - ZXUtils::MusicBox::TrackCommands + ZXUtils::AYMusic
  • #play_chord @@ -3358,24 +3360,24 @@

    Methods

    ZXLib::Gfx::Draw::Macros
  • - #pointer? + #pointer? — - Z80::Label + Z80::Alloc
  • - #pointer? + #pointer? — - Z80::Program::Register + Z80::Program
  • - #pointer? + #pointer? — - Z80::Alloc + Z80::Program::Register
  • - #pointer? + #pointer? — - Z80::Program + Z80::Label
  • #prepare_args_draw_line_to @@ -3507,26 +3509,26 @@

    Methods

    Z80::MathInt::Macros -
  • - #rpt - — - ZXUtils::MusicBox::CommonInstrumentCommands -
  • #rptZXUtils::MusicBox::MultitrackCommands
  • - #save_tap + #rpt — - Z80::TAP::HeaderBody + ZXUtils::MusicBox::CommonInstrumentCommands
  • #save_tapZ80::TAP +
  • + #save_tap + — + Z80::TAP::HeaderBody +
  • #save_tap — @@ -3577,6 +3579,11 @@

    Methods

    Z80::Utils::Shuffle::Macros +
  • + #sign_extend + — + Z80::MathInt::Macros +
  • #sincos_from_angle — @@ -3603,14 +3610,14 @@

    Methods

    ZXUtils::Multitasking
  • - #start + #start — - ZXUtils::Benchmark + ZXUtils::Gallery
  • - #start + #start — - ZXUtils::Gallery + ZXUtils::Benchmark
  • #start_chord @@ -3648,14 +3655,14 @@

    Methods

    ZXUtils::MusicBox::MultitrackCommands
  • - #sub + #sub — - ZXUtils::MusicBox::TrackCommands + ZXUtils::MusicBox::InstrumentCommands
  • - #sub + #sub — - ZXUtils::MusicBox::InstrumentCommands + ZXUtils::MusicBox::TrackCommands
  • #sub_from @@ -3667,26 +3674,26 @@

    Methods

    ZXUtils::MusicBox::InstrumentCommands -
  • - #sub_track - — - ZXUtils::MusicBox::TrackCommands -
  • #sub_trackZXUtils::MusicBox::MultitrackCommands
  • - #sublabel? + #sub_track — - Z80::Label + ZXUtils::MusicBox::TrackCommands
  • #sublabel?Z80::Alloc +
  • + #sublabel? + — + Z80::Label +
  • #sublabel_access_expression? — @@ -3778,14 +3785,14 @@

    Methods

    Z80::Alloc
  • - #to_alloc + #to_alloc — - Z80::Alloc + Z80::Label
  • - #to_alloc + #to_alloc — - Z80::Label + Z80::Alloc
  • #to_debug @@ -3793,14 +3800,14 @@

    Methods

    Z80::Program::Register
  • - #to_i + #to_i — - Z80::Label + Z80::Alloc
  • - #to_i + #to_i — - Z80::Program::Register + Z80::Label
  • #to_i @@ -3808,9 +3815,9 @@

    Methods

    Z80::Program::Condition
  • - #to_i + #to_i — - Z80::Alloc + Z80::Program::Register
  • #to_label @@ -3832,20 +3839,15 @@

    Methods

    ZXUtils::MusicBox::Song -
  • - #to_name - — - Z80::Label -
  • #to_nameZ80::Alloc
  • - #to_player_module + #to_name — - ZXUtils::MusicBox::Song + Z80::Label
  • #to_player_module @@ -3853,9 +3855,9 @@

    Methods

    ZXUtils::MusicBox::Song::SongModule
  • - #to_program + #to_player_module — - ZXUtils::MusicBox::Song::SongModule + ZXUtils::MusicBox::Song
  • #to_program @@ -3863,9 +3865,14 @@

    Methods

    ZXUtils::MusicBox::Song
  • - #to_s + #to_program — - ZXLib::Basic::Line + ZXUtils::MusicBox::Song::SongModule + +
  • + #to_s + — + ZXLib::Basic::Vars
  • #to_s @@ -3873,29 +3880,29 @@

    Methods

    Z80::TAP::HeaderBody
  • - #to_s + #to_s — - ZXLib::Basic::Vars + ZXLib::Basic::Program
  • - #to_s + #to_s — - Z80::Label + Z80::Alloc
  • - #to_s + #to_s — - ZXLib::Basic::Variable + ZXLib::Basic::Line
  • - #to_s + #to_s — - ZXLib::Basic::Program + ZXLib::Basic::Variable
  • - #to_s + #to_s — - Z80::Alloc + Z80::Label
  • #to_source @@ -3933,9 +3940,9 @@

    Methods

    ZXLib::Basic::Variable
  • - #to_tap_chunk + #to_tap_chunk — - Z80::TAP + ZXLib::Basic::Program
  • #to_tap_chunk @@ -3943,9 +3950,9 @@

    Methods

    Z80::TAP
  • - #to_tap_chunk + #to_tap_chunk — - ZXLib::Basic::Program + Z80::TAP
  • #to_z80bin @@ -4147,18 +4154,13 @@

    Methods

    ZXUtils::MusicBox::CommonInstrumentCommands -
  • - #w - — - ZXUtils::MusicBox::CommonInstrumentCommands -
  • #wZXUtils::MusicBox::MultitrackCommands
  • - #wait + #wZXUtils::MusicBox::CommonInstrumentCommands @@ -4167,6 +4169,11 @@

    Methods

    ZXUtils::MusicBox::MultitrackCommands +
  • + #wait + — + ZXUtils::MusicBox::CommonInstrumentCommands +
  • #wait_io — @@ -4217,6 +4224,11 @@

    Methods

    ZXLib::Gfx::Macros +
  • + #| + — + Z80::Label +
  • #| — @@ -4227,11 +4239,6 @@

    Methods

    Z80::Program::Register -
  • - #| - — - Z80::Label -
  • #~