You are on page 1of 24
NESTE NUMERO E AGORA... O QUE FAZER? Como trabalhar com comandos INPUT e mensa- gens de prontidéo. Métodos mais répidos com INKEY$ ou GET. Programas de desenhos na tela. Uma rotina para entrada de senhas secretas. Com- putadores que ndo tém INKEYS .............. 161 QUEBRE A BARREIRA DO SOM Bipes, marchas funebres, explosdes, ruidos extra- terrestres: vocé pode produzir todos esses sons, © muitos mais, em programas simples em BASIC. Aprenda a encontrar 0 som mais apropriado para seu jogo 168 MEMORIAS SAO FEITAS ASSIM ‘A meméria interna do computador: essencial para seu funcionamento. Memérias RAM e ROM. On- de os programas BASIC so armazenados. Pontei- "95 @indkcadores. Como o computador armazena numeros grandes... 174 PLANO DA OBRA. 'INPUT” é uma obra editada em fasciculos semanais, ¢ cada conjuntode 15 fasciculoscompde um volume. A capa paraenca- dernagdo de cada volume estard a venda oportunamente. COMPLETE SUA COLECAO Exemplaresatrasados at seis meses pds oencerramento da colecd, poderto ser comprados, apres atualizados, da seguine forma: ‘melodeseu jornalero ou diigind se a0 distibuidor ‘eraser facimenteconseguido junto'a qualquer jornalero de a cidade Em ‘Sto Paulo osenderesos sto: Rua Brgadetro Tobias, 773 (Centro A Industri, 117 Sante Arar; no Ro de Janeiro: Rua da Passage, 95 (Botafogo). 2-Pot cart Poderdo ser vlctados exemplars atrasads amb por cata quedo ‘Screnviada para DINAP-— Disinbuidor Nacional de Publics —Numeros ‘Atvasadon Estrada Velha de Osaseo, 132 (Jardim Tereza) CEP 06000 — (Gsasc0 — Sto Paulo. 3.Portelex ~ Uulize on (11) 33670 ABSA. Em Port fal os pedidos deve ser feitos a Distibuidora Jardim de Publica Ld, — (Gud Pau Varais Azinhaga de Fetais— 2688, Camarate Lisboa Te. 257-2542 “Apattado 9? ~ Telex 43069 JARLIS P. ‘Nilo ersiepagamentoantecipado, Oatendimente ser feito pelorembols postal opagamento,ncuindo a despesas posta, deve ser efetuado 20 se reir ‘zeneomendana Agencia do Cora. Alenlo: Aposseis meses doencrTamentd Adacolegao, os pedidos serdo aendidos, ependendo da disponiblidade dee toque Obs: Quando pdirlives, mencionesempreotiuloe’ou autor daobra, lem do numero daca. COLABORE CONOSCO. Encaminhe seus comentarios, crticas, sugestdes ou reclamapdes a0 Servigo de Atendimento ao Leitor — Caixa Postal 9442, Sa0 Paulo— SP. ater Preparadoreade Tet: As Mara igri Anno vicToRCITTA wepacho Dieter Eerie dor cele al se Alnids aor der Cli AV. Coat Editor eke aur reo. (Chetede Aer tia ‘Aaltentes de Arte Alt Olea Lives iva M Sato, ‘isan liver Grace Ards, oe it ra Seti Cema Strela erat en Ofna Dune rade Lourdes Cana Marae Anu Naw de Qos, ‘Sexe Gril: arto Fat cotagoranoes (ener eer Reger rao ME St Grranneenitener bene Coveted pant Eats ARIST seize beni ities ops prepuce ie Re, Ante! otto ark os jeter ‘oar Diretor Comer: Maris Ses Gerete Comer Pvc aa ‘Geren de Creag: Dense Maza! CO ake Sate Coordesdor depres Ai Rte Bors Preparador J Tet Coordenade: Sie Cha Fanci Cea, arta Ap Ge Le can, Nara Tres al, Pao ee Meaene Resor Cordendor ara ce Ase Reisora Coco fowecca Gabi abel Lede (Gana Liga prea Reet Nat era Norer Maa gs ines Maa Tees Maris Les © Marshall Cavendish Limited, 1984/85 © Editors Nova Cultural Lida. S80 Palo, Brasil, 1986. ugh oganizad pela tora Nova Ctra (Aigo 15 da Leis 988, de 14/12/1973) Estaobra oi composta na AM Produces Grafieas Ltda cimpressa na Divisso rica da Faltora ADri'S. | E AGORA..O QUE FAZER? ~___O COMANDO INPUT E AS IENSAGENS DE PRONTIDAO W__ METODOS MAIS RAPIDOS COM INKEYS OU GET I_ PROGRAMAS DE DESENHOS NA TELA IB__ ENTRADAS DE SENHAS SECRETAS Grande parte dos programas para micros exige que o usuério digite dados e outras informagdes necessérias ‘a0 seu funcionamento, A maneira ‘como isso é feito tem uma importancia fundamental. Veja por qué. ‘Com muito poucas excegdes, 08 com- putadores nao funcionam inteiramente Sozinhos, dando saida a informagées Quase todos os programas, desde jogos até aplicagdes comerciais € cientiticas, exigem do usuario algum tipo de entra- da, Entretanto, ha informagdes que po- ‘dem ser fornecidas diretamente ao com- putador, ¢ existem inumeras maneiras pelas quais isso pode ser feito, para os Varios tipos de programa. A informagao pode ser to simples quanto a pressto sobre uma tecla de con- tole do cursor para direcionar uma ba- se de misseis. Mais comumente, porém, consiste na digitagao de niimeros ou tex- tos como acontece, por exemplo, em pro- ‘gramas para bancos de dados. No caso de um jogo, a maior exigéncia € que 0 computadot responda de modo rapido. INPUTS a Um dos primeiros programas execu- tados pelos iniciantes e que ilustra 0 uso do comando INPUT € o seguinte: ss 10 PRINT*QUAL E 0 SEU NOME?" 20 INPUT NS 30 PRINTTOLA, “iNs Ao deparar-se com um INPUT dentro de um programa, o computador para 0 processamento e espera até que 0 usuario digite algo, Apds terem sido pressionados ou , a men- sagem digitada (qualquer que seja ela) & colocada em uma varidvel — NS, no caso do programa acima. ‘Neste exemplo, a varidvel ¢ um cor- dao alfanumérico, mas varidveis numé- ricas também podem ser utilizadas. No programa seguinte, mostraremos como se faz uma lista de cinco nomes e ida: des, empregando comandos INPUT simples. Esse programa utiliza dois con- juntos para armazenar informagdes (mais adiante, abordaremos numa ligdo. especifica a questo dos conjuntos ¢ de como funcionam). 5 DIM NOMES (5) , IDADE(5) 10 FOR Nel TO 5 20 PRINT"NOME:* 30 INPUT NOMES (N) 40 PRINT" IDADE:* 50 INPUT IDADE(N) 60 NEXT N 70 FOR Nel TO 5 80 PRINTNOMES (N) ;" TEM *;IDADE( N);" ANOS DE IDADE” 5 Dim n8(5.10) 10 FOR n=l TO 5 20 PRINT. "None: 30 INPUT ngin) 40 PRINT "Idade: * 50 INPUT a(n) 55 CLs : NEXT n 60 FOR n=l TO 5 70 PRINT n$(n);" tem *a(n);" anos de idade” 80 NEXT n Nos computadores da linha ZX-81, digite tudo com letras maitsculas. Omi ta as linhas 5 55, e acrescente: 5 DIN NS(5,10) 7 pm ACS) 55 cL 57 NEXT A informagao fornecida ao usuério deve estar correta, Da mesma forma, 0 usuario precisa entrar exatamente 0 ti- po de informagao solicitada. Se voce di- gitar um nome quando for perguntada uma idade, 0 programa sera interrom- pido. No entanto, rodar 0 programa ‘mais uma vez leva quase sempre a per- da de tudo 0 que jé foi entrado, obr gando o operador a um duplo trabalho. Isso nao constitui problema se forem apenas cinco entradas; mas quando se trata de um programa extenso, esse es- foreo pode ser desgastante. DIM a(5) ees ae) Embora pareca simples, o programa ma tem uma caracteristica importan- te, que € a mensagem de prontidao con- tida nas duas declaragdes PRINT. Essa mensagem faz com que 0 programa di- ga 20 ususrio que tipo de informagiio ele deve digitar pelo teclado. Seas linhas 20 e 40 do programa fos- sem apagadas, ainda assim ele funcio- naria, pois, na maioria dos computa- ores, toda ocorréncia de um INPUT provoca o aparecimento de algum si- nal de prontidao na tela (por exemplo, uum ponto de interrogacdo). ‘Se voce jd estd familiarizado com ‘computadores, 0 sinal de prontidao do INPUT ésuficiente, quase sempre, pa- ra lembré-lo de que alguma coisa preci sa ser entrada. Ele € insuficiente, porém, para Ihe dizer qual o tipo de informa: sao a ser digitada. Imagine, por exem- plo, que o programa Ihe é estranho, que talvez voc® nao tenha experiéncia em li- dar com 0 computador ou que nao te- nha conhecimento de como ele funcio- na. Neste caso, um ponto de interroga- ‘do causa apenas estupefagao. A mensagem de prontidao € necessa- ria até mesmo nos programas mais sim- piles, pois 0 usudrio tende a esquecer f cilmente a forma exata pela qual a in- formacao deve ser entrada. Por exem- plo, a entrada de datas. A maior parte dos programas de contabilidade, além de muitos outros, requer a entrada de datas pelo usudrio. Em alguns casos, sa informagao ¢ utilizada pelo progra- ma, seja em rotinas de pesquisa, quan- do Se deseja encontrar um dado especi- fico, seja na ordenagao cronolégica de uma série de eventos, por exemplo. Nes- te caso, é preciso estabelecer que uma data seja sempre entrada segundo uma forma padronizada. Um método comum ¢ utilizar seis di gitos para uma data, ou seja, dois di tos para o dia, dois para o més, e dois, para o ano. Muitas vezes empregam-se barras ou pontos para separar os trés pe- riodos. Uma rotina tipica de entrada de dados através de um INPUT seria: nS SZ 100 PRINT “DIGITE DATA (EM FORM ‘ATO DD/¥H/aA)* 110 INPUT DS ‘A mensagem serve ndo somente pa- ra lembrar o usuario de que uma data € necesséria, como também para defi- nir a forma como ela deve ser entrada (0 que se denomina formato de entrada do dado). Se vocd quiser entrar, por exemplo, 3 de setembro de 1945, deve- ra digitar: 03/09/45. © formato de entrada poderd ser qualquer um que o programa desejar, desde que 0 usuario seja informado, por meio de uma mensagem adequada. ‘A utilizagao do comando INPUT, ‘como foi mostrada até agora, é bastan: te simples. Mas ela pode ser ainda mais simplificada no caso de alguns compu- tadores, que permitem a inclusio da mensagem de prontidao no proprio co- mando INPUT. Esse recurso s6 no existe nos micros da linha ZX-81. Vol- tando ao programa de nome ¢ idade, eli- mine as linhas 20 e 40 ¢ reescreva as li- thas 30 ¢ 50, como mostramos a seg “NOME” 30 INPUT (Si progmamagto sasierrn) i i i ‘Na maioria dos micros (com excecao do TRS-Color), se no for colocado um ‘espago em branco antes do segundo nal de aspas, na mensagem de prot dao, 0 ponto de interrogacdo aparecera colado a ela. Por isso, se voc’ quiser dar maior clareza 4 mensagem, coloque o es- paco em branco adicional, ‘Com exceedo do Sinclair Spectrum, & possivel compactar ainda mais a roti na de entrada de dados. Assim, as linhas 30 ¢ $0 do programa anterior poderiam ser substituidas por apenas uma: 30 INPUT*DIGITE NOME E IDADE "; NOMES (N) , TDADE (N) (Nao se esqueca de apagar a linha 50.) No Spectrum, & necessirio colocar so- mente uma variavel por comando IN- PUT, de modo que o usuario deve pres- sionar duas vezes 0 < ENTER >. No so do TRS-Color, do TRS-80, do MSX. edo Apple Il, além de se poder utilizar © método do’ Spectrum, a linha tinica oferece a possibilidade de se digitar no- me ¢ idade separados apenas por uma virgula, e de se pressionar 0 somente no final. Pode-se ainda colocar qualquer niimero de variaveis — sepa- radas por virgulas em uma unica linha de INPUT. Ao se utilizar apenas uma linha de INPUT para varias entradas, ndo se de- ve esquecer de incluir instrugdes sobre todas as informagGes pedidas, bem co- ‘mo 0s seus formatos. Além disso, ¢ ne- cessdrio lembrar 0 usuario de que os da- dos devem ser separados uns dos outro por virgulas, e que s6 no final sed pressionar a tecla . Se essa norma ndo é seguida a maioria dos mi- eros interrompe 0 programa, coloca do um duplo sinal de interrogacao na li- nha seguinte. No Sinclair ¢ possivel dividir a men- sagem de prontidao em mais de uma, na mesma linha. Se cada mensagem’ de prontidio for mantida entre aspas, 0 computador se limitard a imprimi-las, sem traté-las como varidveis. Entretanto, note que nao € possivel Fazer isso nos computadores das linhas TRS-Color, Apple, TRS-80, MSX ¢ ZX-81. Para melhorar a disposigao das informagoes na tela, as mensagens de prontidao dos INPUT podem ser posi- cionadas por intermédio de comandos TAB normais (conforme foi explicado anteriormente, na ligo sobre 0 uso des- sa fungao), roar © principal problema na utilizagto do comando INPUT surge quando se tenta entrar corddes alfanumericos que contenham virgulas e dois pontos, ou es- pagos em branco no inicio. Um endere- 0, por exemplo, normalmente contém virgulas, de modo que fica impossivel usar 0 INPUT para colocé-lo em uma varidvel alfanumérica simples. Do mes- ‘mo modo, a incluso de espagos no ini- cio de uma entrada pode ser ttl para a beleza da apresentagdo na tela ‘A dificuldade est em que muitos com- utadores ignoram espacos i esquerda em um comando INPUT, embora nao criem problemas com os intervalos entre as pa- lavras. E, quase sempre, eles também i rnoram qualquer coisa que ocorra apos vi ‘2ula, dois pontos ou ponto e virgula, trun- cando a informagao restante, mesmo que ‘usuario tenha digitado. Felizmente, al- uns micros possuem um comando que contorna essa dificuldade. Os computa- dores da linha Sinclair, por sua vez, tém um modo especial de evité-la. A solugdo mais comum é incluir a en- trada entre aspas. 0 ZX-81 eo Spectrum, por exemplo, colocam aspas automatica mente na tela quando uma variavel alfa- ‘numérica aparece em um comando IN- PUT. Emrelagao aos outros computado- res, 0 operador deve digitar as aspas co- mo parte da entrada (essa exigéncia, por- tanto, deve ser apontada a0 usuario, atra- vés da mensagem de prontidao) Uma outra soluedo, disponivel nos computadores TRS-80, TRS-Color ¢ MSX, consiste em utilizar 0 comando LINE INPUT. Este & empregado exa- tamente do mesmo modo que o INPUT. 10 LINE INPUT "POR FAVOR, DIGIT E 0 SEU ENDERECO ";aS A vantagem & que se pode colocar, dentro da variavel, qualquer coisa até 0 , incluindo virgulas e es. pagos. Isto é mais garantido, pois vocé 1ndo precisara lembrar 0 usuario a digi tar entre aspas. LERE A ima das qualidades do comando LI- NE INPUT consiste em permitir que vo- & altere o que estiver entrando, até 0 momento de pressionar ‘ou . Assim, se vocé come ter um erro de digitagao, ou perceber que est fornecendo uma informacdo er- rada, ou simplesmente mudar de idéia, ‘voce poderd apagar o que foi feito e ten: tar novamente. A desvantagem é que es- se sistema ¢ relativamente lento e, se vo- c® estiver escrevendo programas para pessoas pouco familiarizadas com com- putadores, elas poderao ndo perceber ou esquecer que ou devem ser digitados. Em programas que utilizam uma por- ‘¢do de menus ou respostas do tipo “sim 0u no”, a necessidade de pressionar uma tecla extra diminui a velocidade de execucao, além de praticamente dupli- car o numero de teclas a serem pressio- nadas, Para evitar que isto aconteya, existe uma maneira de levar 0 compu- tador a detectar automaticamente a te- cla que esta sendo pressionada, sem que seja necessirio acionar depois as teclas ou © comando utilizado ¢ 0 INKEYS nos computadores Sinclair, TRS-80, TRS-Color ¢ MSX, ¢ 0 GET nos da li nha Apple IL Ocfeito da fungao INKEYS, que jé es- tudamos anteriormente, ¢ provocar uma varredura no teclado para averiguar se al- guma tecla esti sendo pressionada nesse instante, Se este for 0 caso, a fungio tra- 14 0 caractere correspondente de volta a0 programa principal. No caso de nenhu ma tecla estar sendo pressionada no mo: mento em que o INKEYS é encontrado, uum cordao vazio é trazido de volta. As- sim 0 INKEYS ¢ usado dentro de um co- mando IF, que testa continuamente se 0 valor retornado ¢ diferente do vazio: mS Sy 100 LET AS@INKEYS:1F AS="* THEN ‘Goro 100 J4 nos micros da linha Apple II, 0 GET faz o computador esperar até que a tecla seja pressionada, no sendo ne- cessirio colocé-lo dentro de um lago de espera, como nos Outros casos (aid) 100 GET As Qualquer varidvel alfanumérica po de ser usada — AS € apenas um exem. plo. A maquina para na linha 100, Se voc® teclar oR, o AS conterd a letra R. Voet pode entrar um nimero, ou um es- ago, ou qualquer outro caractere, até mesmo teclas de controle como . Embora seja virtualmente qual- quer coisa, a entrada pode ter apenas tum caractere, Assim que a tecla for pres sionada, © programa prosseguird. Pena) Agora examine o seguinte programa, que utiliza quatro teclas para desenhar em alta resolugdo na tela (esse progra- ma_nio funciona no ZX-81 ¢ no ‘TRS-80, que nao dispoem de alta reso- lugdo gréfica). Para desenhar no Apple direcdes. Para isso, basta acionar falgumas teclas indicadas pelo programa. Il e no TRS-Color sio utilizadas as te clas, Z, X, Pe L; no MSX, as teclas a F so as de controle do cursor. Vocé também pode usar a tecla 2 para pedir um desenho na cor de fundo da tela (criando, portanto, uma linha invi sivel), ow a tecla 1, para retornar a li- nha do desenho visivel. 10 PMODE 4,1:PCLS:SCREEN 1,1 20 LET X=100:LET Y=100 40 Ler Xlex:LET ¥l-¥ 50 LET AS-INKEYS 60 IF AS-"P* THEN LET Y=vi-4 70 IF AG="L" THEN LET Y-¥led 80 IF AS="2" THEN LET X-x1-4 90 TF _AS="X" THEN LET Xex1+4 100 IF AS="17 THEN COLOR 5 Alo IF AS="2" THEN CoLoR 0 120 IF As“"* THEN STOP 130 LINE (X.¥)-(1,¥1) , PSET 140 Goto 40 10 INK 2 20 PLOT 127,87 30 IF INKEYS="p" THEN DRAW Oo a 40 IF INKEYS="1" THEN DRAW 0 12 50 IF INKEYs-"2" THEN DRAW 2.0 60 IF INKEYS="x" THEN DRAW 2 +0 70 IF INKEYS-"1" THEN INK 2 80 IF INKEY5*"2" THEN INK 7 90 IF INKEYS-" " THEN STOP 100 PAUSE 10 110 GoTo 30 10 SCREEN2 20 LETX-100:LETY=100 30 40 50 60 70 LETX1=x:LETY1-¥ AS*INKEYS IFAS-CHRS (30) THENY-Y1~4 IPAS-CHRS (31) THENY-Y144 IFAS@CHRS (29) THENX=x1~4 linha pode ser movimentada em diversas Com um programa simples, que controla apenas algumas tecla esenhar imagens como as da ilustracdo. 80 90 TFAS=CHRS (28) THENX=x144 TFAS~"1"THENCOLOR 4.4 , 100 IFAS="2"THENCOLOR 15.4 110 TFAS@cHRS(32) THENSTOP 120 LINE (x, ¥)~ (1, ¥1) 130 Go7030 (fe) 10 20 30 40 50 60 70 ONERR RGR goto 150 HCOLOR= 7 x= 100:¥ = 100 xs cyl = ¥ GET AS IF AS ~ "P" THEN Y = YI - 2 IF AS © "LT THEN Y > v1 +2 Um bareo, um miss, uma garrafa: se voce uiser executar desenhos como esses, sig as instrugdes desenvolvidas no texto. 80 IF AS = "2" THEN X= x1 - 2 90 IF AS = °K" THEN X= XL +2 100 IF AS = "1" THEN HCOLOR= 7 110 IF AS - "2" THEN HCOLOR= ° 120 IF AS =" " THEN END 130 HPLOT x,¥ TO x1,¥2 140 GoTo 40, 150 X= X1:¥ = Yl: PRINT cHRS (7): RESUME Esse tipo de rotina é muito util para grificos e jogos. A linha é tracada en: quanto as teclas so pressionadas. Mas Observe que o computador aceita uma tecla de cada vez; ja as linhas diagonais so de tragado mais dificil, pois consis tem em uma série de pequenos degraus, Trace as diagonals como se fossem uma ceseada de miniseulos degraus Nao pressione duas teclas a0 mesmo tempo. Os comandos INKEYS ou GET sao também muito tteis em qualquer pro- grama que empregue menus. O progra- ma seguinte imprime um menu como parte de um programa de arquivo de dados: tT} 5 cis 10 DATA CRIAR UM ARQUIVO, ENTRAR DADOS, VER DADOS, EDITAR, PROCUR AR, IMPRIMIR, CARREGAR, GRAVAR, FIM 15" RESTORE 20 FORN=1T09 30 READ OPCOESS 40 PRINTTAB (5) ;N; TAB (10) ;OPCOES $ 50 NEXTN 60 PRINT: PRINTTAB(5)"SUA OPCAO 70 AG@INKEYS: 1FAS=""THEN70 80 IFAS="1"°THENGOSUB1000 90 TRAS="2"THENGOSUB2000 100 IFAS="3"THENGOSUB3000 110 TFAS="4"THENGOSUB4000 120 IFAS-"5"THENGOSUBS000 130 IFAS="6"THENGOSUB6OOD 140 IFAS="7*THENGOSUB?000 150 160 170 Altere a linha 70 do programa ante- rior 70 LET AS@INKEYS:1F AS="" THEN Goro 70 Modifique as linhas do programa an: terior para: 5 HOME 70 GET AS:1F AS="" THEN 70 Apague as linhas 10 ¢ ‘ma anterior, substituindo.as por: 10 “Entrar com registros” egistros”,"Editar registros "Procurar registros”,"Inprini :"Gravar arquivo" ,"Saida” is RESTORE 20 FOR nel 10 9 30 READ hs 40 PRINT TAB 5;n:TAB 10:ns 50 NEXT n 60 PRINT’: PRINT TAB 5;"Sua e scolha->" 70 LET AS@INKEYS: IF AS=" THEN GOTO 70 80 IF AS#"1" THEN GOSUB 1 90 IF AS="2" THEN GosUB 2000 100 IF AS="3" THEN GoSUB 3000 110 IF Ag="4" THEN GosUB 4000 120 IF AS="5" THEN GOSUB 5000 130 IF AS="6" THEN GOSUB 6000 140 IF AS="7" THEN GosUB 7000 150 IF Ag="8" THEN osUB 8000 160 IF AS="9" THEN GOSUB 9000 170 IFA$~"8"THENGOSUBBO00 | IFAS="9"THENGOSUB9000, GoT05, para: 10 do progra- oto 15, NC Bl Com esse programa, 0 computador vai direto & sub-rotina pertinente assim que uma tecla é acionada — a menos ue vocé pressione uma outra tecla en- te 0s nuimeros de 1 a 9, Neste caso, a linha 170 imprimir novamente o menu ¢ este se repetira na tela. Te programa anterior funcioy feitamente enquanto existiren nove opgdes. Mas se voce tentar teclar 10, 0 computador entenderé que voce est entrando o 1, pois 0 programa pros. seguir automaticamente assim que ti ver sido teclado o primeiro digito. Mas existe uma maneira de entrar palavras inteiras. E como nio é mostrado nada na tela, ela ¢ ideal para se entrar uma senha ou um “cddigo secreto"”, que po- de ser usado para limitar 0 acesso dos usudrios a um determinado programa. Cada digito é entrado utilizando-se 0 INKEYS ou 0 GET, sendo o caractere resultante acrescentado ao iiltimo digi to entrado. Eis 0 programa: 10 PRINT "DIGITE A SENHA" 20 LET KS*INKEYS:1F KS="" THEN Goro 20 30 LET Po=PSeKs 40 50 60 70 IE LEN(PS)<>7 THEN GOTO 20 IF PS<>"BANANAS” THEN STOP PRINT “0.K." REM (A SEGUIR VEM 0 PROGRAMA 10 LET pso"* 20 PRINT “DIGITE A SENHA” 30 PAUSE 0 40 LET kS=INKEYS THEN GOTO 40 50 LET pS-pStks 60 IF LEN p5<>7 THEN GOTO 3 70 IF pS<>"bananas” THEN stor. 80 PRINT “0.K.7 90 REM (Em seguida vem o rest { © do program: IF ks="" Modifique a linha 20 do programa anterior para 20 GET KS:1F KS=""THEN 20 Essa rotina comega com um cordio vazio (PS), ao qual vio sendo progres: sivamente acrescentados os caracteres, um a um, até que a extensao da senha esteja correta. Como os caracteres en: trados nao slo impressos na tela, o pro. rama impede que as pessoas olhem 0 est na tela e aprendam a senha. ||) CUE ES Se aon i SES OINKEYS (¢ outros comandos simi lares) & igualmente empregado para “congelar’” um programa. Isto € ttil quando uma tela repleta de informagdes deve ser examinada. Apés a parte do programa que imprime a informagao, coloca-se um comando INKEY$ ou GET no programa de modo a bloquear a listagem antes de limpar a tela. Infelizmente, o interpretador Apple- soft BASIC, dos micros da linha Apple TI, ndo dispde de uma fungao tao pode- rosa como o INKEYS, ‘para efetuar 'varreduras"” no teclado. Existe apenas © comando GETS, mas este bloqueia 0 andamento do programa toda vez que € encontrado por ele. Dessa forma, se quisermos, por exemplo, fazer pro mas de jogos em que um missil ow um disco voador precisa continuar se mo: vendo pela tela enquanto o jogador nao pressiona a tecla que comanda um dis- aro, é necessirio “‘imitar”” a agao do INKEYS, executando © pequeno pro- grama a seguir (ndo tente entend2-lo ain da; estudaremos os comandos PEEK POKE numa ligdo posterior) 100 LET Ks 110 LET KePEEK (-16384) 120 TF K¢126 THEN RETURN 130 LET KS=cuns(K-128) 140 POKE ~16368,0 150 RETURN Esta sub-rotina, quando chamada (por meio de um GOSUB 100), retorna- 4, através da varidvel KS, 0 caractere pressionado no teclado, Se KS retornar com valor nulo, isso significa que ne- nhuma tecla foi pressionada, Por isso, podemos colocar a chamada & sub’ rotina em um lago, assim: 30 cosup 100 35 TF KS="" THEN GOTO 30 Ocomando PEEK examina a locago de meméria -16384, que guarda um co: digo numérico, Se esse niimero for igual 128 ou maior, significa que uma tecla foi pressionada e que 0 seu cédigo AS- CIT sera deduzido pela expressao' da li- nha 130 e convertido para 0 caractere ar- mazenado em KS, O comando POKE zera uma outra locagao da memidria, pa- ra permitir uma nova varredura © imerpretador BASIC do TK-2000 nao dispde de uma funcao tao podero- sa como 0 INKEYS para efetuar “v reduras” no teclado. Existe apenas 0 co mando GET (de funcionamento idénti co ao do Apple Il), que tem a desvanta: de bloquear 0 andamento do pro: fgrama, sempre que & encontrado por € Assim, para programarmos jogos em que um missil ou um disco voador, por exemplo, precisa continuar se movendo pela tela enquanto o jogador nao pres siona a tecla que comanda um disparo, & necessirio “‘imitar” a acdo do INKEYS através de uma rotina diferente da que foi apresentada para os micros da linha Apple IL A locagao 39 da memoria RAM do TK-2000 retém um valor numérico cor respondente a ultima tecla pressionada Assim, a sub-rotina abaixo retorna esse cédigo toda vez que uma tecla for pres sionada: 100 LET K-o 110 LET K=PEEK(39) 120 TF Ke48 THEN GoTo 100 130 RETURN A locagao de meméria 39, no TK-2000, contém sempre o niimero 48, enquanto nenhuma tecla for pressionada Assim, é facil incluir uma chamada ‘essa rotina (GOSUB 100) no ponto do programa em que se torna necessario ve Fificar se alguma tecla foi pressionada ‘em caso positivo, qual foi essa tecla. Para descobrir 0 c6digo gerado por cada tecla do TK-2000, rode 0 pequeno programa abaixo e pressione sucessiva mente as teclas que quer descobrir. O cédigo correspondente seré mostrado na tela, Pressione para interromper 0 programa: 10 HOME, 20 LET K=PEEK(39) 30 IF K<>48 THEN PRINT K 40 Goro 20 © uso do PEEK tem uma vantagem a mais: se voce apoiar 0 dedo sobre uma determinada tecla, 0 cédigo referente a cla ser mostrado repetidamente na te: la, ou seja, a funcdo € auto-repetitiva Isto é muito importante para diversos ti pos de programas, principalmente pro gramas de jogos, Bipes, explosées, ruidos extraterrenos: seja qual for a sua escolha, todos esses sons podem ser produzidos or programas simples em BASIC, tornando seus jogos mais eletrizantes. s programas de jogos de ago in- cluem, normalmente, diversos tipos de ‘efeitos sonoros — explos6es, tiros, zum- bidos, pequenas melodias ¢ outros rui- dos — que os tornam mais excitantes € atraentes. Esta ligo tem por finalidade propor- cionar a voc uma pequena “bibliote~ ca"” de sons adequados a programas de Jogos. Vocé pode utiliza-tos tal como es- to ou desenvolvé-los livremente, como parte de conjuntos sonoros mais com. plexos., Lembre-se de que nao existem regras sumaérias ou definitivas para se produ- zr efeitos sonoros, Se 0 seu jogo pres sa, por exemplo, de um ruido semelhan- te ao de alguém mergulhando numa pis- ccina, vocé teré que sentar-se em fre a0 computador e experimentar varias vezes, até conseguir um efeito convin. cente, Por outro lado, alguns sons apa- rentemente tmprovaveis poderio ser bem aproveitados, caso vocé consiga in- ventar 08 tipos adequados de graficos. A incorporagao de efeitos sonoros em seus programas depende da complexida- de destes e da frequgncia com que tais efeitos serao utilizados. Assim, ruidos simples que entram apenas uma vez em ‘um programa, devem ser colocados apés uma declaracdo IF... THEN. Efeitos re- petitivos ou mais complexos, por sua vez, precisam de uma sub-rotina. O grau de sofisticagdo dos efeitos so- ndros depende nao s6 da habilidade do programador, mas também dos recur: sos de programacao de sons de cada computador. Desse modo, o gerador de ‘som dos micros compativeis com 0 Sin- clair Spectrum (por exemplo, 0 TK-90X) jtado a um simples tom puro (cha- mado de hipe, em jargao computacio- nal) obtido por mei BEEP, e cuja freqiiénci dem ser controlados pelo usuai ruido semelhante pode ser produzido, no microcomputador brasileiro TK-2000, mediante o comando SOUND. Em contrapartida, os micros das linhas TRS-Color ¢ MSX possuem uum gerador de sons bastante sofistica- do, capaz de sintetizar uma série imen- sade efeitos diferentes. Esse gerador dis- pe de varios comandos especificos na linguagem BASIC. O Apple Il, oZX-81 €0 TRS-80 s6 permitem efeitos sonoros satisfatérios através de programas espe- ciais em linguagem de maquina; por is- $0 no serdo tratados nesta licdo, O Sinclair Spectrum conta, como ja foi assinalado, com um tinico recurso’ para a programagio de efeitos sonoros em BA- SIC: 0 comando BEEP. Simples de pro- sgramar, esse comando pode ser usado pa- ra “envenenar’” consideravelmente 0s seus programas. No TK-2000 temos um co- mando equivalente: 0 SOUND. Para exemplificar, veja a seguir uma rotina que produzird uma série de sons idénticos 8000 FOR nel TO 12 8010 BEEP .03,30 8020 NEXT n Como vocé pode ver na linha 8010 do programa acima, 0 BEEP ¢ seguido por dois ntimeros separados por uma virgu- I ina a du- quanto maior ele for, mais tempo durara a no- 1a. O valor I corresponde a duracao de um segundo. Numeros maiores ou me- nores do que esse (no caso, fragdes de- cimais) funcionarao proporcionalmente. O segundo niimero estabelece a fr giiéncia da nota, com o niimero 0 cor- respondendo ao 46 médio no teclado de um piano. Cada niimero inteiro acima ou abaixo disso representa um semitom mais alto ou mais baixo — ou seja, € correspondente & tecla mais prdxima, em um teclado de piano. Para efeitos so- noros em jogos, frequiéncias muito bai- xas, da ordem de ~32, so utilizadas para imitar explosdes e zumbidos. COMO INCORPORAR EFEITOS ‘SONOROS AO JOGO DE —TABIRINTOS ALEATORIOS APRENDA A USAR BEEP, PLAY (a) 2000 FOR N=1 TO 12 8010 SOUND 90,3 8020 NEXT N ‘O.comando SOUND no TK-2000 (ve- jaa linha 8010) funciona da mesma ma- neira, $6 que agora o primeiro nimero determina a frequéncia do som, € 0 se- ‘gundo a sua duragdo, Nao sao permiti- dos mimeros negativos ou fracionarios, nem maiores que 255. A correspondén: cia da freqiiéncia com as notas musicais um pouco mais complicada, e esta ilus- trada no manual de programacao BA- SIC do TK-2000. (Os comandos BEEP e SOUND serio explicados com maior riqueza de deta. Ihes numa préxima ligao. Na rotina acima, 0 lago FOR... NEXT executa uma série de doze notas. Ja 0 programa abaixo contém dois la- {608, com a variavel de controle de cada Taco estabelecendo a freqiiéncia das no- INVENTE 0 SOM CERTO E SOUND EXPLOSOES, TIROS. mar DESTRUICAO IM__DORUIDO AS NOTAS MUSICAIS MAIS EXPLOSOES tas, Isto resulta em um efeito que pode- rat ihe ser wil quando, em um de seus jogos, for necessdrio criar um som pa- ra acompanhar a destrui¢ao de um ex traterrestre FOR ne4 To 0 STEP -1 BEEP .01,n NEXT FOR nel To 4 SOUND .0l,n 8050 NEXT n 8000 FOR N=60 To 0 STEP -10 SOUND N, 3 8020 NEXT N. FOR N-0 TO 60 STEP 10 SOUND N,3 NEXT N. aqui uma rotina que emprega 0 lago FOR... NEXT de um modo pareci- do; 0 ruido criado, porém, sera agora ‘um som de “‘Congratulagdes"’. Voce po- dera utilizé-lo quando 0 jogador tiver destruido todos 0s '*monstros’” ou pa- a celebrar alguma outra vitoria. 8000 e010 8015 8020 (] 8000 FOR n=10 To 60 STEP 5 BEEP .0l.n BEEP .01,n-2 NEXT A FOR Ne70 TO 150 STEP 5 8010 SOUND N,3 8015 SOUND W: 8020 NEXT N ‘Tente fazer experiéncias mudando os parametros do comando BEEP (ou SOUND) para produzir efeitos sonoros fem seus programas de jogos. Procure aa EFEITOS SONOROS NO TRS-80 (O TRS-80 nfo tom recursos para a pro: dug8o de efeitos sonoros, mas é pos. ‘ivel faz6-lo emitir alguns sons. Para is to, utiliza-se a interface de saida para Co gravador cassete, que gera pulsos no ‘spectro audivel, sob controle adequa. {do de um software, Basta ligaro fio. que vei do computador até 0 conector MIC ‘ou AUX, em um sistema de amplifica- ‘$80 de som, 0 software de produgso de som funciona da seguinte maneira: 0 co- mando OUT envia pera a porta de sat da do gravador (a de numero 255) uma seqiéncia de bytes Oe 1. O byte 0 cau: 5a um pulso negativo na sada, © o byte 1, um pulso positive. Alternando-se ambos, temos uma onda de som. Para variar 8 frequéncia do som, varia-se usa entre o pulso positive e o neg: vo, Com essa técnica, é possivel pro- dduzir sons em BASIC: basta colocsr os. ‘comandos OUT dentro dos lacos de re- eticdo entre meados de um laco de re- ‘tardo de tempo: 10 FOR I-1 To 1000 20 ouT 255.0 30 FOR Jel'To 10:wext J 40 our 255,1 50 NEXT I Sons mais agudos e efeitos como explosées, sirenas, etc., exigem uma rotina em linguagem de méquina, que pode ser chamada a partir de um pro- ‘Grama em BASIC pelo comendo USR. utilizé-los também dentro de lagos e de sub-rotinas, SNe eo nnn Imagine 0 jogo de labirinto aleatério apresentado na tltima ligo com alguns efeitos sonoros. Note que ndo hé uma versio para o TK-2000. Adicione as li has 365 ¢ 500 a0 programa original e modifique a linha 400, 365 BEEP .01,10 400 LET vidaa=vidas-1: RESTORE 500: FOR f=0 TO 10: READ a,b: BEEP a,b: NEXT f: IF vidas>0 THEN “GoTo 260 500 DATA .45.0,.3.0,.15,0,.45, 01390 .5,2-3)25.15.00.905 15.71, 145.0 Se vocé rodar 0 programa agora, des- cobrira que acrescentou uma rotina de som simples mas muito eficaz, que exe uta uma marcha fuinebre sempre que 0 Jogador perder uma “vida”. Tente mo- ditficar 05 valores dea eb para criarefei- tos diferentes. Esse exemplo mostra que voct deve ser cuidadoso quando utilizar efeitos so- noros em jogos, ja que 0 computador interrompe 0 que esta fazendo durante a execuro do BEEP, criando assim al gumas pausas inoportunas. Mesmo que Voc® inclua apenas efeitos de curta du- racdo, isso poderd tornar 0 seu jozo muito lento. mM © MSX possui um dispositivo sono- ro muito sofisticado que emprega trés “‘vozes” altamente controliiveis, ou ca~ nais sonoros. Esse dispositive permite uma grande variedade de ruidos, mui- tos dos quais podem ser incorporados os seus programas de jogos. Tais ruidos podem ser criados por meio das ‘‘vozes”, isoladamente ou em ‘grupos, de modo a formar diversas com- binacdes. Uma explicagao mais detalha- da sobre programacao de efeitos sono- ros no MSX sera desenvolvida em um artigo posterior de BASIC. O MSX utiliza um segundo micro- processador interno somente para pro- duzir sons e efeitos sofisticados: algu- mas linhas de programa sao suficientes ppara isso. Esse microprocessador é com- posto por 14 registros que funcionam de ‘maneira semelhante as posigdes de me- méria do computador. O som é produ- zido de acordo com o contetido de tais Tegistros, ou seja, suas caracteristicas dependem dos nimeros armazenados nos registros. Os valotes adequados so colocados nesses registros por.intermé- dio do comando SOUND R, N(R é 0 nniimero do registro, e No nimero que determinaré as caracteristicas do som). ‘O MSX conta ainda com uma lingua- gem ‘“macromusical”” disponivel me- diante 0 comando PLAY. Quando se deseja programar uma melodia (é neces sério entender um pouco de musica) é mais facil utilizar esse comando e nao se preocupar com tantos registros, O PLAY é, contudo, um pouco lento ¢ ndo produz ruidos, sé notas musicais. Para entendé-1o melhor, leia a seco de- dicada ao TRS-Color, mais adiante. Se vocé gravou 0 programa de cria «ao de labirintos aleatérios para o MSX (apresentado na iltima licao de progr: magio de jogos), certamente achard i teressante acrescentar as trés linhas que listamos a segui 1330 TF_XCOLK OR YOOLY THEN LX X:L¥-¥:PLAY "V15725505164D6" 1340 IF Fel THEN F-0:5C-sc+(TI- TIME) :TY=T1-10:PLAY “V15T100038 CDEFGA" GoTo 1220 1500 PLAY “v15T25S02L2cR6AL4cR6 4L12cR64L.2CR64L-4DIREALEDREALADR 64LacnSALacReao1LeBR640zL 2c": LI stl A primeira linha produz som para 0 movimento do homenzinho; a segunda, para o momento em que ele encontra o tesouro; a terceira toca uma ‘marcha flinebre™ quando ele perde uma “vida” ‘Como dissemos, 0 comando PLAY 96 & adequado para programacdo de me- lodias. Quando desejarmos ruidos (sons ‘no musicais) ou uma velocidade maior, deveremos utilizar 0 comando SOUND. Muitos valores (até 13) devem ser co- locados nos registros adequados, para acmissio de um determinado som. Co- mece a aprender como fazé-lo, digitan- do as seguintes linhas: 10 sounp 7,7 20 SOUND 6,20 30 SOUND 8,15 Rode o programa e ouvird um ruido semelhante ao das ondas do mar que: brando na praia (use a imaginagao). ‘Vejamos os registros utilizados. Na linha 10 colocamos o valor 7 no regis: tro 7. Este titimo determina os canais, de som a serem utilizados e se cles pro- duzirdo misica ou ruido. O que impor tano momento € que o valcr 7 ativa 05 tés canais para criar ruidos. O valor $6 ativaria os tés para sons musicais Qualquer outro valor entre I ¢ 63 utili zaria 0s canais de uma maneira mista. Na realidade, deve-se converter o valor utilizado para a forma bindria de modo a ficarmos sabendo 0 que cada canal produzira: musica ou ruido. Na linha 20, o registro 6 determina a freqiiéncia do ruido produzido, poden- do conter valores de 0a 63. Nameros me- nores determinam sons mais agudos. Na linha 30, o registro 8 controla o volume do som produzido pelo canal A, poden- do conter um mimero entre 0 € 15. Ge- ralmente, € melhor colocarmos o valor maximo ¢ ajustarmos 0 volume da TV. Outras vezes, contudo, podemos criar efeitos interessantes variando o volume Acrescente as seguintes linhas ao progra- ma para obter um som mais proximo do real, Isto & conseguido variando lenta- mente o volume nas linhas 40 e 70. 30 FOR 1-10 To 40 SOUND 8,1 50 NEXT 60 FOR I-15 TO 10 STEP -1E-03 70 SOUND 8,1 80 NEXT 90 GoTo 30 5 STEP 1E-0 Modifique 0 valor do STEP nas li- nhas 30 ¢ 60 de -1E-3 para .5 e vocé ou- vird o barulho de um trem a vapor em movimento. O programa listado a seguir permite que vocé experimente e modifi- que varios efeitos sonoros, variando os valores dos diversos registros. 5 CLS:R=RND(-TIME) 10 INPUT "Numero do programa (1 =13): "3p 15 INPUT "Envoltéria (1-fixa 2-programavel): "iE 16 EE-14+E, 20 IF El THEN 35 25 INPUT "Forma da onda sonora (8-15): "aw 26 sounD 13,u 30 INPUT "Perfodo do ciclo (0-6 5384) 31 HE-F/256:L8=F-256"H8 32 SOUND 11,L#:SoUND 12,H8 35 INPUT “misica ou rufdo (m ou M7 THEN SOUND 7,56:A- 0:1=255:G0T0 40 38 IF MS="R" THEN SOUND 7,7:A-6 :7*63:G0T0 40, 39 Goro 35 40 SOUND 8,EE 60 ON P GOSUB 80,90,100,120,120 +130, 140, 150,160,170, 180,190,20 0,210 70 oun 8,0 80 SOUND 1:5 3 85 souND a,z 90 SOUND 1,0 =.3 END FOR Z-1 TO T STEP NEXT: RETURN FOR Z-T TO 1 STEP 95 SOUND A,Z:NEXT:RETURN 100 sounD i,0:FoR z=1 70 20 STE Pad 108, 107 no us 17 120 122 125 127 130 ‘SOUND A, ABS (SIN(Z) *T/2 NEXT: RETURN SOUND 1,1:FOR Z=1 TO 200 SOUND A;RND(1)® (T+1) :NEXT RETURN IF A=O THEN AqL:T=15 FOR 1 TO 50 SOUND A,T AND ABS(TAN(Z)+5) NEXT:RETURN SOUND A,7/2:SOUND 1,2 A linha 5 limpa a tela ¢ prepara o ge- rador de nlimeros aleat6rios. Os diver- sos INPUT das linhas seguintes pedem informagdes a respeito do efeito dese jado. Nas linhas 80 a 207 estdo treze di: ferentes sub-rotinas que geram treze efeitos diversos. Essas sub-rotinas cuidam principal: mente da freqiiéncia dos sons — isto é, se eles so agudos ou graves — e de co: mo essa freqiiéncia vai variar com 0 tempo. Caso se trate de som musical, é utilizado o canal A, cuja freqiiéncia ¢es tabelecida pelos registros 0 (ajuste fino) € 1 (ajuste grosseiro), Em caso de ru do, a frequiéncia é determinada pelo re gistro 6. A variével A contém 0 valor adequado do registro de freqiéncia, conforme a opcao seja miisica ou tui do, A varidvel T varia também confor- ‘me essa opedo, compatibilizando os va- Tores méximos que cada registro de fre- qiigncia comporta Conforme 0 valor do registro 7 (li- nhas 36 € 38) teremos ruidos ou sons musicais, O valor 7 determina ruido, ¢ © valor 56, musica (nos trés canais). ‘Uma das caracteristicas do dispositi- vo sonoro do MSX ¢ a possibilidade de programar 0 formato da onda sonora ‘ou “envoltéria’’. Isto significa que 0 vo- lume do som muda ao longo do tempo de acordo com uma curva cujo forma- to pode ser escolhido por nés (formato de serra, tridngulo, pulso, etc). Normal~ ‘mente, volume é fixado de acordo com © valor do registro 8 (para o canal A). Se colocarmos nesse registro 0 valor 16 (linha 40) teremos a nossa disposi¢ao di versos tipos de envoltSrias (veja 0 for- mato delas em seu manual). O registro 13 seleciona a forma da envoltéria, e os registros 11 ¢ 12 determinam o period do ciclo. Este diltimo valor corresponde A yelocidade com que o volume vai mu- dar. Valores baixos correspondem a al- tas velocidades. ‘Comece entdo a experimentar. Esco Ihendo © programa 10, por exemplo, com envoltéria fixa e sons musicais, vo" cc ouviré um canto de passaro. AS va- riagdes so quase ilimitadas. Para entender melhor como todos es- ses valores modificam as caracteristicas do som produzido, faga o seguinte: pri (0 Ouga todos’ os treze programas utilizando envoltorias fixas ¢ sons mu- sicais, Depois comece a ouvi-los com as diferentes envoltrias programaveis, mantendo o mesmo programa para po- der comparar. Inicialmente, varie ape- nas a forma da onda, mantendo o va- lor 1000 para 0 periodo do ciclo. A se- ‘guir, varie o periodo, conservando o res to constante. Depois de experimentar os sons musicais, repita a mesma sequién- cia para os rufdos. rT} Existem dois comandos no BASIC do ‘TRS-Color que podem ser usados para produzir efeitos sonoros: 0 SOUND ¢ 0 PLAY. Ambos utilizam 0 mesmo gera- dor sonoro, embora ndo seja possivel afetar de maneira significativa a quali dade (timbre) da nota produzida. O SOUND controla a freqiiéncia e a dura- ‘¢4o do som, enquanto o PLAY permite ue voce selecione uma seqiiéncia de no- tas musicais para executar uma melodia, por exemplo, O comando SOUND po- de ser utilizado para produzir bipes (sim- ples tons sonoros, de freqiigncia e dura- 40 fixas), como mostramos no progra- ma a seguir. Quando rodé-lo, nao se es- ‘queca de ligar o volume na sua TY; do contrario, ndo ouvird nada! 10 FOR gel TO 5 20 SOUND 200,1 30 NEXT 9 ‘A sétie de bipes pode ser alterada me- diante a modificacdo dos mimeros apés © comando SOUND. O primeiro nime- ro controla a frequigncia da nota e pode ter um valor de 1 a 255. A nota mais bai- xa é produzida por | ¢ a mais alta por 255 (para alguém que conhece algo so- ‘bre miisica: 0 valor 89 corresponde & no- ta dé da escala do meio de um piano). segundo mimero apés 0 comando SOUND regula a duragao do tom sono- ro. Novamente, a gama possivel de va- lores vai de 1 a 255; 0 valor 16 fornece cerca de um segundo de duragao, Esses bipes podem ser adequados a Jogos especiais ou de fantasia, mas ndo ‘sa de muita utilidade quando o tema do jogo ¢ mais realista. Assim como no ‘caso dos efeitos graticos simplificados para produzir explosdes (flashes) descri- tos anteriormente, deve-se ser criterio- 80 a0 utilizé-los. Nunca deixe de empre- gar efeitos sonoros adequados ao ““cli- ma’” do jogo. Quando se precisa de um tipo mais sofisticado de efeito sonoro, & recomen: vel abandonar o comando SOUND, ccujos recursos sAo limitados. Ao invésde- le, é preferivel utilizar ocomando PLAY, como sera explicado mais adiante. Nee eC) Se vocé gravou o programa de criagio delabirintos aleatérios parao TRS-Color (dado na tiltima ligao de programagao de jogos), poderd melhorar muito 0 jogo, adicionando os efeitos sonoros a seguir. Substitua a linha 230no programa do labirinto pela seguinte: 230 IF X mal 408, que igual a 1 024 cm decimal. usuario ou o programador podem utili- { - zat: 0s outros 32 ou I6K, conforme 0 aso, slo reservados para uilzasdo pe- ° %@ la propria maquina. Nos micros ciados, os fabricantes numeram as locagoes de +g memétia de 0000 a FFF. O Spectrum ‘v0 ZX-81 de T6K (os menores) — que tem na realidade 39K de memoria ao to do — numeram suas focagoes de memo- ria de 0000 a 7EFF ‘A meméria dos micros é constituida ppor milhares de minisculos circuitos in- {egrados de slicio que podem ser ligados € desligados individualmente. Esses cir- cuitos so organizados, dentro do chip, fem grupos de oito. Cada grupo represen- taum byte isto & um nimero binario de ‘ito bits, ou 0 correspondente a dois a gitos em hexadecimal, Internamente, tal mimero é usado para definir um endere {0 para cada locagdo de meméria, Pera Em computagdo, um K é aproxima. damtente andlogo ao k (quilo) do siste ma métrico. Na realidade, 1K em com- Putac’g equivale ao mimcro hexadeci RRR DN aa CC UDC Te Sc Cum ey CO uu aa CO ed Além da organizagao basica em bits e bytes, 0 espaco de meméria do com: putador 6 dividido em subunidades: as pdginas, definidas como conjuntos en: eregdveis de 100 locagdes de meméria ‘em hexa, cada uma (256 em decimal). A pagina 0 (zero) vai de 0000 a 0OFF a pdgina I (um), de 0100 a O1FF, e as sim por diante. A organizacdo em pagi- nas facilita a programaco do sistema, na: ROM e RAM. Memory) significa memdria somente de leitura. Ou seja, pode-se ler 0 conteido das locagdes de meméria ROM mas nao se pode escrever nelas, Protegida con- tra alteraedes externas, a informacao contida é fixada petmanentemente quando 0s chips ROM sio produzidos. A meméria ROM guarda as instru 8s operacionais ¢ o interpretador que traduz seus programas BASIC para c6- digo de maquina. Os cédigos contidos ‘na ROM também so responsaveis pela imposigao de uma estrutura ao resto da meméria, Aberta ao usuario, a RAM (Random Access Memory) significa me: ‘méria de acesso aleatério. Algumas lo- cagdes na RAM sao controladas pel ROM: se voc@ tentar escrever nessas lo- cages reservadas de meméri amas gravados na ROM se enc: io de faz8-las voltar ao seu conteudo original. Apesar disso, RAM € uma es. pécie de folha em branco, na qual voce pode escrever 0 que quiser Pees Os mapas de meméria_mostrados adiante sdo uma r io grifica da memoria RAM ¢ ROM de cada tipo de micro. As areas representadas, con- tudo, nao esto em sua posigao isica exata, pois o espaco da meméria € divi dido em diferentes chips. Alguns dos li mites entre as segdes da meméria — co moa ra entre a ROM ¢ a RAM coincidem com a mudanga de um chip para outro. Outros, porém, so fle- xiveis e suas posigdes so indicadas por 1m ponteiro ou indicador na drea de va. idveis do sistema Um ponteiro ¢ uma locagdo da me méria (ou melhor, um par de locagdes da meméria) que armazena o enderego de uma outra locagdo — neste caso, 0 inicio de uma secao particular da mems- ria, O endereco de qualquer byte de me- méria é constituido por um ntimero bi nario de dois bytes de comprimento (de- zesseis bits), de modo que precisa ser ar mazenado em duas locagdes adjacentes de meméria cI PUY Mea OI QUANTA MEMORIA 0 SEU SSI 1 PES oMee NEON A meméria ROM de 16K do Spec trum vai de 0000 a FFFF e contém 0 in- terpretador ¢ o editor de programas em BASIC, bem como varias rotinas de en- trada e de saida e 0 conjunto de carac- teres que guardam os dados para as le- tras do alfabeto, niimeros e outros sim- bolos erdficos. Os 48K restantes — que vao de 4000 a FFFF — ou 0s 16K res: tantes — que yao de 4000 a FFFF — sio. memoria RAM {As fungdes das areas em que a memé- ria RAM esta dividida sdo as seguintes A drea de exibiedo controla 0 que ¢ mostrado no video. Cada locagao da mem@ria corresponde a uma linha de oi- to pixels, A drea de atributos controla as cores de fundo (PAPER) e de frente (INK) das 768 locagdes de caracteres na tela, €0 tipo de exibigdo a ser feita (intensi e normal, brilhante ou piscante). A meméria intermediria da impres- sora retém a proxima linha do texto que serd enviada para a impressora. A drea de varidveis do sistema con: tém_as locagdes que guardam os ende- ‘egos do inicio das dreas especificadas acima (apontadores), A drea de mapeamento de microdri- ves existe apenas nas unidades de micro- fita (microdrives) parao Spectrum, co- nectadas ao computador. Em caso con Meo Lele am cert BT etes Mueta levees trdrio, o apontador CHANS, cujo en derego ¢ armazenado nas locagdes 23 631 e 23 632 (SC4F e SCSO, em he- xadecimal), € deslocado para SBC6 ‘A drea de informagdo de canal trans- porta os dados de entrada e de saida. Ela conduz a entrada do teclado para a parte mais baixa da tela de TV e a saida do programa para o restante da tela, para © espago de trabalho mais acima na me- moriae para uma impressora. A Grea do programa BASIC retém as linhas de qualquer programa BASIC di- sitado ou carregado; seu tamanho de- pende da extensao do programa. Inicia- se no enderego fornecido pela variavel de sistema PROG, que é armazenada nas locagdes 23 635 ¢ 23 636 (SC53 € ‘5C84) na dea das varidveis do sistema, Isto apontara para a locacdo 23 755 (SCCB em hexa), se nenhum microdri- Ye estiver conectado. ‘A drea das varidveis armazena os valores das varidveis que estéo sendo utilizadas no programa BASIC em cur- so. Comega na locacio apontada por VARS, armazenado nas locagdes 23 627 €23 628 (SCAB e SCAC em hexa) da drea das varidveis do sistema. Quando um programa é rodado, o in{cio da drea das vvaridveis permanece onde esta, mas 0fi- nial vai crescendo para cima, & medida que novas varidveis sio definidas pelo programa em BASIC. ‘A drea de edicao & 6 local onde é fe 3 r eto | ae ow MAPA DE MEMORIA DO SINCLAIR SPECTRUM ta a edigdo das linhas BASIC. Quando ‘0 € apertado, as linhas sio opiadas para a érea do programa BA: SIC. A rea de edigao comeca na E- LINE, cujo enderego € retido nas loca- (g0es 23 641 e 23 642 (5C59 € SCSA em hexa) na drea das variaveis do sistema. espaco de trabalho serve para ta- refas gerais, como a armazenagem dos dados de entrada a concatenacao de strings. © WORKSP é armazenado em 23 649 e 23 650 (SC61 e SC62 em hexa) na dea das varidveis do sistema. A pilha de célculo & wilizada para re- ter niimeros em ponto flutuante, mime- ros inteiros de cinco bytes ¢ 0 conjunto de parimetros de cinco bytes. Comeca em STKBOT, cujo endereco ocupa as Tocagdes 23 651 ¢ 23 652 (SC63 e 5C64 em hexa), e termina em STKEND, que € encontrado em 23 653 e 23 654 (5C65 © 5C66 em, hexa). A drea de meméria de reserva perm- te que as areas da meméria situadas aci- mae abaixo dela crescam até que STKEND encontre o indicador de pilha, Acima dos bytes sobressalentes esté a pilha da mdquina, empregada pela UCP quando um programa BASIC é ro- dado. ‘A pitha de sub-rotinas (GOSUB) ar- mazena os ntimeros de linha para os quais um programa deve retornar quan- do completar cada sub-rotina chamada. ponteiro RAMTOP indica o final da memoria RAM disponivel para 0 ar- mazenamento de programas, Seu ende- reco é retido em 23 730 ¢ 23 731 (SCB4.eSCBS em hexa) na rea, das varidveis. ‘Acima de RAMTOP. hd 168 locagoes de me- méria que podem usadas para armaze- nar 21 representagdes ou padres graficos de- finidos pelo usué- ‘Tio, Entre- tanto, 0 topo da RAM ¢ armazenado em uma varidvel do sistema e pode ser deslo- cado para uma posicdo mais abaixo na meméria, usando-se 0 espaco de reserva para as pilhas de sub-rotina e de maqui- na, Isto pode ser feito através de progra- ‘magdo em cédigo de maquina. Normal- mente, um programa em cédigo de mi- quina fica acima do RAMTOP abaixado. O apontador P-RAMT assinala 0 /0- ‘po fisico da meméria RAM; isto 6 aci- ma desse ponto nao existem mais locagdes dda memeria nos chips do Spectrum. O P- RAMT ¢ uma varidvel do sistema, com ‘enderego armazenado nas locagdes 23 732 ¢ 23 733 (SCBS € SCB6 em hea). Para verificar 0 valor de P-RAMT li- ‘gue a maquina e entre essa linha: PRINT PEEK 23732+256*PEEK 23733 Isto retornaré 0 valor 65535 no Spectrum de 48K, ou o valor 32767 no modelo de 16K. Se nenhum destes va- lores for retornado pela linha, entdo al- guma coisa esta errada com o seu com- putador. Pode-se examinar o contedido dos outros apontadores na area de va- ridveis do sistema, utilizando a mesma nha PRINT, apenas substituindo os falores correspondentes as duas loca- ges de meméria da variéve. ‘A palavra-chave PEEK em BASIC “olha” os contetidos dos bytes da memé- ria € retorna o equivalente decimal do mii- ‘mero que encontrar, O endereco tem 0 comprimento de dois bytes (requer duas locagdes da meméria para ser armazena- do). Spectrum divide oen- dereco hexa de quatro digitos — por exemplo, ‘0 enderago normal FFS7 de RAMTOP = em dias partes de F ¢ 57. O byte mais baixo, $7, vai dentro do menor, ¢ 0 byte mais alto, FF vil no endereeo maior. ‘sto explica por que & segunda das

You might also like