mirror of https://github.com/zxdos/zxuno.git
5916 lines
254 KiB
HTML
5916 lines
254 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="generator" content="Asciidoctor 2.0.10">
|
||
<meta name="description" content="Manual en castellano de ZXDOS+ y gomaDOS+">
|
||
<meta name="keywords" content="Manual, Castellano, ZXDOS+, gomaDOS+">
|
||
<meta name="author" content="kounch">
|
||
<title>Manual de ZXDOS+ y gomaDOS+</title>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
|
||
<style>
|
||
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
|
||
/* Uncomment @import statement to use as custom stylesheet */
|
||
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
|
||
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
|
||
audio,video{display:inline-block}
|
||
audio:not([controls]){display:none;height:0}
|
||
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
|
||
a{background:none}
|
||
a:focus{outline:thin dotted}
|
||
a:active,a:hover{outline:0}
|
||
h1{font-size:2em;margin:.67em 0}
|
||
abbr[title]{border-bottom:1px dotted}
|
||
b,strong{font-weight:bold}
|
||
dfn{font-style:italic}
|
||
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
|
||
mark{background:#ff0;color:#000}
|
||
code,kbd,pre,samp{font-family:monospace;font-size:1em}
|
||
pre{white-space:pre-wrap}
|
||
q{quotes:"\201C" "\201D" "\2018" "\2019"}
|
||
small{font-size:80%}
|
||
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
|
||
sup{top:-.5em}
|
||
sub{bottom:-.25em}
|
||
img{border:0}
|
||
svg:not(:root){overflow:hidden}
|
||
figure{margin:0}
|
||
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
|
||
legend{border:0;padding:0}
|
||
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
|
||
button,input{line-height:normal}
|
||
button,select{text-transform:none}
|
||
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
|
||
button[disabled],html input[disabled]{cursor:default}
|
||
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
|
||
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
|
||
textarea{overflow:auto;vertical-align:top}
|
||
table{border-collapse:collapse;border-spacing:0}
|
||
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
|
||
html,body{font-size:100%}
|
||
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
|
||
a:hover{cursor:pointer}
|
||
img,object,embed{max-width:100%;height:auto}
|
||
object,embed{height:100%}
|
||
img{-ms-interpolation-mode:bicubic}
|
||
.left{float:left!important}
|
||
.right{float:right!important}
|
||
.text-left{text-align:left!important}
|
||
.text-right{text-align:right!important}
|
||
.text-center{text-align:center!important}
|
||
.text-justify{text-align:justify!important}
|
||
.hide{display:none}
|
||
img,object,svg{display:inline-block;vertical-align:middle}
|
||
textarea{height:auto;min-height:50px}
|
||
select{width:100%}
|
||
.center{margin-left:auto;margin-right:auto}
|
||
.stretch{width:100%}
|
||
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
|
||
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
|
||
a{color:#2156a5;text-decoration:underline;line-height:inherit}
|
||
a:hover,a:focus{color:#1d4b8f}
|
||
a img{border:0}
|
||
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
|
||
p aside{font-size:.875em;line-height:1.35;font-style:italic}
|
||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
|
||
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
|
||
h1{font-size:2.125em}
|
||
h2{font-size:1.6875em}
|
||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
|
||
h4,h5{font-size:1.125em}
|
||
h6{font-size:1em}
|
||
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
|
||
em,i{font-style:italic;line-height:inherit}
|
||
strong,b{font-weight:bold;line-height:inherit}
|
||
small{font-size:60%;line-height:inherit}
|
||
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
|
||
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
|
||
ul,ol{margin-left:1.5em}
|
||
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
|
||
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
|
||
ul.square{list-style-type:square}
|
||
ul.circle{list-style-type:circle}
|
||
ul.disc{list-style-type:disc}
|
||
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
|
||
dl dt{margin-bottom:.3125em;font-weight:bold}
|
||
dl dd{margin-bottom:1.25em}
|
||
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
|
||
abbr{text-transform:none}
|
||
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
|
||
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
|
||
blockquote cite::before{content:"\2014 \0020"}
|
||
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
|
||
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
|
||
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
|
||
h1{font-size:2.75em}
|
||
h2{font-size:2.3125em}
|
||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
|
||
h4{font-size:1.4375em}}
|
||
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
|
||
table thead,table tfoot{background:#f7f8f7}
|
||
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
|
||
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
|
||
table tr.even,table tr.alt{background:#f8f8f7}
|
||
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
|
||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
|
||
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
|
||
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
|
||
.clearfix::after,.float-group::after{clear:both}
|
||
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
|
||
:not(pre)>code.nobreak{word-wrap:normal}
|
||
:not(pre)>code.nowrap{white-space:nowrap}
|
||
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
|
||
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
|
||
pre>code{display:block}
|
||
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
|
||
em em{font-style:normal}
|
||
strong strong{font-weight:400}
|
||
.keyseq{color:rgba(51,51,51,.8)}
|
||
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
|
||
.keyseq kbd:first-child{margin-left:0}
|
||
.keyseq kbd:last-child{margin-right:0}
|
||
.menuseq,.menuref{color:#000}
|
||
.menuseq b:not(.caret),.menuref{font-weight:inherit}
|
||
.menuseq{word-spacing:-.02em}
|
||
.menuseq b.caret{font-size:1.25em;line-height:.8}
|
||
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
|
||
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
|
||
b.button::before{content:"[";padding:0 3px 0 2px}
|
||
b.button::after{content:"]";padding:0 2px 0 3px}
|
||
p a>code:hover{color:rgba(0,0,0,.9)}
|
||
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
|
||
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
|
||
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
|
||
#content{margin-top:1.25em}
|
||
#content::before{content:none}
|
||
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
|
||
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
|
||
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
|
||
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
|
||
#header .details span:first-child{margin-left:-.125em}
|
||
#header .details span.email a{color:rgba(0,0,0,.85)}
|
||
#header .details br{display:none}
|
||
#header .details br+span::before{content:"\00a0\2013\00a0"}
|
||
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
|
||
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
|
||
#header #revnumber{text-transform:capitalize}
|
||
#header #revnumber::after{content:"\00a0"}
|
||
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
|
||
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
|
||
#toc>ul{margin-left:.125em}
|
||
#toc ul.sectlevel0>li>a{font-style:italic}
|
||
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
|
||
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
|
||
#toc li{line-height:1.3334;margin-top:.3334em}
|
||
#toc a{text-decoration:none}
|
||
#toc a:active{text-decoration:underline}
|
||
#toctitle{color:#7a2518;font-size:1.2em}
|
||
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
|
||
body.toc2{padding-left:15em;padding-right:0}
|
||
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
|
||
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
|
||
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
|
||
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
|
||
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
|
||
body.toc2.toc-right{padding-left:0;padding-right:15em}
|
||
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
|
||
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
|
||
#toc.toc2{width:20em}
|
||
#toc.toc2 #toctitle{font-size:1.375em}
|
||
#toc.toc2>ul{font-size:.95em}
|
||
#toc.toc2 ul ul{padding-left:1.25em}
|
||
body.toc2.toc-right{padding-left:0;padding-right:20em}}
|
||
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
|
||
#content #toc>:first-child{margin-top:0}
|
||
#content #toc>:last-child{margin-bottom:0}
|
||
#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
|
||
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
|
||
#content{margin-bottom:.625em}
|
||
.sect1{padding-bottom:.625em}
|
||
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
|
||
.sect1{padding-bottom:1.25em}}
|
||
.sect1:last-child{padding-bottom:0}
|
||
.sect1+.sect1{border-top:1px solid #e7e7e9}
|
||
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
|
||
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
|
||
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
|
||
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
|
||
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
|
||
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
|
||
details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
|
||
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
|
||
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
|
||
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
|
||
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
|
||
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
|
||
.admonitionblock>table td.icon{text-align:center;width:80px}
|
||
.admonitionblock>table td.icon img{max-width:none}
|
||
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
|
||
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
|
||
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
|
||
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
|
||
.exampleblock>.content>:first-child{margin-top:0}
|
||
.exampleblock>.content>:last-child{margin-bottom:0}
|
||
.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
|
||
.sidebarblock>:first-child{margin-top:0}
|
||
.sidebarblock>:last-child{margin-bottom:0}
|
||
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
|
||
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
|
||
.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
|
||
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
|
||
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
|
||
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
|
||
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
|
||
.listingblock>.content{position:relative}
|
||
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
|
||
.listingblock:hover code[data-lang]::before{display:block}
|
||
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
|
||
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
|
||
.listingblock pre.highlightjs{padding:0}
|
||
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
|
||
.listingblock pre.prettyprint{border-width:0}
|
||
.prettyprint{background:#f7f7f8}
|
||
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
|
||
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
|
||
pre.prettyprint li code[data-lang]::before{opacity:1}
|
||
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
|
||
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
|
||
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
|
||
table.linenotable td.code{padding-left:.75em}
|
||
table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
|
||
pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
|
||
pre.pygments .lineno::before{content:"";margin-right:-.125em}
|
||
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
|
||
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
|
||
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
|
||
.quoteblock blockquote{margin:0;padding:0;border:0}
|
||
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
|
||
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
|
||
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
|
||
.verseblock{margin:0 1em 1.25em}
|
||
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
|
||
.verseblock pre strong{font-weight:400}
|
||
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
|
||
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
|
||
.quoteblock .attribution br,.verseblock .attribution br{display:none}
|
||
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
|
||
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
|
||
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
|
||
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
|
||
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
|
||
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
|
||
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
|
||
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
|
||
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
|
||
table.tableblock{max-width:100%;border-collapse:separate}
|
||
p.tableblock:last-child{margin-bottom:0}
|
||
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
|
||
td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
|
||
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
|
||
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
|
||
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
|
||
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
|
||
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
|
||
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
|
||
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
|
||
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
|
||
table.frame-all{border-width:1px}
|
||
table.frame-sides{border-width:0 1px}
|
||
table.frame-topbot,table.frame-ends{border-width:1px 0}
|
||
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
|
||
th.halign-left,td.halign-left{text-align:left}
|
||
th.halign-right,td.halign-right{text-align:right}
|
||
th.halign-center,td.halign-center{text-align:center}
|
||
th.valign-top,td.valign-top{vertical-align:top}
|
||
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
|
||
th.valign-middle,td.valign-middle{vertical-align:middle}
|
||
table thead th,table tfoot th{font-weight:bold}
|
||
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
|
||
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
|
||
p.tableblock>code:only-child{background:none;padding:0}
|
||
p.tableblock{font-size:1em}
|
||
ol{margin-left:1.75em}
|
||
ul li ol{margin-left:1.5em}
|
||
dl dd{margin-left:1.125em}
|
||
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
|
||
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
|
||
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
|
||
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
|
||
ul.unstyled,ol.unstyled{margin-left:0}
|
||
ul.checklist{margin-left:.625em}
|
||
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
|
||
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
|
||
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
|
||
ul.inline>li{margin-left:1.25em}
|
||
.unstyled dl dt{font-weight:400;font-style:normal}
|
||
ol.arabic{list-style-type:decimal}
|
||
ol.decimal{list-style-type:decimal-leading-zero}
|
||
ol.loweralpha{list-style-type:lower-alpha}
|
||
ol.upperalpha{list-style-type:upper-alpha}
|
||
ol.lowerroman{list-style-type:lower-roman}
|
||
ol.upperroman{list-style-type:upper-roman}
|
||
ol.lowergreek{list-style-type:lower-greek}
|
||
.hdlist>table,.colist>table{border:0;background:none}
|
||
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
|
||
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
|
||
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
|
||
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
|
||
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
|
||
.colist td:not([class]):first-child img{max-width:none}
|
||
.colist td:not([class]):last-child{padding:.25em 0}
|
||
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
|
||
.imageblock.left{margin:.25em .625em 1.25em 0}
|
||
.imageblock.right{margin:.25em 0 1.25em .625em}
|
||
.imageblock>.title{margin-bottom:0}
|
||
.imageblock.thumb,.imageblock.th{border-width:6px}
|
||
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
|
||
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
|
||
.image.left{margin-right:.625em}
|
||
.image.right{margin-left:.625em}
|
||
a.image{text-decoration:none;display:inline-block}
|
||
a.image object{pointer-events:none}
|
||
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
|
||
sup.footnote a,sup.footnoteref a{text-decoration:none}
|
||
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
|
||
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
|
||
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
|
||
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
|
||
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
|
||
#footnotes .footnote:last-of-type{margin-bottom:0}
|
||
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
|
||
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
|
||
.gist .file-data>table td.line-data{width:99%}
|
||
div.unbreakable{page-break-inside:avoid}
|
||
.big{font-size:larger}
|
||
.small{font-size:smaller}
|
||
.underline{text-decoration:underline}
|
||
.overline{text-decoration:overline}
|
||
.line-through{text-decoration:line-through}
|
||
.aqua{color:#00bfbf}
|
||
.aqua-background{background:#00fafa}
|
||
.black{color:#000}
|
||
.black-background{background:#000}
|
||
.blue{color:#0000bf}
|
||
.blue-background{background:#0000fa}
|
||
.fuchsia{color:#bf00bf}
|
||
.fuchsia-background{background:#fa00fa}
|
||
.gray{color:#606060}
|
||
.gray-background{background:#7d7d7d}
|
||
.green{color:#006000}
|
||
.green-background{background:#007d00}
|
||
.lime{color:#00bf00}
|
||
.lime-background{background:#00fa00}
|
||
.maroon{color:#600000}
|
||
.maroon-background{background:#7d0000}
|
||
.navy{color:#000060}
|
||
.navy-background{background:#00007d}
|
||
.olive{color:#606000}
|
||
.olive-background{background:#7d7d00}
|
||
.purple{color:#600060}
|
||
.purple-background{background:#7d007d}
|
||
.red{color:#bf0000}
|
||
.red-background{background:#fa0000}
|
||
.silver{color:#909090}
|
||
.silver-background{background:#bcbcbc}
|
||
.teal{color:#006060}
|
||
.teal-background{background:#007d7d}
|
||
.white{color:#bfbfbf}
|
||
.white-background{background:#fafafa}
|
||
.yellow{color:#bfbf00}
|
||
.yellow-background{background:#fafa00}
|
||
span.icon>.fa{cursor:default}
|
||
a span.icon>.fa{cursor:inherit}
|
||
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
|
||
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
|
||
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
|
||
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
|
||
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
|
||
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
|
||
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
|
||
.conum[data-value] *{color:#fff!important}
|
||
.conum[data-value]+b{display:none}
|
||
.conum[data-value]::after{content:attr(data-value)}
|
||
pre .conum[data-value]{position:relative;top:-.125em}
|
||
b.conum *{color:inherit!important}
|
||
.conum:not([data-value]):empty{display:none}
|
||
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
|
||
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
|
||
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
|
||
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
|
||
p{margin-bottom:1.25rem}
|
||
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
|
||
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
|
||
.print-only{display:none!important}
|
||
@page{margin:1.25cm .75cm}
|
||
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
|
||
html{font-size:80%}
|
||
a{color:inherit!important;text-decoration:underline!important}
|
||
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
|
||
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
|
||
abbr[title]::after{content:" (" attr(title) ")"}
|
||
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
|
||
thead{display:table-header-group}
|
||
svg{max-width:100%}
|
||
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
|
||
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
|
||
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
|
||
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
|
||
body.book #header{text-align:center}
|
||
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
|
||
body.book #header .details{border:0!important;display:block;padding:0!important}
|
||
body.book #header .details span:first-child{margin-left:0!important}
|
||
body.book #header .details br{display:block}
|
||
body.book #header .details br+span::before{content:none!important}
|
||
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
|
||
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
|
||
.listingblock code[data-lang]::before{display:block}
|
||
#footer{padding:0 .9375em}
|
||
.hide-on-print{display:none!important}
|
||
.print-only{display:block!important}
|
||
.hide-for-print{display:none!important}
|
||
.show-for-print{display:inherit!important}}
|
||
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
|
||
.sect1{padding:0!important}
|
||
.sect1+.sect1{border:0}
|
||
#footer{background:none}
|
||
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
|
||
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
|
||
</style>
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||
</head>
|
||
<body class="book toc2 toc-left">
|
||
<div id="header">
|
||
<h1>Manual de ZXDOS+ y gomaDOS+</h1>
|
||
<div class="details">
|
||
<span id="author" class="author">kounch</span><br>
|
||
<span id="email" class="email"><a href="mailto:kounch@users.noreply.github.com">kounch@users.noreply.github.com</a></span><br>
|
||
<span id="revnumber">version 1.3.3</span>
|
||
</div>
|
||
<div id="toc" class="toc2">
|
||
<div id="toctitle">Índice</div>
|
||
<ul class="sectlevel1">
|
||
<li><a href="#_introducción">Introducción</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_puertos_y_conectores">Puertos y Conectores</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_zxdos">ZXDOS+</a></li>
|
||
<li><a href="#_gomados">gomaDOS+</a></li>
|
||
<li><a href="#_descripción">Descripción</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_configuración_inicial">Configuración Inicial</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_la_tarjeta_microsd">Formato de la tarjeta microSD</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_windows">Windows</a></li>
|
||
<li><a href="#_macos">MacOS</a></li>
|
||
<li><a href="#_linux">Linux</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_esxdos">esxdos</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_modos_de_teclado_en_gomados">Modos de teclado en gomaDOS+</a></li>
|
||
<li><a href="#_bios">BIOS</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_main">Main</a></li>
|
||
<li><a href="#_roms">ROMs</a></li>
|
||
<li><a href="#_upgrade">Upgrade</a></li>
|
||
<li><a href="#_boot">Boot</a></li>
|
||
<li><a href="#_advanced">Advanced</a></li>
|
||
<li><a href="#_exit">Exit</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_zx_spectrum">ZX Spectrum</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_formato_avanzado_de_la_tarjeta_microsd_3e">Formato avanzado de la tarjeta microSD (+3e)</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_windows_2">Windows</a></li>
|
||
<li><a href="#_macos_2">MacOS</a></li>
|
||
<li><a href="#_linux_2">Linux</a></li>
|
||
<li><a href="#_3e">+3e</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_teclado">Teclado</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_español">Español</a></li>
|
||
<li><a href="#_inglés">Inglés</a></li>
|
||
<li><a href="#_spectrum">Spectrum</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_teclas_especiales_y_botones">Teclas especiales y botones</a></li>
|
||
<li><a href="#_roms_2">ROMs</a></li>
|
||
<li><a href="#_esxdos_2">esxdos</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_guía_básica">Guía básica</a></li>
|
||
<li><a href="#_comandos_para_zxdos">Comandos para ZXDOS+</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_wi_fi">Wi-Fi</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_network_tools_for_zx_uno_pack">Network tools for ZX-Uno pack</a></li>
|
||
<li><a href="#_ftp_uno">FTP-Uno</a></li>
|
||
<li><a href="#_uart_terminal">UART Terminal</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_creación_de_vídeos_rdm_radastan_movie">Creación de vídeos RDM (RaDastan Movie)</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_actualizaciones">Actualizaciones</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_bios_2">BIOS</a></li>
|
||
<li><a href="#_roms_3">ROMs</a></li>
|
||
<li><a href="#_cores">Cores</a></li>
|
||
<li><a href="#_esxdos_3">esxdos</a></li>
|
||
<li><a href="#_memoria_flash">Memoria Flash</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_otros_cores">Otros cores</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_zx_spectrum_48k_kyp">ZX Spectrum 48K (Kyp)</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_2">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_2">Teclas especiales y botones</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_zx_spectrum_next">ZX Spectrum Next</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_2">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_3">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_3">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_2">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_msx">MSX</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_3">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_4">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_4">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_3">Guía básica</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_msxctrl">MSXCTRL</a></li>
|
||
<li><a href="#_otros">Otros</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_amstrad_cpc">Amstrad CPC</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_4">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_5">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_5">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_4">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_acorn_atom">Acorn Atom</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_5">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_6">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_6">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_5">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_commodore_64">Commodore 64</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_6">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_7">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_7">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_6">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_phoenix">Phoenix</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_7">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_8">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_8">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_7">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_pong">Pong</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_8">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_9">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_9">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_8">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_nes">NES</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_9">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_10">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_10">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_9">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_colecovision">ColecoVision</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_10">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_11">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_11">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_10">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_atari_2600">Atari 2600</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_11">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_12">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_12">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_11">Guía básica</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_videopac">Videopac</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_formato_de_tarjeta_microsd_12">Formato de Tarjeta microSD</a></li>
|
||
<li><a href="#_teclado_13">Teclado</a></li>
|
||
<li><a href="#_teclas_especiales_y_botones_13">Teclas especiales y botones</a></li>
|
||
<li><a href="#_guía_básica_12">Guía básica</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_cambio_del_charset_de_la_rom_de_vdc">Cambio del charset de la ROM de VDC</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_otro_hardware">Otro Hardware</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_codificadores_rotatorios">Codificadores rotatorios</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_conexión">Conexión</a></li>
|
||
<li><a href="#_configuración_del_core_de_pong">Configuración del Core de Pong</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_carga_desde_cinta">Carga desde cinta</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_reproductor_de_cassette">Reproductor de cassette</a></li>
|
||
<li><a href="#_ordenador">Ordenador</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_playtzx">PlayTZX</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_teléfono_móvil_tableta_reproductor_de_sonido_mp3_etc">Teléfono móvil, tableta, reproductor de sonido MP3, etc.</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_conversión_a_fichero_de_audio">Conversión a fichero de audio</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_miniduino">Miniduino</a>
|
||
<ul class="sectlevel4">
|
||
<li><a href="#_puertos_y_botones">Puertos y Botones</a></li>
|
||
<li><a href="#_preparación">Preparación</a></li>
|
||
<li><a href="#_uso">Uso</a></li>
|
||
<li><a href="#_actualización_de_firmware_maxduino">Actualización de firmware Maxduino</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_solución_de_problemas">Solución de problemas</a>
|
||
<ul class="sectlevel2">
|
||
<li><a href="#_gestión_de_imágenes_de_firmware">Gestión de imágenes de firmware</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_zx123_tool">zx123_tool</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_recuperación_del_firmware">Recuperación del firmware</a>
|
||
<ul class="sectlevel3">
|
||
<li><a href="#_preparación_del_cableado">Preparación del cableado</a></li>
|
||
<li><a href="#_recuperación_usando_una_raspberry_pi">Recuperación usando una Raspberry Pi</a></li>
|
||
<li><a href="#_recuperación_usando_macos_y_cable_usb_blaster">Recuperación usando MacOS y Cable USB-Blaster</a></li>
|
||
<li><a href="#_recuperación_usando_windows_y_cable_usb_blaster">Recuperación usando Windows y Cable USB-Blaster</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#_referencias">Referencias</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div id="content">
|
||
<div id="preamble">
|
||
<div class="sectionbody">
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_introducción">Introducción</h2>
|
||
<div class="sectionbody">
|
||
<div class="paragraph">
|
||
<p>ZXDOS+ y gomaDOS+ son la continuación de <a href="http://zxuno.speccy.org">ZX-Uno</a> un proyecto de hardware y software basado en una placa FPGA programada para trabajar como un ordenador ZX Spectrum, y creado por el equipo de ZX-Uno: Superfo, AVillena, McLeod, Quest y Hark0.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Con el paso del tiempo, el proyecto ha ido creciendo, de forma que es posible instalar distintas configuraciones de software (cores) en la memoria flash de la FPGA, y que trabajan como otros sistemas distintos del ZX Spectrum, pudiendo elegir arrancar el ZXDOS+ con la configuración que se desee de entre todas las instaladas.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La página oficial de ZXDOS+ y gomaDOS+ es <a href="http://zxdos.forofpga.es" class="bare">http://zxdos.forofpga.es</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La mayoría de las funciones y características de ZXDOS+ y gomaDOS+ son las mismas, así que, en este documento, se hablará, en general, de ZXDOS+, indicando las diferencias con gomaDOS+ donde sea necesario.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="sect2">
|
||
<h3 id="_puertos_y_conectores">Puertos y Conectores</h3>
|
||
<div class="sect3">
|
||
<h4 id="_zxdos">ZXDOS+</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/ZXDOSfront.jpg" alt="ZXDOSfront"></span></p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/ZXDOSback.jpg" alt="ZXDOSback"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_gomados">gomaDOS+</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/gomaDosBack.jpg" alt="gomaDosBack"></span></p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_descripción">Descripción</h4>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 50%;">
|
||
<col style="width: 50%;">
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Interruptor</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Ranura microSD</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">JTAG y Joystick</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Salida de Sonido</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Entrada de Sonido</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Salida RGB/VGA</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">7</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Enchufe de Alimentación</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto de expansión</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">9</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto de Joystick Izquierdo</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto de Joystick Derecho</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">11</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto de Teclado PS/2</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto de Ratón PS/2</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Puerto USB (PS/2)</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_configuración_inicial">Configuración Inicial</h3>
|
||
<div class="paragraph">
|
||
<p>Para poder poner en marcha un ZXDOS+ o gomaDOS+ hace falta, al menos, lo siguiente:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Un cargador USB, una TV u otro dispositivo que ofrezca alimentación USB</p>
|
||
</li>
|
||
<li>
|
||
<p>Un cable y un monitor VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Un teclado PS/2 (en el caso de ZXDOS+)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para poder aprovechar todo su potencial, es útil tener también:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Una tarjeta microSD, no necesariamente muy grande</p>
|
||
</li>
|
||
<li>
|
||
<p>Unos altavoces de PC para conectar a la salida de audio, o un cable jack-stereo a dos conectores RCA rojo/blanco para conectar a la TV (opcional en gomaDOS+, ya que tiene beeper incorporado)</p>
|
||
</li>
|
||
<li>
|
||
<p>Un joystick norma Atari, como por ejemplo, un gamepad DB9 de Megadrive (se necesita el adaptador de joystick en el caso de gomaDOS+)</p>
|
||
</li>
|
||
<li>
|
||
<p>Un ratón PS/2 (se necesista adaptador PS/2 a USB en el caso de gomaDOS+)</p>
|
||
</li>
|
||
<li>
|
||
<p>Un cable con un jack estéreo de 3,5 mm en un extremo y los dos canales de sonido divididos en dos salidas mono en el otro, si se quiere usar algún dispositivo de reproducción y/o grabación de audio, como por ejemplo un Miniduino (<a href="#_miniduino">ver la sección correspondiente más adelante</a>), un PC/Mac/Raspberry PI, etc. o un reproductor/grabador de <a href="https://es.wikipedia.org/wiki/Casete">cassette</a>. El canal derecho se utiliza como entrada (EAR) y el canal izquierdo se puede usar como salida de grabación (MIC).</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_la_tarjeta_microsd">Formato de la tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Para poder utilizar una tarjeta microSD, esta debe tener, al menos, una partición (la primera en el caso de haber varias) en formato FAT16 o FAT32 (según el caso, se recomienda uno u otro formato para compatibilidad con distintos cores de terceros). Para el core de Spectrum, tambén es posible tener <a href="#_formato_avanzado_de_la_tarjeta_microsd_3e">una primera partición en formato +3DOS y luego otra(s) en formato FAT16 o FAT32</a>, para su uso con una ROM de +3e.</p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El tamaño máximo de una partición FAT16 son 4GB</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_windows">Windows</h5>
|
||
<div class="paragraph">
|
||
<p>Para configuraciones sencillas, y tarjetas del tamaño adecuado (menos de 2GB para FAT16 o menos de 32GB para FAT32), se puede utilizar <a href="https://www.sdcard.org/downloads/formatter/">la herramienta de formato oficial de la SD Association</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para otras configuraciones, y según la versión de sistema operativo de que se disponga, se podrá utilizar la herramienta de línea de comandos <code>diskpart</code> o bien la interfaz gráfica de administración de discos del sistema.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_macos">MacOS</h5>
|
||
<div class="paragraph">
|
||
<p>Para configuraciones sencillas, y tarjetas del tamaño adecuado (menos de 2GB para FAT16 o menos de 32GB para FAT32), se puede utilizar <a href="https://www.sdcard.org/downloads/formatter/">la herramienta de formato oficial de la SD Association</a> o la Utilidad de Discos incluida con el sistema operativo.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para configuraciones más complejas, será necesario utilizar la línea de comandos.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Por ejemplo, en MacOS, para formatear una tarjeta con una única partición FAT16 (si la tarjeta es de 2GB o menos de tamaño), que figura como <code>disk6</code> en la lista de dispositivos:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
diskutil partitionDisk /dev/disk6 MBR <span class="s2">"MS-DOS FAT16"</span> ZXDOSPLUS R</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para dividirla en dos particiones iguales (si la tarjeta es de 4GB o menos de tamaño):</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
diskutil partitionDisk /dev/disk6 MBR <span class="s2">"MS-DOS FAT16"</span> ZXDOSPLUS 50% <span class="s2">"MS-DOS FAT16"</span> EXTRA 50%</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para crear dos primeras particiones FAT16 de 4GB (por ejemplo, para usar con el core de MSX) y usar el resto del espacio con otra más en formato FAT32 (para tarjetas de más de 8GB):</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
diskutil partitionDisk /dev/disk6 MBR %DOS_FAT_16% ZXDOSPLUS 4G %DOS_FAT_16% EXTRA 4G <span class="s2">"MS-DOS FAT32"</span> DATA R
|
||
<span class="nb">sudo </span>newfs_msdos <span class="nt">-F</span> 16 <span class="nt">-v</span> ZXDOSPLUS <span class="nt">-b</span> 4096 <span class="nt">-c</span> 128 /dev/rdisk6s1
|
||
<span class="nb">sudo </span>newfs_msdos <span class="nt">-F</span> 16 <span class="nt">-v</span> EXTRA <span class="nt">-b</span> 4096 <span class="nt">-c</span> 128 /dev/rdisk6s2</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El comando <code>diskutil</code> no permite crear particiones FAT16 de más de 2G de tamaño y formatearlas a la vez. Por eso, en el último caso, se crean primero las particiones y luego se formatean en FAT16.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para crear una partición FAT32 de 4GB (por ejemplo, para usar con el core de Amstrad CPC) y usar el resto del espacio con otra más en formato FAT32 (para tarjetas de más de 4GB de tamaño):</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
diskutil partitionDisk /dev/disk6 MBR <span class="s2">"MS-DOS FAT32"</span> ZXDOSPLUS 4G <span class="s2">"MS-DOS FAT32"</span> EXTRA R</code></pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_linux">Linux</h5>
|
||
<div class="paragraph">
|
||
<p>Existen multitud de herramientas en Linux que permiten formatear y particionar el contenido de una tarjeta SD (como <code>fdisk</code>, <code>parted</code>, <code>cfdisk</code>, <code>sfdisk</code> o <code>GParted</code>). Sólo se ha de tener en cuenta que el esquema de particiones a utilizar siempre ha de ser MBR, y la primera partición (la que se utilizará para esxdos) ha de ser primaria.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_esxdos">esxdos</h4>
|
||
<div class="paragraph">
|
||
<p><a href="https://esxdos.org/index.html">esxdos</a> es un firmware para la interfaz the DivIDE/DivMMC, que el ZXDOS+ implementa, y que permite el acceso a dispositivos de almacenamiento como la tarjeta microSD. Incluye comandos similares a los de UNIX, aunque para usarlos hay que precederlos con un punto, por ejemplo <code>.ls</code>, <code>.cd</code>, <code>.mv</code>, etc.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para poder utilizarlo es necesario incluir los ficheros correspondientes en la primera partición de la tarjeta microSD.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el momento de escribir este documento, la versión incluida con ZXDOS+ es la 0.8.6, y se puede descargar desde la página oficial <a href="http://www.esxdos.org/files/esxdos086.zip">en este enlace</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez descargado y descomprimido, se han de copiar, a la raíz de la tarjeta, los directorios <code>BIN</code>, <code>SYS</code> y <code>TMP</code> con todo su contenido.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si todo se ha hecho correctamente, al encender el core Spectrum de ZXDOS+ se verá cómo esxdos detecta la tarjeta y carga los componentes necesarios para funcionar.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="./img/esxdos.png" alt="esxdos"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Es recomendable, además, añadir los comandos esxdos específicos para ZXDOS+. Estos se pueden obtener en la página con el código fuente del proyecto (<a href="https://github.com/zxdos/zxuno/tree/master/SD">aquí</a>, <a href="https://github.com/zxdos/zxuno/tree/master/">aquí</a> y <a href="https://guest:zxuno@svn.zxuno.com/svn/zxuno/software/upgrade">aquí</a>), y son los siguientes:</p>
|
||
</div>
|
||
<div class="literalblock">
|
||
<div class="content">
|
||
<pre>back16m
|
||
backzx2
|
||
backzxd
|
||
corebios
|
||
dmaplayw
|
||
esprst
|
||
iwconfig
|
||
joyconf
|
||
keymap
|
||
loadpzx
|
||
playmid
|
||
playrmov
|
||
romsback
|
||
romsupgr
|
||
upgr16m
|
||
upgrzx2
|
||
upgrzxd
|
||
zxuc
|
||
zxunocfg</pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="#_comandos_para_zxdos+">Más adelante</a> se explica lo que hace cada uno de ellos.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_modos_de_teclado_en_gomados">Modos de teclado en gomaDOS+</h3>
|
||
<div class="paragraph">
|
||
<p>El teclado de gomaDOS+ al ser similar al teclado del ZX Spectrum original, carece de algunas de teclas existentes en un teclado moderno de PC. Internamente, el teclado de membrana está conectado a una placa Arduino, que se encarga de transformar las pulsaciones al protocolo PS/2 de teclado. Esta placa está programada de manera que pueda comportarse de distintas maneras según nos interese.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Por defecto, está configurado en modo ZX Spectrum. Para cambiar a otro modo, se debe pulsar <code>Caps Shift+Symbol Shift+U</code> y luego la tecla correspondiente. Al hacerlo, se tecleará automáticamente un texto indicando el modo seleccionado (por ejemplo: <code>.zx</code> si se pulsa <code>Caps Shift+Symbol Shift+U</code> y luego <code>0</code>).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La siguiente tabla indica los distintos modos y la tecla de activación asociada:</p>
|
||
</div>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 50%;">
|
||
<col style="width: 50%;">
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th class="tableblock halign-left valign-top">Modo</th>
|
||
<th class="tableblock halign-left valign-top">Tecla</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">ZX Spectrum</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>0</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Amstrad CPC</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">MSX</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>2</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Commodore 64</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>3</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Atari 800XL</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>4</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">BBC Micro</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>5</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Acorn Electron</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>6</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Apple (I y II)</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>7</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Commodore VIC 20</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>8</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">PC XT</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>9</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Oric Atmos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>A</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">SAM Coupé</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>B</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Jupiter ACE</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>C</code></p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>La distribución del teclado en modo ZX Spectrum, con la pulsación asociada al combinar junto con <code>Caps Shift+Symbol Shift</code>, se puede resumir según el siguiente esquema:</p>
|
||
</div>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
<col style="width: 10%;">
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>1</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>2</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>3</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>4</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>5</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>6</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>7</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>8</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>9</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>0</strong></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F1</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F2</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F3</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F4</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F5</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F6</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F7</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F8</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F9</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F1</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Q</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>W</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>E</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>R</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>T</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Y</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>U</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>I</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>O</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>P</strong></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F11</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>F12</code></p></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>Modo</code></p></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>A</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>S</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>D</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>F</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>G</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>H</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>J</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>K</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>L</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Enter</strong></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>BlqDs</code></p></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>CShift</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Z</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>X</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>C</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>V</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>B</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>N</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>M</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>SShift</strong></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><strong>Space</strong></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>Guarda</code></p></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>Vers</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>hRes</code></p></td>
|
||
<td class="tableblock halign-center valign-top"><p class="tableblock"><code>sRes</code></p></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
<td class="tableblock halign-center valign-top"></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="paragraph">
|
||
<p>Donde:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>BlqDs</code>: <code>Bloq. Despl.</code> cambia de modo video compuesto a VGA y viceversa (en el core de Next, se debe usar <code>Caps Shift+Symbol Shift+2</code> o <code>F2</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Guarda</code>: Define el modo actual como el modo por defecto</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Vers</code>: Muestra (teclea) la versión actual del firmware</p>
|
||
</li>
|
||
<li>
|
||
<p><code>hRes</code>: Hard Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>sRes</code>: Soft Reset</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>La lista completa de combinaciones de teclado (y el modo en que se pueden utilizar) es la siguiente:</p>
|
||
</div>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 33.3333%;">
|
||
<col style="width: 33.3333%;">
|
||
<col style="width: 33.3334%;">
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th class="tableblock halign-left valign-top">Caps S.+Symbol S.</th>
|
||
<th class="tableblock halign-left valign-top">Modo</th>
|
||
<th class="tableblock halign-left valign-top">Acción</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F1</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F2</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F3</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F4</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F5</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F6</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">7</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F7</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F8</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">9</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F9</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F10</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Q</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F11</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">W</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>F12</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">S</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">C64</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Ctrl+F12</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">E</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Acorn/CPC</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Re Pág</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">R</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Acorn</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>PgAbajo</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">U</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Modo</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">G</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">ZX/MSX/C64</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BlqDs</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">X</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Guarda</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">C</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">PC</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OPQA</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">V</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Todos</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Versión</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">B</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">ZX</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Ctrl+Alt+Bcksp</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">N</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">ZX</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Ctrl+Alt+Supr</code></p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_bios">BIOS</h3>
|
||
<div class="paragraph">
|
||
<p>Si se pulsa la tecla <code>F2</code> (<code>Caps Shift+1</code> en gomaDOS+) durante el arranque, se tendrá acceso a la configuración de BIOS. El firmware de BIOS es el primer programa que se ejecuta cuando se enciende el ZXDOS+. El propósito fundamental del software de BIOS es iniciar y probar el hardware y cargar uno de los cores instalados.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Usando las teclas de cursor izquierda y derecha (<code>Caps Shift+5</code> y <code>Caps Shift+8</code> en gomaDOS+), se puede navegar por las pantallas de configuración de la BIOS. Con las teclas arriba y abajo (<code>Caps Shift+7</code> y <code>Caps Shift+6</code> en gomaDOS+) se pueden elegir los distintos elementos de cada pantalla y, con la tecla <code>Enter</code>, es posible activar y elegir las opciones de cada una de estas. La tecla <code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+) sirve para cerrar las ventanas de opciones abiertas sin aplicar ninguna acción.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_main">Main</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios.png" alt="bios"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En la primera pantalla de configuración, además de poder ejecutar distintas pruebas, se puede definir el comportamiento por defecto para lo siguiente:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Espera en el arranque (Boot Timer): Indica el tiempo que está la pantalla de arranque disponible (o la oculta por completo)</p>
|
||
</li>
|
||
<li>
|
||
<p>Comprobar CRC de las ROMs (Check CRC): Para comprobar la integridad de las ROMs al cargarlas (más seguro) u omitirla (más rápido)</p>
|
||
</li>
|
||
<li>
|
||
<p>Tipo de teclado (Keyboard)</p>
|
||
</li>
|
||
<li>
|
||
<p>Timing: Para definir el comportamiento de la ULA (Modo 48K, Modo 128K, Modo Pentagon)</p>
|
||
</li>
|
||
<li>
|
||
<p>Contención de memoria (Contended)</p>
|
||
</li>
|
||
<li>
|
||
<p>DivMMC</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte NMI para DivMMC</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte para nuevos modos gráficos (ULAPlus, Timex, Radastan)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se puede consultar información más tecnica en <a href="http://www.zxuno.com/wiki/index.php/ZX_Spectrum">la Wiki de ZX-Uno</a>.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_roms">ROMs</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios2.png" alt="bios2"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La segunda pantalla muestra las ROMs de ZX Spectrum instaladas y permite reordenar (Move Up, Move Down), renombrar (Rename) o borrar (Delete) cada una de ellas, así como elegir la que se cargará por defecto en el arranque (Set Active).</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_upgrade">Upgrade</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios3.png" alt="bios3"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La pantalla <em>Upgrade</em> se utiliza para realizar las distintas actualizaciones del contenido de la memoria Flash: esxdos, BIOS, Cores, etc. (véase <a href="#_actualizaciones">el apartado correspondiente a actualizaciones</a> para más información).</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_boot">Boot</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios4.png" alt="bios4"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En la pantalla <em>Boot</em> se puede elegir qué core de los instalados se desea que cargue por defecto en el arranque.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_advanced">Advanced</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios5.png" alt="bios5"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La pantalla de configuración avanzada sirve para modificar los siguientes ajustes:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Distribución del teclado (Keyb Layout): Ver <a href="#_teclado">el apartado correspondiente </a> para más información)</p>
|
||
</li>
|
||
<li>
|
||
<p>Comportamiento del joystick emulado con el teclado numérico (Joy Keypad): Kempston, Sinclair Joystick 1, Sinclair Joystick 2, Protek o Fuller</p>
|
||
</li>
|
||
<li>
|
||
<p>Comportamiento de un joystick conectado al puerto (Joy DB9): Kempston, Sinclair Joystick 1, Sinclair Joystick 2, Protek, Fuller o simular las teclas <code>Q</code>, <code>A</code>, <code>O</code>, <code>P</code>, <code>Espacio</code> y <code>M</code></p>
|
||
</li>
|
||
<li>
|
||
<p>Salida de vídeo (Video): PAL, NTSC o VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Simulación de línea de exploración (Scanlines): Activas (Enabled) o inactivas (Disabled)</p>
|
||
</li>
|
||
<li>
|
||
<p>Frecuencia horizontal de VGA (Frequency): 50, 51, etc.</p>
|
||
</li>
|
||
<li>
|
||
<p>Velocidad de la CPU: Normal (1x) o acelerada (2X, 3X, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Csync: Spectrum o PAL</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_exit">Exit</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/bios6.png" alt="bios6"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Finalmente, desde la última pantalla se puede:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Salir de la configuración de BIOS guardando los cambios (Save Changes & Exit)</p>
|
||
</li>
|
||
<li>
|
||
<p>Descartar los cambios y salir (Discard Changes & Exit)</p>
|
||
</li>
|
||
<li>
|
||
<p>Guardar los cambios sin salir (Save Changes)</p>
|
||
</li>
|
||
<li>
|
||
<p>Descartar los cambios (Discard Changes)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_zx_spectrum">ZX Spectrum</h2>
|
||
<div class="sectionbody">
|
||
<div class="paragraph">
|
||
<p>El core principal es el que implementa un ordenador ZX Spectrum. Este core es especial, y no se puede sustibuir por otro que no sea de ZX Spectrum, ya que el ZXDOS+ lo utiliza para su funcionamiento.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Estas son algunas de sus principales características:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Implementación ZX Spectrum 48K, 128K, Pentagon y Chloe 280SE</p>
|
||
</li>
|
||
<li>
|
||
<p>ULA con modos ULAplus, Timex y modo Radastan (incluyendo scroll por hardware y grupo de paleta seleccionable)</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de desactivar la contención de memoria (para compatibilidad con Pentagon 128)</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de elegir el comportamiento del teclado (issue 2 o issue 3)</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de elegir el timing de la ULA (48K, 128K o Pentagon)</p>
|
||
</li>
|
||
<li>
|
||
<p>Control del encuadre de pantalla configurable para tipo de timing, y posibilidad de elegir entre sincronismos originales de Spectrum o sincronismos estándar PAL progresivo.</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de la MMU horizontal del Timex con bancos HOME, DOC y EXT en RAM.</p>
|
||
</li>
|
||
<li>
|
||
<p>Interrupción ráster programable en número de línea, para cualquier linea de TV.</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de activar/desactivar los registros de manejo de bancos de memoria, para mejor compatibilidad con cada modelo implementado</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de activar/desactivar los dispositivos incorporados al core para mejorar la compatibilidad con ciertos programas</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte ZXMMC para +3e y soporte DIVMMC para esxdos y firmwares compatibles</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte Turbo Sound</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de SpecDrum</p>
|
||
</li>
|
||
<li>
|
||
<p>Cada canal A,B,C de los dos chips AY-3-8912, beeper y SpecDrum pueden dirigirse a las salidas izquierda, derecha, ambas o ninguna, permitiendo la implementación de configuraciones tales como ACB, ABC, etc.</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de joystick real y joystick en teclado con protocolo Kempston, Sinclair 1 y 2, Cursor, Fuller y QAOPSpcM.</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de modo turbo a 7MHz, 14MHz, 28MHz</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de teclado con protocolo PS/2 y mapeado configurable por el usuario desde el propio Spectrum.</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de ratón PS/2 emulando el protocolo Kempston Mouse.</p>
|
||
</li>
|
||
<li>
|
||
<p>Posibilidad de salida de video en modo de video compuesto, RGB 15kHz, o VGA.</p>
|
||
</li>
|
||
<li>
|
||
<p>Frecuencia de refresco vertical seleccionable por el usuario para mejorar la compatibilidad con monitores VGA.</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte de arranque multicore: desde el Spectrum se puede seleccionar una dirección de la SPI Flash y la FPGA cargará un core desde ahí.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="sect2">
|
||
<h3 id="_formato_avanzado_de_la_tarjeta_microsd_3e">Formato avanzado de la tarjeta microSD (+3e)</h3>
|
||
<div class="paragraph">
|
||
<p>Una de las ROM que se pueden cargar con el core de ZX Spectrum es la de ZX Spectrum +3e, que es una versión mejorada del Sinclair ZX Spectrum +3, y que soporta el uso de discos duros o tarjetas de memoria.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El +3e usa su propio esquema de particionado (llamado IDEDOS) para dividir el disco duro en diferentes particiones donde se pueden almacenar datos. Se necesita una version 1.28 o superior de la ROM para poder compartir particiones IDEDOS con particiones MBR. En otro caso, se ha dedicar la tarjeta completa al particionado IDEDOS.</p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El esquema de particionado que se presentará a continuación sólo se podrá utilizar con el core de Spectrum.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock tip">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-tip" title="Tip"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En IDEDOS, cada partición puede tener un tamaño entre 1 y 16 Megabytes (un millón de bytes), y cada disco puede tener entre 1 y 65535 particiones. Por tanto, lo máximo que se puede ocupar de una tarjeta será alrededor de 1GB de espacio.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>A continuación se explica una forma de dividir una tarjeta en dos o tres partes, con la primera partición IDEDOS (1GB de tamaño), la segunda FAT16 (4GB) y la tercera FAT32 (resto del espacio de la tarjeta).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En la segunda particion se puede instalar, tal y como se explicó anteriormente <a href="#_esxdos">exsdos</a> y otros programas.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_windows_2">Windows</h4>
|
||
<div class="paragraph">
|
||
<p>Se puede utilizar el administrador de discos de Windows. Los pasos a seguir serían:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Eliminar todas las particiones de la tarjeta</p>
|
||
</li>
|
||
<li>
|
||
<p>Crear una partición extendida, del tamaño que se quiera utilizar para IDEDOS</p>
|
||
</li>
|
||
<li>
|
||
<p>Crear una partición primaria de 4GB y formatear como FAT16</p>
|
||
</li>
|
||
<li>
|
||
<p>Opcionalmente, crear otra partición primaria ocupando el resto del espacio y formatear como FAT32</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_macos_2">MacOS</h4>
|
||
<div class="paragraph">
|
||
<p>Será necesario utilizar la línea de comandos. Lo primero es determinar el disco a formatear:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil list</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En este ejemplo sería el disco 6:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>(...)
|
||
/dev/disk6 (external, physical):
|
||
#: TYPE NAME SIZE IDENTIFIER
|
||
0: FDisk_partition_scheme *15.9 GB disk6
|
||
1: DOS_FAT_32 UNKNOWN 15.9 GB disk6s1</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Pasos a seguir:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Expulsar el disco y editar el esquema de particiones (el segundo paso requiere permisos de administrador):</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
<span class="nb">sudo </span>fdisk <span class="nt">-e</span> /dev/rdisk6</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
|
||
Enter 'help' for information
|
||
fdisk: 1> erase
|
||
fdisk:*1> edit 1
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 7F
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [63] 128
|
||
Partition size [1 - 31116287]: [31116287] 2017152
|
||
|
||
fdisk:*1> edit 2
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 0E
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [2017280]
|
||
Partition size [1 - 29099135]: [29099135] 7812504
|
||
|
||
fdisk:*1> flag 2</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>fdisk:*1> edit 3
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 0B
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [9829784]
|
||
Partition size [1 - 21286504]: [21286504]
|
||
|
||
fdisk:*1> print
|
||
Starting Ending
|
||
#: id cyl hd sec - cyl hd sec [ start - size]
|
||
------------------------------------------------------------------------
|
||
1: 7F 1023 254 63 - 1023 254 63 [ 128 - 2017152] <Unknown ID>
|
||
2: 0E 1023 254 63 - 1023 254 63 [ 2017280 - 7812504] DOS FAT-16
|
||
3: 0B 1023 254 63 - 1023 254 63 [ 9829784 - 21286504] Win95 FAT-32
|
||
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
|
||
|
||
fdisk:*1> write
|
||
fdisk: 1> quit</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="2">
|
||
<li>
|
||
<p>Formatear las particiones FAT (requiere permisos de administrador)</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil unmountDisk /dev/disk6
|
||
<span class="nb">sudo </span>newfs_msdos <span class="nt">-F</span> 16 <span class="nt">-v</span> ZXDOSPLUS <span class="nt">-b</span> 4096 <span class="nt">-c</span> 128 /dev/rdisk6s2
|
||
<span class="nb">sudo </span>newfs_msdos <span class="nt">-F</span> 32 <span class="nt">-v</span> EXTRA <span class="nt">-b</span> 4096 <span class="nt">-c</span> 128 /dev/rdisk6s3</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="3">
|
||
<li>
|
||
<p>Comprobar cómo el esquema de particiones ha cambiado y ya es el que se deseaba:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">diskutil list</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>(...)
|
||
/dev/disk6 (external, physical):
|
||
#: TYPE NAME SIZE IDENTIFIER
|
||
0: FDisk_partition_scheme *15.9 GB disk6
|
||
1: 0x7F 1.0 GB disk6s1
|
||
2: Windows_FAT_16 ZXDOSPLUS 4.0 GB disk6s2
|
||
3: DOS_FAT_32 EXTRA 10.9 GB disk6s3</code></pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_linux_2">Linux</h4>
|
||
<div class="paragraph">
|
||
<p>Será necesario utilizar la línea de comandos. Lo primero es determinar el disco a formatear:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">lsblk</code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>En este ejemplo sería <code>sdc</code>:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
(..)
|
||
sdc 179:0 0 15,8G 0 disk
|
||
└─sdc1 179:1 0 15,8G 0 part</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Pasos a seguir:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Comprobar que no está montado y editar el esquema de particiones (este paso requiere permisos de root):</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">sudo </span>fdisk <span class="nt">-e</span> /dev/sdc</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>Enter 'help' for information
|
||
fdisk: 1> erase
|
||
fdisk:*1> edit 1
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 7F
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [63] 128
|
||
Partition size [1 - 31116287]: [31116287] 2017152
|
||
|
||
fdisk:*1> edit 2
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 0E
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [2017280]
|
||
Partition size [1 - 29099135]: [29099135] 7812504
|
||
|
||
fdisk:*1> flag 2
|
||
|
||
fdisk:*1> edit 3
|
||
Partition id ('0' to disable) [0 - FF]: [0] (? for help) 0B
|
||
Do you wish to edit in CHS mode? [n]
|
||
Partition offset [0 - 31116288]: [9829784]
|
||
Partition size [1 - 21286504]: [21286504]
|
||
|
||
fdisk:*1> print
|
||
Starting Ending
|
||
#: id cyl hd sec - cyl hd sec [ start - size]
|
||
------------------------------------------------------------------------
|
||
1: 7F 1023 254 63 - 1023 254 63 [ 128 - 2017152] <Unknown ID>
|
||
2: 0E 1023 254 63 - 1023 254 63 [ 2017280 - 7812504] DOS FAT-16
|
||
3: 0B 1023 254 63 - 1023 254 63 [ 9829784 - 21286504] Win95 FAT-32
|
||
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
|
||
|
||
fdisk:*1> write
|
||
fdisk: 1> quit</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="2">
|
||
<li>
|
||
<p>Formatear las particiones FAT (requiere permisos de root)</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">sudo </span>mkfs.fat <span class="nt">-F</span> 16 /dev/sdc2
|
||
<span class="nb">sudo </span>mkfs.fat <span class="nt">-F</span> 32 /dev/sdc3</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="3">
|
||
<li>
|
||
<p>Verificar que el esquema de particiones ha cambiado y ya es el que se quería:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">lsblk</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||
(...)
|
||
sda 179:0 0 15,8G 0 disk
|
||
├─sda1 179:1 0 1G 0 part
|
||
├─sda2 179:2 0 4G 0 part
|
||
├─sda3 179:3 0 10,8G 0 part</code></pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_3e">+3e</h4>
|
||
<div class="paragraph">
|
||
<p>Una vez preparada la tarjeta para su uso, se puede arrancar el core de Spectrum con una ROM de +3e, y formatear la parte de IDEDOS según se desee.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El primer paso consiste en determinar la geometría de la microSD. Con la tarjeta insertada en el ZXDOS+, desde el core de Spectrum con la ROM de +3e, ejecutar el comando:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="basic">CAT TAB</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Esto devoverá un resultado indicando el número de <a href="https://es.wikipedia.org/wiki/Cilindro-Cabezal-Sector">cilindros, cabezales y sectores</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Teniendo esto en cuenta, calculamos el espacio que ocupa nuestra partición, en cilindros. Por ejemplo, si el número de cilindros obtenido es de 32768, y queremos utilizar 1GB de una tarjeta de 16GB, el número de cilindros que se necesitarían son 32768/16=2048. Por tanto, podemos formatear la partición IDEDOS usando ese número:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="basic">FORMAT TO 0,100,2048</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El primer valor (<code>0</code>) indica el disco a utilizar (el primero), el segundo valor es el número máximo de particiones IDEDOS que se podrán usar, y el tercer valor es el número de cilindros a utilizar.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Una vez hecho el formato, ya será posible crear nuevas particiones. Por ejemplo, para crear una partición llamada "Software" de 16MB, una llamada "Swap1", de 4MB (para usar como espacio swap) y otra llamada "Utils" de 8MB:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="basic">NEW DATA "Software",16
|
||
NEW EXP "Swap1",4
|
||
NEW DATA "Utils",8</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para más información sobre el uso de los distintos comandos de +3e para acceso al disco, se puede visitar <a href="https://worldofspectrum.org/zxplus3e/espanol/index.html">esta página en World of Spectrum</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_teclado">Teclado</h3>
|
||
<div class="paragraph">
|
||
<p>El mapa de teclado (asignación de las teclas físicas del teclado con las pulsaciones que se presentan a los distinto cores) se cambia desde el menú <code>Advanced</code> de la BIOS. Existen tres mapas distintos a elegir: Español (por defecto), inglés, y Spectrum (avanzado).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>También se puede cambiar con la utilidad <code>keymap</code>. Dentro de <code>/bin</code> hay que crear un directorio llamado <code>keymaps</code> y ahí copiar los mapas de teclado se desee usar. Por ejemplo, para cambiar al mapa US hay que escribir <code>.keymap us</code> desde esxdos.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para que el mapa se conserve después de un master reset, hay que tener seleccionado <code>Default</code> en la configuración de BIOS.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para más información, consultar <a href="http://www.zxuno.com/forum/viewtopic.php?f=37&t=208">este mensaje en el foro de ZX-Uno</a>.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_español">Español</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="./img/keyboardEsp.png" alt="keyboardEsp"></span></p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_inglés">Inglés</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="./img/keyboardEng.png" alt="keyboardEng"></span></p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_spectrum">Spectrum</h4>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="./img/keyboardAV.png" alt="keyboardAV"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_teclas_especiales_y_botones">Teclas especiales y botones</h3>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>ZX</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de teclado <code>PC XT</code> (Por ejemplo, <code>Caps Shift+Symbol Shift+2</code> en vez de <code>Caps Shift+1</code>).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Teclas especiales durante el arranque:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>F2</code> (<code>Caps Shift+1</code> en gomaDOS+) Entrar en la BIOS</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Mayús</code> o <code>Cursor abajo</code> (<code>Caps Shift+2</code> en gomaDOS+): Menú de selección de cores</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+): Menú de selección de ROMS del core de ZX Spectrum</p>
|
||
</li>
|
||
<li>
|
||
<p><code>R</code>: Carga la rom del core de ZX Spectrum en modo "real" deshabilitando esxdos, nuevos modos gráficos, etc.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>/</code> (del teclado numérico, <code>Symbol Shift+V</code> en gomaDOS+): Carga la ROM por defecto del core de ZX Spectrum en modo "root"</p>
|
||
</li>
|
||
<li>
|
||
<p>Número del <code>1</code> al <code>9</code>: Cargar el core en la ubicación de la Flash correspondiente a dicho número</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Teclas especiales que se pueden utilizar durante la ejecución del core principal (ZX Spectrum):</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+): BREAK</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F2</code> (<code>Caps Shift+1</code> en gomaDOS+): Edit</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F5</code> (<code>Caps Shift+Symbol Shift+5</code> en gomaDOS+): NMI</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F7</code> (<code>Caps Shift+Symbol Shift+7</code> en gomaDOS+): Reproducir o Pausa en la reproducción de archivos .PZX</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F8</code> (<code>Caps Shift+Symbol Shift+8</code> en gomaDOS+): Rebobinar el archivo .PZX hasta la marca anterior</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F10</code> (<code>Caps Shift+9</code> en gomaDOS+): Graph</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F12</code> (<code>Caps Shift+Symbol Shift+W</code> en gomaDOS+): Turbo Boost. Pone a la CPU a 28MHz mientras se mantenga pulsada (a partir del core EXP27).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+): Hard reset. Backspace es la tecla de borrar hacia atrás, encima de <code>Enter</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Supr</code> (<code>Caps Shift+Symbol Shift+N</code> en gomaDOS+): Soft reset.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): cambia de modo video compuesto a VGA y viceversa.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_roms_2">ROMs</h3>
|
||
<div class="paragraph">
|
||
<p>El core de ZX Spectrum tiene la capacidad de inicializar utilizando diferentes versiones de ROM (48K, 128K, Plus 2, etc.). Estas se almacenan en la memoria flash del ZXDOS+, y se puede elegir cuál cargar, pulsando la tecla <code>Esc</code> durante el arranque. También es posible definir desde la configuración de BIOS, cuál es la ROM que se desea que se cargue por defecto.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Véase el <a href="#_roms_3">apartado de actualizaciones</a> para más información sobre cómo ampliar o modificar las ROMs almacenadas en la memoria flash.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_esxdos_2">esxdos</h3>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Existen dos tipos diferentes de comandos de esxdos, los llamados comandos "DOT", que, como su nombre indica, comienzan por un punto, y las extensiones de la funcionalidad de comandos existentes en BASIC.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Los principales comandos "DOT" commands son los siguientes:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>128</code>: Para pasar al modo 128K desde el modo 48K.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>cd</code>: Cambiar el directorio actual de trabajo.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>chmod</code>: cambiar los atributos de los ficheros de la tarjeta SD.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>cp</code>: Copiar un archivo.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>divideo</code>: Reproduce un archivo de video DivIDEo (.DVO).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>drives</code>: Mostrar las unidades disponibles.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dskprobe</code>: Utilidad para ver el contenido a bajo nivel de un dispositivo de almacenamiento.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dumpmem</code>: Permite volcar contenido de la memoria RAM a un fichero.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>file</code>: Intenta determinar el tipo de un fichero por su contenido (como el comando de UNIX).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>gramon</code>: Monitor para buscar gráficos, sprites, fuentes de texto, etc. en la memoria RAM.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>hexdump</code>: Muestra el contenido de un fichero usando notación hexadecimal.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>hexview</code>: Permite ver y navegar por el contenido de un fichero usando notación hexadecimal.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>launcher</code>: Crea un atajo (launcher) para abrir directamente un fichero TAP.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>ls</code>: Ver el contenido de un directorio.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>lstap</code>: Ver el contenido de un fichero .TAP</p>
|
||
</li>
|
||
<li>
|
||
<p><code>mkdir</code>: Crear un directorio.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>mktrd</code>: Crear un fichero imagen de disquete .TRD</p>
|
||
</li>
|
||
<li>
|
||
<p><code>more</code>: Ver el contenido de un archivo de texto.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>mv</code>: Mover un archivo.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>partinfo</code>: Muestra información sobre las particiones de un dispositivo de almacenamiento.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playpt3</code>: Reproducir un archivo musical .PT3.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playsqt</code>: Reproducir un archivo musical .SQT.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playstc</code>: Reproducir un archivo musical .STC.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playtfm</code>: Reproducir un archivo musical .TFC.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playwav</code>: Reproducir un archivo de audio .WAV.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>rm</code>: Borrar un archivo o directorio.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>snapload</code>: Carga ficheros snapshot.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>speakcz</code>: Reproduces texto usando pronunciación checa.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>tapein</code>: Montar un archivo .TAP para poder ser utilizado luego desde BASIC con la sentencia LOAD</p>
|
||
</li>
|
||
<li>
|
||
<p><code>tapeout</code>: Montar un archivo .TAP para poder ser utilizado luego desde BASIC con la sentencia SAVE</p>
|
||
</li>
|
||
<li>
|
||
<p><code>vdisk</code>: Monta una unidad de disquete .TRD para usar en el entorno TR-DOS (Una vez montadas todas las unidades deseadas, se puede entrar en el emulador de TR-DOS escribiendo: <code>RANDOMIZE USR 15616</code>)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunos comandos extendidos de BASIC son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>GO TO</code> para cambiar de unidad y/o directorio (ej: <code>GO TO hd1</code> o <code>GO TO hd0"juegos"</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>CAT</code> para mostrar el contenido de una unidad</p>
|
||
</li>
|
||
<li>
|
||
<p><code>LOAD</code> para cargar un fichero desde una unidad (programa en BASIC, pantalla, código, etc. por ejemplo <code>LOAD *"Pantalla.scr" SCREEN$</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>SAVE</code> para guardar datos en un fichero (Ej: <code>SAVE *"Programa.bas"</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>ERASE</code> para borrar un fichero</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Además, esxdos incluye un gestor NMI, es decir, una aplicación que se carga cuando se pulsa NMI (F5) y que facilita la navegación por la tarjeta microSD y la carga de algunos tipos de archivo (TAP, Z80, TRD, etc.). Pulsando la tecla "H" se accede a una pantalla de ayuda, en la que se indican todas las teclas disponibles.</p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El gestor de esxdos muestra las entradas de archivos y directorios en el orden de la tabla FAT interna, y no de manera alfabética. Si se desea ver esta información ordenada, se debe reorganizar la estructura de la tarjeta con una utilidad como FAT Sorter para Windows, <a href="https://fatsort.sourceforge.io/">FATsort</a> para Linux y MacOS, <a href="https://www.luisrios.eti.br/public/en_us/projects/yafs/">YAFS</a>, <a href="http://www.trustfm.net/software/utilities/SDSorter.phpp">SDSorter</a> u otros.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_comandos_para_zxdos">Comandos para ZXDOS+</h4>
|
||
<div class="paragraph">
|
||
<p>Tal y como se ha explicado en la parte de instalación, existe una serie de comandos que son exclusivos para ZXDOS+, y que se describen a continuación:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>back16m</code>: Copia a un fichero <code>FLASH.ZX1</code> en el directorio raíz de la tarjeta SD el contenido de una memoria SPI Flash de 16 megas. Se debe ejecutar desde una ROM en modo "root". Tras terminar su ejecución hay que ejecutar el comando <code>.ls</code> para que se termine de grabar la cache en la tarjeta.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>backzx2</code> o <code>backzxd</code>: Genera un fichero <code>FLASH.ZX2</code> o <code>FLASH.ZXD</code> en el directorio raíz de la tarjeta SD el contenido de una memoria SPI Flash de 32 megas. Se debe ejecutar desde una ROM en modo "root". Cuando termine hay que ejecutar el comando <code>.ls</code> para que se termine de grabar la cache en la tarjeta microSD. Si no se hace, la longitud del archivo se quedará en 0 de forma errónea.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>corebios</code>: Para hacer una actualización conjunta del core de ZX Spectrum y de la BIOS.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dmaplayw</code>: Reproduce un archivo de audio .WAV, que debe ser de 8 bits, sin signo y muestreado a 15625 Hz.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>esprst</code>: Resetea el módulo WiFi ESP8266(ESP-12).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>iwconfig</code>: Configura el módulo WiFi.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>joyconf</code>: Configura y prueba los joysticks de teclado y DB9.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>keymap</code>: Sirve para cargar una definición de teclado diferente.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>loadpzx</code>: Para cargar un archivo de imagen de cinta .PZX.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playmid</code>: Reproduce archivos musicales .MID en el addon MIDI.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>playrmov</code>: Reproduce videos en <a href="#_creación_de_vídeos_rdm_radastan_movie">formato radastaniano (ficheros <code>.RDM</code>)</a>. Este comando no funciona en modo 48K.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>romsback</code>: Copia a un fichero RomPack, llamado <code>ROMS.ZX1</code>, en el directorio raíz de la tarjeta microSD todas las ROMS del core ZX Spectrum almacenadas en la memoria SPI Flash. Sólo funciona correctamente en ZX-Uno y ZXDOS (no utilizar en ZXDOS+ o gomaDOS+). Se debe ejecutar desde una ROM en modo "root".</p>
|
||
</li>
|
||
<li>
|
||
<p><code>romsupgr</code>: Copia el contenido de un fichero RomPack, llamado <code>ROMS.ZX1</code>, en el directorio raíz de la tarjeta microSD con todas las ROMS para el core ZX Spectrum a la memoria SPI Flash. Se debe ejecutar desde una ROM en modo "root".</p>
|
||
</li>
|
||
<li>
|
||
<p><code>upgr16m</code>: Copia el contenido de un fichero <code>FLASH.ZX1</code> en el directorio raíz de la tarjeta SD a una memoria SPI Flash de 16 megas. Se debe ejecutar desde una ROM en modo "root".</p>
|
||
</li>
|
||
<li>
|
||
<p><code>upgrzx2</code> o <code>upgrzxd</code>: Copia el contenido de un fichero <code>FLASH.ZX2</code> o <code>FLASH.ZXD</code> a una memoria SPI Flash de 32 megas.Versión del comando upgrade exclusivo para memorias SPI Flash de 32 Megas. Se debe ejecutar desde una ROM en modo "root".</p>
|
||
</li>
|
||
<li>
|
||
<p><code>zxuc</code>: Configura todas las opciones de la BIOS, permitiendo grabar en la microSD las opciones seleccionadas en archivos de configuración que pueden posteriormente ser cargados.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>zxunocfg</code>: Configura determinados aspectos del funcionamiento del ZX-Uno como los timings, la contención, el tipo de teclado, la velocidad de la CPU, el tipo y frecuencia vertical del vídeo.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_wi_fi">Wi-Fi</h3>
|
||
<div class="paragraph">
|
||
<p>Todos los gomaDOS+, y algunos modelos de ZXDOS+, tienen incorporado un módulo ESP-12 con un chip Wi-Fi <a href="https://es.wikipedia.org/wiki/ESP8266">ESP8266</a>, que se puede utilizar fácilmente con un core de ZX Spectrum (por ejemplo, el core EXP27 160820) que tenga sintetizado un dispositivo <a href="https://es.wikipedia.org/wiki/Universal_Asynchronous_Receiver-Transmitter">UART</a>, que permite la comunicacion con el módulo.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para configurar de forma básica el acceso al módulo, existen dos comandos "DOT" que se pueden obtener desde <a href="https://github.com/zxdos/zxuno/tree/master/utils">el repositorio oficial en GitHub</a>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>esprst</code>, que sirve para reiniciar el módulo</p>
|
||
</li>
|
||
<li>
|
||
<p><code>iwconfig</code>, que se utiliza para indicar el identificador (SSID) y la contraseña de la red Wi-Fi a la que conectarse, que quedarán almacenados en el fichero <code>/sys/config/iw.cfg</code> para que puedan usarlos otros programas.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Por ejemplo:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">.iwconfig miwifi miclavedeacceso</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_network_tools_for_zx_uno_pack">Network tools for ZX-Uno pack</h4>
|
||
<div class="paragraph">
|
||
<p>Se trata de un conjunto de programas, desarrollados por Nihirash y que se pueden <a href="https://nihirash.net/network-tools-for-zx-uno-pack/">descargar</a> <a href="https://nihirash.net/ugophy-1-0-and-nettools-for-zx-spectrum/#more-71">de su web</a>.</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>netman</code>: Utilidad sencilla para configurar la conexión Wi-Fi para el resto de programas. No funciona en modo 48K.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>uGophy</code>: Cliente de <a href="https://es.wikipedia.org/wiki/Gopher">Gopher</a>. No funciona en modo 48K.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>irc</code>: Cliente de <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">Internet Relay Chat</a>. Funciona mejor a 14 Mhz.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>wget</code>: Utilidad para descargar ficheros vía HTTP (no funciona con HTTPS).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>platoUNO</code>: Cliente de <a href="https://es.wikipedia.org/wiki/Programmed_Logic_Automated_Teaching_Operations">PLATO</a>. También funciona mejor a 14 Mhz. Para más información sobre el uso moderno de PLATO, es interesante la web de <a href="https://www.irata.online/#about">IRATA.ONLINE</a>.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_ftp_uno">FTP-Uno</h4>
|
||
<div class="paragraph">
|
||
<p>Cliente de FTP desarrollado por Yombo, disponible <a href="https://github.com/yomboprime/FTP_Uno">en GitHub</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para utilizarlo, se deben seguir los siguientes pasos:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Editar el archivo <code>FTP.CFG</code> con los datos necesarios (Wi-Fi, servidor FTP al que conectar, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Copiar <code>FTP.CFG</code> en <code>/SYS/CONFIG/</code> en la tarjeta microSD</p>
|
||
</li>
|
||
<li>
|
||
<p>Copiar también <code>ftpUno.tap</code> al lugar que desee de la tarjeta</p>
|
||
</li>
|
||
<li>
|
||
<p>Iniciar el ZXDOS+ y cargar el archivo de cinta <code>ftpUno.tap</code></p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_uart_terminal">UART Terminal</h4>
|
||
<div class="paragraph">
|
||
<p>Se trata de un programa de ejemplo incluido con la biblioteca de funciones C <a href="https://github.com/yomboprime/ZXYLib">ZXYLib</a> desarrollada por yombo, y que permite enviar directamente pulsaciones de teclado a través del UART, y ver el resultado. Se puede descargar <a href="https://github.com/yomboprime/ZXYLib/raw/master/UARTTERM.tap">en este enlace</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez copiado el fichero de cinta <code>UARTTERM.tap</code> y cargado, se pueden teclear distintos comandos específicos para el chip ESP8266. Por ejemplo:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>AT</code>. Para verificar si hay comunicación con el chipo. El resultado normal, si todo está bien, sería <code>OK</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+RST</code>. Para reiniciar el chip. Es exactamente lo mismo que hace el comando <a href="#_wi_fi"><code>esprst</code></a></p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+GMR</code>. Para ver información relativa al chip, versión de firmware instalado, etc</p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+CWMODE_CUR=1</code>. Para configurar el chip en modo cliente Wi-Fi de forma temporal, hasta el próximo reinicio</p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+CWMODE_DEF=1</code>. Para configurar el chip en modo cliente Wi-Fi y guardar el ajuste como opción por defecto</p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+CWJAP_CUR="<RedWiFi>","<ContraseñaWiFi>"</code>, donde <code><RedWiFi></code> es el ID de a red Wi-Fi donde conectar, y <code><ContraseñaWiFi></code> la contraseña de acceso, conecta temporalente a la red indicada</p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+CWJAP_DEF="<RedWiFi>","<ContraseñaWiFi>"</code>, conecta a la red indicada, y la guarda como red por defecto en la memoria del chip</p>
|
||
</li>
|
||
<li>
|
||
<p><code>AT+CWAUTOCONN=1</code> configura el chip para conectarse a la red Wi-Fi por defecto al encenderse (<code>AT+CWAUTOCONN=0</code> desactiva esta opción)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se pueden consultar todos los comandos disponibles en <a href="https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf">la documentación oficial del fabricante</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_creación_de_vídeos_rdm_radastan_movie">Creación de vídeos RDM (RaDastan Movie)</h3>
|
||
<div class="paragraph">
|
||
<p>El comando <code>PLAYRMOV</code> reproduce videos en formato radastaniano. Para poder convertir nuestros propios vídeos, se debe obtener la utilidad <code>makevideoradas</code> desde el <a href="http://svn.zxuno.com/svn/zxuno/software/modo_radastan/videos_radastanianos/">Repositorio SVN</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el caso de Windows, en el propio repositorio hay un ejecutable (<code>makevideoras.exe</code>) ya preparado. Para Linux o MacOS, será necesario tener las herramientas de desarrollo correspondientes y compilarlo.</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">gcc makevideoradas.c <span class="nt">-o</span> makevideoradas</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez dispongamos de <code>makevideoradas</code>, necesitaremos otras dos herramientas: <a href="https://ffmpeg.org"><code>ffmpeg</code></a> e <a href="https://imagemagick.org/index.php"><code>imagemagick</code></a>. Estas se pueden instalar con el gestor de paquetes corespondiente (<code>apt</code>, <code>yum</code>, <code>pacmam</code>, <code>brew</code>, etc.) o descargando el código fuente y compilándolo también.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Ahora, el primer paso para convertir nuestro vídeo (por ejemplo, <code>mivideo.mp4</code>), es exportar los fotogramas como imágenes BMP de 128x96 píxeles de tamaño. Crearemos un directorio temporal (<code>img</code> en este ejemplo), donde guardar dichas imágenes.</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">mkdir </span>img
|
||
<span class="o">(</span>...<span class="o">)</span>/ffmpeg <span class="nt">-i</span> mivideo.mp4 <span class="nt">-vf</span> <span class="s2">"scale=128:96,fps=25"</span> <span class="nt">-sws_flags</span> lanczos <span class="nt">-sws_dither</span> ed <span class="nt">-pix_fmt</span> rgb4 <span class="nt">-start_number</span> 0 img/output%05d.bmp</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Ahora transformaremos los ficheros <code>BMP</code> a <code>BMP</code> (v3) de 16 colores.</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="o">(</span>...<span class="o">)</span>/magick mogrify <span class="nt">-colors</span> 16 <span class="nt">-format</span> bmp <span class="nt">-define</span> bmp:format<span class="o">=</span>bmp3 img/<span class="k">*</span>.bmp</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Finalmente, creamos el fichero <code>.RDM</code> (en este ejemplo <code>mivideo.rdm</code>) y borramos las imágenes y el directorio temporal.</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="o">(</span>...<span class="o">)</span>/makevideoradas img/output
|
||
<span class="nb">mv </span>img/output.rdm ../mivideo.rdm
|
||
<span class="nb">rm</span> <span class="nt">-rf</span> img</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En <a href="https://www.zonadepruebas.com/viewtopic.php?t=4796&start=110">este hilo del foro Zona de Pruebas</a> hay más información sobre todo este proceso.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_actualizaciones">Actualizaciones</h2>
|
||
<div class="sectionbody">
|
||
<div class="sect2">
|
||
<h3 id="_bios_2">BIOS</h3>
|
||
<div class="paragraph">
|
||
<p>Para actualizar BIOS se ha de obtener un fichero llamado <code>FIRMWARE.ZX2</code> (para un ZXDOS+ con placa FPGA LX16) o <code>FIRMWARE.ZXD</code> (para un ZXDOS+ con placa FPGA LX25). La última versión de los ficheros de firmware se puede descargar desde <a href="https://github.com/zxdos/zxuno/tree/master/firmware">el repositorio oficial</a></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Actualizar el firmware (BIOS) es delicado, no se debe hacer si no es necesario. En el caso de hacerlo, procurar que el ZXDOS+ tenga alimentación ininterumpida (como un SAI o un USB de portatil con batería).</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar el fichero en la raíz de la tarjeta MicroSD, encender y pulsar <code>F2</code> para entrar en la BIOS, seleccionar <code>Upgrade</code>, elegir <em>"Upgrade BIOS for ZX"</em>, y luego <em>"SDfile"</em>. El sistema leerá el fichero <code>FIRMWARE…​</code> y avisará cuando esté actualizado.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_roms_3">ROMs</h3>
|
||
<div class="paragraph">
|
||
<p>La memoria flash del ZXDOS+ dispone de 64 "slots", de 16K cada uno, para almacenar imágenes ROM de ZX Spectrum y compatibles. Así, la ROM del ZX Spectrum original (16K) ocuparía un slot del almacenamiento, la del ZX Spectrum 128K (32K) ocuparía dos slots, y la del ZX Spectrum +2A (64K) ocuparía 4 slots.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se puede añadir una nueva ROM desde <a href="#_roms">la pantalla ROMs</a> de la BIOS, pulsando la tecla <code>N</code>, conectando un cable de audio a la entrada de sonido de la placa, y reproduciendo una cinta de carga de ROM. Las cintas de carga de ROM se pueden crear desde un archivo <code>.tap</code> generado con la utilidad <code>GenRom</code>, disponible en el <a href="https://github.com/zxdos/zxuno/tree/master/modflash">repositorio de código de ZX-Uno</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para actualizar las ROM instaladas para ZX Spectrum de forma masiva, se ha de obtener un fichero RomPack con el nombre <code>ROMS.ZX1</code>, y se tiene que copiar en la tarjeta MicroSD. Arrancar el ZXDOS+ usando una ROM en modo "root", y entonces bastará con introducir el comando <code>.romsupgr</code>. Esto grabará todas las ROM, que quedarán disponibles para su uso.</p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Recordar que, si se inicia el ZXDOS+ pulsando la tecla <code>/</code> (del teclado numérico, <code>Symbol Shift+V</code> en gomaDOS+), entonces se cargará la ROM por defecto del core de ZX Spectrum en modo "root".</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para hacer el proceso contrario (guardar las ROMs en un fichero RomPack llamado <code>ROMS.ZX1</code>), se puede usar el comando <code>.romsback</code>.</p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>La versión actual de <code>romsback</code>, en ZXDOS+, sólo almacena correctamente en RomPack los primeros 35 slots de ROM ocupados.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Los ficheros RomPack se pueden editar fácilmente con la utilidad <a href="http://guest:zxuno@svn.zxuno.comsvn/zxuno/software/ZX1RomPack/">ZX1RomPack</a>. Aunque es un programa de Windows, funciona perfectamente, por ejemplo, usando <a href="https://www.winehq.org">Wine</a> o programas similares, tanto en MacOS como en Linux.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_cores">Cores</h3>
|
||
<div class="paragraph">
|
||
<p>Hay un número de espacios disponibles para almacenar cores (el número depende del tamaño de la SPI Flash del modelo de ZXDOS), estando reservado el primer espacio para el de ZX Spectrum principal (esto no impide tener más cores de ZX Spectrum en otros espacios además del primero).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Los cores oficiales están <a href="https://github.com/zxdos/zxdos-plus/tree/master/cores">disponibles para descargar</a> en el repositorio en GitHub.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para actualizar o instalar un nuevo core hay varias alternativas.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La forma más sencilla consiste en obtener la última versión del fichero que lo define, que será un fichero que hay que llamar <code>COREnn.ZX2</code> (para un ZXDOS+ con placa FPGA LX16) o <code>COREnn.ZXD</code> (para un ZXDOS+ con placa FPGA LX25), donde <code>nn</code> es el número de espacio donde realizar la instalación (por ejemplo <code>CORE2.ZX2</code> o <code>CORE2.ZXD</code> para el espacio 2).</p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>A partir de la version 0.80 de BIOS, los ficheros se nombran usando la convención <code>COREXXy.ZXn</code> donde XX <em>siempre</em> es un número de dos digitos. Así, un antiguo fichero <code>CORE4.ZXD</code> ha de renombrarse como <code>CORE04.ZXD</code>. La parte <code>y</code> del nombre se ignora, así que se pueden usar nombres más largos y descriptivos (como, por ejemplo, <code>CORE04_ejemplo.ZXD</code>).</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar el fichero en la raíz de la tarjeta microSD, encender y pulsar <code>F2</code> para entrar en la BIOS. Elegir <code>Upgrade</code>, seleccionar la fila correspondiente al número de core elegido (por ejemplo, la 2 – justo después de la de Spectrum), pulsar enter y luego <em>"SD file"</em>. El sistema leerá el fichero <code>COREnn…​</code> y avisará cuando esté actualizado, aunque antes preguntará el nombre (con el que se verá en la lista para elegir en el arranque y en el listado de la BIOS). Una vez instalado, se podrá utilizar al arrancar.</p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>La actualización del core de ZX Spectrum es exactamente igual que los otros cores, pero en lugar del fichero <code>CORE1.ZX2</code> o <code>CORE1.ZXD</code>, ha de ser un fichero llamado <code>SPECTRUM.ZX2</code> o <code>SPECTRUM.ZXD</code>.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_esxdos_3">esxdos</h3>
|
||
<div class="paragraph">
|
||
<p>Para actualizar esxdos a una nueva versión, se ha de obtener la distribución desde <a href="http://www.esxdos.org">la página oficial</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez descargado y descomprimido, se ha de copiar, a la raíz de la tarjeta, el contenido de los directorios <code>BIN</code> y <code>SYS</code> sobreescribiendo los existentes (para preservar los comandos exclusivos de ZXDOS+).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar <code>ESXMMC.BIN</code> (o <code>ESXMMC.ROM</code>, según la versión) en la raíz de la tarjeta microSD.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Iniciar el ZXDOS+ con la tarjeta insertada y pulsar F2 para acceder a la configuración de BIOS. Seleccionar el menú <code>Upgrade</code> y elegir <em>"Upgrade esxdos for ZX"</em>. En el diálogo que aparece elegir <em>"SD file"</em> y, cuando pregunte <em>"Load from SD"</em> contestar <em>"Yes"</em> a la pregunta <em>"Are you sure?"</em>. Se leerá el contenido del fichero <code>ESXDOS…​</code>, se grabará en la flash y avisará cuando esté actualizado.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Realizar un Hard-reset, o apagar y encender.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si todo se ha hecho correctamente, al encender el ZXDOS+ se verá cómo esxdos detecta la tarjeta y carga los componentes necesarios para funcionar, mostrando la nueva versión en la parte superior.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_memoria_flash">Memoria Flash</h3>
|
||
<div class="paragraph">
|
||
<p>También es posible actualizar la memoria flash de la FPGA. Por el momento desde el menú de la BIOS sólo es posible utilizar imágenes de 16MiB. Para poder usar una imagen de 32MiB, se ha de usar el comando <code>UPGRZX2</code> o <code>UPGRZXD</code> de <a href="#_esxdos">esxdos</a> y un fichero con el nombre <code>FLASH.ZX2</code> o <code>FLASH.ZXD</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar el archivo de imagen (de 16MiB) <code>FLASH.ZXD</code> en la raíz de la tarjeta microSD.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Iniciar el ZXDOS+ con la tarjeta insertada y pulsar F2 (<code>Caps Shift+1</code> en gomaDOS+) para acceder a la configuración de BIOS. Seleccionar el menú <code>Upgrade</code> y elegir <em>"Upgrade flash from SD"</em>. En el diálogo que pregunta <em>"Load from SD"</em> contestar <em>"Yes"</em> a la pregunta <em>"Are you sure?"</em>. Se leerá el contenido del fichero <code>FLASH…​</code>, .</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Realizar un Hard-reset, o apagar y encender.</p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Este proceso sustituye todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_otros_cores">Otros cores</h2>
|
||
<div class="sectionbody">
|
||
<div class="sect2">
|
||
<h3 id="_zx_spectrum_48k_kyp">ZX Spectrum 48K (Kyp)</h3>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/Kyp069/zx48.zxdosplus/releases/">Core alternativo</a>, cuyo objetivo es ser una implementación de un Spectrum 48K que sea lo más exacta posible en cuanto a la configuración de los tiempos (timing), contención de memoria, etc.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Sus características principales son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Sólo funciona con RGB</p>
|
||
</li>
|
||
<li>
|
||
<p>Specdrum</p>
|
||
</li>
|
||
<li>
|
||
<p>Turbosound (dos chips AY) con posibilidad de elegir mix ACB/ABC</p>
|
||
</li>
|
||
<li>
|
||
<p>DivMMC con esxdos 0.8.8</p>
|
||
</li>
|
||
<li>
|
||
<p>Joystick Kempston en el puerto 1</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD con la primera partición en formato FAT16 o FAT32, y que tenga instalada la distribución de esxdos 0.8.8 (ver <a href="#_esxdos">el apartado correspondiente de esxdos</a> para más información).</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_2">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_2">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+): BREAK</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F5</code> (<code>Caps Shift+Symbol Shift+5</code> en gomaDOS+): NMI</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F8</code> (<code>Caps Shift+Symbol Shift+8</code> en gomaDOS+): Alternar la configuración de mezcla de Turbosound entre ACB y ABC.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+) o <code>F11</code> (<code>Caps Shift+Symbol Shift+Q</code> en gomaDOS+): Hard reset. Backspace es la tecla de borrar hacia atrás, encima de <code>Enter</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Supr</code> (<code>Caps Shift+Symbol Shift+N</code> en gomaDOS+) o <code>F12</code> (<code>Caps Shift+Symbol Shift+W</code> en gomaDOS+): Soft reset.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_zx_spectrum_next">ZX Spectrum Next</h3>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.specnext.com">ZX Spectrum Next</a> es un proyecto, basado en FPGA, que aspira a ser la evolución de los ordenadores Sinclair ZX Spectrum, manteniendo la compatibilidad hardware y software con los modelos anteriores, pero añadiendo nuevas características.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Principalmente gracias a avlixa, existe una versión del core de ZX Spectrum Next sintetizada para usarse con ZXDOS+.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El core para ZXDOS+ no tiene, por el momento, implementada ninguna de las siguientes caracteristicas:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Raspberry Pi</p>
|
||
</li>
|
||
<li>
|
||
<p>Beeper interno</p>
|
||
</li>
|
||
<li>
|
||
<p>Conector de expansión EDGE</p>
|
||
</li>
|
||
<li>
|
||
<p>Módulo RTC</p>
|
||
</li>
|
||
<li>
|
||
<p>Teclado de membrana</p>
|
||
</li>
|
||
<li>
|
||
<p>Flasheo de cores adicionales o actualización del propio core Next desde el core Next</p>
|
||
</li>
|
||
<li>
|
||
<p>Salida MIC</p>
|
||
</li>
|
||
<li>
|
||
<p>Video HDMI</p>
|
||
</li>
|
||
<li>
|
||
<p>Utilización de puerto de conexión joystick para comunicación UART</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El manual de uso se puede descargar desde <a href="https://www.specnext.com/zx-spectrum-next-user-manual-first-edition/">la página oficial</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_2">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD con la primera partición en formato FAT16 o FAT32, y que tenga instalada la distribución de esxdos correspondiente a la configuración actual de BIOS (ver <a href="#_esxdos">el apartado correspondiente de esxdos</a> para más información).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Obtener la distribución de NextZXOS <a href="https://www.specnext.com/latestdistro/">en la página oficial</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Descomprimir el contenido de NextZXOS en la tarjeta microSD, pero modificando el archivo <code>config.ini</code> en <code>/machines/next</code> para que contenga (si no existiera ya) la línea <code>ps2=0</code> (para asegurar que se utiliza correctamente el puerto del teclado) y la línea <code>intbeep=0</code> para apagar el zumbador interno (este último paso no es necesario en el caso de un gomaDOS+).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de ZX Spectrum Next</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_3">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_3">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>ZX</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de teclado <code>PC XT</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Notar que <code>Ctrl+Alt+backspace</code> no funciona con el core de Spectrum Next. Hay que apagar manualmente y volver a encender si se desea cambiar a otro core. Tampoco hay botón físico de Reset o Drive.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>F1</code> (<code>Caps Shift+Symbol Shift+1</code> en gomaDOS+): Hard Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F2</code> (<code>Caps Shift+Symbol Shift+2</code> en gomaDOS+): Scandoubler. Dobla la resolución. Debería estar apagado para conexiones vía SCART</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F3</code> (<code>Caps Shift+Symbol Shift+3</code> en gomaDOS+): Alternar la frecuencia vertical entre 50Hz y 60Hz</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F4</code> (<code>Caps Shift+Symbol Shift+4</code> en gomaDOS+): Soft Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F7</code> (<code>Caps Shift+Symbol Shift+7</code> en gomaDOS+): Scanlines</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F9</code> (<code>Caps Shift+Symbol Shift+9</code> en gomaDOS+): NMI</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F10</code> (<code>Caps Shift+Symbol Shift+0</code> en gomaDOS+): divMMC NMI. Simula la pulsación del botón Drive. Si se usa con mayúsculas, fuerza volver a buscar unidades de almacenamiento y cargar la pantalla de arranque en esxdos</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_2">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Al iniciarse la primera vez, aparecerán una serie de pantallas de ayuda. Tras pulsar la tecla <code>Espacio</code>, se mostrará el menú de inicio de NextZXOS.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/next.png" alt="next"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se puede navegar utilizando las teclas de cursor, las teclas <code>5</code>, <code>6</code>, <code>7</code> y <code>8</code>, o un joystick (si se ha configurado en modo Kempston, MD o cursor). <code>Enter</code> o el botón del joystick selecciona un elemento.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La opción <code>More…​</code> muestra un segundo menú con más opciones.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/next2.png" alt="next2"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Si se elige <code>Browser</code>, se cargará el navegador de NextZXOS, desde el que es posible desplazarse viendo el contenido de la tarjeta microSD y cargar directamente diferentes tipos de archivo (TAP, NEX, DSK, SNA, SNX, Z80, Z8, etc.).</p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El navegador muestra las entradas de archivos y directorios en el orden de la tabla FAT interna, y no de manera alfabética. Si se desea ver esta información ordenada, se debe reorganizar la estructura de la tarjeta con una utilidad como FAT Sorter para Windows, <a href="https://fatsort.sourceforge.io/">FATsort</a> para Linux y MacOS, <a href="https://www.luisrios.eti.br/public/en_us/projects/yafs/">YAFS</a>, <a href="http://www.trustfm.net/software/utilities/SDSorter.phpp">SDSorter</a> u otros.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/next3.png" alt="next3"></span></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el momento de escribir estas líneas, el core de ZX Spectrum Next para ZXDOS+ no soporta el uso del acelerador basado en Raspberry Pi, así que no es posible cargar ficheros TZX.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Por defecto, no es posible cargar ficheros TRD dede el navegador (se debe configurar NextZXOS para cargar una "personalidad" con esxdos).</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para más información, consultar el <a href="https://www.specnext.com/zx-spectrum-next-user-manual-first-edition/">manual de uso oficial</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_msx">MSX</h3>
|
||
<div class="paragraph">
|
||
<p>MSX1FPGA es un proyecto para clonar MSX1. El desarrollo original es de Fabio Belavenuto y se encuentra disponible <a href="https://github.com/fbelavenuto/msx1fpga">en GitHub</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de sus características son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>MSX1 a 50Hz o 60Hz;</p>
|
||
</li>
|
||
<li>
|
||
<p>Utiliza Nextor ROM con un controladr para SD</p>
|
||
</li>
|
||
<li>
|
||
<p>Mapa de teclado configurable</p>
|
||
</li>
|
||
<li>
|
||
<p>Simulación de línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte para joystick</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_3">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD con la primera partición en formato FAT16. Es posible utilizar una segunda partición FAT16 para albergar todo el software, dejando la primera sólo para arrancar el sistema.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Obtener lo siguiente:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Ficheros básicos del proyecto para la SD <a href="https://github.com/fbelavenuto/msx1fpga/tree/master/Support/SD">desde GitHub</a></p>
|
||
</li>
|
||
<li>
|
||
<p>Controlador (<code>NEXTOR.SYS</code>) y ROM (<code>NEXTOR.ROM</code>) de Nextor <a href="https://github.com/fbelavenuto/msx1fpga/tree/master/Software/nextor">también desde GitHub</a></p>
|
||
</li>
|
||
<li>
|
||
<p>ROM de MSX1 (<code>MSX_INT.rom</code>, <code>MSX_JP.rom</code> o <code>MSX_USA.rom</code>) <a href="https://github.com/fbelavenuto/msx1fpga/tree/master/Software/msx1">en el mismo repositorio</a></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar el contenido del <a href="https://github.com/fbelavenuto/msx1fpga/tree/master/Support/SD">directorio SD</a> en la raíz de la primera partición de la tarjeta microSD.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar <code>NEXTOR.SYS</code> en el mismo lugar.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar <code>NEXTOR.ROM</code> en el directorio <code>MSX1FPGA</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar la ROM deseada de MSX1 (<code>MSX_INT.rom</code>, <code>MSX_JP.rom</code> o <code>MSX_USA.rom</code>) en el directorio <code>MSX1FPGA</code>, pero usando el nombre <code>MSX1BIOS.ROM</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el fichero <code>/MSX1FPGA/config.txt</code> se guarda la configuración del core, según este formato:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre>11SP01
|
||
||||||
|
||
|||||+-Modo de línea de exploración: 1=Activo, 0=Inactivo
|
||
||||+--Turbo: 1=Arrancar con el modo turbo activo
|
||
|||+---Sistema de color: N=NTSC, P=PAL
|
||
||+----Mapa de Teclado: E=Inglés, B=Brasileño, F=Francés, S=Castellano
|
||
|+-----Scandoubler(VGA): 1=Activo, 0=Inactivo
|
||
+------Nextor: 1=Activo, 0=Inactivo</pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de MSX</a> en el ZXDOS+.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_4">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_4">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>MSX</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de teclado <code>PC XT</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Impr Pant</code>: Cambia el modo entre VGA y RGB</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq Desp</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): Cambia el modo de línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Pausa</code>: Cambia entre 50Hz y 60Hz</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F11</code> (<code>Caps Shift+Symbol Shift+Q</code> en gomaDOS+): : Activa o desactiva el modo turbo</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Supr</code>: Soft Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+F12</code>: Hard Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+, en modo de teclado <code>ZX Spectrum</code>): Reinicia la FPGA</p>
|
||
</li>
|
||
<li>
|
||
<p><code>ALT Izquierdo</code>: MSX GRAPH</p>
|
||
</li>
|
||
<li>
|
||
<p><code>ALT Derecho</code>: MSX CODE</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Re Pág</code>: MSX SELECT</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Inicio</code>: MSX HOME (<code>Mayús+HOME</code>: CLS)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Fin</code>: MSX STOP</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ñ</code> o <code>Windows</code>: MSX DEAD</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En BASIC, se puede usar <code>CTRL + STOP</code> (<code>Ctrl+Fin</code>) para detener la ejecución de un programa.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Para cambiar el modo de vídeo entre 50Hz y 60Hz (para ejecución correcta de programas PAL a través de VGA), se puede usar también <code>DISPLAY.COM</code>, que se puede obtener <a href="https://www.msx.org/forum/msx-talk/software/dos-tool-to-switch-from-50-to-60hz">en este hilo del foro de MSX</a>.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_3">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Para acceder a BASIC desde MSX-DOS, ejecutar el comando <code>BASIC</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Desde BASIC, se puede cargar desde una cinta (u <a href="#_miniduino">otro dispositivo externo de audio</a>) con los comandos <code>RUN"CAS:"</code>, <code>BLOAD"CAS:",R</code> o <code>CLOAD</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Notar</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para acceder a MSX-DOS desde BASIC, ejecutar <code>CALL SYSTEM</code>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="sect4">
|
||
<h5 id="_msxctrl">MSXCTRL</h5>
|
||
<div class="paragraph">
|
||
<p>Se trata de una utilidad exclusiva del core MSX1FPGA, que permite controlar todas las opciones del core que antes solo eran accesibles a través del fichero de configuración o pulsando determinadas teclas.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Al ejecutar <code>MSXCTRL</code> se muestran los parámetros de uso:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre>MSXCTRL.COM - Utility to manipulate MSX1FPGA core.
|
||
HW ID = 06 - ZX-Uno Board
|
||
Version 1.3
|
||
Mem config = 82
|
||
Has HWDS = FALSE
|
||
|
||
Use:
|
||
|
||
MSXCTRL -h -i -r -b -[5|6] -m<0-2>
|
||
-c<0-1> -d<0-1> -t<0-1>
|
||
[-w<filename> | -l<filename>]
|
||
-k<0-255> -e<0-255> -p<0-255>
|
||
-s<0-255> -o<0-255> -a<0-255></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><code>MSXCTRL -h</code> muestra ayuda para cada parámetro. Así, <code>MSXCTRL -i</code> presenta la configuración actual, los parámetros <code>-t 1</code> encienden el modo turbo, etc.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_otros">Otros</h5>
|
||
<div class="paragraph">
|
||
<p>Existen múltiples sistemas para cargar los juegos dependiendo del tipo de archivo: .CAS, .DSK o ROM (ver <a href="http://www.zxuno.com/forum/viewtopic.php?f=53&t=2080">este hilo del foro de ZX-Uno</a> para más información).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El mapeo de para teclado español disponible con la distribución oficial se puede cambiar por otro más completo. Ver <a href="http://www.zxuno.com/forum/viewtopic.php?f=53&t=2897">aquí</a> para más información.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_amstrad_cpc">Amstrad CPC</h3>
|
||
<div class="paragraph">
|
||
<p>El core para ZXDOS+ de Amstrad CPC está basado en el proyecto <a href="http://www.cpcwiki.eu/index.php/FPGAmstrad">FPGAmstrad</a> de Renaud Hélias.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de sus características son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>VGA: 640x480 VGA centrado a 60Hz</p>
|
||
</li>
|
||
<li>
|
||
<p>Selección de discos: El primer disco detectado se inserta en el arranque y la pulsación de una tecla hace reset y carga el siguiente</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_4">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD con la primera partición en formato FAT32, de 4GB de tamaño y 4096 bytes por cluster.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Además son necesarios los ficheros ROM siguientes (se pueden obtener <a href="http://www.cpcwiki.eu/index.php/FPGAmstrad#How_to_assemble_it">en la wiki oficial del proyecto original</a>) o en el <a href="https://github.com/renaudhelias/FPGAmstrad/raw/master/OS6128_BASIC1-1_AMSDOS_MAXAM.zip">repositorio de GitHub</a>:
|
||
- <code>OS6128.ROM</code>
|
||
- <code>BASIC1-1.ROM</code>
|
||
- <code>AMSDOS.ROM</code>
|
||
- <code>MAXAM.ROM</code></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>También es recomendable incluir uno o más ficheros con imágenes de disco (<code>DSK</code>) con el software que se quiera ejecutar.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Copiar tanto los ficheros <code>ROM</code> como los <code>DSK</code> a la raíz de la partición FAT32.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_5">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_5">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>Amstrad CPC</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de teclado <code>PC XT</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Re Pág</code> (<code>Caps Shift+Symbol Shift+E</code> en gomaDOS+): Hace un Reset del Amstrad y carga el siguiente archivo <code>DSK</code> en orden alfabético.</p>
|
||
</li>
|
||
<li>
|
||
<p>En un teclado PS/2, sólo funciona la tecla mayúsculas del lado izquierdo del teclado.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_4">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Escribir el comando <code>CAT</code> para ver el contenido del fichero DSK cargado actualmente.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/cpc.png" alt="cpc"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Escribir el comando <code>RUN"<nombre></code> para cargar un programa del disco</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/cpc2.png" alt="cpc2"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Usar la tecla <code>Re Pág</code> para hacer reset y cargar el siguiente archivo <code>DSK</code> en orden alfabético.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_acorn_atom">Acorn Atom</h3>
|
||
<div class="paragraph">
|
||
<p>El <a href="https://es.wikipedia.org/wiki/Acorn_Atom">Acorn Atom</a> era un computador casero hecho por Acorn Computers. El core para ZXDOS+ (basado en el de ZX-Uno realizado por Quest) es una adaptación del proyecto <a href="https://github.com/hoglet67/AtomFpga">AtomFPGA</a>. Se puede ver más información en <a href="http://zxuno.com/forum/viewtopic.php?f=16&t=4">el foro de ZX-Uno</a>.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_5">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD con la primera partición en formato FAT16.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Descargar la última versión de Atom Software Archive <a href="https://github.com/hoglet67/AtomSoftwareArchive/releases/latest">desde GitHub</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Ahora, se puede organizar la información en la tarjeta microSD de dos maneras distintas:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Descomprimir todo el contenido del archivo en la raíz de la tarjeta. El contenido del directorio <code>SYS</code> es compatible con el directorio <code>SYS</code> de esxdos, siendo posible combinar los dos en uno solo.</p>
|
||
</li>
|
||
<li>
|
||
<p>Organizar la información de una manera más reducida en la raíz, utilizando sólo dos directorios. Crear un directorio <code>ATOM</code> en la raíz de la tarjeta, y copiar en su interior todo el contenido del archivo, excepto el directorio <code>MANPAGES</code> que se tendrá que poner también en la raíz de la microSD. Luego, copiar los ficheros del archivo <code>trick_ATOM_folder</code> (disponible <a href="http://www.zxuno.com/forum/viewtopic.php?f=16&t=4006">en el foro de ZX-Uno</a>), reemplazando todos los que se encuentren con el mismo nombre. Así, quedará una estructura como la siguiente:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre> /
|
||
+-ATOM/
|
||
| +-AA/
|
||
| (...)
|
||
| +-AGD/
|
||
| | +-SHOW2
|
||
| | +-SHOW3
|
||
| (...)
|
||
| +-MENU
|
||
| (...)
|
||
| +-TUBE/
|
||
| | +-BOOT6502
|
||
| (..)
|
||
|
|
||
+-MANPAGES/
|
||
| +-CPM.MAN
|
||
| +-FLEX.MAN
|
||
| (...)
|
||
|
|
||
+-MENU</pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_6">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_6">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>Acorn Electron</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de teclado <code>PC XT</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Mayús+F10</code>: Muestra el menú de Atom Software Archive</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F10</code> (<code>Caps Shift+Symbol Shift+0</code> en gomaDOS+): Soft Reset</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F1</code> (<code>Caps Shift+Symbol Shift+1</code> en gomaDOS+): Modo turbo 1Mhz</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F2</code> (<code>Caps Shift+Symbol Shift+2</code> en gomaDOS+): Modo turbo 2Mhz</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F3</code> (<code>Caps Shift+Symbol Shift+3</code> en gomaDOS+): Modo turbo 4Mhz</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F4</code> (<code>Caps Shift+Symbol Shift+4</code> en gomaDOS+): Modo turbo 8Mhz</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El teclado está mapeado en inglés, según el siguiente esquema:</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/keyboardAtom.jpg" alt="keyboardAtom"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_5">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Tras iniciar el core, en algunos casos, puede suceder que se muestre una pantalla llena de <code>@</code>. Basta con retirar e insertar, o simplemente insertar, la tarjeta microSD, para que empiece a funcionar.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/acorn.jpg" alt="acorn"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez iniciado, pulsar <code>Mayús+F10</code> para mostrar el menú desde el que se pueden cargar los programas de Atom Software Archive de la tarjeta.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_commodore_64">Commodore 64</h3>
|
||
<div class="paragraph">
|
||
<p>Commodore 64 (C64, CBM 64/CBM64, C=64,C-64, VIC-641) es una <a href="https://es.wikipedia.org/wiki/Commodore_64">computadora doméstica de 8 bits</a> desarrollada por Commodore International.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>El core para ZXDOS+ está siendo desarrollado por Neuro.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_6">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se puede utilizar una tarjeta microSD con la primera partición en formato FAT16 o FAT32. Es posible cargar desde la misma tanto archivos de imagen de disco (<code>D64</code>) como ficheros de cinta (<code>TAP</code>).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de Commodore 64</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_7">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_7">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Las combinaciones específicas de gomaDOS+ que se indican a continuación se corresponden con el modo de teclado <code>Commodore 64</code>. Véase el <a href="#_modos_de_teclado_en_gomados">apartado dedicado a los modos de teclado</a> de gomaDOS+ para más información. También se pueden utilizar las equivalentes en el modo de tecldo <code>PC XT</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>F9</code> <code>Caps Shift+Symbol Shift+9</code> en gomaDOS+): Reproducir un archivo TAP de cinta</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F12</code> (<code>Caps Shift+Symbol Shift+W</code> en gomaDOS+): Muestra menú de opciones</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): cambia de modo video compuesto a VGA y viceversa.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+): RUN/STOP (<code>Mayús+RUN/STOP</code>: Carga desde cinta)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_6">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Tras pulsar <code>F12</code> (<code>Caps Shift+Symbol Shift+W</code> en gomaDOS+), aparece el menú de opciones.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/c64.jpg" alt="c64"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Desde dicho menú se puede</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Hacer reset del core</p>
|
||
</li>
|
||
<li>
|
||
<p>Activar o desactivar la simulación de línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cambiar la paleta de color</p>
|
||
</li>
|
||
<li>
|
||
<p>Cambiar entre modo video compuesto y modo VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Activar o desactivar el sonido de carga de cinta</p>
|
||
</li>
|
||
<li>
|
||
<p>Encender o apagar un filtro de audio</p>
|
||
</li>
|
||
<li>
|
||
<p>Cargar imagen de disco D64</p>
|
||
</li>
|
||
<li>
|
||
<p>Cargar fichero de cinta TAP</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Para cargar desde un disco, habitualmente, se ha de escribir <code>LOAD "*",8,1</code> y pulsar <code>Enter</code>. Una vez aparezca <code>READY</code> en la pantalla, escribir <code>RUN</code> y pulsar <code>Enter</code> para ejecutar el programa.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si el disco tuviera varios programas para ejecutar, escribir <code>LOAD "$"</code> y pulsar <code>Enter</code>. A continuación, escribir <code>LIST</code>, y pulsar <code>Enter</code>, para ver una lista con los archivos dentro del disco. Ahora, para cargar el archivo deseado, escribir <code>LOAD "<nombre>",8</code> (donde <code><nombre></code> es el nombre del archivo a cargar) y pulsar <code>Enter</code>. Una vez aparezca <code>READY</code> en la pantalla, escribir <code>RUN</code> y pulsar <code>Enter</code> para ejecutar el programa. Si esto no funcionase, probar con el comando <code>LOAD "<nombre>",8,1</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para cargar desde una cinta, seleccionar la opción "Cargar fichero de cinta TAP" del menú de opciones. A continuación navegar por la tarjeta microSD y elegir el archivo de cinta a cargar, pulsar <code>ENTER</code> y cerrar el menú de opciones. Entonces escribir <code>LOAD</code> y pulsar <code>Enter</code>, o bien pulsar <code>Mayús+Esc</code> (<code>Mayús+RUN/STOP</code>). Finalmente, tras pulsar <code>F9</code> (<code>Caps Shift+Symbol Shift+9</code> en gomaDOS+) comenzará la reproducción del archivo de cinta (se puede usar la opción de activar el sonido de carga de la cinta del menú si se desea). Una vez finalizadada la carga, escribir <code>RUN</code> y pulsar <code>ENTER</code> si fuese necesario.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_phoenix">Phoenix</h3>
|
||
<div class="paragraph">
|
||
<p>Core del videojuego arcade de estilo matamarcianos diseñado por la empresa Amstar Electronics.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de sus características son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Dos modos de vídeo seleccionables: RGB/PAL60Hz y VGA 60Hz</p>
|
||
</li>
|
||
<li>
|
||
<p>Simulación de línea de exploración (Scanlines) en VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Conmutación opcional para el giro de 90º en las direcciones de los controles</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_7">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Este core no utiliza la tarjeta microSD.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_8">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_8">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Q</code> y <code>A</code> o <code>Cursor Izquierdo</code> y <code>Cursor Derecho</code> (o un joystick): Control de movimiento</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Z</code> o <code>X</code> <code>Tecla Windows Izquierda</code> y <code>Espacio</code> (o botones 1 y 2 del joystick): Disparos 1 y 2, así como inserción de moneda y botón <code>Start</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>F2</code> (<code>Caps Shift+Symbol Shift+2</code> en gomaDOS+): Cambia el modo de vídeo entre RGB y VGA</p>
|
||
</li>
|
||
<li>
|
||
<p><code>-</code> (del teclado numérico): Activa o desactiva la simulación de línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Tab</code> (<code>Caps Shift+Enter</code> en gomaDOS+, en modo de teclado <code>PC XT</code>): Activa o desactiva giro de 90º en las direcciones de los controles</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_7">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Por defecto se inicia con los controles normales, para el uso de pantallas verticales. Si se tiene la pantalla en horizontal (lo más habitual), la imagen se ve de lado, pero para ayudar en el control, y que sea más natural y acorde con lo que se ve, pulsando <code>Tab</code> se consigue que las direcciones arriba-abajo estén intercambiadas con izquierda-derecha. Afecta por igual al joystick y al teclado.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_pong">Pong</h3>
|
||
<div class="paragraph">
|
||
<p>Pong <a href="https://es.wikipedia.org/wiki/Pong">fue un videojuego</a> de la primera generación de videoconsolas publicado por Atari.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas las características del core son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Dos modos de vídeo seleccionables: RGB/PAL60Hz y VGA 60Hz</p>
|
||
</li>
|
||
<li>
|
||
<p>7 tipos de juego</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte 2 o 4 jugadores</p>
|
||
</li>
|
||
<li>
|
||
<p>Compatible con joystick(s), teclado, ratón y codificadores (encoders) rotatorios (ver <a href="#_codificadores_rotatorios">aquí</a> para más información)</p>
|
||
</li>
|
||
<li>
|
||
<p>Varios modos de color</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_8">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Este core no utiliza la tarjeta microSD.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_9">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_9">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Esc</code> o botón 2 del joystick (<code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>): Mostrar u ocultar el menú de configuración</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+, en modo de teclado <code>ZX Spectrum</code>): Hard reset. Backspace es la tecla de borrar hacia atrás, encima del enter</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+, en modo de teclado <code>ZX Spectrum</code>): cambia de modo video compuesto a VGA y viceversa</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F3</code> o <code>F12</code> (<code>Caps Shift+Symbol Shift+3</code> o <code>Caps Shift+Symbol Shift+W</code> en gomaDOS+): Reinicio del juego</p>
|
||
</li>
|
||
<li>
|
||
<p>Número del <code>1</code> al <code>7</code>: Cambiar el tipo de juego</p>
|
||
</li>
|
||
<li>
|
||
<p>Joystick 2 (derecha): Control de paleta de la derecha (Jugador 1).</p>
|
||
</li>
|
||
<li>
|
||
<p>Joystick 1 (izquierda): Control de paleta de la izquierda (Jugador 2)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Cursor arriba</code> y <code>Cursor abajo</code> o <code>O</code> y <code>K</code>: Control de paleta de la derecha (Jugador 1 en modo 2 jugadores y jugador 3 en modo de 4 jugadores)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Q</code> y <code>A</code>: Control de paleta de la izquierda (Jugador 2 en modo 2 jugadores y jugador 4 en modo de 4 jugadores)</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Z</code>, <code>M</code> o botón de joystick 1: Saque manual</p>
|
||
</li>
|
||
<li>
|
||
<p>Teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) y <code>Enter</code> para navegar por el menú</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_8">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Pulsando <code>Esc</code> o el botón 2 del joystick (o <code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) se muestra el menú de configuración. Se usan las teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) y <code>Enter</code> para elegir y seleccionar opciones del menú.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/pong.jpg" alt="pong"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En él se pueden activar o desactivar las siguientes opciones:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Servicio automático o manual (Serve)</p>
|
||
</li>
|
||
<li>
|
||
<p>Ángulo de la bola (Ball Angle)</p>
|
||
</li>
|
||
<li>
|
||
<p>Velocidad de la bola (Ball Speed)</p>
|
||
</li>
|
||
<li>
|
||
<p>Tamaño de las palas (Paddle Size)</p>
|
||
</li>
|
||
<li>
|
||
<p>Sonido (Sound)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cuatro jugadores (Four players)</p>
|
||
</li>
|
||
<li>
|
||
<p>Velocidad Aleatoria (Random Speed)</p>
|
||
</li>
|
||
<li>
|
||
<p>Ángulo Aleatorio (Random Angle)</p>
|
||
</li>
|
||
<li>
|
||
<p>Control por Joystick, teclado o ratón (Joystick)</p>
|
||
</li>
|
||
<li>
|
||
<p>Precisión del movimiento (Paddle Accuracy)</p>
|
||
</li>
|
||
<li>
|
||
<p>Modo de color (Mode)</p>
|
||
</li>
|
||
<li>
|
||
<p>Salir del menú (Exit menu)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_nes">NES</h3>
|
||
<div class="paragraph">
|
||
<p>Nintendo Entertainment System (también conocida como Nintendo NES o simplemente NES) es la <a href="https://es.wikipedia.org/wiki/Nintendo_Entertainment_System">segunda consola de sobremesa de Nintendo</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La versión para ZXDOS+ ha sido creada por Nihirash, basándose en la <a href="http://www.zxuno.com/forum/viewtopic.php?t=1245">anterior para ZX-Uno</a> de DistWave y Quest.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de las características del core son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Filtro HQ2X que "despixeliza" la imagen</p>
|
||
</li>
|
||
<li>
|
||
<p>Simulación de línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Utiliza el reloj de la NES NTSC, por tanto funcionan correctamente las ROMs USA. Las ROMs PAL van más rápido de lo que deberían</p>
|
||
</li>
|
||
<li>
|
||
<p>Permite cargar ROMS desde la SD</p>
|
||
</li>
|
||
<li>
|
||
<p>Necesita, al menos, un mando o joystick conectado y que tenga varios botones de disparo</p>
|
||
</li>
|
||
<li>
|
||
<p>Sólo soporta salida VGA y utiliza timings poco rigurosos, por lo que es posible que de problemas en algunos monitores</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_9">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD, con la primera partición en formato FAT16, para almacenar los ficheros con las imágenes ROM (extensión <code>.NES</code>) de los juegos que se desee cargar. Los ficheros pueden estar en subdirectorios.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de NES</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_10">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_10">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Esc</code> o botón 2 del joystick (o <code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>): Mostrar u ocultar el menú de configuración</p>
|
||
</li>
|
||
<li>
|
||
<p>Teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>), y <code>Enter</code> para usar el menú</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+, en modo de teclado <code>ZX Spectrum</code>): Hard reset. Backspace es la tecla de borrar hacia atrás, encima del enter</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_9">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Pulsando <code>Esc</code> se muestra el menú de configuración. Para desplazarse por el menú y activar o elegir alguna opción, se utilizan las teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>), y <code>Enter</code>.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/nes.jpg" alt="nes"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En él se pueden activar o desactivar las siguientes opciones:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Reiniciar la NES (Reset NES)</p>
|
||
</li>
|
||
<li>
|
||
<p>Activar o desactivar línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Encender o apagar el filtro que suaviza la imagen (HQ2X Filter)</p>
|
||
</li>
|
||
<li>
|
||
<p>Simular la pulsación del botón Select del mando 1 (P1 Select)</p>
|
||
</li>
|
||
<li>
|
||
<p>Simular la pulsación del botón Start del mando 1 (P1 Start)</p>
|
||
</li>
|
||
<li>
|
||
<p>Elegir un ROM para cargar desde la SD (Load ROM)</p>
|
||
</li>
|
||
<li>
|
||
<p>Salir del menú (Exit)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_colecovision">ColecoVision</h3>
|
||
<div class="paragraph">
|
||
<p><a href="https://es.wikipedia.org/wiki/ColecoVision">ColecoVision</a> es una consola de videojuegos lanzada al mercado por la empresa Coleco.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La versión para ZXDOS+ está basada en la <a href="https://github.com/fbelavenuto/colecofpga">versión para ZX-Uno</a> de Fabio Belavenuto.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de las características del core son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>La ROM de la BIOS se carga desde la tarjeta microSD</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporta ROM multicartucho, que también se carga desde la microSD</p>
|
||
</li>
|
||
<li>
|
||
<p>Sólo funciona en VGA ¿?</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_10">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD, con la primera partición en formato FAT16, para almacenar los ficheros con las imágenes ROM y otros archivos necesarios. Los archivos se pueden descargar desde la <a href="https://github.com/fbelavenuto/colecofpga/tree/master/SD_Card">web del proyecto original en GitHub</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de ColecoVision</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_11">Teclado</h4>
|
||
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_11">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Cursor o <code>Q</code>, <code>A</code>, <code>E</code>, <code>R</code> o el joystick 1: Controles de dirección del jugador 1</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Z</code> o el botón de joystick 1: Botón de disparo 1 del jugador 1</p>
|
||
</li>
|
||
<li>
|
||
<p><code>U</code>, <code>J</code>, <code>O</code>, <code>P</code> o el joystick 2: Controles de dirección del jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>M</code> o el botón de joystick 2: Botón de disparo 1 del jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>X</code> o el botón secundario de joystick 1: Botón de disparo 2 del jugador 1 y del jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>0</code> a <code>9</code>: Botones del 0 al 9 del jugador 1 y el jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>T</code>: Botón '*'</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Y</code>: Botón '#'</p>
|
||
</li>
|
||
<li>
|
||
<p>'Esc' (o <code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>): Soft Reset</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_10">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Al iniciar, la ROM de la BIOS se carga desde la tarjeta SD, así como la ROM multicartucho.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/coleco.jpg" alt="coleco"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el menú multicartucho, usar los controles de dirección para elegir la ROM a cargar, y luego el botón de disparo 1 para cargar la ROM elegida. Pulsando <code>Esc</code> (<code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) se reinicia el core y se vuelve a cargar el menú de selección de ROM.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_atari_2600">Atari 2600</h3>
|
||
<div class="paragraph">
|
||
<p>La <a href="https://es.wikipedia.org/wiki/Atari_2600">Atari 2600</a> es una videoconsola lanzada al mercado bajo el nombre de Atari VCS (Video Computer System).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La versión para ZXDOS+ está desarrollada por avlixa.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de las características del core son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Dos modos de vídeo seleccionables: RGB y VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Compatible con joystick(s), teclado, ratón y codificadores (encoders) rotatorios (ver <a href="#_codificadores_rotatorios">aquí</a> para más información)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_11">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD, con la primera partición en formato FAT16, para almacenar los ficheros con las imágenes ROM que se deseen cargar.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de Atari 2600</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_12">Teclado</h4>
|
||
<div class="paragraph">
|
||
<p>En gomaDOS+, se recomienda cambiar el modo de teclado a <code>Atari 800</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>4</code>) o <code>PC XT</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>).</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_12">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>W</code>, <code>A</code>, <code>S</code>, <code>D</code> o el joystick 1: Controles de dirección del jugador 1</p>
|
||
</li>
|
||
<li>
|
||
<p><code>F</code> o el botón de disparo del joystick 1: Disparo del jugador 1</p>
|
||
</li>
|
||
<li>
|
||
<p><code>I</code>, <code>J</code>, <code>K</code>, <code>L</code> o el joystick 2: Controles de dirección del jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>H</code> o el botón de disparo del joystick 2: Disparo del jugador 2</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+): Hard reset.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_11">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>Pulsando <code>Esc</code> o el botón 2 del joystick (o <code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>Atari800</code>) se muestra el menú de configuración. Se usan las teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>Atari800</code>) y <code>Enter</code> para elegir y seleccionar en el menú.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/a2600.jpg" alt="a2600"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En él se pueden activar, desactivar o configurar las siguientes opciones:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Reiniciar el core (Reset)</p>
|
||
</li>
|
||
<li>
|
||
<p>Línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Modo RGB (PAL/NTSC)</p>
|
||
</li>
|
||
<li>
|
||
<p>Tamaño de las palas (Paddle Size)</p>
|
||
</li>
|
||
<li>
|
||
<p>Sonido (Sound)</p>
|
||
</li>
|
||
<li>
|
||
<p>Color (Color)</p>
|
||
</li>
|
||
<li>
|
||
<p>Dificultad A (Difficulty A)</p>
|
||
</li>
|
||
<li>
|
||
<p>Dificultad B (Difficulty B)</p>
|
||
</li>
|
||
<li>
|
||
<p>Select</p>
|
||
</li>
|
||
<li>
|
||
<p>Start</p>
|
||
</li>
|
||
<li>
|
||
<p>Cargar ROM (Load ROM)</p>
|
||
</li>
|
||
<li>
|
||
<p>Joystick</p>
|
||
</li>
|
||
<li>
|
||
<p>Precisión de paddle (Paddle Accuracy)</p>
|
||
</li>
|
||
<li>
|
||
<p>Salir del menú (Exit)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_videopac">Videopac</h3>
|
||
<div class="paragraph">
|
||
<p>La <a href="https://es.wikipedia.org/wiki/Magnavox_Odyssey²">Philips Videopac</a>, también conocida como Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey² es una videoconsola lanzada en 1978.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La versión para ZXDOS+ está desarrollada por avlixa, basada en el core de ZXDOS de yomboprime.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Algunas de las características del core son:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Dos modos de vídeo seleccionables: RGB y VGA</p>
|
||
</li>
|
||
<li>
|
||
<p>Necesita Joystick(s) para funcionar</p>
|
||
</li>
|
||
<li>
|
||
<p>Modos de color incluyendo monocromo o fósforo verde/naranja</p>
|
||
</li>
|
||
<li>
|
||
<p>Soporte para modificar el tipo de letra (charset) de la ROM de VDC</p>
|
||
</li>
|
||
<li>
|
||
<p>Módulo de efectos de sonido y voz (The Voice)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_formato_de_tarjeta_microsd_12">Formato de Tarjeta microSD</h4>
|
||
<div class="paragraph">
|
||
<p>Se debe de utilizar una tarjeta microSD, con la primera partición en formato FAT16, para almacenar los ficheros con las imágenes ROM que se deseen cargar.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si no estuviera ya, <a href="#_cores">instalar el core de Videopac</a> en el ZXDOS+.</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclado_13">Teclado</h4>
|
||
<div class="paragraph">
|
||
<p>En gomaDOS+, se recomienda cambiar el modo de teclado a <code>PC XT</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>).</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teclas_especiales_y_botones_13">Teclas especiales y botones</h4>
|
||
<div class="paragraph">
|
||
<p>Durante la ejecución del core:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>F1</code> (<code>Caps Shift+Symbol Shift+5</code> en gomaDOS+): Carga una ROM de prueba.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Ctrl+Alt+Backspace</code> (<code>Caps Shift+Symbol Shift+B</code> en gomaDOS+): Hard reset.</p>
|
||
</li>
|
||
<li>
|
||
<p>Tras cargar una ROM, la mayoría de los juegos mostrarán un mensaje "SELECT GAME". Pulsar una tecla entre <code>0</code> y <code>9</code> o el botón del joystick para jugar.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Esc</code> o el botón 2 del joystick (o <code>Caps Shift+Espacio</code> en gomaDOS+) para mostrar u ocultar el menú.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>W</code>, <code>A</code>, <code>S</code>, <code>D</code> o las teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) y luego <code>Enter</code> para elegir y seleccionar en el menú.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_guía_básica_12">Guía básica</h4>
|
||
<div class="paragraph">
|
||
<p>No suele haber información en pantalla de las opciones, así que es interesante consultar las instrucciones de cada juego (por ejemplo en <a href="https://videopac.weebly.com/">este enlace</a>) para saber qué hacer para jugar.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Notar también que el sistema no tiene claramente definido qué joystick se corresponde al cada jugador, e incluso pueden ir alternando para algunos juegos, así que puede ser necesario ir cambiando entre los dos, o bien (para partidas de un sólo jugador ) usar la opción del menú que unifica los dos joysticks.</p>
|
||
</div>
|
||
<div class="admonitionblock tip">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-tip" title="Tip"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Si, al navegar por el directorio donde están las ROMS, no se ven todas, se puede dividir el contenido en varios subdirectorios con menos ficheros por directorio (por ejemplo, clasificando por letras) para solucionarlo.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Pulsando <code>Esc</code> o el botón 2 del joystick (o <code>Caps Shift+Espacio</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) se muestra el menú de configuración. Se usan las teclas de cursor (<code>Caps Shift+5</code>, <code>Caps Shift+6</code>, <code>Caps Shift+7</code> y <code>Caps Shift+8</code> en gomaDOS+, en modo de teclado <code>PC XT</code>) y <code>Enter</code> para elegir y seleccionar en el menú.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/videopac.jpg" alt="videopac"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En él se pueden activar, desactivar o configurar las siguientes opciones:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Reiniciar el core (Reset)</p>
|
||
</li>
|
||
<li>
|
||
<p>Línea de exploración (Scanlines)</p>
|
||
</li>
|
||
<li>
|
||
<p>Intercambiar el orden de los joysticks (Swap Joysticks)</p>
|
||
</li>
|
||
<li>
|
||
<p>Unir los joysticks (Join Joysticks). Útil para ROMs que alternan el joystick en las partidas</p>
|
||
</li>
|
||
<li>
|
||
<p>Cargar ROM (Load Cartridge ROM)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cargar un tipo de letra alternativo (Load VDC Font)</p>
|
||
</li>
|
||
<li>
|
||
<p>Modo de vídeo (PAL Videopac/NTSC Odyssey2)</p>
|
||
</li>
|
||
<li>
|
||
<p>Modo de color (Color Mode)</p>
|
||
</li>
|
||
<li>
|
||
<p>Activar o desactivar el módulo sintetizador (<a href="http://www.videopac.org/manuals/voice.pdf">The Voice</a>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Salir del menú (Exit)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_cambio_del_charset_de_la_rom_de_vdc">Cambio del charset de la ROM de VDC</h5>
|
||
<div class="paragraph">
|
||
<p>Es posible, para algunas ROM, cargar un archivo <code>CHR</code> con una fuente modificada, en vez de la original incluida en el chip Intel 8244/8245.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Estos archivos se pueden crear siguiendo las instrucciones y utilizando el editor disponible en el repositorio del proyecto, siguiendo <a href="https://github.com/RW-FPGA-devel-Team/Videopac-G7000/tree/main/doc/Charset%20Edit">este enlace</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_otro_hardware">Otro Hardware</h2>
|
||
<div class="sectionbody">
|
||
<div class="sect2">
|
||
<h3 id="_codificadores_rotatorios">Codificadores rotatorios</h3>
|
||
<div class="paragraph">
|
||
<p>Los cores de Pong y Atari 2600 están también preparados para usar <a href="https://es.wikipedia.org/wiki/Codificador_rotatorio">codificadores rotatorios</a> (encoders), de tipo cuadratura, conectados al puerto de joystick. Está probado con codificadores de 600 ppr (pulsos por revolución), pero teóricamente deberían servir también de menor ppr, como de 400 o 300.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>También se puede utilizar con <a href="https://es.wikipedia.org/wiki/Paddle_(controlador_de_videojuegos)">paddle</a> del tipo volante de Atari 2600, pero <strong>no</strong> con los paddle del tipo raqueta. Eso sí, la experiencia en este caso es pobre, ya que son de muy pocos ppr y se deben hacer varios giros completos. Si se utilizan, se recomienda ajustar la precisión(accuracy) al valor 8 para conseguir una velocidad aceptable.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_conexión">Conexión</h4>
|
||
<div class="paragraph">
|
||
<p>Tanto el ZXDOS+ como el gomaDOS+ tienen conectado el pin 5 del joystick a voltaje positivo, que se utiliza para alimentación, y el pin 8 como GND. Los codificadores utilizados deben admitir voltajes de 3,4v a 5v.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Los codificadores tienen 5 cables: Tierra (no conectada), Vcc (<code>+</code>), GND (<code>0V`ó `-</code>), <code>A</code> y <code>B</code>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Las conexiones <code>A</code> y <code>B</code> se conectan en los pines 1 y 2 para el primer codificador, y 3 y 4 para el segundo. Así se pueden tener hasta 4 codificadores conectados entre los 2 puertos de joystick.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/db9joy.png" alt="db9joy"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>De esta manera, las conexiones serían:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Línea <code>A</code> codificador 1</p>
|
||
</li>
|
||
<li>
|
||
<p>Línea <code>B</code> codificador 1</p>
|
||
</li>
|
||
<li>
|
||
<p>Línea <code>A</code> codificador 2</p>
|
||
</li>
|
||
<li>
|
||
<p>Línea <code>B</code> codificador 2</p>
|
||
</li>
|
||
<li>
|
||
<p>Vcc(<code>+</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Disparo 1</p>
|
||
</li>
|
||
<li>
|
||
<p>NC</p>
|
||
</li>
|
||
<li>
|
||
<p><code>GND</code></p>
|
||
</li>
|
||
<li>
|
||
<p>Disparo 2</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_configuración_del_core_de_pong">Configuración del Core de Pong</h4>
|
||
<div class="paragraph">
|
||
<p>La forma de elegir la configuración es la siguiente:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Para 1 o 2 codificadores en el puerto 2 de joystick, seleccionar la opción <code>1/2 Paddle in J2</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Para 2 codificadores, uno en cada puerto de joystick, seleccionar la opción <code>2/4 Paddle in J1&J2</code>. Esta opción también sirve para conectar 2 paddle tipo driving de Atari 2600.</p>
|
||
</li>
|
||
<li>
|
||
<p>Para 4 codificadores, dos en cada puerto de joystick, seleccionar la opción <code>2/4 Paddle in J1&J2</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Para 1 o 2 codificadores en el puerto 2 de joystick junto con el ratón (en este caso los codificadores se asocian para los jugadores 2 y 4), seleccionar la opción <code>Mouse PS/2</code>.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se recomienda no realizar la conexión hasta haber seleccionado la opción deseada, ya que los codificadores actúan sobre el botón arriba/abajo del joystick y por tanto no permiten manejar el menú. Otra opción sería añadir un interruptor on/off en el codificador que deshabilite la alimentación y así no emita señal mientras se realiza la selección de menú.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_carga_desde_cinta">Carga desde cinta</h3>
|
||
<div class="paragraph">
|
||
<p>Para algunos cores como, por ejemplo, el de Spectrum o el de MSX, es posible cargar, igual que se hacía en las máquinas originales, desde un dispositivo externo de audio como un reproductor de cassette u otro que lo simule.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Normalmente, se debe utilizar un cable adecuado para la <a href="#_puertos_y_conectores">entrada de sonido del ZXDOS+</a>, concretamente, ha de ser un cable con un jack estéreo de 3,5 mm en un extremo dos salidas mono en el otro (una para cada canal de audio), conectando el extremo del canal mono derecho al dispositivo de reproducción de cintas (esto no es necesario en Miniduino, ya que este automáticamente utiliza sólo el canal derecho de sonido al reproducir).</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_reproductor_de_cassette">Reproductor de cassette</h4>
|
||
<div class="paragraph">
|
||
<p>El funcionamiento es exactamente igual que se hacía con los equipos originales:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Conectar el cable de audio</p>
|
||
</li>
|
||
<li>
|
||
<p>Ejecutar en el equipo o elegir la opción correspondiente a la carga desde cinta. Por ejemplo, en ZX Spectrum 48K, pulsando <code>J</code>, a continuación, dos veces, <code>"</code> (<code>Symbol Shift + P</code> en gomaDOS+) y luego <code>Enter</code> para ejecutar el clásico <code>LOAD "" + Enter</code></p>
|
||
</li>
|
||
<li>
|
||
<p>Iniciar la reproducción de la cinta (es posible que haya que hacer distintos intentos ajustando el volumen del reproductor)</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_ordenador">Ordenador</h4>
|
||
<div class="paragraph">
|
||
<p>Según el sistema operativo (Windows, MacOS, Linux) existen múltiples alternativas de programas que pueden, o bien reproducir directamente un archivo de cinta (<code>TAP</code>, <code>TZX</code>, <code>PZX</code>, etc.) y emitir el sonido por la salida de auriculares, o bien crear un fichero de sonido (<code>WAV</code>, <code>VOC</code>, <code>AU</code>, etc.) que se puede reproducir también con programas de música o sonido.</p>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_playtzx">PlayTZX</h5>
|
||
<div class="paragraph">
|
||
<p>Este programa para Windows, MacOS o Linux, permite reproducir un fichero de cinta <code>TZX</code> a través de la salida de sonido del ordenador.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Se puede descargar el fichero binario (por ejemplo, para Windows desde <a href="https://worldofspectrum.net/utilities/#tzxtools">World of Spectrum Classic</a> y para Mac desde <a href="https://github.com/kounch/playtzx/releases">este repositorio de GitHub</a>) o compilar el código fuente como se explica <a href="#_compilar_código_fuente_macos_o_linux">a continuación</a>.</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Conectar el cable de audio entre la salida del ordenador y la entrada de audio del ZXDOS+ (recordar conectar únicamente el extremo del canal mono derecho al extremo del PC/Mac, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Ejecutar en el equipo o elegir la opción correspondiente a la carga desde cinta. Por ejemplo, en ZX Spectrum 48K pulsando <code>J</code> a continuación, dos veces, <code>"</code> (<code>Symbol Shift + P</code> en gomaDOS+) y luego <code>Enter</code> para ejecutar el clásico <code>LOAD "" + Enter</code></p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="3">
|
||
<li>
|
||
<p>Iniciar la reproducción de un fichero de cinta con el siguiente comando (es posible que haya que hacer distintos intentos ajustando el volumen de salida del equipo)</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">./playtzx <fichero de cinta></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si todo va bien, se irá viendo en la consola los distintos bloque de carga de la cinta, mientras el sonido se produce y el core del ZXDOS+ carga el programa.</p>
|
||
</div>
|
||
<div class="admonitionblock tip">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-tip" title="Tip"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En Linux, el programa utiliza como salida el dispositivo <code>/dev/dsp</code>, así que, en versiones más modernas, es posible, por ejemplo, que haya que cargar módulos como <code>snd_pcm_oss</code> (en el caso de sistemas que utilicen ALSA), para que funcione correctamente.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="sect5">
|
||
<h6 id="_compilar_código_fuente_macos_o_linux">Compilar código fuente (MacOS o Linux)</h6>
|
||
<div class="paragraph">
|
||
<p>Verificar que están instaladas las herramientas de desarrollo, incluyendo un compilador de C (<code>gcc</code>, <code>clang</code> herramientas de desarrollaor de línea de comandos en Mac, etc.) y <a href="https://es.wikipedia.org/wiki/GNU_build_system">GNU Autotools</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Descargar el código fuente <a href="https://github.com/kounch/playtzx">desde este repositorio</a>), descomprimirlo y acceder en una consola al directorio, y ejecutar los comandos:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">aclocal <span class="o">&&</span> autoconf <span class="o">&&</span> autoheader <span class="o">&&</span> automake <span class="nt">--add-missing</span>
|
||
./configure
|
||
make</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si todo se ha hecho correctamente, se habrá generado el fichero <code>tzplay</code> que se puede copiar a donde se desee en el disco duro y utilizar. Se puede borrar el directorio descomprimido donde se compiló.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_teléfono_móvil_tableta_reproductor_de_sonido_mp3_etc">Teléfono móvil, tableta, reproductor de sonido MP3, etc.</h4>
|
||
<div class="paragraph">
|
||
<p>En general, existen muy pocas alternativas (o ninguna) alternativas de programas que puedan reproducir directamente un archivo de cinta en un dispositivo móvil, así que, normalmente, será necesario convertir a un fichero de audio el contenido de la cinta antes de intentar cargarla con uno de estos aparatos.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://play.google.com/store/apps/details?id=com.baltazarstudios.playzxtapes">PlayZX</a> es una App para sistemas Android que es capaz de reproducir directamente a través de la salida de auriculares.</p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Los dispositivos con salida de auriculares modernos, suelen estar pensados para manejar impedancias el orden de unas pocas decenas de ohmios. Esto, a veces, puede ser insuficiente para la entrada del ZXDOS+.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En esos casos, se recomienda (si es posible) desactivar las limitaciones de volumen máximo de auriculares y/o utilizar un dispositivo amplificador de auriculares, que eleve la impedancia.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Los pasos a seguir en este caso son:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Conectar el cable de audio entre la salida del dispositivo móvil y la entrada de audio del ZXDOS+ (recordar conectar únicamente el extremo del canal mono derecho al extremo del PC/Mac, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Ejecutar en el equipo o elegir la opción correspondiente a la carga desde cinta. Por ejemplo, en ZX Spectrum 48K pulsando <code>J</code> a continuación, dos veces, <code>"</code> (<code>Symbol Shift + P</code> en gomaDOS+) y luego <code>Enter</code> para ejecutar el clásico <code>LOAD "" + Enter</code></p>
|
||
</li>
|
||
<li>
|
||
<p>Iniciar la reproducción del fichero de audio (o del fichero de cinta en el caso de PlayZX). Es posible que haya que hacer distintos intentos ajustando el volumen del reproductor/amplificador.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_conversión_a_fichero_de_audio">Conversión a fichero de audio</h5>
|
||
<div class="paragraph">
|
||
<p>A continuación se indican algunos de los muchos programas que existen para distintos sistemas operativos, y que pueden exportar ficheros de cinta a ficheros de audio.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.alessandrogrussu.it/tapir/index.html">Tapir</a> es un programa con interfaz gráfica para Windows (pero que se puede usar también con Wine en Linux o Mac) que permite cargar ficheros <code>TZX</code> y <code>TAP</code> y exportarlos como <code>WAV</code> de audio</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><code>tape2wav</code> de <a href="http://fuse-emulator.sourceforge.net/">Fuse Utilities</a> es una utilidad de línea de comandos que exporta desde ficheros <code>TZX</code> <code>PZX</code> y <code>TAP</code> a <code>WAV</code>. Disponibles para muchos sistemas operativos distintos.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><code>pzx2wav</code> en <a href="http://zxds.raxoft.cz/pzx.html">PZX Tools</a> es otra utilidad de comandos que exporta desde ficheros <code>PZX</code> a <code>WAV</code>. Disponible como ejecutable para Windows, y con el código fuente disponible para compilar en otros sistemas.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><code>tsx2wav</code> en <a href="https://github.com/nataliapc/MSX_devs/tree/master/TSXphpclass">TSXphpclass</a> es una utilidad en PHP y que sirve para exportar desde ficheros <code>TSX</code> a <code>WAV</code>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_miniduino">Miniduino</h4>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.antoniovillena.es/store/product/miniduino/">Miniduino</a> es un sistema reproductor de archivos de cinta, basado en un microcontrolador STM32F103C8T6 con 64KB de flash, y que trae instalado de serie el firmware <a href="https://github.com/rcmolina/MaxDuino_BETA">Maxduino</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Maxduino permite la reproducción, de una forma similar a como se manejaban las cintas de <a href="https://es.wikipedia.org/wiki/Casete">cassette</a> originales, de archivos digitales de cinta en múltiples formatos como <code>TAP</code> y <code>TZX</code> (ZX Spectrum), <code>O</code> (ZX80), <code>P</code> (ZX81), <code>CDT</code> (Amstrad CPC), <code>CAS</code>(MSX) <code>TSX</code> (MSX, Acorn, etc). También es posible reproducir como cinta archivos de sonido AY, para cargarlos en <a href="http://www.specay.co.uk">SpecAY</a> desde ZX Spectrum.</p>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_puertos_y_botones">Puertos y Botones</h5>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/MiniduinoBack.jpg" alt="MiniduinoBack"></span></p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/MiniduinoFront.jpg" alt="MiniduinoFront"></span></p>
|
||
</div>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 50%;">
|
||
<col style="width: 50%;">
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Alimentación</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Salida de sonido</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Botón de control</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Control de motor</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Ranura de tarjeta microSD</p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">Pantalla</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_preparación">Preparación</h5>
|
||
<div class="paragraph">
|
||
<p>Se necesita una tarjeta microSD para almacenar los archivos de cinta que se quiere reproducir. Se recomienda que no sea de alta velocidad (Clase 10 o superior) porque puede haber problemas durante la lectura, ni de alta capacidad (SDXC o superior).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>La tarjeta debe estar formateada con con la primera partición en formato FAT16 o FAT32.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Además de la tarjeta, recordar utilizar un cable adecuado para la <a href="#_puertos_y_conectores">entrada de sonido del ZXDOS+</a>, conectando el Miniduino.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para los equipos que soporten control por motor, también se puede utilizar un cable con un jack de 2,6 mm.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En la primera partición de la tarjeta se han de copiar los archivos de cinta (<code>TAP</code>, <code>TZX</code>, <code>O</code>, <code>P</code>, <code>CAS</code>, <code>TSX</code>, etc), que se pueden organizar en carpetas o directorios.</p>
|
||
</div>
|
||
<div class="admonitionblock tip">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-tip" title="Tip"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El reproductor muestra las entradas de archivos y directorios en el orden de la tabla FAT interna, y no de manera alfabética. Si se desea ver esta información ordenada, se debe reorganizar la estructura de la tarjeta con una utilidad como FAT Sorter para Windows, <a href="https://fatsort.sourceforge.io/">FATsort</a> para Linux y MacOS, <a href="https://www.luisrios.eti.br/public/en_us/projects/yafs/">YAFS</a>, <a href="http://www.trustfm.net/software/utilities/SDSorter.phpp">SDSorter</a> u otros.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_uso">Uso</h5>
|
||
<div class="paragraph">
|
||
<p>Una vez insertada la tarjeta microSD con ficheros de datos, el Miniduino se enciende conectando el cable de alimentación USB incluido.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/MiniduinoLogo.jpg" alt="MiniduinoLogo"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si se pulsa directamente el botón de control, se accede al menú de opciones que permite modificar lo siguiente:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Velocidad (Baud Rate): Para ajustar la velocidad turbo en bloques 4B en archivos de MSX (<code>CAS</code> y <code>TSX</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Control de motor (Motor Ctrl): Para indicar que se ha conectado un cable de control remoto a un equipo que lo soporte (Amstrad, CPC, MSX, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Conversión (TSXCzxpUEFWS): Activa la carga turbo para los archivos <code>.CAS</code> y <code>.TSX</code>, cambiar la polaridad de la señal de audio de los archivos para Spectrum y Amstrad CPC y/o cambiar la paridad en los archivos <code>.UEF</code> de Acorn Electron y BBC Micro</p>
|
||
</li>
|
||
<li>
|
||
<p>Saltar bloques (Skip BLK)): Para deshabilitar (Skip ON) o habilitar la pausa automática al encontrar bloques del tipo 2A</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Estando fuera del menú de opciones, el botón de control se utiliza como una palanca de control de cuatro direcciones, que se comporta de dos maneras distintas, según esté la reproducción detenida (Stop) o en pausa (Pause).</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/MiniduinoVersion.jpg" alt="MiniduinoVersion"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Con la reproducción detenida (navegación por archivos y directorios):</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Arriba y abajo permiten desplazarse por la lista actual de ficheros y directorios</p>
|
||
</li>
|
||
<li>
|
||
<p>Izquierda (Stop) retrocede un nivel en el árbol de direcotorios</p>
|
||
</li>
|
||
<li>
|
||
<p>Derecha (Play/Pause) accede al contenido de un directorio o, si lo que hay seleccionado es un archivo, intenta reproducirlo</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Una vez un archivo está en reproducción, el botón izquierda (Stop), la detiene, y el botón derecho (Play/Pause) la pone en pausa.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/MiniduinoPlay.jpg" alt="MiniduinoPlay"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Con la reproducción en pausa (navegación por bloques de cinta):</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Arriba y abajo permiten desplazarse por los bloques del archivo de cinta que ya hayan sido reproducidos (útil para juegos multicarga, para volver a cargar un bloque de un nivel, por ejemplo)</p>
|
||
</li>
|
||
<li>
|
||
<p>Izquierda (Stop) cancela la reprodución y entra de nuevo en el modo de navegación de archivos y directorios</p>
|
||
</li>
|
||
<li>
|
||
<p>Derecha (Play/Pause) reanuda la reproducción en el bloque seleccionado</p>
|
||
</li>
|
||
<li>
|
||
<p>Presionar directamente el botón de control permite activar o desactivar el modo turbo para MSX</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="admonitionblock tip">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-tip" title="Tip"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Para obtener información mucho más detallada, se puede consultar el manual oficial del firmware Maxduino, disponible en el <a href="https://github.com/rcmolina/MaxDuino_BETA/tree/master/MANUAL%20por%20desUBIKado">repositorio oficial</a>.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect4">
|
||
<h5 id="_actualización_de_firmware_maxduino">Actualización de firmware Maxduino</h5>
|
||
<div class="paragraph">
|
||
<p>El firmware Maxduino es actualizado y mejorado periódicamente. Se puede hacer un seguimiento de los cambios y mejoras en el <a href="https://www.va-de-retro.com/foros/viewtopic.php?t=5541&start=9999">foro</a> o bien en la <a href="https://github.com/rcmolina/MaxDuino_BETA">página del proyecto en GitHub</a>. Para poder aprovechar estas mejoras se ha de actualizar la memoria flash del Miniduino con la versión de firmware correspondiente.</p>
|
||
</div>
|
||
<div class="sect5">
|
||
<h6 id="_preparación_del_entorno">Preparación del entorno</h6>
|
||
<div class="paragraph">
|
||
<p>Para poder instalar el firmware, se ha de hacer desde un ordenador (Windows, Mac, Linux) con el entorno <a href="https://www.arduino.cc/en/software">Arduino IDE</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez instalado, se ha de añadir la biblioteca de software SDFat (1.1.4) eligiendo la opción de menú Programa→incluir librería→administrar bibliotecas</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>También se ha de añadir el soporte para el microcontrolador del Miniduino. Esto se hace en dos pasos:</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Primero añadiendo soporte para procesadores ARXM Cortex M3 en el menú Herramientas → placa → gestor de tarjetas
|
||
Instalar "Arduino SAM boards (Cortex-M3)"</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>A continuación se ha de añadir el soporte para microcontroladores STM32, descargando el fichero disponible en <a href="https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip">este enlace</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Descomprimir el contenido en la carpeta del usuario actual en</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...Arduino/hardware/Arduino_STM32</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En Windows instalar el controlador USB ejecutando con privilegios elevados:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"> ...<span class="se">\d</span>rivers<span class="se">\w</span><span class="k">in</span><span class="se">\i</span>nstall_drivers.bat</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En Linux instalar con privilegios de root las reglas de <code>udev</code> necesarias:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...tools/linux/install.sh</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En MacOS, si no apareciese el Miniduino como dispositivo USB en Arduino IDE al conectarlo, puede que sea necesario instalar <a href="https://github.com/libusb/libusb/wiki">libusb</a>.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p>Finalmente, en el caso de Mac o Linux, el fichero <code>maple_upload</code> dentro de <code>Arduino_STM32</code> tiene que modificarse con un editor de texto. Estas líneas no funcionan bien:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="k">if</span> <span class="o">[</span> <span class="nv">$# </span><span class="nt">-eq</span> 5 <span class="o">]</span><span class="p">;</span> <span class="k">then
|
||
</span><span class="nv">dfuse_addr</span><span class="o">=</span><span class="s2">"--dfuse-address </span><span class="nv">$5</span><span class="s2">"</span>
|
||
<span class="k">else
|
||
</span><span class="nv">dfuse_addr</span><span class="o">=</span><span class="s2">""</span>
|
||
<span class="k">fi</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Y se tienen que cambiar por</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nv">dfuse_addr</span><span class="o">=</span><span class="s2">""</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect5">
|
||
<h6 id="_actualización">Actualización</h6>
|
||
<div class="paragraph">
|
||
<p>Una vez preparado el entorno, descargar la versión deseada del proyecto desde el <a href="https://github.com/rcmolina/MaxDuino_BETA">repositorio oficial en GitHub</a></p>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>El reproductor Miniduino con microcontrolador STM32 sólo está soportado a partir de la versión 1.65</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Cargar el fichero del proyecto en Arduino IDE (por ejemplo <code>MaxDuino_v1.66.ino</code>).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Verificar en el fichero <code>userSTM32Config.h</code> que están comentadas todas las entradas de logo excepto la de Miniduino, y si no, cambiarlas.</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="c"><span class="p">...</span>
|
||
<span class="c1">//#define tanque4</span>
|
||
<span class="c1">//#define tanque1</span>
|
||
<span class="c1">//#define dostanques</span>
|
||
<span class="c1">//#define cablemax</span>
|
||
<span class="c1">//#define sony</span>
|
||
<span class="cp">#define miniduino
|
||
</span><span class="p">...</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Conectar el Miniduino al equipo usando el cable USB e identificar el puerto asignado, normalmente con un nombre del tipo "Maple Mini" (por ejemplo: COM5 Maple Mini)</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Configurar en el menú "" las opciones</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>Placa: Generic STM32F104C Series
|
||
Variant: STM32F104C8 (20k RAM, 64k Flash)
|
||
Upload Method: STM32duino bootloader
|
||
CPU Speed: 72Mhz (Normal)
|
||
Optimize: Smallest (default)
|
||
Puerto: <Puerto identificado antes></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Finalmente, pulsar el botón de carga del firmware y esperar unos segundos mientras se compila el proyecto y se carga en el dispositivo.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si todo se ha hecho correctamente se verá cómo el Miniduino se reinicia y en la pantalla aparece la versión correspondiente de firmware.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_solución_de_problemas">Solución de problemas</h2>
|
||
<div class="sectionbody">
|
||
<div class="sect2">
|
||
<h3 id="_gestión_de_imágenes_de_firmware">Gestión de imágenes de firmware</h3>
|
||
<div class="paragraph">
|
||
<p>Existen distintas herramientas que permiten generar y/o editar el contenido de los ficheros <code>ZX1</code>, <code>ZX2</code>, <code>ZXD</code>.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_zx123_tool">zx123_tool</h4>
|
||
<div class="paragraph">
|
||
<p>Esta es una herramienta que analiza, extrae o añade datos en ficheros de imagen de SPI flash de ZX-Uno, ZXDOS y otros dispostivos similares.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para poder utilizarla se necesita <a href="https://www.python.org/">Python 3</a>. Según el sistema operativo que se utilice puede que sea necesario <a href="https://www.python.org/downloads/">instalarlo</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Teniendo Python 3, basta con descargar la última versión de la herramienta desde su repositorio oficial, <a href="https://github.com/kounch/zx123_tool/releases/latest">en este enlace</a>.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Una vez descomprimido, se debe invocar desde una consola el script principal usando Python 3. Esto puede variar según el sistema operativo.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Por ejemplo, en Windows, suele ser:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">py <span class="nt">-3</span> zx123_tool.py</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Mientras que en otros sistemas operativos debería bastar con algo parecido a:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">python3 ./zx123_tool.py</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>También hará falta un archivo de imagen flash. Este se puede obtener desde el core de Spectrum, en modo "root", con alguno de los comandos <code>back16m</code>, <code>backzx2</code> o <code>backzxd</code>. Tras obtener el fichero generado en la microSD, se puede "limpiar" dejando sólo el core de Spectrum y la primera ROM de Spectrum con un comando similar a este:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">... zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-w</span> <span class="nt">-o</span> FLASHempty.ZXD</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Donde <code>FLASH.ZXD</code> es la ruta al fichero obtenido desde el core de Spectrum, y <code>FLASHempty.ZXD</code> es la ruta al nuevo fichero "limpio".</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p><strong>Mostrar contenido de una imagen</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para ver el contenido de una imagen llamada <code>FLASH.ZXD</code> (cores instalados y algunos datos de configuración), se puede usar el comando</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">... zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-l</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para mostrar contenido de esa misma imagen, incluyendo datos de ROMs de ZX Spectrum:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">... zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-l</span> <span class="nt">-r</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Modificar la BIOS de una imagen</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para modificar la BIOS de un fichero llamado <code>FLASH.ZXD</code>, usando la BIOS en otro fichero llamado <code>FIRMWARE.ZXD</code></p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> BIOS,FIRMWARE.ZXD</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Además de instalar la BIOS, se pueden modificar algunos de los valores por defecto. Por ejemplo, con las opciones; <code>-m</code> para el modo de vídeo: 0 (PAL), 1 (NTSC) ó 2 (VGA), <code>-k</code> para la distribución del teclado: 0 (Auto), 1 (ES), 2 (EN) ó 3 (Spectrum).</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Así, para modificar la BIOS de un fichero llamado <code>FLASH.ZXD</code>, usando la BIOS en otro fichero llamado <code>FIRMWARE.ZXD</code>, y además configurar el modo de vídeo en VGA, y el teclado en modo Spectrum (para gomaDOS`+):</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> BIOS,FIRMWARE.ZXD <span class="nt">-m</span> 2 <span class="nt">-k</span> 3</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Existen también opciones para ajustar el tiempo de espera inicial de la BIOS, el core a ejecutar por defecto, o la ROM de Spectrum a utilizar por defecto. Véase la <a href="https://github.com/kounch/zx123_tool/#castellano">documentación de la herramienta</a> para más información.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Añadir una ROM de Spectrum a una imagen</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para añadir una ROM de Spectrum llamada <code>48.rom</code>, poniendo el nombre <code>Spec48</code> y ocupando el slot 5, se puede usar un comando como:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> ROM,5,xdnlh17,Spec48,48.rom</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Véase la <a href="https://github.com/kounch/zx123_tool/#castellano">documentación de la herramienta</a> para ver todas las posibles opciones a la hora de añadir una ROM de Spectrum.</p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="paragraph">
|
||
<p><strong>Instalar un Core en una imagen</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para instalar un core en la posición 3, desde un fichero llamado <code>NEXT.ZXD</code>, llamándolo <code>Spectrum Next</code>, usar un comando como este:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> <span class="s1">'CORE,3,Spectrum Next,NEXT.ZXD'</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si además se quiere configurar como el core por defecto, se puede indicar también con un comando como:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> <span class="s1">'CORE,3,Spectrum Next,NEXT.ZXD'</span> <span class="nt">-c</span> 3</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Modificar la ROM de esxdos de una imagen</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>De forma similar a como se instala el firmware de la BIOS, se puede instalar directamente un fichero con la ROM de esxdos, con un comando como:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">...zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-a</span> esxdos,ESXMMC.BIN</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Combinar varias órdenes en una única línea</strong></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Notar que se pueden acumular varias órdenes en una única línea de comandos. Por ejemplo, para "limpiar" un archivo de imagen llamado <code>FLASH.ZXD</code>, creando uno nuevo llamado <code>FLASHnew.ZXD</code>, instalar la BIOS desde el fichero <code>FIRMWARE.ZXD</code>, configurar el modo de vídeo en VGA, el teclado en modo Spectrum (para gomaDOS`+), añadir una ROM de Spectrum llamada <code>48.rom</code>, poniendo el nombre <code>Spec48</code> y ocupando el slot 5, instalar un core en la posición 3, desde un fichero llamado <code>NEXT.ZXD</code>, llamándolo <code>Spectrum Next</code>, configurado como el core por defecto, usar un comando como este:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">... zx123_tool.py <span class="nt">-i</span> FLASH.ZXD <span class="nt">-w</span> <span class="nt">-o</span> FLASHnew.ZXD <span class="nt">-a</span> BIOS,FIRMWARE.ZXD <span class="nt">-m</span> 2 <span class="nt">-k</span> 3 <span class="nt">-a</span> ROM,5,xdnlh17,Spec48,48.rom <span class="nt">-a</span> <span class="s1">'CORE,3,Spectrum Next,NEXT.ZXD'</span> <span class="nt">-c</span> 3</code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2">
|
||
<h3 id="_recuperación_del_firmware">Recuperación del firmware</h3>
|
||
<div class="paragraph">
|
||
<p>En algunos casos (por ejemplo al instalar un core experimental o hacer una actualización del core de ZX Spectrum o la BIOS) puede suceder que el ZXDOS+ deje de arrancar. Se encienden los LEDs pero no hay imagen ni responde a las distintas combinaciones de teclado para acceder a la BIOS, etc.</p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En esta situación, existen diferentes métodos de recuperación que permiten volver a instalar el firmware.</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_preparación_del_cableado">Preparación del cableado</h4>
|
||
<div class="paragraph">
|
||
<p>En los siguientes pasos de recuperación se habla de conectar cables puente o USB-Blaster a la placa de ZXDOS+ o gomaDOS+. Para ello, usar las siguientes imágenes como referencia.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/jtag.jpg" alt="jtag"></span> <span class="image"><img src="img/jtaggomados.jpg" alt="jtaggomados"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Notar que, en algunos modelos, el conector de JTAG está con los pines por la parte de debajo.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/jtag02.jpg" alt="jtag02"></span> <span class="image"><img src="img/jtag03.jpg" alt="jtag03"></span> <span class="image"><img src="img/jtag04.jpg" alt="jtag04"></span></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p><strong>NO</strong> se ha de conectar la línea de 3V</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el caso de utilizar USB-Blaster, el gomaDOS+ tiene la distribución adecuada para conectar directamente el conector 2x5 incluido. Para ZXDOS+, podría ser necesario preparar el cableado adecuado, comparando las imágenes anteriores.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_recuperación_usando_una_raspberry_pi">Recuperación usando una Raspberry Pi</h4>
|
||
<div class="paragraph">
|
||
<p><strong>Material necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Raspberry Pi (con tarjeta SD, teclado, monitor, fuente de alimentación, etc.) y con conexión a internet</p>
|
||
</li>
|
||
<li>
|
||
<p>5 <a href="https://es.wikipedia.org/wiki/Cable_puente">cables puente para prototipos</a> (idealmente, hembra en los dos extremos), o bien, en vez de los cables puente, un adaptador USB-Blaster</p>
|
||
</li>
|
||
<li>
|
||
<p>Una <a href="https://es.wikipedia.org/wiki/Llave_Allen">llave Allen</a> del tamaño adecuado para poder retirar la tapa del ZXDOS+ o bien un destornillador de estrella adecuado si se va abrir un gomadDOS+ (esto no es necesario si se utiliza USB-Blaster)</p>
|
||
</li>
|
||
<li>
|
||
<p>Tarjeta microSD para el ZXDOS+/gomaDOS+ con la primera partición en formato FAT16 o FAT32</p>
|
||
</li>
|
||
<li>
|
||
<p>Teclado (no necesario en gomaDOS+) y monitor para conectar el ZXDOS+</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Software necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Imagen Flash y recovery para ZXDOS+ (LX25), del <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">repositorio oficial, en este enlace</a></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Pasos a seguir</strong>:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Si no estuviera ya, instalar Raspberry Pi OS (antes llamado Raspbian) en la Raspberry Pi (usando <a href="https://www.raspberrypi.org/downloads/raspberry-pi-os/">la descarga oficial</a>, <a href="https://www.raspberrypi.org/downloads/noobs/">NOOBS</a>, <a href="https://github.com/procount/pinn">PINN</a>, etc.)</p>
|
||
</li>
|
||
<li>
|
||
<p>Instalar Open OCD en la Raspberry Pi:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">sudo </span>apt-get update
|
||
<span class="nb">sudo </span>apt-get <span class="nb">install </span>git autoconf libtool make pkg-config
|
||
<span class="nb">sudo </span>apt-get <span class="nb">install </span>libusb-1.0-0 libusb-1.0-0-dev telnet
|
||
<span class="nb">sudo </span>apt-get <span class="nb">install </span>libusb-dev libftdi-dev
|
||
git clone, git://git.code.sf.net/p/openocd/code openocd-code
|
||
<span class="nb">cd </span>openocd-code/
|
||
./bootstrap
|
||
./configure <span class="nt">--enable-usb_blaster</span> <span class="nt">--enable-sysfsgpio</span> <span class="nt">--enable-bcm2835gpio</span>
|
||
make
|
||
<span class="nb">sudo </span>make <span class="nb">install
|
||
cd</span> ..
|
||
<span class="nb">rm</span> <span class="nt">-rf</span> ./openocd-code</code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="3">
|
||
<li>
|
||
<p>Conectar el USB-Blaster o los cables puente para GPIO <a href="#_preparación_del_cableado">tal y como se explica anterioremente</a>. Si se va a hacer la conexión usando GPIO, abrir la carcasa del ZXDOS+ o el gomaDOS+ y conectar las líneas de JTAG de la FPGA (<code>TMS</code>, <code>TDI</code>, <code>TDO</code>, <code>TCK</code> y <code>GND</code>) con los cables a los pines <a href="https://es.wikipedia.org/wiki/GPIO">GPIO</a> de la Raspberry Pi.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Si se hace conexión vía GPIO, tomar nota de los pines elegidos, teniendo cuidado de conectar <code>GND</code> con <code>GND</code>.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/gpio.jpg" alt="gpio"></span></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En este ejemplo, se utilizarán los pines <code>31</code>, <code>33</code>, <code>35</code>, <code>37</code> y <code>39</code> (correspondientes a <code>GPIO #6</code>, <code>GPIO #13</code>, <code>GPIO #19</code>, <code>GPIO #26</code> y <code>GND</code>), de la siguiente manera:</p>
|
||
</div>
|
||
<table class="tableblock frame-all grid-all stretch">
|
||
<colgroup>
|
||
<col style="width: 33.3333%;">
|
||
<col style="width: 33.3333%;">
|
||
<col style="width: 33.3334%;">
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th class="tableblock halign-left valign-top">JTAG ZXDOS+</th>
|
||
<th class="tableblock halign-left valign-top">GPIO</th>
|
||
<th class="tableblock halign-left valign-top">Pin Raspberry Pi</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TMS</code></p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">GPIO#6</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>31</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TDI</code></p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">GPIO#13</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>33</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TDO</code></p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">GPIO#19</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>35</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TCK</code></p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">GPIO#26</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>37</code></p></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>GND</code></p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock">GND</p></td>
|
||
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>39</code></p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="4">
|
||
<li>
|
||
<p>Copiar en la Raspberry Pi el fichero <code>recovery.zxd.bit</code> obtenido anteriormente del <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">repositorio oficial</a>. En nuestro ejemplo, se dejará en <code>/home/pi/zxdosplus/unbrick/</code></p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="5">
|
||
<li>
|
||
<p>Para la conexión usando GPIO, realizar una copia del archivo de configuración de Open OCD, en el mismo lugar donde está <code>recovery.zxd.bit</code>. Este paso no es necesario si se usa USB-Blaster.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">cp</span> /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg /home/pi/zxdosplus/unbrick/</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="6">
|
||
<li>
|
||
<p>Para la conexión vía GPIO, editar la copia de <code>raspberrypi2-native.cfg</code> actualizando <code>bcm2835gpio_jtag_nums</code> (y descomentando, si fuera necesario), según como se haya hecho la conexión entre JTAG y GPIO en la línea <code>bcm2835gpio_jtag_nums</code>. En nuestro ejemplo:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code># Header pin numbers: 37 31 33 35
|
||
bcm2835gpio_jtag_nums 26 6 13 19</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="7">
|
||
<li>
|
||
<p>Comentar, si no lo está, la línea <code>bcm2835gpio_swd_nums</code> (de nuevo, no necesario si la conexión es con USB-Blaster):</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>#bcm2835gpio_swd_nums 11 25</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="8">
|
||
<li>
|
||
<p>Añadir, al final, la línea <code>adapter speed 250</code> (no necesario para uso con USB-Blaster):</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code>adapter speed 250</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="9">
|
||
<li>
|
||
<p>Encender el ZXDOS+ o el gomaDOS+</p>
|
||
</li>
|
||
<li>
|
||
<p>Asegurarnos de que estamos en el directorio donde se encuentra el archivo <code>recovery.zxd.bit</code>, y lanzar el comando que carga la BIOS en modo recuperación, indicando la ruta al archivo <code>raspberrypi2-native.cfg</code> que habíamos editado anteriormente.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Para conexión vía GPIO:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">cd</span> /home/pi/zxdosplus/unbrick
|
||
<span class="nb">sudo </span>openocd <span class="nt">-f</span> /home/pi/zxdosplus/unbrick/raspberrypi2-native.cfg <span class="nt">-f</span> /usr/local/share/openocd/scripts/cpld/xilinx-xc6s.cfg <span class="nt">-c</span> <span class="s2">"init; xc6s_program xc6s.tap; pld load 0 recovery.zxd.bit ; exit"</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>Con USB-Blaster:</p>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell"><span class="nb">sudo </span>openocd <span class="nt">-f</span> /usr/local/share/openocd/scripts/interface/altera-usb-blaster.cfg <span class="nt">-f</span> /usr/local/share/openocd/scripts/cpld/xilinx-xc6s.cfg <span class="nt">-c</span> <span class="s2">"init; xc6s_program xc6s.tap; pld load 0 recovery.zxd.bit ; exit"</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="11">
|
||
<li>
|
||
<p>Si todo va bien, veremos cómo cambia el estado de los LED de la FPGA y veremos la imagen de la BIOS en el monitor.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el caso de que no se vea imagen, pulsar <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA, por si acaso la BIOS ha arrancado en un modo que no corresponde a la conexión del monitor.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery.png" alt="recovery"></span></p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="12">
|
||
<li>
|
||
<p>Insertar en el ZXDOS+ la tarjeta microSD con la primera partición en formato FAT16 o FAT32, y en la que habremos copiado el fichero <code>FLASH.ZXD</code> <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">descargado anteriormente</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Si se está utilizando USB-Blaster, desconectar el cable.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="14">
|
||
<li>
|
||
<p>Elegir la opción <code>Upgrade Flash from SD</code>. Pulsar Enter, elegir <code>Yes</code>, y pulsar Enter de nuevo para comenzar el proceso que graba de nuevo la Flash.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery2.png" alt="recovery2"></span></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Este proceso sustituirá todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Habitualmente, la imagen de recuperación está configurada para usar un teclado PS/2 y no el teclado de membrana de Spectrum, así que, en el caso de gomaDOS+, puede que no funcionen las combinaciones como <code>Caps Shift + 5</code>, etc. En este caso, se ha de cambiar el modo de teclado a <code>PC XT</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>), para que funcionen de nuevo temporalmente.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="15">
|
||
<li>
|
||
<p>Tras unos minutos, el proceso finalizará, y podremos comprobar como, al apagar y encender, el ZXDOS+ (o el gomaDOS+) vuelve a arrancar correctamente.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Si no se obtiene imagen, pulsar de nuevo <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA. En este caso, sería necesario acceder a la BIOS y cambiar el <a href="#_advanced">ajuste avanzado correspondiente</a> para indicar la configuración de nuestro monitor.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el caso de gomaDOS+, como la configuración de la imagen de recuperación por defecto espera un teclado PS/2, se pueden seguir los siguientes pasos para configurar la BIOS correctamente:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Si no hay imagen, cambiar entre modo video compuesto y modo VGA (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cambiar al modo <code>PC XT</code> de teclado (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Reiniciar el gomaDOS+ sin que se pierda la configuración del teclado (<code>Caps Shift + Symbol Shift + B</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Rápidamente, pulsar <code>Caps Shift + 1</code></p>
|
||
</li>
|
||
<li>
|
||
<p>De nuevo, si no hay imagen, cambiar entre modo VGA y modo video compuesto (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Navegar por la BIOS y configurar las siguientes opciones:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Keyboard Layout</code>: <code>Spectrum</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Video</code>: <code>VGA</code> (sólo si no teníamos imagen)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<p>Guardar los cambios de la BIOS:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Exit</code> → <code>Save changes and exit</code>
|
||
.Apagar completamente el gomaDOS+ y volver a encenderlo</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_recuperación_usando_macos_y_cable_usb_blaster">Recuperación usando MacOS y Cable USB-Blaster</h4>
|
||
<div class="paragraph">
|
||
<p><strong>Material necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Cable USB-Blaster <a href="#_preparación_del_cableado">preparado con las conexiones adecuadas para ZXDOS+</a></p>
|
||
</li>
|
||
<li>
|
||
<p>Imagen Flash y recovery para ZXDOS+ (LX25). Los mismos que se indican para Raspberry pi, del <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">repositorio oficial, en este enlace</a></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Software necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Sistema MacOS</p>
|
||
</li>
|
||
<li>
|
||
<p>Carpeta data adicional para UrJTAG, obtenido desde <a href="https://github.com/zxdos/zxdos-plus/blob/master/lx25/urjtag.zip">aqui</a></p>
|
||
</li>
|
||
<li>
|
||
<p><a href="https://brew.sh">Homebrew para MacOS</a></p>
|
||
</li>
|
||
<li>
|
||
<p>UrJTAG: según las instrucciones de <a href="https://n4abi.com/posts/2018-07-08-de0-nano-urjtag.html">este enlace</a>:</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Pasos a seguir</strong>:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Preparar la instalación de UrJTAG</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">brew <span class="nb">install </span>libftdi libusb pkg-config
|
||
git clone https://github.com/C-Elegans/urjtag.git
|
||
<span class="nb">cd </span>urjtag</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="2">
|
||
<li>
|
||
<p>Copiar la carpeta data adicional para UrJTAG, dentro de la carpeta data de urjtag.</p>
|
||
</li>
|
||
<li>
|
||
<p>Lanzar el proceso de compilacion:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">./configure <span class="nt">--with-libftdi</span> <span class="nt">--with-libusb</span> <span class="nt">--with-ftd2xx</span> <span class="nt">--with-inpout32</span> <span class="nt">--enable-python</span><span class="o">=</span>no
|
||
make <span class="nt">-j4</span>
|
||
<span class="nb">sudo </span>make <span class="nb">install</span></code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="4">
|
||
<li>
|
||
<p>Copiar el archivo <code>FLASH.ZXD</code> en la raiz de la tarjeta microSD para el ZXDOS+.</p>
|
||
</li>
|
||
<li>
|
||
<p>Conectar el cable USB-Blaster al ZXDOS+ y al Mac</p>
|
||
</li>
|
||
<li>
|
||
<p>Encender el ZXDOS+ o el gomaDOS+</p>
|
||
</li>
|
||
<li>
|
||
<p>Asegurarnos de que estamos en el directorio donde se encuentra el archivo <code>recovery.zxd.bit</code>, y lanzar el comando <code>jtag</code>.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="8">
|
||
<li>
|
||
<p>Aparecerá una consola donde se han de escribir los comandos:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">cable usbblaster
|
||
detect
|
||
pld load recovery.zxd.bit</code></pre>
|
||
</div>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el comando detect es importante que aparezca el dispositivo detectado. Puede que sea necesario lanzar el comando <code>detect</code> de manera repetida hasta que aparezca.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery_mac_1.png" alt="recovery mac 1"></span></p>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="9">
|
||
<li>
|
||
<p>Si todo va bien, veremos cómo cambia el estado de los LED de la FPGA y veremos la imagen de la BIOS en el monitor.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el caso de que no se vea imagen, pulsar <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA, por si acaso la BIOS ha arrancado en un modo que no corresponde a la conexión del monitor.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery.png" alt="recovery"></span></p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="10">
|
||
<li>
|
||
<p>Insertar en el ZXDOS+ la tarjeta microSD con la primera partición en formato FAT16 o FAT32, y en la que habremos copiado el fichero <code>FLASH.ZXD</code> <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">descargado anteriormente</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Desconectar el cable USB-Blaster.</p>
|
||
</li>
|
||
<li>
|
||
<p>Elegir la opción <code>Upgrade Flash from SD</code>. Pulsar Enter, elegir <code>Yes</code>, y pulsar Enter de nuevo para comenzar el proceso que graba de nuevo la Flash.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery2.png" alt="recovery2"></span></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Este proceso sustituirá todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Habitualmente, la imagen de recuperación está configurada para usar un teclado PS/2 y no el teclado de membrana de Spectrum, así que, en el caso de gomaDOS+, puede que no funcionen las combinaciones como <code>Caps Shift + 5</code>, etc. En este caso, se ha de cambiar el modo de teclado a <code>PC XT</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>), para que funcionen de nuevo temporalmente.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="13">
|
||
<li>
|
||
<p>Tras unos minutos, el proceso finalizará, y podremos comprobar como, al apagar y encender, el ZXDOS+ (o el gomaDOS+) vuelve a arrancar correctamente.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Si no se obtiene imagen, pulsar de nuevo <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA. En este caso, sería necesario acceder a la BIOS y cambiar el <a href="#_advanced">ajuste avanzado correspondiente</a> para indicar la configuración de nuestro monitor.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el caso de gomaDOS+, como la configuración de la imagen de recuperación por defecto espera un teclado PS/2, se pueden seguir los siguientes pasos para configurar la BIOS correctamente:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Si no hay imagen, cambiar entre modo video compuesto y modo VGA (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cambiar al modo <code>PC XT</code> de teclado (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Reiniciar el gomaDOS+ sin que se pierda la configuración del teclado (<code>Caps Shift + Symbol Shift + B</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Rápidamente, pulsar <code>Caps Shift + 1</code></p>
|
||
</li>
|
||
<li>
|
||
<p>De nuevo, si no hay imagen, cambiar entre modo VGA y modo video compuesto (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Navegar por la BIOS y configurar las siguientes opciones:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Keyboard Layout</code>: <code>Spectrum</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Video</code>: <code>VGA</code> (sólo si no teníamos imagen)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<p>Guardar los cambios de la BIOS:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Exit</code> → <code>Save changes and exit</code>
|
||
.Apagar completamente el gomaDOS+ y volver a encenderlo</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En Linux, usando el mismo software UrJTAG, el proceso deberia ser similar, aunque en vez de instalar las dependencias (libftdi libusb pkg-config) mediante brew, se deberia hacer mediante apt, yum o similar</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
<div class="sect3">
|
||
<h4 id="_recuperación_usando_windows_y_cable_usb_blaster">Recuperación usando Windows y Cable USB-Blaster</h4>
|
||
<div class="paragraph">
|
||
<p><strong>Material necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Cable USB-Blaster. <<<a href="#_preparación_del_cableado">preparado con las conexiones adecuadas para ZXDOS+</a></p>
|
||
</li>
|
||
<li>
|
||
<p>Imagen Flash y recovery para ZXDOS+ (LX25). Los mismos que se indican para Raspberry pi, del <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">repositorio oficial, en este enlace</a></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Software necesario</strong>:</p>
|
||
</div>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p>Sistema Windows</p>
|
||
</li>
|
||
<li>
|
||
<p>Drivers de USB-Blaster para Windows, disponible en <a href="https://www.zxuno.com/forum/viewtopic.php?f=25&t=432">el foro de ZX-Uno</a></p>
|
||
</li>
|
||
<li>
|
||
<p>UrJTAG, para Windows, disponible en <a href="https://github.com/zxdos/zxdos-plus/blob/master/lx25/urjtag.zip">el repositorio oficial</a></p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><strong>Pasos a seguir</strong>:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Descomprimir el fichero ZIP con los drivers (obtenido en <a href="https://www.zxuno.com/forum/download/file.php?id=889">el foro de ZX-Uno</a>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Conectar el cable USB-Blaster al PC con Windows e instalar el driver eligiendo la opción de añadir ficheros manualmente y seleccionado la carpeta <code>drivers</code> que se ha obtenido al descomprimir el fichero anterior</p>
|
||
</li>
|
||
<li>
|
||
<p>Descomprimir el software de UrJTAG, obtenido en <a href="https://github.com/zxdos/zxdos-plus/blob/master/lx25/urjtag.zip">el repositorio oficial</a></p>
|
||
</li>
|
||
<li>
|
||
<p>Copiar el archivo <code>FLASH.ZXD</code> en la raiz de la tarjeta microSD para el ZXDOS+.</p>
|
||
</li>
|
||
<li>
|
||
<p>Conectar el cable USB-Blaster al ZXDOS+ y al PC con Windows</p>
|
||
</li>
|
||
<li>
|
||
<p>Encender el ZXDOS+ o el gomaDOS+</p>
|
||
</li>
|
||
<li>
|
||
<p>Asegurarnos de que estamos en el directorio donde se encuentra el archivo <code>recovery.zxd.bit</code>, y lanzar <code>jtag.exe</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Aparecerá una consola donde se han de escribir los comandos:</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="listingblock">
|
||
<div class="content">
|
||
<pre class="rouge highlight"><code data-lang="shell">cable usbblaster
|
||
detect
|
||
pld load recovery.zxd.bit</code></pre>
|
||
</div>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="9">
|
||
<li>
|
||
<p>Si todo va bien, veremos cómo cambia el estado de los LED de la FPGA y veremos la imagen de la BIOS en el monitor.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p>En el caso de que no se vea imagen, pulsar <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA, por si acaso la BIOS ha arrancado en un modo que no corresponde a la conexión del monitor.</p>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery.png" alt="recovery"></span></p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="10">
|
||
<li>
|
||
<p>Insertar en el ZXDOS+ la tarjeta microSD con la primera partición en formato FAT16 o FAT32, y en la que habremos copiado el fichero <code>FLASH.ZXD</code> <a href="https://github.com/zxdos/zxdos-plus/raw/master/lx25/FLASH.zip">descargado anteriormente</a>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Desconectar el cable USB-Blaster.</p>
|
||
</li>
|
||
<li>
|
||
<p>Elegir la opción <code>Upgrade Flash from SD</code>. Pulsar Enter, elegir <code>Yes</code>, y pulsar Enter de nuevo para comenzar el proceso que graba de nuevo la Flash.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="paragraph text-center">
|
||
<p><span class="image"><img src="img/recovery2.png" alt="recovery2"></span></p>
|
||
</div>
|
||
<div class="admonitionblock warning">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-warning" title="Warning"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Este proceso sustituirá todos los cores instalados, la BIOS, así como las ROMs de ZX Spectrum y la configuración por lo que haya en la imagen, y no se puede deshacer.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Habitualmente, la imagen de recuperación está configurada para usar un teclado PS/2 y no el teclado de membrana de Spectrum, así que, en el caso de gomaDOS+, puede que no funcionen las combinaciones como <code>Caps Shift + 5</code>, etc. En este caso, se ha de cambiar el modo de teclado a <code>PC XT</code> (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>), para que funcionen de nuevo temporalmente.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic" start="13">
|
||
<li>
|
||
<p>Tras unos minutos, el proceso finalizará, y podremos comprobar como, al apagar y encender, el ZXDOS+ (o el gomaDOS+) vuelve a arrancar correctamente.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>Si no se obtiene imagen, pulsar de nuevo <code>Bloq. Despl.</code> (<code>Caps Shift+Symbol Shift+G</code> en gomaDOS+): para cambiar entre modo de video compuesto y VGA. En este caso, sería necesario acceder a la BIOS y cambiar el <a href="#_advanced">ajuste avanzado correspondiente</a> para indicar la configuración de nuestro monitor.</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="admonitionblock note">
|
||
<table>
|
||
<tr>
|
||
<td class="icon">
|
||
<i class="fa icon-note" title="Note"></i>
|
||
</td>
|
||
<td class="content">
|
||
<div class="paragraph">
|
||
<p>En el caso de gomaDOS+, como la configuración de la imagen de recuperación por defecto espera un teclado PS/2, se pueden seguir los siguientes pasos para configurar la BIOS correctamente:</p>
|
||
</div>
|
||
<div class="olist arabic">
|
||
<ol class="arabic">
|
||
<li>
|
||
<p>Si no hay imagen, cambiar entre modo video compuesto y modo VGA (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Cambiar al modo <code>PC XT</code> de teclado (<code>Caps Shift + Symbol Shift + U</code> y luego <code>9</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Reiniciar el gomaDOS+ sin que se pierda la configuración del teclado (<code>Caps Shift + Symbol Shift + B</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Rápidamente, pulsar <code>Caps Shift + 1</code></p>
|
||
</li>
|
||
<li>
|
||
<p>De nuevo, si no hay imagen, cambiar entre modo VGA y modo video compuesto (<code>Caps Shift+Symbol Shift+G</code>)</p>
|
||
</li>
|
||
<li>
|
||
<p>Navegar por la BIOS y configurar las siguientes opciones:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Keyboard Layout</code>: <code>Spectrum</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>Advanced</code> → <code>Video</code>: <code>VGA</code> (sólo si no teníamos imagen)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<p>Guardar los cambios de la BIOS:</p>
|
||
<div class="ulist">
|
||
<ul>
|
||
<li>
|
||
<p><code>Exit</code> → <code>Save changes and exit</code>
|
||
.Apagar completamente el gomaDOS+ y volver a encenderlo</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="page-break-after: always;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1">
|
||
<h2 id="_referencias">Referencias</h2>
|
||
<div class="sectionbody">
|
||
<div class="paragraph">
|
||
<p><a href="http://zxuno.speccy.org/index.shtml">ZX-Uno</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://desubikado.sytes.net/zx-uno-faq-version-desubikado/">ZX-Uno FAQ</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://docs.google.com/document/d/1NI0zgCDRk7c-5CVi-lfZEK6q8Lnpnco7PhpsEEdxD60/edit">Guía rápida del ZX-Uno</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/wiki/index.php/ZX_Spectrum">Core ZX Spectrum</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://worldofspectrum.org/zxplus3e/index.html">The ZX Spectrum +3e Homepage</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://worldofspectrum.org/zxplus3e/sharingdisks.html">Sharing a +3e disk with PC (FAT) partitions</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=37&t=208">Layouts de teclado</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/spark2k06/zxunops2/blob/master/Alternative/Nuevo%20firmware%20de%20teclado%20ZX-GO%2B.pdf">Firmware de teclado para ZX Go+</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/zxdos/zxdos-plus/tree/master/zxunops2">zxunops2</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://docs.google.com/spreadsheets/d/17-ifpHcy932_AP7SAv9uBLxg-2ZptcdgTvQ8ILXQLM4/htmlview">Almost (In-) Complete List of esxDOS DOT-Commands</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://retrowiki.es/viewtopic.php?f=83&t=200032578&p=200075671&hilit=wifi#p200075671">WiFi (RetroWiki)</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=35&t=44">WiFi en ZX-Uno</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://svn.zxuno.com/svn/zxuno/cores/spectrum_v2_spartan6/test19_multi_uart/">Core de ZX-Uno Test UART (WiFi)</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://nihirash.net/network-tools-for-zx-uno-pack/">Network tools for ZX-Uno pack</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf">ESP8266 AT Instruction Set</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.zonadepruebas.com/viewtopic.php?t=4796&start=110">Vídeos Radastanianos</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.zxuno.com/forum/viewtopic.php?f=52&t=4074&p=28234&hilit=kyp#p28234">Nuevo core zx48</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/Kyp069/zx48.zxdosplus/releases/">ZX 48 para ZXDOS+ (Kyp)</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.forofpga.es/viewtopic.php?t=349">Core ZXNEXT en ZXDOS</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://gitlab.com/thesmog358/tbblue/-/blob/master/docs/zxdos/zxdoscoreinstall.txt">ZX Spectrum Next en ZXDOS</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=53&t=2080">Core MSX</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/fbelavenuto/msx1fpga">MSX1FPGA</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.forofpga.es/viewtopic.php?t=316">MSX Pack</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.konamiman.com/msx/msx-s.html#nextor">Nextor para MSX</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://www.konamiman.com/msx/nextor/docs/Nextor%202.0%20User%20Manual.pdf">Nextor User Manual</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://konamiman.github.io/MSX2-Technical-Handbook/md/Chapter3.html">MSX-DOS</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=16&t=4006">Atom Software Archive en carpeta ATOM</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=16&t=4005">Teclado Core Atom</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?t=1245">Core de NES para ZX-Uno</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/fbelavenuto/colecofpga">ColecoFPGA en GitHub</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.forofpga.es/viewtopic.php?f=167&t=24">Core de Videopac para ZXDOS</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/yomboprime/VideoPac-ZXDOS">VideoPac-ZXDOS</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://archive.org/details/Magnavox_Odyssey_2_TOSEC_2012_04_23">TOSEC: Magnavox Odyssey 2 (2012-04-23)</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/RW-FPGA-devel-Team/Videopac-G7000">Videopac G7000 / Odyssey2 for FPGA</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.videopac.org/manuals/voice.pdf">Odtyssey Speech And Sound Effects Module Manual</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/rcmolina/MaxDuino_BETA/blob/master/MANUAL%20por%20desUBIKado/MAXDUINO%20Gu%C3%ADa%20de%20uso.pdf">Maxduino - guía de uso</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation">Hardware files to support STM32 based boards on Arduino version 1.8.x</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="https://catleytech.com/?p=2679">Programming a Spartan 6 with a Raspberry Pi</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.zxuno.com/forum/viewtopic.php?f=25&t=375">Tutorial para desbriquear el ZX-Uno con una Raspberry</a></p>
|
||
</div>
|
||
<div class="paragraph">
|
||
<p><a href="http://www.forofpga.es/viewtopic.php?t=175">Como programar un UnAmiga con la Raspberry Pi (o Linux) con el USB-Blaster y OpenOCD</a></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="footer">
|
||
<div id="footer-text">
|
||
Version 1.3.3<br>
|
||
Last updated 2021-02-01 22:35:00 +0100
|
||
</div>
|
||
</div>
|
||
<style>
|
||
pre.rouge table td { padding: 5px; }
|
||
pre.rouge table pre { margin: 0; }
|
||
pre.rouge .cm {
|
||
color: #999988;
|
||
font-style: italic;
|
||
}
|
||
pre.rouge .cp {
|
||
color: #999999;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .c1 {
|
||
color: #999988;
|
||
font-style: italic;
|
||
}
|
||
pre.rouge .cs {
|
||
color: #999999;
|
||
font-weight: bold;
|
||
font-style: italic;
|
||
}
|
||
pre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cpf {
|
||
color: #999988;
|
||
font-style: italic;
|
||
}
|
||
pre.rouge .err {
|
||
color: #a61717;
|
||
background-color: #e3d2d2;
|
||
}
|
||
pre.rouge .gd {
|
||
color: #000000;
|
||
background-color: #ffdddd;
|
||
}
|
||
pre.rouge .ge {
|
||
color: #000000;
|
||
font-style: italic;
|
||
}
|
||
pre.rouge .gr {
|
||
color: #aa0000;
|
||
}
|
||
pre.rouge .gh {
|
||
color: #999999;
|
||
}
|
||
pre.rouge .gi {
|
||
color: #000000;
|
||
background-color: #ddffdd;
|
||
}
|
||
pre.rouge .go {
|
||
color: #888888;
|
||
}
|
||
pre.rouge .gp {
|
||
color: #555555;
|
||
}
|
||
pre.rouge .gs {
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .gu {
|
||
color: #aaaaaa;
|
||
}
|
||
pre.rouge .gt {
|
||
color: #aa0000;
|
||
}
|
||
pre.rouge .kc {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .kd {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .kn {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .kp {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .kr {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .kt {
|
||
color: #445588;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .k, pre.rouge .kv {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .mf {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .mh {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .il {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .mi {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .mo {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .m, pre.rouge .mb, pre.rouge .mx {
|
||
color: #009999;
|
||
}
|
||
pre.rouge .sb {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .sc {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .sd {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .s2 {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .se {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .sh {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .si {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .sx {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .sr {
|
||
color: #009926;
|
||
}
|
||
pre.rouge .s1 {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .ss {
|
||
color: #990073;
|
||
}
|
||
pre.rouge .s, pre.rouge .sa, pre.rouge .dl {
|
||
color: #d14;
|
||
}
|
||
pre.rouge .na {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .bp {
|
||
color: #999999;
|
||
}
|
||
pre.rouge .nb {
|
||
color: #0086B3;
|
||
}
|
||
pre.rouge .nc {
|
||
color: #445588;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .no {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .nd {
|
||
color: #3c5d5d;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .ni {
|
||
color: #800080;
|
||
}
|
||
pre.rouge .ne {
|
||
color: #990000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .nf, pre.rouge .fm {
|
||
color: #990000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .nl {
|
||
color: #990000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .nn {
|
||
color: #555555;
|
||
}
|
||
pre.rouge .nt {
|
||
color: #000080;
|
||
}
|
||
pre.rouge .vc {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .vg {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .vi {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .nv, pre.rouge .vm {
|
||
color: #008080;
|
||
}
|
||
pre.rouge .ow {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .o {
|
||
color: #000000;
|
||
font-weight: bold;
|
||
}
|
||
pre.rouge .w {
|
||
color: #bbbbbb;
|
||
}
|
||
pre.rouge {
|
||
background-color: #f8f8f8;
|
||
}
|
||
</style>
|
||
</body>
|
||
</html> |