{"id":3323,"date":"2024-12-15T20:14:57","date_gmt":"2024-12-15T19:14:57","guid":{"rendered":"https:\/\/www.ciberpucela.com\/wp1\/?p=3323"},"modified":"2024-12-17T10:38:20","modified_gmt":"2024-12-17T09:38:20","slug":"boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum","status":"publish","type":"post","link":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/","title":{"rendered":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum.jpg\u00bb title_text=\u00bbSpectrum\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbroll\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Hoy os escribo esta entrada para hablaros del ZX Basic de Boriel, el cual conoc\u00ed por casualidad navegando por la web.\u00a0 Despu\u00e9s de profundizar un poco y de comprarme el libro de Juan Segura Dur\u00e1n (Duefectu), me ha parecido un compilador excelente.<\/p>\n<p style=\"text-align: justify;\">Yo soy de aquellos que iban a los centros comerciales a teclear programas (de la microhobby) en los Spectrum que hab\u00eda en exposici\u00f3n en los centros comerciales de la \u00e9poca (entonces continente) y que aprend\u00eda a solucionar los errores que se generaban al teclear, o que estaban en los propios listados. Tambi\u00e9n segu\u00ed los cursos y fichas de Basic Sinclair y de c\u00f3digo m\u00e1quina que publicaba semanalmente la revista (MH).<\/p>\n<p style=\"text-align: justify;\">Una vez que conoc\u00ed el ensamblador (c\u00f3digo m\u00e1quina), el hacer cualquier programa me pareci\u00f3 excesivamente complejo.\u00a0 De hecho llegue a tener un libro cuya tem\u00e1tica era ensamblar listados en Basic. Se ganaba algo porque te saltabas muchas veces la pila del calculador de la ROM del ZX, pero la mayor\u00eda de las veces, siempre usabas llamadas a las mismas rutinas escritas en la ROM.\u00a0 Ciertamente se ganaba algo de espacio de RAM y velocidad, pero no era sustancial.<\/p>\n<p style=\"text-align: justify;\">Despu\u00e9s de haber visto alguno de los v\u00eddeos que hay en canales de YouTube:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol style=\"text-align: justify;\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=6paFGTio8Nk\" target=\"_blank\" rel=\"noopener\" title=\"BORIEL BASIC para ZX SPECTRUM con DUEFECTU - ZX SPECTRUM\">BORIEL BASIC para ZX SPECTRUM con DUEFECTU &#8211; ZX SPECTRUM<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=lC6nmbQF5ak\" target=\"_blank\" rel=\"noopener\" title=\"Compilador Boriel ZX Basic: Convirtiendo tus programas BASIC a c\u00f3digo m\u00e1quina\">Compilador Boriel ZX Basic: Convirtiendo tus programas BASIC a c\u00f3digo m\u00e1quina<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Y de haber comprado el libro de Duefectu:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul style=\"text-align: justify;\">\n<li><a href=\"https:\/\/www.amazon.es\/gp\/product\/B0CQ8V5J9F?notRedirectToSDP=1&amp;ref_=dbs_mng_calw_2&amp;storeType=ebooks\" target=\"_blank\" rel=\"noopener\" title=\"Amazon libro de Defectu\">Amazon libro de Defectu<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/portada_libro.png\u00bb alt=\u00bbCaptura libro Juan Segura Dur\u00e1n %22Duefectu%22&#8243; title_text=\u00bbportada_libro\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb width=\u00bb43%\u00bb animation_style=\u00bbbounce\u00bb animation_direction=\u00bbbottom\u00bb animation_speed_curve=\u00bbease-in\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">\n<ul>\n<li style=\"list-style-type: none;\"><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">He quedado gratamente sorprendido de lo optimizado que est\u00e1 el compilador y del rendimiento que se llega a conseguir.<\/p>\n<p style=\"text-align: justify;\">En esta entrada evidenciar\u00e9 lo lento que es, y que de por s\u00ed ya era de todos los BASIC de los ordenadores de 8 bits de la \u00e9poca. Comparar\u00e9 con 3 ejemplos la diferencia de velocidad del <a href=\"https:\/\/es.wikipedia.org\/wiki\/Sinclair_BASIC\" target=\"_blank\" rel=\"noopener\" title=\"Sinclair BASIC\">Basic Sinclair<\/a> con respecto al mismo programa compilado con el ZXBasic Boriel.<\/p>\n<p style=\"text-align: justify;\">Siguiendo el libro de Defectu he usado el IDE que recomienda, pero para esta entrada usaremos solo la parte del compilador nativa en Python. Por lo dejamos que el usuario investigue o se compre el libro para profundizar. (Que conste que no tengo ning\u00fan tipo de beneficio por promocionar el libro, pero lo recomiendo si alg\u00fan nost\u00e1lgico quiere profundizar.)<\/p>\n<p style=\"text-align: justify;\">\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1>Fases de este tutorial:<\/h1>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li style=\"text-align: justify;\">Descargaremos , instalaremos y comprobaremos que Python funciona.<\/li>\n<li style=\"text-align: justify;\">Probaremos el emulador de ZX Spectrum Fuse<\/li>\n<li style=\"text-align: justify;\">Haremos los mismo con el Compilador ZX Basic de Boriel.<\/li>\n<li style=\"text-align: justify;\">Nos haremos con el fichero TAP\u00a0 (archivo de cinta de casette usado por los emuladores de Spectrum) que contiene todos los\u00a0 \u00a0 \u00a0 \u00a0 \u00a0ejemplos usados, tanto los del Sinclair BASIC, como los ya compilados, y pr\u00e1cticamos un poco el uso del emulador.<\/li>\n<li style=\"text-align: justify;\">Iremos comprobando el primer ejemplo de c\u00e1lculo de 100 n\u00fameros primos, en BASIC Sinclair, y luego lo comparamos\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 con 2 versiones compiladas, una en coma flotante y otra usando n\u00fameros enteros.<\/li>\n<li style=\"text-align: justify;\">Para el segundo ejemplo probamos la versi\u00f3n Sinclair contra Boriel de un cielo lleno de estrellas (1000 puntos aleatorios\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0en pantalla)<\/li>\n<li style=\"text-align: justify;\">Con el tercer ejemplo compararemos la versi\u00f3n Sinclair contra Boriel de una pantalla en la que llenaremos de c\u00edrculos desde el centro hasta el borde, y comprobaremos lo eficiente que es la rutina CIRCLE de Boriel.<\/li>\n<li style=\"text-align: justify;\">Estaremos compilando desde la consola de Python; detalles de todo lo visto en v\u00eddeo colgado en YouTube.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>1.- Instalaci\u00f3n de Python:<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">El proceso es el siguiente (ver im\u00e1genes):<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Buscar en google la p\u00e1gina de Python o usar <a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\" rel=\"noopener\" title=\"este enlace\">este enlace<\/a><\/li>\n<li style=\"text-align: justify;\">Localizar la \u00faltima versi\u00f3n para windows o usar <a href=\"https:\/\/www.python.org\/ftp\/python\/3.13.1\/python-3.13.1-amd64.exe\" target=\"_blank\" rel=\"noopener\" title=\"https:\/\/www.python.org\/ftp\/python\/3.13.1\/python-3.13.1-amd64.exe\">est\u00e1 versi\u00f3n 3.13.1<\/a><\/li>\n<li style=\"text-align: justify;\">Ejecutar instalador descargado , marcando la opci\u00f3n de meter en PAth del sistema python.exe, el resto es siguiente, siguiente&#8230;<\/li>\n<li style=\"text-align: justify;\">Una vez terminada la instalaci\u00f3n, buscamos s\u00edmbolo del sistema o CMD y lo ejecutamos como administrador.<\/li>\n<li style=\"text-align: justify;\">En la consola tecleamos python.exe -V, esto nos dir\u00e1 que versi\u00f3n se ha instalado y ser\u00e1 una prueba de que ya tenemos Python el el sistema.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3370,3369,3368,3367,3366,3365,3364,3363,3362,3361,3360&#8243; posts_number=\u00bb11&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>2.- Descargar e instalaci\u00f3n del emulador Fuse:<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">El proceso es el siguiente (ver im\u00e1genes):<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Buscar en google la p\u00e1gina de Python o usar <a href=\"https:\/\/fuse-emulator.sourceforge.net\/\" target=\"_blank\" rel=\"noopener\" title=\"este enlace\">este enlace<\/a><\/li>\n<li style=\"text-align: justify;\">Buscar la \u00faltima versi\u00f3n para windows.<\/li>\n<li style=\"text-align: justify;\">Ejecutar instalador descargado, el resto es siguiente, siguiente&#8230;<\/li>\n<li style=\"text-align: justify;\">Una vez terminada la instalaci\u00f3n, lo probamos.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3395,3394,3393,3392,3391,3390,3389,3388,3387,3386,3385,3384,3383,3382,3381,3380,3379,3378,3377,3376&#8243; posts_number=\u00bb20&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>3.- Descarga e <\/strong><strong>instalaci\u00f3n del zxbasic (Boriel):<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">El proceso es el siguiente (ver im\u00e1genes):<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">Buscar en google la p\u00e1gina de Python o usar <a href=\"https:\/\/www.boriel.com\/files\/zxb\/zxbasic-1.17.3-win32.zip\" target=\"_blank\" rel=\"noopener\" title=\"este enlace\">este enlace<\/a>. Ha fecha de esta entrada, es la \u00faltima versi\u00f3n para Windows.<\/li>\n<li style=\"text-align: justify;\">Solo hay que descomprimir el archivo y mover todo lo descomprimido a la carpeta que hab\u00edamos creado anteriormente (C:\\zxbasic)<\/li>\n<li style=\"text-align: justify;\">Luego con el s\u00edmbolo del sistema, accedemos a c:\\zxbasic tecleando <strong>cd \\zxbasic<\/strong>; y tecleamos <strong>python zxbc.py\u00a0<\/strong>con los que nos aparecer\u00e1 un breve descripci\u00f3n de la sintaxis.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3426,3425,3424,3423,3422,3421,3420,3419,3418,3417,3416,3415,3414,3413,3412,3411,3409,3408&#8243; posts_number=\u00bb20&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb background_enable_pattern_style=\u00bbon\u00bb background_pattern_style=\u00bbconfetti\u00bb background_pattern_color=\u00bbrgba(214,214,214,0.76)\u00bb box_shadow_style=\u00bbpreset2&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>&nbsp;<\/p>\n<p>Si tecleamos en el terminal:<\/p>\n<p>C:\\zxbasic&gt;<strong>python zxbc.py -h<\/strong><\/p>\n<p>Obtenemos la ayuda:<\/p>\n<p>&nbsp;<\/p>\n<p>usage: zxbc.py [-h] [-d] [-O OPTIMIZE] [-o OUTPUT_FILE] [-T] [-t] [-A] [-E] [&#8211;parse-only]<br \/>[-f {asm,bin,ir,sna,tap,tzx,z80}] [-B] [-a] [-S ORG] [-e STDERR] [&#8211;array-base ARRAY_BASE]<br \/>[&#8211;string-base STRING_BASE] [-Z] [-H HEAP_SIZE] [&#8211;heap-address HEAP_ADDRESS] [&#8211;debug-memory]<br \/>[&#8211;debug-array] [&#8211;strict-bool] [&#8211;enable-break] [&#8211;explicit] [-D DEFINES] [-M MEMORY_MAP] [-i]<br \/>[-I INCLUDE_PATH] [&#8211;strict] [&#8211;headerless] [&#8211;version] [&#8211;append-binary APPEND_BINARY]<br \/>[&#8211;append-headless-binary APPEND_HEADLESS_BINARY] [-N] [&#8211;arch ARCH]<br \/>[&#8211;expect-warnings EXPECT_WARNINGS] [-W DISABLE_WARNING] [+W ENABLE_WARNING] [&#8211;hide-warning-codes]<br \/>[-F CONFIG_FILE] [&#8211;save-config SAVE_CONFIG]<br \/>PROGRAM<\/p>\n<p>positional arguments:<br \/>PROGRAM BASIC program file<\/p>\n<p>options:<br \/>-h, &#8211;help show this help message and exit<br \/>-d, &#8211;debug Enable verbosity\/debugging output. Additional -d increase verbosity\/debug level<br \/>-O, &#8211;optimize OPTIMIZE<br \/>Sets optimization level. 0 = None (default level is 2<br \/>-o, &#8211;output OUTPUT_FILE<br \/>Sets output file. Default is input filename with .bin extension<br \/>-T, &#8211;tzx Sets output format to .tzx (default is .bin).<br \/>-t, &#8211;tap Sets output format to .tap (default is .bin).<br \/>-A, &#8211;asm Sets output format to .asm. DEPRECATED. Use -f<br \/>-E, &#8211;emit-backend Emits backend code (IR) instead of ASM or binary.<br \/>&#8211;parse-only Only parses to check for syntax and semantic errors<br \/>-f, &#8211;output-format {asm,bin,ir,sna,tap,tzx,z80}<br \/>Output format<br \/>-B, &#8211;BASIC Creates a BASIC loader which loads the rest of the CODE. Requires -T ot -t<br \/>-a, &#8211;autorun Sets the program to be run once loaded<br \/>-S, &#8211;org ORG Start of machine code. By default 32768<br \/>-e, &#8211;errmsg STDERR Error messages file (standard error console by default)<br \/>&#8211;array-base ARRAY_BASE<br \/>Default lower index for arrays (0 by default)<br \/>&#8211;string-base STRING_BASE<br \/>Default lower index for strings (0 by default)<br \/>-Z, &#8211;sinclair Enable by default some more original ZX Spectrum Sinclair BASIC features: ATTR, SCREEN$, POINT<br \/>-H, &#8211;heap-size HEAP_SIZE<br \/>Sets heap size in bytes (default 4768 bytes)<br \/>&#8211;heap-address HEAP_ADDRESS<br \/>Sets the heap address.<br \/>&#8211;debug-memory Enables out-of-memory debug<br \/>&#8211;debug-array Enables array boundary checking<br \/>&#8211;strict-bool Enforce boolean values to be 0 or 1<br \/>&#8211;enable-break Enables program execution BREAK detection<br \/>&#8211;explicit Requires all variables and functions to be declared before used<br \/>-D, &#8211;define DEFINES Defines de given macro. Eg. -D MYDEBUG or -D NAME=Value<br \/>-M, &#8211;mmap MEMORY_MAP<br \/>Generate label memory map<br \/>-i, &#8211;ignore-case Ignore case. Makes variable and function names insensitive<br \/>-I, &#8211;include-path INCLUDE_PATH<br \/>Add colon separated list of directories to add to include path. e.g. -I dir1:dir2<br \/>&#8211;strict Enables strict mode. Force explicit type declaration<br \/>&#8211;headerless Header-less mode: omit asm prologue and epilogue<br \/>&#8211;version show program&#8217;s version number and exit<br \/>&#8211;append-binary APPEND_BINARY<br \/>Appends binary to tape file (only works with -t or -T)<br \/>&#8211;append-headless-binary APPEND_HEADLESS_BINARY<br \/>Appends binary to tape file (only works with -t or -T)<br \/>-N, &#8211;zxnext Enables ZX Next asm extended opcodes<br \/>&#8211;arch ARCH Target architecture (defaults is&#8217;zx48k&#8217;). Available architectures: zx48k,zxnext<br \/>&#8211;expect-warnings EXPECT_WARNINGS<br \/>Expects N warnings: first N warnings will be silenced<br \/>-W, &#8211;disable-warning DISABLE_WARNING<br \/>Disables warning WXXX (i.e. -W100 disables warning with code W100)<br \/>+W, &#8211;enable-warning ENABLE_WARNING<br \/>Enables warning WXXX (i.e. -W100 disables warning with code W100)<br \/>&#8211;hide-warning-codes Hides WXXX codes<br \/>-F, &#8211;config-file CONFIG_FILE<br \/>Loads config from config file<br \/>&#8211;save-config SAVE_CONFIG<br \/>Save options into a config file<\/p>\n<h5>C:\\zxbasic&gt;<\/h5>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>4.- Descargar archivo de cinta (TAP) con los ejemplos:<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">El proceso es el siguiente (ver im\u00e1genes):<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li style=\"text-align: justify;\">Creamos una carpeta para pruebas dentro de nuestro directorio c:\\zxbasic, llamada \u00abpruebas\u00bb<\/li>\n<li style=\"text-align: justify;\">Descargamos el TAP en <a href=\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/todo_pruebas.zip\" target=\"_blank\" rel=\"noopener\" title=\"Cinta completa\">este enlace<\/a>, con los ejemplos que veremos despu\u00e9s. Descomprimimos el archivo y lo movemos a nuestra carpeta de pruebas. Tambi\u00e9n descargamos un archivos con las fuentes de los 4 programas que haremos con zxbasic en <a href=\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/pruebas_zxbasic_boriel.zip\" target=\"_blank\" rel=\"noopener\" title=\"ejemplo zxbasic boriel\">este enlace<\/a>. Luego descomprimimos y al igual que el TAP, lo movemos a la carpeta de pruebas.<\/li>\n<li style=\"text-align: justify;\">Probamos a cargar sin ejecutar los ejemplos. (Usaremos Merge para cargar sin ejecutar). As\u00ed vemos listados, el visor de cinta, etc.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3526,3525,3524,3523,3522,3521,3520,3519,3518,3517,3516,3515,3514,3513,3512,3511,3510,3509,3508,3507,3506,3505,3504,3503,3502,3501,3500&#8243; posts_number=\u00bb30&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>4.1 Modos de teclado Spectrum 16\/48\/+<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/chapa-y-teclas.png\u00bb title_text=\u00bbchapa y teclas\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb min_height=\u00bb55.8px\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Para ayuda podemos usar el manual\u00a0 del usuario descarg\u00e1ndolo <a href=\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum-48-K-Introduccion.pdf\" target=\"_blank\" rel=\"noopener\" title=\"Manual Spectrum\">aqu\u00ed<\/a>.<\/p>\n<p>O las p\u00e1ginas del manual del BASIC del coleccionable de Microhobby que pode\u00eds descargar <a href=\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Microbasic-5-17.pdf\" target=\"_blank\" rel=\"noopener\" title=\"Uso del teclado, Basic MH\">aqu\u00ed<\/a>.<\/p>\n<p>Y leer las p\u00e1ginas 8 a 10.<\/p>\n<p>De todos modos lo resumo:<\/p>\n<p>Vemos que hay 40 teclas, 4 filas de 10 teclas.<\/p>\n<p>Las \u00faltimas filas tienen el mismo funcionamiento, y la primera es ligeramente distinto.<\/p>\n<p><strong>Modos:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"text-align: justify;\">K, modo por defecto, se escribe token blanco de la interior de la tecla. NEW, PLOT, SAVE, CLEAR etc. En la primera fila su efecto es teclear los n\u00fameros. (N\u00fameros de l\u00ednea de los programas para empezar.)<\/li>\n<li style=\"text-align: justify;\">Modo E directo, nos imprime los tokens en verde del exterior superior de las 3 filas de teclas inferiores; como SIN, COS, LEN, USR. En la primera fila tiene el comportamiento de enmascarar la escritura con los colores indicados en los n\u00fameros del 0 al 7. El modo E se activa y desactiva con SS+CS (Caps Shift), en el PC CTRL + may\u00fasculas.<\/li>\n<li style=\"text-align: justify;\">Modo E + SS (Symbol Shift), nos imprime los tokens en rojo del exterior inferior de las 4 filas de teclas inferiores, como ERASE, PAPER, CIRCLE, ~, ACS, {, } . \u200bEl modo E se activa y desactiva con SS+CS (Caps Shift), en el PC CTRL + may\u00fasculas.\u200b Pero adem\u00e1s de la tecla final hay que pulsar SS (Symbol Shift), CTRL en el PC.<\/li>\n<li style=\"text-align: justify;\">En el modo L se escriben n\u00fameros y letras min\u00fasculas.<\/li>\n<li style=\"text-align: justify;\">El modo C nos permite\u00a0escribir n\u00fameros y letras may\u00fasculas. \u200bEl modo C se activa y desactiva con CS + 2, May\u00fasculas + 2 en el PC, o bloqueo may\u00fasculas del PC.<\/li>\n<li style=\"text-align: justify;\">En cualquier modo excepto el E, la tecla SS permite escribir los s\u00edmbolos y tokens (seg\u00fan la tecla) escritos sobre la tecla en rojo, como @, &amp;, STOP, AND, THEN. Se aplica a las 4 filas.<\/li>\n<li style=\"text-align: justify;\">Las teclas CS + 5, 6, 7 u 8 son las flechas me nos permiten mover el cursor de edici\u00f3n, equivalentes a los c\u00f3digos del joystick tipo Sinclair.<\/li>\n<li style=\"text-align: justify;\">La tecla CS + 1, nos permite bajar a editar a la zona de edici\u00f3n la l\u00ednea se\u00f1alada por el cursor de l\u00ednea en los listados. y usar los cursores antes indicados para editar donde lo necesitemos:<\/li>\n<li style=\"text-align: justify;\">Las teclas CS + 2 y CS +4, activa y desactivan respectivamente la inversi\u00f3n de v\u00eddeo, es decir intercambian los colores de la tinta (ink) y papel (paper) mientras escribimos.<\/li>\n<li style=\"text-align: justify;\">Las teclas CS + 9, activan el modo G o gr\u00e1fico, este nos permite escribir los gr\u00e1ficos de las teclas de los n\u00fameros 1 a 8 serigrafiados en blanco, y los UDG \u00f3 UGD en espa\u00f1ol (Gr\u00e1ficos Definidos de Usuario) si est\u00e1n pokeados (definidos)<\/li>\n<li style=\"text-align: justify;\">Las teclas CS + 0, es el delete, borra el token , texto o s\u00edmbolo a la izquierda del cursor cuando editamos.<\/li>\n<li style=\"text-align: justify;\">Y por \u00faltimo, porque ya no recuerdo m\u00e1s, el BREAK, CS + Space, may\u00fasculas y espacio en el PC. Interrumpe la ejecuci\u00f3n del BASIC de Sinclair. En el compilador zxbasic de Boriel no funcionar\u00eda por defecto, ya que es compilado; hay una opci\u00f3n en los argumentos del compilador que habilitar\u00edan la posibilidad de hacer BREAK.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>4.2 Probemos la carga con MERGE \u00ab\u00bb<\/strong><\/h1>\n<p><strong><\/strong><\/p>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3499,3498,3497,3496,3495,3494,3466,3465,3464,3463,3462,3461,3460,3459,3458,3457,3456,3455,3454,3453,3452&#8243; posts_number=\u00bb24&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>4.3 Alternativa para evitar usar los modos de teclado Spectrum 16\/48\/+. Usar FUSE como un Spectrum 128 o superior:<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3451,3450,3449,3448,3447,3446,3445,3444,3443,3442,3441&#8243; posts_number=\u00bb12&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>5.- Ejemplo n\u00ba1, 100 n\u00famero primos Basic Sinclair versus ZXB (ZX Basic Boriel)<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">El BS en general, a mi me ha gustado siempre, desde que aprend\u00ed a programar con \u00e9l usando los manuales de la revista MicroHobby. Despu\u00e9s con el tiempo examinando otras m\u00e1quinas, descubr\u00ed que era uno de los mas lentos en ejecuci\u00f3n, aunque con su metodolog\u00eda de uso de tokens era muy eficiente en el ahorro de memoria. Sin embargo BASICs como los del MSX (con su CIRCLE mas r\u00e1pido y SPRITES que creo que eran por hardware, sonido mejorado, disquetes teclado pro etc,) as\u00ed como unos de los BASICs de 8 bits que mas me gustaba (el locomotive BASIC) implementado en los AMSTRAD, con 3 modos de video, mas colores y mejor rendimiento, mas instrucciones ; dejaban atr\u00e1s al BASIC de Sinclair. Luego la adquisici\u00f3n de Sinclair por AMSTRAD no iba a ayudar, se har\u00edan competencia respecto a sus CPCs 464, 664, 6128.<\/p>\n<p style=\"text-align: justify;\">Uno de los cuellos de botella del BS a mmi parecer es la poca optimizaci\u00f3n de las rutinas ROM, que han creado un interprete vers\u00e1til y f\u00e1cil de aprender pero con carencias y poco depurado. Creo que fue una reescritura del que tenia el Sinclair ZX81, con colores y sonido; sali\u00f3 con prisa.\u00a0<\/p>\n<p style=\"text-align: justify;\">Ver detalles de la ROM en <a href=\"https:\/\/skoolkid.github.io\/rom\/\" target=\"_blank\" rel=\"noopener\" title=\"Detalles de la ROM Speccy\">este enlace<\/a>.<\/p>\n<p style=\"text-align: justify;\">Fruto de esto uno de los defectos es que todos los valores num\u00e9ricos que procesa el Spectrum aunque fuesen enteros, 0 , 1 u otros siempre se operan y almacenan en la memoria como n\u00fameros en punto (coma) flotante; lo cual hace que se dediquen muchos ciclos de proceso a la pila del calculador; ralentizando cualquier c\u00e1lculo.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>Ahora cargaremos el ejemplo de los 100 n\u00fameros primos con SB (Sinclair Basic) veremos cuanto tarda, para despu\u00e9s hacer lo propio compilando 2 versiones del mismo programa, uno en float (n\u00fameros en coma flotante) y otro con integers (enteros).<\/p>\n<p>Veamos el listado SB:<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/listado_primos_SINCLAIR.png\u00bb alt=\u00bbListado 100 n\u00fameros primos en Sinclair BASIC\u00bb title_text=\u00bblistado_primos_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En el listado, calculamos 100 n\u00fameros primos (definida la cantidad en L15) usando el m\u00e9todo de la criba de Erat\u00f3stenes, L30 a L260. Las L5 y L2000 calculan la diferencia de tiempo usando unas variables del sistema que se usan como contadores de ciclos (FRAMES), el ZX refrescaba la pantalla y chequeaba las lecturas del teclado (ULA de Ferranti) cada 20ms , es decir 50 veces por segundo.<\/p>\n<p style=\"text-align: justify;\">En L2010 se muestra el tiempo resultante y de hace un Pause 0, para no borrar nada en la pantalla hasta pulsar alguna tecla.<\/p>\n<p style=\"text-align: justify;\">Aunque ya sabemos cargar con MERGE, lo apropiado es cargar con LOAD \u00ab\u00bb, ya que MERGE tiene la propiedad de evitar la autoejecuci\u00f3n de los programas BASIC.<\/p>\n<p style=\"text-align: justify;\">Como vemos a continuaci\u00f3n, el proceso es el siguiente para todos los ejemplos de la cinta, independientemente de si son SB o ZXB.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Teclear LOAD \u00ab\u00bb y ENTER. (Tanto en modo 48K como en Spectrum 128K y superiores). LOAD = tecla J en modo K, y comillas salen con SS y P<\/li>\n<li style=\"text-align: justify;\">Habiendo ya cargado el fichero TAP, pulsamos F8 para poner en marcha la casette emulada.<\/li>\n<li style=\"text-align: justify;\">En cuanto veamos que se est\u00e1 ejecutando el programa cargado, pulsamos nuevamente F8 para pausar la casette.<\/li>\n<li style=\"text-align: justify;\">Una vez terminada la ejecuci\u00f3n, para limpiar la memoria pulsamos F5 y luego espacio (RESET en FUSE) .<\/li>\n<li style=\"text-align: justify;\">Repetimos el punto 1, para cargar el siguiente programa.<\/li>\n<\/ol>\n<p>[\/et_pb_text][et_pb_gallery gallery_ids=\u00bb3553,3552,3551,3550&#8243; show_pagination=\u00bboff\u00bb zoom_icon_color=\u00bb#ffffff\u00bb hover_overlay_color=\u00bbrgba(0,0,0,0)\u00bb hover_icon=\u00bb&#xe042;||divi||400&#8243; _builder_version=\u00bb4.27.4&#8243; title_level=\u00bbh1&#8243; title_font=\u00bb||||||||\u00bb title_text_align=\u00bbcenter\u00bb title_text_color=\u00bbrgba(0,0,0,0)\u00bb title_font_size=\u00bb1px\u00bb caption_font=\u00bb||||||||\u00bb caption_text_align=\u00bbjustify\u00bb use_background_color_gradient=\u00bbon\u00bb background_color_gradient_direction=\u00bb137deg\u00bb background_color_gradient_stops=\u00bb#ffffff 0%|#98c2f9 100%\u00bb background_color_gradient_start=\u00bb#ffffff\u00bb background_color_gradient_end=\u00bb#98c2f9&#8243; background_enable_image=\u00bboff\u00bb parallax=\u00bbon\u00bb text_orientation=\u00bbleft\u00bb title_text_shadow_style=\u00bbpreset1&#8243; title_text_shadow_color=\u00bbrgba(0,0,0,0)\u00bb border_radii=\u00bbon|2px|2px|2px|2px\u00bb border_color_all=\u00bb#000000&#8243; text_shadow_style=\u00bbpreset5&#8243; text_shadow_color=\u00bb#edf000&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_gallery][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como podemos ver, en BS (BASIC SINCLAIR) el c\u00e1lculo de los 100 primeros primos ha demorado 125 segundos.<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/primos_SINCLAIR.png\u00bb alt=\u00bbCaptura Primos BASIC Sinclair\u00bb title_text=\u00bbprimos_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset4&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||3px|||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Ahora para comparar, cargamos el siguiente programa de la cinta, o sea , reset, LOAD \u00ab\u00bb enter, F8 (marcha casette) , (cargando), F8 (pausa casette),(ejecutando).<\/p>\n<p style=\"text-align: justify;\">Este es el listado fuente, como puede verse he mantenido los n\u00fameros de l\u00ednea del SB, aunque en ZXB son opcionales.<\/p>\n<p style=\"text-align: justify;\">Solo cambia en esencia L15 en la que DIM define las variables como Float.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb background_enable_pattern_style=\u00bbon\u00bb background_pattern_style=\u00bbconfetti\u00bb background_pattern_color=\u00bbrgba(214,214,214,0.76)\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset2&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>5 LET ini=PEEK 23672+PEEK 23673*256+PEEK 23674*65536<br \/>10 BORDER 5: PAPER 5: CLS<br \/>15 DIM a,siguiente,primo,cont,lm,m as Float<br \/>20 LET a=100:REM INPUT \u00abCuantos numeros quieres calcular \u00ab;a<br \/>30 IF a=1 THEN PRINT 1;\u00bb \u00ab;:GO TO 2000<br \/>32 IF a=2 THEN PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;:GO TO 2000<br \/>33 IF a=3 THEN PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;3;\u00bb \u00ab;:GO TO 2000<br \/>34 IF a&lt;=0 THEN GO TO 2000<br \/>35 LET siguiente=4<br \/>40 PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;3;\u00bb \u00ab;<br \/>45 LET primo=0<br \/>50 LET cont=4<br \/>60 LET lm=(INT (SQR siguiente))+1<br \/>100 FOR m=2 TO lm<br \/>120 IF (siguiente-(INT (siguiente\/m))*m)=0 THEN LET primo=0: GO TO 200<br \/>140 NEXT m<br \/>160 LET primo=1:LET cont=cont+1<br \/>180 IF primo=1 THEN PRINT siguiente;\u00bb \u00ab;<br \/>200 LET siguiente=siguiente+1<br \/>240 IF cont&gt;a THEN GO TO 2000<br \/>260 GO TO 60<br \/>2000 LET fin=PEEK 23672+PEEK 23673*256+PEEK 23674*65536<br \/>2010 PRINT AT 23,0;\u00bbtiempo = \u00ab;(fin-ini)\/50;\u00bb segs.\u00bb<br \/>2020 PAUSE 0<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/primosFloat.png\u00bb alt=\u00bbCaptura Primos BASIC Boriel usando n\u00fameros en coma flotante..\u00bb title_text=\u00bbprimosFloat\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||3px|||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como vemos en la imagen anterior, la ejecuci\u00f3n esta vez a pesar se usar Floats, que siguen usando las rutinas de c\u00e1lculo de la ROM, a demorado 89 segundos, es decir unos 36 segundos. menos, lo cual es un mejora sustancial, debido a que ahora no funciona en el interprete de BASIC nativo, sino un compilado a c\u00f3digo m\u00e1quina, aunque si se usan rutinas de la ROM para el c\u00e1lculo con Float, no se incluyen rutinas de c\u00e1lculo con Float en ZXB , ya que har\u00eda grande el tama\u00f1o del c\u00f3digo generado y la diferencia de rendimiento no ser\u00eda sustancial.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">Ahora para comparar, cargamos el siguiente programa de la cinta, o sea , reset, LOAD \u00ab\u00bb enter, F8 (marcha casette) , (cargando), F8 (pausa casette),(ejecutando).<\/p>\n<p style=\"text-align: justify;\">Este es el listado fuente, como puede verse he mantenido los n\u00fameros de l\u00ednea del SB, aunque en ZXB son opcionales.<\/p>\n<p style=\"text-align: justify;\">Solo cambia en esencia L15 en la que DIM define las variables como Uinteger.<\/p>\n<p style=\"text-align: justify;\">\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb background_enable_pattern_style=\u00bbon\u00bb background_pattern_style=\u00bbconfetti\u00bb background_pattern_color=\u00bbrgba(214,214,214,0.76)\u00bb box_shadow_style=\u00bbpreset2&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>5 LET ini=PEEK 23672+PEEK 23673*256+PEEK 23674*65536<br \/>10 BORDER 5: PAPER 5: CLS<br \/>15 DIM a,siguiente,primo,cont,lm,m as Uinteger<br \/>20 LET a=100:REM INPUT \u00abCuantos numeros quieres calcular \u00ab;a<br \/>30 IF a=1 THEN PRINT 1;\u00bb \u00ab;:GO TO 2000<br \/>32 IF a=2 THEN PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;:GO TO 2000<br \/>33 IF a=3 THEN PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;3;\u00bb \u00ab;:GO TO 2000<br \/>34 IF a&lt;=0 THEN GO TO 2000<br \/>35 LET siguiente=4<br \/>40 PRINT 1;\u00bb \u00ab;2;\u00bb \u00ab;3;\u00bb \u00ab;<br \/>45 LET primo=0<br \/>50 LET cont=4<br \/>60 LET lm=(INT (SQR siguiente))+1<br \/>100 FOR m=2 TO lm<br \/>120 IF (siguiente-(INT (siguiente\/m))*m)=0 THEN LET primo=0: GO TO 200<br \/>140 NEXT m<br \/>160 LET primo=1:LET cont=cont+1<br \/>180 IF primo=1 THEN PRINT siguiente;\u00bb \u00ab;<br \/>200 LET siguiente=siguiente+1<br \/>240 IF cont&gt;a THEN GO TO 2000<br \/>260 GO TO 60<br \/>2000 LET fin=PEEK 23672+PEEK 23673*256+PEEK 23674*65536<br \/>2010 PRINT AT 23,0;\u00bbtiempo = \u00ab;(fin-ini)\/50;\u00bb segs.\u00bb<br \/>2020 PAUSE 0<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/primosInteger.png\u00bb alt=\u00bbCaptura Primos BASIC Boriel usando n\u00fameros enteros.\u00bb title_text=\u00bbprimosInteger\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||3px|||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como vemos en la imagen anterior, la ejecuci\u00f3n esta vez\u00a0 a demorado 65 segundos, es decir pr\u00e1cticamente la mitad de tiempo que con Float, lo cual es un mejora sustancial.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>6.- Ejemplo n\u00ba2, 1000 puntos sobre fondo negro (Stars) Basic Sinclair versus ZXB (ZX Basic Boriel)<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En esta ocasi\u00f3n vamos a comparar sobre todo capacidades gr\u00e1ficas.<\/p>\n<p style=\"text-align: justify;\">Como antes procedemos a cargar el siguiente programa de la cinta en SB.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">Veamos el listado SB:<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/listado_Stars_SINCLAIR.png\u00bb alt=\u00bbListado de programa de 1000 estrellas en Sinclair BASIC\u00bb title_text=\u00bblistado_Stars_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En el listado, mostramos 1000 pixels en pantalla. El SB limita el \u00e1rea gr\u00e1fica a una resoluci\u00f3n de 256 pixels de ancho por 176 pixels de alto.\u00a0 Las L5 y L2000 calculan la diferencia de tiempo entre el inicio de la ejecuci\u00f3n y el final.<\/p>\n<p style=\"text-align: justify;\">En L2010 se muestra el tiempo resultante y de hace un Pause 0, para no borrar nada en la pantalla hasta pulsar alguna tecla.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Teclear LOAD \u00ab\u00bb y ENTER. (Tanto en modo 48K como en Spectrum 128K y superiores). LOAD = tecla J en modo K, y comillas salen con SS y P<\/li>\n<li style=\"text-align: justify;\">Habiendo ya cargado el fichero TAP, pulsamos F8 para poner en marcha la casette emulada.<\/li>\n<li style=\"text-align: justify;\">En cuanto veamos que se est\u00e1 ejecutando el programa cargado, pulsamos nuevamente F8 para pausar la casette.<\/li>\n<li style=\"text-align: justify;\">Una vez terminada la ejecuci\u00f3n, para limpiar la memoria pulsamos F5 y luego espacio (RESET en FUSE) .<\/li>\n<li style=\"text-align: justify;\">Repetimos el punto 1, para cargar el siguiente programa.<\/li>\n<\/ol>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como podemos ver, en BS (BASIC SINCLAIR) el c\u00e1lculo y PLOTeo de 1000 estrellas ha demorado 64 segundos.<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Stars_SINCLAIR.png\u00bb alt=\u00bbCaptura c\u00edrculos BASIC Sinclair\u00bb title_text=\u00bbStars_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset4&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||3px|||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Ahora para comparar, cargamos el siguiente programa de la cinta, o sea , reset, LOAD \u00ab\u00bb enter, F8 (marcha casette) , (cargando), F8 (pausa casette),(ejecutando).<\/p>\n<p style=\"text-align: justify;\">Este es el listado fuente, como puede verse he eliminado los n\u00fameros de l\u00ednea del SB. Adem\u00e1s no he definido ning\u00fan tipo de variable, por lo que ZXB ya se encarga de usar \u00f3ptimamente la mas adecuada. Otra mejora que se observa, es que puedo hacer PLOT a toda la pantalla es decir a una resoluci\u00f3n de 256 x 192 pixeles, cosa que SB no permite.\u00a0<\/p>\n<p style=\"text-align: justify;\">Hay que hacer notar al igual que con el programa de los primos de ZXB, que al no haber habilitado en los argumentos del compilador la opci\u00f3n permitir BREAK, la opci\u00f3n de pulsar CS + SPACE no funcionar\u00e1.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb background_enable_pattern_style=\u00bbon\u00bb background_pattern_style=\u00bbconfetti\u00bb background_pattern_color=\u00bbrgba(214,214,214,0.76)\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset2&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>let ini=peek 23674*65536+peek 23673*256+peek 23672<br \/>border 0<br \/>paper 0<br \/>ink 7<br \/>cls<br \/>FOR i = 0 TO 1000:<br \/>PLOT INK 1 + RND * 7; RND * 256, RND * 192<br \/>NEXT i<br \/>let fin=peek 23674*65536+peek 23673*256+peek 23672<br \/>print at 23,0;\u00bbtiempo =\u00bb;(fin-ini)\/50;\u00bbsegs\u00bb<br \/>pause 0<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Stars.png\u00bb alt=\u00bbCaptura c\u00edrculos BASIC Boriel\u00bb title_text=\u00bbStars\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset4&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como podemos ver, en ZXB el c\u00e1lculo y PLOTeo de 1000 estrellas ha demorado \u00abSOLO \u00bb 8 segundos. Es decir 8 veces m\u00e1s r\u00e1pido.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>7.-Ejemplo n\u00ba3, c\u00edrculos conc\u00e9ntricos desde el centro de lapantalla, hasta el bordeBasic Sinclair versus ZXB (ZX Basic Boriel)<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En esta ocasi\u00f3n vamos a comparar sobre todo capacidades gr\u00e1ficas.<\/p>\n<p style=\"text-align: justify;\">Como antes procedemos a cargar el siguiente programa de la cinta en SB.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">Veamos el listado SB:<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/listado_circulos_SINCLAIR-e1734191576945.png\u00bb alt=\u00bbListado de programa de c\u00edrculos conc\u00e9ntricos del centro hac\u00eda el borde en Sinclair BASIC\u00bb title_text=\u00bblistado_circulos_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En el listado, mostramos unos 87 circulos desde el centro de la pantalla hacia afuera. El SB limita el \u00e1rea gr\u00e1fica a una resoluci\u00f3n de 256 pixels de ancho por 176 pixels de alto.\u00a0 Las L5 y L2000 calculan la diferencia de tiempo entre el inicio de la ejecuci\u00f3n y el final.<\/p>\n<p style=\"text-align: justify;\">En L2010 se muestra el tiempo resultante y de hace un Pause 0, para no borrar nada en la pantalla hasta pulsar alguna tecla.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Teclear LOAD \u00ab\u00bb y ENTER. (Tanto en modo 48K como en Spectrum 128K y superiores). LOAD = tecla J en modo K, y comillas salen con SS y P<\/li>\n<li style=\"text-align: justify;\">Habiendo ya cargado el fichero TAP, pulsamos F8 para poner en marcha la casette emulada.<\/li>\n<li style=\"text-align: justify;\">En cuanto veamos que se est\u00e1 ejecutando el programa cargado, pulsamos nuevamente F8 para pausar la casette.<\/li>\n<li style=\"text-align: justify;\">Una vez terminada la ejecuci\u00f3n, para limpiar la memoria pulsamos F5 y luego espacio (RESET en FUSE) .<\/li>\n<li style=\"text-align: justify;\">Repetimos el punto 1, para cargar el siguiente programa.<\/li>\n<\/ol>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como podemos ver, en BS (BASIC SINCLAIR) el c\u00e1lculo y dibujado de los 87 c\u00edrculos ha demorado 65,8 segundos.<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/circulos_SINCLAIR.png\u00bb alt=\u00bbCaptura c\u00edrculos BASIC Sinclair\u00bb title_text=\u00bbcirculos_SINCLAIR\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset4&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||3px|||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Ahora para comparar, cargamos el siguiente programa de la cinta, o sea , reset, LOAD \u00ab\u00bb enter, F8 (marcha casette) , (cargando), F8 (pausa casette),(ejecutando).<\/p>\n<p style=\"text-align: justify;\">Este es el listado fuente, como puede verse he eliminado los n\u00fameros de l\u00ednea del SB. Adem\u00e1s no he definido ning\u00fan tipo de variable, por lo que ZXB ya se encarga de usar \u00f3ptimamente la mas adecuada. Otra mejora que se observa, es que puedo hacer PLOT a toda la pantalla es decir a una resoluci\u00f3n de 256 x 192 pixeles, cosa que SB no permite.\u00a0<\/p>\n<p style=\"text-align: justify;\">Hay que hacer notar al igual que con el programa de los primos de ZXB, que al no haber habilitado en los argumentos del compilador la opci\u00f3n permitir BREAK, la opci\u00f3n de pulsar CS + SPACE no funcionar\u00e1.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb background_enable_pattern_style=\u00bbon\u00bb background_pattern_style=\u00bbconfetti\u00bb background_pattern_color=\u00bbrgba(214,214,214,0.76)\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset2&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p>Dim i as ubyte<br \/>Dim ini,fin as ulong<\/p>\n<p>let ini=peek 23674*65536+peek 23673*256+peek 23672<br \/>border 0<br \/>paper 7<br \/>ink 0<br \/>cls<\/p>\n<p>FOR i = 0 TO 95:<br \/>circle 127,95,i<br \/>NEXT i<br \/>let fin=peek 23674*65536+peek 23673*256+peek 23672<br \/>print at 23,0;\u00bbtiempo =\u00bb;(fin-ini)\/50;\u00bbsegs\u00bb<br \/>pause 0<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_image src=\u00bbhttps:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/circulos.png\u00bb alt=\u00bbCaptura c\u00edrculos BASIC Boriel.\u00bb title_text=\u00bbcirculos\u00bb align=\u00bbcenter\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbfold\u00bb box_shadow_style=\u00bbpreset4&#8243; global_colors_info=\u00bb{}\u00bb][\/et_pb_image][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Como podemos ver, en ZXB el dibujado de 96 c\u00edrculos ha demorado \u00ab<strong>SOLO<\/strong>\u00bb 5 segundos. Es decir 12 veces m\u00e1s r\u00e1pido. Adem\u00e1s ha dibujado m\u00e1s c\u00edrculos y mas grandes ya que ZXB no tiene los l\u00edmites del tama\u00f1o de pantalla del SB, si no que tenemos el \u00e1rea gr\u00e1fica completa de 256 x 192 p\u00edxeles.<\/p>\n<p style=\"text-align: justify;\">Pero \u00bfC\u00f3mo lo ha hecho?. Haciendo un poco de memoria, yo recuerdo que los MSX ya dibujaban mas r\u00e1pido las circunferencias que el Speccy, de hecho este hace todo el c\u00edrculo con un s\u00f3lo trazo continuo en sentido antihorario, lo mismo est\u00e1 haciendo uso de funciones trigonom\u00e9tricas; mientras que en el MSX se crean 8 sectores de arco que se dibujan al un\u00edsono aprovechando que todos estos sectores tienen simetr\u00edas entre s\u00ed.<\/p>\n<p style=\"text-align: justify;\">ver v\u00eddeo:<\/p>\n<p>[\/et_pb_text][et_pb_video src=\u00bbhttps:\/\/www.youtube.com\/watch?v=nRbtuB6MIIM\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_video][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">Seg\u00fan he visto, permite en la misma instrucci\u00f3n elipses y arcos, ya que permite que imaginariamente el c\u00edrculo se trace por fuera del \u00e1rea visible; en SB no lo permite. Creo que usa el algoritmo de BRESENHAM. Ver v\u00eddeo:<\/p>\n<p>[\/et_pb_text][et_pb_video src=\u00bbhttps:\/\/www.youtube.com\/watch?v=K3N9y1RIT_w\u00bb _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_video][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<h1><strong>8.-Pruebas compilador Python<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb|4px||||\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"text-align: justify;\">En esta ocasi\u00f3n vamos a comprobar todo lo hecho y algunos trucos desde la l\u00ednea de comandos a la hora de ejecutar el compilador.<\/p>\n<p style=\"text-align: justify;\">Todo esto lo vemos en el siguiente v\u00eddeo:<\/p>\n<p>[\/et_pb_text][et_pb_video src=\u00bbhttps:\/\/youtu.be\/uDB-JUXO3P0&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb animation_style=\u00bbroll\u00bb global_colors_info=\u00bb{}\u00bb][\/et_pb_video][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.16&#8243; global_colors_info=\u00bb{}\u00bb][et_pb_row _builder_version=\u00bb4.16&#8243; global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.16&#8243; custom_padding=\u00bb|||\u00bb global_colors_info=\u00bb{}\u00bb custom_padding__hover=\u00bb|||\u00bb][et_pb_comments _builder_version=\u00bb4.27.4&#8243; background_color=\u00bb#d2edf9&#8243; custom_button=\u00bbon\u00bb button_text_color=\u00bb#0400f0&#8243; button_bg_color=\u00bb#ffffff\u00bb button_border_color=\u00bb#0400f0&#8243; button_border_radius=\u00bb36px\u00bb button_font=\u00bb||||||||\u00bb button_icon=\u00bb&#x45;||divi||400&#8243; button_icon_color=\u00bb#0400f0&#8243; hover_enabled=\u00bb0&#8243; global_colors_info=\u00bb{}\u00bb body_text_color=\u00bb#000000&#8243; sticky_enabled=\u00bb0&#8243; button_alignment=\u00bbright\u00bb box_shadow_style_button=\u00bbpreset2&#8243; animation_style=\u00bbbounce\u00bb admin_label=\u00bbComnetarios\u00bb][\/et_pb_comments][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy os escribo esta entrada para hablaros del ZX Basic de Boriel, el cual conoc\u00ed por casualidad navegando por la web.\u00a0 Despu\u00e9s de profundizar un poco y de comprarme el libro de Juan Segura Dur\u00e1n (Duefectu), me ha parecido un compilador excelente. Yo soy de aquellos que iban a los centros comerciales a teclear programas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3341,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"aside","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[30,32],"tags":[157,158,162,160,161,159],"class_list":["post-3323","post","type-post","status-publish","format-aside","has-post-thumbnail","hentry","category-retroinformatica","category-zx-spectrum","tag-boriel-basic","tag-boriel-compiler","tag-compilador-basic-zx-spectrum","tag-sinclair-basic-vs-boriel-basic","tag-sinclair-basic-vs-zx-basic","tag-zx-basic","post_format-post-format-aside"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes<\/title>\r\n<meta name=\"description\" content=\"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\" \/>\r\n<meta property=\"og:locale\" content=\"es_ES\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes\" \/>\r\n<meta property=\"og:description\" content=\"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Blog personal de Celes\" \/>\r\n<meta property=\"article:published_time\" content=\"2024-12-15T19:14:57+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-12-17T09:38:20+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"2364\" \/>\r\n\t<meta property=\"og:image:height\" content=\"1759\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"celestinox\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"celestinox\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"52 minutos\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\"},\"author\":{\"name\":\"celestinox\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20\"},\"headline\":\"Boriel ZX Basic, el compilador definitivo para ZX Spectrum\",\"datePublished\":\"2024-12-15T19:14:57+00:00\",\"dateModified\":\"2024-12-17T09:38:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\"},\"wordCount\":6653,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20\"},\"image\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg\",\"keywords\":[\"Boriel BASIC\",\"Boriel Compiler\",\"Compilador BASIC ZX Spectrum\",\"Sinclair BASIC vs Boriel Basic\",\"Sinclair BASIC vs ZX Basic\",\"ZX Basic\"],\"articleSection\":[\"Retroinformatica\",\"ZX Spectrum\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\",\"url\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\",\"name\":\"Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes\",\"isPartOf\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg\",\"datePublished\":\"2024-12-15T19:14:57+00:00\",\"dateModified\":\"2024-12-17T09:38:20+00:00\",\"description\":\"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage\",\"url\":\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg\",\"contentUrl\":\"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg\",\"width\":2364,\"height\":1759,\"caption\":\"Libro y Spectrum.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.ciberpucela.com\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Boriel ZX Basic, el compilador definitivo para ZX Spectrum\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#website\",\"url\":\"https:\/\/www.ciberpucela.com\/wp1\/\",\"name\":\"Blog personal de Celes\",\"description\":\"Blog personal de Celes\",\"publisher\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.ciberpucela.com\/wp1\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20\",\"name\":\"celestinox\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9a7eb901956c578fe8254a191105722c46fc2c3921e17503db4259769e7c9a3c?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9a7eb901956c578fe8254a191105722c46fc2c3921e17503db4259769e7c9a3c?s=96&d=retro&r=g\",\"caption\":\"celestinox\"},\"logo\":{\"@id\":\"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/image\/\"}}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes","description":"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/","og_locale":"es_ES","og_type":"article","og_title":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes","og_description":"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.","og_url":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/","og_site_name":"Blog personal de Celes","article_published_time":"2024-12-15T19:14:57+00:00","article_modified_time":"2024-12-17T09:38:20+00:00","og_image":[{"width":2364,"height":1759,"url":"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg","type":"image\/jpeg"}],"author":"celestinox","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"celestinox","Tiempo de lectura":"52 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#article","isPartOf":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/"},"author":{"name":"celestinox","@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20"},"headline":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum","datePublished":"2024-12-15T19:14:57+00:00","dateModified":"2024-12-17T09:38:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/"},"wordCount":6653,"commentCount":0,"publisher":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20"},"image":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg","keywords":["Boriel BASIC","Boriel Compiler","Compilador BASIC ZX Spectrum","Sinclair BASIC vs Boriel Basic","Sinclair BASIC vs ZX Basic","ZX Basic"],"articleSection":["Retroinformatica","ZX Spectrum"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/","url":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/","name":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum - Blog personal de Celes","isPartOf":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage"},"image":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg","datePublished":"2024-12-15T19:14:57+00:00","dateModified":"2024-12-17T09:38:20+00:00","description":"Muestro como instalar Python y ZXBASIC, us\u00e1ndolo para comparar en Sinclair BASIC contra el de Boriel.","breadcrumb":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#primaryimage","url":"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg","contentUrl":"https:\/\/www.ciberpucela.com\/wp1\/wp-content\/uploads\/2024\/12\/Spectrum_y_libro.jpg","width":2364,"height":1759,"caption":"Libro y Spectrum."},{"@type":"BreadcrumbList","@id":"https:\/\/www.ciberpucela.com\/wp1\/2024\/12\/15\/boriel-zx-basic-el-compilador-definitivo-para-zx-spectrum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.ciberpucela.com\/wp1\/"},{"@type":"ListItem","position":2,"name":"Boriel ZX Basic, el compilador definitivo para ZX Spectrum"}]},{"@type":"WebSite","@id":"https:\/\/www.ciberpucela.com\/wp1\/#website","url":"https:\/\/www.ciberpucela.com\/wp1\/","name":"Blog personal de Celes","description":"Blog personal de Celes","publisher":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ciberpucela.com\/wp1\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/db76506132774573ea3f62456de71a20","name":"celestinox","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9a7eb901956c578fe8254a191105722c46fc2c3921e17503db4259769e7c9a3c?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a7eb901956c578fe8254a191105722c46fc2c3921e17503db4259769e7c9a3c?s=96&d=retro&r=g","caption":"celestinox"},"logo":{"@id":"https:\/\/www.ciberpucela.com\/wp1\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/posts\/3323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/comments?post=3323"}],"version-history":[{"count":70,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/posts\/3323\/revisions"}],"predecessor-version":[{"id":3613,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/posts\/3323\/revisions\/3613"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/media\/3341"}],"wp:attachment":[{"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/media?parent=3323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/categories?post=3323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ciberpucela.com\/wp1\/wp-json\/wp\/v2\/tags?post=3323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}