You are on page 1of 24
da OT fl cal Ha ecco PRATICO pa 5 | Maer Ue OM Ace aE Ue) 13) aad: || MT - CODIGO DE PROGRAMACAO DE JOGOS wot Lye == == = S = z === a=2 z= == = = vat NES NESTE NUMERO ORGANIZE AS SUAS COLEGOES (2) Como pesquisar, modificar, apagar e imprimir um registro. 81 PROGRAME JOGOS A CORES Como acrescentar cores aos desenhos em com- putadores compativeis com o TRS-Color. Apren- da a explorar os comandos PMODE 86 COMO ENTRAR CODIGO DE MAQUINA Trabalhe com cédigo de maquina, usando um pro- grama em BASIC e a instrucdo POKE. O que so para que servem os monitores. 88 O QUE SAO VARIAVEIS Como trabalhar com variaveis, O que ¢ um cor- do. Como os cordées vazios sdo empregados na PLANO DA OBRA “INPUT” é uma obra editada em fasciculos semanais, ¢ cada conjunto de 1S fasciculos compe um volume. A capa paraenca- dernagdo de cada volume estaré a venda oportunamente. COMPLETE SUA COLECAO, Exemplaresatrasados, até seismeses aps oencerramento da colo, poderio sercomprados aprgosalualizados da segunte forma: I. Pssoalmente — por meio de seu Jornaleio ou diigindo se aodsribuidor loca, cujoendereso Bo- eraser faciimenteconseguido junto a qualaver joraleiro de sua cidade. Em ‘Sic Paulo osendeeyos so: Rua Brigaero Tobias 773 (Cento; Av Industrial, 19 Santo Andréjre no Riode Jane Rua da Passager, 93 (Botafogo) 2 Por carta Poderso ser solicados exemparesatrasades tambo por carta, que deve Serenviada para DINAP— Distibuidor Nacional de PublicagOes ~ Numeres ‘Atrasados — Estrada Veh de Osasco, 132 (ard Tereza) ~ CEP 06000 (sasco— Sto Paulo 3 Pr ielex — Utlize on® (01) 33670 ABSA. Em Por aos pedis deve ser eto 1 istribuldra Jardim de Publicagdes Led. — (Gra, Pau Vari, Azinhagade Fetais~ 2688, amarate-— Lisboa: Tel 257-2542 <"apartado $7 ~ Teen 43 069 JARLIS P. ‘Naoenviepagamentoanecpado,Oatendimento ea feito pelo reemboso postal -opagamenta incluindo as despesas posts, deverd ser efetuado a0 se retirar ‘Lencomendana Aginciado Correia, Ateneo Apossels meses doeneeramnento ‘a colee, os pedidos seraoatendidos, dependendo da disponiblidade dees: ‘oque.Obe: Quando pear lvros menconesempreo titulo e/ou oautordaobra, alem do almero da edicao COLABORE CONOSCO Encaminhe seus comentarios, criticas, sugestdes ou reclamagdes a0 Servigo de Atendimento ao Leitor — Caixa Postal 9442, programaco de jogos 96 Sao Paulo — SP. ator eToR ews Repacio Diretor tra a ange Edtor cee ale Ara dtr dtera Clio AV. Cavan tre rte ts area (Chet de Areata ‘Asatents de Arte An Olivia Lips iva Sts, ‘esarade ive. Gace A Ards, ona lenaren Cora of Stein Crem Secret ‘Sterelilow de Redken agin. Joc Bezedic river Danita Nr de Loure Cava Mara Ses {e Ana Nau de Querz Secret Graf Ant Fie cousoenoonss Saar Ren: ot ME Sts (eras ct ae Boma (inde al Caeut co ie AAQUST heels “ade itr ro der Maia Siete regi: Also | ores fares argo oes aed ore Corcoran ‘et tie nga ua COMERCIAL Dirtor Comercio Maria Siere Gerete Comer Perc Naan Gere ge Cela Dense Mara oo Preparador Tent Coordenador: Ei Sea Cha de Tete: As Mara iri Ani Frtela de sve Karna Ap Gee Lee ein. Mira rea Caz Ploeg Mecrore Nevior Coordaedor sc Harade ss Revlaora Cones hye abr! abel Let de Gimargn Liga pres Reta Marl oC Leme Mone Mara aa Ses ara Teresa ars Laps © Marshal Cavendish Limited, 1984/85. Editora Nova Cultura LidaSto Paul, Brasil, 1986, Fdigad organizada pela Eitora Nova Cu ida (Artigo 15 da Let 988, de 14/12/1973) Esta obra fot composta na AM Produces Grafieas Lida, e impress na Disa Griica da Editora Abr. 3 APLICAGOES 3 ORGANIZEAS SUAS SSS) MPRIMA O ARQUIVO COLEQOES(2) Fommtaee Encontrar o nome e 0 endereco de uma pessoa da qual se sabe apenas 0 sobrenome e a cidade em que reside 6 tarefa simples para o computador. Mas, para isso, é preciso programé-lo com as informagdes adequadas. Uma das grandes vantagens do arqui vamento no computador, em compara. g4o com métodos mais tradicionais (co: mo um fichdrio, por exemplo), € a faci lidade e rapidez com que se pode encon: trar as informagées arquivadas © programa da li¢ao anterior da sé rie Aplicagées fornecia os meios para se implementar um sistema altamente fle xivel de arquivamento no computador Neste artigo mostramos como se pode pesquisar arquivos, tendo em vista ob- jetivos como a corregdo de registros de- satualizados ou incorretos, ou a anula Gao de registros desnecessarios Pans A opgio de a de nimero 4/no menu principal. Ela permite que voc’ pesquise os registros a partir da in formagdo contida em um campo. Se vocé pressionar a tecla 4, 0 com: putador mostrard, no alto da tela, os no- mes dos campos que vocé definiu ante riormente para o arquivo; em seguida, ele perguntard qual campo voc€ quer pesquisar — 1 para o primeiro, 2 para © segundo, 3 para o terceiro © assim por diante, contando a partir do alto da tela. A pergunta seguinte seré sobre © que vocé quer pesquisar nesse cam po. Em resposta, voce deve digitar a palavra ou 0 niimero que quer procu: rar: JOAQ ou CAGAROLA, por exem: plo, ou BIBLIA, ou seja ld 0 que for Em seguida pressione < RETURN > ou A palavra ou o nimero que voct di gitar deve ser exatamente igual ao que esta escrito no campo, Se uma palavra foi armazenada com letras maiisculas nos registros e voc’ estiver procurando-a com letras minuisculas, 0 computador nao ira encontrd-la. Se vocé tiver deixa esquisa MU do, por engano, um espaco antes da en- trada em um registro, ou apertar 0 ¢s- pacejador apés a entrada, provavelmen- te 0 computador ndo ird encontré-la. Is- So ocorre mesmo que a palavra do re- gistro ¢ a que voct estd procurando se- jam iguais. Assim, evite espacos desnecessdrios © procure entrar informagdes em letras maitisculas. A pesquisa se tornara mais facil e menos sujeita a erros. Caso 0 computador nao consiga achar nenhum registro com a palavra ue voc pediu, no campo pesquisado, ele Ihe dird isso e trard de volta o menu Principal. Se, ao contrario, forem en contradas diversas respostas, ele coloca: r4 na tela o primeiro registro que tiver a informaco pedida e, a partir dai, lis tard em ordem alfabética todos aquieles com informagao igual. ‘Voce deve entao selecionar uma das ‘opedes colocadas nas duas linhas abai xo da tela. A primeira & assim: PROSSEGUE RETORNA MENU Isso funciona mais ou menos da mes- ma maneira que no programa do artigo anterior. A tecla P serve para pesquisar (0 registros selecionados em ordem cres- cente, ao passo que a tecla Mo leva di- retamente de volta ao menu principal. Mas ndo aconteceré nada se vo sionar a tecla P quando estiv. mo registro selecionado, A tecla R, na primeira modalidade de pesquisa, for- ece uma _mensagem: “REGISTRO NAO ENCONTRADO? Talvez.a aplicacdo mais util da opgao de pesquisa seja descobrir um determi- nado registro. Para localizé-lo, basta lembrar-se de qualquer informagao so. bre ele. Por exemplo, suponhamos que voct esteja utilizando esse arquivo para armazenar nomes, enderecos e mimeros de telefones dos membros de seu clube © jd possua os seguintes campos: nome, sobrenome, rua, cidade, Estado,cédige postal, niimero do telefone. Neste caso, voc# poderd pesquisar um determinado registro até mesmo se lembrar apenas do sobrenome da pessoa. E se uma parte da inform: vot se lembrou ni registro? A solucdo € simples: por exem- plo, se vocé procura o registro de uma Pessoa, sabendo apenas que ela mora na cidade de Sao Paulo, ou que o seu pri meiro nome é Joao, poder evocar to dos os paulistanos ou todos os indivi- duos de nome Joao ¢ salté-los até encon- trar o nome correto. Mesmo que o nii- mero de nomes fosse muito grande, ¢ sa procura seria mais facil do que se ti vesse que percorrer todo 0 arquivo, re- visando um registro de cada ver Cran A segunda linha de opedes da parte inferior da tela permite outras opgdes de trabalho com 0 registro exibido: CORRIGE APAGA —_IMPRIME Se vocé quiser modificar um registro mostrado na tela, deve pressionar a te- la C. O computador perguntar: “QUAL O NUMERO DO CAMPO’ que vocé deseja modificar. Digite o mi- mero, contando a partir do alto. Em seguida, 0 computador pediré pe ra “ENTRAR A MODIFICACAO®, Vo Gé deve entdo digitar 0 novo campo que quer entrar, até mesmo se quiser modi ficar apenas uma letra. Quando as teclas ou forem pressionadas, 0 computador efetuard a modificagao no lugar correto do regis tro. Se vocé quiser, podera pressionar mais uma vez a tecla C e modificar ou tro campo no mesmo registro. Se voce quiser modificar um registro que nao es- tina tela, deve pressionar C para retor- nar ao menu principal c escolher a opeio de pesquisa 3, para localizar o registro que deseja alterar. Outra saida seria es- colher a ops 2, “VER OS REGIS- TROS", achando-o e modificando-o. API Te INCORRETOS Voct deve primeiro localizar o regis- tro que deseja apagar, estudando as al- ternativas. Normalmente, sdo apresenta- das, no lado inferior da tela, seis opodes padrdo. Para apagar um registro é neces- sario pressionar a tecla A. Entag o com- putador perguntaré: “VOCE TEM CERTEZA?”” Isso evita que vocé apa- gue, por engano, um registro cbrreto. Se-vocé tem certeza de que quer apa- géclo, pressione a tecla S. O computa- dor apagard entdo esse registro ¢ exibi 140 proximo — tanto o registro anota- do segundo uma ordem alfabética, se yoo? estiver na modalidade de exibigao, quanto 0 que possui o mesmo campo que vocé esté pesquisando, se estiver na modalidade de pesquisa. Se voce apagou o iiltimo registro en- contrado na pesquisa, o computador in- formara que ndo existem mais tegistros com tal item no campo que o interessa trard o menu principal de volta. Te A iiltima opedo na parte inferior da tela permite mandar para a impressora (caso haja uma) os registros do arqui- vo. Se voc’ pressionar a tecla I na ver- sto do programa para 0 TRS-Color, 0 ‘computador Ihe pedira para "CHECAR A IMPRESSORA”. Nesse ponto, é ne- cessdrio averiguar se a impressora esté conectada ¢ ligada; se essa condigao for satisfeita e mesmo assim a impressora ndo funcionar, vocé deverd verificar 0 programa, ‘No Spectrum essa linha de mensagem nao é necesséria, pois ele nao reagira a tecla I se ndo houver nenhuma impres- sora conectada Uma vez que vocé j4 checou se a im- pressora est conectada e ligada, acione a tecla C para continuar. Pressionando algumas outras letras, a linha “CHE- QUE A IMPRESSORA” desaparecera ¢ vocé poderd novamente'utilizar uma das seis opgdes padrio, localizadas no lado inferior da tela. Caso C seja pressiona- da sem que haja uma impressora conec- tada, ou esta ndo funcione por qualquer razdo, voce deve pressionar as teclas (no TRS-Color ¢ Apple), ou (no MSX), ¢ verificar 0 programa. Para continuar a utilizar 0 programa sem perder os dados armazenados, digite de modo direto: oro 30 Retormando ao menu principal (uma ‘observapao importantissima: nao tente ‘modificar qualquer linha do programa an- tes de dar 0 comando acima, caso con- trdrio perderd todos os dados jé armaze- nados na meméria RAM da maquina). Se coy Agora voce possui um sistema de ar- quivamento altamente flexivel e comple- to, que pode ser utilizado para armaze- nar detalhadamente qualquer tipo de in formacao. Evidentemente, Vocé pode utilizar o programa para armazenar, em uma tnica fita cassete, um fichério ‘enorme ou varios ficharios. Fitas muito longas, contudo, apre- sentam inconvenientes. Uma solugao mais prética consiste em armazenar di ferentes arquivos em varias fitas, de mo- do.a torné-los mais facilmente localiza- veis. Neste caso, ¢ necessdrio guardar 0 proprio programa em uma fita separa- da (somente os micros da linha Spe trum esto dispensados dessa precau- 40). Voce poderd, assim, carregar os dados antes de selecionar'a opgao 6. A primeira vista, isso pode parecer um grande desperdicio de mimero de acessos. Essa impressdo, contudo, dei- xa de ter sentido quando pensamos no espaco ocupado pelos arquivos dos an- tigos cartes de indexacao. POUR) A seguir, listamos a segunda segio do programa de arquivamento de dados que, para sua felicidade, € muito mais curta do que a primeira Quando acrescenté-la ao programa existente, vocé notar que poucos niime- ros de linhas estao duplicados. Nao es- quente a cabega com isso. Os nimeros da primeira seco estavam ali simples- mente para manter o programa intacto € permitir o seu teste. Os novos nuime- +08 substituirdo os antigos assim que vo- cé digité-los. Atenglo se vocé for utilizar o pro~ grama abaixo em micros com disque- te. Mude 0 numero 11000 do comando CLEAR, no comego do programa, pa- ra 8000, sob pena de ndo haver espaco suficiente na meméria. 3000. GosuB 8500 3010 PRINT @417,"MODIFICAR QUAL CAMPO? (1_AN:A:") 27: 3020 INS=INKEYS:IF INS="" THEN 3020 3030 J-vaL (INS) 3040 IF J<1 OR J>A THEN 3020 3050 PRINT e448,°" 3060 PRINT €45+32*J,77:PRINT @4 17,"DIGITE 0 CAMPO MODIFICADO * ELINE INPUT AS(D,J) 3070 AS (D,J) =LEFTS (AS (D,J) .A(J) ) 3080 TF 3090 TF 3100 IF I= 3110 IF =1 3120 IF EN 3180 3130 IF 3140 IF 3180 3150 FOR Nel TO A:X$~AS(D.N) :AS (D,N) aS (D-1,N) AS (D-1,N) =X3:NE XT{D=D-1:G0TO 3080 3160 IF AS (D,1)<*A$(D+1,1) THEN 3180 3170 FOR Nel TO A:X$#AS(D,N) :AS (D.N) =AS (D#1,N) 24S (D+1,N) =XS:NE XP:D=Dt1:GoTO 3080 3180 FOR F=1 TO 300:NEXT: RETURN 4000 GeD 4010 Gosus 8500 4020 PRINT 449, "VOCE TEM CERTE 2A QUE QUER APAGAR?” 4030 INS@INKEYS:IF INS="" THEN 4030 4040 IF INS<>"S" THEN RETURN 4050 IF GeNR THEN GeG-1 4060 CLS 7:PRINT €236,“APAGANDO 7; :S0UND_30,1 4070 IF D=NR THEN 4090 4080 FOR N=1 TO A:AS(D,N)=AS (D+ 1,N) :NEXT:D=D+1:GOTO 4070 4090 FOR N=1 TO A:AS(D,N)="":NE XT:NR=NR-1:D*G 4100 FOR F=1 TO 5000 FOR N=1 TO N.W.NS (N) :NEXT 5010 PRINT €417,"QUE CAMPO PROC URAR (LATIA;") 27; 5020 INS=INKEYS: IF INS="" THEN 5020 5030 IF VAL(INS)<1 OR VAL(INS)> A THEN 5020 5040 SOUND 30,1:2-VAL(INS) : PRIN 7 @417,“PROCURAR PELO QUE (NO C D*R THEN J=-1:GOTO 3130 Del THEN J-1:GOTO 3120 AS (D,1)>AS(D+1,1) THEN AS (D,1)=A3(D-1,1) THEN 400: NEXT: RETURN ALPRINT €33432% MPO" 2:7) 7" 5050 LINE INPUT 23 5060 D=1:G=0:CH=1 5070 IF D>NR AND G=1 THEN G=0:C He-1 ELSE IF D>NR THEN 5230 5080 IF D2$ THEN DeD+cH :G0TO 5070 5100 LD=D:G=1:cosuB 8500 5110 PRINT €451,"DROSSEGUE RTORNA mENU CORRIGE —aPA GA AMPRIME 5120 INS=INKEYS:IF INS="" THEN 5120 5130 INeINSTR(1,ROS,INS) 5140 ON IN GOTO’ 5160,5160,5170, 5180,5190,5200,5210 5150'Go70' 5120 $160 CH#1:DeD+1:48+A THEN GOTO 4 030 4040 SOUND .1,10: LET ZeVAL YS: PRINT ""PROCURAR PELO QUE NOC AMPO":2:"7": DIM 28(V.A(Z)): NPUT LINE z8(¥) 4044 CLS: LET Kev 4045 IF AS(K,B(Z)4V TO B(Z+U))= Z8(¥) THEN GoTO 4050 4046 IF K=R OR AS(K,V)=" THEN CLS: PRINT AT 9,3;"NENHUM RE GISTRO.COM ";2$(V);*TAB_10; "NO CAMPO ":2: PAUSE 150: RETURN 4047 LET Kek+V: GOTO 4045 4050 LET D-V: LET PM-U: LET Mo= v 4060 IF D>R THEN LET D-PH 4070 IF DeU THEN LET D-PH 4080 IF AS(D,V)=" " THEN LET D -PH 4090 IF _ag(D,B(z)+V To B(z+0))< >28(V) THEN "LET DeD+w0; GOTO 4 060 4100 cosus 9500 4110 Let pH=D 120 IF oP-V THEN T DeD+Mo: GOTO 4060 4130 IF OP=2 THEN LET Mo ET D=D+Mo: GOTO 4060 4140 TF OP=3 THEN. RETURN 4150 IF OP-4 THEN GosUB 8000 4160 IF OP-5 THEN LET DFeU: LE T MD-2: GOSUB 9000: IF DF-0 oR Timi conve 9000, 18 B 4170 Goto 4100 8000 INPUT AT U,U;"CAMPO A SER LET Mo*U: LE vik CORRIGIDO(1 A ":(A);")2";J: IF >A THEN GoTo 8000 8010 PRINT FLASH V:aT v+2"d,12 MY :as(p,B(9)+v To B(s+w)): INPUT 3 APLICAGOES «3 AT U,U;"Digite o campo modifics 40", LINE AS(D,B(3)+V TO B(J40) De PRINT AT U+2"J,12zA8 (D,B(J)+ v-t0 BC+V)) 8020 IF D-R THEN LET J=-V: GOT © 8070 8030 IF De THEN LET J*V: GoTo 8060 8040 TF AS(D)>AS(D4V) THEN LET Jv 8050 IF AS(D)=AS(D-V) THEN CO 70 8500 8090 LET xS-As(D) (D-W): LET AS (D-U) -KS. Ys Goro 8020 8100 IF AS(D)<=Ag(D+V) THEN co 70.8500 8110 LET x$-aS(D) : LET AS(D) aS (HY): LET AS (D+) “KS: LET D-Dt ¥: Goto 8020 8500 SOUND .1,10: PRINT AT U,U; "Registro numero ":D;" 7: RET URN 9000 PRINT AT 19,U; "TEM CERTEZA DE QUE QUER APAGAR?": PAUSE U 9010 IF INKEYS="" THEN GOTO 90 10 9020 IF INKEYS<>"S" THEN aT 19,U;" LET AS (D) =A ten D=D- PRINT ": SOUND .1,10: RETU 9030 PRINT AT 19.U:" APAGANDO 9035 LET pp=D 9040 IF DeR THEN LET DD-DD-v Goro 9060 9050 IF AS(D+V.¥)<>" * THEN Li TAS(D)*AS(D40} ; LET DeD+V: GOT © 9040 9060 LET AS(D)="": FOR F=V TO 1 00: NEXT F: PRINT AT 19,U:" 9070 LET DepD: IF aS(V,v)=" " T WEN CET D-U: RETURN 9072 IF DeU THEN LET p=v 9075 IF AS(D,U)=" " THEN LET D =D-v 9080 IF MDsU THEN RETURN 9090 LET K-v 9100 IF AS(K,B(z)+V TO B(2+¥))= 2$(0) THEN GOTO 9130 9110 IF KeR OR AS(K,¥)=" " THEN LET De=0: Go70 4046 9120 LET K-K+V: GOTO 9100 9130 LET DD=D: LET PAV 9140 IF AS(0D,v)=" * OR DD-U TH EN LET PA=2: LET DDD: LET MO Mo-v 9150 IF AS(DD.B(z)+ To B(z+v)) =28(v) THEN LET D-DD: RETURN 9160 LET DD-DD+Mo: GoTo 9140 3000 cosunesoo 3010 LOCATE, 22:PRINT"Modificar ‘qual campo?’ (1 até ":A:")": 3020 INB-INKEYS : TPINS~"*THEN3OZ ° 3030 J=vaL (INS) 3040 TPI<1ORJ>ATHEN3020 3060 LOCATED, 22: PRINTSPACES (39) LOCATEO,22:PRINT"Entre com 0 Campo modificado: ";:LINEINPUTA 300.3) 3070 AS(D, J) =LEFTS(AS(D,J) ,A(3) ) 3080 IFD-RTHENJ~~1:G0TO3130 3090 IPD=1THENJ=1 :G0T03120 3100 IFAS(D, 1) >Ag (D+1, 1) THENJ=1 3110 IFAS (D,1)=A$ (D-1, 1) THENL 3150 FORN=1TOA: SWAPAS (D.N) .AS(D tN) NEXT :D=D-1:GOTO3080 60 IFAS (D,1)<=AS(D+1, 1) THENSL 80 3170 FORN=1TOA: SUAPAS(D,N) .AS(D SL iN) :NEXT: D=D+1 ;G0703080 3180 FORF=170300:NEXT: RETURN 4000 G=D 4010 GosuBesoo 4020 LOCATEO, 22: PRINT"Voc® cont 4030 a delecto? (5/N)" INS*INKEYS : TFINS=""THENAO3 o 4040 IFINS<>"S"THENRETURN 4050 IFG-NRTHENG-G-1 4060 CLS:LOCATE12, 15: PRINTCHRS ( 7) :"Apagando" :CHRS (7) : 4070 TFD-NRTHEN4090 4080 FORN=1TOA:A3 (D,N) =A$(D+1.N ) :NEXT:D=D+1 :cOTO4070 4090: FORN=1TOA:AS (D,N) =" NReNR=1:D-G 4100 FORF=1T0400:NEXT; RETURN 5000 FORN=1T0A:LOCATES, 2*N¢2:PR INTN,NS(N) :NEXT 5010 LOCATEO, 22: PRINT”Procurar por qual campo? (1 até ";A;")" 5020 INS*INKEYS: IFINS=""THENSO2 ° 5030 TFUAL (INS) CLORVAL (INS) >ATH EN5020 5040. PRINTCHRS (7) ; :Z=VAL (INS) :L OCATEO,22:PRINT"Procurar o que Ro campo. "32:72"; SPACES (8) 5050 LINEINPUTZS. 5060 D=1:G=0:cH=1 5070 IFDSNRANDG=1THENG~0:CH=-1E LSEIFD>NRYENS230 5080 IFD<1ANDG=1THENG=0:CH=1ELS EXT EIFD<1THENS230 5090 IFAS(D, Z)<>ZSTHEND=D+CH: 00 705070 5100 LD=D:G-1:GosuBaso0 5110 LOCATE, 22:PRINT"(P ]rosseg Ue [RJetorna (MJenu [Clo rice (Alpaga —[TJmprime” 5120 INS@INKEYS: IPINS=""THENS12 0 5130 INCINSTR (1, RS, INS) 5140 ONTNGOTOS160,5160,5170,518 0,5190,5200, 5210 5150 GoTOs120 5160 CH-1:D-D+1:G0705070 5170 CHe~1:D=D-1:60705070 5180 RETURN 5190 GOsUB3000:GoT0s090 5200 GosuB4000:0705090 5210 GosuB10000 :0705070 5220 GoT05110 5230 CLS:LOCATEO,15:PRINT"N&o € Reontrei ";28;" em ":NS(2) 5250 FORF~170500:NEXT: RETURN Gosus 6500 ~ 958: 3000 3010 POKE 34,22 UTAB 23: CALL PRI NT. "NUMERO DO CAMPO A SER MODIF ICADO =>";: GET CPS 3020. IF CPS < "0" OR CPS > "8" THEN 3010 3030 cP = VAL (cPS): IF CP = 0 ‘THEN POKE 34,0: RETURN 3040 VTAB 23:/HTAB 1: CALL ~ 958 3050. PRINT “CAMPO CORRIGIDO => "y2 INPUT AS(D,CP) 3060 AS(D,CP) = LEFTs ).aCcP)) 3070 IF CP < > 1 THEN 3000 3080 IF AS(D.1) > AS(D + 1.2) (as (D,cP AND D <> NR'THEN V = 1: GOTO 3200 . 3090 IF Ag(D.1) < as(D - 1,1) AND D> 0 THEN Y= - 1: GoTo 3 200 3100 coro 3000 3200 FOR N= 1 TO A:XS = AS(D, N) :a8(D,N) V.N) = XS: NEXT :D =D +V 70" 3080 4000 GOSUB 6500: VTAB 23 4010 PRINT "CONFIRMA A’ DELECAO 7": GET INS 4020 IF INS < URN 4030 4040 4050 = AS(D + VN) :ag(D + 0 > "s" THEN RET IF D = NR THEN 4060 FOR X = D TO NR FOR Y = 1 70 A:ag(x,¥) = AG(K + L,Y): NEXT : NEXT 4060 NR * NR - 1:D = NR: 0 THEN POP : RETURN 4070. RETURN 5000 DD = 1 TO A: PRINT : HTAB 10 <75NS(X) : NEXT 5010 UTAB 21: PRINT POR QUAL CAMPO? ";: GET CPS 5020 CO = VAL (CPS): IF CO >A ‘OR CO <1 THEN RETURN 5025. PRINT CO 5030 TAB 22: HTAB 1: PRINT ROCURAR 0 QUE EM 7;NS (CO); UT PRS 5035 5040 IF Ds FOR X= 1 PRINT X: PRINT *PROCURAR “P INP IF PRS = HTAB 13 "* THEN RETURN PRINT “PROCURAND Ore 5050 FOR Xx = DD TO NR: IF LE PTS. (AS(XX,CO), LEN (PRS)) = PR $ THEN FL = 1:D = XX: GOSUB 602 ®: GoTo 5200, 5060 NEXT 5070 IF FL = 0 THEN TAB 21 RTAB 1: CALL - 958: PRINT "NAO ENCONTREI ";PRS;" EM_":NS (CO) FOR X ~ 1 70 5000: NEXT : GOTO 5090 5080 VTAB 21: HTAB 1: CALL - 958: HTAB 8: PRINT "FIM DE ARQU IO ENCONTRADO": FOR X = 1 70 5 000: NEXT 5090 FL = 0:PRS = "": RETURN 5200 If XX = NR THEN 5090 5210 TAB 15: PRINT "cONTINUO PROCURANDO ";PRS: PRINT " EM NS(CO);"?_ (S/N) "GET INS 5220 IF INS = "N" THEN 5090 5230 IF ING = "S" THEN DD = XX +1: GoTo 5050 5240 GoTo 5210 8 PROGRAME JOGOS ACORES ‘O TRS-Color (¢ seus compativeis na- cionais, como 0 CP-400) possui cinco modalidades para elaboracao de grafi- 0s de alta resolugdo (PMODE), nume rados de 0 a 4. Eles diferem na resolu. 0, no grau de detalhe e nas cores dos desenho exibidos, PMODE ¢ uma ins trugdo BASIC, especifica para esses mi: . cros, significa picture modes (modali dades graficas). Ela estabelece o conjun. to de cores a ser empregado. Na moda- lidade de quatro cores — PMODE 1 ou. 3 —, 0 conjunto 0 consiste de verde, amarelo, azul e vermelho, enquanto 6 conjunto 1 de cores é formado por bran- 60, azul-piseina (ciano),magenta eTaran ja. Para o conjunto 0 de cores, digite 0 comando SCREEN 1,0; para o conjun- to 1, recorra a SCREEN 1, A diferenga entre PMODI DE 3 se encontra na resolucdo da tela agrafica que eles utiliza. Resoluedo gré fica é 0 niimero de pixels (picture ele- ‘meniou elementode figura) que podem ser tragados na tela e,comoonome diz, €a unidade minima de construcdo defi: guras. Ele corresponde a um bloco re. tanguiar “‘aceso""na tela, programa abaixo mostra a capaci dade de trabalho com graficos de reso. lugdo média do TRS-Coior. Do jeito que estd, ele roda apenas em méquinas com gravador cassete. Para executi-lo em uma maquina com Disk BASIC, altere 08 enderegos nos comandos POKE nas linhas 30'e $0, mudando-os de 1800 e 1801 para 3584 e 3585, respectivam ‘ ’ é ’ 2 4 10 PMODES, 1:PCLS:SCREENI i 20 FOR Ini T0 9 ‘ 30 READ A,B:POKE 1800+1"32,A:PO ke 1601+1*32,8 40 NEXT Vocé jé sabe como construir blocos gréficos em preto e branco. Aprenda ‘agora a colorir seus desenhos em micros da linha TRS-Color, empregando técnicas mais sofisticadas. $0 FOR K-10 TO 22:POKE 1800+K*3 2,192: POKE 1801+K%32, 0:NEXT 60 Go70 60 70 DATA 192,0,213,149,213,149,2 13,149, 234, 170, 234,170,213,149, 213,149,213,149 © programa desenha uma bandeira ‘eum mastro na tela, Os c6digos dos blo- ‘205 graficos que constituem 0 desenho Slo especificados em uma linha DATA; ‘© programa as Ié ¢ coloca os caracteres, sraficos correspondentes na memria de video, através do comando POKE ou PRINT @. Desta vez, para que vocé possa ver os blocos gréficos mais clara- mente, os cddigos sao colocados na pa- gina de meméria de video, a partir do enderego 1800, 0 que 0s situa no meio da tela. Isto ocorre porque a pagina gré- fica usada (PMODE 3) tem seu endere- §@ absoluto de inicio na locagao 1536. programa ndo funcionaré em mAqui- nas com BASIC de disco. A linha 10 seleciona 0 PMODE 3 (conjunto de cores 0) e limpa a tela. As Tinhas 20 a 40 leem nove pares de dados ‘que definem 0 desenho da bandeira, ¢ 05, colocam diretamente na pagina de video correspondente, através do comando POKE. O restante da bandeira € desenha- do pela linha $0, que traca 0 mastro atra- vés de dois POKE (cédigos 192 ¢ 0), repe- tidos 22 veres. A linha 60 forma um lago sem fim, cuja tinica funcao é “congelar” a tela grifica. Pressionando , ‘oo? interrompe 0 programa. ‘A principal diferenga entre a técnica que tinhamos aprendido antes e a utili zada neste programa est nos dados de definigdo da figura. Os cédigos estéio em decimal e foram convertidos a partir de ‘um niimero bindrio de oito bits. Mas, ao invés de bits individuais, que dizem 440 computador para ligar ou desligar xelsindividuais, os pares de bits estabe- Tecem agora que cor serd atribuida aos pares de pixels. No PMODE 1, um par Ge its diz ao computador para situar ois pares de pixels, um abaixo do ou- tro na tela. ‘A figura 1 mostra como a bandeira é feita de pares de pixels: ela & definida através de um conjunto de nimeros bi nrios de dois bits, correspondentes a cada um dos dois blocos de pixels. No conjunto de cores 0 vocé deve escrever 00 para um bloco de cor verde, O1 para ‘um bloco amarelo, 10 para um azule 11 para um vermelho: Quatro desses nime- 0s de dois bits compdem cada parte dos, dados de oito bits. ‘Caso tena escolhido o conjunto de cores 1, digitando SCREEN 1,1 na linha 10, voc8 tera uma bandeira desenhada em branco, ciano, magenta ¢ laranja [Nesse conjunto de cores voct escreve 00 quando quer um bloco branco opaco, O1para um azul ciano, 10 para um bloco magenta ¢ 1] para um laranja. © programa abaixo permite ver 0 feito que os cédigos grdficos em DA- TA tém sobre 5 pixels e as suas cores em cada um dos PMODE (rodar apenas nos micros com BASIC para cassete). 10 cis 20 INPUT"MODO GRAFICO(0-4) ":MO COMO UTILIZAR CONJUNTOS DE CORES DIVERSAS = ‘COMO DEFINIR CORES EM BLOCOS GRAFICOS a EXPLORE OS PMODE 30 MOMINT (HO) = itn 20 40. TNPUTNUMERO DA TELACO-1) “: st 50. St=INT (ST) :TF ST<0 OR ST>1 7 ten 40 60. INPUT *NUMERO (0-255) _":NU 90 NUSINT (NU) #TF NUCO OR NU>ZSS THEN 60 80 IF Oca THEN LE-? ELSE Leet 50 IF Mocz THEN Die? ELSE DEsl 100 TF (MO AND 1)=1 THEN SP=-2 Use spend 110 FOR K=7 70 0 STEP SP 120 FOR tsi To LE 10 FOR Sol 70 DE 140 Tr spe-1 THEN PP=1956+3245+ (Sek) #LESL: COmINT(.5¢(MU AND 2° 1972") -0070. 160 150 ppri393¢32"s+L-K:comINT(.5+ (NU AND. 32"(K-1))7/2" R-1) 160 PORE PP,113-SP#15+cO# (14-SP }ste64 170 WEXT Jt 180 PORE PP-324DE, 474K 190 PORE. pP-32*DE+1+59. 46¢x 200 IF SP=~2 THEN POKE’PP+32,12 2 (co>1) 210 pOKE PP+21,112+(CO AND 1) 220 wext 230 PhINT €402,“PRESSIONE QUAL GER TECLA PARA’ CONTINUAR 240 SCREEN 0.1-8T 250 AS@INKEYS:1F AS="* THEN 250 360 coro 10 O programa the pedira para selecio- nar uma modalidade de grafico (PMO- DE) ¢ o niimero de tela (SCREEN). A seguir, digite um mimero entre 0 ¢ 255. Aparecerdo na tela as cores ¢ os tama- nhos relativos dos pixels, com os mime- tos dos bits em cima e 0s seus equiva- lentes bindrios embaixo. fF MO4 T verde, amarelo, azul e vermelho preto e verde verde, amarelo, azul e vermelho -_preto verde COMO ENTRAR CODIGO DE MAQUINA micro responde automaticamente a comandos em BASIC. Nesta lico vocd aprenderé 2 trabalhar com cédigo dde méquina, usando um programa em BASIC e a instrucdo POKE. Embora o cédigo de maquina seja a linguagem de microprocessador, no exis- tem meios de colocé-lo diretamente na meméria de um computador pessoal. E preciso entré-o através de um outro pro- grama — 0 que na maioria dos micros, atuais significa utilizar a linguagem BA- SIC para esse programa, pois cla éa tnt a disponivel na meméria ROM da mé- quina. Além disso, nfo podemos man- dar 0 computador executar um progra- ma em cédigo de mAquina utilizando um, comando nesse cddigo: € preciso utilizar também uma instrugdo em BASIC. Existem programas especiais para quem deseja programar diretamente em linguagem de maquina (ou seja, utilizan- do cédigos em hexadecimal). Esses pro- gramas so chamados de monitores € permitem, entre outras coisas, entrar um programa em hexadecimal na meméria da maquina, executé-lo, listé-lo na tela ou na impressora, corrigi-lo, etc. Os micros da linha TRS-80, comr tiveis com as méquinas de Radio Shacn americands, modelos III ¢ IV,tém um monitor disponivel na meméria. Esse monitor permite o trabalho direto com cédigos hexadecimais ¢ bastante com- pleto. J4 os micros compativeis com 0 Modelo I do TRS-80 néo dispoem des- se recurso, necessitando de um progra- ma elaborado em BASIC, especial ou disponivel comercialmente (#15) ‘Os micros das linhas Apple 11+, He llc, bem como 0 Microdigital TK-2000, ‘em todas as suas versdes, tém um pro- ‘grama monitor embutido, para trabalho 0 com hexadecimais, O modelo ‘TK-2000 conta ainda com uma vantagem adicional: um miini-Assembler disponi na ROM do equipamento, que permite a programacdo com cédigos mneméni- 0s € que pode ser invocado diretamente do BASIC, pelo comando MA. Essas maquinas no oferecem moni tores ou montadores embutidos na ROM. Precisam, portanto, de progra- ‘mas externos, que devem ser carregados previamente na memoria RAM, para o trabalho direto com a linguagem de mé- quina (cédigos hexadecimais). © instrumento basico para entrar uma rotina de maquina ¢ 0 comando POKE. Ele serve para colocar os cédi- ‘g0s de maquina, byte por byte, na me- méria do computador, usando’ endere- ¢0s absolutos (isto &, 6 mimero real da locagdo de meméria, em vez de um no- me simbolico de varidvel, como 0 As- sembler € 0 BASIC fazer). Nos micros compativeis com Sinclair ‘Spectrum, ZX-81, e TRS-80 Modelo I (BASIC Nivel II, da verso cassete), vo- @ ndo pode usar um hexadecimal com ‘©comando POKE, apenas um nimero decimal. Assim, os hexadecimais de sua rotina de eddigo de maquina devem ser convertidos para decimais, antes de se- fem entrados. J 0 TRS-Color, 0s TRS-80 Mod. il e 1V (com 0 Disk BA- SIC), 0 MSX ¢ 0 Apple II aceitam he- xadecimais no POKE. Cerny Antes de entrar um programa em cé- digo de maquina, voce deve decidir on- de ird coloca-to na meméria. Obviamen- te, ndo.se deve p6-lo em uma drea de meméria utilizada pelo micro, sendo 0 seu programa sera destruido quando al- gum outro na meméria ROM entrar em cdo, ou o computador deixara de fun- cionar corretamente, pois terd algum da- do alterado pelo seu programa. ‘Voce também precisa ser cuidadoso quando utilizar as dreas de meméria RAM normalmente reservadas pelo in- terpretador BASIC (essas areas sio des- ctitas no manual de operacdo ou progra- magdo de seu micro). Como a rotina de COMO ENCONTRAR UM LUGAR PARA 0 CODIGO DE MAQUINA a PROGRAMA MONITOR SAIBA USAR O MONITOR RODE UM PROGRAMA e6digo de maquina pode ser chamada de tum programa em BASIC, se um eédigo de maquina for gravado nessa are quanto o programa em BASIC estiver sendo rodado, ocorrerdo falhas de ope- raglo, perdas de programa, ou até 0 “congelamento"” da maquina, Vocé pode utilizar areas de meméria intermediéria, como o buffer da inter- face para o gravador cassete ou para a impressora, se 0 programa for curto, ¢ desde que yoo? ndo esteja utilizando es- 53 periféricos. Se voc® olhar 0 manual de programacdo do seu computador, ve- 14 também que alguns modelos tém na meméria RAM éreas ndo usadas que podem ser empregadas para programas curtos em cédigo de maquini Nos micros compativeis com o Sinclair Spectrum, como o Microdigital TK-90X, ‘yoct pode utilizar a drea de gréficos defi- ves pelo usudrio (UDG) — entre FFS8 =, no modelo de 48 K — desde que tia no esteja sendo utlizada. pelo seu programa. Mas, normalmente, programas em cédigo de maquina sio colocados en- tre a drea de gréficos UDG e o final da area BASIC, através da modificagao do enderepo do sistema, chamado RAMTOP (€ que identifica o maior endereco dispo- nivel na meméria RAM do computador), para um valor menor, Desse modo, a drea para o BASIC fi- ca diminuida, mas, como ndo|pode ul- trapassar 0 endereco armazenado na lo- cacao RAMTOP, 0 cédigo de maquina € protegido contra qualquer interferén- cia por parte do BASIC. ARAMTOP é uma varidvel de siste- ‘ma, € sua posicdo é fornecida pelo apon- tador nas locacdes de meméria SCB2 € SCB3. Para movimentar 0 RAMTOP para baixo voc8 precisa apenas colocar, ‘com 0 comando POKE, um valor mais ‘baixo nessas duas locagdes. Mas 0 Spec- ‘trum possui um outro comando BASIC: © CLEAR, que faz essencialmente a ‘mesma coisa e deve ser seguido pelo en- derego decimal do lugar para o qual vo- € quer que o RAMTOP seja rebaixado. O.comando CLEAR também limpa 0 arquivo de exibicio (ou seja, a tela), da ‘mesma forma que um CLS (e todas as va- rigveis). Além disso, ele restaura a posi- 40 do comando grafico PLOT para as coordenadas 0,0 — que definem 0 lado inferior esquerdo da tela —, restabelece 0 apontador do comando READ para o ini ‘io da lista de declaragdes DATA do pro- ‘grama, ¢ zera todos 05 RETURN ativos. Em um TK-90X com 16 K, por exemplo, ‘© comando mais usual é CLEAR 31999 1ss0 modifica o RAMTOP para 31 999 ‘ou 7CFF em hexa, deixando 600 bytes acima dele — isto 6, protegendo a area ‘que vai desde esse ponto até o final da rea de UDG (que esta em 32 600) para a colocagao de programas em. codigo de maquina, No modelo de 48 K, 0 co- ‘mando deve ser, neste exemplo: CLEAR 63999 O RAMTOP desce, de tal modo que a area do BASIC passa a terminar em 63 999, ou F999 em hexa: vocé pode, as- sim, iniciar 0 seu programa de codigo de maquina em 64 000 ou FADO em he- xa. Na maioria das aplicagdes isso dei- xard espaco suficiente para os seus pro- gramas em cédigo de maquina. ‘Com programas de cédigo de maquina mais Jongos que o usual, vocé deve abai- xaro RAMTOP ainda mais. Mas isso po- de nao ser bom na pratica: com 0 RAM- TOP to baixo, nao existe espago nem mes- mo para entrar uma linha de BASIC. No ZX-81, pode-se abaixar 0 RAM- TOP, alterando as locagdes de meméria 16 388 € 16 389 por meio de comandos POKE, de modo a criar uma area prote- ida, onde os programas de cédigo de ‘maquina nao sejam modificados. O pro- bblema ¢ que ndo.se pode armazenar em fita 0 programa que estiver nessa Area. Programas curtos em cédigo de ma- quina podem ser colocados com POKE, nna memoria intermedidria (buffer) pa- ra.a impressora, que ocupa as locagoes de meméria de 16 444 a 16 476. Existem ‘outras reas pequenas nas quais voct pode colocar seus programas em cédi- g0 de maquina, mas ndo & possivel ‘uardi-los em fita. Existem trés maneiras de se colocar ‘um programa de eédigo de maquina em uma drea BASIC, protegendo-o contra ‘outras gravacdes: pode-se entré-lo como parte de declaragdes REM; colocd-lo dentro de varidveis alfanuméricas ou corddes de caracteres; ou pode-se armazend-lo em um conjunto numérico. Para entrar um programa em cédigo de maquina como parte de uma decla- ragdio REM vocé deve calcular qual se- 14 sua extensdo (contar os bytes). Ento, na primeira linha do programa em BA- SIC, digite um REM seguido de pontos: 10 REM peepee: © mimero de pontos deve ser pelo ‘menos igual ao nimero de bytes em seu programa de eddigo de maquina. Em seguida, vocé deve colocar 0s ¢6- digos do seu programa nas locacdes de meméria ocupadas pela declaracdo REM, um byte de cada vez. Isto € feito por intermédio da declaragao POKE. Se sua REM estiver na primeira linha do programa em BASIC, a drea reservada para isso comeca na locagao de memé- ria 16 $14. Outra maneira de criar um espaco protegido dimensionar um conjunto. A linha de programa em BASIC: 10 DEH A(100) forneceré 500 locagdes livres da memé- ria na drea de variaveis. Para cada ele- mento dese conjunto, 0 ZX-81 deixa cinco locagdes livres. Se voce quiser des- cobrir onde comecar a armazenar 0 c6: digo de maquina neste caso, deverd ut lizar a funcdo PEEK, para obter 0 ¥ lor armazenado na variavel de sistema VARS, que esté localizada em 16 400 € 16 401: PRINT PEEK 164004PEEK 1640146 Isso fornece 0 enderego inicial da 4érea protegida que voc® criou (as seis lo- cages extras de memoria contém deta- thes do conjunto). Voc podera, enta usar a instrugio POKE para programa em cédigo de maquin: tir do endereco reservado. E. possivel também criar espaco em um cordao com uma linha BASIC, como: SOR ar] Saeseraeee hee pee ‘com tantos pontos quanto bytes no pro- ‘grama de cddigo de maquina. Para achar © endereco inicial, voct deve examinar 0 que tem em VARS ¢ acrescentar 6. As seis locagdes extras de meméria, neste ca- 80, contém o nome do cordao. (© problema com esses dois métodos € que a drea das varidveis é apagada quando se aperta a tecla CLEAR ou se roda 0 programa em BASIC de novo. © modo mais facil de proteger os programas de cédigo de maquina nesse ‘computador consiste em utilizar 0 co- mando CLEAR do BASIC. © CLEAR também zera todas as varidveis numéri- cas alfanumeéricas. Usualmente, ele as- sume esta forma: CLEAR 200, 30000 Ele limita 0 topo da meméria RAM (normalmente, em H7FFF ou 32 767 em decimal) em '30 000, deixando 2 767 bytes livres para os programas de cédi- 20 de maquina, Nesses mictos 0 comando CLEAR tem outra fungdo separada, e nao rela- cionada: a atribuicéo de espago de me- ‘méria para as varidveis alfanuméricas, O primeiro nimero do comando CLEAR fornece o espago de corddes que deve ser reservado para o programa em BASIC. ‘Quando a maquina é ligada, 0 compu- tador guarda 200 bytes logo abaixo do enderego maximo de meméria (RAM- TOP) paras as varidveis alfanuméricas. ‘Assim, quando voce deixar o RAMTOP ‘mais baixo, deverd reservar, abaixo de- Ie, também uma quantidade similar (200 bytes), para os cordoes. Teoricamente, voce pode baixar 0 RAMTOP do TRS-Color até quase 0 topo da area reservada para as telas grd- ficas, embora a maquina va precisar de uum minimo de espago para 0 BASIC. © PCLEAR I deixa apenas uma das paginas de gréficos; assim, voc’ usa 0 CLEAR para limitar a meméria em '§H3680 (em computadores sem disco, apenas). O PCLEAR 8 atribui as oito paginas de graficos, permitindo que se reserve memoria $6 até SH3680. Se vo- cé nao utiliza 0 comando CLEAR, 0 computador atribui quatro paginas de grdficos; assim, voce s6 poderd usar 0 CLEAR até SH1ERO. Esses limites dependem muito do que esté dentro da maquina no momento. Se existir algum tipo de programa em BA- SIC, provavelmente voce obterd uma mensagem de erro “OM” (out of me- ‘mory). Assim, para todos 08 propdsitos praticos, trabalhar préximo ao limite nao serd bom, pois vocé deverd entrar um programa BASIC em algum lugar para chamar 0 seu programa de cédigo de md: quina. Se vocé quiser iniciar seu progra- ma de cédigo de maquina com um mi ‘mero redondo como 30 000 entao digite: CLEAR 200,29999 IN Para proteger os programas de cédigo de maquina neste micro utilize 0 coman- 0 CLEAR do BASIC. Este limita a me- moria RAM méxima, reservando um e avo acima para seu programa em cédi- g0 de maquina, O CLEAR também zera as varidvels. numéricas alfanuméricas Normalmente, ele assume esta forma: CLEAR 100,4HE000 Ele limita o topo da meméria RAMem 57 34, deixando 8 192 bytes livres para os programas de cédigo de maquina. + Nestes micros 0 cot CLEAR tem uma outra funcao separada e nao relacionada: a atribuicao de espaco de meméria para as varidveis alfanuméri- cas. O primeiro nimero do comando CLEAR fornece 0 espago de cordées que deve ser reservado para 0 progra- ma em BASIC. O computador guarda ‘automaticamente 100 bytes abaixo do endereo maximo de meméria (RAM- TOP) para as varidveis alfanuméricas quando a maquina ¢ ligada, Se vocé dei- xar 9 RAMTOP artificialmente mais baixo, devera destinar também uma, quantidade similar — 100 bytes — abai- xo dele, para’os strings. Ue © programa seguinte € um monitor simples para auxilio & programacdo em linguagem de maquina. Ele permite que voot digiteeédigos demAquinanamemé- ia do computador, guarde programas de édigo de maquina em fita e examine-os nameméria. Antes deentraro programa, Eneeessirio dar ocomando CLEAR apro- priado, Feito isso, 0 programa é entrado € rodado; em seguida, o computador pe- de que voo# fornepa um endereso inicial, aque deverd ser o da memoria, acima do es- tabelecidoem CLEAR, Lembre-se de que © comando CLEAR especifica o tiltimo enderego de BASIC, € 0 seu programa de e6digode maquina deverd comesar nalo- cagdo acima dele. ‘Agora digite o monitor de codigo de méquina para o seu computador. 1o cis 20 PRINT €193,71: G0 DE MAQUINA 30 PRINT €257," RIA” 40 PRINT €321 NA FITA ” 50_ASWINKEYS:1F AS™3 * THEN GOTO 50 ENTRAR EM COD EXAMINAR MEMO GRAVAR BYTES 60 cis 70 ON YAL(AS) GOSUB 200,400,600 80 Goro 10 200 INPUT "ENDERECO INICIAL *:S a 210 LINE INPUT DS. 220 IF Dg="" THEN GoTO 210 230 IP LEFTS(D8,1)="4" TTHEN RE TURN 240 250 260 270 280 400 410 SS*LEFTS (DS, 2) POKE SA, VAL ("RA"+S8) PRINT SA, LEPTS (DS, 2) DS=MIDS (DS, 3) SA=SA+1: GOTO 220 INPUT" ENDERECO INICIAL ";SA PRINT"SAIDA PARA IMPRESSORA pissy" 420 AS@INKEYS:IF_AS="" THEN 420 430 P=O:TF_AS~"S" THEN P=-2 440°PRINT 4P, SA; 450 FOR M=0 TO 7 460 PRINT #P," *;RIGHTS(" “+HEX (PEEK (SAM) ) 2); 470 NEXT: PRINTEP 480 SA-SA+8 490 AS“INKEYS: IF AS="" THEN 490 500 IF AS=CHRS(13) THEN RETURN 510 Goro 440 600 INPUT "ENDERECOUINICIAL *;S a 610-INPUT "NUMERO DE BYTES “;N 620 LINE INPUT "NOME DO ARQUIVO ins: 630 CSAVEM NS.SA.SA*N,SA 640 RETURN 5 POKE 23658,8 10 PRINT _ INVERSE MONITOR TK 90 x " iAT 5,657 15 PRINT AT 8,1;"1; ENTRAR EM ‘CopIGO DE MAQUINA” 20 PRINT AT 10,1;"2: EXAMINAR MEMORIA” 30 PRINT AT 12,1;"3: GRAVAR P YTES EM PITA" 70 LET_AS-INKEYS: IF AS<*1" OR Ag>"3" THEN GOTO 70 80 CLS + GOSUB 100+200*(VAL A 8-1) 90 RUN 100 INPUT “ENDERECO INICIAL? * 58a 110 INPUT LINE Ds 120 IF pg="* THEN GoTo 110 125 IF DS(1)="4" THEN RETURN 127 IF LEN D$=1 THENe=GOTO 110 130 LET S8=D3(1070 2) 140 FOR N=1 TO 2 150 IF S$(N)>"9" THEN LET ss( N)=CHRS (CODE 88(N)-7) 155 IF 8$(N)>"2" OR SS(N)<"0" THEN PRINT FLASH 1;"CARACTER E INVALIDO": GOTO 110 160 NEXT N 170 POKE SA, (CODE $$(1)~48) "16 cove 83 (2) "48 180, PRINT SA,D$( 70 2) 190 LET Ds=D5(3 TO) 200 LET SA-sat1 210 GoTo 120 300 INPUT “ENDERECO INTCIAL? * $8a 310 INPUT TIMPRESSORA (S/N)? " + LINE PS 320 Ler st-2: LET st=3 330 PRINT ¢sT;: 340 FOR M0 TO 7 350 Le? Hs~ 360 LeT WS (1)=CHRS (INT (PEEK (sa¥M) /16)448) 370 LET HS(2)mcHRS (48+PEEK (S Att) =16% (CODE HS (1) ~48)) 380 FOR Nel TO 2 390 IF HS(N)>"9" THEN N)=CHRS (CODE H3(N)+7) 400 NEXT N 410 PRINT ASTHTAB 7+3*M;HS; Ip Po-"s" THEN LET HS( 420 NEXT M 440 LET SA~sA+8 445 PRINT 48° 450 LET AS@INKEYS: THEN GOTO 450 POKE 23692,0 IF AS=*" ! 460 IF AS=CHRS 13 THEN RETURN 470 goto 330 00 INPUT "ENDERECb INICIAL? * SA 510 INPUT "NUMERO DE BYTES? * N 520 INPUT "NOME DO ARQUIVO? * LINE NS $30 IF LEN NS<1 OR LEN NS>10 THEN GOTO 520 540 SAVE NSCODE SA,N 550 RETURN Antes de executar este + YO~ cé deve digitar uma linha 1 contendo um REM seguido do mimero apropriado de caracteres, de modo a receber seu pro- grama em cédigo de maquina (um ca- Factere por byte de programa). MONITOR TK8S” 10 PRINT AT 4, 15 PRINT AT 8,4;"1 - PROGRAMAR EM coDIcO" 20 PRINT AT 10,4;"2 - EXAMINAR ‘A MEMORIA” 50 LET AS-INKEYS 60 IF AS<"1" OR AS>"2" THEN Goro 50, 70 cL 80 GoSUB 100+200% (VAL AS-1) 85 CLS 90 RUN 100 PRINT AT 21,0;"ENDERECO INI CIAL?” 105 INPUT SA 110 INPUT DS 120 IF DS="" THEN GoTo 110 125 IF, DS (1)*"$" THEN RETURN 130 LET ss=Ds(1 70 2) 135 SCROLL 140 FOR N=1 To 2 150 IF SS(N)<"0" OR S5(N)>"F* THEN PRINT "CARACTER TNVALIDO" 155 IF 8$(N)<"0" OR SS(N)>"F” THEN GoTo 110 160 NEXT_N 170_POKE! SA, (CODE 55(1)~28) *16+ CODE 88(2)-28 175, SCROLL 180 PRINT SA,DS( TO 2) 190 LET Ds=D$(3 To ) 195 IF LEN D5=1 THEN GoTo 110 200 LET SA=SA+1 210 GoTo 120 300 PRINT AT 21,0;"ENDERECO INT craL?” 310 INPUT SA. 320 SCROLL 330. PRINT SA; 340 FOR MeO To 7 350 LET He" * 360 LET HS(L) ‘ou , yoct deve comegar a ou voct pode enirar tantos paresiquantosidesejar. Mas é melhor di- gitar uma linha por vez e checar rigoro- samente’ 08 digitos antes de pressionar . E muito mais facil edita- Jos enquanto eles ainda estao na tela do que quando estiverem na meméria ‘Vooé notard que as versdes do progra- ‘ma para 0 Spectrum e para 0 ZX-81 tra- duzem seus niimeros hexa para decimaisy antes de colocé-1os na memérias Isto de- ve se feito, como explicamos antes, por- que 0 POKE ¢ uma declaragao do BA- SIC, € 0 BASIC nestas duas maquinas no aceita niimeros hexa, Mesmo assim, € melhor vocé pensar apenas em hexa pis isso Ihe dara uma melhor percepsao de como 0 computador funciona, Voc deve finalizar os seus progra- ‘mas de cédigo de maquina com um si- nal sustenido # ou, no ZX-81, um nal de délar. Isso trard o menu de volta para a tela, Se voce selecionar a opsdo 2 para examinar a meméria, programa pedi r4 novamente um endereco iniciall — desta vez 6 0 inicio da area de memoria que precisa ser observada. Para exami- nar todo 0 seu programa em cédigo de maquina, esse enderego inicial devera ser © mesmo que o endereso inicial que vo- cé forneceu anteriormente. A seguir, exceto no ZX-81,serd pergun- tado se voe# quer imprimir uma cdpia de- finitva do programa em cédigo de maqui- na na sua impressora. Se voc€ nao quiser fazer isso, e pressionar N, o programa im- primira o enderego inicil e os contetidos dessa locagio e das sete locages de memé- ria subsequientes em uma linha na tela. Se, 20 contrério, voce responder & questo cima pressionando qualquer tecla do teclado — exceto ou —, 0 endereco origi- nal serd impresso, junto com seus con- {etidos € os contesidos dos sete bytes sub- seqiientes. Assim, seguindo esse méto- do, voce poderi ‘imprimir todo 0 seu programa de codigo de maquina. Se voc# localizar um erro e quiser cortigi-lo, pressione ou ‘, e o programa retorna- rd ao menu. Pressione 1 para entrar 0 bdizo de miquina, eo computador pe dird rlovamente um enderego Desta vez, fornega o endereco do en que estiver errado. Se 0 erro atingir to- da uma série, forneca apenas 0 endere- da, entre os bytes corretos. Outro de fazer correcdes, ‘quando existe apenas um erro, consiste em acionara tecla (nos mi- cros da linha Sinclair e TRS-Color), ou as teclas (no MSX), para interromper 0 progra- ma monitor, € usar 0 POKE de modo direto, para'corrigir 0 contetido da lo- cago apropriada. Lembre-se de que no Spectrum € no ZX-81 voce deve usar 0 POKE com um nimero decimal. Assim que terminar a correedo, pressione ou c exami- ne mais uma vez a meméria para ter cer~ teza de que dessa vez voc’ acertou, Crone Se voc’ quiser conservar 0 monitor de cédigo de maquina, deveraguardd- To em uma fita separadode seus progra- mas-decédigo de maquina, da maneira usual. A opedo “¢Armazenar Bytes em Fita’” no menu do programa monitor serve apenas para guardar as rotinas de eédigo de maquina que foram entradas com o monitor. A tinica excecdo é para 0 ZX-81, no qual vooe deve guardar suas rotinas de eédigo de maquina junto com © programa monitor. Nas outras méquinas, se vocé pres- sionar 3, 0 programa pedira mais uma ‘ez uum enderego inicial. Este deverd ser normalmente 0 endereco inicial da rot nna de maquina que vocé acabou de en- trar, embora qualquer parte da memé- ria possa ser guardada por meio da uti« lizagdo de um endereco diferente ‘As vers0es deste programa para 0 S- pectrum, 0 TRS-Color € 0»MSX pedi- Ao entdo a yoce os niimeros de. bytes ue a sua rotina em cédigo de maquina cocupa. Voce pode calcular isso pela con- tagem dos pares de digitos hexas que fo- ram entrados anteriormente. Cada par €um byte. Em seguida, voce deve en- trar um nome para a rotina — assim, 0 seu computador serd capaz de identificd- Jo quando vocé quiser carrega-lo. A ro- tina serd gravada pressionando-se as te- clas © no gravador, antes de acionar a tecla do computador. Quando @ gravacéo se completar, aparecerd 0 menu na tela, novamenté. PU ‘Com o Spectrum, @ TRS-Color ¢ 0 MSX a rotina de cédigo de maquina é carregada de modo normal (por exem- plo, no MSX deve-se utilizar 0 coman- do BLOAD “CAS:ROTINA”, onde

You might also like